diff --git a/.github/ISSUE_TEMPLATE/task_issue_template.yaml b/.github/ISSUE_TEMPLATE/00-task-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/task_issue_template.yaml rename to .github/ISSUE_TEMPLATE/00-task-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/model_maker_issue_template.yaml b/.github/ISSUE_TEMPLATE/11-model-maker-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/model_maker_issue_template.yaml rename to .github/ISSUE_TEMPLATE/11-model-maker-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/studio_issue_template.yaml b/.github/ISSUE_TEMPLATE/12-studio-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/studio_issue_template.yaml rename to .github/ISSUE_TEMPLATE/12-studio-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/feature_request_issue_template.yaml b/.github/ISSUE_TEMPLATE/14-feature-request-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request_issue_template.yaml rename to .github/ISSUE_TEMPLATE/14-feature-request-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/build.install_issue_template.yaml b/.github/ISSUE_TEMPLATE/15-build-install-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/build.install_issue_template.yaml rename to .github/ISSUE_TEMPLATE/15-build-install-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/bug_issue_template.yaml b/.github/ISSUE_TEMPLATE/16-bug-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_issue_template.yaml rename to .github/ISSUE_TEMPLATE/16-bug-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/Documentation_issue_template.yaml b/.github/ISSUE_TEMPLATE/17-documentation-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/Documentation_issue_template.yaml rename to .github/ISSUE_TEMPLATE/17-documentation-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/Solution(Legacy_issue_template).yaml b/.github/ISSUE_TEMPLATE/18-solution-legacy-issue-template.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/Solution(Legacy_issue_template).yaml rename to .github/ISSUE_TEMPLATE/18-solution-legacy-issue-template.yaml diff --git a/.github/ISSUE_TEMPLATE/50-other-issues.md b/.github/ISSUE_TEMPLATE/19-other-issues.md similarity index 100% rename from .github/ISSUE_TEMPLATE/50-other-issues.md rename to .github/ISSUE_TEMPLATE/19-other-issues.md diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 03c67d0f..00000000 --- a/.github/stale.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 2021 The MediaPipe Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -# -# This file was assembled from multiple pieces, whose use is documented -# throughout. Please refer to the TensorFlow dockerfiles documentation -# for more information. - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 7 -# Number of days of inactivity before a stale Issue or Pull Request is closed -daysUntilClose: 7 -# Only issues or pull requests with all of these labels are checked if stale. Defaults to `[]` (disabled) -onlyLabels: - - stat:awaiting response -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you. -# Comment to post when removing the stale label. Set to `false` to disable -unmarkComment: false -closeComment: > - Closing as stale. Please reopen if you'd like to work on this further. diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 00000000..c5e15bce --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,66 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +# This workflow alerts and then closes the stale issues/PRs after specific time +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale + +name: 'Close stale issues and PRs' +"on": + schedule: + - cron: "30 1 * * *" +permissions: + contents: read + issues: write + pull-requests: write +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: 'actions/stale@v7' + with: + # Comma separated list of labels that can be assigned to issues to exclude them from being marked as stale. + exempt-issue-labels: 'override-stale' + # Comma separated list of labels that can be assigned to PRs to exclude them from being marked as stale. + exempt-pr-labels: "override-stale" + # Limit the No. of API calls in one run default value is 30. + operations-per-run: 500 + # Prevent to remove stale label when PRs or issues are updated. + remove-stale-when-updated: false + # comment on issue if not active for more then 7 days. + stale-issue-message: 'This issue has been marked stale because it has no recent activity since 7 days. It will be closed if no further activity occurs. Thank you.' + # comment on PR if not active for more then 14 days. + stale-pr-message: 'This PR has been marked stale because it has no recent activity since 14 days. It will be closed if no further activity occurs. Thank you.' + # comment on issue if stale for more then 7 days. + close-issue-message: This issue was closed due to lack of activity after being marked stale for past 7 days. + # comment on PR if stale for more then 14 days. + close-pr-message: This PR was closed due to lack of activity after being marked stale for past 14 days. + # Number of days of inactivity before an Issue Request becomes stale + days-before-issue-stale: 7 + # Number of days of inactivity before a stale Issue is closed + days-before-issue-close: 7 + # reason for closed the issue default value is not_planned + close-issue-reason: completed + # Number of days of inactivity before a stale PR is closed + days-before-pr-close: 14 + # Number of days of inactivity before an PR Request becomes stale + days-before-pr-stale: 14 + # Check for label to stale or close the issue/PR + any-of-labels: 'stat:awaiting response' + # override stale to stalled for PR + stale-pr-label: 'stale' + # override stale to stalled for Issue + stale-issue-label: "stale" diff --git a/docs/build_java_api_docs.py b/docs/build_java_api_docs.py index b13e8d1d..eaa380f8 100644 --- a/docs/build_java_api_docs.py +++ b/docs/build_java_api_docs.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/docs/build_model_maker_api_docs.py b/docs/build_model_maker_api_docs.py index 7732b7d5..377536c3 100644 --- a/docs/build_model_maker_api_docs.py +++ b/docs/build_model_maker_api_docs.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/docs/build_py_api_docs.py b/docs/build_py_api_docs.py index 02eb0407..10b79932 100644 --- a/docs/build_py_api_docs.py +++ b/docs/build_py_api_docs.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/audio/spectrogram_calculator.cc b/mediapipe/calculators/audio/spectrogram_calculator.cc index 939e721a..fbdbbab0 100644 --- a/mediapipe/calculators/audio/spectrogram_calculator.cc +++ b/mediapipe/calculators/audio/spectrogram_calculator.cc @@ -433,9 +433,9 @@ absl::Status SpectrogramCalculator::ProcessVectorToOutput( absl::Status SpectrogramCalculator::ProcessVector(const Matrix& input_stream, CalculatorContext* cc) { switch (output_type_) { - // These blocks deliberately ignore clang-format to preserve the - // "silhouette" of the different cases. - // clang-format off + // These blocks deliberately ignore clang-format to preserve the + // "silhouette" of the different cases. + // clang-format off case SpectrogramCalculatorOptions::COMPLEX: { return ProcessVectorToOutput( input_stream, diff --git a/mediapipe/calculators/core/merge_to_vector_calculator.cc b/mediapipe/calculators/core/merge_to_vector_calculator.cc index fd053ed2..4bb3c8a4 100644 --- a/mediapipe/calculators/core/merge_to_vector_calculator.cc +++ b/mediapipe/calculators/core/merge_to_vector_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/core/merge_to_vector_calculator.h b/mediapipe/calculators/core/merge_to_vector_calculator.h index b4f7a37c..4ec674c0 100644 --- a/mediapipe/calculators/core/merge_to_vector_calculator.h +++ b/mediapipe/calculators/core/merge_to_vector_calculator.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/tensor/bert_preprocessor_calculator.proto b/mediapipe/calculators/tensor/bert_preprocessor_calculator.proto index 5dc9815a..b2dc5578 100644 --- a/mediapipe/calculators/tensor/bert_preprocessor_calculator.proto +++ b/mediapipe/calculators/tensor/bert_preprocessor_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/tensor/regex_preprocessor_calculator.proto b/mediapipe/calculators/tensor/regex_preprocessor_calculator.proto index 793067a8..ef7ad047 100644 --- a/mediapipe/calculators/tensor/regex_preprocessor_calculator.proto +++ b/mediapipe/calculators/tensor/regex_preprocessor_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/util/detections_deduplicate_calculator.cc b/mediapipe/calculators/util/detections_deduplicate_calculator.cc index 2dfa0902..a31585b8 100644 --- a/mediapipe/calculators/util/detections_deduplicate_calculator.cc +++ b/mediapipe/calculators/util/detections_deduplicate_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/calculators/util/logic_calculator.proto b/mediapipe/calculators/util/logic_calculator.proto index fe00a2d9..8f9f6d85 100644 --- a/mediapipe/calculators/util/logic_calculator.proto +++ b/mediapipe/calculators/util/logic_calculator.proto @@ -18,6 +18,9 @@ package mediapipe; import "mediapipe/framework/calculator.proto"; +option java_package = "com.google.mediapipe.calculator.proto"; +option java_outer_classname = "LogicCalculatorOptionsProto"; + message LogicCalculatorOptions { extend CalculatorOptions { optional LogicCalculatorOptions ext = 338731246; diff --git a/mediapipe/framework/api2/port.h b/mediapipe/framework/api2/port.h index f6abe75e..18a78607 100644 --- a/mediapipe/framework/api2/port.h +++ b/mediapipe/framework/api2/port.h @@ -467,6 +467,11 @@ class SideFallbackT : public Base { // CalculatorContext (e.g. kOut(cc)), and provides a type-safe interface to // OutputStreamShard. Like that class, this class will not be usually named in // calculator code, but used as a temporary object (e.g. kOut(cc).Send(...)). +// +// If not connected (!IsConnected()) SetNextTimestampBound is safe to call and +// does nothing. +// All the sub-classes that define Send should implement it to be safe to to +// call if not connected and do nothing in such case. class OutputShardAccessBase { public: OutputShardAccessBase(const CalculatorContext& cc, OutputStreamShard* output) diff --git a/mediapipe/framework/formats/frame_buffer.cc b/mediapipe/framework/formats/frame_buffer.cc index 930a3651..743de812 100644 --- a/mediapipe/framework/formats/frame_buffer.cc +++ b/mediapipe/framework/formats/frame_buffer.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/framework/formats/frame_buffer.h b/mediapipe/framework/formats/frame_buffer.h index 32ba41a2..21a5f537 100644 --- a/mediapipe/framework/formats/frame_buffer.h +++ b/mediapipe/framework/formats/frame_buffer.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/framework/tool/name_util.cc b/mediapipe/framework/tool/name_util.cc index 4784441d..d42cbb62 100644 --- a/mediapipe/framework/tool/name_util.cc +++ b/mediapipe/framework/tool/name_util.cc @@ -60,7 +60,7 @@ std::string GetUnusedSidePacketName( } std::string candidate = input_side_packet_name_base; int iter = 2; - while (mediapipe::ContainsKey(input_side_packets, candidate)) { + while (input_side_packets.contains(candidate)) { candidate = absl::StrCat(input_side_packet_name_base, "_", absl::StrFormat("%02d", iter)); ++iter; diff --git a/mediapipe/framework/tool/tag_map_test.cc b/mediapipe/framework/tool/tag_map_test.cc index 20a9be96..a93b9444 100644 --- a/mediapipe/framework/tool/tag_map_test.cc +++ b/mediapipe/framework/tool/tag_map_test.cc @@ -101,7 +101,7 @@ void TestSuccessTagMap(const std::vector& tag_index_names, EXPECT_EQ(tags.size(), tag_map->Mapping().size()) << "Parameters: in " << tag_map->DebugString(); for (int i = 0; i < tags.size(); ++i) { - EXPECT_TRUE(mediapipe::ContainsKey(tag_map->Mapping(), tags[i])) + EXPECT_TRUE(tag_map->Mapping().contains(tags[i])) << "Parameters: Trying to find \"" << tags[i] << "\" in\n" << tag_map->DebugString(); } diff --git a/mediapipe/gpu/frame_buffer_view.h b/mediapipe/gpu/frame_buffer_view.h index 76d773a5..a6192e52 100644 --- a/mediapipe/gpu/frame_buffer_view.h +++ b/mediapipe/gpu/frame_buffer_view.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/gpu/gpu_buffer_storage_image_frame.cc b/mediapipe/gpu/gpu_buffer_storage_image_frame.cc index 1cd661d3..316c6cc4 100644 --- a/mediapipe/gpu/gpu_buffer_storage_image_frame.cc +++ b/mediapipe/gpu/gpu_buffer_storage_image_frame.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/gpu/gpu_buffer_storage_image_frame.h b/mediapipe/gpu/gpu_buffer_storage_image_frame.h index 542791f9..3b805e8f 100644 --- a/mediapipe/gpu/gpu_buffer_storage_image_frame.h +++ b/mediapipe/gpu/gpu_buffer_storage_image_frame.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/gpu/gpu_buffer_storage_yuv_image.cc b/mediapipe/gpu/gpu_buffer_storage_yuv_image.cc index 4b0913b9..41905de7 100644 --- a/mediapipe/gpu/gpu_buffer_storage_yuv_image.cc +++ b/mediapipe/gpu/gpu_buffer_storage_yuv_image.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/gpu/gpu_buffer_storage_yuv_image.h b/mediapipe/gpu/gpu_buffer_storage_yuv_image.h index 6b34f494..cf6ffcd0 100644 --- a/mediapipe/gpu/gpu_buffer_storage_yuv_image.h +++ b/mediapipe/gpu/gpu_buffer_storage_yuv_image.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/components/AudioDataProducer.java b/mediapipe/java/com/google/mediapipe/components/AudioDataProducer.java index 4f18f470..5d042562 100644 --- a/mediapipe/java/com/google/mediapipe/components/AudioDataProducer.java +++ b/mediapipe/java/com/google/mediapipe/components/AudioDataProducer.java @@ -14,8 +14,10 @@ package com.google.mediapipe.components; +import javax.annotation.Nullable; + /** Lightweight abstraction for an object that can produce audio data. */ public interface AudioDataProducer { /** Set the consumer that receives the audio data from this producer. */ - void setAudioConsumer(AudioDataConsumer consumer); + void setAudioConsumer(@Nullable AudioDataConsumer consumer); } diff --git a/mediapipe/java/com/google/mediapipe/components/BUILD b/mediapipe/java/com/google/mediapipe/components/BUILD index a1ec1754..630bc94c 100644 --- a/mediapipe/java/com/google/mediapipe/components/BUILD +++ b/mediapipe/java/com/google/mediapipe/components/BUILD @@ -71,7 +71,10 @@ android_library( "AudioDataProducer.java", ], visibility = ["//visibility:public"], - deps = ["@maven//:com_google_guava_guava"], + deps = [ + "@maven//:com_google_code_findbugs_jsr305", + "@maven//:com_google_guava_guava", + ], ) # MicrophoneHelper that provides access to audio data from a microphone diff --git a/mediapipe/java/com/google/mediapipe/components/GlSurfaceViewRenderer.java b/mediapipe/java/com/google/mediapipe/components/GlSurfaceViewRenderer.java index 7732ed17..9321e82b 100644 --- a/mediapipe/java/com/google/mediapipe/components/GlSurfaceViewRenderer.java +++ b/mediapipe/java/com/google/mediapipe/components/GlSurfaceViewRenderer.java @@ -231,7 +231,7 @@ public class GlSurfaceViewRenderer implements GLSurfaceView.Renderer { } /** Returns the texture left, right, bottom, and top visible boundaries. */ - protected float[] calculateTextureBoundary() { + public float[] calculateTextureBoundary() { // TODO: compute scale from surfaceTexture size. float scaleWidth = frameWidth > 0 ? (float) surfaceWidth / (float) frameWidth : 1.0f; float scaleHeight = frameHeight > 0 ? (float) surfaceHeight / (float) frameHeight : 1.0f; diff --git a/mediapipe/java/com/google/mediapipe/framework/image/BUILD b/mediapipe/java/com/google/mediapipe/framework/image/BUILD index d9508c1f..a34e9795 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/BUILD +++ b/mediapipe/java/com/google/mediapipe/framework/image/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/BitmapExtractor.java b/mediapipe/java/com/google/mediapipe/framework/image/BitmapExtractor.java index d6f50bf3..0211c808 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/BitmapExtractor.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/BitmapExtractor.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageBuilder.java b/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageBuilder.java index 988cdf54..0b11c6de 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageBuilder.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageBuilder.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageContainer.java b/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageContainer.java index 6fbcac21..26466857 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageContainer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/BitmapImageContainer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferExtractor.java b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferExtractor.java index 68c53b0c..242404ad 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferExtractor.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferExtractor.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageBuilder.java b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageBuilder.java index a650e4c3..a8bd90d2 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageBuilder.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageBuilder.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageContainer.java b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageContainer.java index 82dbe32c..a631a93d 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageContainer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/ByteBufferImageContainer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MPImage.java b/mediapipe/java/com/google/mediapipe/framework/image/MPImage.java index 946beae3..4622189a 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MPImage.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MPImage.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MPImageConsumer.java b/mediapipe/java/com/google/mediapipe/framework/image/MPImageConsumer.java index f9f343e9..eb9f3ecb 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MPImageConsumer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MPImageConsumer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MPImageContainer.java b/mediapipe/java/com/google/mediapipe/framework/image/MPImageContainer.java index 674073b5..7002b6f8 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MPImageContainer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MPImageContainer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MPImageProducer.java b/mediapipe/java/com/google/mediapipe/framework/image/MPImageProducer.java index 9783935d..48b8c33c 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MPImageProducer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MPImageProducer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MPImageProperties.java b/mediapipe/java/com/google/mediapipe/framework/image/MPImageProperties.java index 6005ce77..dff6481e 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MPImageProperties.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MPImageProperties.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageBuilder.java b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageBuilder.java index 9e719715..af3372fe 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageBuilder.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageBuilder.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageContainer.java b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageContainer.java index 864c76df..d9b85af7 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageContainer.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageContainer.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageExtractor.java b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageExtractor.java index 76bb5a5e..5fca757c 100644 --- a/mediapipe/java/com/google/mediapipe/framework/image/MediaImageExtractor.java +++ b/mediapipe/java/com/google/mediapipe/framework/image/MediaImageExtractor.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/java/com/google/mediapipe/mediapipe_aar.bzl b/mediapipe/java/com/google/mediapipe/mediapipe_aar.bzl index 03fc4175..879527ed 100644 --- a/mediapipe/java/com/google/mediapipe/mediapipe_aar.bzl +++ b/mediapipe/java/com/google/mediapipe/mediapipe_aar.bzl @@ -1,4 +1,4 @@ -# Copyright 2019-2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2019-2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/BUILD b/mediapipe/model_maker/BUILD index cb312072..e3995e13 100644 --- a/mediapipe/model_maker/BUILD +++ b/mediapipe/model_maker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/__init__.py b/mediapipe/model_maker/__init__.py index 533edebf..6779524b 100644 --- a/mediapipe/model_maker/__init__.py +++ b/mediapipe/model_maker/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/models/gesture_recognizer/BUILD b/mediapipe/model_maker/models/gesture_recognizer/BUILD index 5ead0e61..947508f1 100644 --- a/mediapipe/model_maker/models/gesture_recognizer/BUILD +++ b/mediapipe/model_maker/models/gesture_recognizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/models/text_classifier/BUILD b/mediapipe/model_maker/models/text_classifier/BUILD index dc6210a7..d9d55048 100644 --- a/mediapipe/model_maker/models/text_classifier/BUILD +++ b/mediapipe/model_maker/models/text_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/BUILD b/mediapipe/model_maker/python/BUILD index fe101f29..775ac82d 100644 --- a/mediapipe/model_maker/python/BUILD +++ b/mediapipe/model_maker/python/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/__init__.py b/mediapipe/model_maker/python/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/__init__.py +++ b/mediapipe/model_maker/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/BUILD b/mediapipe/model_maker/python/core/BUILD index 636a1a72..6331e638 100644 --- a/mediapipe/model_maker/python/core/BUILD +++ b/mediapipe/model_maker/python/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/__init__.py b/mediapipe/model_maker/python/core/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/core/__init__.py +++ b/mediapipe/model_maker/python/core/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/BUILD b/mediapipe/model_maker/python/core/data/BUILD index 70a62e8f..cc0381f6 100644 --- a/mediapipe/model_maker/python/core/data/BUILD +++ b/mediapipe/model_maker/python/core/data/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/__init__.py b/mediapipe/model_maker/python/core/data/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/core/data/__init__.py +++ b/mediapipe/model_maker/python/core/data/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/classification_dataset.py b/mediapipe/model_maker/python/core/data/classification_dataset.py index 073e7963..b1df3b6d 100644 --- a/mediapipe/model_maker/python/core/data/classification_dataset.py +++ b/mediapipe/model_maker/python/core/data/classification_dataset.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/classification_dataset_test.py b/mediapipe/model_maker/python/core/data/classification_dataset_test.py index 82e74b04..d21803f4 100644 --- a/mediapipe/model_maker/python/core/data/classification_dataset_test.py +++ b/mediapipe/model_maker/python/core/data/classification_dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/data_util.py b/mediapipe/model_maker/python/core/data/data_util.py index 8c6b9145..88efa896 100644 --- a/mediapipe/model_maker/python/core/data/data_util.py +++ b/mediapipe/model_maker/python/core/data/data_util.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/data_util_test.py b/mediapipe/model_maker/python/core/data/data_util_test.py index 56ac832c..8bed8ef7 100644 --- a/mediapipe/model_maker/python/core/data/data_util_test.py +++ b/mediapipe/model_maker/python/core/data/data_util_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/dataset.py b/mediapipe/model_maker/python/core/data/dataset.py index 3b4182c1..bfdc5b0f 100644 --- a/mediapipe/model_maker/python/core/data/dataset.py +++ b/mediapipe/model_maker/python/core/data/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/dataset_test.py b/mediapipe/model_maker/python/core/data/dataset_test.py index 9adff127..7a3f7538 100644 --- a/mediapipe/model_maker/python/core/data/dataset_test.py +++ b/mediapipe/model_maker/python/core/data/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/data/testdata/BUILD b/mediapipe/model_maker/python/core/data/testdata/BUILD index 54e562d4..b799c3ce 100644 --- a/mediapipe/model_maker/python/core/data/testdata/BUILD +++ b/mediapipe/model_maker/python/core/data/testdata/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/hyperparameters.py b/mediapipe/model_maker/python/core/hyperparameters.py index e6848e0d..3b3e3540 100644 --- a/mediapipe/model_maker/python/core/hyperparameters.py +++ b/mediapipe/model_maker/python/core/hyperparameters.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/BUILD b/mediapipe/model_maker/python/core/tasks/BUILD index 8c544855..6a3e60c9 100644 --- a/mediapipe/model_maker/python/core/tasks/BUILD +++ b/mediapipe/model_maker/python/core/tasks/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/__init__.py b/mediapipe/model_maker/python/core/tasks/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/core/tasks/__init__.py +++ b/mediapipe/model_maker/python/core/tasks/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/classifier.py b/mediapipe/model_maker/python/core/tasks/classifier.py index bfe0f027..60c00f0d 100644 --- a/mediapipe/model_maker/python/core/tasks/classifier.py +++ b/mediapipe/model_maker/python/core/tasks/classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/classifier_test.py b/mediapipe/model_maker/python/core/tasks/classifier_test.py index 6bf3b7a2..2943825a 100644 --- a/mediapipe/model_maker/python/core/tasks/classifier_test.py +++ b/mediapipe/model_maker/python/core/tasks/classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/custom_model.py b/mediapipe/model_maker/python/core/tasks/custom_model.py index 188bf62c..55f5a6db 100644 --- a/mediapipe/model_maker/python/core/tasks/custom_model.py +++ b/mediapipe/model_maker/python/core/tasks/custom_model.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/tasks/custom_model_test.py b/mediapipe/model_maker/python/core/tasks/custom_model_test.py index ad77d4ec..afb418c4 100644 --- a/mediapipe/model_maker/python/core/tasks/custom_model_test.py +++ b/mediapipe/model_maker/python/core/tasks/custom_model_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/BUILD b/mediapipe/model_maker/python/core/utils/BUILD index 43c3d42f..e86cbb1e 100644 --- a/mediapipe/model_maker/python/core/utils/BUILD +++ b/mediapipe/model_maker/python/core/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -67,11 +67,18 @@ py_library( name = "loss_functions", srcs = ["loss_functions.py"], srcs_version = "PY3", + deps = [ + ":file_util", + ":model_util", + ], ) py_test( name = "loss_functions_test", srcs = ["loss_functions_test.py"], + tags = [ + "requires-net:external", + ], deps = [":loss_functions"], ) diff --git a/mediapipe/model_maker/python/core/utils/__init__.py b/mediapipe/model_maker/python/core/utils/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/core/utils/__init__.py +++ b/mediapipe/model_maker/python/core/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/file_util.py b/mediapipe/model_maker/python/core/utils/file_util.py index 221df94f..71b5a0a7 100644 --- a/mediapipe/model_maker/python/core/utils/file_util.py +++ b/mediapipe/model_maker/python/core/utils/file_util.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/file_util_test.py b/mediapipe/model_maker/python/core/utils/file_util_test.py index 027756ff..d5b98392 100644 --- a/mediapipe/model_maker/python/core/utils/file_util_test.py +++ b/mediapipe/model_maker/python/core/utils/file_util_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/loss_functions.py b/mediapipe/model_maker/python/core/utils/loss_functions.py index 5b0aa32b..a60bd2ed 100644 --- a/mediapipe/model_maker/python/core/utils/loss_functions.py +++ b/mediapipe/model_maker/python/core/utils/loss_functions.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,10 +13,21 @@ # limitations under the License. """Loss function utility library.""" -from typing import Optional, Sequence +import abc +from typing import Mapping, Sequence +import dataclasses +from typing import Any, Optional +import numpy as np import tensorflow as tf +from mediapipe.model_maker.python.core.utils import file_util +from mediapipe.model_maker.python.core.utils import model_util +from official.modeling import tf_utils + + +_VGG_IMAGENET_PERCEPTUAL_MODEL_URL = 'https://storage.googleapis.com/mediapipe-assets/vgg_feature_extractor.tar.gz' + class FocalLoss(tf.keras.losses.Loss): """Implementation of focal loss (https://arxiv.org/pdf/1708.02002.pdf). @@ -45,7 +56,6 @@ class FocalLoss(tf.keras.losses.Loss): ```python model.compile(optimizer='sgd', loss=FocalLoss(gamma)) ``` - """ def __init__(self, gamma, class_weight: Optional[Sequence[float]] = None): @@ -103,3 +113,252 @@ class FocalLoss(tf.keras.losses.Loss): # By default, this function uses "sum_over_batch_size" reduction for the # loss per batch. return tf.reduce_sum(losses) / batch_size + + +@dataclasses.dataclass +class PerceptualLossWeight: + """The weight for each perceptual loss. + + Attributes: + l1: weight for L1 loss. + content: weight for content loss. + style: weight for style loss. + """ + + l1: float = 1.0 + content: float = 1.0 + style: float = 1.0 + + +class ImagePerceptualQualityLoss(tf.keras.losses.Loss): + """Image perceptual quality loss. + + It obtains a weighted loss between the VGGPerceptualLoss and L1 loss. + """ + + def __init__( + self, + loss_weight: Optional[PerceptualLossWeight] = None, + reduction: tf.keras.losses.Reduction = tf.keras.losses.Reduction.NONE, + ): + """Initializes ImagePerceptualQualityLoss.""" + self._loss_weight = loss_weight + self._losses = {} + self._vgg_loss = VGGPerceptualLoss(self._loss_weight) + self._reduction = reduction + + def _l1_loss( + self, + reduction: tf.keras.losses.Reduction = tf.keras.losses.Reduction.NONE, + ) -> Any: + """Calculates L1 loss.""" + return tf.keras.losses.MeanAbsoluteError(reduction) + + def __call__( + self, + img1: tf.Tensor, + img2: tf.Tensor, + ) -> tf.Tensor: + """Computes image perceptual quality loss.""" + loss_value = [] + if self._loss_weight is None: + self._loss_weight = PerceptualLossWeight() + + if self._loss_weight.content > 0 or self._loss_weight.style > 0: + vgg_loss = self._vgg_loss(img1, img2) + vgg_loss_value = tf.math.add_n(vgg_loss.values()) + loss_value.append(vgg_loss_value) + if self._loss_weight.l1 > 0: + l1_loss = self._l1_loss(reduction=self._reduction)(img1, img2) + l1_loss_value = tf_utils.safe_mean(l1_loss * self._loss_weight.l1) + loss_value.append(l1_loss_value) + total_loss = tf.math.add_n(loss_value) + return total_loss + + +class PerceptualLoss(tf.keras.Model, metaclass=abc.ABCMeta): + """Base class for perceptual loss model.""" + + def __init__( + self, + feature_weight: Optional[Sequence[float]] = None, + loss_weight: Optional[PerceptualLossWeight] = None, + ): + """Instantiates perceptual loss. + + Args: + feature_weight: The weight coeffcients of multiple model extracted + features used for calculating the perceptual loss. + loss_weight: The weight coefficients between `style_loss` and + `content_loss`. + """ + super().__init__() + self._loss_op = lambda x, y: tf.math.reduce_mean(tf.abs(x - y)) + self._loss_style = tf.constant(0.0) + self._loss_content = tf.constant(0.0) + self._feature_weight = feature_weight + self._loss_weight = loss_weight + + def __call__( + self, + img1: tf.Tensor, + img2: tf.Tensor, + ) -> Mapping[str, tf.Tensor]: + """Computes perceptual loss between two images. + + Args: + img1: First batch of images. The pixel values should be normalized to [-1, + 1]. + img2: Second batch of images. The pixel values should be normalized to + [-1, 1]. + + Returns: + A mapping between loss name and loss tensors. + """ + x_features = self._compute_features(img1) + y_features = self._compute_features(img2) + + if self._loss_weight is None: + self._loss_weight = PerceptualLossWeight() + + # If the _feature_weight is not initialized, then initialize it as a list of + # all the element equals to 1.0. + if self._feature_weight is None: + self._feature_weight = [1.0] * len(x_features) + + # If the length of _feature_weight smallert than the length of the feature, + # raise a ValueError. Otherwise, only use the first len(x_features) weight + # for computing the loss. + if len(self._feature_weight) < len(x_features): + raise ValueError( + f'Input feature weight length {len(self._feature_weight)} is smaller' + f' than feature length {len(x_features)}' + ) + + if self._loss_weight.style > 0.0: + self._loss_style = tf_utils.safe_mean( + self._loss_weight.style + * self._get_style_loss(x_feats=x_features, y_feats=y_features) + ) + if self._loss_weight.content > 0.0: + self._loss_content = tf_utils.safe_mean( + self._loss_weight.content + * self._get_content_loss(x_feats=x_features, y_feats=y_features) + ) + + return {'style_loss': self._loss_style, 'content_loss': self._loss_content} + + @abc.abstractmethod + def _compute_features(self, img: tf.Tensor) -> Sequence[tf.Tensor]: + """Computes features from the given image tensor. + + Args: + img: Image tensor. + + Returns: + A list of multi-scale feature maps. + """ + + def _get_content_loss( + self, x_feats: Sequence[tf.Tensor], y_feats: Sequence[tf.Tensor] + ) -> tf.Tensor: + """Gets weighted multi-scale content loss. + + Args: + x_feats: Reconstructed face image. + y_feats: Target face image. + + Returns: + A scalar tensor for the content loss. + """ + content_losses = [] + for coef, x_feat, y_feat in zip(self._feature_weight, x_feats, y_feats): + content_loss = self._loss_op(x_feat, y_feat) * coef + content_losses.append(content_loss) + return tf.math.reduce_sum(content_losses) + + def _get_style_loss( + self, x_feats: Sequence[tf.Tensor], y_feats: Sequence[tf.Tensor] + ) -> tf.Tensor: + """Gets weighted multi-scale style loss. + + Args: + x_feats: Reconstructed face image. + y_feats: Target face image. + + Returns: + A scalar tensor for the style loss. + """ + style_losses = [] + i = 0 + for coef, x_feat, y_feat in zip(self._feature_weight, x_feats, y_feats): + x_feat_g = _compute_gram_matrix(x_feat) + y_feat_g = _compute_gram_matrix(y_feat) + style_loss = self._loss_op(x_feat_g, y_feat_g) * coef + style_losses.append(style_loss) + i = i + 1 + + return tf.math.reduce_sum(style_loss) + + +class VGGPerceptualLoss(PerceptualLoss): + """Perceptual loss based on VGG19 pretrained on the ImageNet dataset. + + Reference: + - [Perceptual Losses for Real-Time Style Transfer and Super-Resolution]( + https://arxiv.org/abs/1603.08155) (ECCV 2016) + + Perceptual loss measures high-level perceptual and semantic differences + between images. + """ + + def __init__( + self, + loss_weight: Optional[PerceptualLossWeight] = None, + ): + """Initializes image quality loss essentials. + + Args: + loss_weight: Loss weight coefficients. + """ + super().__init__( + feature_weight=np.array([0.1, 0.1, 1.0, 1.0, 1.0]), + loss_weight=loss_weight, + ) + + rgb_mean = tf.constant([0.485, 0.456, 0.406]) + rgb_std = tf.constant([0.229, 0.224, 0.225]) + + self._rgb_mean = tf.reshape(rgb_mean, (1, 1, 1, 3)) + self._rgb_std = tf.reshape(rgb_std, (1, 1, 1, 3)) + + model_path = file_util.DownloadedFiles( + 'vgg_feature_extractor', + _VGG_IMAGENET_PERCEPTUAL_MODEL_URL, + is_folder=True, + ) + self._vgg19 = model_util.load_keras_model(model_path.get_path()) + + def _compute_features(self, img: tf.Tensor) -> Sequence[tf.Tensor]: + """Computes VGG19 features.""" + img = (img + 1) / 2.0 + norm_img = (img - self._rgb_mean) / self._rgb_std + # no grad, as it only serves as a frozen feature extractor. + return self._vgg19(norm_img) + + +def _compute_gram_matrix(feature: tf.Tensor) -> tf.Tensor: + """Computes gram matrix for the feature map. + + Args: + feature: [B, H, W, C] feature map. + + Returns: + [B, C, C] gram matrix. + """ + h, w, c = feature.shape[1:].as_list() + feat_reshaped = tf.reshape(feature, shape=(-1, h * w, c)) + feat_gram = tf.matmul( + tf.transpose(feat_reshaped, perm=[0, 2, 1]), feat_reshaped + ) + return feat_gram / (c * h * w) diff --git a/mediapipe/model_maker/python/core/utils/loss_functions_test.py b/mediapipe/model_maker/python/core/utils/loss_functions_test.py index 716c329e..01f9a667 100644 --- a/mediapipe/model_maker/python/core/utils/loss_functions_test.py +++ b/mediapipe/model_maker/python/core/utils/loss_functions_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,9 @@ # limitations under the License. import math -from typing import Optional +import tempfile +from typing import Dict, Optional, Sequence +from unittest import mock as unittest_mock from absl.testing import parameterized import tensorflow as tf @@ -21,7 +23,7 @@ import tensorflow as tf from mediapipe.model_maker.python.core.utils import loss_functions -class LossFunctionsTest(tf.test.TestCase, parameterized.TestCase): +class FocalLossTest(tf.test.TestCase, parameterized.TestCase): @parameterized.named_parameters( dict(testcase_name='no_sample_weight', sample_weight=None), @@ -99,5 +101,228 @@ class LossFunctionsTest(tf.test.TestCase, parameterized.TestCase): self.assertNear(loss, expected_loss, 1e-4) +class MockPerceptualLoss(loss_functions.PerceptualLoss): + """A mock class with implementation of abstract methods for testing.""" + + def __init__( + self, + use_mock_loss_op: bool = False, + feature_weight: Optional[Sequence[float]] = None, + loss_weight: Optional[loss_functions.PerceptualLossWeight] = None, + ): + super().__init__(feature_weight=feature_weight, loss_weight=loss_weight) + if use_mock_loss_op: + self._loss_op = lambda x, y: tf.math.reduce_mean(x - y) + + def _compute_features(self, img: tf.Tensor) -> Sequence[tf.Tensor]: + return [tf.random.normal(shape=(1, 8, 8, 3))] * 5 + + +class PerceptualLossTest(tf.test.TestCase, parameterized.TestCase): + + def setUp(self): + super().setUp() + self._img1 = tf.fill(dims=(8, 8), value=0.2) + self._img2 = tf.fill(dims=(8, 8), value=0.8) + + def test_invalid_feature_weight_raise_value_error(self): + with self.assertRaisesRegex( + ValueError, + 'Input feature weight length 2 is smaller than feature length 5', + ): + MockPerceptualLoss(feature_weight=[1.0, 2.0])( + img1=self._img1, img2=self._img2 + ) + + @parameterized.named_parameters( + dict( + testcase_name='default_loss_weight_and_loss_op', + use_mock_loss_op=False, + feature_weight=None, + loss_weight=None, + loss_values={ + 'style_loss': 0.032839, + 'content_loss': 5.639870, + }, + ), + dict( + testcase_name='style_loss_weight_is_0_default_loss_op', + use_mock_loss_op=False, + feature_weight=None, + loss_weight=loss_functions.PerceptualLossWeight(style=0), + loss_values={ + 'style_loss': 0, + 'content_loss': 5.639870, + }, + ), + dict( + testcase_name='content_loss_weight_is_0_default_loss_op', + use_mock_loss_op=False, + feature_weight=None, + loss_weight=loss_functions.PerceptualLossWeight(content=0), + loss_values={ + 'style_loss': 0.032839, + 'content_loss': 0, + }, + ), + dict( + testcase_name='customized_loss_weight_default_loss_op', + use_mock_loss_op=False, + feature_weight=None, + loss_weight=loss_functions.PerceptualLossWeight( + style=1.0, content=2.0 + ), + loss_values={'style_loss': 0.032839, 'content_loss': 11.279739}, + ), + dict( + testcase_name=( + 'customized_feature_weight_and_loss_weight_default_loss_op' + ), + use_mock_loss_op=False, + feature_weight=[1.0, 2.0, 3.0, 4.0, 5.0], + loss_weight=loss_functions.PerceptualLossWeight( + style=1.0, content=2.0 + ), + loss_values={'style_loss': 0.164193, 'content_loss': 33.839218}, + ), + dict( + testcase_name='no_loss_change_if_extra_feature_weight_provided', + use_mock_loss_op=False, + feature_weight=[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], + loss_weight=loss_functions.PerceptualLossWeight( + style=1.0, content=2.0 + ), + loss_values={ + 'style_loss': 0.164193, + 'content_loss': 33.839218, + }, + ), + dict( + testcase_name='customized_loss_weight_custom_loss_op', + use_mock_loss_op=True, + feature_weight=None, + loss_weight=loss_functions.PerceptualLossWeight( + style=1.0, content=2.0 + ), + loss_values={'style_loss': 0.000395, 'content_loss': -1.533469}, + ), + ) + def test_weighted_perceptul_loss( + self, + use_mock_loss_op: bool, + feature_weight: Sequence[float], + loss_weight: loss_functions.PerceptualLossWeight, + loss_values: Dict[str, float], + ): + perceptual_loss = MockPerceptualLoss( + use_mock_loss_op=use_mock_loss_op, + feature_weight=feature_weight, + loss_weight=loss_weight, + ) + loss = perceptual_loss(img1=self._img1, img2=self._img2) + self.assertEqual(list(loss.keys()), ['style_loss', 'content_loss']) + self.assertNear(loss['style_loss'], loss_values['style_loss'], 1e-4) + self.assertNear(loss['content_loss'], loss_values['content_loss'], 1e-4) + + +class VGGPerceptualLossTest(tf.test.TestCase, parameterized.TestCase): + + def setUp(self): + super().setUp() + # Mock tempfile.gettempdir() to be unique for each test to avoid race + # condition when downloading model since these tests may run in parallel. + mock_gettempdir = unittest_mock.patch.object( + tempfile, + 'gettempdir', + return_value=self.create_tempdir(), + autospec=True, + ) + self.mock_gettempdir = mock_gettempdir.start() + self.addCleanup(mock_gettempdir.stop) + self._img1 = tf.fill(dims=(1, 256, 256, 3), value=0.1) + self._img2 = tf.fill(dims=(1, 256, 256, 3), value=0.9) + + @parameterized.named_parameters( + dict( + testcase_name='default_loss_weight', + loss_weight=None, + loss_values={ + 'style_loss': 5.8363257e-06, + 'content_loss': 1.7016045, + }, + ), + dict( + testcase_name='customized_loss_weight', + loss_weight=loss_functions.PerceptualLossWeight( + style=10.0, content=20.0 + ), + loss_values={ + 'style_loss': 5.8363257e-05, + 'content_loss': 34.03208, + }, + ), + ) + def test_vgg_perceptual_loss(self, loss_weight, loss_values): + vgg_loss = loss_functions.VGGPerceptualLoss(loss_weight=loss_weight) + loss = vgg_loss(img1=self._img1, img2=self._img2) + self.assertEqual(list(loss.keys()), ['style_loss', 'content_loss']) + self.assertNear( + loss['style_loss'], + loss_values['style_loss'], + loss_values['style_loss'] / 1e5, + ) + self.assertNear( + loss['content_loss'], + loss_values['content_loss'], + loss_values['content_loss'] / 1e5, + ) + + +class ImagePerceptualQualityLossTest(tf.test.TestCase, parameterized.TestCase): + + def setUp(self): + super().setUp() + # Mock tempfile.gettempdir() to be unique for each test to avoid race + # condition when downloading model since these tests may run in parallel. + mock_gettempdir = unittest_mock.patch.object( + tempfile, + 'gettempdir', + return_value=self.create_tempdir(), + autospec=True, + ) + self.mock_gettempdir = mock_gettempdir.start() + self.addCleanup(mock_gettempdir.stop) + self._img1 = tf.fill(dims=(1, 256, 256, 3), value=0.1) + self._img2 = tf.fill(dims=(1, 256, 256, 3), value=0.9) + + @parameterized.named_parameters( + dict( + testcase_name='default_loss_weight', + loss_weight=None, + loss_value=2.501612, + ), + dict( + testcase_name='customized_loss_weight_zero_l1', + loss_weight=loss_functions.PerceptualLossWeight( + l1=0.0, style=10.0, content=20.0 + ), + loss_value=34.032139, + ), + dict( + testcase_name='customized_loss_weight_nonzero_l1', + loss_weight=loss_functions.PerceptualLossWeight( + l1=10.0, style=10.0, content=20.0 + ), + loss_value=42.032139, + ), + ) + def test_image_perceptual_quality_loss(self, loss_weight, loss_value): + image_quality_loss = loss_functions.ImagePerceptualQualityLoss( + loss_weight=loss_weight + ) + loss = image_quality_loss(img1=self._img1, img2=self._img2) + self.assertNear(loss, loss_value, 1e-4) + + if __name__ == '__main__': tf.test.main() diff --git a/mediapipe/model_maker/python/core/utils/model_util.py b/mediapipe/model_maker/python/core/utils/model_util.py index 7a0b8fcf..5ca2c2b7 100644 --- a/mediapipe/model_maker/python/core/utils/model_util.py +++ b/mediapipe/model_maker/python/core/utils/model_util.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/model_util_test.py b/mediapipe/model_maker/python/core/utils/model_util_test.py index 6961a5fc..57750624 100644 --- a/mediapipe/model_maker/python/core/utils/model_util_test.py +++ b/mediapipe/model_maker/python/core/utils/model_util_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/quantization.py b/mediapipe/model_maker/python/core/utils/quantization.py index a1a38cc6..2a8d9224 100644 --- a/mediapipe/model_maker/python/core/utils/quantization.py +++ b/mediapipe/model_maker/python/core/utils/quantization.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/quantization_test.py b/mediapipe/model_maker/python/core/utils/quantization_test.py index 9d27d34a..57523d40 100644 --- a/mediapipe/model_maker/python/core/utils/quantization_test.py +++ b/mediapipe/model_maker/python/core/utils/quantization_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/test_util.py b/mediapipe/model_maker/python/core/utils/test_util.py index 14d02814..eda8facc 100644 --- a/mediapipe/model_maker/python/core/utils/test_util.py +++ b/mediapipe/model_maker/python/core/utils/test_util.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/core/utils/testdata/BUILD b/mediapipe/model_maker/python/core/utils/testdata/BUILD index 8eed72f7..ea45f614 100644 --- a/mediapipe/model_maker/python/core/utils/testdata/BUILD +++ b/mediapipe/model_maker/python/core/utils/testdata/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/__init__.py b/mediapipe/model_maker/python/text/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/text/__init__.py +++ b/mediapipe/model_maker/python/text/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/core/BUILD b/mediapipe/model_maker/python/text/core/BUILD index e0c53491..3ba4e8e6 100644 --- a/mediapipe/model_maker/python/text/core/BUILD +++ b/mediapipe/model_maker/python/text/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/core/__init__.py b/mediapipe/model_maker/python/text/core/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/text/core/__init__.py +++ b/mediapipe/model_maker/python/text/core/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/core/bert_model_options.py b/mediapipe/model_maker/python/text/core/bert_model_options.py index ce5ef6af..bb8aca96 100644 --- a/mediapipe/model_maker/python/text/core/bert_model_options.py +++ b/mediapipe/model_maker/python/text/core/bert_model_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/core/bert_model_spec.py b/mediapipe/model_maker/python/text/core/bert_model_spec.py index 605435df..792c2c9a 100644 --- a/mediapipe/model_maker/python/text/core/bert_model_spec.py +++ b/mediapipe/model_maker/python/text/core/bert_model_spec.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/BUILD b/mediapipe/model_maker/python/text/text_classifier/BUILD index 2c1e2d3d..1ae3e287 100644 --- a/mediapipe/model_maker/python/text/text_classifier/BUILD +++ b/mediapipe/model_maker/python/text/text_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/__init__.py b/mediapipe/model_maker/python/text/text_classifier/__init__.py index 69746196..4df3a771 100644 --- a/mediapipe/model_maker/python/text/text_classifier/__init__.py +++ b/mediapipe/model_maker/python/text/text_classifier/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/dataset.py b/mediapipe/model_maker/python/text/text_classifier/dataset.py index 3679b67a..63605b47 100644 --- a/mediapipe/model_maker/python/text/text_classifier/dataset.py +++ b/mediapipe/model_maker/python/text/text_classifier/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/dataset_test.py b/mediapipe/model_maker/python/text/text_classifier/dataset_test.py index ec9e8fa2..012476e0 100644 --- a/mediapipe/model_maker/python/text/text_classifier/dataset_test.py +++ b/mediapipe/model_maker/python/text/text_classifier/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/model_options.py b/mediapipe/model_maker/python/text/text_classifier/model_options.py index a3d94bdf..a2f45e14 100644 --- a/mediapipe/model_maker/python/text/text_classifier/model_options.py +++ b/mediapipe/model_maker/python/text/text_classifier/model_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/model_spec.py b/mediapipe/model_maker/python/text/text_classifier/model_spec.py index d999f686..e947f8c1 100644 --- a/mediapipe/model_maker/python/text/text_classifier/model_spec.py +++ b/mediapipe/model_maker/python/text/text_classifier/model_spec.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/model_spec_test.py b/mediapipe/model_maker/python/text/text_classifier/model_spec_test.py index c2d96bac..d3daac54 100644 --- a/mediapipe/model_maker/python/text/text_classifier/model_spec_test.py +++ b/mediapipe/model_maker/python/text/text_classifier/model_spec_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/preprocessor.py b/mediapipe/model_maker/python/text/text_classifier/preprocessor.py index 0a48f459..15b9d90d 100644 --- a/mediapipe/model_maker/python/text/text_classifier/preprocessor.py +++ b/mediapipe/model_maker/python/text/text_classifier/preprocessor.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/preprocessor_test.py b/mediapipe/model_maker/python/text/text_classifier/preprocessor_test.py index 2ddc4aea..27e98e26 100644 --- a/mediapipe/model_maker/python/text/text_classifier/preprocessor_test.py +++ b/mediapipe/model_maker/python/text/text_classifier/preprocessor_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/testdata/BUILD b/mediapipe/model_maker/python/text/text_classifier/testdata/BUILD index a581462c..027bad7e 100644 --- a/mediapipe/model_maker/python/text/text_classifier/testdata/BUILD +++ b/mediapipe/model_maker/python/text/text_classifier/testdata/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/text_classifier.py b/mediapipe/model_maker/python/text/text_classifier/text_classifier.py index 3d932ce9..cd6ceb9b 100644 --- a/mediapipe/model_maker/python/text/text_classifier/text_classifier.py +++ b/mediapipe/model_maker/python/text/text_classifier/text_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/text_classifier_demo.py b/mediapipe/model_maker/python/text/text_classifier/text_classifier_demo.py index 08f4c2ad..c3d1711d 100644 --- a/mediapipe/model_maker/python/text/text_classifier/text_classifier_demo.py +++ b/mediapipe/model_maker/python/text/text_classifier/text_classifier_demo.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/text_classifier_options.py b/mediapipe/model_maker/python/text/text_classifier/text_classifier_options.py index a02f1734..c62fb27b 100644 --- a/mediapipe/model_maker/python/text/text_classifier/text_classifier_options.py +++ b/mediapipe/model_maker/python/text/text_classifier/text_classifier_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/text/text_classifier/text_classifier_test.py b/mediapipe/model_maker/python/text/text_classifier/text_classifier_test.py index 6aa68a28..34830c9f 100644 --- a/mediapipe/model_maker/python/text/text_classifier/text_classifier_test.py +++ b/mediapipe/model_maker/python/text/text_classifier/text_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/BUILD b/mediapipe/model_maker/python/vision/BUILD index 10aef8c3..4410d859 100644 --- a/mediapipe/model_maker/python/vision/BUILD +++ b/mediapipe/model_maker/python/vision/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/__init__.py b/mediapipe/model_maker/python/vision/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/vision/__init__.py +++ b/mediapipe/model_maker/python/vision/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/BUILD b/mediapipe/model_maker/python/vision/core/BUILD index 6dd547ff..ba67b61e 100644 --- a/mediapipe/model_maker/python/vision/core/BUILD +++ b/mediapipe/model_maker/python/vision/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,9 +17,7 @@ licenses(["notice"]) -package( - default_visibility = ["//mediapipe:__subpackages__"], -) +package(default_visibility = ["//mediapipe:__subpackages__"]) py_library( name = "image_preprocessing", diff --git a/mediapipe/model_maker/python/vision/core/__init__.py b/mediapipe/model_maker/python/vision/core/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/model_maker/python/vision/core/__init__.py +++ b/mediapipe/model_maker/python/vision/core/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/image_preprocessing.py b/mediapipe/model_maker/python/vision/core/image_preprocessing.py index 104ccd9c..84d48634 100644 --- a/mediapipe/model_maker/python/vision/core/image_preprocessing.py +++ b/mediapipe/model_maker/python/vision/core/image_preprocessing.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/image_preprocessing_test.py b/mediapipe/model_maker/python/vision/core/image_preprocessing_test.py index 0594b437..563b19cf 100644 --- a/mediapipe/model_maker/python/vision/core/image_preprocessing_test.py +++ b/mediapipe/model_maker/python/vision/core/image_preprocessing_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/image_utils.py b/mediapipe/model_maker/python/vision/core/image_utils.py index 80d0616e..0562da44 100644 --- a/mediapipe/model_maker/python/vision/core/image_utils.py +++ b/mediapipe/model_maker/python/vision/core/image_utils.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/image_utils_test.py b/mediapipe/model_maker/python/vision/core/image_utils_test.py index 84101113..a89ff20a 100644 --- a/mediapipe/model_maker/python/vision/core/image_utils_test.py +++ b/mediapipe/model_maker/python/vision/core/image_utils_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/core/test_utils.py b/mediapipe/model_maker/python/vision/core/test_utils.py index 528b2ca7..8cfe3081 100644 --- a/mediapipe/model_maker/python/vision/core/test_utils.py +++ b/mediapipe/model_maker/python/vision/core/test_utils.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/BUILD b/mediapipe/model_maker/python/vision/face_stylizer/BUILD index b5e0399d..a2e30a11 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/BUILD +++ b/mediapipe/model_maker/python/vision/face_stylizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # Placeholder for internal Python strict test compatibility macro. # Placeholder for internal Python strict library and test compatibility macro. +# Placeholder for internal Python GPU test rule. licenses(["notice"]) @@ -26,6 +27,12 @@ filegroup( ]), ) +py_library( + name = "constants", + srcs = ["constants.py"], + deps = ["//mediapipe/model_maker/python/core/utils:file_util"], +) + py_library( name = "hyperparameters", srcs = ["hyperparameters.py"], @@ -37,6 +44,7 @@ py_library( py_library( name = "model_options", srcs = ["model_options.py"], + deps = ["//mediapipe/model_maker/python/core/utils:loss_functions"], ) py_library( @@ -72,11 +80,39 @@ py_library( py_test( name = "dataset_test", srcs = ["dataset_test.py"], - data = [ - ":testdata", - ], + data = [":testdata"], deps = [ ":dataset", "//mediapipe/tasks/python/test:test_utils", ], ) + +py_library( + name = "face_stylizer", + srcs = ["face_stylizer.py"], + deps = [ + ":constants", + ":face_stylizer_options", + ":hyperparameters", + ":model_options", + ":model_spec", + "//mediapipe/model_maker/python/core/data:classification_dataset", + "//mediapipe/model_maker/python/core/utils:loss_functions", + "//mediapipe/model_maker/python/core/utils:model_util", + "//mediapipe/model_maker/python/vision/core:image_preprocessing", + ], +) + +py_library( + name = "face_stylizer_import", + srcs = ["__init__.py"], + visibility = ["//visibility:public"], + deps = [ + ":dataset", + ":face_stylizer", + ":face_stylizer_options", + ":hyperparameters", + ":model_options", + ":model_spec", + ], +) diff --git a/mediapipe/model_maker/python/vision/face_stylizer/__init__.py b/mediapipe/model_maker/python/vision/face_stylizer/__init__.py index e935c0c7..cc5bd2ae 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/__init__.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,3 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. """MediaPipe Model Maker Python Public API For Face Stylization.""" + +from mediapipe.model_maker.python.vision.face_stylizer import dataset +from mediapipe.model_maker.python.vision.face_stylizer import face_stylizer +from mediapipe.model_maker.python.vision.face_stylizer import face_stylizer_options +from mediapipe.model_maker.python.vision.face_stylizer import hyperparameters +from mediapipe.model_maker.python.vision.face_stylizer import model_options +from mediapipe.model_maker.python.vision.face_stylizer import model_spec + +FaceStylizer = face_stylizer.FaceStylizer +SupportedModels = model_spec.SupportedModels +ModelOptions = model_options.FaceStylizerModelOptions +HParams = hyperparameters.HParams +Dataset = dataset.Dataset +FaceStylizerOptions = face_stylizer_options.FaceStylizerOptions diff --git a/mediapipe/model_maker/python/vision/face_stylizer/constants.py b/mediapipe/model_maker/python/vision/face_stylizer/constants.py new file mode 100644 index 00000000..e7a03aeb --- /dev/null +++ b/mediapipe/model_maker/python/vision/face_stylizer/constants.py @@ -0,0 +1,45 @@ +# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Face stylizer model constants.""" + +from mediapipe.model_maker.python.core.utils import file_util + +# TODO: Move model files to GCS for downloading. +FACE_STYLIZER_ENCODER_MODEL_FILES = file_util.DownloadedFiles( + 'face_stylizer/encoder', + 'https://storage.googleapis.com/mediapipe-assets/face_stylizer_encoder.tar.gz', + is_folder=True, +) +FACE_STYLIZER_DECODER_MODEL_FILES = file_util.DownloadedFiles( + 'face_stylizer/decoder', + 'https://storage.googleapis.com/mediapipe-assets/face_stylizer_decoder.tar.gz', + is_folder=True, +) +FACE_STYLIZER_MAPPING_MODEL_FILES = file_util.DownloadedFiles( + 'face_stylizer/mapping', + 'https://storage.googleapis.com/mediapipe-assets/face_stylizer_mapping.tar.gz', + is_folder=True, +) +FACE_STYLIZER_DISCRIMINATOR_MODEL_FILES = file_util.DownloadedFiles( + 'face_stylizer/discriminator', + 'https://storage.googleapis.com/mediapipe-assets/face_stylizer_discriminator.tar.gz', + is_folder=True, +) +FACE_STYLIZER_W_FILES = file_util.DownloadedFiles( + 'face_stylizer/w_avg.npy', + 'https://storage.googleapis.com/mediapipe-assets/face_stylizer_w_avg.npy', +) + +# Dimension of the input style vector to the decoder +STYLE_DIM = 512 diff --git a/mediapipe/model_maker/python/vision/face_stylizer/dataset.py b/mediapipe/model_maker/python/vision/face_stylizer/dataset.py index b6c85d6f..d517fd9c 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/dataset.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/dataset_test.py b/mediapipe/model_maker/python/vision/face_stylizer/dataset_test.py index a8af222d..cf0dce80 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/dataset_test.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer.py b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer.py new file mode 100644 index 00000000..0c8097f1 --- /dev/null +++ b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer.py @@ -0,0 +1,201 @@ +# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""APIs to train face stylization model.""" + +from typing import Callable, Optional + +import numpy as np +import tensorflow as tf + +from mediapipe.model_maker.python.core.data import classification_dataset as classification_ds +from mediapipe.model_maker.python.core.utils import loss_functions +from mediapipe.model_maker.python.core.utils import model_util +from mediapipe.model_maker.python.vision.core import image_preprocessing +from mediapipe.model_maker.python.vision.face_stylizer import constants +from mediapipe.model_maker.python.vision.face_stylizer import face_stylizer_options +from mediapipe.model_maker.python.vision.face_stylizer import hyperparameters as hp +from mediapipe.model_maker.python.vision.face_stylizer import model_options as model_opt +from mediapipe.model_maker.python.vision.face_stylizer import model_spec as ms + + +class FaceStylizer(object): + """FaceStylizer for building face stylization model. + + Attributes: + w_avg: An average face latent code to regularize face generation in face + stylization. + """ + + def __init__( + self, + model_spec: ms.ModelSpec, + model_options: model_opt.FaceStylizerModelOptions, + hparams: hp.HParams, + ): + """Initializes face stylizer. + + Args: + model_spec: Specification for the model. + model_options: Model options for creating face stylizer. + hparams: The hyperparameters for training face stylizer. + """ + self._model_spec = model_spec + self._model_options = model_options + self._hparams = hparams + # TODO: Support face alignment in image preprocessor. + self._preprocessor = image_preprocessing.Preprocessor( + input_shape=self._model_spec.input_image_shape, + num_classes=1, + mean_rgb=self._model_spec.mean_rgb, + stddev_rgb=self._model_spec.stddev_rgb, + ) + + @classmethod + def create( + cls, + train_data: classification_ds.ClassificationDataset, + options: face_stylizer_options.FaceStylizerOptions, + ) -> 'FaceStylizer': + """Creates and trains a face stylizer with input datasets. + + Args: + train_data: The input style image dataset for training the face stylizer. + options: The options to configure face stylizer. + + Returns: + A FaceStylizer instant with the trained model. + """ + if options.model_options is None: + options.model_options = model_opt.FaceStylizerModelOptions() + + if options.hparams is None: + options.hparams = hp.HParams() + + spec = ms.SupportedModels.get(options.model) + + face_stylizer = cls( + model_spec=spec, + model_options=options.model_options, + hparams=options.hparams, + ) + face_stylizer._create_and_train_model(train_data) + return face_stylizer + + def _create_and_train_model( + self, train_data: classification_ds.ClassificationDataset + ): + """Creates and trains the face stylizer model. + + Args: + train_data: Training data. + """ + self._create_model() + self._train_model(train_data=train_data, preprocessor=self._preprocessor) + + def _create_model(self): + """Creates the componenets of face stylizer.""" + self._encoder = model_util.load_keras_model( + constants.FACE_STYLIZER_ENCODER_MODEL_FILES.get_path() + ) + self._decoder = model_util.load_keras_model( + constants.FACE_STYLIZER_DECODER_MODEL_FILES.get_path() + ) + self._mapping_network = model_util.load_keras_model( + constants.FACE_STYLIZER_MAPPING_MODEL_FILES.get_path() + ) + self._discriminator = model_util.load_keras_model( + constants.FACE_STYLIZER_DISCRIMINATOR_MODEL_FILES.get_path() + ) + with tf.io.gfile.GFile( + constants.FACE_STYLIZER_W_FILES.get_path(), 'rb' + ) as f: + w_avg = np.load(f) + + self.w_avg = w_avg[: self._model_spec.style_block_num][np.newaxis] + + def _train_model( + self, + train_data: classification_ds.ClassificationDataset, + preprocessor: Optional[Callable[..., bool]] = None, + ): + """Trains the face stylizer model. + + Args: + train_data: The data for training model. + preprocessor: The image preprocessor. + """ + train_dataset = train_data.gen_tf_dataset(preprocess=preprocessor) + + # TODO: Support processing mulitple input style images. The + # input style images are expected to have similar style. + # style_sample represents a tuple of (style_image, style_label). + style_sample = next(iter(train_dataset)) + style_img = style_sample[0] + + batch_size = self._hparams.batch_size + label_in = tf.zeros(shape=[batch_size, 0]) + + style_encoding = self._encoder(style_img) + + optimizer = tf.keras.optimizers.Adam( + learning_rate=self._hparams.learning_rate, + beta_1=self._hparams.beta_1, + beta_2=self._hparams.beta_2, + ) + + image_perceptual_quality_loss = loss_functions.ImagePerceptualQualityLoss( + loss_weight=self._model_options.perception_loss_weight + ) + + for i in range(self._hparams.epochs): + noise = tf.random.normal(shape=[batch_size, constants.STYLE_DIM]) + + mean_w = self._mapping_network([noise, label_in], training=False)[ + :, : self._model_spec.style_block_num + ] + style_encodings = tf.tile(style_encoding, [batch_size, 1, 1]) + + in_latent = tf.Variable(tf.identity(style_encodings)) + + alpha = self._model_options.alpha + for swap_layer in self._model_options.swap_layers: + in_latent = in_latent[:, swap_layer].assign( + alpha * style_encodings[:, swap_layer] + + (1 - alpha) * mean_w[:, swap_layer] + ) + + with tf.GradientTape() as tape: + outputs = self._decoder( + {'inputs': in_latent + self.w_avg}, + training=True, + ) + gen_img = outputs['image'][-1] + + real_feature = self._discriminator( + [tf.transpose(style_img, [0, 3, 1, 2]), label_in] + ) + gen_feature = self._discriminator( + [tf.transpose(gen_img, [0, 3, 1, 2]), label_in] + ) + + style_loss = image_perceptual_quality_loss(gen_img, style_img) + style_loss += ( + tf.keras.losses.MeanAbsoluteError()(real_feature, gen_feature) + * self._model_options.adv_loss_weight + ) + tf.compat.v1.logging.info(f'Iteration {i} loss: {style_loss.numpy()}') + + tvars = self._decoder.trainable_variables + grads = tape.gradient(style_loss, tvars) + optimizer.apply_gradients(list(zip(grads, tvars))) diff --git a/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_options.py b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_options.py index e0e2441d..90fd8eb3 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_options.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_options.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_test.py b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_test.py new file mode 100644 index 00000000..c244a3ee --- /dev/null +++ b/mediapipe/model_maker/python/vision/face_stylizer/face_stylizer_test.py @@ -0,0 +1,55 @@ +# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the 'License'); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an 'AS IS' BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import tensorflow as tf + +from mediapipe.model_maker.python.vision import face_stylizer +from mediapipe.tasks.python.test import test_utils + + +class FaceStylizerTest(tf.test.TestCase): + + def _load_data(self): + """Loads training dataset.""" + input_data_dir = test_utils.get_test_data_path('testdata') + + data = face_stylizer.Dataset.from_folder(dirname=input_data_dir) + return data + + def _evaluate_saved_model(self, model: face_stylizer.FaceStylizer): + """Evaluates the fine-tuned face stylizer model.""" + test_image = tf.ones(shape=(256, 256, 3), dtype=tf.float32) + test_image_batch = test_image[tf.newaxis] + in_latent = model._encoder(test_image_batch) + output = model._decoder({'inputs': in_latent + model.w_avg}) + self.assertEqual(output['image'][-1].shape, (1, 256, 256, 3)) + + def setUp(self): + super().setUp() + self._train_data = self._load_data() + + def test_finetuning_face_stylizer_with_single_input_style_image(self): + with self.test_session(use_gpu=True): + face_stylizer_options = face_stylizer.FaceStylizerOptions( + model=face_stylizer.SupportedModels.BLAZE_FACE_STYLIZER_256, + hparams=face_stylizer.HParams(epochs=1), + ) + model = face_stylizer.FaceStylizer.create( + train_data=self._train_data, options=face_stylizer_options + ) + self._evaluate_saved_model(model) + + +if __name__ == '__main__': + tf.test.main() diff --git a/mediapipe/model_maker/python/vision/face_stylizer/hyperparameters.py b/mediapipe/model_maker/python/vision/face_stylizer/hyperparameters.py index 0a129a72..6a2999a4 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/hyperparameters.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/hyperparameters.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ class HParams(hp.BaseHParams): """ # Parameters from BaseHParams class. - learning_rate: float = 5e-5 + learning_rate: float = 8e-4 batch_size: int = 4 epochs: int = 100 # Parameters for face stylizer. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/model_options.py b/mediapipe/model_maker/python/vision/face_stylizer/model_options.py index 064e2d02..f63d4b96 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/model_options.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/model_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,8 +13,15 @@ # limitations under the License. """Configurable model options for face stylizer models.""" +from typing import Sequence import dataclasses -from typing import List + +from mediapipe.model_maker.python.core.utils import loss_functions + + +def _default_perceptual_quality_loss_weight(): + """Default perceptual quality loss weight for face stylizer.""" + return loss_functions.PerceptualLossWeight(l1=0.5, content=4.0, style=1.0) # TODO: Add more detailed instructions about hyperparameter tuning. @@ -25,13 +32,21 @@ class FaceStylizerModelOptions: Attributes: swap_layers: The layers of feature to be interpolated between encoding features and StyleGAN input features. - alpha: Weighting coefficient for swapping layer interpolation. - adv_loss_weight: Weighting coeffcieint of adversarial loss versus perceptual + alpha: Weighting coefficient of style latent for swapping layer + interpolation. Its valid range is [0, 1]. The greater weight means + stronger style is applied to the output image. Expect to set it to a small + value, i.e. < 0.1. + perception_loss_weight: Weighting coefficients of image perception quality loss. + adv_loss_weight: Weighting coeffcieint of adversarial loss versus image + perceptual quality loss. It expects a small value, i.e. < 0.2. """ - swap_layers: List[int] = dataclasses.field( - default_factory=lambda: [4, 5, 6, 7, 8, 9, 10, 11] + swap_layers: Sequence[int] = dataclasses.field( + default_factory=lambda: [4, 5, 10, 11] ) - alpha: float = 1.0 - adv_loss_weight: float = 1.0 + alpha: float = 0.1 + perception_loss_weight: loss_functions.PerceptualLossWeight = ( + dataclasses.field(default_factory=_default_perceptual_quality_loss_weight) + ) + adv_loss_weight: float = 0.2 diff --git a/mediapipe/model_maker/python/vision/face_stylizer/model_spec.py b/mediapipe/model_maker/python/vision/face_stylizer/model_spec.py index 6f5126f0..1c528a63 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/model_spec.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/model_spec.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/face_stylizer/model_spec_test.py b/mediapipe/model_maker/python/vision/face_stylizer/model_spec_test.py index 8be3242a..e420adef 100644 --- a/mediapipe/model_maker/python/vision/face_stylizer/model_spec_test.py +++ b/mediapipe/model_maker/python/vision/face_stylizer/model_spec_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/BUILD b/mediapipe/model_maker/python/vision/gesture_recognizer/BUILD index e9642159..578723fb 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/BUILD +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/__init__.py b/mediapipe/model_maker/python/vision/gesture_recognizer/__init__.py index a302e8d7..5d5c5481 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/__init__.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/constants.py b/mediapipe/model_maker/python/vision/gesture_recognizer/constants.py index acd569d0..71689bd7 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/constants.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/constants.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/dataset.py b/mediapipe/model_maker/python/vision/gesture_recognizer/dataset.py index 70a363f1..1ba626be 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/dataset.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/dataset_test.py b/mediapipe/model_maker/python/vision/gesture_recognizer/dataset_test.py index e9e7ddd0..a3290559 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/dataset_test.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved.s +# Copyright 2022 The MediaPipe Authors.s # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer.py b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer.py index f009ef28..66934304 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_demo.py b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_demo.py index 1cf9f061..0c1d57d2 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_demo.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_demo.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_options.py b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_options.py index da9e2d64..2d80da8e 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_options.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_test.py b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_test.py index 11b4f975..41799af9 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_test.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/gesture_recognizer_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/hyperparameters.py b/mediapipe/model_maker/python/vision/gesture_recognizer/hyperparameters.py index fed62453..f7cf9cf0 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/hyperparameters.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/hyperparameters.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer.py b/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer.py index d6dc3ec2..8ccfcb18 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer_test.py b/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer_test.py index fd26b274..794e7678 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer_test.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/metadata_writer_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/gesture_recognizer/model_options.py b/mediapipe/model_maker/python/vision/gesture_recognizer/model_options.py index 1870437d..a607fd6b 100644 --- a/mediapipe/model_maker/python/vision/gesture_recognizer/model_options.py +++ b/mediapipe/model_maker/python/vision/gesture_recognizer/model_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/BUILD b/mediapipe/model_maker/python/vision/image_classifier/BUILD index f8861669..3b6d7551 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/BUILD +++ b/mediapipe/model_maker/python/vision/image_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/__init__.py b/mediapipe/model_maker/python/vision/image_classifier/__init__.py index 4cde9e7e..c9ab6fae 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/__init__.py +++ b/mediapipe/model_maker/python/vision/image_classifier/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/dataset.py b/mediapipe/model_maker/python/vision/image_classifier/dataset.py index bf4bbc4b..6bc180be 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/dataset.py +++ b/mediapipe/model_maker/python/vision/image_classifier/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/dataset_test.py b/mediapipe/model_maker/python/vision/image_classifier/dataset_test.py index 1f290b32..63fa666b 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/dataset_test.py +++ b/mediapipe/model_maker/python/vision/image_classifier/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/hyperparameters.py b/mediapipe/model_maker/python/vision/image_classifier/hyperparameters.py index 1d3bfdad..5092ed37 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/hyperparameters.py +++ b/mediapipe/model_maker/python/vision/image_classifier/hyperparameters.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/image_classifier.py b/mediapipe/model_maker/python/vision/image_classifier/image_classifier.py index c2181121..3838a5a1 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/image_classifier.py +++ b/mediapipe/model_maker/python/vision/image_classifier/image_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_demo.py b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_demo.py index f382e28a..31b6e587 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_demo.py +++ b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_demo.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_options.py b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_options.py index d3566a9f..bf3034c6 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_options.py +++ b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_test.py b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_test.py index afda8643..4b1ea607 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/image_classifier_test.py +++ b/mediapipe/model_maker/python/vision/image_classifier/image_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/model_options.py b/mediapipe/model_maker/python/vision/image_classifier/model_options.py index a8f89b57..2e7c32df 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/model_options.py +++ b/mediapipe/model_maker/python/vision/image_classifier/model_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/model_spec.py b/mediapipe/model_maker/python/vision/image_classifier/model_spec.py index d46cafe6..7bc6aca8 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/model_spec.py +++ b/mediapipe/model_maker/python/vision/image_classifier/model_spec.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/model_spec_test.py b/mediapipe/model_maker/python/vision/image_classifier/model_spec_test.py index 63f360ab..6b388cd1 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/model_spec_test.py +++ b/mediapipe/model_maker/python/vision/image_classifier/model_spec_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/image_classifier/testdata/BUILD b/mediapipe/model_maker/python/vision/image_classifier/testdata/BUILD index 37730ea9..3d778836 100644 --- a/mediapipe/model_maker/python/vision/image_classifier/testdata/BUILD +++ b/mediapipe/model_maker/python/vision/image_classifier/testdata/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/BUILD b/mediapipe/model_maker/python/vision/object_detector/BUILD index b97d215d..f9c3f00f 100644 --- a/mediapipe/model_maker/python/vision/object_detector/BUILD +++ b/mediapipe/model_maker/python/vision/object_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/__init__.py b/mediapipe/model_maker/python/vision/object_detector/__init__.py index ef7a9201..4670b343 100644 --- a/mediapipe/model_maker/python/vision/object_detector/__init__.py +++ b/mediapipe/model_maker/python/vision/object_detector/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/dataset.py b/mediapipe/model_maker/python/vision/object_detector/dataset.py index f260c82c..6899d861 100644 --- a/mediapipe/model_maker/python/vision/object_detector/dataset.py +++ b/mediapipe/model_maker/python/vision/object_detector/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/dataset_test.py b/mediapipe/model_maker/python/vision/object_detector/dataset_test.py index 46cce68d..91ae273b 100644 --- a/mediapipe/model_maker/python/vision/object_detector/dataset_test.py +++ b/mediapipe/model_maker/python/vision/object_detector/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/dataset_util.py b/mediapipe/model_maker/python/vision/object_detector/dataset_util.py index 440d4594..74d082f9 100644 --- a/mediapipe/model_maker/python/vision/object_detector/dataset_util.py +++ b/mediapipe/model_maker/python/vision/object_detector/dataset_util.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/dataset_util_test.py b/mediapipe/model_maker/python/vision/object_detector/dataset_util_test.py index 7a2ef95f..6daea1f4 100644 --- a/mediapipe/model_maker/python/vision/object_detector/dataset_util_test.py +++ b/mediapipe/model_maker/python/vision/object_detector/dataset_util_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/hyperparameters.py b/mediapipe/model_maker/python/vision/object_detector/hyperparameters.py index 241104cf..1bc7514f 100644 --- a/mediapipe/model_maker/python/vision/object_detector/hyperparameters.py +++ b/mediapipe/model_maker/python/vision/object_detector/hyperparameters.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ """Hyperparameters for training object detection models.""" import dataclasses -from typing import List +from typing import Optional from mediapipe.model_maker.python.core import hyperparameters as hp @@ -29,12 +29,13 @@ class HParams(hp.BaseHParams): epochs: Number of training iterations over the dataset. do_fine_tuning: If true, the base module is trained together with the classification layer on top. - learning_rate_epoch_boundaries: List of epoch boundaries where - learning_rate_epoch_boundaries[i] is the epoch where the learning rate - will decay to learning_rate * learning_rate_decay_multipliers[i]. - learning_rate_decay_multipliers: List of learning rate multipliers which - calculates the learning rate at the ith boundary as learning_rate * - learning_rate_decay_multipliers[i]. + cosine_decay_epochs: The number of epochs for cosine decay learning rate. + See + https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/schedules/CosineDecay + for more info. + cosine_decay_alpha: The alpha value for cosine decay learning rate. See + https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/schedules/CosineDecay + for more info. """ # Parameters from BaseHParams class. @@ -42,41 +43,9 @@ class HParams(hp.BaseHParams): batch_size: int = 32 epochs: int = 10 - # Parameters for learning rate decay - learning_rate_epoch_boundaries: List[int] = dataclasses.field( - default_factory=lambda: [] - ) - learning_rate_decay_multipliers: List[float] = dataclasses.field( - default_factory=lambda: [] - ) - - def __post_init__(self): - # Validate stepwise learning rate parameters - lr_boundary_len = len(self.learning_rate_epoch_boundaries) - lr_decay_multipliers_len = len(self.learning_rate_decay_multipliers) - if lr_boundary_len != lr_decay_multipliers_len: - raise ValueError( - "Length of learning_rate_epoch_boundaries and ", - "learning_rate_decay_multipliers do not match: ", - f"{lr_boundary_len}!={lr_decay_multipliers_len}", - ) - # Validate learning_rate_epoch_boundaries - if ( - sorted(self.learning_rate_epoch_boundaries) - != self.learning_rate_epoch_boundaries - ): - raise ValueError( - "learning_rate_epoch_boundaries is not in ascending order: ", - self.learning_rate_epoch_boundaries, - ) - if ( - self.learning_rate_epoch_boundaries - and self.learning_rate_epoch_boundaries[-1] > self.epochs - ): - raise ValueError( - "Values in learning_rate_epoch_boundaries cannot be greater ", - "than epochs", - ) + # Parameters for cosine learning rate decay + cosine_decay_epochs: Optional[int] = None + cosine_decay_alpha: float = 0.0 @dataclasses.dataclass diff --git a/mediapipe/model_maker/python/vision/object_detector/model.py b/mediapipe/model_maker/python/vision/object_detector/model.py index 26e0d036..eac66978 100644 --- a/mediapipe/model_maker/python/vision/object_detector/model.py +++ b/mediapipe/model_maker/python/vision/object_detector/model.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/model_options.py b/mediapipe/model_maker/python/vision/object_detector/model_options.py index 64042aa0..a332804b 100644 --- a/mediapipe/model_maker/python/vision/object_detector/model_options.py +++ b/mediapipe/model_maker/python/vision/object_detector/model_options.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/model_spec.py b/mediapipe/model_maker/python/vision/object_detector/model_spec.py index 7d284b43..2ce838c7 100644 --- a/mediapipe/model_maker/python/vision/object_detector/model_spec.py +++ b/mediapipe/model_maker/python/vision/object_detector/model_spec.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/model_test.py b/mediapipe/model_maker/python/vision/object_detector/model_test.py index 66401f8d..3ccee4d0 100644 --- a/mediapipe/model_maker/python/vision/object_detector/model_test.py +++ b/mediapipe/model_maker/python/vision/object_detector/model_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/object_detector.py b/mediapipe/model_maker/python/vision/object_detector/object_detector.py index 2d1d92ef..746eef1b 100644 --- a/mediapipe/model_maker/python/vision/object_detector/object_detector.py +++ b/mediapipe/model_maker/python/vision/object_detector/object_detector.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -328,7 +328,7 @@ class ObjectDetector(classifier.Classifier): converter.target_spec.supported_ops = (tf.lite.OpsSet.TFLITE_BUILTINS,) tflite_model = converter.convert() - writer = object_detector_writer.MetadataWriter.create( + writer = object_detector_writer.MetadataWriter.create_for_models_with_nms( tflite_model, self._model_spec.mean_rgb, self._model_spec.stddev_rgb, @@ -354,19 +354,16 @@ class ObjectDetector(classifier.Classifier): A tf.keras.optimizer.Optimizer for model training. """ init_lr = self._hparams.learning_rate * self._hparams.batch_size / 256 - if self._hparams.learning_rate_epoch_boundaries: - lr_values = [init_lr] + [ - init_lr * m for m in self._hparams.learning_rate_decay_multipliers - ] - lr_step_boundaries = [ - steps_per_epoch * epoch_boundary - for epoch_boundary in self._hparams.learning_rate_epoch_boundaries - ] - learning_rate = tf.keras.optimizers.schedules.PiecewiseConstantDecay( - lr_step_boundaries, lr_values - ) - else: - learning_rate = init_lr + decay_epochs = ( + self._hparams.cosine_decay_epochs + if self._hparams.cosine_decay_epochs + else self._hparams.epochs + ) + learning_rate = tf.keras.optimizers.schedules.CosineDecay( + init_lr, + steps_per_epoch * decay_epochs, + self._hparams.cosine_decay_alpha, + ) return tf.keras.optimizers.experimental.SGD( learning_rate=learning_rate, momentum=0.9 ) diff --git a/mediapipe/model_maker/python/vision/object_detector/object_detector_demo.py b/mediapipe/model_maker/python/vision/object_detector/object_detector_demo.py index 3bbac5d8..04820796 100644 --- a/mediapipe/model_maker/python/vision/object_detector/object_detector_demo.py +++ b/mediapipe/model_maker/python/vision/object_detector/object_detector_demo.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/object_detector_options.py b/mediapipe/model_maker/python/vision/object_detector/object_detector_options.py index e1647cd5..6333eb81 100644 --- a/mediapipe/model_maker/python/vision/object_detector/object_detector_options.py +++ b/mediapipe/model_maker/python/vision/object_detector/object_detector_options.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/object_detector_test.py b/mediapipe/model_maker/python/vision/object_detector/object_detector_test.py index 02f773e6..268a926f 100644 --- a/mediapipe/model_maker/python/vision/object_detector/object_detector_test.py +++ b/mediapipe/model_maker/python/vision/object_detector/object_detector_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/preprocessor.py b/mediapipe/model_maker/python/vision/object_detector/preprocessor.py index b0d2afb7..b4e08f99 100644 --- a/mediapipe/model_maker/python/vision/object_detector/preprocessor.py +++ b/mediapipe/model_maker/python/vision/object_detector/preprocessor.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/python/vision/object_detector/preprocessor_test.py b/mediapipe/model_maker/python/vision/object_detector/preprocessor_test.py index d8ea63cd..30db6bdf 100644 --- a/mediapipe/model_maker/python/vision/object_detector/preprocessor_test.py +++ b/mediapipe/model_maker/python/vision/object_detector/preprocessor_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/model_maker/setup.py b/mediapipe/model_maker/setup.py index ccf63390..d80e6ebe 100644 --- a/mediapipe/model_maker/setup.py +++ b/mediapipe/model_maker/setup.py @@ -1,4 +1,4 @@ -"""Copyright 2020-2022 The MediaPipe Authors. All Rights Reserved. +"""Copyright 2020-2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/python/pybind/packet_getter.cc b/mediapipe/python/pybind/packet_getter.cc index 93adfa01..a576c8b3 100644 --- a/mediapipe/python/pybind/packet_getter.cc +++ b/mediapipe/python/pybind/packet_getter.cc @@ -14,6 +14,8 @@ #include "mediapipe/python/pybind/packet_getter.h" +#include + #include "absl/status/statusor.h" #include "mediapipe/framework/formats/image.h" #include "mediapipe/framework/formats/matrix.h" diff --git a/mediapipe/python/solutions/drawing_styles.py b/mediapipe/python/solutions/drawing_styles.py index 5d75d5b3..a4c39b37 100644 --- a/mediapipe/python/solutions/drawing_styles.py +++ b/mediapipe/python/solutions/drawing_styles.py @@ -30,6 +30,8 @@ _GRAY = (128, 128, 128) _PURPLE = (128, 64, 128) _PEACH = (180, 229, 255) _WHITE = (224, 224, 224) +_CYAN = (192, 255, 48) +_MAGENTA = (192, 48, 255) # Hands _THICKNESS_WRIST_MCP = 3 @@ -109,6 +111,23 @@ _FACEMESH_CONTOURS_CONNECTION_STYLE = { DrawingSpec(color=_WHITE, thickness=_THICKNESS_CONTOURS) } +_FACEMESH_CONTOURS_CONNECTION_STYLE_1 = { + face_mesh_connections.FACEMESH_LIPS: + DrawingSpec(color=_BLUE, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_LEFT_EYE: + DrawingSpec(color=_CYAN, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_LEFT_EYEBROW: + DrawingSpec(color=_GREEN, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_RIGHT_EYE: + DrawingSpec(color=_MAGENTA, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_RIGHT_EYEBROW: + DrawingSpec(color=_RED, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_FACE_OVAL: + DrawingSpec(color=_WHITE, thickness=_THICKNESS_CONTOURS), + face_mesh_connections.FACEMESH_NOSE: + DrawingSpec(color=_YELLOW, thickness=_THICKNESS_CONTOURS) +} + # Pose _THICKNESS_POSE_LANDMARKS = 2 _POSE_LANDMARKS_LEFT = frozenset([ @@ -161,15 +180,24 @@ def get_default_hand_connections_style( def get_default_face_mesh_contours_style( + i: int = 0, ) -> Mapping[Tuple[int, int], DrawingSpec]: """Returns the default face mesh contours drawing style. + Args: + i: The id for default style. Currently there are two default styles. + Returns: A mapping from each face mesh contours connection to its default drawing spec. """ + default_style = ( + _FACEMESH_CONTOURS_CONNECTION_STYLE_1 + if i == 1 + else _FACEMESH_CONTOURS_CONNECTION_STYLE + ) face_mesh_contours_connection_style = {} - for k, v in _FACEMESH_CONTOURS_CONNECTION_STYLE.items(): + for k, v in default_style.items(): for connection in k: face_mesh_contours_connection_style[connection] = v return face_mesh_contours_connection_style diff --git a/mediapipe/python/solutions/face_mesh.py b/mediapipe/python/solutions/face_mesh.py index 997c0661..e5612219 100644 --- a/mediapipe/python/solutions/face_mesh.py +++ b/mediapipe/python/solutions/face_mesh.py @@ -45,6 +45,7 @@ from mediapipe.python.solutions.face_mesh_connections import FACEMESH_LEFT_EYE from mediapipe.python.solutions.face_mesh_connections import FACEMESH_LEFT_EYEBROW from mediapipe.python.solutions.face_mesh_connections import FACEMESH_LEFT_IRIS from mediapipe.python.solutions.face_mesh_connections import FACEMESH_LIPS +from mediapipe.python.solutions.face_mesh_connections import FACEMESH_NOSE from mediapipe.python.solutions.face_mesh_connections import FACEMESH_RIGHT_EYE from mediapipe.python.solutions.face_mesh_connections import FACEMESH_RIGHT_EYEBROW from mediapipe.python.solutions.face_mesh_connections import FACEMESH_RIGHT_IRIS diff --git a/mediapipe/python/solutions/face_mesh_connections.py b/mediapipe/python/solutions/face_mesh_connections.py index 1ebd541d..d44fb79b 100644 --- a/mediapipe/python/solutions/face_mesh_connections.py +++ b/mediapipe/python/solutions/face_mesh_connections.py @@ -57,6 +57,13 @@ FACEMESH_FACE_OVAL = frozenset([(10, 338), (338, 297), (297, 332), (332, 284), (234, 127), (127, 162), (162, 21), (21, 54), (54, 103), (103, 67), (67, 109), (109, 10)]) +FACEMESH_NOSE = frozenset([(168, 6), (6, 197), (197, 195), (195, 5), + (5, 4), (4, 1), (1, 19), (19, 94), (94, 2), (98, 97), + (97, 2), (2, 326), (326, 327), (327, 294), + (294, 278), (278, 344), (344, 440), (440, 275), + (275, 4), (4, 45), (45, 220), (220, 115), (115, 48), + (48, 64), (64, 98)]) + FACEMESH_CONTOURS = frozenset().union(*[ FACEMESH_LIPS, FACEMESH_LEFT_EYE, FACEMESH_LEFT_EYEBROW, FACEMESH_RIGHT_EYE, FACEMESH_RIGHT_EYEBROW, FACEMESH_FACE_OVAL diff --git a/mediapipe/tasks/BUILD b/mediapipe/tasks/BUILD index 98ddd577..582fc4c3 100644 --- a/mediapipe/tasks/BUILD +++ b/mediapipe/tasks/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/__init__.py b/mediapipe/tasks/__init__.py index ad7f0fd9..701d7237 100644 --- a/mediapipe/tasks/__init__.py +++ b/mediapipe/tasks/__init__.py @@ -1,4 +1,4 @@ -"""Copyright 2022 The MediaPipe Authors. All Rights Reserved. +"""Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/BUILD b/mediapipe/tasks/cc/BUILD index f49657af..39df9c55 100644 --- a/mediapipe/tasks/cc/BUILD +++ b/mediapipe/tasks/cc/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/BUILD b/mediapipe/tasks/cc/audio/audio_classifier/BUILD index c575caab..50f58754 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/BUILD +++ b/mediapipe/tasks/cc/audio/audio_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.cc b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.cc index 822c3a22..0ebdea10 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.cc +++ b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.h b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.h index dd611ec8..373b3151 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.h +++ b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_graph.cc b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_graph.cc index b232afc7..b15a23f3 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_graph.cc +++ b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_test.cc b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_test.cc index 5f5f8da6..30b55b8d 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_test.cc +++ b/mediapipe/tasks/cc/audio/audio_classifier/audio_classifier_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/proto/BUILD b/mediapipe/tasks/cc/audio/audio_classifier/proto/BUILD index bfe37ec0..1b3783d5 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/proto/BUILD +++ b/mediapipe/tasks/cc/audio/audio_classifier/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_classifier/proto/audio_classifier_graph_options.proto b/mediapipe/tasks/cc/audio/audio_classifier/proto/audio_classifier_graph_options.proto index cc26b307..78eb2cf8 100644 --- a/mediapipe/tasks/cc/audio/audio_classifier/proto/audio_classifier_graph_options.proto +++ b/mediapipe/tasks/cc/audio/audio_classifier/proto/audio_classifier_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/BUILD b/mediapipe/tasks/cc/audio/audio_embedder/BUILD index d79a6f01..7d5a49f8 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/BUILD +++ b/mediapipe/tasks/cc/audio/audio_embedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.cc b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.cc index 15bf1fb8..08f08bba 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.cc +++ b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.h b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.h index c5f548a6..1035fa0a 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.h +++ b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_graph.cc b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_graph.cc index 187f11f7..a9654947 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_graph.cc +++ b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_test.cc b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_test.cc index 81ecb123..a297e7c4 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_test.cc +++ b/mediapipe/tasks/cc/audio/audio_embedder/audio_embedder_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/proto/BUILD b/mediapipe/tasks/cc/audio/audio_embedder/proto/BUILD index 38df8fb4..3b26138f 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/proto/BUILD +++ b/mediapipe/tasks/cc/audio/audio_embedder/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/audio_embedder/proto/audio_embedder_graph_options.proto b/mediapipe/tasks/cc/audio/audio_embedder/proto/audio_embedder_graph_options.proto index 367a1bf2..a6f7275e 100644 --- a/mediapipe/tasks/cc/audio/audio_embedder/proto/audio_embedder_graph_options.proto +++ b/mediapipe/tasks/cc/audio/audio_embedder/proto/audio_embedder_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/core/BUILD b/mediapipe/tasks/cc/audio/core/BUILD index 016faa10..8372b1aa 100644 --- a/mediapipe/tasks/cc/audio/core/BUILD +++ b/mediapipe/tasks/cc/audio/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/core/audio_task_api_factory.h b/mediapipe/tasks/cc/audio/core/audio_task_api_factory.h index 6f5c4ff6..bdac1cad 100644 --- a/mediapipe/tasks/cc/audio/core/audio_task_api_factory.h +++ b/mediapipe/tasks/cc/audio/core/audio_task_api_factory.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/core/base_audio_task_api.h b/mediapipe/tasks/cc/audio/core/base_audio_task_api.h index c04b3cf3..ef8254d1 100644 --- a/mediapipe/tasks/cc/audio/core/base_audio_task_api.h +++ b/mediapipe/tasks/cc/audio/core/base_audio_task_api.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/core/running_mode.h b/mediapipe/tasks/cc/audio/core/running_mode.h index 332454f9..b7e857a5 100644 --- a/mediapipe/tasks/cc/audio/core/running_mode.h +++ b/mediapipe/tasks/cc/audio/core/running_mode.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/utils/BUILD b/mediapipe/tasks/cc/audio/utils/BUILD index 29d88d33..a25bbe8a 100644 --- a/mediapipe/tasks/cc/audio/utils/BUILD +++ b/mediapipe/tasks/cc/audio/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.cc b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.cc index 8efd9474..6765bc63 100644 --- a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.cc +++ b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.h b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.h index 69393a10..09bfa264 100644 --- a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.h +++ b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs_test.cc b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs_test.cc index 4f7a5000..32816a92 100644 --- a/mediapipe/tasks/cc/audio/utils/audio_tensor_specs_test.cc +++ b/mediapipe/tasks/cc/audio/utils/audio_tensor_specs_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/common.cc b/mediapipe/tasks/cc/common.cc index e7102edc..cdb069a7 100644 --- a/mediapipe/tasks/cc/common.cc +++ b/mediapipe/tasks/cc/common.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/common.h b/mediapipe/tasks/cc/common.h index 70892c5c..bee41095 100644 --- a/mediapipe/tasks/cc/common.h +++ b/mediapipe/tasks/cc/common.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/BUILD b/mediapipe/tasks/cc/components/calculators/BUILD index e447f5d7..fb4b66b3 100644 --- a/mediapipe/tasks/cc/components/calculators/BUILD +++ b/mediapipe/tasks/cc/components/calculators/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator.proto b/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator.proto index e2ed1788..fba146f7 100644 --- a/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator.proto +++ b/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator_test.cc b/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator_test.cc index c824919d..4fb9eead 100644 --- a/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator_test.cc +++ b/mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/embedding_aggregation_calculator_test.cc b/mediapipe/tasks/cc/components/calculators/embedding_aggregation_calculator_test.cc index c4b635d2..040a803a 100644 --- a/mediapipe/tasks/cc/components/calculators/embedding_aggregation_calculator_test.cc +++ b/mediapipe/tasks/cc/components/calculators/embedding_aggregation_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/end_loop_calculator.cc b/mediapipe/tasks/cc/components/calculators/end_loop_calculator.cc index 10eb962d..883ada6c 100644 --- a/mediapipe/tasks/cc/components/calculators/end_loop_calculator.cc +++ b/mediapipe/tasks/cc/components/calculators/end_loop_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/score_calibration_calculator.proto b/mediapipe/tasks/cc/components/calculators/score_calibration_calculator.proto index 11d944c9..e614c620 100644 --- a/mediapipe/tasks/cc/components/calculators/score_calibration_calculator.proto +++ b/mediapipe/tasks/cc/components/calculators/score_calibration_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/calculators/tensors_to_embeddings_calculator.proto b/mediapipe/tasks/cc/components/calculators/tensors_to_embeddings_calculator.proto index fd87383b..7dd4a605 100644 --- a/mediapipe/tasks/cc/components/calculators/tensors_to_embeddings_calculator.proto +++ b/mediapipe/tasks/cc/components/calculators/tensors_to_embeddings_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/BUILD b/mediapipe/tasks/cc/components/containers/BUILD index 816e3c76..b19a178b 100644 --- a/mediapipe/tasks/cc/components/containers/BUILD +++ b/mediapipe/tasks/cc/components/containers/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/category.cc b/mediapipe/tasks/cc/components/containers/category.cc index e07333a7..65b55384 100644 --- a/mediapipe/tasks/cc/components/containers/category.cc +++ b/mediapipe/tasks/cc/components/containers/category.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/category.h b/mediapipe/tasks/cc/components/containers/category.h index 57b18e7e..1bff5601 100644 --- a/mediapipe/tasks/cc/components/containers/category.h +++ b/mediapipe/tasks/cc/components/containers/category.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/classification_result.cc b/mediapipe/tasks/cc/components/containers/classification_result.cc index f2d88406..bbedc273 100644 --- a/mediapipe/tasks/cc/components/containers/classification_result.cc +++ b/mediapipe/tasks/cc/components/containers/classification_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/classification_result.h b/mediapipe/tasks/cc/components/containers/classification_result.h index e359fb33..5b736cef 100644 --- a/mediapipe/tasks/cc/components/containers/classification_result.h +++ b/mediapipe/tasks/cc/components/containers/classification_result.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/detection_result.cc b/mediapipe/tasks/cc/components/containers/detection_result.cc index c5e4cde4..1be7950f 100644 --- a/mediapipe/tasks/cc/components/containers/detection_result.cc +++ b/mediapipe/tasks/cc/components/containers/detection_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/detection_result.h b/mediapipe/tasks/cc/components/containers/detection_result.h index cfddfdb0..c267fc5a 100644 --- a/mediapipe/tasks/cc/components/containers/detection_result.h +++ b/mediapipe/tasks/cc/components/containers/detection_result.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/embedding_result.cc b/mediapipe/tasks/cc/components/containers/embedding_result.cc index 9de55911..15e762e3 100644 --- a/mediapipe/tasks/cc/components/containers/embedding_result.cc +++ b/mediapipe/tasks/cc/components/containers/embedding_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/embedding_result.h b/mediapipe/tasks/cc/components/containers/embedding_result.h index 2d01d2f2..4fdb8d24 100644 --- a/mediapipe/tasks/cc/components/containers/embedding_result.h +++ b/mediapipe/tasks/cc/components/containers/embedding_result.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/keypoint.h b/mediapipe/tasks/cc/components/containers/keypoint.h index dd01037c..89de3660 100644 --- a/mediapipe/tasks/cc/components/containers/keypoint.h +++ b/mediapipe/tasks/cc/components/containers/keypoint.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/landmark.cc b/mediapipe/tasks/cc/components/containers/landmark.cc index 6d80cb83..1cd0b4c3 100644 --- a/mediapipe/tasks/cc/components/containers/landmark.cc +++ b/mediapipe/tasks/cc/components/containers/landmark.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/landmark.h b/mediapipe/tasks/cc/components/containers/landmark.h index 5cb57bfb..63760ae8 100644 --- a/mediapipe/tasks/cc/components/containers/landmark.h +++ b/mediapipe/tasks/cc/components/containers/landmark.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/proto/BUILD b/mediapipe/tasks/cc/components/containers/proto/BUILD index 27d2357b..66255aed 100644 --- a/mediapipe/tasks/cc/components/containers/proto/BUILD +++ b/mediapipe/tasks/cc/components/containers/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/proto/classifications.proto b/mediapipe/tasks/cc/components/containers/proto/classifications.proto index 2b230682..e4a6ec29 100644 --- a/mediapipe/tasks/cc/components/containers/proto/classifications.proto +++ b/mediapipe/tasks/cc/components/containers/proto/classifications.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/proto/embeddings.proto b/mediapipe/tasks/cc/components/containers/proto/embeddings.proto index 4f888c69..0b55a1a9 100644 --- a/mediapipe/tasks/cc/components/containers/proto/embeddings.proto +++ b/mediapipe/tasks/cc/components/containers/proto/embeddings.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/proto/landmarks_detection_result.proto b/mediapipe/tasks/cc/components/containers/proto/landmarks_detection_result.proto index ac44f9b5..2e28d3c0 100644 --- a/mediapipe/tasks/cc/components/containers/proto/landmarks_detection_result.proto +++ b/mediapipe/tasks/cc/components/containers/proto/landmarks_detection_result.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/rect.cc b/mediapipe/tasks/cc/components/containers/rect.cc index 4a94832a..3a733e81 100644 --- a/mediapipe/tasks/cc/components/containers/rect.cc +++ b/mediapipe/tasks/cc/components/containers/rect.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/containers/rect.h b/mediapipe/tasks/cc/components/containers/rect.h index 72c7a8ac..80af898c 100644 --- a/mediapipe/tasks/cc/components/containers/rect.h +++ b/mediapipe/tasks/cc/components/containers/rect.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/BUILD b/mediapipe/tasks/cc/components/processors/BUILD index dfa18e80..e8f9f57f 100644 --- a/mediapipe/tasks/cc/components/processors/BUILD +++ b/mediapipe/tasks/cc/components/processors/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -161,3 +161,49 @@ cc_library( ], alwayslink = 1, ) + +cc_library( + name = "detection_postprocessing_graph", + srcs = ["detection_postprocessing_graph.cc"], + hdrs = ["detection_postprocessing_graph.h"], + deps = [ + "//mediapipe/calculators/core:split_vector_calculator", + "//mediapipe/calculators/core:split_vector_calculator_cc_proto", + "//mediapipe/calculators/tensor:tensors_to_detections_calculator", + "//mediapipe/calculators/tensor:tensors_to_detections_calculator_cc_proto", + "//mediapipe/calculators/tflite:ssd_anchors_calculator", + "//mediapipe/calculators/tflite:ssd_anchors_calculator_cc_proto", + "//mediapipe/calculators/util:detection_label_id_to_text_calculator", + "//mediapipe/calculators/util:detection_label_id_to_text_calculator_cc_proto", + "//mediapipe/calculators/util:non_max_suppression_calculator", + "//mediapipe/calculators/util:non_max_suppression_calculator_cc_proto", + "//mediapipe/framework:calculator_cc_proto", + "//mediapipe/framework:calculator_framework", + "//mediapipe/framework/api2:builder", + "//mediapipe/framework/api2:port", + "//mediapipe/framework/formats:detection_cc_proto", + "//mediapipe/framework/formats:tensor", + "//mediapipe/framework/formats/object_detection:anchor_cc_proto", + "//mediapipe/tasks/cc:common", + "//mediapipe/tasks/cc/components/calculators:score_calibration_calculator", + "//mediapipe/tasks/cc/components/calculators:score_calibration_calculator_cc_proto", + "//mediapipe/tasks/cc/components/calculators:score_calibration_utils", + "//mediapipe/tasks/cc/components/processors/proto:detection_postprocessing_graph_options_cc_proto", + "//mediapipe/tasks/cc/components/processors/proto:detector_options_cc_proto", + "//mediapipe/tasks/cc/core:model_resources", + "//mediapipe/tasks/cc/core:utils", + "//mediapipe/tasks/cc/metadata:metadata_extractor", + "//mediapipe/tasks/cc/vision/object_detector/proto:object_detector_options_cc_proto", + "//mediapipe/tasks/metadata:metadata_schema_cc", + "//mediapipe/tasks/metadata:object_detector_metadata_schema_cc", + "//mediapipe/util:label_map_cc_proto", + "//mediapipe/util:label_map_util", + "@com_google_absl//absl/container:flat_hash_set", + "@com_google_absl//absl/status", + "@com_google_absl//absl/status:statusor", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + "@org_tensorflow//tensorflow/lite/schema:schema_fbs", + ], + alwayslink = 1, +) diff --git a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.cc b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.cc index 9f796920..5534cb96 100644 --- a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.cc +++ b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.h b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.h index 03ae9113..e29aef19 100644 --- a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.h +++ b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph_test.cc b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph_test.cc index a61ffa6b..014053fa 100644 --- a/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph_test.cc +++ b/mediapipe/tasks/cc/components/processors/classification_postprocessing_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/classifier_options.cc b/mediapipe/tasks/cc/components/processors/classifier_options.cc index 349bb569..0343db2e 100644 --- a/mediapipe/tasks/cc/components/processors/classifier_options.cc +++ b/mediapipe/tasks/cc/components/processors/classifier_options.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/classifier_options.h b/mediapipe/tasks/cc/components/processors/classifier_options.h index 189b42e6..598e3dab 100644 --- a/mediapipe/tasks/cc/components/processors/classifier_options.h +++ b/mediapipe/tasks/cc/components/processors/classifier_options.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.cc b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.cc new file mode 100644 index 00000000..d7fc1892 --- /dev/null +++ b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.cc @@ -0,0 +1,886 @@ +/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h" + +#include +#include +#include + +#include "absl/container/flat_hash_set.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/str_format.h" +#include "absl/strings/string_view.h" +#include "mediapipe/calculators/core/split_vector_calculator.pb.h" +#include "mediapipe/calculators/tensor/tensors_to_detections_calculator.pb.h" +#include "mediapipe/calculators/tflite/ssd_anchors_calculator.pb.h" +#include "mediapipe/calculators/util/detection_label_id_to_text_calculator.pb.h" +#include "mediapipe/calculators/util/non_max_suppression_calculator.pb.h" +#include "mediapipe/framework/api2/builder.h" +#include "mediapipe/framework/api2/port.h" +#include "mediapipe/framework/calculator.pb.h" +#include "mediapipe/framework/calculator_framework.h" +#include "mediapipe/framework/formats/detection.pb.h" +#include "mediapipe/framework/formats/object_detection/anchor.pb.h" +#include "mediapipe/framework/formats/tensor.h" +#include "mediapipe/tasks/cc/common.h" +#include "mediapipe/tasks/cc/components/calculators/score_calibration_calculator.pb.h" +#include "mediapipe/tasks/cc/components/calculators/score_calibration_utils.h" +#include "mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.pb.h" +#include "mediapipe/tasks/cc/components/processors/proto/detector_options.pb.h" +#include "mediapipe/tasks/cc/core/model_resources.h" +#include "mediapipe/tasks/cc/core/utils.h" +#include "mediapipe/tasks/cc/metadata/metadata_extractor.h" +#include "mediapipe/tasks/metadata/metadata_schema_generated.h" +#include "mediapipe/tasks/metadata/object_detector_metadata_schema_generated.h" +#include "mediapipe/util/label_map.pb.h" +#include "mediapipe/util/label_map_util.h" +#include "tensorflow/lite/schema/schema_generated.h" + +namespace mediapipe { +namespace tasks { +namespace components { +namespace processors { + +namespace { + +using ::flatbuffers::Offset; +using ::flatbuffers::Vector; +using ::mediapipe::api2::Input; +using ::mediapipe::api2::Output; +using ::mediapipe::api2::builder::Graph; +using ::mediapipe::api2::builder::Source; +using ::mediapipe::tasks::metadata::ModelMetadataExtractor; +using ::tflite::BoundingBoxProperties; +using ::tflite::ContentProperties; +using ::tflite::ContentProperties_BoundingBoxProperties; +using ::tflite::EnumNameContentProperties; +using ::tflite::ProcessUnit; +using ::tflite::ProcessUnitOptions_ScoreThresholdingOptions; +using ::tflite::TensorMetadata; +using LabelItems = mediapipe::proto_ns::Map; +using TensorsSource = + mediapipe::api2::builder::Source>; + +constexpr int kInModelNmsDefaultLocationsIndex = 0; +constexpr int kInModelNmsDefaultCategoriesIndex = 1; +constexpr int kInModelNmsDefaultScoresIndex = 2; +constexpr int kInModelNmsDefaultNumResultsIndex = 3; + +constexpr int kOutModelNmsDefaultLocationsIndex = 0; +constexpr int kOutModelNmsDefaultScoresIndex = 1; + +constexpr float kDefaultScoreThreshold = std::numeric_limits::lowest(); + +constexpr absl::string_view kLocationTensorName = "location"; +constexpr absl::string_view kCategoryTensorName = "category"; +constexpr absl::string_view kScoreTensorName = "score"; +constexpr absl::string_view kNumberOfDetectionsTensorName = + "number of detections"; +constexpr absl::string_view kDetectorMetadataName = "DETECTOR_METADATA"; +constexpr absl::string_view kCalibratedScoresTag = "CALIBRATED_SCORES"; +constexpr absl::string_view kDetectionsTag = "DETECTIONS"; +constexpr absl::string_view kIndicesTag = "INDICES"; +constexpr absl::string_view kScoresTag = "SCORES"; +constexpr absl::string_view kTensorsTag = "TENSORS"; +constexpr absl::string_view kAnchorsTag = "ANCHORS"; + +// Struct holding the different output streams produced by the graph. +struct DetectionPostprocessingOutputStreams { + Source> detections; +}; + +// Parameters used for configuring the post-processing calculators. +struct PostProcessingSpecs { + // The maximum number of detection results to return. + int max_results; + // Indices of the output tensors to match the output tensors to the correct + // index order of the output tensors: [location, categories, scores, + // num_detections]. + std::vector output_tensor_indices; + // For each pack of 4 coordinates returned by the model, this denotes the + // order in which to get the left, top, right and bottom coordinates. + std::vector bounding_box_corners_order; + // This is populated by reading the label files from the TFLite Model + // Metadata: if no such files are available, this is left empty and the + // ObjectDetector will only be able to populate the `index` field of the + // detection results. + LabelItems label_items; + // Score threshold. Detections with a confidence below this value are + // discarded. If none is provided via metadata or options, -FLT_MAX is set as + // default value. + float score_threshold; + // Set of category indices to be allowed/denied. + absl::flat_hash_set allow_or_deny_categories; + // Indicates `allow_or_deny_categories` is an allowlist or a denylist. + bool is_allowlist; + // Score calibration options, if any. + std::optional score_calibration_options; +}; + +absl::Status SanityCheckOptions(const proto::DetectorOptions& options) { + if (options.max_results() == 0) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + "Invalid `max_results` option: value must be != 0", + MediaPipeTasksStatus::kInvalidArgumentError); + } + if (options.category_allowlist_size() > 0 && + options.category_denylist_size() > 0) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + "`category_allowlist` and `category_denylist` are mutually " + "exclusive options.", + MediaPipeTasksStatus::kInvalidArgumentError); + } + return absl::OkStatus(); +} + +absl::StatusOr GetBoundingBoxProperties( + const TensorMetadata& tensor_metadata) { + if (tensor_metadata.content() == nullptr || + tensor_metadata.content()->content_properties() == nullptr) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Expected BoundingBoxProperties for tensor %s, found none.", + tensor_metadata.name() ? tensor_metadata.name()->str() : "#0"), + MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); + } + + ContentProperties type = tensor_metadata.content()->content_properties_type(); + if (type != ContentProperties_BoundingBoxProperties) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Expected BoundingBoxProperties for tensor %s, found %s.", + tensor_metadata.name() ? tensor_metadata.name()->str() : "#0", + EnumNameContentProperties(type)), + MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); + } + + const BoundingBoxProperties* properties = + tensor_metadata.content()->content_properties_as_BoundingBoxProperties(); + + // Mobile SSD only supports "BOUNDARIES" bounding box type. + if (properties->type() != tflite::BoundingBoxType_BOUNDARIES) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Mobile SSD only supports BoundingBoxType BOUNDARIES, found %s", + tflite::EnumNameBoundingBoxType(properties->type())), + MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); + } + + // Mobile SSD only supports "RATIO" coordinates type. + if (properties->coordinate_type() != tflite::CoordinateType_RATIO) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Mobile SSD only supports CoordinateType RATIO, found %s", + tflite::EnumNameCoordinateType(properties->coordinate_type())), + MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); + } + + // Index is optional, but must contain 4 values if present. + if (properties->index() != nullptr && properties->index()->size() != 4) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Expected BoundingBoxProperties index to contain 4 values, found " + "%d", + properties->index()->size()), + MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); + } + + return properties; +} + +absl::StatusOr GetLabelItemsIfAny( + const ModelMetadataExtractor& metadata_extractor, + const TensorMetadata& tensor_metadata, + tflite::AssociatedFileType associated_file_type, absl::string_view locale) { + const std::string labels_filename = + ModelMetadataExtractor::FindFirstAssociatedFileName(tensor_metadata, + associated_file_type); + if (labels_filename.empty()) { + LabelItems empty_label_items; + return empty_label_items; + } + ASSIGN_OR_RETURN(absl::string_view labels_file, + metadata_extractor.GetAssociatedFile(labels_filename)); + const std::string display_names_filename = + ModelMetadataExtractor::FindFirstAssociatedFileName( + tensor_metadata, associated_file_type, locale); + absl::string_view display_names_file; + if (!display_names_filename.empty()) { + ASSIGN_OR_RETURN(display_names_file, metadata_extractor.GetAssociatedFile( + display_names_filename)); + } + return mediapipe::BuildLabelMapFromFiles(labels_file, display_names_file); +} + +absl::StatusOr GetScoreThreshold( + const ModelMetadataExtractor& metadata_extractor, + const TensorMetadata& tensor_metadata) { + ASSIGN_OR_RETURN( + const ProcessUnit* score_thresholding_process_unit, + metadata_extractor.FindFirstProcessUnit( + tensor_metadata, ProcessUnitOptions_ScoreThresholdingOptions)); + if (score_thresholding_process_unit == nullptr) { + return kDefaultScoreThreshold; + } + return score_thresholding_process_unit->options_as_ScoreThresholdingOptions() + ->global_score_threshold(); +} + +absl::StatusOr> GetAllowOrDenyCategoryIndicesIfAny( + const proto::DetectorOptions& config, const LabelItems& label_items) { + absl::flat_hash_set category_indices; + // Exit early if no denylist/allowlist. + if (config.category_denylist_size() == 0 && + config.category_allowlist_size() == 0) { + return category_indices; + } + if (label_items.empty()) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + "Using `category_allowlist` or `category_denylist` requires " + "labels to be present in the TFLite Model Metadata but none was found.", + MediaPipeTasksStatus::kMetadataMissingLabelsError); + } + const auto& category_list = config.category_allowlist_size() > 0 + ? config.category_allowlist() + : config.category_denylist(); + for (const auto& category_name : category_list) { + int index = -1; + for (int i = 0; i < label_items.size(); ++i) { + if (label_items.at(i).name() == category_name) { + index = i; + break; + } + } + // Ignores duplicate or unknown categories. + if (index < 0) { + continue; + } + category_indices.insert(index); + } + return category_indices; +} + +absl::StatusOr> +GetScoreCalibrationOptionsIfAny( + const ModelMetadataExtractor& metadata_extractor, + const TensorMetadata& tensor_metadata) { + // Get ScoreCalibrationOptions, if any. + ASSIGN_OR_RETURN( + const ProcessUnit* score_calibration_process_unit, + metadata_extractor.FindFirstProcessUnit( + tensor_metadata, tflite::ProcessUnitOptions_ScoreCalibrationOptions)); + if (score_calibration_process_unit == nullptr) { + return std::nullopt; + } + auto* score_calibration_options = + score_calibration_process_unit->options_as_ScoreCalibrationOptions(); + // Get corresponding AssociatedFile. + auto score_calibration_filename = + metadata_extractor.FindFirstAssociatedFileName( + tensor_metadata, + tflite::AssociatedFileType_TENSOR_AXIS_SCORE_CALIBRATION); + if (score_calibration_filename.empty()) { + return CreateStatusWithPayload( + absl::StatusCode::kNotFound, + "Found ScoreCalibrationOptions but missing required associated " + "parameters file with type TENSOR_AXIS_SCORE_CALIBRATION.", + MediaPipeTasksStatus::kMetadataAssociatedFileNotFoundError); + } + ASSIGN_OR_RETURN( + absl::string_view score_calibration_file, + metadata_extractor.GetAssociatedFile(score_calibration_filename)); + ScoreCalibrationCalculatorOptions score_calibration_calculator_options; + MP_RETURN_IF_ERROR(ConfigureScoreCalibration( + score_calibration_options->score_transformation(), + score_calibration_options->default_score(), score_calibration_file, + &score_calibration_calculator_options)); + return score_calibration_calculator_options; +} + +absl::StatusOr> GetOutputTensorIndices( + const Vector>* tensor_metadatas) { + std::vector output_indices; + if (tensor_metadatas->size() == 4) { + output_indices = { + core::FindTensorIndexByMetadataName(tensor_metadatas, + kLocationTensorName), + core::FindTensorIndexByMetadataName(tensor_metadatas, + kCategoryTensorName), + core::FindTensorIndexByMetadataName(tensor_metadatas, kScoreTensorName), + core::FindTensorIndexByMetadataName(tensor_metadatas, + kNumberOfDetectionsTensorName)}; + // locations, categories, scores, and number of detections + for (int i = 0; i < 4; i++) { + int output_index = output_indices[i]; + // If tensor name is not found, set the default output indices. + if (output_index == -1) { + LOG(WARNING) << absl::StrFormat( + "You don't seem to be matching tensor names in metadata list. The " + "tensor name \"%s\" at index %d in the model metadata doesn't " + "match " + "the available output names: [\"%s\", \"%s\", \"%s\", \"%s\"].", + tensor_metadatas->Get(i)->name()->c_str(), i, kLocationTensorName, + kCategoryTensorName, kScoreTensorName, + kNumberOfDetectionsTensorName); + output_indices = { + kInModelNmsDefaultLocationsIndex, kInModelNmsDefaultCategoriesIndex, + kInModelNmsDefaultScoresIndex, kInModelNmsDefaultNumResultsIndex}; + return output_indices; + } + } + } else if (tensor_metadatas->size() == 2) { + output_indices = {core::FindTensorIndexByMetadataName(tensor_metadatas, + kLocationTensorName), + core::FindTensorIndexByMetadataName(tensor_metadatas, + kScoreTensorName)}; + // location, score + for (int i = 0; i < 2; i++) { + int output_index = output_indices[i]; + // If tensor name is not found, set the default output indices. + if (output_index == -1) { + LOG(WARNING) << absl::StrFormat( + "You don't seem to be matching tensor names in metadata list. The " + "tensor name \"%s\" at index %d in the model metadata doesn't " + "match " + "the available output names: [\"%s\", \"%s\"].", + tensor_metadatas->Get(i)->name()->c_str(), i, kLocationTensorName, + kScoreTensorName); + output_indices = {kOutModelNmsDefaultLocationsIndex, + kOutModelNmsDefaultScoresIndex}; + return output_indices; + } + } + } else { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Expected a model with 2 or 4 output tensors metadata, found %d.", + tensor_metadatas->size()), + MediaPipeTasksStatus::kInvalidArgumentError); + } + return output_indices; +} + +// Builds PostProcessingSpecs from DetectorOptions and model metadata for +// configuring the post-processing calculators. +absl::StatusOr BuildPostProcessingSpecs( + const proto::DetectorOptions& options, bool in_model_nms, + const ModelMetadataExtractor* metadata_extractor) { + const auto* output_tensors_metadata = + metadata_extractor->GetOutputTensorMetadata(); + PostProcessingSpecs specs; + specs.max_results = options.max_results(); + ASSIGN_OR_RETURN(specs.output_tensor_indices, + GetOutputTensorIndices(output_tensors_metadata)); + // Extracts mandatory BoundingBoxProperties and performs sanity checks on the + // fly. + ASSIGN_OR_RETURN(const BoundingBoxProperties* bounding_box_properties, + GetBoundingBoxProperties(*output_tensors_metadata->Get( + specs.output_tensor_indices[0]))); + if (bounding_box_properties->index() == nullptr) { + specs.bounding_box_corners_order = {0, 1, 2, 3}; + } else { + auto bounding_box_index = bounding_box_properties->index(); + specs.bounding_box_corners_order = { + bounding_box_index->Get(0), + bounding_box_index->Get(1), + bounding_box_index->Get(2), + bounding_box_index->Get(3), + }; + } + // Builds label map (if available) from metadata. + // For models with in-model-nms, the label map is stored in the Category + // tensor which use TENSOR_VALUE_LABELS. For models with out-of-model-nms, the + // label map is stored in the Score tensor which use TENSOR_AXIS_LABELS. + ASSIGN_OR_RETURN( + specs.label_items, + GetLabelItemsIfAny( + *metadata_extractor, + *output_tensors_metadata->Get(specs.output_tensor_indices[1]), + in_model_nms ? tflite::AssociatedFileType_TENSOR_VALUE_LABELS + : tflite::AssociatedFileType_TENSOR_AXIS_LABELS, + options.display_names_locale())); + // Obtains allow/deny categories. + specs.is_allowlist = !options.category_allowlist().empty(); + ASSIGN_OR_RETURN( + specs.allow_or_deny_categories, + GetAllowOrDenyCategoryIndicesIfAny(options, specs.label_items)); + + // Sets score threshold. + if (options.has_score_threshold()) { + specs.score_threshold = options.score_threshold(); + } else { + ASSIGN_OR_RETURN( + specs.score_threshold, + GetScoreThreshold( + *metadata_extractor, + *output_tensors_metadata->Get( + specs.output_tensor_indices + [in_model_nms ? kInModelNmsDefaultScoresIndex + : kOutModelNmsDefaultScoresIndex]))); + } + if (in_model_nms) { + // Builds score calibration options (if available) from metadata. + ASSIGN_OR_RETURN( + specs.score_calibration_options, + GetScoreCalibrationOptionsIfAny( + *metadata_extractor, + *output_tensors_metadata->Get( + specs.output_tensor_indices[kInModelNmsDefaultScoresIndex]))); + } + return specs; +} + +// Builds PostProcessingSpecs from DetectorOptions and model metadata for +// configuring the post-processing calculators for models with +// non-maximum-suppression. +absl::StatusOr BuildInModelNmsPostProcessingSpecs( + const proto::DetectorOptions& options, + const ModelMetadataExtractor* metadata_extractor) { + // Checks output tensor metadata is present and consistent with model. + auto* output_tensors_metadata = metadata_extractor->GetOutputTensorMetadata(); + if (output_tensors_metadata == nullptr || + output_tensors_metadata->size() != 4) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat("Mismatch between number of output tensors (4) and " + "output tensors metadata (%d).", + output_tensors_metadata == nullptr + ? 0 + : output_tensors_metadata->size()), + MediaPipeTasksStatus::kMetadataInconsistencyError); + } + return BuildPostProcessingSpecs(options, /*in_model_nms=*/true, + metadata_extractor); +} + +// Fills in the TensorsToDetectionsCalculatorOptions based on +// PostProcessingSpecs. +void ConfigureInModelNmsTensorsToDetectionsCalculator( + const PostProcessingSpecs& specs, + mediapipe::TensorsToDetectionsCalculatorOptions* options) { + options->set_num_classes(specs.label_items.size()); + options->set_num_coords(4); + options->set_min_score_thresh(specs.score_threshold); + if (specs.max_results != -1) { + options->set_max_results(specs.max_results); + } + if (specs.is_allowlist) { + options->mutable_allow_classes()->Assign( + specs.allow_or_deny_categories.begin(), + specs.allow_or_deny_categories.end()); + } else { + options->mutable_ignore_classes()->Assign( + specs.allow_or_deny_categories.begin(), + specs.allow_or_deny_categories.end()); + } + + const auto& output_indices = specs.output_tensor_indices; + // Assigns indices to each the model output tensor. + auto* tensor_mapping = options->mutable_tensor_mapping(); + tensor_mapping->set_detections_tensor_index(output_indices[0]); + tensor_mapping->set_classes_tensor_index(output_indices[1]); + tensor_mapping->set_scores_tensor_index(output_indices[2]); + tensor_mapping->set_num_detections_tensor_index(output_indices[3]); + + // Assigns the bounding box corner order. + auto box_boundaries_indices = options->mutable_box_boundaries_indices(); + box_boundaries_indices->set_xmin(specs.bounding_box_corners_order[0]); + box_boundaries_indices->set_ymin(specs.bounding_box_corners_order[1]); + box_boundaries_indices->set_xmax(specs.bounding_box_corners_order[2]); + box_boundaries_indices->set_ymax(specs.bounding_box_corners_order[3]); +} + +// Builds PostProcessingSpecs from DetectorOptions and model metadata for +// configuring the post-processing calculators for models without +// non-maximum-suppression. +absl::StatusOr BuildOutModelNmsPostProcessingSpecs( + const proto::DetectorOptions& options, + const ModelMetadataExtractor* metadata_extractor) { + // Checks output tensor metadata is present and consistent with model. + auto* output_tensors_metadata = metadata_extractor->GetOutputTensorMetadata(); + if (output_tensors_metadata == nullptr || + output_tensors_metadata->size() != 2) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat("Mismatch between number of output tensors (2) and " + "output tensors metadata (%d).", + output_tensors_metadata == nullptr + ? 0 + : output_tensors_metadata->size()), + MediaPipeTasksStatus::kMetadataInconsistencyError); + } + return BuildPostProcessingSpecs(options, /*in_model_nms=*/false, + metadata_extractor); +} + +// Configures the TensorsToDetectionCalculator for models without +// non-maximum-suppression in tflite model. The required config parameters are +// extracted from the ObjectDetectorMetadata +// (metadata/object_detector_metadata_schema.fbs). +absl::Status ConfigureOutModelNmsTensorsToDetectionsCalculator( + const ModelMetadataExtractor* metadata_extractor, + const PostProcessingSpecs& specs, + mediapipe::TensorsToDetectionsCalculatorOptions* options) { + bool found_detector_metadata = false; + if (metadata_extractor->GetCustomMetadataList() != nullptr && + metadata_extractor->GetCustomMetadataList()->size() > 0) { + for (const auto* custom_metadata : + *metadata_extractor->GetCustomMetadataList()) { + if (custom_metadata->name()->str() == kDetectorMetadataName) { + found_detector_metadata = true; + const auto* tensors_decoding_options = + GetObjectDetectorOptions(custom_metadata->data()->data()) + ->tensors_decoding_options(); + // Here we don't set the max results for TensorsToDetectionsCalculator. + // For models without nms, the results are filtered by max_results in + // NonMaxSuppressionCalculator. + options->set_num_classes(tensors_decoding_options->num_classes()); + options->set_num_boxes(tensors_decoding_options->num_boxes()); + options->set_num_coords(tensors_decoding_options->num_coords()); + options->set_keypoint_coord_offset( + tensors_decoding_options->keypoint_coord_offset()); + options->set_num_keypoints(tensors_decoding_options->num_keypoints()); + options->set_num_values_per_keypoint( + tensors_decoding_options->num_values_per_keypoint()); + options->set_x_scale(tensors_decoding_options->x_scale()); + options->set_y_scale(tensors_decoding_options->y_scale()); + options->set_w_scale(tensors_decoding_options->w_scale()); + options->set_h_scale(tensors_decoding_options->h_scale()); + options->set_apply_exponential_on_box_size( + tensors_decoding_options->apply_exponential_on_box_size()); + options->set_sigmoid_score(tensors_decoding_options->sigmoid_score()); + break; + } + } + } + if (!found_detector_metadata) { + return absl::InvalidArgumentError( + "TensorsDecodingOptions is not found in the object detector " + "metadata."); + } + // Options not configured through metadata. + options->set_box_format( + mediapipe::TensorsToDetectionsCalculatorOptions::YXHW); + options->set_min_score_thresh(specs.score_threshold); + if (specs.is_allowlist) { + options->mutable_allow_classes()->Assign( + specs.allow_or_deny_categories.begin(), + specs.allow_or_deny_categories.end()); + } else { + options->mutable_ignore_classes()->Assign( + specs.allow_or_deny_categories.begin(), + specs.allow_or_deny_categories.end()); + } + + const auto& output_indices = specs.output_tensor_indices; + // Assigns indices to each the model output tensor. + auto* tensor_mapping = options->mutable_tensor_mapping(); + tensor_mapping->set_detections_tensor_index(output_indices[0]); + tensor_mapping->set_scores_tensor_index(output_indices[1]); + return absl::OkStatus(); +} + +// Configures the SsdAnchorsCalculator for models without +// non-maximum-suppression in tflite model. The required config parameters are +// extracted from the ObjectDetectorMetadata +// (metadata/object_detector_metadata_schema.fbs). +absl::Status ConfigureSsdAnchorsCalculator( + const ModelMetadataExtractor* metadata_extractor, + mediapipe::SsdAnchorsCalculatorOptions* options) { + bool found_detector_metadata = false; + if (metadata_extractor->GetCustomMetadataList() != nullptr && + metadata_extractor->GetCustomMetadataList()->size() > 0) { + for (const auto* custom_metadata : + *metadata_extractor->GetCustomMetadataList()) { + if (custom_metadata->name()->str() == kDetectorMetadataName) { + found_detector_metadata = true; + const auto* ssd_anchors_options = + GetObjectDetectorOptions(custom_metadata->data()->data()) + ->ssd_anchors_options(); + for (const auto* ssd_anchor : + *ssd_anchors_options->fixed_anchors_schema()->anchors()) { + auto* fixed_anchor = options->add_fixed_anchors(); + fixed_anchor->set_y_center(ssd_anchor->y_center()); + fixed_anchor->set_x_center(ssd_anchor->x_center()); + fixed_anchor->set_h(ssd_anchor->height()); + fixed_anchor->set_w(ssd_anchor->width()); + } + break; + } + } + } + if (!found_detector_metadata) { + return absl::InvalidArgumentError( + "SsdAnchorsOptions is not found in the object detector " + "metadata."); + } + return absl::OkStatus(); +} + +// Sets the default IoU-based non-maximum-suppression configs, and set the +// min_suppression_threshold and max_results for detection models without +// non-maximum-suppression. +void ConfigureNonMaxSuppressionCalculator( + const proto::DetectorOptions& detector_options, + mediapipe::NonMaxSuppressionCalculatorOptions* options) { + options->set_min_suppression_threshold( + detector_options.min_suppression_threshold()); + options->set_overlap_type( + mediapipe::NonMaxSuppressionCalculatorOptions::INTERSECTION_OVER_UNION); + options->set_algorithm( + mediapipe::NonMaxSuppressionCalculatorOptions::DEFAULT); + options->set_max_num_detections(detector_options.max_results()); +} + +// Sets the labels from post PostProcessingSpecs. +void ConfigureDetectionLabelIdToTextCalculator( + PostProcessingSpecs& specs, + mediapipe::DetectionLabelIdToTextCalculatorOptions* options) { + *options->mutable_label_items() = std::move(specs.label_items); +} + +// Splits the vector of 4 output tensors from model inference and calibrate the +// score tensors according to the metadata, if any. Then concatenate the tensors +// back to a vector of 4 tensors. +absl::StatusOr>> CalibrateScores( + Source> model_output_tensors, + const proto::DetectionPostprocessingGraphOptions& options, Graph& graph) { + // Split tensors. + auto* split_tensor_vector_node = + &graph.AddNode("SplitTensorVectorCalculator"); + auto& split_tensor_vector_options = + split_tensor_vector_node + ->GetOptions(); + for (int i = 0; i < 4; ++i) { + auto* range = split_tensor_vector_options.add_ranges(); + range->set_begin(i); + range->set_end(i + 1); + } + model_output_tensors >> split_tensor_vector_node->In(0); + + // Add score calibration calculator. + auto* score_calibration_node = &graph.AddNode("ScoreCalibrationCalculator"); + score_calibration_node->GetOptions() + .CopyFrom(options.score_calibration_options()); + const auto& tensor_mapping = + options.tensors_to_detections_options().tensor_mapping(); + split_tensor_vector_node->Out(tensor_mapping.classes_tensor_index()) >> + score_calibration_node->In(kIndicesTag); + split_tensor_vector_node->Out(tensor_mapping.scores_tensor_index()) >> + score_calibration_node->In(kScoresTag); + + // Re-concatenate tensors. + auto* concatenate_tensor_vector_node = + &graph.AddNode("ConcatenateTensorVectorCalculator"); + for (int i = 0; i < 4; ++i) { + if (i == tensor_mapping.scores_tensor_index()) { + score_calibration_node->Out(kCalibratedScoresTag) >> + concatenate_tensor_vector_node->In(i); + } else { + split_tensor_vector_node->Out(i) >> concatenate_tensor_vector_node->In(i); + } + } + model_output_tensors = + concatenate_tensor_vector_node->Out(0).Cast>(); + return model_output_tensors; +} + +} // namespace + +absl::Status ConfigureDetectionPostprocessingGraph( + const tasks::core::ModelResources& model_resources, + const proto::DetectorOptions& detector_options, + proto::DetectionPostprocessingGraphOptions& options) { + MP_RETURN_IF_ERROR(SanityCheckOptions(detector_options)); + const auto& model = *model_resources.GetTfLiteModel(); + bool in_model_nms = false; + if (model.subgraphs()->size() != 1) { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat("Expected a model with a single subgraph, found %d.", + model.subgraphs()->size()), + MediaPipeTasksStatus::kInvalidArgumentError); + } + if (model.subgraphs()->Get(0)->outputs()->size() == 2) { + in_model_nms = false; + } else if (model.subgraphs()->Get(0)->outputs()->size() == 4) { + in_model_nms = true; + } else { + return CreateStatusWithPayload( + absl::StatusCode::kInvalidArgument, + absl::StrFormat( + "Expected a model with 2 or 4 output tensors, found %d.", + model.subgraphs()->Get(0)->outputs()->size()), + MediaPipeTasksStatus::kInvalidArgumentError); + } + + const ModelMetadataExtractor* metadata_extractor = + model_resources.GetMetadataExtractor(); + if (in_model_nms) { + ASSIGN_OR_RETURN(auto post_processing_specs, + BuildInModelNmsPostProcessingSpecs(detector_options, + metadata_extractor)); + ConfigureInModelNmsTensorsToDetectionsCalculator( + post_processing_specs, options.mutable_tensors_to_detections_options()); + ConfigureDetectionLabelIdToTextCalculator( + post_processing_specs, + options.mutable_detection_label_ids_to_text_options()); + if (post_processing_specs.score_calibration_options.has_value()) { + *options.mutable_score_calibration_options() = + std::move(*post_processing_specs.score_calibration_options); + } + } else { + ASSIGN_OR_RETURN(auto post_processing_specs, + BuildOutModelNmsPostProcessingSpecs(detector_options, + metadata_extractor)); + MP_RETURN_IF_ERROR(ConfigureOutModelNmsTensorsToDetectionsCalculator( + metadata_extractor, post_processing_specs, + options.mutable_tensors_to_detections_options())); + MP_RETURN_IF_ERROR(ConfigureSsdAnchorsCalculator( + metadata_extractor, options.mutable_ssd_anchors_options())); + ConfigureNonMaxSuppressionCalculator( + detector_options, options.mutable_non_max_suppression_options()); + ConfigureDetectionLabelIdToTextCalculator( + post_processing_specs, + options.mutable_detection_label_ids_to_text_options()); + } + + return absl::OkStatus(); +} + +// A DetectionPostprocessingGraph converts raw tensors into +// std::vector. +// +// Inputs: +// TENSORS - std::vector +// The output tensors of an InferenceCalculator. The tensors vector could be +// size 4 or size 2. Tensors vector of size 4 expects the tensors from the +// models with DETECTION_POSTPROCESS ops in the tflite graph. Tensors vector +// of size 2 expects the tensors from the models without the ops. +// [1]: +// https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/kernels/detection_postprocess.cc +// Outputs: +// DETECTIONS - std::vector +// The postprocessed detection results. +// +// The recommended way of using this graph is through the GraphBuilder API +// using the 'ConfigureDetectionPostprocessingGraph()' function. See header +// file for more details. +class DetectionPostprocessingGraph : public mediapipe::Subgraph { + public: + absl::StatusOr GetConfig( + mediapipe::SubgraphContext* sc) override { + Graph graph; + ASSIGN_OR_RETURN( + auto output_streams, + BuildDetectionPostprocessing( + *sc->MutableOptions(), + graph.In(kTensorsTag).Cast>(), graph)); + output_streams.detections >> + graph.Out(kDetectionsTag).Cast>(); + return graph.GetConfig(); + } + + private: + // Adds an on-device detection postprocessing graph into the provided + // builder::Graph instance. The detection postprocessing graph takes + // tensors (std::vector) as input and returns one output + // stream: + // - Detection results as a std::vector. + // + // graph_options: the on-device DetectionPostprocessingGraphOptions. + // tensors_in: (std::vector>) tensors to postprocess. + // graph: the mediapipe builder::Graph instance to be updated. + absl::StatusOr + BuildDetectionPostprocessing( + proto::DetectionPostprocessingGraphOptions& graph_options, + Source> tensors_in, Graph& graph) { + std::optional>> detections; + if (!graph_options.has_non_max_suppression_options()) { + // Calculators to perform score calibration, if specified in the options. + if (graph_options.has_score_calibration_options()) { + ASSIGN_OR_RETURN(tensors_in, + CalibrateScores(tensors_in, graph_options, graph)); + } + // Calculator to convert output tensors to a detection proto vector. + auto& tensors_to_detections = + graph.AddNode("TensorsToDetectionsCalculator"); + tensors_to_detections + .GetOptions() + .Swap(graph_options.mutable_tensors_to_detections_options()); + tensors_in >> tensors_to_detections.In(kTensorsTag); + detections = tensors_to_detections.Out(kDetectionsTag) + .Cast>(); + } else { + // Generates a single side packet containing a vector of SSD anchors. + auto& ssd_anchor = graph.AddNode("SsdAnchorsCalculator"); + ssd_anchor.GetOptions().Swap( + graph_options.mutable_ssd_anchors_options()); + auto anchors = + ssd_anchor.SideOut("").Cast>(); + // Convert raw output tensors to detections. + auto& tensors_to_detections = + graph.AddNode("TensorsToDetectionsCalculator"); + tensors_to_detections + .GetOptions() + .Swap(graph_options.mutable_tensors_to_detections_options()); + anchors >> tensors_to_detections.SideIn(kAnchorsTag); + tensors_in >> tensors_to_detections.In(kTensorsTag); + detections = tensors_to_detections.Out(kDetectionsTag) + .Cast>(); + // Non maximum suppression removes redundant object detections. + auto& non_maximum_suppression = + graph.AddNode("NonMaxSuppressionCalculator"); + non_maximum_suppression + .GetOptions() + .Swap(graph_options.mutable_non_max_suppression_options()); + *detections >> non_maximum_suppression.In(""); + detections = + non_maximum_suppression.Out("").Cast>(); + } + + // Calculator to assign detection labels. + auto& detection_label_id_to_text = + graph.AddNode("DetectionLabelIdToTextCalculator"); + detection_label_id_to_text + .GetOptions() + .Swap(graph_options.mutable_detection_label_ids_to_text_options()); + *detections >> detection_label_id_to_text.In(""); + return { + {detection_label_id_to_text.Out("").Cast>()}}; + } +}; + +// REGISTER_MEDIAPIPE_GRAPH argument has to fit on one line to work properly. +// clang-format off +REGISTER_MEDIAPIPE_GRAPH( + ::mediapipe::tasks::components::processors::DetectionPostprocessingGraph); // NOLINT +// clang-format on + +} // namespace processors +} // namespace components +} // namespace tasks +} // namespace mediapipe diff --git a/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h new file mode 100644 index 00000000..1696b844 --- /dev/null +++ b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h @@ -0,0 +1,62 @@ +/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.pb.h" +#include "mediapipe/tasks/cc/components/processors/proto/detector_options.pb.h" +#include "mediapipe/tasks/cc/core/model_resources.h" + +#ifndef MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_DETECTION_POSTPROCESSING_GRAPH_H_ +#define MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_DETECTION_POSTPROCESSING_GRAPH_H_ + +namespace mediapipe { +namespace tasks { +namespace components { +namespace processors { + +// Configures a DetectionPostprocessingGraph using the provided model +// resources and DetectorOptions. +// +// Example usage: +// +// auto& postprocessing = +// graph.AddNode("mediapipe.tasks.components.processors.DetectionPostprocessingGraph"); +// MP_RETURN_IF_ERROR(ConfigureDetectionPostprocessingGraph( +// model_resources, +// detector_options, +// &preprocessing.GetOptions())); +// +// The resulting DetectionPostprocessingGraph has the following I/O: +// Inputs: +// TENSORS - std::vector +// The output tensors of an InferenceCalculator. The tensors vector could be +// size 4 or size 2. Tensors vector of size 4 expects the tensors from the +// models with DETECTION_POSTPROCESS ops in the tflite graph. Tensors vector +// of size 2 expects the tensors from the models without the ops. +// [1]: +// https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/kernels/detection_postprocess.cc +// Outputs: +// DETECTIONS - std::vector +// The postprocessed detection results. +absl::Status ConfigureDetectionPostprocessingGraph( + const tasks::core::ModelResources& model_resources, + const proto::DetectorOptions& detector_options, + proto::DetectionPostprocessingGraphOptions& options); + +} // namespace processors +} // namespace components +} // namespace tasks +} // namespace mediapipe + +#endif // MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_DETECTION_POSTPROCESSING_GRAPH_H_ diff --git a/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph_test.cc b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph_test.cc new file mode 100644 index 00000000..36aead0c --- /dev/null +++ b/mediapipe/tasks/cc/components/processors/detection_postprocessing_graph_test.cc @@ -0,0 +1,570 @@ +/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h" + +#include + +#include "absl/flags/flag.h" +#include "absl/memory/memory.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "mediapipe/calculators/util/detection_label_id_to_text_calculator.pb.h" +#include "mediapipe/framework/api2/builder.h" +#include "mediapipe/framework/api2/packet.h" +#include "mediapipe/framework/api2/port.h" +#include "mediapipe/framework/calculator_framework.h" +#include "mediapipe/framework/calculator_runner.h" +#include "mediapipe/framework/deps/file_path.h" +#include "mediapipe/framework/formats/detection.pb.h" +#include "mediapipe/framework/formats/tensor.h" +#include "mediapipe/framework/graph_runner.h" +#include "mediapipe/framework/output_stream_poller.h" +#include "mediapipe/framework/port/gmock.h" +#include "mediapipe/framework/port/gtest.h" +#include "mediapipe/framework/port/status_matchers.h" +#include "mediapipe/framework/timestamp.h" +#include "mediapipe/tasks/cc/components/calculators/score_calibration_calculator.pb.h" +#include "mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.pb.h" +#include "mediapipe/tasks/cc/components/processors/proto/detector_options.pb.h" +#include "mediapipe/tasks/cc/core/model_resources.h" +#include "mediapipe/tasks/cc/core/proto/external_file.pb.h" +#include "tensorflow/lite/test_util.h" + +namespace mediapipe { +namespace tasks { +namespace components { +namespace processors { +namespace { + +using ::mediapipe::api2::Input; +using ::mediapipe::api2::Output; +using ::mediapipe::api2::builder::Graph; +using ::mediapipe::api2::builder::Source; +using ::mediapipe::file::JoinPath; +using ::mediapipe::tasks::core::ModelResources; +using ::testing::ElementsAre; +using ::testing::HasSubstr; +using ::testing::Pointwise; +using ::testing::proto::Approximately; +using ::testing::proto::Partially; + +constexpr absl::string_view kTestDataDirectory = + "/mediapipe/tasks/testdata/vision"; +constexpr absl::string_view kMobileSsdWithMetadata = + "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.tflite"; +constexpr absl::string_view kMobileSsdWithDummyScoreCalibration = + "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29_with_dummy_score_calibration." + "tflite"; +constexpr absl::string_view kEfficientDetWithoutNms = + "efficientdet_lite0_fp16_no_nms.tflite"; + +constexpr char kTestModelResourcesTag[] = "test_model_resources"; + +constexpr absl::string_view kTensorsTag = "TENSORS"; +constexpr absl::string_view kDetectionsTag = "DETECTIONS"; +constexpr absl::string_view kTensorsName = "tensors"; +constexpr absl::string_view kDetectionsName = "detections"; + +// Helper function to get ModelResources. +absl::StatusOr> CreateModelResourcesForModel( + absl::string_view model_name) { + auto external_file = std::make_unique(); + external_file->set_file_name(JoinPath("./", kTestDataDirectory, model_name)); + return ModelResources::Create(kTestModelResourcesTag, + std::move(external_file)); +} + +class ConfigureTest : public tflite::testing::Test {}; + +TEST_F(ConfigureTest, FailsWithInvalidMaxResults) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.set_max_results(0); + + proto::DetectionPostprocessingGraphOptions options_out; + auto status = ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out); + + EXPECT_EQ(status.code(), absl::StatusCode::kInvalidArgument); + EXPECT_THAT(status.message(), HasSubstr("Invalid `max_results` option")); +} + +TEST_F(ConfigureTest, FailsWithBothAllowlistAndDenylist) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.add_category_allowlist("foo"); + options_in.add_category_denylist("bar"); + + proto::DetectionPostprocessingGraphOptions options_out; + auto status = ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out); + + EXPECT_EQ(status.code(), absl::StatusCode::kInvalidArgument); + EXPECT_THAT(status.message(), HasSubstr("mutually exclusive options")); +} + +TEST_F(ConfigureTest, SucceedsWithMaxResults) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.set_max_results(3); + + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + + EXPECT_THAT( + options_out, + Approximately(Partially(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: -3.4028235e+38 + num_classes: 90 + num_coords: 4 + max_results: 3 + tensor_mapping { + detections_tensor_index: 0 + classes_tensor_index: 1 + scores_tensor_index: 2 + num_detections_tensor_index: 3 + } + box_boundaries_indices { ymin: 0 xmin: 1 ymax: 2 xmax: 3 } + } + )pb")))); +} + +TEST_F(ConfigureTest, SucceedsWithMaxResultsWithoutModelNms) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, CreateModelResourcesForModel( + kEfficientDetWithoutNms)); + proto::DetectorOptions options_in; + options_in.set_max_results(3); + + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + EXPECT_THAT(options_out, Approximately(Partially(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: -3.4028235e+38 + num_classes: 90 + num_boxes: 19206 + num_coords: 4 + x_scale: 1 + y_scale: 1 + w_scale: 1 + h_scale: 1 + keypoint_coord_offset: 0 + num_keypoints: 0 + num_values_per_keypoint: 2 + apply_exponential_on_box_size: true + sigmoid_score: false + tensor_mapping { + detections_tensor_index: 1 + scores_tensor_index: 0 + } + box_format: YXHW + } + non_max_suppression_options { + max_num_detections: 3 + min_suppression_threshold: 0 + overlap_type: INTERSECTION_OVER_UNION + algorithm: DEFAULT + } + )pb")))); + EXPECT_THAT( + options_out.detection_label_ids_to_text_options().label_items_size(), 90); +} + +TEST_F(ConfigureTest, SucceedsWithScoreThreshold) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.set_score_threshold(0.5); + + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + EXPECT_THAT( + options_out, + Approximately(Partially(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: 0.5 + num_classes: 90 + num_coords: 4 + tensor_mapping { + detections_tensor_index: 0 + classes_tensor_index: 1 + scores_tensor_index: 2 + num_detections_tensor_index: 3 + } + box_boundaries_indices { ymin: 0 xmin: 1 ymax: 2 xmax: 3 } + } + )pb")))); + EXPECT_THAT( + options_out.detection_label_ids_to_text_options().label_items_size(), 90); +} + +TEST_F(ConfigureTest, SucceedsWithAllowlist) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.add_category_allowlist("bicycle"); + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + // Clear labels ids to text and compare the rest of the options. + options_out.clear_detection_label_ids_to_text_options(); + EXPECT_THAT( + options_out, + Approximately(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: -3.4028235e+38 + num_classes: 90 + num_coords: 4 + allow_classes: 1 + tensor_mapping { + detections_tensor_index: 0 + classes_tensor_index: 1 + scores_tensor_index: 2 + num_detections_tensor_index: 3 + } + box_boundaries_indices { ymin: 0 xmin: 1 ymax: 2 xmax: 3 } + } + )pb"))); +} + +TEST_F(ConfigureTest, SucceedsWithDenylist) { + MP_ASSERT_OK_AND_ASSIGN(auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithMetadata)); + proto::DetectorOptions options_in; + options_in.add_category_denylist("person"); + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + // Clear labels ids to text and compare the rest of the options. + options_out.clear_detection_label_ids_to_text_options(); + EXPECT_THAT( + options_out, + Approximately(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: -3.4028235e+38 + num_classes: 90 + num_coords: 4 + ignore_classes: 0 + tensor_mapping { + detections_tensor_index: 0 + classes_tensor_index: 1 + scores_tensor_index: 2 + num_detections_tensor_index: 3 + } + box_boundaries_indices { ymin: 0 xmin: 1 ymax: 2 xmax: 3 } + } + )pb"))); +} + +TEST_F(ConfigureTest, SucceedsWithScoreCalibration) { + MP_ASSERT_OK_AND_ASSIGN( + auto model_resources, + CreateModelResourcesForModel(kMobileSsdWithDummyScoreCalibration)); + proto::DetectorOptions options_in; + proto::DetectionPostprocessingGraphOptions options_out; + MP_ASSERT_OK(ConfigureDetectionPostprocessingGraph(*model_resources, + options_in, options_out)); + // Clear labels ids to text. + options_out.clear_detection_label_ids_to_text_options(); + // Check sigmoids size and first element. + ASSERT_EQ(options_out.score_calibration_options().sigmoids_size(), 89); + EXPECT_THAT(options_out.score_calibration_options().sigmoids()[0], + EqualsProto(R"pb(scale: 1.0 slope: 1.0 offset: 0.0)pb")); + options_out.mutable_score_calibration_options()->clear_sigmoids(); + // Compare the rest of the option. + EXPECT_THAT( + options_out, + Approximately(EqualsProto( + R"pb(tensors_to_detections_options { + min_score_thresh: -3.4028235e+38 + num_classes: 90 + num_coords: 4 + tensor_mapping { + detections_tensor_index: 0 + classes_tensor_index: 1 + scores_tensor_index: 2 + num_detections_tensor_index: 3 + } + box_boundaries_indices { ymin: 0 xmin: 1 ymax: 2 xmax: 3 } + } + score_calibration_options { + score_transformation: IDENTITY + default_score: 0.5 + } + )pb"))); +} + +class PostprocessingTest : public tflite::testing::Test { + protected: + absl::StatusOr BuildGraph( + absl::string_view model_name, const proto::DetectorOptions& options) { + ASSIGN_OR_RETURN(auto model_resources, + CreateModelResourcesForModel(model_name)); + + Graph graph; + auto& postprocessing = graph.AddNode( + "mediapipe.tasks.components.processors." + "DetectionPostprocessingGraph"); + MP_RETURN_IF_ERROR(ConfigureDetectionPostprocessingGraph( + *model_resources, options, + postprocessing + .GetOptions())); + graph[Input>(kTensorsTag)].SetName( + std::string(kTensorsName)) >> + postprocessing.In(kTensorsTag); + postprocessing.Out(kDetectionsTag).SetName(std::string(kDetectionsName)) >> + graph[Output>(kDetectionsTag)]; + MP_RETURN_IF_ERROR(calculator_graph_.Initialize(graph.GetConfig())); + ASSIGN_OR_RETURN(auto poller, calculator_graph_.AddOutputStreamPoller( + std::string(kDetectionsName))); + MP_RETURN_IF_ERROR(calculator_graph_.StartRun(/*extra_side_packets=*/{})); + return poller; + } + + template + void AddTensor(const std::vector& tensor, + const Tensor::ElementType& element_type, + const Tensor::Shape& shape) { + tensors_->emplace_back(element_type, shape); + auto view = tensors_->back().GetCpuWriteView(); + T* buffer = view.buffer(); + std::copy(tensor.begin(), tensor.end(), buffer); + } + + absl::Status Run(int timestamp = 0) { + MP_RETURN_IF_ERROR(calculator_graph_.AddPacketToInputStream( + std::string(kTensorsName), + Adopt(tensors_.release()).At(Timestamp(timestamp)))); + // Reset tensors for future calls. + tensors_ = absl::make_unique>(); + return absl::OkStatus(); + } + + template + absl::StatusOr GetResult(OutputStreamPoller& poller) { + MP_RETURN_IF_ERROR(calculator_graph_.WaitUntilIdle()); + MP_RETURN_IF_ERROR(calculator_graph_.CloseAllInputStreams()); + + Packet packet; + if (!poller.Next(&packet)) { + return absl::InternalError("Unable to get output packet"); + } + auto result = packet.Get(); + MP_RETURN_IF_ERROR(calculator_graph_.WaitUntilDone()); + return result; + } + + private: + CalculatorGraph calculator_graph_; + std::unique_ptr> tensors_ = + absl::make_unique>(); +}; + +TEST_F(PostprocessingTest, SucceedsWithMetadata) { + // Build graph. + proto::DetectorOptions options; + options.set_max_results(3); + MP_ASSERT_OK_AND_ASSIGN(auto poller, + BuildGraph(kMobileSsdWithMetadata, options)); + + // Build input tensors. + constexpr int kBboxesNum = 5; + // Location tensor. + std::vector location_tensor(kBboxesNum * 4, 0); + for (int i = 0; i < kBboxesNum; ++i) { + location_tensor[i * 4] = 0.1f; + location_tensor[i * 4 + 1] = 0.1f; + location_tensor[i * 4 + 2] = 0.4f; + location_tensor[i * 4 + 3] = 0.5f; + } + // Category tensor. + std::vector category_tensor(kBboxesNum, 0); + for (int i = 0; i < kBboxesNum; ++i) { + category_tensor[i] = i + 1; + } + + // Score tensor. Post processed tensor scores are in descending order. + std::vector score_tensor(kBboxesNum, 0); + for (int i = 0; i < kBboxesNum; ++i) { + score_tensor[i] = static_cast(kBboxesNum - i) / kBboxesNum; + } + + // Number of detections tensor. + std::vector num_detections_tensor(1, 0); + num_detections_tensor[0] = kBboxesNum; + + // Send tensors and get results. + AddTensor(location_tensor, Tensor::ElementType::kFloat32, {1, kBboxesNum, 4}); + AddTensor(category_tensor, Tensor::ElementType::kFloat32, {1, kBboxesNum}); + AddTensor(score_tensor, Tensor::ElementType::kFloat32, {1, kBboxesNum}); + AddTensor(num_detections_tensor, Tensor::ElementType::kFloat32, {1}); + MP_ASSERT_OK(Run()); + + // Validate results. + EXPECT_THAT(GetResult>(poller), + IsOkAndHolds(ElementsAre(Approximately(EqualsProto( + R"pb( + label: "bicycle" + score: 1 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.1 + ymin: 0.1 + width: 0.4 + height: 0.3 + } + } + )pb")), + Approximately(EqualsProto( + R"pb( + label: "car" + score: 0.8 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.1 + ymin: 0.1 + width: 0.4 + height: 0.3 + } + } + )pb")), + Approximately(EqualsProto( + R"pb( + label: "motorcycle" + score: 0.6 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.1 + ymin: 0.1 + width: 0.4 + height: 0.3 + } + } + )pb"))))); +} + +TEST_F(PostprocessingTest, SucceedsWithOutModelNms) { + // Build graph. + proto::DetectorOptions options; + options.set_max_results(3); + MP_ASSERT_OK_AND_ASSIGN(auto poller, + BuildGraph(kEfficientDetWithoutNms, options)); + + // Build input tensors. + constexpr int kBboxesNum = 19206; + constexpr int kBicycleBboxIdx = 1000; + constexpr int kCarBboxIdx = 2000; + constexpr int kMotoCycleBboxIdx = 4000; + // Location tensor. + std::vector location_tensor(kBboxesNum * 4, 0); + for (int i = 0; i < kBboxesNum; ++i) { + location_tensor[i * 4] = 0.5f; + location_tensor[i * 4 + 1] = 0.5f; + location_tensor[i * 4 + 2] = 0.001f; + location_tensor[i * 4 + 3] = 0.001f; + } + + // Detected three objects. + location_tensor[kBicycleBboxIdx * 4] = 0.7f; + location_tensor[kBicycleBboxIdx * 4 + 1] = 0.8f; + location_tensor[kBicycleBboxIdx * 4 + 2] = 0.2f; + location_tensor[kBicycleBboxIdx * 4 + 3] = 0.1f; + + location_tensor[kCarBboxIdx * 4] = 0.1f; + location_tensor[kCarBboxIdx * 4 + 1] = 0.1f; + location_tensor[kCarBboxIdx * 4 + 2] = 0.1f; + location_tensor[kCarBboxIdx * 4 + 3] = 0.1f; + + location_tensor[kMotoCycleBboxIdx * 4] = 0.2f; + location_tensor[kMotoCycleBboxIdx * 4 + 1] = 0.8f; + location_tensor[kMotoCycleBboxIdx * 4 + 2] = 0.1f; + location_tensor[kMotoCycleBboxIdx * 4 + 3] = 0.2f; + + // Score tensor. + constexpr int kClassesNum = 90; + std::vector score_tensor(kBboxesNum * kClassesNum, 1.f / kClassesNum); + + // Detected three objects. + score_tensor[kBicycleBboxIdx * kClassesNum + 1] = 1.0f; // bicycle. + score_tensor[kCarBboxIdx * kClassesNum + 2] = 0.9f; // car. + score_tensor[kMotoCycleBboxIdx * kClassesNum + 3] = 0.8f; // motorcycle. + + // Send tensors and get results. + AddTensor(score_tensor, Tensor::ElementType::kFloat32, {1, kBboxesNum, 90}); + AddTensor(location_tensor, Tensor::ElementType::kFloat32, {1, kBboxesNum, 4}); + MP_ASSERT_OK(Run()); + + // Validate results. + EXPECT_THAT(GetResult>(poller), + IsOkAndHolds(ElementsAre(Approximately(EqualsProto( + R"pb( + label: "bicycle" + score: 1 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.8137423 + ymin: 0.067235775 + width: 0.117221 + height: 0.064774655 + } + } + )pb")), + Approximately(EqualsProto( + R"pb( + label: "car" + score: 0.9 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.53849804 + ymin: 0.08949606 + width: 0.05861056 + height: 0.11722109 + } + } + )pb")), + Approximately(EqualsProto( + R"pb( + label: "motorcycle" + score: 0.8 + location_data { + format: RELATIVE_BOUNDING_BOX + relative_bounding_box { + xmin: 0.13779688 + ymin: 0.26394117 + width: 0.16322193 + height: 0.07384467 + } + } + )pb"))))); +} + +} // namespace +} // namespace processors +} // namespace components +} // namespace tasks +} // namespace mediapipe diff --git a/mediapipe/tasks/cc/components/processors/embedder_options.cc b/mediapipe/tasks/cc/components/processors/embedder_options.cc index fce7baa4..2f2121dd 100644 --- a/mediapipe/tasks/cc/components/processors/embedder_options.cc +++ b/mediapipe/tasks/cc/components/processors/embedder_options.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/embedder_options.h b/mediapipe/tasks/cc/components/processors/embedder_options.h index b3717159..483e4867 100644 --- a/mediapipe/tasks/cc/components/processors/embedder_options.h +++ b/mediapipe/tasks/cc/components/processors/embedder_options.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.cc b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.cc index 7b023ba4..ec28d629 100644 --- a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.cc +++ b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.h b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.h index 88999246..bb96dfbd 100644 --- a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.h +++ b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph_test.cc b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph_test.cc index 94a2a7f3..0f071040 100644 --- a/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph_test.cc +++ b/mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.cc b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.cc index 7a45bb14..1040701c 100644 --- a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.cc +++ b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.h b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.h index 455a9b31..2f7473fe 100644 --- a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.h +++ b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph_test.cc b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph_test.cc index c69a51a6..2e182ee8 100644 --- a/mediapipe/tasks/cc/components/processors/image_preprocessing_graph_test.cc +++ b/mediapipe/tasks/cc/components/processors/image_preprocessing_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/BUILD b/mediapipe/tasks/cc/components/processors/proto/BUILD index 816ba47e..82d4ea21 100644 --- a/mediapipe/tasks/cc/components/processors/proto/BUILD +++ b/mediapipe/tasks/cc/components/processors/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,6 +23,11 @@ mediapipe_proto_library( srcs = ["classifier_options.proto"], ) +mediapipe_proto_library( + name = "detector_options_proto", + srcs = ["detector_options.proto"], +) + mediapipe_proto_library( name = "classification_postprocessing_graph_options_proto", srcs = ["classification_postprocessing_graph_options.proto"], @@ -35,6 +40,20 @@ mediapipe_proto_library( ], ) +mediapipe_proto_library( + name = "detection_postprocessing_graph_options_proto", + srcs = ["detection_postprocessing_graph_options.proto"], + deps = [ + "//mediapipe/calculators/tensor:tensors_to_detections_calculator_proto", + "//mediapipe/calculators/tflite:ssd_anchors_calculator_proto", + "//mediapipe/calculators/util:detection_label_id_to_text_calculator_proto", + "//mediapipe/calculators/util:non_max_suppression_calculator_proto", + "//mediapipe/framework:calculator_options_proto", + "//mediapipe/framework:calculator_proto", + "//mediapipe/tasks/cc/components/calculators:score_calibration_calculator_proto", + ], +) + mediapipe_proto_library( name = "embedder_options_proto", srcs = ["embedder_options.proto"], diff --git a/mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options.proto b/mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options.proto index 84ba9522..e393f58c 100644 --- a/mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/classifier_options.proto b/mediapipe/tasks/cc/components/processors/proto/classifier_options.proto index 12ece724..345c7e1f 100644 --- a/mediapipe/tasks/cc/components/processors/proto/classifier_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/classifier_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.proto b/mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.proto new file mode 100644 index 00000000..ec11df2b --- /dev/null +++ b/mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.proto @@ -0,0 +1,49 @@ +/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +syntax = "proto3"; + +package mediapipe.tasks.components.processors.proto; + +import "mediapipe/calculators/tensor/tensors_to_detections_calculator.proto"; +import "mediapipe/calculators/tflite/ssd_anchors_calculator.proto"; +import "mediapipe/calculators/util/detection_label_id_to_text_calculator.proto"; +import "mediapipe/calculators/util/non_max_suppression_calculator.proto"; +import "mediapipe/framework/calculator.proto"; +import "mediapipe/tasks/cc/components/calculators/score_calibration_calculator.proto"; + +message DetectionPostprocessingGraphOptions { + // Optional SsdAnchorsCalculatorOptions for models without + // non-maximum-suppression in tflite model graph. + optional mediapipe.SsdAnchorsCalculatorOptions ssd_anchors_options = 1; + + // Optional TensorsToDetectionsCalculatorOptions for models without + // non-maximum-suppression in tflite model graph. + optional mediapipe.TensorsToDetectionsCalculatorOptions + tensors_to_detections_options = 2; + + // Optional NonMaxSuppressionCalculatorOptions for models without + // non-maximum-suppression in tflite model graph. + optional mediapipe.NonMaxSuppressionCalculatorOptions + non_max_suppression_options = 3; + + // Optional score calibration options for models with non-maximum-suppression + // in tflite model graph. + optional ScoreCalibrationCalculatorOptions score_calibration_options = 4; + + // Optional detection label id to text calculator options. + optional mediapipe.DetectionLabelIdToTextCalculatorOptions + detection_label_ids_to_text_options = 5; +} diff --git a/mediapipe/tasks/cc/components/processors/proto/detector_options.proto b/mediapipe/tasks/cc/components/processors/proto/detector_options.proto new file mode 100644 index 00000000..c70b1f7a --- /dev/null +++ b/mediapipe/tasks/cc/components/processors/proto/detector_options.proto @@ -0,0 +1,52 @@ +/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +syntax = "proto2"; + +package mediapipe.tasks.components.processors.proto; + +option java_package = "com.google.mediapipe.tasks.components.processors.proto"; +option java_outer_classname = "DetectorOptionsProto"; + +// Shared options used by all detection tasks. +message DetectorOptions { + // The locale to use for display names specified through the TFLite Model + // Metadata, if any. Defaults to English. + optional string display_names_locale = 1 [default = "en"]; + + // The maximum number of top-scored detection results to return. If < 0, + // all available results will be returned. If 0, an invalid argument error is + // returned. + optional int32 max_results = 2 [default = -1]; + + // Score threshold, overrides the ones provided in the model metadata + // (if any). Results below this value are rejected. + optional float score_threshold = 3; + + // Overlapping threshold for non-maximum-suppression calculator. Only used for + // models without built-in non-maximum-suppression, i.e., models that don't + // use the Detection_Postprocess TFLite Op + optional float min_suppression_threshold = 6; + + // Optional allowlist of category names. If non-empty, detections whose + // category name is not in this set will be filtered out. Duplicate or unknown + // category names are ignored. Mutually exclusive with category_denylist. + repeated string category_allowlist = 4; + + // Optional denylist of category names. If non-empty, detection whose category + // name is in this set will be filtered out. Duplicate or unknown category + // names are ignored. Mutually exclusive with category_allowlist. + repeated string category_denylist = 5; +} diff --git a/mediapipe/tasks/cc/components/processors/proto/embedder_options.proto b/mediapipe/tasks/cc/components/processors/proto/embedder_options.proto index 8973ab24..4595bfc8 100644 --- a/mediapipe/tasks/cc/components/processors/proto/embedder_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/embedder_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options.proto b/mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options.proto index 3a50818f..5e04a8d1 100644 --- a/mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/image_preprocessing_graph_options.proto b/mediapipe/tasks/cc/components/processors/proto/image_preprocessing_graph_options.proto index bf4fc906..e8704679 100644 --- a/mediapipe/tasks/cc/components/processors/proto/image_preprocessing_graph_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/image_preprocessing_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/text_model_type.proto b/mediapipe/tasks/cc/components/processors/proto/text_model_type.proto index db363c75..1e9cf48c 100644 --- a/mediapipe/tasks/cc/components/processors/proto/text_model_type.proto +++ b/mediapipe/tasks/cc/components/processors/proto/text_model_type.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.proto b/mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.proto index 8ddd5243..dbb28c9e 100644 --- a/mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.proto +++ b/mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.cc b/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.cc index 7587161a..ecf59e2d 100644 --- a/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.cc +++ b/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h b/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h index 43d57be2..6d5fdb5f 100644 --- a/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h +++ b/mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/BUILD b/mediapipe/tasks/cc/components/utils/BUILD index 2e0ea3ce..f2ebcd4b 100644 --- a/mediapipe/tasks/cc/components/utils/BUILD +++ b/mediapipe/tasks/cc/components/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/cosine_similarity.cc b/mediapipe/tasks/cc/components/utils/cosine_similarity.cc index 1403700c..8ef33073 100644 --- a/mediapipe/tasks/cc/components/utils/cosine_similarity.cc +++ b/mediapipe/tasks/cc/components/utils/cosine_similarity.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/cosine_similarity.h b/mediapipe/tasks/cc/components/utils/cosine_similarity.h index 45ddce76..b2ebabca 100644 --- a/mediapipe/tasks/cc/components/utils/cosine_similarity.h +++ b/mediapipe/tasks/cc/components/utils/cosine_similarity.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/cosine_similarity_test.cc b/mediapipe/tasks/cc/components/utils/cosine_similarity_test.cc index 4ff9dfc3..f476a7d4 100644 --- a/mediapipe/tasks/cc/components/utils/cosine_similarity_test.cc +++ b/mediapipe/tasks/cc/components/utils/cosine_similarity_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/gate.h b/mediapipe/tasks/cc/components/utils/gate.h index 139205fc..2b1fc465 100644 --- a/mediapipe/tasks/cc/components/utils/gate.h +++ b/mediapipe/tasks/cc/components/utils/gate.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/components/utils/gate_test.cc b/mediapipe/tasks/cc/components/utils/gate_test.cc index 47ff2507..94231496 100644 --- a/mediapipe/tasks/cc/components/utils/gate_test.cc +++ b/mediapipe/tasks/cc/components/utils/gate_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/BUILD b/mediapipe/tasks/cc/core/BUILD index 95cfdd15..dad9cdf1 100644 --- a/mediapipe/tasks/cc/core/BUILD +++ b/mediapipe/tasks/cc/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -61,15 +61,13 @@ cc_library( "//mediapipe/framework/port:status", "//mediapipe/tasks/cc:common", "//mediapipe/tasks/cc/core/proto:external_file_cc_proto", + "//mediapipe/util:resource_util", "@com_google_absl//absl/memory", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", - ] + select({ - "//mediapipe:windows": ["@bazel_tools//tools/cpp/runfiles"], - "//conditions:default": [], - }), + ], ) cc_library( diff --git a/mediapipe/tasks/cc/core/base_options.cc b/mediapipe/tasks/cc/core/base_options.cc index 8bee6b46..410e8d35 100644 --- a/mediapipe/tasks/cc/core/base_options.cc +++ b/mediapipe/tasks/cc/core/base_options.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/base_options.h b/mediapipe/tasks/cc/core/base_options.h index b6a0f055..021aebbe 100644 --- a/mediapipe/tasks/cc/core/base_options.h +++ b/mediapipe/tasks/cc/core/base_options.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/base_task_api.h b/mediapipe/tasks/cc/core/base_task_api.h index 92d41cc8..5238527a 100644 --- a/mediapipe/tasks/cc/core/base_task_api.h +++ b/mediapipe/tasks/cc/core/base_task_api.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/external_file_handler.cc b/mediapipe/tasks/cc/core/external_file_handler.cc index a56f03d5..af304c46 100644 --- a/mediapipe/tasks/cc/core/external_file_handler.cc +++ b/mediapipe/tasks/cc/core/external_file_handler.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -43,10 +43,7 @@ limitations under the License. #include "mediapipe/framework/port/status_macros.h" #include "mediapipe/tasks/cc/common.h" #include "mediapipe/tasks/cc/core/proto/external_file.pb.h" - -#ifdef _WIN32 -#include "tools/cpp/runfiles/runfiles.h" -#endif // _WIN32 +#include "mediapipe/util/resource_util.h" namespace mediapipe { namespace tasks { @@ -96,30 +93,6 @@ ExternalFileHandler::CreateFromExternalFile( return handler; } -absl::StatusOr PathToResourceAsFile(std::string path) { -#ifndef _WIN32 - return path; -#else - std::string qualified_path = path; - if (absl::StartsWith(qualified_path, "./")) { - qualified_path = "mediapipe" + qualified_path.substr(1); - } else if (path[0] != '/') { - qualified_path = "mediapipe/" + qualified_path; - } - - std::string error; - // TODO: We should ideally use `CreateForTests` when this is - // accessed from unit tests. - std::unique_ptr<::bazel::tools::cpp::runfiles::Runfiles> runfiles( - ::bazel::tools::cpp::runfiles::Runfiles::Create("", &error)); - if (!runfiles) { - // Return the original path when Runfiles is not available (e.g. for Python) - return path; - } - return runfiles->Rlocation(qualified_path); -#endif // _WIN32 -} - absl::Status ExternalFileHandler::MapExternalFile() { if (!external_file_.file_content().empty()) { return absl::OkStatus(); diff --git a/mediapipe/tasks/cc/core/external_file_handler.h b/mediapipe/tasks/cc/core/external_file_handler.h index 04a3e1ac..3150fde5 100644 --- a/mediapipe/tasks/cc/core/external_file_handler.h +++ b/mediapipe/tasks/cc/core/external_file_handler.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.cc b/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.cc index 80097fd0..b816d885 100644 --- a/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.cc +++ b/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h b/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h index a7c28aa7..6c045d73 100644 --- a/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h +++ b/mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_asset_bundle_resources.cc b/mediapipe/tasks/cc/core/model_asset_bundle_resources.cc index 2f53ff2d..58b30630 100644 --- a/mediapipe/tasks/cc/core/model_asset_bundle_resources.cc +++ b/mediapipe/tasks/cc/core/model_asset_bundle_resources.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_asset_bundle_resources.h b/mediapipe/tasks/cc/core/model_asset_bundle_resources.h index 02d989d4..5b334fab 100644 --- a/mediapipe/tasks/cc/core/model_asset_bundle_resources.h +++ b/mediapipe/tasks/cc/core/model_asset_bundle_resources.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_asset_bundle_resources_test.cc b/mediapipe/tasks/cc/core/model_asset_bundle_resources_test.cc index 85a94ccc..4cf53fe4 100644 --- a/mediapipe/tasks/cc/core/model_asset_bundle_resources_test.cc +++ b/mediapipe/tasks/cc/core/model_asset_bundle_resources_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources.cc b/mediapipe/tasks/cc/core/model_resources.cc index 76695125..1a917f72 100644 --- a/mediapipe/tasks/cc/core/model_resources.cc +++ b/mediapipe/tasks/cc/core/model_resources.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources.h b/mediapipe/tasks/cc/core/model_resources.h index 1bc1b65e..d8e8dada 100644 --- a/mediapipe/tasks/cc/core/model_resources.h +++ b/mediapipe/tasks/cc/core/model_resources.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources_cache.cc b/mediapipe/tasks/cc/core/model_resources_cache.cc index affcb6de..ced64bab 100644 --- a/mediapipe/tasks/cc/core/model_resources_cache.cc +++ b/mediapipe/tasks/cc/core/model_resources_cache.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources_cache.h b/mediapipe/tasks/cc/core/model_resources_cache.h index 32909f93..75c24f34 100644 --- a/mediapipe/tasks/cc/core/model_resources_cache.h +++ b/mediapipe/tasks/cc/core/model_resources_cache.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources_calculator.cc b/mediapipe/tasks/cc/core/model_resources_calculator.cc index d5c8cd50..8db35818 100644 --- a/mediapipe/tasks/cc/core/model_resources_calculator.cc +++ b/mediapipe/tasks/cc/core/model_resources_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources_calculator_test.cc b/mediapipe/tasks/cc/core/model_resources_calculator_test.cc index 6ba52e52..cf10a209 100644 --- a/mediapipe/tasks/cc/core/model_resources_calculator_test.cc +++ b/mediapipe/tasks/cc/core/model_resources_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_resources_test.cc b/mediapipe/tasks/cc/core/model_resources_test.cc index 036d0e78..ffd78f3d 100644 --- a/mediapipe/tasks/cc/core/model_resources_test.cc +++ b/mediapipe/tasks/cc/core/model_resources_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_task_graph.cc b/mediapipe/tasks/cc/core/model_task_graph.cc index 8767fb48..46cc088f 100644 --- a/mediapipe/tasks/cc/core/model_task_graph.cc +++ b/mediapipe/tasks/cc/core/model_task_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/model_task_graph.h b/mediapipe/tasks/cc/core/model_task_graph.h index aa864c9f..10634d3d 100644 --- a/mediapipe/tasks/cc/core/model_task_graph.h +++ b/mediapipe/tasks/cc/core/model_task_graph.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/BUILD b/mediapipe/tasks/cc/core/proto/BUILD index fff935b2..72de1be8 100644 --- a/mediapipe/tasks/cc/core/proto/BUILD +++ b/mediapipe/tasks/cc/core/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/acceleration.proto b/mediapipe/tasks/cc/core/proto/acceleration.proto index c7215604..64165f29 100644 --- a/mediapipe/tasks/cc/core/proto/acceleration.proto +++ b/mediapipe/tasks/cc/core/proto/acceleration.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/base_options.proto b/mediapipe/tasks/cc/core/proto/base_options.proto index b7c0629e..9c957192 100644 --- a/mediapipe/tasks/cc/core/proto/base_options.proto +++ b/mediapipe/tasks/cc/core/proto/base_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/external_file.proto b/mediapipe/tasks/cc/core/proto/external_file.proto index 3147a222..dbb3da37 100644 --- a/mediapipe/tasks/cc/core/proto/external_file.proto +++ b/mediapipe/tasks/cc/core/proto/external_file.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/inference_subgraph.proto b/mediapipe/tasks/cc/core/proto/inference_subgraph.proto index 2232a115..d4c80020 100644 --- a/mediapipe/tasks/cc/core/proto/inference_subgraph.proto +++ b/mediapipe/tasks/cc/core/proto/inference_subgraph.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/proto/model_resources_calculator.proto b/mediapipe/tasks/cc/core/proto/model_resources_calculator.proto index dd67bb47..ec200fd1 100644 --- a/mediapipe/tasks/cc/core/proto/model_resources_calculator.proto +++ b/mediapipe/tasks/cc/core/proto/model_resources_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/task_api_factory.h b/mediapipe/tasks/cc/core/task_api_factory.h index 83c2f320..6c55a656 100644 --- a/mediapipe/tasks/cc/core/task_api_factory.h +++ b/mediapipe/tasks/cc/core/task_api_factory.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/task_runner.cc b/mediapipe/tasks/cc/core/task_runner.cc index fc933d54..d97c4e48 100644 --- a/mediapipe/tasks/cc/core/task_runner.cc +++ b/mediapipe/tasks/cc/core/task_runner.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/task_runner.h b/mediapipe/tasks/cc/core/task_runner.h index 8123a45a..cd77c055 100644 --- a/mediapipe/tasks/cc/core/task_runner.h +++ b/mediapipe/tasks/cc/core/task_runner.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/task_runner_test.cc b/mediapipe/tasks/cc/core/task_runner_test.cc index 75c6260a..6a53a0ff 100644 --- a/mediapipe/tasks/cc/core/task_runner_test.cc +++ b/mediapipe/tasks/cc/core/task_runner_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/utils.cc b/mediapipe/tasks/cc/core/utils.cc index 1e44109c..168c4363 100644 --- a/mediapipe/tasks/cc/core/utils.cc +++ b/mediapipe/tasks/cc/core/utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/core/utils.h b/mediapipe/tasks/cc/core/utils.h index 4ca51fa9..54d63866 100644 --- a/mediapipe/tasks/cc/core/utils.h +++ b/mediapipe/tasks/cc/core/utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_extractor.cc b/mediapipe/tasks/cc/metadata/metadata_extractor.cc index 4d6f526f..16e05d7a 100644 --- a/mediapipe/tasks/cc/metadata/metadata_extractor.cc +++ b/mediapipe/tasks/cc/metadata/metadata_extractor.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_extractor.h b/mediapipe/tasks/cc/metadata/metadata_extractor.h index b88eda86..c1d8a4c2 100644 --- a/mediapipe/tasks/cc/metadata/metadata_extractor.h +++ b/mediapipe/tasks/cc/metadata/metadata_extractor.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_parser.h.template b/mediapipe/tasks/cc/metadata/metadata_parser.h.template index 28c38af8..852791a0 100644 --- a/mediapipe/tasks/cc/metadata/metadata_parser.h.template +++ b/mediapipe/tasks/cc/metadata/metadata_parser.h.template @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_populator.cc b/mediapipe/tasks/cc/metadata/metadata_populator.cc index a6fd496a..872bc2b2 100644 --- a/mediapipe/tasks/cc/metadata/metadata_populator.cc +++ b/mediapipe/tasks/cc/metadata/metadata_populator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_populator.h b/mediapipe/tasks/cc/metadata/metadata_populator.h index c0554f70..c3856e10 100644 --- a/mediapipe/tasks/cc/metadata/metadata_populator.h +++ b/mediapipe/tasks/cc/metadata/metadata_populator.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_version.cc b/mediapipe/tasks/cc/metadata/metadata_version.cc index 7e2414dd..aab3d8c5 100644 --- a/mediapipe/tasks/cc/metadata/metadata_version.cc +++ b/mediapipe/tasks/cc/metadata/metadata_version.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/metadata_version.h b/mediapipe/tasks/cc/metadata/metadata_version.h index a53caa54..bb0bd36f 100644 --- a/mediapipe/tasks/cc/metadata/metadata_version.h +++ b/mediapipe/tasks/cc/metadata/metadata_version.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/python/metadata_version.cc b/mediapipe/tasks/cc/metadata/python/metadata_version.cc index e3072bc9..e1e50459 100644 --- a/mediapipe/tasks/cc/metadata/python/metadata_version.cc +++ b/mediapipe/tasks/cc/metadata/python/metadata_version.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/tests/metadata_extractor_test.cc b/mediapipe/tasks/cc/metadata/tests/metadata_extractor_test.cc index 0e05e516..bed1610d 100644 --- a/mediapipe/tasks/cc/metadata/tests/metadata_extractor_test.cc +++ b/mediapipe/tasks/cc/metadata/tests/metadata_extractor_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/tests/metadata_parser_test.cc b/mediapipe/tasks/cc/metadata/tests/metadata_parser_test.cc index 0d613e65..9b70f7a2 100644 --- a/mediapipe/tasks/cc/metadata/tests/metadata_parser_test.cc +++ b/mediapipe/tasks/cc/metadata/tests/metadata_parser_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/tests/metadata_version_test.cc b/mediapipe/tasks/cc/metadata/tests/metadata_version_test.cc index 63cd2ff9..188560b5 100644 --- a/mediapipe/tasks/cc/metadata/tests/metadata_version_test.cc +++ b/mediapipe/tasks/cc/metadata/tests/metadata_version_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/tests/metadata_version_utils_test.cc b/mediapipe/tasks/cc/metadata/tests/metadata_version_utils_test.cc index eaaa39f0..ae4315f9 100644 --- a/mediapipe/tasks/cc/metadata/tests/metadata_version_utils_test.cc +++ b/mediapipe/tasks/cc/metadata/tests/metadata_version_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.cc b/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.cc index a231afc4..cd5fa631 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.cc +++ b/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.h b/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.h index fcd22d6d..b99664b7 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.h +++ b/mediapipe/tasks/cc/metadata/utils/zip_readonly_mem_file.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_utils.cc b/mediapipe/tasks/cc/metadata/utils/zip_utils.cc index 2c09e196..e0cc3d77 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_utils.cc +++ b/mediapipe/tasks/cc/metadata/utils/zip_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_utils.h b/mediapipe/tasks/cc/metadata/utils/zip_utils.h index 10ad0a5a..e69abf9f 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_utils.h +++ b/mediapipe/tasks/cc/metadata/utils/zip_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.cc b/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.cc index 3dc1f195..1f27c5bf 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.cc +++ b/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.h b/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.h index ca06476e..6a28e2d8 100644 --- a/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.h +++ b/mediapipe/tasks/cc/metadata/utils/zip_writable_mem_file.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/ragged/BUILD b/mediapipe/tasks/cc/text/custom_ops/ragged/BUILD index 00e8fa1e..c8a38f94 100644 --- a/mediapipe/tasks/cc/text/custom_ops/ragged/BUILD +++ b/mediapipe/tasks/cc/text/custom_ops/ragged/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.cc b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.cc index 4ba1a929..a0eadd71 100644 --- a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.cc +++ b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.h b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.h index 02536c97..65da8d05 100644 --- a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.h +++ b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite_test.cc b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite_test.cc index 38e22034..e0c8604e 100644 --- a/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite_test.cc +++ b/mediapipe/tasks/cc/text/custom_ops/ragged/ragged_tensor_to_tensor_tflite_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/BUILD b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/BUILD index 19f843c4..334ed74d 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/BUILD +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/config.fbs b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/config.fbs index 16408ffe..6fb5f1bf 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/config.fbs +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/config.fbs @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie.h index c3b568f1..d6497c74 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.cc index f492b5c4..85f6c2f5 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.h index 94c50bff..90c8f606 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_builder.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_test.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_test.cc index 60a78e12..a53c9be1 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_test.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/double_array_trie_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/encoder_config.fbs b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/encoder_config.fbs index 2e783680..3aed17ee 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/encoder_config.fbs +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/encoder_config.fbs @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.cc index 3a831f3d..0c407448 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.h index 828db16d..49410fa5 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/model_converter.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.cc index 365b1a5a..0dbc061f 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.h index 849a4784..d4712dc9 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder_test.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder_test.cc index e65bd185..fcef6b86 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder_test.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/optimized_encoder_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_constants.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_constants.h index faf48184..bb50c4f9 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_constants.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_constants.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.cc b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.cc index 468a3a54..481fd523 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.cc +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.h index 8a9fa8ae..f6c89bdb 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/sentencepiece_tokenizer_tflite.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/utils.h b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/utils.h index c1b7728c..04380ff5 100644 --- a/mediapipe/tasks/cc/text/custom_ops/sentencepiece/utils.h +++ b/mediapipe/tasks/cc/text/custom_ops/sentencepiece/utils.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/BUILD b/mediapipe/tasks/cc/text/language_detector/BUILD index 57b9c7b5..a7229cdf 100644 --- a/mediapipe/tasks/cc/text/language_detector/BUILD +++ b/mediapipe/tasks/cc/text/language_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/BUILD b/mediapipe/tasks/cc/text/language_detector/custom_ops/BUILD index 090f528e..26eee18c 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/BUILD +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.cc index 2c9b7a17..9df8d6d5 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.h index 31dd4abb..030e0663 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/kmeans_embedding_lookup.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.cc index efe39a01..b20d77b9 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.h index c32e91c6..53599bf2 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash_test.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash_test.cc index b799afc2..d8b6ce3d 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash_test.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/ngram_hash_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/BUILD b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/BUILD index 9f2fe298..894f2b9b 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/BUILD +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/BUILD b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/BUILD index 86b65924..9a6f6f38 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/BUILD +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.cc index 75dd161b..4889ae66 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ limitations under the License. ==============================================================================*/ // Forked from a library written by Austin Appelby and Jyrki Alakuijala. // Original copyright message below. -// Copyright 2009 Google Inc. All Rights Reserved. +// Copyright 2009 Google Inc. // Author: aappleby@google.com (Austin Appleby) // jyrki@google.com (Jyrki Alakuijala) diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.h index abcb41a6..cf6a44d5 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ limitations under the License. ==============================================================================*/ // Forked from a library written by Austin Appelby and Jyrki Alakuijala. // Original copyright message below. -// Copyright 2009 Google Inc. All Rights Reserved. +// Copyright 2009 Google Inc. // Author: aappleby@google.com (Austin Appelby) // jyrki@google.com (Jyrki Alakuijala) // diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur_test.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur_test.cc index 6658965b..10ea0ffd 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur_test.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/murmur_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ limitations under the License. ==============================================================================*/ // Forked from a test library written by Jyrki Alakuijala. // Original copyright message below. -// Copyright 2009 Google Inc. All Rights Reserved. +// Copyright 2009 Google Inc. // Author: jyrki@google.com (Jyrki Alakuijala) // // Tests for the fast hashing algorithm based on Austin Appleby's diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.cc index f1ad71fc..7f46917e 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.h index 9a80554c..24daf515 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils_test.cc b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils_test.cc index d22af1c9..b36391d2 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils_test.cc +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/ngram_hash_ops_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/BUILD b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/BUILD index a7184530..b633d681 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/BUILD +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/rune.c b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/rune.c index b74450f4..80ac027c 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/rune.c +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/rune.c @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetype.c b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetype.c index 1dd8abdb..949a652f 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetype.c +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetype.c @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetypebody.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetypebody.h index 66d1dfc1..ba914685 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetypebody.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/runetypebody.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/utf.h b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/utf.h index 24d9b9db..016ab1eb 100644 --- a/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/utf.h +++ b/mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/utf.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/language_detector.cc b/mediapipe/tasks/cc/text/language_detector/language_detector.cc index e3841211..47642772 100644 --- a/mediapipe/tasks/cc/text/language_detector/language_detector.cc +++ b/mediapipe/tasks/cc/text/language_detector/language_detector.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/language_detector.h b/mediapipe/tasks/cc/text/language_detector/language_detector.h index bbe58ded..95e2e9c9 100644 --- a/mediapipe/tasks/cc/text/language_detector/language_detector.h +++ b/mediapipe/tasks/cc/text/language_detector/language_detector.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/language_detector/language_detector_test.cc b/mediapipe/tasks/cc/text/language_detector/language_detector_test.cc index 2e9a5840..1ff12fda 100644 --- a/mediapipe/tasks/cc/text/language_detector/language_detector_test.cc +++ b/mediapipe/tasks/cc/text/language_detector/language_detector_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/BUILD b/mediapipe/tasks/cc/text/text_classifier/BUILD index 4bf77327..4b244c00 100644 --- a/mediapipe/tasks/cc/text/text_classifier/BUILD +++ b/mediapipe/tasks/cc/text/text_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/proto/BUILD b/mediapipe/tasks/cc/text/text_classifier/proto/BUILD index f2b544d8..fc298575 100644 --- a/mediapipe/tasks/cc/text/text_classifier/proto/BUILD +++ b/mediapipe/tasks/cc/text/text_classifier/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/proto/text_classifier_graph_options.proto b/mediapipe/tasks/cc/text/text_classifier/proto/text_classifier_graph_options.proto index 41f87b51..7f693ee7 100644 --- a/mediapipe/tasks/cc/text/text_classifier/proto/text_classifier_graph_options.proto +++ b/mediapipe/tasks/cc/text/text_classifier/proto/text_classifier_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier.cc b/mediapipe/tasks/cc/text/text_classifier/text_classifier.cc index d174fac4..0ffd57ce 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier.cc +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier.h b/mediapipe/tasks/cc/text/text_classifier/text_classifier.h index 03569c5a..0fd9e56a 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier.h +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier_graph.cc b/mediapipe/tasks/cc/text/text_classifier/text_classifier_graph.cc index 3be92f30..bd032cdf 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier_graph.cc +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test.cc b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test.cc index f800a0e5..e10bd53f 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test.cc +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.cc b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.cc index d1237037..0e3d8b89 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.cc +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.h b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.h index a427b561..d6ebaf50 100644 --- a/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.h +++ b/mediapipe/tasks/cc/text/text_classifier/text_classifier_test_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/BUILD b/mediapipe/tasks/cc/text/text_embedder/BUILD index addb971f..e8deee24 100644 --- a/mediapipe/tasks/cc/text/text_embedder/BUILD +++ b/mediapipe/tasks/cc/text/text_embedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/proto/BUILD b/mediapipe/tasks/cc/text/text_embedder/proto/BUILD index 146483af..0e42f40e 100644 --- a/mediapipe/tasks/cc/text/text_embedder/proto/BUILD +++ b/mediapipe/tasks/cc/text/text_embedder/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/proto/text_embedder_graph_options.proto b/mediapipe/tasks/cc/text/text_embedder/proto/text_embedder_graph_options.proto index fc8e0285..f367d353 100644 --- a/mediapipe/tasks/cc/text/text_embedder/proto/text_embedder_graph_options.proto +++ b/mediapipe/tasks/cc/text/text_embedder/proto/text_embedder_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/text_embedder.cc b/mediapipe/tasks/cc/text/text_embedder/text_embedder.cc index 375058d5..aa98c1e2 100644 --- a/mediapipe/tasks/cc/text/text_embedder/text_embedder.cc +++ b/mediapipe/tasks/cc/text/text_embedder/text_embedder.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/text_embedder.h b/mediapipe/tasks/cc/text/text_embedder/text_embedder.h index d729ff3c..a7e9736a 100644 --- a/mediapipe/tasks/cc/text/text_embedder/text_embedder.h +++ b/mediapipe/tasks/cc/text/text_embedder/text_embedder.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/text_embedder_graph.cc b/mediapipe/tasks/cc/text/text_embedder/text_embedder_graph.cc index 51869513..9c812e9f 100644 --- a/mediapipe/tasks/cc/text/text_embedder/text_embedder_graph.cc +++ b/mediapipe/tasks/cc/text/text_embedder/text_embedder_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/text_embedder/text_embedder_test.cc b/mediapipe/tasks/cc/text/text_embedder/text_embedder_test.cc index 474f0ca3..29a00a2a 100644 --- a/mediapipe/tasks/cc/text/text_embedder/text_embedder_test.cc +++ b/mediapipe/tasks/cc/text/text_embedder/text_embedder_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/BUILD b/mediapipe/tasks/cc/text/tokenizers/BUILD index 92fac8ea..01908cd2 100644 --- a/mediapipe/tasks/cc/text/tokenizers/BUILD +++ b/mediapipe/tasks/cc/text/tokenizers/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,7 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -package(default_visibility = ["//mediapipe/calculators/tensor:__subpackages__"]) +default_visibility = ["//mediapipe/calculators/tensor:__subpackages__"] + +package(default_visibility = default_visibility) licenses(["notice"]) @@ -34,6 +36,7 @@ cc_library( hdrs = [ "bert_tokenizer.h", ], + visibility = default_visibility + ["//mediapipe/tasks:users"], deps = [ ":tokenizer", "//mediapipe/framework/port:integral_types", diff --git a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.cc b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.cc index 3348abff..caec04de 100644 --- a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.cc +++ b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.h b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.h index d655fcad..67149b78 100644 --- a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.h +++ b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer_test.cc b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer_test.cc index 8a21136c..8a06c580 100644 --- a/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer_test.cc +++ b/mediapipe/tasks/cc/text/tokenizers/bert_tokenizer_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.cc b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.cc index 6a1dc250..8fe75d8b 100644 --- a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.cc +++ b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.h b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.h index c84dd33d..0617167a 100644 --- a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.h +++ b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer_test.cc b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer_test.cc index 150304d7..cc13f256 100644 --- a/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer_test.cc +++ b/mediapipe/tasks/cc/text/tokenizers/regex_tokenizer_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer.h b/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer.h index 9798f7bd..e1aab0ec 100644 --- a/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer.h +++ b/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer_test.cc b/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer_test.cc index 88afabe1..eb9032cc 100644 --- a/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer_test.cc +++ b/mediapipe/tasks/cc/text/tokenizers/sentencepiece_tokenizer_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/tokenizer.h b/mediapipe/tasks/cc/text/tokenizers/tokenizer.h index ae984808..d5d7d889 100644 --- a/mediapipe/tasks/cc/text/tokenizers/tokenizer.h +++ b/mediapipe/tasks/cc/text/tokenizers/tokenizer.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.cc b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.cc index 839c0818..1c2faa67 100644 --- a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.cc +++ b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.h b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.h index c6bea141..039c6dd5 100644 --- a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.h +++ b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils_test.cc b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils_test.cc index 337d5ec7..7c2344e3 100644 --- a/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils_test.cc +++ b/mediapipe/tasks/cc/text/tokenizers/tokenizer_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/utils/BUILD b/mediapipe/tasks/cc/text/utils/BUILD index 15af7683..d13d6b30 100644 --- a/mediapipe/tasks/cc/text/utils/BUILD +++ b/mediapipe/tasks/cc/text/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ cc_library( "vocab_utils.h", ], deps = [ + "//mediapipe/util:resource_util", "@com_google_absl//absl/container:node_hash_map", "@com_google_absl//absl/strings", ], diff --git a/mediapipe/tasks/cc/text/utils/text_model_utils.cc b/mediapipe/tasks/cc/text/utils/text_model_utils.cc index 7cd03d84..1100e83f 100644 --- a/mediapipe/tasks/cc/text/utils/text_model_utils.cc +++ b/mediapipe/tasks/cc/text/utils/text_model_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/utils/text_model_utils.h b/mediapipe/tasks/cc/text/utils/text_model_utils.h index da8783d3..73061678 100644 --- a/mediapipe/tasks/cc/text/utils/text_model_utils.h +++ b/mediapipe/tasks/cc/text/utils/text_model_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/utils/text_model_utils_test.cc b/mediapipe/tasks/cc/text/utils/text_model_utils_test.cc index 2ec5686f..a0d9cf0c 100644 --- a/mediapipe/tasks/cc/text/utils/text_model_utils_test.cc +++ b/mediapipe/tasks/cc/text/utils/text_model_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/utils/vocab_utils.cc b/mediapipe/tasks/cc/text/utils/vocab_utils.cc index 068272f7..66b0587d 100644 --- a/mediapipe/tasks/cc/text/utils/vocab_utils.cc +++ b/mediapipe/tasks/cc/text/utils/vocab_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ limitations under the License. #include #include "absl/strings/str_split.h" +#include "mediapipe/util/resource_util.h" namespace mediapipe { namespace tasks { @@ -34,7 +35,11 @@ void ReadIStreamLineByLine( std::string str; while (std::getline(*istream, str)) { if (!str.empty()) { - line_processor(str); + if (str.back() == '\r') { // Remove \r on Windows + line_processor(str.substr(0, str.length() - 1)); + } else { + line_processor(str); + } } } } @@ -64,7 +69,8 @@ std::vector ReadIStreamByLine(std::istream* istream) { std::vector LoadVocabFromFile(const std::string& path_to_vocab) { std::vector vocab_from_file; - std::ifstream in(path_to_vocab.c_str()); + std::string file_name = *PathToResourceAsFile(path_to_vocab); + std::ifstream in(file_name.c_str()); return ReadIStreamByLine(&in); } @@ -79,7 +85,8 @@ std::vector LoadVocabFromBuffer(const char* vocab_buffer_data, absl::node_hash_map LoadVocabAndIndexFromFile( const std::string& path_to_vocab) { absl::node_hash_map vocab_index_map; - std::ifstream in(path_to_vocab.c_str()); + std::string file_name = *PathToResourceAsFile(path_to_vocab); + std::ifstream in(file_name.c_str()); return ReadIStreamLineSplits(&in); } diff --git a/mediapipe/tasks/cc/text/utils/vocab_utils.h b/mediapipe/tasks/cc/text/utils/vocab_utils.h index a2da349d..80c448e8 100644 --- a/mediapipe/tasks/cc/text/utils/vocab_utils.h +++ b/mediapipe/tasks/cc/text/utils/vocab_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/text/utils/vocab_utils_test.cc b/mediapipe/tasks/cc/text/utils/vocab_utils_test.cc index e4db9628..a255458e 100644 --- a/mediapipe/tasks/cc/text/utils/vocab_utils_test.cc +++ b/mediapipe/tasks/cc/text/utils/vocab_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/core/BUILD b/mediapipe/tasks/cc/vision/core/BUILD index 0815b5b2..59fb4562 100644 --- a/mediapipe/tasks/cc/vision/core/BUILD +++ b/mediapipe/tasks/cc/vision/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/core/base_vision_task_api.h b/mediapipe/tasks/cc/vision/core/base_vision_task_api.h index 8e6105e1..e65e67bd 100644 --- a/mediapipe/tasks/cc/vision/core/base_vision_task_api.h +++ b/mediapipe/tasks/cc/vision/core/base_vision_task_api.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/core/image_processing_options.h b/mediapipe/tasks/cc/vision/core/image_processing_options.h index e2647be7..03610e98 100644 --- a/mediapipe/tasks/cc/vision/core/image_processing_options.h +++ b/mediapipe/tasks/cc/vision/core/image_processing_options.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/core/running_mode.h b/mediapipe/tasks/cc/vision/core/running_mode.h index 330c335f..06804514 100644 --- a/mediapipe/tasks/cc/vision/core/running_mode.h +++ b/mediapipe/tasks/cc/vision/core/running_mode.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/core/vision_task_api_factory.h b/mediapipe/tasks/cc/vision/core/vision_task_api_factory.h index 8872a2a0..c68e432c 100644 --- a/mediapipe/tasks/cc/vision/core/vision_task_api_factory.h +++ b/mediapipe/tasks/cc/vision/core/vision_task_api_factory.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/BUILD b/mediapipe/tasks/cc/vision/face_detector/BUILD index 2cae8b79..8fd171da 100644 --- a/mediapipe/tasks/cc/vision/face_detector/BUILD +++ b/mediapipe/tasks/cc/vision/face_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/face_detector.cc b/mediapipe/tasks/cc/vision/face_detector/face_detector.cc index 80e114bf..a21b6edc 100644 --- a/mediapipe/tasks/cc/vision/face_detector/face_detector.cc +++ b/mediapipe/tasks/cc/vision/face_detector/face_detector.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/face_detector.h b/mediapipe/tasks/cc/vision/face_detector/face_detector.h index ae485819..545b7d6b 100644 --- a/mediapipe/tasks/cc/vision/face_detector/face_detector.h +++ b/mediapipe/tasks/cc/vision/face_detector/face_detector.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/face_detector_graph.cc b/mediapipe/tasks/cc/vision/face_detector/face_detector_graph.cc index bf62d298..8d83ac2c 100644 --- a/mediapipe/tasks/cc/vision/face_detector/face_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/face_detector/face_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -127,9 +127,9 @@ void ConfigureNonMaxSuppressionCalculator( void ConfigureDetectionsToRectsCalculator( mediapipe::DetectionsToRectsCalculatorOptions* options) { - // Left eye. + // Left eye from the observer’s point of view. options->set_rotation_vector_start_keypoint_index(0); - // Right ete. + // Right eye from the observer’s point of view. options->set_rotation_vector_end_keypoint_index(1); options->set_rotation_vector_target_angle_degrees(0); } diff --git a/mediapipe/tasks/cc/vision/face_detector/face_detector_graph_test.cc b/mediapipe/tasks/cc/vision/face_detector/face_detector_graph_test.cc index 7be08ec2..72eb4cb5 100644 --- a/mediapipe/tasks/cc/vision/face_detector/face_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/face_detector/face_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/face_detector_test.cc b/mediapipe/tasks/cc/vision/face_detector/face_detector_test.cc index b2db21e7..97c64ac1 100644 --- a/mediapipe/tasks/cc/vision/face_detector/face_detector_test.cc +++ b/mediapipe/tasks/cc/vision/face_detector/face_detector_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/proto/BUILD b/mediapipe/tasks/cc/vision/face_detector/proto/BUILD index ca9a6f8c..12b26abd 100644 --- a/mediapipe/tasks/cc/vision/face_detector/proto/BUILD +++ b/mediapipe/tasks/cc/vision/face_detector/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_detector/proto/face_detector_graph_options.proto b/mediapipe/tasks/cc/vision/face_detector/proto/face_detector_graph_options.proto index 3d0f1288..0b082c65 100644 --- a/mediapipe/tasks/cc/vision/face_detector/proto/face_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_detector/proto/face_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph.cc b/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph.cc index 8c69a31f..bf4006a9 100644 --- a/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph.cc +++ b/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph_test.cc b/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph_test.cc index 74baff5d..933ad75c 100644 --- a/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph_test.cc +++ b/mediapipe/tasks/cc/vision/face_geometry/face_geometry_from_landmarks_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/BUILD b/mediapipe/tasks/cc/vision/face_landmarker/BUILD index 1004069b..e4756aab 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/BUILD +++ b/mediapipe/tasks/cc/vision/face_landmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -73,6 +73,8 @@ cc_library( ":tensors_to_face_landmarks_graph", "//mediapipe/calculators/core:begin_loop_calculator", "//mediapipe/calculators/core:end_loop_calculator", + "//mediapipe/calculators/core:get_vector_item_calculator", + "//mediapipe/calculators/core:get_vector_item_calculator_cc_proto", "//mediapipe/calculators/core:split_vector_calculator", "//mediapipe/calculators/core:split_vector_calculator_cc_proto", "//mediapipe/calculators/image:image_properties_calculator", @@ -86,6 +88,8 @@ cc_library( "//mediapipe/calculators/util:detections_to_rects_calculator_cc_proto", "//mediapipe/calculators/util:landmark_letterbox_removal_calculator", "//mediapipe/calculators/util:landmark_projection_calculator", + "//mediapipe/calculators/util:landmarks_smoothing_calculator", + "//mediapipe/calculators/util:landmarks_smoothing_calculator_cc_proto", "//mediapipe/calculators/util:landmarks_to_detection_calculator", "//mediapipe/calculators/util:rect_transformation_calculator", "//mediapipe/calculators/util:rect_transformation_calculator_cc_proto", @@ -194,8 +198,6 @@ cc_library( "//mediapipe/calculators/util:association_norm_rect_calculator", "//mediapipe/calculators/util:collection_has_min_size_calculator", "//mediapipe/calculators/util:collection_has_min_size_calculator_cc_proto", - "//mediapipe/calculators/util:landmarks_smoothing_calculator", - "//mediapipe/calculators/util:landmarks_smoothing_calculator_cc_proto", "//mediapipe/framework/api2:builder", "//mediapipe/framework/api2:port", "//mediapipe/framework/formats:classification_cc_proto", diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph.cc index e1c743a9..68b87bb6 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph_test.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph_test.cc index 5c342a8e..e83f16da 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph_test.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_blendshapes_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.cc index b40ea332..88b0b5eb 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.h b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.h index 2c93fcba..0b23fffd 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.h +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph.cc index c681cd2d..0f9caec0 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26,7 +26,6 @@ limitations under the License. #include "mediapipe/calculators/core/get_vector_item_calculator.pb.h" #include "mediapipe/calculators/util/association_calculator.pb.h" #include "mediapipe/calculators/util/collection_has_min_size_calculator.pb.h" -#include "mediapipe/calculators/util/landmarks_smoothing_calculator.pb.h" #include "mediapipe/framework/api2/builder.h" #include "mediapipe/framework/api2/port.h" #include "mediapipe/framework/formats/classification.pb.h" @@ -172,19 +171,6 @@ absl::Status SetSubTaskBaseOptions(const ModelAssetBundleResources& resources, return absl::OkStatus(); } - -void ConfigureLandmarksSmoothingCalculator( - mediapipe::LandmarksSmoothingCalculatorOptions& options) { - // Min cutoff 0.05 results into ~0.01 alpha in landmark EMA filter when - // landmark is static. - options.mutable_one_euro_filter()->set_min_cutoff(0.05f); - // Beta 80.0 in combintation with min_cutoff 0.05 results into ~0.94 - // alpha in landmark EMA filter when landmark is moving fast. - options.mutable_one_euro_filter()->set_beta(80.0f); - // Derivative cutoff 1.0 results into ~0.17 alpha in landmark velocity - // EMA filter. - options.mutable_one_euro_filter()->set_derivate_cutoff(1.0f); -} } // namespace // A "mediapipe.tasks.vision.face_landmarker.FaceLandmarkerGraph" performs face @@ -464,32 +450,17 @@ class FaceLandmarkerGraph : public core::ModelTaskGraph { auto image_size = image_properties.Out(kSizeTag); // Apply smoothing filter only on the single face landmarks, because - // landmakrs smoothing calculator doesn't support multiple landmarks yet. + // landmarks smoothing calculator doesn't support multiple landmarks yet. if (face_detector_options.num_faces() == 1) { - // Get the single face landmarks - auto& get_vector_item = - graph.AddNode("GetNormalizedLandmarkListVectorItemCalculator"); - get_vector_item.GetOptions() - .set_item_index(0); - face_landmarks >> get_vector_item.In(kVectorTag); - auto single_face_landmarks = get_vector_item.Out(kItemTag); - - // Apply smoothing filter on face landmarks. - auto& landmarks_smoothing = graph.AddNode("LandmarksSmoothingCalculator"); - ConfigureLandmarksSmoothingCalculator( - landmarks_smoothing - .GetOptions()); - single_face_landmarks >> landmarks_smoothing.In(kNormLandmarksTag); - image_size >> landmarks_smoothing.In(kImageSizeTag); - auto smoothed_single_face_landmarks = - landmarks_smoothing.Out(kNormFilteredLandmarksTag); - - // Wrap the single face landmarks into a vector of landmarks. - auto& concatenate_vector = - graph.AddNode("ConcatenateNormalizedLandmarkListVectorCalculator"); - smoothed_single_face_landmarks >> concatenate_vector.In(""); - face_landmarks = concatenate_vector.Out("") - .Cast>(); + face_landmarks_detector_graph + .GetOptions() + .set_smooth_landmarks(true); + } else if (face_detector_options.num_faces() > 1 && + face_landmarks_detector_graph + .GetOptions() + .smooth_landmarks()) { + return absl::InvalidArgumentError( + "Currently face landmarks smoothing only support a single face."); } if (tasks_options.base_options().use_stream_mode()) { @@ -533,9 +504,10 @@ class FaceLandmarkerGraph : public core::ModelTaskGraph { // Back edge. face_rects_for_next_frame >> previous_loopback.In(kLoopTag); } else { - // While not in stream mode, the input images are not guaranteed to be in - // series, and we don't want to enable the tracking and rect associations - // between input images. Always use the face detector graph. + // While not in stream mode, the input images are not guaranteed to be + // in series, and we don't want to enable the tracking and rect + // associations between input images. Always use the face detector + // graph. image_in >> face_detector.In(kImageTag); if (norm_rect_in) { *norm_rect_in >> face_detector.In(kNormRectTag); @@ -571,7 +543,8 @@ class FaceLandmarkerGraph : public core::ModelTaskGraph { } // TODO: Replace PassThroughCalculator with a calculator that - // converts the pixel data to be stored on the target storage (CPU vs GPU). + // converts the pixel data to be stored on the target storage (CPU vs + // GPU). auto& pass_through = graph.AddNode("PassThroughCalculator"); image_in >> pass_through.In(""); diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph_test.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph_test.cc index 063d6835..a6fade60 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph_test.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.cc index 53a171ed..090781cc 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.h b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.h index bc097d6c..f7f06cf0 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.h +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result_test.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result_test.cc index 4123a81f..42a08e43 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result_test.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_result_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_test.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_test.cc index 97af42da..41b5ede6 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_test.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarker_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph.cc index 7ce0fcaa..20d241b9 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,10 +19,13 @@ limitations under the License. #include #include +#include "mediapipe/calculators/core/get_vector_item_calculator.h" +#include "mediapipe/calculators/core/get_vector_item_calculator.pb.h" #include "mediapipe/calculators/core/split_vector_calculator.pb.h" #include "mediapipe/calculators/tensor/tensors_to_floats_calculator.pb.h" #include "mediapipe/calculators/tensor/tensors_to_landmarks_calculator.pb.h" #include "mediapipe/calculators/util/detections_to_rects_calculator.pb.h" +#include "mediapipe/calculators/util/landmarks_smoothing_calculator.pb.h" #include "mediapipe/calculators/util/rect_transformation_calculator.pb.h" #include "mediapipe/calculators/util/thresholding_calculator.pb.h" #include "mediapipe/framework/api2/builder.h" @@ -79,6 +82,9 @@ constexpr char kBatchEndTag[] = "BATCH_END"; constexpr char kItemTag[] = "ITEM"; constexpr char kDetectionTag[] = "DETECTION"; constexpr char kBlendshapesTag[] = "BLENDSHAPES"; +constexpr char kNormFilteredLandmarksTag[] = "NORM_FILTERED_LANDMARKS"; +constexpr char kSizeTag[] = "SIZE"; +constexpr char kVectorTag[] = "VECTOR"; // a landmarks tensor and a scores tensor constexpr int kFaceLandmarksOutputTensorsNum = 2; @@ -88,7 +94,6 @@ struct SingleFaceLandmarksOutputs { Stream rect_next_frame; Stream presence; Stream presence_score; - std::optional> face_blendshapes; }; struct MultiFaceLandmarksOutputs { @@ -148,6 +153,19 @@ void ConfigureFaceRectTransformationCalculator( options->set_square_long(true); } +void ConfigureLandmarksSmoothingCalculator( + mediapipe::LandmarksSmoothingCalculatorOptions& options) { + // Min cutoff 0.05 results into ~0.01 alpha in landmark EMA filter when + // landmark is static. + options.mutable_one_euro_filter()->set_min_cutoff(0.05f); + // Beta 80.0 in combintation with min_cutoff 0.05 results into ~0.94 + // alpha in landmark EMA filter when landmark is moving fast. + options.mutable_one_euro_filter()->set_beta(80.0f); + // Derivative cutoff 1.0 results into ~0.17 alpha in landmark velocity + // EMA filter. + options.mutable_one_euro_filter()->set_derivate_cutoff(1.0f); +} + } // namespace // A "mediapipe.tasks.vision.face_landmarker.SingleFaceLandmarksDetectorGraph" @@ -171,62 +189,6 @@ void ConfigureFaceRectTransformationCalculator( // Boolean value indicates whether the face is present. // PRESENCE_SCORE - float // Float value indicates the probability that the face is present. -// BLENDSHAPES - ClassificationList @optional -// Blendshape classification, available when face_blendshapes_graph_options -// is set. -// All 52 blendshape coefficients: -// 0 - _neutral (ignore it) -// 1 - browDownLeft -// 2 - browDownRight -// 3 - browInnerUp -// 4 - browOuterUpLeft -// 5 - browOuterUpRight -// 6 - cheekPuff -// 7 - cheekSquintLeft -// 8 - cheekSquintRight -// 9 - eyeBlinkLeft -// 10 - eyeBlinkRight -// 11 - eyeLookDownLeft -// 12 - eyeLookDownRight -// 13 - eyeLookInLeft -// 14 - eyeLookInRight -// 15 - eyeLookOutLeft -// 16 - eyeLookOutRight -// 17 - eyeLookUpLeft -// 18 - eyeLookUpRight -// 19 - eyeSquintLeft -// 20 - eyeSquintRight -// 21 - eyeWideLeft -// 22 - eyeWideRight -// 23 - jawForward -// 24 - jawLeft -// 25 - jawOpen -// 26 - jawRight -// 27 - mouthClose -// 28 - mouthDimpleLeft -// 29 - mouthDimpleRight -// 30 - mouthFrownLeft -// 31 - mouthFrownRight -// 32 - mouthFunnel -// 33 - mouthLeft -// 34 - mouthLowerDownLeft -// 35 - mouthLowerDownRight -// 36 - mouthPressLeft -// 37 - mouthPressRight -// 38 - mouthPucker -// 39 - mouthRight -// 40 - mouthRollLower -// 41 - mouthRollUpper -// 42 - mouthShrugLower -// 43 - mouthShrugUpper -// 44 - mouthSmileLeft -// 45 - mouthSmileRight -// 46 - mouthStretchLeft -// 47 - mouthStretchRight -// 48 - mouthUpperUpLeft -// 49 - mouthUpperUpRight -// 50 - noseSneerLeft -// 51 - noseSneerRight // // Example: // node { @@ -238,7 +200,6 @@ void ConfigureFaceRectTransformationCalculator( // output_stream: "FACE_RECT_NEXT_FRAME:face_rect_next_frame" // output_stream: "PRESENCE:presence" // output_stream: "PRESENCE_SCORE:presence_score" -// output_stream: "BLENDSHAPES:blendshapes" // options { // [mediapipe.tasks.vision.face_landmarker.proto.FaceLandmarksDetectorGraphOptions.ext] // { @@ -278,10 +239,6 @@ class SingleFaceLandmarksDetectorGraph : public core::ModelTaskGraph { graph.Out(kFaceRectNextFrameTag).Cast(); outs.presence >> graph.Out(kPresenceTag).Cast(); outs.presence_score >> graph.Out(kPresenceScoreTag).Cast(); - if (outs.face_blendshapes) { - outs.face_blendshapes.value() >> - graph.Out(kBlendshapesTag).Cast(); - } return graph.GetConfig(); } @@ -378,7 +335,7 @@ class SingleFaceLandmarksDetectorGraph : public core::ModelTaskGraph { auto& landmark_projection = graph.AddNode("LandmarkProjectionCalculator"); landmarks_letterbox_removed >> landmark_projection.In(kNormLandmarksTag); face_rect >> landmark_projection.In(kNormRectTag); - auto projected_landmarks = AllowIf( + Stream projected_landmarks = AllowIf( landmark_projection[Output(kNormLandmarksTag)], presence, graph); @@ -409,25 +366,11 @@ class SingleFaceLandmarksDetectorGraph : public core::ModelTaskGraph { AllowIf(face_rect_transformation.Out("").Cast(), presence, graph); - std::optional> face_blendshapes; - if (subgraph_options.has_face_blendshapes_graph_options()) { - auto& face_blendshapes_graph = graph.AddNode( - "mediapipe.tasks.vision.face_landmarker.FaceBlendshapesGraph"); - face_blendshapes_graph.GetOptions() - .Swap(subgraph_options.mutable_face_blendshapes_graph_options()); - projected_landmarks >> face_blendshapes_graph.In(kLandmarksTag); - image_size >> face_blendshapes_graph.In(kImageSizeTag); - face_blendshapes = - std::make_optional(face_blendshapes_graph.Out(kBlendshapesTag) - .Cast()); - } - return {{ /* landmarks= */ projected_landmarks, /* rect_next_frame= */ face_rect_next_frame, /* presence= */ presence, /* presence_score= */ presence_score, - /* face_blendshapes= */ face_blendshapes, }}; } }; @@ -465,6 +408,59 @@ REGISTER_MEDIAPIPE_GRAPH( // BLENDSHAPES - std::vector @optional // Vector of face blendshape classification, available when // face_blendshapes_graph_options is set. +// All 52 blendshape coefficients: +// 0 - _neutral (ignore it) +// 1 - browDownLeft +// 2 - browDownRight +// 3 - browInnerUp +// 4 - browOuterUpLeft +// 5 - browOuterUpRight +// 6 - cheekPuff +// 7 - cheekSquintLeft +// 8 - cheekSquintRight +// 9 - eyeBlinkLeft +// 10 - eyeBlinkRight +// 11 - eyeLookDownLeft +// 12 - eyeLookDownRight +// 13 - eyeLookInLeft +// 14 - eyeLookInRight +// 15 - eyeLookOutLeft +// 16 - eyeLookOutRight +// 17 - eyeLookUpLeft +// 18 - eyeLookUpRight +// 19 - eyeSquintLeft +// 20 - eyeSquintRight +// 21 - eyeWideLeft +// 22 - eyeWideRight +// 23 - jawForward +// 24 - jawLeft +// 25 - jawOpen +// 26 - jawRight +// 27 - mouthClose +// 28 - mouthDimpleLeft +// 29 - mouthDimpleRight +// 30 - mouthFrownLeft +// 31 - mouthFrownRight +// 32 - mouthFunnel +// 33 - mouthLeft +// 34 - mouthLowerDownLeft +// 35 - mouthLowerDownRight +// 36 - mouthPressLeft +// 37 - mouthPressRight +// 38 - mouthPucker +// 39 - mouthRight +// 40 - mouthRollLower +// 41 - mouthRollUpper +// 42 - mouthShrugLower +// 43 - mouthShrugUpper +// 44 - mouthSmileLeft +// 45 - mouthSmileRight +// 46 - mouthStretchLeft +// 47 - mouthStretchRight +// 48 - mouthUpperUpLeft +// 49 - mouthUpperUpRight +// 50 - noseSneerLeft +// 51 - noseSneerRight // // Example: // node { @@ -566,8 +562,9 @@ class MultiFaceLandmarksDetectorGraph : public core::ModelTaskGraph { graph.AddNode("EndLoopNormalizedLandmarkListVectorCalculator"); batch_end >> end_loop_landmarks.In(kBatchEndTag); landmarks >> end_loop_landmarks.In(kItemTag); - auto landmark_lists = end_loop_landmarks.Out(kIterableTag) - .Cast>(); + Stream> landmark_lists = + end_loop_landmarks.Out(kIterableTag) + .Cast>(); auto& end_loop_rects_next_frame = graph.AddNode("EndLoopNormalizedRectCalculator"); @@ -576,16 +573,78 @@ class MultiFaceLandmarksDetectorGraph : public core::ModelTaskGraph { auto face_rects_next_frame = end_loop_rects_next_frame.Out(kIterableTag) .Cast>(); + // Apply smoothing filter only on the single face landmarks, because + // landmarks smoothing calculator doesn't support multiple landmarks yet. + // Notice the landmarks smoothing calculator cannot be put inside the for + // loop calculator, because the smoothing calculator utilize the timestamp + // to smoote landmarks across frames but the for loop calculator makes fake + // timestamps for the streams. + if (face_landmark_subgraph + .GetOptions() + .smooth_landmarks()) { + // Get the single face landmarks + auto& get_vector_item = + graph.AddNode("GetNormalizedLandmarkListVectorItemCalculator"); + get_vector_item.GetOptions() + .set_item_index(0); + landmark_lists >> get_vector_item.In(kVectorTag); + Stream single_landmarks = + get_vector_item.Out(kItemTag).Cast(); + + auto& image_properties = graph.AddNode("ImagePropertiesCalculator"); + image_in >> image_properties.In(kImageTag); + auto image_size = image_properties.Out(kSizeTag); + + // Apply smoothing filter on face landmarks. + auto& landmarks_smoothing = graph.AddNode("LandmarksSmoothingCalculator"); + ConfigureLandmarksSmoothingCalculator( + landmarks_smoothing + .GetOptions()); + single_landmarks >> landmarks_smoothing.In(kNormLandmarksTag); + image_size >> landmarks_smoothing.In(kImageSizeTag); + single_landmarks = landmarks_smoothing.Out(kNormFilteredLandmarksTag) + .Cast(); + + // Wrap the single face landmarks into a vector of landmarks. + auto& concatenate_vector = + graph.AddNode("ConcatenateNormalizedLandmarkListVectorCalculator"); + single_landmarks >> concatenate_vector.In(""); + landmark_lists = concatenate_vector.Out("") + .Cast>(); + } + std::optional>> face_blendshapes_vector; if (face_landmark_subgraph .GetOptions() .has_face_blendshapes_graph_options()) { - auto blendshapes = face_landmark_subgraph.Out(kBlendshapesTag); + auto& begin_loop_multi_face_landmarks = + graph.AddNode("BeginLoopNormalizedLandmarkListVectorCalculator"); + landmark_lists >> begin_loop_multi_face_landmarks.In(kIterableTag); + image_in >> begin_loop_multi_face_landmarks.In(kCloneTag); + auto image = begin_loop_multi_face_landmarks.Out(kCloneTag); + auto batch_end = begin_loop_multi_face_landmarks.Out(kBatchEndTag); + auto landmarks = begin_loop_multi_face_landmarks.Out(kItemTag); + + auto& image_properties = graph.AddNode("ImagePropertiesCalculator"); + image >> image_properties.In(kImageTag); + auto image_size = image_properties.Out(kSizeTag); + + auto& face_blendshapes_graph = graph.AddNode( + "mediapipe.tasks.vision.face_landmarker.FaceBlendshapesGraph"); + face_blendshapes_graph.GetOptions() + .Swap(face_landmark_subgraph + .GetOptions() + .mutable_face_blendshapes_graph_options()); + landmarks >> face_blendshapes_graph.In(kLandmarksTag); + image_size >> face_blendshapes_graph.In(kImageSizeTag); + auto face_blendshapes = face_blendshapes_graph.Out(kBlendshapesTag) + .Cast(); + auto& end_loop_blendshapes = graph.AddNode("EndLoopClassificationListCalculator"); batch_end >> end_loop_blendshapes.In(kBatchEndTag); - blendshapes >> end_loop_blendshapes.In(kItemTag); + face_blendshapes >> end_loop_blendshapes.In(kItemTag); face_blendshapes_vector = std::make_optional(end_loop_blendshapes.Out(kIterableTag) .Cast>()); diff --git a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph_test.cc b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph_test.cc index a415125d..affa7bed 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/face_landmarks_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -99,8 +99,7 @@ constexpr float kBlendshapesDiffMargin = 0.1; // Helper function to create a Single Face Landmark TaskRunner. absl::StatusOr> CreateSingleFaceLandmarksTaskRunner( - absl::string_view landmarks_model_name, - std::optional blendshapes_model_name) { + absl::string_view landmarks_model_name) { Graph graph; auto& face_landmark_detection = graph.AddNode( @@ -112,14 +111,6 @@ absl::StatusOr> CreateSingleFaceLandmarksTaskRunner( JoinPath("./", kTestDataDirectory, landmarks_model_name)); options->set_min_detection_confidence(0.5); - if (blendshapes_model_name.has_value()) { - options->mutable_face_blendshapes_graph_options() - ->mutable_base_options() - ->mutable_model_asset() - ->set_file_name( - JoinPath("./", kTestDataDirectory, *blendshapes_model_name)); - } - face_landmark_detection.GetOptions() .Swap(options.get()); @@ -137,11 +128,6 @@ absl::StatusOr> CreateSingleFaceLandmarksTaskRunner( face_landmark_detection.Out(kFaceRectNextFrameTag) .SetName(kFaceRectNextFrameName) >> graph[Output(kFaceRectNextFrameTag)]; - if (blendshapes_model_name.has_value()) { - face_landmark_detection.Out(kBlendshapesTag).SetName(kBlendshapesName) >> - graph[Output(kBlendshapesTag)]; - } - return TaskRunner::Create( graph.GetConfig(), absl::make_unique()); } @@ -227,8 +213,6 @@ struct SingeFaceTestParams { std::string test_name; // The filename of landmarks model name. std::string landmarks_model_name; - // The filename of blendshape model name. - std::optional blendshape_model_name; // The filename of the test image. std::string test_image_name; // RoI on image to detect faces. @@ -237,13 +221,8 @@ struct SingeFaceTestParams { bool expected_presence; // The expected output landmarks positions. NormalizedLandmarkList expected_landmarks; - // The expected output blendshape classification; - std::optional expected_blendshapes; // The max value difference between expected_positions and detected positions. float landmarks_diff_threshold; - // The max value difference between expected blendshapes and actual - // blendshapes. - float blendshapes_diff_threshold; }; struct MultiFaceTestParams { @@ -279,8 +258,7 @@ TEST_P(SingleFaceLandmarksDetectionTest, Succeeds) { GetParam().test_image_name))); MP_ASSERT_OK_AND_ASSIGN( auto task_runner, - CreateSingleFaceLandmarksTaskRunner(GetParam().landmarks_model_name, - GetParam().blendshape_model_name)); + CreateSingleFaceLandmarksTaskRunner(GetParam().landmarks_model_name)); auto output_packets = task_runner->Process( {{kImageName, MakePacket(std::move(image))}, @@ -301,15 +279,6 @@ TEST_P(SingleFaceLandmarksDetectionTest, Succeeds) { Approximately(Partially(EqualsProto(expected_landmarks)), /*margin=*/kAbsMargin, /*fraction=*/GetParam().landmarks_diff_threshold)); - if (GetParam().expected_blendshapes) { - const ClassificationList& actual_blendshapes = - (*output_packets)[kBlendshapesName].Get(); - const ClassificationList& expected_blendshapes = - *GetParam().expected_blendshapes; - EXPECT_THAT(actual_blendshapes, - Approximately(EqualsProto(expected_blendshapes), - GetParam().blendshapes_diff_threshold)); - } } } @@ -360,34 +329,15 @@ TEST_P(MultiFaceLandmarksDetectionTest, Succeeds) { INSTANTIATE_TEST_SUITE_P( FaceLandmarksDetectionTest, SingleFaceLandmarksDetectionTest, Values(SingeFaceTestParams{ - /* test_name= */ "PortraitV2", - /* landmarks_model_name= */ - kFaceLandmarksV2Model, - /* blendshape_model_name= */ std::nullopt, - /* test_image_name= */ kPortraitImageName, - /* norm_rect= */ MakeNormRect(0.4987, 0.2211, 0.2877, 0.2303, 0), - /* expected_presence= */ true, - /* expected_landmarks= */ - GetExpectedLandmarkList(kPortraitExpectedFaceLandmarksName), - /* expected_blendshapes= */ std::nullopt, - /* landmarks_diff_threshold= */ kFractionDiff, - /* blendshapes_diff_threshold= */ kBlendshapesDiffMargin}, - SingeFaceTestParams{ - /* test_name= */ "PortraitV2WithBlendshapes", - /* landmarks_model_name= */ - kFaceLandmarksV2Model, - /* blendshape_model_name= */ kFaceBlendshapesModel, - /* test_image_name= */ kPortraitImageName, - /* norm_rect= */ - MakeNormRect(0.48906386, 0.22731927, 0.42905223, 0.34357703, - 0.008304443), - /* expected_presence= */ true, - /* expected_landmarks= */ - GetExpectedLandmarkList(kPortraitExpectedFaceLandmarksName), - /* expected_blendshapes= */ - GetBlendshapes(kPortraitExpectedBlendshapesName), - /* landmarks_diff_threshold= */ kFractionDiff, - /* blendshapes_diff_threshold= */ kBlendshapesDiffMargin}), + /* test_name= */ "PortraitV2", + /* landmarks_model_name= */ + kFaceLandmarksV2Model, + /* test_image_name= */ kPortraitImageName, + /* norm_rect= */ MakeNormRect(0.4987, 0.2211, 0.2877, 0.2303, 0), + /* expected_presence= */ true, + /* expected_landmarks= */ + GetExpectedLandmarkList(kPortraitExpectedFaceLandmarksName), + /* landmarks_diff_threshold= */ kFractionDiff}), [](const TestParamInfo& info) { return info.param.test_name; diff --git a/mediapipe/tasks/cc/vision/face_landmarker/proto/BUILD b/mediapipe/tasks/cc/vision/face_landmarker/proto/BUILD index d3e23661..1931921e 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/proto/BUILD +++ b/mediapipe/tasks/cc/vision/face_landmarker/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options.proto b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options.proto index 36e712ad..c535f0e2 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarker_graph_options.proto b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarker_graph_options.proto index dc865460..21943716 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarker_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarker_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarks_detector_graph_options.proto b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarks_detector_graph_options.proto index c2fa4960..32e3636d 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarks_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarks_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37,6 +37,13 @@ message FaceLandmarksDetectorGraphOptions { // successfully detecting a face in the image. optional float min_detection_confidence = 2 [default = 0.5]; + // Whether to smooth the detected landmarks over timestamps. Note that + // landmarks smoothing is only applicable for a single face. If multiple faces + // landmarks are given, and smooth_landmarks is true, only the first face + // landmarks would be smoothed, and the remaining landmarks are discarded in + // the returned landmarks list. + optional bool smooth_landmarks = 4; + // Optional options for FaceBlendshapeGraph. If this options is set, the // FaceLandmarksDetectorGraph would output the face blendshapes. optional FaceBlendshapesGraphOptions face_blendshapes_graph_options = 3; diff --git a/mediapipe/tasks/cc/vision/face_landmarker/proto/tensors_to_face_landmarks_graph_options.proto b/mediapipe/tasks/cc/vision/face_landmarker/proto/tensors_to_face_landmarks_graph_options.proto index 22414b36..d9772ea1 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/proto/tensors_to_face_landmarks_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_landmarker/proto/tensors_to_face_landmarks_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_landmarker/tensors_to_face_landmarks_graph.cc b/mediapipe/tasks/cc/vision/face_landmarker/tensors_to_face_landmarks_graph.cc index 4073c9e1..a765f442 100644 --- a/mediapipe/tasks/cc/vision/face_landmarker/tensors_to_face_landmarks_graph.cc +++ b/mediapipe/tasks/cc/vision/face_landmarker/tensors_to_face_landmarks_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/BUILD b/mediapipe/tasks/cc/vision/face_stylizer/BUILD index 27b2f482..e7e6724c 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/BUILD +++ b/mediapipe/tasks/cc/vision/face_stylizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/calculators/BUILD b/mediapipe/tasks/cc/vision/face_stylizer/calculators/BUILD index 4e070b43..74b17401 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/calculators/BUILD +++ b/mediapipe/tasks/cc/vision/face_stylizer/calculators/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/calculators/strip_rotation_calculator.cc b/mediapipe/tasks/cc/vision/face_stylizer/calculators/strip_rotation_calculator.cc index c290f272..11ae112c 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/calculators/strip_rotation_calculator.cc +++ b/mediapipe/tasks/cc/vision/face_stylizer/calculators/strip_rotation_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.cc b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.cc index 7ae8d1b2..975676fb 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.cc +++ b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.h b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.h index 36bb11bd..df9970bf 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.h +++ b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer_graph.cc b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer_graph.cc index 27b8dacc..89394c53 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer_graph.cc +++ b/mediapipe/tasks/cc/vision/face_stylizer/face_stylizer_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/proto/BUILD b/mediapipe/tasks/cc/vision/face_stylizer/proto/BUILD index 1800591d..9773b092 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/proto/BUILD +++ b/mediapipe/tasks/cc/vision/face_stylizer/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options.proto b/mediapipe/tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options.proto index 6357b065..68abee43 100644 --- a/mediapipe/tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options.proto +++ b/mediapipe/tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD b/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD index 7ffae6ff..fe925db5 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/BUILD b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/BUILD index 8c2c2e59..b5c7f2bc 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/BUILD +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.cc index cb95091d..d06c610b 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.proto index 730e7dd7..1afe3d8b 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator_test.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator_test.cc index 509fac5f..0c63c9e6 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator_test.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator.cc index b6c973a1..0d0419d0 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator_test.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator_test.cc index 30e5a958..70012aa5 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator_test.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/handedness_to_matrix_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.cc index 088f97c2..624d8a82 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.proto index 10b03444..6f1472cd 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator_test.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator_test.cc index 70234a32..064dc479 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator_test.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc index a9f8fa8a..f04d7d71 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h index 392aa586..b752840d 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_graph.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_graph.cc index 55db07cb..0f4c88f5 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_graph.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h index 91421780..9c7a8c71 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc index 527363d1..097318be 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.cc index 60ccae92..52c67967 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.h b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.h index ae4137d0..9abb6e59 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.h +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util_test.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util_test.cc index 40a201ae..01e21445 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util_test.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/handedness_util_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD index 0db47da7..8e4f2806 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options.proto index edbabc01..51d3203f 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options.proto index df909a6d..dc659372 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto index fef22c07..ef66a2d3 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto index ae85509d..ceff6739 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/BUILD b/mediapipe/tasks/cc/vision/hand_detector/BUILD index 55162d09..7fc943d8 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/BUILD +++ b/mediapipe/tasks/cc/vision/hand_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph.cc b/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph.cc index 923eab1c..1b964c5d 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph_test.cc b/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph_test.cc index f4e5f8c7..2e47f693 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/hand_detector/hand_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/proto/BUILD b/mediapipe/tasks/cc/vision/hand_detector/proto/BUILD index 77f3b264..c1453f42 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/proto/BUILD +++ b/mediapipe/tasks/cc/vision/hand_detector/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_graph_options.proto b/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_graph_options.proto index bede70da..670d1e41 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_result.proto b/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_result.proto index 00c179ca..170ed7c3 100644 --- a/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_result.proto +++ b/mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_result.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/BUILD b/mediapipe/tasks/cc/vision/hand_landmarker/BUILD index 7a83816b..2eecb61b 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/BUILD +++ b/mediapipe/tasks/cc/vision/hand_landmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/BUILD b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/BUILD index 73d3f38e..a30cc555 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/BUILD +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.cc b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.cc index 011bce2b..060e7a2d 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.proto b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.proto index e7229b4a..b3747886 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.proto +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator_test.cc b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator_test.cc index c22b1a7e..057d72e1 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator_test.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.cc b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.cc index d875de98..ced75754 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.h b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.h index d7b43548..782565ee 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.h +++ b/mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_landmarks_deduplication_calculator.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmark.h b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmark.h index c8dbc925..3f70e7ee 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmark.h +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmark.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.cc index 4eec37f2..9190f405 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.h b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.h index 7a43d20d..726780ff 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.h +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph.cc index b3714100..61bccb2a 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph_test.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph_test.cc index fc73e778..673d0136 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph_test.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.cc index 9d2ae2be..9ec7f838 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.h b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.h index 1bca8e66..caa3c179 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.h +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result_test.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result_test.cc index 109749b0..d2a6b0b3 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result_test.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_result_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_test.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_test.cc index bb7d1a90..899e6560 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_test.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarker_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph.cc index 9409303b..c27322b9 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph_test.cc b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph_test.cc index bbf3a7cd..62e466f6 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/hand_landmarker/hand_landmarks_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/proto/BUILD b/mediapipe/tasks/cc/vision/hand_landmarker/proto/BUILD index 945b12f3..d13f0afd 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/proto/BUILD +++ b/mediapipe/tasks/cc/vision/hand_landmarker/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options.proto b/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options.proto index d0edf99c..1ce2305f 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options.proto +++ b/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarks_detector_graph_options.proto b/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarks_detector_graph_options.proto index a2d52096..04f62c39 100644 --- a/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarks_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarks_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/BUILD b/mediapipe/tasks/cc/vision/image_classifier/BUILD index 514e601e..86ac7680 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/BUILD +++ b/mediapipe/tasks/cc/vision/image_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/image_classifier.cc b/mediapipe/tasks/cc/vision/image_classifier/image_classifier.cc index 7dd410e8..5b885045 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/image_classifier.cc +++ b/mediapipe/tasks/cc/vision/image_classifier/image_classifier.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/image_classifier.h b/mediapipe/tasks/cc/vision/image_classifier/image_classifier.h index 9b0c376a..96050cbd 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/image_classifier.h +++ b/mediapipe/tasks/cc/vision/image_classifier/image_classifier.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/image_classifier_graph.cc b/mediapipe/tasks/cc/vision/image_classifier/image_classifier_graph.cc index 0adcf842..5e436358 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/image_classifier_graph.cc +++ b/mediapipe/tasks/cc/vision/image_classifier/image_classifier_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/image_classifier_test.cc b/mediapipe/tasks/cc/vision/image_classifier/image_classifier_test.cc index e8812d9f..88eeb9e4 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/image_classifier_test.cc +++ b/mediapipe/tasks/cc/vision/image_classifier/image_classifier_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/proto/BUILD b/mediapipe/tasks/cc/vision/image_classifier/proto/BUILD index 29638beb..e58efe2f 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/proto/BUILD +++ b/mediapipe/tasks/cc/vision/image_classifier/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_classifier/proto/image_classifier_graph_options.proto b/mediapipe/tasks/cc/vision/image_classifier/proto/image_classifier_graph_options.proto index 24b126a3..7a84040f 100644 --- a/mediapipe/tasks/cc/vision/image_classifier/proto/image_classifier_graph_options.proto +++ b/mediapipe/tasks/cc/vision/image_classifier/proto/image_classifier_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/BUILD b/mediapipe/tasks/cc/vision/image_embedder/BUILD index d729eaf1..7d22302a 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/BUILD +++ b/mediapipe/tasks/cc/vision/image_embedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/image_embedder.cc b/mediapipe/tasks/cc/vision/image_embedder/image_embedder.cc index 1425e97c..53d7c7c9 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/image_embedder.cc +++ b/mediapipe/tasks/cc/vision/image_embedder/image_embedder.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/image_embedder.h b/mediapipe/tasks/cc/vision/image_embedder/image_embedder.h index 9320cbc3..586b8cdc 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/image_embedder.h +++ b/mediapipe/tasks/cc/vision/image_embedder/image_embedder.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/image_embedder_graph.cc b/mediapipe/tasks/cc/vision/image_embedder/image_embedder_graph.cc index 95c4ff37..61d546c7 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/image_embedder_graph.cc +++ b/mediapipe/tasks/cc/vision/image_embedder/image_embedder_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/image_embedder_test.cc b/mediapipe/tasks/cc/vision/image_embedder/image_embedder_test.cc index 7a0e9e9d..6d994789 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/image_embedder_test.cc +++ b/mediapipe/tasks/cc/vision/image_embedder/image_embedder_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/proto/BUILD b/mediapipe/tasks/cc/vision/image_embedder/proto/BUILD index ecf8b024..29767501 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/proto/BUILD +++ b/mediapipe/tasks/cc/vision/image_embedder/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_embedder/proto/image_embedder_graph_options.proto b/mediapipe/tasks/cc/vision/image_embedder/proto/image_embedder_graph_options.proto index 24ee866f..5441aac4 100644 --- a/mediapipe/tasks/cc/vision/image_embedder/proto/image_embedder_graph_options.proto +++ b/mediapipe/tasks/cc/vision/image_embedder/proto/image_embedder_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/BUILD b/mediapipe/tasks/cc/vision/image_segmenter/BUILD index ee1cd369..183b1bb8 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/BUILD +++ b/mediapipe/tasks/cc/vision/image_segmenter/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/calculators/BUILD b/mediapipe/tasks/cc/vision/image_segmenter/calculators/BUILD index c621016d..1860d97d 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/calculators/BUILD +++ b/mediapipe/tasks/cc/vision/image_segmenter/calculators/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.cc b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.cc index e6d9ec8a..c2d1520d 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.cc +++ b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.proto b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.proto index dbaf34db..b728f504 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.proto +++ b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator_test.cc b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator_test.cc index d6a2f3fd..7b8fb9c9 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator_test.cc +++ b/mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.cc b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.cc index 33c868e0..a6784325 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.cc +++ b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.h b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.h index 352d6b27..0546cef3 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.h +++ b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_graph.cc b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_graph.cc index 840e7933..a52d3fa9 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_graph.cc +++ b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_result.h b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_result.h index f14ee7a9..1e7968eb 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_result.h +++ b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_result.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_test.cc b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_test.cc index 21f73e10..339ec142 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_test.cc +++ b/mediapipe/tasks/cc/vision/image_segmenter/image_segmenter_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/proto/BUILD b/mediapipe/tasks/cc/vision/image_segmenter/proto/BUILD index 9523dd67..54dc399d 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/proto/BUILD +++ b/mediapipe/tasks/cc/vision/image_segmenter/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/proto/image_segmenter_graph_options.proto b/mediapipe/tasks/cc/vision/image_segmenter/proto/image_segmenter_graph_options.proto index 5c7d2ec7..8866b395 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/proto/image_segmenter_graph_options.proto +++ b/mediapipe/tasks/cc/vision/image_segmenter/proto/image_segmenter_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/image_segmenter/proto/segmenter_options.proto b/mediapipe/tasks/cc/vision/image_segmenter/proto/segmenter_options.proto index b1ec529d..86b9b39a 100644 --- a/mediapipe/tasks/cc/vision/image_segmenter/proto/segmenter_options.proto +++ b/mediapipe/tasks/cc/vision/image_segmenter/proto/segmenter_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/interactive_segmenter/BUILD b/mediapipe/tasks/cc/vision/interactive_segmenter/BUILD index 8552383a..0a91b97e 100644 --- a/mediapipe/tasks/cc/vision/interactive_segmenter/BUILD +++ b/mediapipe/tasks/cc/vision/interactive_segmenter/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.cc b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.cc index b17b3b0d..af2a3f50 100644 --- a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.cc +++ b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.h b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.h index 350777f3..ad4a238d 100644 --- a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.h +++ b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_graph.cc b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_graph.cc index b907e215..a765997d 100644 --- a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_graph.cc +++ b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_test.cc b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_test.cc index c761678d..443247ae 100644 --- a/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_test.cc +++ b/mediapipe/tasks/cc/vision/interactive_segmenter/interactive_segmenter_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/object_detector/BUILD b/mediapipe/tasks/cc/vision/object_detector/BUILD index 0238449c..40d7ab50 100644 --- a/mediapipe/tasks/cc/vision/object_detector/BUILD +++ b/mediapipe/tasks/cc/vision/object_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -54,12 +54,7 @@ cc_library( name = "object_detector_graph", srcs = ["object_detector_graph.cc"], deps = [ - "//mediapipe/calculators/core:split_vector_calculator_cc_proto", "//mediapipe/calculators/tensor:inference_calculator", - "//mediapipe/calculators/tensor:tensors_to_detections_calculator", - "//mediapipe/calculators/tensor:tensors_to_detections_calculator_cc_proto", - "//mediapipe/calculators/util:detection_label_id_to_text_calculator", - "//mediapipe/calculators/util:detection_label_id_to_text_calculator_cc_proto", "//mediapipe/calculators/util:detection_projection_calculator", "//mediapipe/calculators/util:detection_transformation_calculator", "//mediapipe/calculators/util:detections_deduplicate_calculator", @@ -71,19 +66,15 @@ cc_library( "//mediapipe/framework/formats:rect_cc_proto", "//mediapipe/framework/formats:tensor", "//mediapipe/tasks/cc:common", - "//mediapipe/tasks/cc/components/calculators:score_calibration_calculator_cc_proto", - "//mediapipe/tasks/cc/components/calculators:score_calibration_utils", + "//mediapipe/tasks/cc/components/processors:detection_postprocessing_graph", "//mediapipe/tasks/cc/components/processors:image_preprocessing_graph", + "//mediapipe/tasks/cc/components/processors/proto:detection_postprocessing_graph_options_cc_proto", + "//mediapipe/tasks/cc/components/processors/proto:detector_options_cc_proto", "//mediapipe/tasks/cc/core:model_resources", "//mediapipe/tasks/cc/core:model_task_graph", - "//mediapipe/tasks/cc/core:utils", - "//mediapipe/tasks/cc/core/proto:acceleration_cc_proto", "//mediapipe/tasks/cc/core/proto:inference_subgraph_cc_proto", - "//mediapipe/tasks/cc/metadata:metadata_extractor", "//mediapipe/tasks/cc/vision/object_detector/proto:object_detector_options_cc_proto", "//mediapipe/tasks/metadata:metadata_schema_cc", - "//mediapipe/util:label_map_cc_proto", - "//mediapipe/util:label_map_util", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", ], diff --git a/mediapipe/tasks/cc/vision/object_detector/object_detector.cc b/mediapipe/tasks/cc/vision/object_detector/object_detector.cc index fe0651e1..01fd3eb7 100644 --- a/mediapipe/tasks/cc/vision/object_detector/object_detector.cc +++ b/mediapipe/tasks/cc/vision/object_detector/object_detector.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/object_detector/object_detector.h b/mediapipe/tasks/cc/vision/object_detector/object_detector.h index 6113ed10..de2c0dba 100644 --- a/mediapipe/tasks/cc/vision/object_detector/object_detector.h +++ b/mediapipe/tasks/cc/vision/object_detector/object_detector.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -99,7 +99,20 @@ struct ObjectDetectorOptions { // - only RGB inputs are supported (`channels` is required to be 3). // - if type is kTfLiteFloat32, NormalizationOptions are required to be // attached to the metadata for input normalization. -// Output tensors must be the 4 outputs of a `DetectionPostProcess` op, i.e: +// Output tensors could be 2 output tensors or 4 output tensors. +// The 2 output tensors must represent locations and scores, respectively. +// (kTfLiteFloat32) +// - locations tensor of size `[num_results x num_coords]`. The num_coords is +// the number of coordinates a location result represent. Usually in the +// form: [4 + 2 * keypoint_num], where 4 location values encode the bounding +// box (y_center, x_center, height, width) and the additional keypoints are in +// (y, x) order. +// (kTfLiteFloat32) +// - scores tensor of size `[num_results x num_classes]`. The values of a +// result represent the classification probability belonging to the class at +// the index, which is denoted in the label file of corresponding tensor +// metadata in the model file. +// The 4 output tensors must come from `DetectionPostProcess` op, i.e: // (kTfLiteFloat32) // - locations tensor of size `[num_results x 4]`, the inner array // representing bounding boxes in the form [top, left, right, bottom]. diff --git a/mediapipe/tasks/cc/vision/object_detector/object_detector_graph.cc b/mediapipe/tasks/cc/vision/object_detector/object_detector_graph.cc index e0eb32fd..e2b37497 100644 --- a/mediapipe/tasks/cc/vision/object_detector/object_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/object_detector/object_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,16 +13,10 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#include -#include -#include #include #include "absl/status/status.h" #include "absl/status/statusor.h" -#include "mediapipe/calculators/core/split_vector_calculator.pb.h" -#include "mediapipe/calculators/tensor/tensors_to_detections_calculator.pb.h" -#include "mediapipe/calculators/util/detection_label_id_to_text_calculator.pb.h" #include "mediapipe/framework/api2/builder.h" #include "mediapipe/framework/api2/port.h" #include "mediapipe/framework/calculator.pb.h" @@ -31,19 +25,15 @@ limitations under the License. #include "mediapipe/framework/formats/rect.pb.h" #include "mediapipe/framework/formats/tensor.h" #include "mediapipe/tasks/cc/common.h" -#include "mediapipe/tasks/cc/components/calculators/score_calibration_calculator.pb.h" -#include "mediapipe/tasks/cc/components/calculators/score_calibration_utils.h" +#include "mediapipe/tasks/cc/components/processors/detection_postprocessing_graph.h" #include "mediapipe/tasks/cc/components/processors/image_preprocessing_graph.h" +#include "mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options.pb.h" +#include "mediapipe/tasks/cc/components/processors/proto/detector_options.pb.h" #include "mediapipe/tasks/cc/core/model_resources.h" #include "mediapipe/tasks/cc/core/model_task_graph.h" -#include "mediapipe/tasks/cc/core/proto/acceleration.pb.h" #include "mediapipe/tasks/cc/core/proto/inference_subgraph.pb.h" -#include "mediapipe/tasks/cc/core/utils.h" -#include "mediapipe/tasks/cc/metadata/metadata_extractor.h" #include "mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options.pb.h" #include "mediapipe/tasks/metadata/metadata_schema_generated.h" -#include "mediapipe/util/label_map.pb.h" -#include "mediapipe/util/label_map_util.h" namespace mediapipe { namespace tasks { @@ -56,42 +46,18 @@ using ::mediapipe::api2::Input; using ::mediapipe::api2::Output; using ::mediapipe::api2::builder::Graph; using ::mediapipe::api2::builder::Source; -using ::mediapipe::tasks::metadata::ModelMetadataExtractor; -using ::tflite::BoundingBoxProperties; -using ::tflite::ContentProperties; -using ::tflite::ContentProperties_BoundingBoxProperties; -using ::tflite::EnumNameContentProperties; -using ::tflite::ProcessUnit; -using ::tflite::ProcessUnitOptions_ScoreThresholdingOptions; -using ::tflite::TensorMetadata; -using LabelItems = mediapipe::proto_ns::Map; using ObjectDetectorOptionsProto = object_detector::proto::ObjectDetectorOptions; using TensorsSource = mediapipe::api2::builder::Source>; -constexpr int kDefaultLocationsIndex = 0; -constexpr int kDefaultCategoriesIndex = 1; -constexpr int kDefaultScoresIndex = 2; -constexpr int kDefaultNumResultsIndex = 3; - -constexpr float kDefaultScoreThreshold = std::numeric_limits::lowest(); - -constexpr char kLocationTensorName[] = "location"; -constexpr char kCategoryTensorName[] = "category"; -constexpr char kScoreTensorName[] = "score"; -constexpr char kNumberOfDetectionsTensorName[] = "number of detections"; - -constexpr char kCalibratedScoresTag[] = "CALIBRATED_SCORES"; constexpr char kDetectionsTag[] = "DETECTIONS"; constexpr char kImageSizeTag[] = "IMAGE_SIZE"; constexpr char kImageTag[] = "IMAGE"; -constexpr char kIndicesTag[] = "INDICES"; constexpr char kMatrixTag[] = "MATRIX"; constexpr char kNormRectTag[] = "NORM_RECT"; constexpr char kPixelDetectionsTag[] = "PIXEL_DETECTIONS"; constexpr char kProjectionMatrixTag[] = "PROJECTION_MATRIX"; -constexpr char kScoresTag[] = "SCORES"; constexpr char kTensorTag[] = "TENSORS"; // Struct holding the different output streams produced by the object detection @@ -101,34 +67,6 @@ struct ObjectDetectionOutputStreams { Source image; }; -// Parameters used for configuring the post-processing calculators. -struct PostProcessingSpecs { - // The maximum number of detection results to return. - int max_results; - // Indices of the output tensors to match the output tensors to the correct - // index order of the output tensors: [location, categories, scores, - // num_detections]. - std::vector output_tensor_indices; - // For each pack of 4 coordinates returned by the model, this denotes the - // order in which to get the left, top, right and bottom coordinates. - std::vector bounding_box_corners_order; - // This is populated by reading the label files from the TFLite Model - // Metadata: if no such files are available, this is left empty and the - // ObjectDetector will only be able to populate the `index` field of the - // detection results. - LabelItems label_items; - // Score threshold. Detections with a confidence below this value are - // discarded. If none is provided via metadata or options, -FLT_MAX is set as - // default value. - float score_threshold; - // Set of category indices to be allowed/denied. - absl::flat_hash_set allow_or_deny_categories; - // Indicates `allow_or_deny_categories` is an allowlist or a denylist. - bool is_allowlist; - // Score calibration options, if any. - std::optional score_calibration_options; -}; - absl::Status SanityCheckOptions(const ObjectDetectorOptionsProto& options) { if (options.max_results() == 0) { return CreateStatusWithPayload( @@ -147,310 +85,6 @@ absl::Status SanityCheckOptions(const ObjectDetectorOptionsProto& options) { return absl::OkStatus(); } -absl::StatusOr GetBoundingBoxProperties( - const TensorMetadata& tensor_metadata) { - if (tensor_metadata.content() == nullptr || - tensor_metadata.content()->content_properties() == nullptr) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat( - "Expected BoundingBoxProperties for tensor %s, found none.", - tensor_metadata.name() ? tensor_metadata.name()->str() : "#0"), - MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); - } - - ContentProperties type = tensor_metadata.content()->content_properties_type(); - if (type != ContentProperties_BoundingBoxProperties) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat( - "Expected BoundingBoxProperties for tensor %s, found %s.", - tensor_metadata.name() ? tensor_metadata.name()->str() : "#0", - EnumNameContentProperties(type)), - MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); - } - - const BoundingBoxProperties* properties = - tensor_metadata.content()->content_properties_as_BoundingBoxProperties(); - - // Mobile SSD only supports "BOUNDARIES" bounding box type. - if (properties->type() != tflite::BoundingBoxType_BOUNDARIES) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat( - "Mobile SSD only supports BoundingBoxType BOUNDARIES, found %s", - tflite::EnumNameBoundingBoxType(properties->type())), - MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); - } - - // Mobile SSD only supports "RATIO" coordinates type. - if (properties->coordinate_type() != tflite::CoordinateType_RATIO) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat( - "Mobile SSD only supports CoordinateType RATIO, found %s", - tflite::EnumNameCoordinateType(properties->coordinate_type())), - MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); - } - - // Index is optional, but must contain 4 values if present. - if (properties->index() != nullptr && properties->index()->size() != 4) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat( - "Expected BoundingBoxProperties index to contain 4 values, found " - "%d", - properties->index()->size()), - MediaPipeTasksStatus::kMetadataInvalidContentPropertiesError); - } - - return properties; -} - -absl::StatusOr GetLabelItemsIfAny( - const ModelMetadataExtractor& metadata_extractor, - const TensorMetadata& tensor_metadata, absl::string_view locale) { - const std::string labels_filename = - ModelMetadataExtractor::FindFirstAssociatedFileName( - tensor_metadata, tflite::AssociatedFileType_TENSOR_VALUE_LABELS); - if (labels_filename.empty()) { - LabelItems empty_label_items; - return empty_label_items; - } - ASSIGN_OR_RETURN(absl::string_view labels_file, - metadata_extractor.GetAssociatedFile(labels_filename)); - const std::string display_names_filename = - ModelMetadataExtractor::FindFirstAssociatedFileName( - tensor_metadata, tflite::AssociatedFileType_TENSOR_VALUE_LABELS, - locale); - absl::string_view display_names_file; - if (!display_names_filename.empty()) { - ASSIGN_OR_RETURN(display_names_file, metadata_extractor.GetAssociatedFile( - display_names_filename)); - } - return mediapipe::BuildLabelMapFromFiles(labels_file, display_names_file); -} - -absl::StatusOr GetScoreThreshold( - const ModelMetadataExtractor& metadata_extractor, - const TensorMetadata& tensor_metadata) { - ASSIGN_OR_RETURN( - const ProcessUnit* score_thresholding_process_unit, - metadata_extractor.FindFirstProcessUnit( - tensor_metadata, ProcessUnitOptions_ScoreThresholdingOptions)); - if (score_thresholding_process_unit == nullptr) { - return kDefaultScoreThreshold; - } - return score_thresholding_process_unit->options_as_ScoreThresholdingOptions() - ->global_score_threshold(); -} - -absl::StatusOr> GetAllowOrDenyCategoryIndicesIfAny( - const ObjectDetectorOptionsProto& config, const LabelItems& label_items) { - absl::flat_hash_set category_indices; - // Exit early if no denylist/allowlist. - if (config.category_denylist_size() == 0 && - config.category_allowlist_size() == 0) { - return category_indices; - } - if (label_items.empty()) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - "Using `category_allowlist` or `category_denylist` requires " - "labels to be present in the TFLite Model Metadata but none was found.", - MediaPipeTasksStatus::kMetadataMissingLabelsError); - } - const auto& category_list = config.category_allowlist_size() > 0 - ? config.category_allowlist() - : config.category_denylist(); - for (const auto& category_name : category_list) { - int index = -1; - for (int i = 0; i < label_items.size(); ++i) { - if (label_items.at(i).name() == category_name) { - index = i; - break; - } - } - // Ignores duplicate or unknown categories. - if (index < 0) { - continue; - } - category_indices.insert(index); - } - return category_indices; -} - -absl::StatusOr> -GetScoreCalibrationOptionsIfAny( - const ModelMetadataExtractor& metadata_extractor, - const TensorMetadata& tensor_metadata) { - // Get ScoreCalibrationOptions, if any. - ASSIGN_OR_RETURN( - const ProcessUnit* score_calibration_process_unit, - metadata_extractor.FindFirstProcessUnit( - tensor_metadata, tflite::ProcessUnitOptions_ScoreCalibrationOptions)); - if (score_calibration_process_unit == nullptr) { - return std::nullopt; - } - auto* score_calibration_options = - score_calibration_process_unit->options_as_ScoreCalibrationOptions(); - // Get corresponding AssociatedFile. - auto score_calibration_filename = - metadata_extractor.FindFirstAssociatedFileName( - tensor_metadata, - tflite::AssociatedFileType_TENSOR_AXIS_SCORE_CALIBRATION); - if (score_calibration_filename.empty()) { - return CreateStatusWithPayload( - absl::StatusCode::kNotFound, - "Found ScoreCalibrationOptions but missing required associated " - "parameters file with type TENSOR_AXIS_SCORE_CALIBRATION.", - MediaPipeTasksStatus::kMetadataAssociatedFileNotFoundError); - } - ASSIGN_OR_RETURN( - absl::string_view score_calibration_file, - metadata_extractor.GetAssociatedFile(score_calibration_filename)); - ScoreCalibrationCalculatorOptions score_calibration_calculator_options; - MP_RETURN_IF_ERROR(ConfigureScoreCalibration( - score_calibration_options->score_transformation(), - score_calibration_options->default_score(), score_calibration_file, - &score_calibration_calculator_options)); - return score_calibration_calculator_options; -} - -std::vector GetOutputTensorIndices( - const flatbuffers::Vector>* - tensor_metadatas) { - std::vector output_indices = { - core::FindTensorIndexByMetadataName(tensor_metadatas, - kLocationTensorName), - core::FindTensorIndexByMetadataName(tensor_metadatas, - kCategoryTensorName), - core::FindTensorIndexByMetadataName(tensor_metadatas, kScoreTensorName), - core::FindTensorIndexByMetadataName(tensor_metadatas, - kNumberOfDetectionsTensorName)}; - // locations, categories, scores, and number of detections - for (int i = 0; i < 4; i++) { - int output_index = output_indices[i]; - // If tensor name is not found, set the default output indices. - if (output_index == -1) { - LOG(WARNING) << absl::StrFormat( - "You don't seem to be matching tensor names in metadata list. The " - "tensor name \"%s\" at index %d in the model metadata doesn't " - "match " - "the available output names: [\"%s\", \"%s\", \"%s\", \"%s\"].", - tensor_metadatas->Get(i)->name()->c_str(), i, kLocationTensorName, - kCategoryTensorName, kScoreTensorName, kNumberOfDetectionsTensorName); - output_indices = {kDefaultLocationsIndex, kDefaultCategoriesIndex, - kDefaultScoresIndex, kDefaultNumResultsIndex}; - return output_indices; - } - } - return output_indices; -} - -// Builds PostProcessingSpecs from ObjectDetectorOptionsProto and model metadata -// for configuring the post-processing calculators. -absl::StatusOr BuildPostProcessingSpecs( - const ObjectDetectorOptionsProto& options, - const ModelMetadataExtractor* metadata_extractor) { - // Checks output tensor metadata is present and consistent with model. - auto* output_tensors_metadata = metadata_extractor->GetOutputTensorMetadata(); - if (output_tensors_metadata == nullptr || - output_tensors_metadata->size() != 4) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat("Mismatch between number of output tensors (4) and " - "output tensors metadata (%d).", - output_tensors_metadata == nullptr - ? 0 - : output_tensors_metadata->size()), - MediaPipeTasksStatus::kMetadataInconsistencyError); - } - PostProcessingSpecs specs; - specs.max_results = options.max_results(); - specs.output_tensor_indices = GetOutputTensorIndices(output_tensors_metadata); - // Extracts mandatory BoundingBoxProperties and performs sanity checks on the - // fly. - ASSIGN_OR_RETURN(const BoundingBoxProperties* bounding_box_properties, - GetBoundingBoxProperties(*output_tensors_metadata->Get( - specs.output_tensor_indices[0]))); - if (bounding_box_properties->index() == nullptr) { - specs.bounding_box_corners_order = {0, 1, 2, 3}; - } else { - auto bounding_box_index = bounding_box_properties->index(); - specs.bounding_box_corners_order = { - bounding_box_index->Get(0), - bounding_box_index->Get(1), - bounding_box_index->Get(2), - bounding_box_index->Get(3), - }; - } - // Builds label map (if available) from metadata. - ASSIGN_OR_RETURN(specs.label_items, - GetLabelItemsIfAny(*metadata_extractor, - *output_tensors_metadata->Get( - specs.output_tensor_indices[1]), - options.display_names_locale())); - // Obtains allow/deny categories. - specs.is_allowlist = !options.category_allowlist().empty(); - ASSIGN_OR_RETURN( - specs.allow_or_deny_categories, - GetAllowOrDenyCategoryIndicesIfAny(options, specs.label_items)); - // Sets score threshold. - if (options.has_score_threshold()) { - specs.score_threshold = options.score_threshold(); - } else { - ASSIGN_OR_RETURN(specs.score_threshold, - GetScoreThreshold(*metadata_extractor, - *output_tensors_metadata->Get( - specs.output_tensor_indices[2]))); - } - // Builds score calibration options (if available) from metadata. - ASSIGN_OR_RETURN( - specs.score_calibration_options, - GetScoreCalibrationOptionsIfAny( - *metadata_extractor, - *output_tensors_metadata->Get(specs.output_tensor_indices[2]))); - return specs; -} - -// Fills in the TensorsToDetectionsCalculatorOptions based on -// PostProcessingSpecs. -void ConfigureTensorsToDetectionsCalculator( - const PostProcessingSpecs& specs, - mediapipe::TensorsToDetectionsCalculatorOptions* options) { - options->set_num_classes(specs.label_items.size()); - options->set_num_coords(4); - options->set_min_score_thresh(specs.score_threshold); - if (specs.max_results != -1) { - options->set_max_results(specs.max_results); - } - if (specs.is_allowlist) { - options->mutable_allow_classes()->Assign( - specs.allow_or_deny_categories.begin(), - specs.allow_or_deny_categories.end()); - } else { - options->mutable_ignore_classes()->Assign( - specs.allow_or_deny_categories.begin(), - specs.allow_or_deny_categories.end()); - } - - const auto& output_indices = specs.output_tensor_indices; - // Assigns indices to each the model output tensor. - auto* tensor_mapping = options->mutable_tensor_mapping(); - tensor_mapping->set_detections_tensor_index(output_indices[0]); - tensor_mapping->set_classes_tensor_index(output_indices[1]); - tensor_mapping->set_scores_tensor_index(output_indices[2]); - tensor_mapping->set_num_detections_tensor_index(output_indices[3]); - - // Assigns the bounding box corner order. - auto box_boundaries_indices = options->mutable_box_boundaries_indices(); - box_boundaries_indices->set_xmin(specs.bounding_box_corners_order[0]); - box_boundaries_indices->set_ymin(specs.bounding_box_corners_order[1]); - box_boundaries_indices->set_xmax(specs.bounding_box_corners_order[2]); - box_boundaries_indices->set_ymax(specs.bounding_box_corners_order[3]); -} - } // namespace // A "mediapipe.tasks.vision.ObjectDetectorGraph" performs object detection. @@ -530,7 +164,6 @@ class ObjectDetectorGraph : public core::ModelTaskGraph { const core::ModelResources& model_resources, Source image_in, Source norm_rect_in, Graph& graph) { MP_RETURN_IF_ERROR(SanityCheckOptions(task_options)); - // Checks that the model has 4 outputs. auto& model = *model_resources.GetTfLiteModel(); if (model.subgraphs()->size() != 1) { return CreateStatusWithPayload( @@ -539,13 +172,6 @@ class ObjectDetectorGraph : public core::ModelTaskGraph { model.subgraphs()->size()), MediaPipeTasksStatus::kInvalidArgumentError); } - if (model.subgraphs()->Get(0)->outputs()->size() != 4) { - return CreateStatusWithPayload( - absl::StatusCode::kInvalidArgument, - absl::StrFormat("Expected a model with 4 output tensors, found %d.", - model.subgraphs()->Get(0)->outputs()->size()), - MediaPipeTasksStatus::kInvalidArgumentError); - } // Checks that metadata is available. auto* metadata_extractor = model_resources.GetMetadataExtractor(); if (metadata_extractor->GetModelMetadata() == nullptr || @@ -577,70 +203,36 @@ class ObjectDetectorGraph : public core::ModelTaskGraph { auto& inference = AddInference( model_resources, task_options.base_options().acceleration(), graph); preprocessing.Out(kTensorTag) >> inference.In(kTensorTag); - - // Adds post processing calculators. - ASSIGN_OR_RETURN( - auto post_processing_specs, - BuildPostProcessingSpecs(task_options, metadata_extractor)); - // Calculators to perform score calibration, if specified in the metadata. - TensorsSource calibrated_tensors = + TensorsSource model_output_tensors = inference.Out(kTensorTag).Cast>(); - if (post_processing_specs.score_calibration_options.has_value()) { - // Split tensors. - auto* split_tensor_vector_node = - &graph.AddNode("SplitTensorVectorCalculator"); - auto& split_tensor_vector_options = - split_tensor_vector_node - ->GetOptions(); - for (int i = 0; i < 4; ++i) { - auto* range = split_tensor_vector_options.add_ranges(); - range->set_begin(i); - range->set_end(i + 1); - } - calibrated_tensors >> split_tensor_vector_node->In(0); - // Add score calibration calculator. - auto* score_calibration_node = - &graph.AddNode("ScoreCalibrationCalculator"); - score_calibration_node->GetOptions() - .CopyFrom(*post_processing_specs.score_calibration_options); - split_tensor_vector_node->Out( - post_processing_specs.output_tensor_indices[1]) >> - score_calibration_node->In(kIndicesTag); - split_tensor_vector_node->Out( - post_processing_specs.output_tensor_indices[2]) >> - score_calibration_node->In(kScoresTag); - - // Re-concatenate tensors. - auto* concatenate_tensor_vector_node = - &graph.AddNode("ConcatenateTensorVectorCalculator"); - for (int i = 0; i < 4; ++i) { - if (i == post_processing_specs.output_tensor_indices[2]) { - score_calibration_node->Out(kCalibratedScoresTag) >> - concatenate_tensor_vector_node->In(i); - } else { - split_tensor_vector_node->Out(i) >> - concatenate_tensor_vector_node->In(i); - } - } - calibrated_tensors = - concatenate_tensor_vector_node->Out(0).Cast>(); - } - // Calculator to convert output tensors to a detection proto vector. - // Connects TensorsToDetectionsCalculator's input stream to the output - // tensors produced by the inference subgraph. - auto& tensors_to_detections = - graph.AddNode("TensorsToDetectionsCalculator"); - ConfigureTensorsToDetectionsCalculator( - post_processing_specs, - &tensors_to_detections - .GetOptions()); - calibrated_tensors >> tensors_to_detections.In(kTensorTag); + // Add Detection postprocessing graph to convert tensors to detections. + auto& postprocessing = graph.AddNode( + "mediapipe.tasks.components.processors.DetectionPostprocessingGraph"); + components::processors::proto::DetectorOptions detector_options; + detector_options.set_max_results(task_options.max_results()); + detector_options.set_score_threshold(task_options.score_threshold()); + detector_options.set_display_names_locale( + task_options.display_names_locale()); + detector_options.mutable_category_allowlist()->CopyFrom( + task_options.category_allowlist()); + detector_options.mutable_category_denylist()->CopyFrom( + task_options.category_denylist()); + // TODO: expose min suppression threshold in + // ObjectDetectorOptions. + detector_options.set_min_suppression_threshold(0.3); + MP_RETURN_IF_ERROR( + components::processors::ConfigureDetectionPostprocessingGraph( + model_resources, detector_options, + postprocessing + .GetOptions())); + model_output_tensors >> postprocessing.In(kTensorTag); + auto detections = postprocessing.Out(kDetectionsTag); // Calculator to projects detections back to the original coordinate system. auto& detection_projection = graph.AddNode("DetectionProjectionCalculator"); - tensors_to_detections.Out(kDetectionsTag) >> - detection_projection.In(kDetectionsTag); + detections >> detection_projection.In(kDetectionsTag); preprocessing.Out(kMatrixTag) >> detection_projection.In(kProjectionMatrixTag); @@ -652,22 +244,13 @@ class ObjectDetectorGraph : public core::ModelTaskGraph { detection_transformation.In(kDetectionsTag); preprocessing.Out(kImageSizeTag) >> detection_transformation.In(kImageSizeTag); - - // Calculator to assign detection labels. - auto& detection_label_id_to_text = - graph.AddNode("DetectionLabelIdToTextCalculator"); - auto& detection_label_id_to_text_opts = - detection_label_id_to_text - .GetOptions(); - *detection_label_id_to_text_opts.mutable_label_items() = - std::move(post_processing_specs.label_items); - detection_transformation.Out(kPixelDetectionsTag) >> - detection_label_id_to_text.In(""); + auto detections_in_pixel = + detection_transformation.Out(kPixelDetectionsTag); // Deduplicate Detections with same bounding box coordinates. auto& detections_deduplicate = graph.AddNode("DetectionsDeduplicateCalculator"); - detection_label_id_to_text.Out("") >> detections_deduplicate.In(""); + detections_in_pixel >> detections_deduplicate.In(""); // Outputs the labeled detections and the processed image as the subgraph // output streams. diff --git a/mediapipe/tasks/cc/vision/object_detector/object_detector_test.cc b/mediapipe/tasks/cc/vision/object_detector/object_detector_test.cc index c992cf67..8642af7c 100644 --- a/mediapipe/tasks/cc/vision/object_detector/object_detector_test.cc +++ b/mediapipe/tasks/cc/vision/object_detector/object_detector_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -76,15 +76,18 @@ using ::testing::HasSubstr; using ::testing::Optional; using DetectionProto = mediapipe::Detection; -constexpr char kTestDataDirectory[] = "/mediapipe/tasks/testdata/vision/"; -constexpr char kMobileSsdWithMetadata[] = - "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.tflite"; -constexpr char kMobileSsdWithDummyScoreCalibration[] = +constexpr absl::string_view kTestDataDirectory{ + "/mediapipe/tasks/testdata/vision/"}; +constexpr absl::string_view kMobileSsdWithMetadata{ + "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.tflite"}; +constexpr absl::string_view kMobileSsdWithDummyScoreCalibration{ "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29_with_dummy_score_calibration." - "tflite"; + "tflite"}; // The model has different output tensor order. -constexpr char kEfficientDetWithMetadata[] = - "coco_efficientdet_lite0_v1_1.0_quant_2021_09_06.tflite"; +constexpr absl::string_view kEfficientDetWithMetadata{ + "coco_efficientdet_lite0_v1_1.0_quant_2021_09_06.tflite"}; +constexpr absl::string_view kEfficientDetWithoutNms{ + "efficientdet_lite0_fp16_no_nms.tflite"}; // Checks that the two provided `Detection` proto vectors are equal, with a // tolerancy on floating-point scores to account for numerical instabilities. @@ -451,6 +454,51 @@ TEST_F(ImageModeTest, SucceedsEfficientDetModel) { })pb")})); } +TEST_F(ImageModeTest, SucceedsEfficientDetNoNmsModel) { + MP_ASSERT_OK_AND_ASSIGN(Image image, + DecodeImageFromFile(JoinPath("./", kTestDataDirectory, + "cats_and_dogs.jpg"))); + auto options = std::make_unique(); + options->max_results = 4; + options->base_options.model_asset_path = + JoinPath("./", kTestDataDirectory, kEfficientDetWithoutNms); + MP_ASSERT_OK_AND_ASSIGN(std::unique_ptr object_detector, + ObjectDetector::Create(std::move(options))); + MP_ASSERT_OK_AND_ASSIGN(auto results, object_detector->Detect(image)); + MP_ASSERT_OK(object_detector->Close()); + ExpectApproximatelyEqual( + results, + ConvertToDetectionResult( + {ParseTextProtoOrDie(R"pb( + label: "dog" + score: 0.733542 + location_data { + format: BOUNDING_BOX + bounding_box { xmin: 636 ymin: 160 width: 282 height: 451 } + })pb"), + ParseTextProtoOrDie(R"pb( + label: "cat" + score: 0.699751 + location_data { + format: BOUNDING_BOX + bounding_box { xmin: 870 ymin: 411 width: 208 height: 187 } + })pb"), + ParseTextProtoOrDie(R"pb( + label: "dog" + score: 0.682425 + location_data { + format: BOUNDING_BOX + bounding_box { xmin: 386 ymin: 216 width: 256 height: 376 } + })pb"), + ParseTextProtoOrDie(R"pb( + label: "cat" + score: 0.646585 + location_data { + format: BOUNDING_BOX + bounding_box { xmin: 83 ymin: 399 width: 347 height: 198 } + })pb")})); +} + TEST_F(ImageModeTest, SucceedsWithoutImageResizing) { MP_ASSERT_OK_AND_ASSIGN(Image image, DecodeImageFromFile(JoinPath( "./", kTestDataDirectory, diff --git a/mediapipe/tasks/cc/vision/object_detector/proto/BUILD b/mediapipe/tasks/cc/vision/object_detector/proto/BUILD index edcaff52..863d69df 100644 --- a/mediapipe/tasks/cc/vision/object_detector/proto/BUILD +++ b/mediapipe/tasks/cc/vision/object_detector/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options.proto b/mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options.proto index 3f6932f8..471d8d52 100644 --- a/mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options.proto +++ b/mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_detector/BUILD b/mediapipe/tasks/cc/vision/pose_detector/BUILD index 1fc4b5ba..4f9bc594 100644 --- a/mediapipe/tasks/cc/vision/pose_detector/BUILD +++ b/mediapipe/tasks/cc/vision/pose_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph.cc b/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph.cc index 32c125ce..f1554f8d 100644 --- a/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph_test.cc b/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph_test.cc index 800c0584..71113110 100644 --- a/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/pose_detector/pose_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_detector/proto/BUILD b/mediapipe/tasks/cc/vision/pose_detector/proto/BUILD index 287ed018..53e7d5a5 100644 --- a/mediapipe/tasks/cc/vision/pose_detector/proto/BUILD +++ b/mediapipe/tasks/cc/vision/pose_detector/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_detector/proto/pose_detector_graph_options.proto b/mediapipe/tasks/cc/vision/pose_detector/proto/pose_detector_graph_options.proto index 693f9526..531bcc7e 100644 --- a/mediapipe/tasks/cc/vision/pose_detector/proto/pose_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/pose_detector/proto/pose_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/BUILD b/mediapipe/tasks/cc/vision/pose_landmarker/BUILD index 19f54625..f97857dd 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/BUILD +++ b/mediapipe/tasks/cc/vision/pose_landmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.cc index 01c86c12..f421c737 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.h b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.h index 058ab0b1..314356aa 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.h +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph.cc index 456a6efd..826de5ec 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph_test.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph_test.cc index 6a4cc93b..6f7488a5 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph_test.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ limitations under the License. ==============================================================================*/ #include +#include #include "absl/flags/flag.h" #include "absl/status/statusor.h" @@ -24,12 +25,15 @@ limitations under the License. #include "mediapipe/framework/calculator_framework.h" #include "mediapipe/framework/deps/file_path.h" #include "mediapipe/framework/formats/image.h" +#include "mediapipe/framework/formats/image_format.pb.h" +#include "mediapipe/framework/formats/image_frame.h" #include "mediapipe/framework/formats/landmark.pb.h" #include "mediapipe/framework/formats/rect.pb.h" #include "mediapipe/framework/packet.h" #include "mediapipe/framework/port/file_helpers.h" #include "mediapipe/framework/port/gmock.h" #include "mediapipe/framework/port/gtest.h" +#include "mediapipe/framework/tool/test_util.h" #include "mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h" #include "mediapipe/tasks/cc/core/proto/base_options.pb.h" #include "mediapipe/tasks/cc/core/proto/external_file.pb.h" @@ -76,8 +80,11 @@ constexpr char kNormRectTag[] = "NORM_RECT"; constexpr char kNormRectName[] = "norm_rect"; constexpr char kNormLandmarksTag[] = "NORM_LANDMARKS"; constexpr char kNormLandmarksName[] = "norm_landmarks"; +constexpr char kSegmentationMaskTag[] = "SEGMENTATION_MASK"; +constexpr char kSegmentationMaskName[] = "segmentation_mask"; constexpr float kLiteModelFractionDiff = 0.05; // percentage +constexpr float kGoldenMaskSimilarity = 1.0; template ProtoT GetExpectedProto(absl::string_view filename) { @@ -125,6 +132,9 @@ absl::StatusOr> CreatePoseLandmarkerGraphTaskRunner( pose_landmarker.Out(kNormLandmarksTag).SetName(kNormLandmarksName) >> graph[Output>(kNormLandmarksTag)]; + pose_landmarker.Out(kSegmentationMaskTag).SetName(kSegmentationMaskName) >> + graph[Output>(kSegmentationMaskTag)]; + return TaskRunner::Create( graph.GetConfig(), absl::make_unique()); @@ -145,6 +155,21 @@ NormalizedRect MakeNormRect(float x_center, float y_center, float width, class PoseLandmarkerGraphTest : public testing::TestWithParam {}; +// Convert pixels from float range [0,1] to uint8 range [0,255]. +ImageFrame CreateUint8ImageFrame(const Image& image) { + auto* image_frame_ptr = image.GetImageFrameSharedPtr().get(); + ImageFrame output_image_frame(ImageFormat::GRAY8, image_frame_ptr->Width(), + image_frame_ptr->Height(), 1); + float* pixelData = + reinterpret_cast(image_frame_ptr->MutablePixelData()); + uint8_t* uint8PixelData = output_image_frame.MutablePixelData(); + const int total_pixels = image_frame_ptr->Width() * image_frame_ptr->Height(); + for (int i = 0; i < total_pixels; ++i) { + uint8PixelData[i] = static_cast(pixelData[i] * 255.0f); + } + return output_image_frame; +} + TEST_P(PoseLandmarkerGraphTest, Succeeds) { MP_ASSERT_OK_AND_ASSIGN( Image image, DecodeImageFromFile(JoinPath("./", kTestDataDirectory, @@ -167,6 +192,53 @@ TEST_P(PoseLandmarkerGraphTest, Succeeds) { GetParam().landmarks_diff_threshold), *GetParam().expected_landmarks_list)); } + + const std::vector& segmentation_masks = + (*output_packets)[kSegmentationMaskName].Get>(); + + EXPECT_EQ(segmentation_masks.size(), 1); + + const Image& segmentation_mask = segmentation_masks[0]; + const ImageFrame segmentation_mask_image_frame = + CreateUint8ImageFrame(segmentation_mask); + + auto expected_image_frame = LoadTestPng( + JoinPath("./", kTestDataDirectory, "pose_segmentation_mask_golden.png"), + ImageFormat::GRAY8); + + ASSERT_EQ(segmentation_mask_image_frame.Width(), + expected_image_frame->Width()); + ASSERT_EQ(segmentation_mask_image_frame.Height(), + expected_image_frame->Height()); + ASSERT_EQ(segmentation_mask_image_frame.Format(), + expected_image_frame->Format()); + ASSERT_EQ(segmentation_mask_image_frame.NumberOfChannels(), + expected_image_frame->NumberOfChannels()); + ASSERT_EQ(segmentation_mask_image_frame.ByteDepth(), + expected_image_frame->ByteDepth()); + ASSERT_EQ(segmentation_mask_image_frame.NumberOfChannels(), 1); + ASSERT_EQ(segmentation_mask_image_frame.ByteDepth(), 1); + int consistent_pixels = 0; + int num_pixels = segmentation_mask_image_frame.Width() * + segmentation_mask_image_frame.Height(); + for (int i = 0; i < segmentation_mask_image_frame.Height(); ++i) { + for (int j = 0; j < segmentation_mask_image_frame.Width(); ++j) { + consistent_pixels += + (segmentation_mask_image_frame + .PixelData()[segmentation_mask_image_frame.WidthStep() * i + + j] == + expected_image_frame + ->PixelData()[expected_image_frame->WidthStep() * i + j]); + } + } + + EXPECT_GE(static_cast(consistent_pixels) / num_pixels, + kGoldenMaskSimilarity); + + // For visual comparison of segmentation mask output. + MP_ASSERT_OK_AND_ASSIGN(auto output_path, + SavePngTestOutput(segmentation_mask_image_frame, + "segmentation_mask_output")); } INSTANTIATE_TEST_SUITE_P( diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.cc index 6222bbd6..77f374d1 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.h b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.h index 07adb87f..f4599483 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.h +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result.h @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result_test.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result_test.cc index 10e0d61a..14916215 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result_test.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_result_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_test.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_test.cc index 87bc9727..afc58b1d 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_test.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarker_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph.cc index f8488db0..e8397192 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph_test.cc b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph_test.cc index d5108dec..08842b21 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph_test.cc +++ b/mediapipe/tasks/cc/vision/pose_landmarker/pose_landmarks_detector_graph_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/proto/BUILD b/mediapipe/tasks/cc/vision/pose_landmarker/proto/BUILD index a2ad7b0b..869a1ea6 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/proto/BUILD +++ b/mediapipe/tasks/cc/vision/pose_landmarker/proto/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options.proto b/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options.proto index bde314ba..d1139566 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options.proto +++ b/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options.proto b/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options.proto index 3b88491b..9eb835d6 100644 --- a/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options.proto +++ b/mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options.proto @@ -1,4 +1,4 @@ -/* Copyright 2023 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2023 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/BUILD b/mediapipe/tasks/cc/vision/utils/BUILD index 7e5a4dc8..ae303441 100644 --- a/mediapipe/tasks/cc/vision/utils/BUILD +++ b/mediapipe/tasks/cc/vision/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/image_tensor_specs.cc b/mediapipe/tasks/cc/vision/utils/image_tensor_specs.cc index 3f0425a6..1041dd1f 100644 --- a/mediapipe/tasks/cc/vision/utils/image_tensor_specs.cc +++ b/mediapipe/tasks/cc/vision/utils/image_tensor_specs.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/image_tensor_specs.h b/mediapipe/tasks/cc/vision/utils/image_tensor_specs.h index f1ad2a80..d60b8a1d 100644 --- a/mediapipe/tasks/cc/vision/utils/image_tensor_specs.h +++ b/mediapipe/tasks/cc/vision/utils/image_tensor_specs.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/image_tensor_specs_test.cc b/mediapipe/tasks/cc/vision/utils/image_tensor_specs_test.cc index 8c7b7d59..7293d58b 100644 --- a/mediapipe/tasks/cc/vision/utils/image_tensor_specs_test.cc +++ b/mediapipe/tasks/cc/vision/utils/image_tensor_specs_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/image_utils.cc b/mediapipe/tasks/cc/vision/utils/image_utils.cc index 4dc169f1..596d4da2 100644 --- a/mediapipe/tasks/cc/vision/utils/image_utils.cc +++ b/mediapipe/tasks/cc/vision/utils/image_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/image_utils.h b/mediapipe/tasks/cc/vision/utils/image_utils.h index 23833de2..9d67125d 100644 --- a/mediapipe/tasks/cc/vision/utils/image_utils.h +++ b/mediapipe/tasks/cc/vision/utils/image_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/landmarks_duplicates_finder.h b/mediapipe/tasks/cc/vision/utils/landmarks_duplicates_finder.h index e1632e6f..ac5627e6 100644 --- a/mediapipe/tasks/cc/vision/utils/landmarks_duplicates_finder.h +++ b/mediapipe/tasks/cc/vision/utils/landmarks_duplicates_finder.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/landmarks_utils.cc b/mediapipe/tasks/cc/vision/utils/landmarks_utils.cc index fe4e6382..6db04615 100644 --- a/mediapipe/tasks/cc/vision/utils/landmarks_utils.cc +++ b/mediapipe/tasks/cc/vision/utils/landmarks_utils.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/landmarks_utils.h b/mediapipe/tasks/cc/vision/utils/landmarks_utils.h index 4d1fac62..59bc5277 100644 --- a/mediapipe/tasks/cc/vision/utils/landmarks_utils.h +++ b/mediapipe/tasks/cc/vision/utils/landmarks_utils.h @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/cc/vision/utils/landmarks_utils_test.cc b/mediapipe/tasks/cc/vision/utils/landmarks_utils_test.cc index c30a5225..55aef554 100644 --- a/mediapipe/tasks/cc/vision/utils/landmarks_utils_test.cc +++ b/mediapipe/tasks/cc/vision/utils/landmarks_utils_test.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/examples/android/BUILD b/mediapipe/tasks/examples/android/BUILD index c07af2d2..f2c90236 100644 --- a/mediapipe/tasks/examples/android/BUILD +++ b/mediapipe/tasks/examples/android/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/examples/android/objectdetector/src/main/BUILD b/mediapipe/tasks/examples/android/objectdetector/src/main/BUILD index 89c1edcb..28bd38f9 100644 --- a/mediapipe/tasks/examples/android/objectdetector/src/main/BUILD +++ b/mediapipe/tasks/examples/android/objectdetector/src/main/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/MainActivity.java b/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/MainActivity.java index 18c010a0..abfd7c7d 100644 --- a/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/MainActivity.java +++ b/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/MainActivity.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/ObjectDetectionResultImageView.java b/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/ObjectDetectionResultImageView.java index 283e4885..e37c6415 100644 --- a/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/ObjectDetectionResultImageView.java +++ b/mediapipe/tasks/examples/android/objectdetector/src/main/java/com/google/mediapipe/tasks/examples/objectdetector/ObjectDetectionResultImageView.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/BUILD b/mediapipe/tasks/ios/common/BUILD index 5f13f8d5..84f537f0 100644 --- a/mediapipe/tasks/ios/common/BUILD +++ b/mediapipe/tasks/ios/common/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/sources/MPPCommon.h b/mediapipe/tasks/ios/common/sources/MPPCommon.h index d76123fa..d543e2dd 100644 --- a/mediapipe/tasks/ios/common/sources/MPPCommon.h +++ b/mediapipe/tasks/ios/common/sources/MPPCommon.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/utils/BUILD b/mediapipe/tasks/ios/common/utils/BUILD index da093a77..015cb05d 100644 --- a/mediapipe/tasks/ios/common/utils/BUILD +++ b/mediapipe/tasks/ios/common/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h b/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h index 36d90f22..761ad046 100644 --- a/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h +++ b/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.mm b/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.mm index 65b551c3..9a2aab6a 100644 --- a/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.mm +++ b/mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.mm @@ -1,4 +1,4 @@ -// Copyright 2022 The TensorFlow Authors. All Rights Reserved. +// Copyright 2022 The TensorFlow Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.h b/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.h index 66f9c5cc..8433baaa 100644 --- a/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.h +++ b/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.mm b/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.mm index 183ed436..b7d486e8 100644 --- a/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.mm +++ b/mediapipe/tasks/ios/common/utils/sources/NSString+Helpers.mm @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/containers/BUILD b/mediapipe/tasks/ios/components/containers/BUILD index 8873847a..9ad5c22f 100644 --- a/mediapipe/tasks/ios/components/containers/BUILD +++ b/mediapipe/tasks/ios/components/containers/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/containers/utils/BUILD b/mediapipe/tasks/ios/components/containers/utils/BUILD index 59431db1..5f0311f5 100644 --- a/mediapipe/tasks/ios/components/containers/utils/BUILD +++ b/mediapipe/tasks/ios/components/containers/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/processors/BUILD b/mediapipe/tasks/ios/components/processors/BUILD index 29bef771..c5715db7 100644 --- a/mediapipe/tasks/ios/components/processors/BUILD +++ b/mediapipe/tasks/ios/components/processors/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.h b/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.h index a40c2e39..7bebdf48 100644 --- a/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.h +++ b/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.h @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.m b/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.m index 9b220720..e3438db6 100644 --- a/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.m +++ b/mediapipe/tasks/ios/components/processors/sources/MPPClassifierOptions.m @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/processors/utils/BUILD b/mediapipe/tasks/ios/components/processors/utils/BUILD index 0e4c3b09..b0eefedb 100644 --- a/mediapipe/tasks/ios/components/processors/utils/BUILD +++ b/mediapipe/tasks/ios/components/processors/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/utils/BUILD b/mediapipe/tasks/ios/components/utils/BUILD index f762c2f9..554f726b 100644 --- a/mediapipe/tasks/ios/components/utils/BUILD +++ b/mediapipe/tasks/ios/components/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.h b/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.h index 8883dbd4..b9cc1c72 100644 --- a/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.h +++ b/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.h @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.mm b/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.mm index 34c62aaf..4e1ab0eb 100644 --- a/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.mm +++ b/mediapipe/tasks/ios/components/utils/sources/MPPCosineSimilarity.mm @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/BUILD b/mediapipe/tasks/ios/core/BUILD index f9489acf..eb6c4581 100644 --- a/mediapipe/tasks/ios/core/BUILD +++ b/mediapipe/tasks/ios/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPBaseOptions.h b/mediapipe/tasks/ios/core/sources/MPPBaseOptions.h index 088d2d5d..603be803 100644 --- a/mediapipe/tasks/ios/core/sources/MPPBaseOptions.h +++ b/mediapipe/tasks/ios/core/sources/MPPBaseOptions.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPBaseOptions.m b/mediapipe/tasks/ios/core/sources/MPPBaseOptions.m index eaf2aa89..c3571c4b 100644 --- a/mediapipe/tasks/ios/core/sources/MPPBaseOptions.m +++ b/mediapipe/tasks/ios/core/sources/MPPBaseOptions.m @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPTaskOptions.h b/mediapipe/tasks/ios/core/sources/MPPTaskOptions.h index e1067834..ecb3da4b 100644 --- a/mediapipe/tasks/ios/core/sources/MPPTaskOptions.h +++ b/mediapipe/tasks/ios/core/sources/MPPTaskOptions.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPTaskOptions.m b/mediapipe/tasks/ios/core/sources/MPPTaskOptions.m index fe74517c..adc08f03 100644 --- a/mediapipe/tasks/ios/core/sources/MPPTaskOptions.m +++ b/mediapipe/tasks/ios/core/sources/MPPTaskOptions.m @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPTaskOptionsProtocol.h b/mediapipe/tasks/ios/core/sources/MPPTaskOptionsProtocol.h index c03165c1..5f76131c 100644 --- a/mediapipe/tasks/ios/core/sources/MPPTaskOptionsProtocol.h +++ b/mediapipe/tasks/ios/core/sources/MPPTaskOptionsProtocol.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPTaskResult.h b/mediapipe/tasks/ios/core/sources/MPPTaskResult.h index 664a94ba..9bd724e8 100644 --- a/mediapipe/tasks/ios/core/sources/MPPTaskResult.h +++ b/mediapipe/tasks/ios/core/sources/MPPTaskResult.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/sources/MPPTaskResult.m b/mediapipe/tasks/ios/core/sources/MPPTaskResult.m index 8a7fa6b5..100040bc 100644 --- a/mediapipe/tasks/ios/core/sources/MPPTaskResult.m +++ b/mediapipe/tasks/ios/core/sources/MPPTaskResult.m @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/core/utils/BUILD b/mediapipe/tasks/ios/core/utils/BUILD index 6577b03b..3cd8bf23 100644 --- a/mediapipe/tasks/ios/core/utils/BUILD +++ b/mediapipe/tasks/ios/core/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/text/core/BUILD b/mediapipe/tasks/ios/text/core/BUILD index e07d9297..3648ef77 100644 --- a/mediapipe/tasks/ios/text/core/BUILD +++ b/mediapipe/tasks/ios/text/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/text/text_classifier/BUILD b/mediapipe/tasks/ios/text/text_classifier/BUILD index 7913340a..22f9c4af 100644 --- a/mediapipe/tasks/ios/text/text_classifier/BUILD +++ b/mediapipe/tasks/ios/text/text_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/text/text_classifier/utils/BUILD b/mediapipe/tasks/ios/text/text_classifier/utils/BUILD index 6795194f..060a48ff 100644 --- a/mediapipe/tasks/ios/text/text_classifier/utils/BUILD +++ b/mediapipe/tasks/ios/text/text_classifier/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/text/text_embedder/BUILD b/mediapipe/tasks/ios/text/text_embedder/BUILD index a600d536..07797e4c 100644 --- a/mediapipe/tasks/ios/text/text_embedder/BUILD +++ b/mediapipe/tasks/ios/text/text_embedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/text/text_embedder/utils/BUILD b/mediapipe/tasks/ios/text/text_embedder/utils/BUILD index eeb4981f..392ec6f2 100644 --- a/mediapipe/tasks/ios/text/text_embedder/utils/BUILD +++ b/mediapipe/tasks/ios/text/text_embedder/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/core/sources/MPPRunningMode.h b/mediapipe/tasks/ios/vision/core/sources/MPPRunningMode.h index ee52a693..a3b3ad70 100644 --- a/mediapipe/tasks/ios/vision/core/sources/MPPRunningMode.h +++ b/mediapipe/tasks/ios/vision/core/sources/MPPRunningMode.h @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/gesture_recognizer/BUILD b/mediapipe/tasks/ios/vision/gesture_recognizer/BUILD index 1c6f0eee..26fa4d6c 100644 --- a/mediapipe/tasks/ios/vision/gesture_recognizer/BUILD +++ b/mediapipe/tasks/ios/vision/gesture_recognizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/image_classifier/BUILD b/mediapipe/tasks/ios/vision/image_classifier/BUILD index 4ebcd2b2..69490f71 100644 --- a/mediapipe/tasks/ios/vision/image_classifier/BUILD +++ b/mediapipe/tasks/ios/vision/image_classifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/image_classifier/utils/BUILD b/mediapipe/tasks/ios/vision/image_classifier/utils/BUILD index c1928b6f..25955f4d 100644 --- a/mediapipe/tasks/ios/vision/image_classifier/utils/BUILD +++ b/mediapipe/tasks/ios/vision/image_classifier/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/object_detector/BUILD b/mediapipe/tasks/ios/vision/object_detector/BUILD index abbd1e04..aee92a2f 100644 --- a/mediapipe/tasks/ios/vision/object_detector/BUILD +++ b/mediapipe/tasks/ios/vision/object_detector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/ios/vision/object_detector/utils/BUILD b/mediapipe/tasks/ios/vision/object_detector/utils/BUILD index 70499e98..d4597b23 100644 --- a/mediapipe/tasks/ios/vision/object_detector/utils/BUILD +++ b/mediapipe/tasks/ios/vision/object_detector/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/BUILD b/mediapipe/tasks/java/BUILD index 13a319bb..7b577870 100644 --- a/mediapipe/tasks/java/BUILD +++ b/mediapipe/tasks/java/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/BUILD index 7e628326..6092601f 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/BUILD index 7f936334..29f121ac 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifier.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifier.java index 4e5cd765..a33f1995 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifier.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifier.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifierResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifierResult.java index 258e5725..5cb1beff 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifierResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioclassifier/AudioClassifierResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedder.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedder.java index 67d3f8b5..8cc3b45a 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedder.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedder.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedderResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedderResult.java index 0cfd2297..ef485c5b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedderResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/audioembedder/AudioEmbedderResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/BaseAudioTaskApi.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/BaseAudioTaskApi.java index f577a361..bd65e6d4 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/BaseAudioTaskApi.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/BaseAudioTaskApi.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/RunningMode.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/RunningMode.java index a778eae4..b6506d09 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/RunningMode.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/audio/core/RunningMode.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/AudioData.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/AudioData.java index 40a05b1e..2758e07b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/AudioData.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/AudioData.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/BUILD index d70aa94a..2c76f9a0 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Category.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Category.java index ab3fd0bd..65996c2a 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Category.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Category.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/ClassificationResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/ClassificationResult.java index d30099d8..0ef9b4ab 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/ClassificationResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/ClassificationResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Classifications.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Classifications.java index 12f14e62..9e53590d 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Classifications.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Classifications.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Detection.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Detection.java index b776da66..7ef7c4b5 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Detection.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Detection.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Embedding.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Embedding.java index 6cb0e325..05e3ea2d 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Embedding.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Embedding.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/EmbeddingResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/EmbeddingResult.java index 32fa7b47..95b7aac5 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/EmbeddingResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/EmbeddingResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Landmark.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Landmark.java index 7fb1b99d..c3e9f271 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Landmark.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/Landmark.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedKeypoint.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedKeypoint.java index 1a4c1eba..be55746b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedKeypoint.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedKeypoint.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedLandmark.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedLandmark.java index e77f3c3d..f96e434c 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedLandmark.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/containers/NormalizedLandmark.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/BUILD index b4d45393..7acc4280 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/ClassifierOptions.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/ClassifierOptions.java index 76da4b44..131bf970 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/ClassifierOptions.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/processors/ClassifierOptions.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/BUILD index 6c724106..a9c07947 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/CosineSimilarity.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/CosineSimilarity.java index 6b995731..77d107ee 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/CosineSimilarity.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/components/utils/CosineSimilarity.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BUILD index df7fe5b1..d04fc425 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BaseOptions.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BaseOptions.java index d1db0889..8eec72ef 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BaseOptions.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/BaseOptions.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/Delegate.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/Delegate.java index 84bf7270..8a3174c6 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/Delegate.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/Delegate.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ErrorListener.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ErrorListener.java index 3f62d5d4..d1f9163e 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ErrorListener.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ErrorListener.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCache.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCache.java index 4e81a380..87f89d39 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCache.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCache.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCacheService.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCacheService.java index 2cf2f096..7a0b5211 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCacheService.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/ModelResourcesCacheService.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/OutputHandler.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/OutputHandler.java index c330b1a5..dba91848 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/OutputHandler.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/OutputHandler.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskInfo.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskInfo.java index 31af80f5..3c422a8b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskInfo.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskInfo.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskOptions.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskOptions.java index 0fc48742..9c6f1adc 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskOptions.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskOptions.java @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskResult.java index 03b11e87..1d1fbe88 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskRunner.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskRunner.java index 155536a4..d162d39d 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskRunner.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/TaskRunner.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD index 8f8abf06..2033d727 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD.bazel b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD.bazel index 0eb74e7f..4a823520 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD.bazel +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.cc b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.cc index c7e01563..24c53614 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.cc +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.cc @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.h b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.h index 9b047893..7e828070 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.h +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni/model_resources_cache_jni.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsDummyLogger.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsDummyLogger.java index c10b5d22..50e19248 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsDummyLogger.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsDummyLogger.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsLogger.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsLogger.java index c726e7d0..f4f5551c 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsLogger.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/core/logging/TasksStatsLogger.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/mediapipe_tasks_aar.bzl b/mediapipe/tasks/java/com/google/mediapipe/tasks/mediapipe_tasks_aar.bzl index d63b0e35..d5188ae5 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/mediapipe_tasks_aar.bzl +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/mediapipe_tasks_aar.bzl @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/BUILD index 74ca87b5..558f687a 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetector.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetector.java index 216fae6d..0ad425de 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetector.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetector.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorResult.java index 10b8dac4..e2d42f08 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguagePrediction.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguagePrediction.java index e2e4321a..103be7f2 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguagePrediction.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/languagedetector/LanguagePrediction.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifier.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifier.java index edb78a19..92a19783 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifier.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifier.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifierResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifierResult.java index 64de0ee8..26163d20 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifierResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textclassifier/TextClassifierResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedder.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedder.java index 28f351d4..77caae86 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedder.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedder.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedderResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedderResult.java index 9d8e108e..4fe81c6d 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedderResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/text/textembedder/TextEmbedderResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD index fc933b6f..5be0e233 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/BaseVisionTaskApi.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/BaseVisionTaskApi.java index b6e244d1..07080652 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/BaseVisionTaskApi.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/BaseVisionTaskApi.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/ImageProcessingOptions.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/ImageProcessingOptions.java index a34a9787..9e7161b5 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/ImageProcessingOptions.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/ImageProcessingOptions.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/RunningMode.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/RunningMode.java index 8b0ffb8f..80ff4e02 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/RunningMode.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/core/RunningMode.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetector.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetector.java index c23432c1..09dad443 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetector.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetector.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorResult.java index 9a9fd45e..9b7592cb 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarker.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarker.java index 599113aa..6a10f52e 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarker.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarker.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerResult.java index 7054856f..c91477e1 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarksConnections.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarksConnections.java index f320cb07..ad996f36 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarksConnections.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarksConnections.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; /** Face landmarks connection constants. */ -final class FaceLandmarksConnections { +public final class FaceLandmarksConnections { /** Value class representing face landmarks connection. */ @AutoValue diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizer.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizer.java index d6f565c7..741c87e7 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizer.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizer.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerResult.java index bbabea6a..318a529b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java index 5b2d7191..03c2d03f 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java index 90b92175..d4438efe 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmark.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmark.java index 7b21ebdd..62ba29d0 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmark.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmark.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java index 1d08ab92..2af89312 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerResult.java index 9092c0a2..467e871b 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifier.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifier.java index 38482797..8da7c026 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifier.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifier.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierResult.java index 92454215..21fbb51c 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedder.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedder.java index 48892725..0c1d2436 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedder.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedder.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderResult.java index ee3f4abc..e2dee9ea 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenter.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenter.java index be761907..3d6df302 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenter.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenter.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -80,7 +80,6 @@ public final class ImageSegmenter extends BaseVisionTaskApi { private static final List INPUT_STREAMS = Collections.unmodifiableList( Arrays.asList("IMAGE:" + IMAGE_IN_STREAM_NAME, "NORM_RECT:" + NORM_RECT_IN_STREAM_NAME)); - private static final int IMAGE_OUT_STREAM_INDEX = 0; private static final String TASK_GRAPH_NAME = "mediapipe.tasks.vision.image_segmenter.ImageSegmenterGraph"; private static final String TENSORS_TO_SEGMENTATION_CALCULATOR_NAME = @@ -102,27 +101,21 @@ public final class ImageSegmenter extends BaseVisionTaskApi { "At least one of `outputConfidenceMasks` and `outputCategoryMask` must be set."); } List outputStreams = new ArrayList<>(); - outputStreams.add("IMAGE:image_out"); - // Add an output stream to the output stream list, and get the added output stream index. BiFunction, String, Integer> getStreamIndex = (List streams, String streamName) -> { streams.add(streamName); return streams.size() - 1; }; - - int confidenceMasksOutStreamIndex = + final int confidenceMasksOutStreamIndex = segmenterOptions.outputConfidenceMasks() ? getStreamIndex.apply(outputStreams, "CONFIDENCE_MASKS:confidence_masks") : -1; - int confidenceMaskOutStreamIndex = - segmenterOptions.outputConfidenceMasks() - ? getStreamIndex.apply(outputStreams, "CONFIDENCE_MASK:0:confidence_mask") - : -1; - int categoryMaskOutStreamIndex = + final int categoryMaskOutStreamIndex = segmenterOptions.outputCategoryMask() ? getStreamIndex.apply(outputStreams, "CATEGORY_MASK:category_mask") : -1; + final int imageOutStreamIndex = getStreamIndex.apply(outputStreams, "IMAGE:image_out"); // TODO: Consolidate OutputHandler and TaskRunner. OutputHandler handler = new OutputHandler<>(); @@ -131,17 +124,21 @@ public final class ImageSegmenter extends BaseVisionTaskApi { @Override public ImageSegmenterResult convertToTaskResult(List packets) throws MediaPipeException { - if (packets.get(IMAGE_OUT_STREAM_INDEX).isEmpty()) { + if (packets.get(imageOutStreamIndex).isEmpty()) { return ImageSegmenterResult.create( Optional.empty(), Optional.empty(), - packets.get(IMAGE_OUT_STREAM_INDEX).getTimestamp()); + packets.get(imageOutStreamIndex).getTimestamp()); } boolean copyImage = !segmenterOptions.resultListener().isPresent(); Optional> confidenceMasks = Optional.empty(); if (segmenterOptions.outputConfidenceMasks()) { - int width = PacketGetter.getImageWidth(packets.get(confidenceMaskOutStreamIndex)); - int height = PacketGetter.getImageHeight(packets.get(confidenceMaskOutStreamIndex)); + int width = + PacketGetter.getImageWidthFromImageList( + packets.get(confidenceMasksOutStreamIndex)); + int height = + PacketGetter.getImageHeightFromImageList( + packets.get(confidenceMasksOutStreamIndex)); confidenceMasks = Optional.of(new ArrayList()); int confidenceMasksListSize = PacketGetter.getImageListSize(packets.get(confidenceMasksOutStreamIndex)); @@ -189,13 +186,13 @@ public final class ImageSegmenter extends BaseVisionTaskApi { confidenceMasks, categoryMask, BaseVisionTaskApi.generateResultTimestampMs( - segmenterOptions.runningMode(), packets.get(IMAGE_OUT_STREAM_INDEX))); + segmenterOptions.runningMode(), packets.get(imageOutStreamIndex))); } @Override public MPImage convertToTaskInput(List packets) { return new BitmapImageBuilder( - AndroidPacketGetter.getBitmapFromRgb(packets.get(IMAGE_OUT_STREAM_INDEX))) + AndroidPacketGetter.getBitmapFromRgb(packets.get(imageOutStreamIndex))) .build(); } }); diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterResult.java index 4030c6f9..cbc5211c 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenter.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenter.java index 6f47797b..52a5f2a6 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenter.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenter.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -94,7 +94,6 @@ public final class InteractiveSegmenter extends BaseVisionTaskApi { "IMAGE:" + IMAGE_IN_STREAM_NAME, "ROI:" + ROI_IN_STREAM_NAME, "NORM_RECT:" + NORM_RECT_IN_STREAM_NAME)); - private static final int IMAGE_OUT_STREAM_INDEX = 0; private static final String TASK_GRAPH_NAME = "mediapipe.tasks.vision.interactive_segmenter.InteractiveSegmenterGraph"; private static final String TENSORS_TO_SEGMENTATION_CALCULATOR_NAME = @@ -120,7 +119,6 @@ public final class InteractiveSegmenter extends BaseVisionTaskApi { "At least one of `outputConfidenceMasks` and `outputCategoryMask` must be set."); } List outputStreams = new ArrayList<>(); - outputStreams.add("IMAGE:image_out"); if (segmenterOptions.outputConfidenceMasks()) { outputStreams.add("CONFIDENCE_MASKS:confidence_masks"); } @@ -129,6 +127,9 @@ public final class InteractiveSegmenter extends BaseVisionTaskApi { outputStreams.add("CATEGORY_MASK:category_mask"); } final int categoryMaskOutStreamIndex = outputStreams.size() - 1; + outputStreams.add("IMAGE:image_out"); + // TODO: add test for stream indices. + final int imageOutStreamIndex = outputStreams.size() - 1; // TODO: Consolidate OutputHandler and TaskRunner. OutputHandler handler = new OutputHandler<>(); @@ -137,11 +138,11 @@ public final class InteractiveSegmenter extends BaseVisionTaskApi { @Override public ImageSegmenterResult convertToTaskResult(List packets) throws MediaPipeException { - if (packets.get(IMAGE_OUT_STREAM_INDEX).isEmpty()) { + if (packets.get(imageOutStreamIndex).isEmpty()) { return ImageSegmenterResult.create( Optional.empty(), Optional.empty(), - packets.get(IMAGE_OUT_STREAM_INDEX).getTimestamp()); + packets.get(imageOutStreamIndex).getTimestamp()); } // If resultListener is not provided, the resulted MPImage is deep copied from // mediapipe graph. If provided, the result MPImage is wrapping the mediapipe packet @@ -202,13 +203,13 @@ public final class InteractiveSegmenter extends BaseVisionTaskApi { confidenceMasks, categoryMask, BaseVisionTaskApi.generateResultTimestampMs( - RunningMode.IMAGE, packets.get(IMAGE_OUT_STREAM_INDEX))); + RunningMode.IMAGE, packets.get(imageOutStreamIndex))); } @Override public MPImage convertToTaskInput(List packets) { return new BitmapImageBuilder( - AndroidPacketGetter.getBitmapFromRgb(packets.get(IMAGE_OUT_STREAM_INDEX))) + AndroidPacketGetter.getBitmapFromRgb(packets.get(imageOutStreamIndex))) .build(); } }); diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectionResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectionResult.java index 295c88b0..120cddd4 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectionResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectionResult.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetector.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetector.java index d706189e..5287ba32 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetector.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetector.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarker.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarker.java index 2d9aafc4..2ebdc073 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarker.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarker.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerResult.java index bb632d3b..488f2a55 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerResult.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/CosineSimilarityTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/CosineSimilarityTest.java index f7a1ae00..1ee0a50f 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/CosineSimilarityTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/components/utils/CosineSimilarityTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/BUILD index 74bf48c5..01e7ad0f 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/TestUtils.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/TestUtils.java index 130c413b..5aac23b4 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/TestUtils.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/core/TestUtils.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorTest.java index fe6d28f4..fd205f5d 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/languagedetector/LanguageDetectorTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/TextClassifierTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/TextClassifierTest.java index 5ed413f6..60b2ab48 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/TextClassifierTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textclassifier/TextClassifierTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/TextEmbedderTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/TextEmbedderTest.java index 79628826..ed7573b2 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/TextEmbedderTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/text/textembedder/TextEmbedderTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/ImageProcessingOptionsTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/ImageProcessingOptionsTest.java index 078b62af..d998ccf3 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/ImageProcessingOptionsTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/core/ImageProcessingOptionsTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorTest.java index d995accd..f377b995 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facedetector/FaceDetectorTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerTest.java index 0b21e863..6f117f94 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facelandmarker/FaceLandmarkerTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerTest.java index 4f6cc2d6..b9379631 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/facestylizer/FaceStylizerTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java index 5821b36c..5f461a4c 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerTest.java index c313d385..94434a21 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarkerTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierTest.java index 3da4ea9b..d33b7f1b 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageclassifier/ImageClassifierTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderTest.java index d54586f6..99d2a749 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imageembedder/ImageEmbedderTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterTest.java index 0cbbec4a..959f444c 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/imagesegmenter/ImageSegmenterTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenterTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenterTest.java index 3a685494..506036ba 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenterTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/interactivesegmenter/InteractiveSegmenterTest.java @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/BUILD index a7f804c6..2ec85d1a 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectorTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectorTest.java index 58bcaafd..33aa025d 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectorTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/objectdetector/ObjectDetectorTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/BUILD b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/BUILD index c1448676..287602c8 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/BUILD +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerTest.java index 30ced66f..1d0b1dec 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/poselandmarker/PoseLandmarkerTest.java @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/metadata/BUILD b/mediapipe/tasks/metadata/BUILD index de635068..38960c8d 100644 --- a/mediapipe/tasks/metadata/BUILD +++ b/mediapipe/tasks/metadata/BUILD @@ -36,3 +36,13 @@ flatbuffer_py_library( name = "image_segmenter_metadata_schema_py", srcs = ["image_segmenter_metadata_schema.fbs"], ) + +flatbuffer_cc_library( + name = "object_detector_metadata_schema_cc", + srcs = ["object_detector_metadata_schema.fbs"], +) + +flatbuffer_py_library( + name = "object_detector_metadata_schema_py", + srcs = ["object_detector_metadata_schema.fbs"], +) diff --git a/mediapipe/tasks/metadata/image_segmenter_metadata_schema.fbs b/mediapipe/tasks/metadata/image_segmenter_metadata_schema.fbs index 85010907..c57fdb92 100644 --- a/mediapipe/tasks/metadata/image_segmenter_metadata_schema.fbs +++ b/mediapipe/tasks/metadata/image_segmenter_metadata_schema.fbs @@ -1,4 +1,4 @@ -// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// Copyright 2023 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/metadata/metadata_schema.fbs b/mediapipe/tasks/metadata/metadata_schema.fbs index 8660ba38..e6df1ac6 100644 --- a/mediapipe/tasks/metadata/metadata_schema.fbs +++ b/mediapipe/tasks/metadata/metadata_schema.fbs @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/metadata/object_detector_metadata_schema.fbs b/mediapipe/tasks/metadata/object_detector_metadata_schema.fbs new file mode 100644 index 00000000..30e0f912 --- /dev/null +++ b/mediapipe/tasks/metadata/object_detector_metadata_schema.fbs @@ -0,0 +1,98 @@ +// Copyright 2023 The MediaPipe Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace mediapipe.tasks; + +// ObjectDetectorOptions.min_parser_version indicates the minimum necessary +// object detector metadata parser version to fully understand all fields in a +// given metadata flatbuffer. This min_parser_version is specific for the +// object detector metadata defined in this schema file. +// +// New fields and types will have associated comments with the schema version +// for which they were added. +// +// Schema Semantic version: 1.0.0 + +// This indicates the flatbuffer compatibility. The number will bump up when a +// break change is applied to the schema, such as removing fields or adding new +// fields to the middle of a table. +file_identifier "V001"; + + +// History: +// 1.0.0 - Initial version. + +// A fixed size anchor. +table FixedAnchor { + x_center: float; + y_center: float; + width: float; + height: float; +} + +// The schema for a list of anchors with fixed size. +table FixedAnchorsSchema { + anchors: [FixedAnchor]; +} + +// The ssd anchors options used in the object detector. +table SsdAnchorsOptions { + fixed_anchors_schema: FixedAnchorsSchema; +} + +// The options for decoding the raw model output tensors. The options are mostly +// used in TensorsToDetectionsCalculatorOptions. +table TensorsDecodingOptions { + // The number of output classes predicted by the detection model. + num_classes: int; + // The number of output boxes predicted by the detection model. + num_boxes: int; + // The number of output values per boxes predicted by the detection + // model. The values contain bounding boxes, keypoints, etc. + num_coords: int; + // The offset of keypoint coordinates in the location tensor. + keypoint_coord_offset: int; + // The number of predicted keypoints. + num_keypoints: int; + // The dimension of each keypoint, e.g. number of values predicted for each + // keypoint. + num_values_per_keypoint: int; + // Parameters for decoding SSD detection model. + x_scale: float; + y_scale: float; + w_scale: float; + h_scale: float; + // Whether to apply exponential on box size. + apply_exponential_on_box_size: bool; + // Whether to apply sigmod function on the score. + sigmoid_score: bool; +} + +table ObjectDetectorOptions { + // TODO: automatically populate min parser string. + // The minimum necessary object detector metadata parser version to fully + // understand all fields in a given metadata flatbuffer. This field is + // automatically populated by the MetadataPopulator when the metadata is + // populated into a TFLite model. This min_parser_version is specific for the + // object detector metadata defined in this schema file. + min_parser_version:string; + + // The options of ssd anchors configs used by the detection model. + ssd_anchors_options:SsdAnchorsOptions; + + // The tensors decoding options to convert raw tensors to detection results. + tensors_decoding_options:TensorsDecodingOptions; +} + +root_type ObjectDetectorOptions; diff --git a/mediapipe/tasks/python/BUILD b/mediapipe/tasks/python/BUILD index 1efb28d0..451a42b2 100644 --- a/mediapipe/tasks/python/BUILD +++ b/mediapipe/tasks/python/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/__init__.py b/mediapipe/tasks/python/__init__.py index 9a957344..95385564 100644 --- a/mediapipe/tasks/python/__init__.py +++ b/mediapipe/tasks/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/BUILD b/mediapipe/tasks/python/audio/BUILD index 9d8af146..9f1fdd97 100644 --- a/mediapipe/tasks/python/audio/BUILD +++ b/mediapipe/tasks/python/audio/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/__init__.py b/mediapipe/tasks/python/audio/__init__.py index e129800a..df217be6 100644 --- a/mediapipe/tasks/python/audio/__init__.py +++ b/mediapipe/tasks/python/audio/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/audio_classifier.py b/mediapipe/tasks/python/audio/audio_classifier.py index cc87d622..44795dca 100644 --- a/mediapipe/tasks/python/audio/audio_classifier.py +++ b/mediapipe/tasks/python/audio/audio_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/audio_embedder.py b/mediapipe/tasks/python/audio/audio_embedder.py index 835dd0e3..80637901 100644 --- a/mediapipe/tasks/python/audio/audio_embedder.py +++ b/mediapipe/tasks/python/audio/audio_embedder.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/core/BUILD b/mediapipe/tasks/python/audio/core/BUILD index ad22faa9..b3c0076d 100644 --- a/mediapipe/tasks/python/audio/core/BUILD +++ b/mediapipe/tasks/python/audio/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/core/audio_record.py b/mediapipe/tasks/python/audio/core/audio_record.py index bc12e375..6b326bff 100644 --- a/mediapipe/tasks/python/audio/core/audio_record.py +++ b/mediapipe/tasks/python/audio/core/audio_record.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/core/audio_task_running_mode.py b/mediapipe/tasks/python/audio/core/audio_task_running_mode.py index 0fa36d40..2ad57af9 100644 --- a/mediapipe/tasks/python/audio/core/audio_task_running_mode.py +++ b/mediapipe/tasks/python/audio/core/audio_task_running_mode.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/audio/core/base_audio_task_api.py b/mediapipe/tasks/python/audio/core/base_audio_task_api.py index be8ff932..98236c03 100644 --- a/mediapipe/tasks/python/audio/core/base_audio_task_api.py +++ b/mediapipe/tasks/python/audio/core/base_audio_task_api.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/__init__.py b/mediapipe/tasks/python/components/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/components/__init__.py +++ b/mediapipe/tasks/python/components/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/BUILD b/mediapipe/tasks/python/components/containers/BUILD index b84ab744..8c80decb 100644 --- a/mediapipe/tasks/python/components/containers/BUILD +++ b/mediapipe/tasks/python/components/containers/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/__init__.py b/mediapipe/tasks/python/components/containers/__init__.py index 17464db3..1a3f0c33 100644 --- a/mediapipe/tasks/python/components/containers/__init__.py +++ b/mediapipe/tasks/python/components/containers/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/audio_data.py b/mediapipe/tasks/python/components/containers/audio_data.py index 1d026799..c6591296 100644 --- a/mediapipe/tasks/python/components/containers/audio_data.py +++ b/mediapipe/tasks/python/components/containers/audio_data.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/bounding_box.py b/mediapipe/tasks/python/components/containers/bounding_box.py index 7cfbdf79..9ff15c75 100644 --- a/mediapipe/tasks/python/components/containers/bounding_box.py +++ b/mediapipe/tasks/python/components/containers/bounding_box.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/category.py b/mediapipe/tasks/python/components/containers/category.py index 9b541988..b669301e 100644 --- a/mediapipe/tasks/python/components/containers/category.py +++ b/mediapipe/tasks/python/components/containers/category.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/classification_result.py b/mediapipe/tasks/python/components/containers/classification_result.py index 00046804..fbaadee2 100644 --- a/mediapipe/tasks/python/components/containers/classification_result.py +++ b/mediapipe/tasks/python/components/containers/classification_result.py @@ -1,4 +1,4 @@ -# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# Copyright 2022 The TensorFlow Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/detections.py b/mediapipe/tasks/python/components/containers/detections.py index 935d294a..833552c4 100644 --- a/mediapipe/tasks/python/components/containers/detections.py +++ b/mediapipe/tasks/python/components/containers/detections.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/embedding_result.py b/mediapipe/tasks/python/components/containers/embedding_result.py index 999f7453..c85e00d1 100644 --- a/mediapipe/tasks/python/components/containers/embedding_result.py +++ b/mediapipe/tasks/python/components/containers/embedding_result.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/keypoint.py b/mediapipe/tasks/python/components/containers/keypoint.py index 3d957f3d..1585fb8c 100644 --- a/mediapipe/tasks/python/components/containers/keypoint.py +++ b/mediapipe/tasks/python/components/containers/keypoint.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/landmark.py b/mediapipe/tasks/python/components/containers/landmark.py index dee2a16a..d4ab0f31 100644 --- a/mediapipe/tasks/python/components/containers/landmark.py +++ b/mediapipe/tasks/python/components/containers/landmark.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/landmark_detection_result.py b/mediapipe/tasks/python/components/containers/landmark_detection_result.py index a5b205df..c60ad850 100644 --- a/mediapipe/tasks/python/components/containers/landmark_detection_result.py +++ b/mediapipe/tasks/python/components/containers/landmark_detection_result.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/containers/rect.py b/mediapipe/tasks/python/components/containers/rect.py index 4fdccbaf..867eabb0 100644 --- a/mediapipe/tasks/python/components/containers/rect.py +++ b/mediapipe/tasks/python/components/containers/rect.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/processors/BUILD b/mediapipe/tasks/python/components/processors/BUILD index 695f6df9..881e3e35 100644 --- a/mediapipe/tasks/python/components/processors/BUILD +++ b/mediapipe/tasks/python/components/processors/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/processors/__init__.py b/mediapipe/tasks/python/components/processors/__init__.py index 0eb73abe..99a894e2 100644 --- a/mediapipe/tasks/python/components/processors/__init__.py +++ b/mediapipe/tasks/python/components/processors/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/processors/classifier_options.py b/mediapipe/tasks/python/components/processors/classifier_options.py index 2e77f93b..82a7add1 100644 --- a/mediapipe/tasks/python/components/processors/classifier_options.py +++ b/mediapipe/tasks/python/components/processors/classifier_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# Copyright 2022 The TensorFlow Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/utils/BUILD b/mediapipe/tasks/python/components/utils/BUILD index 1a18531c..64231fde 100644 --- a/mediapipe/tasks/python/components/utils/BUILD +++ b/mediapipe/tasks/python/components/utils/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/utils/__init__.py b/mediapipe/tasks/python/components/utils/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/components/utils/__init__.py +++ b/mediapipe/tasks/python/components/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/components/utils/cosine_similarity.py b/mediapipe/tasks/python/components/utils/cosine_similarity.py index a6245a57..1c60a71b 100644 --- a/mediapipe/tasks/python/components/utils/cosine_similarity.py +++ b/mediapipe/tasks/python/components/utils/cosine_similarity.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/BUILD b/mediapipe/tasks/python/core/BUILD index 6098fb5f..f9082635 100644 --- a/mediapipe/tasks/python/core/BUILD +++ b/mediapipe/tasks/python/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/__init__.py b/mediapipe/tasks/python/core/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/core/__init__.py +++ b/mediapipe/tasks/python/core/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/base_options.py b/mediapipe/tasks/python/core/base_options.py index b48fa2cc..90ef045b 100644 --- a/mediapipe/tasks/python/core/base_options.py +++ b/mediapipe/tasks/python/core/base_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/optional_dependencies.py b/mediapipe/tasks/python/core/optional_dependencies.py index b1a0ed53..108caa0e 100644 --- a/mediapipe/tasks/python/core/optional_dependencies.py +++ b/mediapipe/tasks/python/core/optional_dependencies.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/pybind/BUILD b/mediapipe/tasks/python/core/pybind/BUILD index b59635dc..88ea05f4 100644 --- a/mediapipe/tasks/python/core/pybind/BUILD +++ b/mediapipe/tasks/python/core/pybind/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/pybind/task_runner.cc b/mediapipe/tasks/python/core/pybind/task_runner.cc index 250c0fa6..f95cddde 100644 --- a/mediapipe/tasks/python/core/pybind/task_runner.cc +++ b/mediapipe/tasks/python/core/pybind/task_runner.cc @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/pybind/task_runner.h b/mediapipe/tasks/python/core/pybind/task_runner.h index 3f6e998c..c153893b 100644 --- a/mediapipe/tasks/python/core/pybind/task_runner.h +++ b/mediapipe/tasks/python/core/pybind/task_runner.h @@ -1,4 +1,4 @@ -// Copyright 2022 The MediaPipe Authors. All Rights Reserved. +// Copyright 2022 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/core/task_info.py b/mediapipe/tasks/python/core/task_info.py index 6ea2cee7..1816d60e 100644 --- a/mediapipe/tasks/python/core/task_info.py +++ b/mediapipe/tasks/python/core/task_info.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/__init__.py b/mediapipe/tasks/python/metadata/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/tasks/python/metadata/__init__.py +++ b/mediapipe/tasks/python/metadata/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/flatbuffers_lib/flatbuffers_lib.cc b/mediapipe/tasks/python/metadata/flatbuffers_lib/flatbuffers_lib.cc index 34407620..aa61ec91 100644 --- a/mediapipe/tasks/python/metadata/flatbuffers_lib/flatbuffers_lib.cc +++ b/mediapipe/tasks/python/metadata/flatbuffers_lib/flatbuffers_lib.cc @@ -1,4 +1,4 @@ -/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. +/* Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata.py b/mediapipe/tasks/python/metadata/metadata.py index 6a107c8d..9821e0ca 100644 --- a/mediapipe/tasks/python/metadata/metadata.py +++ b/mediapipe/tasks/python/metadata/metadata.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_displayer_cli.py b/mediapipe/tasks/python/metadata/metadata_displayer_cli.py index 745da1f2..0e416efe 100644 --- a/mediapipe/tasks/python/metadata/metadata_displayer_cli.py +++ b/mediapipe/tasks/python/metadata/metadata_displayer_cli.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_parser.py.template b/mediapipe/tasks/python/metadata/metadata_parser.py.template index b5a64dee..63ecd582 100644 --- a/mediapipe/tasks/python/metadata/metadata_parser.py.template +++ b/mediapipe/tasks/python/metadata/metadata_parser.py.template @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/BUILD b/mediapipe/tasks/python/metadata/metadata_writers/BUILD index 1f126c30..f7db1668 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/BUILD +++ b/mediapipe/tasks/python/metadata/metadata_writers/BUILD @@ -67,7 +67,15 @@ py_library( py_library( name = "object_detector", srcs = ["object_detector.py"], - deps = [":metadata_writer"], + data = ["//mediapipe/tasks/metadata:object_detector_metadata_schema.fbs"], + deps = [ + ":metadata_info", + ":metadata_writer", + "//mediapipe/tasks/metadata:metadata_schema_py", + "//mediapipe/tasks/metadata:object_detector_metadata_schema_py", + "//mediapipe/tasks/python/metadata", + "@flatbuffers//:runtime_py", + ], ) py_library( diff --git a/mediapipe/tasks/python/metadata/metadata_writers/__init__.py b/mediapipe/tasks/python/metadata/metadata_writers/__init__.py index 7ca2f921..5b1a4244 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/__init__.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/image_classifier.py b/mediapipe/tasks/python/metadata/metadata_writers/image_classifier.py index 7f268579..6c1ba704 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/image_classifier.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/image_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/image_segmenter.py b/mediapipe/tasks/python/metadata/metadata_writers/image_segmenter.py index 3268f3b1..8e38731a 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/image_segmenter.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/image_segmenter.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/metadata_info.py b/mediapipe/tasks/python/metadata/metadata_writers/metadata_info.py index 10b66ff1..01d725f1 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/metadata_info.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/metadata_info.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ import abc import collections import csv +import enum import os from typing import List, Optional, Type, Union @@ -1004,6 +1005,84 @@ class DetectionOutputTensorsMd: return self._output_mds +class RawDetectionOutputTensorsOrder(enum.Enum): + """Output tensors order for detection models without postprocessing. + + Because it is not able to determined the order of output tensors for models + without postprocessing, it is needed to specify the output tensors order for + metadata writer. + """ + + UNSPECIFIED = 0 + # The first tensor is score, and the second tensor is location. + SCORE_LOCATION = 1 + # The first tensor is location, and the second tensor is score. + LOCATION_SCORE = 2 + + +class RawDetectionOutputTensorsMd: + """A container for the output tensor metadata of detection models without postprocessing.""" + + _LOCATION_NAME = "location" + _LOCATION_DESCRIPTION = "The locations of the detected boxes." + _SCORE_NAME = "score" + _SCORE_DESCRIPTION = "The scores of the detected boxes." + _CONTENT_VALUE_DIM = 2 + + def __init__( + self, + model_buffer: bytearray, + label_files: Optional[List[LabelFileMd]] = None, + output_tensors_order: RawDetectionOutputTensorsOrder = RawDetectionOutputTensorsOrder.UNSPECIFIED, + ) -> None: + """Initializes the instance of DetectionOutputTensorsMd. + + Args: + model_buffer: A valid flatbuffer loaded from the TFLite model file. + label_files: information of the label files [1] in the classification + tensor. + output_tensors_order: the order of the output tensors. + [1]: + https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L9 + """ + # Get the output tensor indices and names from the tflite model. + tensor_indices_and_names = list( + zip( + writer_utils.get_output_tensor_indices(model_buffer), + writer_utils.get_output_tensor_names(model_buffer), + ) + ) + location_md = LocationTensorMd( + name=self._LOCATION_NAME, + description=self._LOCATION_DESCRIPTION, + ) + score_md = ClassificationTensorMd( + name=self._SCORE_NAME, + description=self._SCORE_DESCRIPTION, + label_files=label_files, + ) + + if output_tensors_order == RawDetectionOutputTensorsOrder.SCORE_LOCATION: + self._output_mds = [score_md, location_md] + elif output_tensors_order == RawDetectionOutputTensorsOrder.LOCATION_SCORE: + self._output_mds = [location_md, score_md] + else: + raise ValueError( + f"Unsupported OutputTensorsOrder value: {output_tensors_order}" + ) + + if len(self._output_mds) != len(tensor_indices_and_names): + raise ValueError( + "The size of TFLite output should be " + str(len(self._output_mds)) + ) + for i, output_md in enumerate(self._output_mds): + output_md.tensor_name = tensor_indices_and_names[i][1] + + @property + def output_mds(self) -> List[TensorMd]: + return self._output_mds + + class TensorGroupMd: """A container for a group of tensor metadata information.""" diff --git a/mediapipe/tasks/python/metadata/metadata_writers/metadata_writer.py b/mediapipe/tasks/python/metadata/metadata_writers/metadata_writer.py index e0be9bee..659a89b8 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/metadata_writer.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/metadata_writer.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -632,7 +632,7 @@ class MetadataWriter(object): score_calibration: Optional[ScoreCalibration] = None, group_name: str = _DETECTION_GROUP_NAME, ) -> 'MetadataWriter': - """Adds a detection head metadata for detection output tensor. + """Adds a detection head metadata for detection output tensor of models with postprocessing. Args: labels: an instance of Labels helper class. @@ -661,6 +661,33 @@ class MetadataWriter(object): self._output_group_mds.append(group_md) return self + def add_raw_detection_output( + self, + labels: Optional[Labels] = None, + output_tensors_order: metadata_info.RawDetectionOutputTensorsOrder = metadata_info.RawDetectionOutputTensorsOrder.UNSPECIFIED, + ) -> 'MetadataWriter': + """Adds a detection head metadata for detection output tensor of models without postprocessing. + + Args: + labels: an instance of Labels helper class. + output_tensors_order: the order of the output tensors. For models of + out-of-graph non-maximum-suppression only. + + Returns: + The current Writer instance to allow chained operation. + """ + label_files = self._create_label_file_md(labels) + detection_output_mds = metadata_info.RawDetectionOutputTensorsMd( + self._model_buffer, + label_files=label_files, + output_tensors_order=output_tensors_order, + ).output_mds + self._output_mds.extend(detection_output_mds) + # Outputs are location, score. + if len(detection_output_mds) != 2: + raise ValueError('The size of detections output should be 2.') + return self + def add_segmentation_output( self, labels: Optional[Labels] = None, diff --git a/mediapipe/tasks/python/metadata/metadata_writers/model_asset_bundle_utils.py b/mediapipe/tasks/python/metadata/metadata_writers/model_asset_bundle_utils.py index b626dc7b..87236b5a 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/model_asset_bundle_utils.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/model_asset_bundle_utils.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/object_detector.py b/mediapipe/tasks/python/metadata/metadata_writers/object_detector.py index 863c1bb2..9944ecfb 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/object_detector.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/object_detector.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,8 +14,14 @@ # ============================================================================== """Writes metadata and label file to the Object Detector models.""" +import dataclasses from typing import List, Optional +import flatbuffers +from mediapipe.tasks.metadata import metadata_schema_py_generated as _metadata_fb +from mediapipe.tasks.metadata import object_detector_metadata_schema_py_generated as _detector_metadata_fb +from mediapipe.tasks.python.metadata import metadata +from mediapipe.tasks.python.metadata.metadata_writers import metadata_info from mediapipe.tasks.python.metadata.metadata_writers import metadata_writer _MODEL_NAME = "ObjectDetector" @@ -25,12 +31,187 @@ _MODEL_DESCRIPTION = ( "stream." ) +# Metadata Schema file for object detector. +_FLATC_METADATA_SCHEMA_FILE = metadata.get_path_to_datafile( + "../../../metadata/object_detector_metadata_schema.fbs", +) + +# Metadata name in custom metadata field. The metadata name is used to get +# object detector metadata from SubGraphMetadata.custom_metadata and shouldn't +# be changed. +_METADATA_NAME = "DETECTOR_METADATA" + + +@dataclasses.dataclass +class FixedAnchor: + """A fixed size anchor.""" + + x_center: float + y_center: float + width: Optional[float] + height: Optional[float] + + +@dataclasses.dataclass +class FixedAnchorsSchema: + """The schema for a list of anchors with fixed size.""" + + anchors: List[FixedAnchor] + + +@dataclasses.dataclass +class SsdAnchorsOptions: + """The ssd anchors options used in object detector model.""" + + fixed_anchors_schema: Optional[FixedAnchorsSchema] + + +@dataclasses.dataclass +class TensorsDecodingOptions: + """The decoding options to convert model output tensors to detections.""" + + # The number of output classes predicted by the detection model. + num_classes: int + # The number of output boxes predicted by the detection model. + num_boxes: int + # The number of output values per boxes predicted by the detection + # model. The values contain bounding boxes, keypoints, etc. + num_coords: int + # The offset of keypoint coordinates in the location tensor. + keypoint_coord_offset: int + # The number of predicted keypoints. + num_keypoints: int + # The dimension of each keypoint, e.g. number of values predicted for each + # keypoint. + num_values_per_keypoint: int + # Parameters for decoding SSD detection model. + x_scale: float + y_scale: float + w_scale: float + h_scale: float + # Whether to apply exponential on box size. + apply_exponential_on_box_size: bool + # Whether to apply sigmod function on the score. + sigmoid_score: bool + + +# Create an individual method for getting the metadata json file, so that it can +# be used as a standalone util. +def convert_to_json(metadata_buffer: bytearray) -> str: + """Converts the metadata into a json string. + + Args: + metadata_buffer: valid metadata buffer in bytes. + + Returns: + Metadata in JSON format. + + Raises: + ValueError: error occurred when parsing the metadata schema file. + """ + return metadata.convert_to_json( + metadata_buffer, + custom_metadata_schema={_METADATA_NAME: _FLATC_METADATA_SCHEMA_FILE}, + ) + + +class ObjectDetectorOptionsMd(metadata_info.CustomMetadataMd): + """Object detector options metadata.""" + + _METADATA_FILE_IDENTIFIER = b"V001" + + def __init__( + self, + ssd_anchors_options: SsdAnchorsOptions, + tensors_decoding_options: TensorsDecodingOptions, + ) -> None: + """Creates an ObjectDetectorOptionsMd object. + + Args: + ssd_anchors_options: the ssd anchors options associated to the object + detector model. + tensors_decoding_options: the tensors decoding options used to decode the + object detector model output. + """ + if ssd_anchors_options.fixed_anchors_schema is None: + raise ValueError( + "Currently only support FixedAnchorsSchema, which cannot be found" + " in ssd_anchors_options." + ) + self.ssd_anchors_options = ssd_anchors_options + self.tensors_decoding_options = tensors_decoding_options + super().__init__(name=_METADATA_NAME) + + def create_metadata(self) -> _metadata_fb.CustomMetadataT: + """Creates the image segmenter options metadata. + + Returns: + A Flatbuffers Python object of the custom metadata including object + detector options metadata. + """ + detector_options = _detector_metadata_fb.ObjectDetectorOptionsT() + + # Set ssd_anchors_options. + ssd_anchors_options = _detector_metadata_fb.SsdAnchorsOptionsT() + fixed_anchors_schema = _detector_metadata_fb.FixedAnchorsSchemaT() + fixed_anchors_schema.anchors = [] + for anchor in self.ssd_anchors_options.fixed_anchors_schema.anchors: + anchor_t = _detector_metadata_fb.FixedAnchorT() + anchor_t.xCenter = anchor.x_center + anchor_t.yCenter = anchor.y_center + anchor_t.width = anchor.width + anchor_t.height = anchor.height + fixed_anchors_schema.anchors.append(anchor_t) + ssd_anchors_options.fixedAnchorsSchema = fixed_anchors_schema + detector_options.ssdAnchorsOptions = ssd_anchors_options + + # Set tensors_decoding_options. + tensors_decoding_options = _detector_metadata_fb.TensorsDecodingOptionsT() + tensors_decoding_options.numClasses = ( + self.tensors_decoding_options.num_classes + ) + tensors_decoding_options.numBoxes = self.tensors_decoding_options.num_boxes + tensors_decoding_options.numCoords = ( + self.tensors_decoding_options.num_coords + ) + tensors_decoding_options.keypointCoordOffset = ( + self.tensors_decoding_options.keypoint_coord_offset + ) + tensors_decoding_options.numKeypoints = ( + self.tensors_decoding_options.num_keypoints + ) + tensors_decoding_options.numValuesPerKeypoint = ( + self.tensors_decoding_options.num_values_per_keypoint + ) + tensors_decoding_options.xScale = self.tensors_decoding_options.x_scale + tensors_decoding_options.yScale = self.tensors_decoding_options.y_scale + tensors_decoding_options.wScale = self.tensors_decoding_options.w_scale + tensors_decoding_options.hScale = self.tensors_decoding_options.h_scale + tensors_decoding_options.applyExponentialOnBoxSize = ( + self.tensors_decoding_options.apply_exponential_on_box_size + ) + tensors_decoding_options.sigmoidScore = ( + self.tensors_decoding_options.sigmoid_score + ) + detector_options.tensorsDecodingOptions = tensors_decoding_options + + # Get the object detector options flatbuffer. + b = flatbuffers.Builder(0) + b.Finish(detector_options.Pack(b), self._METADATA_FILE_IDENTIFIER) + detector_options_buf = b.Output() + + # Add the object detector options flatbuffer in custom metadata. + custom_metadata = _metadata_fb.CustomMetadataT() + custom_metadata.name = self.name + custom_metadata.data = detector_options_buf + return custom_metadata + class MetadataWriter(metadata_writer.MetadataWriterBase): """MetadataWriter to write the metadata into the object detector.""" @classmethod - def create( + def create_for_models_with_nms( cls, model_buffer: bytearray, input_norm_mean: List[float], @@ -38,7 +219,9 @@ class MetadataWriter(metadata_writer.MetadataWriterBase): labels: metadata_writer.Labels, score_calibration: Optional[metadata_writer.ScoreCalibration] = None, ) -> "MetadataWriter": - """Creates MetadataWriter to write the metadata for image classifier. + """Creates MetadataWriter to write the metadata for object detector with postprocessing in the model. + + This method create a metadata writer for the models with postprocessing [1]. The parameters required in this method are mandatory when using MediaPipe Tasks. @@ -54,18 +237,20 @@ class MetadataWriter(metadata_writer.MetadataWriterBase): Args: model_buffer: A valid flatbuffer loaded from the TFLite model file. input_norm_mean: the mean value used in the input tensor normalization - [1]. - input_norm_std: the std value used in the input tensor normalizarion [1]. + [2]. + input_norm_std: the std value used in the input tensor normalizarion [2]. labels: an instance of Labels helper class used in the output - classification tensor [2]. - score_calibration: A container of the score calibration operation [3] in + classification tensor [3]. + score_calibration: A container of the score calibration operation [4] in the classification tensor. Optional if the model does not use score calibration. [1]: - https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L389 + https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/kernels/detection_postprocess.cc [2]: - https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L99 + https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L389 [3]: + https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L99 + [4]: https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L456 Returns: @@ -76,3 +261,70 @@ class MetadataWriter(metadata_writer.MetadataWriterBase): writer.add_image_input(input_norm_mean, input_norm_std) writer.add_detection_output(labels, score_calibration) return cls(writer) + + @classmethod + def create_for_models_without_nms( + cls, + model_buffer: bytearray, + input_norm_mean: List[float], + input_norm_std: List[float], + labels: metadata_writer.Labels, + ssd_anchors_options: SsdAnchorsOptions, + tensors_decoding_options: TensorsDecodingOptions, + output_tensors_order: metadata_info.RawDetectionOutputTensorsOrder = metadata_info.RawDetectionOutputTensorsOrder.UNSPECIFIED, + ) -> "MetadataWriter": + """Creates MetadataWriter to write the metadata for object detector without postprocessing in the model. + + This method create a metadata writer for the models without postprocessing + [1]. + + The parameters required in this method are mandatory when using MediaPipe + Tasks. + + Example usage: + metadata_writer = object_detector.Metadatawriter.create(model_buffer, ...) + tflite_content, json_content = metadata_writer.populate() + + When calling `populate` function in this class, it returns TfLite content + and JSON content. Note that only the output TFLite is used for deployment. + The output JSON content is used to interpret the metadata content. + + Args: + model_buffer: A valid flatbuffer loaded from the TFLite model file. + input_norm_mean: the mean value used in the input tensor normalization + [2]. + input_norm_std: the std value used in the input tensor normalizarion [2]. + labels: an instance of Labels helper class used in the output + classification tensor [3]. + ssd_anchors_options: the ssd anchors options associated to the object + detector model. + tensors_decoding_options: the tensors decoding options used to decode the + object detector model output. + output_tensors_order: the order of the output tensors. + [1]: + https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/kernels/detection_postprocess.cc + [2]: + https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L389 + [3]: + https://github.com/google/mediapipe/blob/f8af41b1eb49ff4bdad756ff19d1d36f486be614/mediapipe/tasks/metadata/metadata_schema.fbs#L99 + + Returns: + A MetadataWriter object. + """ + writer = metadata_writer.MetadataWriter(model_buffer) + writer.add_general_info(_MODEL_NAME, _MODEL_DESCRIPTION) + writer.add_image_input(input_norm_mean, input_norm_std) + writer.add_raw_detection_output( + labels, output_tensors_order=output_tensors_order + ) + option_md = ObjectDetectorOptionsMd( + ssd_anchors_options, tensors_decoding_options + ) + writer.add_custom_metadata(option_md) + return cls(writer) + + def populate(self) -> "tuple[bytearray, str]": + model_buf, _ = super().populate() + metadata_buf = metadata.get_metadata_buffer(model_buf) + json_content = convert_to_json(metadata_buf) + return model_buf, json_content diff --git a/mediapipe/tasks/python/metadata/metadata_writers/text_classifier.py b/mediapipe/tasks/python/metadata/metadata_writers/text_classifier.py index b9abb6b5..787fcd7a 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/text_classifier.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/text_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/metadata/metadata_writers/writer_utils.py b/mediapipe/tasks/python/metadata/metadata_writers/writer_utils.py index 13586f63..803f06e1 100644 --- a/mediapipe/tasks/python/metadata/metadata_writers/writer_utils.py +++ b/mediapipe/tasks/python/metadata/metadata_writers/writer_utils.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/BUILD b/mediapipe/tasks/python/test/BUILD index fb608f12..252440bf 100644 --- a/mediapipe/tasks/python/test/BUILD +++ b/mediapipe/tasks/python/test/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/__init__.py b/mediapipe/tasks/python/test/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/test/__init__.py +++ b/mediapipe/tasks/python/test/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/BUILD b/mediapipe/tasks/python/test/audio/BUILD index 3df78318..48f7bffe 100644 --- a/mediapipe/tasks/python/test/audio/BUILD +++ b/mediapipe/tasks/python/test/audio/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/__init__.py b/mediapipe/tasks/python/test/audio/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/test/audio/__init__.py +++ b/mediapipe/tasks/python/test/audio/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/audio_classifier_test.py b/mediapipe/tasks/python/test/audio/audio_classifier_test.py index 33f66786..7ace77f6 100644 --- a/mediapipe/tasks/python/test/audio/audio_classifier_test.py +++ b/mediapipe/tasks/python/test/audio/audio_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/audio_embedder_test.py b/mediapipe/tasks/python/test/audio/audio_embedder_test.py index e5735b6b..31c0f63f 100644 --- a/mediapipe/tasks/python/test/audio/audio_embedder_test.py +++ b/mediapipe/tasks/python/test/audio/audio_embedder_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/core/BUILD b/mediapipe/tasks/python/test/audio/core/BUILD index 2f9c66be..b7a8d6e1 100644 --- a/mediapipe/tasks/python/test/audio/core/BUILD +++ b/mediapipe/tasks/python/test/audio/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/audio/core/audio_record_test.py b/mediapipe/tasks/python/test/audio/core/audio_record_test.py index ac804b89..dea7de9b 100644 --- a/mediapipe/tasks/python/test/audio/core/audio_record_test.py +++ b/mediapipe/tasks/python/test/audio/core/audio_record_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_parser_test.py b/mediapipe/tasks/python/test/metadata/metadata_parser_test.py index 93b85108..29f17038 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_parser_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_parser_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_test.py b/mediapipe/tasks/python/test/metadata/metadata_test.py index c91bcce6..4f7d3407 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/BUILD b/mediapipe/tasks/python/test/metadata/metadata_writers/BUILD index 976ddc9d..66ddf54b 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/BUILD +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/BUILD @@ -86,6 +86,7 @@ py_test( deps = [ "//mediapipe/tasks/metadata:metadata_schema_py", "//mediapipe/tasks/python/metadata", + "//mediapipe/tasks/python/metadata/metadata_writers:metadata_info", "//mediapipe/tasks/python/metadata/metadata_writers:metadata_writer", "//mediapipe/tasks/python/metadata/metadata_writers:object_detector", "//mediapipe/tasks/python/test:test_utils", diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/image_classifier_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/image_classifier_test.py index 51f248d1..2e0b2477 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/image_classifier_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/image_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/image_segmenter_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/image_segmenter_test.py index a12f009c..9e0267b1 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/image_segmenter_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/image_segmenter_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_info_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_info_test.py index fd446263..fdf8a220 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_info_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_info_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_writer_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_writer_test.py index 84627491..f2bcb2a0 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_writer_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/metadata_writer_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/model_asset_bundle_utils_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/model_asset_bundle_utils_test.py index e4261393..1cca0458 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/model_asset_bundle_utils_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/model_asset_bundle_utils_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/object_detector_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/object_detector_test.py index 195a9c8e..b0e5d4c9 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/object_detector_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/object_detector_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # ============================================================================== """Tests for metadata_writer.object_detector.""" +import csv import os from absl.testing import absltest @@ -21,6 +22,7 @@ from absl.testing import parameterized from mediapipe.tasks.metadata import metadata_schema_py_generated as metadata_fb from mediapipe.tasks.python.metadata import metadata +from mediapipe.tasks.python.metadata.metadata_writers import metadata_info from mediapipe.tasks.python.metadata.metadata_writers import metadata_writer from mediapipe.tasks.python.metadata.metadata_writers import object_detector from mediapipe.tasks.python.test import test_utils @@ -48,6 +50,39 @@ _JSON_FOR_SCORE_CALIBRATION = test_utils.get_test_data_path( os.path.join(_TEST_DATA_DIR, "coco_ssd_mobilenet_v1_score_calibration.json") ) +_EFFICIENTDET_LITE0_ANCHORS_FILE = test_utils.get_test_data_path( + os.path.join(_TEST_DATA_DIR, "efficientdet_lite0_fp16_no_nms_anchors.csv") +) + + +def read_ssd_anchors_from_csv(file_path): + with open(file_path, "r") as anchors_file: + csv_reader = csv.reader(anchors_file, delimiter=",") + parameters = [] + for row in csv_reader: + if not row: + parameters.append(None) + continue + if len(row) != 4: + raise ValueError( + "Expected empty lines or 4 parameters per line in " + f"anchors file, but got {len(row)}." + ) + parameters.append(row) + anchors = [] + for parameter in parameters: + anchors.append( + object_detector.FixedAnchor( + x_center=float(parameter[1]), + y_center=float(parameter[0]), + width=float(parameter[3]), + height=float(parameter[2]), + ) + ) + return object_detector.SsdAnchorsOptions( + fixed_anchors_schema=object_detector.FixedAnchorsSchema(anchors) + ) + class MetadataWriterTest(parameterized.TestCase, absltest.TestCase): @@ -61,37 +96,41 @@ class MetadataWriterTest(parameterized.TestCase, absltest.TestCase): ) with open(model_path, "rb") as f: model_buffer = f.read() - writer = object_detector.MetadataWriter.create( - model_buffer, - [_NORM_MEAN], - [_NORM_STD], - labels=metadata_writer.Labels().add_from_file(_LABEL_FILE), + writer = ( + object_detector.MetadataWriter.create_for_models_with_nms( + model_buffer, + [_NORM_MEAN], + [_NORM_STD], + labels=metadata_writer.Labels().add_from_file(_LABEL_FILE), + ) ) _, metadata_json = writer.populate() expected_json_path = test_utils.get_test_data_path( os.path.join(_TEST_DATA_DIR, model_name + ".json") ) with open(expected_json_path, "r") as f: - expected_json = f.read() + expected_json = f.read().strip() self.assertEqual(metadata_json, expected_json) def test_create_with_score_calibration_should_succeed(self): with open(_MODEL_COCO, "rb") as f: model_buffer = f.read() - writer = object_detector.MetadataWriter.create( - model_buffer, - [_NORM_MEAN], - [_NORM_STD], - labels=metadata_writer.Labels().add_from_file(_LABEL_FILE), - score_calibration=metadata_writer.ScoreCalibration.create_from_file( - metadata_fb.ScoreTransformationType.INVERSE_LOGISTIC, - _SCORE_CALIBRATION_FILE, - _SCORE_CALIBRATION_DEFAULT_SCORE, - ), + writer = ( + object_detector.MetadataWriter.create_for_models_with_nms( + model_buffer, + [_NORM_MEAN], + [_NORM_STD], + labels=metadata_writer.Labels().add_from_file(_LABEL_FILE), + score_calibration=metadata_writer.ScoreCalibration.create_from_file( + metadata_fb.ScoreTransformationType.INVERSE_LOGISTIC, + _SCORE_CALIBRATION_FILE, + _SCORE_CALIBRATION_DEFAULT_SCORE, + ), + ) ) tflite_content, metadata_json = writer.populate() with open(_JSON_FOR_SCORE_CALIBRATION, "r") as f: - expected_json = f.read() + expected_json = f.read().strip() self.assertEqual(metadata_json, expected_json) displayer = metadata.MetadataDisplayer.with_model_buffer(tflite_content) diff --git a/mediapipe/tasks/python/test/metadata/metadata_writers/text_classifier_test.py b/mediapipe/tasks/python/test/metadata/metadata_writers/text_classifier_test.py index b8793d96..22ca00b7 100644 --- a/mediapipe/tasks/python/test/metadata/metadata_writers/text_classifier_test.py +++ b/mediapipe/tasks/python/test/metadata/metadata_writers/text_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/test_utils.py b/mediapipe/tasks/python/test/test_utils.py index 23ee4abe..2dfc5a8c 100644 --- a/mediapipe/tasks/python/test/test_utils.py +++ b/mediapipe/tasks/python/test/test_utils.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/text/BUILD b/mediapipe/tasks/python/test/text/BUILD index 5f855163..8d25f278 100644 --- a/mediapipe/tasks/python/test/text/BUILD +++ b/mediapipe/tasks/python/test/text/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/text/__init__.py b/mediapipe/tasks/python/test/text/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/test/text/__init__.py +++ b/mediapipe/tasks/python/test/text/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/text/text_classifier_test.py b/mediapipe/tasks/python/test/text/text_classifier_test.py index 6fea4c6f..c9deda7c 100644 --- a/mediapipe/tasks/python/test/text/text_classifier_test.py +++ b/mediapipe/tasks/python/test/text/text_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/text/text_embedder_test.py b/mediapipe/tasks/python/test/text/text_embedder_test.py index 62d162f6..27726b70 100644 --- a/mediapipe/tasks/python/test/text/text_embedder_test.py +++ b/mediapipe/tasks/python/test/text/text_embedder_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/BUILD b/mediapipe/tasks/python/test/vision/BUILD index 704e1af5..d5d7f467 100644 --- a/mediapipe/tasks/python/test/vision/BUILD +++ b/mediapipe/tasks/python/test/vision/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/__init__.py b/mediapipe/tasks/python/test/vision/__init__.py index 65c1214a..3fbc1e8a 100644 --- a/mediapipe/tasks/python/test/vision/__init__.py +++ b/mediapipe/tasks/python/test/vision/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/face_detector_test.py b/mediapipe/tasks/python/test/vision/face_detector_test.py index 4ae8101b..c9246c0b 100644 --- a/mediapipe/tasks/python/test/vision/face_detector_test.py +++ b/mediapipe/tasks/python/test/vision/face_detector_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/face_landmarker_test.py b/mediapipe/tasks/python/test/vision/face_landmarker_test.py index 0cf16f3e..b9199919 100644 --- a/mediapipe/tasks/python/test/vision/face_landmarker_test.py +++ b/mediapipe/tasks/python/test/vision/face_landmarker_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/hand_landmarker_test.py b/mediapipe/tasks/python/test/vision/hand_landmarker_test.py index a7aea1cb..1e8ebe7f 100644 --- a/mediapipe/tasks/python/test/vision/hand_landmarker_test.py +++ b/mediapipe/tasks/python/test/vision/hand_landmarker_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/image_classifier_test.py b/mediapipe/tasks/python/test/vision/image_classifier_test.py index f1bbc128..54be3428 100644 --- a/mediapipe/tasks/python/test/vision/image_classifier_test.py +++ b/mediapipe/tasks/python/test/vision/image_classifier_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/image_embedder_test.py b/mediapipe/tasks/python/test/vision/image_embedder_test.py index 8c7fb59a..029fe15b 100644 --- a/mediapipe/tasks/python/test/vision/image_embedder_test.py +++ b/mediapipe/tasks/python/test/vision/image_embedder_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/image_segmenter_test.py b/mediapipe/tasks/python/test/vision/image_segmenter_test.py index 1a534c98..50cb2f4c 100644 --- a/mediapipe/tasks/python/test/vision/image_segmenter_test.py +++ b/mediapipe/tasks/python/test/vision/image_segmenter_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/interactive_segmenter_test.py b/mediapipe/tasks/python/test/vision/interactive_segmenter_test.py index 2e0039b1..1ebb81a7 100644 --- a/mediapipe/tasks/python/test/vision/interactive_segmenter_test.py +++ b/mediapipe/tasks/python/test/vision/interactive_segmenter_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/test/vision/object_detector_test.py b/mediapipe/tasks/python/test/vision/object_detector_test.py index 8fdd81c1..7878e7f5 100644 --- a/mediapipe/tasks/python/test/vision/object_detector_test.py +++ b/mediapipe/tasks/python/test/vision/object_detector_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/BUILD b/mediapipe/tasks/python/text/BUILD index b1dd3feb..e2f9aac8 100644 --- a/mediapipe/tasks/python/text/BUILD +++ b/mediapipe/tasks/python/text/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/__init__.py b/mediapipe/tasks/python/text/__init__.py index ecf3a0ad..5aa221c3 100644 --- a/mediapipe/tasks/python/text/__init__.py +++ b/mediapipe/tasks/python/text/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/core/BUILD b/mediapipe/tasks/python/text/core/BUILD index e76bd4b6..8de4c6a0 100644 --- a/mediapipe/tasks/python/text/core/BUILD +++ b/mediapipe/tasks/python/text/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/core/base_text_task_api.py b/mediapipe/tasks/python/text/core/base_text_task_api.py index 1d631156..20958e82 100644 --- a/mediapipe/tasks/python/text/core/base_text_task_api.py +++ b/mediapipe/tasks/python/text/core/base_text_task_api.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/text_classifier.py b/mediapipe/tasks/python/text/text_classifier.py index fdb20f0e..7c2cd493 100644 --- a/mediapipe/tasks/python/text/text_classifier.py +++ b/mediapipe/tasks/python/text/text_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/text/text_embedder.py b/mediapipe/tasks/python/text/text_embedder.py index be899636..b34a2e49 100644 --- a/mediapipe/tasks/python/text/text_embedder.py +++ b/mediapipe/tasks/python/text/text_embedder.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/BUILD b/mediapipe/tasks/python/vision/BUILD index 71675779..733631a2 100644 --- a/mediapipe/tasks/python/vision/BUILD +++ b/mediapipe/tasks/python/vision/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/__init__.py b/mediapipe/tasks/python/vision/__init__.py index 53cbf026..75a8bd32 100644 --- a/mediapipe/tasks/python/vision/__init__.py +++ b/mediapipe/tasks/python/vision/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/core/BUILD b/mediapipe/tasks/python/vision/core/BUILD index 18df690a..435a3b1e 100644 --- a/mediapipe/tasks/python/vision/core/BUILD +++ b/mediapipe/tasks/python/vision/core/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/core/__init__.py b/mediapipe/tasks/python/vision/core/__init__.py index ad7f0fd9..701d7237 100644 --- a/mediapipe/tasks/python/vision/core/__init__.py +++ b/mediapipe/tasks/python/vision/core/__init__.py @@ -1,4 +1,4 @@ -"""Copyright 2022 The MediaPipe Authors. All Rights Reserved. +"""Copyright 2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/core/base_vision_task_api.py b/mediapipe/tasks/python/vision/core/base_vision_task_api.py index 3775f223..a88c6350 100644 --- a/mediapipe/tasks/python/vision/core/base_vision_task_api.py +++ b/mediapipe/tasks/python/vision/core/base_vision_task_api.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/core/image_processing_options.py b/mediapipe/tasks/python/vision/core/image_processing_options.py index 9a0cd2b4..b6dbeefe 100644 --- a/mediapipe/tasks/python/vision/core/image_processing_options.py +++ b/mediapipe/tasks/python/vision/core/image_processing_options.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/core/vision_task_running_mode.py b/mediapipe/tasks/python/vision/core/vision_task_running_mode.py index ba551084..f4e96ebc 100644 --- a/mediapipe/tasks/python/vision/core/vision_task_running_mode.py +++ b/mediapipe/tasks/python/vision/core/vision_task_running_mode.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/face_detector.py b/mediapipe/tasks/python/vision/face_detector.py index cf09a378..9d28123e 100644 --- a/mediapipe/tasks/python/vision/face_detector.py +++ b/mediapipe/tasks/python/vision/face_detector.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/face_landmarker.py b/mediapipe/tasks/python/vision/face_landmarker.py index c5b24499..a6750c71 100644 --- a/mediapipe/tasks/python/vision/face_landmarker.py +++ b/mediapipe/tasks/python/vision/face_landmarker.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/face_stylizer.py b/mediapipe/tasks/python/vision/face_stylizer.py index 0b10a2b4..3fe3dd1b 100644 --- a/mediapipe/tasks/python/vision/face_stylizer.py +++ b/mediapipe/tasks/python/vision/face_stylizer.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/gesture_recognizer.py b/mediapipe/tasks/python/vision/gesture_recognizer.py index 7d480c95..ab43408a 100644 --- a/mediapipe/tasks/python/vision/gesture_recognizer.py +++ b/mediapipe/tasks/python/vision/gesture_recognizer.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/hand_landmarker.py b/mediapipe/tasks/python/vision/hand_landmarker.py index e6fcca2e..33f72ba1 100644 --- a/mediapipe/tasks/python/vision/hand_landmarker.py +++ b/mediapipe/tasks/python/vision/hand_landmarker.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/image_classifier.py b/mediapipe/tasks/python/vision/image_classifier.py index eda348fc..1f76ba9f 100644 --- a/mediapipe/tasks/python/vision/image_classifier.py +++ b/mediapipe/tasks/python/vision/image_classifier.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/image_embedder.py b/mediapipe/tasks/python/vision/image_embedder.py index 511fc3c5..def5a90a 100644 --- a/mediapipe/tasks/python/vision/image_embedder.py +++ b/mediapipe/tasks/python/vision/image_embedder.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/image_segmenter.py b/mediapipe/tasks/python/vision/image_segmenter.py index 5d9af86c..2878c9c8 100644 --- a/mediapipe/tasks/python/vision/image_segmenter.py +++ b/mediapipe/tasks/python/vision/image_segmenter.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/interactive_segmenter.py b/mediapipe/tasks/python/vision/interactive_segmenter.py index 1d9f5cf1..0cca4b0f 100644 --- a/mediapipe/tasks/python/vision/interactive_segmenter.py +++ b/mediapipe/tasks/python/vision/interactive_segmenter.py @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All Rights Reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/python/vision/object_detector.py b/mediapipe/tasks/python/vision/object_detector.py index 02346723..3bdd1b5d 100644 --- a/mediapipe/tasks/python/vision/object_detector.py +++ b/mediapipe/tasks/python/vision/object_detector.py @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/testdata/metadata/BUILD b/mediapipe/tasks/testdata/metadata/BUILD index e335831a..710e9d8c 100644 --- a/mediapipe/tasks/testdata/metadata/BUILD +++ b/mediapipe/tasks/testdata/metadata/BUILD @@ -32,7 +32,7 @@ mediapipe_files(srcs = [ "deeplabv3_with_activation.json", "deeplabv3_without_labels.json", "deeplabv3_without_metadata.tflite", - "efficientdet_lite0_v1.json", + "efficientdet_lite0_fp16_no_nms.tflite", "efficientdet_lite0_v1.tflite", "labelmap.txt", "mobile_ica_8bit-with-custom-metadata.tflite", @@ -64,6 +64,8 @@ exports_files([ "classification_tensor_float_meta.json", "classification_tensor_uint8_meta.json", "classification_tensor_unsupported_meta.json", + "efficientdet_lite0_fp16_no_nms_anchors.csv", + "efficientdet_lite0_fp16_no_nms.json", "feature_tensor_meta.json", "image_tensor_meta.json", "input_image_tensor_float_meta.json", @@ -94,6 +96,7 @@ filegroup( "bert_text_classifier_no_metadata.tflite", "coco_ssd_mobilenet_v1_1.0_quant_2018_06_29_no_metadata.tflite", "deeplabv3_without_metadata.tflite", + "efficientdet_lite0_fp16_no_nms.tflite", "efficientdet_lite0_v1.tflite", "mobile_ica_8bit-with-custom-metadata.tflite", "mobile_ica_8bit-with-large-min-parser-version.tflite", @@ -126,6 +129,7 @@ filegroup( "deeplabv3.json", "deeplabv3_with_activation.json", "deeplabv3_without_labels.json", + "efficientdet_lite0_fp16_no_nms_anchors.csv", "efficientdet_lite0_v1.json", "external_file", "feature_tensor_meta.json", diff --git a/mediapipe/tasks/testdata/metadata/coco_ssd_mobilenet_v1_score_calibration.json b/mediapipe/tasks/testdata/metadata/coco_ssd_mobilenet_v1_score_calibration.json index e24aa2e6..8459fdf1 100644 --- a/mediapipe/tasks/testdata/metadata/coco_ssd_mobilenet_v1_score_calibration.json +++ b/mediapipe/tasks/testdata/metadata/coco_ssd_mobilenet_v1_score_calibration.json @@ -56,23 +56,20 @@ "max": 2 } }, - "stats": { - } + "stats": {} }, { "name": "category", "description": "The categories of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 } }, - "stats": { - }, + "stats": {}, "associated_files": [ { "name": "labels.txt", @@ -86,8 +83,7 @@ "description": "The scores of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 @@ -102,8 +98,7 @@ } } ], - "stats": { - }, + "stats": {}, "associated_files": [ { "name": "score_calibration.txt", @@ -117,11 +112,9 @@ "description": "The number of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - } + "content_properties": {} }, - "stats": { - } + "stats": {} } ], "output_tensor_groups": [ diff --git a/mediapipe/tasks/testdata/metadata/efficientdet_lite0_fp16_no_nms_anchors.csv b/mediapipe/tasks/testdata/metadata/efficientdet_lite0_fp16_no_nms_anchors.csv new file mode 100644 index 00000000..e8abc1f3 --- /dev/null +++ b/mediapipe/tasks/testdata/metadata/efficientdet_lite0_fp16_no_nms_anchors.csv @@ -0,0 +1,19206 @@ +0.0125,0.0125,0.075,0.075 +0.012499999,0.012499997,0.05303301,0.10606602 +0.012499997,0.012499999,0.10606602,0.05303301 +0.012499999,0.012499999,0.09449408,0.09449408 +0.012499999,0.012500001,0.0668174,0.1336348 +0.012500001,0.012499999,0.1336348,0.0668174 +0.012500001,0.012500001,0.11905508,0.11905508 +0.012500002,0.012499999,0.084184654,0.1683693 +0.012499999,0.012500002,0.1683693,0.084184654 +0.0125,0.0375,0.075,0.075 +0.012499999,0.037499998,0.05303301,0.10606601 +0.012499997,0.0375,0.10606602,0.05303301 +0.012499999,0.0375,0.09449408,0.094494075 +0.012499999,0.0375,0.0668174,0.1336348 +0.012500001,0.0375,0.1336348,0.0668174 +0.012500001,0.0375,0.11905508,0.11905508 +0.012500002,0.0375,0.084184654,0.16836931 +0.012499999,0.0375,0.1683693,0.08418466 +0.0125,0.0625,0.075,0.075 +0.012499999,0.0625,0.05303301,0.10606602 +0.012499997,0.0625,0.10606602,0.05303301 +0.012499999,0.0625,0.09449408,0.094494075 +0.012499999,0.0625,0.0668174,0.1336348 +0.012500001,0.0625,0.1336348,0.0668174 +0.012500001,0.0625,0.11905508,0.11905508 +0.012500002,0.0625,0.084184654,0.16836932 +0.012499999,0.0625,0.1683693,0.08418465 +0.0125,0.0875,0.075,0.075 +0.012499999,0.08749999,0.05303301,0.10606601 +0.012499997,0.087500006,0.10606602,0.053033013 +0.012499999,0.087500006,0.09449408,0.09449408 +0.012499999,0.087500006,0.0668174,0.1336348 +0.012500001,0.0875,0.1336348,0.0668174 +0.012500001,0.0875,0.11905508,0.11905508 +0.012500002,0.0875,0.084184654,0.16836931 +0.012499999,0.087500006,0.1683693,0.084184654 +0.0125,0.112500004,0.075,0.075 +0.012499999,0.1125,0.05303301,0.10606601 +0.012499997,0.112500004,0.10606602,0.05303301 +0.012499999,0.1125,0.09449408,0.094494075 +0.012499999,0.1125,0.0668174,0.1336348 +0.012500001,0.1125,0.1336348,0.0668174 +0.012500001,0.1125,0.11905508,0.119055085 +0.012500002,0.112500004,0.084184654,0.16836931 +0.012499999,0.1125,0.1683693,0.08418465 +0.0125,0.1375,0.075,0.074999996 +0.012499999,0.1375,0.05303301,0.10606602 +0.012499997,0.1375,0.10606602,0.053033024 +0.012499999,0.1375,0.09449408,0.09449408 +0.012499999,0.1375,0.0668174,0.1336348 +0.012500001,0.1375,0.1336348,0.0668174 +0.012500001,0.13749999,0.11905508,0.11905508 +0.012500002,0.1375,0.084184654,0.1683693 +0.012499999,0.1375,0.1683693,0.084184654 +0.0125,0.1625,0.075,0.075 +0.012499999,0.16250001,0.05303301,0.106066026 +0.012499997,0.1625,0.10606602,0.05303301 +0.012499999,0.1625,0.09449408,0.094494075 +0.012499999,0.1625,0.0668174,0.1336348 +0.012500001,0.1625,0.1336348,0.0668174 +0.012500001,0.1625,0.11905508,0.11905508 +0.012500002,0.1625,0.084184654,0.1683693 +0.012499999,0.1625,0.1683693,0.08418464 +0.0125,0.1875,0.075,0.07499999 +0.012499999,0.1875,0.05303301,0.10606603 +0.012499997,0.1875,0.10606602,0.053033024 +0.012499999,0.1875,0.09449408,0.09449406 +0.012499999,0.1875,0.0668174,0.1336348 +0.012500001,0.1875,0.1336348,0.06681742 +0.012500001,0.1875,0.11905508,0.11905509 +0.012500002,0.1875,0.084184654,0.16836931 +0.012499999,0.1875,0.1683693,0.08418465 +0.0125,0.2125,0.075,0.075 +0.012499999,0.2125,0.05303301,0.10606603 +0.012499997,0.2125,0.10606602,0.05303301 +0.012499999,0.21249999,0.09449408,0.094494075 +0.012499999,0.2125,0.0668174,0.1336348 +0.012500001,0.2125,0.1336348,0.0668174 +0.012500001,0.2125,0.11905508,0.11905509 +0.012500002,0.2125,0.084184654,0.16836931 +0.012499999,0.2125,0.1683693,0.08418465 +0.0125,0.23750001,0.075,0.075 +0.012499999,0.2375,0.05303301,0.10606602 +0.012499997,0.2375,0.10606602,0.053033024 +0.012499999,0.2375,0.09449408,0.094494075 +0.012499999,0.23750001,0.0668174,0.13363482 +0.012500001,0.2375,0.1336348,0.06681743 +0.012500001,0.2375,0.11905508,0.11905506 +0.012500002,0.2375,0.084184654,0.16836932 +0.012499999,0.23750001,0.1683693,0.08418466 +0.0125,0.2625,0.075,0.07500002 +0.012499999,0.2625,0.05303301,0.10606603 +0.012499997,0.2625,0.10606602,0.053033024 +0.012499999,0.2625,0.09449408,0.094494075 +0.012499999,0.2625,0.0668174,0.13363479 +0.012500001,0.2625,0.1336348,0.06681743 +0.012500001,0.2625,0.11905508,0.11905508 +0.012500002,0.2625,0.084184654,0.1683693 +0.012499999,0.2625,0.1683693,0.08418463 +0.0125,0.2875,0.075,0.07499999 +0.012499999,0.2875,0.05303301,0.10606603 +0.012499997,0.28750002,0.10606602,0.053033024 +0.012499999,0.2875,0.09449408,0.094494045 +0.012499999,0.2875,0.0668174,0.1336348 +0.012500001,0.28750002,0.1336348,0.06681743 +0.012500001,0.2875,0.11905508,0.11905508 +0.012500002,0.2875,0.084184654,0.1683693 +0.012499999,0.2875,0.1683693,0.08418465 +0.0125,0.3125,0.075,0.07499999 +0.012499999,0.3125,0.05303301,0.10606605 +0.012499997,0.3125,0.10606602,0.053032994 +0.012499999,0.3125,0.09449408,0.094494045 +0.012499999,0.3125,0.0668174,0.1336348 +0.012500001,0.3125,0.1336348,0.0668174 +0.012500001,0.3125,0.11905508,0.11905509 +0.012500002,0.3125,0.084184654,0.1683693 +0.012499999,0.3125,0.1683693,0.08418465 +0.0125,0.3375,0.075,0.07499999 +0.012499999,0.3375,0.05303301,0.10606605 +0.012499997,0.33749998,0.10606602,0.053033024 +0.012499999,0.3375,0.09449408,0.094494045 +0.012499999,0.33750004,0.0668174,0.13363484 +0.012500001,0.33749998,0.1336348,0.06681743 +0.012500001,0.3375,0.11905508,0.11905509 +0.012500002,0.3375,0.084184654,0.1683693 +0.012499999,0.3375,0.1683693,0.08418465 +0.0125,0.3625,0.075,0.07500002 +0.012499999,0.3625,0.05303301,0.10606602 +0.012499997,0.3625,0.10606602,0.053033024 +0.012499999,0.3625,0.09449408,0.094494075 +0.012499999,0.3625,0.0668174,0.1336348 +0.012500001,0.3625,0.1336348,0.06681743 +0.012500001,0.3625,0.11905508,0.11905506 +0.012500002,0.3625,0.084184654,0.1683693 +0.012499999,0.3625,0.1683693,0.08418465 +0.0125,0.3875,0.075,0.07500002 +0.012499999,0.3875,0.05303301,0.10606602 +0.012499997,0.3875,0.10606602,0.053032994 +0.012499999,0.3875,0.09449408,0.094494075 +0.012499999,0.3875,0.0668174,0.13363484 +0.012500001,0.3875,0.1336348,0.0668174 +0.012500001,0.3875,0.11905508,0.11905506 +0.012500002,0.3875,0.084184654,0.1683693 +0.012499999,0.3875,0.1683693,0.08418465 +0.0125,0.4125,0.075,0.07499999 +0.012499999,0.4125,0.05303301,0.10606605 +0.012499997,0.4125,0.10606602,0.053032994 +0.012499999,0.4125,0.09449408,0.094494045 +0.012499999,0.41250002,0.0668174,0.13363484 +0.012500001,0.4125,0.1336348,0.0668174 +0.012500001,0.4125,0.11905508,0.11905509 +0.012500002,0.4125,0.084184654,0.1683693 +0.012499999,0.4125,0.1683693,0.08418465 +0.0125,0.4375,0.075,0.07499999 +0.012499999,0.4375,0.05303301,0.10606605 +0.012499997,0.4375,0.10606602,0.053032994 +0.012499999,0.4375,0.09449408,0.094494045 +0.012499999,0.4375,0.0668174,0.1336348 +0.012500001,0.4375,0.1336348,0.0668174 +0.012500001,0.4375,0.11905508,0.11905509 +0.012500002,0.4375,0.084184654,0.1683693 +0.012499999,0.4375,0.1683693,0.08418465 +0.0125,0.4625,0.075,0.07499999 +0.012499999,0.4625,0.05303301,0.10606605 +0.012499997,0.46249998,0.10606602,0.053032964 +0.012499999,0.4625,0.09449408,0.094494045 +0.012499999,0.46250004,0.0668174,0.13363484 +0.012500001,0.46249998,0.1336348,0.06681737 +0.012500001,0.4625,0.11905508,0.11905509 +0.012500002,0.46249998,0.084184654,0.16836926 +0.012499999,0.46249998,0.1683693,0.08418462 +0.0125,0.48749998,0.075,0.07499999 +0.012499999,0.4875,0.05303301,0.10606602 +0.012499997,0.4875,0.10606602,0.053032994 +0.012499999,0.48749998,0.09449408,0.094494045 +0.012499999,0.4875,0.0668174,0.13363484 +0.012500001,0.4875,0.1336348,0.0668174 +0.012500001,0.4875,0.11905508,0.11905506 +0.012500002,0.4875,0.084184654,0.1683693 +0.012499999,0.4875,0.1683693,0.08418465 +0.0125,0.5125,0.075,0.07500002 +0.012499999,0.51250005,0.05303301,0.10606605 +0.012499997,0.5125,0.10606602,0.053032964 +0.012499999,0.5125,0.09449408,0.094494075 +0.012499999,0.51250005,0.0668174,0.13363487 +0.012500001,0.5125,0.1336348,0.06681737 +0.012500001,0.51250005,0.11905508,0.11905509 +0.012500002,0.5125,0.084184654,0.1683693 +0.012499999,0.5125,0.1683693,0.08418465 +0.0125,0.5375,0.075,0.07499999 +0.012499999,0.5375,0.05303301,0.10606605 +0.012499997,0.5375,0.10606602,0.053032935 +0.012499999,0.5375,0.09449408,0.094494045 +0.012499999,0.5375,0.0668174,0.13363487 +0.012500001,0.5375,0.1336348,0.06681734 +0.012500001,0.5375,0.11905508,0.11905509 +0.012500002,0.5375,0.084184654,0.16836932 +0.012499999,0.5375,0.1683693,0.08418468 +0.0125,0.5625,0.075,0.07500005 +0.012499999,0.5625,0.05303301,0.10606599 +0.012499997,0.5625,0.10606602,0.053032994 +0.012499999,0.5625,0.09449408,0.094494104 +0.012499999,0.5625,0.0668174,0.13363484 +0.012500001,0.5625,0.1336348,0.0668174 +0.012500001,0.5625,0.11905508,0.11905503 +0.012500002,0.5625,0.084184654,0.1683693 +0.012499999,0.5625,0.1683693,0.08418465 +0.0125,0.5875,0.075,0.07499999 +0.012499999,0.5875,0.05303301,0.10606605 +0.012499997,0.5875,0.10606602,0.053032935 +0.012499999,0.5875,0.09449408,0.094494045 +0.012499999,0.5875,0.0668174,0.13363487 +0.012500001,0.5875,0.1336348,0.06681734 +0.012500001,0.5875,0.11905508,0.11905509 +0.012500002,0.5875,0.084184654,0.1683693 +0.012499999,0.5875,0.1683693,0.08418465 +0.0125,0.61249995,0.075,0.07499999 +0.012499999,0.61249995,0.05303301,0.10606605 +0.012499997,0.6125,0.10606602,0.053032994 +0.012499999,0.61249995,0.09449408,0.094494045 +0.012499999,0.61249995,0.0668174,0.13363487 +0.012500001,0.6125,0.1336348,0.0668174 +0.012500001,0.61249995,0.11905508,0.11905509 +0.012500002,0.6125,0.084184654,0.1683693 +0.012499999,0.6125,0.1683693,0.08418465 +0.0125,0.63750005,0.075,0.07499999 +0.012499999,0.63750005,0.05303301,0.10606605 +0.012499997,0.6375,0.10606602,0.053032994 +0.012499999,0.63750005,0.09449408,0.094494045 +0.012499999,0.63750005,0.0668174,0.13363487 +0.012500001,0.6375,0.1336348,0.0668174 +0.012500001,0.63750005,0.11905508,0.11905509 +0.012500002,0.6375,0.084184654,0.1683693 +0.012499999,0.6375,0.1683693,0.08418465 +0.0125,0.6625,0.075,0.07499999 +0.012499999,0.6625,0.05303301,0.10606605 +0.012499997,0.6625,0.10606602,0.053032935 +0.012499999,0.6625,0.09449408,0.094494045 +0.012499999,0.6625,0.0668174,0.13363487 +0.012500001,0.6625,0.1336348,0.06681734 +0.012500001,0.6625,0.11905508,0.11905509 +0.012500002,0.6625,0.084184654,0.1683693 +0.012499999,0.6625,0.1683693,0.08418465 +0.0125,0.6875,0.075,0.07500005 +0.012499999,0.6875,0.05303301,0.10606599 +0.012499997,0.6875,0.10606602,0.053032994 +0.012499999,0.6875,0.09449408,0.094494104 +0.012499999,0.6875,0.0668174,0.1336348 +0.012500001,0.6875,0.1336348,0.0668174 +0.012500001,0.6875,0.11905508,0.11905503 +0.012500002,0.6875,0.084184654,0.1683693 +0.012499999,0.6875,0.1683693,0.08418465 +0.0125,0.7125,0.075,0.07499999 +0.012499999,0.7125,0.05303301,0.10606605 +0.012499997,0.7125,0.10606602,0.053032935 +0.012499999,0.7125,0.09449408,0.094494045 +0.012499999,0.7125,0.0668174,0.13363487 +0.012500001,0.7125,0.1336348,0.06681734 +0.012500001,0.7125,0.11905508,0.11905509 +0.012500002,0.7125,0.084184654,0.1683693 +0.012499999,0.7125,0.1683693,0.08418465 +0.0125,0.73749995,0.075,0.07499999 +0.012499999,0.73749995,0.05303301,0.10606605 +0.012499997,0.7375,0.10606602,0.053032994 +0.012499999,0.73749995,0.09449408,0.094494045 +0.012499999,0.73749995,0.0668174,0.1336348 +0.012500001,0.7375,0.1336348,0.0668174 +0.012500001,0.73749995,0.11905508,0.11905509 +0.012500002,0.7375,0.084184654,0.1683693 +0.012499999,0.7375,0.1683693,0.08418465 +0.0125,0.76250005,0.075,0.07499999 +0.012499999,0.7625,0.05303301,0.10606599 +0.012499997,0.7625,0.10606602,0.053032994 +0.012499999,0.76250005,0.09449408,0.094494045 +0.012499999,0.7625,0.0668174,0.1336348 +0.012500001,0.7625,0.1336348,0.0668174 +0.012500001,0.7625,0.11905508,0.11905503 +0.012500002,0.7625,0.084184654,0.1683693 +0.012499999,0.7625,0.1683693,0.08418465 +0.0125,0.7875,0.075,0.07499999 +0.012499999,0.78749996,0.05303301,0.10606599 +0.012499997,0.7875,0.10606602,0.053032994 +0.012499999,0.7875,0.09449408,0.094494045 +0.012499999,0.78749996,0.0668174,0.1336348 +0.012500001,0.7875,0.1336348,0.0668174 +0.012500001,0.78749996,0.11905508,0.11905503 +0.012500002,0.7875,0.084184654,0.1683693 +0.012499999,0.7875,0.1683693,0.08418465 +0.0125,0.8125,0.075,0.07500005 +0.012499999,0.8125,0.05303301,0.10606599 +0.012499997,0.8125,0.10606602,0.053033054 +0.012499999,0.8125,0.09449408,0.094494104 +0.012499999,0.8125,0.0668174,0.1336348 +0.012500001,0.8125,0.1336348,0.06681746 +0.012500001,0.8125,0.11905508,0.11905503 +0.012500002,0.8125,0.084184654,0.1683693 +0.012499999,0.8125,0.1683693,0.08418465 +0.0125,0.8375,0.075,0.07499999 +0.012499999,0.8375,0.05303301,0.10606599 +0.012499997,0.8375,0.10606602,0.053033054 +0.012499999,0.8375,0.09449408,0.094494045 +0.012499999,0.8375,0.0668174,0.1336348 +0.012500001,0.8375,0.1336348,0.06681746 +0.012500001,0.8375,0.11905508,0.11905503 +0.012500002,0.8375,0.084184654,0.1683693 +0.012499999,0.8375,0.1683693,0.08418465 +0.0125,0.86249995,0.075,0.07499999 +0.012499999,0.86249995,0.05303301,0.10606593 +0.012499997,0.86249995,0.10606602,0.053033054 +0.012499999,0.86249995,0.09449408,0.094494045 +0.012499999,0.86249995,0.0668174,0.1336348 +0.012500001,0.86249995,0.1336348,0.06681746 +0.012500001,0.86249995,0.11905508,0.11905497 +0.012500002,0.8625,0.084184654,0.1683693 +0.012499999,0.8625,0.1683693,0.08418465 +0.0125,0.88750005,0.075,0.07499999 +0.012499999,0.88750005,0.05303301,0.10606593 +0.012499997,0.88750005,0.10606602,0.053033054 +0.012499999,0.88750005,0.09449408,0.094494045 +0.012499999,0.88750005,0.0668174,0.13363475 +0.012500001,0.88750005,0.1336348,0.06681746 +0.012500001,0.88750005,0.11905508,0.11905497 +0.012500002,0.8875,0.084184654,0.1683693 +0.012499999,0.8875,0.1683693,0.08418465 +0.0125,0.9125,0.075,0.07499999 +0.012499999,0.9125,0.05303301,0.10606593 +0.012499997,0.9125,0.10606602,0.053033054 +0.012499999,0.9125,0.09449408,0.094494045 +0.012499999,0.9125,0.0668174,0.13363475 +0.012500001,0.9125,0.1336348,0.06681746 +0.012500001,0.9125,0.11905508,0.11905497 +0.012500002,0.9125,0.084184654,0.1683693 +0.012499999,0.9125,0.1683693,0.08418465 +0.0125,0.9375,0.075,0.07500005 +0.012499999,0.9375,0.05303301,0.10606599 +0.012499997,0.9375,0.10606602,0.053033113 +0.012499999,0.9375,0.09449408,0.094494104 +0.012499999,0.9375,0.0668174,0.1336348 +0.012500001,0.9375,0.1336348,0.06681752 +0.012500001,0.9375,0.11905508,0.11905503 +0.012500002,0.9375,0.084184654,0.1683693 +0.012499999,0.9375,0.1683693,0.08418465 +0.0125,0.9625,0.075,0.07499999 +0.012499999,0.9625,0.05303301,0.10606593 +0.012499997,0.9625,0.10606602,0.053033054 +0.012499999,0.9625,0.09449408,0.094494045 +0.012499999,0.9625,0.0668174,0.13363475 +0.012500001,0.9625,0.1336348,0.06681746 +0.012500001,0.9625,0.11905508,0.11905497 +0.012500002,0.9625,0.084184654,0.1683693 +0.012499999,0.9625,0.1683693,0.08418465 +0.0125,0.98749995,0.075,0.07499999 +0.012499999,0.98749995,0.05303301,0.10606593 +0.012499997,0.98749995,0.10606602,0.053033054 +0.012499999,0.98749995,0.09449408,0.094494045 +0.012499999,0.98749995,0.0668174,0.13363475 +0.012500001,0.98749995,0.1336348,0.06681746 +0.012500001,0.98749995,0.11905508,0.11905497 +0.012500002,0.98749995,0.084184654,0.16836923 +0.012499999,0.98749995,0.1683693,0.08418459 +0.0375,0.0125,0.075,0.075 +0.0375,0.012499997,0.05303301,0.10606602 +0.037499998,0.012499999,0.10606601,0.05303301 +0.0375,0.012499999,0.094494075,0.09449408 +0.0375,0.012500001,0.0668174,0.1336348 +0.0375,0.012499999,0.1336348,0.0668174 +0.0375,0.012500001,0.11905508,0.11905508 +0.0375,0.012499999,0.08418466,0.1683693 +0.0375,0.012500002,0.16836931,0.084184654 +0.0375,0.0375,0.075,0.075 +0.0375,0.037499998,0.05303301,0.10606601 +0.037499998,0.0375,0.10606601,0.05303301 +0.0375,0.0375,0.094494075,0.094494075 +0.0375,0.0375,0.0668174,0.1336348 +0.0375,0.0375,0.1336348,0.0668174 +0.0375,0.0375,0.11905508,0.11905508 +0.0375,0.0375,0.08418466,0.16836931 +0.0375,0.0375,0.16836931,0.08418466 +0.0375,0.0625,0.075,0.075 +0.0375,0.0625,0.05303301,0.10606602 +0.037499998,0.0625,0.10606601,0.05303301 +0.0375,0.0625,0.094494075,0.094494075 +0.0375,0.0625,0.0668174,0.1336348 +0.0375,0.0625,0.1336348,0.0668174 +0.0375,0.0625,0.11905508,0.11905508 +0.0375,0.0625,0.08418466,0.16836932 +0.0375,0.0625,0.16836931,0.08418465 +0.0375,0.0875,0.075,0.075 +0.0375,0.08749999,0.05303301,0.10606601 +0.037499998,0.087500006,0.10606601,0.053033013 +0.0375,0.087500006,0.094494075,0.09449408 +0.0375,0.087500006,0.0668174,0.1336348 +0.0375,0.0875,0.1336348,0.0668174 +0.0375,0.0875,0.11905508,0.11905508 +0.0375,0.0875,0.08418466,0.16836931 +0.0375,0.087500006,0.16836931,0.084184654 +0.0375,0.112500004,0.075,0.075 +0.0375,0.1125,0.05303301,0.10606601 +0.037499998,0.112500004,0.10606601,0.05303301 +0.0375,0.1125,0.094494075,0.094494075 +0.0375,0.1125,0.0668174,0.1336348 +0.0375,0.1125,0.1336348,0.0668174 +0.0375,0.1125,0.11905508,0.119055085 +0.0375,0.112500004,0.08418466,0.16836931 +0.0375,0.1125,0.16836931,0.08418465 +0.0375,0.1375,0.075,0.074999996 +0.0375,0.1375,0.05303301,0.10606602 +0.037499998,0.1375,0.10606601,0.053033024 +0.0375,0.1375,0.094494075,0.09449408 +0.0375,0.1375,0.0668174,0.1336348 +0.0375,0.1375,0.1336348,0.0668174 +0.0375,0.13749999,0.11905508,0.11905508 +0.0375,0.1375,0.08418466,0.1683693 +0.0375,0.1375,0.16836931,0.084184654 +0.0375,0.1625,0.075,0.075 +0.0375,0.16250001,0.05303301,0.106066026 +0.037499998,0.1625,0.10606601,0.05303301 +0.0375,0.1625,0.094494075,0.094494075 +0.0375,0.1625,0.0668174,0.1336348 +0.0375,0.1625,0.1336348,0.0668174 +0.0375,0.1625,0.11905508,0.11905508 +0.0375,0.1625,0.08418466,0.1683693 +0.0375,0.1625,0.16836931,0.08418464 +0.0375,0.1875,0.075,0.07499999 +0.0375,0.1875,0.05303301,0.10606603 +0.037499998,0.1875,0.10606601,0.053033024 +0.0375,0.1875,0.094494075,0.09449406 +0.0375,0.1875,0.0668174,0.1336348 +0.0375,0.1875,0.1336348,0.06681742 +0.0375,0.1875,0.11905508,0.11905509 +0.0375,0.1875,0.08418466,0.16836931 +0.0375,0.1875,0.16836931,0.08418465 +0.0375,0.2125,0.075,0.075 +0.0375,0.2125,0.05303301,0.10606603 +0.037499998,0.2125,0.10606601,0.05303301 +0.0375,0.21249999,0.094494075,0.094494075 +0.0375,0.2125,0.0668174,0.1336348 +0.0375,0.2125,0.1336348,0.0668174 +0.0375,0.2125,0.11905508,0.11905509 +0.0375,0.2125,0.08418466,0.16836931 +0.0375,0.2125,0.16836931,0.08418465 +0.0375,0.23750001,0.075,0.075 +0.0375,0.2375,0.05303301,0.10606602 +0.037499998,0.2375,0.10606601,0.053033024 +0.0375,0.2375,0.094494075,0.094494075 +0.0375,0.23750001,0.0668174,0.13363482 +0.0375,0.2375,0.1336348,0.06681743 +0.0375,0.2375,0.11905508,0.11905506 +0.0375,0.2375,0.08418466,0.16836932 +0.0375,0.23750001,0.16836931,0.08418466 +0.0375,0.2625,0.075,0.07500002 +0.0375,0.2625,0.05303301,0.10606603 +0.037499998,0.2625,0.10606601,0.053033024 +0.0375,0.2625,0.094494075,0.094494075 +0.0375,0.2625,0.0668174,0.13363479 +0.0375,0.2625,0.1336348,0.06681743 +0.0375,0.2625,0.11905508,0.11905508 +0.0375,0.2625,0.08418466,0.1683693 +0.0375,0.2625,0.16836931,0.08418463 +0.0375,0.2875,0.075,0.07499999 +0.0375,0.2875,0.05303301,0.10606603 +0.037499998,0.28750002,0.10606601,0.053033024 +0.0375,0.2875,0.094494075,0.094494045 +0.0375,0.2875,0.0668174,0.1336348 +0.0375,0.28750002,0.1336348,0.06681743 +0.0375,0.2875,0.11905508,0.11905508 +0.0375,0.2875,0.08418466,0.1683693 +0.0375,0.2875,0.16836931,0.08418465 +0.0375,0.3125,0.075,0.07499999 +0.0375,0.3125,0.05303301,0.10606605 +0.037499998,0.3125,0.10606601,0.053032994 +0.0375,0.3125,0.094494075,0.094494045 +0.0375,0.3125,0.0668174,0.1336348 +0.0375,0.3125,0.1336348,0.0668174 +0.0375,0.3125,0.11905508,0.11905509 +0.0375,0.3125,0.08418466,0.1683693 +0.0375,0.3125,0.16836931,0.08418465 +0.0375,0.3375,0.075,0.07499999 +0.0375,0.3375,0.05303301,0.10606605 +0.037499998,0.33749998,0.10606601,0.053033024 +0.0375,0.3375,0.094494075,0.094494045 +0.0375,0.33750004,0.0668174,0.13363484 +0.0375,0.33749998,0.1336348,0.06681743 +0.0375,0.3375,0.11905508,0.11905509 +0.0375,0.3375,0.08418466,0.1683693 +0.0375,0.3375,0.16836931,0.08418465 +0.0375,0.3625,0.075,0.07500002 +0.0375,0.3625,0.05303301,0.10606602 +0.037499998,0.3625,0.10606601,0.053033024 +0.0375,0.3625,0.094494075,0.094494075 +0.0375,0.3625,0.0668174,0.1336348 +0.0375,0.3625,0.1336348,0.06681743 +0.0375,0.3625,0.11905508,0.11905506 +0.0375,0.3625,0.08418466,0.1683693 +0.0375,0.3625,0.16836931,0.08418465 +0.0375,0.3875,0.075,0.07500002 +0.0375,0.3875,0.05303301,0.10606602 +0.037499998,0.3875,0.10606601,0.053032994 +0.0375,0.3875,0.094494075,0.094494075 +0.0375,0.3875,0.0668174,0.13363484 +0.0375,0.3875,0.1336348,0.0668174 +0.0375,0.3875,0.11905508,0.11905506 +0.0375,0.3875,0.08418466,0.1683693 +0.0375,0.3875,0.16836931,0.08418465 +0.0375,0.4125,0.075,0.07499999 +0.0375,0.4125,0.05303301,0.10606605 +0.037499998,0.4125,0.10606601,0.053032994 +0.0375,0.4125,0.094494075,0.094494045 +0.0375,0.41250002,0.0668174,0.13363484 +0.0375,0.4125,0.1336348,0.0668174 +0.0375,0.4125,0.11905508,0.11905509 +0.0375,0.4125,0.08418466,0.1683693 +0.0375,0.4125,0.16836931,0.08418465 +0.0375,0.4375,0.075,0.07499999 +0.0375,0.4375,0.05303301,0.10606605 +0.037499998,0.4375,0.10606601,0.053032994 +0.0375,0.4375,0.094494075,0.094494045 +0.0375,0.4375,0.0668174,0.1336348 +0.0375,0.4375,0.1336348,0.0668174 +0.0375,0.4375,0.11905508,0.11905509 +0.0375,0.4375,0.08418466,0.1683693 +0.0375,0.4375,0.16836931,0.08418465 +0.0375,0.4625,0.075,0.07499999 +0.0375,0.4625,0.05303301,0.10606605 +0.037499998,0.46249998,0.10606601,0.053032964 +0.0375,0.4625,0.094494075,0.094494045 +0.0375,0.46250004,0.0668174,0.13363484 +0.0375,0.46249998,0.1336348,0.06681737 +0.0375,0.4625,0.11905508,0.11905509 +0.0375,0.46249998,0.08418466,0.16836926 +0.0375,0.46249998,0.16836931,0.08418462 +0.0375,0.48749998,0.075,0.07499999 +0.0375,0.4875,0.05303301,0.10606602 +0.037499998,0.4875,0.10606601,0.053032994 +0.0375,0.48749998,0.094494075,0.094494045 +0.0375,0.4875,0.0668174,0.13363484 +0.0375,0.4875,0.1336348,0.0668174 +0.0375,0.4875,0.11905508,0.11905506 +0.0375,0.4875,0.08418466,0.1683693 +0.0375,0.4875,0.16836931,0.08418465 +0.0375,0.5125,0.075,0.07500002 +0.0375,0.51250005,0.05303301,0.10606605 +0.037499998,0.5125,0.10606601,0.053032964 +0.0375,0.5125,0.094494075,0.094494075 +0.0375,0.51250005,0.0668174,0.13363487 +0.0375,0.5125,0.1336348,0.06681737 +0.0375,0.51250005,0.11905508,0.11905509 +0.0375,0.5125,0.08418466,0.1683693 +0.0375,0.5125,0.16836931,0.08418465 +0.0375,0.5375,0.075,0.07499999 +0.0375,0.5375,0.05303301,0.10606605 +0.037499998,0.5375,0.10606601,0.053032935 +0.0375,0.5375,0.094494075,0.094494045 +0.0375,0.5375,0.0668174,0.13363487 +0.0375,0.5375,0.1336348,0.06681734 +0.0375,0.5375,0.11905508,0.11905509 +0.0375,0.5375,0.08418466,0.16836932 +0.0375,0.5375,0.16836931,0.08418468 +0.0375,0.5625,0.075,0.07500005 +0.0375,0.5625,0.05303301,0.10606599 +0.037499998,0.5625,0.10606601,0.053032994 +0.0375,0.5625,0.094494075,0.094494104 +0.0375,0.5625,0.0668174,0.13363484 +0.0375,0.5625,0.1336348,0.0668174 +0.0375,0.5625,0.11905508,0.11905503 +0.0375,0.5625,0.08418466,0.1683693 +0.0375,0.5625,0.16836931,0.08418465 +0.0375,0.5875,0.075,0.07499999 +0.0375,0.5875,0.05303301,0.10606605 +0.037499998,0.5875,0.10606601,0.053032935 +0.0375,0.5875,0.094494075,0.094494045 +0.0375,0.5875,0.0668174,0.13363487 +0.0375,0.5875,0.1336348,0.06681734 +0.0375,0.5875,0.11905508,0.11905509 +0.0375,0.5875,0.08418466,0.1683693 +0.0375,0.5875,0.16836931,0.08418465 +0.0375,0.61249995,0.075,0.07499999 +0.0375,0.61249995,0.05303301,0.10606605 +0.037499998,0.6125,0.10606601,0.053032994 +0.0375,0.61249995,0.094494075,0.094494045 +0.0375,0.61249995,0.0668174,0.13363487 +0.0375,0.6125,0.1336348,0.0668174 +0.0375,0.61249995,0.11905508,0.11905509 +0.0375,0.6125,0.08418466,0.1683693 +0.0375,0.6125,0.16836931,0.08418465 +0.0375,0.63750005,0.075,0.07499999 +0.0375,0.63750005,0.05303301,0.10606605 +0.037499998,0.6375,0.10606601,0.053032994 +0.0375,0.63750005,0.094494075,0.094494045 +0.0375,0.63750005,0.0668174,0.13363487 +0.0375,0.6375,0.1336348,0.0668174 +0.0375,0.63750005,0.11905508,0.11905509 +0.0375,0.6375,0.08418466,0.1683693 +0.0375,0.6375,0.16836931,0.08418465 +0.0375,0.6625,0.075,0.07499999 +0.0375,0.6625,0.05303301,0.10606605 +0.037499998,0.6625,0.10606601,0.053032935 +0.0375,0.6625,0.094494075,0.094494045 +0.0375,0.6625,0.0668174,0.13363487 +0.0375,0.6625,0.1336348,0.06681734 +0.0375,0.6625,0.11905508,0.11905509 +0.0375,0.6625,0.08418466,0.1683693 +0.0375,0.6625,0.16836931,0.08418465 +0.0375,0.6875,0.075,0.07500005 +0.0375,0.6875,0.05303301,0.10606599 +0.037499998,0.6875,0.10606601,0.053032994 +0.0375,0.6875,0.094494075,0.094494104 +0.0375,0.6875,0.0668174,0.1336348 +0.0375,0.6875,0.1336348,0.0668174 +0.0375,0.6875,0.11905508,0.11905503 +0.0375,0.6875,0.08418466,0.1683693 +0.0375,0.6875,0.16836931,0.08418465 +0.0375,0.7125,0.075,0.07499999 +0.0375,0.7125,0.05303301,0.10606605 +0.037499998,0.7125,0.10606601,0.053032935 +0.0375,0.7125,0.094494075,0.094494045 +0.0375,0.7125,0.0668174,0.13363487 +0.0375,0.7125,0.1336348,0.06681734 +0.0375,0.7125,0.11905508,0.11905509 +0.0375,0.7125,0.08418466,0.1683693 +0.0375,0.7125,0.16836931,0.08418465 +0.0375,0.73749995,0.075,0.07499999 +0.0375,0.73749995,0.05303301,0.10606605 +0.037499998,0.7375,0.10606601,0.053032994 +0.0375,0.73749995,0.094494075,0.094494045 +0.0375,0.73749995,0.0668174,0.1336348 +0.0375,0.7375,0.1336348,0.0668174 +0.0375,0.73749995,0.11905508,0.11905509 +0.0375,0.7375,0.08418466,0.1683693 +0.0375,0.7375,0.16836931,0.08418465 +0.0375,0.76250005,0.075,0.07499999 +0.0375,0.7625,0.05303301,0.10606599 +0.037499998,0.7625,0.10606601,0.053032994 +0.0375,0.76250005,0.094494075,0.094494045 +0.0375,0.7625,0.0668174,0.1336348 +0.0375,0.7625,0.1336348,0.0668174 +0.0375,0.7625,0.11905508,0.11905503 +0.0375,0.7625,0.08418466,0.1683693 +0.0375,0.7625,0.16836931,0.08418465 +0.0375,0.7875,0.075,0.07499999 +0.0375,0.78749996,0.05303301,0.10606599 +0.037499998,0.7875,0.10606601,0.053032994 +0.0375,0.7875,0.094494075,0.094494045 +0.0375,0.78749996,0.0668174,0.1336348 +0.0375,0.7875,0.1336348,0.0668174 +0.0375,0.78749996,0.11905508,0.11905503 +0.0375,0.7875,0.08418466,0.1683693 +0.0375,0.7875,0.16836931,0.08418465 +0.0375,0.8125,0.075,0.07500005 +0.0375,0.8125,0.05303301,0.10606599 +0.037499998,0.8125,0.10606601,0.053033054 +0.0375,0.8125,0.094494075,0.094494104 +0.0375,0.8125,0.0668174,0.1336348 +0.0375,0.8125,0.1336348,0.06681746 +0.0375,0.8125,0.11905508,0.11905503 +0.0375,0.8125,0.08418466,0.1683693 +0.0375,0.8125,0.16836931,0.08418465 +0.0375,0.8375,0.075,0.07499999 +0.0375,0.8375,0.05303301,0.10606599 +0.037499998,0.8375,0.10606601,0.053033054 +0.0375,0.8375,0.094494075,0.094494045 +0.0375,0.8375,0.0668174,0.1336348 +0.0375,0.8375,0.1336348,0.06681746 +0.0375,0.8375,0.11905508,0.11905503 +0.0375,0.8375,0.08418466,0.1683693 +0.0375,0.8375,0.16836931,0.08418465 +0.0375,0.86249995,0.075,0.07499999 +0.0375,0.86249995,0.05303301,0.10606593 +0.037499998,0.86249995,0.10606601,0.053033054 +0.0375,0.86249995,0.094494075,0.094494045 +0.0375,0.86249995,0.0668174,0.1336348 +0.0375,0.86249995,0.1336348,0.06681746 +0.0375,0.86249995,0.11905508,0.11905497 +0.0375,0.8625,0.08418466,0.1683693 +0.0375,0.8625,0.16836931,0.08418465 +0.0375,0.88750005,0.075,0.07499999 +0.0375,0.88750005,0.05303301,0.10606593 +0.037499998,0.88750005,0.10606601,0.053033054 +0.0375,0.88750005,0.094494075,0.094494045 +0.0375,0.88750005,0.0668174,0.13363475 +0.0375,0.88750005,0.1336348,0.06681746 +0.0375,0.88750005,0.11905508,0.11905497 +0.0375,0.8875,0.08418466,0.1683693 +0.0375,0.8875,0.16836931,0.08418465 +0.0375,0.9125,0.075,0.07499999 +0.0375,0.9125,0.05303301,0.10606593 +0.037499998,0.9125,0.10606601,0.053033054 +0.0375,0.9125,0.094494075,0.094494045 +0.0375,0.9125,0.0668174,0.13363475 +0.0375,0.9125,0.1336348,0.06681746 +0.0375,0.9125,0.11905508,0.11905497 +0.0375,0.9125,0.08418466,0.1683693 +0.0375,0.9125,0.16836931,0.08418465 +0.0375,0.9375,0.075,0.07500005 +0.0375,0.9375,0.05303301,0.10606599 +0.037499998,0.9375,0.10606601,0.053033113 +0.0375,0.9375,0.094494075,0.094494104 +0.0375,0.9375,0.0668174,0.1336348 +0.0375,0.9375,0.1336348,0.06681752 +0.0375,0.9375,0.11905508,0.11905503 +0.0375,0.9375,0.08418466,0.1683693 +0.0375,0.9375,0.16836931,0.08418465 +0.0375,0.9625,0.075,0.07499999 +0.0375,0.9625,0.05303301,0.10606593 +0.037499998,0.9625,0.10606601,0.053033054 +0.0375,0.9625,0.094494075,0.094494045 +0.0375,0.9625,0.0668174,0.13363475 +0.0375,0.9625,0.1336348,0.06681746 +0.0375,0.9625,0.11905508,0.11905497 +0.0375,0.9625,0.08418466,0.1683693 +0.0375,0.9625,0.16836931,0.08418465 +0.0375,0.98749995,0.075,0.07499999 +0.0375,0.98749995,0.05303301,0.10606593 +0.037499998,0.98749995,0.10606601,0.053033054 +0.0375,0.98749995,0.094494075,0.094494045 +0.0375,0.98749995,0.0668174,0.13363475 +0.0375,0.98749995,0.1336348,0.06681746 +0.0375,0.98749995,0.11905508,0.11905497 +0.0375,0.98749995,0.08418466,0.16836923 +0.0375,0.98749995,0.16836931,0.08418459 +0.0625,0.0125,0.075,0.075 +0.0625,0.012499997,0.05303301,0.10606602 +0.0625,0.012499999,0.10606602,0.05303301 +0.0625,0.012499999,0.094494075,0.09449408 +0.0625,0.012500001,0.0668174,0.1336348 +0.0625,0.012499999,0.1336348,0.0668174 +0.0625,0.012500001,0.11905508,0.11905508 +0.0625,0.012499999,0.08418465,0.1683693 +0.0625,0.012500002,0.16836932,0.084184654 +0.0625,0.0375,0.075,0.075 +0.0625,0.037499998,0.05303301,0.10606601 +0.0625,0.0375,0.10606602,0.05303301 +0.0625,0.0375,0.094494075,0.094494075 +0.0625,0.0375,0.0668174,0.1336348 +0.0625,0.0375,0.1336348,0.0668174 +0.0625,0.0375,0.11905508,0.11905508 +0.0625,0.0375,0.08418465,0.16836931 +0.0625,0.0375,0.16836932,0.08418466 +0.0625,0.0625,0.075,0.075 +0.0625,0.0625,0.05303301,0.10606602 +0.0625,0.0625,0.10606602,0.05303301 +0.0625,0.0625,0.094494075,0.094494075 +0.0625,0.0625,0.0668174,0.1336348 +0.0625,0.0625,0.1336348,0.0668174 +0.0625,0.0625,0.11905508,0.11905508 +0.0625,0.0625,0.08418465,0.16836932 +0.0625,0.0625,0.16836932,0.08418465 +0.0625,0.0875,0.075,0.075 +0.0625,0.08749999,0.05303301,0.10606601 +0.0625,0.087500006,0.10606602,0.053033013 +0.0625,0.087500006,0.094494075,0.09449408 +0.0625,0.087500006,0.0668174,0.1336348 +0.0625,0.0875,0.1336348,0.0668174 +0.0625,0.0875,0.11905508,0.11905508 +0.0625,0.0875,0.08418465,0.16836931 +0.0625,0.087500006,0.16836932,0.084184654 +0.0625,0.112500004,0.075,0.075 +0.0625,0.1125,0.05303301,0.10606601 +0.0625,0.112500004,0.10606602,0.05303301 +0.0625,0.1125,0.094494075,0.094494075 +0.0625,0.1125,0.0668174,0.1336348 +0.0625,0.1125,0.1336348,0.0668174 +0.0625,0.1125,0.11905508,0.119055085 +0.0625,0.112500004,0.08418465,0.16836931 +0.0625,0.1125,0.16836932,0.08418465 +0.0625,0.1375,0.075,0.074999996 +0.0625,0.1375,0.05303301,0.10606602 +0.0625,0.1375,0.10606602,0.053033024 +0.0625,0.1375,0.094494075,0.09449408 +0.0625,0.1375,0.0668174,0.1336348 +0.0625,0.1375,0.1336348,0.0668174 +0.0625,0.13749999,0.11905508,0.11905508 +0.0625,0.1375,0.08418465,0.1683693 +0.0625,0.1375,0.16836932,0.084184654 +0.0625,0.1625,0.075,0.075 +0.0625,0.16250001,0.05303301,0.106066026 +0.0625,0.1625,0.10606602,0.05303301 +0.0625,0.1625,0.094494075,0.094494075 +0.0625,0.1625,0.0668174,0.1336348 +0.0625,0.1625,0.1336348,0.0668174 +0.0625,0.1625,0.11905508,0.11905508 +0.0625,0.1625,0.08418465,0.1683693 +0.0625,0.1625,0.16836932,0.08418464 +0.0625,0.1875,0.075,0.07499999 +0.0625,0.1875,0.05303301,0.10606603 +0.0625,0.1875,0.10606602,0.053033024 +0.0625,0.1875,0.094494075,0.09449406 +0.0625,0.1875,0.0668174,0.1336348 +0.0625,0.1875,0.1336348,0.06681742 +0.0625,0.1875,0.11905508,0.11905509 +0.0625,0.1875,0.08418465,0.16836931 +0.0625,0.1875,0.16836932,0.08418465 +0.0625,0.2125,0.075,0.075 +0.0625,0.2125,0.05303301,0.10606603 +0.0625,0.2125,0.10606602,0.05303301 +0.0625,0.21249999,0.094494075,0.094494075 +0.0625,0.2125,0.0668174,0.1336348 +0.0625,0.2125,0.1336348,0.0668174 +0.0625,0.2125,0.11905508,0.11905509 +0.0625,0.2125,0.08418465,0.16836931 +0.0625,0.2125,0.16836932,0.08418465 +0.0625,0.23750001,0.075,0.075 +0.0625,0.2375,0.05303301,0.10606602 +0.0625,0.2375,0.10606602,0.053033024 +0.0625,0.2375,0.094494075,0.094494075 +0.0625,0.23750001,0.0668174,0.13363482 +0.0625,0.2375,0.1336348,0.06681743 +0.0625,0.2375,0.11905508,0.11905506 +0.0625,0.2375,0.08418465,0.16836932 +0.0625,0.23750001,0.16836932,0.08418466 +0.0625,0.2625,0.075,0.07500002 +0.0625,0.2625,0.05303301,0.10606603 +0.0625,0.2625,0.10606602,0.053033024 +0.0625,0.2625,0.094494075,0.094494075 +0.0625,0.2625,0.0668174,0.13363479 +0.0625,0.2625,0.1336348,0.06681743 +0.0625,0.2625,0.11905508,0.11905508 +0.0625,0.2625,0.08418465,0.1683693 +0.0625,0.2625,0.16836932,0.08418463 +0.0625,0.2875,0.075,0.07499999 +0.0625,0.2875,0.05303301,0.10606603 +0.0625,0.28750002,0.10606602,0.053033024 +0.0625,0.2875,0.094494075,0.094494045 +0.0625,0.2875,0.0668174,0.1336348 +0.0625,0.28750002,0.1336348,0.06681743 +0.0625,0.2875,0.11905508,0.11905508 +0.0625,0.2875,0.08418465,0.1683693 +0.0625,0.2875,0.16836932,0.08418465 +0.0625,0.3125,0.075,0.07499999 +0.0625,0.3125,0.05303301,0.10606605 +0.0625,0.3125,0.10606602,0.053032994 +0.0625,0.3125,0.094494075,0.094494045 +0.0625,0.3125,0.0668174,0.1336348 +0.0625,0.3125,0.1336348,0.0668174 +0.0625,0.3125,0.11905508,0.11905509 +0.0625,0.3125,0.08418465,0.1683693 +0.0625,0.3125,0.16836932,0.08418465 +0.0625,0.3375,0.075,0.07499999 +0.0625,0.3375,0.05303301,0.10606605 +0.0625,0.33749998,0.10606602,0.053033024 +0.0625,0.3375,0.094494075,0.094494045 +0.0625,0.33750004,0.0668174,0.13363484 +0.0625,0.33749998,0.1336348,0.06681743 +0.0625,0.3375,0.11905508,0.11905509 +0.0625,0.3375,0.08418465,0.1683693 +0.0625,0.3375,0.16836932,0.08418465 +0.0625,0.3625,0.075,0.07500002 +0.0625,0.3625,0.05303301,0.10606602 +0.0625,0.3625,0.10606602,0.053033024 +0.0625,0.3625,0.094494075,0.094494075 +0.0625,0.3625,0.0668174,0.1336348 +0.0625,0.3625,0.1336348,0.06681743 +0.0625,0.3625,0.11905508,0.11905506 +0.0625,0.3625,0.08418465,0.1683693 +0.0625,0.3625,0.16836932,0.08418465 +0.0625,0.3875,0.075,0.07500002 +0.0625,0.3875,0.05303301,0.10606602 +0.0625,0.3875,0.10606602,0.053032994 +0.0625,0.3875,0.094494075,0.094494075 +0.0625,0.3875,0.0668174,0.13363484 +0.0625,0.3875,0.1336348,0.0668174 +0.0625,0.3875,0.11905508,0.11905506 +0.0625,0.3875,0.08418465,0.1683693 +0.0625,0.3875,0.16836932,0.08418465 +0.0625,0.4125,0.075,0.07499999 +0.0625,0.4125,0.05303301,0.10606605 +0.0625,0.4125,0.10606602,0.053032994 +0.0625,0.4125,0.094494075,0.094494045 +0.0625,0.41250002,0.0668174,0.13363484 +0.0625,0.4125,0.1336348,0.0668174 +0.0625,0.4125,0.11905508,0.11905509 +0.0625,0.4125,0.08418465,0.1683693 +0.0625,0.4125,0.16836932,0.08418465 +0.0625,0.4375,0.075,0.07499999 +0.0625,0.4375,0.05303301,0.10606605 +0.0625,0.4375,0.10606602,0.053032994 +0.0625,0.4375,0.094494075,0.094494045 +0.0625,0.4375,0.0668174,0.1336348 +0.0625,0.4375,0.1336348,0.0668174 +0.0625,0.4375,0.11905508,0.11905509 +0.0625,0.4375,0.08418465,0.1683693 +0.0625,0.4375,0.16836932,0.08418465 +0.0625,0.4625,0.075,0.07499999 +0.0625,0.4625,0.05303301,0.10606605 +0.0625,0.46249998,0.10606602,0.053032964 +0.0625,0.4625,0.094494075,0.094494045 +0.0625,0.46250004,0.0668174,0.13363484 +0.0625,0.46249998,0.1336348,0.06681737 +0.0625,0.4625,0.11905508,0.11905509 +0.0625,0.46249998,0.08418465,0.16836926 +0.0625,0.46249998,0.16836932,0.08418462 +0.0625,0.48749998,0.075,0.07499999 +0.0625,0.4875,0.05303301,0.10606602 +0.0625,0.4875,0.10606602,0.053032994 +0.0625,0.48749998,0.094494075,0.094494045 +0.0625,0.4875,0.0668174,0.13363484 +0.0625,0.4875,0.1336348,0.0668174 +0.0625,0.4875,0.11905508,0.11905506 +0.0625,0.4875,0.08418465,0.1683693 +0.0625,0.4875,0.16836932,0.08418465 +0.0625,0.5125,0.075,0.07500002 +0.0625,0.51250005,0.05303301,0.10606605 +0.0625,0.5125,0.10606602,0.053032964 +0.0625,0.5125,0.094494075,0.094494075 +0.0625,0.51250005,0.0668174,0.13363487 +0.0625,0.5125,0.1336348,0.06681737 +0.0625,0.51250005,0.11905508,0.11905509 +0.0625,0.5125,0.08418465,0.1683693 +0.0625,0.5125,0.16836932,0.08418465 +0.0625,0.5375,0.075,0.07499999 +0.0625,0.5375,0.05303301,0.10606605 +0.0625,0.5375,0.10606602,0.053032935 +0.0625,0.5375,0.094494075,0.094494045 +0.0625,0.5375,0.0668174,0.13363487 +0.0625,0.5375,0.1336348,0.06681734 +0.0625,0.5375,0.11905508,0.11905509 +0.0625,0.5375,0.08418465,0.16836932 +0.0625,0.5375,0.16836932,0.08418468 +0.0625,0.5625,0.075,0.07500005 +0.0625,0.5625,0.05303301,0.10606599 +0.0625,0.5625,0.10606602,0.053032994 +0.0625,0.5625,0.094494075,0.094494104 +0.0625,0.5625,0.0668174,0.13363484 +0.0625,0.5625,0.1336348,0.0668174 +0.0625,0.5625,0.11905508,0.11905503 +0.0625,0.5625,0.08418465,0.1683693 +0.0625,0.5625,0.16836932,0.08418465 +0.0625,0.5875,0.075,0.07499999 +0.0625,0.5875,0.05303301,0.10606605 +0.0625,0.5875,0.10606602,0.053032935 +0.0625,0.5875,0.094494075,0.094494045 +0.0625,0.5875,0.0668174,0.13363487 +0.0625,0.5875,0.1336348,0.06681734 +0.0625,0.5875,0.11905508,0.11905509 +0.0625,0.5875,0.08418465,0.1683693 +0.0625,0.5875,0.16836932,0.08418465 +0.0625,0.61249995,0.075,0.07499999 +0.0625,0.61249995,0.05303301,0.10606605 +0.0625,0.6125,0.10606602,0.053032994 +0.0625,0.61249995,0.094494075,0.094494045 +0.0625,0.61249995,0.0668174,0.13363487 +0.0625,0.6125,0.1336348,0.0668174 +0.0625,0.61249995,0.11905508,0.11905509 +0.0625,0.6125,0.08418465,0.1683693 +0.0625,0.6125,0.16836932,0.08418465 +0.0625,0.63750005,0.075,0.07499999 +0.0625,0.63750005,0.05303301,0.10606605 +0.0625,0.6375,0.10606602,0.053032994 +0.0625,0.63750005,0.094494075,0.094494045 +0.0625,0.63750005,0.0668174,0.13363487 +0.0625,0.6375,0.1336348,0.0668174 +0.0625,0.63750005,0.11905508,0.11905509 +0.0625,0.6375,0.08418465,0.1683693 +0.0625,0.6375,0.16836932,0.08418465 +0.0625,0.6625,0.075,0.07499999 +0.0625,0.6625,0.05303301,0.10606605 +0.0625,0.6625,0.10606602,0.053032935 +0.0625,0.6625,0.094494075,0.094494045 +0.0625,0.6625,0.0668174,0.13363487 +0.0625,0.6625,0.1336348,0.06681734 +0.0625,0.6625,0.11905508,0.11905509 +0.0625,0.6625,0.08418465,0.1683693 +0.0625,0.6625,0.16836932,0.08418465 +0.0625,0.6875,0.075,0.07500005 +0.0625,0.6875,0.05303301,0.10606599 +0.0625,0.6875,0.10606602,0.053032994 +0.0625,0.6875,0.094494075,0.094494104 +0.0625,0.6875,0.0668174,0.1336348 +0.0625,0.6875,0.1336348,0.0668174 +0.0625,0.6875,0.11905508,0.11905503 +0.0625,0.6875,0.08418465,0.1683693 +0.0625,0.6875,0.16836932,0.08418465 +0.0625,0.7125,0.075,0.07499999 +0.0625,0.7125,0.05303301,0.10606605 +0.0625,0.7125,0.10606602,0.053032935 +0.0625,0.7125,0.094494075,0.094494045 +0.0625,0.7125,0.0668174,0.13363487 +0.0625,0.7125,0.1336348,0.06681734 +0.0625,0.7125,0.11905508,0.11905509 +0.0625,0.7125,0.08418465,0.1683693 +0.0625,0.7125,0.16836932,0.08418465 +0.0625,0.73749995,0.075,0.07499999 +0.0625,0.73749995,0.05303301,0.10606605 +0.0625,0.7375,0.10606602,0.053032994 +0.0625,0.73749995,0.094494075,0.094494045 +0.0625,0.73749995,0.0668174,0.1336348 +0.0625,0.7375,0.1336348,0.0668174 +0.0625,0.73749995,0.11905508,0.11905509 +0.0625,0.7375,0.08418465,0.1683693 +0.0625,0.7375,0.16836932,0.08418465 +0.0625,0.76250005,0.075,0.07499999 +0.0625,0.7625,0.05303301,0.10606599 +0.0625,0.7625,0.10606602,0.053032994 +0.0625,0.76250005,0.094494075,0.094494045 +0.0625,0.7625,0.0668174,0.1336348 +0.0625,0.7625,0.1336348,0.0668174 +0.0625,0.7625,0.11905508,0.11905503 +0.0625,0.7625,0.08418465,0.1683693 +0.0625,0.7625,0.16836932,0.08418465 +0.0625,0.7875,0.075,0.07499999 +0.0625,0.78749996,0.05303301,0.10606599 +0.0625,0.7875,0.10606602,0.053032994 +0.0625,0.7875,0.094494075,0.094494045 +0.0625,0.78749996,0.0668174,0.1336348 +0.0625,0.7875,0.1336348,0.0668174 +0.0625,0.78749996,0.11905508,0.11905503 +0.0625,0.7875,0.08418465,0.1683693 +0.0625,0.7875,0.16836932,0.08418465 +0.0625,0.8125,0.075,0.07500005 +0.0625,0.8125,0.05303301,0.10606599 +0.0625,0.8125,0.10606602,0.053033054 +0.0625,0.8125,0.094494075,0.094494104 +0.0625,0.8125,0.0668174,0.1336348 +0.0625,0.8125,0.1336348,0.06681746 +0.0625,0.8125,0.11905508,0.11905503 +0.0625,0.8125,0.08418465,0.1683693 +0.0625,0.8125,0.16836932,0.08418465 +0.0625,0.8375,0.075,0.07499999 +0.0625,0.8375,0.05303301,0.10606599 +0.0625,0.8375,0.10606602,0.053033054 +0.0625,0.8375,0.094494075,0.094494045 +0.0625,0.8375,0.0668174,0.1336348 +0.0625,0.8375,0.1336348,0.06681746 +0.0625,0.8375,0.11905508,0.11905503 +0.0625,0.8375,0.08418465,0.1683693 +0.0625,0.8375,0.16836932,0.08418465 +0.0625,0.86249995,0.075,0.07499999 +0.0625,0.86249995,0.05303301,0.10606593 +0.0625,0.86249995,0.10606602,0.053033054 +0.0625,0.86249995,0.094494075,0.094494045 +0.0625,0.86249995,0.0668174,0.1336348 +0.0625,0.86249995,0.1336348,0.06681746 +0.0625,0.86249995,0.11905508,0.11905497 +0.0625,0.8625,0.08418465,0.1683693 +0.0625,0.8625,0.16836932,0.08418465 +0.0625,0.88750005,0.075,0.07499999 +0.0625,0.88750005,0.05303301,0.10606593 +0.0625,0.88750005,0.10606602,0.053033054 +0.0625,0.88750005,0.094494075,0.094494045 +0.0625,0.88750005,0.0668174,0.13363475 +0.0625,0.88750005,0.1336348,0.06681746 +0.0625,0.88750005,0.11905508,0.11905497 +0.0625,0.8875,0.08418465,0.1683693 +0.0625,0.8875,0.16836932,0.08418465 +0.0625,0.9125,0.075,0.07499999 +0.0625,0.9125,0.05303301,0.10606593 +0.0625,0.9125,0.10606602,0.053033054 +0.0625,0.9125,0.094494075,0.094494045 +0.0625,0.9125,0.0668174,0.13363475 +0.0625,0.9125,0.1336348,0.06681746 +0.0625,0.9125,0.11905508,0.11905497 +0.0625,0.9125,0.08418465,0.1683693 +0.0625,0.9125,0.16836932,0.08418465 +0.0625,0.9375,0.075,0.07500005 +0.0625,0.9375,0.05303301,0.10606599 +0.0625,0.9375,0.10606602,0.053033113 +0.0625,0.9375,0.094494075,0.094494104 +0.0625,0.9375,0.0668174,0.1336348 +0.0625,0.9375,0.1336348,0.06681752 +0.0625,0.9375,0.11905508,0.11905503 +0.0625,0.9375,0.08418465,0.1683693 +0.0625,0.9375,0.16836932,0.08418465 +0.0625,0.9625,0.075,0.07499999 +0.0625,0.9625,0.05303301,0.10606593 +0.0625,0.9625,0.10606602,0.053033054 +0.0625,0.9625,0.094494075,0.094494045 +0.0625,0.9625,0.0668174,0.13363475 +0.0625,0.9625,0.1336348,0.06681746 +0.0625,0.9625,0.11905508,0.11905497 +0.0625,0.9625,0.08418465,0.1683693 +0.0625,0.9625,0.16836932,0.08418465 +0.0625,0.98749995,0.075,0.07499999 +0.0625,0.98749995,0.05303301,0.10606593 +0.0625,0.98749995,0.10606602,0.053033054 +0.0625,0.98749995,0.094494075,0.094494045 +0.0625,0.98749995,0.0668174,0.13363475 +0.0625,0.98749995,0.1336348,0.06681746 +0.0625,0.98749995,0.11905508,0.11905497 +0.0625,0.98749995,0.08418465,0.16836923 +0.0625,0.98749995,0.16836932,0.08418459 +0.0875,0.0125,0.075,0.075 +0.087500006,0.012499997,0.053033013,0.10606602 +0.08749999,0.012499999,0.10606601,0.05303301 +0.087500006,0.012499999,0.09449408,0.09449408 +0.0875,0.012500001,0.0668174,0.1336348 +0.087500006,0.012499999,0.1336348,0.0668174 +0.0875,0.012500001,0.11905508,0.11905508 +0.087500006,0.012499999,0.084184654,0.1683693 +0.0875,0.012500002,0.16836931,0.084184654 +0.0875,0.0375,0.075,0.075 +0.087500006,0.037499998,0.053033013,0.10606601 +0.08749999,0.0375,0.10606601,0.05303301 +0.087500006,0.0375,0.09449408,0.094494075 +0.0875,0.0375,0.0668174,0.1336348 +0.087500006,0.0375,0.1336348,0.0668174 +0.0875,0.0375,0.11905508,0.11905508 +0.087500006,0.0375,0.084184654,0.16836931 +0.0875,0.0375,0.16836931,0.08418466 +0.0875,0.0625,0.075,0.075 +0.087500006,0.0625,0.053033013,0.10606602 +0.08749999,0.0625,0.10606601,0.05303301 +0.087500006,0.0625,0.09449408,0.094494075 +0.0875,0.0625,0.0668174,0.1336348 +0.087500006,0.0625,0.1336348,0.0668174 +0.0875,0.0625,0.11905508,0.11905508 +0.087500006,0.0625,0.084184654,0.16836932 +0.0875,0.0625,0.16836931,0.08418465 +0.0875,0.0875,0.075,0.075 +0.087500006,0.08749999,0.053033013,0.10606601 +0.08749999,0.087500006,0.10606601,0.053033013 +0.087500006,0.087500006,0.09449408,0.09449408 +0.0875,0.087500006,0.0668174,0.1336348 +0.087500006,0.0875,0.1336348,0.0668174 +0.0875,0.0875,0.11905508,0.11905508 +0.087500006,0.0875,0.084184654,0.16836931 +0.0875,0.087500006,0.16836931,0.084184654 +0.0875,0.112500004,0.075,0.075 +0.087500006,0.1125,0.053033013,0.10606601 +0.08749999,0.112500004,0.10606601,0.05303301 +0.087500006,0.1125,0.09449408,0.094494075 +0.0875,0.1125,0.0668174,0.1336348 +0.087500006,0.1125,0.1336348,0.0668174 +0.0875,0.1125,0.11905508,0.119055085 +0.087500006,0.112500004,0.084184654,0.16836931 +0.0875,0.1125,0.16836931,0.08418465 +0.0875,0.1375,0.075,0.074999996 +0.087500006,0.1375,0.053033013,0.10606602 +0.08749999,0.1375,0.10606601,0.053033024 +0.087500006,0.1375,0.09449408,0.09449408 +0.0875,0.1375,0.0668174,0.1336348 +0.087500006,0.1375,0.1336348,0.0668174 +0.0875,0.13749999,0.11905508,0.11905508 +0.087500006,0.1375,0.084184654,0.1683693 +0.0875,0.1375,0.16836931,0.084184654 +0.0875,0.1625,0.075,0.075 +0.087500006,0.16250001,0.053033013,0.106066026 +0.08749999,0.1625,0.10606601,0.05303301 +0.087500006,0.1625,0.09449408,0.094494075 +0.0875,0.1625,0.0668174,0.1336348 +0.087500006,0.1625,0.1336348,0.0668174 +0.0875,0.1625,0.11905508,0.11905508 +0.087500006,0.1625,0.084184654,0.1683693 +0.0875,0.1625,0.16836931,0.08418464 +0.0875,0.1875,0.075,0.07499999 +0.087500006,0.1875,0.053033013,0.10606603 +0.08749999,0.1875,0.10606601,0.053033024 +0.087500006,0.1875,0.09449408,0.09449406 +0.0875,0.1875,0.0668174,0.1336348 +0.087500006,0.1875,0.1336348,0.06681742 +0.0875,0.1875,0.11905508,0.11905509 +0.087500006,0.1875,0.084184654,0.16836931 +0.0875,0.1875,0.16836931,0.08418465 +0.0875,0.2125,0.075,0.075 +0.087500006,0.2125,0.053033013,0.10606603 +0.08749999,0.2125,0.10606601,0.05303301 +0.087500006,0.21249999,0.09449408,0.094494075 +0.0875,0.2125,0.0668174,0.1336348 +0.087500006,0.2125,0.1336348,0.0668174 +0.0875,0.2125,0.11905508,0.11905509 +0.087500006,0.2125,0.084184654,0.16836931 +0.0875,0.2125,0.16836931,0.08418465 +0.0875,0.23750001,0.075,0.075 +0.087500006,0.2375,0.053033013,0.10606602 +0.08749999,0.2375,0.10606601,0.053033024 +0.087500006,0.2375,0.09449408,0.094494075 +0.0875,0.23750001,0.0668174,0.13363482 +0.087500006,0.2375,0.1336348,0.06681743 +0.0875,0.2375,0.11905508,0.11905506 +0.087500006,0.2375,0.084184654,0.16836932 +0.0875,0.23750001,0.16836931,0.08418466 +0.0875,0.2625,0.075,0.07500002 +0.087500006,0.2625,0.053033013,0.10606603 +0.08749999,0.2625,0.10606601,0.053033024 +0.087500006,0.2625,0.09449408,0.094494075 +0.0875,0.2625,0.0668174,0.13363479 +0.087500006,0.2625,0.1336348,0.06681743 +0.0875,0.2625,0.11905508,0.11905508 +0.087500006,0.2625,0.084184654,0.1683693 +0.0875,0.2625,0.16836931,0.08418463 +0.0875,0.2875,0.075,0.07499999 +0.087500006,0.2875,0.053033013,0.10606603 +0.08749999,0.28750002,0.10606601,0.053033024 +0.087500006,0.2875,0.09449408,0.094494045 +0.0875,0.2875,0.0668174,0.1336348 +0.087500006,0.28750002,0.1336348,0.06681743 +0.0875,0.2875,0.11905508,0.11905508 +0.087500006,0.2875,0.084184654,0.1683693 +0.0875,0.2875,0.16836931,0.08418465 +0.0875,0.3125,0.075,0.07499999 +0.087500006,0.3125,0.053033013,0.10606605 +0.08749999,0.3125,0.10606601,0.053032994 +0.087500006,0.3125,0.09449408,0.094494045 +0.0875,0.3125,0.0668174,0.1336348 +0.087500006,0.3125,0.1336348,0.0668174 +0.0875,0.3125,0.11905508,0.11905509 +0.087500006,0.3125,0.084184654,0.1683693 +0.0875,0.3125,0.16836931,0.08418465 +0.0875,0.3375,0.075,0.07499999 +0.087500006,0.3375,0.053033013,0.10606605 +0.08749999,0.33749998,0.10606601,0.053033024 +0.087500006,0.3375,0.09449408,0.094494045 +0.0875,0.33750004,0.0668174,0.13363484 +0.087500006,0.33749998,0.1336348,0.06681743 +0.0875,0.3375,0.11905508,0.11905509 +0.087500006,0.3375,0.084184654,0.1683693 +0.0875,0.3375,0.16836931,0.08418465 +0.0875,0.3625,0.075,0.07500002 +0.087500006,0.3625,0.053033013,0.10606602 +0.08749999,0.3625,0.10606601,0.053033024 +0.087500006,0.3625,0.09449408,0.094494075 +0.0875,0.3625,0.0668174,0.1336348 +0.087500006,0.3625,0.1336348,0.06681743 +0.0875,0.3625,0.11905508,0.11905506 +0.087500006,0.3625,0.084184654,0.1683693 +0.0875,0.3625,0.16836931,0.08418465 +0.0875,0.3875,0.075,0.07500002 +0.087500006,0.3875,0.053033013,0.10606602 +0.08749999,0.3875,0.10606601,0.053032994 +0.087500006,0.3875,0.09449408,0.094494075 +0.0875,0.3875,0.0668174,0.13363484 +0.087500006,0.3875,0.1336348,0.0668174 +0.0875,0.3875,0.11905508,0.11905506 +0.087500006,0.3875,0.084184654,0.1683693 +0.0875,0.3875,0.16836931,0.08418465 +0.0875,0.4125,0.075,0.07499999 +0.087500006,0.4125,0.053033013,0.10606605 +0.08749999,0.4125,0.10606601,0.053032994 +0.087500006,0.4125,0.09449408,0.094494045 +0.0875,0.41250002,0.0668174,0.13363484 +0.087500006,0.4125,0.1336348,0.0668174 +0.0875,0.4125,0.11905508,0.11905509 +0.087500006,0.4125,0.084184654,0.1683693 +0.0875,0.4125,0.16836931,0.08418465 +0.0875,0.4375,0.075,0.07499999 +0.087500006,0.4375,0.053033013,0.10606605 +0.08749999,0.4375,0.10606601,0.053032994 +0.087500006,0.4375,0.09449408,0.094494045 +0.0875,0.4375,0.0668174,0.1336348 +0.087500006,0.4375,0.1336348,0.0668174 +0.0875,0.4375,0.11905508,0.11905509 +0.087500006,0.4375,0.084184654,0.1683693 +0.0875,0.4375,0.16836931,0.08418465 +0.0875,0.4625,0.075,0.07499999 +0.087500006,0.4625,0.053033013,0.10606605 +0.08749999,0.46249998,0.10606601,0.053032964 +0.087500006,0.4625,0.09449408,0.094494045 +0.0875,0.46250004,0.0668174,0.13363484 +0.087500006,0.46249998,0.1336348,0.06681737 +0.0875,0.4625,0.11905508,0.11905509 +0.087500006,0.46249998,0.084184654,0.16836926 +0.0875,0.46249998,0.16836931,0.08418462 +0.0875,0.48749998,0.075,0.07499999 +0.087500006,0.4875,0.053033013,0.10606602 +0.08749999,0.4875,0.10606601,0.053032994 +0.087500006,0.48749998,0.09449408,0.094494045 +0.0875,0.4875,0.0668174,0.13363484 +0.087500006,0.4875,0.1336348,0.0668174 +0.0875,0.4875,0.11905508,0.11905506 +0.087500006,0.4875,0.084184654,0.1683693 +0.0875,0.4875,0.16836931,0.08418465 +0.0875,0.5125,0.075,0.07500002 +0.087500006,0.51250005,0.053033013,0.10606605 +0.08749999,0.5125,0.10606601,0.053032964 +0.087500006,0.5125,0.09449408,0.094494075 +0.0875,0.51250005,0.0668174,0.13363487 +0.087500006,0.5125,0.1336348,0.06681737 +0.0875,0.51250005,0.11905508,0.11905509 +0.087500006,0.5125,0.084184654,0.1683693 +0.0875,0.5125,0.16836931,0.08418465 +0.0875,0.5375,0.075,0.07499999 +0.087500006,0.5375,0.053033013,0.10606605 +0.08749999,0.5375,0.10606601,0.053032935 +0.087500006,0.5375,0.09449408,0.094494045 +0.0875,0.5375,0.0668174,0.13363487 +0.087500006,0.5375,0.1336348,0.06681734 +0.0875,0.5375,0.11905508,0.11905509 +0.087500006,0.5375,0.084184654,0.16836932 +0.0875,0.5375,0.16836931,0.08418468 +0.0875,0.5625,0.075,0.07500005 +0.087500006,0.5625,0.053033013,0.10606599 +0.08749999,0.5625,0.10606601,0.053032994 +0.087500006,0.5625,0.09449408,0.094494104 +0.0875,0.5625,0.0668174,0.13363484 +0.087500006,0.5625,0.1336348,0.0668174 +0.0875,0.5625,0.11905508,0.11905503 +0.087500006,0.5625,0.084184654,0.1683693 +0.0875,0.5625,0.16836931,0.08418465 +0.0875,0.5875,0.075,0.07499999 +0.087500006,0.5875,0.053033013,0.10606605 +0.08749999,0.5875,0.10606601,0.053032935 +0.087500006,0.5875,0.09449408,0.094494045 +0.0875,0.5875,0.0668174,0.13363487 +0.087500006,0.5875,0.1336348,0.06681734 +0.0875,0.5875,0.11905508,0.11905509 +0.087500006,0.5875,0.084184654,0.1683693 +0.0875,0.5875,0.16836931,0.08418465 +0.0875,0.61249995,0.075,0.07499999 +0.087500006,0.61249995,0.053033013,0.10606605 +0.08749999,0.6125,0.10606601,0.053032994 +0.087500006,0.61249995,0.09449408,0.094494045 +0.0875,0.61249995,0.0668174,0.13363487 +0.087500006,0.6125,0.1336348,0.0668174 +0.0875,0.61249995,0.11905508,0.11905509 +0.087500006,0.6125,0.084184654,0.1683693 +0.0875,0.6125,0.16836931,0.08418465 +0.0875,0.63750005,0.075,0.07499999 +0.087500006,0.63750005,0.053033013,0.10606605 +0.08749999,0.6375,0.10606601,0.053032994 +0.087500006,0.63750005,0.09449408,0.094494045 +0.0875,0.63750005,0.0668174,0.13363487 +0.087500006,0.6375,0.1336348,0.0668174 +0.0875,0.63750005,0.11905508,0.11905509 +0.087500006,0.6375,0.084184654,0.1683693 +0.0875,0.6375,0.16836931,0.08418465 +0.0875,0.6625,0.075,0.07499999 +0.087500006,0.6625,0.053033013,0.10606605 +0.08749999,0.6625,0.10606601,0.053032935 +0.087500006,0.6625,0.09449408,0.094494045 +0.0875,0.6625,0.0668174,0.13363487 +0.087500006,0.6625,0.1336348,0.06681734 +0.0875,0.6625,0.11905508,0.11905509 +0.087500006,0.6625,0.084184654,0.1683693 +0.0875,0.6625,0.16836931,0.08418465 +0.0875,0.6875,0.075,0.07500005 +0.087500006,0.6875,0.053033013,0.10606599 +0.08749999,0.6875,0.10606601,0.053032994 +0.087500006,0.6875,0.09449408,0.094494104 +0.0875,0.6875,0.0668174,0.1336348 +0.087500006,0.6875,0.1336348,0.0668174 +0.0875,0.6875,0.11905508,0.11905503 +0.087500006,0.6875,0.084184654,0.1683693 +0.0875,0.6875,0.16836931,0.08418465 +0.0875,0.7125,0.075,0.07499999 +0.087500006,0.7125,0.053033013,0.10606605 +0.08749999,0.7125,0.10606601,0.053032935 +0.087500006,0.7125,0.09449408,0.094494045 +0.0875,0.7125,0.0668174,0.13363487 +0.087500006,0.7125,0.1336348,0.06681734 +0.0875,0.7125,0.11905508,0.11905509 +0.087500006,0.7125,0.084184654,0.1683693 +0.0875,0.7125,0.16836931,0.08418465 +0.0875,0.73749995,0.075,0.07499999 +0.087500006,0.73749995,0.053033013,0.10606605 +0.08749999,0.7375,0.10606601,0.053032994 +0.087500006,0.73749995,0.09449408,0.094494045 +0.0875,0.73749995,0.0668174,0.1336348 +0.087500006,0.7375,0.1336348,0.0668174 +0.0875,0.73749995,0.11905508,0.11905509 +0.087500006,0.7375,0.084184654,0.1683693 +0.0875,0.7375,0.16836931,0.08418465 +0.0875,0.76250005,0.075,0.07499999 +0.087500006,0.7625,0.053033013,0.10606599 +0.08749999,0.7625,0.10606601,0.053032994 +0.087500006,0.76250005,0.09449408,0.094494045 +0.0875,0.7625,0.0668174,0.1336348 +0.087500006,0.7625,0.1336348,0.0668174 +0.0875,0.7625,0.11905508,0.11905503 +0.087500006,0.7625,0.084184654,0.1683693 +0.0875,0.7625,0.16836931,0.08418465 +0.0875,0.7875,0.075,0.07499999 +0.087500006,0.78749996,0.053033013,0.10606599 +0.08749999,0.7875,0.10606601,0.053032994 +0.087500006,0.7875,0.09449408,0.094494045 +0.0875,0.78749996,0.0668174,0.1336348 +0.087500006,0.7875,0.1336348,0.0668174 +0.0875,0.78749996,0.11905508,0.11905503 +0.087500006,0.7875,0.084184654,0.1683693 +0.0875,0.7875,0.16836931,0.08418465 +0.0875,0.8125,0.075,0.07500005 +0.087500006,0.8125,0.053033013,0.10606599 +0.08749999,0.8125,0.10606601,0.053033054 +0.087500006,0.8125,0.09449408,0.094494104 +0.0875,0.8125,0.0668174,0.1336348 +0.087500006,0.8125,0.1336348,0.06681746 +0.0875,0.8125,0.11905508,0.11905503 +0.087500006,0.8125,0.084184654,0.1683693 +0.0875,0.8125,0.16836931,0.08418465 +0.0875,0.8375,0.075,0.07499999 +0.087500006,0.8375,0.053033013,0.10606599 +0.08749999,0.8375,0.10606601,0.053033054 +0.087500006,0.8375,0.09449408,0.094494045 +0.0875,0.8375,0.0668174,0.1336348 +0.087500006,0.8375,0.1336348,0.06681746 +0.0875,0.8375,0.11905508,0.11905503 +0.087500006,0.8375,0.084184654,0.1683693 +0.0875,0.8375,0.16836931,0.08418465 +0.0875,0.86249995,0.075,0.07499999 +0.087500006,0.86249995,0.053033013,0.10606593 +0.08749999,0.86249995,0.10606601,0.053033054 +0.087500006,0.86249995,0.09449408,0.094494045 +0.0875,0.86249995,0.0668174,0.1336348 +0.087500006,0.86249995,0.1336348,0.06681746 +0.0875,0.86249995,0.11905508,0.11905497 +0.087500006,0.8625,0.084184654,0.1683693 +0.0875,0.8625,0.16836931,0.08418465 +0.0875,0.88750005,0.075,0.07499999 +0.087500006,0.88750005,0.053033013,0.10606593 +0.08749999,0.88750005,0.10606601,0.053033054 +0.087500006,0.88750005,0.09449408,0.094494045 +0.0875,0.88750005,0.0668174,0.13363475 +0.087500006,0.88750005,0.1336348,0.06681746 +0.0875,0.88750005,0.11905508,0.11905497 +0.087500006,0.8875,0.084184654,0.1683693 +0.0875,0.8875,0.16836931,0.08418465 +0.0875,0.9125,0.075,0.07499999 +0.087500006,0.9125,0.053033013,0.10606593 +0.08749999,0.9125,0.10606601,0.053033054 +0.087500006,0.9125,0.09449408,0.094494045 +0.0875,0.9125,0.0668174,0.13363475 +0.087500006,0.9125,0.1336348,0.06681746 +0.0875,0.9125,0.11905508,0.11905497 +0.087500006,0.9125,0.084184654,0.1683693 +0.0875,0.9125,0.16836931,0.08418465 +0.0875,0.9375,0.075,0.07500005 +0.087500006,0.9375,0.053033013,0.10606599 +0.08749999,0.9375,0.10606601,0.053033113 +0.087500006,0.9375,0.09449408,0.094494104 +0.0875,0.9375,0.0668174,0.1336348 +0.087500006,0.9375,0.1336348,0.06681752 +0.0875,0.9375,0.11905508,0.11905503 +0.087500006,0.9375,0.084184654,0.1683693 +0.0875,0.9375,0.16836931,0.08418465 +0.0875,0.9625,0.075,0.07499999 +0.087500006,0.9625,0.053033013,0.10606593 +0.08749999,0.9625,0.10606601,0.053033054 +0.087500006,0.9625,0.09449408,0.094494045 +0.0875,0.9625,0.0668174,0.13363475 +0.087500006,0.9625,0.1336348,0.06681746 +0.0875,0.9625,0.11905508,0.11905497 +0.087500006,0.9625,0.084184654,0.1683693 +0.0875,0.9625,0.16836931,0.08418465 +0.0875,0.98749995,0.075,0.07499999 +0.087500006,0.98749995,0.053033013,0.10606593 +0.08749999,0.98749995,0.10606601,0.053033054 +0.087500006,0.98749995,0.09449408,0.094494045 +0.0875,0.98749995,0.0668174,0.13363475 +0.087500006,0.98749995,0.1336348,0.06681746 +0.0875,0.98749995,0.11905508,0.11905497 +0.087500006,0.98749995,0.084184654,0.16836923 +0.0875,0.98749995,0.16836931,0.08418459 +0.112500004,0.0125,0.075,0.075 +0.112500004,0.012499997,0.05303301,0.10606602 +0.1125,0.012499999,0.10606601,0.05303301 +0.1125,0.012499999,0.094494075,0.09449408 +0.1125,0.012500001,0.0668174,0.1336348 +0.1125,0.012499999,0.1336348,0.0668174 +0.1125,0.012500001,0.119055085,0.11905508 +0.1125,0.012499999,0.08418465,0.1683693 +0.112500004,0.012500002,0.16836931,0.084184654 +0.112500004,0.0375,0.075,0.075 +0.112500004,0.037499998,0.05303301,0.10606601 +0.1125,0.0375,0.10606601,0.05303301 +0.1125,0.0375,0.094494075,0.094494075 +0.1125,0.0375,0.0668174,0.1336348 +0.1125,0.0375,0.1336348,0.0668174 +0.1125,0.0375,0.119055085,0.11905508 +0.1125,0.0375,0.08418465,0.16836931 +0.112500004,0.0375,0.16836931,0.08418466 +0.112500004,0.0625,0.075,0.075 +0.112500004,0.0625,0.05303301,0.10606602 +0.1125,0.0625,0.10606601,0.05303301 +0.1125,0.0625,0.094494075,0.094494075 +0.1125,0.0625,0.0668174,0.1336348 +0.1125,0.0625,0.1336348,0.0668174 +0.1125,0.0625,0.119055085,0.11905508 +0.1125,0.0625,0.08418465,0.16836932 +0.112500004,0.0625,0.16836931,0.08418465 +0.112500004,0.0875,0.075,0.075 +0.112500004,0.08749999,0.05303301,0.10606601 +0.1125,0.087500006,0.10606601,0.053033013 +0.1125,0.087500006,0.094494075,0.09449408 +0.1125,0.087500006,0.0668174,0.1336348 +0.1125,0.0875,0.1336348,0.0668174 +0.1125,0.0875,0.119055085,0.11905508 +0.1125,0.0875,0.08418465,0.16836931 +0.112500004,0.087500006,0.16836931,0.084184654 +0.112500004,0.112500004,0.075,0.075 +0.112500004,0.1125,0.05303301,0.10606601 +0.1125,0.112500004,0.10606601,0.05303301 +0.1125,0.1125,0.094494075,0.094494075 +0.1125,0.1125,0.0668174,0.1336348 +0.1125,0.1125,0.1336348,0.0668174 +0.1125,0.1125,0.119055085,0.119055085 +0.1125,0.112500004,0.08418465,0.16836931 +0.112500004,0.1125,0.16836931,0.08418465 +0.112500004,0.1375,0.075,0.074999996 +0.112500004,0.1375,0.05303301,0.10606602 +0.1125,0.1375,0.10606601,0.053033024 +0.1125,0.1375,0.094494075,0.09449408 +0.1125,0.1375,0.0668174,0.1336348 +0.1125,0.1375,0.1336348,0.0668174 +0.1125,0.13749999,0.119055085,0.11905508 +0.1125,0.1375,0.08418465,0.1683693 +0.112500004,0.1375,0.16836931,0.084184654 +0.112500004,0.1625,0.075,0.075 +0.112500004,0.16250001,0.05303301,0.106066026 +0.1125,0.1625,0.10606601,0.05303301 +0.1125,0.1625,0.094494075,0.094494075 +0.1125,0.1625,0.0668174,0.1336348 +0.1125,0.1625,0.1336348,0.0668174 +0.1125,0.1625,0.119055085,0.11905508 +0.1125,0.1625,0.08418465,0.1683693 +0.112500004,0.1625,0.16836931,0.08418464 +0.112500004,0.1875,0.075,0.07499999 +0.112500004,0.1875,0.05303301,0.10606603 +0.1125,0.1875,0.10606601,0.053033024 +0.1125,0.1875,0.094494075,0.09449406 +0.1125,0.1875,0.0668174,0.1336348 +0.1125,0.1875,0.1336348,0.06681742 +0.1125,0.1875,0.119055085,0.11905509 +0.1125,0.1875,0.08418465,0.16836931 +0.112500004,0.1875,0.16836931,0.08418465 +0.112500004,0.2125,0.075,0.075 +0.112500004,0.2125,0.05303301,0.10606603 +0.1125,0.2125,0.10606601,0.05303301 +0.1125,0.21249999,0.094494075,0.094494075 +0.1125,0.2125,0.0668174,0.1336348 +0.1125,0.2125,0.1336348,0.0668174 +0.1125,0.2125,0.119055085,0.11905509 +0.1125,0.2125,0.08418465,0.16836931 +0.112500004,0.2125,0.16836931,0.08418465 +0.112500004,0.23750001,0.075,0.075 +0.112500004,0.2375,0.05303301,0.10606602 +0.1125,0.2375,0.10606601,0.053033024 +0.1125,0.2375,0.094494075,0.094494075 +0.1125,0.23750001,0.0668174,0.13363482 +0.1125,0.2375,0.1336348,0.06681743 +0.1125,0.2375,0.119055085,0.11905506 +0.1125,0.2375,0.08418465,0.16836932 +0.112500004,0.23750001,0.16836931,0.08418466 +0.112500004,0.2625,0.075,0.07500002 +0.112500004,0.2625,0.05303301,0.10606603 +0.1125,0.2625,0.10606601,0.053033024 +0.1125,0.2625,0.094494075,0.094494075 +0.1125,0.2625,0.0668174,0.13363479 +0.1125,0.2625,0.1336348,0.06681743 +0.1125,0.2625,0.119055085,0.11905508 +0.1125,0.2625,0.08418465,0.1683693 +0.112500004,0.2625,0.16836931,0.08418463 +0.112500004,0.2875,0.075,0.07499999 +0.112500004,0.2875,0.05303301,0.10606603 +0.1125,0.28750002,0.10606601,0.053033024 +0.1125,0.2875,0.094494075,0.094494045 +0.1125,0.2875,0.0668174,0.1336348 +0.1125,0.28750002,0.1336348,0.06681743 +0.1125,0.2875,0.119055085,0.11905508 +0.1125,0.2875,0.08418465,0.1683693 +0.112500004,0.2875,0.16836931,0.08418465 +0.112500004,0.3125,0.075,0.07499999 +0.112500004,0.3125,0.05303301,0.10606605 +0.1125,0.3125,0.10606601,0.053032994 +0.1125,0.3125,0.094494075,0.094494045 +0.1125,0.3125,0.0668174,0.1336348 +0.1125,0.3125,0.1336348,0.0668174 +0.1125,0.3125,0.119055085,0.11905509 +0.1125,0.3125,0.08418465,0.1683693 +0.112500004,0.3125,0.16836931,0.08418465 +0.112500004,0.3375,0.075,0.07499999 +0.112500004,0.3375,0.05303301,0.10606605 +0.1125,0.33749998,0.10606601,0.053033024 +0.1125,0.3375,0.094494075,0.094494045 +0.1125,0.33750004,0.0668174,0.13363484 +0.1125,0.33749998,0.1336348,0.06681743 +0.1125,0.3375,0.119055085,0.11905509 +0.1125,0.3375,0.08418465,0.1683693 +0.112500004,0.3375,0.16836931,0.08418465 +0.112500004,0.3625,0.075,0.07500002 +0.112500004,0.3625,0.05303301,0.10606602 +0.1125,0.3625,0.10606601,0.053033024 +0.1125,0.3625,0.094494075,0.094494075 +0.1125,0.3625,0.0668174,0.1336348 +0.1125,0.3625,0.1336348,0.06681743 +0.1125,0.3625,0.119055085,0.11905506 +0.1125,0.3625,0.08418465,0.1683693 +0.112500004,0.3625,0.16836931,0.08418465 +0.112500004,0.3875,0.075,0.07500002 +0.112500004,0.3875,0.05303301,0.10606602 +0.1125,0.3875,0.10606601,0.053032994 +0.1125,0.3875,0.094494075,0.094494075 +0.1125,0.3875,0.0668174,0.13363484 +0.1125,0.3875,0.1336348,0.0668174 +0.1125,0.3875,0.119055085,0.11905506 +0.1125,0.3875,0.08418465,0.1683693 +0.112500004,0.3875,0.16836931,0.08418465 +0.112500004,0.4125,0.075,0.07499999 +0.112500004,0.4125,0.05303301,0.10606605 +0.1125,0.4125,0.10606601,0.053032994 +0.1125,0.4125,0.094494075,0.094494045 +0.1125,0.41250002,0.0668174,0.13363484 +0.1125,0.4125,0.1336348,0.0668174 +0.1125,0.4125,0.119055085,0.11905509 +0.1125,0.4125,0.08418465,0.1683693 +0.112500004,0.4125,0.16836931,0.08418465 +0.112500004,0.4375,0.075,0.07499999 +0.112500004,0.4375,0.05303301,0.10606605 +0.1125,0.4375,0.10606601,0.053032994 +0.1125,0.4375,0.094494075,0.094494045 +0.1125,0.4375,0.0668174,0.1336348 +0.1125,0.4375,0.1336348,0.0668174 +0.1125,0.4375,0.119055085,0.11905509 +0.1125,0.4375,0.08418465,0.1683693 +0.112500004,0.4375,0.16836931,0.08418465 +0.112500004,0.4625,0.075,0.07499999 +0.112500004,0.4625,0.05303301,0.10606605 +0.1125,0.46249998,0.10606601,0.053032964 +0.1125,0.4625,0.094494075,0.094494045 +0.1125,0.46250004,0.0668174,0.13363484 +0.1125,0.46249998,0.1336348,0.06681737 +0.1125,0.4625,0.119055085,0.11905509 +0.1125,0.46249998,0.08418465,0.16836926 +0.112500004,0.46249998,0.16836931,0.08418462 +0.112500004,0.48749998,0.075,0.07499999 +0.112500004,0.4875,0.05303301,0.10606602 +0.1125,0.4875,0.10606601,0.053032994 +0.1125,0.48749998,0.094494075,0.094494045 +0.1125,0.4875,0.0668174,0.13363484 +0.1125,0.4875,0.1336348,0.0668174 +0.1125,0.4875,0.119055085,0.11905506 +0.1125,0.4875,0.08418465,0.1683693 +0.112500004,0.4875,0.16836931,0.08418465 +0.112500004,0.5125,0.075,0.07500002 +0.112500004,0.51250005,0.05303301,0.10606605 +0.1125,0.5125,0.10606601,0.053032964 +0.1125,0.5125,0.094494075,0.094494075 +0.1125,0.51250005,0.0668174,0.13363487 +0.1125,0.5125,0.1336348,0.06681737 +0.1125,0.51250005,0.119055085,0.11905509 +0.1125,0.5125,0.08418465,0.1683693 +0.112500004,0.5125,0.16836931,0.08418465 +0.112500004,0.5375,0.075,0.07499999 +0.112500004,0.5375,0.05303301,0.10606605 +0.1125,0.5375,0.10606601,0.053032935 +0.1125,0.5375,0.094494075,0.094494045 +0.1125,0.5375,0.0668174,0.13363487 +0.1125,0.5375,0.1336348,0.06681734 +0.1125,0.5375,0.119055085,0.11905509 +0.1125,0.5375,0.08418465,0.16836932 +0.112500004,0.5375,0.16836931,0.08418468 +0.112500004,0.5625,0.075,0.07500005 +0.112500004,0.5625,0.05303301,0.10606599 +0.1125,0.5625,0.10606601,0.053032994 +0.1125,0.5625,0.094494075,0.094494104 +0.1125,0.5625,0.0668174,0.13363484 +0.1125,0.5625,0.1336348,0.0668174 +0.1125,0.5625,0.119055085,0.11905503 +0.1125,0.5625,0.08418465,0.1683693 +0.112500004,0.5625,0.16836931,0.08418465 +0.112500004,0.5875,0.075,0.07499999 +0.112500004,0.5875,0.05303301,0.10606605 +0.1125,0.5875,0.10606601,0.053032935 +0.1125,0.5875,0.094494075,0.094494045 +0.1125,0.5875,0.0668174,0.13363487 +0.1125,0.5875,0.1336348,0.06681734 +0.1125,0.5875,0.119055085,0.11905509 +0.1125,0.5875,0.08418465,0.1683693 +0.112500004,0.5875,0.16836931,0.08418465 +0.112500004,0.61249995,0.075,0.07499999 +0.112500004,0.61249995,0.05303301,0.10606605 +0.1125,0.6125,0.10606601,0.053032994 +0.1125,0.61249995,0.094494075,0.094494045 +0.1125,0.61249995,0.0668174,0.13363487 +0.1125,0.6125,0.1336348,0.0668174 +0.1125,0.61249995,0.119055085,0.11905509 +0.1125,0.6125,0.08418465,0.1683693 +0.112500004,0.6125,0.16836931,0.08418465 +0.112500004,0.63750005,0.075,0.07499999 +0.112500004,0.63750005,0.05303301,0.10606605 +0.1125,0.6375,0.10606601,0.053032994 +0.1125,0.63750005,0.094494075,0.094494045 +0.1125,0.63750005,0.0668174,0.13363487 +0.1125,0.6375,0.1336348,0.0668174 +0.1125,0.63750005,0.119055085,0.11905509 +0.1125,0.6375,0.08418465,0.1683693 +0.112500004,0.6375,0.16836931,0.08418465 +0.112500004,0.6625,0.075,0.07499999 +0.112500004,0.6625,0.05303301,0.10606605 +0.1125,0.6625,0.10606601,0.053032935 +0.1125,0.6625,0.094494075,0.094494045 +0.1125,0.6625,0.0668174,0.13363487 +0.1125,0.6625,0.1336348,0.06681734 +0.1125,0.6625,0.119055085,0.11905509 +0.1125,0.6625,0.08418465,0.1683693 +0.112500004,0.6625,0.16836931,0.08418465 +0.112500004,0.6875,0.075,0.07500005 +0.112500004,0.6875,0.05303301,0.10606599 +0.1125,0.6875,0.10606601,0.053032994 +0.1125,0.6875,0.094494075,0.094494104 +0.1125,0.6875,0.0668174,0.1336348 +0.1125,0.6875,0.1336348,0.0668174 +0.1125,0.6875,0.119055085,0.11905503 +0.1125,0.6875,0.08418465,0.1683693 +0.112500004,0.6875,0.16836931,0.08418465 +0.112500004,0.7125,0.075,0.07499999 +0.112500004,0.7125,0.05303301,0.10606605 +0.1125,0.7125,0.10606601,0.053032935 +0.1125,0.7125,0.094494075,0.094494045 +0.1125,0.7125,0.0668174,0.13363487 +0.1125,0.7125,0.1336348,0.06681734 +0.1125,0.7125,0.119055085,0.11905509 +0.1125,0.7125,0.08418465,0.1683693 +0.112500004,0.7125,0.16836931,0.08418465 +0.112500004,0.73749995,0.075,0.07499999 +0.112500004,0.73749995,0.05303301,0.10606605 +0.1125,0.7375,0.10606601,0.053032994 +0.1125,0.73749995,0.094494075,0.094494045 +0.1125,0.73749995,0.0668174,0.1336348 +0.1125,0.7375,0.1336348,0.0668174 +0.1125,0.73749995,0.119055085,0.11905509 +0.1125,0.7375,0.08418465,0.1683693 +0.112500004,0.7375,0.16836931,0.08418465 +0.112500004,0.76250005,0.075,0.07499999 +0.112500004,0.7625,0.05303301,0.10606599 +0.1125,0.7625,0.10606601,0.053032994 +0.1125,0.76250005,0.094494075,0.094494045 +0.1125,0.7625,0.0668174,0.1336348 +0.1125,0.7625,0.1336348,0.0668174 +0.1125,0.7625,0.119055085,0.11905503 +0.1125,0.7625,0.08418465,0.1683693 +0.112500004,0.7625,0.16836931,0.08418465 +0.112500004,0.7875,0.075,0.07499999 +0.112500004,0.78749996,0.05303301,0.10606599 +0.1125,0.7875,0.10606601,0.053032994 +0.1125,0.7875,0.094494075,0.094494045 +0.1125,0.78749996,0.0668174,0.1336348 +0.1125,0.7875,0.1336348,0.0668174 +0.1125,0.78749996,0.119055085,0.11905503 +0.1125,0.7875,0.08418465,0.1683693 +0.112500004,0.7875,0.16836931,0.08418465 +0.112500004,0.8125,0.075,0.07500005 +0.112500004,0.8125,0.05303301,0.10606599 +0.1125,0.8125,0.10606601,0.053033054 +0.1125,0.8125,0.094494075,0.094494104 +0.1125,0.8125,0.0668174,0.1336348 +0.1125,0.8125,0.1336348,0.06681746 +0.1125,0.8125,0.119055085,0.11905503 +0.1125,0.8125,0.08418465,0.1683693 +0.112500004,0.8125,0.16836931,0.08418465 +0.112500004,0.8375,0.075,0.07499999 +0.112500004,0.8375,0.05303301,0.10606599 +0.1125,0.8375,0.10606601,0.053033054 +0.1125,0.8375,0.094494075,0.094494045 +0.1125,0.8375,0.0668174,0.1336348 +0.1125,0.8375,0.1336348,0.06681746 +0.1125,0.8375,0.119055085,0.11905503 +0.1125,0.8375,0.08418465,0.1683693 +0.112500004,0.8375,0.16836931,0.08418465 +0.112500004,0.86249995,0.075,0.07499999 +0.112500004,0.86249995,0.05303301,0.10606593 +0.1125,0.86249995,0.10606601,0.053033054 +0.1125,0.86249995,0.094494075,0.094494045 +0.1125,0.86249995,0.0668174,0.1336348 +0.1125,0.86249995,0.1336348,0.06681746 +0.1125,0.86249995,0.119055085,0.11905497 +0.1125,0.8625,0.08418465,0.1683693 +0.112500004,0.8625,0.16836931,0.08418465 +0.112500004,0.88750005,0.075,0.07499999 +0.112500004,0.88750005,0.05303301,0.10606593 +0.1125,0.88750005,0.10606601,0.053033054 +0.1125,0.88750005,0.094494075,0.094494045 +0.1125,0.88750005,0.0668174,0.13363475 +0.1125,0.88750005,0.1336348,0.06681746 +0.1125,0.88750005,0.119055085,0.11905497 +0.1125,0.8875,0.08418465,0.1683693 +0.112500004,0.8875,0.16836931,0.08418465 +0.112500004,0.9125,0.075,0.07499999 +0.112500004,0.9125,0.05303301,0.10606593 +0.1125,0.9125,0.10606601,0.053033054 +0.1125,0.9125,0.094494075,0.094494045 +0.1125,0.9125,0.0668174,0.13363475 +0.1125,0.9125,0.1336348,0.06681746 +0.1125,0.9125,0.119055085,0.11905497 +0.1125,0.9125,0.08418465,0.1683693 +0.112500004,0.9125,0.16836931,0.08418465 +0.112500004,0.9375,0.075,0.07500005 +0.112500004,0.9375,0.05303301,0.10606599 +0.1125,0.9375,0.10606601,0.053033113 +0.1125,0.9375,0.094494075,0.094494104 +0.1125,0.9375,0.0668174,0.1336348 +0.1125,0.9375,0.1336348,0.06681752 +0.1125,0.9375,0.119055085,0.11905503 +0.1125,0.9375,0.08418465,0.1683693 +0.112500004,0.9375,0.16836931,0.08418465 +0.112500004,0.9625,0.075,0.07499999 +0.112500004,0.9625,0.05303301,0.10606593 +0.1125,0.9625,0.10606601,0.053033054 +0.1125,0.9625,0.094494075,0.094494045 +0.1125,0.9625,0.0668174,0.13363475 +0.1125,0.9625,0.1336348,0.06681746 +0.1125,0.9625,0.119055085,0.11905497 +0.1125,0.9625,0.08418465,0.1683693 +0.112500004,0.9625,0.16836931,0.08418465 +0.112500004,0.98749995,0.075,0.07499999 +0.112500004,0.98749995,0.05303301,0.10606593 +0.1125,0.98749995,0.10606601,0.053033054 +0.1125,0.98749995,0.094494075,0.094494045 +0.1125,0.98749995,0.0668174,0.13363475 +0.1125,0.98749995,0.1336348,0.06681746 +0.1125,0.98749995,0.119055085,0.11905497 +0.1125,0.98749995,0.08418465,0.16836923 +0.112500004,0.98749995,0.16836931,0.08418459 +0.1375,0.0125,0.074999996,0.075 +0.1375,0.012499997,0.053033024,0.10606602 +0.1375,0.012499999,0.10606602,0.05303301 +0.1375,0.012499999,0.09449408,0.09449408 +0.1375,0.012500001,0.0668174,0.1336348 +0.1375,0.012499999,0.1336348,0.0668174 +0.13749999,0.012500001,0.11905508,0.11905508 +0.1375,0.012499999,0.084184654,0.1683693 +0.1375,0.012500002,0.1683693,0.084184654 +0.1375,0.0375,0.074999996,0.075 +0.1375,0.037499998,0.053033024,0.10606601 +0.1375,0.0375,0.10606602,0.05303301 +0.1375,0.0375,0.09449408,0.094494075 +0.1375,0.0375,0.0668174,0.1336348 +0.1375,0.0375,0.1336348,0.0668174 +0.13749999,0.0375,0.11905508,0.11905508 +0.1375,0.0375,0.084184654,0.16836931 +0.1375,0.0375,0.1683693,0.08418466 +0.1375,0.0625,0.074999996,0.075 +0.1375,0.0625,0.053033024,0.10606602 +0.1375,0.0625,0.10606602,0.05303301 +0.1375,0.0625,0.09449408,0.094494075 +0.1375,0.0625,0.0668174,0.1336348 +0.1375,0.0625,0.1336348,0.0668174 +0.13749999,0.0625,0.11905508,0.11905508 +0.1375,0.0625,0.084184654,0.16836932 +0.1375,0.0625,0.1683693,0.08418465 +0.1375,0.0875,0.074999996,0.075 +0.1375,0.08749999,0.053033024,0.10606601 +0.1375,0.087500006,0.10606602,0.053033013 +0.1375,0.087500006,0.09449408,0.09449408 +0.1375,0.087500006,0.0668174,0.1336348 +0.1375,0.0875,0.1336348,0.0668174 +0.13749999,0.0875,0.11905508,0.11905508 +0.1375,0.0875,0.084184654,0.16836931 +0.1375,0.087500006,0.1683693,0.084184654 +0.1375,0.112500004,0.074999996,0.075 +0.1375,0.1125,0.053033024,0.10606601 +0.1375,0.112500004,0.10606602,0.05303301 +0.1375,0.1125,0.09449408,0.094494075 +0.1375,0.1125,0.0668174,0.1336348 +0.1375,0.1125,0.1336348,0.0668174 +0.13749999,0.1125,0.11905508,0.119055085 +0.1375,0.112500004,0.084184654,0.16836931 +0.1375,0.1125,0.1683693,0.08418465 +0.1375,0.1375,0.074999996,0.074999996 +0.1375,0.1375,0.053033024,0.10606602 +0.1375,0.1375,0.10606602,0.053033024 +0.1375,0.1375,0.09449408,0.09449408 +0.1375,0.1375,0.0668174,0.1336348 +0.1375,0.1375,0.1336348,0.0668174 +0.13749999,0.13749999,0.11905508,0.11905508 +0.1375,0.1375,0.084184654,0.1683693 +0.1375,0.1375,0.1683693,0.084184654 +0.1375,0.1625,0.074999996,0.075 +0.1375,0.16250001,0.053033024,0.106066026 +0.1375,0.1625,0.10606602,0.05303301 +0.1375,0.1625,0.09449408,0.094494075 +0.1375,0.1625,0.0668174,0.1336348 +0.1375,0.1625,0.1336348,0.0668174 +0.13749999,0.1625,0.11905508,0.11905508 +0.1375,0.1625,0.084184654,0.1683693 +0.1375,0.1625,0.1683693,0.08418464 +0.1375,0.1875,0.074999996,0.07499999 +0.1375,0.1875,0.053033024,0.10606603 +0.1375,0.1875,0.10606602,0.053033024 +0.1375,0.1875,0.09449408,0.09449406 +0.1375,0.1875,0.0668174,0.1336348 +0.1375,0.1875,0.1336348,0.06681742 +0.13749999,0.1875,0.11905508,0.11905509 +0.1375,0.1875,0.084184654,0.16836931 +0.1375,0.1875,0.1683693,0.08418465 +0.1375,0.2125,0.074999996,0.075 +0.1375,0.2125,0.053033024,0.10606603 +0.1375,0.2125,0.10606602,0.05303301 +0.1375,0.21249999,0.09449408,0.094494075 +0.1375,0.2125,0.0668174,0.1336348 +0.1375,0.2125,0.1336348,0.0668174 +0.13749999,0.2125,0.11905508,0.11905509 +0.1375,0.2125,0.084184654,0.16836931 +0.1375,0.2125,0.1683693,0.08418465 +0.1375,0.23750001,0.074999996,0.075 +0.1375,0.2375,0.053033024,0.10606602 +0.1375,0.2375,0.10606602,0.053033024 +0.1375,0.2375,0.09449408,0.094494075 +0.1375,0.23750001,0.0668174,0.13363482 +0.1375,0.2375,0.1336348,0.06681743 +0.13749999,0.2375,0.11905508,0.11905506 +0.1375,0.2375,0.084184654,0.16836932 +0.1375,0.23750001,0.1683693,0.08418466 +0.1375,0.2625,0.074999996,0.07500002 +0.1375,0.2625,0.053033024,0.10606603 +0.1375,0.2625,0.10606602,0.053033024 +0.1375,0.2625,0.09449408,0.094494075 +0.1375,0.2625,0.0668174,0.13363479 +0.1375,0.2625,0.1336348,0.06681743 +0.13749999,0.2625,0.11905508,0.11905508 +0.1375,0.2625,0.084184654,0.1683693 +0.1375,0.2625,0.1683693,0.08418463 +0.1375,0.2875,0.074999996,0.07499999 +0.1375,0.2875,0.053033024,0.10606603 +0.1375,0.28750002,0.10606602,0.053033024 +0.1375,0.2875,0.09449408,0.094494045 +0.1375,0.2875,0.0668174,0.1336348 +0.1375,0.28750002,0.1336348,0.06681743 +0.13749999,0.2875,0.11905508,0.11905508 +0.1375,0.2875,0.084184654,0.1683693 +0.1375,0.2875,0.1683693,0.08418465 +0.1375,0.3125,0.074999996,0.07499999 +0.1375,0.3125,0.053033024,0.10606605 +0.1375,0.3125,0.10606602,0.053032994 +0.1375,0.3125,0.09449408,0.094494045 +0.1375,0.3125,0.0668174,0.1336348 +0.1375,0.3125,0.1336348,0.0668174 +0.13749999,0.3125,0.11905508,0.11905509 +0.1375,0.3125,0.084184654,0.1683693 +0.1375,0.3125,0.1683693,0.08418465 +0.1375,0.3375,0.074999996,0.07499999 +0.1375,0.3375,0.053033024,0.10606605 +0.1375,0.33749998,0.10606602,0.053033024 +0.1375,0.3375,0.09449408,0.094494045 +0.1375,0.33750004,0.0668174,0.13363484 +0.1375,0.33749998,0.1336348,0.06681743 +0.13749999,0.3375,0.11905508,0.11905509 +0.1375,0.3375,0.084184654,0.1683693 +0.1375,0.3375,0.1683693,0.08418465 +0.1375,0.3625,0.074999996,0.07500002 +0.1375,0.3625,0.053033024,0.10606602 +0.1375,0.3625,0.10606602,0.053033024 +0.1375,0.3625,0.09449408,0.094494075 +0.1375,0.3625,0.0668174,0.1336348 +0.1375,0.3625,0.1336348,0.06681743 +0.13749999,0.3625,0.11905508,0.11905506 +0.1375,0.3625,0.084184654,0.1683693 +0.1375,0.3625,0.1683693,0.08418465 +0.1375,0.3875,0.074999996,0.07500002 +0.1375,0.3875,0.053033024,0.10606602 +0.1375,0.3875,0.10606602,0.053032994 +0.1375,0.3875,0.09449408,0.094494075 +0.1375,0.3875,0.0668174,0.13363484 +0.1375,0.3875,0.1336348,0.0668174 +0.13749999,0.3875,0.11905508,0.11905506 +0.1375,0.3875,0.084184654,0.1683693 +0.1375,0.3875,0.1683693,0.08418465 +0.1375,0.4125,0.074999996,0.07499999 +0.1375,0.4125,0.053033024,0.10606605 +0.1375,0.4125,0.10606602,0.053032994 +0.1375,0.4125,0.09449408,0.094494045 +0.1375,0.41250002,0.0668174,0.13363484 +0.1375,0.4125,0.1336348,0.0668174 +0.13749999,0.4125,0.11905508,0.11905509 +0.1375,0.4125,0.084184654,0.1683693 +0.1375,0.4125,0.1683693,0.08418465 +0.1375,0.4375,0.074999996,0.07499999 +0.1375,0.4375,0.053033024,0.10606605 +0.1375,0.4375,0.10606602,0.053032994 +0.1375,0.4375,0.09449408,0.094494045 +0.1375,0.4375,0.0668174,0.1336348 +0.1375,0.4375,0.1336348,0.0668174 +0.13749999,0.4375,0.11905508,0.11905509 +0.1375,0.4375,0.084184654,0.1683693 +0.1375,0.4375,0.1683693,0.08418465 +0.1375,0.4625,0.074999996,0.07499999 +0.1375,0.4625,0.053033024,0.10606605 +0.1375,0.46249998,0.10606602,0.053032964 +0.1375,0.4625,0.09449408,0.094494045 +0.1375,0.46250004,0.0668174,0.13363484 +0.1375,0.46249998,0.1336348,0.06681737 +0.13749999,0.4625,0.11905508,0.11905509 +0.1375,0.46249998,0.084184654,0.16836926 +0.1375,0.46249998,0.1683693,0.08418462 +0.1375,0.48749998,0.074999996,0.07499999 +0.1375,0.4875,0.053033024,0.10606602 +0.1375,0.4875,0.10606602,0.053032994 +0.1375,0.48749998,0.09449408,0.094494045 +0.1375,0.4875,0.0668174,0.13363484 +0.1375,0.4875,0.1336348,0.0668174 +0.13749999,0.4875,0.11905508,0.11905506 +0.1375,0.4875,0.084184654,0.1683693 +0.1375,0.4875,0.1683693,0.08418465 +0.1375,0.5125,0.074999996,0.07500002 +0.1375,0.51250005,0.053033024,0.10606605 +0.1375,0.5125,0.10606602,0.053032964 +0.1375,0.5125,0.09449408,0.094494075 +0.1375,0.51250005,0.0668174,0.13363487 +0.1375,0.5125,0.1336348,0.06681737 +0.13749999,0.51250005,0.11905508,0.11905509 +0.1375,0.5125,0.084184654,0.1683693 +0.1375,0.5125,0.1683693,0.08418465 +0.1375,0.5375,0.074999996,0.07499999 +0.1375,0.5375,0.053033024,0.10606605 +0.1375,0.5375,0.10606602,0.053032935 +0.1375,0.5375,0.09449408,0.094494045 +0.1375,0.5375,0.0668174,0.13363487 +0.1375,0.5375,0.1336348,0.06681734 +0.13749999,0.5375,0.11905508,0.11905509 +0.1375,0.5375,0.084184654,0.16836932 +0.1375,0.5375,0.1683693,0.08418468 +0.1375,0.5625,0.074999996,0.07500005 +0.1375,0.5625,0.053033024,0.10606599 +0.1375,0.5625,0.10606602,0.053032994 +0.1375,0.5625,0.09449408,0.094494104 +0.1375,0.5625,0.0668174,0.13363484 +0.1375,0.5625,0.1336348,0.0668174 +0.13749999,0.5625,0.11905508,0.11905503 +0.1375,0.5625,0.084184654,0.1683693 +0.1375,0.5625,0.1683693,0.08418465 +0.1375,0.5875,0.074999996,0.07499999 +0.1375,0.5875,0.053033024,0.10606605 +0.1375,0.5875,0.10606602,0.053032935 +0.1375,0.5875,0.09449408,0.094494045 +0.1375,0.5875,0.0668174,0.13363487 +0.1375,0.5875,0.1336348,0.06681734 +0.13749999,0.5875,0.11905508,0.11905509 +0.1375,0.5875,0.084184654,0.1683693 +0.1375,0.5875,0.1683693,0.08418465 +0.1375,0.61249995,0.074999996,0.07499999 +0.1375,0.61249995,0.053033024,0.10606605 +0.1375,0.6125,0.10606602,0.053032994 +0.1375,0.61249995,0.09449408,0.094494045 +0.1375,0.61249995,0.0668174,0.13363487 +0.1375,0.6125,0.1336348,0.0668174 +0.13749999,0.61249995,0.11905508,0.11905509 +0.1375,0.6125,0.084184654,0.1683693 +0.1375,0.6125,0.1683693,0.08418465 +0.1375,0.63750005,0.074999996,0.07499999 +0.1375,0.63750005,0.053033024,0.10606605 +0.1375,0.6375,0.10606602,0.053032994 +0.1375,0.63750005,0.09449408,0.094494045 +0.1375,0.63750005,0.0668174,0.13363487 +0.1375,0.6375,0.1336348,0.0668174 +0.13749999,0.63750005,0.11905508,0.11905509 +0.1375,0.6375,0.084184654,0.1683693 +0.1375,0.6375,0.1683693,0.08418465 +0.1375,0.6625,0.074999996,0.07499999 +0.1375,0.6625,0.053033024,0.10606605 +0.1375,0.6625,0.10606602,0.053032935 +0.1375,0.6625,0.09449408,0.094494045 +0.1375,0.6625,0.0668174,0.13363487 +0.1375,0.6625,0.1336348,0.06681734 +0.13749999,0.6625,0.11905508,0.11905509 +0.1375,0.6625,0.084184654,0.1683693 +0.1375,0.6625,0.1683693,0.08418465 +0.1375,0.6875,0.074999996,0.07500005 +0.1375,0.6875,0.053033024,0.10606599 +0.1375,0.6875,0.10606602,0.053032994 +0.1375,0.6875,0.09449408,0.094494104 +0.1375,0.6875,0.0668174,0.1336348 +0.1375,0.6875,0.1336348,0.0668174 +0.13749999,0.6875,0.11905508,0.11905503 +0.1375,0.6875,0.084184654,0.1683693 +0.1375,0.6875,0.1683693,0.08418465 +0.1375,0.7125,0.074999996,0.07499999 +0.1375,0.7125,0.053033024,0.10606605 +0.1375,0.7125,0.10606602,0.053032935 +0.1375,0.7125,0.09449408,0.094494045 +0.1375,0.7125,0.0668174,0.13363487 +0.1375,0.7125,0.1336348,0.06681734 +0.13749999,0.7125,0.11905508,0.11905509 +0.1375,0.7125,0.084184654,0.1683693 +0.1375,0.7125,0.1683693,0.08418465 +0.1375,0.73749995,0.074999996,0.07499999 +0.1375,0.73749995,0.053033024,0.10606605 +0.1375,0.7375,0.10606602,0.053032994 +0.1375,0.73749995,0.09449408,0.094494045 +0.1375,0.73749995,0.0668174,0.1336348 +0.1375,0.7375,0.1336348,0.0668174 +0.13749999,0.73749995,0.11905508,0.11905509 +0.1375,0.7375,0.084184654,0.1683693 +0.1375,0.7375,0.1683693,0.08418465 +0.1375,0.76250005,0.074999996,0.07499999 +0.1375,0.7625,0.053033024,0.10606599 +0.1375,0.7625,0.10606602,0.053032994 +0.1375,0.76250005,0.09449408,0.094494045 +0.1375,0.7625,0.0668174,0.1336348 +0.1375,0.7625,0.1336348,0.0668174 +0.13749999,0.7625,0.11905508,0.11905503 +0.1375,0.7625,0.084184654,0.1683693 +0.1375,0.7625,0.1683693,0.08418465 +0.1375,0.7875,0.074999996,0.07499999 +0.1375,0.78749996,0.053033024,0.10606599 +0.1375,0.7875,0.10606602,0.053032994 +0.1375,0.7875,0.09449408,0.094494045 +0.1375,0.78749996,0.0668174,0.1336348 +0.1375,0.7875,0.1336348,0.0668174 +0.13749999,0.78749996,0.11905508,0.11905503 +0.1375,0.7875,0.084184654,0.1683693 +0.1375,0.7875,0.1683693,0.08418465 +0.1375,0.8125,0.074999996,0.07500005 +0.1375,0.8125,0.053033024,0.10606599 +0.1375,0.8125,0.10606602,0.053033054 +0.1375,0.8125,0.09449408,0.094494104 +0.1375,0.8125,0.0668174,0.1336348 +0.1375,0.8125,0.1336348,0.06681746 +0.13749999,0.8125,0.11905508,0.11905503 +0.1375,0.8125,0.084184654,0.1683693 +0.1375,0.8125,0.1683693,0.08418465 +0.1375,0.8375,0.074999996,0.07499999 +0.1375,0.8375,0.053033024,0.10606599 +0.1375,0.8375,0.10606602,0.053033054 +0.1375,0.8375,0.09449408,0.094494045 +0.1375,0.8375,0.0668174,0.1336348 +0.1375,0.8375,0.1336348,0.06681746 +0.13749999,0.8375,0.11905508,0.11905503 +0.1375,0.8375,0.084184654,0.1683693 +0.1375,0.8375,0.1683693,0.08418465 +0.1375,0.86249995,0.074999996,0.07499999 +0.1375,0.86249995,0.053033024,0.10606593 +0.1375,0.86249995,0.10606602,0.053033054 +0.1375,0.86249995,0.09449408,0.094494045 +0.1375,0.86249995,0.0668174,0.1336348 +0.1375,0.86249995,0.1336348,0.06681746 +0.13749999,0.86249995,0.11905508,0.11905497 +0.1375,0.8625,0.084184654,0.1683693 +0.1375,0.8625,0.1683693,0.08418465 +0.1375,0.88750005,0.074999996,0.07499999 +0.1375,0.88750005,0.053033024,0.10606593 +0.1375,0.88750005,0.10606602,0.053033054 +0.1375,0.88750005,0.09449408,0.094494045 +0.1375,0.88750005,0.0668174,0.13363475 +0.1375,0.88750005,0.1336348,0.06681746 +0.13749999,0.88750005,0.11905508,0.11905497 +0.1375,0.8875,0.084184654,0.1683693 +0.1375,0.8875,0.1683693,0.08418465 +0.1375,0.9125,0.074999996,0.07499999 +0.1375,0.9125,0.053033024,0.10606593 +0.1375,0.9125,0.10606602,0.053033054 +0.1375,0.9125,0.09449408,0.094494045 +0.1375,0.9125,0.0668174,0.13363475 +0.1375,0.9125,0.1336348,0.06681746 +0.13749999,0.9125,0.11905508,0.11905497 +0.1375,0.9125,0.084184654,0.1683693 +0.1375,0.9125,0.1683693,0.08418465 +0.1375,0.9375,0.074999996,0.07500005 +0.1375,0.9375,0.053033024,0.10606599 +0.1375,0.9375,0.10606602,0.053033113 +0.1375,0.9375,0.09449408,0.094494104 +0.1375,0.9375,0.0668174,0.1336348 +0.1375,0.9375,0.1336348,0.06681752 +0.13749999,0.9375,0.11905508,0.11905503 +0.1375,0.9375,0.084184654,0.1683693 +0.1375,0.9375,0.1683693,0.08418465 +0.1375,0.9625,0.074999996,0.07499999 +0.1375,0.9625,0.053033024,0.10606593 +0.1375,0.9625,0.10606602,0.053033054 +0.1375,0.9625,0.09449408,0.094494045 +0.1375,0.9625,0.0668174,0.13363475 +0.1375,0.9625,0.1336348,0.06681746 +0.13749999,0.9625,0.11905508,0.11905497 +0.1375,0.9625,0.084184654,0.1683693 +0.1375,0.9625,0.1683693,0.08418465 +0.1375,0.98749995,0.074999996,0.07499999 +0.1375,0.98749995,0.053033024,0.10606593 +0.1375,0.98749995,0.10606602,0.053033054 +0.1375,0.98749995,0.09449408,0.094494045 +0.1375,0.98749995,0.0668174,0.13363475 +0.1375,0.98749995,0.1336348,0.06681746 +0.13749999,0.98749995,0.11905508,0.11905497 +0.1375,0.98749995,0.084184654,0.16836923 +0.1375,0.98749995,0.1683693,0.08418459 +0.1625,0.0125,0.075,0.075 +0.1625,0.012499997,0.05303301,0.10606602 +0.16250001,0.012499999,0.106066026,0.05303301 +0.1625,0.012499999,0.094494075,0.09449408 +0.1625,0.012500001,0.0668174,0.1336348 +0.1625,0.012499999,0.1336348,0.0668174 +0.1625,0.012500001,0.11905508,0.11905508 +0.1625,0.012499999,0.08418464,0.1683693 +0.1625,0.012500002,0.1683693,0.084184654 +0.1625,0.0375,0.075,0.075 +0.1625,0.037499998,0.05303301,0.10606601 +0.16250001,0.0375,0.106066026,0.05303301 +0.1625,0.0375,0.094494075,0.094494075 +0.1625,0.0375,0.0668174,0.1336348 +0.1625,0.0375,0.1336348,0.0668174 +0.1625,0.0375,0.11905508,0.11905508 +0.1625,0.0375,0.08418464,0.16836931 +0.1625,0.0375,0.1683693,0.08418466 +0.1625,0.0625,0.075,0.075 +0.1625,0.0625,0.05303301,0.10606602 +0.16250001,0.0625,0.106066026,0.05303301 +0.1625,0.0625,0.094494075,0.094494075 +0.1625,0.0625,0.0668174,0.1336348 +0.1625,0.0625,0.1336348,0.0668174 +0.1625,0.0625,0.11905508,0.11905508 +0.1625,0.0625,0.08418464,0.16836932 +0.1625,0.0625,0.1683693,0.08418465 +0.1625,0.0875,0.075,0.075 +0.1625,0.08749999,0.05303301,0.10606601 +0.16250001,0.087500006,0.106066026,0.053033013 +0.1625,0.087500006,0.094494075,0.09449408 +0.1625,0.087500006,0.0668174,0.1336348 +0.1625,0.0875,0.1336348,0.0668174 +0.1625,0.0875,0.11905508,0.11905508 +0.1625,0.0875,0.08418464,0.16836931 +0.1625,0.087500006,0.1683693,0.084184654 +0.1625,0.112500004,0.075,0.075 +0.1625,0.1125,0.05303301,0.10606601 +0.16250001,0.112500004,0.106066026,0.05303301 +0.1625,0.1125,0.094494075,0.094494075 +0.1625,0.1125,0.0668174,0.1336348 +0.1625,0.1125,0.1336348,0.0668174 +0.1625,0.1125,0.11905508,0.119055085 +0.1625,0.112500004,0.08418464,0.16836931 +0.1625,0.1125,0.1683693,0.08418465 +0.1625,0.1375,0.075,0.074999996 +0.1625,0.1375,0.05303301,0.10606602 +0.16250001,0.1375,0.106066026,0.053033024 +0.1625,0.1375,0.094494075,0.09449408 +0.1625,0.1375,0.0668174,0.1336348 +0.1625,0.1375,0.1336348,0.0668174 +0.1625,0.13749999,0.11905508,0.11905508 +0.1625,0.1375,0.08418464,0.1683693 +0.1625,0.1375,0.1683693,0.084184654 +0.1625,0.1625,0.075,0.075 +0.1625,0.16250001,0.05303301,0.106066026 +0.16250001,0.1625,0.106066026,0.05303301 +0.1625,0.1625,0.094494075,0.094494075 +0.1625,0.1625,0.0668174,0.1336348 +0.1625,0.1625,0.1336348,0.0668174 +0.1625,0.1625,0.11905508,0.11905508 +0.1625,0.1625,0.08418464,0.1683693 +0.1625,0.1625,0.1683693,0.08418464 +0.1625,0.1875,0.075,0.07499999 +0.1625,0.1875,0.05303301,0.10606603 +0.16250001,0.1875,0.106066026,0.053033024 +0.1625,0.1875,0.094494075,0.09449406 +0.1625,0.1875,0.0668174,0.1336348 +0.1625,0.1875,0.1336348,0.06681742 +0.1625,0.1875,0.11905508,0.11905509 +0.1625,0.1875,0.08418464,0.16836931 +0.1625,0.1875,0.1683693,0.08418465 +0.1625,0.2125,0.075,0.075 +0.1625,0.2125,0.05303301,0.10606603 +0.16250001,0.2125,0.106066026,0.05303301 +0.1625,0.21249999,0.094494075,0.094494075 +0.1625,0.2125,0.0668174,0.1336348 +0.1625,0.2125,0.1336348,0.0668174 +0.1625,0.2125,0.11905508,0.11905509 +0.1625,0.2125,0.08418464,0.16836931 +0.1625,0.2125,0.1683693,0.08418465 +0.1625,0.23750001,0.075,0.075 +0.1625,0.2375,0.05303301,0.10606602 +0.16250001,0.2375,0.106066026,0.053033024 +0.1625,0.2375,0.094494075,0.094494075 +0.1625,0.23750001,0.0668174,0.13363482 +0.1625,0.2375,0.1336348,0.06681743 +0.1625,0.2375,0.11905508,0.11905506 +0.1625,0.2375,0.08418464,0.16836932 +0.1625,0.23750001,0.1683693,0.08418466 +0.1625,0.2625,0.075,0.07500002 +0.1625,0.2625,0.05303301,0.10606603 +0.16250001,0.2625,0.106066026,0.053033024 +0.1625,0.2625,0.094494075,0.094494075 +0.1625,0.2625,0.0668174,0.13363479 +0.1625,0.2625,0.1336348,0.06681743 +0.1625,0.2625,0.11905508,0.11905508 +0.1625,0.2625,0.08418464,0.1683693 +0.1625,0.2625,0.1683693,0.08418463 +0.1625,0.2875,0.075,0.07499999 +0.1625,0.2875,0.05303301,0.10606603 +0.16250001,0.28750002,0.106066026,0.053033024 +0.1625,0.2875,0.094494075,0.094494045 +0.1625,0.2875,0.0668174,0.1336348 +0.1625,0.28750002,0.1336348,0.06681743 +0.1625,0.2875,0.11905508,0.11905508 +0.1625,0.2875,0.08418464,0.1683693 +0.1625,0.2875,0.1683693,0.08418465 +0.1625,0.3125,0.075,0.07499999 +0.1625,0.3125,0.05303301,0.10606605 +0.16250001,0.3125,0.106066026,0.053032994 +0.1625,0.3125,0.094494075,0.094494045 +0.1625,0.3125,0.0668174,0.1336348 +0.1625,0.3125,0.1336348,0.0668174 +0.1625,0.3125,0.11905508,0.11905509 +0.1625,0.3125,0.08418464,0.1683693 +0.1625,0.3125,0.1683693,0.08418465 +0.1625,0.3375,0.075,0.07499999 +0.1625,0.3375,0.05303301,0.10606605 +0.16250001,0.33749998,0.106066026,0.053033024 +0.1625,0.3375,0.094494075,0.094494045 +0.1625,0.33750004,0.0668174,0.13363484 +0.1625,0.33749998,0.1336348,0.06681743 +0.1625,0.3375,0.11905508,0.11905509 +0.1625,0.3375,0.08418464,0.1683693 +0.1625,0.3375,0.1683693,0.08418465 +0.1625,0.3625,0.075,0.07500002 +0.1625,0.3625,0.05303301,0.10606602 +0.16250001,0.3625,0.106066026,0.053033024 +0.1625,0.3625,0.094494075,0.094494075 +0.1625,0.3625,0.0668174,0.1336348 +0.1625,0.3625,0.1336348,0.06681743 +0.1625,0.3625,0.11905508,0.11905506 +0.1625,0.3625,0.08418464,0.1683693 +0.1625,0.3625,0.1683693,0.08418465 +0.1625,0.3875,0.075,0.07500002 +0.1625,0.3875,0.05303301,0.10606602 +0.16250001,0.3875,0.106066026,0.053032994 +0.1625,0.3875,0.094494075,0.094494075 +0.1625,0.3875,0.0668174,0.13363484 +0.1625,0.3875,0.1336348,0.0668174 +0.1625,0.3875,0.11905508,0.11905506 +0.1625,0.3875,0.08418464,0.1683693 +0.1625,0.3875,0.1683693,0.08418465 +0.1625,0.4125,0.075,0.07499999 +0.1625,0.4125,0.05303301,0.10606605 +0.16250001,0.4125,0.106066026,0.053032994 +0.1625,0.4125,0.094494075,0.094494045 +0.1625,0.41250002,0.0668174,0.13363484 +0.1625,0.4125,0.1336348,0.0668174 +0.1625,0.4125,0.11905508,0.11905509 +0.1625,0.4125,0.08418464,0.1683693 +0.1625,0.4125,0.1683693,0.08418465 +0.1625,0.4375,0.075,0.07499999 +0.1625,0.4375,0.05303301,0.10606605 +0.16250001,0.4375,0.106066026,0.053032994 +0.1625,0.4375,0.094494075,0.094494045 +0.1625,0.4375,0.0668174,0.1336348 +0.1625,0.4375,0.1336348,0.0668174 +0.1625,0.4375,0.11905508,0.11905509 +0.1625,0.4375,0.08418464,0.1683693 +0.1625,0.4375,0.1683693,0.08418465 +0.1625,0.4625,0.075,0.07499999 +0.1625,0.4625,0.05303301,0.10606605 +0.16250001,0.46249998,0.106066026,0.053032964 +0.1625,0.4625,0.094494075,0.094494045 +0.1625,0.46250004,0.0668174,0.13363484 +0.1625,0.46249998,0.1336348,0.06681737 +0.1625,0.4625,0.11905508,0.11905509 +0.1625,0.46249998,0.08418464,0.16836926 +0.1625,0.46249998,0.1683693,0.08418462 +0.1625,0.48749998,0.075,0.07499999 +0.1625,0.4875,0.05303301,0.10606602 +0.16250001,0.4875,0.106066026,0.053032994 +0.1625,0.48749998,0.094494075,0.094494045 +0.1625,0.4875,0.0668174,0.13363484 +0.1625,0.4875,0.1336348,0.0668174 +0.1625,0.4875,0.11905508,0.11905506 +0.1625,0.4875,0.08418464,0.1683693 +0.1625,0.4875,0.1683693,0.08418465 +0.1625,0.5125,0.075,0.07500002 +0.1625,0.51250005,0.05303301,0.10606605 +0.16250001,0.5125,0.106066026,0.053032964 +0.1625,0.5125,0.094494075,0.094494075 +0.1625,0.51250005,0.0668174,0.13363487 +0.1625,0.5125,0.1336348,0.06681737 +0.1625,0.51250005,0.11905508,0.11905509 +0.1625,0.5125,0.08418464,0.1683693 +0.1625,0.5125,0.1683693,0.08418465 +0.1625,0.5375,0.075,0.07499999 +0.1625,0.5375,0.05303301,0.10606605 +0.16250001,0.5375,0.106066026,0.053032935 +0.1625,0.5375,0.094494075,0.094494045 +0.1625,0.5375,0.0668174,0.13363487 +0.1625,0.5375,0.1336348,0.06681734 +0.1625,0.5375,0.11905508,0.11905509 +0.1625,0.5375,0.08418464,0.16836932 +0.1625,0.5375,0.1683693,0.08418468 +0.1625,0.5625,0.075,0.07500005 +0.1625,0.5625,0.05303301,0.10606599 +0.16250001,0.5625,0.106066026,0.053032994 +0.1625,0.5625,0.094494075,0.094494104 +0.1625,0.5625,0.0668174,0.13363484 +0.1625,0.5625,0.1336348,0.0668174 +0.1625,0.5625,0.11905508,0.11905503 +0.1625,0.5625,0.08418464,0.1683693 +0.1625,0.5625,0.1683693,0.08418465 +0.1625,0.5875,0.075,0.07499999 +0.1625,0.5875,0.05303301,0.10606605 +0.16250001,0.5875,0.106066026,0.053032935 +0.1625,0.5875,0.094494075,0.094494045 +0.1625,0.5875,0.0668174,0.13363487 +0.1625,0.5875,0.1336348,0.06681734 +0.1625,0.5875,0.11905508,0.11905509 +0.1625,0.5875,0.08418464,0.1683693 +0.1625,0.5875,0.1683693,0.08418465 +0.1625,0.61249995,0.075,0.07499999 +0.1625,0.61249995,0.05303301,0.10606605 +0.16250001,0.6125,0.106066026,0.053032994 +0.1625,0.61249995,0.094494075,0.094494045 +0.1625,0.61249995,0.0668174,0.13363487 +0.1625,0.6125,0.1336348,0.0668174 +0.1625,0.61249995,0.11905508,0.11905509 +0.1625,0.6125,0.08418464,0.1683693 +0.1625,0.6125,0.1683693,0.08418465 +0.1625,0.63750005,0.075,0.07499999 +0.1625,0.63750005,0.05303301,0.10606605 +0.16250001,0.6375,0.106066026,0.053032994 +0.1625,0.63750005,0.094494075,0.094494045 +0.1625,0.63750005,0.0668174,0.13363487 +0.1625,0.6375,0.1336348,0.0668174 +0.1625,0.63750005,0.11905508,0.11905509 +0.1625,0.6375,0.08418464,0.1683693 +0.1625,0.6375,0.1683693,0.08418465 +0.1625,0.6625,0.075,0.07499999 +0.1625,0.6625,0.05303301,0.10606605 +0.16250001,0.6625,0.106066026,0.053032935 +0.1625,0.6625,0.094494075,0.094494045 +0.1625,0.6625,0.0668174,0.13363487 +0.1625,0.6625,0.1336348,0.06681734 +0.1625,0.6625,0.11905508,0.11905509 +0.1625,0.6625,0.08418464,0.1683693 +0.1625,0.6625,0.1683693,0.08418465 +0.1625,0.6875,0.075,0.07500005 +0.1625,0.6875,0.05303301,0.10606599 +0.16250001,0.6875,0.106066026,0.053032994 +0.1625,0.6875,0.094494075,0.094494104 +0.1625,0.6875,0.0668174,0.1336348 +0.1625,0.6875,0.1336348,0.0668174 +0.1625,0.6875,0.11905508,0.11905503 +0.1625,0.6875,0.08418464,0.1683693 +0.1625,0.6875,0.1683693,0.08418465 +0.1625,0.7125,0.075,0.07499999 +0.1625,0.7125,0.05303301,0.10606605 +0.16250001,0.7125,0.106066026,0.053032935 +0.1625,0.7125,0.094494075,0.094494045 +0.1625,0.7125,0.0668174,0.13363487 +0.1625,0.7125,0.1336348,0.06681734 +0.1625,0.7125,0.11905508,0.11905509 +0.1625,0.7125,0.08418464,0.1683693 +0.1625,0.7125,0.1683693,0.08418465 +0.1625,0.73749995,0.075,0.07499999 +0.1625,0.73749995,0.05303301,0.10606605 +0.16250001,0.7375,0.106066026,0.053032994 +0.1625,0.73749995,0.094494075,0.094494045 +0.1625,0.73749995,0.0668174,0.1336348 +0.1625,0.7375,0.1336348,0.0668174 +0.1625,0.73749995,0.11905508,0.11905509 +0.1625,0.7375,0.08418464,0.1683693 +0.1625,0.7375,0.1683693,0.08418465 +0.1625,0.76250005,0.075,0.07499999 +0.1625,0.7625,0.05303301,0.10606599 +0.16250001,0.7625,0.106066026,0.053032994 +0.1625,0.76250005,0.094494075,0.094494045 +0.1625,0.7625,0.0668174,0.1336348 +0.1625,0.7625,0.1336348,0.0668174 +0.1625,0.7625,0.11905508,0.11905503 +0.1625,0.7625,0.08418464,0.1683693 +0.1625,0.7625,0.1683693,0.08418465 +0.1625,0.7875,0.075,0.07499999 +0.1625,0.78749996,0.05303301,0.10606599 +0.16250001,0.7875,0.106066026,0.053032994 +0.1625,0.7875,0.094494075,0.094494045 +0.1625,0.78749996,0.0668174,0.1336348 +0.1625,0.7875,0.1336348,0.0668174 +0.1625,0.78749996,0.11905508,0.11905503 +0.1625,0.7875,0.08418464,0.1683693 +0.1625,0.7875,0.1683693,0.08418465 +0.1625,0.8125,0.075,0.07500005 +0.1625,0.8125,0.05303301,0.10606599 +0.16250001,0.8125,0.106066026,0.053033054 +0.1625,0.8125,0.094494075,0.094494104 +0.1625,0.8125,0.0668174,0.1336348 +0.1625,0.8125,0.1336348,0.06681746 +0.1625,0.8125,0.11905508,0.11905503 +0.1625,0.8125,0.08418464,0.1683693 +0.1625,0.8125,0.1683693,0.08418465 +0.1625,0.8375,0.075,0.07499999 +0.1625,0.8375,0.05303301,0.10606599 +0.16250001,0.8375,0.106066026,0.053033054 +0.1625,0.8375,0.094494075,0.094494045 +0.1625,0.8375,0.0668174,0.1336348 +0.1625,0.8375,0.1336348,0.06681746 +0.1625,0.8375,0.11905508,0.11905503 +0.1625,0.8375,0.08418464,0.1683693 +0.1625,0.8375,0.1683693,0.08418465 +0.1625,0.86249995,0.075,0.07499999 +0.1625,0.86249995,0.05303301,0.10606593 +0.16250001,0.86249995,0.106066026,0.053033054 +0.1625,0.86249995,0.094494075,0.094494045 +0.1625,0.86249995,0.0668174,0.1336348 +0.1625,0.86249995,0.1336348,0.06681746 +0.1625,0.86249995,0.11905508,0.11905497 +0.1625,0.8625,0.08418464,0.1683693 +0.1625,0.8625,0.1683693,0.08418465 +0.1625,0.88750005,0.075,0.07499999 +0.1625,0.88750005,0.05303301,0.10606593 +0.16250001,0.88750005,0.106066026,0.053033054 +0.1625,0.88750005,0.094494075,0.094494045 +0.1625,0.88750005,0.0668174,0.13363475 +0.1625,0.88750005,0.1336348,0.06681746 +0.1625,0.88750005,0.11905508,0.11905497 +0.1625,0.8875,0.08418464,0.1683693 +0.1625,0.8875,0.1683693,0.08418465 +0.1625,0.9125,0.075,0.07499999 +0.1625,0.9125,0.05303301,0.10606593 +0.16250001,0.9125,0.106066026,0.053033054 +0.1625,0.9125,0.094494075,0.094494045 +0.1625,0.9125,0.0668174,0.13363475 +0.1625,0.9125,0.1336348,0.06681746 +0.1625,0.9125,0.11905508,0.11905497 +0.1625,0.9125,0.08418464,0.1683693 +0.1625,0.9125,0.1683693,0.08418465 +0.1625,0.9375,0.075,0.07500005 +0.1625,0.9375,0.05303301,0.10606599 +0.16250001,0.9375,0.106066026,0.053033113 +0.1625,0.9375,0.094494075,0.094494104 +0.1625,0.9375,0.0668174,0.1336348 +0.1625,0.9375,0.1336348,0.06681752 +0.1625,0.9375,0.11905508,0.11905503 +0.1625,0.9375,0.08418464,0.1683693 +0.1625,0.9375,0.1683693,0.08418465 +0.1625,0.9625,0.075,0.07499999 +0.1625,0.9625,0.05303301,0.10606593 +0.16250001,0.9625,0.106066026,0.053033054 +0.1625,0.9625,0.094494075,0.094494045 +0.1625,0.9625,0.0668174,0.13363475 +0.1625,0.9625,0.1336348,0.06681746 +0.1625,0.9625,0.11905508,0.11905497 +0.1625,0.9625,0.08418464,0.1683693 +0.1625,0.9625,0.1683693,0.08418465 +0.1625,0.98749995,0.075,0.07499999 +0.1625,0.98749995,0.05303301,0.10606593 +0.16250001,0.98749995,0.106066026,0.053033054 +0.1625,0.98749995,0.094494075,0.094494045 +0.1625,0.98749995,0.0668174,0.13363475 +0.1625,0.98749995,0.1336348,0.06681746 +0.1625,0.98749995,0.11905508,0.11905497 +0.1625,0.98749995,0.08418464,0.16836923 +0.1625,0.98749995,0.1683693,0.08418459 +0.1875,0.0125,0.07499999,0.075 +0.1875,0.012499997,0.053033024,0.10606602 +0.1875,0.012499999,0.10606603,0.05303301 +0.1875,0.012499999,0.09449406,0.09449408 +0.1875,0.012500001,0.06681742,0.1336348 +0.1875,0.012499999,0.1336348,0.0668174 +0.1875,0.012500001,0.11905509,0.11905508 +0.1875,0.012499999,0.08418465,0.1683693 +0.1875,0.012500002,0.16836931,0.084184654 +0.1875,0.0375,0.07499999,0.075 +0.1875,0.037499998,0.053033024,0.10606601 +0.1875,0.0375,0.10606603,0.05303301 +0.1875,0.0375,0.09449406,0.094494075 +0.1875,0.0375,0.06681742,0.1336348 +0.1875,0.0375,0.1336348,0.0668174 +0.1875,0.0375,0.11905509,0.11905508 +0.1875,0.0375,0.08418465,0.16836931 +0.1875,0.0375,0.16836931,0.08418466 +0.1875,0.0625,0.07499999,0.075 +0.1875,0.0625,0.053033024,0.10606602 +0.1875,0.0625,0.10606603,0.05303301 +0.1875,0.0625,0.09449406,0.094494075 +0.1875,0.0625,0.06681742,0.1336348 +0.1875,0.0625,0.1336348,0.0668174 +0.1875,0.0625,0.11905509,0.11905508 +0.1875,0.0625,0.08418465,0.16836932 +0.1875,0.0625,0.16836931,0.08418465 +0.1875,0.0875,0.07499999,0.075 +0.1875,0.08749999,0.053033024,0.10606601 +0.1875,0.087500006,0.10606603,0.053033013 +0.1875,0.087500006,0.09449406,0.09449408 +0.1875,0.087500006,0.06681742,0.1336348 +0.1875,0.0875,0.1336348,0.0668174 +0.1875,0.0875,0.11905509,0.11905508 +0.1875,0.0875,0.08418465,0.16836931 +0.1875,0.087500006,0.16836931,0.084184654 +0.1875,0.112500004,0.07499999,0.075 +0.1875,0.1125,0.053033024,0.10606601 +0.1875,0.112500004,0.10606603,0.05303301 +0.1875,0.1125,0.09449406,0.094494075 +0.1875,0.1125,0.06681742,0.1336348 +0.1875,0.1125,0.1336348,0.0668174 +0.1875,0.1125,0.11905509,0.119055085 +0.1875,0.112500004,0.08418465,0.16836931 +0.1875,0.1125,0.16836931,0.08418465 +0.1875,0.1375,0.07499999,0.074999996 +0.1875,0.1375,0.053033024,0.10606602 +0.1875,0.1375,0.10606603,0.053033024 +0.1875,0.1375,0.09449406,0.09449408 +0.1875,0.1375,0.06681742,0.1336348 +0.1875,0.1375,0.1336348,0.0668174 +0.1875,0.13749999,0.11905509,0.11905508 +0.1875,0.1375,0.08418465,0.1683693 +0.1875,0.1375,0.16836931,0.084184654 +0.1875,0.1625,0.07499999,0.075 +0.1875,0.16250001,0.053033024,0.106066026 +0.1875,0.1625,0.10606603,0.05303301 +0.1875,0.1625,0.09449406,0.094494075 +0.1875,0.1625,0.06681742,0.1336348 +0.1875,0.1625,0.1336348,0.0668174 +0.1875,0.1625,0.11905509,0.11905508 +0.1875,0.1625,0.08418465,0.1683693 +0.1875,0.1625,0.16836931,0.08418464 +0.1875,0.1875,0.07499999,0.07499999 +0.1875,0.1875,0.053033024,0.10606603 +0.1875,0.1875,0.10606603,0.053033024 +0.1875,0.1875,0.09449406,0.09449406 +0.1875,0.1875,0.06681742,0.1336348 +0.1875,0.1875,0.1336348,0.06681742 +0.1875,0.1875,0.11905509,0.11905509 +0.1875,0.1875,0.08418465,0.16836931 +0.1875,0.1875,0.16836931,0.08418465 +0.1875,0.2125,0.07499999,0.075 +0.1875,0.2125,0.053033024,0.10606603 +0.1875,0.2125,0.10606603,0.05303301 +0.1875,0.21249999,0.09449406,0.094494075 +0.1875,0.2125,0.06681742,0.1336348 +0.1875,0.2125,0.1336348,0.0668174 +0.1875,0.2125,0.11905509,0.11905509 +0.1875,0.2125,0.08418465,0.16836931 +0.1875,0.2125,0.16836931,0.08418465 +0.1875,0.23750001,0.07499999,0.075 +0.1875,0.2375,0.053033024,0.10606602 +0.1875,0.2375,0.10606603,0.053033024 +0.1875,0.2375,0.09449406,0.094494075 +0.1875,0.23750001,0.06681742,0.13363482 +0.1875,0.2375,0.1336348,0.06681743 +0.1875,0.2375,0.11905509,0.11905506 +0.1875,0.2375,0.08418465,0.16836932 +0.1875,0.23750001,0.16836931,0.08418466 +0.1875,0.2625,0.07499999,0.07500002 +0.1875,0.2625,0.053033024,0.10606603 +0.1875,0.2625,0.10606603,0.053033024 +0.1875,0.2625,0.09449406,0.094494075 +0.1875,0.2625,0.06681742,0.13363479 +0.1875,0.2625,0.1336348,0.06681743 +0.1875,0.2625,0.11905509,0.11905508 +0.1875,0.2625,0.08418465,0.1683693 +0.1875,0.2625,0.16836931,0.08418463 +0.1875,0.2875,0.07499999,0.07499999 +0.1875,0.2875,0.053033024,0.10606603 +0.1875,0.28750002,0.10606603,0.053033024 +0.1875,0.2875,0.09449406,0.094494045 +0.1875,0.2875,0.06681742,0.1336348 +0.1875,0.28750002,0.1336348,0.06681743 +0.1875,0.2875,0.11905509,0.11905508 +0.1875,0.2875,0.08418465,0.1683693 +0.1875,0.2875,0.16836931,0.08418465 +0.1875,0.3125,0.07499999,0.07499999 +0.1875,0.3125,0.053033024,0.10606605 +0.1875,0.3125,0.10606603,0.053032994 +0.1875,0.3125,0.09449406,0.094494045 +0.1875,0.3125,0.06681742,0.1336348 +0.1875,0.3125,0.1336348,0.0668174 +0.1875,0.3125,0.11905509,0.11905509 +0.1875,0.3125,0.08418465,0.1683693 +0.1875,0.3125,0.16836931,0.08418465 +0.1875,0.3375,0.07499999,0.07499999 +0.1875,0.3375,0.053033024,0.10606605 +0.1875,0.33749998,0.10606603,0.053033024 +0.1875,0.3375,0.09449406,0.094494045 +0.1875,0.33750004,0.06681742,0.13363484 +0.1875,0.33749998,0.1336348,0.06681743 +0.1875,0.3375,0.11905509,0.11905509 +0.1875,0.3375,0.08418465,0.1683693 +0.1875,0.3375,0.16836931,0.08418465 +0.1875,0.3625,0.07499999,0.07500002 +0.1875,0.3625,0.053033024,0.10606602 +0.1875,0.3625,0.10606603,0.053033024 +0.1875,0.3625,0.09449406,0.094494075 +0.1875,0.3625,0.06681742,0.1336348 +0.1875,0.3625,0.1336348,0.06681743 +0.1875,0.3625,0.11905509,0.11905506 +0.1875,0.3625,0.08418465,0.1683693 +0.1875,0.3625,0.16836931,0.08418465 +0.1875,0.3875,0.07499999,0.07500002 +0.1875,0.3875,0.053033024,0.10606602 +0.1875,0.3875,0.10606603,0.053032994 +0.1875,0.3875,0.09449406,0.094494075 +0.1875,0.3875,0.06681742,0.13363484 +0.1875,0.3875,0.1336348,0.0668174 +0.1875,0.3875,0.11905509,0.11905506 +0.1875,0.3875,0.08418465,0.1683693 +0.1875,0.3875,0.16836931,0.08418465 +0.1875,0.4125,0.07499999,0.07499999 +0.1875,0.4125,0.053033024,0.10606605 +0.1875,0.4125,0.10606603,0.053032994 +0.1875,0.4125,0.09449406,0.094494045 +0.1875,0.41250002,0.06681742,0.13363484 +0.1875,0.4125,0.1336348,0.0668174 +0.1875,0.4125,0.11905509,0.11905509 +0.1875,0.4125,0.08418465,0.1683693 +0.1875,0.4125,0.16836931,0.08418465 +0.1875,0.4375,0.07499999,0.07499999 +0.1875,0.4375,0.053033024,0.10606605 +0.1875,0.4375,0.10606603,0.053032994 +0.1875,0.4375,0.09449406,0.094494045 +0.1875,0.4375,0.06681742,0.1336348 +0.1875,0.4375,0.1336348,0.0668174 +0.1875,0.4375,0.11905509,0.11905509 +0.1875,0.4375,0.08418465,0.1683693 +0.1875,0.4375,0.16836931,0.08418465 +0.1875,0.4625,0.07499999,0.07499999 +0.1875,0.4625,0.053033024,0.10606605 +0.1875,0.46249998,0.10606603,0.053032964 +0.1875,0.4625,0.09449406,0.094494045 +0.1875,0.46250004,0.06681742,0.13363484 +0.1875,0.46249998,0.1336348,0.06681737 +0.1875,0.4625,0.11905509,0.11905509 +0.1875,0.46249998,0.08418465,0.16836926 +0.1875,0.46249998,0.16836931,0.08418462 +0.1875,0.48749998,0.07499999,0.07499999 +0.1875,0.4875,0.053033024,0.10606602 +0.1875,0.4875,0.10606603,0.053032994 +0.1875,0.48749998,0.09449406,0.094494045 +0.1875,0.4875,0.06681742,0.13363484 +0.1875,0.4875,0.1336348,0.0668174 +0.1875,0.4875,0.11905509,0.11905506 +0.1875,0.4875,0.08418465,0.1683693 +0.1875,0.4875,0.16836931,0.08418465 +0.1875,0.5125,0.07499999,0.07500002 +0.1875,0.51250005,0.053033024,0.10606605 +0.1875,0.5125,0.10606603,0.053032964 +0.1875,0.5125,0.09449406,0.094494075 +0.1875,0.51250005,0.06681742,0.13363487 +0.1875,0.5125,0.1336348,0.06681737 +0.1875,0.51250005,0.11905509,0.11905509 +0.1875,0.5125,0.08418465,0.1683693 +0.1875,0.5125,0.16836931,0.08418465 +0.1875,0.5375,0.07499999,0.07499999 +0.1875,0.5375,0.053033024,0.10606605 +0.1875,0.5375,0.10606603,0.053032935 +0.1875,0.5375,0.09449406,0.094494045 +0.1875,0.5375,0.06681742,0.13363487 +0.1875,0.5375,0.1336348,0.06681734 +0.1875,0.5375,0.11905509,0.11905509 +0.1875,0.5375,0.08418465,0.16836932 +0.1875,0.5375,0.16836931,0.08418468 +0.1875,0.5625,0.07499999,0.07500005 +0.1875,0.5625,0.053033024,0.10606599 +0.1875,0.5625,0.10606603,0.053032994 +0.1875,0.5625,0.09449406,0.094494104 +0.1875,0.5625,0.06681742,0.13363484 +0.1875,0.5625,0.1336348,0.0668174 +0.1875,0.5625,0.11905509,0.11905503 +0.1875,0.5625,0.08418465,0.1683693 +0.1875,0.5625,0.16836931,0.08418465 +0.1875,0.5875,0.07499999,0.07499999 +0.1875,0.5875,0.053033024,0.10606605 +0.1875,0.5875,0.10606603,0.053032935 +0.1875,0.5875,0.09449406,0.094494045 +0.1875,0.5875,0.06681742,0.13363487 +0.1875,0.5875,0.1336348,0.06681734 +0.1875,0.5875,0.11905509,0.11905509 +0.1875,0.5875,0.08418465,0.1683693 +0.1875,0.5875,0.16836931,0.08418465 +0.1875,0.61249995,0.07499999,0.07499999 +0.1875,0.61249995,0.053033024,0.10606605 +0.1875,0.6125,0.10606603,0.053032994 +0.1875,0.61249995,0.09449406,0.094494045 +0.1875,0.61249995,0.06681742,0.13363487 +0.1875,0.6125,0.1336348,0.0668174 +0.1875,0.61249995,0.11905509,0.11905509 +0.1875,0.6125,0.08418465,0.1683693 +0.1875,0.6125,0.16836931,0.08418465 +0.1875,0.63750005,0.07499999,0.07499999 +0.1875,0.63750005,0.053033024,0.10606605 +0.1875,0.6375,0.10606603,0.053032994 +0.1875,0.63750005,0.09449406,0.094494045 +0.1875,0.63750005,0.06681742,0.13363487 +0.1875,0.6375,0.1336348,0.0668174 +0.1875,0.63750005,0.11905509,0.11905509 +0.1875,0.6375,0.08418465,0.1683693 +0.1875,0.6375,0.16836931,0.08418465 +0.1875,0.6625,0.07499999,0.07499999 +0.1875,0.6625,0.053033024,0.10606605 +0.1875,0.6625,0.10606603,0.053032935 +0.1875,0.6625,0.09449406,0.094494045 +0.1875,0.6625,0.06681742,0.13363487 +0.1875,0.6625,0.1336348,0.06681734 +0.1875,0.6625,0.11905509,0.11905509 +0.1875,0.6625,0.08418465,0.1683693 +0.1875,0.6625,0.16836931,0.08418465 +0.1875,0.6875,0.07499999,0.07500005 +0.1875,0.6875,0.053033024,0.10606599 +0.1875,0.6875,0.10606603,0.053032994 +0.1875,0.6875,0.09449406,0.094494104 +0.1875,0.6875,0.06681742,0.1336348 +0.1875,0.6875,0.1336348,0.0668174 +0.1875,0.6875,0.11905509,0.11905503 +0.1875,0.6875,0.08418465,0.1683693 +0.1875,0.6875,0.16836931,0.08418465 +0.1875,0.7125,0.07499999,0.07499999 +0.1875,0.7125,0.053033024,0.10606605 +0.1875,0.7125,0.10606603,0.053032935 +0.1875,0.7125,0.09449406,0.094494045 +0.1875,0.7125,0.06681742,0.13363487 +0.1875,0.7125,0.1336348,0.06681734 +0.1875,0.7125,0.11905509,0.11905509 +0.1875,0.7125,0.08418465,0.1683693 +0.1875,0.7125,0.16836931,0.08418465 +0.1875,0.73749995,0.07499999,0.07499999 +0.1875,0.73749995,0.053033024,0.10606605 +0.1875,0.7375,0.10606603,0.053032994 +0.1875,0.73749995,0.09449406,0.094494045 +0.1875,0.73749995,0.06681742,0.1336348 +0.1875,0.7375,0.1336348,0.0668174 +0.1875,0.73749995,0.11905509,0.11905509 +0.1875,0.7375,0.08418465,0.1683693 +0.1875,0.7375,0.16836931,0.08418465 +0.1875,0.76250005,0.07499999,0.07499999 +0.1875,0.7625,0.053033024,0.10606599 +0.1875,0.7625,0.10606603,0.053032994 +0.1875,0.76250005,0.09449406,0.094494045 +0.1875,0.7625,0.06681742,0.1336348 +0.1875,0.7625,0.1336348,0.0668174 +0.1875,0.7625,0.11905509,0.11905503 +0.1875,0.7625,0.08418465,0.1683693 +0.1875,0.7625,0.16836931,0.08418465 +0.1875,0.7875,0.07499999,0.07499999 +0.1875,0.78749996,0.053033024,0.10606599 +0.1875,0.7875,0.10606603,0.053032994 +0.1875,0.7875,0.09449406,0.094494045 +0.1875,0.78749996,0.06681742,0.1336348 +0.1875,0.7875,0.1336348,0.0668174 +0.1875,0.78749996,0.11905509,0.11905503 +0.1875,0.7875,0.08418465,0.1683693 +0.1875,0.7875,0.16836931,0.08418465 +0.1875,0.8125,0.07499999,0.07500005 +0.1875,0.8125,0.053033024,0.10606599 +0.1875,0.8125,0.10606603,0.053033054 +0.1875,0.8125,0.09449406,0.094494104 +0.1875,0.8125,0.06681742,0.1336348 +0.1875,0.8125,0.1336348,0.06681746 +0.1875,0.8125,0.11905509,0.11905503 +0.1875,0.8125,0.08418465,0.1683693 +0.1875,0.8125,0.16836931,0.08418465 +0.1875,0.8375,0.07499999,0.07499999 +0.1875,0.8375,0.053033024,0.10606599 +0.1875,0.8375,0.10606603,0.053033054 +0.1875,0.8375,0.09449406,0.094494045 +0.1875,0.8375,0.06681742,0.1336348 +0.1875,0.8375,0.1336348,0.06681746 +0.1875,0.8375,0.11905509,0.11905503 +0.1875,0.8375,0.08418465,0.1683693 +0.1875,0.8375,0.16836931,0.08418465 +0.1875,0.86249995,0.07499999,0.07499999 +0.1875,0.86249995,0.053033024,0.10606593 +0.1875,0.86249995,0.10606603,0.053033054 +0.1875,0.86249995,0.09449406,0.094494045 +0.1875,0.86249995,0.06681742,0.1336348 +0.1875,0.86249995,0.1336348,0.06681746 +0.1875,0.86249995,0.11905509,0.11905497 +0.1875,0.8625,0.08418465,0.1683693 +0.1875,0.8625,0.16836931,0.08418465 +0.1875,0.88750005,0.07499999,0.07499999 +0.1875,0.88750005,0.053033024,0.10606593 +0.1875,0.88750005,0.10606603,0.053033054 +0.1875,0.88750005,0.09449406,0.094494045 +0.1875,0.88750005,0.06681742,0.13363475 +0.1875,0.88750005,0.1336348,0.06681746 +0.1875,0.88750005,0.11905509,0.11905497 +0.1875,0.8875,0.08418465,0.1683693 +0.1875,0.8875,0.16836931,0.08418465 +0.1875,0.9125,0.07499999,0.07499999 +0.1875,0.9125,0.053033024,0.10606593 +0.1875,0.9125,0.10606603,0.053033054 +0.1875,0.9125,0.09449406,0.094494045 +0.1875,0.9125,0.06681742,0.13363475 +0.1875,0.9125,0.1336348,0.06681746 +0.1875,0.9125,0.11905509,0.11905497 +0.1875,0.9125,0.08418465,0.1683693 +0.1875,0.9125,0.16836931,0.08418465 +0.1875,0.9375,0.07499999,0.07500005 +0.1875,0.9375,0.053033024,0.10606599 +0.1875,0.9375,0.10606603,0.053033113 +0.1875,0.9375,0.09449406,0.094494104 +0.1875,0.9375,0.06681742,0.1336348 +0.1875,0.9375,0.1336348,0.06681752 +0.1875,0.9375,0.11905509,0.11905503 +0.1875,0.9375,0.08418465,0.1683693 +0.1875,0.9375,0.16836931,0.08418465 +0.1875,0.9625,0.07499999,0.07499999 +0.1875,0.9625,0.053033024,0.10606593 +0.1875,0.9625,0.10606603,0.053033054 +0.1875,0.9625,0.09449406,0.094494045 +0.1875,0.9625,0.06681742,0.13363475 +0.1875,0.9625,0.1336348,0.06681746 +0.1875,0.9625,0.11905509,0.11905497 +0.1875,0.9625,0.08418465,0.1683693 +0.1875,0.9625,0.16836931,0.08418465 +0.1875,0.98749995,0.07499999,0.07499999 +0.1875,0.98749995,0.053033024,0.10606593 +0.1875,0.98749995,0.10606603,0.053033054 +0.1875,0.98749995,0.09449406,0.094494045 +0.1875,0.98749995,0.06681742,0.13363475 +0.1875,0.98749995,0.1336348,0.06681746 +0.1875,0.98749995,0.11905509,0.11905497 +0.1875,0.98749995,0.08418465,0.16836923 +0.1875,0.98749995,0.16836931,0.08418459 +0.2125,0.0125,0.075,0.075 +0.2125,0.012499997,0.05303301,0.10606602 +0.2125,0.012499999,0.10606603,0.05303301 +0.21249999,0.012499999,0.094494075,0.09449408 +0.2125,0.012500001,0.0668174,0.1336348 +0.2125,0.012499999,0.1336348,0.0668174 +0.2125,0.012500001,0.11905509,0.11905508 +0.2125,0.012499999,0.08418465,0.1683693 +0.2125,0.012500002,0.16836931,0.084184654 +0.2125,0.0375,0.075,0.075 +0.2125,0.037499998,0.05303301,0.10606601 +0.2125,0.0375,0.10606603,0.05303301 +0.21249999,0.0375,0.094494075,0.094494075 +0.2125,0.0375,0.0668174,0.1336348 +0.2125,0.0375,0.1336348,0.0668174 +0.2125,0.0375,0.11905509,0.11905508 +0.2125,0.0375,0.08418465,0.16836931 +0.2125,0.0375,0.16836931,0.08418466 +0.2125,0.0625,0.075,0.075 +0.2125,0.0625,0.05303301,0.10606602 +0.2125,0.0625,0.10606603,0.05303301 +0.21249999,0.0625,0.094494075,0.094494075 +0.2125,0.0625,0.0668174,0.1336348 +0.2125,0.0625,0.1336348,0.0668174 +0.2125,0.0625,0.11905509,0.11905508 +0.2125,0.0625,0.08418465,0.16836932 +0.2125,0.0625,0.16836931,0.08418465 +0.2125,0.0875,0.075,0.075 +0.2125,0.08749999,0.05303301,0.10606601 +0.2125,0.087500006,0.10606603,0.053033013 +0.21249999,0.087500006,0.094494075,0.09449408 +0.2125,0.087500006,0.0668174,0.1336348 +0.2125,0.0875,0.1336348,0.0668174 +0.2125,0.0875,0.11905509,0.11905508 +0.2125,0.0875,0.08418465,0.16836931 +0.2125,0.087500006,0.16836931,0.084184654 +0.2125,0.112500004,0.075,0.075 +0.2125,0.1125,0.05303301,0.10606601 +0.2125,0.112500004,0.10606603,0.05303301 +0.21249999,0.1125,0.094494075,0.094494075 +0.2125,0.1125,0.0668174,0.1336348 +0.2125,0.1125,0.1336348,0.0668174 +0.2125,0.1125,0.11905509,0.119055085 +0.2125,0.112500004,0.08418465,0.16836931 +0.2125,0.1125,0.16836931,0.08418465 +0.2125,0.1375,0.075,0.074999996 +0.2125,0.1375,0.05303301,0.10606602 +0.2125,0.1375,0.10606603,0.053033024 +0.21249999,0.1375,0.094494075,0.09449408 +0.2125,0.1375,0.0668174,0.1336348 +0.2125,0.1375,0.1336348,0.0668174 +0.2125,0.13749999,0.11905509,0.11905508 +0.2125,0.1375,0.08418465,0.1683693 +0.2125,0.1375,0.16836931,0.084184654 +0.2125,0.1625,0.075,0.075 +0.2125,0.16250001,0.05303301,0.106066026 +0.2125,0.1625,0.10606603,0.05303301 +0.21249999,0.1625,0.094494075,0.094494075 +0.2125,0.1625,0.0668174,0.1336348 +0.2125,0.1625,0.1336348,0.0668174 +0.2125,0.1625,0.11905509,0.11905508 +0.2125,0.1625,0.08418465,0.1683693 +0.2125,0.1625,0.16836931,0.08418464 +0.2125,0.1875,0.075,0.07499999 +0.2125,0.1875,0.05303301,0.10606603 +0.2125,0.1875,0.10606603,0.053033024 +0.21249999,0.1875,0.094494075,0.09449406 +0.2125,0.1875,0.0668174,0.1336348 +0.2125,0.1875,0.1336348,0.06681742 +0.2125,0.1875,0.11905509,0.11905509 +0.2125,0.1875,0.08418465,0.16836931 +0.2125,0.1875,0.16836931,0.08418465 +0.2125,0.2125,0.075,0.075 +0.2125,0.2125,0.05303301,0.10606603 +0.2125,0.2125,0.10606603,0.05303301 +0.21249999,0.21249999,0.094494075,0.094494075 +0.2125,0.2125,0.0668174,0.1336348 +0.2125,0.2125,0.1336348,0.0668174 +0.2125,0.2125,0.11905509,0.11905509 +0.2125,0.2125,0.08418465,0.16836931 +0.2125,0.2125,0.16836931,0.08418465 +0.2125,0.23750001,0.075,0.075 +0.2125,0.2375,0.05303301,0.10606602 +0.2125,0.2375,0.10606603,0.053033024 +0.21249999,0.2375,0.094494075,0.094494075 +0.2125,0.23750001,0.0668174,0.13363482 +0.2125,0.2375,0.1336348,0.06681743 +0.2125,0.2375,0.11905509,0.11905506 +0.2125,0.2375,0.08418465,0.16836932 +0.2125,0.23750001,0.16836931,0.08418466 +0.2125,0.2625,0.075,0.07500002 +0.2125,0.2625,0.05303301,0.10606603 +0.2125,0.2625,0.10606603,0.053033024 +0.21249999,0.2625,0.094494075,0.094494075 +0.2125,0.2625,0.0668174,0.13363479 +0.2125,0.2625,0.1336348,0.06681743 +0.2125,0.2625,0.11905509,0.11905508 +0.2125,0.2625,0.08418465,0.1683693 +0.2125,0.2625,0.16836931,0.08418463 +0.2125,0.2875,0.075,0.07499999 +0.2125,0.2875,0.05303301,0.10606603 +0.2125,0.28750002,0.10606603,0.053033024 +0.21249999,0.2875,0.094494075,0.094494045 +0.2125,0.2875,0.0668174,0.1336348 +0.2125,0.28750002,0.1336348,0.06681743 +0.2125,0.2875,0.11905509,0.11905508 +0.2125,0.2875,0.08418465,0.1683693 +0.2125,0.2875,0.16836931,0.08418465 +0.2125,0.3125,0.075,0.07499999 +0.2125,0.3125,0.05303301,0.10606605 +0.2125,0.3125,0.10606603,0.053032994 +0.21249999,0.3125,0.094494075,0.094494045 +0.2125,0.3125,0.0668174,0.1336348 +0.2125,0.3125,0.1336348,0.0668174 +0.2125,0.3125,0.11905509,0.11905509 +0.2125,0.3125,0.08418465,0.1683693 +0.2125,0.3125,0.16836931,0.08418465 +0.2125,0.3375,0.075,0.07499999 +0.2125,0.3375,0.05303301,0.10606605 +0.2125,0.33749998,0.10606603,0.053033024 +0.21249999,0.3375,0.094494075,0.094494045 +0.2125,0.33750004,0.0668174,0.13363484 +0.2125,0.33749998,0.1336348,0.06681743 +0.2125,0.3375,0.11905509,0.11905509 +0.2125,0.3375,0.08418465,0.1683693 +0.2125,0.3375,0.16836931,0.08418465 +0.2125,0.3625,0.075,0.07500002 +0.2125,0.3625,0.05303301,0.10606602 +0.2125,0.3625,0.10606603,0.053033024 +0.21249999,0.3625,0.094494075,0.094494075 +0.2125,0.3625,0.0668174,0.1336348 +0.2125,0.3625,0.1336348,0.06681743 +0.2125,0.3625,0.11905509,0.11905506 +0.2125,0.3625,0.08418465,0.1683693 +0.2125,0.3625,0.16836931,0.08418465 +0.2125,0.3875,0.075,0.07500002 +0.2125,0.3875,0.05303301,0.10606602 +0.2125,0.3875,0.10606603,0.053032994 +0.21249999,0.3875,0.094494075,0.094494075 +0.2125,0.3875,0.0668174,0.13363484 +0.2125,0.3875,0.1336348,0.0668174 +0.2125,0.3875,0.11905509,0.11905506 +0.2125,0.3875,0.08418465,0.1683693 +0.2125,0.3875,0.16836931,0.08418465 +0.2125,0.4125,0.075,0.07499999 +0.2125,0.4125,0.05303301,0.10606605 +0.2125,0.4125,0.10606603,0.053032994 +0.21249999,0.4125,0.094494075,0.094494045 +0.2125,0.41250002,0.0668174,0.13363484 +0.2125,0.4125,0.1336348,0.0668174 +0.2125,0.4125,0.11905509,0.11905509 +0.2125,0.4125,0.08418465,0.1683693 +0.2125,0.4125,0.16836931,0.08418465 +0.2125,0.4375,0.075,0.07499999 +0.2125,0.4375,0.05303301,0.10606605 +0.2125,0.4375,0.10606603,0.053032994 +0.21249999,0.4375,0.094494075,0.094494045 +0.2125,0.4375,0.0668174,0.1336348 +0.2125,0.4375,0.1336348,0.0668174 +0.2125,0.4375,0.11905509,0.11905509 +0.2125,0.4375,0.08418465,0.1683693 +0.2125,0.4375,0.16836931,0.08418465 +0.2125,0.4625,0.075,0.07499999 +0.2125,0.4625,0.05303301,0.10606605 +0.2125,0.46249998,0.10606603,0.053032964 +0.21249999,0.4625,0.094494075,0.094494045 +0.2125,0.46250004,0.0668174,0.13363484 +0.2125,0.46249998,0.1336348,0.06681737 +0.2125,0.4625,0.11905509,0.11905509 +0.2125,0.46249998,0.08418465,0.16836926 +0.2125,0.46249998,0.16836931,0.08418462 +0.2125,0.48749998,0.075,0.07499999 +0.2125,0.4875,0.05303301,0.10606602 +0.2125,0.4875,0.10606603,0.053032994 +0.21249999,0.48749998,0.094494075,0.094494045 +0.2125,0.4875,0.0668174,0.13363484 +0.2125,0.4875,0.1336348,0.0668174 +0.2125,0.4875,0.11905509,0.11905506 +0.2125,0.4875,0.08418465,0.1683693 +0.2125,0.4875,0.16836931,0.08418465 +0.2125,0.5125,0.075,0.07500002 +0.2125,0.51250005,0.05303301,0.10606605 +0.2125,0.5125,0.10606603,0.053032964 +0.21249999,0.5125,0.094494075,0.094494075 +0.2125,0.51250005,0.0668174,0.13363487 +0.2125,0.5125,0.1336348,0.06681737 +0.2125,0.51250005,0.11905509,0.11905509 +0.2125,0.5125,0.08418465,0.1683693 +0.2125,0.5125,0.16836931,0.08418465 +0.2125,0.5375,0.075,0.07499999 +0.2125,0.5375,0.05303301,0.10606605 +0.2125,0.5375,0.10606603,0.053032935 +0.21249999,0.5375,0.094494075,0.094494045 +0.2125,0.5375,0.0668174,0.13363487 +0.2125,0.5375,0.1336348,0.06681734 +0.2125,0.5375,0.11905509,0.11905509 +0.2125,0.5375,0.08418465,0.16836932 +0.2125,0.5375,0.16836931,0.08418468 +0.2125,0.5625,0.075,0.07500005 +0.2125,0.5625,0.05303301,0.10606599 +0.2125,0.5625,0.10606603,0.053032994 +0.21249999,0.5625,0.094494075,0.094494104 +0.2125,0.5625,0.0668174,0.13363484 +0.2125,0.5625,0.1336348,0.0668174 +0.2125,0.5625,0.11905509,0.11905503 +0.2125,0.5625,0.08418465,0.1683693 +0.2125,0.5625,0.16836931,0.08418465 +0.2125,0.5875,0.075,0.07499999 +0.2125,0.5875,0.05303301,0.10606605 +0.2125,0.5875,0.10606603,0.053032935 +0.21249999,0.5875,0.094494075,0.094494045 +0.2125,0.5875,0.0668174,0.13363487 +0.2125,0.5875,0.1336348,0.06681734 +0.2125,0.5875,0.11905509,0.11905509 +0.2125,0.5875,0.08418465,0.1683693 +0.2125,0.5875,0.16836931,0.08418465 +0.2125,0.61249995,0.075,0.07499999 +0.2125,0.61249995,0.05303301,0.10606605 +0.2125,0.6125,0.10606603,0.053032994 +0.21249999,0.61249995,0.094494075,0.094494045 +0.2125,0.61249995,0.0668174,0.13363487 +0.2125,0.6125,0.1336348,0.0668174 +0.2125,0.61249995,0.11905509,0.11905509 +0.2125,0.6125,0.08418465,0.1683693 +0.2125,0.6125,0.16836931,0.08418465 +0.2125,0.63750005,0.075,0.07499999 +0.2125,0.63750005,0.05303301,0.10606605 +0.2125,0.6375,0.10606603,0.053032994 +0.21249999,0.63750005,0.094494075,0.094494045 +0.2125,0.63750005,0.0668174,0.13363487 +0.2125,0.6375,0.1336348,0.0668174 +0.2125,0.63750005,0.11905509,0.11905509 +0.2125,0.6375,0.08418465,0.1683693 +0.2125,0.6375,0.16836931,0.08418465 +0.2125,0.6625,0.075,0.07499999 +0.2125,0.6625,0.05303301,0.10606605 +0.2125,0.6625,0.10606603,0.053032935 +0.21249999,0.6625,0.094494075,0.094494045 +0.2125,0.6625,0.0668174,0.13363487 +0.2125,0.6625,0.1336348,0.06681734 +0.2125,0.6625,0.11905509,0.11905509 +0.2125,0.6625,0.08418465,0.1683693 +0.2125,0.6625,0.16836931,0.08418465 +0.2125,0.6875,0.075,0.07500005 +0.2125,0.6875,0.05303301,0.10606599 +0.2125,0.6875,0.10606603,0.053032994 +0.21249999,0.6875,0.094494075,0.094494104 +0.2125,0.6875,0.0668174,0.1336348 +0.2125,0.6875,0.1336348,0.0668174 +0.2125,0.6875,0.11905509,0.11905503 +0.2125,0.6875,0.08418465,0.1683693 +0.2125,0.6875,0.16836931,0.08418465 +0.2125,0.7125,0.075,0.07499999 +0.2125,0.7125,0.05303301,0.10606605 +0.2125,0.7125,0.10606603,0.053032935 +0.21249999,0.7125,0.094494075,0.094494045 +0.2125,0.7125,0.0668174,0.13363487 +0.2125,0.7125,0.1336348,0.06681734 +0.2125,0.7125,0.11905509,0.11905509 +0.2125,0.7125,0.08418465,0.1683693 +0.2125,0.7125,0.16836931,0.08418465 +0.2125,0.73749995,0.075,0.07499999 +0.2125,0.73749995,0.05303301,0.10606605 +0.2125,0.7375,0.10606603,0.053032994 +0.21249999,0.73749995,0.094494075,0.094494045 +0.2125,0.73749995,0.0668174,0.1336348 +0.2125,0.7375,0.1336348,0.0668174 +0.2125,0.73749995,0.11905509,0.11905509 +0.2125,0.7375,0.08418465,0.1683693 +0.2125,0.7375,0.16836931,0.08418465 +0.2125,0.76250005,0.075,0.07499999 +0.2125,0.7625,0.05303301,0.10606599 +0.2125,0.7625,0.10606603,0.053032994 +0.21249999,0.76250005,0.094494075,0.094494045 +0.2125,0.7625,0.0668174,0.1336348 +0.2125,0.7625,0.1336348,0.0668174 +0.2125,0.7625,0.11905509,0.11905503 +0.2125,0.7625,0.08418465,0.1683693 +0.2125,0.7625,0.16836931,0.08418465 +0.2125,0.7875,0.075,0.07499999 +0.2125,0.78749996,0.05303301,0.10606599 +0.2125,0.7875,0.10606603,0.053032994 +0.21249999,0.7875,0.094494075,0.094494045 +0.2125,0.78749996,0.0668174,0.1336348 +0.2125,0.7875,0.1336348,0.0668174 +0.2125,0.78749996,0.11905509,0.11905503 +0.2125,0.7875,0.08418465,0.1683693 +0.2125,0.7875,0.16836931,0.08418465 +0.2125,0.8125,0.075,0.07500005 +0.2125,0.8125,0.05303301,0.10606599 +0.2125,0.8125,0.10606603,0.053033054 +0.21249999,0.8125,0.094494075,0.094494104 +0.2125,0.8125,0.0668174,0.1336348 +0.2125,0.8125,0.1336348,0.06681746 +0.2125,0.8125,0.11905509,0.11905503 +0.2125,0.8125,0.08418465,0.1683693 +0.2125,0.8125,0.16836931,0.08418465 +0.2125,0.8375,0.075,0.07499999 +0.2125,0.8375,0.05303301,0.10606599 +0.2125,0.8375,0.10606603,0.053033054 +0.21249999,0.8375,0.094494075,0.094494045 +0.2125,0.8375,0.0668174,0.1336348 +0.2125,0.8375,0.1336348,0.06681746 +0.2125,0.8375,0.11905509,0.11905503 +0.2125,0.8375,0.08418465,0.1683693 +0.2125,0.8375,0.16836931,0.08418465 +0.2125,0.86249995,0.075,0.07499999 +0.2125,0.86249995,0.05303301,0.10606593 +0.2125,0.86249995,0.10606603,0.053033054 +0.21249999,0.86249995,0.094494075,0.094494045 +0.2125,0.86249995,0.0668174,0.1336348 +0.2125,0.86249995,0.1336348,0.06681746 +0.2125,0.86249995,0.11905509,0.11905497 +0.2125,0.8625,0.08418465,0.1683693 +0.2125,0.8625,0.16836931,0.08418465 +0.2125,0.88750005,0.075,0.07499999 +0.2125,0.88750005,0.05303301,0.10606593 +0.2125,0.88750005,0.10606603,0.053033054 +0.21249999,0.88750005,0.094494075,0.094494045 +0.2125,0.88750005,0.0668174,0.13363475 +0.2125,0.88750005,0.1336348,0.06681746 +0.2125,0.88750005,0.11905509,0.11905497 +0.2125,0.8875,0.08418465,0.1683693 +0.2125,0.8875,0.16836931,0.08418465 +0.2125,0.9125,0.075,0.07499999 +0.2125,0.9125,0.05303301,0.10606593 +0.2125,0.9125,0.10606603,0.053033054 +0.21249999,0.9125,0.094494075,0.094494045 +0.2125,0.9125,0.0668174,0.13363475 +0.2125,0.9125,0.1336348,0.06681746 +0.2125,0.9125,0.11905509,0.11905497 +0.2125,0.9125,0.08418465,0.1683693 +0.2125,0.9125,0.16836931,0.08418465 +0.2125,0.9375,0.075,0.07500005 +0.2125,0.9375,0.05303301,0.10606599 +0.2125,0.9375,0.10606603,0.053033113 +0.21249999,0.9375,0.094494075,0.094494104 +0.2125,0.9375,0.0668174,0.1336348 +0.2125,0.9375,0.1336348,0.06681752 +0.2125,0.9375,0.11905509,0.11905503 +0.2125,0.9375,0.08418465,0.1683693 +0.2125,0.9375,0.16836931,0.08418465 +0.2125,0.9625,0.075,0.07499999 +0.2125,0.9625,0.05303301,0.10606593 +0.2125,0.9625,0.10606603,0.053033054 +0.21249999,0.9625,0.094494075,0.094494045 +0.2125,0.9625,0.0668174,0.13363475 +0.2125,0.9625,0.1336348,0.06681746 +0.2125,0.9625,0.11905509,0.11905497 +0.2125,0.9625,0.08418465,0.1683693 +0.2125,0.9625,0.16836931,0.08418465 +0.2125,0.98749995,0.075,0.07499999 +0.2125,0.98749995,0.05303301,0.10606593 +0.2125,0.98749995,0.10606603,0.053033054 +0.21249999,0.98749995,0.094494075,0.094494045 +0.2125,0.98749995,0.0668174,0.13363475 +0.2125,0.98749995,0.1336348,0.06681746 +0.2125,0.98749995,0.11905509,0.11905497 +0.2125,0.98749995,0.08418465,0.16836923 +0.2125,0.98749995,0.16836931,0.08418459 +0.23750001,0.0125,0.075,0.075 +0.2375,0.012499997,0.053033024,0.10606602 +0.2375,0.012499999,0.10606602,0.05303301 +0.2375,0.012499999,0.094494075,0.09449408 +0.2375,0.012500001,0.06681743,0.1336348 +0.23750001,0.012499999,0.13363482,0.0668174 +0.2375,0.012500001,0.11905506,0.11905508 +0.23750001,0.012499999,0.08418466,0.1683693 +0.2375,0.012500002,0.16836932,0.084184654 +0.23750001,0.0375,0.075,0.075 +0.2375,0.037499998,0.053033024,0.10606601 +0.2375,0.0375,0.10606602,0.05303301 +0.2375,0.0375,0.094494075,0.094494075 +0.2375,0.0375,0.06681743,0.1336348 +0.23750001,0.0375,0.13363482,0.0668174 +0.2375,0.0375,0.11905506,0.11905508 +0.23750001,0.0375,0.08418466,0.16836931 +0.2375,0.0375,0.16836932,0.08418466 +0.23750001,0.0625,0.075,0.075 +0.2375,0.0625,0.053033024,0.10606602 +0.2375,0.0625,0.10606602,0.05303301 +0.2375,0.0625,0.094494075,0.094494075 +0.2375,0.0625,0.06681743,0.1336348 +0.23750001,0.0625,0.13363482,0.0668174 +0.2375,0.0625,0.11905506,0.11905508 +0.23750001,0.0625,0.08418466,0.16836932 +0.2375,0.0625,0.16836932,0.08418465 +0.23750001,0.0875,0.075,0.075 +0.2375,0.08749999,0.053033024,0.10606601 +0.2375,0.087500006,0.10606602,0.053033013 +0.2375,0.087500006,0.094494075,0.09449408 +0.2375,0.087500006,0.06681743,0.1336348 +0.23750001,0.0875,0.13363482,0.0668174 +0.2375,0.0875,0.11905506,0.11905508 +0.23750001,0.0875,0.08418466,0.16836931 +0.2375,0.087500006,0.16836932,0.084184654 +0.23750001,0.112500004,0.075,0.075 +0.2375,0.1125,0.053033024,0.10606601 +0.2375,0.112500004,0.10606602,0.05303301 +0.2375,0.1125,0.094494075,0.094494075 +0.2375,0.1125,0.06681743,0.1336348 +0.23750001,0.1125,0.13363482,0.0668174 +0.2375,0.1125,0.11905506,0.119055085 +0.23750001,0.112500004,0.08418466,0.16836931 +0.2375,0.1125,0.16836932,0.08418465 +0.23750001,0.1375,0.075,0.074999996 +0.2375,0.1375,0.053033024,0.10606602 +0.2375,0.1375,0.10606602,0.053033024 +0.2375,0.1375,0.094494075,0.09449408 +0.2375,0.1375,0.06681743,0.1336348 +0.23750001,0.1375,0.13363482,0.0668174 +0.2375,0.13749999,0.11905506,0.11905508 +0.23750001,0.1375,0.08418466,0.1683693 +0.2375,0.1375,0.16836932,0.084184654 +0.23750001,0.1625,0.075,0.075 +0.2375,0.16250001,0.053033024,0.106066026 +0.2375,0.1625,0.10606602,0.05303301 +0.2375,0.1625,0.094494075,0.094494075 +0.2375,0.1625,0.06681743,0.1336348 +0.23750001,0.1625,0.13363482,0.0668174 +0.2375,0.1625,0.11905506,0.11905508 +0.23750001,0.1625,0.08418466,0.1683693 +0.2375,0.1625,0.16836932,0.08418464 +0.23750001,0.1875,0.075,0.07499999 +0.2375,0.1875,0.053033024,0.10606603 +0.2375,0.1875,0.10606602,0.053033024 +0.2375,0.1875,0.094494075,0.09449406 +0.2375,0.1875,0.06681743,0.1336348 +0.23750001,0.1875,0.13363482,0.06681742 +0.2375,0.1875,0.11905506,0.11905509 +0.23750001,0.1875,0.08418466,0.16836931 +0.2375,0.1875,0.16836932,0.08418465 +0.23750001,0.2125,0.075,0.075 +0.2375,0.2125,0.053033024,0.10606603 +0.2375,0.2125,0.10606602,0.05303301 +0.2375,0.21249999,0.094494075,0.094494075 +0.2375,0.2125,0.06681743,0.1336348 +0.23750001,0.2125,0.13363482,0.0668174 +0.2375,0.2125,0.11905506,0.11905509 +0.23750001,0.2125,0.08418466,0.16836931 +0.2375,0.2125,0.16836932,0.08418465 +0.23750001,0.23750001,0.075,0.075 +0.2375,0.2375,0.053033024,0.10606602 +0.2375,0.2375,0.10606602,0.053033024 +0.2375,0.2375,0.094494075,0.094494075 +0.2375,0.23750001,0.06681743,0.13363482 +0.23750001,0.2375,0.13363482,0.06681743 +0.2375,0.2375,0.11905506,0.11905506 +0.23750001,0.2375,0.08418466,0.16836932 +0.2375,0.23750001,0.16836932,0.08418466 +0.23750001,0.2625,0.075,0.07500002 +0.2375,0.2625,0.053033024,0.10606603 +0.2375,0.2625,0.10606602,0.053033024 +0.2375,0.2625,0.094494075,0.094494075 +0.2375,0.2625,0.06681743,0.13363479 +0.23750001,0.2625,0.13363482,0.06681743 +0.2375,0.2625,0.11905506,0.11905508 +0.23750001,0.2625,0.08418466,0.1683693 +0.2375,0.2625,0.16836932,0.08418463 +0.23750001,0.2875,0.075,0.07499999 +0.2375,0.2875,0.053033024,0.10606603 +0.2375,0.28750002,0.10606602,0.053033024 +0.2375,0.2875,0.094494075,0.094494045 +0.2375,0.2875,0.06681743,0.1336348 +0.23750001,0.28750002,0.13363482,0.06681743 +0.2375,0.2875,0.11905506,0.11905508 +0.23750001,0.2875,0.08418466,0.1683693 +0.2375,0.2875,0.16836932,0.08418465 +0.23750001,0.3125,0.075,0.07499999 +0.2375,0.3125,0.053033024,0.10606605 +0.2375,0.3125,0.10606602,0.053032994 +0.2375,0.3125,0.094494075,0.094494045 +0.2375,0.3125,0.06681743,0.1336348 +0.23750001,0.3125,0.13363482,0.0668174 +0.2375,0.3125,0.11905506,0.11905509 +0.23750001,0.3125,0.08418466,0.1683693 +0.2375,0.3125,0.16836932,0.08418465 +0.23750001,0.3375,0.075,0.07499999 +0.2375,0.3375,0.053033024,0.10606605 +0.2375,0.33749998,0.10606602,0.053033024 +0.2375,0.3375,0.094494075,0.094494045 +0.2375,0.33750004,0.06681743,0.13363484 +0.23750001,0.33749998,0.13363482,0.06681743 +0.2375,0.3375,0.11905506,0.11905509 +0.23750001,0.3375,0.08418466,0.1683693 +0.2375,0.3375,0.16836932,0.08418465 +0.23750001,0.3625,0.075,0.07500002 +0.2375,0.3625,0.053033024,0.10606602 +0.2375,0.3625,0.10606602,0.053033024 +0.2375,0.3625,0.094494075,0.094494075 +0.2375,0.3625,0.06681743,0.1336348 +0.23750001,0.3625,0.13363482,0.06681743 +0.2375,0.3625,0.11905506,0.11905506 +0.23750001,0.3625,0.08418466,0.1683693 +0.2375,0.3625,0.16836932,0.08418465 +0.23750001,0.3875,0.075,0.07500002 +0.2375,0.3875,0.053033024,0.10606602 +0.2375,0.3875,0.10606602,0.053032994 +0.2375,0.3875,0.094494075,0.094494075 +0.2375,0.3875,0.06681743,0.13363484 +0.23750001,0.3875,0.13363482,0.0668174 +0.2375,0.3875,0.11905506,0.11905506 +0.23750001,0.3875,0.08418466,0.1683693 +0.2375,0.3875,0.16836932,0.08418465 +0.23750001,0.4125,0.075,0.07499999 +0.2375,0.4125,0.053033024,0.10606605 +0.2375,0.4125,0.10606602,0.053032994 +0.2375,0.4125,0.094494075,0.094494045 +0.2375,0.41250002,0.06681743,0.13363484 +0.23750001,0.4125,0.13363482,0.0668174 +0.2375,0.4125,0.11905506,0.11905509 +0.23750001,0.4125,0.08418466,0.1683693 +0.2375,0.4125,0.16836932,0.08418465 +0.23750001,0.4375,0.075,0.07499999 +0.2375,0.4375,0.053033024,0.10606605 +0.2375,0.4375,0.10606602,0.053032994 +0.2375,0.4375,0.094494075,0.094494045 +0.2375,0.4375,0.06681743,0.1336348 +0.23750001,0.4375,0.13363482,0.0668174 +0.2375,0.4375,0.11905506,0.11905509 +0.23750001,0.4375,0.08418466,0.1683693 +0.2375,0.4375,0.16836932,0.08418465 +0.23750001,0.4625,0.075,0.07499999 +0.2375,0.4625,0.053033024,0.10606605 +0.2375,0.46249998,0.10606602,0.053032964 +0.2375,0.4625,0.094494075,0.094494045 +0.2375,0.46250004,0.06681743,0.13363484 +0.23750001,0.46249998,0.13363482,0.06681737 +0.2375,0.4625,0.11905506,0.11905509 +0.23750001,0.46249998,0.08418466,0.16836926 +0.2375,0.46249998,0.16836932,0.08418462 +0.23750001,0.48749998,0.075,0.07499999 +0.2375,0.4875,0.053033024,0.10606602 +0.2375,0.4875,0.10606602,0.053032994 +0.2375,0.48749998,0.094494075,0.094494045 +0.2375,0.4875,0.06681743,0.13363484 +0.23750001,0.4875,0.13363482,0.0668174 +0.2375,0.4875,0.11905506,0.11905506 +0.23750001,0.4875,0.08418466,0.1683693 +0.2375,0.4875,0.16836932,0.08418465 +0.23750001,0.5125,0.075,0.07500002 +0.2375,0.51250005,0.053033024,0.10606605 +0.2375,0.5125,0.10606602,0.053032964 +0.2375,0.5125,0.094494075,0.094494075 +0.2375,0.51250005,0.06681743,0.13363487 +0.23750001,0.5125,0.13363482,0.06681737 +0.2375,0.51250005,0.11905506,0.11905509 +0.23750001,0.5125,0.08418466,0.1683693 +0.2375,0.5125,0.16836932,0.08418465 +0.23750001,0.5375,0.075,0.07499999 +0.2375,0.5375,0.053033024,0.10606605 +0.2375,0.5375,0.10606602,0.053032935 +0.2375,0.5375,0.094494075,0.094494045 +0.2375,0.5375,0.06681743,0.13363487 +0.23750001,0.5375,0.13363482,0.06681734 +0.2375,0.5375,0.11905506,0.11905509 +0.23750001,0.5375,0.08418466,0.16836932 +0.2375,0.5375,0.16836932,0.08418468 +0.23750001,0.5625,0.075,0.07500005 +0.2375,0.5625,0.053033024,0.10606599 +0.2375,0.5625,0.10606602,0.053032994 +0.2375,0.5625,0.094494075,0.094494104 +0.2375,0.5625,0.06681743,0.13363484 +0.23750001,0.5625,0.13363482,0.0668174 +0.2375,0.5625,0.11905506,0.11905503 +0.23750001,0.5625,0.08418466,0.1683693 +0.2375,0.5625,0.16836932,0.08418465 +0.23750001,0.5875,0.075,0.07499999 +0.2375,0.5875,0.053033024,0.10606605 +0.2375,0.5875,0.10606602,0.053032935 +0.2375,0.5875,0.094494075,0.094494045 +0.2375,0.5875,0.06681743,0.13363487 +0.23750001,0.5875,0.13363482,0.06681734 +0.2375,0.5875,0.11905506,0.11905509 +0.23750001,0.5875,0.08418466,0.1683693 +0.2375,0.5875,0.16836932,0.08418465 +0.23750001,0.61249995,0.075,0.07499999 +0.2375,0.61249995,0.053033024,0.10606605 +0.2375,0.6125,0.10606602,0.053032994 +0.2375,0.61249995,0.094494075,0.094494045 +0.2375,0.61249995,0.06681743,0.13363487 +0.23750001,0.6125,0.13363482,0.0668174 +0.2375,0.61249995,0.11905506,0.11905509 +0.23750001,0.6125,0.08418466,0.1683693 +0.2375,0.6125,0.16836932,0.08418465 +0.23750001,0.63750005,0.075,0.07499999 +0.2375,0.63750005,0.053033024,0.10606605 +0.2375,0.6375,0.10606602,0.053032994 +0.2375,0.63750005,0.094494075,0.094494045 +0.2375,0.63750005,0.06681743,0.13363487 +0.23750001,0.6375,0.13363482,0.0668174 +0.2375,0.63750005,0.11905506,0.11905509 +0.23750001,0.6375,0.08418466,0.1683693 +0.2375,0.6375,0.16836932,0.08418465 +0.23750001,0.6625,0.075,0.07499999 +0.2375,0.6625,0.053033024,0.10606605 +0.2375,0.6625,0.10606602,0.053032935 +0.2375,0.6625,0.094494075,0.094494045 +0.2375,0.6625,0.06681743,0.13363487 +0.23750001,0.6625,0.13363482,0.06681734 +0.2375,0.6625,0.11905506,0.11905509 +0.23750001,0.6625,0.08418466,0.1683693 +0.2375,0.6625,0.16836932,0.08418465 +0.23750001,0.6875,0.075,0.07500005 +0.2375,0.6875,0.053033024,0.10606599 +0.2375,0.6875,0.10606602,0.053032994 +0.2375,0.6875,0.094494075,0.094494104 +0.2375,0.6875,0.06681743,0.1336348 +0.23750001,0.6875,0.13363482,0.0668174 +0.2375,0.6875,0.11905506,0.11905503 +0.23750001,0.6875,0.08418466,0.1683693 +0.2375,0.6875,0.16836932,0.08418465 +0.23750001,0.7125,0.075,0.07499999 +0.2375,0.7125,0.053033024,0.10606605 +0.2375,0.7125,0.10606602,0.053032935 +0.2375,0.7125,0.094494075,0.094494045 +0.2375,0.7125,0.06681743,0.13363487 +0.23750001,0.7125,0.13363482,0.06681734 +0.2375,0.7125,0.11905506,0.11905509 +0.23750001,0.7125,0.08418466,0.1683693 +0.2375,0.7125,0.16836932,0.08418465 +0.23750001,0.73749995,0.075,0.07499999 +0.2375,0.73749995,0.053033024,0.10606605 +0.2375,0.7375,0.10606602,0.053032994 +0.2375,0.73749995,0.094494075,0.094494045 +0.2375,0.73749995,0.06681743,0.1336348 +0.23750001,0.7375,0.13363482,0.0668174 +0.2375,0.73749995,0.11905506,0.11905509 +0.23750001,0.7375,0.08418466,0.1683693 +0.2375,0.7375,0.16836932,0.08418465 +0.23750001,0.76250005,0.075,0.07499999 +0.2375,0.7625,0.053033024,0.10606599 +0.2375,0.7625,0.10606602,0.053032994 +0.2375,0.76250005,0.094494075,0.094494045 +0.2375,0.7625,0.06681743,0.1336348 +0.23750001,0.7625,0.13363482,0.0668174 +0.2375,0.7625,0.11905506,0.11905503 +0.23750001,0.7625,0.08418466,0.1683693 +0.2375,0.7625,0.16836932,0.08418465 +0.23750001,0.7875,0.075,0.07499999 +0.2375,0.78749996,0.053033024,0.10606599 +0.2375,0.7875,0.10606602,0.053032994 +0.2375,0.7875,0.094494075,0.094494045 +0.2375,0.78749996,0.06681743,0.1336348 +0.23750001,0.7875,0.13363482,0.0668174 +0.2375,0.78749996,0.11905506,0.11905503 +0.23750001,0.7875,0.08418466,0.1683693 +0.2375,0.7875,0.16836932,0.08418465 +0.23750001,0.8125,0.075,0.07500005 +0.2375,0.8125,0.053033024,0.10606599 +0.2375,0.8125,0.10606602,0.053033054 +0.2375,0.8125,0.094494075,0.094494104 +0.2375,0.8125,0.06681743,0.1336348 +0.23750001,0.8125,0.13363482,0.06681746 +0.2375,0.8125,0.11905506,0.11905503 +0.23750001,0.8125,0.08418466,0.1683693 +0.2375,0.8125,0.16836932,0.08418465 +0.23750001,0.8375,0.075,0.07499999 +0.2375,0.8375,0.053033024,0.10606599 +0.2375,0.8375,0.10606602,0.053033054 +0.2375,0.8375,0.094494075,0.094494045 +0.2375,0.8375,0.06681743,0.1336348 +0.23750001,0.8375,0.13363482,0.06681746 +0.2375,0.8375,0.11905506,0.11905503 +0.23750001,0.8375,0.08418466,0.1683693 +0.2375,0.8375,0.16836932,0.08418465 +0.23750001,0.86249995,0.075,0.07499999 +0.2375,0.86249995,0.053033024,0.10606593 +0.2375,0.86249995,0.10606602,0.053033054 +0.2375,0.86249995,0.094494075,0.094494045 +0.2375,0.86249995,0.06681743,0.1336348 +0.23750001,0.86249995,0.13363482,0.06681746 +0.2375,0.86249995,0.11905506,0.11905497 +0.23750001,0.8625,0.08418466,0.1683693 +0.2375,0.8625,0.16836932,0.08418465 +0.23750001,0.88750005,0.075,0.07499999 +0.2375,0.88750005,0.053033024,0.10606593 +0.2375,0.88750005,0.10606602,0.053033054 +0.2375,0.88750005,0.094494075,0.094494045 +0.2375,0.88750005,0.06681743,0.13363475 +0.23750001,0.88750005,0.13363482,0.06681746 +0.2375,0.88750005,0.11905506,0.11905497 +0.23750001,0.8875,0.08418466,0.1683693 +0.2375,0.8875,0.16836932,0.08418465 +0.23750001,0.9125,0.075,0.07499999 +0.2375,0.9125,0.053033024,0.10606593 +0.2375,0.9125,0.10606602,0.053033054 +0.2375,0.9125,0.094494075,0.094494045 +0.2375,0.9125,0.06681743,0.13363475 +0.23750001,0.9125,0.13363482,0.06681746 +0.2375,0.9125,0.11905506,0.11905497 +0.23750001,0.9125,0.08418466,0.1683693 +0.2375,0.9125,0.16836932,0.08418465 +0.23750001,0.9375,0.075,0.07500005 +0.2375,0.9375,0.053033024,0.10606599 +0.2375,0.9375,0.10606602,0.053033113 +0.2375,0.9375,0.094494075,0.094494104 +0.2375,0.9375,0.06681743,0.1336348 +0.23750001,0.9375,0.13363482,0.06681752 +0.2375,0.9375,0.11905506,0.11905503 +0.23750001,0.9375,0.08418466,0.1683693 +0.2375,0.9375,0.16836932,0.08418465 +0.23750001,0.9625,0.075,0.07499999 +0.2375,0.9625,0.053033024,0.10606593 +0.2375,0.9625,0.10606602,0.053033054 +0.2375,0.9625,0.094494075,0.094494045 +0.2375,0.9625,0.06681743,0.13363475 +0.23750001,0.9625,0.13363482,0.06681746 +0.2375,0.9625,0.11905506,0.11905497 +0.23750001,0.9625,0.08418466,0.1683693 +0.2375,0.9625,0.16836932,0.08418465 +0.23750001,0.98749995,0.075,0.07499999 +0.2375,0.98749995,0.053033024,0.10606593 +0.2375,0.98749995,0.10606602,0.053033054 +0.2375,0.98749995,0.094494075,0.094494045 +0.2375,0.98749995,0.06681743,0.13363475 +0.23750001,0.98749995,0.13363482,0.06681746 +0.2375,0.98749995,0.11905506,0.11905497 +0.23750001,0.98749995,0.08418466,0.16836923 +0.2375,0.98749995,0.16836932,0.08418459 +0.2625,0.0125,0.07500002,0.075 +0.2625,0.012499997,0.053033024,0.10606602 +0.2625,0.012499999,0.10606603,0.05303301 +0.2625,0.012499999,0.094494075,0.09449408 +0.2625,0.012500001,0.06681743,0.1336348 +0.2625,0.012499999,0.13363479,0.0668174 +0.2625,0.012500001,0.11905508,0.11905508 +0.2625,0.012499999,0.08418463,0.1683693 +0.2625,0.012500002,0.1683693,0.084184654 +0.2625,0.0375,0.07500002,0.075 +0.2625,0.037499998,0.053033024,0.10606601 +0.2625,0.0375,0.10606603,0.05303301 +0.2625,0.0375,0.094494075,0.094494075 +0.2625,0.0375,0.06681743,0.1336348 +0.2625,0.0375,0.13363479,0.0668174 +0.2625,0.0375,0.11905508,0.11905508 +0.2625,0.0375,0.08418463,0.16836931 +0.2625,0.0375,0.1683693,0.08418466 +0.2625,0.0625,0.07500002,0.075 +0.2625,0.0625,0.053033024,0.10606602 +0.2625,0.0625,0.10606603,0.05303301 +0.2625,0.0625,0.094494075,0.094494075 +0.2625,0.0625,0.06681743,0.1336348 +0.2625,0.0625,0.13363479,0.0668174 +0.2625,0.0625,0.11905508,0.11905508 +0.2625,0.0625,0.08418463,0.16836932 +0.2625,0.0625,0.1683693,0.08418465 +0.2625,0.0875,0.07500002,0.075 +0.2625,0.08749999,0.053033024,0.10606601 +0.2625,0.087500006,0.10606603,0.053033013 +0.2625,0.087500006,0.094494075,0.09449408 +0.2625,0.087500006,0.06681743,0.1336348 +0.2625,0.0875,0.13363479,0.0668174 +0.2625,0.0875,0.11905508,0.11905508 +0.2625,0.0875,0.08418463,0.16836931 +0.2625,0.087500006,0.1683693,0.084184654 +0.2625,0.112500004,0.07500002,0.075 +0.2625,0.1125,0.053033024,0.10606601 +0.2625,0.112500004,0.10606603,0.05303301 +0.2625,0.1125,0.094494075,0.094494075 +0.2625,0.1125,0.06681743,0.1336348 +0.2625,0.1125,0.13363479,0.0668174 +0.2625,0.1125,0.11905508,0.119055085 +0.2625,0.112500004,0.08418463,0.16836931 +0.2625,0.1125,0.1683693,0.08418465 +0.2625,0.1375,0.07500002,0.074999996 +0.2625,0.1375,0.053033024,0.10606602 +0.2625,0.1375,0.10606603,0.053033024 +0.2625,0.1375,0.094494075,0.09449408 +0.2625,0.1375,0.06681743,0.1336348 +0.2625,0.1375,0.13363479,0.0668174 +0.2625,0.13749999,0.11905508,0.11905508 +0.2625,0.1375,0.08418463,0.1683693 +0.2625,0.1375,0.1683693,0.084184654 +0.2625,0.1625,0.07500002,0.075 +0.2625,0.16250001,0.053033024,0.106066026 +0.2625,0.1625,0.10606603,0.05303301 +0.2625,0.1625,0.094494075,0.094494075 +0.2625,0.1625,0.06681743,0.1336348 +0.2625,0.1625,0.13363479,0.0668174 +0.2625,0.1625,0.11905508,0.11905508 +0.2625,0.1625,0.08418463,0.1683693 +0.2625,0.1625,0.1683693,0.08418464 +0.2625,0.1875,0.07500002,0.07499999 +0.2625,0.1875,0.053033024,0.10606603 +0.2625,0.1875,0.10606603,0.053033024 +0.2625,0.1875,0.094494075,0.09449406 +0.2625,0.1875,0.06681743,0.1336348 +0.2625,0.1875,0.13363479,0.06681742 +0.2625,0.1875,0.11905508,0.11905509 +0.2625,0.1875,0.08418463,0.16836931 +0.2625,0.1875,0.1683693,0.08418465 +0.2625,0.2125,0.07500002,0.075 +0.2625,0.2125,0.053033024,0.10606603 +0.2625,0.2125,0.10606603,0.05303301 +0.2625,0.21249999,0.094494075,0.094494075 +0.2625,0.2125,0.06681743,0.1336348 +0.2625,0.2125,0.13363479,0.0668174 +0.2625,0.2125,0.11905508,0.11905509 +0.2625,0.2125,0.08418463,0.16836931 +0.2625,0.2125,0.1683693,0.08418465 +0.2625,0.23750001,0.07500002,0.075 +0.2625,0.2375,0.053033024,0.10606602 +0.2625,0.2375,0.10606603,0.053033024 +0.2625,0.2375,0.094494075,0.094494075 +0.2625,0.23750001,0.06681743,0.13363482 +0.2625,0.2375,0.13363479,0.06681743 +0.2625,0.2375,0.11905508,0.11905506 +0.2625,0.2375,0.08418463,0.16836932 +0.2625,0.23750001,0.1683693,0.08418466 +0.2625,0.2625,0.07500002,0.07500002 +0.2625,0.2625,0.053033024,0.10606603 +0.2625,0.2625,0.10606603,0.053033024 +0.2625,0.2625,0.094494075,0.094494075 +0.2625,0.2625,0.06681743,0.13363479 +0.2625,0.2625,0.13363479,0.06681743 +0.2625,0.2625,0.11905508,0.11905508 +0.2625,0.2625,0.08418463,0.1683693 +0.2625,0.2625,0.1683693,0.08418463 +0.2625,0.2875,0.07500002,0.07499999 +0.2625,0.2875,0.053033024,0.10606603 +0.2625,0.28750002,0.10606603,0.053033024 +0.2625,0.2875,0.094494075,0.094494045 +0.2625,0.2875,0.06681743,0.1336348 +0.2625,0.28750002,0.13363479,0.06681743 +0.2625,0.2875,0.11905508,0.11905508 +0.2625,0.2875,0.08418463,0.1683693 +0.2625,0.2875,0.1683693,0.08418465 +0.2625,0.3125,0.07500002,0.07499999 +0.2625,0.3125,0.053033024,0.10606605 +0.2625,0.3125,0.10606603,0.053032994 +0.2625,0.3125,0.094494075,0.094494045 +0.2625,0.3125,0.06681743,0.1336348 +0.2625,0.3125,0.13363479,0.0668174 +0.2625,0.3125,0.11905508,0.11905509 +0.2625,0.3125,0.08418463,0.1683693 +0.2625,0.3125,0.1683693,0.08418465 +0.2625,0.3375,0.07500002,0.07499999 +0.2625,0.3375,0.053033024,0.10606605 +0.2625,0.33749998,0.10606603,0.053033024 +0.2625,0.3375,0.094494075,0.094494045 +0.2625,0.33750004,0.06681743,0.13363484 +0.2625,0.33749998,0.13363479,0.06681743 +0.2625,0.3375,0.11905508,0.11905509 +0.2625,0.3375,0.08418463,0.1683693 +0.2625,0.3375,0.1683693,0.08418465 +0.2625,0.3625,0.07500002,0.07500002 +0.2625,0.3625,0.053033024,0.10606602 +0.2625,0.3625,0.10606603,0.053033024 +0.2625,0.3625,0.094494075,0.094494075 +0.2625,0.3625,0.06681743,0.1336348 +0.2625,0.3625,0.13363479,0.06681743 +0.2625,0.3625,0.11905508,0.11905506 +0.2625,0.3625,0.08418463,0.1683693 +0.2625,0.3625,0.1683693,0.08418465 +0.2625,0.3875,0.07500002,0.07500002 +0.2625,0.3875,0.053033024,0.10606602 +0.2625,0.3875,0.10606603,0.053032994 +0.2625,0.3875,0.094494075,0.094494075 +0.2625,0.3875,0.06681743,0.13363484 +0.2625,0.3875,0.13363479,0.0668174 +0.2625,0.3875,0.11905508,0.11905506 +0.2625,0.3875,0.08418463,0.1683693 +0.2625,0.3875,0.1683693,0.08418465 +0.2625,0.4125,0.07500002,0.07499999 +0.2625,0.4125,0.053033024,0.10606605 +0.2625,0.4125,0.10606603,0.053032994 +0.2625,0.4125,0.094494075,0.094494045 +0.2625,0.41250002,0.06681743,0.13363484 +0.2625,0.4125,0.13363479,0.0668174 +0.2625,0.4125,0.11905508,0.11905509 +0.2625,0.4125,0.08418463,0.1683693 +0.2625,0.4125,0.1683693,0.08418465 +0.2625,0.4375,0.07500002,0.07499999 +0.2625,0.4375,0.053033024,0.10606605 +0.2625,0.4375,0.10606603,0.053032994 +0.2625,0.4375,0.094494075,0.094494045 +0.2625,0.4375,0.06681743,0.1336348 +0.2625,0.4375,0.13363479,0.0668174 +0.2625,0.4375,0.11905508,0.11905509 +0.2625,0.4375,0.08418463,0.1683693 +0.2625,0.4375,0.1683693,0.08418465 +0.2625,0.4625,0.07500002,0.07499999 +0.2625,0.4625,0.053033024,0.10606605 +0.2625,0.46249998,0.10606603,0.053032964 +0.2625,0.4625,0.094494075,0.094494045 +0.2625,0.46250004,0.06681743,0.13363484 +0.2625,0.46249998,0.13363479,0.06681737 +0.2625,0.4625,0.11905508,0.11905509 +0.2625,0.46249998,0.08418463,0.16836926 +0.2625,0.46249998,0.1683693,0.08418462 +0.2625,0.48749998,0.07500002,0.07499999 +0.2625,0.4875,0.053033024,0.10606602 +0.2625,0.4875,0.10606603,0.053032994 +0.2625,0.48749998,0.094494075,0.094494045 +0.2625,0.4875,0.06681743,0.13363484 +0.2625,0.4875,0.13363479,0.0668174 +0.2625,0.4875,0.11905508,0.11905506 +0.2625,0.4875,0.08418463,0.1683693 +0.2625,0.4875,0.1683693,0.08418465 +0.2625,0.5125,0.07500002,0.07500002 +0.2625,0.51250005,0.053033024,0.10606605 +0.2625,0.5125,0.10606603,0.053032964 +0.2625,0.5125,0.094494075,0.094494075 +0.2625,0.51250005,0.06681743,0.13363487 +0.2625,0.5125,0.13363479,0.06681737 +0.2625,0.51250005,0.11905508,0.11905509 +0.2625,0.5125,0.08418463,0.1683693 +0.2625,0.5125,0.1683693,0.08418465 +0.2625,0.5375,0.07500002,0.07499999 +0.2625,0.5375,0.053033024,0.10606605 +0.2625,0.5375,0.10606603,0.053032935 +0.2625,0.5375,0.094494075,0.094494045 +0.2625,0.5375,0.06681743,0.13363487 +0.2625,0.5375,0.13363479,0.06681734 +0.2625,0.5375,0.11905508,0.11905509 +0.2625,0.5375,0.08418463,0.16836932 +0.2625,0.5375,0.1683693,0.08418468 +0.2625,0.5625,0.07500002,0.07500005 +0.2625,0.5625,0.053033024,0.10606599 +0.2625,0.5625,0.10606603,0.053032994 +0.2625,0.5625,0.094494075,0.094494104 +0.2625,0.5625,0.06681743,0.13363484 +0.2625,0.5625,0.13363479,0.0668174 +0.2625,0.5625,0.11905508,0.11905503 +0.2625,0.5625,0.08418463,0.1683693 +0.2625,0.5625,0.1683693,0.08418465 +0.2625,0.5875,0.07500002,0.07499999 +0.2625,0.5875,0.053033024,0.10606605 +0.2625,0.5875,0.10606603,0.053032935 +0.2625,0.5875,0.094494075,0.094494045 +0.2625,0.5875,0.06681743,0.13363487 +0.2625,0.5875,0.13363479,0.06681734 +0.2625,0.5875,0.11905508,0.11905509 +0.2625,0.5875,0.08418463,0.1683693 +0.2625,0.5875,0.1683693,0.08418465 +0.2625,0.61249995,0.07500002,0.07499999 +0.2625,0.61249995,0.053033024,0.10606605 +0.2625,0.6125,0.10606603,0.053032994 +0.2625,0.61249995,0.094494075,0.094494045 +0.2625,0.61249995,0.06681743,0.13363487 +0.2625,0.6125,0.13363479,0.0668174 +0.2625,0.61249995,0.11905508,0.11905509 +0.2625,0.6125,0.08418463,0.1683693 +0.2625,0.6125,0.1683693,0.08418465 +0.2625,0.63750005,0.07500002,0.07499999 +0.2625,0.63750005,0.053033024,0.10606605 +0.2625,0.6375,0.10606603,0.053032994 +0.2625,0.63750005,0.094494075,0.094494045 +0.2625,0.63750005,0.06681743,0.13363487 +0.2625,0.6375,0.13363479,0.0668174 +0.2625,0.63750005,0.11905508,0.11905509 +0.2625,0.6375,0.08418463,0.1683693 +0.2625,0.6375,0.1683693,0.08418465 +0.2625,0.6625,0.07500002,0.07499999 +0.2625,0.6625,0.053033024,0.10606605 +0.2625,0.6625,0.10606603,0.053032935 +0.2625,0.6625,0.094494075,0.094494045 +0.2625,0.6625,0.06681743,0.13363487 +0.2625,0.6625,0.13363479,0.06681734 +0.2625,0.6625,0.11905508,0.11905509 +0.2625,0.6625,0.08418463,0.1683693 +0.2625,0.6625,0.1683693,0.08418465 +0.2625,0.6875,0.07500002,0.07500005 +0.2625,0.6875,0.053033024,0.10606599 +0.2625,0.6875,0.10606603,0.053032994 +0.2625,0.6875,0.094494075,0.094494104 +0.2625,0.6875,0.06681743,0.1336348 +0.2625,0.6875,0.13363479,0.0668174 +0.2625,0.6875,0.11905508,0.11905503 +0.2625,0.6875,0.08418463,0.1683693 +0.2625,0.6875,0.1683693,0.08418465 +0.2625,0.7125,0.07500002,0.07499999 +0.2625,0.7125,0.053033024,0.10606605 +0.2625,0.7125,0.10606603,0.053032935 +0.2625,0.7125,0.094494075,0.094494045 +0.2625,0.7125,0.06681743,0.13363487 +0.2625,0.7125,0.13363479,0.06681734 +0.2625,0.7125,0.11905508,0.11905509 +0.2625,0.7125,0.08418463,0.1683693 +0.2625,0.7125,0.1683693,0.08418465 +0.2625,0.73749995,0.07500002,0.07499999 +0.2625,0.73749995,0.053033024,0.10606605 +0.2625,0.7375,0.10606603,0.053032994 +0.2625,0.73749995,0.094494075,0.094494045 +0.2625,0.73749995,0.06681743,0.1336348 +0.2625,0.7375,0.13363479,0.0668174 +0.2625,0.73749995,0.11905508,0.11905509 +0.2625,0.7375,0.08418463,0.1683693 +0.2625,0.7375,0.1683693,0.08418465 +0.2625,0.76250005,0.07500002,0.07499999 +0.2625,0.7625,0.053033024,0.10606599 +0.2625,0.7625,0.10606603,0.053032994 +0.2625,0.76250005,0.094494075,0.094494045 +0.2625,0.7625,0.06681743,0.1336348 +0.2625,0.7625,0.13363479,0.0668174 +0.2625,0.7625,0.11905508,0.11905503 +0.2625,0.7625,0.08418463,0.1683693 +0.2625,0.7625,0.1683693,0.08418465 +0.2625,0.7875,0.07500002,0.07499999 +0.2625,0.78749996,0.053033024,0.10606599 +0.2625,0.7875,0.10606603,0.053032994 +0.2625,0.7875,0.094494075,0.094494045 +0.2625,0.78749996,0.06681743,0.1336348 +0.2625,0.7875,0.13363479,0.0668174 +0.2625,0.78749996,0.11905508,0.11905503 +0.2625,0.7875,0.08418463,0.1683693 +0.2625,0.7875,0.1683693,0.08418465 +0.2625,0.8125,0.07500002,0.07500005 +0.2625,0.8125,0.053033024,0.10606599 +0.2625,0.8125,0.10606603,0.053033054 +0.2625,0.8125,0.094494075,0.094494104 +0.2625,0.8125,0.06681743,0.1336348 +0.2625,0.8125,0.13363479,0.06681746 +0.2625,0.8125,0.11905508,0.11905503 +0.2625,0.8125,0.08418463,0.1683693 +0.2625,0.8125,0.1683693,0.08418465 +0.2625,0.8375,0.07500002,0.07499999 +0.2625,0.8375,0.053033024,0.10606599 +0.2625,0.8375,0.10606603,0.053033054 +0.2625,0.8375,0.094494075,0.094494045 +0.2625,0.8375,0.06681743,0.1336348 +0.2625,0.8375,0.13363479,0.06681746 +0.2625,0.8375,0.11905508,0.11905503 +0.2625,0.8375,0.08418463,0.1683693 +0.2625,0.8375,0.1683693,0.08418465 +0.2625,0.86249995,0.07500002,0.07499999 +0.2625,0.86249995,0.053033024,0.10606593 +0.2625,0.86249995,0.10606603,0.053033054 +0.2625,0.86249995,0.094494075,0.094494045 +0.2625,0.86249995,0.06681743,0.1336348 +0.2625,0.86249995,0.13363479,0.06681746 +0.2625,0.86249995,0.11905508,0.11905497 +0.2625,0.8625,0.08418463,0.1683693 +0.2625,0.8625,0.1683693,0.08418465 +0.2625,0.88750005,0.07500002,0.07499999 +0.2625,0.88750005,0.053033024,0.10606593 +0.2625,0.88750005,0.10606603,0.053033054 +0.2625,0.88750005,0.094494075,0.094494045 +0.2625,0.88750005,0.06681743,0.13363475 +0.2625,0.88750005,0.13363479,0.06681746 +0.2625,0.88750005,0.11905508,0.11905497 +0.2625,0.8875,0.08418463,0.1683693 +0.2625,0.8875,0.1683693,0.08418465 +0.2625,0.9125,0.07500002,0.07499999 +0.2625,0.9125,0.053033024,0.10606593 +0.2625,0.9125,0.10606603,0.053033054 +0.2625,0.9125,0.094494075,0.094494045 +0.2625,0.9125,0.06681743,0.13363475 +0.2625,0.9125,0.13363479,0.06681746 +0.2625,0.9125,0.11905508,0.11905497 +0.2625,0.9125,0.08418463,0.1683693 +0.2625,0.9125,0.1683693,0.08418465 +0.2625,0.9375,0.07500002,0.07500005 +0.2625,0.9375,0.053033024,0.10606599 +0.2625,0.9375,0.10606603,0.053033113 +0.2625,0.9375,0.094494075,0.094494104 +0.2625,0.9375,0.06681743,0.1336348 +0.2625,0.9375,0.13363479,0.06681752 +0.2625,0.9375,0.11905508,0.11905503 +0.2625,0.9375,0.08418463,0.1683693 +0.2625,0.9375,0.1683693,0.08418465 +0.2625,0.9625,0.07500002,0.07499999 +0.2625,0.9625,0.053033024,0.10606593 +0.2625,0.9625,0.10606603,0.053033054 +0.2625,0.9625,0.094494075,0.094494045 +0.2625,0.9625,0.06681743,0.13363475 +0.2625,0.9625,0.13363479,0.06681746 +0.2625,0.9625,0.11905508,0.11905497 +0.2625,0.9625,0.08418463,0.1683693 +0.2625,0.9625,0.1683693,0.08418465 +0.2625,0.98749995,0.07500002,0.07499999 +0.2625,0.98749995,0.053033024,0.10606593 +0.2625,0.98749995,0.10606603,0.053033054 +0.2625,0.98749995,0.094494075,0.094494045 +0.2625,0.98749995,0.06681743,0.13363475 +0.2625,0.98749995,0.13363479,0.06681746 +0.2625,0.98749995,0.11905508,0.11905497 +0.2625,0.98749995,0.08418463,0.16836923 +0.2625,0.98749995,0.1683693,0.08418459 +0.2875,0.0125,0.07499999,0.075 +0.28750002,0.012499997,0.053033024,0.10606602 +0.2875,0.012499999,0.10606603,0.05303301 +0.2875,0.012499999,0.094494045,0.09449408 +0.28750002,0.012500001,0.06681743,0.1336348 +0.2875,0.012499999,0.1336348,0.0668174 +0.2875,0.012500001,0.11905508,0.11905508 +0.2875,0.012499999,0.08418465,0.1683693 +0.2875,0.012500002,0.1683693,0.084184654 +0.2875,0.0375,0.07499999,0.075 +0.28750002,0.037499998,0.053033024,0.10606601 +0.2875,0.0375,0.10606603,0.05303301 +0.2875,0.0375,0.094494045,0.094494075 +0.28750002,0.0375,0.06681743,0.1336348 +0.2875,0.0375,0.1336348,0.0668174 +0.2875,0.0375,0.11905508,0.11905508 +0.2875,0.0375,0.08418465,0.16836931 +0.2875,0.0375,0.1683693,0.08418466 +0.2875,0.0625,0.07499999,0.075 +0.28750002,0.0625,0.053033024,0.10606602 +0.2875,0.0625,0.10606603,0.05303301 +0.2875,0.0625,0.094494045,0.094494075 +0.28750002,0.0625,0.06681743,0.1336348 +0.2875,0.0625,0.1336348,0.0668174 +0.2875,0.0625,0.11905508,0.11905508 +0.2875,0.0625,0.08418465,0.16836932 +0.2875,0.0625,0.1683693,0.08418465 +0.2875,0.0875,0.07499999,0.075 +0.28750002,0.08749999,0.053033024,0.10606601 +0.2875,0.087500006,0.10606603,0.053033013 +0.2875,0.087500006,0.094494045,0.09449408 +0.28750002,0.087500006,0.06681743,0.1336348 +0.2875,0.0875,0.1336348,0.0668174 +0.2875,0.0875,0.11905508,0.11905508 +0.2875,0.0875,0.08418465,0.16836931 +0.2875,0.087500006,0.1683693,0.084184654 +0.2875,0.112500004,0.07499999,0.075 +0.28750002,0.1125,0.053033024,0.10606601 +0.2875,0.112500004,0.10606603,0.05303301 +0.2875,0.1125,0.094494045,0.094494075 +0.28750002,0.1125,0.06681743,0.1336348 +0.2875,0.1125,0.1336348,0.0668174 +0.2875,0.1125,0.11905508,0.119055085 +0.2875,0.112500004,0.08418465,0.16836931 +0.2875,0.1125,0.1683693,0.08418465 +0.2875,0.1375,0.07499999,0.074999996 +0.28750002,0.1375,0.053033024,0.10606602 +0.2875,0.1375,0.10606603,0.053033024 +0.2875,0.1375,0.094494045,0.09449408 +0.28750002,0.1375,0.06681743,0.1336348 +0.2875,0.1375,0.1336348,0.0668174 +0.2875,0.13749999,0.11905508,0.11905508 +0.2875,0.1375,0.08418465,0.1683693 +0.2875,0.1375,0.1683693,0.084184654 +0.2875,0.1625,0.07499999,0.075 +0.28750002,0.16250001,0.053033024,0.106066026 +0.2875,0.1625,0.10606603,0.05303301 +0.2875,0.1625,0.094494045,0.094494075 +0.28750002,0.1625,0.06681743,0.1336348 +0.2875,0.1625,0.1336348,0.0668174 +0.2875,0.1625,0.11905508,0.11905508 +0.2875,0.1625,0.08418465,0.1683693 +0.2875,0.1625,0.1683693,0.08418464 +0.2875,0.1875,0.07499999,0.07499999 +0.28750002,0.1875,0.053033024,0.10606603 +0.2875,0.1875,0.10606603,0.053033024 +0.2875,0.1875,0.094494045,0.09449406 +0.28750002,0.1875,0.06681743,0.1336348 +0.2875,0.1875,0.1336348,0.06681742 +0.2875,0.1875,0.11905508,0.11905509 +0.2875,0.1875,0.08418465,0.16836931 +0.2875,0.1875,0.1683693,0.08418465 +0.2875,0.2125,0.07499999,0.075 +0.28750002,0.2125,0.053033024,0.10606603 +0.2875,0.2125,0.10606603,0.05303301 +0.2875,0.21249999,0.094494045,0.094494075 +0.28750002,0.2125,0.06681743,0.1336348 +0.2875,0.2125,0.1336348,0.0668174 +0.2875,0.2125,0.11905508,0.11905509 +0.2875,0.2125,0.08418465,0.16836931 +0.2875,0.2125,0.1683693,0.08418465 +0.2875,0.23750001,0.07499999,0.075 +0.28750002,0.2375,0.053033024,0.10606602 +0.2875,0.2375,0.10606603,0.053033024 +0.2875,0.2375,0.094494045,0.094494075 +0.28750002,0.23750001,0.06681743,0.13363482 +0.2875,0.2375,0.1336348,0.06681743 +0.2875,0.2375,0.11905508,0.11905506 +0.2875,0.2375,0.08418465,0.16836932 +0.2875,0.23750001,0.1683693,0.08418466 +0.2875,0.2625,0.07499999,0.07500002 +0.28750002,0.2625,0.053033024,0.10606603 +0.2875,0.2625,0.10606603,0.053033024 +0.2875,0.2625,0.094494045,0.094494075 +0.28750002,0.2625,0.06681743,0.13363479 +0.2875,0.2625,0.1336348,0.06681743 +0.2875,0.2625,0.11905508,0.11905508 +0.2875,0.2625,0.08418465,0.1683693 +0.2875,0.2625,0.1683693,0.08418463 +0.2875,0.2875,0.07499999,0.07499999 +0.28750002,0.2875,0.053033024,0.10606603 +0.2875,0.28750002,0.10606603,0.053033024 +0.2875,0.2875,0.094494045,0.094494045 +0.28750002,0.2875,0.06681743,0.1336348 +0.2875,0.28750002,0.1336348,0.06681743 +0.2875,0.2875,0.11905508,0.11905508 +0.2875,0.2875,0.08418465,0.1683693 +0.2875,0.2875,0.1683693,0.08418465 +0.2875,0.3125,0.07499999,0.07499999 +0.28750002,0.3125,0.053033024,0.10606605 +0.2875,0.3125,0.10606603,0.053032994 +0.2875,0.3125,0.094494045,0.094494045 +0.28750002,0.3125,0.06681743,0.1336348 +0.2875,0.3125,0.1336348,0.0668174 +0.2875,0.3125,0.11905508,0.11905509 +0.2875,0.3125,0.08418465,0.1683693 +0.2875,0.3125,0.1683693,0.08418465 +0.2875,0.3375,0.07499999,0.07499999 +0.28750002,0.3375,0.053033024,0.10606605 +0.2875,0.33749998,0.10606603,0.053033024 +0.2875,0.3375,0.094494045,0.094494045 +0.28750002,0.33750004,0.06681743,0.13363484 +0.2875,0.33749998,0.1336348,0.06681743 +0.2875,0.3375,0.11905508,0.11905509 +0.2875,0.3375,0.08418465,0.1683693 +0.2875,0.3375,0.1683693,0.08418465 +0.2875,0.3625,0.07499999,0.07500002 +0.28750002,0.3625,0.053033024,0.10606602 +0.2875,0.3625,0.10606603,0.053033024 +0.2875,0.3625,0.094494045,0.094494075 +0.28750002,0.3625,0.06681743,0.1336348 +0.2875,0.3625,0.1336348,0.06681743 +0.2875,0.3625,0.11905508,0.11905506 +0.2875,0.3625,0.08418465,0.1683693 +0.2875,0.3625,0.1683693,0.08418465 +0.2875,0.3875,0.07499999,0.07500002 +0.28750002,0.3875,0.053033024,0.10606602 +0.2875,0.3875,0.10606603,0.053032994 +0.2875,0.3875,0.094494045,0.094494075 +0.28750002,0.3875,0.06681743,0.13363484 +0.2875,0.3875,0.1336348,0.0668174 +0.2875,0.3875,0.11905508,0.11905506 +0.2875,0.3875,0.08418465,0.1683693 +0.2875,0.3875,0.1683693,0.08418465 +0.2875,0.4125,0.07499999,0.07499999 +0.28750002,0.4125,0.053033024,0.10606605 +0.2875,0.4125,0.10606603,0.053032994 +0.2875,0.4125,0.094494045,0.094494045 +0.28750002,0.41250002,0.06681743,0.13363484 +0.2875,0.4125,0.1336348,0.0668174 +0.2875,0.4125,0.11905508,0.11905509 +0.2875,0.4125,0.08418465,0.1683693 +0.2875,0.4125,0.1683693,0.08418465 +0.2875,0.4375,0.07499999,0.07499999 +0.28750002,0.4375,0.053033024,0.10606605 +0.2875,0.4375,0.10606603,0.053032994 +0.2875,0.4375,0.094494045,0.094494045 +0.28750002,0.4375,0.06681743,0.1336348 +0.2875,0.4375,0.1336348,0.0668174 +0.2875,0.4375,0.11905508,0.11905509 +0.2875,0.4375,0.08418465,0.1683693 +0.2875,0.4375,0.1683693,0.08418465 +0.2875,0.4625,0.07499999,0.07499999 +0.28750002,0.4625,0.053033024,0.10606605 +0.2875,0.46249998,0.10606603,0.053032964 +0.2875,0.4625,0.094494045,0.094494045 +0.28750002,0.46250004,0.06681743,0.13363484 +0.2875,0.46249998,0.1336348,0.06681737 +0.2875,0.4625,0.11905508,0.11905509 +0.2875,0.46249998,0.08418465,0.16836926 +0.2875,0.46249998,0.1683693,0.08418462 +0.2875,0.48749998,0.07499999,0.07499999 +0.28750002,0.4875,0.053033024,0.10606602 +0.2875,0.4875,0.10606603,0.053032994 +0.2875,0.48749998,0.094494045,0.094494045 +0.28750002,0.4875,0.06681743,0.13363484 +0.2875,0.4875,0.1336348,0.0668174 +0.2875,0.4875,0.11905508,0.11905506 +0.2875,0.4875,0.08418465,0.1683693 +0.2875,0.4875,0.1683693,0.08418465 +0.2875,0.5125,0.07499999,0.07500002 +0.28750002,0.51250005,0.053033024,0.10606605 +0.2875,0.5125,0.10606603,0.053032964 +0.2875,0.5125,0.094494045,0.094494075 +0.28750002,0.51250005,0.06681743,0.13363487 +0.2875,0.5125,0.1336348,0.06681737 +0.2875,0.51250005,0.11905508,0.11905509 +0.2875,0.5125,0.08418465,0.1683693 +0.2875,0.5125,0.1683693,0.08418465 +0.2875,0.5375,0.07499999,0.07499999 +0.28750002,0.5375,0.053033024,0.10606605 +0.2875,0.5375,0.10606603,0.053032935 +0.2875,0.5375,0.094494045,0.094494045 +0.28750002,0.5375,0.06681743,0.13363487 +0.2875,0.5375,0.1336348,0.06681734 +0.2875,0.5375,0.11905508,0.11905509 +0.2875,0.5375,0.08418465,0.16836932 +0.2875,0.5375,0.1683693,0.08418468 +0.2875,0.5625,0.07499999,0.07500005 +0.28750002,0.5625,0.053033024,0.10606599 +0.2875,0.5625,0.10606603,0.053032994 +0.2875,0.5625,0.094494045,0.094494104 +0.28750002,0.5625,0.06681743,0.13363484 +0.2875,0.5625,0.1336348,0.0668174 +0.2875,0.5625,0.11905508,0.11905503 +0.2875,0.5625,0.08418465,0.1683693 +0.2875,0.5625,0.1683693,0.08418465 +0.2875,0.5875,0.07499999,0.07499999 +0.28750002,0.5875,0.053033024,0.10606605 +0.2875,0.5875,0.10606603,0.053032935 +0.2875,0.5875,0.094494045,0.094494045 +0.28750002,0.5875,0.06681743,0.13363487 +0.2875,0.5875,0.1336348,0.06681734 +0.2875,0.5875,0.11905508,0.11905509 +0.2875,0.5875,0.08418465,0.1683693 +0.2875,0.5875,0.1683693,0.08418465 +0.2875,0.61249995,0.07499999,0.07499999 +0.28750002,0.61249995,0.053033024,0.10606605 +0.2875,0.6125,0.10606603,0.053032994 +0.2875,0.61249995,0.094494045,0.094494045 +0.28750002,0.61249995,0.06681743,0.13363487 +0.2875,0.6125,0.1336348,0.0668174 +0.2875,0.61249995,0.11905508,0.11905509 +0.2875,0.6125,0.08418465,0.1683693 +0.2875,0.6125,0.1683693,0.08418465 +0.2875,0.63750005,0.07499999,0.07499999 +0.28750002,0.63750005,0.053033024,0.10606605 +0.2875,0.6375,0.10606603,0.053032994 +0.2875,0.63750005,0.094494045,0.094494045 +0.28750002,0.63750005,0.06681743,0.13363487 +0.2875,0.6375,0.1336348,0.0668174 +0.2875,0.63750005,0.11905508,0.11905509 +0.2875,0.6375,0.08418465,0.1683693 +0.2875,0.6375,0.1683693,0.08418465 +0.2875,0.6625,0.07499999,0.07499999 +0.28750002,0.6625,0.053033024,0.10606605 +0.2875,0.6625,0.10606603,0.053032935 +0.2875,0.6625,0.094494045,0.094494045 +0.28750002,0.6625,0.06681743,0.13363487 +0.2875,0.6625,0.1336348,0.06681734 +0.2875,0.6625,0.11905508,0.11905509 +0.2875,0.6625,0.08418465,0.1683693 +0.2875,0.6625,0.1683693,0.08418465 +0.2875,0.6875,0.07499999,0.07500005 +0.28750002,0.6875,0.053033024,0.10606599 +0.2875,0.6875,0.10606603,0.053032994 +0.2875,0.6875,0.094494045,0.094494104 +0.28750002,0.6875,0.06681743,0.1336348 +0.2875,0.6875,0.1336348,0.0668174 +0.2875,0.6875,0.11905508,0.11905503 +0.2875,0.6875,0.08418465,0.1683693 +0.2875,0.6875,0.1683693,0.08418465 +0.2875,0.7125,0.07499999,0.07499999 +0.28750002,0.7125,0.053033024,0.10606605 +0.2875,0.7125,0.10606603,0.053032935 +0.2875,0.7125,0.094494045,0.094494045 +0.28750002,0.7125,0.06681743,0.13363487 +0.2875,0.7125,0.1336348,0.06681734 +0.2875,0.7125,0.11905508,0.11905509 +0.2875,0.7125,0.08418465,0.1683693 +0.2875,0.7125,0.1683693,0.08418465 +0.2875,0.73749995,0.07499999,0.07499999 +0.28750002,0.73749995,0.053033024,0.10606605 +0.2875,0.7375,0.10606603,0.053032994 +0.2875,0.73749995,0.094494045,0.094494045 +0.28750002,0.73749995,0.06681743,0.1336348 +0.2875,0.7375,0.1336348,0.0668174 +0.2875,0.73749995,0.11905508,0.11905509 +0.2875,0.7375,0.08418465,0.1683693 +0.2875,0.7375,0.1683693,0.08418465 +0.2875,0.76250005,0.07499999,0.07499999 +0.28750002,0.7625,0.053033024,0.10606599 +0.2875,0.7625,0.10606603,0.053032994 +0.2875,0.76250005,0.094494045,0.094494045 +0.28750002,0.7625,0.06681743,0.1336348 +0.2875,0.7625,0.1336348,0.0668174 +0.2875,0.7625,0.11905508,0.11905503 +0.2875,0.7625,0.08418465,0.1683693 +0.2875,0.7625,0.1683693,0.08418465 +0.2875,0.7875,0.07499999,0.07499999 +0.28750002,0.78749996,0.053033024,0.10606599 +0.2875,0.7875,0.10606603,0.053032994 +0.2875,0.7875,0.094494045,0.094494045 +0.28750002,0.78749996,0.06681743,0.1336348 +0.2875,0.7875,0.1336348,0.0668174 +0.2875,0.78749996,0.11905508,0.11905503 +0.2875,0.7875,0.08418465,0.1683693 +0.2875,0.7875,0.1683693,0.08418465 +0.2875,0.8125,0.07499999,0.07500005 +0.28750002,0.8125,0.053033024,0.10606599 +0.2875,0.8125,0.10606603,0.053033054 +0.2875,0.8125,0.094494045,0.094494104 +0.28750002,0.8125,0.06681743,0.1336348 +0.2875,0.8125,0.1336348,0.06681746 +0.2875,0.8125,0.11905508,0.11905503 +0.2875,0.8125,0.08418465,0.1683693 +0.2875,0.8125,0.1683693,0.08418465 +0.2875,0.8375,0.07499999,0.07499999 +0.28750002,0.8375,0.053033024,0.10606599 +0.2875,0.8375,0.10606603,0.053033054 +0.2875,0.8375,0.094494045,0.094494045 +0.28750002,0.8375,0.06681743,0.1336348 +0.2875,0.8375,0.1336348,0.06681746 +0.2875,0.8375,0.11905508,0.11905503 +0.2875,0.8375,0.08418465,0.1683693 +0.2875,0.8375,0.1683693,0.08418465 +0.2875,0.86249995,0.07499999,0.07499999 +0.28750002,0.86249995,0.053033024,0.10606593 +0.2875,0.86249995,0.10606603,0.053033054 +0.2875,0.86249995,0.094494045,0.094494045 +0.28750002,0.86249995,0.06681743,0.1336348 +0.2875,0.86249995,0.1336348,0.06681746 +0.2875,0.86249995,0.11905508,0.11905497 +0.2875,0.8625,0.08418465,0.1683693 +0.2875,0.8625,0.1683693,0.08418465 +0.2875,0.88750005,0.07499999,0.07499999 +0.28750002,0.88750005,0.053033024,0.10606593 +0.2875,0.88750005,0.10606603,0.053033054 +0.2875,0.88750005,0.094494045,0.094494045 +0.28750002,0.88750005,0.06681743,0.13363475 +0.2875,0.88750005,0.1336348,0.06681746 +0.2875,0.88750005,0.11905508,0.11905497 +0.2875,0.8875,0.08418465,0.1683693 +0.2875,0.8875,0.1683693,0.08418465 +0.2875,0.9125,0.07499999,0.07499999 +0.28750002,0.9125,0.053033024,0.10606593 +0.2875,0.9125,0.10606603,0.053033054 +0.2875,0.9125,0.094494045,0.094494045 +0.28750002,0.9125,0.06681743,0.13363475 +0.2875,0.9125,0.1336348,0.06681746 +0.2875,0.9125,0.11905508,0.11905497 +0.2875,0.9125,0.08418465,0.1683693 +0.2875,0.9125,0.1683693,0.08418465 +0.2875,0.9375,0.07499999,0.07500005 +0.28750002,0.9375,0.053033024,0.10606599 +0.2875,0.9375,0.10606603,0.053033113 +0.2875,0.9375,0.094494045,0.094494104 +0.28750002,0.9375,0.06681743,0.1336348 +0.2875,0.9375,0.1336348,0.06681752 +0.2875,0.9375,0.11905508,0.11905503 +0.2875,0.9375,0.08418465,0.1683693 +0.2875,0.9375,0.1683693,0.08418465 +0.2875,0.9625,0.07499999,0.07499999 +0.28750002,0.9625,0.053033024,0.10606593 +0.2875,0.9625,0.10606603,0.053033054 +0.2875,0.9625,0.094494045,0.094494045 +0.28750002,0.9625,0.06681743,0.13363475 +0.2875,0.9625,0.1336348,0.06681746 +0.2875,0.9625,0.11905508,0.11905497 +0.2875,0.9625,0.08418465,0.1683693 +0.2875,0.9625,0.1683693,0.08418465 +0.2875,0.98749995,0.07499999,0.07499999 +0.28750002,0.98749995,0.053033024,0.10606593 +0.2875,0.98749995,0.10606603,0.053033054 +0.2875,0.98749995,0.094494045,0.094494045 +0.28750002,0.98749995,0.06681743,0.13363475 +0.2875,0.98749995,0.1336348,0.06681746 +0.2875,0.98749995,0.11905508,0.11905497 +0.2875,0.98749995,0.08418465,0.16836923 +0.2875,0.98749995,0.1683693,0.08418459 +0.3125,0.0125,0.07499999,0.075 +0.3125,0.012499997,0.053032994,0.10606602 +0.3125,0.012499999,0.10606605,0.05303301 +0.3125,0.012499999,0.094494045,0.09449408 +0.3125,0.012500001,0.0668174,0.1336348 +0.3125,0.012499999,0.1336348,0.0668174 +0.3125,0.012500001,0.11905509,0.11905508 +0.3125,0.012499999,0.08418465,0.1683693 +0.3125,0.012500002,0.1683693,0.084184654 +0.3125,0.0375,0.07499999,0.075 +0.3125,0.037499998,0.053032994,0.10606601 +0.3125,0.0375,0.10606605,0.05303301 +0.3125,0.0375,0.094494045,0.094494075 +0.3125,0.0375,0.0668174,0.1336348 +0.3125,0.0375,0.1336348,0.0668174 +0.3125,0.0375,0.11905509,0.11905508 +0.3125,0.0375,0.08418465,0.16836931 +0.3125,0.0375,0.1683693,0.08418466 +0.3125,0.0625,0.07499999,0.075 +0.3125,0.0625,0.053032994,0.10606602 +0.3125,0.0625,0.10606605,0.05303301 +0.3125,0.0625,0.094494045,0.094494075 +0.3125,0.0625,0.0668174,0.1336348 +0.3125,0.0625,0.1336348,0.0668174 +0.3125,0.0625,0.11905509,0.11905508 +0.3125,0.0625,0.08418465,0.16836932 +0.3125,0.0625,0.1683693,0.08418465 +0.3125,0.0875,0.07499999,0.075 +0.3125,0.08749999,0.053032994,0.10606601 +0.3125,0.087500006,0.10606605,0.053033013 +0.3125,0.087500006,0.094494045,0.09449408 +0.3125,0.087500006,0.0668174,0.1336348 +0.3125,0.0875,0.1336348,0.0668174 +0.3125,0.0875,0.11905509,0.11905508 +0.3125,0.0875,0.08418465,0.16836931 +0.3125,0.087500006,0.1683693,0.084184654 +0.3125,0.112500004,0.07499999,0.075 +0.3125,0.1125,0.053032994,0.10606601 +0.3125,0.112500004,0.10606605,0.05303301 +0.3125,0.1125,0.094494045,0.094494075 +0.3125,0.1125,0.0668174,0.1336348 +0.3125,0.1125,0.1336348,0.0668174 +0.3125,0.1125,0.11905509,0.119055085 +0.3125,0.112500004,0.08418465,0.16836931 +0.3125,0.1125,0.1683693,0.08418465 +0.3125,0.1375,0.07499999,0.074999996 +0.3125,0.1375,0.053032994,0.10606602 +0.3125,0.1375,0.10606605,0.053033024 +0.3125,0.1375,0.094494045,0.09449408 +0.3125,0.1375,0.0668174,0.1336348 +0.3125,0.1375,0.1336348,0.0668174 +0.3125,0.13749999,0.11905509,0.11905508 +0.3125,0.1375,0.08418465,0.1683693 +0.3125,0.1375,0.1683693,0.084184654 +0.3125,0.1625,0.07499999,0.075 +0.3125,0.16250001,0.053032994,0.106066026 +0.3125,0.1625,0.10606605,0.05303301 +0.3125,0.1625,0.094494045,0.094494075 +0.3125,0.1625,0.0668174,0.1336348 +0.3125,0.1625,0.1336348,0.0668174 +0.3125,0.1625,0.11905509,0.11905508 +0.3125,0.1625,0.08418465,0.1683693 +0.3125,0.1625,0.1683693,0.08418464 +0.3125,0.1875,0.07499999,0.07499999 +0.3125,0.1875,0.053032994,0.10606603 +0.3125,0.1875,0.10606605,0.053033024 +0.3125,0.1875,0.094494045,0.09449406 +0.3125,0.1875,0.0668174,0.1336348 +0.3125,0.1875,0.1336348,0.06681742 +0.3125,0.1875,0.11905509,0.11905509 +0.3125,0.1875,0.08418465,0.16836931 +0.3125,0.1875,0.1683693,0.08418465 +0.3125,0.2125,0.07499999,0.075 +0.3125,0.2125,0.053032994,0.10606603 +0.3125,0.2125,0.10606605,0.05303301 +0.3125,0.21249999,0.094494045,0.094494075 +0.3125,0.2125,0.0668174,0.1336348 +0.3125,0.2125,0.1336348,0.0668174 +0.3125,0.2125,0.11905509,0.11905509 +0.3125,0.2125,0.08418465,0.16836931 +0.3125,0.2125,0.1683693,0.08418465 +0.3125,0.23750001,0.07499999,0.075 +0.3125,0.2375,0.053032994,0.10606602 +0.3125,0.2375,0.10606605,0.053033024 +0.3125,0.2375,0.094494045,0.094494075 +0.3125,0.23750001,0.0668174,0.13363482 +0.3125,0.2375,0.1336348,0.06681743 +0.3125,0.2375,0.11905509,0.11905506 +0.3125,0.2375,0.08418465,0.16836932 +0.3125,0.23750001,0.1683693,0.08418466 +0.3125,0.2625,0.07499999,0.07500002 +0.3125,0.2625,0.053032994,0.10606603 +0.3125,0.2625,0.10606605,0.053033024 +0.3125,0.2625,0.094494045,0.094494075 +0.3125,0.2625,0.0668174,0.13363479 +0.3125,0.2625,0.1336348,0.06681743 +0.3125,0.2625,0.11905509,0.11905508 +0.3125,0.2625,0.08418465,0.1683693 +0.3125,0.2625,0.1683693,0.08418463 +0.3125,0.2875,0.07499999,0.07499999 +0.3125,0.2875,0.053032994,0.10606603 +0.3125,0.28750002,0.10606605,0.053033024 +0.3125,0.2875,0.094494045,0.094494045 +0.3125,0.2875,0.0668174,0.1336348 +0.3125,0.28750002,0.1336348,0.06681743 +0.3125,0.2875,0.11905509,0.11905508 +0.3125,0.2875,0.08418465,0.1683693 +0.3125,0.2875,0.1683693,0.08418465 +0.3125,0.3125,0.07499999,0.07499999 +0.3125,0.3125,0.053032994,0.10606605 +0.3125,0.3125,0.10606605,0.053032994 +0.3125,0.3125,0.094494045,0.094494045 +0.3125,0.3125,0.0668174,0.1336348 +0.3125,0.3125,0.1336348,0.0668174 +0.3125,0.3125,0.11905509,0.11905509 +0.3125,0.3125,0.08418465,0.1683693 +0.3125,0.3125,0.1683693,0.08418465 +0.3125,0.3375,0.07499999,0.07499999 +0.3125,0.3375,0.053032994,0.10606605 +0.3125,0.33749998,0.10606605,0.053033024 +0.3125,0.3375,0.094494045,0.094494045 +0.3125,0.33750004,0.0668174,0.13363484 +0.3125,0.33749998,0.1336348,0.06681743 +0.3125,0.3375,0.11905509,0.11905509 +0.3125,0.3375,0.08418465,0.1683693 +0.3125,0.3375,0.1683693,0.08418465 +0.3125,0.3625,0.07499999,0.07500002 +0.3125,0.3625,0.053032994,0.10606602 +0.3125,0.3625,0.10606605,0.053033024 +0.3125,0.3625,0.094494045,0.094494075 +0.3125,0.3625,0.0668174,0.1336348 +0.3125,0.3625,0.1336348,0.06681743 +0.3125,0.3625,0.11905509,0.11905506 +0.3125,0.3625,0.08418465,0.1683693 +0.3125,0.3625,0.1683693,0.08418465 +0.3125,0.3875,0.07499999,0.07500002 +0.3125,0.3875,0.053032994,0.10606602 +0.3125,0.3875,0.10606605,0.053032994 +0.3125,0.3875,0.094494045,0.094494075 +0.3125,0.3875,0.0668174,0.13363484 +0.3125,0.3875,0.1336348,0.0668174 +0.3125,0.3875,0.11905509,0.11905506 +0.3125,0.3875,0.08418465,0.1683693 +0.3125,0.3875,0.1683693,0.08418465 +0.3125,0.4125,0.07499999,0.07499999 +0.3125,0.4125,0.053032994,0.10606605 +0.3125,0.4125,0.10606605,0.053032994 +0.3125,0.4125,0.094494045,0.094494045 +0.3125,0.41250002,0.0668174,0.13363484 +0.3125,0.4125,0.1336348,0.0668174 +0.3125,0.4125,0.11905509,0.11905509 +0.3125,0.4125,0.08418465,0.1683693 +0.3125,0.4125,0.1683693,0.08418465 +0.3125,0.4375,0.07499999,0.07499999 +0.3125,0.4375,0.053032994,0.10606605 +0.3125,0.4375,0.10606605,0.053032994 +0.3125,0.4375,0.094494045,0.094494045 +0.3125,0.4375,0.0668174,0.1336348 +0.3125,0.4375,0.1336348,0.0668174 +0.3125,0.4375,0.11905509,0.11905509 +0.3125,0.4375,0.08418465,0.1683693 +0.3125,0.4375,0.1683693,0.08418465 +0.3125,0.4625,0.07499999,0.07499999 +0.3125,0.4625,0.053032994,0.10606605 +0.3125,0.46249998,0.10606605,0.053032964 +0.3125,0.4625,0.094494045,0.094494045 +0.3125,0.46250004,0.0668174,0.13363484 +0.3125,0.46249998,0.1336348,0.06681737 +0.3125,0.4625,0.11905509,0.11905509 +0.3125,0.46249998,0.08418465,0.16836926 +0.3125,0.46249998,0.1683693,0.08418462 +0.3125,0.48749998,0.07499999,0.07499999 +0.3125,0.4875,0.053032994,0.10606602 +0.3125,0.4875,0.10606605,0.053032994 +0.3125,0.48749998,0.094494045,0.094494045 +0.3125,0.4875,0.0668174,0.13363484 +0.3125,0.4875,0.1336348,0.0668174 +0.3125,0.4875,0.11905509,0.11905506 +0.3125,0.4875,0.08418465,0.1683693 +0.3125,0.4875,0.1683693,0.08418465 +0.3125,0.5125,0.07499999,0.07500002 +0.3125,0.51250005,0.053032994,0.10606605 +0.3125,0.5125,0.10606605,0.053032964 +0.3125,0.5125,0.094494045,0.094494075 +0.3125,0.51250005,0.0668174,0.13363487 +0.3125,0.5125,0.1336348,0.06681737 +0.3125,0.51250005,0.11905509,0.11905509 +0.3125,0.5125,0.08418465,0.1683693 +0.3125,0.5125,0.1683693,0.08418465 +0.3125,0.5375,0.07499999,0.07499999 +0.3125,0.5375,0.053032994,0.10606605 +0.3125,0.5375,0.10606605,0.053032935 +0.3125,0.5375,0.094494045,0.094494045 +0.3125,0.5375,0.0668174,0.13363487 +0.3125,0.5375,0.1336348,0.06681734 +0.3125,0.5375,0.11905509,0.11905509 +0.3125,0.5375,0.08418465,0.16836932 +0.3125,0.5375,0.1683693,0.08418468 +0.3125,0.5625,0.07499999,0.07500005 +0.3125,0.5625,0.053032994,0.10606599 +0.3125,0.5625,0.10606605,0.053032994 +0.3125,0.5625,0.094494045,0.094494104 +0.3125,0.5625,0.0668174,0.13363484 +0.3125,0.5625,0.1336348,0.0668174 +0.3125,0.5625,0.11905509,0.11905503 +0.3125,0.5625,0.08418465,0.1683693 +0.3125,0.5625,0.1683693,0.08418465 +0.3125,0.5875,0.07499999,0.07499999 +0.3125,0.5875,0.053032994,0.10606605 +0.3125,0.5875,0.10606605,0.053032935 +0.3125,0.5875,0.094494045,0.094494045 +0.3125,0.5875,0.0668174,0.13363487 +0.3125,0.5875,0.1336348,0.06681734 +0.3125,0.5875,0.11905509,0.11905509 +0.3125,0.5875,0.08418465,0.1683693 +0.3125,0.5875,0.1683693,0.08418465 +0.3125,0.61249995,0.07499999,0.07499999 +0.3125,0.61249995,0.053032994,0.10606605 +0.3125,0.6125,0.10606605,0.053032994 +0.3125,0.61249995,0.094494045,0.094494045 +0.3125,0.61249995,0.0668174,0.13363487 +0.3125,0.6125,0.1336348,0.0668174 +0.3125,0.61249995,0.11905509,0.11905509 +0.3125,0.6125,0.08418465,0.1683693 +0.3125,0.6125,0.1683693,0.08418465 +0.3125,0.63750005,0.07499999,0.07499999 +0.3125,0.63750005,0.053032994,0.10606605 +0.3125,0.6375,0.10606605,0.053032994 +0.3125,0.63750005,0.094494045,0.094494045 +0.3125,0.63750005,0.0668174,0.13363487 +0.3125,0.6375,0.1336348,0.0668174 +0.3125,0.63750005,0.11905509,0.11905509 +0.3125,0.6375,0.08418465,0.1683693 +0.3125,0.6375,0.1683693,0.08418465 +0.3125,0.6625,0.07499999,0.07499999 +0.3125,0.6625,0.053032994,0.10606605 +0.3125,0.6625,0.10606605,0.053032935 +0.3125,0.6625,0.094494045,0.094494045 +0.3125,0.6625,0.0668174,0.13363487 +0.3125,0.6625,0.1336348,0.06681734 +0.3125,0.6625,0.11905509,0.11905509 +0.3125,0.6625,0.08418465,0.1683693 +0.3125,0.6625,0.1683693,0.08418465 +0.3125,0.6875,0.07499999,0.07500005 +0.3125,0.6875,0.053032994,0.10606599 +0.3125,0.6875,0.10606605,0.053032994 +0.3125,0.6875,0.094494045,0.094494104 +0.3125,0.6875,0.0668174,0.1336348 +0.3125,0.6875,0.1336348,0.0668174 +0.3125,0.6875,0.11905509,0.11905503 +0.3125,0.6875,0.08418465,0.1683693 +0.3125,0.6875,0.1683693,0.08418465 +0.3125,0.7125,0.07499999,0.07499999 +0.3125,0.7125,0.053032994,0.10606605 +0.3125,0.7125,0.10606605,0.053032935 +0.3125,0.7125,0.094494045,0.094494045 +0.3125,0.7125,0.0668174,0.13363487 +0.3125,0.7125,0.1336348,0.06681734 +0.3125,0.7125,0.11905509,0.11905509 +0.3125,0.7125,0.08418465,0.1683693 +0.3125,0.7125,0.1683693,0.08418465 +0.3125,0.73749995,0.07499999,0.07499999 +0.3125,0.73749995,0.053032994,0.10606605 +0.3125,0.7375,0.10606605,0.053032994 +0.3125,0.73749995,0.094494045,0.094494045 +0.3125,0.73749995,0.0668174,0.1336348 +0.3125,0.7375,0.1336348,0.0668174 +0.3125,0.73749995,0.11905509,0.11905509 +0.3125,0.7375,0.08418465,0.1683693 +0.3125,0.7375,0.1683693,0.08418465 +0.3125,0.76250005,0.07499999,0.07499999 +0.3125,0.7625,0.053032994,0.10606599 +0.3125,0.7625,0.10606605,0.053032994 +0.3125,0.76250005,0.094494045,0.094494045 +0.3125,0.7625,0.0668174,0.1336348 +0.3125,0.7625,0.1336348,0.0668174 +0.3125,0.7625,0.11905509,0.11905503 +0.3125,0.7625,0.08418465,0.1683693 +0.3125,0.7625,0.1683693,0.08418465 +0.3125,0.7875,0.07499999,0.07499999 +0.3125,0.78749996,0.053032994,0.10606599 +0.3125,0.7875,0.10606605,0.053032994 +0.3125,0.7875,0.094494045,0.094494045 +0.3125,0.78749996,0.0668174,0.1336348 +0.3125,0.7875,0.1336348,0.0668174 +0.3125,0.78749996,0.11905509,0.11905503 +0.3125,0.7875,0.08418465,0.1683693 +0.3125,0.7875,0.1683693,0.08418465 +0.3125,0.8125,0.07499999,0.07500005 +0.3125,0.8125,0.053032994,0.10606599 +0.3125,0.8125,0.10606605,0.053033054 +0.3125,0.8125,0.094494045,0.094494104 +0.3125,0.8125,0.0668174,0.1336348 +0.3125,0.8125,0.1336348,0.06681746 +0.3125,0.8125,0.11905509,0.11905503 +0.3125,0.8125,0.08418465,0.1683693 +0.3125,0.8125,0.1683693,0.08418465 +0.3125,0.8375,0.07499999,0.07499999 +0.3125,0.8375,0.053032994,0.10606599 +0.3125,0.8375,0.10606605,0.053033054 +0.3125,0.8375,0.094494045,0.094494045 +0.3125,0.8375,0.0668174,0.1336348 +0.3125,0.8375,0.1336348,0.06681746 +0.3125,0.8375,0.11905509,0.11905503 +0.3125,0.8375,0.08418465,0.1683693 +0.3125,0.8375,0.1683693,0.08418465 +0.3125,0.86249995,0.07499999,0.07499999 +0.3125,0.86249995,0.053032994,0.10606593 +0.3125,0.86249995,0.10606605,0.053033054 +0.3125,0.86249995,0.094494045,0.094494045 +0.3125,0.86249995,0.0668174,0.1336348 +0.3125,0.86249995,0.1336348,0.06681746 +0.3125,0.86249995,0.11905509,0.11905497 +0.3125,0.8625,0.08418465,0.1683693 +0.3125,0.8625,0.1683693,0.08418465 +0.3125,0.88750005,0.07499999,0.07499999 +0.3125,0.88750005,0.053032994,0.10606593 +0.3125,0.88750005,0.10606605,0.053033054 +0.3125,0.88750005,0.094494045,0.094494045 +0.3125,0.88750005,0.0668174,0.13363475 +0.3125,0.88750005,0.1336348,0.06681746 +0.3125,0.88750005,0.11905509,0.11905497 +0.3125,0.8875,0.08418465,0.1683693 +0.3125,0.8875,0.1683693,0.08418465 +0.3125,0.9125,0.07499999,0.07499999 +0.3125,0.9125,0.053032994,0.10606593 +0.3125,0.9125,0.10606605,0.053033054 +0.3125,0.9125,0.094494045,0.094494045 +0.3125,0.9125,0.0668174,0.13363475 +0.3125,0.9125,0.1336348,0.06681746 +0.3125,0.9125,0.11905509,0.11905497 +0.3125,0.9125,0.08418465,0.1683693 +0.3125,0.9125,0.1683693,0.08418465 +0.3125,0.9375,0.07499999,0.07500005 +0.3125,0.9375,0.053032994,0.10606599 +0.3125,0.9375,0.10606605,0.053033113 +0.3125,0.9375,0.094494045,0.094494104 +0.3125,0.9375,0.0668174,0.1336348 +0.3125,0.9375,0.1336348,0.06681752 +0.3125,0.9375,0.11905509,0.11905503 +0.3125,0.9375,0.08418465,0.1683693 +0.3125,0.9375,0.1683693,0.08418465 +0.3125,0.9625,0.07499999,0.07499999 +0.3125,0.9625,0.053032994,0.10606593 +0.3125,0.9625,0.10606605,0.053033054 +0.3125,0.9625,0.094494045,0.094494045 +0.3125,0.9625,0.0668174,0.13363475 +0.3125,0.9625,0.1336348,0.06681746 +0.3125,0.9625,0.11905509,0.11905497 +0.3125,0.9625,0.08418465,0.1683693 +0.3125,0.9625,0.1683693,0.08418465 +0.3125,0.98749995,0.07499999,0.07499999 +0.3125,0.98749995,0.053032994,0.10606593 +0.3125,0.98749995,0.10606605,0.053033054 +0.3125,0.98749995,0.094494045,0.094494045 +0.3125,0.98749995,0.0668174,0.13363475 +0.3125,0.98749995,0.1336348,0.06681746 +0.3125,0.98749995,0.11905509,0.11905497 +0.3125,0.98749995,0.08418465,0.16836923 +0.3125,0.98749995,0.1683693,0.08418459 +0.3375,0.0125,0.07499999,0.075 +0.33749998,0.012499997,0.053033024,0.10606602 +0.3375,0.012499999,0.10606605,0.05303301 +0.3375,0.012499999,0.094494045,0.09449408 +0.33749998,0.012500001,0.06681743,0.1336348 +0.33750004,0.012499999,0.13363484,0.0668174 +0.3375,0.012500001,0.11905509,0.11905508 +0.3375,0.012499999,0.08418465,0.1683693 +0.3375,0.012500002,0.1683693,0.084184654 +0.3375,0.0375,0.07499999,0.075 +0.33749998,0.037499998,0.053033024,0.10606601 +0.3375,0.0375,0.10606605,0.05303301 +0.3375,0.0375,0.094494045,0.094494075 +0.33749998,0.0375,0.06681743,0.1336348 +0.33750004,0.0375,0.13363484,0.0668174 +0.3375,0.0375,0.11905509,0.11905508 +0.3375,0.0375,0.08418465,0.16836931 +0.3375,0.0375,0.1683693,0.08418466 +0.3375,0.0625,0.07499999,0.075 +0.33749998,0.0625,0.053033024,0.10606602 +0.3375,0.0625,0.10606605,0.05303301 +0.3375,0.0625,0.094494045,0.094494075 +0.33749998,0.0625,0.06681743,0.1336348 +0.33750004,0.0625,0.13363484,0.0668174 +0.3375,0.0625,0.11905509,0.11905508 +0.3375,0.0625,0.08418465,0.16836932 +0.3375,0.0625,0.1683693,0.08418465 +0.3375,0.0875,0.07499999,0.075 +0.33749998,0.08749999,0.053033024,0.10606601 +0.3375,0.087500006,0.10606605,0.053033013 +0.3375,0.087500006,0.094494045,0.09449408 +0.33749998,0.087500006,0.06681743,0.1336348 +0.33750004,0.0875,0.13363484,0.0668174 +0.3375,0.0875,0.11905509,0.11905508 +0.3375,0.0875,0.08418465,0.16836931 +0.3375,0.087500006,0.1683693,0.084184654 +0.3375,0.112500004,0.07499999,0.075 +0.33749998,0.1125,0.053033024,0.10606601 +0.3375,0.112500004,0.10606605,0.05303301 +0.3375,0.1125,0.094494045,0.094494075 +0.33749998,0.1125,0.06681743,0.1336348 +0.33750004,0.1125,0.13363484,0.0668174 +0.3375,0.1125,0.11905509,0.119055085 +0.3375,0.112500004,0.08418465,0.16836931 +0.3375,0.1125,0.1683693,0.08418465 +0.3375,0.1375,0.07499999,0.074999996 +0.33749998,0.1375,0.053033024,0.10606602 +0.3375,0.1375,0.10606605,0.053033024 +0.3375,0.1375,0.094494045,0.09449408 +0.33749998,0.1375,0.06681743,0.1336348 +0.33750004,0.1375,0.13363484,0.0668174 +0.3375,0.13749999,0.11905509,0.11905508 +0.3375,0.1375,0.08418465,0.1683693 +0.3375,0.1375,0.1683693,0.084184654 +0.3375,0.1625,0.07499999,0.075 +0.33749998,0.16250001,0.053033024,0.106066026 +0.3375,0.1625,0.10606605,0.05303301 +0.3375,0.1625,0.094494045,0.094494075 +0.33749998,0.1625,0.06681743,0.1336348 +0.33750004,0.1625,0.13363484,0.0668174 +0.3375,0.1625,0.11905509,0.11905508 +0.3375,0.1625,0.08418465,0.1683693 +0.3375,0.1625,0.1683693,0.08418464 +0.3375,0.1875,0.07499999,0.07499999 +0.33749998,0.1875,0.053033024,0.10606603 +0.3375,0.1875,0.10606605,0.053033024 +0.3375,0.1875,0.094494045,0.09449406 +0.33749998,0.1875,0.06681743,0.1336348 +0.33750004,0.1875,0.13363484,0.06681742 +0.3375,0.1875,0.11905509,0.11905509 +0.3375,0.1875,0.08418465,0.16836931 +0.3375,0.1875,0.1683693,0.08418465 +0.3375,0.2125,0.07499999,0.075 +0.33749998,0.2125,0.053033024,0.10606603 +0.3375,0.2125,0.10606605,0.05303301 +0.3375,0.21249999,0.094494045,0.094494075 +0.33749998,0.2125,0.06681743,0.1336348 +0.33750004,0.2125,0.13363484,0.0668174 +0.3375,0.2125,0.11905509,0.11905509 +0.3375,0.2125,0.08418465,0.16836931 +0.3375,0.2125,0.1683693,0.08418465 +0.3375,0.23750001,0.07499999,0.075 +0.33749998,0.2375,0.053033024,0.10606602 +0.3375,0.2375,0.10606605,0.053033024 +0.3375,0.2375,0.094494045,0.094494075 +0.33749998,0.23750001,0.06681743,0.13363482 +0.33750004,0.2375,0.13363484,0.06681743 +0.3375,0.2375,0.11905509,0.11905506 +0.3375,0.2375,0.08418465,0.16836932 +0.3375,0.23750001,0.1683693,0.08418466 +0.3375,0.2625,0.07499999,0.07500002 +0.33749998,0.2625,0.053033024,0.10606603 +0.3375,0.2625,0.10606605,0.053033024 +0.3375,0.2625,0.094494045,0.094494075 +0.33749998,0.2625,0.06681743,0.13363479 +0.33750004,0.2625,0.13363484,0.06681743 +0.3375,0.2625,0.11905509,0.11905508 +0.3375,0.2625,0.08418465,0.1683693 +0.3375,0.2625,0.1683693,0.08418463 +0.3375,0.2875,0.07499999,0.07499999 +0.33749998,0.2875,0.053033024,0.10606603 +0.3375,0.28750002,0.10606605,0.053033024 +0.3375,0.2875,0.094494045,0.094494045 +0.33749998,0.2875,0.06681743,0.1336348 +0.33750004,0.28750002,0.13363484,0.06681743 +0.3375,0.2875,0.11905509,0.11905508 +0.3375,0.2875,0.08418465,0.1683693 +0.3375,0.2875,0.1683693,0.08418465 +0.3375,0.3125,0.07499999,0.07499999 +0.33749998,0.3125,0.053033024,0.10606605 +0.3375,0.3125,0.10606605,0.053032994 +0.3375,0.3125,0.094494045,0.094494045 +0.33749998,0.3125,0.06681743,0.1336348 +0.33750004,0.3125,0.13363484,0.0668174 +0.3375,0.3125,0.11905509,0.11905509 +0.3375,0.3125,0.08418465,0.1683693 +0.3375,0.3125,0.1683693,0.08418465 +0.3375,0.3375,0.07499999,0.07499999 +0.33749998,0.3375,0.053033024,0.10606605 +0.3375,0.33749998,0.10606605,0.053033024 +0.3375,0.3375,0.094494045,0.094494045 +0.33749998,0.33750004,0.06681743,0.13363484 +0.33750004,0.33749998,0.13363484,0.06681743 +0.3375,0.3375,0.11905509,0.11905509 +0.3375,0.3375,0.08418465,0.1683693 +0.3375,0.3375,0.1683693,0.08418465 +0.3375,0.3625,0.07499999,0.07500002 +0.33749998,0.3625,0.053033024,0.10606602 +0.3375,0.3625,0.10606605,0.053033024 +0.3375,0.3625,0.094494045,0.094494075 +0.33749998,0.3625,0.06681743,0.1336348 +0.33750004,0.3625,0.13363484,0.06681743 +0.3375,0.3625,0.11905509,0.11905506 +0.3375,0.3625,0.08418465,0.1683693 +0.3375,0.3625,0.1683693,0.08418465 +0.3375,0.3875,0.07499999,0.07500002 +0.33749998,0.3875,0.053033024,0.10606602 +0.3375,0.3875,0.10606605,0.053032994 +0.3375,0.3875,0.094494045,0.094494075 +0.33749998,0.3875,0.06681743,0.13363484 +0.33750004,0.3875,0.13363484,0.0668174 +0.3375,0.3875,0.11905509,0.11905506 +0.3375,0.3875,0.08418465,0.1683693 +0.3375,0.3875,0.1683693,0.08418465 +0.3375,0.4125,0.07499999,0.07499999 +0.33749998,0.4125,0.053033024,0.10606605 +0.3375,0.4125,0.10606605,0.053032994 +0.3375,0.4125,0.094494045,0.094494045 +0.33749998,0.41250002,0.06681743,0.13363484 +0.33750004,0.4125,0.13363484,0.0668174 +0.3375,0.4125,0.11905509,0.11905509 +0.3375,0.4125,0.08418465,0.1683693 +0.3375,0.4125,0.1683693,0.08418465 +0.3375,0.4375,0.07499999,0.07499999 +0.33749998,0.4375,0.053033024,0.10606605 +0.3375,0.4375,0.10606605,0.053032994 +0.3375,0.4375,0.094494045,0.094494045 +0.33749998,0.4375,0.06681743,0.1336348 +0.33750004,0.4375,0.13363484,0.0668174 +0.3375,0.4375,0.11905509,0.11905509 +0.3375,0.4375,0.08418465,0.1683693 +0.3375,0.4375,0.1683693,0.08418465 +0.3375,0.4625,0.07499999,0.07499999 +0.33749998,0.4625,0.053033024,0.10606605 +0.3375,0.46249998,0.10606605,0.053032964 +0.3375,0.4625,0.094494045,0.094494045 +0.33749998,0.46250004,0.06681743,0.13363484 +0.33750004,0.46249998,0.13363484,0.06681737 +0.3375,0.4625,0.11905509,0.11905509 +0.3375,0.46249998,0.08418465,0.16836926 +0.3375,0.46249998,0.1683693,0.08418462 +0.3375,0.48749998,0.07499999,0.07499999 +0.33749998,0.4875,0.053033024,0.10606602 +0.3375,0.4875,0.10606605,0.053032994 +0.3375,0.48749998,0.094494045,0.094494045 +0.33749998,0.4875,0.06681743,0.13363484 +0.33750004,0.4875,0.13363484,0.0668174 +0.3375,0.4875,0.11905509,0.11905506 +0.3375,0.4875,0.08418465,0.1683693 +0.3375,0.4875,0.1683693,0.08418465 +0.3375,0.5125,0.07499999,0.07500002 +0.33749998,0.51250005,0.053033024,0.10606605 +0.3375,0.5125,0.10606605,0.053032964 +0.3375,0.5125,0.094494045,0.094494075 +0.33749998,0.51250005,0.06681743,0.13363487 +0.33750004,0.5125,0.13363484,0.06681737 +0.3375,0.51250005,0.11905509,0.11905509 +0.3375,0.5125,0.08418465,0.1683693 +0.3375,0.5125,0.1683693,0.08418465 +0.3375,0.5375,0.07499999,0.07499999 +0.33749998,0.5375,0.053033024,0.10606605 +0.3375,0.5375,0.10606605,0.053032935 +0.3375,0.5375,0.094494045,0.094494045 +0.33749998,0.5375,0.06681743,0.13363487 +0.33750004,0.5375,0.13363484,0.06681734 +0.3375,0.5375,0.11905509,0.11905509 +0.3375,0.5375,0.08418465,0.16836932 +0.3375,0.5375,0.1683693,0.08418468 +0.3375,0.5625,0.07499999,0.07500005 +0.33749998,0.5625,0.053033024,0.10606599 +0.3375,0.5625,0.10606605,0.053032994 +0.3375,0.5625,0.094494045,0.094494104 +0.33749998,0.5625,0.06681743,0.13363484 +0.33750004,0.5625,0.13363484,0.0668174 +0.3375,0.5625,0.11905509,0.11905503 +0.3375,0.5625,0.08418465,0.1683693 +0.3375,0.5625,0.1683693,0.08418465 +0.3375,0.5875,0.07499999,0.07499999 +0.33749998,0.5875,0.053033024,0.10606605 +0.3375,0.5875,0.10606605,0.053032935 +0.3375,0.5875,0.094494045,0.094494045 +0.33749998,0.5875,0.06681743,0.13363487 +0.33750004,0.5875,0.13363484,0.06681734 +0.3375,0.5875,0.11905509,0.11905509 +0.3375,0.5875,0.08418465,0.1683693 +0.3375,0.5875,0.1683693,0.08418465 +0.3375,0.61249995,0.07499999,0.07499999 +0.33749998,0.61249995,0.053033024,0.10606605 +0.3375,0.6125,0.10606605,0.053032994 +0.3375,0.61249995,0.094494045,0.094494045 +0.33749998,0.61249995,0.06681743,0.13363487 +0.33750004,0.6125,0.13363484,0.0668174 +0.3375,0.61249995,0.11905509,0.11905509 +0.3375,0.6125,0.08418465,0.1683693 +0.3375,0.6125,0.1683693,0.08418465 +0.3375,0.63750005,0.07499999,0.07499999 +0.33749998,0.63750005,0.053033024,0.10606605 +0.3375,0.6375,0.10606605,0.053032994 +0.3375,0.63750005,0.094494045,0.094494045 +0.33749998,0.63750005,0.06681743,0.13363487 +0.33750004,0.6375,0.13363484,0.0668174 +0.3375,0.63750005,0.11905509,0.11905509 +0.3375,0.6375,0.08418465,0.1683693 +0.3375,0.6375,0.1683693,0.08418465 +0.3375,0.6625,0.07499999,0.07499999 +0.33749998,0.6625,0.053033024,0.10606605 +0.3375,0.6625,0.10606605,0.053032935 +0.3375,0.6625,0.094494045,0.094494045 +0.33749998,0.6625,0.06681743,0.13363487 +0.33750004,0.6625,0.13363484,0.06681734 +0.3375,0.6625,0.11905509,0.11905509 +0.3375,0.6625,0.08418465,0.1683693 +0.3375,0.6625,0.1683693,0.08418465 +0.3375,0.6875,0.07499999,0.07500005 +0.33749998,0.6875,0.053033024,0.10606599 +0.3375,0.6875,0.10606605,0.053032994 +0.3375,0.6875,0.094494045,0.094494104 +0.33749998,0.6875,0.06681743,0.1336348 +0.33750004,0.6875,0.13363484,0.0668174 +0.3375,0.6875,0.11905509,0.11905503 +0.3375,0.6875,0.08418465,0.1683693 +0.3375,0.6875,0.1683693,0.08418465 +0.3375,0.7125,0.07499999,0.07499999 +0.33749998,0.7125,0.053033024,0.10606605 +0.3375,0.7125,0.10606605,0.053032935 +0.3375,0.7125,0.094494045,0.094494045 +0.33749998,0.7125,0.06681743,0.13363487 +0.33750004,0.7125,0.13363484,0.06681734 +0.3375,0.7125,0.11905509,0.11905509 +0.3375,0.7125,0.08418465,0.1683693 +0.3375,0.7125,0.1683693,0.08418465 +0.3375,0.73749995,0.07499999,0.07499999 +0.33749998,0.73749995,0.053033024,0.10606605 +0.3375,0.7375,0.10606605,0.053032994 +0.3375,0.73749995,0.094494045,0.094494045 +0.33749998,0.73749995,0.06681743,0.1336348 +0.33750004,0.7375,0.13363484,0.0668174 +0.3375,0.73749995,0.11905509,0.11905509 +0.3375,0.7375,0.08418465,0.1683693 +0.3375,0.7375,0.1683693,0.08418465 +0.3375,0.76250005,0.07499999,0.07499999 +0.33749998,0.7625,0.053033024,0.10606599 +0.3375,0.7625,0.10606605,0.053032994 +0.3375,0.76250005,0.094494045,0.094494045 +0.33749998,0.7625,0.06681743,0.1336348 +0.33750004,0.7625,0.13363484,0.0668174 +0.3375,0.7625,0.11905509,0.11905503 +0.3375,0.7625,0.08418465,0.1683693 +0.3375,0.7625,0.1683693,0.08418465 +0.3375,0.7875,0.07499999,0.07499999 +0.33749998,0.78749996,0.053033024,0.10606599 +0.3375,0.7875,0.10606605,0.053032994 +0.3375,0.7875,0.094494045,0.094494045 +0.33749998,0.78749996,0.06681743,0.1336348 +0.33750004,0.7875,0.13363484,0.0668174 +0.3375,0.78749996,0.11905509,0.11905503 +0.3375,0.7875,0.08418465,0.1683693 +0.3375,0.7875,0.1683693,0.08418465 +0.3375,0.8125,0.07499999,0.07500005 +0.33749998,0.8125,0.053033024,0.10606599 +0.3375,0.8125,0.10606605,0.053033054 +0.3375,0.8125,0.094494045,0.094494104 +0.33749998,0.8125,0.06681743,0.1336348 +0.33750004,0.8125,0.13363484,0.06681746 +0.3375,0.8125,0.11905509,0.11905503 +0.3375,0.8125,0.08418465,0.1683693 +0.3375,0.8125,0.1683693,0.08418465 +0.3375,0.8375,0.07499999,0.07499999 +0.33749998,0.8375,0.053033024,0.10606599 +0.3375,0.8375,0.10606605,0.053033054 +0.3375,0.8375,0.094494045,0.094494045 +0.33749998,0.8375,0.06681743,0.1336348 +0.33750004,0.8375,0.13363484,0.06681746 +0.3375,0.8375,0.11905509,0.11905503 +0.3375,0.8375,0.08418465,0.1683693 +0.3375,0.8375,0.1683693,0.08418465 +0.3375,0.86249995,0.07499999,0.07499999 +0.33749998,0.86249995,0.053033024,0.10606593 +0.3375,0.86249995,0.10606605,0.053033054 +0.3375,0.86249995,0.094494045,0.094494045 +0.33749998,0.86249995,0.06681743,0.1336348 +0.33750004,0.86249995,0.13363484,0.06681746 +0.3375,0.86249995,0.11905509,0.11905497 +0.3375,0.8625,0.08418465,0.1683693 +0.3375,0.8625,0.1683693,0.08418465 +0.3375,0.88750005,0.07499999,0.07499999 +0.33749998,0.88750005,0.053033024,0.10606593 +0.3375,0.88750005,0.10606605,0.053033054 +0.3375,0.88750005,0.094494045,0.094494045 +0.33749998,0.88750005,0.06681743,0.13363475 +0.33750004,0.88750005,0.13363484,0.06681746 +0.3375,0.88750005,0.11905509,0.11905497 +0.3375,0.8875,0.08418465,0.1683693 +0.3375,0.8875,0.1683693,0.08418465 +0.3375,0.9125,0.07499999,0.07499999 +0.33749998,0.9125,0.053033024,0.10606593 +0.3375,0.9125,0.10606605,0.053033054 +0.3375,0.9125,0.094494045,0.094494045 +0.33749998,0.9125,0.06681743,0.13363475 +0.33750004,0.9125,0.13363484,0.06681746 +0.3375,0.9125,0.11905509,0.11905497 +0.3375,0.9125,0.08418465,0.1683693 +0.3375,0.9125,0.1683693,0.08418465 +0.3375,0.9375,0.07499999,0.07500005 +0.33749998,0.9375,0.053033024,0.10606599 +0.3375,0.9375,0.10606605,0.053033113 +0.3375,0.9375,0.094494045,0.094494104 +0.33749998,0.9375,0.06681743,0.1336348 +0.33750004,0.9375,0.13363484,0.06681752 +0.3375,0.9375,0.11905509,0.11905503 +0.3375,0.9375,0.08418465,0.1683693 +0.3375,0.9375,0.1683693,0.08418465 +0.3375,0.9625,0.07499999,0.07499999 +0.33749998,0.9625,0.053033024,0.10606593 +0.3375,0.9625,0.10606605,0.053033054 +0.3375,0.9625,0.094494045,0.094494045 +0.33749998,0.9625,0.06681743,0.13363475 +0.33750004,0.9625,0.13363484,0.06681746 +0.3375,0.9625,0.11905509,0.11905497 +0.3375,0.9625,0.08418465,0.1683693 +0.3375,0.9625,0.1683693,0.08418465 +0.3375,0.98749995,0.07499999,0.07499999 +0.33749998,0.98749995,0.053033024,0.10606593 +0.3375,0.98749995,0.10606605,0.053033054 +0.3375,0.98749995,0.094494045,0.094494045 +0.33749998,0.98749995,0.06681743,0.13363475 +0.33750004,0.98749995,0.13363484,0.06681746 +0.3375,0.98749995,0.11905509,0.11905497 +0.3375,0.98749995,0.08418465,0.16836923 +0.3375,0.98749995,0.1683693,0.08418459 +0.3625,0.0125,0.07500002,0.075 +0.3625,0.012499997,0.053033024,0.10606602 +0.3625,0.012499999,0.10606602,0.05303301 +0.3625,0.012499999,0.094494075,0.09449408 +0.3625,0.012500001,0.06681743,0.1336348 +0.3625,0.012499999,0.1336348,0.0668174 +0.3625,0.012500001,0.11905506,0.11905508 +0.3625,0.012499999,0.08418465,0.1683693 +0.3625,0.012500002,0.1683693,0.084184654 +0.3625,0.0375,0.07500002,0.075 +0.3625,0.037499998,0.053033024,0.10606601 +0.3625,0.0375,0.10606602,0.05303301 +0.3625,0.0375,0.094494075,0.094494075 +0.3625,0.0375,0.06681743,0.1336348 +0.3625,0.0375,0.1336348,0.0668174 +0.3625,0.0375,0.11905506,0.11905508 +0.3625,0.0375,0.08418465,0.16836931 +0.3625,0.0375,0.1683693,0.08418466 +0.3625,0.0625,0.07500002,0.075 +0.3625,0.0625,0.053033024,0.10606602 +0.3625,0.0625,0.10606602,0.05303301 +0.3625,0.0625,0.094494075,0.094494075 +0.3625,0.0625,0.06681743,0.1336348 +0.3625,0.0625,0.1336348,0.0668174 +0.3625,0.0625,0.11905506,0.11905508 +0.3625,0.0625,0.08418465,0.16836932 +0.3625,0.0625,0.1683693,0.08418465 +0.3625,0.0875,0.07500002,0.075 +0.3625,0.08749999,0.053033024,0.10606601 +0.3625,0.087500006,0.10606602,0.053033013 +0.3625,0.087500006,0.094494075,0.09449408 +0.3625,0.087500006,0.06681743,0.1336348 +0.3625,0.0875,0.1336348,0.0668174 +0.3625,0.0875,0.11905506,0.11905508 +0.3625,0.0875,0.08418465,0.16836931 +0.3625,0.087500006,0.1683693,0.084184654 +0.3625,0.112500004,0.07500002,0.075 +0.3625,0.1125,0.053033024,0.10606601 +0.3625,0.112500004,0.10606602,0.05303301 +0.3625,0.1125,0.094494075,0.094494075 +0.3625,0.1125,0.06681743,0.1336348 +0.3625,0.1125,0.1336348,0.0668174 +0.3625,0.1125,0.11905506,0.119055085 +0.3625,0.112500004,0.08418465,0.16836931 +0.3625,0.1125,0.1683693,0.08418465 +0.3625,0.1375,0.07500002,0.074999996 +0.3625,0.1375,0.053033024,0.10606602 +0.3625,0.1375,0.10606602,0.053033024 +0.3625,0.1375,0.094494075,0.09449408 +0.3625,0.1375,0.06681743,0.1336348 +0.3625,0.1375,0.1336348,0.0668174 +0.3625,0.13749999,0.11905506,0.11905508 +0.3625,0.1375,0.08418465,0.1683693 +0.3625,0.1375,0.1683693,0.084184654 +0.3625,0.1625,0.07500002,0.075 +0.3625,0.16250001,0.053033024,0.106066026 +0.3625,0.1625,0.10606602,0.05303301 +0.3625,0.1625,0.094494075,0.094494075 +0.3625,0.1625,0.06681743,0.1336348 +0.3625,0.1625,0.1336348,0.0668174 +0.3625,0.1625,0.11905506,0.11905508 +0.3625,0.1625,0.08418465,0.1683693 +0.3625,0.1625,0.1683693,0.08418464 +0.3625,0.1875,0.07500002,0.07499999 +0.3625,0.1875,0.053033024,0.10606603 +0.3625,0.1875,0.10606602,0.053033024 +0.3625,0.1875,0.094494075,0.09449406 +0.3625,0.1875,0.06681743,0.1336348 +0.3625,0.1875,0.1336348,0.06681742 +0.3625,0.1875,0.11905506,0.11905509 +0.3625,0.1875,0.08418465,0.16836931 +0.3625,0.1875,0.1683693,0.08418465 +0.3625,0.2125,0.07500002,0.075 +0.3625,0.2125,0.053033024,0.10606603 +0.3625,0.2125,0.10606602,0.05303301 +0.3625,0.21249999,0.094494075,0.094494075 +0.3625,0.2125,0.06681743,0.1336348 +0.3625,0.2125,0.1336348,0.0668174 +0.3625,0.2125,0.11905506,0.11905509 +0.3625,0.2125,0.08418465,0.16836931 +0.3625,0.2125,0.1683693,0.08418465 +0.3625,0.23750001,0.07500002,0.075 +0.3625,0.2375,0.053033024,0.10606602 +0.3625,0.2375,0.10606602,0.053033024 +0.3625,0.2375,0.094494075,0.094494075 +0.3625,0.23750001,0.06681743,0.13363482 +0.3625,0.2375,0.1336348,0.06681743 +0.3625,0.2375,0.11905506,0.11905506 +0.3625,0.2375,0.08418465,0.16836932 +0.3625,0.23750001,0.1683693,0.08418466 +0.3625,0.2625,0.07500002,0.07500002 +0.3625,0.2625,0.053033024,0.10606603 +0.3625,0.2625,0.10606602,0.053033024 +0.3625,0.2625,0.094494075,0.094494075 +0.3625,0.2625,0.06681743,0.13363479 +0.3625,0.2625,0.1336348,0.06681743 +0.3625,0.2625,0.11905506,0.11905508 +0.3625,0.2625,0.08418465,0.1683693 +0.3625,0.2625,0.1683693,0.08418463 +0.3625,0.2875,0.07500002,0.07499999 +0.3625,0.2875,0.053033024,0.10606603 +0.3625,0.28750002,0.10606602,0.053033024 +0.3625,0.2875,0.094494075,0.094494045 +0.3625,0.2875,0.06681743,0.1336348 +0.3625,0.28750002,0.1336348,0.06681743 +0.3625,0.2875,0.11905506,0.11905508 +0.3625,0.2875,0.08418465,0.1683693 +0.3625,0.2875,0.1683693,0.08418465 +0.3625,0.3125,0.07500002,0.07499999 +0.3625,0.3125,0.053033024,0.10606605 +0.3625,0.3125,0.10606602,0.053032994 +0.3625,0.3125,0.094494075,0.094494045 +0.3625,0.3125,0.06681743,0.1336348 +0.3625,0.3125,0.1336348,0.0668174 +0.3625,0.3125,0.11905506,0.11905509 +0.3625,0.3125,0.08418465,0.1683693 +0.3625,0.3125,0.1683693,0.08418465 +0.3625,0.3375,0.07500002,0.07499999 +0.3625,0.3375,0.053033024,0.10606605 +0.3625,0.33749998,0.10606602,0.053033024 +0.3625,0.3375,0.094494075,0.094494045 +0.3625,0.33750004,0.06681743,0.13363484 +0.3625,0.33749998,0.1336348,0.06681743 +0.3625,0.3375,0.11905506,0.11905509 +0.3625,0.3375,0.08418465,0.1683693 +0.3625,0.3375,0.1683693,0.08418465 +0.3625,0.3625,0.07500002,0.07500002 +0.3625,0.3625,0.053033024,0.10606602 +0.3625,0.3625,0.10606602,0.053033024 +0.3625,0.3625,0.094494075,0.094494075 +0.3625,0.3625,0.06681743,0.1336348 +0.3625,0.3625,0.1336348,0.06681743 +0.3625,0.3625,0.11905506,0.11905506 +0.3625,0.3625,0.08418465,0.1683693 +0.3625,0.3625,0.1683693,0.08418465 +0.3625,0.3875,0.07500002,0.07500002 +0.3625,0.3875,0.053033024,0.10606602 +0.3625,0.3875,0.10606602,0.053032994 +0.3625,0.3875,0.094494075,0.094494075 +0.3625,0.3875,0.06681743,0.13363484 +0.3625,0.3875,0.1336348,0.0668174 +0.3625,0.3875,0.11905506,0.11905506 +0.3625,0.3875,0.08418465,0.1683693 +0.3625,0.3875,0.1683693,0.08418465 +0.3625,0.4125,0.07500002,0.07499999 +0.3625,0.4125,0.053033024,0.10606605 +0.3625,0.4125,0.10606602,0.053032994 +0.3625,0.4125,0.094494075,0.094494045 +0.3625,0.41250002,0.06681743,0.13363484 +0.3625,0.4125,0.1336348,0.0668174 +0.3625,0.4125,0.11905506,0.11905509 +0.3625,0.4125,0.08418465,0.1683693 +0.3625,0.4125,0.1683693,0.08418465 +0.3625,0.4375,0.07500002,0.07499999 +0.3625,0.4375,0.053033024,0.10606605 +0.3625,0.4375,0.10606602,0.053032994 +0.3625,0.4375,0.094494075,0.094494045 +0.3625,0.4375,0.06681743,0.1336348 +0.3625,0.4375,0.1336348,0.0668174 +0.3625,0.4375,0.11905506,0.11905509 +0.3625,0.4375,0.08418465,0.1683693 +0.3625,0.4375,0.1683693,0.08418465 +0.3625,0.4625,0.07500002,0.07499999 +0.3625,0.4625,0.053033024,0.10606605 +0.3625,0.46249998,0.10606602,0.053032964 +0.3625,0.4625,0.094494075,0.094494045 +0.3625,0.46250004,0.06681743,0.13363484 +0.3625,0.46249998,0.1336348,0.06681737 +0.3625,0.4625,0.11905506,0.11905509 +0.3625,0.46249998,0.08418465,0.16836926 +0.3625,0.46249998,0.1683693,0.08418462 +0.3625,0.48749998,0.07500002,0.07499999 +0.3625,0.4875,0.053033024,0.10606602 +0.3625,0.4875,0.10606602,0.053032994 +0.3625,0.48749998,0.094494075,0.094494045 +0.3625,0.4875,0.06681743,0.13363484 +0.3625,0.4875,0.1336348,0.0668174 +0.3625,0.4875,0.11905506,0.11905506 +0.3625,0.4875,0.08418465,0.1683693 +0.3625,0.4875,0.1683693,0.08418465 +0.3625,0.5125,0.07500002,0.07500002 +0.3625,0.51250005,0.053033024,0.10606605 +0.3625,0.5125,0.10606602,0.053032964 +0.3625,0.5125,0.094494075,0.094494075 +0.3625,0.51250005,0.06681743,0.13363487 +0.3625,0.5125,0.1336348,0.06681737 +0.3625,0.51250005,0.11905506,0.11905509 +0.3625,0.5125,0.08418465,0.1683693 +0.3625,0.5125,0.1683693,0.08418465 +0.3625,0.5375,0.07500002,0.07499999 +0.3625,0.5375,0.053033024,0.10606605 +0.3625,0.5375,0.10606602,0.053032935 +0.3625,0.5375,0.094494075,0.094494045 +0.3625,0.5375,0.06681743,0.13363487 +0.3625,0.5375,0.1336348,0.06681734 +0.3625,0.5375,0.11905506,0.11905509 +0.3625,0.5375,0.08418465,0.16836932 +0.3625,0.5375,0.1683693,0.08418468 +0.3625,0.5625,0.07500002,0.07500005 +0.3625,0.5625,0.053033024,0.10606599 +0.3625,0.5625,0.10606602,0.053032994 +0.3625,0.5625,0.094494075,0.094494104 +0.3625,0.5625,0.06681743,0.13363484 +0.3625,0.5625,0.1336348,0.0668174 +0.3625,0.5625,0.11905506,0.11905503 +0.3625,0.5625,0.08418465,0.1683693 +0.3625,0.5625,0.1683693,0.08418465 +0.3625,0.5875,0.07500002,0.07499999 +0.3625,0.5875,0.053033024,0.10606605 +0.3625,0.5875,0.10606602,0.053032935 +0.3625,0.5875,0.094494075,0.094494045 +0.3625,0.5875,0.06681743,0.13363487 +0.3625,0.5875,0.1336348,0.06681734 +0.3625,0.5875,0.11905506,0.11905509 +0.3625,0.5875,0.08418465,0.1683693 +0.3625,0.5875,0.1683693,0.08418465 +0.3625,0.61249995,0.07500002,0.07499999 +0.3625,0.61249995,0.053033024,0.10606605 +0.3625,0.6125,0.10606602,0.053032994 +0.3625,0.61249995,0.094494075,0.094494045 +0.3625,0.61249995,0.06681743,0.13363487 +0.3625,0.6125,0.1336348,0.0668174 +0.3625,0.61249995,0.11905506,0.11905509 +0.3625,0.6125,0.08418465,0.1683693 +0.3625,0.6125,0.1683693,0.08418465 +0.3625,0.63750005,0.07500002,0.07499999 +0.3625,0.63750005,0.053033024,0.10606605 +0.3625,0.6375,0.10606602,0.053032994 +0.3625,0.63750005,0.094494075,0.094494045 +0.3625,0.63750005,0.06681743,0.13363487 +0.3625,0.6375,0.1336348,0.0668174 +0.3625,0.63750005,0.11905506,0.11905509 +0.3625,0.6375,0.08418465,0.1683693 +0.3625,0.6375,0.1683693,0.08418465 +0.3625,0.6625,0.07500002,0.07499999 +0.3625,0.6625,0.053033024,0.10606605 +0.3625,0.6625,0.10606602,0.053032935 +0.3625,0.6625,0.094494075,0.094494045 +0.3625,0.6625,0.06681743,0.13363487 +0.3625,0.6625,0.1336348,0.06681734 +0.3625,0.6625,0.11905506,0.11905509 +0.3625,0.6625,0.08418465,0.1683693 +0.3625,0.6625,0.1683693,0.08418465 +0.3625,0.6875,0.07500002,0.07500005 +0.3625,0.6875,0.053033024,0.10606599 +0.3625,0.6875,0.10606602,0.053032994 +0.3625,0.6875,0.094494075,0.094494104 +0.3625,0.6875,0.06681743,0.1336348 +0.3625,0.6875,0.1336348,0.0668174 +0.3625,0.6875,0.11905506,0.11905503 +0.3625,0.6875,0.08418465,0.1683693 +0.3625,0.6875,0.1683693,0.08418465 +0.3625,0.7125,0.07500002,0.07499999 +0.3625,0.7125,0.053033024,0.10606605 +0.3625,0.7125,0.10606602,0.053032935 +0.3625,0.7125,0.094494075,0.094494045 +0.3625,0.7125,0.06681743,0.13363487 +0.3625,0.7125,0.1336348,0.06681734 +0.3625,0.7125,0.11905506,0.11905509 +0.3625,0.7125,0.08418465,0.1683693 +0.3625,0.7125,0.1683693,0.08418465 +0.3625,0.73749995,0.07500002,0.07499999 +0.3625,0.73749995,0.053033024,0.10606605 +0.3625,0.7375,0.10606602,0.053032994 +0.3625,0.73749995,0.094494075,0.094494045 +0.3625,0.73749995,0.06681743,0.1336348 +0.3625,0.7375,0.1336348,0.0668174 +0.3625,0.73749995,0.11905506,0.11905509 +0.3625,0.7375,0.08418465,0.1683693 +0.3625,0.7375,0.1683693,0.08418465 +0.3625,0.76250005,0.07500002,0.07499999 +0.3625,0.7625,0.053033024,0.10606599 +0.3625,0.7625,0.10606602,0.053032994 +0.3625,0.76250005,0.094494075,0.094494045 +0.3625,0.7625,0.06681743,0.1336348 +0.3625,0.7625,0.1336348,0.0668174 +0.3625,0.7625,0.11905506,0.11905503 +0.3625,0.7625,0.08418465,0.1683693 +0.3625,0.7625,0.1683693,0.08418465 +0.3625,0.7875,0.07500002,0.07499999 +0.3625,0.78749996,0.053033024,0.10606599 +0.3625,0.7875,0.10606602,0.053032994 +0.3625,0.7875,0.094494075,0.094494045 +0.3625,0.78749996,0.06681743,0.1336348 +0.3625,0.7875,0.1336348,0.0668174 +0.3625,0.78749996,0.11905506,0.11905503 +0.3625,0.7875,0.08418465,0.1683693 +0.3625,0.7875,0.1683693,0.08418465 +0.3625,0.8125,0.07500002,0.07500005 +0.3625,0.8125,0.053033024,0.10606599 +0.3625,0.8125,0.10606602,0.053033054 +0.3625,0.8125,0.094494075,0.094494104 +0.3625,0.8125,0.06681743,0.1336348 +0.3625,0.8125,0.1336348,0.06681746 +0.3625,0.8125,0.11905506,0.11905503 +0.3625,0.8125,0.08418465,0.1683693 +0.3625,0.8125,0.1683693,0.08418465 +0.3625,0.8375,0.07500002,0.07499999 +0.3625,0.8375,0.053033024,0.10606599 +0.3625,0.8375,0.10606602,0.053033054 +0.3625,0.8375,0.094494075,0.094494045 +0.3625,0.8375,0.06681743,0.1336348 +0.3625,0.8375,0.1336348,0.06681746 +0.3625,0.8375,0.11905506,0.11905503 +0.3625,0.8375,0.08418465,0.1683693 +0.3625,0.8375,0.1683693,0.08418465 +0.3625,0.86249995,0.07500002,0.07499999 +0.3625,0.86249995,0.053033024,0.10606593 +0.3625,0.86249995,0.10606602,0.053033054 +0.3625,0.86249995,0.094494075,0.094494045 +0.3625,0.86249995,0.06681743,0.1336348 +0.3625,0.86249995,0.1336348,0.06681746 +0.3625,0.86249995,0.11905506,0.11905497 +0.3625,0.8625,0.08418465,0.1683693 +0.3625,0.8625,0.1683693,0.08418465 +0.3625,0.88750005,0.07500002,0.07499999 +0.3625,0.88750005,0.053033024,0.10606593 +0.3625,0.88750005,0.10606602,0.053033054 +0.3625,0.88750005,0.094494075,0.094494045 +0.3625,0.88750005,0.06681743,0.13363475 +0.3625,0.88750005,0.1336348,0.06681746 +0.3625,0.88750005,0.11905506,0.11905497 +0.3625,0.8875,0.08418465,0.1683693 +0.3625,0.8875,0.1683693,0.08418465 +0.3625,0.9125,0.07500002,0.07499999 +0.3625,0.9125,0.053033024,0.10606593 +0.3625,0.9125,0.10606602,0.053033054 +0.3625,0.9125,0.094494075,0.094494045 +0.3625,0.9125,0.06681743,0.13363475 +0.3625,0.9125,0.1336348,0.06681746 +0.3625,0.9125,0.11905506,0.11905497 +0.3625,0.9125,0.08418465,0.1683693 +0.3625,0.9125,0.1683693,0.08418465 +0.3625,0.9375,0.07500002,0.07500005 +0.3625,0.9375,0.053033024,0.10606599 +0.3625,0.9375,0.10606602,0.053033113 +0.3625,0.9375,0.094494075,0.094494104 +0.3625,0.9375,0.06681743,0.1336348 +0.3625,0.9375,0.1336348,0.06681752 +0.3625,0.9375,0.11905506,0.11905503 +0.3625,0.9375,0.08418465,0.1683693 +0.3625,0.9375,0.1683693,0.08418465 +0.3625,0.9625,0.07500002,0.07499999 +0.3625,0.9625,0.053033024,0.10606593 +0.3625,0.9625,0.10606602,0.053033054 +0.3625,0.9625,0.094494075,0.094494045 +0.3625,0.9625,0.06681743,0.13363475 +0.3625,0.9625,0.1336348,0.06681746 +0.3625,0.9625,0.11905506,0.11905497 +0.3625,0.9625,0.08418465,0.1683693 +0.3625,0.9625,0.1683693,0.08418465 +0.3625,0.98749995,0.07500002,0.07499999 +0.3625,0.98749995,0.053033024,0.10606593 +0.3625,0.98749995,0.10606602,0.053033054 +0.3625,0.98749995,0.094494075,0.094494045 +0.3625,0.98749995,0.06681743,0.13363475 +0.3625,0.98749995,0.1336348,0.06681746 +0.3625,0.98749995,0.11905506,0.11905497 +0.3625,0.98749995,0.08418465,0.16836923 +0.3625,0.98749995,0.1683693,0.08418459 +0.3875,0.0125,0.07500002,0.075 +0.3875,0.012499997,0.053032994,0.10606602 +0.3875,0.012499999,0.10606602,0.05303301 +0.3875,0.012499999,0.094494075,0.09449408 +0.3875,0.012500001,0.0668174,0.1336348 +0.3875,0.012499999,0.13363484,0.0668174 +0.3875,0.012500001,0.11905506,0.11905508 +0.3875,0.012499999,0.08418465,0.1683693 +0.3875,0.012500002,0.1683693,0.084184654 +0.3875,0.0375,0.07500002,0.075 +0.3875,0.037499998,0.053032994,0.10606601 +0.3875,0.0375,0.10606602,0.05303301 +0.3875,0.0375,0.094494075,0.094494075 +0.3875,0.0375,0.0668174,0.1336348 +0.3875,0.0375,0.13363484,0.0668174 +0.3875,0.0375,0.11905506,0.11905508 +0.3875,0.0375,0.08418465,0.16836931 +0.3875,0.0375,0.1683693,0.08418466 +0.3875,0.0625,0.07500002,0.075 +0.3875,0.0625,0.053032994,0.10606602 +0.3875,0.0625,0.10606602,0.05303301 +0.3875,0.0625,0.094494075,0.094494075 +0.3875,0.0625,0.0668174,0.1336348 +0.3875,0.0625,0.13363484,0.0668174 +0.3875,0.0625,0.11905506,0.11905508 +0.3875,0.0625,0.08418465,0.16836932 +0.3875,0.0625,0.1683693,0.08418465 +0.3875,0.0875,0.07500002,0.075 +0.3875,0.08749999,0.053032994,0.10606601 +0.3875,0.087500006,0.10606602,0.053033013 +0.3875,0.087500006,0.094494075,0.09449408 +0.3875,0.087500006,0.0668174,0.1336348 +0.3875,0.0875,0.13363484,0.0668174 +0.3875,0.0875,0.11905506,0.11905508 +0.3875,0.0875,0.08418465,0.16836931 +0.3875,0.087500006,0.1683693,0.084184654 +0.3875,0.112500004,0.07500002,0.075 +0.3875,0.1125,0.053032994,0.10606601 +0.3875,0.112500004,0.10606602,0.05303301 +0.3875,0.1125,0.094494075,0.094494075 +0.3875,0.1125,0.0668174,0.1336348 +0.3875,0.1125,0.13363484,0.0668174 +0.3875,0.1125,0.11905506,0.119055085 +0.3875,0.112500004,0.08418465,0.16836931 +0.3875,0.1125,0.1683693,0.08418465 +0.3875,0.1375,0.07500002,0.074999996 +0.3875,0.1375,0.053032994,0.10606602 +0.3875,0.1375,0.10606602,0.053033024 +0.3875,0.1375,0.094494075,0.09449408 +0.3875,0.1375,0.0668174,0.1336348 +0.3875,0.1375,0.13363484,0.0668174 +0.3875,0.13749999,0.11905506,0.11905508 +0.3875,0.1375,0.08418465,0.1683693 +0.3875,0.1375,0.1683693,0.084184654 +0.3875,0.1625,0.07500002,0.075 +0.3875,0.16250001,0.053032994,0.106066026 +0.3875,0.1625,0.10606602,0.05303301 +0.3875,0.1625,0.094494075,0.094494075 +0.3875,0.1625,0.0668174,0.1336348 +0.3875,0.1625,0.13363484,0.0668174 +0.3875,0.1625,0.11905506,0.11905508 +0.3875,0.1625,0.08418465,0.1683693 +0.3875,0.1625,0.1683693,0.08418464 +0.3875,0.1875,0.07500002,0.07499999 +0.3875,0.1875,0.053032994,0.10606603 +0.3875,0.1875,0.10606602,0.053033024 +0.3875,0.1875,0.094494075,0.09449406 +0.3875,0.1875,0.0668174,0.1336348 +0.3875,0.1875,0.13363484,0.06681742 +0.3875,0.1875,0.11905506,0.11905509 +0.3875,0.1875,0.08418465,0.16836931 +0.3875,0.1875,0.1683693,0.08418465 +0.3875,0.2125,0.07500002,0.075 +0.3875,0.2125,0.053032994,0.10606603 +0.3875,0.2125,0.10606602,0.05303301 +0.3875,0.21249999,0.094494075,0.094494075 +0.3875,0.2125,0.0668174,0.1336348 +0.3875,0.2125,0.13363484,0.0668174 +0.3875,0.2125,0.11905506,0.11905509 +0.3875,0.2125,0.08418465,0.16836931 +0.3875,0.2125,0.1683693,0.08418465 +0.3875,0.23750001,0.07500002,0.075 +0.3875,0.2375,0.053032994,0.10606602 +0.3875,0.2375,0.10606602,0.053033024 +0.3875,0.2375,0.094494075,0.094494075 +0.3875,0.23750001,0.0668174,0.13363482 +0.3875,0.2375,0.13363484,0.06681743 +0.3875,0.2375,0.11905506,0.11905506 +0.3875,0.2375,0.08418465,0.16836932 +0.3875,0.23750001,0.1683693,0.08418466 +0.3875,0.2625,0.07500002,0.07500002 +0.3875,0.2625,0.053032994,0.10606603 +0.3875,0.2625,0.10606602,0.053033024 +0.3875,0.2625,0.094494075,0.094494075 +0.3875,0.2625,0.0668174,0.13363479 +0.3875,0.2625,0.13363484,0.06681743 +0.3875,0.2625,0.11905506,0.11905508 +0.3875,0.2625,0.08418465,0.1683693 +0.3875,0.2625,0.1683693,0.08418463 +0.3875,0.2875,0.07500002,0.07499999 +0.3875,0.2875,0.053032994,0.10606603 +0.3875,0.28750002,0.10606602,0.053033024 +0.3875,0.2875,0.094494075,0.094494045 +0.3875,0.2875,0.0668174,0.1336348 +0.3875,0.28750002,0.13363484,0.06681743 +0.3875,0.2875,0.11905506,0.11905508 +0.3875,0.2875,0.08418465,0.1683693 +0.3875,0.2875,0.1683693,0.08418465 +0.3875,0.3125,0.07500002,0.07499999 +0.3875,0.3125,0.053032994,0.10606605 +0.3875,0.3125,0.10606602,0.053032994 +0.3875,0.3125,0.094494075,0.094494045 +0.3875,0.3125,0.0668174,0.1336348 +0.3875,0.3125,0.13363484,0.0668174 +0.3875,0.3125,0.11905506,0.11905509 +0.3875,0.3125,0.08418465,0.1683693 +0.3875,0.3125,0.1683693,0.08418465 +0.3875,0.3375,0.07500002,0.07499999 +0.3875,0.3375,0.053032994,0.10606605 +0.3875,0.33749998,0.10606602,0.053033024 +0.3875,0.3375,0.094494075,0.094494045 +0.3875,0.33750004,0.0668174,0.13363484 +0.3875,0.33749998,0.13363484,0.06681743 +0.3875,0.3375,0.11905506,0.11905509 +0.3875,0.3375,0.08418465,0.1683693 +0.3875,0.3375,0.1683693,0.08418465 +0.3875,0.3625,0.07500002,0.07500002 +0.3875,0.3625,0.053032994,0.10606602 +0.3875,0.3625,0.10606602,0.053033024 +0.3875,0.3625,0.094494075,0.094494075 +0.3875,0.3625,0.0668174,0.1336348 +0.3875,0.3625,0.13363484,0.06681743 +0.3875,0.3625,0.11905506,0.11905506 +0.3875,0.3625,0.08418465,0.1683693 +0.3875,0.3625,0.1683693,0.08418465 +0.3875,0.3875,0.07500002,0.07500002 +0.3875,0.3875,0.053032994,0.10606602 +0.3875,0.3875,0.10606602,0.053032994 +0.3875,0.3875,0.094494075,0.094494075 +0.3875,0.3875,0.0668174,0.13363484 +0.3875,0.3875,0.13363484,0.0668174 +0.3875,0.3875,0.11905506,0.11905506 +0.3875,0.3875,0.08418465,0.1683693 +0.3875,0.3875,0.1683693,0.08418465 +0.3875,0.4125,0.07500002,0.07499999 +0.3875,0.4125,0.053032994,0.10606605 +0.3875,0.4125,0.10606602,0.053032994 +0.3875,0.4125,0.094494075,0.094494045 +0.3875,0.41250002,0.0668174,0.13363484 +0.3875,0.4125,0.13363484,0.0668174 +0.3875,0.4125,0.11905506,0.11905509 +0.3875,0.4125,0.08418465,0.1683693 +0.3875,0.4125,0.1683693,0.08418465 +0.3875,0.4375,0.07500002,0.07499999 +0.3875,0.4375,0.053032994,0.10606605 +0.3875,0.4375,0.10606602,0.053032994 +0.3875,0.4375,0.094494075,0.094494045 +0.3875,0.4375,0.0668174,0.1336348 +0.3875,0.4375,0.13363484,0.0668174 +0.3875,0.4375,0.11905506,0.11905509 +0.3875,0.4375,0.08418465,0.1683693 +0.3875,0.4375,0.1683693,0.08418465 +0.3875,0.4625,0.07500002,0.07499999 +0.3875,0.4625,0.053032994,0.10606605 +0.3875,0.46249998,0.10606602,0.053032964 +0.3875,0.4625,0.094494075,0.094494045 +0.3875,0.46250004,0.0668174,0.13363484 +0.3875,0.46249998,0.13363484,0.06681737 +0.3875,0.4625,0.11905506,0.11905509 +0.3875,0.46249998,0.08418465,0.16836926 +0.3875,0.46249998,0.1683693,0.08418462 +0.3875,0.48749998,0.07500002,0.07499999 +0.3875,0.4875,0.053032994,0.10606602 +0.3875,0.4875,0.10606602,0.053032994 +0.3875,0.48749998,0.094494075,0.094494045 +0.3875,0.4875,0.0668174,0.13363484 +0.3875,0.4875,0.13363484,0.0668174 +0.3875,0.4875,0.11905506,0.11905506 +0.3875,0.4875,0.08418465,0.1683693 +0.3875,0.4875,0.1683693,0.08418465 +0.3875,0.5125,0.07500002,0.07500002 +0.3875,0.51250005,0.053032994,0.10606605 +0.3875,0.5125,0.10606602,0.053032964 +0.3875,0.5125,0.094494075,0.094494075 +0.3875,0.51250005,0.0668174,0.13363487 +0.3875,0.5125,0.13363484,0.06681737 +0.3875,0.51250005,0.11905506,0.11905509 +0.3875,0.5125,0.08418465,0.1683693 +0.3875,0.5125,0.1683693,0.08418465 +0.3875,0.5375,0.07500002,0.07499999 +0.3875,0.5375,0.053032994,0.10606605 +0.3875,0.5375,0.10606602,0.053032935 +0.3875,0.5375,0.094494075,0.094494045 +0.3875,0.5375,0.0668174,0.13363487 +0.3875,0.5375,0.13363484,0.06681734 +0.3875,0.5375,0.11905506,0.11905509 +0.3875,0.5375,0.08418465,0.16836932 +0.3875,0.5375,0.1683693,0.08418468 +0.3875,0.5625,0.07500002,0.07500005 +0.3875,0.5625,0.053032994,0.10606599 +0.3875,0.5625,0.10606602,0.053032994 +0.3875,0.5625,0.094494075,0.094494104 +0.3875,0.5625,0.0668174,0.13363484 +0.3875,0.5625,0.13363484,0.0668174 +0.3875,0.5625,0.11905506,0.11905503 +0.3875,0.5625,0.08418465,0.1683693 +0.3875,0.5625,0.1683693,0.08418465 +0.3875,0.5875,0.07500002,0.07499999 +0.3875,0.5875,0.053032994,0.10606605 +0.3875,0.5875,0.10606602,0.053032935 +0.3875,0.5875,0.094494075,0.094494045 +0.3875,0.5875,0.0668174,0.13363487 +0.3875,0.5875,0.13363484,0.06681734 +0.3875,0.5875,0.11905506,0.11905509 +0.3875,0.5875,0.08418465,0.1683693 +0.3875,0.5875,0.1683693,0.08418465 +0.3875,0.61249995,0.07500002,0.07499999 +0.3875,0.61249995,0.053032994,0.10606605 +0.3875,0.6125,0.10606602,0.053032994 +0.3875,0.61249995,0.094494075,0.094494045 +0.3875,0.61249995,0.0668174,0.13363487 +0.3875,0.6125,0.13363484,0.0668174 +0.3875,0.61249995,0.11905506,0.11905509 +0.3875,0.6125,0.08418465,0.1683693 +0.3875,0.6125,0.1683693,0.08418465 +0.3875,0.63750005,0.07500002,0.07499999 +0.3875,0.63750005,0.053032994,0.10606605 +0.3875,0.6375,0.10606602,0.053032994 +0.3875,0.63750005,0.094494075,0.094494045 +0.3875,0.63750005,0.0668174,0.13363487 +0.3875,0.6375,0.13363484,0.0668174 +0.3875,0.63750005,0.11905506,0.11905509 +0.3875,0.6375,0.08418465,0.1683693 +0.3875,0.6375,0.1683693,0.08418465 +0.3875,0.6625,0.07500002,0.07499999 +0.3875,0.6625,0.053032994,0.10606605 +0.3875,0.6625,0.10606602,0.053032935 +0.3875,0.6625,0.094494075,0.094494045 +0.3875,0.6625,0.0668174,0.13363487 +0.3875,0.6625,0.13363484,0.06681734 +0.3875,0.6625,0.11905506,0.11905509 +0.3875,0.6625,0.08418465,0.1683693 +0.3875,0.6625,0.1683693,0.08418465 +0.3875,0.6875,0.07500002,0.07500005 +0.3875,0.6875,0.053032994,0.10606599 +0.3875,0.6875,0.10606602,0.053032994 +0.3875,0.6875,0.094494075,0.094494104 +0.3875,0.6875,0.0668174,0.1336348 +0.3875,0.6875,0.13363484,0.0668174 +0.3875,0.6875,0.11905506,0.11905503 +0.3875,0.6875,0.08418465,0.1683693 +0.3875,0.6875,0.1683693,0.08418465 +0.3875,0.7125,0.07500002,0.07499999 +0.3875,0.7125,0.053032994,0.10606605 +0.3875,0.7125,0.10606602,0.053032935 +0.3875,0.7125,0.094494075,0.094494045 +0.3875,0.7125,0.0668174,0.13363487 +0.3875,0.7125,0.13363484,0.06681734 +0.3875,0.7125,0.11905506,0.11905509 +0.3875,0.7125,0.08418465,0.1683693 +0.3875,0.7125,0.1683693,0.08418465 +0.3875,0.73749995,0.07500002,0.07499999 +0.3875,0.73749995,0.053032994,0.10606605 +0.3875,0.7375,0.10606602,0.053032994 +0.3875,0.73749995,0.094494075,0.094494045 +0.3875,0.73749995,0.0668174,0.1336348 +0.3875,0.7375,0.13363484,0.0668174 +0.3875,0.73749995,0.11905506,0.11905509 +0.3875,0.7375,0.08418465,0.1683693 +0.3875,0.7375,0.1683693,0.08418465 +0.3875,0.76250005,0.07500002,0.07499999 +0.3875,0.7625,0.053032994,0.10606599 +0.3875,0.7625,0.10606602,0.053032994 +0.3875,0.76250005,0.094494075,0.094494045 +0.3875,0.7625,0.0668174,0.1336348 +0.3875,0.7625,0.13363484,0.0668174 +0.3875,0.7625,0.11905506,0.11905503 +0.3875,0.7625,0.08418465,0.1683693 +0.3875,0.7625,0.1683693,0.08418465 +0.3875,0.7875,0.07500002,0.07499999 +0.3875,0.78749996,0.053032994,0.10606599 +0.3875,0.7875,0.10606602,0.053032994 +0.3875,0.7875,0.094494075,0.094494045 +0.3875,0.78749996,0.0668174,0.1336348 +0.3875,0.7875,0.13363484,0.0668174 +0.3875,0.78749996,0.11905506,0.11905503 +0.3875,0.7875,0.08418465,0.1683693 +0.3875,0.7875,0.1683693,0.08418465 +0.3875,0.8125,0.07500002,0.07500005 +0.3875,0.8125,0.053032994,0.10606599 +0.3875,0.8125,0.10606602,0.053033054 +0.3875,0.8125,0.094494075,0.094494104 +0.3875,0.8125,0.0668174,0.1336348 +0.3875,0.8125,0.13363484,0.06681746 +0.3875,0.8125,0.11905506,0.11905503 +0.3875,0.8125,0.08418465,0.1683693 +0.3875,0.8125,0.1683693,0.08418465 +0.3875,0.8375,0.07500002,0.07499999 +0.3875,0.8375,0.053032994,0.10606599 +0.3875,0.8375,0.10606602,0.053033054 +0.3875,0.8375,0.094494075,0.094494045 +0.3875,0.8375,0.0668174,0.1336348 +0.3875,0.8375,0.13363484,0.06681746 +0.3875,0.8375,0.11905506,0.11905503 +0.3875,0.8375,0.08418465,0.1683693 +0.3875,0.8375,0.1683693,0.08418465 +0.3875,0.86249995,0.07500002,0.07499999 +0.3875,0.86249995,0.053032994,0.10606593 +0.3875,0.86249995,0.10606602,0.053033054 +0.3875,0.86249995,0.094494075,0.094494045 +0.3875,0.86249995,0.0668174,0.1336348 +0.3875,0.86249995,0.13363484,0.06681746 +0.3875,0.86249995,0.11905506,0.11905497 +0.3875,0.8625,0.08418465,0.1683693 +0.3875,0.8625,0.1683693,0.08418465 +0.3875,0.88750005,0.07500002,0.07499999 +0.3875,0.88750005,0.053032994,0.10606593 +0.3875,0.88750005,0.10606602,0.053033054 +0.3875,0.88750005,0.094494075,0.094494045 +0.3875,0.88750005,0.0668174,0.13363475 +0.3875,0.88750005,0.13363484,0.06681746 +0.3875,0.88750005,0.11905506,0.11905497 +0.3875,0.8875,0.08418465,0.1683693 +0.3875,0.8875,0.1683693,0.08418465 +0.3875,0.9125,0.07500002,0.07499999 +0.3875,0.9125,0.053032994,0.10606593 +0.3875,0.9125,0.10606602,0.053033054 +0.3875,0.9125,0.094494075,0.094494045 +0.3875,0.9125,0.0668174,0.13363475 +0.3875,0.9125,0.13363484,0.06681746 +0.3875,0.9125,0.11905506,0.11905497 +0.3875,0.9125,0.08418465,0.1683693 +0.3875,0.9125,0.1683693,0.08418465 +0.3875,0.9375,0.07500002,0.07500005 +0.3875,0.9375,0.053032994,0.10606599 +0.3875,0.9375,0.10606602,0.053033113 +0.3875,0.9375,0.094494075,0.094494104 +0.3875,0.9375,0.0668174,0.1336348 +0.3875,0.9375,0.13363484,0.06681752 +0.3875,0.9375,0.11905506,0.11905503 +0.3875,0.9375,0.08418465,0.1683693 +0.3875,0.9375,0.1683693,0.08418465 +0.3875,0.9625,0.07500002,0.07499999 +0.3875,0.9625,0.053032994,0.10606593 +0.3875,0.9625,0.10606602,0.053033054 +0.3875,0.9625,0.094494075,0.094494045 +0.3875,0.9625,0.0668174,0.13363475 +0.3875,0.9625,0.13363484,0.06681746 +0.3875,0.9625,0.11905506,0.11905497 +0.3875,0.9625,0.08418465,0.1683693 +0.3875,0.9625,0.1683693,0.08418465 +0.3875,0.98749995,0.07500002,0.07499999 +0.3875,0.98749995,0.053032994,0.10606593 +0.3875,0.98749995,0.10606602,0.053033054 +0.3875,0.98749995,0.094494075,0.094494045 +0.3875,0.98749995,0.0668174,0.13363475 +0.3875,0.98749995,0.13363484,0.06681746 +0.3875,0.98749995,0.11905506,0.11905497 +0.3875,0.98749995,0.08418465,0.16836923 +0.3875,0.98749995,0.1683693,0.08418459 +0.4125,0.0125,0.07499999,0.075 +0.4125,0.012499997,0.053032994,0.10606602 +0.4125,0.012499999,0.10606605,0.05303301 +0.4125,0.012499999,0.094494045,0.09449408 +0.4125,0.012500001,0.0668174,0.1336348 +0.41250002,0.012499999,0.13363484,0.0668174 +0.4125,0.012500001,0.11905509,0.11905508 +0.4125,0.012499999,0.08418465,0.1683693 +0.4125,0.012500002,0.1683693,0.084184654 +0.4125,0.0375,0.07499999,0.075 +0.4125,0.037499998,0.053032994,0.10606601 +0.4125,0.0375,0.10606605,0.05303301 +0.4125,0.0375,0.094494045,0.094494075 +0.4125,0.0375,0.0668174,0.1336348 +0.41250002,0.0375,0.13363484,0.0668174 +0.4125,0.0375,0.11905509,0.11905508 +0.4125,0.0375,0.08418465,0.16836931 +0.4125,0.0375,0.1683693,0.08418466 +0.4125,0.0625,0.07499999,0.075 +0.4125,0.0625,0.053032994,0.10606602 +0.4125,0.0625,0.10606605,0.05303301 +0.4125,0.0625,0.094494045,0.094494075 +0.4125,0.0625,0.0668174,0.1336348 +0.41250002,0.0625,0.13363484,0.0668174 +0.4125,0.0625,0.11905509,0.11905508 +0.4125,0.0625,0.08418465,0.16836932 +0.4125,0.0625,0.1683693,0.08418465 +0.4125,0.0875,0.07499999,0.075 +0.4125,0.08749999,0.053032994,0.10606601 +0.4125,0.087500006,0.10606605,0.053033013 +0.4125,0.087500006,0.094494045,0.09449408 +0.4125,0.087500006,0.0668174,0.1336348 +0.41250002,0.0875,0.13363484,0.0668174 +0.4125,0.0875,0.11905509,0.11905508 +0.4125,0.0875,0.08418465,0.16836931 +0.4125,0.087500006,0.1683693,0.084184654 +0.4125,0.112500004,0.07499999,0.075 +0.4125,0.1125,0.053032994,0.10606601 +0.4125,0.112500004,0.10606605,0.05303301 +0.4125,0.1125,0.094494045,0.094494075 +0.4125,0.1125,0.0668174,0.1336348 +0.41250002,0.1125,0.13363484,0.0668174 +0.4125,0.1125,0.11905509,0.119055085 +0.4125,0.112500004,0.08418465,0.16836931 +0.4125,0.1125,0.1683693,0.08418465 +0.4125,0.1375,0.07499999,0.074999996 +0.4125,0.1375,0.053032994,0.10606602 +0.4125,0.1375,0.10606605,0.053033024 +0.4125,0.1375,0.094494045,0.09449408 +0.4125,0.1375,0.0668174,0.1336348 +0.41250002,0.1375,0.13363484,0.0668174 +0.4125,0.13749999,0.11905509,0.11905508 +0.4125,0.1375,0.08418465,0.1683693 +0.4125,0.1375,0.1683693,0.084184654 +0.4125,0.1625,0.07499999,0.075 +0.4125,0.16250001,0.053032994,0.106066026 +0.4125,0.1625,0.10606605,0.05303301 +0.4125,0.1625,0.094494045,0.094494075 +0.4125,0.1625,0.0668174,0.1336348 +0.41250002,0.1625,0.13363484,0.0668174 +0.4125,0.1625,0.11905509,0.11905508 +0.4125,0.1625,0.08418465,0.1683693 +0.4125,0.1625,0.1683693,0.08418464 +0.4125,0.1875,0.07499999,0.07499999 +0.4125,0.1875,0.053032994,0.10606603 +0.4125,0.1875,0.10606605,0.053033024 +0.4125,0.1875,0.094494045,0.09449406 +0.4125,0.1875,0.0668174,0.1336348 +0.41250002,0.1875,0.13363484,0.06681742 +0.4125,0.1875,0.11905509,0.11905509 +0.4125,0.1875,0.08418465,0.16836931 +0.4125,0.1875,0.1683693,0.08418465 +0.4125,0.2125,0.07499999,0.075 +0.4125,0.2125,0.053032994,0.10606603 +0.4125,0.2125,0.10606605,0.05303301 +0.4125,0.21249999,0.094494045,0.094494075 +0.4125,0.2125,0.0668174,0.1336348 +0.41250002,0.2125,0.13363484,0.0668174 +0.4125,0.2125,0.11905509,0.11905509 +0.4125,0.2125,0.08418465,0.16836931 +0.4125,0.2125,0.1683693,0.08418465 +0.4125,0.23750001,0.07499999,0.075 +0.4125,0.2375,0.053032994,0.10606602 +0.4125,0.2375,0.10606605,0.053033024 +0.4125,0.2375,0.094494045,0.094494075 +0.4125,0.23750001,0.0668174,0.13363482 +0.41250002,0.2375,0.13363484,0.06681743 +0.4125,0.2375,0.11905509,0.11905506 +0.4125,0.2375,0.08418465,0.16836932 +0.4125,0.23750001,0.1683693,0.08418466 +0.4125,0.2625,0.07499999,0.07500002 +0.4125,0.2625,0.053032994,0.10606603 +0.4125,0.2625,0.10606605,0.053033024 +0.4125,0.2625,0.094494045,0.094494075 +0.4125,0.2625,0.0668174,0.13363479 +0.41250002,0.2625,0.13363484,0.06681743 +0.4125,0.2625,0.11905509,0.11905508 +0.4125,0.2625,0.08418465,0.1683693 +0.4125,0.2625,0.1683693,0.08418463 +0.4125,0.2875,0.07499999,0.07499999 +0.4125,0.2875,0.053032994,0.10606603 +0.4125,0.28750002,0.10606605,0.053033024 +0.4125,0.2875,0.094494045,0.094494045 +0.4125,0.2875,0.0668174,0.1336348 +0.41250002,0.28750002,0.13363484,0.06681743 +0.4125,0.2875,0.11905509,0.11905508 +0.4125,0.2875,0.08418465,0.1683693 +0.4125,0.2875,0.1683693,0.08418465 +0.4125,0.3125,0.07499999,0.07499999 +0.4125,0.3125,0.053032994,0.10606605 +0.4125,0.3125,0.10606605,0.053032994 +0.4125,0.3125,0.094494045,0.094494045 +0.4125,0.3125,0.0668174,0.1336348 +0.41250002,0.3125,0.13363484,0.0668174 +0.4125,0.3125,0.11905509,0.11905509 +0.4125,0.3125,0.08418465,0.1683693 +0.4125,0.3125,0.1683693,0.08418465 +0.4125,0.3375,0.07499999,0.07499999 +0.4125,0.3375,0.053032994,0.10606605 +0.4125,0.33749998,0.10606605,0.053033024 +0.4125,0.3375,0.094494045,0.094494045 +0.4125,0.33750004,0.0668174,0.13363484 +0.41250002,0.33749998,0.13363484,0.06681743 +0.4125,0.3375,0.11905509,0.11905509 +0.4125,0.3375,0.08418465,0.1683693 +0.4125,0.3375,0.1683693,0.08418465 +0.4125,0.3625,0.07499999,0.07500002 +0.4125,0.3625,0.053032994,0.10606602 +0.4125,0.3625,0.10606605,0.053033024 +0.4125,0.3625,0.094494045,0.094494075 +0.4125,0.3625,0.0668174,0.1336348 +0.41250002,0.3625,0.13363484,0.06681743 +0.4125,0.3625,0.11905509,0.11905506 +0.4125,0.3625,0.08418465,0.1683693 +0.4125,0.3625,0.1683693,0.08418465 +0.4125,0.3875,0.07499999,0.07500002 +0.4125,0.3875,0.053032994,0.10606602 +0.4125,0.3875,0.10606605,0.053032994 +0.4125,0.3875,0.094494045,0.094494075 +0.4125,0.3875,0.0668174,0.13363484 +0.41250002,0.3875,0.13363484,0.0668174 +0.4125,0.3875,0.11905509,0.11905506 +0.4125,0.3875,0.08418465,0.1683693 +0.4125,0.3875,0.1683693,0.08418465 +0.4125,0.4125,0.07499999,0.07499999 +0.4125,0.4125,0.053032994,0.10606605 +0.4125,0.4125,0.10606605,0.053032994 +0.4125,0.4125,0.094494045,0.094494045 +0.4125,0.41250002,0.0668174,0.13363484 +0.41250002,0.4125,0.13363484,0.0668174 +0.4125,0.4125,0.11905509,0.11905509 +0.4125,0.4125,0.08418465,0.1683693 +0.4125,0.4125,0.1683693,0.08418465 +0.4125,0.4375,0.07499999,0.07499999 +0.4125,0.4375,0.053032994,0.10606605 +0.4125,0.4375,0.10606605,0.053032994 +0.4125,0.4375,0.094494045,0.094494045 +0.4125,0.4375,0.0668174,0.1336348 +0.41250002,0.4375,0.13363484,0.0668174 +0.4125,0.4375,0.11905509,0.11905509 +0.4125,0.4375,0.08418465,0.1683693 +0.4125,0.4375,0.1683693,0.08418465 +0.4125,0.4625,0.07499999,0.07499999 +0.4125,0.4625,0.053032994,0.10606605 +0.4125,0.46249998,0.10606605,0.053032964 +0.4125,0.4625,0.094494045,0.094494045 +0.4125,0.46250004,0.0668174,0.13363484 +0.41250002,0.46249998,0.13363484,0.06681737 +0.4125,0.4625,0.11905509,0.11905509 +0.4125,0.46249998,0.08418465,0.16836926 +0.4125,0.46249998,0.1683693,0.08418462 +0.4125,0.48749998,0.07499999,0.07499999 +0.4125,0.4875,0.053032994,0.10606602 +0.4125,0.4875,0.10606605,0.053032994 +0.4125,0.48749998,0.094494045,0.094494045 +0.4125,0.4875,0.0668174,0.13363484 +0.41250002,0.4875,0.13363484,0.0668174 +0.4125,0.4875,0.11905509,0.11905506 +0.4125,0.4875,0.08418465,0.1683693 +0.4125,0.4875,0.1683693,0.08418465 +0.4125,0.5125,0.07499999,0.07500002 +0.4125,0.51250005,0.053032994,0.10606605 +0.4125,0.5125,0.10606605,0.053032964 +0.4125,0.5125,0.094494045,0.094494075 +0.4125,0.51250005,0.0668174,0.13363487 +0.41250002,0.5125,0.13363484,0.06681737 +0.4125,0.51250005,0.11905509,0.11905509 +0.4125,0.5125,0.08418465,0.1683693 +0.4125,0.5125,0.1683693,0.08418465 +0.4125,0.5375,0.07499999,0.07499999 +0.4125,0.5375,0.053032994,0.10606605 +0.4125,0.5375,0.10606605,0.053032935 +0.4125,0.5375,0.094494045,0.094494045 +0.4125,0.5375,0.0668174,0.13363487 +0.41250002,0.5375,0.13363484,0.06681734 +0.4125,0.5375,0.11905509,0.11905509 +0.4125,0.5375,0.08418465,0.16836932 +0.4125,0.5375,0.1683693,0.08418468 +0.4125,0.5625,0.07499999,0.07500005 +0.4125,0.5625,0.053032994,0.10606599 +0.4125,0.5625,0.10606605,0.053032994 +0.4125,0.5625,0.094494045,0.094494104 +0.4125,0.5625,0.0668174,0.13363484 +0.41250002,0.5625,0.13363484,0.0668174 +0.4125,0.5625,0.11905509,0.11905503 +0.4125,0.5625,0.08418465,0.1683693 +0.4125,0.5625,0.1683693,0.08418465 +0.4125,0.5875,0.07499999,0.07499999 +0.4125,0.5875,0.053032994,0.10606605 +0.4125,0.5875,0.10606605,0.053032935 +0.4125,0.5875,0.094494045,0.094494045 +0.4125,0.5875,0.0668174,0.13363487 +0.41250002,0.5875,0.13363484,0.06681734 +0.4125,0.5875,0.11905509,0.11905509 +0.4125,0.5875,0.08418465,0.1683693 +0.4125,0.5875,0.1683693,0.08418465 +0.4125,0.61249995,0.07499999,0.07499999 +0.4125,0.61249995,0.053032994,0.10606605 +0.4125,0.6125,0.10606605,0.053032994 +0.4125,0.61249995,0.094494045,0.094494045 +0.4125,0.61249995,0.0668174,0.13363487 +0.41250002,0.6125,0.13363484,0.0668174 +0.4125,0.61249995,0.11905509,0.11905509 +0.4125,0.6125,0.08418465,0.1683693 +0.4125,0.6125,0.1683693,0.08418465 +0.4125,0.63750005,0.07499999,0.07499999 +0.4125,0.63750005,0.053032994,0.10606605 +0.4125,0.6375,0.10606605,0.053032994 +0.4125,0.63750005,0.094494045,0.094494045 +0.4125,0.63750005,0.0668174,0.13363487 +0.41250002,0.6375,0.13363484,0.0668174 +0.4125,0.63750005,0.11905509,0.11905509 +0.4125,0.6375,0.08418465,0.1683693 +0.4125,0.6375,0.1683693,0.08418465 +0.4125,0.6625,0.07499999,0.07499999 +0.4125,0.6625,0.053032994,0.10606605 +0.4125,0.6625,0.10606605,0.053032935 +0.4125,0.6625,0.094494045,0.094494045 +0.4125,0.6625,0.0668174,0.13363487 +0.41250002,0.6625,0.13363484,0.06681734 +0.4125,0.6625,0.11905509,0.11905509 +0.4125,0.6625,0.08418465,0.1683693 +0.4125,0.6625,0.1683693,0.08418465 +0.4125,0.6875,0.07499999,0.07500005 +0.4125,0.6875,0.053032994,0.10606599 +0.4125,0.6875,0.10606605,0.053032994 +0.4125,0.6875,0.094494045,0.094494104 +0.4125,0.6875,0.0668174,0.1336348 +0.41250002,0.6875,0.13363484,0.0668174 +0.4125,0.6875,0.11905509,0.11905503 +0.4125,0.6875,0.08418465,0.1683693 +0.4125,0.6875,0.1683693,0.08418465 +0.4125,0.7125,0.07499999,0.07499999 +0.4125,0.7125,0.053032994,0.10606605 +0.4125,0.7125,0.10606605,0.053032935 +0.4125,0.7125,0.094494045,0.094494045 +0.4125,0.7125,0.0668174,0.13363487 +0.41250002,0.7125,0.13363484,0.06681734 +0.4125,0.7125,0.11905509,0.11905509 +0.4125,0.7125,0.08418465,0.1683693 +0.4125,0.7125,0.1683693,0.08418465 +0.4125,0.73749995,0.07499999,0.07499999 +0.4125,0.73749995,0.053032994,0.10606605 +0.4125,0.7375,0.10606605,0.053032994 +0.4125,0.73749995,0.094494045,0.094494045 +0.4125,0.73749995,0.0668174,0.1336348 +0.41250002,0.7375,0.13363484,0.0668174 +0.4125,0.73749995,0.11905509,0.11905509 +0.4125,0.7375,0.08418465,0.1683693 +0.4125,0.7375,0.1683693,0.08418465 +0.4125,0.76250005,0.07499999,0.07499999 +0.4125,0.7625,0.053032994,0.10606599 +0.4125,0.7625,0.10606605,0.053032994 +0.4125,0.76250005,0.094494045,0.094494045 +0.4125,0.7625,0.0668174,0.1336348 +0.41250002,0.7625,0.13363484,0.0668174 +0.4125,0.7625,0.11905509,0.11905503 +0.4125,0.7625,0.08418465,0.1683693 +0.4125,0.7625,0.1683693,0.08418465 +0.4125,0.7875,0.07499999,0.07499999 +0.4125,0.78749996,0.053032994,0.10606599 +0.4125,0.7875,0.10606605,0.053032994 +0.4125,0.7875,0.094494045,0.094494045 +0.4125,0.78749996,0.0668174,0.1336348 +0.41250002,0.7875,0.13363484,0.0668174 +0.4125,0.78749996,0.11905509,0.11905503 +0.4125,0.7875,0.08418465,0.1683693 +0.4125,0.7875,0.1683693,0.08418465 +0.4125,0.8125,0.07499999,0.07500005 +0.4125,0.8125,0.053032994,0.10606599 +0.4125,0.8125,0.10606605,0.053033054 +0.4125,0.8125,0.094494045,0.094494104 +0.4125,0.8125,0.0668174,0.1336348 +0.41250002,0.8125,0.13363484,0.06681746 +0.4125,0.8125,0.11905509,0.11905503 +0.4125,0.8125,0.08418465,0.1683693 +0.4125,0.8125,0.1683693,0.08418465 +0.4125,0.8375,0.07499999,0.07499999 +0.4125,0.8375,0.053032994,0.10606599 +0.4125,0.8375,0.10606605,0.053033054 +0.4125,0.8375,0.094494045,0.094494045 +0.4125,0.8375,0.0668174,0.1336348 +0.41250002,0.8375,0.13363484,0.06681746 +0.4125,0.8375,0.11905509,0.11905503 +0.4125,0.8375,0.08418465,0.1683693 +0.4125,0.8375,0.1683693,0.08418465 +0.4125,0.86249995,0.07499999,0.07499999 +0.4125,0.86249995,0.053032994,0.10606593 +0.4125,0.86249995,0.10606605,0.053033054 +0.4125,0.86249995,0.094494045,0.094494045 +0.4125,0.86249995,0.0668174,0.1336348 +0.41250002,0.86249995,0.13363484,0.06681746 +0.4125,0.86249995,0.11905509,0.11905497 +0.4125,0.8625,0.08418465,0.1683693 +0.4125,0.8625,0.1683693,0.08418465 +0.4125,0.88750005,0.07499999,0.07499999 +0.4125,0.88750005,0.053032994,0.10606593 +0.4125,0.88750005,0.10606605,0.053033054 +0.4125,0.88750005,0.094494045,0.094494045 +0.4125,0.88750005,0.0668174,0.13363475 +0.41250002,0.88750005,0.13363484,0.06681746 +0.4125,0.88750005,0.11905509,0.11905497 +0.4125,0.8875,0.08418465,0.1683693 +0.4125,0.8875,0.1683693,0.08418465 +0.4125,0.9125,0.07499999,0.07499999 +0.4125,0.9125,0.053032994,0.10606593 +0.4125,0.9125,0.10606605,0.053033054 +0.4125,0.9125,0.094494045,0.094494045 +0.4125,0.9125,0.0668174,0.13363475 +0.41250002,0.9125,0.13363484,0.06681746 +0.4125,0.9125,0.11905509,0.11905497 +0.4125,0.9125,0.08418465,0.1683693 +0.4125,0.9125,0.1683693,0.08418465 +0.4125,0.9375,0.07499999,0.07500005 +0.4125,0.9375,0.053032994,0.10606599 +0.4125,0.9375,0.10606605,0.053033113 +0.4125,0.9375,0.094494045,0.094494104 +0.4125,0.9375,0.0668174,0.1336348 +0.41250002,0.9375,0.13363484,0.06681752 +0.4125,0.9375,0.11905509,0.11905503 +0.4125,0.9375,0.08418465,0.1683693 +0.4125,0.9375,0.1683693,0.08418465 +0.4125,0.9625,0.07499999,0.07499999 +0.4125,0.9625,0.053032994,0.10606593 +0.4125,0.9625,0.10606605,0.053033054 +0.4125,0.9625,0.094494045,0.094494045 +0.4125,0.9625,0.0668174,0.13363475 +0.41250002,0.9625,0.13363484,0.06681746 +0.4125,0.9625,0.11905509,0.11905497 +0.4125,0.9625,0.08418465,0.1683693 +0.4125,0.9625,0.1683693,0.08418465 +0.4125,0.98749995,0.07499999,0.07499999 +0.4125,0.98749995,0.053032994,0.10606593 +0.4125,0.98749995,0.10606605,0.053033054 +0.4125,0.98749995,0.094494045,0.094494045 +0.4125,0.98749995,0.0668174,0.13363475 +0.41250002,0.98749995,0.13363484,0.06681746 +0.4125,0.98749995,0.11905509,0.11905497 +0.4125,0.98749995,0.08418465,0.16836923 +0.4125,0.98749995,0.1683693,0.08418459 +0.4375,0.0125,0.07499999,0.075 +0.4375,0.012499997,0.053032994,0.10606602 +0.4375,0.012499999,0.10606605,0.05303301 +0.4375,0.012499999,0.094494045,0.09449408 +0.4375,0.012500001,0.0668174,0.1336348 +0.4375,0.012499999,0.1336348,0.0668174 +0.4375,0.012500001,0.11905509,0.11905508 +0.4375,0.012499999,0.08418465,0.1683693 +0.4375,0.012500002,0.1683693,0.084184654 +0.4375,0.0375,0.07499999,0.075 +0.4375,0.037499998,0.053032994,0.10606601 +0.4375,0.0375,0.10606605,0.05303301 +0.4375,0.0375,0.094494045,0.094494075 +0.4375,0.0375,0.0668174,0.1336348 +0.4375,0.0375,0.1336348,0.0668174 +0.4375,0.0375,0.11905509,0.11905508 +0.4375,0.0375,0.08418465,0.16836931 +0.4375,0.0375,0.1683693,0.08418466 +0.4375,0.0625,0.07499999,0.075 +0.4375,0.0625,0.053032994,0.10606602 +0.4375,0.0625,0.10606605,0.05303301 +0.4375,0.0625,0.094494045,0.094494075 +0.4375,0.0625,0.0668174,0.1336348 +0.4375,0.0625,0.1336348,0.0668174 +0.4375,0.0625,0.11905509,0.11905508 +0.4375,0.0625,0.08418465,0.16836932 +0.4375,0.0625,0.1683693,0.08418465 +0.4375,0.0875,0.07499999,0.075 +0.4375,0.08749999,0.053032994,0.10606601 +0.4375,0.087500006,0.10606605,0.053033013 +0.4375,0.087500006,0.094494045,0.09449408 +0.4375,0.087500006,0.0668174,0.1336348 +0.4375,0.0875,0.1336348,0.0668174 +0.4375,0.0875,0.11905509,0.11905508 +0.4375,0.0875,0.08418465,0.16836931 +0.4375,0.087500006,0.1683693,0.084184654 +0.4375,0.112500004,0.07499999,0.075 +0.4375,0.1125,0.053032994,0.10606601 +0.4375,0.112500004,0.10606605,0.05303301 +0.4375,0.1125,0.094494045,0.094494075 +0.4375,0.1125,0.0668174,0.1336348 +0.4375,0.1125,0.1336348,0.0668174 +0.4375,0.1125,0.11905509,0.119055085 +0.4375,0.112500004,0.08418465,0.16836931 +0.4375,0.1125,0.1683693,0.08418465 +0.4375,0.1375,0.07499999,0.074999996 +0.4375,0.1375,0.053032994,0.10606602 +0.4375,0.1375,0.10606605,0.053033024 +0.4375,0.1375,0.094494045,0.09449408 +0.4375,0.1375,0.0668174,0.1336348 +0.4375,0.1375,0.1336348,0.0668174 +0.4375,0.13749999,0.11905509,0.11905508 +0.4375,0.1375,0.08418465,0.1683693 +0.4375,0.1375,0.1683693,0.084184654 +0.4375,0.1625,0.07499999,0.075 +0.4375,0.16250001,0.053032994,0.106066026 +0.4375,0.1625,0.10606605,0.05303301 +0.4375,0.1625,0.094494045,0.094494075 +0.4375,0.1625,0.0668174,0.1336348 +0.4375,0.1625,0.1336348,0.0668174 +0.4375,0.1625,0.11905509,0.11905508 +0.4375,0.1625,0.08418465,0.1683693 +0.4375,0.1625,0.1683693,0.08418464 +0.4375,0.1875,0.07499999,0.07499999 +0.4375,0.1875,0.053032994,0.10606603 +0.4375,0.1875,0.10606605,0.053033024 +0.4375,0.1875,0.094494045,0.09449406 +0.4375,0.1875,0.0668174,0.1336348 +0.4375,0.1875,0.1336348,0.06681742 +0.4375,0.1875,0.11905509,0.11905509 +0.4375,0.1875,0.08418465,0.16836931 +0.4375,0.1875,0.1683693,0.08418465 +0.4375,0.2125,0.07499999,0.075 +0.4375,0.2125,0.053032994,0.10606603 +0.4375,0.2125,0.10606605,0.05303301 +0.4375,0.21249999,0.094494045,0.094494075 +0.4375,0.2125,0.0668174,0.1336348 +0.4375,0.2125,0.1336348,0.0668174 +0.4375,0.2125,0.11905509,0.11905509 +0.4375,0.2125,0.08418465,0.16836931 +0.4375,0.2125,0.1683693,0.08418465 +0.4375,0.23750001,0.07499999,0.075 +0.4375,0.2375,0.053032994,0.10606602 +0.4375,0.2375,0.10606605,0.053033024 +0.4375,0.2375,0.094494045,0.094494075 +0.4375,0.23750001,0.0668174,0.13363482 +0.4375,0.2375,0.1336348,0.06681743 +0.4375,0.2375,0.11905509,0.11905506 +0.4375,0.2375,0.08418465,0.16836932 +0.4375,0.23750001,0.1683693,0.08418466 +0.4375,0.2625,0.07499999,0.07500002 +0.4375,0.2625,0.053032994,0.10606603 +0.4375,0.2625,0.10606605,0.053033024 +0.4375,0.2625,0.094494045,0.094494075 +0.4375,0.2625,0.0668174,0.13363479 +0.4375,0.2625,0.1336348,0.06681743 +0.4375,0.2625,0.11905509,0.11905508 +0.4375,0.2625,0.08418465,0.1683693 +0.4375,0.2625,0.1683693,0.08418463 +0.4375,0.2875,0.07499999,0.07499999 +0.4375,0.2875,0.053032994,0.10606603 +0.4375,0.28750002,0.10606605,0.053033024 +0.4375,0.2875,0.094494045,0.094494045 +0.4375,0.2875,0.0668174,0.1336348 +0.4375,0.28750002,0.1336348,0.06681743 +0.4375,0.2875,0.11905509,0.11905508 +0.4375,0.2875,0.08418465,0.1683693 +0.4375,0.2875,0.1683693,0.08418465 +0.4375,0.3125,0.07499999,0.07499999 +0.4375,0.3125,0.053032994,0.10606605 +0.4375,0.3125,0.10606605,0.053032994 +0.4375,0.3125,0.094494045,0.094494045 +0.4375,0.3125,0.0668174,0.1336348 +0.4375,0.3125,0.1336348,0.0668174 +0.4375,0.3125,0.11905509,0.11905509 +0.4375,0.3125,0.08418465,0.1683693 +0.4375,0.3125,0.1683693,0.08418465 +0.4375,0.3375,0.07499999,0.07499999 +0.4375,0.3375,0.053032994,0.10606605 +0.4375,0.33749998,0.10606605,0.053033024 +0.4375,0.3375,0.094494045,0.094494045 +0.4375,0.33750004,0.0668174,0.13363484 +0.4375,0.33749998,0.1336348,0.06681743 +0.4375,0.3375,0.11905509,0.11905509 +0.4375,0.3375,0.08418465,0.1683693 +0.4375,0.3375,0.1683693,0.08418465 +0.4375,0.3625,0.07499999,0.07500002 +0.4375,0.3625,0.053032994,0.10606602 +0.4375,0.3625,0.10606605,0.053033024 +0.4375,0.3625,0.094494045,0.094494075 +0.4375,0.3625,0.0668174,0.1336348 +0.4375,0.3625,0.1336348,0.06681743 +0.4375,0.3625,0.11905509,0.11905506 +0.4375,0.3625,0.08418465,0.1683693 +0.4375,0.3625,0.1683693,0.08418465 +0.4375,0.3875,0.07499999,0.07500002 +0.4375,0.3875,0.053032994,0.10606602 +0.4375,0.3875,0.10606605,0.053032994 +0.4375,0.3875,0.094494045,0.094494075 +0.4375,0.3875,0.0668174,0.13363484 +0.4375,0.3875,0.1336348,0.0668174 +0.4375,0.3875,0.11905509,0.11905506 +0.4375,0.3875,0.08418465,0.1683693 +0.4375,0.3875,0.1683693,0.08418465 +0.4375,0.4125,0.07499999,0.07499999 +0.4375,0.4125,0.053032994,0.10606605 +0.4375,0.4125,0.10606605,0.053032994 +0.4375,0.4125,0.094494045,0.094494045 +0.4375,0.41250002,0.0668174,0.13363484 +0.4375,0.4125,0.1336348,0.0668174 +0.4375,0.4125,0.11905509,0.11905509 +0.4375,0.4125,0.08418465,0.1683693 +0.4375,0.4125,0.1683693,0.08418465 +0.4375,0.4375,0.07499999,0.07499999 +0.4375,0.4375,0.053032994,0.10606605 +0.4375,0.4375,0.10606605,0.053032994 +0.4375,0.4375,0.094494045,0.094494045 +0.4375,0.4375,0.0668174,0.1336348 +0.4375,0.4375,0.1336348,0.0668174 +0.4375,0.4375,0.11905509,0.11905509 +0.4375,0.4375,0.08418465,0.1683693 +0.4375,0.4375,0.1683693,0.08418465 +0.4375,0.4625,0.07499999,0.07499999 +0.4375,0.4625,0.053032994,0.10606605 +0.4375,0.46249998,0.10606605,0.053032964 +0.4375,0.4625,0.094494045,0.094494045 +0.4375,0.46250004,0.0668174,0.13363484 +0.4375,0.46249998,0.1336348,0.06681737 +0.4375,0.4625,0.11905509,0.11905509 +0.4375,0.46249998,0.08418465,0.16836926 +0.4375,0.46249998,0.1683693,0.08418462 +0.4375,0.48749998,0.07499999,0.07499999 +0.4375,0.4875,0.053032994,0.10606602 +0.4375,0.4875,0.10606605,0.053032994 +0.4375,0.48749998,0.094494045,0.094494045 +0.4375,0.4875,0.0668174,0.13363484 +0.4375,0.4875,0.1336348,0.0668174 +0.4375,0.4875,0.11905509,0.11905506 +0.4375,0.4875,0.08418465,0.1683693 +0.4375,0.4875,0.1683693,0.08418465 +0.4375,0.5125,0.07499999,0.07500002 +0.4375,0.51250005,0.053032994,0.10606605 +0.4375,0.5125,0.10606605,0.053032964 +0.4375,0.5125,0.094494045,0.094494075 +0.4375,0.51250005,0.0668174,0.13363487 +0.4375,0.5125,0.1336348,0.06681737 +0.4375,0.51250005,0.11905509,0.11905509 +0.4375,0.5125,0.08418465,0.1683693 +0.4375,0.5125,0.1683693,0.08418465 +0.4375,0.5375,0.07499999,0.07499999 +0.4375,0.5375,0.053032994,0.10606605 +0.4375,0.5375,0.10606605,0.053032935 +0.4375,0.5375,0.094494045,0.094494045 +0.4375,0.5375,0.0668174,0.13363487 +0.4375,0.5375,0.1336348,0.06681734 +0.4375,0.5375,0.11905509,0.11905509 +0.4375,0.5375,0.08418465,0.16836932 +0.4375,0.5375,0.1683693,0.08418468 +0.4375,0.5625,0.07499999,0.07500005 +0.4375,0.5625,0.053032994,0.10606599 +0.4375,0.5625,0.10606605,0.053032994 +0.4375,0.5625,0.094494045,0.094494104 +0.4375,0.5625,0.0668174,0.13363484 +0.4375,0.5625,0.1336348,0.0668174 +0.4375,0.5625,0.11905509,0.11905503 +0.4375,0.5625,0.08418465,0.1683693 +0.4375,0.5625,0.1683693,0.08418465 +0.4375,0.5875,0.07499999,0.07499999 +0.4375,0.5875,0.053032994,0.10606605 +0.4375,0.5875,0.10606605,0.053032935 +0.4375,0.5875,0.094494045,0.094494045 +0.4375,0.5875,0.0668174,0.13363487 +0.4375,0.5875,0.1336348,0.06681734 +0.4375,0.5875,0.11905509,0.11905509 +0.4375,0.5875,0.08418465,0.1683693 +0.4375,0.5875,0.1683693,0.08418465 +0.4375,0.61249995,0.07499999,0.07499999 +0.4375,0.61249995,0.053032994,0.10606605 +0.4375,0.6125,0.10606605,0.053032994 +0.4375,0.61249995,0.094494045,0.094494045 +0.4375,0.61249995,0.0668174,0.13363487 +0.4375,0.6125,0.1336348,0.0668174 +0.4375,0.61249995,0.11905509,0.11905509 +0.4375,0.6125,0.08418465,0.1683693 +0.4375,0.6125,0.1683693,0.08418465 +0.4375,0.63750005,0.07499999,0.07499999 +0.4375,0.63750005,0.053032994,0.10606605 +0.4375,0.6375,0.10606605,0.053032994 +0.4375,0.63750005,0.094494045,0.094494045 +0.4375,0.63750005,0.0668174,0.13363487 +0.4375,0.6375,0.1336348,0.0668174 +0.4375,0.63750005,0.11905509,0.11905509 +0.4375,0.6375,0.08418465,0.1683693 +0.4375,0.6375,0.1683693,0.08418465 +0.4375,0.6625,0.07499999,0.07499999 +0.4375,0.6625,0.053032994,0.10606605 +0.4375,0.6625,0.10606605,0.053032935 +0.4375,0.6625,0.094494045,0.094494045 +0.4375,0.6625,0.0668174,0.13363487 +0.4375,0.6625,0.1336348,0.06681734 +0.4375,0.6625,0.11905509,0.11905509 +0.4375,0.6625,0.08418465,0.1683693 +0.4375,0.6625,0.1683693,0.08418465 +0.4375,0.6875,0.07499999,0.07500005 +0.4375,0.6875,0.053032994,0.10606599 +0.4375,0.6875,0.10606605,0.053032994 +0.4375,0.6875,0.094494045,0.094494104 +0.4375,0.6875,0.0668174,0.1336348 +0.4375,0.6875,0.1336348,0.0668174 +0.4375,0.6875,0.11905509,0.11905503 +0.4375,0.6875,0.08418465,0.1683693 +0.4375,0.6875,0.1683693,0.08418465 +0.4375,0.7125,0.07499999,0.07499999 +0.4375,0.7125,0.053032994,0.10606605 +0.4375,0.7125,0.10606605,0.053032935 +0.4375,0.7125,0.094494045,0.094494045 +0.4375,0.7125,0.0668174,0.13363487 +0.4375,0.7125,0.1336348,0.06681734 +0.4375,0.7125,0.11905509,0.11905509 +0.4375,0.7125,0.08418465,0.1683693 +0.4375,0.7125,0.1683693,0.08418465 +0.4375,0.73749995,0.07499999,0.07499999 +0.4375,0.73749995,0.053032994,0.10606605 +0.4375,0.7375,0.10606605,0.053032994 +0.4375,0.73749995,0.094494045,0.094494045 +0.4375,0.73749995,0.0668174,0.1336348 +0.4375,0.7375,0.1336348,0.0668174 +0.4375,0.73749995,0.11905509,0.11905509 +0.4375,0.7375,0.08418465,0.1683693 +0.4375,0.7375,0.1683693,0.08418465 +0.4375,0.76250005,0.07499999,0.07499999 +0.4375,0.7625,0.053032994,0.10606599 +0.4375,0.7625,0.10606605,0.053032994 +0.4375,0.76250005,0.094494045,0.094494045 +0.4375,0.7625,0.0668174,0.1336348 +0.4375,0.7625,0.1336348,0.0668174 +0.4375,0.7625,0.11905509,0.11905503 +0.4375,0.7625,0.08418465,0.1683693 +0.4375,0.7625,0.1683693,0.08418465 +0.4375,0.7875,0.07499999,0.07499999 +0.4375,0.78749996,0.053032994,0.10606599 +0.4375,0.7875,0.10606605,0.053032994 +0.4375,0.7875,0.094494045,0.094494045 +0.4375,0.78749996,0.0668174,0.1336348 +0.4375,0.7875,0.1336348,0.0668174 +0.4375,0.78749996,0.11905509,0.11905503 +0.4375,0.7875,0.08418465,0.1683693 +0.4375,0.7875,0.1683693,0.08418465 +0.4375,0.8125,0.07499999,0.07500005 +0.4375,0.8125,0.053032994,0.10606599 +0.4375,0.8125,0.10606605,0.053033054 +0.4375,0.8125,0.094494045,0.094494104 +0.4375,0.8125,0.0668174,0.1336348 +0.4375,0.8125,0.1336348,0.06681746 +0.4375,0.8125,0.11905509,0.11905503 +0.4375,0.8125,0.08418465,0.1683693 +0.4375,0.8125,0.1683693,0.08418465 +0.4375,0.8375,0.07499999,0.07499999 +0.4375,0.8375,0.053032994,0.10606599 +0.4375,0.8375,0.10606605,0.053033054 +0.4375,0.8375,0.094494045,0.094494045 +0.4375,0.8375,0.0668174,0.1336348 +0.4375,0.8375,0.1336348,0.06681746 +0.4375,0.8375,0.11905509,0.11905503 +0.4375,0.8375,0.08418465,0.1683693 +0.4375,0.8375,0.1683693,0.08418465 +0.4375,0.86249995,0.07499999,0.07499999 +0.4375,0.86249995,0.053032994,0.10606593 +0.4375,0.86249995,0.10606605,0.053033054 +0.4375,0.86249995,0.094494045,0.094494045 +0.4375,0.86249995,0.0668174,0.1336348 +0.4375,0.86249995,0.1336348,0.06681746 +0.4375,0.86249995,0.11905509,0.11905497 +0.4375,0.8625,0.08418465,0.1683693 +0.4375,0.8625,0.1683693,0.08418465 +0.4375,0.88750005,0.07499999,0.07499999 +0.4375,0.88750005,0.053032994,0.10606593 +0.4375,0.88750005,0.10606605,0.053033054 +0.4375,0.88750005,0.094494045,0.094494045 +0.4375,0.88750005,0.0668174,0.13363475 +0.4375,0.88750005,0.1336348,0.06681746 +0.4375,0.88750005,0.11905509,0.11905497 +0.4375,0.8875,0.08418465,0.1683693 +0.4375,0.8875,0.1683693,0.08418465 +0.4375,0.9125,0.07499999,0.07499999 +0.4375,0.9125,0.053032994,0.10606593 +0.4375,0.9125,0.10606605,0.053033054 +0.4375,0.9125,0.094494045,0.094494045 +0.4375,0.9125,0.0668174,0.13363475 +0.4375,0.9125,0.1336348,0.06681746 +0.4375,0.9125,0.11905509,0.11905497 +0.4375,0.9125,0.08418465,0.1683693 +0.4375,0.9125,0.1683693,0.08418465 +0.4375,0.9375,0.07499999,0.07500005 +0.4375,0.9375,0.053032994,0.10606599 +0.4375,0.9375,0.10606605,0.053033113 +0.4375,0.9375,0.094494045,0.094494104 +0.4375,0.9375,0.0668174,0.1336348 +0.4375,0.9375,0.1336348,0.06681752 +0.4375,0.9375,0.11905509,0.11905503 +0.4375,0.9375,0.08418465,0.1683693 +0.4375,0.9375,0.1683693,0.08418465 +0.4375,0.9625,0.07499999,0.07499999 +0.4375,0.9625,0.053032994,0.10606593 +0.4375,0.9625,0.10606605,0.053033054 +0.4375,0.9625,0.094494045,0.094494045 +0.4375,0.9625,0.0668174,0.13363475 +0.4375,0.9625,0.1336348,0.06681746 +0.4375,0.9625,0.11905509,0.11905497 +0.4375,0.9625,0.08418465,0.1683693 +0.4375,0.9625,0.1683693,0.08418465 +0.4375,0.98749995,0.07499999,0.07499999 +0.4375,0.98749995,0.053032994,0.10606593 +0.4375,0.98749995,0.10606605,0.053033054 +0.4375,0.98749995,0.094494045,0.094494045 +0.4375,0.98749995,0.0668174,0.13363475 +0.4375,0.98749995,0.1336348,0.06681746 +0.4375,0.98749995,0.11905509,0.11905497 +0.4375,0.98749995,0.08418465,0.16836923 +0.4375,0.98749995,0.1683693,0.08418459 +0.4625,0.0125,0.07499999,0.075 +0.46249998,0.012499997,0.053032964,0.10606602 +0.4625,0.012499999,0.10606605,0.05303301 +0.4625,0.012499999,0.094494045,0.09449408 +0.46249998,0.012500001,0.06681737,0.1336348 +0.46250004,0.012499999,0.13363484,0.0668174 +0.4625,0.012500001,0.11905509,0.11905508 +0.46249998,0.012499999,0.08418462,0.1683693 +0.46249998,0.012500002,0.16836926,0.084184654 +0.4625,0.0375,0.07499999,0.075 +0.46249998,0.037499998,0.053032964,0.10606601 +0.4625,0.0375,0.10606605,0.05303301 +0.4625,0.0375,0.094494045,0.094494075 +0.46249998,0.0375,0.06681737,0.1336348 +0.46250004,0.0375,0.13363484,0.0668174 +0.4625,0.0375,0.11905509,0.11905508 +0.46249998,0.0375,0.08418462,0.16836931 +0.46249998,0.0375,0.16836926,0.08418466 +0.4625,0.0625,0.07499999,0.075 +0.46249998,0.0625,0.053032964,0.10606602 +0.4625,0.0625,0.10606605,0.05303301 +0.4625,0.0625,0.094494045,0.094494075 +0.46249998,0.0625,0.06681737,0.1336348 +0.46250004,0.0625,0.13363484,0.0668174 +0.4625,0.0625,0.11905509,0.11905508 +0.46249998,0.0625,0.08418462,0.16836932 +0.46249998,0.0625,0.16836926,0.08418465 +0.4625,0.0875,0.07499999,0.075 +0.46249998,0.08749999,0.053032964,0.10606601 +0.4625,0.087500006,0.10606605,0.053033013 +0.4625,0.087500006,0.094494045,0.09449408 +0.46249998,0.087500006,0.06681737,0.1336348 +0.46250004,0.0875,0.13363484,0.0668174 +0.4625,0.0875,0.11905509,0.11905508 +0.46249998,0.0875,0.08418462,0.16836931 +0.46249998,0.087500006,0.16836926,0.084184654 +0.4625,0.112500004,0.07499999,0.075 +0.46249998,0.1125,0.053032964,0.10606601 +0.4625,0.112500004,0.10606605,0.05303301 +0.4625,0.1125,0.094494045,0.094494075 +0.46249998,0.1125,0.06681737,0.1336348 +0.46250004,0.1125,0.13363484,0.0668174 +0.4625,0.1125,0.11905509,0.119055085 +0.46249998,0.112500004,0.08418462,0.16836931 +0.46249998,0.1125,0.16836926,0.08418465 +0.4625,0.1375,0.07499999,0.074999996 +0.46249998,0.1375,0.053032964,0.10606602 +0.4625,0.1375,0.10606605,0.053033024 +0.4625,0.1375,0.094494045,0.09449408 +0.46249998,0.1375,0.06681737,0.1336348 +0.46250004,0.1375,0.13363484,0.0668174 +0.4625,0.13749999,0.11905509,0.11905508 +0.46249998,0.1375,0.08418462,0.1683693 +0.46249998,0.1375,0.16836926,0.084184654 +0.4625,0.1625,0.07499999,0.075 +0.46249998,0.16250001,0.053032964,0.106066026 +0.4625,0.1625,0.10606605,0.05303301 +0.4625,0.1625,0.094494045,0.094494075 +0.46249998,0.1625,0.06681737,0.1336348 +0.46250004,0.1625,0.13363484,0.0668174 +0.4625,0.1625,0.11905509,0.11905508 +0.46249998,0.1625,0.08418462,0.1683693 +0.46249998,0.1625,0.16836926,0.08418464 +0.4625,0.1875,0.07499999,0.07499999 +0.46249998,0.1875,0.053032964,0.10606603 +0.4625,0.1875,0.10606605,0.053033024 +0.4625,0.1875,0.094494045,0.09449406 +0.46249998,0.1875,0.06681737,0.1336348 +0.46250004,0.1875,0.13363484,0.06681742 +0.4625,0.1875,0.11905509,0.11905509 +0.46249998,0.1875,0.08418462,0.16836931 +0.46249998,0.1875,0.16836926,0.08418465 +0.4625,0.2125,0.07499999,0.075 +0.46249998,0.2125,0.053032964,0.10606603 +0.4625,0.2125,0.10606605,0.05303301 +0.4625,0.21249999,0.094494045,0.094494075 +0.46249998,0.2125,0.06681737,0.1336348 +0.46250004,0.2125,0.13363484,0.0668174 +0.4625,0.2125,0.11905509,0.11905509 +0.46249998,0.2125,0.08418462,0.16836931 +0.46249998,0.2125,0.16836926,0.08418465 +0.4625,0.23750001,0.07499999,0.075 +0.46249998,0.2375,0.053032964,0.10606602 +0.4625,0.2375,0.10606605,0.053033024 +0.4625,0.2375,0.094494045,0.094494075 +0.46249998,0.23750001,0.06681737,0.13363482 +0.46250004,0.2375,0.13363484,0.06681743 +0.4625,0.2375,0.11905509,0.11905506 +0.46249998,0.2375,0.08418462,0.16836932 +0.46249998,0.23750001,0.16836926,0.08418466 +0.4625,0.2625,0.07499999,0.07500002 +0.46249998,0.2625,0.053032964,0.10606603 +0.4625,0.2625,0.10606605,0.053033024 +0.4625,0.2625,0.094494045,0.094494075 +0.46249998,0.2625,0.06681737,0.13363479 +0.46250004,0.2625,0.13363484,0.06681743 +0.4625,0.2625,0.11905509,0.11905508 +0.46249998,0.2625,0.08418462,0.1683693 +0.46249998,0.2625,0.16836926,0.08418463 +0.4625,0.2875,0.07499999,0.07499999 +0.46249998,0.2875,0.053032964,0.10606603 +0.4625,0.28750002,0.10606605,0.053033024 +0.4625,0.2875,0.094494045,0.094494045 +0.46249998,0.2875,0.06681737,0.1336348 +0.46250004,0.28750002,0.13363484,0.06681743 +0.4625,0.2875,0.11905509,0.11905508 +0.46249998,0.2875,0.08418462,0.1683693 +0.46249998,0.2875,0.16836926,0.08418465 +0.4625,0.3125,0.07499999,0.07499999 +0.46249998,0.3125,0.053032964,0.10606605 +0.4625,0.3125,0.10606605,0.053032994 +0.4625,0.3125,0.094494045,0.094494045 +0.46249998,0.3125,0.06681737,0.1336348 +0.46250004,0.3125,0.13363484,0.0668174 +0.4625,0.3125,0.11905509,0.11905509 +0.46249998,0.3125,0.08418462,0.1683693 +0.46249998,0.3125,0.16836926,0.08418465 +0.4625,0.3375,0.07499999,0.07499999 +0.46249998,0.3375,0.053032964,0.10606605 +0.4625,0.33749998,0.10606605,0.053033024 +0.4625,0.3375,0.094494045,0.094494045 +0.46249998,0.33750004,0.06681737,0.13363484 +0.46250004,0.33749998,0.13363484,0.06681743 +0.4625,0.3375,0.11905509,0.11905509 +0.46249998,0.3375,0.08418462,0.1683693 +0.46249998,0.3375,0.16836926,0.08418465 +0.4625,0.3625,0.07499999,0.07500002 +0.46249998,0.3625,0.053032964,0.10606602 +0.4625,0.3625,0.10606605,0.053033024 +0.4625,0.3625,0.094494045,0.094494075 +0.46249998,0.3625,0.06681737,0.1336348 +0.46250004,0.3625,0.13363484,0.06681743 +0.4625,0.3625,0.11905509,0.11905506 +0.46249998,0.3625,0.08418462,0.1683693 +0.46249998,0.3625,0.16836926,0.08418465 +0.4625,0.3875,0.07499999,0.07500002 +0.46249998,0.3875,0.053032964,0.10606602 +0.4625,0.3875,0.10606605,0.053032994 +0.4625,0.3875,0.094494045,0.094494075 +0.46249998,0.3875,0.06681737,0.13363484 +0.46250004,0.3875,0.13363484,0.0668174 +0.4625,0.3875,0.11905509,0.11905506 +0.46249998,0.3875,0.08418462,0.1683693 +0.46249998,0.3875,0.16836926,0.08418465 +0.4625,0.4125,0.07499999,0.07499999 +0.46249998,0.4125,0.053032964,0.10606605 +0.4625,0.4125,0.10606605,0.053032994 +0.4625,0.4125,0.094494045,0.094494045 +0.46249998,0.41250002,0.06681737,0.13363484 +0.46250004,0.4125,0.13363484,0.0668174 +0.4625,0.4125,0.11905509,0.11905509 +0.46249998,0.4125,0.08418462,0.1683693 +0.46249998,0.4125,0.16836926,0.08418465 +0.4625,0.4375,0.07499999,0.07499999 +0.46249998,0.4375,0.053032964,0.10606605 +0.4625,0.4375,0.10606605,0.053032994 +0.4625,0.4375,0.094494045,0.094494045 +0.46249998,0.4375,0.06681737,0.1336348 +0.46250004,0.4375,0.13363484,0.0668174 +0.4625,0.4375,0.11905509,0.11905509 +0.46249998,0.4375,0.08418462,0.1683693 +0.46249998,0.4375,0.16836926,0.08418465 +0.4625,0.4625,0.07499999,0.07499999 +0.46249998,0.4625,0.053032964,0.10606605 +0.4625,0.46249998,0.10606605,0.053032964 +0.4625,0.4625,0.094494045,0.094494045 +0.46249998,0.46250004,0.06681737,0.13363484 +0.46250004,0.46249998,0.13363484,0.06681737 +0.4625,0.4625,0.11905509,0.11905509 +0.46249998,0.46249998,0.08418462,0.16836926 +0.46249998,0.46249998,0.16836926,0.08418462 +0.4625,0.48749998,0.07499999,0.07499999 +0.46249998,0.4875,0.053032964,0.10606602 +0.4625,0.4875,0.10606605,0.053032994 +0.4625,0.48749998,0.094494045,0.094494045 +0.46249998,0.4875,0.06681737,0.13363484 +0.46250004,0.4875,0.13363484,0.0668174 +0.4625,0.4875,0.11905509,0.11905506 +0.46249998,0.4875,0.08418462,0.1683693 +0.46249998,0.4875,0.16836926,0.08418465 +0.4625,0.5125,0.07499999,0.07500002 +0.46249998,0.51250005,0.053032964,0.10606605 +0.4625,0.5125,0.10606605,0.053032964 +0.4625,0.5125,0.094494045,0.094494075 +0.46249998,0.51250005,0.06681737,0.13363487 +0.46250004,0.5125,0.13363484,0.06681737 +0.4625,0.51250005,0.11905509,0.11905509 +0.46249998,0.5125,0.08418462,0.1683693 +0.46249998,0.5125,0.16836926,0.08418465 +0.4625,0.5375,0.07499999,0.07499999 +0.46249998,0.5375,0.053032964,0.10606605 +0.4625,0.5375,0.10606605,0.053032935 +0.4625,0.5375,0.094494045,0.094494045 +0.46249998,0.5375,0.06681737,0.13363487 +0.46250004,0.5375,0.13363484,0.06681734 +0.4625,0.5375,0.11905509,0.11905509 +0.46249998,0.5375,0.08418462,0.16836932 +0.46249998,0.5375,0.16836926,0.08418468 +0.4625,0.5625,0.07499999,0.07500005 +0.46249998,0.5625,0.053032964,0.10606599 +0.4625,0.5625,0.10606605,0.053032994 +0.4625,0.5625,0.094494045,0.094494104 +0.46249998,0.5625,0.06681737,0.13363484 +0.46250004,0.5625,0.13363484,0.0668174 +0.4625,0.5625,0.11905509,0.11905503 +0.46249998,0.5625,0.08418462,0.1683693 +0.46249998,0.5625,0.16836926,0.08418465 +0.4625,0.5875,0.07499999,0.07499999 +0.46249998,0.5875,0.053032964,0.10606605 +0.4625,0.5875,0.10606605,0.053032935 +0.4625,0.5875,0.094494045,0.094494045 +0.46249998,0.5875,0.06681737,0.13363487 +0.46250004,0.5875,0.13363484,0.06681734 +0.4625,0.5875,0.11905509,0.11905509 +0.46249998,0.5875,0.08418462,0.1683693 +0.46249998,0.5875,0.16836926,0.08418465 +0.4625,0.61249995,0.07499999,0.07499999 +0.46249998,0.61249995,0.053032964,0.10606605 +0.4625,0.6125,0.10606605,0.053032994 +0.4625,0.61249995,0.094494045,0.094494045 +0.46249998,0.61249995,0.06681737,0.13363487 +0.46250004,0.6125,0.13363484,0.0668174 +0.4625,0.61249995,0.11905509,0.11905509 +0.46249998,0.6125,0.08418462,0.1683693 +0.46249998,0.6125,0.16836926,0.08418465 +0.4625,0.63750005,0.07499999,0.07499999 +0.46249998,0.63750005,0.053032964,0.10606605 +0.4625,0.6375,0.10606605,0.053032994 +0.4625,0.63750005,0.094494045,0.094494045 +0.46249998,0.63750005,0.06681737,0.13363487 +0.46250004,0.6375,0.13363484,0.0668174 +0.4625,0.63750005,0.11905509,0.11905509 +0.46249998,0.6375,0.08418462,0.1683693 +0.46249998,0.6375,0.16836926,0.08418465 +0.4625,0.6625,0.07499999,0.07499999 +0.46249998,0.6625,0.053032964,0.10606605 +0.4625,0.6625,0.10606605,0.053032935 +0.4625,0.6625,0.094494045,0.094494045 +0.46249998,0.6625,0.06681737,0.13363487 +0.46250004,0.6625,0.13363484,0.06681734 +0.4625,0.6625,0.11905509,0.11905509 +0.46249998,0.6625,0.08418462,0.1683693 +0.46249998,0.6625,0.16836926,0.08418465 +0.4625,0.6875,0.07499999,0.07500005 +0.46249998,0.6875,0.053032964,0.10606599 +0.4625,0.6875,0.10606605,0.053032994 +0.4625,0.6875,0.094494045,0.094494104 +0.46249998,0.6875,0.06681737,0.1336348 +0.46250004,0.6875,0.13363484,0.0668174 +0.4625,0.6875,0.11905509,0.11905503 +0.46249998,0.6875,0.08418462,0.1683693 +0.46249998,0.6875,0.16836926,0.08418465 +0.4625,0.7125,0.07499999,0.07499999 +0.46249998,0.7125,0.053032964,0.10606605 +0.4625,0.7125,0.10606605,0.053032935 +0.4625,0.7125,0.094494045,0.094494045 +0.46249998,0.7125,0.06681737,0.13363487 +0.46250004,0.7125,0.13363484,0.06681734 +0.4625,0.7125,0.11905509,0.11905509 +0.46249998,0.7125,0.08418462,0.1683693 +0.46249998,0.7125,0.16836926,0.08418465 +0.4625,0.73749995,0.07499999,0.07499999 +0.46249998,0.73749995,0.053032964,0.10606605 +0.4625,0.7375,0.10606605,0.053032994 +0.4625,0.73749995,0.094494045,0.094494045 +0.46249998,0.73749995,0.06681737,0.1336348 +0.46250004,0.7375,0.13363484,0.0668174 +0.4625,0.73749995,0.11905509,0.11905509 +0.46249998,0.7375,0.08418462,0.1683693 +0.46249998,0.7375,0.16836926,0.08418465 +0.4625,0.76250005,0.07499999,0.07499999 +0.46249998,0.7625,0.053032964,0.10606599 +0.4625,0.7625,0.10606605,0.053032994 +0.4625,0.76250005,0.094494045,0.094494045 +0.46249998,0.7625,0.06681737,0.1336348 +0.46250004,0.7625,0.13363484,0.0668174 +0.4625,0.7625,0.11905509,0.11905503 +0.46249998,0.7625,0.08418462,0.1683693 +0.46249998,0.7625,0.16836926,0.08418465 +0.4625,0.7875,0.07499999,0.07499999 +0.46249998,0.78749996,0.053032964,0.10606599 +0.4625,0.7875,0.10606605,0.053032994 +0.4625,0.7875,0.094494045,0.094494045 +0.46249998,0.78749996,0.06681737,0.1336348 +0.46250004,0.7875,0.13363484,0.0668174 +0.4625,0.78749996,0.11905509,0.11905503 +0.46249998,0.7875,0.08418462,0.1683693 +0.46249998,0.7875,0.16836926,0.08418465 +0.4625,0.8125,0.07499999,0.07500005 +0.46249998,0.8125,0.053032964,0.10606599 +0.4625,0.8125,0.10606605,0.053033054 +0.4625,0.8125,0.094494045,0.094494104 +0.46249998,0.8125,0.06681737,0.1336348 +0.46250004,0.8125,0.13363484,0.06681746 +0.4625,0.8125,0.11905509,0.11905503 +0.46249998,0.8125,0.08418462,0.1683693 +0.46249998,0.8125,0.16836926,0.08418465 +0.4625,0.8375,0.07499999,0.07499999 +0.46249998,0.8375,0.053032964,0.10606599 +0.4625,0.8375,0.10606605,0.053033054 +0.4625,0.8375,0.094494045,0.094494045 +0.46249998,0.8375,0.06681737,0.1336348 +0.46250004,0.8375,0.13363484,0.06681746 +0.4625,0.8375,0.11905509,0.11905503 +0.46249998,0.8375,0.08418462,0.1683693 +0.46249998,0.8375,0.16836926,0.08418465 +0.4625,0.86249995,0.07499999,0.07499999 +0.46249998,0.86249995,0.053032964,0.10606593 +0.4625,0.86249995,0.10606605,0.053033054 +0.4625,0.86249995,0.094494045,0.094494045 +0.46249998,0.86249995,0.06681737,0.1336348 +0.46250004,0.86249995,0.13363484,0.06681746 +0.4625,0.86249995,0.11905509,0.11905497 +0.46249998,0.8625,0.08418462,0.1683693 +0.46249998,0.8625,0.16836926,0.08418465 +0.4625,0.88750005,0.07499999,0.07499999 +0.46249998,0.88750005,0.053032964,0.10606593 +0.4625,0.88750005,0.10606605,0.053033054 +0.4625,0.88750005,0.094494045,0.094494045 +0.46249998,0.88750005,0.06681737,0.13363475 +0.46250004,0.88750005,0.13363484,0.06681746 +0.4625,0.88750005,0.11905509,0.11905497 +0.46249998,0.8875,0.08418462,0.1683693 +0.46249998,0.8875,0.16836926,0.08418465 +0.4625,0.9125,0.07499999,0.07499999 +0.46249998,0.9125,0.053032964,0.10606593 +0.4625,0.9125,0.10606605,0.053033054 +0.4625,0.9125,0.094494045,0.094494045 +0.46249998,0.9125,0.06681737,0.13363475 +0.46250004,0.9125,0.13363484,0.06681746 +0.4625,0.9125,0.11905509,0.11905497 +0.46249998,0.9125,0.08418462,0.1683693 +0.46249998,0.9125,0.16836926,0.08418465 +0.4625,0.9375,0.07499999,0.07500005 +0.46249998,0.9375,0.053032964,0.10606599 +0.4625,0.9375,0.10606605,0.053033113 +0.4625,0.9375,0.094494045,0.094494104 +0.46249998,0.9375,0.06681737,0.1336348 +0.46250004,0.9375,0.13363484,0.06681752 +0.4625,0.9375,0.11905509,0.11905503 +0.46249998,0.9375,0.08418462,0.1683693 +0.46249998,0.9375,0.16836926,0.08418465 +0.4625,0.9625,0.07499999,0.07499999 +0.46249998,0.9625,0.053032964,0.10606593 +0.4625,0.9625,0.10606605,0.053033054 +0.4625,0.9625,0.094494045,0.094494045 +0.46249998,0.9625,0.06681737,0.13363475 +0.46250004,0.9625,0.13363484,0.06681746 +0.4625,0.9625,0.11905509,0.11905497 +0.46249998,0.9625,0.08418462,0.1683693 +0.46249998,0.9625,0.16836926,0.08418465 +0.4625,0.98749995,0.07499999,0.07499999 +0.46249998,0.98749995,0.053032964,0.10606593 +0.4625,0.98749995,0.10606605,0.053033054 +0.4625,0.98749995,0.094494045,0.094494045 +0.46249998,0.98749995,0.06681737,0.13363475 +0.46250004,0.98749995,0.13363484,0.06681746 +0.4625,0.98749995,0.11905509,0.11905497 +0.46249998,0.98749995,0.08418462,0.16836923 +0.46249998,0.98749995,0.16836926,0.08418459 +0.48749998,0.0125,0.07499999,0.075 +0.4875,0.012499997,0.053032994,0.10606602 +0.4875,0.012499999,0.10606602,0.05303301 +0.48749998,0.012499999,0.094494045,0.09449408 +0.4875,0.012500001,0.0668174,0.1336348 +0.4875,0.012499999,0.13363484,0.0668174 +0.4875,0.012500001,0.11905506,0.11905508 +0.4875,0.012499999,0.08418465,0.1683693 +0.4875,0.012500002,0.1683693,0.084184654 +0.48749998,0.0375,0.07499999,0.075 +0.4875,0.037499998,0.053032994,0.10606601 +0.4875,0.0375,0.10606602,0.05303301 +0.48749998,0.0375,0.094494045,0.094494075 +0.4875,0.0375,0.0668174,0.1336348 +0.4875,0.0375,0.13363484,0.0668174 +0.4875,0.0375,0.11905506,0.11905508 +0.4875,0.0375,0.08418465,0.16836931 +0.4875,0.0375,0.1683693,0.08418466 +0.48749998,0.0625,0.07499999,0.075 +0.4875,0.0625,0.053032994,0.10606602 +0.4875,0.0625,0.10606602,0.05303301 +0.48749998,0.0625,0.094494045,0.094494075 +0.4875,0.0625,0.0668174,0.1336348 +0.4875,0.0625,0.13363484,0.0668174 +0.4875,0.0625,0.11905506,0.11905508 +0.4875,0.0625,0.08418465,0.16836932 +0.4875,0.0625,0.1683693,0.08418465 +0.48749998,0.0875,0.07499999,0.075 +0.4875,0.08749999,0.053032994,0.10606601 +0.4875,0.087500006,0.10606602,0.053033013 +0.48749998,0.087500006,0.094494045,0.09449408 +0.4875,0.087500006,0.0668174,0.1336348 +0.4875,0.0875,0.13363484,0.0668174 +0.4875,0.0875,0.11905506,0.11905508 +0.4875,0.0875,0.08418465,0.16836931 +0.4875,0.087500006,0.1683693,0.084184654 +0.48749998,0.112500004,0.07499999,0.075 +0.4875,0.1125,0.053032994,0.10606601 +0.4875,0.112500004,0.10606602,0.05303301 +0.48749998,0.1125,0.094494045,0.094494075 +0.4875,0.1125,0.0668174,0.1336348 +0.4875,0.1125,0.13363484,0.0668174 +0.4875,0.1125,0.11905506,0.119055085 +0.4875,0.112500004,0.08418465,0.16836931 +0.4875,0.1125,0.1683693,0.08418465 +0.48749998,0.1375,0.07499999,0.074999996 +0.4875,0.1375,0.053032994,0.10606602 +0.4875,0.1375,0.10606602,0.053033024 +0.48749998,0.1375,0.094494045,0.09449408 +0.4875,0.1375,0.0668174,0.1336348 +0.4875,0.1375,0.13363484,0.0668174 +0.4875,0.13749999,0.11905506,0.11905508 +0.4875,0.1375,0.08418465,0.1683693 +0.4875,0.1375,0.1683693,0.084184654 +0.48749998,0.1625,0.07499999,0.075 +0.4875,0.16250001,0.053032994,0.106066026 +0.4875,0.1625,0.10606602,0.05303301 +0.48749998,0.1625,0.094494045,0.094494075 +0.4875,0.1625,0.0668174,0.1336348 +0.4875,0.1625,0.13363484,0.0668174 +0.4875,0.1625,0.11905506,0.11905508 +0.4875,0.1625,0.08418465,0.1683693 +0.4875,0.1625,0.1683693,0.08418464 +0.48749998,0.1875,0.07499999,0.07499999 +0.4875,0.1875,0.053032994,0.10606603 +0.4875,0.1875,0.10606602,0.053033024 +0.48749998,0.1875,0.094494045,0.09449406 +0.4875,0.1875,0.0668174,0.1336348 +0.4875,0.1875,0.13363484,0.06681742 +0.4875,0.1875,0.11905506,0.11905509 +0.4875,0.1875,0.08418465,0.16836931 +0.4875,0.1875,0.1683693,0.08418465 +0.48749998,0.2125,0.07499999,0.075 +0.4875,0.2125,0.053032994,0.10606603 +0.4875,0.2125,0.10606602,0.05303301 +0.48749998,0.21249999,0.094494045,0.094494075 +0.4875,0.2125,0.0668174,0.1336348 +0.4875,0.2125,0.13363484,0.0668174 +0.4875,0.2125,0.11905506,0.11905509 +0.4875,0.2125,0.08418465,0.16836931 +0.4875,0.2125,0.1683693,0.08418465 +0.48749998,0.23750001,0.07499999,0.075 +0.4875,0.2375,0.053032994,0.10606602 +0.4875,0.2375,0.10606602,0.053033024 +0.48749998,0.2375,0.094494045,0.094494075 +0.4875,0.23750001,0.0668174,0.13363482 +0.4875,0.2375,0.13363484,0.06681743 +0.4875,0.2375,0.11905506,0.11905506 +0.4875,0.2375,0.08418465,0.16836932 +0.4875,0.23750001,0.1683693,0.08418466 +0.48749998,0.2625,0.07499999,0.07500002 +0.4875,0.2625,0.053032994,0.10606603 +0.4875,0.2625,0.10606602,0.053033024 +0.48749998,0.2625,0.094494045,0.094494075 +0.4875,0.2625,0.0668174,0.13363479 +0.4875,0.2625,0.13363484,0.06681743 +0.4875,0.2625,0.11905506,0.11905508 +0.4875,0.2625,0.08418465,0.1683693 +0.4875,0.2625,0.1683693,0.08418463 +0.48749998,0.2875,0.07499999,0.07499999 +0.4875,0.2875,0.053032994,0.10606603 +0.4875,0.28750002,0.10606602,0.053033024 +0.48749998,0.2875,0.094494045,0.094494045 +0.4875,0.2875,0.0668174,0.1336348 +0.4875,0.28750002,0.13363484,0.06681743 +0.4875,0.2875,0.11905506,0.11905508 +0.4875,0.2875,0.08418465,0.1683693 +0.4875,0.2875,0.1683693,0.08418465 +0.48749998,0.3125,0.07499999,0.07499999 +0.4875,0.3125,0.053032994,0.10606605 +0.4875,0.3125,0.10606602,0.053032994 +0.48749998,0.3125,0.094494045,0.094494045 +0.4875,0.3125,0.0668174,0.1336348 +0.4875,0.3125,0.13363484,0.0668174 +0.4875,0.3125,0.11905506,0.11905509 +0.4875,0.3125,0.08418465,0.1683693 +0.4875,0.3125,0.1683693,0.08418465 +0.48749998,0.3375,0.07499999,0.07499999 +0.4875,0.3375,0.053032994,0.10606605 +0.4875,0.33749998,0.10606602,0.053033024 +0.48749998,0.3375,0.094494045,0.094494045 +0.4875,0.33750004,0.0668174,0.13363484 +0.4875,0.33749998,0.13363484,0.06681743 +0.4875,0.3375,0.11905506,0.11905509 +0.4875,0.3375,0.08418465,0.1683693 +0.4875,0.3375,0.1683693,0.08418465 +0.48749998,0.3625,0.07499999,0.07500002 +0.4875,0.3625,0.053032994,0.10606602 +0.4875,0.3625,0.10606602,0.053033024 +0.48749998,0.3625,0.094494045,0.094494075 +0.4875,0.3625,0.0668174,0.1336348 +0.4875,0.3625,0.13363484,0.06681743 +0.4875,0.3625,0.11905506,0.11905506 +0.4875,0.3625,0.08418465,0.1683693 +0.4875,0.3625,0.1683693,0.08418465 +0.48749998,0.3875,0.07499999,0.07500002 +0.4875,0.3875,0.053032994,0.10606602 +0.4875,0.3875,0.10606602,0.053032994 +0.48749998,0.3875,0.094494045,0.094494075 +0.4875,0.3875,0.0668174,0.13363484 +0.4875,0.3875,0.13363484,0.0668174 +0.4875,0.3875,0.11905506,0.11905506 +0.4875,0.3875,0.08418465,0.1683693 +0.4875,0.3875,0.1683693,0.08418465 +0.48749998,0.4125,0.07499999,0.07499999 +0.4875,0.4125,0.053032994,0.10606605 +0.4875,0.4125,0.10606602,0.053032994 +0.48749998,0.4125,0.094494045,0.094494045 +0.4875,0.41250002,0.0668174,0.13363484 +0.4875,0.4125,0.13363484,0.0668174 +0.4875,0.4125,0.11905506,0.11905509 +0.4875,0.4125,0.08418465,0.1683693 +0.4875,0.4125,0.1683693,0.08418465 +0.48749998,0.4375,0.07499999,0.07499999 +0.4875,0.4375,0.053032994,0.10606605 +0.4875,0.4375,0.10606602,0.053032994 +0.48749998,0.4375,0.094494045,0.094494045 +0.4875,0.4375,0.0668174,0.1336348 +0.4875,0.4375,0.13363484,0.0668174 +0.4875,0.4375,0.11905506,0.11905509 +0.4875,0.4375,0.08418465,0.1683693 +0.4875,0.4375,0.1683693,0.08418465 +0.48749998,0.4625,0.07499999,0.07499999 +0.4875,0.4625,0.053032994,0.10606605 +0.4875,0.46249998,0.10606602,0.053032964 +0.48749998,0.4625,0.094494045,0.094494045 +0.4875,0.46250004,0.0668174,0.13363484 +0.4875,0.46249998,0.13363484,0.06681737 +0.4875,0.4625,0.11905506,0.11905509 +0.4875,0.46249998,0.08418465,0.16836926 +0.4875,0.46249998,0.1683693,0.08418462 +0.48749998,0.48749998,0.07499999,0.07499999 +0.4875,0.4875,0.053032994,0.10606602 +0.4875,0.4875,0.10606602,0.053032994 +0.48749998,0.48749998,0.094494045,0.094494045 +0.4875,0.4875,0.0668174,0.13363484 +0.4875,0.4875,0.13363484,0.0668174 +0.4875,0.4875,0.11905506,0.11905506 +0.4875,0.4875,0.08418465,0.1683693 +0.4875,0.4875,0.1683693,0.08418465 +0.48749998,0.5125,0.07499999,0.07500002 +0.4875,0.51250005,0.053032994,0.10606605 +0.4875,0.5125,0.10606602,0.053032964 +0.48749998,0.5125,0.094494045,0.094494075 +0.4875,0.51250005,0.0668174,0.13363487 +0.4875,0.5125,0.13363484,0.06681737 +0.4875,0.51250005,0.11905506,0.11905509 +0.4875,0.5125,0.08418465,0.1683693 +0.4875,0.5125,0.1683693,0.08418465 +0.48749998,0.5375,0.07499999,0.07499999 +0.4875,0.5375,0.053032994,0.10606605 +0.4875,0.5375,0.10606602,0.053032935 +0.48749998,0.5375,0.094494045,0.094494045 +0.4875,0.5375,0.0668174,0.13363487 +0.4875,0.5375,0.13363484,0.06681734 +0.4875,0.5375,0.11905506,0.11905509 +0.4875,0.5375,0.08418465,0.16836932 +0.4875,0.5375,0.1683693,0.08418468 +0.48749998,0.5625,0.07499999,0.07500005 +0.4875,0.5625,0.053032994,0.10606599 +0.4875,0.5625,0.10606602,0.053032994 +0.48749998,0.5625,0.094494045,0.094494104 +0.4875,0.5625,0.0668174,0.13363484 +0.4875,0.5625,0.13363484,0.0668174 +0.4875,0.5625,0.11905506,0.11905503 +0.4875,0.5625,0.08418465,0.1683693 +0.4875,0.5625,0.1683693,0.08418465 +0.48749998,0.5875,0.07499999,0.07499999 +0.4875,0.5875,0.053032994,0.10606605 +0.4875,0.5875,0.10606602,0.053032935 +0.48749998,0.5875,0.094494045,0.094494045 +0.4875,0.5875,0.0668174,0.13363487 +0.4875,0.5875,0.13363484,0.06681734 +0.4875,0.5875,0.11905506,0.11905509 +0.4875,0.5875,0.08418465,0.1683693 +0.4875,0.5875,0.1683693,0.08418465 +0.48749998,0.61249995,0.07499999,0.07499999 +0.4875,0.61249995,0.053032994,0.10606605 +0.4875,0.6125,0.10606602,0.053032994 +0.48749998,0.61249995,0.094494045,0.094494045 +0.4875,0.61249995,0.0668174,0.13363487 +0.4875,0.6125,0.13363484,0.0668174 +0.4875,0.61249995,0.11905506,0.11905509 +0.4875,0.6125,0.08418465,0.1683693 +0.4875,0.6125,0.1683693,0.08418465 +0.48749998,0.63750005,0.07499999,0.07499999 +0.4875,0.63750005,0.053032994,0.10606605 +0.4875,0.6375,0.10606602,0.053032994 +0.48749998,0.63750005,0.094494045,0.094494045 +0.4875,0.63750005,0.0668174,0.13363487 +0.4875,0.6375,0.13363484,0.0668174 +0.4875,0.63750005,0.11905506,0.11905509 +0.4875,0.6375,0.08418465,0.1683693 +0.4875,0.6375,0.1683693,0.08418465 +0.48749998,0.6625,0.07499999,0.07499999 +0.4875,0.6625,0.053032994,0.10606605 +0.4875,0.6625,0.10606602,0.053032935 +0.48749998,0.6625,0.094494045,0.094494045 +0.4875,0.6625,0.0668174,0.13363487 +0.4875,0.6625,0.13363484,0.06681734 +0.4875,0.6625,0.11905506,0.11905509 +0.4875,0.6625,0.08418465,0.1683693 +0.4875,0.6625,0.1683693,0.08418465 +0.48749998,0.6875,0.07499999,0.07500005 +0.4875,0.6875,0.053032994,0.10606599 +0.4875,0.6875,0.10606602,0.053032994 +0.48749998,0.6875,0.094494045,0.094494104 +0.4875,0.6875,0.0668174,0.1336348 +0.4875,0.6875,0.13363484,0.0668174 +0.4875,0.6875,0.11905506,0.11905503 +0.4875,0.6875,0.08418465,0.1683693 +0.4875,0.6875,0.1683693,0.08418465 +0.48749998,0.7125,0.07499999,0.07499999 +0.4875,0.7125,0.053032994,0.10606605 +0.4875,0.7125,0.10606602,0.053032935 +0.48749998,0.7125,0.094494045,0.094494045 +0.4875,0.7125,0.0668174,0.13363487 +0.4875,0.7125,0.13363484,0.06681734 +0.4875,0.7125,0.11905506,0.11905509 +0.4875,0.7125,0.08418465,0.1683693 +0.4875,0.7125,0.1683693,0.08418465 +0.48749998,0.73749995,0.07499999,0.07499999 +0.4875,0.73749995,0.053032994,0.10606605 +0.4875,0.7375,0.10606602,0.053032994 +0.48749998,0.73749995,0.094494045,0.094494045 +0.4875,0.73749995,0.0668174,0.1336348 +0.4875,0.7375,0.13363484,0.0668174 +0.4875,0.73749995,0.11905506,0.11905509 +0.4875,0.7375,0.08418465,0.1683693 +0.4875,0.7375,0.1683693,0.08418465 +0.48749998,0.76250005,0.07499999,0.07499999 +0.4875,0.7625,0.053032994,0.10606599 +0.4875,0.7625,0.10606602,0.053032994 +0.48749998,0.76250005,0.094494045,0.094494045 +0.4875,0.7625,0.0668174,0.1336348 +0.4875,0.7625,0.13363484,0.0668174 +0.4875,0.7625,0.11905506,0.11905503 +0.4875,0.7625,0.08418465,0.1683693 +0.4875,0.7625,0.1683693,0.08418465 +0.48749998,0.7875,0.07499999,0.07499999 +0.4875,0.78749996,0.053032994,0.10606599 +0.4875,0.7875,0.10606602,0.053032994 +0.48749998,0.7875,0.094494045,0.094494045 +0.4875,0.78749996,0.0668174,0.1336348 +0.4875,0.7875,0.13363484,0.0668174 +0.4875,0.78749996,0.11905506,0.11905503 +0.4875,0.7875,0.08418465,0.1683693 +0.4875,0.7875,0.1683693,0.08418465 +0.48749998,0.8125,0.07499999,0.07500005 +0.4875,0.8125,0.053032994,0.10606599 +0.4875,0.8125,0.10606602,0.053033054 +0.48749998,0.8125,0.094494045,0.094494104 +0.4875,0.8125,0.0668174,0.1336348 +0.4875,0.8125,0.13363484,0.06681746 +0.4875,0.8125,0.11905506,0.11905503 +0.4875,0.8125,0.08418465,0.1683693 +0.4875,0.8125,0.1683693,0.08418465 +0.48749998,0.8375,0.07499999,0.07499999 +0.4875,0.8375,0.053032994,0.10606599 +0.4875,0.8375,0.10606602,0.053033054 +0.48749998,0.8375,0.094494045,0.094494045 +0.4875,0.8375,0.0668174,0.1336348 +0.4875,0.8375,0.13363484,0.06681746 +0.4875,0.8375,0.11905506,0.11905503 +0.4875,0.8375,0.08418465,0.1683693 +0.4875,0.8375,0.1683693,0.08418465 +0.48749998,0.86249995,0.07499999,0.07499999 +0.4875,0.86249995,0.053032994,0.10606593 +0.4875,0.86249995,0.10606602,0.053033054 +0.48749998,0.86249995,0.094494045,0.094494045 +0.4875,0.86249995,0.0668174,0.1336348 +0.4875,0.86249995,0.13363484,0.06681746 +0.4875,0.86249995,0.11905506,0.11905497 +0.4875,0.8625,0.08418465,0.1683693 +0.4875,0.8625,0.1683693,0.08418465 +0.48749998,0.88750005,0.07499999,0.07499999 +0.4875,0.88750005,0.053032994,0.10606593 +0.4875,0.88750005,0.10606602,0.053033054 +0.48749998,0.88750005,0.094494045,0.094494045 +0.4875,0.88750005,0.0668174,0.13363475 +0.4875,0.88750005,0.13363484,0.06681746 +0.4875,0.88750005,0.11905506,0.11905497 +0.4875,0.8875,0.08418465,0.1683693 +0.4875,0.8875,0.1683693,0.08418465 +0.48749998,0.9125,0.07499999,0.07499999 +0.4875,0.9125,0.053032994,0.10606593 +0.4875,0.9125,0.10606602,0.053033054 +0.48749998,0.9125,0.094494045,0.094494045 +0.4875,0.9125,0.0668174,0.13363475 +0.4875,0.9125,0.13363484,0.06681746 +0.4875,0.9125,0.11905506,0.11905497 +0.4875,0.9125,0.08418465,0.1683693 +0.4875,0.9125,0.1683693,0.08418465 +0.48749998,0.9375,0.07499999,0.07500005 +0.4875,0.9375,0.053032994,0.10606599 +0.4875,0.9375,0.10606602,0.053033113 +0.48749998,0.9375,0.094494045,0.094494104 +0.4875,0.9375,0.0668174,0.1336348 +0.4875,0.9375,0.13363484,0.06681752 +0.4875,0.9375,0.11905506,0.11905503 +0.4875,0.9375,0.08418465,0.1683693 +0.4875,0.9375,0.1683693,0.08418465 +0.48749998,0.9625,0.07499999,0.07499999 +0.4875,0.9625,0.053032994,0.10606593 +0.4875,0.9625,0.10606602,0.053033054 +0.48749998,0.9625,0.094494045,0.094494045 +0.4875,0.9625,0.0668174,0.13363475 +0.4875,0.9625,0.13363484,0.06681746 +0.4875,0.9625,0.11905506,0.11905497 +0.4875,0.9625,0.08418465,0.1683693 +0.4875,0.9625,0.1683693,0.08418465 +0.48749998,0.98749995,0.07499999,0.07499999 +0.4875,0.98749995,0.053032994,0.10606593 +0.4875,0.98749995,0.10606602,0.053033054 +0.48749998,0.98749995,0.094494045,0.094494045 +0.4875,0.98749995,0.0668174,0.13363475 +0.4875,0.98749995,0.13363484,0.06681746 +0.4875,0.98749995,0.11905506,0.11905497 +0.4875,0.98749995,0.08418465,0.16836923 +0.4875,0.98749995,0.1683693,0.08418459 +0.5125,0.0125,0.07500002,0.075 +0.5125,0.012499997,0.053032964,0.10606602 +0.51250005,0.012499999,0.10606605,0.05303301 +0.5125,0.012499999,0.094494075,0.09449408 +0.5125,0.012500001,0.06681737,0.1336348 +0.51250005,0.012499999,0.13363487,0.0668174 +0.51250005,0.012500001,0.11905509,0.11905508 +0.5125,0.012499999,0.08418465,0.1683693 +0.5125,0.012500002,0.1683693,0.084184654 +0.5125,0.0375,0.07500002,0.075 +0.5125,0.037499998,0.053032964,0.10606601 +0.51250005,0.0375,0.10606605,0.05303301 +0.5125,0.0375,0.094494075,0.094494075 +0.5125,0.0375,0.06681737,0.1336348 +0.51250005,0.0375,0.13363487,0.0668174 +0.51250005,0.0375,0.11905509,0.11905508 +0.5125,0.0375,0.08418465,0.16836931 +0.5125,0.0375,0.1683693,0.08418466 +0.5125,0.0625,0.07500002,0.075 +0.5125,0.0625,0.053032964,0.10606602 +0.51250005,0.0625,0.10606605,0.05303301 +0.5125,0.0625,0.094494075,0.094494075 +0.5125,0.0625,0.06681737,0.1336348 +0.51250005,0.0625,0.13363487,0.0668174 +0.51250005,0.0625,0.11905509,0.11905508 +0.5125,0.0625,0.08418465,0.16836932 +0.5125,0.0625,0.1683693,0.08418465 +0.5125,0.0875,0.07500002,0.075 +0.5125,0.08749999,0.053032964,0.10606601 +0.51250005,0.087500006,0.10606605,0.053033013 +0.5125,0.087500006,0.094494075,0.09449408 +0.5125,0.087500006,0.06681737,0.1336348 +0.51250005,0.0875,0.13363487,0.0668174 +0.51250005,0.0875,0.11905509,0.11905508 +0.5125,0.0875,0.08418465,0.16836931 +0.5125,0.087500006,0.1683693,0.084184654 +0.5125,0.112500004,0.07500002,0.075 +0.5125,0.1125,0.053032964,0.10606601 +0.51250005,0.112500004,0.10606605,0.05303301 +0.5125,0.1125,0.094494075,0.094494075 +0.5125,0.1125,0.06681737,0.1336348 +0.51250005,0.1125,0.13363487,0.0668174 +0.51250005,0.1125,0.11905509,0.119055085 +0.5125,0.112500004,0.08418465,0.16836931 +0.5125,0.1125,0.1683693,0.08418465 +0.5125,0.1375,0.07500002,0.074999996 +0.5125,0.1375,0.053032964,0.10606602 +0.51250005,0.1375,0.10606605,0.053033024 +0.5125,0.1375,0.094494075,0.09449408 +0.5125,0.1375,0.06681737,0.1336348 +0.51250005,0.1375,0.13363487,0.0668174 +0.51250005,0.13749999,0.11905509,0.11905508 +0.5125,0.1375,0.08418465,0.1683693 +0.5125,0.1375,0.1683693,0.084184654 +0.5125,0.1625,0.07500002,0.075 +0.5125,0.16250001,0.053032964,0.106066026 +0.51250005,0.1625,0.10606605,0.05303301 +0.5125,0.1625,0.094494075,0.094494075 +0.5125,0.1625,0.06681737,0.1336348 +0.51250005,0.1625,0.13363487,0.0668174 +0.51250005,0.1625,0.11905509,0.11905508 +0.5125,0.1625,0.08418465,0.1683693 +0.5125,0.1625,0.1683693,0.08418464 +0.5125,0.1875,0.07500002,0.07499999 +0.5125,0.1875,0.053032964,0.10606603 +0.51250005,0.1875,0.10606605,0.053033024 +0.5125,0.1875,0.094494075,0.09449406 +0.5125,0.1875,0.06681737,0.1336348 +0.51250005,0.1875,0.13363487,0.06681742 +0.51250005,0.1875,0.11905509,0.11905509 +0.5125,0.1875,0.08418465,0.16836931 +0.5125,0.1875,0.1683693,0.08418465 +0.5125,0.2125,0.07500002,0.075 +0.5125,0.2125,0.053032964,0.10606603 +0.51250005,0.2125,0.10606605,0.05303301 +0.5125,0.21249999,0.094494075,0.094494075 +0.5125,0.2125,0.06681737,0.1336348 +0.51250005,0.2125,0.13363487,0.0668174 +0.51250005,0.2125,0.11905509,0.11905509 +0.5125,0.2125,0.08418465,0.16836931 +0.5125,0.2125,0.1683693,0.08418465 +0.5125,0.23750001,0.07500002,0.075 +0.5125,0.2375,0.053032964,0.10606602 +0.51250005,0.2375,0.10606605,0.053033024 +0.5125,0.2375,0.094494075,0.094494075 +0.5125,0.23750001,0.06681737,0.13363482 +0.51250005,0.2375,0.13363487,0.06681743 +0.51250005,0.2375,0.11905509,0.11905506 +0.5125,0.2375,0.08418465,0.16836932 +0.5125,0.23750001,0.1683693,0.08418466 +0.5125,0.2625,0.07500002,0.07500002 +0.5125,0.2625,0.053032964,0.10606603 +0.51250005,0.2625,0.10606605,0.053033024 +0.5125,0.2625,0.094494075,0.094494075 +0.5125,0.2625,0.06681737,0.13363479 +0.51250005,0.2625,0.13363487,0.06681743 +0.51250005,0.2625,0.11905509,0.11905508 +0.5125,0.2625,0.08418465,0.1683693 +0.5125,0.2625,0.1683693,0.08418463 +0.5125,0.2875,0.07500002,0.07499999 +0.5125,0.2875,0.053032964,0.10606603 +0.51250005,0.28750002,0.10606605,0.053033024 +0.5125,0.2875,0.094494075,0.094494045 +0.5125,0.2875,0.06681737,0.1336348 +0.51250005,0.28750002,0.13363487,0.06681743 +0.51250005,0.2875,0.11905509,0.11905508 +0.5125,0.2875,0.08418465,0.1683693 +0.5125,0.2875,0.1683693,0.08418465 +0.5125,0.3125,0.07500002,0.07499999 +0.5125,0.3125,0.053032964,0.10606605 +0.51250005,0.3125,0.10606605,0.053032994 +0.5125,0.3125,0.094494075,0.094494045 +0.5125,0.3125,0.06681737,0.1336348 +0.51250005,0.3125,0.13363487,0.0668174 +0.51250005,0.3125,0.11905509,0.11905509 +0.5125,0.3125,0.08418465,0.1683693 +0.5125,0.3125,0.1683693,0.08418465 +0.5125,0.3375,0.07500002,0.07499999 +0.5125,0.3375,0.053032964,0.10606605 +0.51250005,0.33749998,0.10606605,0.053033024 +0.5125,0.3375,0.094494075,0.094494045 +0.5125,0.33750004,0.06681737,0.13363484 +0.51250005,0.33749998,0.13363487,0.06681743 +0.51250005,0.3375,0.11905509,0.11905509 +0.5125,0.3375,0.08418465,0.1683693 +0.5125,0.3375,0.1683693,0.08418465 +0.5125,0.3625,0.07500002,0.07500002 +0.5125,0.3625,0.053032964,0.10606602 +0.51250005,0.3625,0.10606605,0.053033024 +0.5125,0.3625,0.094494075,0.094494075 +0.5125,0.3625,0.06681737,0.1336348 +0.51250005,0.3625,0.13363487,0.06681743 +0.51250005,0.3625,0.11905509,0.11905506 +0.5125,0.3625,0.08418465,0.1683693 +0.5125,0.3625,0.1683693,0.08418465 +0.5125,0.3875,0.07500002,0.07500002 +0.5125,0.3875,0.053032964,0.10606602 +0.51250005,0.3875,0.10606605,0.053032994 +0.5125,0.3875,0.094494075,0.094494075 +0.5125,0.3875,0.06681737,0.13363484 +0.51250005,0.3875,0.13363487,0.0668174 +0.51250005,0.3875,0.11905509,0.11905506 +0.5125,0.3875,0.08418465,0.1683693 +0.5125,0.3875,0.1683693,0.08418465 +0.5125,0.4125,0.07500002,0.07499999 +0.5125,0.4125,0.053032964,0.10606605 +0.51250005,0.4125,0.10606605,0.053032994 +0.5125,0.4125,0.094494075,0.094494045 +0.5125,0.41250002,0.06681737,0.13363484 +0.51250005,0.4125,0.13363487,0.0668174 +0.51250005,0.4125,0.11905509,0.11905509 +0.5125,0.4125,0.08418465,0.1683693 +0.5125,0.4125,0.1683693,0.08418465 +0.5125,0.4375,0.07500002,0.07499999 +0.5125,0.4375,0.053032964,0.10606605 +0.51250005,0.4375,0.10606605,0.053032994 +0.5125,0.4375,0.094494075,0.094494045 +0.5125,0.4375,0.06681737,0.1336348 +0.51250005,0.4375,0.13363487,0.0668174 +0.51250005,0.4375,0.11905509,0.11905509 +0.5125,0.4375,0.08418465,0.1683693 +0.5125,0.4375,0.1683693,0.08418465 +0.5125,0.4625,0.07500002,0.07499999 +0.5125,0.4625,0.053032964,0.10606605 +0.51250005,0.46249998,0.10606605,0.053032964 +0.5125,0.4625,0.094494075,0.094494045 +0.5125,0.46250004,0.06681737,0.13363484 +0.51250005,0.46249998,0.13363487,0.06681737 +0.51250005,0.4625,0.11905509,0.11905509 +0.5125,0.46249998,0.08418465,0.16836926 +0.5125,0.46249998,0.1683693,0.08418462 +0.5125,0.48749998,0.07500002,0.07499999 +0.5125,0.4875,0.053032964,0.10606602 +0.51250005,0.4875,0.10606605,0.053032994 +0.5125,0.48749998,0.094494075,0.094494045 +0.5125,0.4875,0.06681737,0.13363484 +0.51250005,0.4875,0.13363487,0.0668174 +0.51250005,0.4875,0.11905509,0.11905506 +0.5125,0.4875,0.08418465,0.1683693 +0.5125,0.4875,0.1683693,0.08418465 +0.5125,0.5125,0.07500002,0.07500002 +0.5125,0.51250005,0.053032964,0.10606605 +0.51250005,0.5125,0.10606605,0.053032964 +0.5125,0.5125,0.094494075,0.094494075 +0.5125,0.51250005,0.06681737,0.13363487 +0.51250005,0.5125,0.13363487,0.06681737 +0.51250005,0.51250005,0.11905509,0.11905509 +0.5125,0.5125,0.08418465,0.1683693 +0.5125,0.5125,0.1683693,0.08418465 +0.5125,0.5375,0.07500002,0.07499999 +0.5125,0.5375,0.053032964,0.10606605 +0.51250005,0.5375,0.10606605,0.053032935 +0.5125,0.5375,0.094494075,0.094494045 +0.5125,0.5375,0.06681737,0.13363487 +0.51250005,0.5375,0.13363487,0.06681734 +0.51250005,0.5375,0.11905509,0.11905509 +0.5125,0.5375,0.08418465,0.16836932 +0.5125,0.5375,0.1683693,0.08418468 +0.5125,0.5625,0.07500002,0.07500005 +0.5125,0.5625,0.053032964,0.10606599 +0.51250005,0.5625,0.10606605,0.053032994 +0.5125,0.5625,0.094494075,0.094494104 +0.5125,0.5625,0.06681737,0.13363484 +0.51250005,0.5625,0.13363487,0.0668174 +0.51250005,0.5625,0.11905509,0.11905503 +0.5125,0.5625,0.08418465,0.1683693 +0.5125,0.5625,0.1683693,0.08418465 +0.5125,0.5875,0.07500002,0.07499999 +0.5125,0.5875,0.053032964,0.10606605 +0.51250005,0.5875,0.10606605,0.053032935 +0.5125,0.5875,0.094494075,0.094494045 +0.5125,0.5875,0.06681737,0.13363487 +0.51250005,0.5875,0.13363487,0.06681734 +0.51250005,0.5875,0.11905509,0.11905509 +0.5125,0.5875,0.08418465,0.1683693 +0.5125,0.5875,0.1683693,0.08418465 +0.5125,0.61249995,0.07500002,0.07499999 +0.5125,0.61249995,0.053032964,0.10606605 +0.51250005,0.6125,0.10606605,0.053032994 +0.5125,0.61249995,0.094494075,0.094494045 +0.5125,0.61249995,0.06681737,0.13363487 +0.51250005,0.6125,0.13363487,0.0668174 +0.51250005,0.61249995,0.11905509,0.11905509 +0.5125,0.6125,0.08418465,0.1683693 +0.5125,0.6125,0.1683693,0.08418465 +0.5125,0.63750005,0.07500002,0.07499999 +0.5125,0.63750005,0.053032964,0.10606605 +0.51250005,0.6375,0.10606605,0.053032994 +0.5125,0.63750005,0.094494075,0.094494045 +0.5125,0.63750005,0.06681737,0.13363487 +0.51250005,0.6375,0.13363487,0.0668174 +0.51250005,0.63750005,0.11905509,0.11905509 +0.5125,0.6375,0.08418465,0.1683693 +0.5125,0.6375,0.1683693,0.08418465 +0.5125,0.6625,0.07500002,0.07499999 +0.5125,0.6625,0.053032964,0.10606605 +0.51250005,0.6625,0.10606605,0.053032935 +0.5125,0.6625,0.094494075,0.094494045 +0.5125,0.6625,0.06681737,0.13363487 +0.51250005,0.6625,0.13363487,0.06681734 +0.51250005,0.6625,0.11905509,0.11905509 +0.5125,0.6625,0.08418465,0.1683693 +0.5125,0.6625,0.1683693,0.08418465 +0.5125,0.6875,0.07500002,0.07500005 +0.5125,0.6875,0.053032964,0.10606599 +0.51250005,0.6875,0.10606605,0.053032994 +0.5125,0.6875,0.094494075,0.094494104 +0.5125,0.6875,0.06681737,0.1336348 +0.51250005,0.6875,0.13363487,0.0668174 +0.51250005,0.6875,0.11905509,0.11905503 +0.5125,0.6875,0.08418465,0.1683693 +0.5125,0.6875,0.1683693,0.08418465 +0.5125,0.7125,0.07500002,0.07499999 +0.5125,0.7125,0.053032964,0.10606605 +0.51250005,0.7125,0.10606605,0.053032935 +0.5125,0.7125,0.094494075,0.094494045 +0.5125,0.7125,0.06681737,0.13363487 +0.51250005,0.7125,0.13363487,0.06681734 +0.51250005,0.7125,0.11905509,0.11905509 +0.5125,0.7125,0.08418465,0.1683693 +0.5125,0.7125,0.1683693,0.08418465 +0.5125,0.73749995,0.07500002,0.07499999 +0.5125,0.73749995,0.053032964,0.10606605 +0.51250005,0.7375,0.10606605,0.053032994 +0.5125,0.73749995,0.094494075,0.094494045 +0.5125,0.73749995,0.06681737,0.1336348 +0.51250005,0.7375,0.13363487,0.0668174 +0.51250005,0.73749995,0.11905509,0.11905509 +0.5125,0.7375,0.08418465,0.1683693 +0.5125,0.7375,0.1683693,0.08418465 +0.5125,0.76250005,0.07500002,0.07499999 +0.5125,0.7625,0.053032964,0.10606599 +0.51250005,0.7625,0.10606605,0.053032994 +0.5125,0.76250005,0.094494075,0.094494045 +0.5125,0.7625,0.06681737,0.1336348 +0.51250005,0.7625,0.13363487,0.0668174 +0.51250005,0.7625,0.11905509,0.11905503 +0.5125,0.7625,0.08418465,0.1683693 +0.5125,0.7625,0.1683693,0.08418465 +0.5125,0.7875,0.07500002,0.07499999 +0.5125,0.78749996,0.053032964,0.10606599 +0.51250005,0.7875,0.10606605,0.053032994 +0.5125,0.7875,0.094494075,0.094494045 +0.5125,0.78749996,0.06681737,0.1336348 +0.51250005,0.7875,0.13363487,0.0668174 +0.51250005,0.78749996,0.11905509,0.11905503 +0.5125,0.7875,0.08418465,0.1683693 +0.5125,0.7875,0.1683693,0.08418465 +0.5125,0.8125,0.07500002,0.07500005 +0.5125,0.8125,0.053032964,0.10606599 +0.51250005,0.8125,0.10606605,0.053033054 +0.5125,0.8125,0.094494075,0.094494104 +0.5125,0.8125,0.06681737,0.1336348 +0.51250005,0.8125,0.13363487,0.06681746 +0.51250005,0.8125,0.11905509,0.11905503 +0.5125,0.8125,0.08418465,0.1683693 +0.5125,0.8125,0.1683693,0.08418465 +0.5125,0.8375,0.07500002,0.07499999 +0.5125,0.8375,0.053032964,0.10606599 +0.51250005,0.8375,0.10606605,0.053033054 +0.5125,0.8375,0.094494075,0.094494045 +0.5125,0.8375,0.06681737,0.1336348 +0.51250005,0.8375,0.13363487,0.06681746 +0.51250005,0.8375,0.11905509,0.11905503 +0.5125,0.8375,0.08418465,0.1683693 +0.5125,0.8375,0.1683693,0.08418465 +0.5125,0.86249995,0.07500002,0.07499999 +0.5125,0.86249995,0.053032964,0.10606593 +0.51250005,0.86249995,0.10606605,0.053033054 +0.5125,0.86249995,0.094494075,0.094494045 +0.5125,0.86249995,0.06681737,0.1336348 +0.51250005,0.86249995,0.13363487,0.06681746 +0.51250005,0.86249995,0.11905509,0.11905497 +0.5125,0.8625,0.08418465,0.1683693 +0.5125,0.8625,0.1683693,0.08418465 +0.5125,0.88750005,0.07500002,0.07499999 +0.5125,0.88750005,0.053032964,0.10606593 +0.51250005,0.88750005,0.10606605,0.053033054 +0.5125,0.88750005,0.094494075,0.094494045 +0.5125,0.88750005,0.06681737,0.13363475 +0.51250005,0.88750005,0.13363487,0.06681746 +0.51250005,0.88750005,0.11905509,0.11905497 +0.5125,0.8875,0.08418465,0.1683693 +0.5125,0.8875,0.1683693,0.08418465 +0.5125,0.9125,0.07500002,0.07499999 +0.5125,0.9125,0.053032964,0.10606593 +0.51250005,0.9125,0.10606605,0.053033054 +0.5125,0.9125,0.094494075,0.094494045 +0.5125,0.9125,0.06681737,0.13363475 +0.51250005,0.9125,0.13363487,0.06681746 +0.51250005,0.9125,0.11905509,0.11905497 +0.5125,0.9125,0.08418465,0.1683693 +0.5125,0.9125,0.1683693,0.08418465 +0.5125,0.9375,0.07500002,0.07500005 +0.5125,0.9375,0.053032964,0.10606599 +0.51250005,0.9375,0.10606605,0.053033113 +0.5125,0.9375,0.094494075,0.094494104 +0.5125,0.9375,0.06681737,0.1336348 +0.51250005,0.9375,0.13363487,0.06681752 +0.51250005,0.9375,0.11905509,0.11905503 +0.5125,0.9375,0.08418465,0.1683693 +0.5125,0.9375,0.1683693,0.08418465 +0.5125,0.9625,0.07500002,0.07499999 +0.5125,0.9625,0.053032964,0.10606593 +0.51250005,0.9625,0.10606605,0.053033054 +0.5125,0.9625,0.094494075,0.094494045 +0.5125,0.9625,0.06681737,0.13363475 +0.51250005,0.9625,0.13363487,0.06681746 +0.51250005,0.9625,0.11905509,0.11905497 +0.5125,0.9625,0.08418465,0.1683693 +0.5125,0.9625,0.1683693,0.08418465 +0.5125,0.98749995,0.07500002,0.07499999 +0.5125,0.98749995,0.053032964,0.10606593 +0.51250005,0.98749995,0.10606605,0.053033054 +0.5125,0.98749995,0.094494075,0.094494045 +0.5125,0.98749995,0.06681737,0.13363475 +0.51250005,0.98749995,0.13363487,0.06681746 +0.51250005,0.98749995,0.11905509,0.11905497 +0.5125,0.98749995,0.08418465,0.16836923 +0.5125,0.98749995,0.1683693,0.08418459 +0.5375,0.0125,0.07499999,0.075 +0.5375,0.012499997,0.053032935,0.10606602 +0.5375,0.012499999,0.10606605,0.05303301 +0.5375,0.012499999,0.094494045,0.09449408 +0.5375,0.012500001,0.06681734,0.1336348 +0.5375,0.012499999,0.13363487,0.0668174 +0.5375,0.012500001,0.11905509,0.11905508 +0.5375,0.012499999,0.08418468,0.1683693 +0.5375,0.012500002,0.16836932,0.084184654 +0.5375,0.0375,0.07499999,0.075 +0.5375,0.037499998,0.053032935,0.10606601 +0.5375,0.0375,0.10606605,0.05303301 +0.5375,0.0375,0.094494045,0.094494075 +0.5375,0.0375,0.06681734,0.1336348 +0.5375,0.0375,0.13363487,0.0668174 +0.5375,0.0375,0.11905509,0.11905508 +0.5375,0.0375,0.08418468,0.16836931 +0.5375,0.0375,0.16836932,0.08418466 +0.5375,0.0625,0.07499999,0.075 +0.5375,0.0625,0.053032935,0.10606602 +0.5375,0.0625,0.10606605,0.05303301 +0.5375,0.0625,0.094494045,0.094494075 +0.5375,0.0625,0.06681734,0.1336348 +0.5375,0.0625,0.13363487,0.0668174 +0.5375,0.0625,0.11905509,0.11905508 +0.5375,0.0625,0.08418468,0.16836932 +0.5375,0.0625,0.16836932,0.08418465 +0.5375,0.0875,0.07499999,0.075 +0.5375,0.08749999,0.053032935,0.10606601 +0.5375,0.087500006,0.10606605,0.053033013 +0.5375,0.087500006,0.094494045,0.09449408 +0.5375,0.087500006,0.06681734,0.1336348 +0.5375,0.0875,0.13363487,0.0668174 +0.5375,0.0875,0.11905509,0.11905508 +0.5375,0.0875,0.08418468,0.16836931 +0.5375,0.087500006,0.16836932,0.084184654 +0.5375,0.112500004,0.07499999,0.075 +0.5375,0.1125,0.053032935,0.10606601 +0.5375,0.112500004,0.10606605,0.05303301 +0.5375,0.1125,0.094494045,0.094494075 +0.5375,0.1125,0.06681734,0.1336348 +0.5375,0.1125,0.13363487,0.0668174 +0.5375,0.1125,0.11905509,0.119055085 +0.5375,0.112500004,0.08418468,0.16836931 +0.5375,0.1125,0.16836932,0.08418465 +0.5375,0.1375,0.07499999,0.074999996 +0.5375,0.1375,0.053032935,0.10606602 +0.5375,0.1375,0.10606605,0.053033024 +0.5375,0.1375,0.094494045,0.09449408 +0.5375,0.1375,0.06681734,0.1336348 +0.5375,0.1375,0.13363487,0.0668174 +0.5375,0.13749999,0.11905509,0.11905508 +0.5375,0.1375,0.08418468,0.1683693 +0.5375,0.1375,0.16836932,0.084184654 +0.5375,0.1625,0.07499999,0.075 +0.5375,0.16250001,0.053032935,0.106066026 +0.5375,0.1625,0.10606605,0.05303301 +0.5375,0.1625,0.094494045,0.094494075 +0.5375,0.1625,0.06681734,0.1336348 +0.5375,0.1625,0.13363487,0.0668174 +0.5375,0.1625,0.11905509,0.11905508 +0.5375,0.1625,0.08418468,0.1683693 +0.5375,0.1625,0.16836932,0.08418464 +0.5375,0.1875,0.07499999,0.07499999 +0.5375,0.1875,0.053032935,0.10606603 +0.5375,0.1875,0.10606605,0.053033024 +0.5375,0.1875,0.094494045,0.09449406 +0.5375,0.1875,0.06681734,0.1336348 +0.5375,0.1875,0.13363487,0.06681742 +0.5375,0.1875,0.11905509,0.11905509 +0.5375,0.1875,0.08418468,0.16836931 +0.5375,0.1875,0.16836932,0.08418465 +0.5375,0.2125,0.07499999,0.075 +0.5375,0.2125,0.053032935,0.10606603 +0.5375,0.2125,0.10606605,0.05303301 +0.5375,0.21249999,0.094494045,0.094494075 +0.5375,0.2125,0.06681734,0.1336348 +0.5375,0.2125,0.13363487,0.0668174 +0.5375,0.2125,0.11905509,0.11905509 +0.5375,0.2125,0.08418468,0.16836931 +0.5375,0.2125,0.16836932,0.08418465 +0.5375,0.23750001,0.07499999,0.075 +0.5375,0.2375,0.053032935,0.10606602 +0.5375,0.2375,0.10606605,0.053033024 +0.5375,0.2375,0.094494045,0.094494075 +0.5375,0.23750001,0.06681734,0.13363482 +0.5375,0.2375,0.13363487,0.06681743 +0.5375,0.2375,0.11905509,0.11905506 +0.5375,0.2375,0.08418468,0.16836932 +0.5375,0.23750001,0.16836932,0.08418466 +0.5375,0.2625,0.07499999,0.07500002 +0.5375,0.2625,0.053032935,0.10606603 +0.5375,0.2625,0.10606605,0.053033024 +0.5375,0.2625,0.094494045,0.094494075 +0.5375,0.2625,0.06681734,0.13363479 +0.5375,0.2625,0.13363487,0.06681743 +0.5375,0.2625,0.11905509,0.11905508 +0.5375,0.2625,0.08418468,0.1683693 +0.5375,0.2625,0.16836932,0.08418463 +0.5375,0.2875,0.07499999,0.07499999 +0.5375,0.2875,0.053032935,0.10606603 +0.5375,0.28750002,0.10606605,0.053033024 +0.5375,0.2875,0.094494045,0.094494045 +0.5375,0.2875,0.06681734,0.1336348 +0.5375,0.28750002,0.13363487,0.06681743 +0.5375,0.2875,0.11905509,0.11905508 +0.5375,0.2875,0.08418468,0.1683693 +0.5375,0.2875,0.16836932,0.08418465 +0.5375,0.3125,0.07499999,0.07499999 +0.5375,0.3125,0.053032935,0.10606605 +0.5375,0.3125,0.10606605,0.053032994 +0.5375,0.3125,0.094494045,0.094494045 +0.5375,0.3125,0.06681734,0.1336348 +0.5375,0.3125,0.13363487,0.0668174 +0.5375,0.3125,0.11905509,0.11905509 +0.5375,0.3125,0.08418468,0.1683693 +0.5375,0.3125,0.16836932,0.08418465 +0.5375,0.3375,0.07499999,0.07499999 +0.5375,0.3375,0.053032935,0.10606605 +0.5375,0.33749998,0.10606605,0.053033024 +0.5375,0.3375,0.094494045,0.094494045 +0.5375,0.33750004,0.06681734,0.13363484 +0.5375,0.33749998,0.13363487,0.06681743 +0.5375,0.3375,0.11905509,0.11905509 +0.5375,0.3375,0.08418468,0.1683693 +0.5375,0.3375,0.16836932,0.08418465 +0.5375,0.3625,0.07499999,0.07500002 +0.5375,0.3625,0.053032935,0.10606602 +0.5375,0.3625,0.10606605,0.053033024 +0.5375,0.3625,0.094494045,0.094494075 +0.5375,0.3625,0.06681734,0.1336348 +0.5375,0.3625,0.13363487,0.06681743 +0.5375,0.3625,0.11905509,0.11905506 +0.5375,0.3625,0.08418468,0.1683693 +0.5375,0.3625,0.16836932,0.08418465 +0.5375,0.3875,0.07499999,0.07500002 +0.5375,0.3875,0.053032935,0.10606602 +0.5375,0.3875,0.10606605,0.053032994 +0.5375,0.3875,0.094494045,0.094494075 +0.5375,0.3875,0.06681734,0.13363484 +0.5375,0.3875,0.13363487,0.0668174 +0.5375,0.3875,0.11905509,0.11905506 +0.5375,0.3875,0.08418468,0.1683693 +0.5375,0.3875,0.16836932,0.08418465 +0.5375,0.4125,0.07499999,0.07499999 +0.5375,0.4125,0.053032935,0.10606605 +0.5375,0.4125,0.10606605,0.053032994 +0.5375,0.4125,0.094494045,0.094494045 +0.5375,0.41250002,0.06681734,0.13363484 +0.5375,0.4125,0.13363487,0.0668174 +0.5375,0.4125,0.11905509,0.11905509 +0.5375,0.4125,0.08418468,0.1683693 +0.5375,0.4125,0.16836932,0.08418465 +0.5375,0.4375,0.07499999,0.07499999 +0.5375,0.4375,0.053032935,0.10606605 +0.5375,0.4375,0.10606605,0.053032994 +0.5375,0.4375,0.094494045,0.094494045 +0.5375,0.4375,0.06681734,0.1336348 +0.5375,0.4375,0.13363487,0.0668174 +0.5375,0.4375,0.11905509,0.11905509 +0.5375,0.4375,0.08418468,0.1683693 +0.5375,0.4375,0.16836932,0.08418465 +0.5375,0.4625,0.07499999,0.07499999 +0.5375,0.4625,0.053032935,0.10606605 +0.5375,0.46249998,0.10606605,0.053032964 +0.5375,0.4625,0.094494045,0.094494045 +0.5375,0.46250004,0.06681734,0.13363484 +0.5375,0.46249998,0.13363487,0.06681737 +0.5375,0.4625,0.11905509,0.11905509 +0.5375,0.46249998,0.08418468,0.16836926 +0.5375,0.46249998,0.16836932,0.08418462 +0.5375,0.48749998,0.07499999,0.07499999 +0.5375,0.4875,0.053032935,0.10606602 +0.5375,0.4875,0.10606605,0.053032994 +0.5375,0.48749998,0.094494045,0.094494045 +0.5375,0.4875,0.06681734,0.13363484 +0.5375,0.4875,0.13363487,0.0668174 +0.5375,0.4875,0.11905509,0.11905506 +0.5375,0.4875,0.08418468,0.1683693 +0.5375,0.4875,0.16836932,0.08418465 +0.5375,0.5125,0.07499999,0.07500002 +0.5375,0.51250005,0.053032935,0.10606605 +0.5375,0.5125,0.10606605,0.053032964 +0.5375,0.5125,0.094494045,0.094494075 +0.5375,0.51250005,0.06681734,0.13363487 +0.5375,0.5125,0.13363487,0.06681737 +0.5375,0.51250005,0.11905509,0.11905509 +0.5375,0.5125,0.08418468,0.1683693 +0.5375,0.5125,0.16836932,0.08418465 +0.5375,0.5375,0.07499999,0.07499999 +0.5375,0.5375,0.053032935,0.10606605 +0.5375,0.5375,0.10606605,0.053032935 +0.5375,0.5375,0.094494045,0.094494045 +0.5375,0.5375,0.06681734,0.13363487 +0.5375,0.5375,0.13363487,0.06681734 +0.5375,0.5375,0.11905509,0.11905509 +0.5375,0.5375,0.08418468,0.16836932 +0.5375,0.5375,0.16836932,0.08418468 +0.5375,0.5625,0.07499999,0.07500005 +0.5375,0.5625,0.053032935,0.10606599 +0.5375,0.5625,0.10606605,0.053032994 +0.5375,0.5625,0.094494045,0.094494104 +0.5375,0.5625,0.06681734,0.13363484 +0.5375,0.5625,0.13363487,0.0668174 +0.5375,0.5625,0.11905509,0.11905503 +0.5375,0.5625,0.08418468,0.1683693 +0.5375,0.5625,0.16836932,0.08418465 +0.5375,0.5875,0.07499999,0.07499999 +0.5375,0.5875,0.053032935,0.10606605 +0.5375,0.5875,0.10606605,0.053032935 +0.5375,0.5875,0.094494045,0.094494045 +0.5375,0.5875,0.06681734,0.13363487 +0.5375,0.5875,0.13363487,0.06681734 +0.5375,0.5875,0.11905509,0.11905509 +0.5375,0.5875,0.08418468,0.1683693 +0.5375,0.5875,0.16836932,0.08418465 +0.5375,0.61249995,0.07499999,0.07499999 +0.5375,0.61249995,0.053032935,0.10606605 +0.5375,0.6125,0.10606605,0.053032994 +0.5375,0.61249995,0.094494045,0.094494045 +0.5375,0.61249995,0.06681734,0.13363487 +0.5375,0.6125,0.13363487,0.0668174 +0.5375,0.61249995,0.11905509,0.11905509 +0.5375,0.6125,0.08418468,0.1683693 +0.5375,0.6125,0.16836932,0.08418465 +0.5375,0.63750005,0.07499999,0.07499999 +0.5375,0.63750005,0.053032935,0.10606605 +0.5375,0.6375,0.10606605,0.053032994 +0.5375,0.63750005,0.094494045,0.094494045 +0.5375,0.63750005,0.06681734,0.13363487 +0.5375,0.6375,0.13363487,0.0668174 +0.5375,0.63750005,0.11905509,0.11905509 +0.5375,0.6375,0.08418468,0.1683693 +0.5375,0.6375,0.16836932,0.08418465 +0.5375,0.6625,0.07499999,0.07499999 +0.5375,0.6625,0.053032935,0.10606605 +0.5375,0.6625,0.10606605,0.053032935 +0.5375,0.6625,0.094494045,0.094494045 +0.5375,0.6625,0.06681734,0.13363487 +0.5375,0.6625,0.13363487,0.06681734 +0.5375,0.6625,0.11905509,0.11905509 +0.5375,0.6625,0.08418468,0.1683693 +0.5375,0.6625,0.16836932,0.08418465 +0.5375,0.6875,0.07499999,0.07500005 +0.5375,0.6875,0.053032935,0.10606599 +0.5375,0.6875,0.10606605,0.053032994 +0.5375,0.6875,0.094494045,0.094494104 +0.5375,0.6875,0.06681734,0.1336348 +0.5375,0.6875,0.13363487,0.0668174 +0.5375,0.6875,0.11905509,0.11905503 +0.5375,0.6875,0.08418468,0.1683693 +0.5375,0.6875,0.16836932,0.08418465 +0.5375,0.7125,0.07499999,0.07499999 +0.5375,0.7125,0.053032935,0.10606605 +0.5375,0.7125,0.10606605,0.053032935 +0.5375,0.7125,0.094494045,0.094494045 +0.5375,0.7125,0.06681734,0.13363487 +0.5375,0.7125,0.13363487,0.06681734 +0.5375,0.7125,0.11905509,0.11905509 +0.5375,0.7125,0.08418468,0.1683693 +0.5375,0.7125,0.16836932,0.08418465 +0.5375,0.73749995,0.07499999,0.07499999 +0.5375,0.73749995,0.053032935,0.10606605 +0.5375,0.7375,0.10606605,0.053032994 +0.5375,0.73749995,0.094494045,0.094494045 +0.5375,0.73749995,0.06681734,0.1336348 +0.5375,0.7375,0.13363487,0.0668174 +0.5375,0.73749995,0.11905509,0.11905509 +0.5375,0.7375,0.08418468,0.1683693 +0.5375,0.7375,0.16836932,0.08418465 +0.5375,0.76250005,0.07499999,0.07499999 +0.5375,0.7625,0.053032935,0.10606599 +0.5375,0.7625,0.10606605,0.053032994 +0.5375,0.76250005,0.094494045,0.094494045 +0.5375,0.7625,0.06681734,0.1336348 +0.5375,0.7625,0.13363487,0.0668174 +0.5375,0.7625,0.11905509,0.11905503 +0.5375,0.7625,0.08418468,0.1683693 +0.5375,0.7625,0.16836932,0.08418465 +0.5375,0.7875,0.07499999,0.07499999 +0.5375,0.78749996,0.053032935,0.10606599 +0.5375,0.7875,0.10606605,0.053032994 +0.5375,0.7875,0.094494045,0.094494045 +0.5375,0.78749996,0.06681734,0.1336348 +0.5375,0.7875,0.13363487,0.0668174 +0.5375,0.78749996,0.11905509,0.11905503 +0.5375,0.7875,0.08418468,0.1683693 +0.5375,0.7875,0.16836932,0.08418465 +0.5375,0.8125,0.07499999,0.07500005 +0.5375,0.8125,0.053032935,0.10606599 +0.5375,0.8125,0.10606605,0.053033054 +0.5375,0.8125,0.094494045,0.094494104 +0.5375,0.8125,0.06681734,0.1336348 +0.5375,0.8125,0.13363487,0.06681746 +0.5375,0.8125,0.11905509,0.11905503 +0.5375,0.8125,0.08418468,0.1683693 +0.5375,0.8125,0.16836932,0.08418465 +0.5375,0.8375,0.07499999,0.07499999 +0.5375,0.8375,0.053032935,0.10606599 +0.5375,0.8375,0.10606605,0.053033054 +0.5375,0.8375,0.094494045,0.094494045 +0.5375,0.8375,0.06681734,0.1336348 +0.5375,0.8375,0.13363487,0.06681746 +0.5375,0.8375,0.11905509,0.11905503 +0.5375,0.8375,0.08418468,0.1683693 +0.5375,0.8375,0.16836932,0.08418465 +0.5375,0.86249995,0.07499999,0.07499999 +0.5375,0.86249995,0.053032935,0.10606593 +0.5375,0.86249995,0.10606605,0.053033054 +0.5375,0.86249995,0.094494045,0.094494045 +0.5375,0.86249995,0.06681734,0.1336348 +0.5375,0.86249995,0.13363487,0.06681746 +0.5375,0.86249995,0.11905509,0.11905497 +0.5375,0.8625,0.08418468,0.1683693 +0.5375,0.8625,0.16836932,0.08418465 +0.5375,0.88750005,0.07499999,0.07499999 +0.5375,0.88750005,0.053032935,0.10606593 +0.5375,0.88750005,0.10606605,0.053033054 +0.5375,0.88750005,0.094494045,0.094494045 +0.5375,0.88750005,0.06681734,0.13363475 +0.5375,0.88750005,0.13363487,0.06681746 +0.5375,0.88750005,0.11905509,0.11905497 +0.5375,0.8875,0.08418468,0.1683693 +0.5375,0.8875,0.16836932,0.08418465 +0.5375,0.9125,0.07499999,0.07499999 +0.5375,0.9125,0.053032935,0.10606593 +0.5375,0.9125,0.10606605,0.053033054 +0.5375,0.9125,0.094494045,0.094494045 +0.5375,0.9125,0.06681734,0.13363475 +0.5375,0.9125,0.13363487,0.06681746 +0.5375,0.9125,0.11905509,0.11905497 +0.5375,0.9125,0.08418468,0.1683693 +0.5375,0.9125,0.16836932,0.08418465 +0.5375,0.9375,0.07499999,0.07500005 +0.5375,0.9375,0.053032935,0.10606599 +0.5375,0.9375,0.10606605,0.053033113 +0.5375,0.9375,0.094494045,0.094494104 +0.5375,0.9375,0.06681734,0.1336348 +0.5375,0.9375,0.13363487,0.06681752 +0.5375,0.9375,0.11905509,0.11905503 +0.5375,0.9375,0.08418468,0.1683693 +0.5375,0.9375,0.16836932,0.08418465 +0.5375,0.9625,0.07499999,0.07499999 +0.5375,0.9625,0.053032935,0.10606593 +0.5375,0.9625,0.10606605,0.053033054 +0.5375,0.9625,0.094494045,0.094494045 +0.5375,0.9625,0.06681734,0.13363475 +0.5375,0.9625,0.13363487,0.06681746 +0.5375,0.9625,0.11905509,0.11905497 +0.5375,0.9625,0.08418468,0.1683693 +0.5375,0.9625,0.16836932,0.08418465 +0.5375,0.98749995,0.07499999,0.07499999 +0.5375,0.98749995,0.053032935,0.10606593 +0.5375,0.98749995,0.10606605,0.053033054 +0.5375,0.98749995,0.094494045,0.094494045 +0.5375,0.98749995,0.06681734,0.13363475 +0.5375,0.98749995,0.13363487,0.06681746 +0.5375,0.98749995,0.11905509,0.11905497 +0.5375,0.98749995,0.08418468,0.16836923 +0.5375,0.98749995,0.16836932,0.08418459 +0.5625,0.0125,0.07500005,0.075 +0.5625,0.012499997,0.053032994,0.10606602 +0.5625,0.012499999,0.10606599,0.05303301 +0.5625,0.012499999,0.094494104,0.09449408 +0.5625,0.012500001,0.0668174,0.1336348 +0.5625,0.012499999,0.13363484,0.0668174 +0.5625,0.012500001,0.11905503,0.11905508 +0.5625,0.012499999,0.08418465,0.1683693 +0.5625,0.012500002,0.1683693,0.084184654 +0.5625,0.0375,0.07500005,0.075 +0.5625,0.037499998,0.053032994,0.10606601 +0.5625,0.0375,0.10606599,0.05303301 +0.5625,0.0375,0.094494104,0.094494075 +0.5625,0.0375,0.0668174,0.1336348 +0.5625,0.0375,0.13363484,0.0668174 +0.5625,0.0375,0.11905503,0.11905508 +0.5625,0.0375,0.08418465,0.16836931 +0.5625,0.0375,0.1683693,0.08418466 +0.5625,0.0625,0.07500005,0.075 +0.5625,0.0625,0.053032994,0.10606602 +0.5625,0.0625,0.10606599,0.05303301 +0.5625,0.0625,0.094494104,0.094494075 +0.5625,0.0625,0.0668174,0.1336348 +0.5625,0.0625,0.13363484,0.0668174 +0.5625,0.0625,0.11905503,0.11905508 +0.5625,0.0625,0.08418465,0.16836932 +0.5625,0.0625,0.1683693,0.08418465 +0.5625,0.0875,0.07500005,0.075 +0.5625,0.08749999,0.053032994,0.10606601 +0.5625,0.087500006,0.10606599,0.053033013 +0.5625,0.087500006,0.094494104,0.09449408 +0.5625,0.087500006,0.0668174,0.1336348 +0.5625,0.0875,0.13363484,0.0668174 +0.5625,0.0875,0.11905503,0.11905508 +0.5625,0.0875,0.08418465,0.16836931 +0.5625,0.087500006,0.1683693,0.084184654 +0.5625,0.112500004,0.07500005,0.075 +0.5625,0.1125,0.053032994,0.10606601 +0.5625,0.112500004,0.10606599,0.05303301 +0.5625,0.1125,0.094494104,0.094494075 +0.5625,0.1125,0.0668174,0.1336348 +0.5625,0.1125,0.13363484,0.0668174 +0.5625,0.1125,0.11905503,0.119055085 +0.5625,0.112500004,0.08418465,0.16836931 +0.5625,0.1125,0.1683693,0.08418465 +0.5625,0.1375,0.07500005,0.074999996 +0.5625,0.1375,0.053032994,0.10606602 +0.5625,0.1375,0.10606599,0.053033024 +0.5625,0.1375,0.094494104,0.09449408 +0.5625,0.1375,0.0668174,0.1336348 +0.5625,0.1375,0.13363484,0.0668174 +0.5625,0.13749999,0.11905503,0.11905508 +0.5625,0.1375,0.08418465,0.1683693 +0.5625,0.1375,0.1683693,0.084184654 +0.5625,0.1625,0.07500005,0.075 +0.5625,0.16250001,0.053032994,0.106066026 +0.5625,0.1625,0.10606599,0.05303301 +0.5625,0.1625,0.094494104,0.094494075 +0.5625,0.1625,0.0668174,0.1336348 +0.5625,0.1625,0.13363484,0.0668174 +0.5625,0.1625,0.11905503,0.11905508 +0.5625,0.1625,0.08418465,0.1683693 +0.5625,0.1625,0.1683693,0.08418464 +0.5625,0.1875,0.07500005,0.07499999 +0.5625,0.1875,0.053032994,0.10606603 +0.5625,0.1875,0.10606599,0.053033024 +0.5625,0.1875,0.094494104,0.09449406 +0.5625,0.1875,0.0668174,0.1336348 +0.5625,0.1875,0.13363484,0.06681742 +0.5625,0.1875,0.11905503,0.11905509 +0.5625,0.1875,0.08418465,0.16836931 +0.5625,0.1875,0.1683693,0.08418465 +0.5625,0.2125,0.07500005,0.075 +0.5625,0.2125,0.053032994,0.10606603 +0.5625,0.2125,0.10606599,0.05303301 +0.5625,0.21249999,0.094494104,0.094494075 +0.5625,0.2125,0.0668174,0.1336348 +0.5625,0.2125,0.13363484,0.0668174 +0.5625,0.2125,0.11905503,0.11905509 +0.5625,0.2125,0.08418465,0.16836931 +0.5625,0.2125,0.1683693,0.08418465 +0.5625,0.23750001,0.07500005,0.075 +0.5625,0.2375,0.053032994,0.10606602 +0.5625,0.2375,0.10606599,0.053033024 +0.5625,0.2375,0.094494104,0.094494075 +0.5625,0.23750001,0.0668174,0.13363482 +0.5625,0.2375,0.13363484,0.06681743 +0.5625,0.2375,0.11905503,0.11905506 +0.5625,0.2375,0.08418465,0.16836932 +0.5625,0.23750001,0.1683693,0.08418466 +0.5625,0.2625,0.07500005,0.07500002 +0.5625,0.2625,0.053032994,0.10606603 +0.5625,0.2625,0.10606599,0.053033024 +0.5625,0.2625,0.094494104,0.094494075 +0.5625,0.2625,0.0668174,0.13363479 +0.5625,0.2625,0.13363484,0.06681743 +0.5625,0.2625,0.11905503,0.11905508 +0.5625,0.2625,0.08418465,0.1683693 +0.5625,0.2625,0.1683693,0.08418463 +0.5625,0.2875,0.07500005,0.07499999 +0.5625,0.2875,0.053032994,0.10606603 +0.5625,0.28750002,0.10606599,0.053033024 +0.5625,0.2875,0.094494104,0.094494045 +0.5625,0.2875,0.0668174,0.1336348 +0.5625,0.28750002,0.13363484,0.06681743 +0.5625,0.2875,0.11905503,0.11905508 +0.5625,0.2875,0.08418465,0.1683693 +0.5625,0.2875,0.1683693,0.08418465 +0.5625,0.3125,0.07500005,0.07499999 +0.5625,0.3125,0.053032994,0.10606605 +0.5625,0.3125,0.10606599,0.053032994 +0.5625,0.3125,0.094494104,0.094494045 +0.5625,0.3125,0.0668174,0.1336348 +0.5625,0.3125,0.13363484,0.0668174 +0.5625,0.3125,0.11905503,0.11905509 +0.5625,0.3125,0.08418465,0.1683693 +0.5625,0.3125,0.1683693,0.08418465 +0.5625,0.3375,0.07500005,0.07499999 +0.5625,0.3375,0.053032994,0.10606605 +0.5625,0.33749998,0.10606599,0.053033024 +0.5625,0.3375,0.094494104,0.094494045 +0.5625,0.33750004,0.0668174,0.13363484 +0.5625,0.33749998,0.13363484,0.06681743 +0.5625,0.3375,0.11905503,0.11905509 +0.5625,0.3375,0.08418465,0.1683693 +0.5625,0.3375,0.1683693,0.08418465 +0.5625,0.3625,0.07500005,0.07500002 +0.5625,0.3625,0.053032994,0.10606602 +0.5625,0.3625,0.10606599,0.053033024 +0.5625,0.3625,0.094494104,0.094494075 +0.5625,0.3625,0.0668174,0.1336348 +0.5625,0.3625,0.13363484,0.06681743 +0.5625,0.3625,0.11905503,0.11905506 +0.5625,0.3625,0.08418465,0.1683693 +0.5625,0.3625,0.1683693,0.08418465 +0.5625,0.3875,0.07500005,0.07500002 +0.5625,0.3875,0.053032994,0.10606602 +0.5625,0.3875,0.10606599,0.053032994 +0.5625,0.3875,0.094494104,0.094494075 +0.5625,0.3875,0.0668174,0.13363484 +0.5625,0.3875,0.13363484,0.0668174 +0.5625,0.3875,0.11905503,0.11905506 +0.5625,0.3875,0.08418465,0.1683693 +0.5625,0.3875,0.1683693,0.08418465 +0.5625,0.4125,0.07500005,0.07499999 +0.5625,0.4125,0.053032994,0.10606605 +0.5625,0.4125,0.10606599,0.053032994 +0.5625,0.4125,0.094494104,0.094494045 +0.5625,0.41250002,0.0668174,0.13363484 +0.5625,0.4125,0.13363484,0.0668174 +0.5625,0.4125,0.11905503,0.11905509 +0.5625,0.4125,0.08418465,0.1683693 +0.5625,0.4125,0.1683693,0.08418465 +0.5625,0.4375,0.07500005,0.07499999 +0.5625,0.4375,0.053032994,0.10606605 +0.5625,0.4375,0.10606599,0.053032994 +0.5625,0.4375,0.094494104,0.094494045 +0.5625,0.4375,0.0668174,0.1336348 +0.5625,0.4375,0.13363484,0.0668174 +0.5625,0.4375,0.11905503,0.11905509 +0.5625,0.4375,0.08418465,0.1683693 +0.5625,0.4375,0.1683693,0.08418465 +0.5625,0.4625,0.07500005,0.07499999 +0.5625,0.4625,0.053032994,0.10606605 +0.5625,0.46249998,0.10606599,0.053032964 +0.5625,0.4625,0.094494104,0.094494045 +0.5625,0.46250004,0.0668174,0.13363484 +0.5625,0.46249998,0.13363484,0.06681737 +0.5625,0.4625,0.11905503,0.11905509 +0.5625,0.46249998,0.08418465,0.16836926 +0.5625,0.46249998,0.1683693,0.08418462 +0.5625,0.48749998,0.07500005,0.07499999 +0.5625,0.4875,0.053032994,0.10606602 +0.5625,0.4875,0.10606599,0.053032994 +0.5625,0.48749998,0.094494104,0.094494045 +0.5625,0.4875,0.0668174,0.13363484 +0.5625,0.4875,0.13363484,0.0668174 +0.5625,0.4875,0.11905503,0.11905506 +0.5625,0.4875,0.08418465,0.1683693 +0.5625,0.4875,0.1683693,0.08418465 +0.5625,0.5125,0.07500005,0.07500002 +0.5625,0.51250005,0.053032994,0.10606605 +0.5625,0.5125,0.10606599,0.053032964 +0.5625,0.5125,0.094494104,0.094494075 +0.5625,0.51250005,0.0668174,0.13363487 +0.5625,0.5125,0.13363484,0.06681737 +0.5625,0.51250005,0.11905503,0.11905509 +0.5625,0.5125,0.08418465,0.1683693 +0.5625,0.5125,0.1683693,0.08418465 +0.5625,0.5375,0.07500005,0.07499999 +0.5625,0.5375,0.053032994,0.10606605 +0.5625,0.5375,0.10606599,0.053032935 +0.5625,0.5375,0.094494104,0.094494045 +0.5625,0.5375,0.0668174,0.13363487 +0.5625,0.5375,0.13363484,0.06681734 +0.5625,0.5375,0.11905503,0.11905509 +0.5625,0.5375,0.08418465,0.16836932 +0.5625,0.5375,0.1683693,0.08418468 +0.5625,0.5625,0.07500005,0.07500005 +0.5625,0.5625,0.053032994,0.10606599 +0.5625,0.5625,0.10606599,0.053032994 +0.5625,0.5625,0.094494104,0.094494104 +0.5625,0.5625,0.0668174,0.13363484 +0.5625,0.5625,0.13363484,0.0668174 +0.5625,0.5625,0.11905503,0.11905503 +0.5625,0.5625,0.08418465,0.1683693 +0.5625,0.5625,0.1683693,0.08418465 +0.5625,0.5875,0.07500005,0.07499999 +0.5625,0.5875,0.053032994,0.10606605 +0.5625,0.5875,0.10606599,0.053032935 +0.5625,0.5875,0.094494104,0.094494045 +0.5625,0.5875,0.0668174,0.13363487 +0.5625,0.5875,0.13363484,0.06681734 +0.5625,0.5875,0.11905503,0.11905509 +0.5625,0.5875,0.08418465,0.1683693 +0.5625,0.5875,0.1683693,0.08418465 +0.5625,0.61249995,0.07500005,0.07499999 +0.5625,0.61249995,0.053032994,0.10606605 +0.5625,0.6125,0.10606599,0.053032994 +0.5625,0.61249995,0.094494104,0.094494045 +0.5625,0.61249995,0.0668174,0.13363487 +0.5625,0.6125,0.13363484,0.0668174 +0.5625,0.61249995,0.11905503,0.11905509 +0.5625,0.6125,0.08418465,0.1683693 +0.5625,0.6125,0.1683693,0.08418465 +0.5625,0.63750005,0.07500005,0.07499999 +0.5625,0.63750005,0.053032994,0.10606605 +0.5625,0.6375,0.10606599,0.053032994 +0.5625,0.63750005,0.094494104,0.094494045 +0.5625,0.63750005,0.0668174,0.13363487 +0.5625,0.6375,0.13363484,0.0668174 +0.5625,0.63750005,0.11905503,0.11905509 +0.5625,0.6375,0.08418465,0.1683693 +0.5625,0.6375,0.1683693,0.08418465 +0.5625,0.6625,0.07500005,0.07499999 +0.5625,0.6625,0.053032994,0.10606605 +0.5625,0.6625,0.10606599,0.053032935 +0.5625,0.6625,0.094494104,0.094494045 +0.5625,0.6625,0.0668174,0.13363487 +0.5625,0.6625,0.13363484,0.06681734 +0.5625,0.6625,0.11905503,0.11905509 +0.5625,0.6625,0.08418465,0.1683693 +0.5625,0.6625,0.1683693,0.08418465 +0.5625,0.6875,0.07500005,0.07500005 +0.5625,0.6875,0.053032994,0.10606599 +0.5625,0.6875,0.10606599,0.053032994 +0.5625,0.6875,0.094494104,0.094494104 +0.5625,0.6875,0.0668174,0.1336348 +0.5625,0.6875,0.13363484,0.0668174 +0.5625,0.6875,0.11905503,0.11905503 +0.5625,0.6875,0.08418465,0.1683693 +0.5625,0.6875,0.1683693,0.08418465 +0.5625,0.7125,0.07500005,0.07499999 +0.5625,0.7125,0.053032994,0.10606605 +0.5625,0.7125,0.10606599,0.053032935 +0.5625,0.7125,0.094494104,0.094494045 +0.5625,0.7125,0.0668174,0.13363487 +0.5625,0.7125,0.13363484,0.06681734 +0.5625,0.7125,0.11905503,0.11905509 +0.5625,0.7125,0.08418465,0.1683693 +0.5625,0.7125,0.1683693,0.08418465 +0.5625,0.73749995,0.07500005,0.07499999 +0.5625,0.73749995,0.053032994,0.10606605 +0.5625,0.7375,0.10606599,0.053032994 +0.5625,0.73749995,0.094494104,0.094494045 +0.5625,0.73749995,0.0668174,0.1336348 +0.5625,0.7375,0.13363484,0.0668174 +0.5625,0.73749995,0.11905503,0.11905509 +0.5625,0.7375,0.08418465,0.1683693 +0.5625,0.7375,0.1683693,0.08418465 +0.5625,0.76250005,0.07500005,0.07499999 +0.5625,0.7625,0.053032994,0.10606599 +0.5625,0.7625,0.10606599,0.053032994 +0.5625,0.76250005,0.094494104,0.094494045 +0.5625,0.7625,0.0668174,0.1336348 +0.5625,0.7625,0.13363484,0.0668174 +0.5625,0.7625,0.11905503,0.11905503 +0.5625,0.7625,0.08418465,0.1683693 +0.5625,0.7625,0.1683693,0.08418465 +0.5625,0.7875,0.07500005,0.07499999 +0.5625,0.78749996,0.053032994,0.10606599 +0.5625,0.7875,0.10606599,0.053032994 +0.5625,0.7875,0.094494104,0.094494045 +0.5625,0.78749996,0.0668174,0.1336348 +0.5625,0.7875,0.13363484,0.0668174 +0.5625,0.78749996,0.11905503,0.11905503 +0.5625,0.7875,0.08418465,0.1683693 +0.5625,0.7875,0.1683693,0.08418465 +0.5625,0.8125,0.07500005,0.07500005 +0.5625,0.8125,0.053032994,0.10606599 +0.5625,0.8125,0.10606599,0.053033054 +0.5625,0.8125,0.094494104,0.094494104 +0.5625,0.8125,0.0668174,0.1336348 +0.5625,0.8125,0.13363484,0.06681746 +0.5625,0.8125,0.11905503,0.11905503 +0.5625,0.8125,0.08418465,0.1683693 +0.5625,0.8125,0.1683693,0.08418465 +0.5625,0.8375,0.07500005,0.07499999 +0.5625,0.8375,0.053032994,0.10606599 +0.5625,0.8375,0.10606599,0.053033054 +0.5625,0.8375,0.094494104,0.094494045 +0.5625,0.8375,0.0668174,0.1336348 +0.5625,0.8375,0.13363484,0.06681746 +0.5625,0.8375,0.11905503,0.11905503 +0.5625,0.8375,0.08418465,0.1683693 +0.5625,0.8375,0.1683693,0.08418465 +0.5625,0.86249995,0.07500005,0.07499999 +0.5625,0.86249995,0.053032994,0.10606593 +0.5625,0.86249995,0.10606599,0.053033054 +0.5625,0.86249995,0.094494104,0.094494045 +0.5625,0.86249995,0.0668174,0.1336348 +0.5625,0.86249995,0.13363484,0.06681746 +0.5625,0.86249995,0.11905503,0.11905497 +0.5625,0.8625,0.08418465,0.1683693 +0.5625,0.8625,0.1683693,0.08418465 +0.5625,0.88750005,0.07500005,0.07499999 +0.5625,0.88750005,0.053032994,0.10606593 +0.5625,0.88750005,0.10606599,0.053033054 +0.5625,0.88750005,0.094494104,0.094494045 +0.5625,0.88750005,0.0668174,0.13363475 +0.5625,0.88750005,0.13363484,0.06681746 +0.5625,0.88750005,0.11905503,0.11905497 +0.5625,0.8875,0.08418465,0.1683693 +0.5625,0.8875,0.1683693,0.08418465 +0.5625,0.9125,0.07500005,0.07499999 +0.5625,0.9125,0.053032994,0.10606593 +0.5625,0.9125,0.10606599,0.053033054 +0.5625,0.9125,0.094494104,0.094494045 +0.5625,0.9125,0.0668174,0.13363475 +0.5625,0.9125,0.13363484,0.06681746 +0.5625,0.9125,0.11905503,0.11905497 +0.5625,0.9125,0.08418465,0.1683693 +0.5625,0.9125,0.1683693,0.08418465 +0.5625,0.9375,0.07500005,0.07500005 +0.5625,0.9375,0.053032994,0.10606599 +0.5625,0.9375,0.10606599,0.053033113 +0.5625,0.9375,0.094494104,0.094494104 +0.5625,0.9375,0.0668174,0.1336348 +0.5625,0.9375,0.13363484,0.06681752 +0.5625,0.9375,0.11905503,0.11905503 +0.5625,0.9375,0.08418465,0.1683693 +0.5625,0.9375,0.1683693,0.08418465 +0.5625,0.9625,0.07500005,0.07499999 +0.5625,0.9625,0.053032994,0.10606593 +0.5625,0.9625,0.10606599,0.053033054 +0.5625,0.9625,0.094494104,0.094494045 +0.5625,0.9625,0.0668174,0.13363475 +0.5625,0.9625,0.13363484,0.06681746 +0.5625,0.9625,0.11905503,0.11905497 +0.5625,0.9625,0.08418465,0.1683693 +0.5625,0.9625,0.1683693,0.08418465 +0.5625,0.98749995,0.07500005,0.07499999 +0.5625,0.98749995,0.053032994,0.10606593 +0.5625,0.98749995,0.10606599,0.053033054 +0.5625,0.98749995,0.094494104,0.094494045 +0.5625,0.98749995,0.0668174,0.13363475 +0.5625,0.98749995,0.13363484,0.06681746 +0.5625,0.98749995,0.11905503,0.11905497 +0.5625,0.98749995,0.08418465,0.16836923 +0.5625,0.98749995,0.1683693,0.08418459 +0.5875,0.0125,0.07499999,0.075 +0.5875,0.012499997,0.053032935,0.10606602 +0.5875,0.012499999,0.10606605,0.05303301 +0.5875,0.012499999,0.094494045,0.09449408 +0.5875,0.012500001,0.06681734,0.1336348 +0.5875,0.012499999,0.13363487,0.0668174 +0.5875,0.012500001,0.11905509,0.11905508 +0.5875,0.012499999,0.08418465,0.1683693 +0.5875,0.012500002,0.1683693,0.084184654 +0.5875,0.0375,0.07499999,0.075 +0.5875,0.037499998,0.053032935,0.10606601 +0.5875,0.0375,0.10606605,0.05303301 +0.5875,0.0375,0.094494045,0.094494075 +0.5875,0.0375,0.06681734,0.1336348 +0.5875,0.0375,0.13363487,0.0668174 +0.5875,0.0375,0.11905509,0.11905508 +0.5875,0.0375,0.08418465,0.16836931 +0.5875,0.0375,0.1683693,0.08418466 +0.5875,0.0625,0.07499999,0.075 +0.5875,0.0625,0.053032935,0.10606602 +0.5875,0.0625,0.10606605,0.05303301 +0.5875,0.0625,0.094494045,0.094494075 +0.5875,0.0625,0.06681734,0.1336348 +0.5875,0.0625,0.13363487,0.0668174 +0.5875,0.0625,0.11905509,0.11905508 +0.5875,0.0625,0.08418465,0.16836932 +0.5875,0.0625,0.1683693,0.08418465 +0.5875,0.0875,0.07499999,0.075 +0.5875,0.08749999,0.053032935,0.10606601 +0.5875,0.087500006,0.10606605,0.053033013 +0.5875,0.087500006,0.094494045,0.09449408 +0.5875,0.087500006,0.06681734,0.1336348 +0.5875,0.0875,0.13363487,0.0668174 +0.5875,0.0875,0.11905509,0.11905508 +0.5875,0.0875,0.08418465,0.16836931 +0.5875,0.087500006,0.1683693,0.084184654 +0.5875,0.112500004,0.07499999,0.075 +0.5875,0.1125,0.053032935,0.10606601 +0.5875,0.112500004,0.10606605,0.05303301 +0.5875,0.1125,0.094494045,0.094494075 +0.5875,0.1125,0.06681734,0.1336348 +0.5875,0.1125,0.13363487,0.0668174 +0.5875,0.1125,0.11905509,0.119055085 +0.5875,0.112500004,0.08418465,0.16836931 +0.5875,0.1125,0.1683693,0.08418465 +0.5875,0.1375,0.07499999,0.074999996 +0.5875,0.1375,0.053032935,0.10606602 +0.5875,0.1375,0.10606605,0.053033024 +0.5875,0.1375,0.094494045,0.09449408 +0.5875,0.1375,0.06681734,0.1336348 +0.5875,0.1375,0.13363487,0.0668174 +0.5875,0.13749999,0.11905509,0.11905508 +0.5875,0.1375,0.08418465,0.1683693 +0.5875,0.1375,0.1683693,0.084184654 +0.5875,0.1625,0.07499999,0.075 +0.5875,0.16250001,0.053032935,0.106066026 +0.5875,0.1625,0.10606605,0.05303301 +0.5875,0.1625,0.094494045,0.094494075 +0.5875,0.1625,0.06681734,0.1336348 +0.5875,0.1625,0.13363487,0.0668174 +0.5875,0.1625,0.11905509,0.11905508 +0.5875,0.1625,0.08418465,0.1683693 +0.5875,0.1625,0.1683693,0.08418464 +0.5875,0.1875,0.07499999,0.07499999 +0.5875,0.1875,0.053032935,0.10606603 +0.5875,0.1875,0.10606605,0.053033024 +0.5875,0.1875,0.094494045,0.09449406 +0.5875,0.1875,0.06681734,0.1336348 +0.5875,0.1875,0.13363487,0.06681742 +0.5875,0.1875,0.11905509,0.11905509 +0.5875,0.1875,0.08418465,0.16836931 +0.5875,0.1875,0.1683693,0.08418465 +0.5875,0.2125,0.07499999,0.075 +0.5875,0.2125,0.053032935,0.10606603 +0.5875,0.2125,0.10606605,0.05303301 +0.5875,0.21249999,0.094494045,0.094494075 +0.5875,0.2125,0.06681734,0.1336348 +0.5875,0.2125,0.13363487,0.0668174 +0.5875,0.2125,0.11905509,0.11905509 +0.5875,0.2125,0.08418465,0.16836931 +0.5875,0.2125,0.1683693,0.08418465 +0.5875,0.23750001,0.07499999,0.075 +0.5875,0.2375,0.053032935,0.10606602 +0.5875,0.2375,0.10606605,0.053033024 +0.5875,0.2375,0.094494045,0.094494075 +0.5875,0.23750001,0.06681734,0.13363482 +0.5875,0.2375,0.13363487,0.06681743 +0.5875,0.2375,0.11905509,0.11905506 +0.5875,0.2375,0.08418465,0.16836932 +0.5875,0.23750001,0.1683693,0.08418466 +0.5875,0.2625,0.07499999,0.07500002 +0.5875,0.2625,0.053032935,0.10606603 +0.5875,0.2625,0.10606605,0.053033024 +0.5875,0.2625,0.094494045,0.094494075 +0.5875,0.2625,0.06681734,0.13363479 +0.5875,0.2625,0.13363487,0.06681743 +0.5875,0.2625,0.11905509,0.11905508 +0.5875,0.2625,0.08418465,0.1683693 +0.5875,0.2625,0.1683693,0.08418463 +0.5875,0.2875,0.07499999,0.07499999 +0.5875,0.2875,0.053032935,0.10606603 +0.5875,0.28750002,0.10606605,0.053033024 +0.5875,0.2875,0.094494045,0.094494045 +0.5875,0.2875,0.06681734,0.1336348 +0.5875,0.28750002,0.13363487,0.06681743 +0.5875,0.2875,0.11905509,0.11905508 +0.5875,0.2875,0.08418465,0.1683693 +0.5875,0.2875,0.1683693,0.08418465 +0.5875,0.3125,0.07499999,0.07499999 +0.5875,0.3125,0.053032935,0.10606605 +0.5875,0.3125,0.10606605,0.053032994 +0.5875,0.3125,0.094494045,0.094494045 +0.5875,0.3125,0.06681734,0.1336348 +0.5875,0.3125,0.13363487,0.0668174 +0.5875,0.3125,0.11905509,0.11905509 +0.5875,0.3125,0.08418465,0.1683693 +0.5875,0.3125,0.1683693,0.08418465 +0.5875,0.3375,0.07499999,0.07499999 +0.5875,0.3375,0.053032935,0.10606605 +0.5875,0.33749998,0.10606605,0.053033024 +0.5875,0.3375,0.094494045,0.094494045 +0.5875,0.33750004,0.06681734,0.13363484 +0.5875,0.33749998,0.13363487,0.06681743 +0.5875,0.3375,0.11905509,0.11905509 +0.5875,0.3375,0.08418465,0.1683693 +0.5875,0.3375,0.1683693,0.08418465 +0.5875,0.3625,0.07499999,0.07500002 +0.5875,0.3625,0.053032935,0.10606602 +0.5875,0.3625,0.10606605,0.053033024 +0.5875,0.3625,0.094494045,0.094494075 +0.5875,0.3625,0.06681734,0.1336348 +0.5875,0.3625,0.13363487,0.06681743 +0.5875,0.3625,0.11905509,0.11905506 +0.5875,0.3625,0.08418465,0.1683693 +0.5875,0.3625,0.1683693,0.08418465 +0.5875,0.3875,0.07499999,0.07500002 +0.5875,0.3875,0.053032935,0.10606602 +0.5875,0.3875,0.10606605,0.053032994 +0.5875,0.3875,0.094494045,0.094494075 +0.5875,0.3875,0.06681734,0.13363484 +0.5875,0.3875,0.13363487,0.0668174 +0.5875,0.3875,0.11905509,0.11905506 +0.5875,0.3875,0.08418465,0.1683693 +0.5875,0.3875,0.1683693,0.08418465 +0.5875,0.4125,0.07499999,0.07499999 +0.5875,0.4125,0.053032935,0.10606605 +0.5875,0.4125,0.10606605,0.053032994 +0.5875,0.4125,0.094494045,0.094494045 +0.5875,0.41250002,0.06681734,0.13363484 +0.5875,0.4125,0.13363487,0.0668174 +0.5875,0.4125,0.11905509,0.11905509 +0.5875,0.4125,0.08418465,0.1683693 +0.5875,0.4125,0.1683693,0.08418465 +0.5875,0.4375,0.07499999,0.07499999 +0.5875,0.4375,0.053032935,0.10606605 +0.5875,0.4375,0.10606605,0.053032994 +0.5875,0.4375,0.094494045,0.094494045 +0.5875,0.4375,0.06681734,0.1336348 +0.5875,0.4375,0.13363487,0.0668174 +0.5875,0.4375,0.11905509,0.11905509 +0.5875,0.4375,0.08418465,0.1683693 +0.5875,0.4375,0.1683693,0.08418465 +0.5875,0.4625,0.07499999,0.07499999 +0.5875,0.4625,0.053032935,0.10606605 +0.5875,0.46249998,0.10606605,0.053032964 +0.5875,0.4625,0.094494045,0.094494045 +0.5875,0.46250004,0.06681734,0.13363484 +0.5875,0.46249998,0.13363487,0.06681737 +0.5875,0.4625,0.11905509,0.11905509 +0.5875,0.46249998,0.08418465,0.16836926 +0.5875,0.46249998,0.1683693,0.08418462 +0.5875,0.48749998,0.07499999,0.07499999 +0.5875,0.4875,0.053032935,0.10606602 +0.5875,0.4875,0.10606605,0.053032994 +0.5875,0.48749998,0.094494045,0.094494045 +0.5875,0.4875,0.06681734,0.13363484 +0.5875,0.4875,0.13363487,0.0668174 +0.5875,0.4875,0.11905509,0.11905506 +0.5875,0.4875,0.08418465,0.1683693 +0.5875,0.4875,0.1683693,0.08418465 +0.5875,0.5125,0.07499999,0.07500002 +0.5875,0.51250005,0.053032935,0.10606605 +0.5875,0.5125,0.10606605,0.053032964 +0.5875,0.5125,0.094494045,0.094494075 +0.5875,0.51250005,0.06681734,0.13363487 +0.5875,0.5125,0.13363487,0.06681737 +0.5875,0.51250005,0.11905509,0.11905509 +0.5875,0.5125,0.08418465,0.1683693 +0.5875,0.5125,0.1683693,0.08418465 +0.5875,0.5375,0.07499999,0.07499999 +0.5875,0.5375,0.053032935,0.10606605 +0.5875,0.5375,0.10606605,0.053032935 +0.5875,0.5375,0.094494045,0.094494045 +0.5875,0.5375,0.06681734,0.13363487 +0.5875,0.5375,0.13363487,0.06681734 +0.5875,0.5375,0.11905509,0.11905509 +0.5875,0.5375,0.08418465,0.16836932 +0.5875,0.5375,0.1683693,0.08418468 +0.5875,0.5625,0.07499999,0.07500005 +0.5875,0.5625,0.053032935,0.10606599 +0.5875,0.5625,0.10606605,0.053032994 +0.5875,0.5625,0.094494045,0.094494104 +0.5875,0.5625,0.06681734,0.13363484 +0.5875,0.5625,0.13363487,0.0668174 +0.5875,0.5625,0.11905509,0.11905503 +0.5875,0.5625,0.08418465,0.1683693 +0.5875,0.5625,0.1683693,0.08418465 +0.5875,0.5875,0.07499999,0.07499999 +0.5875,0.5875,0.053032935,0.10606605 +0.5875,0.5875,0.10606605,0.053032935 +0.5875,0.5875,0.094494045,0.094494045 +0.5875,0.5875,0.06681734,0.13363487 +0.5875,0.5875,0.13363487,0.06681734 +0.5875,0.5875,0.11905509,0.11905509 +0.5875,0.5875,0.08418465,0.1683693 +0.5875,0.5875,0.1683693,0.08418465 +0.5875,0.61249995,0.07499999,0.07499999 +0.5875,0.61249995,0.053032935,0.10606605 +0.5875,0.6125,0.10606605,0.053032994 +0.5875,0.61249995,0.094494045,0.094494045 +0.5875,0.61249995,0.06681734,0.13363487 +0.5875,0.6125,0.13363487,0.0668174 +0.5875,0.61249995,0.11905509,0.11905509 +0.5875,0.6125,0.08418465,0.1683693 +0.5875,0.6125,0.1683693,0.08418465 +0.5875,0.63750005,0.07499999,0.07499999 +0.5875,0.63750005,0.053032935,0.10606605 +0.5875,0.6375,0.10606605,0.053032994 +0.5875,0.63750005,0.094494045,0.094494045 +0.5875,0.63750005,0.06681734,0.13363487 +0.5875,0.6375,0.13363487,0.0668174 +0.5875,0.63750005,0.11905509,0.11905509 +0.5875,0.6375,0.08418465,0.1683693 +0.5875,0.6375,0.1683693,0.08418465 +0.5875,0.6625,0.07499999,0.07499999 +0.5875,0.6625,0.053032935,0.10606605 +0.5875,0.6625,0.10606605,0.053032935 +0.5875,0.6625,0.094494045,0.094494045 +0.5875,0.6625,0.06681734,0.13363487 +0.5875,0.6625,0.13363487,0.06681734 +0.5875,0.6625,0.11905509,0.11905509 +0.5875,0.6625,0.08418465,0.1683693 +0.5875,0.6625,0.1683693,0.08418465 +0.5875,0.6875,0.07499999,0.07500005 +0.5875,0.6875,0.053032935,0.10606599 +0.5875,0.6875,0.10606605,0.053032994 +0.5875,0.6875,0.094494045,0.094494104 +0.5875,0.6875,0.06681734,0.1336348 +0.5875,0.6875,0.13363487,0.0668174 +0.5875,0.6875,0.11905509,0.11905503 +0.5875,0.6875,0.08418465,0.1683693 +0.5875,0.6875,0.1683693,0.08418465 +0.5875,0.7125,0.07499999,0.07499999 +0.5875,0.7125,0.053032935,0.10606605 +0.5875,0.7125,0.10606605,0.053032935 +0.5875,0.7125,0.094494045,0.094494045 +0.5875,0.7125,0.06681734,0.13363487 +0.5875,0.7125,0.13363487,0.06681734 +0.5875,0.7125,0.11905509,0.11905509 +0.5875,0.7125,0.08418465,0.1683693 +0.5875,0.7125,0.1683693,0.08418465 +0.5875,0.73749995,0.07499999,0.07499999 +0.5875,0.73749995,0.053032935,0.10606605 +0.5875,0.7375,0.10606605,0.053032994 +0.5875,0.73749995,0.094494045,0.094494045 +0.5875,0.73749995,0.06681734,0.1336348 +0.5875,0.7375,0.13363487,0.0668174 +0.5875,0.73749995,0.11905509,0.11905509 +0.5875,0.7375,0.08418465,0.1683693 +0.5875,0.7375,0.1683693,0.08418465 +0.5875,0.76250005,0.07499999,0.07499999 +0.5875,0.7625,0.053032935,0.10606599 +0.5875,0.7625,0.10606605,0.053032994 +0.5875,0.76250005,0.094494045,0.094494045 +0.5875,0.7625,0.06681734,0.1336348 +0.5875,0.7625,0.13363487,0.0668174 +0.5875,0.7625,0.11905509,0.11905503 +0.5875,0.7625,0.08418465,0.1683693 +0.5875,0.7625,0.1683693,0.08418465 +0.5875,0.7875,0.07499999,0.07499999 +0.5875,0.78749996,0.053032935,0.10606599 +0.5875,0.7875,0.10606605,0.053032994 +0.5875,0.7875,0.094494045,0.094494045 +0.5875,0.78749996,0.06681734,0.1336348 +0.5875,0.7875,0.13363487,0.0668174 +0.5875,0.78749996,0.11905509,0.11905503 +0.5875,0.7875,0.08418465,0.1683693 +0.5875,0.7875,0.1683693,0.08418465 +0.5875,0.8125,0.07499999,0.07500005 +0.5875,0.8125,0.053032935,0.10606599 +0.5875,0.8125,0.10606605,0.053033054 +0.5875,0.8125,0.094494045,0.094494104 +0.5875,0.8125,0.06681734,0.1336348 +0.5875,0.8125,0.13363487,0.06681746 +0.5875,0.8125,0.11905509,0.11905503 +0.5875,0.8125,0.08418465,0.1683693 +0.5875,0.8125,0.1683693,0.08418465 +0.5875,0.8375,0.07499999,0.07499999 +0.5875,0.8375,0.053032935,0.10606599 +0.5875,0.8375,0.10606605,0.053033054 +0.5875,0.8375,0.094494045,0.094494045 +0.5875,0.8375,0.06681734,0.1336348 +0.5875,0.8375,0.13363487,0.06681746 +0.5875,0.8375,0.11905509,0.11905503 +0.5875,0.8375,0.08418465,0.1683693 +0.5875,0.8375,0.1683693,0.08418465 +0.5875,0.86249995,0.07499999,0.07499999 +0.5875,0.86249995,0.053032935,0.10606593 +0.5875,0.86249995,0.10606605,0.053033054 +0.5875,0.86249995,0.094494045,0.094494045 +0.5875,0.86249995,0.06681734,0.1336348 +0.5875,0.86249995,0.13363487,0.06681746 +0.5875,0.86249995,0.11905509,0.11905497 +0.5875,0.8625,0.08418465,0.1683693 +0.5875,0.8625,0.1683693,0.08418465 +0.5875,0.88750005,0.07499999,0.07499999 +0.5875,0.88750005,0.053032935,0.10606593 +0.5875,0.88750005,0.10606605,0.053033054 +0.5875,0.88750005,0.094494045,0.094494045 +0.5875,0.88750005,0.06681734,0.13363475 +0.5875,0.88750005,0.13363487,0.06681746 +0.5875,0.88750005,0.11905509,0.11905497 +0.5875,0.8875,0.08418465,0.1683693 +0.5875,0.8875,0.1683693,0.08418465 +0.5875,0.9125,0.07499999,0.07499999 +0.5875,0.9125,0.053032935,0.10606593 +0.5875,0.9125,0.10606605,0.053033054 +0.5875,0.9125,0.094494045,0.094494045 +0.5875,0.9125,0.06681734,0.13363475 +0.5875,0.9125,0.13363487,0.06681746 +0.5875,0.9125,0.11905509,0.11905497 +0.5875,0.9125,0.08418465,0.1683693 +0.5875,0.9125,0.1683693,0.08418465 +0.5875,0.9375,0.07499999,0.07500005 +0.5875,0.9375,0.053032935,0.10606599 +0.5875,0.9375,0.10606605,0.053033113 +0.5875,0.9375,0.094494045,0.094494104 +0.5875,0.9375,0.06681734,0.1336348 +0.5875,0.9375,0.13363487,0.06681752 +0.5875,0.9375,0.11905509,0.11905503 +0.5875,0.9375,0.08418465,0.1683693 +0.5875,0.9375,0.1683693,0.08418465 +0.5875,0.9625,0.07499999,0.07499999 +0.5875,0.9625,0.053032935,0.10606593 +0.5875,0.9625,0.10606605,0.053033054 +0.5875,0.9625,0.094494045,0.094494045 +0.5875,0.9625,0.06681734,0.13363475 +0.5875,0.9625,0.13363487,0.06681746 +0.5875,0.9625,0.11905509,0.11905497 +0.5875,0.9625,0.08418465,0.1683693 +0.5875,0.9625,0.1683693,0.08418465 +0.5875,0.98749995,0.07499999,0.07499999 +0.5875,0.98749995,0.053032935,0.10606593 +0.5875,0.98749995,0.10606605,0.053033054 +0.5875,0.98749995,0.094494045,0.094494045 +0.5875,0.98749995,0.06681734,0.13363475 +0.5875,0.98749995,0.13363487,0.06681746 +0.5875,0.98749995,0.11905509,0.11905497 +0.5875,0.98749995,0.08418465,0.16836923 +0.5875,0.98749995,0.1683693,0.08418459 +0.61249995,0.0125,0.07499999,0.075 +0.6125,0.012499997,0.053032994,0.10606602 +0.61249995,0.012499999,0.10606605,0.05303301 +0.61249995,0.012499999,0.094494045,0.09449408 +0.6125,0.012500001,0.0668174,0.1336348 +0.61249995,0.012499999,0.13363487,0.0668174 +0.61249995,0.012500001,0.11905509,0.11905508 +0.6125,0.012499999,0.08418465,0.1683693 +0.6125,0.012500002,0.1683693,0.084184654 +0.61249995,0.0375,0.07499999,0.075 +0.6125,0.037499998,0.053032994,0.10606601 +0.61249995,0.0375,0.10606605,0.05303301 +0.61249995,0.0375,0.094494045,0.094494075 +0.6125,0.0375,0.0668174,0.1336348 +0.61249995,0.0375,0.13363487,0.0668174 +0.61249995,0.0375,0.11905509,0.11905508 +0.6125,0.0375,0.08418465,0.16836931 +0.6125,0.0375,0.1683693,0.08418466 +0.61249995,0.0625,0.07499999,0.075 +0.6125,0.0625,0.053032994,0.10606602 +0.61249995,0.0625,0.10606605,0.05303301 +0.61249995,0.0625,0.094494045,0.094494075 +0.6125,0.0625,0.0668174,0.1336348 +0.61249995,0.0625,0.13363487,0.0668174 +0.61249995,0.0625,0.11905509,0.11905508 +0.6125,0.0625,0.08418465,0.16836932 +0.6125,0.0625,0.1683693,0.08418465 +0.61249995,0.0875,0.07499999,0.075 +0.6125,0.08749999,0.053032994,0.10606601 +0.61249995,0.087500006,0.10606605,0.053033013 +0.61249995,0.087500006,0.094494045,0.09449408 +0.6125,0.087500006,0.0668174,0.1336348 +0.61249995,0.0875,0.13363487,0.0668174 +0.61249995,0.0875,0.11905509,0.11905508 +0.6125,0.0875,0.08418465,0.16836931 +0.6125,0.087500006,0.1683693,0.084184654 +0.61249995,0.112500004,0.07499999,0.075 +0.6125,0.1125,0.053032994,0.10606601 +0.61249995,0.112500004,0.10606605,0.05303301 +0.61249995,0.1125,0.094494045,0.094494075 +0.6125,0.1125,0.0668174,0.1336348 +0.61249995,0.1125,0.13363487,0.0668174 +0.61249995,0.1125,0.11905509,0.119055085 +0.6125,0.112500004,0.08418465,0.16836931 +0.6125,0.1125,0.1683693,0.08418465 +0.61249995,0.1375,0.07499999,0.074999996 +0.6125,0.1375,0.053032994,0.10606602 +0.61249995,0.1375,0.10606605,0.053033024 +0.61249995,0.1375,0.094494045,0.09449408 +0.6125,0.1375,0.0668174,0.1336348 +0.61249995,0.1375,0.13363487,0.0668174 +0.61249995,0.13749999,0.11905509,0.11905508 +0.6125,0.1375,0.08418465,0.1683693 +0.6125,0.1375,0.1683693,0.084184654 +0.61249995,0.1625,0.07499999,0.075 +0.6125,0.16250001,0.053032994,0.106066026 +0.61249995,0.1625,0.10606605,0.05303301 +0.61249995,0.1625,0.094494045,0.094494075 +0.6125,0.1625,0.0668174,0.1336348 +0.61249995,0.1625,0.13363487,0.0668174 +0.61249995,0.1625,0.11905509,0.11905508 +0.6125,0.1625,0.08418465,0.1683693 +0.6125,0.1625,0.1683693,0.08418464 +0.61249995,0.1875,0.07499999,0.07499999 +0.6125,0.1875,0.053032994,0.10606603 +0.61249995,0.1875,0.10606605,0.053033024 +0.61249995,0.1875,0.094494045,0.09449406 +0.6125,0.1875,0.0668174,0.1336348 +0.61249995,0.1875,0.13363487,0.06681742 +0.61249995,0.1875,0.11905509,0.11905509 +0.6125,0.1875,0.08418465,0.16836931 +0.6125,0.1875,0.1683693,0.08418465 +0.61249995,0.2125,0.07499999,0.075 +0.6125,0.2125,0.053032994,0.10606603 +0.61249995,0.2125,0.10606605,0.05303301 +0.61249995,0.21249999,0.094494045,0.094494075 +0.6125,0.2125,0.0668174,0.1336348 +0.61249995,0.2125,0.13363487,0.0668174 +0.61249995,0.2125,0.11905509,0.11905509 +0.6125,0.2125,0.08418465,0.16836931 +0.6125,0.2125,0.1683693,0.08418465 +0.61249995,0.23750001,0.07499999,0.075 +0.6125,0.2375,0.053032994,0.10606602 +0.61249995,0.2375,0.10606605,0.053033024 +0.61249995,0.2375,0.094494045,0.094494075 +0.6125,0.23750001,0.0668174,0.13363482 +0.61249995,0.2375,0.13363487,0.06681743 +0.61249995,0.2375,0.11905509,0.11905506 +0.6125,0.2375,0.08418465,0.16836932 +0.6125,0.23750001,0.1683693,0.08418466 +0.61249995,0.2625,0.07499999,0.07500002 +0.6125,0.2625,0.053032994,0.10606603 +0.61249995,0.2625,0.10606605,0.053033024 +0.61249995,0.2625,0.094494045,0.094494075 +0.6125,0.2625,0.0668174,0.13363479 +0.61249995,0.2625,0.13363487,0.06681743 +0.61249995,0.2625,0.11905509,0.11905508 +0.6125,0.2625,0.08418465,0.1683693 +0.6125,0.2625,0.1683693,0.08418463 +0.61249995,0.2875,0.07499999,0.07499999 +0.6125,0.2875,0.053032994,0.10606603 +0.61249995,0.28750002,0.10606605,0.053033024 +0.61249995,0.2875,0.094494045,0.094494045 +0.6125,0.2875,0.0668174,0.1336348 +0.61249995,0.28750002,0.13363487,0.06681743 +0.61249995,0.2875,0.11905509,0.11905508 +0.6125,0.2875,0.08418465,0.1683693 +0.6125,0.2875,0.1683693,0.08418465 +0.61249995,0.3125,0.07499999,0.07499999 +0.6125,0.3125,0.053032994,0.10606605 +0.61249995,0.3125,0.10606605,0.053032994 +0.61249995,0.3125,0.094494045,0.094494045 +0.6125,0.3125,0.0668174,0.1336348 +0.61249995,0.3125,0.13363487,0.0668174 +0.61249995,0.3125,0.11905509,0.11905509 +0.6125,0.3125,0.08418465,0.1683693 +0.6125,0.3125,0.1683693,0.08418465 +0.61249995,0.3375,0.07499999,0.07499999 +0.6125,0.3375,0.053032994,0.10606605 +0.61249995,0.33749998,0.10606605,0.053033024 +0.61249995,0.3375,0.094494045,0.094494045 +0.6125,0.33750004,0.0668174,0.13363484 +0.61249995,0.33749998,0.13363487,0.06681743 +0.61249995,0.3375,0.11905509,0.11905509 +0.6125,0.3375,0.08418465,0.1683693 +0.6125,0.3375,0.1683693,0.08418465 +0.61249995,0.3625,0.07499999,0.07500002 +0.6125,0.3625,0.053032994,0.10606602 +0.61249995,0.3625,0.10606605,0.053033024 +0.61249995,0.3625,0.094494045,0.094494075 +0.6125,0.3625,0.0668174,0.1336348 +0.61249995,0.3625,0.13363487,0.06681743 +0.61249995,0.3625,0.11905509,0.11905506 +0.6125,0.3625,0.08418465,0.1683693 +0.6125,0.3625,0.1683693,0.08418465 +0.61249995,0.3875,0.07499999,0.07500002 +0.6125,0.3875,0.053032994,0.10606602 +0.61249995,0.3875,0.10606605,0.053032994 +0.61249995,0.3875,0.094494045,0.094494075 +0.6125,0.3875,0.0668174,0.13363484 +0.61249995,0.3875,0.13363487,0.0668174 +0.61249995,0.3875,0.11905509,0.11905506 +0.6125,0.3875,0.08418465,0.1683693 +0.6125,0.3875,0.1683693,0.08418465 +0.61249995,0.4125,0.07499999,0.07499999 +0.6125,0.4125,0.053032994,0.10606605 +0.61249995,0.4125,0.10606605,0.053032994 +0.61249995,0.4125,0.094494045,0.094494045 +0.6125,0.41250002,0.0668174,0.13363484 +0.61249995,0.4125,0.13363487,0.0668174 +0.61249995,0.4125,0.11905509,0.11905509 +0.6125,0.4125,0.08418465,0.1683693 +0.6125,0.4125,0.1683693,0.08418465 +0.61249995,0.4375,0.07499999,0.07499999 +0.6125,0.4375,0.053032994,0.10606605 +0.61249995,0.4375,0.10606605,0.053032994 +0.61249995,0.4375,0.094494045,0.094494045 +0.6125,0.4375,0.0668174,0.1336348 +0.61249995,0.4375,0.13363487,0.0668174 +0.61249995,0.4375,0.11905509,0.11905509 +0.6125,0.4375,0.08418465,0.1683693 +0.6125,0.4375,0.1683693,0.08418465 +0.61249995,0.4625,0.07499999,0.07499999 +0.6125,0.4625,0.053032994,0.10606605 +0.61249995,0.46249998,0.10606605,0.053032964 +0.61249995,0.4625,0.094494045,0.094494045 +0.6125,0.46250004,0.0668174,0.13363484 +0.61249995,0.46249998,0.13363487,0.06681737 +0.61249995,0.4625,0.11905509,0.11905509 +0.6125,0.46249998,0.08418465,0.16836926 +0.6125,0.46249998,0.1683693,0.08418462 +0.61249995,0.48749998,0.07499999,0.07499999 +0.6125,0.4875,0.053032994,0.10606602 +0.61249995,0.4875,0.10606605,0.053032994 +0.61249995,0.48749998,0.094494045,0.094494045 +0.6125,0.4875,0.0668174,0.13363484 +0.61249995,0.4875,0.13363487,0.0668174 +0.61249995,0.4875,0.11905509,0.11905506 +0.6125,0.4875,0.08418465,0.1683693 +0.6125,0.4875,0.1683693,0.08418465 +0.61249995,0.5125,0.07499999,0.07500002 +0.6125,0.51250005,0.053032994,0.10606605 +0.61249995,0.5125,0.10606605,0.053032964 +0.61249995,0.5125,0.094494045,0.094494075 +0.6125,0.51250005,0.0668174,0.13363487 +0.61249995,0.5125,0.13363487,0.06681737 +0.61249995,0.51250005,0.11905509,0.11905509 +0.6125,0.5125,0.08418465,0.1683693 +0.6125,0.5125,0.1683693,0.08418465 +0.61249995,0.5375,0.07499999,0.07499999 +0.6125,0.5375,0.053032994,0.10606605 +0.61249995,0.5375,0.10606605,0.053032935 +0.61249995,0.5375,0.094494045,0.094494045 +0.6125,0.5375,0.0668174,0.13363487 +0.61249995,0.5375,0.13363487,0.06681734 +0.61249995,0.5375,0.11905509,0.11905509 +0.6125,0.5375,0.08418465,0.16836932 +0.6125,0.5375,0.1683693,0.08418468 +0.61249995,0.5625,0.07499999,0.07500005 +0.6125,0.5625,0.053032994,0.10606599 +0.61249995,0.5625,0.10606605,0.053032994 +0.61249995,0.5625,0.094494045,0.094494104 +0.6125,0.5625,0.0668174,0.13363484 +0.61249995,0.5625,0.13363487,0.0668174 +0.61249995,0.5625,0.11905509,0.11905503 +0.6125,0.5625,0.08418465,0.1683693 +0.6125,0.5625,0.1683693,0.08418465 +0.61249995,0.5875,0.07499999,0.07499999 +0.6125,0.5875,0.053032994,0.10606605 +0.61249995,0.5875,0.10606605,0.053032935 +0.61249995,0.5875,0.094494045,0.094494045 +0.6125,0.5875,0.0668174,0.13363487 +0.61249995,0.5875,0.13363487,0.06681734 +0.61249995,0.5875,0.11905509,0.11905509 +0.6125,0.5875,0.08418465,0.1683693 +0.6125,0.5875,0.1683693,0.08418465 +0.61249995,0.61249995,0.07499999,0.07499999 +0.6125,0.61249995,0.053032994,0.10606605 +0.61249995,0.6125,0.10606605,0.053032994 +0.61249995,0.61249995,0.094494045,0.094494045 +0.6125,0.61249995,0.0668174,0.13363487 +0.61249995,0.6125,0.13363487,0.0668174 +0.61249995,0.61249995,0.11905509,0.11905509 +0.6125,0.6125,0.08418465,0.1683693 +0.6125,0.6125,0.1683693,0.08418465 +0.61249995,0.63750005,0.07499999,0.07499999 +0.6125,0.63750005,0.053032994,0.10606605 +0.61249995,0.6375,0.10606605,0.053032994 +0.61249995,0.63750005,0.094494045,0.094494045 +0.6125,0.63750005,0.0668174,0.13363487 +0.61249995,0.6375,0.13363487,0.0668174 +0.61249995,0.63750005,0.11905509,0.11905509 +0.6125,0.6375,0.08418465,0.1683693 +0.6125,0.6375,0.1683693,0.08418465 +0.61249995,0.6625,0.07499999,0.07499999 +0.6125,0.6625,0.053032994,0.10606605 +0.61249995,0.6625,0.10606605,0.053032935 +0.61249995,0.6625,0.094494045,0.094494045 +0.6125,0.6625,0.0668174,0.13363487 +0.61249995,0.6625,0.13363487,0.06681734 +0.61249995,0.6625,0.11905509,0.11905509 +0.6125,0.6625,0.08418465,0.1683693 +0.6125,0.6625,0.1683693,0.08418465 +0.61249995,0.6875,0.07499999,0.07500005 +0.6125,0.6875,0.053032994,0.10606599 +0.61249995,0.6875,0.10606605,0.053032994 +0.61249995,0.6875,0.094494045,0.094494104 +0.6125,0.6875,0.0668174,0.1336348 +0.61249995,0.6875,0.13363487,0.0668174 +0.61249995,0.6875,0.11905509,0.11905503 +0.6125,0.6875,0.08418465,0.1683693 +0.6125,0.6875,0.1683693,0.08418465 +0.61249995,0.7125,0.07499999,0.07499999 +0.6125,0.7125,0.053032994,0.10606605 +0.61249995,0.7125,0.10606605,0.053032935 +0.61249995,0.7125,0.094494045,0.094494045 +0.6125,0.7125,0.0668174,0.13363487 +0.61249995,0.7125,0.13363487,0.06681734 +0.61249995,0.7125,0.11905509,0.11905509 +0.6125,0.7125,0.08418465,0.1683693 +0.6125,0.7125,0.1683693,0.08418465 +0.61249995,0.73749995,0.07499999,0.07499999 +0.6125,0.73749995,0.053032994,0.10606605 +0.61249995,0.7375,0.10606605,0.053032994 +0.61249995,0.73749995,0.094494045,0.094494045 +0.6125,0.73749995,0.0668174,0.1336348 +0.61249995,0.7375,0.13363487,0.0668174 +0.61249995,0.73749995,0.11905509,0.11905509 +0.6125,0.7375,0.08418465,0.1683693 +0.6125,0.7375,0.1683693,0.08418465 +0.61249995,0.76250005,0.07499999,0.07499999 +0.6125,0.7625,0.053032994,0.10606599 +0.61249995,0.7625,0.10606605,0.053032994 +0.61249995,0.76250005,0.094494045,0.094494045 +0.6125,0.7625,0.0668174,0.1336348 +0.61249995,0.7625,0.13363487,0.0668174 +0.61249995,0.7625,0.11905509,0.11905503 +0.6125,0.7625,0.08418465,0.1683693 +0.6125,0.7625,0.1683693,0.08418465 +0.61249995,0.7875,0.07499999,0.07499999 +0.6125,0.78749996,0.053032994,0.10606599 +0.61249995,0.7875,0.10606605,0.053032994 +0.61249995,0.7875,0.094494045,0.094494045 +0.6125,0.78749996,0.0668174,0.1336348 +0.61249995,0.7875,0.13363487,0.0668174 +0.61249995,0.78749996,0.11905509,0.11905503 +0.6125,0.7875,0.08418465,0.1683693 +0.6125,0.7875,0.1683693,0.08418465 +0.61249995,0.8125,0.07499999,0.07500005 +0.6125,0.8125,0.053032994,0.10606599 +0.61249995,0.8125,0.10606605,0.053033054 +0.61249995,0.8125,0.094494045,0.094494104 +0.6125,0.8125,0.0668174,0.1336348 +0.61249995,0.8125,0.13363487,0.06681746 +0.61249995,0.8125,0.11905509,0.11905503 +0.6125,0.8125,0.08418465,0.1683693 +0.6125,0.8125,0.1683693,0.08418465 +0.61249995,0.8375,0.07499999,0.07499999 +0.6125,0.8375,0.053032994,0.10606599 +0.61249995,0.8375,0.10606605,0.053033054 +0.61249995,0.8375,0.094494045,0.094494045 +0.6125,0.8375,0.0668174,0.1336348 +0.61249995,0.8375,0.13363487,0.06681746 +0.61249995,0.8375,0.11905509,0.11905503 +0.6125,0.8375,0.08418465,0.1683693 +0.6125,0.8375,0.1683693,0.08418465 +0.61249995,0.86249995,0.07499999,0.07499999 +0.6125,0.86249995,0.053032994,0.10606593 +0.61249995,0.86249995,0.10606605,0.053033054 +0.61249995,0.86249995,0.094494045,0.094494045 +0.6125,0.86249995,0.0668174,0.1336348 +0.61249995,0.86249995,0.13363487,0.06681746 +0.61249995,0.86249995,0.11905509,0.11905497 +0.6125,0.8625,0.08418465,0.1683693 +0.6125,0.8625,0.1683693,0.08418465 +0.61249995,0.88750005,0.07499999,0.07499999 +0.6125,0.88750005,0.053032994,0.10606593 +0.61249995,0.88750005,0.10606605,0.053033054 +0.61249995,0.88750005,0.094494045,0.094494045 +0.6125,0.88750005,0.0668174,0.13363475 +0.61249995,0.88750005,0.13363487,0.06681746 +0.61249995,0.88750005,0.11905509,0.11905497 +0.6125,0.8875,0.08418465,0.1683693 +0.6125,0.8875,0.1683693,0.08418465 +0.61249995,0.9125,0.07499999,0.07499999 +0.6125,0.9125,0.053032994,0.10606593 +0.61249995,0.9125,0.10606605,0.053033054 +0.61249995,0.9125,0.094494045,0.094494045 +0.6125,0.9125,0.0668174,0.13363475 +0.61249995,0.9125,0.13363487,0.06681746 +0.61249995,0.9125,0.11905509,0.11905497 +0.6125,0.9125,0.08418465,0.1683693 +0.6125,0.9125,0.1683693,0.08418465 +0.61249995,0.9375,0.07499999,0.07500005 +0.6125,0.9375,0.053032994,0.10606599 +0.61249995,0.9375,0.10606605,0.053033113 +0.61249995,0.9375,0.094494045,0.094494104 +0.6125,0.9375,0.0668174,0.1336348 +0.61249995,0.9375,0.13363487,0.06681752 +0.61249995,0.9375,0.11905509,0.11905503 +0.6125,0.9375,0.08418465,0.1683693 +0.6125,0.9375,0.1683693,0.08418465 +0.61249995,0.9625,0.07499999,0.07499999 +0.6125,0.9625,0.053032994,0.10606593 +0.61249995,0.9625,0.10606605,0.053033054 +0.61249995,0.9625,0.094494045,0.094494045 +0.6125,0.9625,0.0668174,0.13363475 +0.61249995,0.9625,0.13363487,0.06681746 +0.61249995,0.9625,0.11905509,0.11905497 +0.6125,0.9625,0.08418465,0.1683693 +0.6125,0.9625,0.1683693,0.08418465 +0.61249995,0.98749995,0.07499999,0.07499999 +0.6125,0.98749995,0.053032994,0.10606593 +0.61249995,0.98749995,0.10606605,0.053033054 +0.61249995,0.98749995,0.094494045,0.094494045 +0.6125,0.98749995,0.0668174,0.13363475 +0.61249995,0.98749995,0.13363487,0.06681746 +0.61249995,0.98749995,0.11905509,0.11905497 +0.6125,0.98749995,0.08418465,0.16836923 +0.6125,0.98749995,0.1683693,0.08418459 +0.63750005,0.0125,0.07499999,0.075 +0.6375,0.012499997,0.053032994,0.10606602 +0.63750005,0.012499999,0.10606605,0.05303301 +0.63750005,0.012499999,0.094494045,0.09449408 +0.6375,0.012500001,0.0668174,0.1336348 +0.63750005,0.012499999,0.13363487,0.0668174 +0.63750005,0.012500001,0.11905509,0.11905508 +0.6375,0.012499999,0.08418465,0.1683693 +0.6375,0.012500002,0.1683693,0.084184654 +0.63750005,0.0375,0.07499999,0.075 +0.6375,0.037499998,0.053032994,0.10606601 +0.63750005,0.0375,0.10606605,0.05303301 +0.63750005,0.0375,0.094494045,0.094494075 +0.6375,0.0375,0.0668174,0.1336348 +0.63750005,0.0375,0.13363487,0.0668174 +0.63750005,0.0375,0.11905509,0.11905508 +0.6375,0.0375,0.08418465,0.16836931 +0.6375,0.0375,0.1683693,0.08418466 +0.63750005,0.0625,0.07499999,0.075 +0.6375,0.0625,0.053032994,0.10606602 +0.63750005,0.0625,0.10606605,0.05303301 +0.63750005,0.0625,0.094494045,0.094494075 +0.6375,0.0625,0.0668174,0.1336348 +0.63750005,0.0625,0.13363487,0.0668174 +0.63750005,0.0625,0.11905509,0.11905508 +0.6375,0.0625,0.08418465,0.16836932 +0.6375,0.0625,0.1683693,0.08418465 +0.63750005,0.0875,0.07499999,0.075 +0.6375,0.08749999,0.053032994,0.10606601 +0.63750005,0.087500006,0.10606605,0.053033013 +0.63750005,0.087500006,0.094494045,0.09449408 +0.6375,0.087500006,0.0668174,0.1336348 +0.63750005,0.0875,0.13363487,0.0668174 +0.63750005,0.0875,0.11905509,0.11905508 +0.6375,0.0875,0.08418465,0.16836931 +0.6375,0.087500006,0.1683693,0.084184654 +0.63750005,0.112500004,0.07499999,0.075 +0.6375,0.1125,0.053032994,0.10606601 +0.63750005,0.112500004,0.10606605,0.05303301 +0.63750005,0.1125,0.094494045,0.094494075 +0.6375,0.1125,0.0668174,0.1336348 +0.63750005,0.1125,0.13363487,0.0668174 +0.63750005,0.1125,0.11905509,0.119055085 +0.6375,0.112500004,0.08418465,0.16836931 +0.6375,0.1125,0.1683693,0.08418465 +0.63750005,0.1375,0.07499999,0.074999996 +0.6375,0.1375,0.053032994,0.10606602 +0.63750005,0.1375,0.10606605,0.053033024 +0.63750005,0.1375,0.094494045,0.09449408 +0.6375,0.1375,0.0668174,0.1336348 +0.63750005,0.1375,0.13363487,0.0668174 +0.63750005,0.13749999,0.11905509,0.11905508 +0.6375,0.1375,0.08418465,0.1683693 +0.6375,0.1375,0.1683693,0.084184654 +0.63750005,0.1625,0.07499999,0.075 +0.6375,0.16250001,0.053032994,0.106066026 +0.63750005,0.1625,0.10606605,0.05303301 +0.63750005,0.1625,0.094494045,0.094494075 +0.6375,0.1625,0.0668174,0.1336348 +0.63750005,0.1625,0.13363487,0.0668174 +0.63750005,0.1625,0.11905509,0.11905508 +0.6375,0.1625,0.08418465,0.1683693 +0.6375,0.1625,0.1683693,0.08418464 +0.63750005,0.1875,0.07499999,0.07499999 +0.6375,0.1875,0.053032994,0.10606603 +0.63750005,0.1875,0.10606605,0.053033024 +0.63750005,0.1875,0.094494045,0.09449406 +0.6375,0.1875,0.0668174,0.1336348 +0.63750005,0.1875,0.13363487,0.06681742 +0.63750005,0.1875,0.11905509,0.11905509 +0.6375,0.1875,0.08418465,0.16836931 +0.6375,0.1875,0.1683693,0.08418465 +0.63750005,0.2125,0.07499999,0.075 +0.6375,0.2125,0.053032994,0.10606603 +0.63750005,0.2125,0.10606605,0.05303301 +0.63750005,0.21249999,0.094494045,0.094494075 +0.6375,0.2125,0.0668174,0.1336348 +0.63750005,0.2125,0.13363487,0.0668174 +0.63750005,0.2125,0.11905509,0.11905509 +0.6375,0.2125,0.08418465,0.16836931 +0.6375,0.2125,0.1683693,0.08418465 +0.63750005,0.23750001,0.07499999,0.075 +0.6375,0.2375,0.053032994,0.10606602 +0.63750005,0.2375,0.10606605,0.053033024 +0.63750005,0.2375,0.094494045,0.094494075 +0.6375,0.23750001,0.0668174,0.13363482 +0.63750005,0.2375,0.13363487,0.06681743 +0.63750005,0.2375,0.11905509,0.11905506 +0.6375,0.2375,0.08418465,0.16836932 +0.6375,0.23750001,0.1683693,0.08418466 +0.63750005,0.2625,0.07499999,0.07500002 +0.6375,0.2625,0.053032994,0.10606603 +0.63750005,0.2625,0.10606605,0.053033024 +0.63750005,0.2625,0.094494045,0.094494075 +0.6375,0.2625,0.0668174,0.13363479 +0.63750005,0.2625,0.13363487,0.06681743 +0.63750005,0.2625,0.11905509,0.11905508 +0.6375,0.2625,0.08418465,0.1683693 +0.6375,0.2625,0.1683693,0.08418463 +0.63750005,0.2875,0.07499999,0.07499999 +0.6375,0.2875,0.053032994,0.10606603 +0.63750005,0.28750002,0.10606605,0.053033024 +0.63750005,0.2875,0.094494045,0.094494045 +0.6375,0.2875,0.0668174,0.1336348 +0.63750005,0.28750002,0.13363487,0.06681743 +0.63750005,0.2875,0.11905509,0.11905508 +0.6375,0.2875,0.08418465,0.1683693 +0.6375,0.2875,0.1683693,0.08418465 +0.63750005,0.3125,0.07499999,0.07499999 +0.6375,0.3125,0.053032994,0.10606605 +0.63750005,0.3125,0.10606605,0.053032994 +0.63750005,0.3125,0.094494045,0.094494045 +0.6375,0.3125,0.0668174,0.1336348 +0.63750005,0.3125,0.13363487,0.0668174 +0.63750005,0.3125,0.11905509,0.11905509 +0.6375,0.3125,0.08418465,0.1683693 +0.6375,0.3125,0.1683693,0.08418465 +0.63750005,0.3375,0.07499999,0.07499999 +0.6375,0.3375,0.053032994,0.10606605 +0.63750005,0.33749998,0.10606605,0.053033024 +0.63750005,0.3375,0.094494045,0.094494045 +0.6375,0.33750004,0.0668174,0.13363484 +0.63750005,0.33749998,0.13363487,0.06681743 +0.63750005,0.3375,0.11905509,0.11905509 +0.6375,0.3375,0.08418465,0.1683693 +0.6375,0.3375,0.1683693,0.08418465 +0.63750005,0.3625,0.07499999,0.07500002 +0.6375,0.3625,0.053032994,0.10606602 +0.63750005,0.3625,0.10606605,0.053033024 +0.63750005,0.3625,0.094494045,0.094494075 +0.6375,0.3625,0.0668174,0.1336348 +0.63750005,0.3625,0.13363487,0.06681743 +0.63750005,0.3625,0.11905509,0.11905506 +0.6375,0.3625,0.08418465,0.1683693 +0.6375,0.3625,0.1683693,0.08418465 +0.63750005,0.3875,0.07499999,0.07500002 +0.6375,0.3875,0.053032994,0.10606602 +0.63750005,0.3875,0.10606605,0.053032994 +0.63750005,0.3875,0.094494045,0.094494075 +0.6375,0.3875,0.0668174,0.13363484 +0.63750005,0.3875,0.13363487,0.0668174 +0.63750005,0.3875,0.11905509,0.11905506 +0.6375,0.3875,0.08418465,0.1683693 +0.6375,0.3875,0.1683693,0.08418465 +0.63750005,0.4125,0.07499999,0.07499999 +0.6375,0.4125,0.053032994,0.10606605 +0.63750005,0.4125,0.10606605,0.053032994 +0.63750005,0.4125,0.094494045,0.094494045 +0.6375,0.41250002,0.0668174,0.13363484 +0.63750005,0.4125,0.13363487,0.0668174 +0.63750005,0.4125,0.11905509,0.11905509 +0.6375,0.4125,0.08418465,0.1683693 +0.6375,0.4125,0.1683693,0.08418465 +0.63750005,0.4375,0.07499999,0.07499999 +0.6375,0.4375,0.053032994,0.10606605 +0.63750005,0.4375,0.10606605,0.053032994 +0.63750005,0.4375,0.094494045,0.094494045 +0.6375,0.4375,0.0668174,0.1336348 +0.63750005,0.4375,0.13363487,0.0668174 +0.63750005,0.4375,0.11905509,0.11905509 +0.6375,0.4375,0.08418465,0.1683693 +0.6375,0.4375,0.1683693,0.08418465 +0.63750005,0.4625,0.07499999,0.07499999 +0.6375,0.4625,0.053032994,0.10606605 +0.63750005,0.46249998,0.10606605,0.053032964 +0.63750005,0.4625,0.094494045,0.094494045 +0.6375,0.46250004,0.0668174,0.13363484 +0.63750005,0.46249998,0.13363487,0.06681737 +0.63750005,0.4625,0.11905509,0.11905509 +0.6375,0.46249998,0.08418465,0.16836926 +0.6375,0.46249998,0.1683693,0.08418462 +0.63750005,0.48749998,0.07499999,0.07499999 +0.6375,0.4875,0.053032994,0.10606602 +0.63750005,0.4875,0.10606605,0.053032994 +0.63750005,0.48749998,0.094494045,0.094494045 +0.6375,0.4875,0.0668174,0.13363484 +0.63750005,0.4875,0.13363487,0.0668174 +0.63750005,0.4875,0.11905509,0.11905506 +0.6375,0.4875,0.08418465,0.1683693 +0.6375,0.4875,0.1683693,0.08418465 +0.63750005,0.5125,0.07499999,0.07500002 +0.6375,0.51250005,0.053032994,0.10606605 +0.63750005,0.5125,0.10606605,0.053032964 +0.63750005,0.5125,0.094494045,0.094494075 +0.6375,0.51250005,0.0668174,0.13363487 +0.63750005,0.5125,0.13363487,0.06681737 +0.63750005,0.51250005,0.11905509,0.11905509 +0.6375,0.5125,0.08418465,0.1683693 +0.6375,0.5125,0.1683693,0.08418465 +0.63750005,0.5375,0.07499999,0.07499999 +0.6375,0.5375,0.053032994,0.10606605 +0.63750005,0.5375,0.10606605,0.053032935 +0.63750005,0.5375,0.094494045,0.094494045 +0.6375,0.5375,0.0668174,0.13363487 +0.63750005,0.5375,0.13363487,0.06681734 +0.63750005,0.5375,0.11905509,0.11905509 +0.6375,0.5375,0.08418465,0.16836932 +0.6375,0.5375,0.1683693,0.08418468 +0.63750005,0.5625,0.07499999,0.07500005 +0.6375,0.5625,0.053032994,0.10606599 +0.63750005,0.5625,0.10606605,0.053032994 +0.63750005,0.5625,0.094494045,0.094494104 +0.6375,0.5625,0.0668174,0.13363484 +0.63750005,0.5625,0.13363487,0.0668174 +0.63750005,0.5625,0.11905509,0.11905503 +0.6375,0.5625,0.08418465,0.1683693 +0.6375,0.5625,0.1683693,0.08418465 +0.63750005,0.5875,0.07499999,0.07499999 +0.6375,0.5875,0.053032994,0.10606605 +0.63750005,0.5875,0.10606605,0.053032935 +0.63750005,0.5875,0.094494045,0.094494045 +0.6375,0.5875,0.0668174,0.13363487 +0.63750005,0.5875,0.13363487,0.06681734 +0.63750005,0.5875,0.11905509,0.11905509 +0.6375,0.5875,0.08418465,0.1683693 +0.6375,0.5875,0.1683693,0.08418465 +0.63750005,0.61249995,0.07499999,0.07499999 +0.6375,0.61249995,0.053032994,0.10606605 +0.63750005,0.6125,0.10606605,0.053032994 +0.63750005,0.61249995,0.094494045,0.094494045 +0.6375,0.61249995,0.0668174,0.13363487 +0.63750005,0.6125,0.13363487,0.0668174 +0.63750005,0.61249995,0.11905509,0.11905509 +0.6375,0.6125,0.08418465,0.1683693 +0.6375,0.6125,0.1683693,0.08418465 +0.63750005,0.63750005,0.07499999,0.07499999 +0.6375,0.63750005,0.053032994,0.10606605 +0.63750005,0.6375,0.10606605,0.053032994 +0.63750005,0.63750005,0.094494045,0.094494045 +0.6375,0.63750005,0.0668174,0.13363487 +0.63750005,0.6375,0.13363487,0.0668174 +0.63750005,0.63750005,0.11905509,0.11905509 +0.6375,0.6375,0.08418465,0.1683693 +0.6375,0.6375,0.1683693,0.08418465 +0.63750005,0.6625,0.07499999,0.07499999 +0.6375,0.6625,0.053032994,0.10606605 +0.63750005,0.6625,0.10606605,0.053032935 +0.63750005,0.6625,0.094494045,0.094494045 +0.6375,0.6625,0.0668174,0.13363487 +0.63750005,0.6625,0.13363487,0.06681734 +0.63750005,0.6625,0.11905509,0.11905509 +0.6375,0.6625,0.08418465,0.1683693 +0.6375,0.6625,0.1683693,0.08418465 +0.63750005,0.6875,0.07499999,0.07500005 +0.6375,0.6875,0.053032994,0.10606599 +0.63750005,0.6875,0.10606605,0.053032994 +0.63750005,0.6875,0.094494045,0.094494104 +0.6375,0.6875,0.0668174,0.1336348 +0.63750005,0.6875,0.13363487,0.0668174 +0.63750005,0.6875,0.11905509,0.11905503 +0.6375,0.6875,0.08418465,0.1683693 +0.6375,0.6875,0.1683693,0.08418465 +0.63750005,0.7125,0.07499999,0.07499999 +0.6375,0.7125,0.053032994,0.10606605 +0.63750005,0.7125,0.10606605,0.053032935 +0.63750005,0.7125,0.094494045,0.094494045 +0.6375,0.7125,0.0668174,0.13363487 +0.63750005,0.7125,0.13363487,0.06681734 +0.63750005,0.7125,0.11905509,0.11905509 +0.6375,0.7125,0.08418465,0.1683693 +0.6375,0.7125,0.1683693,0.08418465 +0.63750005,0.73749995,0.07499999,0.07499999 +0.6375,0.73749995,0.053032994,0.10606605 +0.63750005,0.7375,0.10606605,0.053032994 +0.63750005,0.73749995,0.094494045,0.094494045 +0.6375,0.73749995,0.0668174,0.1336348 +0.63750005,0.7375,0.13363487,0.0668174 +0.63750005,0.73749995,0.11905509,0.11905509 +0.6375,0.7375,0.08418465,0.1683693 +0.6375,0.7375,0.1683693,0.08418465 +0.63750005,0.76250005,0.07499999,0.07499999 +0.6375,0.7625,0.053032994,0.10606599 +0.63750005,0.7625,0.10606605,0.053032994 +0.63750005,0.76250005,0.094494045,0.094494045 +0.6375,0.7625,0.0668174,0.1336348 +0.63750005,0.7625,0.13363487,0.0668174 +0.63750005,0.7625,0.11905509,0.11905503 +0.6375,0.7625,0.08418465,0.1683693 +0.6375,0.7625,0.1683693,0.08418465 +0.63750005,0.7875,0.07499999,0.07499999 +0.6375,0.78749996,0.053032994,0.10606599 +0.63750005,0.7875,0.10606605,0.053032994 +0.63750005,0.7875,0.094494045,0.094494045 +0.6375,0.78749996,0.0668174,0.1336348 +0.63750005,0.7875,0.13363487,0.0668174 +0.63750005,0.78749996,0.11905509,0.11905503 +0.6375,0.7875,0.08418465,0.1683693 +0.6375,0.7875,0.1683693,0.08418465 +0.63750005,0.8125,0.07499999,0.07500005 +0.6375,0.8125,0.053032994,0.10606599 +0.63750005,0.8125,0.10606605,0.053033054 +0.63750005,0.8125,0.094494045,0.094494104 +0.6375,0.8125,0.0668174,0.1336348 +0.63750005,0.8125,0.13363487,0.06681746 +0.63750005,0.8125,0.11905509,0.11905503 +0.6375,0.8125,0.08418465,0.1683693 +0.6375,0.8125,0.1683693,0.08418465 +0.63750005,0.8375,0.07499999,0.07499999 +0.6375,0.8375,0.053032994,0.10606599 +0.63750005,0.8375,0.10606605,0.053033054 +0.63750005,0.8375,0.094494045,0.094494045 +0.6375,0.8375,0.0668174,0.1336348 +0.63750005,0.8375,0.13363487,0.06681746 +0.63750005,0.8375,0.11905509,0.11905503 +0.6375,0.8375,0.08418465,0.1683693 +0.6375,0.8375,0.1683693,0.08418465 +0.63750005,0.86249995,0.07499999,0.07499999 +0.6375,0.86249995,0.053032994,0.10606593 +0.63750005,0.86249995,0.10606605,0.053033054 +0.63750005,0.86249995,0.094494045,0.094494045 +0.6375,0.86249995,0.0668174,0.1336348 +0.63750005,0.86249995,0.13363487,0.06681746 +0.63750005,0.86249995,0.11905509,0.11905497 +0.6375,0.8625,0.08418465,0.1683693 +0.6375,0.8625,0.1683693,0.08418465 +0.63750005,0.88750005,0.07499999,0.07499999 +0.6375,0.88750005,0.053032994,0.10606593 +0.63750005,0.88750005,0.10606605,0.053033054 +0.63750005,0.88750005,0.094494045,0.094494045 +0.6375,0.88750005,0.0668174,0.13363475 +0.63750005,0.88750005,0.13363487,0.06681746 +0.63750005,0.88750005,0.11905509,0.11905497 +0.6375,0.8875,0.08418465,0.1683693 +0.6375,0.8875,0.1683693,0.08418465 +0.63750005,0.9125,0.07499999,0.07499999 +0.6375,0.9125,0.053032994,0.10606593 +0.63750005,0.9125,0.10606605,0.053033054 +0.63750005,0.9125,0.094494045,0.094494045 +0.6375,0.9125,0.0668174,0.13363475 +0.63750005,0.9125,0.13363487,0.06681746 +0.63750005,0.9125,0.11905509,0.11905497 +0.6375,0.9125,0.08418465,0.1683693 +0.6375,0.9125,0.1683693,0.08418465 +0.63750005,0.9375,0.07499999,0.07500005 +0.6375,0.9375,0.053032994,0.10606599 +0.63750005,0.9375,0.10606605,0.053033113 +0.63750005,0.9375,0.094494045,0.094494104 +0.6375,0.9375,0.0668174,0.1336348 +0.63750005,0.9375,0.13363487,0.06681752 +0.63750005,0.9375,0.11905509,0.11905503 +0.6375,0.9375,0.08418465,0.1683693 +0.6375,0.9375,0.1683693,0.08418465 +0.63750005,0.9625,0.07499999,0.07499999 +0.6375,0.9625,0.053032994,0.10606593 +0.63750005,0.9625,0.10606605,0.053033054 +0.63750005,0.9625,0.094494045,0.094494045 +0.6375,0.9625,0.0668174,0.13363475 +0.63750005,0.9625,0.13363487,0.06681746 +0.63750005,0.9625,0.11905509,0.11905497 +0.6375,0.9625,0.08418465,0.1683693 +0.6375,0.9625,0.1683693,0.08418465 +0.63750005,0.98749995,0.07499999,0.07499999 +0.6375,0.98749995,0.053032994,0.10606593 +0.63750005,0.98749995,0.10606605,0.053033054 +0.63750005,0.98749995,0.094494045,0.094494045 +0.6375,0.98749995,0.0668174,0.13363475 +0.63750005,0.98749995,0.13363487,0.06681746 +0.63750005,0.98749995,0.11905509,0.11905497 +0.6375,0.98749995,0.08418465,0.16836923 +0.6375,0.98749995,0.1683693,0.08418459 +0.6625,0.0125,0.07499999,0.075 +0.6625,0.012499997,0.053032935,0.10606602 +0.6625,0.012499999,0.10606605,0.05303301 +0.6625,0.012499999,0.094494045,0.09449408 +0.6625,0.012500001,0.06681734,0.1336348 +0.6625,0.012499999,0.13363487,0.0668174 +0.6625,0.012500001,0.11905509,0.11905508 +0.6625,0.012499999,0.08418465,0.1683693 +0.6625,0.012500002,0.1683693,0.084184654 +0.6625,0.0375,0.07499999,0.075 +0.6625,0.037499998,0.053032935,0.10606601 +0.6625,0.0375,0.10606605,0.05303301 +0.6625,0.0375,0.094494045,0.094494075 +0.6625,0.0375,0.06681734,0.1336348 +0.6625,0.0375,0.13363487,0.0668174 +0.6625,0.0375,0.11905509,0.11905508 +0.6625,0.0375,0.08418465,0.16836931 +0.6625,0.0375,0.1683693,0.08418466 +0.6625,0.0625,0.07499999,0.075 +0.6625,0.0625,0.053032935,0.10606602 +0.6625,0.0625,0.10606605,0.05303301 +0.6625,0.0625,0.094494045,0.094494075 +0.6625,0.0625,0.06681734,0.1336348 +0.6625,0.0625,0.13363487,0.0668174 +0.6625,0.0625,0.11905509,0.11905508 +0.6625,0.0625,0.08418465,0.16836932 +0.6625,0.0625,0.1683693,0.08418465 +0.6625,0.0875,0.07499999,0.075 +0.6625,0.08749999,0.053032935,0.10606601 +0.6625,0.087500006,0.10606605,0.053033013 +0.6625,0.087500006,0.094494045,0.09449408 +0.6625,0.087500006,0.06681734,0.1336348 +0.6625,0.0875,0.13363487,0.0668174 +0.6625,0.0875,0.11905509,0.11905508 +0.6625,0.0875,0.08418465,0.16836931 +0.6625,0.087500006,0.1683693,0.084184654 +0.6625,0.112500004,0.07499999,0.075 +0.6625,0.1125,0.053032935,0.10606601 +0.6625,0.112500004,0.10606605,0.05303301 +0.6625,0.1125,0.094494045,0.094494075 +0.6625,0.1125,0.06681734,0.1336348 +0.6625,0.1125,0.13363487,0.0668174 +0.6625,0.1125,0.11905509,0.119055085 +0.6625,0.112500004,0.08418465,0.16836931 +0.6625,0.1125,0.1683693,0.08418465 +0.6625,0.1375,0.07499999,0.074999996 +0.6625,0.1375,0.053032935,0.10606602 +0.6625,0.1375,0.10606605,0.053033024 +0.6625,0.1375,0.094494045,0.09449408 +0.6625,0.1375,0.06681734,0.1336348 +0.6625,0.1375,0.13363487,0.0668174 +0.6625,0.13749999,0.11905509,0.11905508 +0.6625,0.1375,0.08418465,0.1683693 +0.6625,0.1375,0.1683693,0.084184654 +0.6625,0.1625,0.07499999,0.075 +0.6625,0.16250001,0.053032935,0.106066026 +0.6625,0.1625,0.10606605,0.05303301 +0.6625,0.1625,0.094494045,0.094494075 +0.6625,0.1625,0.06681734,0.1336348 +0.6625,0.1625,0.13363487,0.0668174 +0.6625,0.1625,0.11905509,0.11905508 +0.6625,0.1625,0.08418465,0.1683693 +0.6625,0.1625,0.1683693,0.08418464 +0.6625,0.1875,0.07499999,0.07499999 +0.6625,0.1875,0.053032935,0.10606603 +0.6625,0.1875,0.10606605,0.053033024 +0.6625,0.1875,0.094494045,0.09449406 +0.6625,0.1875,0.06681734,0.1336348 +0.6625,0.1875,0.13363487,0.06681742 +0.6625,0.1875,0.11905509,0.11905509 +0.6625,0.1875,0.08418465,0.16836931 +0.6625,0.1875,0.1683693,0.08418465 +0.6625,0.2125,0.07499999,0.075 +0.6625,0.2125,0.053032935,0.10606603 +0.6625,0.2125,0.10606605,0.05303301 +0.6625,0.21249999,0.094494045,0.094494075 +0.6625,0.2125,0.06681734,0.1336348 +0.6625,0.2125,0.13363487,0.0668174 +0.6625,0.2125,0.11905509,0.11905509 +0.6625,0.2125,0.08418465,0.16836931 +0.6625,0.2125,0.1683693,0.08418465 +0.6625,0.23750001,0.07499999,0.075 +0.6625,0.2375,0.053032935,0.10606602 +0.6625,0.2375,0.10606605,0.053033024 +0.6625,0.2375,0.094494045,0.094494075 +0.6625,0.23750001,0.06681734,0.13363482 +0.6625,0.2375,0.13363487,0.06681743 +0.6625,0.2375,0.11905509,0.11905506 +0.6625,0.2375,0.08418465,0.16836932 +0.6625,0.23750001,0.1683693,0.08418466 +0.6625,0.2625,0.07499999,0.07500002 +0.6625,0.2625,0.053032935,0.10606603 +0.6625,0.2625,0.10606605,0.053033024 +0.6625,0.2625,0.094494045,0.094494075 +0.6625,0.2625,0.06681734,0.13363479 +0.6625,0.2625,0.13363487,0.06681743 +0.6625,0.2625,0.11905509,0.11905508 +0.6625,0.2625,0.08418465,0.1683693 +0.6625,0.2625,0.1683693,0.08418463 +0.6625,0.2875,0.07499999,0.07499999 +0.6625,0.2875,0.053032935,0.10606603 +0.6625,0.28750002,0.10606605,0.053033024 +0.6625,0.2875,0.094494045,0.094494045 +0.6625,0.2875,0.06681734,0.1336348 +0.6625,0.28750002,0.13363487,0.06681743 +0.6625,0.2875,0.11905509,0.11905508 +0.6625,0.2875,0.08418465,0.1683693 +0.6625,0.2875,0.1683693,0.08418465 +0.6625,0.3125,0.07499999,0.07499999 +0.6625,0.3125,0.053032935,0.10606605 +0.6625,0.3125,0.10606605,0.053032994 +0.6625,0.3125,0.094494045,0.094494045 +0.6625,0.3125,0.06681734,0.1336348 +0.6625,0.3125,0.13363487,0.0668174 +0.6625,0.3125,0.11905509,0.11905509 +0.6625,0.3125,0.08418465,0.1683693 +0.6625,0.3125,0.1683693,0.08418465 +0.6625,0.3375,0.07499999,0.07499999 +0.6625,0.3375,0.053032935,0.10606605 +0.6625,0.33749998,0.10606605,0.053033024 +0.6625,0.3375,0.094494045,0.094494045 +0.6625,0.33750004,0.06681734,0.13363484 +0.6625,0.33749998,0.13363487,0.06681743 +0.6625,0.3375,0.11905509,0.11905509 +0.6625,0.3375,0.08418465,0.1683693 +0.6625,0.3375,0.1683693,0.08418465 +0.6625,0.3625,0.07499999,0.07500002 +0.6625,0.3625,0.053032935,0.10606602 +0.6625,0.3625,0.10606605,0.053033024 +0.6625,0.3625,0.094494045,0.094494075 +0.6625,0.3625,0.06681734,0.1336348 +0.6625,0.3625,0.13363487,0.06681743 +0.6625,0.3625,0.11905509,0.11905506 +0.6625,0.3625,0.08418465,0.1683693 +0.6625,0.3625,0.1683693,0.08418465 +0.6625,0.3875,0.07499999,0.07500002 +0.6625,0.3875,0.053032935,0.10606602 +0.6625,0.3875,0.10606605,0.053032994 +0.6625,0.3875,0.094494045,0.094494075 +0.6625,0.3875,0.06681734,0.13363484 +0.6625,0.3875,0.13363487,0.0668174 +0.6625,0.3875,0.11905509,0.11905506 +0.6625,0.3875,0.08418465,0.1683693 +0.6625,0.3875,0.1683693,0.08418465 +0.6625,0.4125,0.07499999,0.07499999 +0.6625,0.4125,0.053032935,0.10606605 +0.6625,0.4125,0.10606605,0.053032994 +0.6625,0.4125,0.094494045,0.094494045 +0.6625,0.41250002,0.06681734,0.13363484 +0.6625,0.4125,0.13363487,0.0668174 +0.6625,0.4125,0.11905509,0.11905509 +0.6625,0.4125,0.08418465,0.1683693 +0.6625,0.4125,0.1683693,0.08418465 +0.6625,0.4375,0.07499999,0.07499999 +0.6625,0.4375,0.053032935,0.10606605 +0.6625,0.4375,0.10606605,0.053032994 +0.6625,0.4375,0.094494045,0.094494045 +0.6625,0.4375,0.06681734,0.1336348 +0.6625,0.4375,0.13363487,0.0668174 +0.6625,0.4375,0.11905509,0.11905509 +0.6625,0.4375,0.08418465,0.1683693 +0.6625,0.4375,0.1683693,0.08418465 +0.6625,0.4625,0.07499999,0.07499999 +0.6625,0.4625,0.053032935,0.10606605 +0.6625,0.46249998,0.10606605,0.053032964 +0.6625,0.4625,0.094494045,0.094494045 +0.6625,0.46250004,0.06681734,0.13363484 +0.6625,0.46249998,0.13363487,0.06681737 +0.6625,0.4625,0.11905509,0.11905509 +0.6625,0.46249998,0.08418465,0.16836926 +0.6625,0.46249998,0.1683693,0.08418462 +0.6625,0.48749998,0.07499999,0.07499999 +0.6625,0.4875,0.053032935,0.10606602 +0.6625,0.4875,0.10606605,0.053032994 +0.6625,0.48749998,0.094494045,0.094494045 +0.6625,0.4875,0.06681734,0.13363484 +0.6625,0.4875,0.13363487,0.0668174 +0.6625,0.4875,0.11905509,0.11905506 +0.6625,0.4875,0.08418465,0.1683693 +0.6625,0.4875,0.1683693,0.08418465 +0.6625,0.5125,0.07499999,0.07500002 +0.6625,0.51250005,0.053032935,0.10606605 +0.6625,0.5125,0.10606605,0.053032964 +0.6625,0.5125,0.094494045,0.094494075 +0.6625,0.51250005,0.06681734,0.13363487 +0.6625,0.5125,0.13363487,0.06681737 +0.6625,0.51250005,0.11905509,0.11905509 +0.6625,0.5125,0.08418465,0.1683693 +0.6625,0.5125,0.1683693,0.08418465 +0.6625,0.5375,0.07499999,0.07499999 +0.6625,0.5375,0.053032935,0.10606605 +0.6625,0.5375,0.10606605,0.053032935 +0.6625,0.5375,0.094494045,0.094494045 +0.6625,0.5375,0.06681734,0.13363487 +0.6625,0.5375,0.13363487,0.06681734 +0.6625,0.5375,0.11905509,0.11905509 +0.6625,0.5375,0.08418465,0.16836932 +0.6625,0.5375,0.1683693,0.08418468 +0.6625,0.5625,0.07499999,0.07500005 +0.6625,0.5625,0.053032935,0.10606599 +0.6625,0.5625,0.10606605,0.053032994 +0.6625,0.5625,0.094494045,0.094494104 +0.6625,0.5625,0.06681734,0.13363484 +0.6625,0.5625,0.13363487,0.0668174 +0.6625,0.5625,0.11905509,0.11905503 +0.6625,0.5625,0.08418465,0.1683693 +0.6625,0.5625,0.1683693,0.08418465 +0.6625,0.5875,0.07499999,0.07499999 +0.6625,0.5875,0.053032935,0.10606605 +0.6625,0.5875,0.10606605,0.053032935 +0.6625,0.5875,0.094494045,0.094494045 +0.6625,0.5875,0.06681734,0.13363487 +0.6625,0.5875,0.13363487,0.06681734 +0.6625,0.5875,0.11905509,0.11905509 +0.6625,0.5875,0.08418465,0.1683693 +0.6625,0.5875,0.1683693,0.08418465 +0.6625,0.61249995,0.07499999,0.07499999 +0.6625,0.61249995,0.053032935,0.10606605 +0.6625,0.6125,0.10606605,0.053032994 +0.6625,0.61249995,0.094494045,0.094494045 +0.6625,0.61249995,0.06681734,0.13363487 +0.6625,0.6125,0.13363487,0.0668174 +0.6625,0.61249995,0.11905509,0.11905509 +0.6625,0.6125,0.08418465,0.1683693 +0.6625,0.6125,0.1683693,0.08418465 +0.6625,0.63750005,0.07499999,0.07499999 +0.6625,0.63750005,0.053032935,0.10606605 +0.6625,0.6375,0.10606605,0.053032994 +0.6625,0.63750005,0.094494045,0.094494045 +0.6625,0.63750005,0.06681734,0.13363487 +0.6625,0.6375,0.13363487,0.0668174 +0.6625,0.63750005,0.11905509,0.11905509 +0.6625,0.6375,0.08418465,0.1683693 +0.6625,0.6375,0.1683693,0.08418465 +0.6625,0.6625,0.07499999,0.07499999 +0.6625,0.6625,0.053032935,0.10606605 +0.6625,0.6625,0.10606605,0.053032935 +0.6625,0.6625,0.094494045,0.094494045 +0.6625,0.6625,0.06681734,0.13363487 +0.6625,0.6625,0.13363487,0.06681734 +0.6625,0.6625,0.11905509,0.11905509 +0.6625,0.6625,0.08418465,0.1683693 +0.6625,0.6625,0.1683693,0.08418465 +0.6625,0.6875,0.07499999,0.07500005 +0.6625,0.6875,0.053032935,0.10606599 +0.6625,0.6875,0.10606605,0.053032994 +0.6625,0.6875,0.094494045,0.094494104 +0.6625,0.6875,0.06681734,0.1336348 +0.6625,0.6875,0.13363487,0.0668174 +0.6625,0.6875,0.11905509,0.11905503 +0.6625,0.6875,0.08418465,0.1683693 +0.6625,0.6875,0.1683693,0.08418465 +0.6625,0.7125,0.07499999,0.07499999 +0.6625,0.7125,0.053032935,0.10606605 +0.6625,0.7125,0.10606605,0.053032935 +0.6625,0.7125,0.094494045,0.094494045 +0.6625,0.7125,0.06681734,0.13363487 +0.6625,0.7125,0.13363487,0.06681734 +0.6625,0.7125,0.11905509,0.11905509 +0.6625,0.7125,0.08418465,0.1683693 +0.6625,0.7125,0.1683693,0.08418465 +0.6625,0.73749995,0.07499999,0.07499999 +0.6625,0.73749995,0.053032935,0.10606605 +0.6625,0.7375,0.10606605,0.053032994 +0.6625,0.73749995,0.094494045,0.094494045 +0.6625,0.73749995,0.06681734,0.1336348 +0.6625,0.7375,0.13363487,0.0668174 +0.6625,0.73749995,0.11905509,0.11905509 +0.6625,0.7375,0.08418465,0.1683693 +0.6625,0.7375,0.1683693,0.08418465 +0.6625,0.76250005,0.07499999,0.07499999 +0.6625,0.7625,0.053032935,0.10606599 +0.6625,0.7625,0.10606605,0.053032994 +0.6625,0.76250005,0.094494045,0.094494045 +0.6625,0.7625,0.06681734,0.1336348 +0.6625,0.7625,0.13363487,0.0668174 +0.6625,0.7625,0.11905509,0.11905503 +0.6625,0.7625,0.08418465,0.1683693 +0.6625,0.7625,0.1683693,0.08418465 +0.6625,0.7875,0.07499999,0.07499999 +0.6625,0.78749996,0.053032935,0.10606599 +0.6625,0.7875,0.10606605,0.053032994 +0.6625,0.7875,0.094494045,0.094494045 +0.6625,0.78749996,0.06681734,0.1336348 +0.6625,0.7875,0.13363487,0.0668174 +0.6625,0.78749996,0.11905509,0.11905503 +0.6625,0.7875,0.08418465,0.1683693 +0.6625,0.7875,0.1683693,0.08418465 +0.6625,0.8125,0.07499999,0.07500005 +0.6625,0.8125,0.053032935,0.10606599 +0.6625,0.8125,0.10606605,0.053033054 +0.6625,0.8125,0.094494045,0.094494104 +0.6625,0.8125,0.06681734,0.1336348 +0.6625,0.8125,0.13363487,0.06681746 +0.6625,0.8125,0.11905509,0.11905503 +0.6625,0.8125,0.08418465,0.1683693 +0.6625,0.8125,0.1683693,0.08418465 +0.6625,0.8375,0.07499999,0.07499999 +0.6625,0.8375,0.053032935,0.10606599 +0.6625,0.8375,0.10606605,0.053033054 +0.6625,0.8375,0.094494045,0.094494045 +0.6625,0.8375,0.06681734,0.1336348 +0.6625,0.8375,0.13363487,0.06681746 +0.6625,0.8375,0.11905509,0.11905503 +0.6625,0.8375,0.08418465,0.1683693 +0.6625,0.8375,0.1683693,0.08418465 +0.6625,0.86249995,0.07499999,0.07499999 +0.6625,0.86249995,0.053032935,0.10606593 +0.6625,0.86249995,0.10606605,0.053033054 +0.6625,0.86249995,0.094494045,0.094494045 +0.6625,0.86249995,0.06681734,0.1336348 +0.6625,0.86249995,0.13363487,0.06681746 +0.6625,0.86249995,0.11905509,0.11905497 +0.6625,0.8625,0.08418465,0.1683693 +0.6625,0.8625,0.1683693,0.08418465 +0.6625,0.88750005,0.07499999,0.07499999 +0.6625,0.88750005,0.053032935,0.10606593 +0.6625,0.88750005,0.10606605,0.053033054 +0.6625,0.88750005,0.094494045,0.094494045 +0.6625,0.88750005,0.06681734,0.13363475 +0.6625,0.88750005,0.13363487,0.06681746 +0.6625,0.88750005,0.11905509,0.11905497 +0.6625,0.8875,0.08418465,0.1683693 +0.6625,0.8875,0.1683693,0.08418465 +0.6625,0.9125,0.07499999,0.07499999 +0.6625,0.9125,0.053032935,0.10606593 +0.6625,0.9125,0.10606605,0.053033054 +0.6625,0.9125,0.094494045,0.094494045 +0.6625,0.9125,0.06681734,0.13363475 +0.6625,0.9125,0.13363487,0.06681746 +0.6625,0.9125,0.11905509,0.11905497 +0.6625,0.9125,0.08418465,0.1683693 +0.6625,0.9125,0.1683693,0.08418465 +0.6625,0.9375,0.07499999,0.07500005 +0.6625,0.9375,0.053032935,0.10606599 +0.6625,0.9375,0.10606605,0.053033113 +0.6625,0.9375,0.094494045,0.094494104 +0.6625,0.9375,0.06681734,0.1336348 +0.6625,0.9375,0.13363487,0.06681752 +0.6625,0.9375,0.11905509,0.11905503 +0.6625,0.9375,0.08418465,0.1683693 +0.6625,0.9375,0.1683693,0.08418465 +0.6625,0.9625,0.07499999,0.07499999 +0.6625,0.9625,0.053032935,0.10606593 +0.6625,0.9625,0.10606605,0.053033054 +0.6625,0.9625,0.094494045,0.094494045 +0.6625,0.9625,0.06681734,0.13363475 +0.6625,0.9625,0.13363487,0.06681746 +0.6625,0.9625,0.11905509,0.11905497 +0.6625,0.9625,0.08418465,0.1683693 +0.6625,0.9625,0.1683693,0.08418465 +0.6625,0.98749995,0.07499999,0.07499999 +0.6625,0.98749995,0.053032935,0.10606593 +0.6625,0.98749995,0.10606605,0.053033054 +0.6625,0.98749995,0.094494045,0.094494045 +0.6625,0.98749995,0.06681734,0.13363475 +0.6625,0.98749995,0.13363487,0.06681746 +0.6625,0.98749995,0.11905509,0.11905497 +0.6625,0.98749995,0.08418465,0.16836923 +0.6625,0.98749995,0.1683693,0.08418459 +0.6875,0.0125,0.07500005,0.075 +0.6875,0.012499997,0.053032994,0.10606602 +0.6875,0.012499999,0.10606599,0.05303301 +0.6875,0.012499999,0.094494104,0.09449408 +0.6875,0.012500001,0.0668174,0.1336348 +0.6875,0.012499999,0.1336348,0.0668174 +0.6875,0.012500001,0.11905503,0.11905508 +0.6875,0.012499999,0.08418465,0.1683693 +0.6875,0.012500002,0.1683693,0.084184654 +0.6875,0.0375,0.07500005,0.075 +0.6875,0.037499998,0.053032994,0.10606601 +0.6875,0.0375,0.10606599,0.05303301 +0.6875,0.0375,0.094494104,0.094494075 +0.6875,0.0375,0.0668174,0.1336348 +0.6875,0.0375,0.1336348,0.0668174 +0.6875,0.0375,0.11905503,0.11905508 +0.6875,0.0375,0.08418465,0.16836931 +0.6875,0.0375,0.1683693,0.08418466 +0.6875,0.0625,0.07500005,0.075 +0.6875,0.0625,0.053032994,0.10606602 +0.6875,0.0625,0.10606599,0.05303301 +0.6875,0.0625,0.094494104,0.094494075 +0.6875,0.0625,0.0668174,0.1336348 +0.6875,0.0625,0.1336348,0.0668174 +0.6875,0.0625,0.11905503,0.11905508 +0.6875,0.0625,0.08418465,0.16836932 +0.6875,0.0625,0.1683693,0.08418465 +0.6875,0.0875,0.07500005,0.075 +0.6875,0.08749999,0.053032994,0.10606601 +0.6875,0.087500006,0.10606599,0.053033013 +0.6875,0.087500006,0.094494104,0.09449408 +0.6875,0.087500006,0.0668174,0.1336348 +0.6875,0.0875,0.1336348,0.0668174 +0.6875,0.0875,0.11905503,0.11905508 +0.6875,0.0875,0.08418465,0.16836931 +0.6875,0.087500006,0.1683693,0.084184654 +0.6875,0.112500004,0.07500005,0.075 +0.6875,0.1125,0.053032994,0.10606601 +0.6875,0.112500004,0.10606599,0.05303301 +0.6875,0.1125,0.094494104,0.094494075 +0.6875,0.1125,0.0668174,0.1336348 +0.6875,0.1125,0.1336348,0.0668174 +0.6875,0.1125,0.11905503,0.119055085 +0.6875,0.112500004,0.08418465,0.16836931 +0.6875,0.1125,0.1683693,0.08418465 +0.6875,0.1375,0.07500005,0.074999996 +0.6875,0.1375,0.053032994,0.10606602 +0.6875,0.1375,0.10606599,0.053033024 +0.6875,0.1375,0.094494104,0.09449408 +0.6875,0.1375,0.0668174,0.1336348 +0.6875,0.1375,0.1336348,0.0668174 +0.6875,0.13749999,0.11905503,0.11905508 +0.6875,0.1375,0.08418465,0.1683693 +0.6875,0.1375,0.1683693,0.084184654 +0.6875,0.1625,0.07500005,0.075 +0.6875,0.16250001,0.053032994,0.106066026 +0.6875,0.1625,0.10606599,0.05303301 +0.6875,0.1625,0.094494104,0.094494075 +0.6875,0.1625,0.0668174,0.1336348 +0.6875,0.1625,0.1336348,0.0668174 +0.6875,0.1625,0.11905503,0.11905508 +0.6875,0.1625,0.08418465,0.1683693 +0.6875,0.1625,0.1683693,0.08418464 +0.6875,0.1875,0.07500005,0.07499999 +0.6875,0.1875,0.053032994,0.10606603 +0.6875,0.1875,0.10606599,0.053033024 +0.6875,0.1875,0.094494104,0.09449406 +0.6875,0.1875,0.0668174,0.1336348 +0.6875,0.1875,0.1336348,0.06681742 +0.6875,0.1875,0.11905503,0.11905509 +0.6875,0.1875,0.08418465,0.16836931 +0.6875,0.1875,0.1683693,0.08418465 +0.6875,0.2125,0.07500005,0.075 +0.6875,0.2125,0.053032994,0.10606603 +0.6875,0.2125,0.10606599,0.05303301 +0.6875,0.21249999,0.094494104,0.094494075 +0.6875,0.2125,0.0668174,0.1336348 +0.6875,0.2125,0.1336348,0.0668174 +0.6875,0.2125,0.11905503,0.11905509 +0.6875,0.2125,0.08418465,0.16836931 +0.6875,0.2125,0.1683693,0.08418465 +0.6875,0.23750001,0.07500005,0.075 +0.6875,0.2375,0.053032994,0.10606602 +0.6875,0.2375,0.10606599,0.053033024 +0.6875,0.2375,0.094494104,0.094494075 +0.6875,0.23750001,0.0668174,0.13363482 +0.6875,0.2375,0.1336348,0.06681743 +0.6875,0.2375,0.11905503,0.11905506 +0.6875,0.2375,0.08418465,0.16836932 +0.6875,0.23750001,0.1683693,0.08418466 +0.6875,0.2625,0.07500005,0.07500002 +0.6875,0.2625,0.053032994,0.10606603 +0.6875,0.2625,0.10606599,0.053033024 +0.6875,0.2625,0.094494104,0.094494075 +0.6875,0.2625,0.0668174,0.13363479 +0.6875,0.2625,0.1336348,0.06681743 +0.6875,0.2625,0.11905503,0.11905508 +0.6875,0.2625,0.08418465,0.1683693 +0.6875,0.2625,0.1683693,0.08418463 +0.6875,0.2875,0.07500005,0.07499999 +0.6875,0.2875,0.053032994,0.10606603 +0.6875,0.28750002,0.10606599,0.053033024 +0.6875,0.2875,0.094494104,0.094494045 +0.6875,0.2875,0.0668174,0.1336348 +0.6875,0.28750002,0.1336348,0.06681743 +0.6875,0.2875,0.11905503,0.11905508 +0.6875,0.2875,0.08418465,0.1683693 +0.6875,0.2875,0.1683693,0.08418465 +0.6875,0.3125,0.07500005,0.07499999 +0.6875,0.3125,0.053032994,0.10606605 +0.6875,0.3125,0.10606599,0.053032994 +0.6875,0.3125,0.094494104,0.094494045 +0.6875,0.3125,0.0668174,0.1336348 +0.6875,0.3125,0.1336348,0.0668174 +0.6875,0.3125,0.11905503,0.11905509 +0.6875,0.3125,0.08418465,0.1683693 +0.6875,0.3125,0.1683693,0.08418465 +0.6875,0.3375,0.07500005,0.07499999 +0.6875,0.3375,0.053032994,0.10606605 +0.6875,0.33749998,0.10606599,0.053033024 +0.6875,0.3375,0.094494104,0.094494045 +0.6875,0.33750004,0.0668174,0.13363484 +0.6875,0.33749998,0.1336348,0.06681743 +0.6875,0.3375,0.11905503,0.11905509 +0.6875,0.3375,0.08418465,0.1683693 +0.6875,0.3375,0.1683693,0.08418465 +0.6875,0.3625,0.07500005,0.07500002 +0.6875,0.3625,0.053032994,0.10606602 +0.6875,0.3625,0.10606599,0.053033024 +0.6875,0.3625,0.094494104,0.094494075 +0.6875,0.3625,0.0668174,0.1336348 +0.6875,0.3625,0.1336348,0.06681743 +0.6875,0.3625,0.11905503,0.11905506 +0.6875,0.3625,0.08418465,0.1683693 +0.6875,0.3625,0.1683693,0.08418465 +0.6875,0.3875,0.07500005,0.07500002 +0.6875,0.3875,0.053032994,0.10606602 +0.6875,0.3875,0.10606599,0.053032994 +0.6875,0.3875,0.094494104,0.094494075 +0.6875,0.3875,0.0668174,0.13363484 +0.6875,0.3875,0.1336348,0.0668174 +0.6875,0.3875,0.11905503,0.11905506 +0.6875,0.3875,0.08418465,0.1683693 +0.6875,0.3875,0.1683693,0.08418465 +0.6875,0.4125,0.07500005,0.07499999 +0.6875,0.4125,0.053032994,0.10606605 +0.6875,0.4125,0.10606599,0.053032994 +0.6875,0.4125,0.094494104,0.094494045 +0.6875,0.41250002,0.0668174,0.13363484 +0.6875,0.4125,0.1336348,0.0668174 +0.6875,0.4125,0.11905503,0.11905509 +0.6875,0.4125,0.08418465,0.1683693 +0.6875,0.4125,0.1683693,0.08418465 +0.6875,0.4375,0.07500005,0.07499999 +0.6875,0.4375,0.053032994,0.10606605 +0.6875,0.4375,0.10606599,0.053032994 +0.6875,0.4375,0.094494104,0.094494045 +0.6875,0.4375,0.0668174,0.1336348 +0.6875,0.4375,0.1336348,0.0668174 +0.6875,0.4375,0.11905503,0.11905509 +0.6875,0.4375,0.08418465,0.1683693 +0.6875,0.4375,0.1683693,0.08418465 +0.6875,0.4625,0.07500005,0.07499999 +0.6875,0.4625,0.053032994,0.10606605 +0.6875,0.46249998,0.10606599,0.053032964 +0.6875,0.4625,0.094494104,0.094494045 +0.6875,0.46250004,0.0668174,0.13363484 +0.6875,0.46249998,0.1336348,0.06681737 +0.6875,0.4625,0.11905503,0.11905509 +0.6875,0.46249998,0.08418465,0.16836926 +0.6875,0.46249998,0.1683693,0.08418462 +0.6875,0.48749998,0.07500005,0.07499999 +0.6875,0.4875,0.053032994,0.10606602 +0.6875,0.4875,0.10606599,0.053032994 +0.6875,0.48749998,0.094494104,0.094494045 +0.6875,0.4875,0.0668174,0.13363484 +0.6875,0.4875,0.1336348,0.0668174 +0.6875,0.4875,0.11905503,0.11905506 +0.6875,0.4875,0.08418465,0.1683693 +0.6875,0.4875,0.1683693,0.08418465 +0.6875,0.5125,0.07500005,0.07500002 +0.6875,0.51250005,0.053032994,0.10606605 +0.6875,0.5125,0.10606599,0.053032964 +0.6875,0.5125,0.094494104,0.094494075 +0.6875,0.51250005,0.0668174,0.13363487 +0.6875,0.5125,0.1336348,0.06681737 +0.6875,0.51250005,0.11905503,0.11905509 +0.6875,0.5125,0.08418465,0.1683693 +0.6875,0.5125,0.1683693,0.08418465 +0.6875,0.5375,0.07500005,0.07499999 +0.6875,0.5375,0.053032994,0.10606605 +0.6875,0.5375,0.10606599,0.053032935 +0.6875,0.5375,0.094494104,0.094494045 +0.6875,0.5375,0.0668174,0.13363487 +0.6875,0.5375,0.1336348,0.06681734 +0.6875,0.5375,0.11905503,0.11905509 +0.6875,0.5375,0.08418465,0.16836932 +0.6875,0.5375,0.1683693,0.08418468 +0.6875,0.5625,0.07500005,0.07500005 +0.6875,0.5625,0.053032994,0.10606599 +0.6875,0.5625,0.10606599,0.053032994 +0.6875,0.5625,0.094494104,0.094494104 +0.6875,0.5625,0.0668174,0.13363484 +0.6875,0.5625,0.1336348,0.0668174 +0.6875,0.5625,0.11905503,0.11905503 +0.6875,0.5625,0.08418465,0.1683693 +0.6875,0.5625,0.1683693,0.08418465 +0.6875,0.5875,0.07500005,0.07499999 +0.6875,0.5875,0.053032994,0.10606605 +0.6875,0.5875,0.10606599,0.053032935 +0.6875,0.5875,0.094494104,0.094494045 +0.6875,0.5875,0.0668174,0.13363487 +0.6875,0.5875,0.1336348,0.06681734 +0.6875,0.5875,0.11905503,0.11905509 +0.6875,0.5875,0.08418465,0.1683693 +0.6875,0.5875,0.1683693,0.08418465 +0.6875,0.61249995,0.07500005,0.07499999 +0.6875,0.61249995,0.053032994,0.10606605 +0.6875,0.6125,0.10606599,0.053032994 +0.6875,0.61249995,0.094494104,0.094494045 +0.6875,0.61249995,0.0668174,0.13363487 +0.6875,0.6125,0.1336348,0.0668174 +0.6875,0.61249995,0.11905503,0.11905509 +0.6875,0.6125,0.08418465,0.1683693 +0.6875,0.6125,0.1683693,0.08418465 +0.6875,0.63750005,0.07500005,0.07499999 +0.6875,0.63750005,0.053032994,0.10606605 +0.6875,0.6375,0.10606599,0.053032994 +0.6875,0.63750005,0.094494104,0.094494045 +0.6875,0.63750005,0.0668174,0.13363487 +0.6875,0.6375,0.1336348,0.0668174 +0.6875,0.63750005,0.11905503,0.11905509 +0.6875,0.6375,0.08418465,0.1683693 +0.6875,0.6375,0.1683693,0.08418465 +0.6875,0.6625,0.07500005,0.07499999 +0.6875,0.6625,0.053032994,0.10606605 +0.6875,0.6625,0.10606599,0.053032935 +0.6875,0.6625,0.094494104,0.094494045 +0.6875,0.6625,0.0668174,0.13363487 +0.6875,0.6625,0.1336348,0.06681734 +0.6875,0.6625,0.11905503,0.11905509 +0.6875,0.6625,0.08418465,0.1683693 +0.6875,0.6625,0.1683693,0.08418465 +0.6875,0.6875,0.07500005,0.07500005 +0.6875,0.6875,0.053032994,0.10606599 +0.6875,0.6875,0.10606599,0.053032994 +0.6875,0.6875,0.094494104,0.094494104 +0.6875,0.6875,0.0668174,0.1336348 +0.6875,0.6875,0.1336348,0.0668174 +0.6875,0.6875,0.11905503,0.11905503 +0.6875,0.6875,0.08418465,0.1683693 +0.6875,0.6875,0.1683693,0.08418465 +0.6875,0.7125,0.07500005,0.07499999 +0.6875,0.7125,0.053032994,0.10606605 +0.6875,0.7125,0.10606599,0.053032935 +0.6875,0.7125,0.094494104,0.094494045 +0.6875,0.7125,0.0668174,0.13363487 +0.6875,0.7125,0.1336348,0.06681734 +0.6875,0.7125,0.11905503,0.11905509 +0.6875,0.7125,0.08418465,0.1683693 +0.6875,0.7125,0.1683693,0.08418465 +0.6875,0.73749995,0.07500005,0.07499999 +0.6875,0.73749995,0.053032994,0.10606605 +0.6875,0.7375,0.10606599,0.053032994 +0.6875,0.73749995,0.094494104,0.094494045 +0.6875,0.73749995,0.0668174,0.1336348 +0.6875,0.7375,0.1336348,0.0668174 +0.6875,0.73749995,0.11905503,0.11905509 +0.6875,0.7375,0.08418465,0.1683693 +0.6875,0.7375,0.1683693,0.08418465 +0.6875,0.76250005,0.07500005,0.07499999 +0.6875,0.7625,0.053032994,0.10606599 +0.6875,0.7625,0.10606599,0.053032994 +0.6875,0.76250005,0.094494104,0.094494045 +0.6875,0.7625,0.0668174,0.1336348 +0.6875,0.7625,0.1336348,0.0668174 +0.6875,0.7625,0.11905503,0.11905503 +0.6875,0.7625,0.08418465,0.1683693 +0.6875,0.7625,0.1683693,0.08418465 +0.6875,0.7875,0.07500005,0.07499999 +0.6875,0.78749996,0.053032994,0.10606599 +0.6875,0.7875,0.10606599,0.053032994 +0.6875,0.7875,0.094494104,0.094494045 +0.6875,0.78749996,0.0668174,0.1336348 +0.6875,0.7875,0.1336348,0.0668174 +0.6875,0.78749996,0.11905503,0.11905503 +0.6875,0.7875,0.08418465,0.1683693 +0.6875,0.7875,0.1683693,0.08418465 +0.6875,0.8125,0.07500005,0.07500005 +0.6875,0.8125,0.053032994,0.10606599 +0.6875,0.8125,0.10606599,0.053033054 +0.6875,0.8125,0.094494104,0.094494104 +0.6875,0.8125,0.0668174,0.1336348 +0.6875,0.8125,0.1336348,0.06681746 +0.6875,0.8125,0.11905503,0.11905503 +0.6875,0.8125,0.08418465,0.1683693 +0.6875,0.8125,0.1683693,0.08418465 +0.6875,0.8375,0.07500005,0.07499999 +0.6875,0.8375,0.053032994,0.10606599 +0.6875,0.8375,0.10606599,0.053033054 +0.6875,0.8375,0.094494104,0.094494045 +0.6875,0.8375,0.0668174,0.1336348 +0.6875,0.8375,0.1336348,0.06681746 +0.6875,0.8375,0.11905503,0.11905503 +0.6875,0.8375,0.08418465,0.1683693 +0.6875,0.8375,0.1683693,0.08418465 +0.6875,0.86249995,0.07500005,0.07499999 +0.6875,0.86249995,0.053032994,0.10606593 +0.6875,0.86249995,0.10606599,0.053033054 +0.6875,0.86249995,0.094494104,0.094494045 +0.6875,0.86249995,0.0668174,0.1336348 +0.6875,0.86249995,0.1336348,0.06681746 +0.6875,0.86249995,0.11905503,0.11905497 +0.6875,0.8625,0.08418465,0.1683693 +0.6875,0.8625,0.1683693,0.08418465 +0.6875,0.88750005,0.07500005,0.07499999 +0.6875,0.88750005,0.053032994,0.10606593 +0.6875,0.88750005,0.10606599,0.053033054 +0.6875,0.88750005,0.094494104,0.094494045 +0.6875,0.88750005,0.0668174,0.13363475 +0.6875,0.88750005,0.1336348,0.06681746 +0.6875,0.88750005,0.11905503,0.11905497 +0.6875,0.8875,0.08418465,0.1683693 +0.6875,0.8875,0.1683693,0.08418465 +0.6875,0.9125,0.07500005,0.07499999 +0.6875,0.9125,0.053032994,0.10606593 +0.6875,0.9125,0.10606599,0.053033054 +0.6875,0.9125,0.094494104,0.094494045 +0.6875,0.9125,0.0668174,0.13363475 +0.6875,0.9125,0.1336348,0.06681746 +0.6875,0.9125,0.11905503,0.11905497 +0.6875,0.9125,0.08418465,0.1683693 +0.6875,0.9125,0.1683693,0.08418465 +0.6875,0.9375,0.07500005,0.07500005 +0.6875,0.9375,0.053032994,0.10606599 +0.6875,0.9375,0.10606599,0.053033113 +0.6875,0.9375,0.094494104,0.094494104 +0.6875,0.9375,0.0668174,0.1336348 +0.6875,0.9375,0.1336348,0.06681752 +0.6875,0.9375,0.11905503,0.11905503 +0.6875,0.9375,0.08418465,0.1683693 +0.6875,0.9375,0.1683693,0.08418465 +0.6875,0.9625,0.07500005,0.07499999 +0.6875,0.9625,0.053032994,0.10606593 +0.6875,0.9625,0.10606599,0.053033054 +0.6875,0.9625,0.094494104,0.094494045 +0.6875,0.9625,0.0668174,0.13363475 +0.6875,0.9625,0.1336348,0.06681746 +0.6875,0.9625,0.11905503,0.11905497 +0.6875,0.9625,0.08418465,0.1683693 +0.6875,0.9625,0.1683693,0.08418465 +0.6875,0.98749995,0.07500005,0.07499999 +0.6875,0.98749995,0.053032994,0.10606593 +0.6875,0.98749995,0.10606599,0.053033054 +0.6875,0.98749995,0.094494104,0.094494045 +0.6875,0.98749995,0.0668174,0.13363475 +0.6875,0.98749995,0.1336348,0.06681746 +0.6875,0.98749995,0.11905503,0.11905497 +0.6875,0.98749995,0.08418465,0.16836923 +0.6875,0.98749995,0.1683693,0.08418459 +0.7125,0.0125,0.07499999,0.075 +0.7125,0.012499997,0.053032935,0.10606602 +0.7125,0.012499999,0.10606605,0.05303301 +0.7125,0.012499999,0.094494045,0.09449408 +0.7125,0.012500001,0.06681734,0.1336348 +0.7125,0.012499999,0.13363487,0.0668174 +0.7125,0.012500001,0.11905509,0.11905508 +0.7125,0.012499999,0.08418465,0.1683693 +0.7125,0.012500002,0.1683693,0.084184654 +0.7125,0.0375,0.07499999,0.075 +0.7125,0.037499998,0.053032935,0.10606601 +0.7125,0.0375,0.10606605,0.05303301 +0.7125,0.0375,0.094494045,0.094494075 +0.7125,0.0375,0.06681734,0.1336348 +0.7125,0.0375,0.13363487,0.0668174 +0.7125,0.0375,0.11905509,0.11905508 +0.7125,0.0375,0.08418465,0.16836931 +0.7125,0.0375,0.1683693,0.08418466 +0.7125,0.0625,0.07499999,0.075 +0.7125,0.0625,0.053032935,0.10606602 +0.7125,0.0625,0.10606605,0.05303301 +0.7125,0.0625,0.094494045,0.094494075 +0.7125,0.0625,0.06681734,0.1336348 +0.7125,0.0625,0.13363487,0.0668174 +0.7125,0.0625,0.11905509,0.11905508 +0.7125,0.0625,0.08418465,0.16836932 +0.7125,0.0625,0.1683693,0.08418465 +0.7125,0.0875,0.07499999,0.075 +0.7125,0.08749999,0.053032935,0.10606601 +0.7125,0.087500006,0.10606605,0.053033013 +0.7125,0.087500006,0.094494045,0.09449408 +0.7125,0.087500006,0.06681734,0.1336348 +0.7125,0.0875,0.13363487,0.0668174 +0.7125,0.0875,0.11905509,0.11905508 +0.7125,0.0875,0.08418465,0.16836931 +0.7125,0.087500006,0.1683693,0.084184654 +0.7125,0.112500004,0.07499999,0.075 +0.7125,0.1125,0.053032935,0.10606601 +0.7125,0.112500004,0.10606605,0.05303301 +0.7125,0.1125,0.094494045,0.094494075 +0.7125,0.1125,0.06681734,0.1336348 +0.7125,0.1125,0.13363487,0.0668174 +0.7125,0.1125,0.11905509,0.119055085 +0.7125,0.112500004,0.08418465,0.16836931 +0.7125,0.1125,0.1683693,0.08418465 +0.7125,0.1375,0.07499999,0.074999996 +0.7125,0.1375,0.053032935,0.10606602 +0.7125,0.1375,0.10606605,0.053033024 +0.7125,0.1375,0.094494045,0.09449408 +0.7125,0.1375,0.06681734,0.1336348 +0.7125,0.1375,0.13363487,0.0668174 +0.7125,0.13749999,0.11905509,0.11905508 +0.7125,0.1375,0.08418465,0.1683693 +0.7125,0.1375,0.1683693,0.084184654 +0.7125,0.1625,0.07499999,0.075 +0.7125,0.16250001,0.053032935,0.106066026 +0.7125,0.1625,0.10606605,0.05303301 +0.7125,0.1625,0.094494045,0.094494075 +0.7125,0.1625,0.06681734,0.1336348 +0.7125,0.1625,0.13363487,0.0668174 +0.7125,0.1625,0.11905509,0.11905508 +0.7125,0.1625,0.08418465,0.1683693 +0.7125,0.1625,0.1683693,0.08418464 +0.7125,0.1875,0.07499999,0.07499999 +0.7125,0.1875,0.053032935,0.10606603 +0.7125,0.1875,0.10606605,0.053033024 +0.7125,0.1875,0.094494045,0.09449406 +0.7125,0.1875,0.06681734,0.1336348 +0.7125,0.1875,0.13363487,0.06681742 +0.7125,0.1875,0.11905509,0.11905509 +0.7125,0.1875,0.08418465,0.16836931 +0.7125,0.1875,0.1683693,0.08418465 +0.7125,0.2125,0.07499999,0.075 +0.7125,0.2125,0.053032935,0.10606603 +0.7125,0.2125,0.10606605,0.05303301 +0.7125,0.21249999,0.094494045,0.094494075 +0.7125,0.2125,0.06681734,0.1336348 +0.7125,0.2125,0.13363487,0.0668174 +0.7125,0.2125,0.11905509,0.11905509 +0.7125,0.2125,0.08418465,0.16836931 +0.7125,0.2125,0.1683693,0.08418465 +0.7125,0.23750001,0.07499999,0.075 +0.7125,0.2375,0.053032935,0.10606602 +0.7125,0.2375,0.10606605,0.053033024 +0.7125,0.2375,0.094494045,0.094494075 +0.7125,0.23750001,0.06681734,0.13363482 +0.7125,0.2375,0.13363487,0.06681743 +0.7125,0.2375,0.11905509,0.11905506 +0.7125,0.2375,0.08418465,0.16836932 +0.7125,0.23750001,0.1683693,0.08418466 +0.7125,0.2625,0.07499999,0.07500002 +0.7125,0.2625,0.053032935,0.10606603 +0.7125,0.2625,0.10606605,0.053033024 +0.7125,0.2625,0.094494045,0.094494075 +0.7125,0.2625,0.06681734,0.13363479 +0.7125,0.2625,0.13363487,0.06681743 +0.7125,0.2625,0.11905509,0.11905508 +0.7125,0.2625,0.08418465,0.1683693 +0.7125,0.2625,0.1683693,0.08418463 +0.7125,0.2875,0.07499999,0.07499999 +0.7125,0.2875,0.053032935,0.10606603 +0.7125,0.28750002,0.10606605,0.053033024 +0.7125,0.2875,0.094494045,0.094494045 +0.7125,0.2875,0.06681734,0.1336348 +0.7125,0.28750002,0.13363487,0.06681743 +0.7125,0.2875,0.11905509,0.11905508 +0.7125,0.2875,0.08418465,0.1683693 +0.7125,0.2875,0.1683693,0.08418465 +0.7125,0.3125,0.07499999,0.07499999 +0.7125,0.3125,0.053032935,0.10606605 +0.7125,0.3125,0.10606605,0.053032994 +0.7125,0.3125,0.094494045,0.094494045 +0.7125,0.3125,0.06681734,0.1336348 +0.7125,0.3125,0.13363487,0.0668174 +0.7125,0.3125,0.11905509,0.11905509 +0.7125,0.3125,0.08418465,0.1683693 +0.7125,0.3125,0.1683693,0.08418465 +0.7125,0.3375,0.07499999,0.07499999 +0.7125,0.3375,0.053032935,0.10606605 +0.7125,0.33749998,0.10606605,0.053033024 +0.7125,0.3375,0.094494045,0.094494045 +0.7125,0.33750004,0.06681734,0.13363484 +0.7125,0.33749998,0.13363487,0.06681743 +0.7125,0.3375,0.11905509,0.11905509 +0.7125,0.3375,0.08418465,0.1683693 +0.7125,0.3375,0.1683693,0.08418465 +0.7125,0.3625,0.07499999,0.07500002 +0.7125,0.3625,0.053032935,0.10606602 +0.7125,0.3625,0.10606605,0.053033024 +0.7125,0.3625,0.094494045,0.094494075 +0.7125,0.3625,0.06681734,0.1336348 +0.7125,0.3625,0.13363487,0.06681743 +0.7125,0.3625,0.11905509,0.11905506 +0.7125,0.3625,0.08418465,0.1683693 +0.7125,0.3625,0.1683693,0.08418465 +0.7125,0.3875,0.07499999,0.07500002 +0.7125,0.3875,0.053032935,0.10606602 +0.7125,0.3875,0.10606605,0.053032994 +0.7125,0.3875,0.094494045,0.094494075 +0.7125,0.3875,0.06681734,0.13363484 +0.7125,0.3875,0.13363487,0.0668174 +0.7125,0.3875,0.11905509,0.11905506 +0.7125,0.3875,0.08418465,0.1683693 +0.7125,0.3875,0.1683693,0.08418465 +0.7125,0.4125,0.07499999,0.07499999 +0.7125,0.4125,0.053032935,0.10606605 +0.7125,0.4125,0.10606605,0.053032994 +0.7125,0.4125,0.094494045,0.094494045 +0.7125,0.41250002,0.06681734,0.13363484 +0.7125,0.4125,0.13363487,0.0668174 +0.7125,0.4125,0.11905509,0.11905509 +0.7125,0.4125,0.08418465,0.1683693 +0.7125,0.4125,0.1683693,0.08418465 +0.7125,0.4375,0.07499999,0.07499999 +0.7125,0.4375,0.053032935,0.10606605 +0.7125,0.4375,0.10606605,0.053032994 +0.7125,0.4375,0.094494045,0.094494045 +0.7125,0.4375,0.06681734,0.1336348 +0.7125,0.4375,0.13363487,0.0668174 +0.7125,0.4375,0.11905509,0.11905509 +0.7125,0.4375,0.08418465,0.1683693 +0.7125,0.4375,0.1683693,0.08418465 +0.7125,0.4625,0.07499999,0.07499999 +0.7125,0.4625,0.053032935,0.10606605 +0.7125,0.46249998,0.10606605,0.053032964 +0.7125,0.4625,0.094494045,0.094494045 +0.7125,0.46250004,0.06681734,0.13363484 +0.7125,0.46249998,0.13363487,0.06681737 +0.7125,0.4625,0.11905509,0.11905509 +0.7125,0.46249998,0.08418465,0.16836926 +0.7125,0.46249998,0.1683693,0.08418462 +0.7125,0.48749998,0.07499999,0.07499999 +0.7125,0.4875,0.053032935,0.10606602 +0.7125,0.4875,0.10606605,0.053032994 +0.7125,0.48749998,0.094494045,0.094494045 +0.7125,0.4875,0.06681734,0.13363484 +0.7125,0.4875,0.13363487,0.0668174 +0.7125,0.4875,0.11905509,0.11905506 +0.7125,0.4875,0.08418465,0.1683693 +0.7125,0.4875,0.1683693,0.08418465 +0.7125,0.5125,0.07499999,0.07500002 +0.7125,0.51250005,0.053032935,0.10606605 +0.7125,0.5125,0.10606605,0.053032964 +0.7125,0.5125,0.094494045,0.094494075 +0.7125,0.51250005,0.06681734,0.13363487 +0.7125,0.5125,0.13363487,0.06681737 +0.7125,0.51250005,0.11905509,0.11905509 +0.7125,0.5125,0.08418465,0.1683693 +0.7125,0.5125,0.1683693,0.08418465 +0.7125,0.5375,0.07499999,0.07499999 +0.7125,0.5375,0.053032935,0.10606605 +0.7125,0.5375,0.10606605,0.053032935 +0.7125,0.5375,0.094494045,0.094494045 +0.7125,0.5375,0.06681734,0.13363487 +0.7125,0.5375,0.13363487,0.06681734 +0.7125,0.5375,0.11905509,0.11905509 +0.7125,0.5375,0.08418465,0.16836932 +0.7125,0.5375,0.1683693,0.08418468 +0.7125,0.5625,0.07499999,0.07500005 +0.7125,0.5625,0.053032935,0.10606599 +0.7125,0.5625,0.10606605,0.053032994 +0.7125,0.5625,0.094494045,0.094494104 +0.7125,0.5625,0.06681734,0.13363484 +0.7125,0.5625,0.13363487,0.0668174 +0.7125,0.5625,0.11905509,0.11905503 +0.7125,0.5625,0.08418465,0.1683693 +0.7125,0.5625,0.1683693,0.08418465 +0.7125,0.5875,0.07499999,0.07499999 +0.7125,0.5875,0.053032935,0.10606605 +0.7125,0.5875,0.10606605,0.053032935 +0.7125,0.5875,0.094494045,0.094494045 +0.7125,0.5875,0.06681734,0.13363487 +0.7125,0.5875,0.13363487,0.06681734 +0.7125,0.5875,0.11905509,0.11905509 +0.7125,0.5875,0.08418465,0.1683693 +0.7125,0.5875,0.1683693,0.08418465 +0.7125,0.61249995,0.07499999,0.07499999 +0.7125,0.61249995,0.053032935,0.10606605 +0.7125,0.6125,0.10606605,0.053032994 +0.7125,0.61249995,0.094494045,0.094494045 +0.7125,0.61249995,0.06681734,0.13363487 +0.7125,0.6125,0.13363487,0.0668174 +0.7125,0.61249995,0.11905509,0.11905509 +0.7125,0.6125,0.08418465,0.1683693 +0.7125,0.6125,0.1683693,0.08418465 +0.7125,0.63750005,0.07499999,0.07499999 +0.7125,0.63750005,0.053032935,0.10606605 +0.7125,0.6375,0.10606605,0.053032994 +0.7125,0.63750005,0.094494045,0.094494045 +0.7125,0.63750005,0.06681734,0.13363487 +0.7125,0.6375,0.13363487,0.0668174 +0.7125,0.63750005,0.11905509,0.11905509 +0.7125,0.6375,0.08418465,0.1683693 +0.7125,0.6375,0.1683693,0.08418465 +0.7125,0.6625,0.07499999,0.07499999 +0.7125,0.6625,0.053032935,0.10606605 +0.7125,0.6625,0.10606605,0.053032935 +0.7125,0.6625,0.094494045,0.094494045 +0.7125,0.6625,0.06681734,0.13363487 +0.7125,0.6625,0.13363487,0.06681734 +0.7125,0.6625,0.11905509,0.11905509 +0.7125,0.6625,0.08418465,0.1683693 +0.7125,0.6625,0.1683693,0.08418465 +0.7125,0.6875,0.07499999,0.07500005 +0.7125,0.6875,0.053032935,0.10606599 +0.7125,0.6875,0.10606605,0.053032994 +0.7125,0.6875,0.094494045,0.094494104 +0.7125,0.6875,0.06681734,0.1336348 +0.7125,0.6875,0.13363487,0.0668174 +0.7125,0.6875,0.11905509,0.11905503 +0.7125,0.6875,0.08418465,0.1683693 +0.7125,0.6875,0.1683693,0.08418465 +0.7125,0.7125,0.07499999,0.07499999 +0.7125,0.7125,0.053032935,0.10606605 +0.7125,0.7125,0.10606605,0.053032935 +0.7125,0.7125,0.094494045,0.094494045 +0.7125,0.7125,0.06681734,0.13363487 +0.7125,0.7125,0.13363487,0.06681734 +0.7125,0.7125,0.11905509,0.11905509 +0.7125,0.7125,0.08418465,0.1683693 +0.7125,0.7125,0.1683693,0.08418465 +0.7125,0.73749995,0.07499999,0.07499999 +0.7125,0.73749995,0.053032935,0.10606605 +0.7125,0.7375,0.10606605,0.053032994 +0.7125,0.73749995,0.094494045,0.094494045 +0.7125,0.73749995,0.06681734,0.1336348 +0.7125,0.7375,0.13363487,0.0668174 +0.7125,0.73749995,0.11905509,0.11905509 +0.7125,0.7375,0.08418465,0.1683693 +0.7125,0.7375,0.1683693,0.08418465 +0.7125,0.76250005,0.07499999,0.07499999 +0.7125,0.7625,0.053032935,0.10606599 +0.7125,0.7625,0.10606605,0.053032994 +0.7125,0.76250005,0.094494045,0.094494045 +0.7125,0.7625,0.06681734,0.1336348 +0.7125,0.7625,0.13363487,0.0668174 +0.7125,0.7625,0.11905509,0.11905503 +0.7125,0.7625,0.08418465,0.1683693 +0.7125,0.7625,0.1683693,0.08418465 +0.7125,0.7875,0.07499999,0.07499999 +0.7125,0.78749996,0.053032935,0.10606599 +0.7125,0.7875,0.10606605,0.053032994 +0.7125,0.7875,0.094494045,0.094494045 +0.7125,0.78749996,0.06681734,0.1336348 +0.7125,0.7875,0.13363487,0.0668174 +0.7125,0.78749996,0.11905509,0.11905503 +0.7125,0.7875,0.08418465,0.1683693 +0.7125,0.7875,0.1683693,0.08418465 +0.7125,0.8125,0.07499999,0.07500005 +0.7125,0.8125,0.053032935,0.10606599 +0.7125,0.8125,0.10606605,0.053033054 +0.7125,0.8125,0.094494045,0.094494104 +0.7125,0.8125,0.06681734,0.1336348 +0.7125,0.8125,0.13363487,0.06681746 +0.7125,0.8125,0.11905509,0.11905503 +0.7125,0.8125,0.08418465,0.1683693 +0.7125,0.8125,0.1683693,0.08418465 +0.7125,0.8375,0.07499999,0.07499999 +0.7125,0.8375,0.053032935,0.10606599 +0.7125,0.8375,0.10606605,0.053033054 +0.7125,0.8375,0.094494045,0.094494045 +0.7125,0.8375,0.06681734,0.1336348 +0.7125,0.8375,0.13363487,0.06681746 +0.7125,0.8375,0.11905509,0.11905503 +0.7125,0.8375,0.08418465,0.1683693 +0.7125,0.8375,0.1683693,0.08418465 +0.7125,0.86249995,0.07499999,0.07499999 +0.7125,0.86249995,0.053032935,0.10606593 +0.7125,0.86249995,0.10606605,0.053033054 +0.7125,0.86249995,0.094494045,0.094494045 +0.7125,0.86249995,0.06681734,0.1336348 +0.7125,0.86249995,0.13363487,0.06681746 +0.7125,0.86249995,0.11905509,0.11905497 +0.7125,0.8625,0.08418465,0.1683693 +0.7125,0.8625,0.1683693,0.08418465 +0.7125,0.88750005,0.07499999,0.07499999 +0.7125,0.88750005,0.053032935,0.10606593 +0.7125,0.88750005,0.10606605,0.053033054 +0.7125,0.88750005,0.094494045,0.094494045 +0.7125,0.88750005,0.06681734,0.13363475 +0.7125,0.88750005,0.13363487,0.06681746 +0.7125,0.88750005,0.11905509,0.11905497 +0.7125,0.8875,0.08418465,0.1683693 +0.7125,0.8875,0.1683693,0.08418465 +0.7125,0.9125,0.07499999,0.07499999 +0.7125,0.9125,0.053032935,0.10606593 +0.7125,0.9125,0.10606605,0.053033054 +0.7125,0.9125,0.094494045,0.094494045 +0.7125,0.9125,0.06681734,0.13363475 +0.7125,0.9125,0.13363487,0.06681746 +0.7125,0.9125,0.11905509,0.11905497 +0.7125,0.9125,0.08418465,0.1683693 +0.7125,0.9125,0.1683693,0.08418465 +0.7125,0.9375,0.07499999,0.07500005 +0.7125,0.9375,0.053032935,0.10606599 +0.7125,0.9375,0.10606605,0.053033113 +0.7125,0.9375,0.094494045,0.094494104 +0.7125,0.9375,0.06681734,0.1336348 +0.7125,0.9375,0.13363487,0.06681752 +0.7125,0.9375,0.11905509,0.11905503 +0.7125,0.9375,0.08418465,0.1683693 +0.7125,0.9375,0.1683693,0.08418465 +0.7125,0.9625,0.07499999,0.07499999 +0.7125,0.9625,0.053032935,0.10606593 +0.7125,0.9625,0.10606605,0.053033054 +0.7125,0.9625,0.094494045,0.094494045 +0.7125,0.9625,0.06681734,0.13363475 +0.7125,0.9625,0.13363487,0.06681746 +0.7125,0.9625,0.11905509,0.11905497 +0.7125,0.9625,0.08418465,0.1683693 +0.7125,0.9625,0.1683693,0.08418465 +0.7125,0.98749995,0.07499999,0.07499999 +0.7125,0.98749995,0.053032935,0.10606593 +0.7125,0.98749995,0.10606605,0.053033054 +0.7125,0.98749995,0.094494045,0.094494045 +0.7125,0.98749995,0.06681734,0.13363475 +0.7125,0.98749995,0.13363487,0.06681746 +0.7125,0.98749995,0.11905509,0.11905497 +0.7125,0.98749995,0.08418465,0.16836923 +0.7125,0.98749995,0.1683693,0.08418459 +0.73749995,0.0125,0.07499999,0.075 +0.7375,0.012499997,0.053032994,0.10606602 +0.73749995,0.012499999,0.10606605,0.05303301 +0.73749995,0.012499999,0.094494045,0.09449408 +0.7375,0.012500001,0.0668174,0.1336348 +0.73749995,0.012499999,0.1336348,0.0668174 +0.73749995,0.012500001,0.11905509,0.11905508 +0.7375,0.012499999,0.08418465,0.1683693 +0.7375,0.012500002,0.1683693,0.084184654 +0.73749995,0.0375,0.07499999,0.075 +0.7375,0.037499998,0.053032994,0.10606601 +0.73749995,0.0375,0.10606605,0.05303301 +0.73749995,0.0375,0.094494045,0.094494075 +0.7375,0.0375,0.0668174,0.1336348 +0.73749995,0.0375,0.1336348,0.0668174 +0.73749995,0.0375,0.11905509,0.11905508 +0.7375,0.0375,0.08418465,0.16836931 +0.7375,0.0375,0.1683693,0.08418466 +0.73749995,0.0625,0.07499999,0.075 +0.7375,0.0625,0.053032994,0.10606602 +0.73749995,0.0625,0.10606605,0.05303301 +0.73749995,0.0625,0.094494045,0.094494075 +0.7375,0.0625,0.0668174,0.1336348 +0.73749995,0.0625,0.1336348,0.0668174 +0.73749995,0.0625,0.11905509,0.11905508 +0.7375,0.0625,0.08418465,0.16836932 +0.7375,0.0625,0.1683693,0.08418465 +0.73749995,0.0875,0.07499999,0.075 +0.7375,0.08749999,0.053032994,0.10606601 +0.73749995,0.087500006,0.10606605,0.053033013 +0.73749995,0.087500006,0.094494045,0.09449408 +0.7375,0.087500006,0.0668174,0.1336348 +0.73749995,0.0875,0.1336348,0.0668174 +0.73749995,0.0875,0.11905509,0.11905508 +0.7375,0.0875,0.08418465,0.16836931 +0.7375,0.087500006,0.1683693,0.084184654 +0.73749995,0.112500004,0.07499999,0.075 +0.7375,0.1125,0.053032994,0.10606601 +0.73749995,0.112500004,0.10606605,0.05303301 +0.73749995,0.1125,0.094494045,0.094494075 +0.7375,0.1125,0.0668174,0.1336348 +0.73749995,0.1125,0.1336348,0.0668174 +0.73749995,0.1125,0.11905509,0.119055085 +0.7375,0.112500004,0.08418465,0.16836931 +0.7375,0.1125,0.1683693,0.08418465 +0.73749995,0.1375,0.07499999,0.074999996 +0.7375,0.1375,0.053032994,0.10606602 +0.73749995,0.1375,0.10606605,0.053033024 +0.73749995,0.1375,0.094494045,0.09449408 +0.7375,0.1375,0.0668174,0.1336348 +0.73749995,0.1375,0.1336348,0.0668174 +0.73749995,0.13749999,0.11905509,0.11905508 +0.7375,0.1375,0.08418465,0.1683693 +0.7375,0.1375,0.1683693,0.084184654 +0.73749995,0.1625,0.07499999,0.075 +0.7375,0.16250001,0.053032994,0.106066026 +0.73749995,0.1625,0.10606605,0.05303301 +0.73749995,0.1625,0.094494045,0.094494075 +0.7375,0.1625,0.0668174,0.1336348 +0.73749995,0.1625,0.1336348,0.0668174 +0.73749995,0.1625,0.11905509,0.11905508 +0.7375,0.1625,0.08418465,0.1683693 +0.7375,0.1625,0.1683693,0.08418464 +0.73749995,0.1875,0.07499999,0.07499999 +0.7375,0.1875,0.053032994,0.10606603 +0.73749995,0.1875,0.10606605,0.053033024 +0.73749995,0.1875,0.094494045,0.09449406 +0.7375,0.1875,0.0668174,0.1336348 +0.73749995,0.1875,0.1336348,0.06681742 +0.73749995,0.1875,0.11905509,0.11905509 +0.7375,0.1875,0.08418465,0.16836931 +0.7375,0.1875,0.1683693,0.08418465 +0.73749995,0.2125,0.07499999,0.075 +0.7375,0.2125,0.053032994,0.10606603 +0.73749995,0.2125,0.10606605,0.05303301 +0.73749995,0.21249999,0.094494045,0.094494075 +0.7375,0.2125,0.0668174,0.1336348 +0.73749995,0.2125,0.1336348,0.0668174 +0.73749995,0.2125,0.11905509,0.11905509 +0.7375,0.2125,0.08418465,0.16836931 +0.7375,0.2125,0.1683693,0.08418465 +0.73749995,0.23750001,0.07499999,0.075 +0.7375,0.2375,0.053032994,0.10606602 +0.73749995,0.2375,0.10606605,0.053033024 +0.73749995,0.2375,0.094494045,0.094494075 +0.7375,0.23750001,0.0668174,0.13363482 +0.73749995,0.2375,0.1336348,0.06681743 +0.73749995,0.2375,0.11905509,0.11905506 +0.7375,0.2375,0.08418465,0.16836932 +0.7375,0.23750001,0.1683693,0.08418466 +0.73749995,0.2625,0.07499999,0.07500002 +0.7375,0.2625,0.053032994,0.10606603 +0.73749995,0.2625,0.10606605,0.053033024 +0.73749995,0.2625,0.094494045,0.094494075 +0.7375,0.2625,0.0668174,0.13363479 +0.73749995,0.2625,0.1336348,0.06681743 +0.73749995,0.2625,0.11905509,0.11905508 +0.7375,0.2625,0.08418465,0.1683693 +0.7375,0.2625,0.1683693,0.08418463 +0.73749995,0.2875,0.07499999,0.07499999 +0.7375,0.2875,0.053032994,0.10606603 +0.73749995,0.28750002,0.10606605,0.053033024 +0.73749995,0.2875,0.094494045,0.094494045 +0.7375,0.2875,0.0668174,0.1336348 +0.73749995,0.28750002,0.1336348,0.06681743 +0.73749995,0.2875,0.11905509,0.11905508 +0.7375,0.2875,0.08418465,0.1683693 +0.7375,0.2875,0.1683693,0.08418465 +0.73749995,0.3125,0.07499999,0.07499999 +0.7375,0.3125,0.053032994,0.10606605 +0.73749995,0.3125,0.10606605,0.053032994 +0.73749995,0.3125,0.094494045,0.094494045 +0.7375,0.3125,0.0668174,0.1336348 +0.73749995,0.3125,0.1336348,0.0668174 +0.73749995,0.3125,0.11905509,0.11905509 +0.7375,0.3125,0.08418465,0.1683693 +0.7375,0.3125,0.1683693,0.08418465 +0.73749995,0.3375,0.07499999,0.07499999 +0.7375,0.3375,0.053032994,0.10606605 +0.73749995,0.33749998,0.10606605,0.053033024 +0.73749995,0.3375,0.094494045,0.094494045 +0.7375,0.33750004,0.0668174,0.13363484 +0.73749995,0.33749998,0.1336348,0.06681743 +0.73749995,0.3375,0.11905509,0.11905509 +0.7375,0.3375,0.08418465,0.1683693 +0.7375,0.3375,0.1683693,0.08418465 +0.73749995,0.3625,0.07499999,0.07500002 +0.7375,0.3625,0.053032994,0.10606602 +0.73749995,0.3625,0.10606605,0.053033024 +0.73749995,0.3625,0.094494045,0.094494075 +0.7375,0.3625,0.0668174,0.1336348 +0.73749995,0.3625,0.1336348,0.06681743 +0.73749995,0.3625,0.11905509,0.11905506 +0.7375,0.3625,0.08418465,0.1683693 +0.7375,0.3625,0.1683693,0.08418465 +0.73749995,0.3875,0.07499999,0.07500002 +0.7375,0.3875,0.053032994,0.10606602 +0.73749995,0.3875,0.10606605,0.053032994 +0.73749995,0.3875,0.094494045,0.094494075 +0.7375,0.3875,0.0668174,0.13363484 +0.73749995,0.3875,0.1336348,0.0668174 +0.73749995,0.3875,0.11905509,0.11905506 +0.7375,0.3875,0.08418465,0.1683693 +0.7375,0.3875,0.1683693,0.08418465 +0.73749995,0.4125,0.07499999,0.07499999 +0.7375,0.4125,0.053032994,0.10606605 +0.73749995,0.4125,0.10606605,0.053032994 +0.73749995,0.4125,0.094494045,0.094494045 +0.7375,0.41250002,0.0668174,0.13363484 +0.73749995,0.4125,0.1336348,0.0668174 +0.73749995,0.4125,0.11905509,0.11905509 +0.7375,0.4125,0.08418465,0.1683693 +0.7375,0.4125,0.1683693,0.08418465 +0.73749995,0.4375,0.07499999,0.07499999 +0.7375,0.4375,0.053032994,0.10606605 +0.73749995,0.4375,0.10606605,0.053032994 +0.73749995,0.4375,0.094494045,0.094494045 +0.7375,0.4375,0.0668174,0.1336348 +0.73749995,0.4375,0.1336348,0.0668174 +0.73749995,0.4375,0.11905509,0.11905509 +0.7375,0.4375,0.08418465,0.1683693 +0.7375,0.4375,0.1683693,0.08418465 +0.73749995,0.4625,0.07499999,0.07499999 +0.7375,0.4625,0.053032994,0.10606605 +0.73749995,0.46249998,0.10606605,0.053032964 +0.73749995,0.4625,0.094494045,0.094494045 +0.7375,0.46250004,0.0668174,0.13363484 +0.73749995,0.46249998,0.1336348,0.06681737 +0.73749995,0.4625,0.11905509,0.11905509 +0.7375,0.46249998,0.08418465,0.16836926 +0.7375,0.46249998,0.1683693,0.08418462 +0.73749995,0.48749998,0.07499999,0.07499999 +0.7375,0.4875,0.053032994,0.10606602 +0.73749995,0.4875,0.10606605,0.053032994 +0.73749995,0.48749998,0.094494045,0.094494045 +0.7375,0.4875,0.0668174,0.13363484 +0.73749995,0.4875,0.1336348,0.0668174 +0.73749995,0.4875,0.11905509,0.11905506 +0.7375,0.4875,0.08418465,0.1683693 +0.7375,0.4875,0.1683693,0.08418465 +0.73749995,0.5125,0.07499999,0.07500002 +0.7375,0.51250005,0.053032994,0.10606605 +0.73749995,0.5125,0.10606605,0.053032964 +0.73749995,0.5125,0.094494045,0.094494075 +0.7375,0.51250005,0.0668174,0.13363487 +0.73749995,0.5125,0.1336348,0.06681737 +0.73749995,0.51250005,0.11905509,0.11905509 +0.7375,0.5125,0.08418465,0.1683693 +0.7375,0.5125,0.1683693,0.08418465 +0.73749995,0.5375,0.07499999,0.07499999 +0.7375,0.5375,0.053032994,0.10606605 +0.73749995,0.5375,0.10606605,0.053032935 +0.73749995,0.5375,0.094494045,0.094494045 +0.7375,0.5375,0.0668174,0.13363487 +0.73749995,0.5375,0.1336348,0.06681734 +0.73749995,0.5375,0.11905509,0.11905509 +0.7375,0.5375,0.08418465,0.16836932 +0.7375,0.5375,0.1683693,0.08418468 +0.73749995,0.5625,0.07499999,0.07500005 +0.7375,0.5625,0.053032994,0.10606599 +0.73749995,0.5625,0.10606605,0.053032994 +0.73749995,0.5625,0.094494045,0.094494104 +0.7375,0.5625,0.0668174,0.13363484 +0.73749995,0.5625,0.1336348,0.0668174 +0.73749995,0.5625,0.11905509,0.11905503 +0.7375,0.5625,0.08418465,0.1683693 +0.7375,0.5625,0.1683693,0.08418465 +0.73749995,0.5875,0.07499999,0.07499999 +0.7375,0.5875,0.053032994,0.10606605 +0.73749995,0.5875,0.10606605,0.053032935 +0.73749995,0.5875,0.094494045,0.094494045 +0.7375,0.5875,0.0668174,0.13363487 +0.73749995,0.5875,0.1336348,0.06681734 +0.73749995,0.5875,0.11905509,0.11905509 +0.7375,0.5875,0.08418465,0.1683693 +0.7375,0.5875,0.1683693,0.08418465 +0.73749995,0.61249995,0.07499999,0.07499999 +0.7375,0.61249995,0.053032994,0.10606605 +0.73749995,0.6125,0.10606605,0.053032994 +0.73749995,0.61249995,0.094494045,0.094494045 +0.7375,0.61249995,0.0668174,0.13363487 +0.73749995,0.6125,0.1336348,0.0668174 +0.73749995,0.61249995,0.11905509,0.11905509 +0.7375,0.6125,0.08418465,0.1683693 +0.7375,0.6125,0.1683693,0.08418465 +0.73749995,0.63750005,0.07499999,0.07499999 +0.7375,0.63750005,0.053032994,0.10606605 +0.73749995,0.6375,0.10606605,0.053032994 +0.73749995,0.63750005,0.094494045,0.094494045 +0.7375,0.63750005,0.0668174,0.13363487 +0.73749995,0.6375,0.1336348,0.0668174 +0.73749995,0.63750005,0.11905509,0.11905509 +0.7375,0.6375,0.08418465,0.1683693 +0.7375,0.6375,0.1683693,0.08418465 +0.73749995,0.6625,0.07499999,0.07499999 +0.7375,0.6625,0.053032994,0.10606605 +0.73749995,0.6625,0.10606605,0.053032935 +0.73749995,0.6625,0.094494045,0.094494045 +0.7375,0.6625,0.0668174,0.13363487 +0.73749995,0.6625,0.1336348,0.06681734 +0.73749995,0.6625,0.11905509,0.11905509 +0.7375,0.6625,0.08418465,0.1683693 +0.7375,0.6625,0.1683693,0.08418465 +0.73749995,0.6875,0.07499999,0.07500005 +0.7375,0.6875,0.053032994,0.10606599 +0.73749995,0.6875,0.10606605,0.053032994 +0.73749995,0.6875,0.094494045,0.094494104 +0.7375,0.6875,0.0668174,0.1336348 +0.73749995,0.6875,0.1336348,0.0668174 +0.73749995,0.6875,0.11905509,0.11905503 +0.7375,0.6875,0.08418465,0.1683693 +0.7375,0.6875,0.1683693,0.08418465 +0.73749995,0.7125,0.07499999,0.07499999 +0.7375,0.7125,0.053032994,0.10606605 +0.73749995,0.7125,0.10606605,0.053032935 +0.73749995,0.7125,0.094494045,0.094494045 +0.7375,0.7125,0.0668174,0.13363487 +0.73749995,0.7125,0.1336348,0.06681734 +0.73749995,0.7125,0.11905509,0.11905509 +0.7375,0.7125,0.08418465,0.1683693 +0.7375,0.7125,0.1683693,0.08418465 +0.73749995,0.73749995,0.07499999,0.07499999 +0.7375,0.73749995,0.053032994,0.10606605 +0.73749995,0.7375,0.10606605,0.053032994 +0.73749995,0.73749995,0.094494045,0.094494045 +0.7375,0.73749995,0.0668174,0.1336348 +0.73749995,0.7375,0.1336348,0.0668174 +0.73749995,0.73749995,0.11905509,0.11905509 +0.7375,0.7375,0.08418465,0.1683693 +0.7375,0.7375,0.1683693,0.08418465 +0.73749995,0.76250005,0.07499999,0.07499999 +0.7375,0.7625,0.053032994,0.10606599 +0.73749995,0.7625,0.10606605,0.053032994 +0.73749995,0.76250005,0.094494045,0.094494045 +0.7375,0.7625,0.0668174,0.1336348 +0.73749995,0.7625,0.1336348,0.0668174 +0.73749995,0.7625,0.11905509,0.11905503 +0.7375,0.7625,0.08418465,0.1683693 +0.7375,0.7625,0.1683693,0.08418465 +0.73749995,0.7875,0.07499999,0.07499999 +0.7375,0.78749996,0.053032994,0.10606599 +0.73749995,0.7875,0.10606605,0.053032994 +0.73749995,0.7875,0.094494045,0.094494045 +0.7375,0.78749996,0.0668174,0.1336348 +0.73749995,0.7875,0.1336348,0.0668174 +0.73749995,0.78749996,0.11905509,0.11905503 +0.7375,0.7875,0.08418465,0.1683693 +0.7375,0.7875,0.1683693,0.08418465 +0.73749995,0.8125,0.07499999,0.07500005 +0.7375,0.8125,0.053032994,0.10606599 +0.73749995,0.8125,0.10606605,0.053033054 +0.73749995,0.8125,0.094494045,0.094494104 +0.7375,0.8125,0.0668174,0.1336348 +0.73749995,0.8125,0.1336348,0.06681746 +0.73749995,0.8125,0.11905509,0.11905503 +0.7375,0.8125,0.08418465,0.1683693 +0.7375,0.8125,0.1683693,0.08418465 +0.73749995,0.8375,0.07499999,0.07499999 +0.7375,0.8375,0.053032994,0.10606599 +0.73749995,0.8375,0.10606605,0.053033054 +0.73749995,0.8375,0.094494045,0.094494045 +0.7375,0.8375,0.0668174,0.1336348 +0.73749995,0.8375,0.1336348,0.06681746 +0.73749995,0.8375,0.11905509,0.11905503 +0.7375,0.8375,0.08418465,0.1683693 +0.7375,0.8375,0.1683693,0.08418465 +0.73749995,0.86249995,0.07499999,0.07499999 +0.7375,0.86249995,0.053032994,0.10606593 +0.73749995,0.86249995,0.10606605,0.053033054 +0.73749995,0.86249995,0.094494045,0.094494045 +0.7375,0.86249995,0.0668174,0.1336348 +0.73749995,0.86249995,0.1336348,0.06681746 +0.73749995,0.86249995,0.11905509,0.11905497 +0.7375,0.8625,0.08418465,0.1683693 +0.7375,0.8625,0.1683693,0.08418465 +0.73749995,0.88750005,0.07499999,0.07499999 +0.7375,0.88750005,0.053032994,0.10606593 +0.73749995,0.88750005,0.10606605,0.053033054 +0.73749995,0.88750005,0.094494045,0.094494045 +0.7375,0.88750005,0.0668174,0.13363475 +0.73749995,0.88750005,0.1336348,0.06681746 +0.73749995,0.88750005,0.11905509,0.11905497 +0.7375,0.8875,0.08418465,0.1683693 +0.7375,0.8875,0.1683693,0.08418465 +0.73749995,0.9125,0.07499999,0.07499999 +0.7375,0.9125,0.053032994,0.10606593 +0.73749995,0.9125,0.10606605,0.053033054 +0.73749995,0.9125,0.094494045,0.094494045 +0.7375,0.9125,0.0668174,0.13363475 +0.73749995,0.9125,0.1336348,0.06681746 +0.73749995,0.9125,0.11905509,0.11905497 +0.7375,0.9125,0.08418465,0.1683693 +0.7375,0.9125,0.1683693,0.08418465 +0.73749995,0.9375,0.07499999,0.07500005 +0.7375,0.9375,0.053032994,0.10606599 +0.73749995,0.9375,0.10606605,0.053033113 +0.73749995,0.9375,0.094494045,0.094494104 +0.7375,0.9375,0.0668174,0.1336348 +0.73749995,0.9375,0.1336348,0.06681752 +0.73749995,0.9375,0.11905509,0.11905503 +0.7375,0.9375,0.08418465,0.1683693 +0.7375,0.9375,0.1683693,0.08418465 +0.73749995,0.9625,0.07499999,0.07499999 +0.7375,0.9625,0.053032994,0.10606593 +0.73749995,0.9625,0.10606605,0.053033054 +0.73749995,0.9625,0.094494045,0.094494045 +0.7375,0.9625,0.0668174,0.13363475 +0.73749995,0.9625,0.1336348,0.06681746 +0.73749995,0.9625,0.11905509,0.11905497 +0.7375,0.9625,0.08418465,0.1683693 +0.7375,0.9625,0.1683693,0.08418465 +0.73749995,0.98749995,0.07499999,0.07499999 +0.7375,0.98749995,0.053032994,0.10606593 +0.73749995,0.98749995,0.10606605,0.053033054 +0.73749995,0.98749995,0.094494045,0.094494045 +0.7375,0.98749995,0.0668174,0.13363475 +0.73749995,0.98749995,0.1336348,0.06681746 +0.73749995,0.98749995,0.11905509,0.11905497 +0.7375,0.98749995,0.08418465,0.16836923 +0.7375,0.98749995,0.1683693,0.08418459 +0.76250005,0.0125,0.07499999,0.075 +0.7625,0.012499997,0.053032994,0.10606602 +0.7625,0.012499999,0.10606599,0.05303301 +0.76250005,0.012499999,0.094494045,0.09449408 +0.7625,0.012500001,0.0668174,0.1336348 +0.7625,0.012499999,0.1336348,0.0668174 +0.7625,0.012500001,0.11905503,0.11905508 +0.7625,0.012499999,0.08418465,0.1683693 +0.7625,0.012500002,0.1683693,0.084184654 +0.76250005,0.0375,0.07499999,0.075 +0.7625,0.037499998,0.053032994,0.10606601 +0.7625,0.0375,0.10606599,0.05303301 +0.76250005,0.0375,0.094494045,0.094494075 +0.7625,0.0375,0.0668174,0.1336348 +0.7625,0.0375,0.1336348,0.0668174 +0.7625,0.0375,0.11905503,0.11905508 +0.7625,0.0375,0.08418465,0.16836931 +0.7625,0.0375,0.1683693,0.08418466 +0.76250005,0.0625,0.07499999,0.075 +0.7625,0.0625,0.053032994,0.10606602 +0.7625,0.0625,0.10606599,0.05303301 +0.76250005,0.0625,0.094494045,0.094494075 +0.7625,0.0625,0.0668174,0.1336348 +0.7625,0.0625,0.1336348,0.0668174 +0.7625,0.0625,0.11905503,0.11905508 +0.7625,0.0625,0.08418465,0.16836932 +0.7625,0.0625,0.1683693,0.08418465 +0.76250005,0.0875,0.07499999,0.075 +0.7625,0.08749999,0.053032994,0.10606601 +0.7625,0.087500006,0.10606599,0.053033013 +0.76250005,0.087500006,0.094494045,0.09449408 +0.7625,0.087500006,0.0668174,0.1336348 +0.7625,0.0875,0.1336348,0.0668174 +0.7625,0.0875,0.11905503,0.11905508 +0.7625,0.0875,0.08418465,0.16836931 +0.7625,0.087500006,0.1683693,0.084184654 +0.76250005,0.112500004,0.07499999,0.075 +0.7625,0.1125,0.053032994,0.10606601 +0.7625,0.112500004,0.10606599,0.05303301 +0.76250005,0.1125,0.094494045,0.094494075 +0.7625,0.1125,0.0668174,0.1336348 +0.7625,0.1125,0.1336348,0.0668174 +0.7625,0.1125,0.11905503,0.119055085 +0.7625,0.112500004,0.08418465,0.16836931 +0.7625,0.1125,0.1683693,0.08418465 +0.76250005,0.1375,0.07499999,0.074999996 +0.7625,0.1375,0.053032994,0.10606602 +0.7625,0.1375,0.10606599,0.053033024 +0.76250005,0.1375,0.094494045,0.09449408 +0.7625,0.1375,0.0668174,0.1336348 +0.7625,0.1375,0.1336348,0.0668174 +0.7625,0.13749999,0.11905503,0.11905508 +0.7625,0.1375,0.08418465,0.1683693 +0.7625,0.1375,0.1683693,0.084184654 +0.76250005,0.1625,0.07499999,0.075 +0.7625,0.16250001,0.053032994,0.106066026 +0.7625,0.1625,0.10606599,0.05303301 +0.76250005,0.1625,0.094494045,0.094494075 +0.7625,0.1625,0.0668174,0.1336348 +0.7625,0.1625,0.1336348,0.0668174 +0.7625,0.1625,0.11905503,0.11905508 +0.7625,0.1625,0.08418465,0.1683693 +0.7625,0.1625,0.1683693,0.08418464 +0.76250005,0.1875,0.07499999,0.07499999 +0.7625,0.1875,0.053032994,0.10606603 +0.7625,0.1875,0.10606599,0.053033024 +0.76250005,0.1875,0.094494045,0.09449406 +0.7625,0.1875,0.0668174,0.1336348 +0.7625,0.1875,0.1336348,0.06681742 +0.7625,0.1875,0.11905503,0.11905509 +0.7625,0.1875,0.08418465,0.16836931 +0.7625,0.1875,0.1683693,0.08418465 +0.76250005,0.2125,0.07499999,0.075 +0.7625,0.2125,0.053032994,0.10606603 +0.7625,0.2125,0.10606599,0.05303301 +0.76250005,0.21249999,0.094494045,0.094494075 +0.7625,0.2125,0.0668174,0.1336348 +0.7625,0.2125,0.1336348,0.0668174 +0.7625,0.2125,0.11905503,0.11905509 +0.7625,0.2125,0.08418465,0.16836931 +0.7625,0.2125,0.1683693,0.08418465 +0.76250005,0.23750001,0.07499999,0.075 +0.7625,0.2375,0.053032994,0.10606602 +0.7625,0.2375,0.10606599,0.053033024 +0.76250005,0.2375,0.094494045,0.094494075 +0.7625,0.23750001,0.0668174,0.13363482 +0.7625,0.2375,0.1336348,0.06681743 +0.7625,0.2375,0.11905503,0.11905506 +0.7625,0.2375,0.08418465,0.16836932 +0.7625,0.23750001,0.1683693,0.08418466 +0.76250005,0.2625,0.07499999,0.07500002 +0.7625,0.2625,0.053032994,0.10606603 +0.7625,0.2625,0.10606599,0.053033024 +0.76250005,0.2625,0.094494045,0.094494075 +0.7625,0.2625,0.0668174,0.13363479 +0.7625,0.2625,0.1336348,0.06681743 +0.7625,0.2625,0.11905503,0.11905508 +0.7625,0.2625,0.08418465,0.1683693 +0.7625,0.2625,0.1683693,0.08418463 +0.76250005,0.2875,0.07499999,0.07499999 +0.7625,0.2875,0.053032994,0.10606603 +0.7625,0.28750002,0.10606599,0.053033024 +0.76250005,0.2875,0.094494045,0.094494045 +0.7625,0.2875,0.0668174,0.1336348 +0.7625,0.28750002,0.1336348,0.06681743 +0.7625,0.2875,0.11905503,0.11905508 +0.7625,0.2875,0.08418465,0.1683693 +0.7625,0.2875,0.1683693,0.08418465 +0.76250005,0.3125,0.07499999,0.07499999 +0.7625,0.3125,0.053032994,0.10606605 +0.7625,0.3125,0.10606599,0.053032994 +0.76250005,0.3125,0.094494045,0.094494045 +0.7625,0.3125,0.0668174,0.1336348 +0.7625,0.3125,0.1336348,0.0668174 +0.7625,0.3125,0.11905503,0.11905509 +0.7625,0.3125,0.08418465,0.1683693 +0.7625,0.3125,0.1683693,0.08418465 +0.76250005,0.3375,0.07499999,0.07499999 +0.7625,0.3375,0.053032994,0.10606605 +0.7625,0.33749998,0.10606599,0.053033024 +0.76250005,0.3375,0.094494045,0.094494045 +0.7625,0.33750004,0.0668174,0.13363484 +0.7625,0.33749998,0.1336348,0.06681743 +0.7625,0.3375,0.11905503,0.11905509 +0.7625,0.3375,0.08418465,0.1683693 +0.7625,0.3375,0.1683693,0.08418465 +0.76250005,0.3625,0.07499999,0.07500002 +0.7625,0.3625,0.053032994,0.10606602 +0.7625,0.3625,0.10606599,0.053033024 +0.76250005,0.3625,0.094494045,0.094494075 +0.7625,0.3625,0.0668174,0.1336348 +0.7625,0.3625,0.1336348,0.06681743 +0.7625,0.3625,0.11905503,0.11905506 +0.7625,0.3625,0.08418465,0.1683693 +0.7625,0.3625,0.1683693,0.08418465 +0.76250005,0.3875,0.07499999,0.07500002 +0.7625,0.3875,0.053032994,0.10606602 +0.7625,0.3875,0.10606599,0.053032994 +0.76250005,0.3875,0.094494045,0.094494075 +0.7625,0.3875,0.0668174,0.13363484 +0.7625,0.3875,0.1336348,0.0668174 +0.7625,0.3875,0.11905503,0.11905506 +0.7625,0.3875,0.08418465,0.1683693 +0.7625,0.3875,0.1683693,0.08418465 +0.76250005,0.4125,0.07499999,0.07499999 +0.7625,0.4125,0.053032994,0.10606605 +0.7625,0.4125,0.10606599,0.053032994 +0.76250005,0.4125,0.094494045,0.094494045 +0.7625,0.41250002,0.0668174,0.13363484 +0.7625,0.4125,0.1336348,0.0668174 +0.7625,0.4125,0.11905503,0.11905509 +0.7625,0.4125,0.08418465,0.1683693 +0.7625,0.4125,0.1683693,0.08418465 +0.76250005,0.4375,0.07499999,0.07499999 +0.7625,0.4375,0.053032994,0.10606605 +0.7625,0.4375,0.10606599,0.053032994 +0.76250005,0.4375,0.094494045,0.094494045 +0.7625,0.4375,0.0668174,0.1336348 +0.7625,0.4375,0.1336348,0.0668174 +0.7625,0.4375,0.11905503,0.11905509 +0.7625,0.4375,0.08418465,0.1683693 +0.7625,0.4375,0.1683693,0.08418465 +0.76250005,0.4625,0.07499999,0.07499999 +0.7625,0.4625,0.053032994,0.10606605 +0.7625,0.46249998,0.10606599,0.053032964 +0.76250005,0.4625,0.094494045,0.094494045 +0.7625,0.46250004,0.0668174,0.13363484 +0.7625,0.46249998,0.1336348,0.06681737 +0.7625,0.4625,0.11905503,0.11905509 +0.7625,0.46249998,0.08418465,0.16836926 +0.7625,0.46249998,0.1683693,0.08418462 +0.76250005,0.48749998,0.07499999,0.07499999 +0.7625,0.4875,0.053032994,0.10606602 +0.7625,0.4875,0.10606599,0.053032994 +0.76250005,0.48749998,0.094494045,0.094494045 +0.7625,0.4875,0.0668174,0.13363484 +0.7625,0.4875,0.1336348,0.0668174 +0.7625,0.4875,0.11905503,0.11905506 +0.7625,0.4875,0.08418465,0.1683693 +0.7625,0.4875,0.1683693,0.08418465 +0.76250005,0.5125,0.07499999,0.07500002 +0.7625,0.51250005,0.053032994,0.10606605 +0.7625,0.5125,0.10606599,0.053032964 +0.76250005,0.5125,0.094494045,0.094494075 +0.7625,0.51250005,0.0668174,0.13363487 +0.7625,0.5125,0.1336348,0.06681737 +0.7625,0.51250005,0.11905503,0.11905509 +0.7625,0.5125,0.08418465,0.1683693 +0.7625,0.5125,0.1683693,0.08418465 +0.76250005,0.5375,0.07499999,0.07499999 +0.7625,0.5375,0.053032994,0.10606605 +0.7625,0.5375,0.10606599,0.053032935 +0.76250005,0.5375,0.094494045,0.094494045 +0.7625,0.5375,0.0668174,0.13363487 +0.7625,0.5375,0.1336348,0.06681734 +0.7625,0.5375,0.11905503,0.11905509 +0.7625,0.5375,0.08418465,0.16836932 +0.7625,0.5375,0.1683693,0.08418468 +0.76250005,0.5625,0.07499999,0.07500005 +0.7625,0.5625,0.053032994,0.10606599 +0.7625,0.5625,0.10606599,0.053032994 +0.76250005,0.5625,0.094494045,0.094494104 +0.7625,0.5625,0.0668174,0.13363484 +0.7625,0.5625,0.1336348,0.0668174 +0.7625,0.5625,0.11905503,0.11905503 +0.7625,0.5625,0.08418465,0.1683693 +0.7625,0.5625,0.1683693,0.08418465 +0.76250005,0.5875,0.07499999,0.07499999 +0.7625,0.5875,0.053032994,0.10606605 +0.7625,0.5875,0.10606599,0.053032935 +0.76250005,0.5875,0.094494045,0.094494045 +0.7625,0.5875,0.0668174,0.13363487 +0.7625,0.5875,0.1336348,0.06681734 +0.7625,0.5875,0.11905503,0.11905509 +0.7625,0.5875,0.08418465,0.1683693 +0.7625,0.5875,0.1683693,0.08418465 +0.76250005,0.61249995,0.07499999,0.07499999 +0.7625,0.61249995,0.053032994,0.10606605 +0.7625,0.6125,0.10606599,0.053032994 +0.76250005,0.61249995,0.094494045,0.094494045 +0.7625,0.61249995,0.0668174,0.13363487 +0.7625,0.6125,0.1336348,0.0668174 +0.7625,0.61249995,0.11905503,0.11905509 +0.7625,0.6125,0.08418465,0.1683693 +0.7625,0.6125,0.1683693,0.08418465 +0.76250005,0.63750005,0.07499999,0.07499999 +0.7625,0.63750005,0.053032994,0.10606605 +0.7625,0.6375,0.10606599,0.053032994 +0.76250005,0.63750005,0.094494045,0.094494045 +0.7625,0.63750005,0.0668174,0.13363487 +0.7625,0.6375,0.1336348,0.0668174 +0.7625,0.63750005,0.11905503,0.11905509 +0.7625,0.6375,0.08418465,0.1683693 +0.7625,0.6375,0.1683693,0.08418465 +0.76250005,0.6625,0.07499999,0.07499999 +0.7625,0.6625,0.053032994,0.10606605 +0.7625,0.6625,0.10606599,0.053032935 +0.76250005,0.6625,0.094494045,0.094494045 +0.7625,0.6625,0.0668174,0.13363487 +0.7625,0.6625,0.1336348,0.06681734 +0.7625,0.6625,0.11905503,0.11905509 +0.7625,0.6625,0.08418465,0.1683693 +0.7625,0.6625,0.1683693,0.08418465 +0.76250005,0.6875,0.07499999,0.07500005 +0.7625,0.6875,0.053032994,0.10606599 +0.7625,0.6875,0.10606599,0.053032994 +0.76250005,0.6875,0.094494045,0.094494104 +0.7625,0.6875,0.0668174,0.1336348 +0.7625,0.6875,0.1336348,0.0668174 +0.7625,0.6875,0.11905503,0.11905503 +0.7625,0.6875,0.08418465,0.1683693 +0.7625,0.6875,0.1683693,0.08418465 +0.76250005,0.7125,0.07499999,0.07499999 +0.7625,0.7125,0.053032994,0.10606605 +0.7625,0.7125,0.10606599,0.053032935 +0.76250005,0.7125,0.094494045,0.094494045 +0.7625,0.7125,0.0668174,0.13363487 +0.7625,0.7125,0.1336348,0.06681734 +0.7625,0.7125,0.11905503,0.11905509 +0.7625,0.7125,0.08418465,0.1683693 +0.7625,0.7125,0.1683693,0.08418465 +0.76250005,0.73749995,0.07499999,0.07499999 +0.7625,0.73749995,0.053032994,0.10606605 +0.7625,0.7375,0.10606599,0.053032994 +0.76250005,0.73749995,0.094494045,0.094494045 +0.7625,0.73749995,0.0668174,0.1336348 +0.7625,0.7375,0.1336348,0.0668174 +0.7625,0.73749995,0.11905503,0.11905509 +0.7625,0.7375,0.08418465,0.1683693 +0.7625,0.7375,0.1683693,0.08418465 +0.76250005,0.76250005,0.07499999,0.07499999 +0.7625,0.7625,0.053032994,0.10606599 +0.7625,0.7625,0.10606599,0.053032994 +0.76250005,0.76250005,0.094494045,0.094494045 +0.7625,0.7625,0.0668174,0.1336348 +0.7625,0.7625,0.1336348,0.0668174 +0.7625,0.7625,0.11905503,0.11905503 +0.7625,0.7625,0.08418465,0.1683693 +0.7625,0.7625,0.1683693,0.08418465 +0.76250005,0.7875,0.07499999,0.07499999 +0.7625,0.78749996,0.053032994,0.10606599 +0.7625,0.7875,0.10606599,0.053032994 +0.76250005,0.7875,0.094494045,0.094494045 +0.7625,0.78749996,0.0668174,0.1336348 +0.7625,0.7875,0.1336348,0.0668174 +0.7625,0.78749996,0.11905503,0.11905503 +0.7625,0.7875,0.08418465,0.1683693 +0.7625,0.7875,0.1683693,0.08418465 +0.76250005,0.8125,0.07499999,0.07500005 +0.7625,0.8125,0.053032994,0.10606599 +0.7625,0.8125,0.10606599,0.053033054 +0.76250005,0.8125,0.094494045,0.094494104 +0.7625,0.8125,0.0668174,0.1336348 +0.7625,0.8125,0.1336348,0.06681746 +0.7625,0.8125,0.11905503,0.11905503 +0.7625,0.8125,0.08418465,0.1683693 +0.7625,0.8125,0.1683693,0.08418465 +0.76250005,0.8375,0.07499999,0.07499999 +0.7625,0.8375,0.053032994,0.10606599 +0.7625,0.8375,0.10606599,0.053033054 +0.76250005,0.8375,0.094494045,0.094494045 +0.7625,0.8375,0.0668174,0.1336348 +0.7625,0.8375,0.1336348,0.06681746 +0.7625,0.8375,0.11905503,0.11905503 +0.7625,0.8375,0.08418465,0.1683693 +0.7625,0.8375,0.1683693,0.08418465 +0.76250005,0.86249995,0.07499999,0.07499999 +0.7625,0.86249995,0.053032994,0.10606593 +0.7625,0.86249995,0.10606599,0.053033054 +0.76250005,0.86249995,0.094494045,0.094494045 +0.7625,0.86249995,0.0668174,0.1336348 +0.7625,0.86249995,0.1336348,0.06681746 +0.7625,0.86249995,0.11905503,0.11905497 +0.7625,0.8625,0.08418465,0.1683693 +0.7625,0.8625,0.1683693,0.08418465 +0.76250005,0.88750005,0.07499999,0.07499999 +0.7625,0.88750005,0.053032994,0.10606593 +0.7625,0.88750005,0.10606599,0.053033054 +0.76250005,0.88750005,0.094494045,0.094494045 +0.7625,0.88750005,0.0668174,0.13363475 +0.7625,0.88750005,0.1336348,0.06681746 +0.7625,0.88750005,0.11905503,0.11905497 +0.7625,0.8875,0.08418465,0.1683693 +0.7625,0.8875,0.1683693,0.08418465 +0.76250005,0.9125,0.07499999,0.07499999 +0.7625,0.9125,0.053032994,0.10606593 +0.7625,0.9125,0.10606599,0.053033054 +0.76250005,0.9125,0.094494045,0.094494045 +0.7625,0.9125,0.0668174,0.13363475 +0.7625,0.9125,0.1336348,0.06681746 +0.7625,0.9125,0.11905503,0.11905497 +0.7625,0.9125,0.08418465,0.1683693 +0.7625,0.9125,0.1683693,0.08418465 +0.76250005,0.9375,0.07499999,0.07500005 +0.7625,0.9375,0.053032994,0.10606599 +0.7625,0.9375,0.10606599,0.053033113 +0.76250005,0.9375,0.094494045,0.094494104 +0.7625,0.9375,0.0668174,0.1336348 +0.7625,0.9375,0.1336348,0.06681752 +0.7625,0.9375,0.11905503,0.11905503 +0.7625,0.9375,0.08418465,0.1683693 +0.7625,0.9375,0.1683693,0.08418465 +0.76250005,0.9625,0.07499999,0.07499999 +0.7625,0.9625,0.053032994,0.10606593 +0.7625,0.9625,0.10606599,0.053033054 +0.76250005,0.9625,0.094494045,0.094494045 +0.7625,0.9625,0.0668174,0.13363475 +0.7625,0.9625,0.1336348,0.06681746 +0.7625,0.9625,0.11905503,0.11905497 +0.7625,0.9625,0.08418465,0.1683693 +0.7625,0.9625,0.1683693,0.08418465 +0.76250005,0.98749995,0.07499999,0.07499999 +0.7625,0.98749995,0.053032994,0.10606593 +0.7625,0.98749995,0.10606599,0.053033054 +0.76250005,0.98749995,0.094494045,0.094494045 +0.7625,0.98749995,0.0668174,0.13363475 +0.7625,0.98749995,0.1336348,0.06681746 +0.7625,0.98749995,0.11905503,0.11905497 +0.7625,0.98749995,0.08418465,0.16836923 +0.7625,0.98749995,0.1683693,0.08418459 +0.7875,0.0125,0.07499999,0.075 +0.7875,0.012499997,0.053032994,0.10606602 +0.78749996,0.012499999,0.10606599,0.05303301 +0.7875,0.012499999,0.094494045,0.09449408 +0.7875,0.012500001,0.0668174,0.1336348 +0.78749996,0.012499999,0.1336348,0.0668174 +0.78749996,0.012500001,0.11905503,0.11905508 +0.7875,0.012499999,0.08418465,0.1683693 +0.7875,0.012500002,0.1683693,0.084184654 +0.7875,0.0375,0.07499999,0.075 +0.7875,0.037499998,0.053032994,0.10606601 +0.78749996,0.0375,0.10606599,0.05303301 +0.7875,0.0375,0.094494045,0.094494075 +0.7875,0.0375,0.0668174,0.1336348 +0.78749996,0.0375,0.1336348,0.0668174 +0.78749996,0.0375,0.11905503,0.11905508 +0.7875,0.0375,0.08418465,0.16836931 +0.7875,0.0375,0.1683693,0.08418466 +0.7875,0.0625,0.07499999,0.075 +0.7875,0.0625,0.053032994,0.10606602 +0.78749996,0.0625,0.10606599,0.05303301 +0.7875,0.0625,0.094494045,0.094494075 +0.7875,0.0625,0.0668174,0.1336348 +0.78749996,0.0625,0.1336348,0.0668174 +0.78749996,0.0625,0.11905503,0.11905508 +0.7875,0.0625,0.08418465,0.16836932 +0.7875,0.0625,0.1683693,0.08418465 +0.7875,0.0875,0.07499999,0.075 +0.7875,0.08749999,0.053032994,0.10606601 +0.78749996,0.087500006,0.10606599,0.053033013 +0.7875,0.087500006,0.094494045,0.09449408 +0.7875,0.087500006,0.0668174,0.1336348 +0.78749996,0.0875,0.1336348,0.0668174 +0.78749996,0.0875,0.11905503,0.11905508 +0.7875,0.0875,0.08418465,0.16836931 +0.7875,0.087500006,0.1683693,0.084184654 +0.7875,0.112500004,0.07499999,0.075 +0.7875,0.1125,0.053032994,0.10606601 +0.78749996,0.112500004,0.10606599,0.05303301 +0.7875,0.1125,0.094494045,0.094494075 +0.7875,0.1125,0.0668174,0.1336348 +0.78749996,0.1125,0.1336348,0.0668174 +0.78749996,0.1125,0.11905503,0.119055085 +0.7875,0.112500004,0.08418465,0.16836931 +0.7875,0.1125,0.1683693,0.08418465 +0.7875,0.1375,0.07499999,0.074999996 +0.7875,0.1375,0.053032994,0.10606602 +0.78749996,0.1375,0.10606599,0.053033024 +0.7875,0.1375,0.094494045,0.09449408 +0.7875,0.1375,0.0668174,0.1336348 +0.78749996,0.1375,0.1336348,0.0668174 +0.78749996,0.13749999,0.11905503,0.11905508 +0.7875,0.1375,0.08418465,0.1683693 +0.7875,0.1375,0.1683693,0.084184654 +0.7875,0.1625,0.07499999,0.075 +0.7875,0.16250001,0.053032994,0.106066026 +0.78749996,0.1625,0.10606599,0.05303301 +0.7875,0.1625,0.094494045,0.094494075 +0.7875,0.1625,0.0668174,0.1336348 +0.78749996,0.1625,0.1336348,0.0668174 +0.78749996,0.1625,0.11905503,0.11905508 +0.7875,0.1625,0.08418465,0.1683693 +0.7875,0.1625,0.1683693,0.08418464 +0.7875,0.1875,0.07499999,0.07499999 +0.7875,0.1875,0.053032994,0.10606603 +0.78749996,0.1875,0.10606599,0.053033024 +0.7875,0.1875,0.094494045,0.09449406 +0.7875,0.1875,0.0668174,0.1336348 +0.78749996,0.1875,0.1336348,0.06681742 +0.78749996,0.1875,0.11905503,0.11905509 +0.7875,0.1875,0.08418465,0.16836931 +0.7875,0.1875,0.1683693,0.08418465 +0.7875,0.2125,0.07499999,0.075 +0.7875,0.2125,0.053032994,0.10606603 +0.78749996,0.2125,0.10606599,0.05303301 +0.7875,0.21249999,0.094494045,0.094494075 +0.7875,0.2125,0.0668174,0.1336348 +0.78749996,0.2125,0.1336348,0.0668174 +0.78749996,0.2125,0.11905503,0.11905509 +0.7875,0.2125,0.08418465,0.16836931 +0.7875,0.2125,0.1683693,0.08418465 +0.7875,0.23750001,0.07499999,0.075 +0.7875,0.2375,0.053032994,0.10606602 +0.78749996,0.2375,0.10606599,0.053033024 +0.7875,0.2375,0.094494045,0.094494075 +0.7875,0.23750001,0.0668174,0.13363482 +0.78749996,0.2375,0.1336348,0.06681743 +0.78749996,0.2375,0.11905503,0.11905506 +0.7875,0.2375,0.08418465,0.16836932 +0.7875,0.23750001,0.1683693,0.08418466 +0.7875,0.2625,0.07499999,0.07500002 +0.7875,0.2625,0.053032994,0.10606603 +0.78749996,0.2625,0.10606599,0.053033024 +0.7875,0.2625,0.094494045,0.094494075 +0.7875,0.2625,0.0668174,0.13363479 +0.78749996,0.2625,0.1336348,0.06681743 +0.78749996,0.2625,0.11905503,0.11905508 +0.7875,0.2625,0.08418465,0.1683693 +0.7875,0.2625,0.1683693,0.08418463 +0.7875,0.2875,0.07499999,0.07499999 +0.7875,0.2875,0.053032994,0.10606603 +0.78749996,0.28750002,0.10606599,0.053033024 +0.7875,0.2875,0.094494045,0.094494045 +0.7875,0.2875,0.0668174,0.1336348 +0.78749996,0.28750002,0.1336348,0.06681743 +0.78749996,0.2875,0.11905503,0.11905508 +0.7875,0.2875,0.08418465,0.1683693 +0.7875,0.2875,0.1683693,0.08418465 +0.7875,0.3125,0.07499999,0.07499999 +0.7875,0.3125,0.053032994,0.10606605 +0.78749996,0.3125,0.10606599,0.053032994 +0.7875,0.3125,0.094494045,0.094494045 +0.7875,0.3125,0.0668174,0.1336348 +0.78749996,0.3125,0.1336348,0.0668174 +0.78749996,0.3125,0.11905503,0.11905509 +0.7875,0.3125,0.08418465,0.1683693 +0.7875,0.3125,0.1683693,0.08418465 +0.7875,0.3375,0.07499999,0.07499999 +0.7875,0.3375,0.053032994,0.10606605 +0.78749996,0.33749998,0.10606599,0.053033024 +0.7875,0.3375,0.094494045,0.094494045 +0.7875,0.33750004,0.0668174,0.13363484 +0.78749996,0.33749998,0.1336348,0.06681743 +0.78749996,0.3375,0.11905503,0.11905509 +0.7875,0.3375,0.08418465,0.1683693 +0.7875,0.3375,0.1683693,0.08418465 +0.7875,0.3625,0.07499999,0.07500002 +0.7875,0.3625,0.053032994,0.10606602 +0.78749996,0.3625,0.10606599,0.053033024 +0.7875,0.3625,0.094494045,0.094494075 +0.7875,0.3625,0.0668174,0.1336348 +0.78749996,0.3625,0.1336348,0.06681743 +0.78749996,0.3625,0.11905503,0.11905506 +0.7875,0.3625,0.08418465,0.1683693 +0.7875,0.3625,0.1683693,0.08418465 +0.7875,0.3875,0.07499999,0.07500002 +0.7875,0.3875,0.053032994,0.10606602 +0.78749996,0.3875,0.10606599,0.053032994 +0.7875,0.3875,0.094494045,0.094494075 +0.7875,0.3875,0.0668174,0.13363484 +0.78749996,0.3875,0.1336348,0.0668174 +0.78749996,0.3875,0.11905503,0.11905506 +0.7875,0.3875,0.08418465,0.1683693 +0.7875,0.3875,0.1683693,0.08418465 +0.7875,0.4125,0.07499999,0.07499999 +0.7875,0.4125,0.053032994,0.10606605 +0.78749996,0.4125,0.10606599,0.053032994 +0.7875,0.4125,0.094494045,0.094494045 +0.7875,0.41250002,0.0668174,0.13363484 +0.78749996,0.4125,0.1336348,0.0668174 +0.78749996,0.4125,0.11905503,0.11905509 +0.7875,0.4125,0.08418465,0.1683693 +0.7875,0.4125,0.1683693,0.08418465 +0.7875,0.4375,0.07499999,0.07499999 +0.7875,0.4375,0.053032994,0.10606605 +0.78749996,0.4375,0.10606599,0.053032994 +0.7875,0.4375,0.094494045,0.094494045 +0.7875,0.4375,0.0668174,0.1336348 +0.78749996,0.4375,0.1336348,0.0668174 +0.78749996,0.4375,0.11905503,0.11905509 +0.7875,0.4375,0.08418465,0.1683693 +0.7875,0.4375,0.1683693,0.08418465 +0.7875,0.4625,0.07499999,0.07499999 +0.7875,0.4625,0.053032994,0.10606605 +0.78749996,0.46249998,0.10606599,0.053032964 +0.7875,0.4625,0.094494045,0.094494045 +0.7875,0.46250004,0.0668174,0.13363484 +0.78749996,0.46249998,0.1336348,0.06681737 +0.78749996,0.4625,0.11905503,0.11905509 +0.7875,0.46249998,0.08418465,0.16836926 +0.7875,0.46249998,0.1683693,0.08418462 +0.7875,0.48749998,0.07499999,0.07499999 +0.7875,0.4875,0.053032994,0.10606602 +0.78749996,0.4875,0.10606599,0.053032994 +0.7875,0.48749998,0.094494045,0.094494045 +0.7875,0.4875,0.0668174,0.13363484 +0.78749996,0.4875,0.1336348,0.0668174 +0.78749996,0.4875,0.11905503,0.11905506 +0.7875,0.4875,0.08418465,0.1683693 +0.7875,0.4875,0.1683693,0.08418465 +0.7875,0.5125,0.07499999,0.07500002 +0.7875,0.51250005,0.053032994,0.10606605 +0.78749996,0.5125,0.10606599,0.053032964 +0.7875,0.5125,0.094494045,0.094494075 +0.7875,0.51250005,0.0668174,0.13363487 +0.78749996,0.5125,0.1336348,0.06681737 +0.78749996,0.51250005,0.11905503,0.11905509 +0.7875,0.5125,0.08418465,0.1683693 +0.7875,0.5125,0.1683693,0.08418465 +0.7875,0.5375,0.07499999,0.07499999 +0.7875,0.5375,0.053032994,0.10606605 +0.78749996,0.5375,0.10606599,0.053032935 +0.7875,0.5375,0.094494045,0.094494045 +0.7875,0.5375,0.0668174,0.13363487 +0.78749996,0.5375,0.1336348,0.06681734 +0.78749996,0.5375,0.11905503,0.11905509 +0.7875,0.5375,0.08418465,0.16836932 +0.7875,0.5375,0.1683693,0.08418468 +0.7875,0.5625,0.07499999,0.07500005 +0.7875,0.5625,0.053032994,0.10606599 +0.78749996,0.5625,0.10606599,0.053032994 +0.7875,0.5625,0.094494045,0.094494104 +0.7875,0.5625,0.0668174,0.13363484 +0.78749996,0.5625,0.1336348,0.0668174 +0.78749996,0.5625,0.11905503,0.11905503 +0.7875,0.5625,0.08418465,0.1683693 +0.7875,0.5625,0.1683693,0.08418465 +0.7875,0.5875,0.07499999,0.07499999 +0.7875,0.5875,0.053032994,0.10606605 +0.78749996,0.5875,0.10606599,0.053032935 +0.7875,0.5875,0.094494045,0.094494045 +0.7875,0.5875,0.0668174,0.13363487 +0.78749996,0.5875,0.1336348,0.06681734 +0.78749996,0.5875,0.11905503,0.11905509 +0.7875,0.5875,0.08418465,0.1683693 +0.7875,0.5875,0.1683693,0.08418465 +0.7875,0.61249995,0.07499999,0.07499999 +0.7875,0.61249995,0.053032994,0.10606605 +0.78749996,0.6125,0.10606599,0.053032994 +0.7875,0.61249995,0.094494045,0.094494045 +0.7875,0.61249995,0.0668174,0.13363487 +0.78749996,0.6125,0.1336348,0.0668174 +0.78749996,0.61249995,0.11905503,0.11905509 +0.7875,0.6125,0.08418465,0.1683693 +0.7875,0.6125,0.1683693,0.08418465 +0.7875,0.63750005,0.07499999,0.07499999 +0.7875,0.63750005,0.053032994,0.10606605 +0.78749996,0.6375,0.10606599,0.053032994 +0.7875,0.63750005,0.094494045,0.094494045 +0.7875,0.63750005,0.0668174,0.13363487 +0.78749996,0.6375,0.1336348,0.0668174 +0.78749996,0.63750005,0.11905503,0.11905509 +0.7875,0.6375,0.08418465,0.1683693 +0.7875,0.6375,0.1683693,0.08418465 +0.7875,0.6625,0.07499999,0.07499999 +0.7875,0.6625,0.053032994,0.10606605 +0.78749996,0.6625,0.10606599,0.053032935 +0.7875,0.6625,0.094494045,0.094494045 +0.7875,0.6625,0.0668174,0.13363487 +0.78749996,0.6625,0.1336348,0.06681734 +0.78749996,0.6625,0.11905503,0.11905509 +0.7875,0.6625,0.08418465,0.1683693 +0.7875,0.6625,0.1683693,0.08418465 +0.7875,0.6875,0.07499999,0.07500005 +0.7875,0.6875,0.053032994,0.10606599 +0.78749996,0.6875,0.10606599,0.053032994 +0.7875,0.6875,0.094494045,0.094494104 +0.7875,0.6875,0.0668174,0.1336348 +0.78749996,0.6875,0.1336348,0.0668174 +0.78749996,0.6875,0.11905503,0.11905503 +0.7875,0.6875,0.08418465,0.1683693 +0.7875,0.6875,0.1683693,0.08418465 +0.7875,0.7125,0.07499999,0.07499999 +0.7875,0.7125,0.053032994,0.10606605 +0.78749996,0.7125,0.10606599,0.053032935 +0.7875,0.7125,0.094494045,0.094494045 +0.7875,0.7125,0.0668174,0.13363487 +0.78749996,0.7125,0.1336348,0.06681734 +0.78749996,0.7125,0.11905503,0.11905509 +0.7875,0.7125,0.08418465,0.1683693 +0.7875,0.7125,0.1683693,0.08418465 +0.7875,0.73749995,0.07499999,0.07499999 +0.7875,0.73749995,0.053032994,0.10606605 +0.78749996,0.7375,0.10606599,0.053032994 +0.7875,0.73749995,0.094494045,0.094494045 +0.7875,0.73749995,0.0668174,0.1336348 +0.78749996,0.7375,0.1336348,0.0668174 +0.78749996,0.73749995,0.11905503,0.11905509 +0.7875,0.7375,0.08418465,0.1683693 +0.7875,0.7375,0.1683693,0.08418465 +0.7875,0.76250005,0.07499999,0.07499999 +0.7875,0.7625,0.053032994,0.10606599 +0.78749996,0.7625,0.10606599,0.053032994 +0.7875,0.76250005,0.094494045,0.094494045 +0.7875,0.7625,0.0668174,0.1336348 +0.78749996,0.7625,0.1336348,0.0668174 +0.78749996,0.7625,0.11905503,0.11905503 +0.7875,0.7625,0.08418465,0.1683693 +0.7875,0.7625,0.1683693,0.08418465 +0.7875,0.7875,0.07499999,0.07499999 +0.7875,0.78749996,0.053032994,0.10606599 +0.78749996,0.7875,0.10606599,0.053032994 +0.7875,0.7875,0.094494045,0.094494045 +0.7875,0.78749996,0.0668174,0.1336348 +0.78749996,0.7875,0.1336348,0.0668174 +0.78749996,0.78749996,0.11905503,0.11905503 +0.7875,0.7875,0.08418465,0.1683693 +0.7875,0.7875,0.1683693,0.08418465 +0.7875,0.8125,0.07499999,0.07500005 +0.7875,0.8125,0.053032994,0.10606599 +0.78749996,0.8125,0.10606599,0.053033054 +0.7875,0.8125,0.094494045,0.094494104 +0.7875,0.8125,0.0668174,0.1336348 +0.78749996,0.8125,0.1336348,0.06681746 +0.78749996,0.8125,0.11905503,0.11905503 +0.7875,0.8125,0.08418465,0.1683693 +0.7875,0.8125,0.1683693,0.08418465 +0.7875,0.8375,0.07499999,0.07499999 +0.7875,0.8375,0.053032994,0.10606599 +0.78749996,0.8375,0.10606599,0.053033054 +0.7875,0.8375,0.094494045,0.094494045 +0.7875,0.8375,0.0668174,0.1336348 +0.78749996,0.8375,0.1336348,0.06681746 +0.78749996,0.8375,0.11905503,0.11905503 +0.7875,0.8375,0.08418465,0.1683693 +0.7875,0.8375,0.1683693,0.08418465 +0.7875,0.86249995,0.07499999,0.07499999 +0.7875,0.86249995,0.053032994,0.10606593 +0.78749996,0.86249995,0.10606599,0.053033054 +0.7875,0.86249995,0.094494045,0.094494045 +0.7875,0.86249995,0.0668174,0.1336348 +0.78749996,0.86249995,0.1336348,0.06681746 +0.78749996,0.86249995,0.11905503,0.11905497 +0.7875,0.8625,0.08418465,0.1683693 +0.7875,0.8625,0.1683693,0.08418465 +0.7875,0.88750005,0.07499999,0.07499999 +0.7875,0.88750005,0.053032994,0.10606593 +0.78749996,0.88750005,0.10606599,0.053033054 +0.7875,0.88750005,0.094494045,0.094494045 +0.7875,0.88750005,0.0668174,0.13363475 +0.78749996,0.88750005,0.1336348,0.06681746 +0.78749996,0.88750005,0.11905503,0.11905497 +0.7875,0.8875,0.08418465,0.1683693 +0.7875,0.8875,0.1683693,0.08418465 +0.7875,0.9125,0.07499999,0.07499999 +0.7875,0.9125,0.053032994,0.10606593 +0.78749996,0.9125,0.10606599,0.053033054 +0.7875,0.9125,0.094494045,0.094494045 +0.7875,0.9125,0.0668174,0.13363475 +0.78749996,0.9125,0.1336348,0.06681746 +0.78749996,0.9125,0.11905503,0.11905497 +0.7875,0.9125,0.08418465,0.1683693 +0.7875,0.9125,0.1683693,0.08418465 +0.7875,0.9375,0.07499999,0.07500005 +0.7875,0.9375,0.053032994,0.10606599 +0.78749996,0.9375,0.10606599,0.053033113 +0.7875,0.9375,0.094494045,0.094494104 +0.7875,0.9375,0.0668174,0.1336348 +0.78749996,0.9375,0.1336348,0.06681752 +0.78749996,0.9375,0.11905503,0.11905503 +0.7875,0.9375,0.08418465,0.1683693 +0.7875,0.9375,0.1683693,0.08418465 +0.7875,0.9625,0.07499999,0.07499999 +0.7875,0.9625,0.053032994,0.10606593 +0.78749996,0.9625,0.10606599,0.053033054 +0.7875,0.9625,0.094494045,0.094494045 +0.7875,0.9625,0.0668174,0.13363475 +0.78749996,0.9625,0.1336348,0.06681746 +0.78749996,0.9625,0.11905503,0.11905497 +0.7875,0.9625,0.08418465,0.1683693 +0.7875,0.9625,0.1683693,0.08418465 +0.7875,0.98749995,0.07499999,0.07499999 +0.7875,0.98749995,0.053032994,0.10606593 +0.78749996,0.98749995,0.10606599,0.053033054 +0.7875,0.98749995,0.094494045,0.094494045 +0.7875,0.98749995,0.0668174,0.13363475 +0.78749996,0.98749995,0.1336348,0.06681746 +0.78749996,0.98749995,0.11905503,0.11905497 +0.7875,0.98749995,0.08418465,0.16836923 +0.7875,0.98749995,0.1683693,0.08418459 +0.8125,0.0125,0.07500005,0.075 +0.8125,0.012499997,0.053033054,0.10606602 +0.8125,0.012499999,0.10606599,0.05303301 +0.8125,0.012499999,0.094494104,0.09449408 +0.8125,0.012500001,0.06681746,0.1336348 +0.8125,0.012499999,0.1336348,0.0668174 +0.8125,0.012500001,0.11905503,0.11905508 +0.8125,0.012499999,0.08418465,0.1683693 +0.8125,0.012500002,0.1683693,0.084184654 +0.8125,0.0375,0.07500005,0.075 +0.8125,0.037499998,0.053033054,0.10606601 +0.8125,0.0375,0.10606599,0.05303301 +0.8125,0.0375,0.094494104,0.094494075 +0.8125,0.0375,0.06681746,0.1336348 +0.8125,0.0375,0.1336348,0.0668174 +0.8125,0.0375,0.11905503,0.11905508 +0.8125,0.0375,0.08418465,0.16836931 +0.8125,0.0375,0.1683693,0.08418466 +0.8125,0.0625,0.07500005,0.075 +0.8125,0.0625,0.053033054,0.10606602 +0.8125,0.0625,0.10606599,0.05303301 +0.8125,0.0625,0.094494104,0.094494075 +0.8125,0.0625,0.06681746,0.1336348 +0.8125,0.0625,0.1336348,0.0668174 +0.8125,0.0625,0.11905503,0.11905508 +0.8125,0.0625,0.08418465,0.16836932 +0.8125,0.0625,0.1683693,0.08418465 +0.8125,0.0875,0.07500005,0.075 +0.8125,0.08749999,0.053033054,0.10606601 +0.8125,0.087500006,0.10606599,0.053033013 +0.8125,0.087500006,0.094494104,0.09449408 +0.8125,0.087500006,0.06681746,0.1336348 +0.8125,0.0875,0.1336348,0.0668174 +0.8125,0.0875,0.11905503,0.11905508 +0.8125,0.0875,0.08418465,0.16836931 +0.8125,0.087500006,0.1683693,0.084184654 +0.8125,0.112500004,0.07500005,0.075 +0.8125,0.1125,0.053033054,0.10606601 +0.8125,0.112500004,0.10606599,0.05303301 +0.8125,0.1125,0.094494104,0.094494075 +0.8125,0.1125,0.06681746,0.1336348 +0.8125,0.1125,0.1336348,0.0668174 +0.8125,0.1125,0.11905503,0.119055085 +0.8125,0.112500004,0.08418465,0.16836931 +0.8125,0.1125,0.1683693,0.08418465 +0.8125,0.1375,0.07500005,0.074999996 +0.8125,0.1375,0.053033054,0.10606602 +0.8125,0.1375,0.10606599,0.053033024 +0.8125,0.1375,0.094494104,0.09449408 +0.8125,0.1375,0.06681746,0.1336348 +0.8125,0.1375,0.1336348,0.0668174 +0.8125,0.13749999,0.11905503,0.11905508 +0.8125,0.1375,0.08418465,0.1683693 +0.8125,0.1375,0.1683693,0.084184654 +0.8125,0.1625,0.07500005,0.075 +0.8125,0.16250001,0.053033054,0.106066026 +0.8125,0.1625,0.10606599,0.05303301 +0.8125,0.1625,0.094494104,0.094494075 +0.8125,0.1625,0.06681746,0.1336348 +0.8125,0.1625,0.1336348,0.0668174 +0.8125,0.1625,0.11905503,0.11905508 +0.8125,0.1625,0.08418465,0.1683693 +0.8125,0.1625,0.1683693,0.08418464 +0.8125,0.1875,0.07500005,0.07499999 +0.8125,0.1875,0.053033054,0.10606603 +0.8125,0.1875,0.10606599,0.053033024 +0.8125,0.1875,0.094494104,0.09449406 +0.8125,0.1875,0.06681746,0.1336348 +0.8125,0.1875,0.1336348,0.06681742 +0.8125,0.1875,0.11905503,0.11905509 +0.8125,0.1875,0.08418465,0.16836931 +0.8125,0.1875,0.1683693,0.08418465 +0.8125,0.2125,0.07500005,0.075 +0.8125,0.2125,0.053033054,0.10606603 +0.8125,0.2125,0.10606599,0.05303301 +0.8125,0.21249999,0.094494104,0.094494075 +0.8125,0.2125,0.06681746,0.1336348 +0.8125,0.2125,0.1336348,0.0668174 +0.8125,0.2125,0.11905503,0.11905509 +0.8125,0.2125,0.08418465,0.16836931 +0.8125,0.2125,0.1683693,0.08418465 +0.8125,0.23750001,0.07500005,0.075 +0.8125,0.2375,0.053033054,0.10606602 +0.8125,0.2375,0.10606599,0.053033024 +0.8125,0.2375,0.094494104,0.094494075 +0.8125,0.23750001,0.06681746,0.13363482 +0.8125,0.2375,0.1336348,0.06681743 +0.8125,0.2375,0.11905503,0.11905506 +0.8125,0.2375,0.08418465,0.16836932 +0.8125,0.23750001,0.1683693,0.08418466 +0.8125,0.2625,0.07500005,0.07500002 +0.8125,0.2625,0.053033054,0.10606603 +0.8125,0.2625,0.10606599,0.053033024 +0.8125,0.2625,0.094494104,0.094494075 +0.8125,0.2625,0.06681746,0.13363479 +0.8125,0.2625,0.1336348,0.06681743 +0.8125,0.2625,0.11905503,0.11905508 +0.8125,0.2625,0.08418465,0.1683693 +0.8125,0.2625,0.1683693,0.08418463 +0.8125,0.2875,0.07500005,0.07499999 +0.8125,0.2875,0.053033054,0.10606603 +0.8125,0.28750002,0.10606599,0.053033024 +0.8125,0.2875,0.094494104,0.094494045 +0.8125,0.2875,0.06681746,0.1336348 +0.8125,0.28750002,0.1336348,0.06681743 +0.8125,0.2875,0.11905503,0.11905508 +0.8125,0.2875,0.08418465,0.1683693 +0.8125,0.2875,0.1683693,0.08418465 +0.8125,0.3125,0.07500005,0.07499999 +0.8125,0.3125,0.053033054,0.10606605 +0.8125,0.3125,0.10606599,0.053032994 +0.8125,0.3125,0.094494104,0.094494045 +0.8125,0.3125,0.06681746,0.1336348 +0.8125,0.3125,0.1336348,0.0668174 +0.8125,0.3125,0.11905503,0.11905509 +0.8125,0.3125,0.08418465,0.1683693 +0.8125,0.3125,0.1683693,0.08418465 +0.8125,0.3375,0.07500005,0.07499999 +0.8125,0.3375,0.053033054,0.10606605 +0.8125,0.33749998,0.10606599,0.053033024 +0.8125,0.3375,0.094494104,0.094494045 +0.8125,0.33750004,0.06681746,0.13363484 +0.8125,0.33749998,0.1336348,0.06681743 +0.8125,0.3375,0.11905503,0.11905509 +0.8125,0.3375,0.08418465,0.1683693 +0.8125,0.3375,0.1683693,0.08418465 +0.8125,0.3625,0.07500005,0.07500002 +0.8125,0.3625,0.053033054,0.10606602 +0.8125,0.3625,0.10606599,0.053033024 +0.8125,0.3625,0.094494104,0.094494075 +0.8125,0.3625,0.06681746,0.1336348 +0.8125,0.3625,0.1336348,0.06681743 +0.8125,0.3625,0.11905503,0.11905506 +0.8125,0.3625,0.08418465,0.1683693 +0.8125,0.3625,0.1683693,0.08418465 +0.8125,0.3875,0.07500005,0.07500002 +0.8125,0.3875,0.053033054,0.10606602 +0.8125,0.3875,0.10606599,0.053032994 +0.8125,0.3875,0.094494104,0.094494075 +0.8125,0.3875,0.06681746,0.13363484 +0.8125,0.3875,0.1336348,0.0668174 +0.8125,0.3875,0.11905503,0.11905506 +0.8125,0.3875,0.08418465,0.1683693 +0.8125,0.3875,0.1683693,0.08418465 +0.8125,0.4125,0.07500005,0.07499999 +0.8125,0.4125,0.053033054,0.10606605 +0.8125,0.4125,0.10606599,0.053032994 +0.8125,0.4125,0.094494104,0.094494045 +0.8125,0.41250002,0.06681746,0.13363484 +0.8125,0.4125,0.1336348,0.0668174 +0.8125,0.4125,0.11905503,0.11905509 +0.8125,0.4125,0.08418465,0.1683693 +0.8125,0.4125,0.1683693,0.08418465 +0.8125,0.4375,0.07500005,0.07499999 +0.8125,0.4375,0.053033054,0.10606605 +0.8125,0.4375,0.10606599,0.053032994 +0.8125,0.4375,0.094494104,0.094494045 +0.8125,0.4375,0.06681746,0.1336348 +0.8125,0.4375,0.1336348,0.0668174 +0.8125,0.4375,0.11905503,0.11905509 +0.8125,0.4375,0.08418465,0.1683693 +0.8125,0.4375,0.1683693,0.08418465 +0.8125,0.4625,0.07500005,0.07499999 +0.8125,0.4625,0.053033054,0.10606605 +0.8125,0.46249998,0.10606599,0.053032964 +0.8125,0.4625,0.094494104,0.094494045 +0.8125,0.46250004,0.06681746,0.13363484 +0.8125,0.46249998,0.1336348,0.06681737 +0.8125,0.4625,0.11905503,0.11905509 +0.8125,0.46249998,0.08418465,0.16836926 +0.8125,0.46249998,0.1683693,0.08418462 +0.8125,0.48749998,0.07500005,0.07499999 +0.8125,0.4875,0.053033054,0.10606602 +0.8125,0.4875,0.10606599,0.053032994 +0.8125,0.48749998,0.094494104,0.094494045 +0.8125,0.4875,0.06681746,0.13363484 +0.8125,0.4875,0.1336348,0.0668174 +0.8125,0.4875,0.11905503,0.11905506 +0.8125,0.4875,0.08418465,0.1683693 +0.8125,0.4875,0.1683693,0.08418465 +0.8125,0.5125,0.07500005,0.07500002 +0.8125,0.51250005,0.053033054,0.10606605 +0.8125,0.5125,0.10606599,0.053032964 +0.8125,0.5125,0.094494104,0.094494075 +0.8125,0.51250005,0.06681746,0.13363487 +0.8125,0.5125,0.1336348,0.06681737 +0.8125,0.51250005,0.11905503,0.11905509 +0.8125,0.5125,0.08418465,0.1683693 +0.8125,0.5125,0.1683693,0.08418465 +0.8125,0.5375,0.07500005,0.07499999 +0.8125,0.5375,0.053033054,0.10606605 +0.8125,0.5375,0.10606599,0.053032935 +0.8125,0.5375,0.094494104,0.094494045 +0.8125,0.5375,0.06681746,0.13363487 +0.8125,0.5375,0.1336348,0.06681734 +0.8125,0.5375,0.11905503,0.11905509 +0.8125,0.5375,0.08418465,0.16836932 +0.8125,0.5375,0.1683693,0.08418468 +0.8125,0.5625,0.07500005,0.07500005 +0.8125,0.5625,0.053033054,0.10606599 +0.8125,0.5625,0.10606599,0.053032994 +0.8125,0.5625,0.094494104,0.094494104 +0.8125,0.5625,0.06681746,0.13363484 +0.8125,0.5625,0.1336348,0.0668174 +0.8125,0.5625,0.11905503,0.11905503 +0.8125,0.5625,0.08418465,0.1683693 +0.8125,0.5625,0.1683693,0.08418465 +0.8125,0.5875,0.07500005,0.07499999 +0.8125,0.5875,0.053033054,0.10606605 +0.8125,0.5875,0.10606599,0.053032935 +0.8125,0.5875,0.094494104,0.094494045 +0.8125,0.5875,0.06681746,0.13363487 +0.8125,0.5875,0.1336348,0.06681734 +0.8125,0.5875,0.11905503,0.11905509 +0.8125,0.5875,0.08418465,0.1683693 +0.8125,0.5875,0.1683693,0.08418465 +0.8125,0.61249995,0.07500005,0.07499999 +0.8125,0.61249995,0.053033054,0.10606605 +0.8125,0.6125,0.10606599,0.053032994 +0.8125,0.61249995,0.094494104,0.094494045 +0.8125,0.61249995,0.06681746,0.13363487 +0.8125,0.6125,0.1336348,0.0668174 +0.8125,0.61249995,0.11905503,0.11905509 +0.8125,0.6125,0.08418465,0.1683693 +0.8125,0.6125,0.1683693,0.08418465 +0.8125,0.63750005,0.07500005,0.07499999 +0.8125,0.63750005,0.053033054,0.10606605 +0.8125,0.6375,0.10606599,0.053032994 +0.8125,0.63750005,0.094494104,0.094494045 +0.8125,0.63750005,0.06681746,0.13363487 +0.8125,0.6375,0.1336348,0.0668174 +0.8125,0.63750005,0.11905503,0.11905509 +0.8125,0.6375,0.08418465,0.1683693 +0.8125,0.6375,0.1683693,0.08418465 +0.8125,0.6625,0.07500005,0.07499999 +0.8125,0.6625,0.053033054,0.10606605 +0.8125,0.6625,0.10606599,0.053032935 +0.8125,0.6625,0.094494104,0.094494045 +0.8125,0.6625,0.06681746,0.13363487 +0.8125,0.6625,0.1336348,0.06681734 +0.8125,0.6625,0.11905503,0.11905509 +0.8125,0.6625,0.08418465,0.1683693 +0.8125,0.6625,0.1683693,0.08418465 +0.8125,0.6875,0.07500005,0.07500005 +0.8125,0.6875,0.053033054,0.10606599 +0.8125,0.6875,0.10606599,0.053032994 +0.8125,0.6875,0.094494104,0.094494104 +0.8125,0.6875,0.06681746,0.1336348 +0.8125,0.6875,0.1336348,0.0668174 +0.8125,0.6875,0.11905503,0.11905503 +0.8125,0.6875,0.08418465,0.1683693 +0.8125,0.6875,0.1683693,0.08418465 +0.8125,0.7125,0.07500005,0.07499999 +0.8125,0.7125,0.053033054,0.10606605 +0.8125,0.7125,0.10606599,0.053032935 +0.8125,0.7125,0.094494104,0.094494045 +0.8125,0.7125,0.06681746,0.13363487 +0.8125,0.7125,0.1336348,0.06681734 +0.8125,0.7125,0.11905503,0.11905509 +0.8125,0.7125,0.08418465,0.1683693 +0.8125,0.7125,0.1683693,0.08418465 +0.8125,0.73749995,0.07500005,0.07499999 +0.8125,0.73749995,0.053033054,0.10606605 +0.8125,0.7375,0.10606599,0.053032994 +0.8125,0.73749995,0.094494104,0.094494045 +0.8125,0.73749995,0.06681746,0.1336348 +0.8125,0.7375,0.1336348,0.0668174 +0.8125,0.73749995,0.11905503,0.11905509 +0.8125,0.7375,0.08418465,0.1683693 +0.8125,0.7375,0.1683693,0.08418465 +0.8125,0.76250005,0.07500005,0.07499999 +0.8125,0.7625,0.053033054,0.10606599 +0.8125,0.7625,0.10606599,0.053032994 +0.8125,0.76250005,0.094494104,0.094494045 +0.8125,0.7625,0.06681746,0.1336348 +0.8125,0.7625,0.1336348,0.0668174 +0.8125,0.7625,0.11905503,0.11905503 +0.8125,0.7625,0.08418465,0.1683693 +0.8125,0.7625,0.1683693,0.08418465 +0.8125,0.7875,0.07500005,0.07499999 +0.8125,0.78749996,0.053033054,0.10606599 +0.8125,0.7875,0.10606599,0.053032994 +0.8125,0.7875,0.094494104,0.094494045 +0.8125,0.78749996,0.06681746,0.1336348 +0.8125,0.7875,0.1336348,0.0668174 +0.8125,0.78749996,0.11905503,0.11905503 +0.8125,0.7875,0.08418465,0.1683693 +0.8125,0.7875,0.1683693,0.08418465 +0.8125,0.8125,0.07500005,0.07500005 +0.8125,0.8125,0.053033054,0.10606599 +0.8125,0.8125,0.10606599,0.053033054 +0.8125,0.8125,0.094494104,0.094494104 +0.8125,0.8125,0.06681746,0.1336348 +0.8125,0.8125,0.1336348,0.06681746 +0.8125,0.8125,0.11905503,0.11905503 +0.8125,0.8125,0.08418465,0.1683693 +0.8125,0.8125,0.1683693,0.08418465 +0.8125,0.8375,0.07500005,0.07499999 +0.8125,0.8375,0.053033054,0.10606599 +0.8125,0.8375,0.10606599,0.053033054 +0.8125,0.8375,0.094494104,0.094494045 +0.8125,0.8375,0.06681746,0.1336348 +0.8125,0.8375,0.1336348,0.06681746 +0.8125,0.8375,0.11905503,0.11905503 +0.8125,0.8375,0.08418465,0.1683693 +0.8125,0.8375,0.1683693,0.08418465 +0.8125,0.86249995,0.07500005,0.07499999 +0.8125,0.86249995,0.053033054,0.10606593 +0.8125,0.86249995,0.10606599,0.053033054 +0.8125,0.86249995,0.094494104,0.094494045 +0.8125,0.86249995,0.06681746,0.1336348 +0.8125,0.86249995,0.1336348,0.06681746 +0.8125,0.86249995,0.11905503,0.11905497 +0.8125,0.8625,0.08418465,0.1683693 +0.8125,0.8625,0.1683693,0.08418465 +0.8125,0.88750005,0.07500005,0.07499999 +0.8125,0.88750005,0.053033054,0.10606593 +0.8125,0.88750005,0.10606599,0.053033054 +0.8125,0.88750005,0.094494104,0.094494045 +0.8125,0.88750005,0.06681746,0.13363475 +0.8125,0.88750005,0.1336348,0.06681746 +0.8125,0.88750005,0.11905503,0.11905497 +0.8125,0.8875,0.08418465,0.1683693 +0.8125,0.8875,0.1683693,0.08418465 +0.8125,0.9125,0.07500005,0.07499999 +0.8125,0.9125,0.053033054,0.10606593 +0.8125,0.9125,0.10606599,0.053033054 +0.8125,0.9125,0.094494104,0.094494045 +0.8125,0.9125,0.06681746,0.13363475 +0.8125,0.9125,0.1336348,0.06681746 +0.8125,0.9125,0.11905503,0.11905497 +0.8125,0.9125,0.08418465,0.1683693 +0.8125,0.9125,0.1683693,0.08418465 +0.8125,0.9375,0.07500005,0.07500005 +0.8125,0.9375,0.053033054,0.10606599 +0.8125,0.9375,0.10606599,0.053033113 +0.8125,0.9375,0.094494104,0.094494104 +0.8125,0.9375,0.06681746,0.1336348 +0.8125,0.9375,0.1336348,0.06681752 +0.8125,0.9375,0.11905503,0.11905503 +0.8125,0.9375,0.08418465,0.1683693 +0.8125,0.9375,0.1683693,0.08418465 +0.8125,0.9625,0.07500005,0.07499999 +0.8125,0.9625,0.053033054,0.10606593 +0.8125,0.9625,0.10606599,0.053033054 +0.8125,0.9625,0.094494104,0.094494045 +0.8125,0.9625,0.06681746,0.13363475 +0.8125,0.9625,0.1336348,0.06681746 +0.8125,0.9625,0.11905503,0.11905497 +0.8125,0.9625,0.08418465,0.1683693 +0.8125,0.9625,0.1683693,0.08418465 +0.8125,0.98749995,0.07500005,0.07499999 +0.8125,0.98749995,0.053033054,0.10606593 +0.8125,0.98749995,0.10606599,0.053033054 +0.8125,0.98749995,0.094494104,0.094494045 +0.8125,0.98749995,0.06681746,0.13363475 +0.8125,0.98749995,0.1336348,0.06681746 +0.8125,0.98749995,0.11905503,0.11905497 +0.8125,0.98749995,0.08418465,0.16836923 +0.8125,0.98749995,0.1683693,0.08418459 +0.8375,0.0125,0.07499999,0.075 +0.8375,0.012499997,0.053033054,0.10606602 +0.8375,0.012499999,0.10606599,0.05303301 +0.8375,0.012499999,0.094494045,0.09449408 +0.8375,0.012500001,0.06681746,0.1336348 +0.8375,0.012499999,0.1336348,0.0668174 +0.8375,0.012500001,0.11905503,0.11905508 +0.8375,0.012499999,0.08418465,0.1683693 +0.8375,0.012500002,0.1683693,0.084184654 +0.8375,0.0375,0.07499999,0.075 +0.8375,0.037499998,0.053033054,0.10606601 +0.8375,0.0375,0.10606599,0.05303301 +0.8375,0.0375,0.094494045,0.094494075 +0.8375,0.0375,0.06681746,0.1336348 +0.8375,0.0375,0.1336348,0.0668174 +0.8375,0.0375,0.11905503,0.11905508 +0.8375,0.0375,0.08418465,0.16836931 +0.8375,0.0375,0.1683693,0.08418466 +0.8375,0.0625,0.07499999,0.075 +0.8375,0.0625,0.053033054,0.10606602 +0.8375,0.0625,0.10606599,0.05303301 +0.8375,0.0625,0.094494045,0.094494075 +0.8375,0.0625,0.06681746,0.1336348 +0.8375,0.0625,0.1336348,0.0668174 +0.8375,0.0625,0.11905503,0.11905508 +0.8375,0.0625,0.08418465,0.16836932 +0.8375,0.0625,0.1683693,0.08418465 +0.8375,0.0875,0.07499999,0.075 +0.8375,0.08749999,0.053033054,0.10606601 +0.8375,0.087500006,0.10606599,0.053033013 +0.8375,0.087500006,0.094494045,0.09449408 +0.8375,0.087500006,0.06681746,0.1336348 +0.8375,0.0875,0.1336348,0.0668174 +0.8375,0.0875,0.11905503,0.11905508 +0.8375,0.0875,0.08418465,0.16836931 +0.8375,0.087500006,0.1683693,0.084184654 +0.8375,0.112500004,0.07499999,0.075 +0.8375,0.1125,0.053033054,0.10606601 +0.8375,0.112500004,0.10606599,0.05303301 +0.8375,0.1125,0.094494045,0.094494075 +0.8375,0.1125,0.06681746,0.1336348 +0.8375,0.1125,0.1336348,0.0668174 +0.8375,0.1125,0.11905503,0.119055085 +0.8375,0.112500004,0.08418465,0.16836931 +0.8375,0.1125,0.1683693,0.08418465 +0.8375,0.1375,0.07499999,0.074999996 +0.8375,0.1375,0.053033054,0.10606602 +0.8375,0.1375,0.10606599,0.053033024 +0.8375,0.1375,0.094494045,0.09449408 +0.8375,0.1375,0.06681746,0.1336348 +0.8375,0.1375,0.1336348,0.0668174 +0.8375,0.13749999,0.11905503,0.11905508 +0.8375,0.1375,0.08418465,0.1683693 +0.8375,0.1375,0.1683693,0.084184654 +0.8375,0.1625,0.07499999,0.075 +0.8375,0.16250001,0.053033054,0.106066026 +0.8375,0.1625,0.10606599,0.05303301 +0.8375,0.1625,0.094494045,0.094494075 +0.8375,0.1625,0.06681746,0.1336348 +0.8375,0.1625,0.1336348,0.0668174 +0.8375,0.1625,0.11905503,0.11905508 +0.8375,0.1625,0.08418465,0.1683693 +0.8375,0.1625,0.1683693,0.08418464 +0.8375,0.1875,0.07499999,0.07499999 +0.8375,0.1875,0.053033054,0.10606603 +0.8375,0.1875,0.10606599,0.053033024 +0.8375,0.1875,0.094494045,0.09449406 +0.8375,0.1875,0.06681746,0.1336348 +0.8375,0.1875,0.1336348,0.06681742 +0.8375,0.1875,0.11905503,0.11905509 +0.8375,0.1875,0.08418465,0.16836931 +0.8375,0.1875,0.1683693,0.08418465 +0.8375,0.2125,0.07499999,0.075 +0.8375,0.2125,0.053033054,0.10606603 +0.8375,0.2125,0.10606599,0.05303301 +0.8375,0.21249999,0.094494045,0.094494075 +0.8375,0.2125,0.06681746,0.1336348 +0.8375,0.2125,0.1336348,0.0668174 +0.8375,0.2125,0.11905503,0.11905509 +0.8375,0.2125,0.08418465,0.16836931 +0.8375,0.2125,0.1683693,0.08418465 +0.8375,0.23750001,0.07499999,0.075 +0.8375,0.2375,0.053033054,0.10606602 +0.8375,0.2375,0.10606599,0.053033024 +0.8375,0.2375,0.094494045,0.094494075 +0.8375,0.23750001,0.06681746,0.13363482 +0.8375,0.2375,0.1336348,0.06681743 +0.8375,0.2375,0.11905503,0.11905506 +0.8375,0.2375,0.08418465,0.16836932 +0.8375,0.23750001,0.1683693,0.08418466 +0.8375,0.2625,0.07499999,0.07500002 +0.8375,0.2625,0.053033054,0.10606603 +0.8375,0.2625,0.10606599,0.053033024 +0.8375,0.2625,0.094494045,0.094494075 +0.8375,0.2625,0.06681746,0.13363479 +0.8375,0.2625,0.1336348,0.06681743 +0.8375,0.2625,0.11905503,0.11905508 +0.8375,0.2625,0.08418465,0.1683693 +0.8375,0.2625,0.1683693,0.08418463 +0.8375,0.2875,0.07499999,0.07499999 +0.8375,0.2875,0.053033054,0.10606603 +0.8375,0.28750002,0.10606599,0.053033024 +0.8375,0.2875,0.094494045,0.094494045 +0.8375,0.2875,0.06681746,0.1336348 +0.8375,0.28750002,0.1336348,0.06681743 +0.8375,0.2875,0.11905503,0.11905508 +0.8375,0.2875,0.08418465,0.1683693 +0.8375,0.2875,0.1683693,0.08418465 +0.8375,0.3125,0.07499999,0.07499999 +0.8375,0.3125,0.053033054,0.10606605 +0.8375,0.3125,0.10606599,0.053032994 +0.8375,0.3125,0.094494045,0.094494045 +0.8375,0.3125,0.06681746,0.1336348 +0.8375,0.3125,0.1336348,0.0668174 +0.8375,0.3125,0.11905503,0.11905509 +0.8375,0.3125,0.08418465,0.1683693 +0.8375,0.3125,0.1683693,0.08418465 +0.8375,0.3375,0.07499999,0.07499999 +0.8375,0.3375,0.053033054,0.10606605 +0.8375,0.33749998,0.10606599,0.053033024 +0.8375,0.3375,0.094494045,0.094494045 +0.8375,0.33750004,0.06681746,0.13363484 +0.8375,0.33749998,0.1336348,0.06681743 +0.8375,0.3375,0.11905503,0.11905509 +0.8375,0.3375,0.08418465,0.1683693 +0.8375,0.3375,0.1683693,0.08418465 +0.8375,0.3625,0.07499999,0.07500002 +0.8375,0.3625,0.053033054,0.10606602 +0.8375,0.3625,0.10606599,0.053033024 +0.8375,0.3625,0.094494045,0.094494075 +0.8375,0.3625,0.06681746,0.1336348 +0.8375,0.3625,0.1336348,0.06681743 +0.8375,0.3625,0.11905503,0.11905506 +0.8375,0.3625,0.08418465,0.1683693 +0.8375,0.3625,0.1683693,0.08418465 +0.8375,0.3875,0.07499999,0.07500002 +0.8375,0.3875,0.053033054,0.10606602 +0.8375,0.3875,0.10606599,0.053032994 +0.8375,0.3875,0.094494045,0.094494075 +0.8375,0.3875,0.06681746,0.13363484 +0.8375,0.3875,0.1336348,0.0668174 +0.8375,0.3875,0.11905503,0.11905506 +0.8375,0.3875,0.08418465,0.1683693 +0.8375,0.3875,0.1683693,0.08418465 +0.8375,0.4125,0.07499999,0.07499999 +0.8375,0.4125,0.053033054,0.10606605 +0.8375,0.4125,0.10606599,0.053032994 +0.8375,0.4125,0.094494045,0.094494045 +0.8375,0.41250002,0.06681746,0.13363484 +0.8375,0.4125,0.1336348,0.0668174 +0.8375,0.4125,0.11905503,0.11905509 +0.8375,0.4125,0.08418465,0.1683693 +0.8375,0.4125,0.1683693,0.08418465 +0.8375,0.4375,0.07499999,0.07499999 +0.8375,0.4375,0.053033054,0.10606605 +0.8375,0.4375,0.10606599,0.053032994 +0.8375,0.4375,0.094494045,0.094494045 +0.8375,0.4375,0.06681746,0.1336348 +0.8375,0.4375,0.1336348,0.0668174 +0.8375,0.4375,0.11905503,0.11905509 +0.8375,0.4375,0.08418465,0.1683693 +0.8375,0.4375,0.1683693,0.08418465 +0.8375,0.4625,0.07499999,0.07499999 +0.8375,0.4625,0.053033054,0.10606605 +0.8375,0.46249998,0.10606599,0.053032964 +0.8375,0.4625,0.094494045,0.094494045 +0.8375,0.46250004,0.06681746,0.13363484 +0.8375,0.46249998,0.1336348,0.06681737 +0.8375,0.4625,0.11905503,0.11905509 +0.8375,0.46249998,0.08418465,0.16836926 +0.8375,0.46249998,0.1683693,0.08418462 +0.8375,0.48749998,0.07499999,0.07499999 +0.8375,0.4875,0.053033054,0.10606602 +0.8375,0.4875,0.10606599,0.053032994 +0.8375,0.48749998,0.094494045,0.094494045 +0.8375,0.4875,0.06681746,0.13363484 +0.8375,0.4875,0.1336348,0.0668174 +0.8375,0.4875,0.11905503,0.11905506 +0.8375,0.4875,0.08418465,0.1683693 +0.8375,0.4875,0.1683693,0.08418465 +0.8375,0.5125,0.07499999,0.07500002 +0.8375,0.51250005,0.053033054,0.10606605 +0.8375,0.5125,0.10606599,0.053032964 +0.8375,0.5125,0.094494045,0.094494075 +0.8375,0.51250005,0.06681746,0.13363487 +0.8375,0.5125,0.1336348,0.06681737 +0.8375,0.51250005,0.11905503,0.11905509 +0.8375,0.5125,0.08418465,0.1683693 +0.8375,0.5125,0.1683693,0.08418465 +0.8375,0.5375,0.07499999,0.07499999 +0.8375,0.5375,0.053033054,0.10606605 +0.8375,0.5375,0.10606599,0.053032935 +0.8375,0.5375,0.094494045,0.094494045 +0.8375,0.5375,0.06681746,0.13363487 +0.8375,0.5375,0.1336348,0.06681734 +0.8375,0.5375,0.11905503,0.11905509 +0.8375,0.5375,0.08418465,0.16836932 +0.8375,0.5375,0.1683693,0.08418468 +0.8375,0.5625,0.07499999,0.07500005 +0.8375,0.5625,0.053033054,0.10606599 +0.8375,0.5625,0.10606599,0.053032994 +0.8375,0.5625,0.094494045,0.094494104 +0.8375,0.5625,0.06681746,0.13363484 +0.8375,0.5625,0.1336348,0.0668174 +0.8375,0.5625,0.11905503,0.11905503 +0.8375,0.5625,0.08418465,0.1683693 +0.8375,0.5625,0.1683693,0.08418465 +0.8375,0.5875,0.07499999,0.07499999 +0.8375,0.5875,0.053033054,0.10606605 +0.8375,0.5875,0.10606599,0.053032935 +0.8375,0.5875,0.094494045,0.094494045 +0.8375,0.5875,0.06681746,0.13363487 +0.8375,0.5875,0.1336348,0.06681734 +0.8375,0.5875,0.11905503,0.11905509 +0.8375,0.5875,0.08418465,0.1683693 +0.8375,0.5875,0.1683693,0.08418465 +0.8375,0.61249995,0.07499999,0.07499999 +0.8375,0.61249995,0.053033054,0.10606605 +0.8375,0.6125,0.10606599,0.053032994 +0.8375,0.61249995,0.094494045,0.094494045 +0.8375,0.61249995,0.06681746,0.13363487 +0.8375,0.6125,0.1336348,0.0668174 +0.8375,0.61249995,0.11905503,0.11905509 +0.8375,0.6125,0.08418465,0.1683693 +0.8375,0.6125,0.1683693,0.08418465 +0.8375,0.63750005,0.07499999,0.07499999 +0.8375,0.63750005,0.053033054,0.10606605 +0.8375,0.6375,0.10606599,0.053032994 +0.8375,0.63750005,0.094494045,0.094494045 +0.8375,0.63750005,0.06681746,0.13363487 +0.8375,0.6375,0.1336348,0.0668174 +0.8375,0.63750005,0.11905503,0.11905509 +0.8375,0.6375,0.08418465,0.1683693 +0.8375,0.6375,0.1683693,0.08418465 +0.8375,0.6625,0.07499999,0.07499999 +0.8375,0.6625,0.053033054,0.10606605 +0.8375,0.6625,0.10606599,0.053032935 +0.8375,0.6625,0.094494045,0.094494045 +0.8375,0.6625,0.06681746,0.13363487 +0.8375,0.6625,0.1336348,0.06681734 +0.8375,0.6625,0.11905503,0.11905509 +0.8375,0.6625,0.08418465,0.1683693 +0.8375,0.6625,0.1683693,0.08418465 +0.8375,0.6875,0.07499999,0.07500005 +0.8375,0.6875,0.053033054,0.10606599 +0.8375,0.6875,0.10606599,0.053032994 +0.8375,0.6875,0.094494045,0.094494104 +0.8375,0.6875,0.06681746,0.1336348 +0.8375,0.6875,0.1336348,0.0668174 +0.8375,0.6875,0.11905503,0.11905503 +0.8375,0.6875,0.08418465,0.1683693 +0.8375,0.6875,0.1683693,0.08418465 +0.8375,0.7125,0.07499999,0.07499999 +0.8375,0.7125,0.053033054,0.10606605 +0.8375,0.7125,0.10606599,0.053032935 +0.8375,0.7125,0.094494045,0.094494045 +0.8375,0.7125,0.06681746,0.13363487 +0.8375,0.7125,0.1336348,0.06681734 +0.8375,0.7125,0.11905503,0.11905509 +0.8375,0.7125,0.08418465,0.1683693 +0.8375,0.7125,0.1683693,0.08418465 +0.8375,0.73749995,0.07499999,0.07499999 +0.8375,0.73749995,0.053033054,0.10606605 +0.8375,0.7375,0.10606599,0.053032994 +0.8375,0.73749995,0.094494045,0.094494045 +0.8375,0.73749995,0.06681746,0.1336348 +0.8375,0.7375,0.1336348,0.0668174 +0.8375,0.73749995,0.11905503,0.11905509 +0.8375,0.7375,0.08418465,0.1683693 +0.8375,0.7375,0.1683693,0.08418465 +0.8375,0.76250005,0.07499999,0.07499999 +0.8375,0.7625,0.053033054,0.10606599 +0.8375,0.7625,0.10606599,0.053032994 +0.8375,0.76250005,0.094494045,0.094494045 +0.8375,0.7625,0.06681746,0.1336348 +0.8375,0.7625,0.1336348,0.0668174 +0.8375,0.7625,0.11905503,0.11905503 +0.8375,0.7625,0.08418465,0.1683693 +0.8375,0.7625,0.1683693,0.08418465 +0.8375,0.7875,0.07499999,0.07499999 +0.8375,0.78749996,0.053033054,0.10606599 +0.8375,0.7875,0.10606599,0.053032994 +0.8375,0.7875,0.094494045,0.094494045 +0.8375,0.78749996,0.06681746,0.1336348 +0.8375,0.7875,0.1336348,0.0668174 +0.8375,0.78749996,0.11905503,0.11905503 +0.8375,0.7875,0.08418465,0.1683693 +0.8375,0.7875,0.1683693,0.08418465 +0.8375,0.8125,0.07499999,0.07500005 +0.8375,0.8125,0.053033054,0.10606599 +0.8375,0.8125,0.10606599,0.053033054 +0.8375,0.8125,0.094494045,0.094494104 +0.8375,0.8125,0.06681746,0.1336348 +0.8375,0.8125,0.1336348,0.06681746 +0.8375,0.8125,0.11905503,0.11905503 +0.8375,0.8125,0.08418465,0.1683693 +0.8375,0.8125,0.1683693,0.08418465 +0.8375,0.8375,0.07499999,0.07499999 +0.8375,0.8375,0.053033054,0.10606599 +0.8375,0.8375,0.10606599,0.053033054 +0.8375,0.8375,0.094494045,0.094494045 +0.8375,0.8375,0.06681746,0.1336348 +0.8375,0.8375,0.1336348,0.06681746 +0.8375,0.8375,0.11905503,0.11905503 +0.8375,0.8375,0.08418465,0.1683693 +0.8375,0.8375,0.1683693,0.08418465 +0.8375,0.86249995,0.07499999,0.07499999 +0.8375,0.86249995,0.053033054,0.10606593 +0.8375,0.86249995,0.10606599,0.053033054 +0.8375,0.86249995,0.094494045,0.094494045 +0.8375,0.86249995,0.06681746,0.1336348 +0.8375,0.86249995,0.1336348,0.06681746 +0.8375,0.86249995,0.11905503,0.11905497 +0.8375,0.8625,0.08418465,0.1683693 +0.8375,0.8625,0.1683693,0.08418465 +0.8375,0.88750005,0.07499999,0.07499999 +0.8375,0.88750005,0.053033054,0.10606593 +0.8375,0.88750005,0.10606599,0.053033054 +0.8375,0.88750005,0.094494045,0.094494045 +0.8375,0.88750005,0.06681746,0.13363475 +0.8375,0.88750005,0.1336348,0.06681746 +0.8375,0.88750005,0.11905503,0.11905497 +0.8375,0.8875,0.08418465,0.1683693 +0.8375,0.8875,0.1683693,0.08418465 +0.8375,0.9125,0.07499999,0.07499999 +0.8375,0.9125,0.053033054,0.10606593 +0.8375,0.9125,0.10606599,0.053033054 +0.8375,0.9125,0.094494045,0.094494045 +0.8375,0.9125,0.06681746,0.13363475 +0.8375,0.9125,0.1336348,0.06681746 +0.8375,0.9125,0.11905503,0.11905497 +0.8375,0.9125,0.08418465,0.1683693 +0.8375,0.9125,0.1683693,0.08418465 +0.8375,0.9375,0.07499999,0.07500005 +0.8375,0.9375,0.053033054,0.10606599 +0.8375,0.9375,0.10606599,0.053033113 +0.8375,0.9375,0.094494045,0.094494104 +0.8375,0.9375,0.06681746,0.1336348 +0.8375,0.9375,0.1336348,0.06681752 +0.8375,0.9375,0.11905503,0.11905503 +0.8375,0.9375,0.08418465,0.1683693 +0.8375,0.9375,0.1683693,0.08418465 +0.8375,0.9625,0.07499999,0.07499999 +0.8375,0.9625,0.053033054,0.10606593 +0.8375,0.9625,0.10606599,0.053033054 +0.8375,0.9625,0.094494045,0.094494045 +0.8375,0.9625,0.06681746,0.13363475 +0.8375,0.9625,0.1336348,0.06681746 +0.8375,0.9625,0.11905503,0.11905497 +0.8375,0.9625,0.08418465,0.1683693 +0.8375,0.9625,0.1683693,0.08418465 +0.8375,0.98749995,0.07499999,0.07499999 +0.8375,0.98749995,0.053033054,0.10606593 +0.8375,0.98749995,0.10606599,0.053033054 +0.8375,0.98749995,0.094494045,0.094494045 +0.8375,0.98749995,0.06681746,0.13363475 +0.8375,0.98749995,0.1336348,0.06681746 +0.8375,0.98749995,0.11905503,0.11905497 +0.8375,0.98749995,0.08418465,0.16836923 +0.8375,0.98749995,0.1683693,0.08418459 +0.86249995,0.0125,0.07499999,0.075 +0.86249995,0.012499997,0.053033054,0.10606602 +0.86249995,0.012499999,0.10606593,0.05303301 +0.86249995,0.012499999,0.094494045,0.09449408 +0.86249995,0.012500001,0.06681746,0.1336348 +0.86249995,0.012499999,0.1336348,0.0668174 +0.86249995,0.012500001,0.11905497,0.11905508 +0.8625,0.012499999,0.08418465,0.1683693 +0.8625,0.012500002,0.1683693,0.084184654 +0.86249995,0.0375,0.07499999,0.075 +0.86249995,0.037499998,0.053033054,0.10606601 +0.86249995,0.0375,0.10606593,0.05303301 +0.86249995,0.0375,0.094494045,0.094494075 +0.86249995,0.0375,0.06681746,0.1336348 +0.86249995,0.0375,0.1336348,0.0668174 +0.86249995,0.0375,0.11905497,0.11905508 +0.8625,0.0375,0.08418465,0.16836931 +0.8625,0.0375,0.1683693,0.08418466 +0.86249995,0.0625,0.07499999,0.075 +0.86249995,0.0625,0.053033054,0.10606602 +0.86249995,0.0625,0.10606593,0.05303301 +0.86249995,0.0625,0.094494045,0.094494075 +0.86249995,0.0625,0.06681746,0.1336348 +0.86249995,0.0625,0.1336348,0.0668174 +0.86249995,0.0625,0.11905497,0.11905508 +0.8625,0.0625,0.08418465,0.16836932 +0.8625,0.0625,0.1683693,0.08418465 +0.86249995,0.0875,0.07499999,0.075 +0.86249995,0.08749999,0.053033054,0.10606601 +0.86249995,0.087500006,0.10606593,0.053033013 +0.86249995,0.087500006,0.094494045,0.09449408 +0.86249995,0.087500006,0.06681746,0.1336348 +0.86249995,0.0875,0.1336348,0.0668174 +0.86249995,0.0875,0.11905497,0.11905508 +0.8625,0.0875,0.08418465,0.16836931 +0.8625,0.087500006,0.1683693,0.084184654 +0.86249995,0.112500004,0.07499999,0.075 +0.86249995,0.1125,0.053033054,0.10606601 +0.86249995,0.112500004,0.10606593,0.05303301 +0.86249995,0.1125,0.094494045,0.094494075 +0.86249995,0.1125,0.06681746,0.1336348 +0.86249995,0.1125,0.1336348,0.0668174 +0.86249995,0.1125,0.11905497,0.119055085 +0.8625,0.112500004,0.08418465,0.16836931 +0.8625,0.1125,0.1683693,0.08418465 +0.86249995,0.1375,0.07499999,0.074999996 +0.86249995,0.1375,0.053033054,0.10606602 +0.86249995,0.1375,0.10606593,0.053033024 +0.86249995,0.1375,0.094494045,0.09449408 +0.86249995,0.1375,0.06681746,0.1336348 +0.86249995,0.1375,0.1336348,0.0668174 +0.86249995,0.13749999,0.11905497,0.11905508 +0.8625,0.1375,0.08418465,0.1683693 +0.8625,0.1375,0.1683693,0.084184654 +0.86249995,0.1625,0.07499999,0.075 +0.86249995,0.16250001,0.053033054,0.106066026 +0.86249995,0.1625,0.10606593,0.05303301 +0.86249995,0.1625,0.094494045,0.094494075 +0.86249995,0.1625,0.06681746,0.1336348 +0.86249995,0.1625,0.1336348,0.0668174 +0.86249995,0.1625,0.11905497,0.11905508 +0.8625,0.1625,0.08418465,0.1683693 +0.8625,0.1625,0.1683693,0.08418464 +0.86249995,0.1875,0.07499999,0.07499999 +0.86249995,0.1875,0.053033054,0.10606603 +0.86249995,0.1875,0.10606593,0.053033024 +0.86249995,0.1875,0.094494045,0.09449406 +0.86249995,0.1875,0.06681746,0.1336348 +0.86249995,0.1875,0.1336348,0.06681742 +0.86249995,0.1875,0.11905497,0.11905509 +0.8625,0.1875,0.08418465,0.16836931 +0.8625,0.1875,0.1683693,0.08418465 +0.86249995,0.2125,0.07499999,0.075 +0.86249995,0.2125,0.053033054,0.10606603 +0.86249995,0.2125,0.10606593,0.05303301 +0.86249995,0.21249999,0.094494045,0.094494075 +0.86249995,0.2125,0.06681746,0.1336348 +0.86249995,0.2125,0.1336348,0.0668174 +0.86249995,0.2125,0.11905497,0.11905509 +0.8625,0.2125,0.08418465,0.16836931 +0.8625,0.2125,0.1683693,0.08418465 +0.86249995,0.23750001,0.07499999,0.075 +0.86249995,0.2375,0.053033054,0.10606602 +0.86249995,0.2375,0.10606593,0.053033024 +0.86249995,0.2375,0.094494045,0.094494075 +0.86249995,0.23750001,0.06681746,0.13363482 +0.86249995,0.2375,0.1336348,0.06681743 +0.86249995,0.2375,0.11905497,0.11905506 +0.8625,0.2375,0.08418465,0.16836932 +0.8625,0.23750001,0.1683693,0.08418466 +0.86249995,0.2625,0.07499999,0.07500002 +0.86249995,0.2625,0.053033054,0.10606603 +0.86249995,0.2625,0.10606593,0.053033024 +0.86249995,0.2625,0.094494045,0.094494075 +0.86249995,0.2625,0.06681746,0.13363479 +0.86249995,0.2625,0.1336348,0.06681743 +0.86249995,0.2625,0.11905497,0.11905508 +0.8625,0.2625,0.08418465,0.1683693 +0.8625,0.2625,0.1683693,0.08418463 +0.86249995,0.2875,0.07499999,0.07499999 +0.86249995,0.2875,0.053033054,0.10606603 +0.86249995,0.28750002,0.10606593,0.053033024 +0.86249995,0.2875,0.094494045,0.094494045 +0.86249995,0.2875,0.06681746,0.1336348 +0.86249995,0.28750002,0.1336348,0.06681743 +0.86249995,0.2875,0.11905497,0.11905508 +0.8625,0.2875,0.08418465,0.1683693 +0.8625,0.2875,0.1683693,0.08418465 +0.86249995,0.3125,0.07499999,0.07499999 +0.86249995,0.3125,0.053033054,0.10606605 +0.86249995,0.3125,0.10606593,0.053032994 +0.86249995,0.3125,0.094494045,0.094494045 +0.86249995,0.3125,0.06681746,0.1336348 +0.86249995,0.3125,0.1336348,0.0668174 +0.86249995,0.3125,0.11905497,0.11905509 +0.8625,0.3125,0.08418465,0.1683693 +0.8625,0.3125,0.1683693,0.08418465 +0.86249995,0.3375,0.07499999,0.07499999 +0.86249995,0.3375,0.053033054,0.10606605 +0.86249995,0.33749998,0.10606593,0.053033024 +0.86249995,0.3375,0.094494045,0.094494045 +0.86249995,0.33750004,0.06681746,0.13363484 +0.86249995,0.33749998,0.1336348,0.06681743 +0.86249995,0.3375,0.11905497,0.11905509 +0.8625,0.3375,0.08418465,0.1683693 +0.8625,0.3375,0.1683693,0.08418465 +0.86249995,0.3625,0.07499999,0.07500002 +0.86249995,0.3625,0.053033054,0.10606602 +0.86249995,0.3625,0.10606593,0.053033024 +0.86249995,0.3625,0.094494045,0.094494075 +0.86249995,0.3625,0.06681746,0.1336348 +0.86249995,0.3625,0.1336348,0.06681743 +0.86249995,0.3625,0.11905497,0.11905506 +0.8625,0.3625,0.08418465,0.1683693 +0.8625,0.3625,0.1683693,0.08418465 +0.86249995,0.3875,0.07499999,0.07500002 +0.86249995,0.3875,0.053033054,0.10606602 +0.86249995,0.3875,0.10606593,0.053032994 +0.86249995,0.3875,0.094494045,0.094494075 +0.86249995,0.3875,0.06681746,0.13363484 +0.86249995,0.3875,0.1336348,0.0668174 +0.86249995,0.3875,0.11905497,0.11905506 +0.8625,0.3875,0.08418465,0.1683693 +0.8625,0.3875,0.1683693,0.08418465 +0.86249995,0.4125,0.07499999,0.07499999 +0.86249995,0.4125,0.053033054,0.10606605 +0.86249995,0.4125,0.10606593,0.053032994 +0.86249995,0.4125,0.094494045,0.094494045 +0.86249995,0.41250002,0.06681746,0.13363484 +0.86249995,0.4125,0.1336348,0.0668174 +0.86249995,0.4125,0.11905497,0.11905509 +0.8625,0.4125,0.08418465,0.1683693 +0.8625,0.4125,0.1683693,0.08418465 +0.86249995,0.4375,0.07499999,0.07499999 +0.86249995,0.4375,0.053033054,0.10606605 +0.86249995,0.4375,0.10606593,0.053032994 +0.86249995,0.4375,0.094494045,0.094494045 +0.86249995,0.4375,0.06681746,0.1336348 +0.86249995,0.4375,0.1336348,0.0668174 +0.86249995,0.4375,0.11905497,0.11905509 +0.8625,0.4375,0.08418465,0.1683693 +0.8625,0.4375,0.1683693,0.08418465 +0.86249995,0.4625,0.07499999,0.07499999 +0.86249995,0.4625,0.053033054,0.10606605 +0.86249995,0.46249998,0.10606593,0.053032964 +0.86249995,0.4625,0.094494045,0.094494045 +0.86249995,0.46250004,0.06681746,0.13363484 +0.86249995,0.46249998,0.1336348,0.06681737 +0.86249995,0.4625,0.11905497,0.11905509 +0.8625,0.46249998,0.08418465,0.16836926 +0.8625,0.46249998,0.1683693,0.08418462 +0.86249995,0.48749998,0.07499999,0.07499999 +0.86249995,0.4875,0.053033054,0.10606602 +0.86249995,0.4875,0.10606593,0.053032994 +0.86249995,0.48749998,0.094494045,0.094494045 +0.86249995,0.4875,0.06681746,0.13363484 +0.86249995,0.4875,0.1336348,0.0668174 +0.86249995,0.4875,0.11905497,0.11905506 +0.8625,0.4875,0.08418465,0.1683693 +0.8625,0.4875,0.1683693,0.08418465 +0.86249995,0.5125,0.07499999,0.07500002 +0.86249995,0.51250005,0.053033054,0.10606605 +0.86249995,0.5125,0.10606593,0.053032964 +0.86249995,0.5125,0.094494045,0.094494075 +0.86249995,0.51250005,0.06681746,0.13363487 +0.86249995,0.5125,0.1336348,0.06681737 +0.86249995,0.51250005,0.11905497,0.11905509 +0.8625,0.5125,0.08418465,0.1683693 +0.8625,0.5125,0.1683693,0.08418465 +0.86249995,0.5375,0.07499999,0.07499999 +0.86249995,0.5375,0.053033054,0.10606605 +0.86249995,0.5375,0.10606593,0.053032935 +0.86249995,0.5375,0.094494045,0.094494045 +0.86249995,0.5375,0.06681746,0.13363487 +0.86249995,0.5375,0.1336348,0.06681734 +0.86249995,0.5375,0.11905497,0.11905509 +0.8625,0.5375,0.08418465,0.16836932 +0.8625,0.5375,0.1683693,0.08418468 +0.86249995,0.5625,0.07499999,0.07500005 +0.86249995,0.5625,0.053033054,0.10606599 +0.86249995,0.5625,0.10606593,0.053032994 +0.86249995,0.5625,0.094494045,0.094494104 +0.86249995,0.5625,0.06681746,0.13363484 +0.86249995,0.5625,0.1336348,0.0668174 +0.86249995,0.5625,0.11905497,0.11905503 +0.8625,0.5625,0.08418465,0.1683693 +0.8625,0.5625,0.1683693,0.08418465 +0.86249995,0.5875,0.07499999,0.07499999 +0.86249995,0.5875,0.053033054,0.10606605 +0.86249995,0.5875,0.10606593,0.053032935 +0.86249995,0.5875,0.094494045,0.094494045 +0.86249995,0.5875,0.06681746,0.13363487 +0.86249995,0.5875,0.1336348,0.06681734 +0.86249995,0.5875,0.11905497,0.11905509 +0.8625,0.5875,0.08418465,0.1683693 +0.8625,0.5875,0.1683693,0.08418465 +0.86249995,0.61249995,0.07499999,0.07499999 +0.86249995,0.61249995,0.053033054,0.10606605 +0.86249995,0.6125,0.10606593,0.053032994 +0.86249995,0.61249995,0.094494045,0.094494045 +0.86249995,0.61249995,0.06681746,0.13363487 +0.86249995,0.6125,0.1336348,0.0668174 +0.86249995,0.61249995,0.11905497,0.11905509 +0.8625,0.6125,0.08418465,0.1683693 +0.8625,0.6125,0.1683693,0.08418465 +0.86249995,0.63750005,0.07499999,0.07499999 +0.86249995,0.63750005,0.053033054,0.10606605 +0.86249995,0.6375,0.10606593,0.053032994 +0.86249995,0.63750005,0.094494045,0.094494045 +0.86249995,0.63750005,0.06681746,0.13363487 +0.86249995,0.6375,0.1336348,0.0668174 +0.86249995,0.63750005,0.11905497,0.11905509 +0.8625,0.6375,0.08418465,0.1683693 +0.8625,0.6375,0.1683693,0.08418465 +0.86249995,0.6625,0.07499999,0.07499999 +0.86249995,0.6625,0.053033054,0.10606605 +0.86249995,0.6625,0.10606593,0.053032935 +0.86249995,0.6625,0.094494045,0.094494045 +0.86249995,0.6625,0.06681746,0.13363487 +0.86249995,0.6625,0.1336348,0.06681734 +0.86249995,0.6625,0.11905497,0.11905509 +0.8625,0.6625,0.08418465,0.1683693 +0.8625,0.6625,0.1683693,0.08418465 +0.86249995,0.6875,0.07499999,0.07500005 +0.86249995,0.6875,0.053033054,0.10606599 +0.86249995,0.6875,0.10606593,0.053032994 +0.86249995,0.6875,0.094494045,0.094494104 +0.86249995,0.6875,0.06681746,0.1336348 +0.86249995,0.6875,0.1336348,0.0668174 +0.86249995,0.6875,0.11905497,0.11905503 +0.8625,0.6875,0.08418465,0.1683693 +0.8625,0.6875,0.1683693,0.08418465 +0.86249995,0.7125,0.07499999,0.07499999 +0.86249995,0.7125,0.053033054,0.10606605 +0.86249995,0.7125,0.10606593,0.053032935 +0.86249995,0.7125,0.094494045,0.094494045 +0.86249995,0.7125,0.06681746,0.13363487 +0.86249995,0.7125,0.1336348,0.06681734 +0.86249995,0.7125,0.11905497,0.11905509 +0.8625,0.7125,0.08418465,0.1683693 +0.8625,0.7125,0.1683693,0.08418465 +0.86249995,0.73749995,0.07499999,0.07499999 +0.86249995,0.73749995,0.053033054,0.10606605 +0.86249995,0.7375,0.10606593,0.053032994 +0.86249995,0.73749995,0.094494045,0.094494045 +0.86249995,0.73749995,0.06681746,0.1336348 +0.86249995,0.7375,0.1336348,0.0668174 +0.86249995,0.73749995,0.11905497,0.11905509 +0.8625,0.7375,0.08418465,0.1683693 +0.8625,0.7375,0.1683693,0.08418465 +0.86249995,0.76250005,0.07499999,0.07499999 +0.86249995,0.7625,0.053033054,0.10606599 +0.86249995,0.7625,0.10606593,0.053032994 +0.86249995,0.76250005,0.094494045,0.094494045 +0.86249995,0.7625,0.06681746,0.1336348 +0.86249995,0.7625,0.1336348,0.0668174 +0.86249995,0.7625,0.11905497,0.11905503 +0.8625,0.7625,0.08418465,0.1683693 +0.8625,0.7625,0.1683693,0.08418465 +0.86249995,0.7875,0.07499999,0.07499999 +0.86249995,0.78749996,0.053033054,0.10606599 +0.86249995,0.7875,0.10606593,0.053032994 +0.86249995,0.7875,0.094494045,0.094494045 +0.86249995,0.78749996,0.06681746,0.1336348 +0.86249995,0.7875,0.1336348,0.0668174 +0.86249995,0.78749996,0.11905497,0.11905503 +0.8625,0.7875,0.08418465,0.1683693 +0.8625,0.7875,0.1683693,0.08418465 +0.86249995,0.8125,0.07499999,0.07500005 +0.86249995,0.8125,0.053033054,0.10606599 +0.86249995,0.8125,0.10606593,0.053033054 +0.86249995,0.8125,0.094494045,0.094494104 +0.86249995,0.8125,0.06681746,0.1336348 +0.86249995,0.8125,0.1336348,0.06681746 +0.86249995,0.8125,0.11905497,0.11905503 +0.8625,0.8125,0.08418465,0.1683693 +0.8625,0.8125,0.1683693,0.08418465 +0.86249995,0.8375,0.07499999,0.07499999 +0.86249995,0.8375,0.053033054,0.10606599 +0.86249995,0.8375,0.10606593,0.053033054 +0.86249995,0.8375,0.094494045,0.094494045 +0.86249995,0.8375,0.06681746,0.1336348 +0.86249995,0.8375,0.1336348,0.06681746 +0.86249995,0.8375,0.11905497,0.11905503 +0.8625,0.8375,0.08418465,0.1683693 +0.8625,0.8375,0.1683693,0.08418465 +0.86249995,0.86249995,0.07499999,0.07499999 +0.86249995,0.86249995,0.053033054,0.10606593 +0.86249995,0.86249995,0.10606593,0.053033054 +0.86249995,0.86249995,0.094494045,0.094494045 +0.86249995,0.86249995,0.06681746,0.1336348 +0.86249995,0.86249995,0.1336348,0.06681746 +0.86249995,0.86249995,0.11905497,0.11905497 +0.8625,0.8625,0.08418465,0.1683693 +0.8625,0.8625,0.1683693,0.08418465 +0.86249995,0.88750005,0.07499999,0.07499999 +0.86249995,0.88750005,0.053033054,0.10606593 +0.86249995,0.88750005,0.10606593,0.053033054 +0.86249995,0.88750005,0.094494045,0.094494045 +0.86249995,0.88750005,0.06681746,0.13363475 +0.86249995,0.88750005,0.1336348,0.06681746 +0.86249995,0.88750005,0.11905497,0.11905497 +0.8625,0.8875,0.08418465,0.1683693 +0.8625,0.8875,0.1683693,0.08418465 +0.86249995,0.9125,0.07499999,0.07499999 +0.86249995,0.9125,0.053033054,0.10606593 +0.86249995,0.9125,0.10606593,0.053033054 +0.86249995,0.9125,0.094494045,0.094494045 +0.86249995,0.9125,0.06681746,0.13363475 +0.86249995,0.9125,0.1336348,0.06681746 +0.86249995,0.9125,0.11905497,0.11905497 +0.8625,0.9125,0.08418465,0.1683693 +0.8625,0.9125,0.1683693,0.08418465 +0.86249995,0.9375,0.07499999,0.07500005 +0.86249995,0.9375,0.053033054,0.10606599 +0.86249995,0.9375,0.10606593,0.053033113 +0.86249995,0.9375,0.094494045,0.094494104 +0.86249995,0.9375,0.06681746,0.1336348 +0.86249995,0.9375,0.1336348,0.06681752 +0.86249995,0.9375,0.11905497,0.11905503 +0.8625,0.9375,0.08418465,0.1683693 +0.8625,0.9375,0.1683693,0.08418465 +0.86249995,0.9625,0.07499999,0.07499999 +0.86249995,0.9625,0.053033054,0.10606593 +0.86249995,0.9625,0.10606593,0.053033054 +0.86249995,0.9625,0.094494045,0.094494045 +0.86249995,0.9625,0.06681746,0.13363475 +0.86249995,0.9625,0.1336348,0.06681746 +0.86249995,0.9625,0.11905497,0.11905497 +0.8625,0.9625,0.08418465,0.1683693 +0.8625,0.9625,0.1683693,0.08418465 +0.86249995,0.98749995,0.07499999,0.07499999 +0.86249995,0.98749995,0.053033054,0.10606593 +0.86249995,0.98749995,0.10606593,0.053033054 +0.86249995,0.98749995,0.094494045,0.094494045 +0.86249995,0.98749995,0.06681746,0.13363475 +0.86249995,0.98749995,0.1336348,0.06681746 +0.86249995,0.98749995,0.11905497,0.11905497 +0.8625,0.98749995,0.08418465,0.16836923 +0.8625,0.98749995,0.1683693,0.08418459 +0.88750005,0.0125,0.07499999,0.075 +0.88750005,0.012499997,0.053033054,0.10606602 +0.88750005,0.012499999,0.10606593,0.05303301 +0.88750005,0.012499999,0.094494045,0.09449408 +0.88750005,0.012500001,0.06681746,0.1336348 +0.88750005,0.012499999,0.13363475,0.0668174 +0.88750005,0.012500001,0.11905497,0.11905508 +0.8875,0.012499999,0.08418465,0.1683693 +0.8875,0.012500002,0.1683693,0.084184654 +0.88750005,0.0375,0.07499999,0.075 +0.88750005,0.037499998,0.053033054,0.10606601 +0.88750005,0.0375,0.10606593,0.05303301 +0.88750005,0.0375,0.094494045,0.094494075 +0.88750005,0.0375,0.06681746,0.1336348 +0.88750005,0.0375,0.13363475,0.0668174 +0.88750005,0.0375,0.11905497,0.11905508 +0.8875,0.0375,0.08418465,0.16836931 +0.8875,0.0375,0.1683693,0.08418466 +0.88750005,0.0625,0.07499999,0.075 +0.88750005,0.0625,0.053033054,0.10606602 +0.88750005,0.0625,0.10606593,0.05303301 +0.88750005,0.0625,0.094494045,0.094494075 +0.88750005,0.0625,0.06681746,0.1336348 +0.88750005,0.0625,0.13363475,0.0668174 +0.88750005,0.0625,0.11905497,0.11905508 +0.8875,0.0625,0.08418465,0.16836932 +0.8875,0.0625,0.1683693,0.08418465 +0.88750005,0.0875,0.07499999,0.075 +0.88750005,0.08749999,0.053033054,0.10606601 +0.88750005,0.087500006,0.10606593,0.053033013 +0.88750005,0.087500006,0.094494045,0.09449408 +0.88750005,0.087500006,0.06681746,0.1336348 +0.88750005,0.0875,0.13363475,0.0668174 +0.88750005,0.0875,0.11905497,0.11905508 +0.8875,0.0875,0.08418465,0.16836931 +0.8875,0.087500006,0.1683693,0.084184654 +0.88750005,0.112500004,0.07499999,0.075 +0.88750005,0.1125,0.053033054,0.10606601 +0.88750005,0.112500004,0.10606593,0.05303301 +0.88750005,0.1125,0.094494045,0.094494075 +0.88750005,0.1125,0.06681746,0.1336348 +0.88750005,0.1125,0.13363475,0.0668174 +0.88750005,0.1125,0.11905497,0.119055085 +0.8875,0.112500004,0.08418465,0.16836931 +0.8875,0.1125,0.1683693,0.08418465 +0.88750005,0.1375,0.07499999,0.074999996 +0.88750005,0.1375,0.053033054,0.10606602 +0.88750005,0.1375,0.10606593,0.053033024 +0.88750005,0.1375,0.094494045,0.09449408 +0.88750005,0.1375,0.06681746,0.1336348 +0.88750005,0.1375,0.13363475,0.0668174 +0.88750005,0.13749999,0.11905497,0.11905508 +0.8875,0.1375,0.08418465,0.1683693 +0.8875,0.1375,0.1683693,0.084184654 +0.88750005,0.1625,0.07499999,0.075 +0.88750005,0.16250001,0.053033054,0.106066026 +0.88750005,0.1625,0.10606593,0.05303301 +0.88750005,0.1625,0.094494045,0.094494075 +0.88750005,0.1625,0.06681746,0.1336348 +0.88750005,0.1625,0.13363475,0.0668174 +0.88750005,0.1625,0.11905497,0.11905508 +0.8875,0.1625,0.08418465,0.1683693 +0.8875,0.1625,0.1683693,0.08418464 +0.88750005,0.1875,0.07499999,0.07499999 +0.88750005,0.1875,0.053033054,0.10606603 +0.88750005,0.1875,0.10606593,0.053033024 +0.88750005,0.1875,0.094494045,0.09449406 +0.88750005,0.1875,0.06681746,0.1336348 +0.88750005,0.1875,0.13363475,0.06681742 +0.88750005,0.1875,0.11905497,0.11905509 +0.8875,0.1875,0.08418465,0.16836931 +0.8875,0.1875,0.1683693,0.08418465 +0.88750005,0.2125,0.07499999,0.075 +0.88750005,0.2125,0.053033054,0.10606603 +0.88750005,0.2125,0.10606593,0.05303301 +0.88750005,0.21249999,0.094494045,0.094494075 +0.88750005,0.2125,0.06681746,0.1336348 +0.88750005,0.2125,0.13363475,0.0668174 +0.88750005,0.2125,0.11905497,0.11905509 +0.8875,0.2125,0.08418465,0.16836931 +0.8875,0.2125,0.1683693,0.08418465 +0.88750005,0.23750001,0.07499999,0.075 +0.88750005,0.2375,0.053033054,0.10606602 +0.88750005,0.2375,0.10606593,0.053033024 +0.88750005,0.2375,0.094494045,0.094494075 +0.88750005,0.23750001,0.06681746,0.13363482 +0.88750005,0.2375,0.13363475,0.06681743 +0.88750005,0.2375,0.11905497,0.11905506 +0.8875,0.2375,0.08418465,0.16836932 +0.8875,0.23750001,0.1683693,0.08418466 +0.88750005,0.2625,0.07499999,0.07500002 +0.88750005,0.2625,0.053033054,0.10606603 +0.88750005,0.2625,0.10606593,0.053033024 +0.88750005,0.2625,0.094494045,0.094494075 +0.88750005,0.2625,0.06681746,0.13363479 +0.88750005,0.2625,0.13363475,0.06681743 +0.88750005,0.2625,0.11905497,0.11905508 +0.8875,0.2625,0.08418465,0.1683693 +0.8875,0.2625,0.1683693,0.08418463 +0.88750005,0.2875,0.07499999,0.07499999 +0.88750005,0.2875,0.053033054,0.10606603 +0.88750005,0.28750002,0.10606593,0.053033024 +0.88750005,0.2875,0.094494045,0.094494045 +0.88750005,0.2875,0.06681746,0.1336348 +0.88750005,0.28750002,0.13363475,0.06681743 +0.88750005,0.2875,0.11905497,0.11905508 +0.8875,0.2875,0.08418465,0.1683693 +0.8875,0.2875,0.1683693,0.08418465 +0.88750005,0.3125,0.07499999,0.07499999 +0.88750005,0.3125,0.053033054,0.10606605 +0.88750005,0.3125,0.10606593,0.053032994 +0.88750005,0.3125,0.094494045,0.094494045 +0.88750005,0.3125,0.06681746,0.1336348 +0.88750005,0.3125,0.13363475,0.0668174 +0.88750005,0.3125,0.11905497,0.11905509 +0.8875,0.3125,0.08418465,0.1683693 +0.8875,0.3125,0.1683693,0.08418465 +0.88750005,0.3375,0.07499999,0.07499999 +0.88750005,0.3375,0.053033054,0.10606605 +0.88750005,0.33749998,0.10606593,0.053033024 +0.88750005,0.3375,0.094494045,0.094494045 +0.88750005,0.33750004,0.06681746,0.13363484 +0.88750005,0.33749998,0.13363475,0.06681743 +0.88750005,0.3375,0.11905497,0.11905509 +0.8875,0.3375,0.08418465,0.1683693 +0.8875,0.3375,0.1683693,0.08418465 +0.88750005,0.3625,0.07499999,0.07500002 +0.88750005,0.3625,0.053033054,0.10606602 +0.88750005,0.3625,0.10606593,0.053033024 +0.88750005,0.3625,0.094494045,0.094494075 +0.88750005,0.3625,0.06681746,0.1336348 +0.88750005,0.3625,0.13363475,0.06681743 +0.88750005,0.3625,0.11905497,0.11905506 +0.8875,0.3625,0.08418465,0.1683693 +0.8875,0.3625,0.1683693,0.08418465 +0.88750005,0.3875,0.07499999,0.07500002 +0.88750005,0.3875,0.053033054,0.10606602 +0.88750005,0.3875,0.10606593,0.053032994 +0.88750005,0.3875,0.094494045,0.094494075 +0.88750005,0.3875,0.06681746,0.13363484 +0.88750005,0.3875,0.13363475,0.0668174 +0.88750005,0.3875,0.11905497,0.11905506 +0.8875,0.3875,0.08418465,0.1683693 +0.8875,0.3875,0.1683693,0.08418465 +0.88750005,0.4125,0.07499999,0.07499999 +0.88750005,0.4125,0.053033054,0.10606605 +0.88750005,0.4125,0.10606593,0.053032994 +0.88750005,0.4125,0.094494045,0.094494045 +0.88750005,0.41250002,0.06681746,0.13363484 +0.88750005,0.4125,0.13363475,0.0668174 +0.88750005,0.4125,0.11905497,0.11905509 +0.8875,0.4125,0.08418465,0.1683693 +0.8875,0.4125,0.1683693,0.08418465 +0.88750005,0.4375,0.07499999,0.07499999 +0.88750005,0.4375,0.053033054,0.10606605 +0.88750005,0.4375,0.10606593,0.053032994 +0.88750005,0.4375,0.094494045,0.094494045 +0.88750005,0.4375,0.06681746,0.1336348 +0.88750005,0.4375,0.13363475,0.0668174 +0.88750005,0.4375,0.11905497,0.11905509 +0.8875,0.4375,0.08418465,0.1683693 +0.8875,0.4375,0.1683693,0.08418465 +0.88750005,0.4625,0.07499999,0.07499999 +0.88750005,0.4625,0.053033054,0.10606605 +0.88750005,0.46249998,0.10606593,0.053032964 +0.88750005,0.4625,0.094494045,0.094494045 +0.88750005,0.46250004,0.06681746,0.13363484 +0.88750005,0.46249998,0.13363475,0.06681737 +0.88750005,0.4625,0.11905497,0.11905509 +0.8875,0.46249998,0.08418465,0.16836926 +0.8875,0.46249998,0.1683693,0.08418462 +0.88750005,0.48749998,0.07499999,0.07499999 +0.88750005,0.4875,0.053033054,0.10606602 +0.88750005,0.4875,0.10606593,0.053032994 +0.88750005,0.48749998,0.094494045,0.094494045 +0.88750005,0.4875,0.06681746,0.13363484 +0.88750005,0.4875,0.13363475,0.0668174 +0.88750005,0.4875,0.11905497,0.11905506 +0.8875,0.4875,0.08418465,0.1683693 +0.8875,0.4875,0.1683693,0.08418465 +0.88750005,0.5125,0.07499999,0.07500002 +0.88750005,0.51250005,0.053033054,0.10606605 +0.88750005,0.5125,0.10606593,0.053032964 +0.88750005,0.5125,0.094494045,0.094494075 +0.88750005,0.51250005,0.06681746,0.13363487 +0.88750005,0.5125,0.13363475,0.06681737 +0.88750005,0.51250005,0.11905497,0.11905509 +0.8875,0.5125,0.08418465,0.1683693 +0.8875,0.5125,0.1683693,0.08418465 +0.88750005,0.5375,0.07499999,0.07499999 +0.88750005,0.5375,0.053033054,0.10606605 +0.88750005,0.5375,0.10606593,0.053032935 +0.88750005,0.5375,0.094494045,0.094494045 +0.88750005,0.5375,0.06681746,0.13363487 +0.88750005,0.5375,0.13363475,0.06681734 +0.88750005,0.5375,0.11905497,0.11905509 +0.8875,0.5375,0.08418465,0.16836932 +0.8875,0.5375,0.1683693,0.08418468 +0.88750005,0.5625,0.07499999,0.07500005 +0.88750005,0.5625,0.053033054,0.10606599 +0.88750005,0.5625,0.10606593,0.053032994 +0.88750005,0.5625,0.094494045,0.094494104 +0.88750005,0.5625,0.06681746,0.13363484 +0.88750005,0.5625,0.13363475,0.0668174 +0.88750005,0.5625,0.11905497,0.11905503 +0.8875,0.5625,0.08418465,0.1683693 +0.8875,0.5625,0.1683693,0.08418465 +0.88750005,0.5875,0.07499999,0.07499999 +0.88750005,0.5875,0.053033054,0.10606605 +0.88750005,0.5875,0.10606593,0.053032935 +0.88750005,0.5875,0.094494045,0.094494045 +0.88750005,0.5875,0.06681746,0.13363487 +0.88750005,0.5875,0.13363475,0.06681734 +0.88750005,0.5875,0.11905497,0.11905509 +0.8875,0.5875,0.08418465,0.1683693 +0.8875,0.5875,0.1683693,0.08418465 +0.88750005,0.61249995,0.07499999,0.07499999 +0.88750005,0.61249995,0.053033054,0.10606605 +0.88750005,0.6125,0.10606593,0.053032994 +0.88750005,0.61249995,0.094494045,0.094494045 +0.88750005,0.61249995,0.06681746,0.13363487 +0.88750005,0.6125,0.13363475,0.0668174 +0.88750005,0.61249995,0.11905497,0.11905509 +0.8875,0.6125,0.08418465,0.1683693 +0.8875,0.6125,0.1683693,0.08418465 +0.88750005,0.63750005,0.07499999,0.07499999 +0.88750005,0.63750005,0.053033054,0.10606605 +0.88750005,0.6375,0.10606593,0.053032994 +0.88750005,0.63750005,0.094494045,0.094494045 +0.88750005,0.63750005,0.06681746,0.13363487 +0.88750005,0.6375,0.13363475,0.0668174 +0.88750005,0.63750005,0.11905497,0.11905509 +0.8875,0.6375,0.08418465,0.1683693 +0.8875,0.6375,0.1683693,0.08418465 +0.88750005,0.6625,0.07499999,0.07499999 +0.88750005,0.6625,0.053033054,0.10606605 +0.88750005,0.6625,0.10606593,0.053032935 +0.88750005,0.6625,0.094494045,0.094494045 +0.88750005,0.6625,0.06681746,0.13363487 +0.88750005,0.6625,0.13363475,0.06681734 +0.88750005,0.6625,0.11905497,0.11905509 +0.8875,0.6625,0.08418465,0.1683693 +0.8875,0.6625,0.1683693,0.08418465 +0.88750005,0.6875,0.07499999,0.07500005 +0.88750005,0.6875,0.053033054,0.10606599 +0.88750005,0.6875,0.10606593,0.053032994 +0.88750005,0.6875,0.094494045,0.094494104 +0.88750005,0.6875,0.06681746,0.1336348 +0.88750005,0.6875,0.13363475,0.0668174 +0.88750005,0.6875,0.11905497,0.11905503 +0.8875,0.6875,0.08418465,0.1683693 +0.8875,0.6875,0.1683693,0.08418465 +0.88750005,0.7125,0.07499999,0.07499999 +0.88750005,0.7125,0.053033054,0.10606605 +0.88750005,0.7125,0.10606593,0.053032935 +0.88750005,0.7125,0.094494045,0.094494045 +0.88750005,0.7125,0.06681746,0.13363487 +0.88750005,0.7125,0.13363475,0.06681734 +0.88750005,0.7125,0.11905497,0.11905509 +0.8875,0.7125,0.08418465,0.1683693 +0.8875,0.7125,0.1683693,0.08418465 +0.88750005,0.73749995,0.07499999,0.07499999 +0.88750005,0.73749995,0.053033054,0.10606605 +0.88750005,0.7375,0.10606593,0.053032994 +0.88750005,0.73749995,0.094494045,0.094494045 +0.88750005,0.73749995,0.06681746,0.1336348 +0.88750005,0.7375,0.13363475,0.0668174 +0.88750005,0.73749995,0.11905497,0.11905509 +0.8875,0.7375,0.08418465,0.1683693 +0.8875,0.7375,0.1683693,0.08418465 +0.88750005,0.76250005,0.07499999,0.07499999 +0.88750005,0.7625,0.053033054,0.10606599 +0.88750005,0.7625,0.10606593,0.053032994 +0.88750005,0.76250005,0.094494045,0.094494045 +0.88750005,0.7625,0.06681746,0.1336348 +0.88750005,0.7625,0.13363475,0.0668174 +0.88750005,0.7625,0.11905497,0.11905503 +0.8875,0.7625,0.08418465,0.1683693 +0.8875,0.7625,0.1683693,0.08418465 +0.88750005,0.7875,0.07499999,0.07499999 +0.88750005,0.78749996,0.053033054,0.10606599 +0.88750005,0.7875,0.10606593,0.053032994 +0.88750005,0.7875,0.094494045,0.094494045 +0.88750005,0.78749996,0.06681746,0.1336348 +0.88750005,0.7875,0.13363475,0.0668174 +0.88750005,0.78749996,0.11905497,0.11905503 +0.8875,0.7875,0.08418465,0.1683693 +0.8875,0.7875,0.1683693,0.08418465 +0.88750005,0.8125,0.07499999,0.07500005 +0.88750005,0.8125,0.053033054,0.10606599 +0.88750005,0.8125,0.10606593,0.053033054 +0.88750005,0.8125,0.094494045,0.094494104 +0.88750005,0.8125,0.06681746,0.1336348 +0.88750005,0.8125,0.13363475,0.06681746 +0.88750005,0.8125,0.11905497,0.11905503 +0.8875,0.8125,0.08418465,0.1683693 +0.8875,0.8125,0.1683693,0.08418465 +0.88750005,0.8375,0.07499999,0.07499999 +0.88750005,0.8375,0.053033054,0.10606599 +0.88750005,0.8375,0.10606593,0.053033054 +0.88750005,0.8375,0.094494045,0.094494045 +0.88750005,0.8375,0.06681746,0.1336348 +0.88750005,0.8375,0.13363475,0.06681746 +0.88750005,0.8375,0.11905497,0.11905503 +0.8875,0.8375,0.08418465,0.1683693 +0.8875,0.8375,0.1683693,0.08418465 +0.88750005,0.86249995,0.07499999,0.07499999 +0.88750005,0.86249995,0.053033054,0.10606593 +0.88750005,0.86249995,0.10606593,0.053033054 +0.88750005,0.86249995,0.094494045,0.094494045 +0.88750005,0.86249995,0.06681746,0.1336348 +0.88750005,0.86249995,0.13363475,0.06681746 +0.88750005,0.86249995,0.11905497,0.11905497 +0.8875,0.8625,0.08418465,0.1683693 +0.8875,0.8625,0.1683693,0.08418465 +0.88750005,0.88750005,0.07499999,0.07499999 +0.88750005,0.88750005,0.053033054,0.10606593 +0.88750005,0.88750005,0.10606593,0.053033054 +0.88750005,0.88750005,0.094494045,0.094494045 +0.88750005,0.88750005,0.06681746,0.13363475 +0.88750005,0.88750005,0.13363475,0.06681746 +0.88750005,0.88750005,0.11905497,0.11905497 +0.8875,0.8875,0.08418465,0.1683693 +0.8875,0.8875,0.1683693,0.08418465 +0.88750005,0.9125,0.07499999,0.07499999 +0.88750005,0.9125,0.053033054,0.10606593 +0.88750005,0.9125,0.10606593,0.053033054 +0.88750005,0.9125,0.094494045,0.094494045 +0.88750005,0.9125,0.06681746,0.13363475 +0.88750005,0.9125,0.13363475,0.06681746 +0.88750005,0.9125,0.11905497,0.11905497 +0.8875,0.9125,0.08418465,0.1683693 +0.8875,0.9125,0.1683693,0.08418465 +0.88750005,0.9375,0.07499999,0.07500005 +0.88750005,0.9375,0.053033054,0.10606599 +0.88750005,0.9375,0.10606593,0.053033113 +0.88750005,0.9375,0.094494045,0.094494104 +0.88750005,0.9375,0.06681746,0.1336348 +0.88750005,0.9375,0.13363475,0.06681752 +0.88750005,0.9375,0.11905497,0.11905503 +0.8875,0.9375,0.08418465,0.1683693 +0.8875,0.9375,0.1683693,0.08418465 +0.88750005,0.9625,0.07499999,0.07499999 +0.88750005,0.9625,0.053033054,0.10606593 +0.88750005,0.9625,0.10606593,0.053033054 +0.88750005,0.9625,0.094494045,0.094494045 +0.88750005,0.9625,0.06681746,0.13363475 +0.88750005,0.9625,0.13363475,0.06681746 +0.88750005,0.9625,0.11905497,0.11905497 +0.8875,0.9625,0.08418465,0.1683693 +0.8875,0.9625,0.1683693,0.08418465 +0.88750005,0.98749995,0.07499999,0.07499999 +0.88750005,0.98749995,0.053033054,0.10606593 +0.88750005,0.98749995,0.10606593,0.053033054 +0.88750005,0.98749995,0.094494045,0.094494045 +0.88750005,0.98749995,0.06681746,0.13363475 +0.88750005,0.98749995,0.13363475,0.06681746 +0.88750005,0.98749995,0.11905497,0.11905497 +0.8875,0.98749995,0.08418465,0.16836923 +0.8875,0.98749995,0.1683693,0.08418459 +0.9125,0.0125,0.07499999,0.075 +0.9125,0.012499997,0.053033054,0.10606602 +0.9125,0.012499999,0.10606593,0.05303301 +0.9125,0.012499999,0.094494045,0.09449408 +0.9125,0.012500001,0.06681746,0.1336348 +0.9125,0.012499999,0.13363475,0.0668174 +0.9125,0.012500001,0.11905497,0.11905508 +0.9125,0.012499999,0.08418465,0.1683693 +0.9125,0.012500002,0.1683693,0.084184654 +0.9125,0.0375,0.07499999,0.075 +0.9125,0.037499998,0.053033054,0.10606601 +0.9125,0.0375,0.10606593,0.05303301 +0.9125,0.0375,0.094494045,0.094494075 +0.9125,0.0375,0.06681746,0.1336348 +0.9125,0.0375,0.13363475,0.0668174 +0.9125,0.0375,0.11905497,0.11905508 +0.9125,0.0375,0.08418465,0.16836931 +0.9125,0.0375,0.1683693,0.08418466 +0.9125,0.0625,0.07499999,0.075 +0.9125,0.0625,0.053033054,0.10606602 +0.9125,0.0625,0.10606593,0.05303301 +0.9125,0.0625,0.094494045,0.094494075 +0.9125,0.0625,0.06681746,0.1336348 +0.9125,0.0625,0.13363475,0.0668174 +0.9125,0.0625,0.11905497,0.11905508 +0.9125,0.0625,0.08418465,0.16836932 +0.9125,0.0625,0.1683693,0.08418465 +0.9125,0.0875,0.07499999,0.075 +0.9125,0.08749999,0.053033054,0.10606601 +0.9125,0.087500006,0.10606593,0.053033013 +0.9125,0.087500006,0.094494045,0.09449408 +0.9125,0.087500006,0.06681746,0.1336348 +0.9125,0.0875,0.13363475,0.0668174 +0.9125,0.0875,0.11905497,0.11905508 +0.9125,0.0875,0.08418465,0.16836931 +0.9125,0.087500006,0.1683693,0.084184654 +0.9125,0.112500004,0.07499999,0.075 +0.9125,0.1125,0.053033054,0.10606601 +0.9125,0.112500004,0.10606593,0.05303301 +0.9125,0.1125,0.094494045,0.094494075 +0.9125,0.1125,0.06681746,0.1336348 +0.9125,0.1125,0.13363475,0.0668174 +0.9125,0.1125,0.11905497,0.119055085 +0.9125,0.112500004,0.08418465,0.16836931 +0.9125,0.1125,0.1683693,0.08418465 +0.9125,0.1375,0.07499999,0.074999996 +0.9125,0.1375,0.053033054,0.10606602 +0.9125,0.1375,0.10606593,0.053033024 +0.9125,0.1375,0.094494045,0.09449408 +0.9125,0.1375,0.06681746,0.1336348 +0.9125,0.1375,0.13363475,0.0668174 +0.9125,0.13749999,0.11905497,0.11905508 +0.9125,0.1375,0.08418465,0.1683693 +0.9125,0.1375,0.1683693,0.084184654 +0.9125,0.1625,0.07499999,0.075 +0.9125,0.16250001,0.053033054,0.106066026 +0.9125,0.1625,0.10606593,0.05303301 +0.9125,0.1625,0.094494045,0.094494075 +0.9125,0.1625,0.06681746,0.1336348 +0.9125,0.1625,0.13363475,0.0668174 +0.9125,0.1625,0.11905497,0.11905508 +0.9125,0.1625,0.08418465,0.1683693 +0.9125,0.1625,0.1683693,0.08418464 +0.9125,0.1875,0.07499999,0.07499999 +0.9125,0.1875,0.053033054,0.10606603 +0.9125,0.1875,0.10606593,0.053033024 +0.9125,0.1875,0.094494045,0.09449406 +0.9125,0.1875,0.06681746,0.1336348 +0.9125,0.1875,0.13363475,0.06681742 +0.9125,0.1875,0.11905497,0.11905509 +0.9125,0.1875,0.08418465,0.16836931 +0.9125,0.1875,0.1683693,0.08418465 +0.9125,0.2125,0.07499999,0.075 +0.9125,0.2125,0.053033054,0.10606603 +0.9125,0.2125,0.10606593,0.05303301 +0.9125,0.21249999,0.094494045,0.094494075 +0.9125,0.2125,0.06681746,0.1336348 +0.9125,0.2125,0.13363475,0.0668174 +0.9125,0.2125,0.11905497,0.11905509 +0.9125,0.2125,0.08418465,0.16836931 +0.9125,0.2125,0.1683693,0.08418465 +0.9125,0.23750001,0.07499999,0.075 +0.9125,0.2375,0.053033054,0.10606602 +0.9125,0.2375,0.10606593,0.053033024 +0.9125,0.2375,0.094494045,0.094494075 +0.9125,0.23750001,0.06681746,0.13363482 +0.9125,0.2375,0.13363475,0.06681743 +0.9125,0.2375,0.11905497,0.11905506 +0.9125,0.2375,0.08418465,0.16836932 +0.9125,0.23750001,0.1683693,0.08418466 +0.9125,0.2625,0.07499999,0.07500002 +0.9125,0.2625,0.053033054,0.10606603 +0.9125,0.2625,0.10606593,0.053033024 +0.9125,0.2625,0.094494045,0.094494075 +0.9125,0.2625,0.06681746,0.13363479 +0.9125,0.2625,0.13363475,0.06681743 +0.9125,0.2625,0.11905497,0.11905508 +0.9125,0.2625,0.08418465,0.1683693 +0.9125,0.2625,0.1683693,0.08418463 +0.9125,0.2875,0.07499999,0.07499999 +0.9125,0.2875,0.053033054,0.10606603 +0.9125,0.28750002,0.10606593,0.053033024 +0.9125,0.2875,0.094494045,0.094494045 +0.9125,0.2875,0.06681746,0.1336348 +0.9125,0.28750002,0.13363475,0.06681743 +0.9125,0.2875,0.11905497,0.11905508 +0.9125,0.2875,0.08418465,0.1683693 +0.9125,0.2875,0.1683693,0.08418465 +0.9125,0.3125,0.07499999,0.07499999 +0.9125,0.3125,0.053033054,0.10606605 +0.9125,0.3125,0.10606593,0.053032994 +0.9125,0.3125,0.094494045,0.094494045 +0.9125,0.3125,0.06681746,0.1336348 +0.9125,0.3125,0.13363475,0.0668174 +0.9125,0.3125,0.11905497,0.11905509 +0.9125,0.3125,0.08418465,0.1683693 +0.9125,0.3125,0.1683693,0.08418465 +0.9125,0.3375,0.07499999,0.07499999 +0.9125,0.3375,0.053033054,0.10606605 +0.9125,0.33749998,0.10606593,0.053033024 +0.9125,0.3375,0.094494045,0.094494045 +0.9125,0.33750004,0.06681746,0.13363484 +0.9125,0.33749998,0.13363475,0.06681743 +0.9125,0.3375,0.11905497,0.11905509 +0.9125,0.3375,0.08418465,0.1683693 +0.9125,0.3375,0.1683693,0.08418465 +0.9125,0.3625,0.07499999,0.07500002 +0.9125,0.3625,0.053033054,0.10606602 +0.9125,0.3625,0.10606593,0.053033024 +0.9125,0.3625,0.094494045,0.094494075 +0.9125,0.3625,0.06681746,0.1336348 +0.9125,0.3625,0.13363475,0.06681743 +0.9125,0.3625,0.11905497,0.11905506 +0.9125,0.3625,0.08418465,0.1683693 +0.9125,0.3625,0.1683693,0.08418465 +0.9125,0.3875,0.07499999,0.07500002 +0.9125,0.3875,0.053033054,0.10606602 +0.9125,0.3875,0.10606593,0.053032994 +0.9125,0.3875,0.094494045,0.094494075 +0.9125,0.3875,0.06681746,0.13363484 +0.9125,0.3875,0.13363475,0.0668174 +0.9125,0.3875,0.11905497,0.11905506 +0.9125,0.3875,0.08418465,0.1683693 +0.9125,0.3875,0.1683693,0.08418465 +0.9125,0.4125,0.07499999,0.07499999 +0.9125,0.4125,0.053033054,0.10606605 +0.9125,0.4125,0.10606593,0.053032994 +0.9125,0.4125,0.094494045,0.094494045 +0.9125,0.41250002,0.06681746,0.13363484 +0.9125,0.4125,0.13363475,0.0668174 +0.9125,0.4125,0.11905497,0.11905509 +0.9125,0.4125,0.08418465,0.1683693 +0.9125,0.4125,0.1683693,0.08418465 +0.9125,0.4375,0.07499999,0.07499999 +0.9125,0.4375,0.053033054,0.10606605 +0.9125,0.4375,0.10606593,0.053032994 +0.9125,0.4375,0.094494045,0.094494045 +0.9125,0.4375,0.06681746,0.1336348 +0.9125,0.4375,0.13363475,0.0668174 +0.9125,0.4375,0.11905497,0.11905509 +0.9125,0.4375,0.08418465,0.1683693 +0.9125,0.4375,0.1683693,0.08418465 +0.9125,0.4625,0.07499999,0.07499999 +0.9125,0.4625,0.053033054,0.10606605 +0.9125,0.46249998,0.10606593,0.053032964 +0.9125,0.4625,0.094494045,0.094494045 +0.9125,0.46250004,0.06681746,0.13363484 +0.9125,0.46249998,0.13363475,0.06681737 +0.9125,0.4625,0.11905497,0.11905509 +0.9125,0.46249998,0.08418465,0.16836926 +0.9125,0.46249998,0.1683693,0.08418462 +0.9125,0.48749998,0.07499999,0.07499999 +0.9125,0.4875,0.053033054,0.10606602 +0.9125,0.4875,0.10606593,0.053032994 +0.9125,0.48749998,0.094494045,0.094494045 +0.9125,0.4875,0.06681746,0.13363484 +0.9125,0.4875,0.13363475,0.0668174 +0.9125,0.4875,0.11905497,0.11905506 +0.9125,0.4875,0.08418465,0.1683693 +0.9125,0.4875,0.1683693,0.08418465 +0.9125,0.5125,0.07499999,0.07500002 +0.9125,0.51250005,0.053033054,0.10606605 +0.9125,0.5125,0.10606593,0.053032964 +0.9125,0.5125,0.094494045,0.094494075 +0.9125,0.51250005,0.06681746,0.13363487 +0.9125,0.5125,0.13363475,0.06681737 +0.9125,0.51250005,0.11905497,0.11905509 +0.9125,0.5125,0.08418465,0.1683693 +0.9125,0.5125,0.1683693,0.08418465 +0.9125,0.5375,0.07499999,0.07499999 +0.9125,0.5375,0.053033054,0.10606605 +0.9125,0.5375,0.10606593,0.053032935 +0.9125,0.5375,0.094494045,0.094494045 +0.9125,0.5375,0.06681746,0.13363487 +0.9125,0.5375,0.13363475,0.06681734 +0.9125,0.5375,0.11905497,0.11905509 +0.9125,0.5375,0.08418465,0.16836932 +0.9125,0.5375,0.1683693,0.08418468 +0.9125,0.5625,0.07499999,0.07500005 +0.9125,0.5625,0.053033054,0.10606599 +0.9125,0.5625,0.10606593,0.053032994 +0.9125,0.5625,0.094494045,0.094494104 +0.9125,0.5625,0.06681746,0.13363484 +0.9125,0.5625,0.13363475,0.0668174 +0.9125,0.5625,0.11905497,0.11905503 +0.9125,0.5625,0.08418465,0.1683693 +0.9125,0.5625,0.1683693,0.08418465 +0.9125,0.5875,0.07499999,0.07499999 +0.9125,0.5875,0.053033054,0.10606605 +0.9125,0.5875,0.10606593,0.053032935 +0.9125,0.5875,0.094494045,0.094494045 +0.9125,0.5875,0.06681746,0.13363487 +0.9125,0.5875,0.13363475,0.06681734 +0.9125,0.5875,0.11905497,0.11905509 +0.9125,0.5875,0.08418465,0.1683693 +0.9125,0.5875,0.1683693,0.08418465 +0.9125,0.61249995,0.07499999,0.07499999 +0.9125,0.61249995,0.053033054,0.10606605 +0.9125,0.6125,0.10606593,0.053032994 +0.9125,0.61249995,0.094494045,0.094494045 +0.9125,0.61249995,0.06681746,0.13363487 +0.9125,0.6125,0.13363475,0.0668174 +0.9125,0.61249995,0.11905497,0.11905509 +0.9125,0.6125,0.08418465,0.1683693 +0.9125,0.6125,0.1683693,0.08418465 +0.9125,0.63750005,0.07499999,0.07499999 +0.9125,0.63750005,0.053033054,0.10606605 +0.9125,0.6375,0.10606593,0.053032994 +0.9125,0.63750005,0.094494045,0.094494045 +0.9125,0.63750005,0.06681746,0.13363487 +0.9125,0.6375,0.13363475,0.0668174 +0.9125,0.63750005,0.11905497,0.11905509 +0.9125,0.6375,0.08418465,0.1683693 +0.9125,0.6375,0.1683693,0.08418465 +0.9125,0.6625,0.07499999,0.07499999 +0.9125,0.6625,0.053033054,0.10606605 +0.9125,0.6625,0.10606593,0.053032935 +0.9125,0.6625,0.094494045,0.094494045 +0.9125,0.6625,0.06681746,0.13363487 +0.9125,0.6625,0.13363475,0.06681734 +0.9125,0.6625,0.11905497,0.11905509 +0.9125,0.6625,0.08418465,0.1683693 +0.9125,0.6625,0.1683693,0.08418465 +0.9125,0.6875,0.07499999,0.07500005 +0.9125,0.6875,0.053033054,0.10606599 +0.9125,0.6875,0.10606593,0.053032994 +0.9125,0.6875,0.094494045,0.094494104 +0.9125,0.6875,0.06681746,0.1336348 +0.9125,0.6875,0.13363475,0.0668174 +0.9125,0.6875,0.11905497,0.11905503 +0.9125,0.6875,0.08418465,0.1683693 +0.9125,0.6875,0.1683693,0.08418465 +0.9125,0.7125,0.07499999,0.07499999 +0.9125,0.7125,0.053033054,0.10606605 +0.9125,0.7125,0.10606593,0.053032935 +0.9125,0.7125,0.094494045,0.094494045 +0.9125,0.7125,0.06681746,0.13363487 +0.9125,0.7125,0.13363475,0.06681734 +0.9125,0.7125,0.11905497,0.11905509 +0.9125,0.7125,0.08418465,0.1683693 +0.9125,0.7125,0.1683693,0.08418465 +0.9125,0.73749995,0.07499999,0.07499999 +0.9125,0.73749995,0.053033054,0.10606605 +0.9125,0.7375,0.10606593,0.053032994 +0.9125,0.73749995,0.094494045,0.094494045 +0.9125,0.73749995,0.06681746,0.1336348 +0.9125,0.7375,0.13363475,0.0668174 +0.9125,0.73749995,0.11905497,0.11905509 +0.9125,0.7375,0.08418465,0.1683693 +0.9125,0.7375,0.1683693,0.08418465 +0.9125,0.76250005,0.07499999,0.07499999 +0.9125,0.7625,0.053033054,0.10606599 +0.9125,0.7625,0.10606593,0.053032994 +0.9125,0.76250005,0.094494045,0.094494045 +0.9125,0.7625,0.06681746,0.1336348 +0.9125,0.7625,0.13363475,0.0668174 +0.9125,0.7625,0.11905497,0.11905503 +0.9125,0.7625,0.08418465,0.1683693 +0.9125,0.7625,0.1683693,0.08418465 +0.9125,0.7875,0.07499999,0.07499999 +0.9125,0.78749996,0.053033054,0.10606599 +0.9125,0.7875,0.10606593,0.053032994 +0.9125,0.7875,0.094494045,0.094494045 +0.9125,0.78749996,0.06681746,0.1336348 +0.9125,0.7875,0.13363475,0.0668174 +0.9125,0.78749996,0.11905497,0.11905503 +0.9125,0.7875,0.08418465,0.1683693 +0.9125,0.7875,0.1683693,0.08418465 +0.9125,0.8125,0.07499999,0.07500005 +0.9125,0.8125,0.053033054,0.10606599 +0.9125,0.8125,0.10606593,0.053033054 +0.9125,0.8125,0.094494045,0.094494104 +0.9125,0.8125,0.06681746,0.1336348 +0.9125,0.8125,0.13363475,0.06681746 +0.9125,0.8125,0.11905497,0.11905503 +0.9125,0.8125,0.08418465,0.1683693 +0.9125,0.8125,0.1683693,0.08418465 +0.9125,0.8375,0.07499999,0.07499999 +0.9125,0.8375,0.053033054,0.10606599 +0.9125,0.8375,0.10606593,0.053033054 +0.9125,0.8375,0.094494045,0.094494045 +0.9125,0.8375,0.06681746,0.1336348 +0.9125,0.8375,0.13363475,0.06681746 +0.9125,0.8375,0.11905497,0.11905503 +0.9125,0.8375,0.08418465,0.1683693 +0.9125,0.8375,0.1683693,0.08418465 +0.9125,0.86249995,0.07499999,0.07499999 +0.9125,0.86249995,0.053033054,0.10606593 +0.9125,0.86249995,0.10606593,0.053033054 +0.9125,0.86249995,0.094494045,0.094494045 +0.9125,0.86249995,0.06681746,0.1336348 +0.9125,0.86249995,0.13363475,0.06681746 +0.9125,0.86249995,0.11905497,0.11905497 +0.9125,0.8625,0.08418465,0.1683693 +0.9125,0.8625,0.1683693,0.08418465 +0.9125,0.88750005,0.07499999,0.07499999 +0.9125,0.88750005,0.053033054,0.10606593 +0.9125,0.88750005,0.10606593,0.053033054 +0.9125,0.88750005,0.094494045,0.094494045 +0.9125,0.88750005,0.06681746,0.13363475 +0.9125,0.88750005,0.13363475,0.06681746 +0.9125,0.88750005,0.11905497,0.11905497 +0.9125,0.8875,0.08418465,0.1683693 +0.9125,0.8875,0.1683693,0.08418465 +0.9125,0.9125,0.07499999,0.07499999 +0.9125,0.9125,0.053033054,0.10606593 +0.9125,0.9125,0.10606593,0.053033054 +0.9125,0.9125,0.094494045,0.094494045 +0.9125,0.9125,0.06681746,0.13363475 +0.9125,0.9125,0.13363475,0.06681746 +0.9125,0.9125,0.11905497,0.11905497 +0.9125,0.9125,0.08418465,0.1683693 +0.9125,0.9125,0.1683693,0.08418465 +0.9125,0.9375,0.07499999,0.07500005 +0.9125,0.9375,0.053033054,0.10606599 +0.9125,0.9375,0.10606593,0.053033113 +0.9125,0.9375,0.094494045,0.094494104 +0.9125,0.9375,0.06681746,0.1336348 +0.9125,0.9375,0.13363475,0.06681752 +0.9125,0.9375,0.11905497,0.11905503 +0.9125,0.9375,0.08418465,0.1683693 +0.9125,0.9375,0.1683693,0.08418465 +0.9125,0.9625,0.07499999,0.07499999 +0.9125,0.9625,0.053033054,0.10606593 +0.9125,0.9625,0.10606593,0.053033054 +0.9125,0.9625,0.094494045,0.094494045 +0.9125,0.9625,0.06681746,0.13363475 +0.9125,0.9625,0.13363475,0.06681746 +0.9125,0.9625,0.11905497,0.11905497 +0.9125,0.9625,0.08418465,0.1683693 +0.9125,0.9625,0.1683693,0.08418465 +0.9125,0.98749995,0.07499999,0.07499999 +0.9125,0.98749995,0.053033054,0.10606593 +0.9125,0.98749995,0.10606593,0.053033054 +0.9125,0.98749995,0.094494045,0.094494045 +0.9125,0.98749995,0.06681746,0.13363475 +0.9125,0.98749995,0.13363475,0.06681746 +0.9125,0.98749995,0.11905497,0.11905497 +0.9125,0.98749995,0.08418465,0.16836923 +0.9125,0.98749995,0.1683693,0.08418459 +0.9375,0.0125,0.07500005,0.075 +0.9375,0.012499997,0.053033113,0.10606602 +0.9375,0.012499999,0.10606599,0.05303301 +0.9375,0.012499999,0.094494104,0.09449408 +0.9375,0.012500001,0.06681752,0.1336348 +0.9375,0.012499999,0.1336348,0.0668174 +0.9375,0.012500001,0.11905503,0.11905508 +0.9375,0.012499999,0.08418465,0.1683693 +0.9375,0.012500002,0.1683693,0.084184654 +0.9375,0.0375,0.07500005,0.075 +0.9375,0.037499998,0.053033113,0.10606601 +0.9375,0.0375,0.10606599,0.05303301 +0.9375,0.0375,0.094494104,0.094494075 +0.9375,0.0375,0.06681752,0.1336348 +0.9375,0.0375,0.1336348,0.0668174 +0.9375,0.0375,0.11905503,0.11905508 +0.9375,0.0375,0.08418465,0.16836931 +0.9375,0.0375,0.1683693,0.08418466 +0.9375,0.0625,0.07500005,0.075 +0.9375,0.0625,0.053033113,0.10606602 +0.9375,0.0625,0.10606599,0.05303301 +0.9375,0.0625,0.094494104,0.094494075 +0.9375,0.0625,0.06681752,0.1336348 +0.9375,0.0625,0.1336348,0.0668174 +0.9375,0.0625,0.11905503,0.11905508 +0.9375,0.0625,0.08418465,0.16836932 +0.9375,0.0625,0.1683693,0.08418465 +0.9375,0.0875,0.07500005,0.075 +0.9375,0.08749999,0.053033113,0.10606601 +0.9375,0.087500006,0.10606599,0.053033013 +0.9375,0.087500006,0.094494104,0.09449408 +0.9375,0.087500006,0.06681752,0.1336348 +0.9375,0.0875,0.1336348,0.0668174 +0.9375,0.0875,0.11905503,0.11905508 +0.9375,0.0875,0.08418465,0.16836931 +0.9375,0.087500006,0.1683693,0.084184654 +0.9375,0.112500004,0.07500005,0.075 +0.9375,0.1125,0.053033113,0.10606601 +0.9375,0.112500004,0.10606599,0.05303301 +0.9375,0.1125,0.094494104,0.094494075 +0.9375,0.1125,0.06681752,0.1336348 +0.9375,0.1125,0.1336348,0.0668174 +0.9375,0.1125,0.11905503,0.119055085 +0.9375,0.112500004,0.08418465,0.16836931 +0.9375,0.1125,0.1683693,0.08418465 +0.9375,0.1375,0.07500005,0.074999996 +0.9375,0.1375,0.053033113,0.10606602 +0.9375,0.1375,0.10606599,0.053033024 +0.9375,0.1375,0.094494104,0.09449408 +0.9375,0.1375,0.06681752,0.1336348 +0.9375,0.1375,0.1336348,0.0668174 +0.9375,0.13749999,0.11905503,0.11905508 +0.9375,0.1375,0.08418465,0.1683693 +0.9375,0.1375,0.1683693,0.084184654 +0.9375,0.1625,0.07500005,0.075 +0.9375,0.16250001,0.053033113,0.106066026 +0.9375,0.1625,0.10606599,0.05303301 +0.9375,0.1625,0.094494104,0.094494075 +0.9375,0.1625,0.06681752,0.1336348 +0.9375,0.1625,0.1336348,0.0668174 +0.9375,0.1625,0.11905503,0.11905508 +0.9375,0.1625,0.08418465,0.1683693 +0.9375,0.1625,0.1683693,0.08418464 +0.9375,0.1875,0.07500005,0.07499999 +0.9375,0.1875,0.053033113,0.10606603 +0.9375,0.1875,0.10606599,0.053033024 +0.9375,0.1875,0.094494104,0.09449406 +0.9375,0.1875,0.06681752,0.1336348 +0.9375,0.1875,0.1336348,0.06681742 +0.9375,0.1875,0.11905503,0.11905509 +0.9375,0.1875,0.08418465,0.16836931 +0.9375,0.1875,0.1683693,0.08418465 +0.9375,0.2125,0.07500005,0.075 +0.9375,0.2125,0.053033113,0.10606603 +0.9375,0.2125,0.10606599,0.05303301 +0.9375,0.21249999,0.094494104,0.094494075 +0.9375,0.2125,0.06681752,0.1336348 +0.9375,0.2125,0.1336348,0.0668174 +0.9375,0.2125,0.11905503,0.11905509 +0.9375,0.2125,0.08418465,0.16836931 +0.9375,0.2125,0.1683693,0.08418465 +0.9375,0.23750001,0.07500005,0.075 +0.9375,0.2375,0.053033113,0.10606602 +0.9375,0.2375,0.10606599,0.053033024 +0.9375,0.2375,0.094494104,0.094494075 +0.9375,0.23750001,0.06681752,0.13363482 +0.9375,0.2375,0.1336348,0.06681743 +0.9375,0.2375,0.11905503,0.11905506 +0.9375,0.2375,0.08418465,0.16836932 +0.9375,0.23750001,0.1683693,0.08418466 +0.9375,0.2625,0.07500005,0.07500002 +0.9375,0.2625,0.053033113,0.10606603 +0.9375,0.2625,0.10606599,0.053033024 +0.9375,0.2625,0.094494104,0.094494075 +0.9375,0.2625,0.06681752,0.13363479 +0.9375,0.2625,0.1336348,0.06681743 +0.9375,0.2625,0.11905503,0.11905508 +0.9375,0.2625,0.08418465,0.1683693 +0.9375,0.2625,0.1683693,0.08418463 +0.9375,0.2875,0.07500005,0.07499999 +0.9375,0.2875,0.053033113,0.10606603 +0.9375,0.28750002,0.10606599,0.053033024 +0.9375,0.2875,0.094494104,0.094494045 +0.9375,0.2875,0.06681752,0.1336348 +0.9375,0.28750002,0.1336348,0.06681743 +0.9375,0.2875,0.11905503,0.11905508 +0.9375,0.2875,0.08418465,0.1683693 +0.9375,0.2875,0.1683693,0.08418465 +0.9375,0.3125,0.07500005,0.07499999 +0.9375,0.3125,0.053033113,0.10606605 +0.9375,0.3125,0.10606599,0.053032994 +0.9375,0.3125,0.094494104,0.094494045 +0.9375,0.3125,0.06681752,0.1336348 +0.9375,0.3125,0.1336348,0.0668174 +0.9375,0.3125,0.11905503,0.11905509 +0.9375,0.3125,0.08418465,0.1683693 +0.9375,0.3125,0.1683693,0.08418465 +0.9375,0.3375,0.07500005,0.07499999 +0.9375,0.3375,0.053033113,0.10606605 +0.9375,0.33749998,0.10606599,0.053033024 +0.9375,0.3375,0.094494104,0.094494045 +0.9375,0.33750004,0.06681752,0.13363484 +0.9375,0.33749998,0.1336348,0.06681743 +0.9375,0.3375,0.11905503,0.11905509 +0.9375,0.3375,0.08418465,0.1683693 +0.9375,0.3375,0.1683693,0.08418465 +0.9375,0.3625,0.07500005,0.07500002 +0.9375,0.3625,0.053033113,0.10606602 +0.9375,0.3625,0.10606599,0.053033024 +0.9375,0.3625,0.094494104,0.094494075 +0.9375,0.3625,0.06681752,0.1336348 +0.9375,0.3625,0.1336348,0.06681743 +0.9375,0.3625,0.11905503,0.11905506 +0.9375,0.3625,0.08418465,0.1683693 +0.9375,0.3625,0.1683693,0.08418465 +0.9375,0.3875,0.07500005,0.07500002 +0.9375,0.3875,0.053033113,0.10606602 +0.9375,0.3875,0.10606599,0.053032994 +0.9375,0.3875,0.094494104,0.094494075 +0.9375,0.3875,0.06681752,0.13363484 +0.9375,0.3875,0.1336348,0.0668174 +0.9375,0.3875,0.11905503,0.11905506 +0.9375,0.3875,0.08418465,0.1683693 +0.9375,0.3875,0.1683693,0.08418465 +0.9375,0.4125,0.07500005,0.07499999 +0.9375,0.4125,0.053033113,0.10606605 +0.9375,0.4125,0.10606599,0.053032994 +0.9375,0.4125,0.094494104,0.094494045 +0.9375,0.41250002,0.06681752,0.13363484 +0.9375,0.4125,0.1336348,0.0668174 +0.9375,0.4125,0.11905503,0.11905509 +0.9375,0.4125,0.08418465,0.1683693 +0.9375,0.4125,0.1683693,0.08418465 +0.9375,0.4375,0.07500005,0.07499999 +0.9375,0.4375,0.053033113,0.10606605 +0.9375,0.4375,0.10606599,0.053032994 +0.9375,0.4375,0.094494104,0.094494045 +0.9375,0.4375,0.06681752,0.1336348 +0.9375,0.4375,0.1336348,0.0668174 +0.9375,0.4375,0.11905503,0.11905509 +0.9375,0.4375,0.08418465,0.1683693 +0.9375,0.4375,0.1683693,0.08418465 +0.9375,0.4625,0.07500005,0.07499999 +0.9375,0.4625,0.053033113,0.10606605 +0.9375,0.46249998,0.10606599,0.053032964 +0.9375,0.4625,0.094494104,0.094494045 +0.9375,0.46250004,0.06681752,0.13363484 +0.9375,0.46249998,0.1336348,0.06681737 +0.9375,0.4625,0.11905503,0.11905509 +0.9375,0.46249998,0.08418465,0.16836926 +0.9375,0.46249998,0.1683693,0.08418462 +0.9375,0.48749998,0.07500005,0.07499999 +0.9375,0.4875,0.053033113,0.10606602 +0.9375,0.4875,0.10606599,0.053032994 +0.9375,0.48749998,0.094494104,0.094494045 +0.9375,0.4875,0.06681752,0.13363484 +0.9375,0.4875,0.1336348,0.0668174 +0.9375,0.4875,0.11905503,0.11905506 +0.9375,0.4875,0.08418465,0.1683693 +0.9375,0.4875,0.1683693,0.08418465 +0.9375,0.5125,0.07500005,0.07500002 +0.9375,0.51250005,0.053033113,0.10606605 +0.9375,0.5125,0.10606599,0.053032964 +0.9375,0.5125,0.094494104,0.094494075 +0.9375,0.51250005,0.06681752,0.13363487 +0.9375,0.5125,0.1336348,0.06681737 +0.9375,0.51250005,0.11905503,0.11905509 +0.9375,0.5125,0.08418465,0.1683693 +0.9375,0.5125,0.1683693,0.08418465 +0.9375,0.5375,0.07500005,0.07499999 +0.9375,0.5375,0.053033113,0.10606605 +0.9375,0.5375,0.10606599,0.053032935 +0.9375,0.5375,0.094494104,0.094494045 +0.9375,0.5375,0.06681752,0.13363487 +0.9375,0.5375,0.1336348,0.06681734 +0.9375,0.5375,0.11905503,0.11905509 +0.9375,0.5375,0.08418465,0.16836932 +0.9375,0.5375,0.1683693,0.08418468 +0.9375,0.5625,0.07500005,0.07500005 +0.9375,0.5625,0.053033113,0.10606599 +0.9375,0.5625,0.10606599,0.053032994 +0.9375,0.5625,0.094494104,0.094494104 +0.9375,0.5625,0.06681752,0.13363484 +0.9375,0.5625,0.1336348,0.0668174 +0.9375,0.5625,0.11905503,0.11905503 +0.9375,0.5625,0.08418465,0.1683693 +0.9375,0.5625,0.1683693,0.08418465 +0.9375,0.5875,0.07500005,0.07499999 +0.9375,0.5875,0.053033113,0.10606605 +0.9375,0.5875,0.10606599,0.053032935 +0.9375,0.5875,0.094494104,0.094494045 +0.9375,0.5875,0.06681752,0.13363487 +0.9375,0.5875,0.1336348,0.06681734 +0.9375,0.5875,0.11905503,0.11905509 +0.9375,0.5875,0.08418465,0.1683693 +0.9375,0.5875,0.1683693,0.08418465 +0.9375,0.61249995,0.07500005,0.07499999 +0.9375,0.61249995,0.053033113,0.10606605 +0.9375,0.6125,0.10606599,0.053032994 +0.9375,0.61249995,0.094494104,0.094494045 +0.9375,0.61249995,0.06681752,0.13363487 +0.9375,0.6125,0.1336348,0.0668174 +0.9375,0.61249995,0.11905503,0.11905509 +0.9375,0.6125,0.08418465,0.1683693 +0.9375,0.6125,0.1683693,0.08418465 +0.9375,0.63750005,0.07500005,0.07499999 +0.9375,0.63750005,0.053033113,0.10606605 +0.9375,0.6375,0.10606599,0.053032994 +0.9375,0.63750005,0.094494104,0.094494045 +0.9375,0.63750005,0.06681752,0.13363487 +0.9375,0.6375,0.1336348,0.0668174 +0.9375,0.63750005,0.11905503,0.11905509 +0.9375,0.6375,0.08418465,0.1683693 +0.9375,0.6375,0.1683693,0.08418465 +0.9375,0.6625,0.07500005,0.07499999 +0.9375,0.6625,0.053033113,0.10606605 +0.9375,0.6625,0.10606599,0.053032935 +0.9375,0.6625,0.094494104,0.094494045 +0.9375,0.6625,0.06681752,0.13363487 +0.9375,0.6625,0.1336348,0.06681734 +0.9375,0.6625,0.11905503,0.11905509 +0.9375,0.6625,0.08418465,0.1683693 +0.9375,0.6625,0.1683693,0.08418465 +0.9375,0.6875,0.07500005,0.07500005 +0.9375,0.6875,0.053033113,0.10606599 +0.9375,0.6875,0.10606599,0.053032994 +0.9375,0.6875,0.094494104,0.094494104 +0.9375,0.6875,0.06681752,0.1336348 +0.9375,0.6875,0.1336348,0.0668174 +0.9375,0.6875,0.11905503,0.11905503 +0.9375,0.6875,0.08418465,0.1683693 +0.9375,0.6875,0.1683693,0.08418465 +0.9375,0.7125,0.07500005,0.07499999 +0.9375,0.7125,0.053033113,0.10606605 +0.9375,0.7125,0.10606599,0.053032935 +0.9375,0.7125,0.094494104,0.094494045 +0.9375,0.7125,0.06681752,0.13363487 +0.9375,0.7125,0.1336348,0.06681734 +0.9375,0.7125,0.11905503,0.11905509 +0.9375,0.7125,0.08418465,0.1683693 +0.9375,0.7125,0.1683693,0.08418465 +0.9375,0.73749995,0.07500005,0.07499999 +0.9375,0.73749995,0.053033113,0.10606605 +0.9375,0.7375,0.10606599,0.053032994 +0.9375,0.73749995,0.094494104,0.094494045 +0.9375,0.73749995,0.06681752,0.1336348 +0.9375,0.7375,0.1336348,0.0668174 +0.9375,0.73749995,0.11905503,0.11905509 +0.9375,0.7375,0.08418465,0.1683693 +0.9375,0.7375,0.1683693,0.08418465 +0.9375,0.76250005,0.07500005,0.07499999 +0.9375,0.7625,0.053033113,0.10606599 +0.9375,0.7625,0.10606599,0.053032994 +0.9375,0.76250005,0.094494104,0.094494045 +0.9375,0.7625,0.06681752,0.1336348 +0.9375,0.7625,0.1336348,0.0668174 +0.9375,0.7625,0.11905503,0.11905503 +0.9375,0.7625,0.08418465,0.1683693 +0.9375,0.7625,0.1683693,0.08418465 +0.9375,0.7875,0.07500005,0.07499999 +0.9375,0.78749996,0.053033113,0.10606599 +0.9375,0.7875,0.10606599,0.053032994 +0.9375,0.7875,0.094494104,0.094494045 +0.9375,0.78749996,0.06681752,0.1336348 +0.9375,0.7875,0.1336348,0.0668174 +0.9375,0.78749996,0.11905503,0.11905503 +0.9375,0.7875,0.08418465,0.1683693 +0.9375,0.7875,0.1683693,0.08418465 +0.9375,0.8125,0.07500005,0.07500005 +0.9375,0.8125,0.053033113,0.10606599 +0.9375,0.8125,0.10606599,0.053033054 +0.9375,0.8125,0.094494104,0.094494104 +0.9375,0.8125,0.06681752,0.1336348 +0.9375,0.8125,0.1336348,0.06681746 +0.9375,0.8125,0.11905503,0.11905503 +0.9375,0.8125,0.08418465,0.1683693 +0.9375,0.8125,0.1683693,0.08418465 +0.9375,0.8375,0.07500005,0.07499999 +0.9375,0.8375,0.053033113,0.10606599 +0.9375,0.8375,0.10606599,0.053033054 +0.9375,0.8375,0.094494104,0.094494045 +0.9375,0.8375,0.06681752,0.1336348 +0.9375,0.8375,0.1336348,0.06681746 +0.9375,0.8375,0.11905503,0.11905503 +0.9375,0.8375,0.08418465,0.1683693 +0.9375,0.8375,0.1683693,0.08418465 +0.9375,0.86249995,0.07500005,0.07499999 +0.9375,0.86249995,0.053033113,0.10606593 +0.9375,0.86249995,0.10606599,0.053033054 +0.9375,0.86249995,0.094494104,0.094494045 +0.9375,0.86249995,0.06681752,0.1336348 +0.9375,0.86249995,0.1336348,0.06681746 +0.9375,0.86249995,0.11905503,0.11905497 +0.9375,0.8625,0.08418465,0.1683693 +0.9375,0.8625,0.1683693,0.08418465 +0.9375,0.88750005,0.07500005,0.07499999 +0.9375,0.88750005,0.053033113,0.10606593 +0.9375,0.88750005,0.10606599,0.053033054 +0.9375,0.88750005,0.094494104,0.094494045 +0.9375,0.88750005,0.06681752,0.13363475 +0.9375,0.88750005,0.1336348,0.06681746 +0.9375,0.88750005,0.11905503,0.11905497 +0.9375,0.8875,0.08418465,0.1683693 +0.9375,0.8875,0.1683693,0.08418465 +0.9375,0.9125,0.07500005,0.07499999 +0.9375,0.9125,0.053033113,0.10606593 +0.9375,0.9125,0.10606599,0.053033054 +0.9375,0.9125,0.094494104,0.094494045 +0.9375,0.9125,0.06681752,0.13363475 +0.9375,0.9125,0.1336348,0.06681746 +0.9375,0.9125,0.11905503,0.11905497 +0.9375,0.9125,0.08418465,0.1683693 +0.9375,0.9125,0.1683693,0.08418465 +0.9375,0.9375,0.07500005,0.07500005 +0.9375,0.9375,0.053033113,0.10606599 +0.9375,0.9375,0.10606599,0.053033113 +0.9375,0.9375,0.094494104,0.094494104 +0.9375,0.9375,0.06681752,0.1336348 +0.9375,0.9375,0.1336348,0.06681752 +0.9375,0.9375,0.11905503,0.11905503 +0.9375,0.9375,0.08418465,0.1683693 +0.9375,0.9375,0.1683693,0.08418465 +0.9375,0.9625,0.07500005,0.07499999 +0.9375,0.9625,0.053033113,0.10606593 +0.9375,0.9625,0.10606599,0.053033054 +0.9375,0.9625,0.094494104,0.094494045 +0.9375,0.9625,0.06681752,0.13363475 +0.9375,0.9625,0.1336348,0.06681746 +0.9375,0.9625,0.11905503,0.11905497 +0.9375,0.9625,0.08418465,0.1683693 +0.9375,0.9625,0.1683693,0.08418465 +0.9375,0.98749995,0.07500005,0.07499999 +0.9375,0.98749995,0.053033113,0.10606593 +0.9375,0.98749995,0.10606599,0.053033054 +0.9375,0.98749995,0.094494104,0.094494045 +0.9375,0.98749995,0.06681752,0.13363475 +0.9375,0.98749995,0.1336348,0.06681746 +0.9375,0.98749995,0.11905503,0.11905497 +0.9375,0.98749995,0.08418465,0.16836923 +0.9375,0.98749995,0.1683693,0.08418459 +0.9625,0.0125,0.07499999,0.075 +0.9625,0.012499997,0.053033054,0.10606602 +0.9625,0.012499999,0.10606593,0.05303301 +0.9625,0.012499999,0.094494045,0.09449408 +0.9625,0.012500001,0.06681746,0.1336348 +0.9625,0.012499999,0.13363475,0.0668174 +0.9625,0.012500001,0.11905497,0.11905508 +0.9625,0.012499999,0.08418465,0.1683693 +0.9625,0.012500002,0.1683693,0.084184654 +0.9625,0.0375,0.07499999,0.075 +0.9625,0.037499998,0.053033054,0.10606601 +0.9625,0.0375,0.10606593,0.05303301 +0.9625,0.0375,0.094494045,0.094494075 +0.9625,0.0375,0.06681746,0.1336348 +0.9625,0.0375,0.13363475,0.0668174 +0.9625,0.0375,0.11905497,0.11905508 +0.9625,0.0375,0.08418465,0.16836931 +0.9625,0.0375,0.1683693,0.08418466 +0.9625,0.0625,0.07499999,0.075 +0.9625,0.0625,0.053033054,0.10606602 +0.9625,0.0625,0.10606593,0.05303301 +0.9625,0.0625,0.094494045,0.094494075 +0.9625,0.0625,0.06681746,0.1336348 +0.9625,0.0625,0.13363475,0.0668174 +0.9625,0.0625,0.11905497,0.11905508 +0.9625,0.0625,0.08418465,0.16836932 +0.9625,0.0625,0.1683693,0.08418465 +0.9625,0.0875,0.07499999,0.075 +0.9625,0.08749999,0.053033054,0.10606601 +0.9625,0.087500006,0.10606593,0.053033013 +0.9625,0.087500006,0.094494045,0.09449408 +0.9625,0.087500006,0.06681746,0.1336348 +0.9625,0.0875,0.13363475,0.0668174 +0.9625,0.0875,0.11905497,0.11905508 +0.9625,0.0875,0.08418465,0.16836931 +0.9625,0.087500006,0.1683693,0.084184654 +0.9625,0.112500004,0.07499999,0.075 +0.9625,0.1125,0.053033054,0.10606601 +0.9625,0.112500004,0.10606593,0.05303301 +0.9625,0.1125,0.094494045,0.094494075 +0.9625,0.1125,0.06681746,0.1336348 +0.9625,0.1125,0.13363475,0.0668174 +0.9625,0.1125,0.11905497,0.119055085 +0.9625,0.112500004,0.08418465,0.16836931 +0.9625,0.1125,0.1683693,0.08418465 +0.9625,0.1375,0.07499999,0.074999996 +0.9625,0.1375,0.053033054,0.10606602 +0.9625,0.1375,0.10606593,0.053033024 +0.9625,0.1375,0.094494045,0.09449408 +0.9625,0.1375,0.06681746,0.1336348 +0.9625,0.1375,0.13363475,0.0668174 +0.9625,0.13749999,0.11905497,0.11905508 +0.9625,0.1375,0.08418465,0.1683693 +0.9625,0.1375,0.1683693,0.084184654 +0.9625,0.1625,0.07499999,0.075 +0.9625,0.16250001,0.053033054,0.106066026 +0.9625,0.1625,0.10606593,0.05303301 +0.9625,0.1625,0.094494045,0.094494075 +0.9625,0.1625,0.06681746,0.1336348 +0.9625,0.1625,0.13363475,0.0668174 +0.9625,0.1625,0.11905497,0.11905508 +0.9625,0.1625,0.08418465,0.1683693 +0.9625,0.1625,0.1683693,0.08418464 +0.9625,0.1875,0.07499999,0.07499999 +0.9625,0.1875,0.053033054,0.10606603 +0.9625,0.1875,0.10606593,0.053033024 +0.9625,0.1875,0.094494045,0.09449406 +0.9625,0.1875,0.06681746,0.1336348 +0.9625,0.1875,0.13363475,0.06681742 +0.9625,0.1875,0.11905497,0.11905509 +0.9625,0.1875,0.08418465,0.16836931 +0.9625,0.1875,0.1683693,0.08418465 +0.9625,0.2125,0.07499999,0.075 +0.9625,0.2125,0.053033054,0.10606603 +0.9625,0.2125,0.10606593,0.05303301 +0.9625,0.21249999,0.094494045,0.094494075 +0.9625,0.2125,0.06681746,0.1336348 +0.9625,0.2125,0.13363475,0.0668174 +0.9625,0.2125,0.11905497,0.11905509 +0.9625,0.2125,0.08418465,0.16836931 +0.9625,0.2125,0.1683693,0.08418465 +0.9625,0.23750001,0.07499999,0.075 +0.9625,0.2375,0.053033054,0.10606602 +0.9625,0.2375,0.10606593,0.053033024 +0.9625,0.2375,0.094494045,0.094494075 +0.9625,0.23750001,0.06681746,0.13363482 +0.9625,0.2375,0.13363475,0.06681743 +0.9625,0.2375,0.11905497,0.11905506 +0.9625,0.2375,0.08418465,0.16836932 +0.9625,0.23750001,0.1683693,0.08418466 +0.9625,0.2625,0.07499999,0.07500002 +0.9625,0.2625,0.053033054,0.10606603 +0.9625,0.2625,0.10606593,0.053033024 +0.9625,0.2625,0.094494045,0.094494075 +0.9625,0.2625,0.06681746,0.13363479 +0.9625,0.2625,0.13363475,0.06681743 +0.9625,0.2625,0.11905497,0.11905508 +0.9625,0.2625,0.08418465,0.1683693 +0.9625,0.2625,0.1683693,0.08418463 +0.9625,0.2875,0.07499999,0.07499999 +0.9625,0.2875,0.053033054,0.10606603 +0.9625,0.28750002,0.10606593,0.053033024 +0.9625,0.2875,0.094494045,0.094494045 +0.9625,0.2875,0.06681746,0.1336348 +0.9625,0.28750002,0.13363475,0.06681743 +0.9625,0.2875,0.11905497,0.11905508 +0.9625,0.2875,0.08418465,0.1683693 +0.9625,0.2875,0.1683693,0.08418465 +0.9625,0.3125,0.07499999,0.07499999 +0.9625,0.3125,0.053033054,0.10606605 +0.9625,0.3125,0.10606593,0.053032994 +0.9625,0.3125,0.094494045,0.094494045 +0.9625,0.3125,0.06681746,0.1336348 +0.9625,0.3125,0.13363475,0.0668174 +0.9625,0.3125,0.11905497,0.11905509 +0.9625,0.3125,0.08418465,0.1683693 +0.9625,0.3125,0.1683693,0.08418465 +0.9625,0.3375,0.07499999,0.07499999 +0.9625,0.3375,0.053033054,0.10606605 +0.9625,0.33749998,0.10606593,0.053033024 +0.9625,0.3375,0.094494045,0.094494045 +0.9625,0.33750004,0.06681746,0.13363484 +0.9625,0.33749998,0.13363475,0.06681743 +0.9625,0.3375,0.11905497,0.11905509 +0.9625,0.3375,0.08418465,0.1683693 +0.9625,0.3375,0.1683693,0.08418465 +0.9625,0.3625,0.07499999,0.07500002 +0.9625,0.3625,0.053033054,0.10606602 +0.9625,0.3625,0.10606593,0.053033024 +0.9625,0.3625,0.094494045,0.094494075 +0.9625,0.3625,0.06681746,0.1336348 +0.9625,0.3625,0.13363475,0.06681743 +0.9625,0.3625,0.11905497,0.11905506 +0.9625,0.3625,0.08418465,0.1683693 +0.9625,0.3625,0.1683693,0.08418465 +0.9625,0.3875,0.07499999,0.07500002 +0.9625,0.3875,0.053033054,0.10606602 +0.9625,0.3875,0.10606593,0.053032994 +0.9625,0.3875,0.094494045,0.094494075 +0.9625,0.3875,0.06681746,0.13363484 +0.9625,0.3875,0.13363475,0.0668174 +0.9625,0.3875,0.11905497,0.11905506 +0.9625,0.3875,0.08418465,0.1683693 +0.9625,0.3875,0.1683693,0.08418465 +0.9625,0.4125,0.07499999,0.07499999 +0.9625,0.4125,0.053033054,0.10606605 +0.9625,0.4125,0.10606593,0.053032994 +0.9625,0.4125,0.094494045,0.094494045 +0.9625,0.41250002,0.06681746,0.13363484 +0.9625,0.4125,0.13363475,0.0668174 +0.9625,0.4125,0.11905497,0.11905509 +0.9625,0.4125,0.08418465,0.1683693 +0.9625,0.4125,0.1683693,0.08418465 +0.9625,0.4375,0.07499999,0.07499999 +0.9625,0.4375,0.053033054,0.10606605 +0.9625,0.4375,0.10606593,0.053032994 +0.9625,0.4375,0.094494045,0.094494045 +0.9625,0.4375,0.06681746,0.1336348 +0.9625,0.4375,0.13363475,0.0668174 +0.9625,0.4375,0.11905497,0.11905509 +0.9625,0.4375,0.08418465,0.1683693 +0.9625,0.4375,0.1683693,0.08418465 +0.9625,0.4625,0.07499999,0.07499999 +0.9625,0.4625,0.053033054,0.10606605 +0.9625,0.46249998,0.10606593,0.053032964 +0.9625,0.4625,0.094494045,0.094494045 +0.9625,0.46250004,0.06681746,0.13363484 +0.9625,0.46249998,0.13363475,0.06681737 +0.9625,0.4625,0.11905497,0.11905509 +0.9625,0.46249998,0.08418465,0.16836926 +0.9625,0.46249998,0.1683693,0.08418462 +0.9625,0.48749998,0.07499999,0.07499999 +0.9625,0.4875,0.053033054,0.10606602 +0.9625,0.4875,0.10606593,0.053032994 +0.9625,0.48749998,0.094494045,0.094494045 +0.9625,0.4875,0.06681746,0.13363484 +0.9625,0.4875,0.13363475,0.0668174 +0.9625,0.4875,0.11905497,0.11905506 +0.9625,0.4875,0.08418465,0.1683693 +0.9625,0.4875,0.1683693,0.08418465 +0.9625,0.5125,0.07499999,0.07500002 +0.9625,0.51250005,0.053033054,0.10606605 +0.9625,0.5125,0.10606593,0.053032964 +0.9625,0.5125,0.094494045,0.094494075 +0.9625,0.51250005,0.06681746,0.13363487 +0.9625,0.5125,0.13363475,0.06681737 +0.9625,0.51250005,0.11905497,0.11905509 +0.9625,0.5125,0.08418465,0.1683693 +0.9625,0.5125,0.1683693,0.08418465 +0.9625,0.5375,0.07499999,0.07499999 +0.9625,0.5375,0.053033054,0.10606605 +0.9625,0.5375,0.10606593,0.053032935 +0.9625,0.5375,0.094494045,0.094494045 +0.9625,0.5375,0.06681746,0.13363487 +0.9625,0.5375,0.13363475,0.06681734 +0.9625,0.5375,0.11905497,0.11905509 +0.9625,0.5375,0.08418465,0.16836932 +0.9625,0.5375,0.1683693,0.08418468 +0.9625,0.5625,0.07499999,0.07500005 +0.9625,0.5625,0.053033054,0.10606599 +0.9625,0.5625,0.10606593,0.053032994 +0.9625,0.5625,0.094494045,0.094494104 +0.9625,0.5625,0.06681746,0.13363484 +0.9625,0.5625,0.13363475,0.0668174 +0.9625,0.5625,0.11905497,0.11905503 +0.9625,0.5625,0.08418465,0.1683693 +0.9625,0.5625,0.1683693,0.08418465 +0.9625,0.5875,0.07499999,0.07499999 +0.9625,0.5875,0.053033054,0.10606605 +0.9625,0.5875,0.10606593,0.053032935 +0.9625,0.5875,0.094494045,0.094494045 +0.9625,0.5875,0.06681746,0.13363487 +0.9625,0.5875,0.13363475,0.06681734 +0.9625,0.5875,0.11905497,0.11905509 +0.9625,0.5875,0.08418465,0.1683693 +0.9625,0.5875,0.1683693,0.08418465 +0.9625,0.61249995,0.07499999,0.07499999 +0.9625,0.61249995,0.053033054,0.10606605 +0.9625,0.6125,0.10606593,0.053032994 +0.9625,0.61249995,0.094494045,0.094494045 +0.9625,0.61249995,0.06681746,0.13363487 +0.9625,0.6125,0.13363475,0.0668174 +0.9625,0.61249995,0.11905497,0.11905509 +0.9625,0.6125,0.08418465,0.1683693 +0.9625,0.6125,0.1683693,0.08418465 +0.9625,0.63750005,0.07499999,0.07499999 +0.9625,0.63750005,0.053033054,0.10606605 +0.9625,0.6375,0.10606593,0.053032994 +0.9625,0.63750005,0.094494045,0.094494045 +0.9625,0.63750005,0.06681746,0.13363487 +0.9625,0.6375,0.13363475,0.0668174 +0.9625,0.63750005,0.11905497,0.11905509 +0.9625,0.6375,0.08418465,0.1683693 +0.9625,0.6375,0.1683693,0.08418465 +0.9625,0.6625,0.07499999,0.07499999 +0.9625,0.6625,0.053033054,0.10606605 +0.9625,0.6625,0.10606593,0.053032935 +0.9625,0.6625,0.094494045,0.094494045 +0.9625,0.6625,0.06681746,0.13363487 +0.9625,0.6625,0.13363475,0.06681734 +0.9625,0.6625,0.11905497,0.11905509 +0.9625,0.6625,0.08418465,0.1683693 +0.9625,0.6625,0.1683693,0.08418465 +0.9625,0.6875,0.07499999,0.07500005 +0.9625,0.6875,0.053033054,0.10606599 +0.9625,0.6875,0.10606593,0.053032994 +0.9625,0.6875,0.094494045,0.094494104 +0.9625,0.6875,0.06681746,0.1336348 +0.9625,0.6875,0.13363475,0.0668174 +0.9625,0.6875,0.11905497,0.11905503 +0.9625,0.6875,0.08418465,0.1683693 +0.9625,0.6875,0.1683693,0.08418465 +0.9625,0.7125,0.07499999,0.07499999 +0.9625,0.7125,0.053033054,0.10606605 +0.9625,0.7125,0.10606593,0.053032935 +0.9625,0.7125,0.094494045,0.094494045 +0.9625,0.7125,0.06681746,0.13363487 +0.9625,0.7125,0.13363475,0.06681734 +0.9625,0.7125,0.11905497,0.11905509 +0.9625,0.7125,0.08418465,0.1683693 +0.9625,0.7125,0.1683693,0.08418465 +0.9625,0.73749995,0.07499999,0.07499999 +0.9625,0.73749995,0.053033054,0.10606605 +0.9625,0.7375,0.10606593,0.053032994 +0.9625,0.73749995,0.094494045,0.094494045 +0.9625,0.73749995,0.06681746,0.1336348 +0.9625,0.7375,0.13363475,0.0668174 +0.9625,0.73749995,0.11905497,0.11905509 +0.9625,0.7375,0.08418465,0.1683693 +0.9625,0.7375,0.1683693,0.08418465 +0.9625,0.76250005,0.07499999,0.07499999 +0.9625,0.7625,0.053033054,0.10606599 +0.9625,0.7625,0.10606593,0.053032994 +0.9625,0.76250005,0.094494045,0.094494045 +0.9625,0.7625,0.06681746,0.1336348 +0.9625,0.7625,0.13363475,0.0668174 +0.9625,0.7625,0.11905497,0.11905503 +0.9625,0.7625,0.08418465,0.1683693 +0.9625,0.7625,0.1683693,0.08418465 +0.9625,0.7875,0.07499999,0.07499999 +0.9625,0.78749996,0.053033054,0.10606599 +0.9625,0.7875,0.10606593,0.053032994 +0.9625,0.7875,0.094494045,0.094494045 +0.9625,0.78749996,0.06681746,0.1336348 +0.9625,0.7875,0.13363475,0.0668174 +0.9625,0.78749996,0.11905497,0.11905503 +0.9625,0.7875,0.08418465,0.1683693 +0.9625,0.7875,0.1683693,0.08418465 +0.9625,0.8125,0.07499999,0.07500005 +0.9625,0.8125,0.053033054,0.10606599 +0.9625,0.8125,0.10606593,0.053033054 +0.9625,0.8125,0.094494045,0.094494104 +0.9625,0.8125,0.06681746,0.1336348 +0.9625,0.8125,0.13363475,0.06681746 +0.9625,0.8125,0.11905497,0.11905503 +0.9625,0.8125,0.08418465,0.1683693 +0.9625,0.8125,0.1683693,0.08418465 +0.9625,0.8375,0.07499999,0.07499999 +0.9625,0.8375,0.053033054,0.10606599 +0.9625,0.8375,0.10606593,0.053033054 +0.9625,0.8375,0.094494045,0.094494045 +0.9625,0.8375,0.06681746,0.1336348 +0.9625,0.8375,0.13363475,0.06681746 +0.9625,0.8375,0.11905497,0.11905503 +0.9625,0.8375,0.08418465,0.1683693 +0.9625,0.8375,0.1683693,0.08418465 +0.9625,0.86249995,0.07499999,0.07499999 +0.9625,0.86249995,0.053033054,0.10606593 +0.9625,0.86249995,0.10606593,0.053033054 +0.9625,0.86249995,0.094494045,0.094494045 +0.9625,0.86249995,0.06681746,0.1336348 +0.9625,0.86249995,0.13363475,0.06681746 +0.9625,0.86249995,0.11905497,0.11905497 +0.9625,0.8625,0.08418465,0.1683693 +0.9625,0.8625,0.1683693,0.08418465 +0.9625,0.88750005,0.07499999,0.07499999 +0.9625,0.88750005,0.053033054,0.10606593 +0.9625,0.88750005,0.10606593,0.053033054 +0.9625,0.88750005,0.094494045,0.094494045 +0.9625,0.88750005,0.06681746,0.13363475 +0.9625,0.88750005,0.13363475,0.06681746 +0.9625,0.88750005,0.11905497,0.11905497 +0.9625,0.8875,0.08418465,0.1683693 +0.9625,0.8875,0.1683693,0.08418465 +0.9625,0.9125,0.07499999,0.07499999 +0.9625,0.9125,0.053033054,0.10606593 +0.9625,0.9125,0.10606593,0.053033054 +0.9625,0.9125,0.094494045,0.094494045 +0.9625,0.9125,0.06681746,0.13363475 +0.9625,0.9125,0.13363475,0.06681746 +0.9625,0.9125,0.11905497,0.11905497 +0.9625,0.9125,0.08418465,0.1683693 +0.9625,0.9125,0.1683693,0.08418465 +0.9625,0.9375,0.07499999,0.07500005 +0.9625,0.9375,0.053033054,0.10606599 +0.9625,0.9375,0.10606593,0.053033113 +0.9625,0.9375,0.094494045,0.094494104 +0.9625,0.9375,0.06681746,0.1336348 +0.9625,0.9375,0.13363475,0.06681752 +0.9625,0.9375,0.11905497,0.11905503 +0.9625,0.9375,0.08418465,0.1683693 +0.9625,0.9375,0.1683693,0.08418465 +0.9625,0.9625,0.07499999,0.07499999 +0.9625,0.9625,0.053033054,0.10606593 +0.9625,0.9625,0.10606593,0.053033054 +0.9625,0.9625,0.094494045,0.094494045 +0.9625,0.9625,0.06681746,0.13363475 +0.9625,0.9625,0.13363475,0.06681746 +0.9625,0.9625,0.11905497,0.11905497 +0.9625,0.9625,0.08418465,0.1683693 +0.9625,0.9625,0.1683693,0.08418465 +0.9625,0.98749995,0.07499999,0.07499999 +0.9625,0.98749995,0.053033054,0.10606593 +0.9625,0.98749995,0.10606593,0.053033054 +0.9625,0.98749995,0.094494045,0.094494045 +0.9625,0.98749995,0.06681746,0.13363475 +0.9625,0.98749995,0.13363475,0.06681746 +0.9625,0.98749995,0.11905497,0.11905497 +0.9625,0.98749995,0.08418465,0.16836923 +0.9625,0.98749995,0.1683693,0.08418459 +0.98749995,0.0125,0.07499999,0.075 +0.98749995,0.012499997,0.053033054,0.10606602 +0.98749995,0.012499999,0.10606593,0.05303301 +0.98749995,0.012499999,0.094494045,0.09449408 +0.98749995,0.012500001,0.06681746,0.1336348 +0.98749995,0.012499999,0.13363475,0.0668174 +0.98749995,0.012500001,0.11905497,0.11905508 +0.98749995,0.012499999,0.08418459,0.1683693 +0.98749995,0.012500002,0.16836923,0.084184654 +0.98749995,0.0375,0.07499999,0.075 +0.98749995,0.037499998,0.053033054,0.10606601 +0.98749995,0.0375,0.10606593,0.05303301 +0.98749995,0.0375,0.094494045,0.094494075 +0.98749995,0.0375,0.06681746,0.1336348 +0.98749995,0.0375,0.13363475,0.0668174 +0.98749995,0.0375,0.11905497,0.11905508 +0.98749995,0.0375,0.08418459,0.16836931 +0.98749995,0.0375,0.16836923,0.08418466 +0.98749995,0.0625,0.07499999,0.075 +0.98749995,0.0625,0.053033054,0.10606602 +0.98749995,0.0625,0.10606593,0.05303301 +0.98749995,0.0625,0.094494045,0.094494075 +0.98749995,0.0625,0.06681746,0.1336348 +0.98749995,0.0625,0.13363475,0.0668174 +0.98749995,0.0625,0.11905497,0.11905508 +0.98749995,0.0625,0.08418459,0.16836932 +0.98749995,0.0625,0.16836923,0.08418465 +0.98749995,0.0875,0.07499999,0.075 +0.98749995,0.08749999,0.053033054,0.10606601 +0.98749995,0.087500006,0.10606593,0.053033013 +0.98749995,0.087500006,0.094494045,0.09449408 +0.98749995,0.087500006,0.06681746,0.1336348 +0.98749995,0.0875,0.13363475,0.0668174 +0.98749995,0.0875,0.11905497,0.11905508 +0.98749995,0.0875,0.08418459,0.16836931 +0.98749995,0.087500006,0.16836923,0.084184654 +0.98749995,0.112500004,0.07499999,0.075 +0.98749995,0.1125,0.053033054,0.10606601 +0.98749995,0.112500004,0.10606593,0.05303301 +0.98749995,0.1125,0.094494045,0.094494075 +0.98749995,0.1125,0.06681746,0.1336348 +0.98749995,0.1125,0.13363475,0.0668174 +0.98749995,0.1125,0.11905497,0.119055085 +0.98749995,0.112500004,0.08418459,0.16836931 +0.98749995,0.1125,0.16836923,0.08418465 +0.98749995,0.1375,0.07499999,0.074999996 +0.98749995,0.1375,0.053033054,0.10606602 +0.98749995,0.1375,0.10606593,0.053033024 +0.98749995,0.1375,0.094494045,0.09449408 +0.98749995,0.1375,0.06681746,0.1336348 +0.98749995,0.1375,0.13363475,0.0668174 +0.98749995,0.13749999,0.11905497,0.11905508 +0.98749995,0.1375,0.08418459,0.1683693 +0.98749995,0.1375,0.16836923,0.084184654 +0.98749995,0.1625,0.07499999,0.075 +0.98749995,0.16250001,0.053033054,0.106066026 +0.98749995,0.1625,0.10606593,0.05303301 +0.98749995,0.1625,0.094494045,0.094494075 +0.98749995,0.1625,0.06681746,0.1336348 +0.98749995,0.1625,0.13363475,0.0668174 +0.98749995,0.1625,0.11905497,0.11905508 +0.98749995,0.1625,0.08418459,0.1683693 +0.98749995,0.1625,0.16836923,0.08418464 +0.98749995,0.1875,0.07499999,0.07499999 +0.98749995,0.1875,0.053033054,0.10606603 +0.98749995,0.1875,0.10606593,0.053033024 +0.98749995,0.1875,0.094494045,0.09449406 +0.98749995,0.1875,0.06681746,0.1336348 +0.98749995,0.1875,0.13363475,0.06681742 +0.98749995,0.1875,0.11905497,0.11905509 +0.98749995,0.1875,0.08418459,0.16836931 +0.98749995,0.1875,0.16836923,0.08418465 +0.98749995,0.2125,0.07499999,0.075 +0.98749995,0.2125,0.053033054,0.10606603 +0.98749995,0.2125,0.10606593,0.05303301 +0.98749995,0.21249999,0.094494045,0.094494075 +0.98749995,0.2125,0.06681746,0.1336348 +0.98749995,0.2125,0.13363475,0.0668174 +0.98749995,0.2125,0.11905497,0.11905509 +0.98749995,0.2125,0.08418459,0.16836931 +0.98749995,0.2125,0.16836923,0.08418465 +0.98749995,0.23750001,0.07499999,0.075 +0.98749995,0.2375,0.053033054,0.10606602 +0.98749995,0.2375,0.10606593,0.053033024 +0.98749995,0.2375,0.094494045,0.094494075 +0.98749995,0.23750001,0.06681746,0.13363482 +0.98749995,0.2375,0.13363475,0.06681743 +0.98749995,0.2375,0.11905497,0.11905506 +0.98749995,0.2375,0.08418459,0.16836932 +0.98749995,0.23750001,0.16836923,0.08418466 +0.98749995,0.2625,0.07499999,0.07500002 +0.98749995,0.2625,0.053033054,0.10606603 +0.98749995,0.2625,0.10606593,0.053033024 +0.98749995,0.2625,0.094494045,0.094494075 +0.98749995,0.2625,0.06681746,0.13363479 +0.98749995,0.2625,0.13363475,0.06681743 +0.98749995,0.2625,0.11905497,0.11905508 +0.98749995,0.2625,0.08418459,0.1683693 +0.98749995,0.2625,0.16836923,0.08418463 +0.98749995,0.2875,0.07499999,0.07499999 +0.98749995,0.2875,0.053033054,0.10606603 +0.98749995,0.28750002,0.10606593,0.053033024 +0.98749995,0.2875,0.094494045,0.094494045 +0.98749995,0.2875,0.06681746,0.1336348 +0.98749995,0.28750002,0.13363475,0.06681743 +0.98749995,0.2875,0.11905497,0.11905508 +0.98749995,0.2875,0.08418459,0.1683693 +0.98749995,0.2875,0.16836923,0.08418465 +0.98749995,0.3125,0.07499999,0.07499999 +0.98749995,0.3125,0.053033054,0.10606605 +0.98749995,0.3125,0.10606593,0.053032994 +0.98749995,0.3125,0.094494045,0.094494045 +0.98749995,0.3125,0.06681746,0.1336348 +0.98749995,0.3125,0.13363475,0.0668174 +0.98749995,0.3125,0.11905497,0.11905509 +0.98749995,0.3125,0.08418459,0.1683693 +0.98749995,0.3125,0.16836923,0.08418465 +0.98749995,0.3375,0.07499999,0.07499999 +0.98749995,0.3375,0.053033054,0.10606605 +0.98749995,0.33749998,0.10606593,0.053033024 +0.98749995,0.3375,0.094494045,0.094494045 +0.98749995,0.33750004,0.06681746,0.13363484 +0.98749995,0.33749998,0.13363475,0.06681743 +0.98749995,0.3375,0.11905497,0.11905509 +0.98749995,0.3375,0.08418459,0.1683693 +0.98749995,0.3375,0.16836923,0.08418465 +0.98749995,0.3625,0.07499999,0.07500002 +0.98749995,0.3625,0.053033054,0.10606602 +0.98749995,0.3625,0.10606593,0.053033024 +0.98749995,0.3625,0.094494045,0.094494075 +0.98749995,0.3625,0.06681746,0.1336348 +0.98749995,0.3625,0.13363475,0.06681743 +0.98749995,0.3625,0.11905497,0.11905506 +0.98749995,0.3625,0.08418459,0.1683693 +0.98749995,0.3625,0.16836923,0.08418465 +0.98749995,0.3875,0.07499999,0.07500002 +0.98749995,0.3875,0.053033054,0.10606602 +0.98749995,0.3875,0.10606593,0.053032994 +0.98749995,0.3875,0.094494045,0.094494075 +0.98749995,0.3875,0.06681746,0.13363484 +0.98749995,0.3875,0.13363475,0.0668174 +0.98749995,0.3875,0.11905497,0.11905506 +0.98749995,0.3875,0.08418459,0.1683693 +0.98749995,0.3875,0.16836923,0.08418465 +0.98749995,0.4125,0.07499999,0.07499999 +0.98749995,0.4125,0.053033054,0.10606605 +0.98749995,0.4125,0.10606593,0.053032994 +0.98749995,0.4125,0.094494045,0.094494045 +0.98749995,0.41250002,0.06681746,0.13363484 +0.98749995,0.4125,0.13363475,0.0668174 +0.98749995,0.4125,0.11905497,0.11905509 +0.98749995,0.4125,0.08418459,0.1683693 +0.98749995,0.4125,0.16836923,0.08418465 +0.98749995,0.4375,0.07499999,0.07499999 +0.98749995,0.4375,0.053033054,0.10606605 +0.98749995,0.4375,0.10606593,0.053032994 +0.98749995,0.4375,0.094494045,0.094494045 +0.98749995,0.4375,0.06681746,0.1336348 +0.98749995,0.4375,0.13363475,0.0668174 +0.98749995,0.4375,0.11905497,0.11905509 +0.98749995,0.4375,0.08418459,0.1683693 +0.98749995,0.4375,0.16836923,0.08418465 +0.98749995,0.4625,0.07499999,0.07499999 +0.98749995,0.4625,0.053033054,0.10606605 +0.98749995,0.46249998,0.10606593,0.053032964 +0.98749995,0.4625,0.094494045,0.094494045 +0.98749995,0.46250004,0.06681746,0.13363484 +0.98749995,0.46249998,0.13363475,0.06681737 +0.98749995,0.4625,0.11905497,0.11905509 +0.98749995,0.46249998,0.08418459,0.16836926 +0.98749995,0.46249998,0.16836923,0.08418462 +0.98749995,0.48749998,0.07499999,0.07499999 +0.98749995,0.4875,0.053033054,0.10606602 +0.98749995,0.4875,0.10606593,0.053032994 +0.98749995,0.48749998,0.094494045,0.094494045 +0.98749995,0.4875,0.06681746,0.13363484 +0.98749995,0.4875,0.13363475,0.0668174 +0.98749995,0.4875,0.11905497,0.11905506 +0.98749995,0.4875,0.08418459,0.1683693 +0.98749995,0.4875,0.16836923,0.08418465 +0.98749995,0.5125,0.07499999,0.07500002 +0.98749995,0.51250005,0.053033054,0.10606605 +0.98749995,0.5125,0.10606593,0.053032964 +0.98749995,0.5125,0.094494045,0.094494075 +0.98749995,0.51250005,0.06681746,0.13363487 +0.98749995,0.5125,0.13363475,0.06681737 +0.98749995,0.51250005,0.11905497,0.11905509 +0.98749995,0.5125,0.08418459,0.1683693 +0.98749995,0.5125,0.16836923,0.08418465 +0.98749995,0.5375,0.07499999,0.07499999 +0.98749995,0.5375,0.053033054,0.10606605 +0.98749995,0.5375,0.10606593,0.053032935 +0.98749995,0.5375,0.094494045,0.094494045 +0.98749995,0.5375,0.06681746,0.13363487 +0.98749995,0.5375,0.13363475,0.06681734 +0.98749995,0.5375,0.11905497,0.11905509 +0.98749995,0.5375,0.08418459,0.16836932 +0.98749995,0.5375,0.16836923,0.08418468 +0.98749995,0.5625,0.07499999,0.07500005 +0.98749995,0.5625,0.053033054,0.10606599 +0.98749995,0.5625,0.10606593,0.053032994 +0.98749995,0.5625,0.094494045,0.094494104 +0.98749995,0.5625,0.06681746,0.13363484 +0.98749995,0.5625,0.13363475,0.0668174 +0.98749995,0.5625,0.11905497,0.11905503 +0.98749995,0.5625,0.08418459,0.1683693 +0.98749995,0.5625,0.16836923,0.08418465 +0.98749995,0.5875,0.07499999,0.07499999 +0.98749995,0.5875,0.053033054,0.10606605 +0.98749995,0.5875,0.10606593,0.053032935 +0.98749995,0.5875,0.094494045,0.094494045 +0.98749995,0.5875,0.06681746,0.13363487 +0.98749995,0.5875,0.13363475,0.06681734 +0.98749995,0.5875,0.11905497,0.11905509 +0.98749995,0.5875,0.08418459,0.1683693 +0.98749995,0.5875,0.16836923,0.08418465 +0.98749995,0.61249995,0.07499999,0.07499999 +0.98749995,0.61249995,0.053033054,0.10606605 +0.98749995,0.6125,0.10606593,0.053032994 +0.98749995,0.61249995,0.094494045,0.094494045 +0.98749995,0.61249995,0.06681746,0.13363487 +0.98749995,0.6125,0.13363475,0.0668174 +0.98749995,0.61249995,0.11905497,0.11905509 +0.98749995,0.6125,0.08418459,0.1683693 +0.98749995,0.6125,0.16836923,0.08418465 +0.98749995,0.63750005,0.07499999,0.07499999 +0.98749995,0.63750005,0.053033054,0.10606605 +0.98749995,0.6375,0.10606593,0.053032994 +0.98749995,0.63750005,0.094494045,0.094494045 +0.98749995,0.63750005,0.06681746,0.13363487 +0.98749995,0.6375,0.13363475,0.0668174 +0.98749995,0.63750005,0.11905497,0.11905509 +0.98749995,0.6375,0.08418459,0.1683693 +0.98749995,0.6375,0.16836923,0.08418465 +0.98749995,0.6625,0.07499999,0.07499999 +0.98749995,0.6625,0.053033054,0.10606605 +0.98749995,0.6625,0.10606593,0.053032935 +0.98749995,0.6625,0.094494045,0.094494045 +0.98749995,0.6625,0.06681746,0.13363487 +0.98749995,0.6625,0.13363475,0.06681734 +0.98749995,0.6625,0.11905497,0.11905509 +0.98749995,0.6625,0.08418459,0.1683693 +0.98749995,0.6625,0.16836923,0.08418465 +0.98749995,0.6875,0.07499999,0.07500005 +0.98749995,0.6875,0.053033054,0.10606599 +0.98749995,0.6875,0.10606593,0.053032994 +0.98749995,0.6875,0.094494045,0.094494104 +0.98749995,0.6875,0.06681746,0.1336348 +0.98749995,0.6875,0.13363475,0.0668174 +0.98749995,0.6875,0.11905497,0.11905503 +0.98749995,0.6875,0.08418459,0.1683693 +0.98749995,0.6875,0.16836923,0.08418465 +0.98749995,0.7125,0.07499999,0.07499999 +0.98749995,0.7125,0.053033054,0.10606605 +0.98749995,0.7125,0.10606593,0.053032935 +0.98749995,0.7125,0.094494045,0.094494045 +0.98749995,0.7125,0.06681746,0.13363487 +0.98749995,0.7125,0.13363475,0.06681734 +0.98749995,0.7125,0.11905497,0.11905509 +0.98749995,0.7125,0.08418459,0.1683693 +0.98749995,0.7125,0.16836923,0.08418465 +0.98749995,0.73749995,0.07499999,0.07499999 +0.98749995,0.73749995,0.053033054,0.10606605 +0.98749995,0.7375,0.10606593,0.053032994 +0.98749995,0.73749995,0.094494045,0.094494045 +0.98749995,0.73749995,0.06681746,0.1336348 +0.98749995,0.7375,0.13363475,0.0668174 +0.98749995,0.73749995,0.11905497,0.11905509 +0.98749995,0.7375,0.08418459,0.1683693 +0.98749995,0.7375,0.16836923,0.08418465 +0.98749995,0.76250005,0.07499999,0.07499999 +0.98749995,0.7625,0.053033054,0.10606599 +0.98749995,0.7625,0.10606593,0.053032994 +0.98749995,0.76250005,0.094494045,0.094494045 +0.98749995,0.7625,0.06681746,0.1336348 +0.98749995,0.7625,0.13363475,0.0668174 +0.98749995,0.7625,0.11905497,0.11905503 +0.98749995,0.7625,0.08418459,0.1683693 +0.98749995,0.7625,0.16836923,0.08418465 +0.98749995,0.7875,0.07499999,0.07499999 +0.98749995,0.78749996,0.053033054,0.10606599 +0.98749995,0.7875,0.10606593,0.053032994 +0.98749995,0.7875,0.094494045,0.094494045 +0.98749995,0.78749996,0.06681746,0.1336348 +0.98749995,0.7875,0.13363475,0.0668174 +0.98749995,0.78749996,0.11905497,0.11905503 +0.98749995,0.7875,0.08418459,0.1683693 +0.98749995,0.7875,0.16836923,0.08418465 +0.98749995,0.8125,0.07499999,0.07500005 +0.98749995,0.8125,0.053033054,0.10606599 +0.98749995,0.8125,0.10606593,0.053033054 +0.98749995,0.8125,0.094494045,0.094494104 +0.98749995,0.8125,0.06681746,0.1336348 +0.98749995,0.8125,0.13363475,0.06681746 +0.98749995,0.8125,0.11905497,0.11905503 +0.98749995,0.8125,0.08418459,0.1683693 +0.98749995,0.8125,0.16836923,0.08418465 +0.98749995,0.8375,0.07499999,0.07499999 +0.98749995,0.8375,0.053033054,0.10606599 +0.98749995,0.8375,0.10606593,0.053033054 +0.98749995,0.8375,0.094494045,0.094494045 +0.98749995,0.8375,0.06681746,0.1336348 +0.98749995,0.8375,0.13363475,0.06681746 +0.98749995,0.8375,0.11905497,0.11905503 +0.98749995,0.8375,0.08418459,0.1683693 +0.98749995,0.8375,0.16836923,0.08418465 +0.98749995,0.86249995,0.07499999,0.07499999 +0.98749995,0.86249995,0.053033054,0.10606593 +0.98749995,0.86249995,0.10606593,0.053033054 +0.98749995,0.86249995,0.094494045,0.094494045 +0.98749995,0.86249995,0.06681746,0.1336348 +0.98749995,0.86249995,0.13363475,0.06681746 +0.98749995,0.86249995,0.11905497,0.11905497 +0.98749995,0.8625,0.08418459,0.1683693 +0.98749995,0.8625,0.16836923,0.08418465 +0.98749995,0.88750005,0.07499999,0.07499999 +0.98749995,0.88750005,0.053033054,0.10606593 +0.98749995,0.88750005,0.10606593,0.053033054 +0.98749995,0.88750005,0.094494045,0.094494045 +0.98749995,0.88750005,0.06681746,0.13363475 +0.98749995,0.88750005,0.13363475,0.06681746 +0.98749995,0.88750005,0.11905497,0.11905497 +0.98749995,0.8875,0.08418459,0.1683693 +0.98749995,0.8875,0.16836923,0.08418465 +0.98749995,0.9125,0.07499999,0.07499999 +0.98749995,0.9125,0.053033054,0.10606593 +0.98749995,0.9125,0.10606593,0.053033054 +0.98749995,0.9125,0.094494045,0.094494045 +0.98749995,0.9125,0.06681746,0.13363475 +0.98749995,0.9125,0.13363475,0.06681746 +0.98749995,0.9125,0.11905497,0.11905497 +0.98749995,0.9125,0.08418459,0.1683693 +0.98749995,0.9125,0.16836923,0.08418465 +0.98749995,0.9375,0.07499999,0.07500005 +0.98749995,0.9375,0.053033054,0.10606599 +0.98749995,0.9375,0.10606593,0.053033113 +0.98749995,0.9375,0.094494045,0.094494104 +0.98749995,0.9375,0.06681746,0.1336348 +0.98749995,0.9375,0.13363475,0.06681752 +0.98749995,0.9375,0.11905497,0.11905503 +0.98749995,0.9375,0.08418459,0.1683693 +0.98749995,0.9375,0.16836923,0.08418465 +0.98749995,0.9625,0.07499999,0.07499999 +0.98749995,0.9625,0.053033054,0.10606593 +0.98749995,0.9625,0.10606593,0.053033054 +0.98749995,0.9625,0.094494045,0.094494045 +0.98749995,0.9625,0.06681746,0.13363475 +0.98749995,0.9625,0.13363475,0.06681746 +0.98749995,0.9625,0.11905497,0.11905497 +0.98749995,0.9625,0.08418459,0.1683693 +0.98749995,0.9625,0.16836923,0.08418465 +0.98749995,0.98749995,0.07499999,0.07499999 +0.98749995,0.98749995,0.053033054,0.10606593 +0.98749995,0.98749995,0.10606593,0.053033054 +0.98749995,0.98749995,0.094494045,0.094494045 +0.98749995,0.98749995,0.06681746,0.13363475 +0.98749995,0.98749995,0.13363475,0.06681746 +0.98749995,0.98749995,0.11905497,0.11905497 +0.98749995,0.98749995,0.08418459,0.16836923 +0.98749995,0.98749995,0.16836923,0.08418459 +0.025,0.025,0.15,0.15 +0.024999999,0.024999995,0.10606602,0.21213204 +0.024999995,0.024999999,0.21213204,0.10606602 +0.024999999,0.024999999,0.18898816,0.18898816 +0.024999999,0.025000002,0.1336348,0.2672696 +0.025000002,0.024999999,0.2672696,0.1336348 +0.025000002,0.025000002,0.23811015,0.23811015 +0.025000004,0.024999999,0.16836931,0.3367386 +0.024999999,0.025000004,0.3367386,0.16836931 +0.025,0.075,0.15,0.15 +0.024999999,0.074999996,0.10606602,0.21213202 +0.024999995,0.075,0.21213204,0.10606602 +0.024999999,0.075,0.18898816,0.18898815 +0.024999999,0.075,0.1336348,0.2672696 +0.025000002,0.075,0.2672696,0.1336348 +0.025000002,0.075,0.23811015,0.23811015 +0.025000004,0.075,0.16836931,0.33673862 +0.024999999,0.075,0.3367386,0.16836932 +0.025,0.125,0.15,0.15 +0.024999999,0.125,0.10606602,0.21213204 +0.024999995,0.125,0.21213204,0.10606602 +0.024999999,0.125,0.18898816,0.18898815 +0.024999999,0.125,0.1336348,0.2672696 +0.025000002,0.125,0.2672696,0.1336348 +0.025000002,0.125,0.23811015,0.23811015 +0.025000004,0.125,0.16836931,0.33673865 +0.024999999,0.125,0.3367386,0.1683693 +0.025,0.175,0.15,0.15 +0.024999999,0.17499998,0.10606602,0.21213202 +0.024999995,0.17500001,0.21213204,0.106066026 +0.024999999,0.17500001,0.18898816,0.18898816 +0.024999999,0.17500001,0.1336348,0.2672696 +0.025000002,0.175,0.2672696,0.1336348 +0.025000002,0.175,0.23811015,0.23811015 +0.025000004,0.175,0.16836931,0.33673862 +0.024999999,0.17500001,0.3367386,0.16836931 +0.025,0.22500001,0.15,0.15 +0.024999999,0.225,0.10606602,0.21213202 +0.024999995,0.22500001,0.21213204,0.10606602 +0.024999999,0.225,0.18898816,0.18898815 +0.024999999,0.225,0.1336348,0.2672696 +0.025000002,0.225,0.2672696,0.1336348 +0.025000002,0.225,0.23811015,0.23811017 +0.025000004,0.22500001,0.16836931,0.33673862 +0.024999999,0.225,0.3367386,0.1683693 +0.025,0.275,0.15,0.14999999 +0.024999999,0.275,0.10606602,0.21213204 +0.024999995,0.275,0.21213204,0.10606605 +0.024999999,0.275,0.18898816,0.18898816 +0.024999999,0.275,0.1336348,0.2672696 +0.025000002,0.275,0.2672696,0.1336348 +0.025000002,0.27499998,0.23811015,0.23811015 +0.025000004,0.275,0.16836931,0.3367386 +0.024999999,0.275,0.3367386,0.16836931 +0.025,0.325,0.15,0.15 +0.024999999,0.32500002,0.10606602,0.21213205 +0.024999995,0.325,0.21213204,0.10606602 +0.024999999,0.325,0.18898816,0.18898815 +0.024999999,0.325,0.1336348,0.2672696 +0.025000002,0.325,0.2672696,0.1336348 +0.025000002,0.325,0.23811015,0.23811015 +0.025000004,0.325,0.16836931,0.3367386 +0.024999999,0.325,0.3367386,0.16836928 +0.025,0.375,0.15,0.14999998 +0.024999999,0.375,0.10606602,0.21213207 +0.024999995,0.375,0.21213204,0.10606605 +0.024999999,0.375,0.18898816,0.18898812 +0.024999999,0.375,0.1336348,0.2672696 +0.025000002,0.375,0.2672696,0.13363484 +0.025000002,0.375,0.23811015,0.23811018 +0.025000004,0.375,0.16836931,0.33673862 +0.024999999,0.375,0.3367386,0.1683693 +0.025,0.425,0.15,0.15 +0.024999999,0.425,0.10606602,0.21213207 +0.024999995,0.425,0.21213204,0.10606602 +0.024999999,0.42499998,0.18898816,0.18898815 +0.024999999,0.425,0.1336348,0.2672696 +0.025000002,0.425,0.2672696,0.1336348 +0.025000002,0.425,0.23811015,0.23811018 +0.025000004,0.425,0.16836931,0.33673862 +0.024999999,0.425,0.3367386,0.1683693 +0.025,0.47500002,0.15,0.15 +0.024999999,0.475,0.10606602,0.21213204 +0.024999995,0.475,0.21213204,0.10606605 +0.024999999,0.475,0.18898816,0.18898815 +0.024999999,0.47500002,0.1336348,0.26726964 +0.025000002,0.475,0.2672696,0.13363487 +0.025000002,0.475,0.23811015,0.23811013 +0.025000004,0.475,0.16836931,0.33673865 +0.024999999,0.47500002,0.3367386,0.16836932 +0.025,0.525,0.15,0.15000004 +0.024999999,0.525,0.10606602,0.21213207 +0.024999995,0.525,0.21213204,0.10606605 +0.024999999,0.525,0.18898816,0.18898815 +0.024999999,0.525,0.1336348,0.26726958 +0.025000002,0.525,0.2672696,0.13363487 +0.025000002,0.525,0.23811015,0.23811015 +0.025000004,0.525,0.16836931,0.3367386 +0.024999999,0.525,0.3367386,0.16836926 +0.025,0.575,0.15,0.14999998 +0.024999999,0.575,0.10606602,0.21213207 +0.024999995,0.57500005,0.21213204,0.10606605 +0.024999999,0.575,0.18898816,0.18898809 +0.024999999,0.575,0.1336348,0.2672696 +0.025000002,0.57500005,0.2672696,0.13363487 +0.025000002,0.575,0.23811015,0.23811015 +0.025000004,0.575,0.16836931,0.3367386 +0.024999999,0.575,0.3367386,0.1683693 +0.025,0.625,0.15,0.14999998 +0.024999999,0.625,0.10606602,0.2121321 +0.024999995,0.625,0.21213204,0.10606599 +0.024999999,0.625,0.18898816,0.18898809 +0.024999999,0.625,0.1336348,0.2672696 +0.025000002,0.625,0.2672696,0.1336348 +0.025000002,0.625,0.23811015,0.23811018 +0.025000004,0.625,0.16836931,0.3367386 +0.024999999,0.625,0.3367386,0.1683693 +0.025,0.675,0.15,0.14999998 +0.024999999,0.675,0.10606602,0.2121321 +0.024999995,0.67499995,0.21213204,0.10606605 +0.024999999,0.675,0.18898816,0.18898809 +0.024999999,0.6750001,0.1336348,0.26726967 +0.025000002,0.67499995,0.2672696,0.13363487 +0.025000002,0.675,0.23811015,0.23811018 +0.025000004,0.675,0.16836931,0.3367386 +0.024999999,0.675,0.3367386,0.1683693 +0.025,0.725,0.15,0.15000004 +0.024999999,0.725,0.10606602,0.21213204 +0.024999995,0.725,0.21213204,0.10606605 +0.024999999,0.725,0.18898816,0.18898815 +0.024999999,0.725,0.1336348,0.2672696 +0.025000002,0.725,0.2672696,0.13363487 +0.025000002,0.725,0.23811015,0.23811013 +0.025000004,0.725,0.16836931,0.3367386 +0.024999999,0.725,0.3367386,0.1683693 +0.025,0.775,0.15,0.15000004 +0.024999999,0.775,0.10606602,0.21213204 +0.024999995,0.775,0.21213204,0.10606599 +0.024999999,0.775,0.18898816,0.18898815 +0.024999999,0.775,0.1336348,0.26726967 +0.025000002,0.775,0.2672696,0.1336348 +0.025000002,0.775,0.23811015,0.23811013 +0.025000004,0.775,0.16836931,0.3367386 +0.024999999,0.775,0.3367386,0.1683693 +0.025,0.825,0.15,0.14999998 +0.024999999,0.825,0.10606602,0.2121321 +0.024999995,0.825,0.21213204,0.10606599 +0.024999999,0.825,0.18898816,0.18898809 +0.024999999,0.82500005,0.1336348,0.26726967 +0.025000002,0.825,0.2672696,0.1336348 +0.025000002,0.825,0.23811015,0.23811018 +0.025000004,0.825,0.16836931,0.3367386 +0.024999999,0.825,0.3367386,0.1683693 +0.025,0.875,0.15,0.14999998 +0.024999999,0.875,0.10606602,0.2121321 +0.024999995,0.875,0.21213204,0.10606599 +0.024999999,0.875,0.18898816,0.18898809 +0.024999999,0.875,0.1336348,0.2672696 +0.025000002,0.875,0.2672696,0.1336348 +0.025000002,0.875,0.23811015,0.23811018 +0.025000004,0.875,0.16836931,0.3367386 +0.024999999,0.875,0.3367386,0.1683693 +0.025,0.925,0.15,0.14999998 +0.024999999,0.925,0.10606602,0.2121321 +0.024999995,0.92499995,0.21213204,0.10606593 +0.024999999,0.925,0.18898816,0.18898809 +0.024999999,0.9250001,0.1336348,0.26726967 +0.025000002,0.92499995,0.2672696,0.13363475 +0.025000002,0.925,0.23811015,0.23811018 +0.025000004,0.92499995,0.16836931,0.33673853 +0.024999999,0.92499995,0.3367386,0.16836923 +0.025,0.97499996,0.15,0.14999998 +0.024999999,0.975,0.10606602,0.21213204 +0.024999995,0.975,0.21213204,0.10606599 +0.024999999,0.97499996,0.18898816,0.18898809 +0.024999999,0.975,0.1336348,0.26726967 +0.025000002,0.975,0.2672696,0.1336348 +0.025000002,0.975,0.23811015,0.23811013 +0.025000004,0.975,0.16836931,0.3367386 +0.024999999,0.975,0.3367386,0.1683693 +0.075,0.025,0.15,0.15 +0.075,0.024999995,0.10606602,0.21213204 +0.074999996,0.024999999,0.21213202,0.10606602 +0.075,0.024999999,0.18898815,0.18898816 +0.075,0.025000002,0.1336348,0.2672696 +0.075,0.024999999,0.2672696,0.1336348 +0.075,0.025000002,0.23811015,0.23811015 +0.075,0.024999999,0.16836932,0.3367386 +0.075,0.025000004,0.33673862,0.16836931 +0.075,0.075,0.15,0.15 +0.075,0.074999996,0.10606602,0.21213202 +0.074999996,0.075,0.21213202,0.10606602 +0.075,0.075,0.18898815,0.18898815 +0.075,0.075,0.1336348,0.2672696 +0.075,0.075,0.2672696,0.1336348 +0.075,0.075,0.23811015,0.23811015 +0.075,0.075,0.16836932,0.33673862 +0.075,0.075,0.33673862,0.16836932 +0.075,0.125,0.15,0.15 +0.075,0.125,0.10606602,0.21213204 +0.074999996,0.125,0.21213202,0.10606602 +0.075,0.125,0.18898815,0.18898815 +0.075,0.125,0.1336348,0.2672696 +0.075,0.125,0.2672696,0.1336348 +0.075,0.125,0.23811015,0.23811015 +0.075,0.125,0.16836932,0.33673865 +0.075,0.125,0.33673862,0.1683693 +0.075,0.175,0.15,0.15 +0.075,0.17499998,0.10606602,0.21213202 +0.074999996,0.17500001,0.21213202,0.106066026 +0.075,0.17500001,0.18898815,0.18898816 +0.075,0.17500001,0.1336348,0.2672696 +0.075,0.175,0.2672696,0.1336348 +0.075,0.175,0.23811015,0.23811015 +0.075,0.175,0.16836932,0.33673862 +0.075,0.17500001,0.33673862,0.16836931 +0.075,0.22500001,0.15,0.15 +0.075,0.225,0.10606602,0.21213202 +0.074999996,0.22500001,0.21213202,0.10606602 +0.075,0.225,0.18898815,0.18898815 +0.075,0.225,0.1336348,0.2672696 +0.075,0.225,0.2672696,0.1336348 +0.075,0.225,0.23811015,0.23811017 +0.075,0.22500001,0.16836932,0.33673862 +0.075,0.225,0.33673862,0.1683693 +0.075,0.275,0.15,0.14999999 +0.075,0.275,0.10606602,0.21213204 +0.074999996,0.275,0.21213202,0.10606605 +0.075,0.275,0.18898815,0.18898816 +0.075,0.275,0.1336348,0.2672696 +0.075,0.275,0.2672696,0.1336348 +0.075,0.27499998,0.23811015,0.23811015 +0.075,0.275,0.16836932,0.3367386 +0.075,0.275,0.33673862,0.16836931 +0.075,0.325,0.15,0.15 +0.075,0.32500002,0.10606602,0.21213205 +0.074999996,0.325,0.21213202,0.10606602 +0.075,0.325,0.18898815,0.18898815 +0.075,0.325,0.1336348,0.2672696 +0.075,0.325,0.2672696,0.1336348 +0.075,0.325,0.23811015,0.23811015 +0.075,0.325,0.16836932,0.3367386 +0.075,0.325,0.33673862,0.16836928 +0.075,0.375,0.15,0.14999998 +0.075,0.375,0.10606602,0.21213207 +0.074999996,0.375,0.21213202,0.10606605 +0.075,0.375,0.18898815,0.18898812 +0.075,0.375,0.1336348,0.2672696 +0.075,0.375,0.2672696,0.13363484 +0.075,0.375,0.23811015,0.23811018 +0.075,0.375,0.16836932,0.33673862 +0.075,0.375,0.33673862,0.1683693 +0.075,0.425,0.15,0.15 +0.075,0.425,0.10606602,0.21213207 +0.074999996,0.425,0.21213202,0.10606602 +0.075,0.42499998,0.18898815,0.18898815 +0.075,0.425,0.1336348,0.2672696 +0.075,0.425,0.2672696,0.1336348 +0.075,0.425,0.23811015,0.23811018 +0.075,0.425,0.16836932,0.33673862 +0.075,0.425,0.33673862,0.1683693 +0.075,0.47500002,0.15,0.15 +0.075,0.475,0.10606602,0.21213204 +0.074999996,0.475,0.21213202,0.10606605 +0.075,0.475,0.18898815,0.18898815 +0.075,0.47500002,0.1336348,0.26726964 +0.075,0.475,0.2672696,0.13363487 +0.075,0.475,0.23811015,0.23811013 +0.075,0.475,0.16836932,0.33673865 +0.075,0.47500002,0.33673862,0.16836932 +0.075,0.525,0.15,0.15000004 +0.075,0.525,0.10606602,0.21213207 +0.074999996,0.525,0.21213202,0.10606605 +0.075,0.525,0.18898815,0.18898815 +0.075,0.525,0.1336348,0.26726958 +0.075,0.525,0.2672696,0.13363487 +0.075,0.525,0.23811015,0.23811015 +0.075,0.525,0.16836932,0.3367386 +0.075,0.525,0.33673862,0.16836926 +0.075,0.575,0.15,0.14999998 +0.075,0.575,0.10606602,0.21213207 +0.074999996,0.57500005,0.21213202,0.10606605 +0.075,0.575,0.18898815,0.18898809 +0.075,0.575,0.1336348,0.2672696 +0.075,0.57500005,0.2672696,0.13363487 +0.075,0.575,0.23811015,0.23811015 +0.075,0.575,0.16836932,0.3367386 +0.075,0.575,0.33673862,0.1683693 +0.075,0.625,0.15,0.14999998 +0.075,0.625,0.10606602,0.2121321 +0.074999996,0.625,0.21213202,0.10606599 +0.075,0.625,0.18898815,0.18898809 +0.075,0.625,0.1336348,0.2672696 +0.075,0.625,0.2672696,0.1336348 +0.075,0.625,0.23811015,0.23811018 +0.075,0.625,0.16836932,0.3367386 +0.075,0.625,0.33673862,0.1683693 +0.075,0.675,0.15,0.14999998 +0.075,0.675,0.10606602,0.2121321 +0.074999996,0.67499995,0.21213202,0.10606605 +0.075,0.675,0.18898815,0.18898809 +0.075,0.6750001,0.1336348,0.26726967 +0.075,0.67499995,0.2672696,0.13363487 +0.075,0.675,0.23811015,0.23811018 +0.075,0.675,0.16836932,0.3367386 +0.075,0.675,0.33673862,0.1683693 +0.075,0.725,0.15,0.15000004 +0.075,0.725,0.10606602,0.21213204 +0.074999996,0.725,0.21213202,0.10606605 +0.075,0.725,0.18898815,0.18898815 +0.075,0.725,0.1336348,0.2672696 +0.075,0.725,0.2672696,0.13363487 +0.075,0.725,0.23811015,0.23811013 +0.075,0.725,0.16836932,0.3367386 +0.075,0.725,0.33673862,0.1683693 +0.075,0.775,0.15,0.15000004 +0.075,0.775,0.10606602,0.21213204 +0.074999996,0.775,0.21213202,0.10606599 +0.075,0.775,0.18898815,0.18898815 +0.075,0.775,0.1336348,0.26726967 +0.075,0.775,0.2672696,0.1336348 +0.075,0.775,0.23811015,0.23811013 +0.075,0.775,0.16836932,0.3367386 +0.075,0.775,0.33673862,0.1683693 +0.075,0.825,0.15,0.14999998 +0.075,0.825,0.10606602,0.2121321 +0.074999996,0.825,0.21213202,0.10606599 +0.075,0.825,0.18898815,0.18898809 +0.075,0.82500005,0.1336348,0.26726967 +0.075,0.825,0.2672696,0.1336348 +0.075,0.825,0.23811015,0.23811018 +0.075,0.825,0.16836932,0.3367386 +0.075,0.825,0.33673862,0.1683693 +0.075,0.875,0.15,0.14999998 +0.075,0.875,0.10606602,0.2121321 +0.074999996,0.875,0.21213202,0.10606599 +0.075,0.875,0.18898815,0.18898809 +0.075,0.875,0.1336348,0.2672696 +0.075,0.875,0.2672696,0.1336348 +0.075,0.875,0.23811015,0.23811018 +0.075,0.875,0.16836932,0.3367386 +0.075,0.875,0.33673862,0.1683693 +0.075,0.925,0.15,0.14999998 +0.075,0.925,0.10606602,0.2121321 +0.074999996,0.92499995,0.21213202,0.10606593 +0.075,0.925,0.18898815,0.18898809 +0.075,0.9250001,0.1336348,0.26726967 +0.075,0.92499995,0.2672696,0.13363475 +0.075,0.925,0.23811015,0.23811018 +0.075,0.92499995,0.16836932,0.33673853 +0.075,0.92499995,0.33673862,0.16836923 +0.075,0.97499996,0.15,0.14999998 +0.075,0.975,0.10606602,0.21213204 +0.074999996,0.975,0.21213202,0.10606599 +0.075,0.97499996,0.18898815,0.18898809 +0.075,0.975,0.1336348,0.26726967 +0.075,0.975,0.2672696,0.1336348 +0.075,0.975,0.23811015,0.23811013 +0.075,0.975,0.16836932,0.3367386 +0.075,0.975,0.33673862,0.1683693 +0.125,0.025,0.15,0.15 +0.125,0.024999995,0.10606602,0.21213204 +0.125,0.024999999,0.21213204,0.10606602 +0.125,0.024999999,0.18898815,0.18898816 +0.125,0.025000002,0.1336348,0.2672696 +0.125,0.024999999,0.2672696,0.1336348 +0.125,0.025000002,0.23811015,0.23811015 +0.125,0.024999999,0.1683693,0.3367386 +0.125,0.025000004,0.33673865,0.16836931 +0.125,0.075,0.15,0.15 +0.125,0.074999996,0.10606602,0.21213202 +0.125,0.075,0.21213204,0.10606602 +0.125,0.075,0.18898815,0.18898815 +0.125,0.075,0.1336348,0.2672696 +0.125,0.075,0.2672696,0.1336348 +0.125,0.075,0.23811015,0.23811015 +0.125,0.075,0.1683693,0.33673862 +0.125,0.075,0.33673865,0.16836932 +0.125,0.125,0.15,0.15 +0.125,0.125,0.10606602,0.21213204 +0.125,0.125,0.21213204,0.10606602 +0.125,0.125,0.18898815,0.18898815 +0.125,0.125,0.1336348,0.2672696 +0.125,0.125,0.2672696,0.1336348 +0.125,0.125,0.23811015,0.23811015 +0.125,0.125,0.1683693,0.33673865 +0.125,0.125,0.33673865,0.1683693 +0.125,0.175,0.15,0.15 +0.125,0.17499998,0.10606602,0.21213202 +0.125,0.17500001,0.21213204,0.106066026 +0.125,0.17500001,0.18898815,0.18898816 +0.125,0.17500001,0.1336348,0.2672696 +0.125,0.175,0.2672696,0.1336348 +0.125,0.175,0.23811015,0.23811015 +0.125,0.175,0.1683693,0.33673862 +0.125,0.17500001,0.33673865,0.16836931 +0.125,0.22500001,0.15,0.15 +0.125,0.225,0.10606602,0.21213202 +0.125,0.22500001,0.21213204,0.10606602 +0.125,0.225,0.18898815,0.18898815 +0.125,0.225,0.1336348,0.2672696 +0.125,0.225,0.2672696,0.1336348 +0.125,0.225,0.23811015,0.23811017 +0.125,0.22500001,0.1683693,0.33673862 +0.125,0.225,0.33673865,0.1683693 +0.125,0.275,0.15,0.14999999 +0.125,0.275,0.10606602,0.21213204 +0.125,0.275,0.21213204,0.10606605 +0.125,0.275,0.18898815,0.18898816 +0.125,0.275,0.1336348,0.2672696 +0.125,0.275,0.2672696,0.1336348 +0.125,0.27499998,0.23811015,0.23811015 +0.125,0.275,0.1683693,0.3367386 +0.125,0.275,0.33673865,0.16836931 +0.125,0.325,0.15,0.15 +0.125,0.32500002,0.10606602,0.21213205 +0.125,0.325,0.21213204,0.10606602 +0.125,0.325,0.18898815,0.18898815 +0.125,0.325,0.1336348,0.2672696 +0.125,0.325,0.2672696,0.1336348 +0.125,0.325,0.23811015,0.23811015 +0.125,0.325,0.1683693,0.3367386 +0.125,0.325,0.33673865,0.16836928 +0.125,0.375,0.15,0.14999998 +0.125,0.375,0.10606602,0.21213207 +0.125,0.375,0.21213204,0.10606605 +0.125,0.375,0.18898815,0.18898812 +0.125,0.375,0.1336348,0.2672696 +0.125,0.375,0.2672696,0.13363484 +0.125,0.375,0.23811015,0.23811018 +0.125,0.375,0.1683693,0.33673862 +0.125,0.375,0.33673865,0.1683693 +0.125,0.425,0.15,0.15 +0.125,0.425,0.10606602,0.21213207 +0.125,0.425,0.21213204,0.10606602 +0.125,0.42499998,0.18898815,0.18898815 +0.125,0.425,0.1336348,0.2672696 +0.125,0.425,0.2672696,0.1336348 +0.125,0.425,0.23811015,0.23811018 +0.125,0.425,0.1683693,0.33673862 +0.125,0.425,0.33673865,0.1683693 +0.125,0.47500002,0.15,0.15 +0.125,0.475,0.10606602,0.21213204 +0.125,0.475,0.21213204,0.10606605 +0.125,0.475,0.18898815,0.18898815 +0.125,0.47500002,0.1336348,0.26726964 +0.125,0.475,0.2672696,0.13363487 +0.125,0.475,0.23811015,0.23811013 +0.125,0.475,0.1683693,0.33673865 +0.125,0.47500002,0.33673865,0.16836932 +0.125,0.525,0.15,0.15000004 +0.125,0.525,0.10606602,0.21213207 +0.125,0.525,0.21213204,0.10606605 +0.125,0.525,0.18898815,0.18898815 +0.125,0.525,0.1336348,0.26726958 +0.125,0.525,0.2672696,0.13363487 +0.125,0.525,0.23811015,0.23811015 +0.125,0.525,0.1683693,0.3367386 +0.125,0.525,0.33673865,0.16836926 +0.125,0.575,0.15,0.14999998 +0.125,0.575,0.10606602,0.21213207 +0.125,0.57500005,0.21213204,0.10606605 +0.125,0.575,0.18898815,0.18898809 +0.125,0.575,0.1336348,0.2672696 +0.125,0.57500005,0.2672696,0.13363487 +0.125,0.575,0.23811015,0.23811015 +0.125,0.575,0.1683693,0.3367386 +0.125,0.575,0.33673865,0.1683693 +0.125,0.625,0.15,0.14999998 +0.125,0.625,0.10606602,0.2121321 +0.125,0.625,0.21213204,0.10606599 +0.125,0.625,0.18898815,0.18898809 +0.125,0.625,0.1336348,0.2672696 +0.125,0.625,0.2672696,0.1336348 +0.125,0.625,0.23811015,0.23811018 +0.125,0.625,0.1683693,0.3367386 +0.125,0.625,0.33673865,0.1683693 +0.125,0.675,0.15,0.14999998 +0.125,0.675,0.10606602,0.2121321 +0.125,0.67499995,0.21213204,0.10606605 +0.125,0.675,0.18898815,0.18898809 +0.125,0.6750001,0.1336348,0.26726967 +0.125,0.67499995,0.2672696,0.13363487 +0.125,0.675,0.23811015,0.23811018 +0.125,0.675,0.1683693,0.3367386 +0.125,0.675,0.33673865,0.1683693 +0.125,0.725,0.15,0.15000004 +0.125,0.725,0.10606602,0.21213204 +0.125,0.725,0.21213204,0.10606605 +0.125,0.725,0.18898815,0.18898815 +0.125,0.725,0.1336348,0.2672696 +0.125,0.725,0.2672696,0.13363487 +0.125,0.725,0.23811015,0.23811013 +0.125,0.725,0.1683693,0.3367386 +0.125,0.725,0.33673865,0.1683693 +0.125,0.775,0.15,0.15000004 +0.125,0.775,0.10606602,0.21213204 +0.125,0.775,0.21213204,0.10606599 +0.125,0.775,0.18898815,0.18898815 +0.125,0.775,0.1336348,0.26726967 +0.125,0.775,0.2672696,0.1336348 +0.125,0.775,0.23811015,0.23811013 +0.125,0.775,0.1683693,0.3367386 +0.125,0.775,0.33673865,0.1683693 +0.125,0.825,0.15,0.14999998 +0.125,0.825,0.10606602,0.2121321 +0.125,0.825,0.21213204,0.10606599 +0.125,0.825,0.18898815,0.18898809 +0.125,0.82500005,0.1336348,0.26726967 +0.125,0.825,0.2672696,0.1336348 +0.125,0.825,0.23811015,0.23811018 +0.125,0.825,0.1683693,0.3367386 +0.125,0.825,0.33673865,0.1683693 +0.125,0.875,0.15,0.14999998 +0.125,0.875,0.10606602,0.2121321 +0.125,0.875,0.21213204,0.10606599 +0.125,0.875,0.18898815,0.18898809 +0.125,0.875,0.1336348,0.2672696 +0.125,0.875,0.2672696,0.1336348 +0.125,0.875,0.23811015,0.23811018 +0.125,0.875,0.1683693,0.3367386 +0.125,0.875,0.33673865,0.1683693 +0.125,0.925,0.15,0.14999998 +0.125,0.925,0.10606602,0.2121321 +0.125,0.92499995,0.21213204,0.10606593 +0.125,0.925,0.18898815,0.18898809 +0.125,0.9250001,0.1336348,0.26726967 +0.125,0.92499995,0.2672696,0.13363475 +0.125,0.925,0.23811015,0.23811018 +0.125,0.92499995,0.1683693,0.33673853 +0.125,0.92499995,0.33673865,0.16836923 +0.125,0.97499996,0.15,0.14999998 +0.125,0.975,0.10606602,0.21213204 +0.125,0.975,0.21213204,0.10606599 +0.125,0.97499996,0.18898815,0.18898809 +0.125,0.975,0.1336348,0.26726967 +0.125,0.975,0.2672696,0.1336348 +0.125,0.975,0.23811015,0.23811013 +0.125,0.975,0.1683693,0.3367386 +0.125,0.975,0.33673865,0.1683693 +0.175,0.025,0.15,0.15 +0.17500001,0.024999995,0.106066026,0.21213204 +0.17499998,0.024999999,0.21213202,0.10606602 +0.17500001,0.024999999,0.18898816,0.18898816 +0.175,0.025000002,0.1336348,0.2672696 +0.17500001,0.024999999,0.2672696,0.1336348 +0.175,0.025000002,0.23811015,0.23811015 +0.17500001,0.024999999,0.16836931,0.3367386 +0.175,0.025000004,0.33673862,0.16836931 +0.175,0.075,0.15,0.15 +0.17500001,0.074999996,0.106066026,0.21213202 +0.17499998,0.075,0.21213202,0.10606602 +0.17500001,0.075,0.18898816,0.18898815 +0.175,0.075,0.1336348,0.2672696 +0.17500001,0.075,0.2672696,0.1336348 +0.175,0.075,0.23811015,0.23811015 +0.17500001,0.075,0.16836931,0.33673862 +0.175,0.075,0.33673862,0.16836932 +0.175,0.125,0.15,0.15 +0.17500001,0.125,0.106066026,0.21213204 +0.17499998,0.125,0.21213202,0.10606602 +0.17500001,0.125,0.18898816,0.18898815 +0.175,0.125,0.1336348,0.2672696 +0.17500001,0.125,0.2672696,0.1336348 +0.175,0.125,0.23811015,0.23811015 +0.17500001,0.125,0.16836931,0.33673865 +0.175,0.125,0.33673862,0.1683693 +0.175,0.175,0.15,0.15 +0.17500001,0.17499998,0.106066026,0.21213202 +0.17499998,0.17500001,0.21213202,0.106066026 +0.17500001,0.17500001,0.18898816,0.18898816 +0.175,0.17500001,0.1336348,0.2672696 +0.17500001,0.175,0.2672696,0.1336348 +0.175,0.175,0.23811015,0.23811015 +0.17500001,0.175,0.16836931,0.33673862 +0.175,0.17500001,0.33673862,0.16836931 +0.175,0.22500001,0.15,0.15 +0.17500001,0.225,0.106066026,0.21213202 +0.17499998,0.22500001,0.21213202,0.10606602 +0.17500001,0.225,0.18898816,0.18898815 +0.175,0.225,0.1336348,0.2672696 +0.17500001,0.225,0.2672696,0.1336348 +0.175,0.225,0.23811015,0.23811017 +0.17500001,0.22500001,0.16836931,0.33673862 +0.175,0.225,0.33673862,0.1683693 +0.175,0.275,0.15,0.14999999 +0.17500001,0.275,0.106066026,0.21213204 +0.17499998,0.275,0.21213202,0.10606605 +0.17500001,0.275,0.18898816,0.18898816 +0.175,0.275,0.1336348,0.2672696 +0.17500001,0.275,0.2672696,0.1336348 +0.175,0.27499998,0.23811015,0.23811015 +0.17500001,0.275,0.16836931,0.3367386 +0.175,0.275,0.33673862,0.16836931 +0.175,0.325,0.15,0.15 +0.17500001,0.32500002,0.106066026,0.21213205 +0.17499998,0.325,0.21213202,0.10606602 +0.17500001,0.325,0.18898816,0.18898815 +0.175,0.325,0.1336348,0.2672696 +0.17500001,0.325,0.2672696,0.1336348 +0.175,0.325,0.23811015,0.23811015 +0.17500001,0.325,0.16836931,0.3367386 +0.175,0.325,0.33673862,0.16836928 +0.175,0.375,0.15,0.14999998 +0.17500001,0.375,0.106066026,0.21213207 +0.17499998,0.375,0.21213202,0.10606605 +0.17500001,0.375,0.18898816,0.18898812 +0.175,0.375,0.1336348,0.2672696 +0.17500001,0.375,0.2672696,0.13363484 +0.175,0.375,0.23811015,0.23811018 +0.17500001,0.375,0.16836931,0.33673862 +0.175,0.375,0.33673862,0.1683693 +0.175,0.425,0.15,0.15 +0.17500001,0.425,0.106066026,0.21213207 +0.17499998,0.425,0.21213202,0.10606602 +0.17500001,0.42499998,0.18898816,0.18898815 +0.175,0.425,0.1336348,0.2672696 +0.17500001,0.425,0.2672696,0.1336348 +0.175,0.425,0.23811015,0.23811018 +0.17500001,0.425,0.16836931,0.33673862 +0.175,0.425,0.33673862,0.1683693 +0.175,0.47500002,0.15,0.15 +0.17500001,0.475,0.106066026,0.21213204 +0.17499998,0.475,0.21213202,0.10606605 +0.17500001,0.475,0.18898816,0.18898815 +0.175,0.47500002,0.1336348,0.26726964 +0.17500001,0.475,0.2672696,0.13363487 +0.175,0.475,0.23811015,0.23811013 +0.17500001,0.475,0.16836931,0.33673865 +0.175,0.47500002,0.33673862,0.16836932 +0.175,0.525,0.15,0.15000004 +0.17500001,0.525,0.106066026,0.21213207 +0.17499998,0.525,0.21213202,0.10606605 +0.17500001,0.525,0.18898816,0.18898815 +0.175,0.525,0.1336348,0.26726958 +0.17500001,0.525,0.2672696,0.13363487 +0.175,0.525,0.23811015,0.23811015 +0.17500001,0.525,0.16836931,0.3367386 +0.175,0.525,0.33673862,0.16836926 +0.175,0.575,0.15,0.14999998 +0.17500001,0.575,0.106066026,0.21213207 +0.17499998,0.57500005,0.21213202,0.10606605 +0.17500001,0.575,0.18898816,0.18898809 +0.175,0.575,0.1336348,0.2672696 +0.17500001,0.57500005,0.2672696,0.13363487 +0.175,0.575,0.23811015,0.23811015 +0.17500001,0.575,0.16836931,0.3367386 +0.175,0.575,0.33673862,0.1683693 +0.175,0.625,0.15,0.14999998 +0.17500001,0.625,0.106066026,0.2121321 +0.17499998,0.625,0.21213202,0.10606599 +0.17500001,0.625,0.18898816,0.18898809 +0.175,0.625,0.1336348,0.2672696 +0.17500001,0.625,0.2672696,0.1336348 +0.175,0.625,0.23811015,0.23811018 +0.17500001,0.625,0.16836931,0.3367386 +0.175,0.625,0.33673862,0.1683693 +0.175,0.675,0.15,0.14999998 +0.17500001,0.675,0.106066026,0.2121321 +0.17499998,0.67499995,0.21213202,0.10606605 +0.17500001,0.675,0.18898816,0.18898809 +0.175,0.6750001,0.1336348,0.26726967 +0.17500001,0.67499995,0.2672696,0.13363487 +0.175,0.675,0.23811015,0.23811018 +0.17500001,0.675,0.16836931,0.3367386 +0.175,0.675,0.33673862,0.1683693 +0.175,0.725,0.15,0.15000004 +0.17500001,0.725,0.106066026,0.21213204 +0.17499998,0.725,0.21213202,0.10606605 +0.17500001,0.725,0.18898816,0.18898815 +0.175,0.725,0.1336348,0.2672696 +0.17500001,0.725,0.2672696,0.13363487 +0.175,0.725,0.23811015,0.23811013 +0.17500001,0.725,0.16836931,0.3367386 +0.175,0.725,0.33673862,0.1683693 +0.175,0.775,0.15,0.15000004 +0.17500001,0.775,0.106066026,0.21213204 +0.17499998,0.775,0.21213202,0.10606599 +0.17500001,0.775,0.18898816,0.18898815 +0.175,0.775,0.1336348,0.26726967 +0.17500001,0.775,0.2672696,0.1336348 +0.175,0.775,0.23811015,0.23811013 +0.17500001,0.775,0.16836931,0.3367386 +0.175,0.775,0.33673862,0.1683693 +0.175,0.825,0.15,0.14999998 +0.17500001,0.825,0.106066026,0.2121321 +0.17499998,0.825,0.21213202,0.10606599 +0.17500001,0.825,0.18898816,0.18898809 +0.175,0.82500005,0.1336348,0.26726967 +0.17500001,0.825,0.2672696,0.1336348 +0.175,0.825,0.23811015,0.23811018 +0.17500001,0.825,0.16836931,0.3367386 +0.175,0.825,0.33673862,0.1683693 +0.175,0.875,0.15,0.14999998 +0.17500001,0.875,0.106066026,0.2121321 +0.17499998,0.875,0.21213202,0.10606599 +0.17500001,0.875,0.18898816,0.18898809 +0.175,0.875,0.1336348,0.2672696 +0.17500001,0.875,0.2672696,0.1336348 +0.175,0.875,0.23811015,0.23811018 +0.17500001,0.875,0.16836931,0.3367386 +0.175,0.875,0.33673862,0.1683693 +0.175,0.925,0.15,0.14999998 +0.17500001,0.925,0.106066026,0.2121321 +0.17499998,0.92499995,0.21213202,0.10606593 +0.17500001,0.925,0.18898816,0.18898809 +0.175,0.9250001,0.1336348,0.26726967 +0.17500001,0.92499995,0.2672696,0.13363475 +0.175,0.925,0.23811015,0.23811018 +0.17500001,0.92499995,0.16836931,0.33673853 +0.175,0.92499995,0.33673862,0.16836923 +0.175,0.97499996,0.15,0.14999998 +0.17500001,0.975,0.106066026,0.21213204 +0.17499998,0.975,0.21213202,0.10606599 +0.17500001,0.97499996,0.18898816,0.18898809 +0.175,0.975,0.1336348,0.26726967 +0.17500001,0.975,0.2672696,0.1336348 +0.175,0.975,0.23811015,0.23811013 +0.17500001,0.975,0.16836931,0.3367386 +0.175,0.975,0.33673862,0.1683693 +0.22500001,0.025,0.15,0.15 +0.22500001,0.024999995,0.10606602,0.21213204 +0.225,0.024999999,0.21213202,0.10606602 +0.225,0.024999999,0.18898815,0.18898816 +0.225,0.025000002,0.1336348,0.2672696 +0.225,0.024999999,0.2672696,0.1336348 +0.225,0.025000002,0.23811017,0.23811015 +0.225,0.024999999,0.1683693,0.3367386 +0.22500001,0.025000004,0.33673862,0.16836931 +0.22500001,0.075,0.15,0.15 +0.22500001,0.074999996,0.10606602,0.21213202 +0.225,0.075,0.21213202,0.10606602 +0.225,0.075,0.18898815,0.18898815 +0.225,0.075,0.1336348,0.2672696 +0.225,0.075,0.2672696,0.1336348 +0.225,0.075,0.23811017,0.23811015 +0.225,0.075,0.1683693,0.33673862 +0.22500001,0.075,0.33673862,0.16836932 +0.22500001,0.125,0.15,0.15 +0.22500001,0.125,0.10606602,0.21213204 +0.225,0.125,0.21213202,0.10606602 +0.225,0.125,0.18898815,0.18898815 +0.225,0.125,0.1336348,0.2672696 +0.225,0.125,0.2672696,0.1336348 +0.225,0.125,0.23811017,0.23811015 +0.225,0.125,0.1683693,0.33673865 +0.22500001,0.125,0.33673862,0.1683693 +0.22500001,0.175,0.15,0.15 +0.22500001,0.17499998,0.10606602,0.21213202 +0.225,0.17500001,0.21213202,0.106066026 +0.225,0.17500001,0.18898815,0.18898816 +0.225,0.17500001,0.1336348,0.2672696 +0.225,0.175,0.2672696,0.1336348 +0.225,0.175,0.23811017,0.23811015 +0.225,0.175,0.1683693,0.33673862 +0.22500001,0.17500001,0.33673862,0.16836931 +0.22500001,0.22500001,0.15,0.15 +0.22500001,0.225,0.10606602,0.21213202 +0.225,0.22500001,0.21213202,0.10606602 +0.225,0.225,0.18898815,0.18898815 +0.225,0.225,0.1336348,0.2672696 +0.225,0.225,0.2672696,0.1336348 +0.225,0.225,0.23811017,0.23811017 +0.225,0.22500001,0.1683693,0.33673862 +0.22500001,0.225,0.33673862,0.1683693 +0.22500001,0.275,0.15,0.14999999 +0.22500001,0.275,0.10606602,0.21213204 +0.225,0.275,0.21213202,0.10606605 +0.225,0.275,0.18898815,0.18898816 +0.225,0.275,0.1336348,0.2672696 +0.225,0.275,0.2672696,0.1336348 +0.225,0.27499998,0.23811017,0.23811015 +0.225,0.275,0.1683693,0.3367386 +0.22500001,0.275,0.33673862,0.16836931 +0.22500001,0.325,0.15,0.15 +0.22500001,0.32500002,0.10606602,0.21213205 +0.225,0.325,0.21213202,0.10606602 +0.225,0.325,0.18898815,0.18898815 +0.225,0.325,0.1336348,0.2672696 +0.225,0.325,0.2672696,0.1336348 +0.225,0.325,0.23811017,0.23811015 +0.225,0.325,0.1683693,0.3367386 +0.22500001,0.325,0.33673862,0.16836928 +0.22500001,0.375,0.15,0.14999998 +0.22500001,0.375,0.10606602,0.21213207 +0.225,0.375,0.21213202,0.10606605 +0.225,0.375,0.18898815,0.18898812 +0.225,0.375,0.1336348,0.2672696 +0.225,0.375,0.2672696,0.13363484 +0.225,0.375,0.23811017,0.23811018 +0.225,0.375,0.1683693,0.33673862 +0.22500001,0.375,0.33673862,0.1683693 +0.22500001,0.425,0.15,0.15 +0.22500001,0.425,0.10606602,0.21213207 +0.225,0.425,0.21213202,0.10606602 +0.225,0.42499998,0.18898815,0.18898815 +0.225,0.425,0.1336348,0.2672696 +0.225,0.425,0.2672696,0.1336348 +0.225,0.425,0.23811017,0.23811018 +0.225,0.425,0.1683693,0.33673862 +0.22500001,0.425,0.33673862,0.1683693 +0.22500001,0.47500002,0.15,0.15 +0.22500001,0.475,0.10606602,0.21213204 +0.225,0.475,0.21213202,0.10606605 +0.225,0.475,0.18898815,0.18898815 +0.225,0.47500002,0.1336348,0.26726964 +0.225,0.475,0.2672696,0.13363487 +0.225,0.475,0.23811017,0.23811013 +0.225,0.475,0.1683693,0.33673865 +0.22500001,0.47500002,0.33673862,0.16836932 +0.22500001,0.525,0.15,0.15000004 +0.22500001,0.525,0.10606602,0.21213207 +0.225,0.525,0.21213202,0.10606605 +0.225,0.525,0.18898815,0.18898815 +0.225,0.525,0.1336348,0.26726958 +0.225,0.525,0.2672696,0.13363487 +0.225,0.525,0.23811017,0.23811015 +0.225,0.525,0.1683693,0.3367386 +0.22500001,0.525,0.33673862,0.16836926 +0.22500001,0.575,0.15,0.14999998 +0.22500001,0.575,0.10606602,0.21213207 +0.225,0.57500005,0.21213202,0.10606605 +0.225,0.575,0.18898815,0.18898809 +0.225,0.575,0.1336348,0.2672696 +0.225,0.57500005,0.2672696,0.13363487 +0.225,0.575,0.23811017,0.23811015 +0.225,0.575,0.1683693,0.3367386 +0.22500001,0.575,0.33673862,0.1683693 +0.22500001,0.625,0.15,0.14999998 +0.22500001,0.625,0.10606602,0.2121321 +0.225,0.625,0.21213202,0.10606599 +0.225,0.625,0.18898815,0.18898809 +0.225,0.625,0.1336348,0.2672696 +0.225,0.625,0.2672696,0.1336348 +0.225,0.625,0.23811017,0.23811018 +0.225,0.625,0.1683693,0.3367386 +0.22500001,0.625,0.33673862,0.1683693 +0.22500001,0.675,0.15,0.14999998 +0.22500001,0.675,0.10606602,0.2121321 +0.225,0.67499995,0.21213202,0.10606605 +0.225,0.675,0.18898815,0.18898809 +0.225,0.6750001,0.1336348,0.26726967 +0.225,0.67499995,0.2672696,0.13363487 +0.225,0.675,0.23811017,0.23811018 +0.225,0.675,0.1683693,0.3367386 +0.22500001,0.675,0.33673862,0.1683693 +0.22500001,0.725,0.15,0.15000004 +0.22500001,0.725,0.10606602,0.21213204 +0.225,0.725,0.21213202,0.10606605 +0.225,0.725,0.18898815,0.18898815 +0.225,0.725,0.1336348,0.2672696 +0.225,0.725,0.2672696,0.13363487 +0.225,0.725,0.23811017,0.23811013 +0.225,0.725,0.1683693,0.3367386 +0.22500001,0.725,0.33673862,0.1683693 +0.22500001,0.775,0.15,0.15000004 +0.22500001,0.775,0.10606602,0.21213204 +0.225,0.775,0.21213202,0.10606599 +0.225,0.775,0.18898815,0.18898815 +0.225,0.775,0.1336348,0.26726967 +0.225,0.775,0.2672696,0.1336348 +0.225,0.775,0.23811017,0.23811013 +0.225,0.775,0.1683693,0.3367386 +0.22500001,0.775,0.33673862,0.1683693 +0.22500001,0.825,0.15,0.14999998 +0.22500001,0.825,0.10606602,0.2121321 +0.225,0.825,0.21213202,0.10606599 +0.225,0.825,0.18898815,0.18898809 +0.225,0.82500005,0.1336348,0.26726967 +0.225,0.825,0.2672696,0.1336348 +0.225,0.825,0.23811017,0.23811018 +0.225,0.825,0.1683693,0.3367386 +0.22500001,0.825,0.33673862,0.1683693 +0.22500001,0.875,0.15,0.14999998 +0.22500001,0.875,0.10606602,0.2121321 +0.225,0.875,0.21213202,0.10606599 +0.225,0.875,0.18898815,0.18898809 +0.225,0.875,0.1336348,0.2672696 +0.225,0.875,0.2672696,0.1336348 +0.225,0.875,0.23811017,0.23811018 +0.225,0.875,0.1683693,0.3367386 +0.22500001,0.875,0.33673862,0.1683693 +0.22500001,0.925,0.15,0.14999998 +0.22500001,0.925,0.10606602,0.2121321 +0.225,0.92499995,0.21213202,0.10606593 +0.225,0.925,0.18898815,0.18898809 +0.225,0.9250001,0.1336348,0.26726967 +0.225,0.92499995,0.2672696,0.13363475 +0.225,0.925,0.23811017,0.23811018 +0.225,0.92499995,0.1683693,0.33673853 +0.22500001,0.92499995,0.33673862,0.16836923 +0.22500001,0.97499996,0.15,0.14999998 +0.22500001,0.975,0.10606602,0.21213204 +0.225,0.975,0.21213202,0.10606599 +0.225,0.97499996,0.18898815,0.18898809 +0.225,0.975,0.1336348,0.26726967 +0.225,0.975,0.2672696,0.1336348 +0.225,0.975,0.23811017,0.23811013 +0.225,0.975,0.1683693,0.3367386 +0.22500001,0.975,0.33673862,0.1683693 +0.275,0.025,0.14999999,0.15 +0.275,0.024999995,0.10606605,0.21213204 +0.275,0.024999999,0.21213204,0.10606602 +0.275,0.024999999,0.18898816,0.18898816 +0.275,0.025000002,0.1336348,0.2672696 +0.275,0.024999999,0.2672696,0.1336348 +0.27499998,0.025000002,0.23811015,0.23811015 +0.275,0.024999999,0.16836931,0.3367386 +0.275,0.025000004,0.3367386,0.16836931 +0.275,0.075,0.14999999,0.15 +0.275,0.074999996,0.10606605,0.21213202 +0.275,0.075,0.21213204,0.10606602 +0.275,0.075,0.18898816,0.18898815 +0.275,0.075,0.1336348,0.2672696 +0.275,0.075,0.2672696,0.1336348 +0.27499998,0.075,0.23811015,0.23811015 +0.275,0.075,0.16836931,0.33673862 +0.275,0.075,0.3367386,0.16836932 +0.275,0.125,0.14999999,0.15 +0.275,0.125,0.10606605,0.21213204 +0.275,0.125,0.21213204,0.10606602 +0.275,0.125,0.18898816,0.18898815 +0.275,0.125,0.1336348,0.2672696 +0.275,0.125,0.2672696,0.1336348 +0.27499998,0.125,0.23811015,0.23811015 +0.275,0.125,0.16836931,0.33673865 +0.275,0.125,0.3367386,0.1683693 +0.275,0.175,0.14999999,0.15 +0.275,0.17499998,0.10606605,0.21213202 +0.275,0.17500001,0.21213204,0.106066026 +0.275,0.17500001,0.18898816,0.18898816 +0.275,0.17500001,0.1336348,0.2672696 +0.275,0.175,0.2672696,0.1336348 +0.27499998,0.175,0.23811015,0.23811015 +0.275,0.175,0.16836931,0.33673862 +0.275,0.17500001,0.3367386,0.16836931 +0.275,0.22500001,0.14999999,0.15 +0.275,0.225,0.10606605,0.21213202 +0.275,0.22500001,0.21213204,0.10606602 +0.275,0.225,0.18898816,0.18898815 +0.275,0.225,0.1336348,0.2672696 +0.275,0.225,0.2672696,0.1336348 +0.27499998,0.225,0.23811015,0.23811017 +0.275,0.22500001,0.16836931,0.33673862 +0.275,0.225,0.3367386,0.1683693 +0.275,0.275,0.14999999,0.14999999 +0.275,0.275,0.10606605,0.21213204 +0.275,0.275,0.21213204,0.10606605 +0.275,0.275,0.18898816,0.18898816 +0.275,0.275,0.1336348,0.2672696 +0.275,0.275,0.2672696,0.1336348 +0.27499998,0.27499998,0.23811015,0.23811015 +0.275,0.275,0.16836931,0.3367386 +0.275,0.275,0.3367386,0.16836931 +0.275,0.325,0.14999999,0.15 +0.275,0.32500002,0.10606605,0.21213205 +0.275,0.325,0.21213204,0.10606602 +0.275,0.325,0.18898816,0.18898815 +0.275,0.325,0.1336348,0.2672696 +0.275,0.325,0.2672696,0.1336348 +0.27499998,0.325,0.23811015,0.23811015 +0.275,0.325,0.16836931,0.3367386 +0.275,0.325,0.3367386,0.16836928 +0.275,0.375,0.14999999,0.14999998 +0.275,0.375,0.10606605,0.21213207 +0.275,0.375,0.21213204,0.10606605 +0.275,0.375,0.18898816,0.18898812 +0.275,0.375,0.1336348,0.2672696 +0.275,0.375,0.2672696,0.13363484 +0.27499998,0.375,0.23811015,0.23811018 +0.275,0.375,0.16836931,0.33673862 +0.275,0.375,0.3367386,0.1683693 +0.275,0.425,0.14999999,0.15 +0.275,0.425,0.10606605,0.21213207 +0.275,0.425,0.21213204,0.10606602 +0.275,0.42499998,0.18898816,0.18898815 +0.275,0.425,0.1336348,0.2672696 +0.275,0.425,0.2672696,0.1336348 +0.27499998,0.425,0.23811015,0.23811018 +0.275,0.425,0.16836931,0.33673862 +0.275,0.425,0.3367386,0.1683693 +0.275,0.47500002,0.14999999,0.15 +0.275,0.475,0.10606605,0.21213204 +0.275,0.475,0.21213204,0.10606605 +0.275,0.475,0.18898816,0.18898815 +0.275,0.47500002,0.1336348,0.26726964 +0.275,0.475,0.2672696,0.13363487 +0.27499998,0.475,0.23811015,0.23811013 +0.275,0.475,0.16836931,0.33673865 +0.275,0.47500002,0.3367386,0.16836932 +0.275,0.525,0.14999999,0.15000004 +0.275,0.525,0.10606605,0.21213207 +0.275,0.525,0.21213204,0.10606605 +0.275,0.525,0.18898816,0.18898815 +0.275,0.525,0.1336348,0.26726958 +0.275,0.525,0.2672696,0.13363487 +0.27499998,0.525,0.23811015,0.23811015 +0.275,0.525,0.16836931,0.3367386 +0.275,0.525,0.3367386,0.16836926 +0.275,0.575,0.14999999,0.14999998 +0.275,0.575,0.10606605,0.21213207 +0.275,0.57500005,0.21213204,0.10606605 +0.275,0.575,0.18898816,0.18898809 +0.275,0.575,0.1336348,0.2672696 +0.275,0.57500005,0.2672696,0.13363487 +0.27499998,0.575,0.23811015,0.23811015 +0.275,0.575,0.16836931,0.3367386 +0.275,0.575,0.3367386,0.1683693 +0.275,0.625,0.14999999,0.14999998 +0.275,0.625,0.10606605,0.2121321 +0.275,0.625,0.21213204,0.10606599 +0.275,0.625,0.18898816,0.18898809 +0.275,0.625,0.1336348,0.2672696 +0.275,0.625,0.2672696,0.1336348 +0.27499998,0.625,0.23811015,0.23811018 +0.275,0.625,0.16836931,0.3367386 +0.275,0.625,0.3367386,0.1683693 +0.275,0.675,0.14999999,0.14999998 +0.275,0.675,0.10606605,0.2121321 +0.275,0.67499995,0.21213204,0.10606605 +0.275,0.675,0.18898816,0.18898809 +0.275,0.6750001,0.1336348,0.26726967 +0.275,0.67499995,0.2672696,0.13363487 +0.27499998,0.675,0.23811015,0.23811018 +0.275,0.675,0.16836931,0.3367386 +0.275,0.675,0.3367386,0.1683693 +0.275,0.725,0.14999999,0.15000004 +0.275,0.725,0.10606605,0.21213204 +0.275,0.725,0.21213204,0.10606605 +0.275,0.725,0.18898816,0.18898815 +0.275,0.725,0.1336348,0.2672696 +0.275,0.725,0.2672696,0.13363487 +0.27499998,0.725,0.23811015,0.23811013 +0.275,0.725,0.16836931,0.3367386 +0.275,0.725,0.3367386,0.1683693 +0.275,0.775,0.14999999,0.15000004 +0.275,0.775,0.10606605,0.21213204 +0.275,0.775,0.21213204,0.10606599 +0.275,0.775,0.18898816,0.18898815 +0.275,0.775,0.1336348,0.26726967 +0.275,0.775,0.2672696,0.1336348 +0.27499998,0.775,0.23811015,0.23811013 +0.275,0.775,0.16836931,0.3367386 +0.275,0.775,0.3367386,0.1683693 +0.275,0.825,0.14999999,0.14999998 +0.275,0.825,0.10606605,0.2121321 +0.275,0.825,0.21213204,0.10606599 +0.275,0.825,0.18898816,0.18898809 +0.275,0.82500005,0.1336348,0.26726967 +0.275,0.825,0.2672696,0.1336348 +0.27499998,0.825,0.23811015,0.23811018 +0.275,0.825,0.16836931,0.3367386 +0.275,0.825,0.3367386,0.1683693 +0.275,0.875,0.14999999,0.14999998 +0.275,0.875,0.10606605,0.2121321 +0.275,0.875,0.21213204,0.10606599 +0.275,0.875,0.18898816,0.18898809 +0.275,0.875,0.1336348,0.2672696 +0.275,0.875,0.2672696,0.1336348 +0.27499998,0.875,0.23811015,0.23811018 +0.275,0.875,0.16836931,0.3367386 +0.275,0.875,0.3367386,0.1683693 +0.275,0.925,0.14999999,0.14999998 +0.275,0.925,0.10606605,0.2121321 +0.275,0.92499995,0.21213204,0.10606593 +0.275,0.925,0.18898816,0.18898809 +0.275,0.9250001,0.1336348,0.26726967 +0.275,0.92499995,0.2672696,0.13363475 +0.27499998,0.925,0.23811015,0.23811018 +0.275,0.92499995,0.16836931,0.33673853 +0.275,0.92499995,0.3367386,0.16836923 +0.275,0.97499996,0.14999999,0.14999998 +0.275,0.975,0.10606605,0.21213204 +0.275,0.975,0.21213204,0.10606599 +0.275,0.97499996,0.18898816,0.18898809 +0.275,0.975,0.1336348,0.26726967 +0.275,0.975,0.2672696,0.1336348 +0.27499998,0.975,0.23811015,0.23811013 +0.275,0.975,0.16836931,0.3367386 +0.275,0.975,0.3367386,0.1683693 +0.325,0.025,0.15,0.15 +0.325,0.024999995,0.10606602,0.21213204 +0.32500002,0.024999999,0.21213205,0.10606602 +0.325,0.024999999,0.18898815,0.18898816 +0.325,0.025000002,0.1336348,0.2672696 +0.325,0.024999999,0.2672696,0.1336348 +0.325,0.025000002,0.23811015,0.23811015 +0.325,0.024999999,0.16836928,0.3367386 +0.325,0.025000004,0.3367386,0.16836931 +0.325,0.075,0.15,0.15 +0.325,0.074999996,0.10606602,0.21213202 +0.32500002,0.075,0.21213205,0.10606602 +0.325,0.075,0.18898815,0.18898815 +0.325,0.075,0.1336348,0.2672696 +0.325,0.075,0.2672696,0.1336348 +0.325,0.075,0.23811015,0.23811015 +0.325,0.075,0.16836928,0.33673862 +0.325,0.075,0.3367386,0.16836932 +0.325,0.125,0.15,0.15 +0.325,0.125,0.10606602,0.21213204 +0.32500002,0.125,0.21213205,0.10606602 +0.325,0.125,0.18898815,0.18898815 +0.325,0.125,0.1336348,0.2672696 +0.325,0.125,0.2672696,0.1336348 +0.325,0.125,0.23811015,0.23811015 +0.325,0.125,0.16836928,0.33673865 +0.325,0.125,0.3367386,0.1683693 +0.325,0.175,0.15,0.15 +0.325,0.17499998,0.10606602,0.21213202 +0.32500002,0.17500001,0.21213205,0.106066026 +0.325,0.17500001,0.18898815,0.18898816 +0.325,0.17500001,0.1336348,0.2672696 +0.325,0.175,0.2672696,0.1336348 +0.325,0.175,0.23811015,0.23811015 +0.325,0.175,0.16836928,0.33673862 +0.325,0.17500001,0.3367386,0.16836931 +0.325,0.22500001,0.15,0.15 +0.325,0.225,0.10606602,0.21213202 +0.32500002,0.22500001,0.21213205,0.10606602 +0.325,0.225,0.18898815,0.18898815 +0.325,0.225,0.1336348,0.2672696 +0.325,0.225,0.2672696,0.1336348 +0.325,0.225,0.23811015,0.23811017 +0.325,0.22500001,0.16836928,0.33673862 +0.325,0.225,0.3367386,0.1683693 +0.325,0.275,0.15,0.14999999 +0.325,0.275,0.10606602,0.21213204 +0.32500002,0.275,0.21213205,0.10606605 +0.325,0.275,0.18898815,0.18898816 +0.325,0.275,0.1336348,0.2672696 +0.325,0.275,0.2672696,0.1336348 +0.325,0.27499998,0.23811015,0.23811015 +0.325,0.275,0.16836928,0.3367386 +0.325,0.275,0.3367386,0.16836931 +0.325,0.325,0.15,0.15 +0.325,0.32500002,0.10606602,0.21213205 +0.32500002,0.325,0.21213205,0.10606602 +0.325,0.325,0.18898815,0.18898815 +0.325,0.325,0.1336348,0.2672696 +0.325,0.325,0.2672696,0.1336348 +0.325,0.325,0.23811015,0.23811015 +0.325,0.325,0.16836928,0.3367386 +0.325,0.325,0.3367386,0.16836928 +0.325,0.375,0.15,0.14999998 +0.325,0.375,0.10606602,0.21213207 +0.32500002,0.375,0.21213205,0.10606605 +0.325,0.375,0.18898815,0.18898812 +0.325,0.375,0.1336348,0.2672696 +0.325,0.375,0.2672696,0.13363484 +0.325,0.375,0.23811015,0.23811018 +0.325,0.375,0.16836928,0.33673862 +0.325,0.375,0.3367386,0.1683693 +0.325,0.425,0.15,0.15 +0.325,0.425,0.10606602,0.21213207 +0.32500002,0.425,0.21213205,0.10606602 +0.325,0.42499998,0.18898815,0.18898815 +0.325,0.425,0.1336348,0.2672696 +0.325,0.425,0.2672696,0.1336348 +0.325,0.425,0.23811015,0.23811018 +0.325,0.425,0.16836928,0.33673862 +0.325,0.425,0.3367386,0.1683693 +0.325,0.47500002,0.15,0.15 +0.325,0.475,0.10606602,0.21213204 +0.32500002,0.475,0.21213205,0.10606605 +0.325,0.475,0.18898815,0.18898815 +0.325,0.47500002,0.1336348,0.26726964 +0.325,0.475,0.2672696,0.13363487 +0.325,0.475,0.23811015,0.23811013 +0.325,0.475,0.16836928,0.33673865 +0.325,0.47500002,0.3367386,0.16836932 +0.325,0.525,0.15,0.15000004 +0.325,0.525,0.10606602,0.21213207 +0.32500002,0.525,0.21213205,0.10606605 +0.325,0.525,0.18898815,0.18898815 +0.325,0.525,0.1336348,0.26726958 +0.325,0.525,0.2672696,0.13363487 +0.325,0.525,0.23811015,0.23811015 +0.325,0.525,0.16836928,0.3367386 +0.325,0.525,0.3367386,0.16836926 +0.325,0.575,0.15,0.14999998 +0.325,0.575,0.10606602,0.21213207 +0.32500002,0.57500005,0.21213205,0.10606605 +0.325,0.575,0.18898815,0.18898809 +0.325,0.575,0.1336348,0.2672696 +0.325,0.57500005,0.2672696,0.13363487 +0.325,0.575,0.23811015,0.23811015 +0.325,0.575,0.16836928,0.3367386 +0.325,0.575,0.3367386,0.1683693 +0.325,0.625,0.15,0.14999998 +0.325,0.625,0.10606602,0.2121321 +0.32500002,0.625,0.21213205,0.10606599 +0.325,0.625,0.18898815,0.18898809 +0.325,0.625,0.1336348,0.2672696 +0.325,0.625,0.2672696,0.1336348 +0.325,0.625,0.23811015,0.23811018 +0.325,0.625,0.16836928,0.3367386 +0.325,0.625,0.3367386,0.1683693 +0.325,0.675,0.15,0.14999998 +0.325,0.675,0.10606602,0.2121321 +0.32500002,0.67499995,0.21213205,0.10606605 +0.325,0.675,0.18898815,0.18898809 +0.325,0.6750001,0.1336348,0.26726967 +0.325,0.67499995,0.2672696,0.13363487 +0.325,0.675,0.23811015,0.23811018 +0.325,0.675,0.16836928,0.3367386 +0.325,0.675,0.3367386,0.1683693 +0.325,0.725,0.15,0.15000004 +0.325,0.725,0.10606602,0.21213204 +0.32500002,0.725,0.21213205,0.10606605 +0.325,0.725,0.18898815,0.18898815 +0.325,0.725,0.1336348,0.2672696 +0.325,0.725,0.2672696,0.13363487 +0.325,0.725,0.23811015,0.23811013 +0.325,0.725,0.16836928,0.3367386 +0.325,0.725,0.3367386,0.1683693 +0.325,0.775,0.15,0.15000004 +0.325,0.775,0.10606602,0.21213204 +0.32500002,0.775,0.21213205,0.10606599 +0.325,0.775,0.18898815,0.18898815 +0.325,0.775,0.1336348,0.26726967 +0.325,0.775,0.2672696,0.1336348 +0.325,0.775,0.23811015,0.23811013 +0.325,0.775,0.16836928,0.3367386 +0.325,0.775,0.3367386,0.1683693 +0.325,0.825,0.15,0.14999998 +0.325,0.825,0.10606602,0.2121321 +0.32500002,0.825,0.21213205,0.10606599 +0.325,0.825,0.18898815,0.18898809 +0.325,0.82500005,0.1336348,0.26726967 +0.325,0.825,0.2672696,0.1336348 +0.325,0.825,0.23811015,0.23811018 +0.325,0.825,0.16836928,0.3367386 +0.325,0.825,0.3367386,0.1683693 +0.325,0.875,0.15,0.14999998 +0.325,0.875,0.10606602,0.2121321 +0.32500002,0.875,0.21213205,0.10606599 +0.325,0.875,0.18898815,0.18898809 +0.325,0.875,0.1336348,0.2672696 +0.325,0.875,0.2672696,0.1336348 +0.325,0.875,0.23811015,0.23811018 +0.325,0.875,0.16836928,0.3367386 +0.325,0.875,0.3367386,0.1683693 +0.325,0.925,0.15,0.14999998 +0.325,0.925,0.10606602,0.2121321 +0.32500002,0.92499995,0.21213205,0.10606593 +0.325,0.925,0.18898815,0.18898809 +0.325,0.9250001,0.1336348,0.26726967 +0.325,0.92499995,0.2672696,0.13363475 +0.325,0.925,0.23811015,0.23811018 +0.325,0.92499995,0.16836928,0.33673853 +0.325,0.92499995,0.3367386,0.16836923 +0.325,0.97499996,0.15,0.14999998 +0.325,0.975,0.10606602,0.21213204 +0.32500002,0.975,0.21213205,0.10606599 +0.325,0.97499996,0.18898815,0.18898809 +0.325,0.975,0.1336348,0.26726967 +0.325,0.975,0.2672696,0.1336348 +0.325,0.975,0.23811015,0.23811013 +0.325,0.975,0.16836928,0.3367386 +0.325,0.975,0.3367386,0.1683693 +0.375,0.025,0.14999998,0.15 +0.375,0.024999995,0.10606605,0.21213204 +0.375,0.024999999,0.21213207,0.10606602 +0.375,0.024999999,0.18898812,0.18898816 +0.375,0.025000002,0.13363484,0.2672696 +0.375,0.024999999,0.2672696,0.1336348 +0.375,0.025000002,0.23811018,0.23811015 +0.375,0.024999999,0.1683693,0.3367386 +0.375,0.025000004,0.33673862,0.16836931 +0.375,0.075,0.14999998,0.15 +0.375,0.074999996,0.10606605,0.21213202 +0.375,0.075,0.21213207,0.10606602 +0.375,0.075,0.18898812,0.18898815 +0.375,0.075,0.13363484,0.2672696 +0.375,0.075,0.2672696,0.1336348 +0.375,0.075,0.23811018,0.23811015 +0.375,0.075,0.1683693,0.33673862 +0.375,0.075,0.33673862,0.16836932 +0.375,0.125,0.14999998,0.15 +0.375,0.125,0.10606605,0.21213204 +0.375,0.125,0.21213207,0.10606602 +0.375,0.125,0.18898812,0.18898815 +0.375,0.125,0.13363484,0.2672696 +0.375,0.125,0.2672696,0.1336348 +0.375,0.125,0.23811018,0.23811015 +0.375,0.125,0.1683693,0.33673865 +0.375,0.125,0.33673862,0.1683693 +0.375,0.175,0.14999998,0.15 +0.375,0.17499998,0.10606605,0.21213202 +0.375,0.17500001,0.21213207,0.106066026 +0.375,0.17500001,0.18898812,0.18898816 +0.375,0.17500001,0.13363484,0.2672696 +0.375,0.175,0.2672696,0.1336348 +0.375,0.175,0.23811018,0.23811015 +0.375,0.175,0.1683693,0.33673862 +0.375,0.17500001,0.33673862,0.16836931 +0.375,0.22500001,0.14999998,0.15 +0.375,0.225,0.10606605,0.21213202 +0.375,0.22500001,0.21213207,0.10606602 +0.375,0.225,0.18898812,0.18898815 +0.375,0.225,0.13363484,0.2672696 +0.375,0.225,0.2672696,0.1336348 +0.375,0.225,0.23811018,0.23811017 +0.375,0.22500001,0.1683693,0.33673862 +0.375,0.225,0.33673862,0.1683693 +0.375,0.275,0.14999998,0.14999999 +0.375,0.275,0.10606605,0.21213204 +0.375,0.275,0.21213207,0.10606605 +0.375,0.275,0.18898812,0.18898816 +0.375,0.275,0.13363484,0.2672696 +0.375,0.275,0.2672696,0.1336348 +0.375,0.27499998,0.23811018,0.23811015 +0.375,0.275,0.1683693,0.3367386 +0.375,0.275,0.33673862,0.16836931 +0.375,0.325,0.14999998,0.15 +0.375,0.32500002,0.10606605,0.21213205 +0.375,0.325,0.21213207,0.10606602 +0.375,0.325,0.18898812,0.18898815 +0.375,0.325,0.13363484,0.2672696 +0.375,0.325,0.2672696,0.1336348 +0.375,0.325,0.23811018,0.23811015 +0.375,0.325,0.1683693,0.3367386 +0.375,0.325,0.33673862,0.16836928 +0.375,0.375,0.14999998,0.14999998 +0.375,0.375,0.10606605,0.21213207 +0.375,0.375,0.21213207,0.10606605 +0.375,0.375,0.18898812,0.18898812 +0.375,0.375,0.13363484,0.2672696 +0.375,0.375,0.2672696,0.13363484 +0.375,0.375,0.23811018,0.23811018 +0.375,0.375,0.1683693,0.33673862 +0.375,0.375,0.33673862,0.1683693 +0.375,0.425,0.14999998,0.15 +0.375,0.425,0.10606605,0.21213207 +0.375,0.425,0.21213207,0.10606602 +0.375,0.42499998,0.18898812,0.18898815 +0.375,0.425,0.13363484,0.2672696 +0.375,0.425,0.2672696,0.1336348 +0.375,0.425,0.23811018,0.23811018 +0.375,0.425,0.1683693,0.33673862 +0.375,0.425,0.33673862,0.1683693 +0.375,0.47500002,0.14999998,0.15 +0.375,0.475,0.10606605,0.21213204 +0.375,0.475,0.21213207,0.10606605 +0.375,0.475,0.18898812,0.18898815 +0.375,0.47500002,0.13363484,0.26726964 +0.375,0.475,0.2672696,0.13363487 +0.375,0.475,0.23811018,0.23811013 +0.375,0.475,0.1683693,0.33673865 +0.375,0.47500002,0.33673862,0.16836932 +0.375,0.525,0.14999998,0.15000004 +0.375,0.525,0.10606605,0.21213207 +0.375,0.525,0.21213207,0.10606605 +0.375,0.525,0.18898812,0.18898815 +0.375,0.525,0.13363484,0.26726958 +0.375,0.525,0.2672696,0.13363487 +0.375,0.525,0.23811018,0.23811015 +0.375,0.525,0.1683693,0.3367386 +0.375,0.525,0.33673862,0.16836926 +0.375,0.575,0.14999998,0.14999998 +0.375,0.575,0.10606605,0.21213207 +0.375,0.57500005,0.21213207,0.10606605 +0.375,0.575,0.18898812,0.18898809 +0.375,0.575,0.13363484,0.2672696 +0.375,0.57500005,0.2672696,0.13363487 +0.375,0.575,0.23811018,0.23811015 +0.375,0.575,0.1683693,0.3367386 +0.375,0.575,0.33673862,0.1683693 +0.375,0.625,0.14999998,0.14999998 +0.375,0.625,0.10606605,0.2121321 +0.375,0.625,0.21213207,0.10606599 +0.375,0.625,0.18898812,0.18898809 +0.375,0.625,0.13363484,0.2672696 +0.375,0.625,0.2672696,0.1336348 +0.375,0.625,0.23811018,0.23811018 +0.375,0.625,0.1683693,0.3367386 +0.375,0.625,0.33673862,0.1683693 +0.375,0.675,0.14999998,0.14999998 +0.375,0.675,0.10606605,0.2121321 +0.375,0.67499995,0.21213207,0.10606605 +0.375,0.675,0.18898812,0.18898809 +0.375,0.6750001,0.13363484,0.26726967 +0.375,0.67499995,0.2672696,0.13363487 +0.375,0.675,0.23811018,0.23811018 +0.375,0.675,0.1683693,0.3367386 +0.375,0.675,0.33673862,0.1683693 +0.375,0.725,0.14999998,0.15000004 +0.375,0.725,0.10606605,0.21213204 +0.375,0.725,0.21213207,0.10606605 +0.375,0.725,0.18898812,0.18898815 +0.375,0.725,0.13363484,0.2672696 +0.375,0.725,0.2672696,0.13363487 +0.375,0.725,0.23811018,0.23811013 +0.375,0.725,0.1683693,0.3367386 +0.375,0.725,0.33673862,0.1683693 +0.375,0.775,0.14999998,0.15000004 +0.375,0.775,0.10606605,0.21213204 +0.375,0.775,0.21213207,0.10606599 +0.375,0.775,0.18898812,0.18898815 +0.375,0.775,0.13363484,0.26726967 +0.375,0.775,0.2672696,0.1336348 +0.375,0.775,0.23811018,0.23811013 +0.375,0.775,0.1683693,0.3367386 +0.375,0.775,0.33673862,0.1683693 +0.375,0.825,0.14999998,0.14999998 +0.375,0.825,0.10606605,0.2121321 +0.375,0.825,0.21213207,0.10606599 +0.375,0.825,0.18898812,0.18898809 +0.375,0.82500005,0.13363484,0.26726967 +0.375,0.825,0.2672696,0.1336348 +0.375,0.825,0.23811018,0.23811018 +0.375,0.825,0.1683693,0.3367386 +0.375,0.825,0.33673862,0.1683693 +0.375,0.875,0.14999998,0.14999998 +0.375,0.875,0.10606605,0.2121321 +0.375,0.875,0.21213207,0.10606599 +0.375,0.875,0.18898812,0.18898809 +0.375,0.875,0.13363484,0.2672696 +0.375,0.875,0.2672696,0.1336348 +0.375,0.875,0.23811018,0.23811018 +0.375,0.875,0.1683693,0.3367386 +0.375,0.875,0.33673862,0.1683693 +0.375,0.925,0.14999998,0.14999998 +0.375,0.925,0.10606605,0.2121321 +0.375,0.92499995,0.21213207,0.10606593 +0.375,0.925,0.18898812,0.18898809 +0.375,0.9250001,0.13363484,0.26726967 +0.375,0.92499995,0.2672696,0.13363475 +0.375,0.925,0.23811018,0.23811018 +0.375,0.92499995,0.1683693,0.33673853 +0.375,0.92499995,0.33673862,0.16836923 +0.375,0.97499996,0.14999998,0.14999998 +0.375,0.975,0.10606605,0.21213204 +0.375,0.975,0.21213207,0.10606599 +0.375,0.97499996,0.18898812,0.18898809 +0.375,0.975,0.13363484,0.26726967 +0.375,0.975,0.2672696,0.1336348 +0.375,0.975,0.23811018,0.23811013 +0.375,0.975,0.1683693,0.3367386 +0.375,0.975,0.33673862,0.1683693 +0.425,0.025,0.15,0.15 +0.425,0.024999995,0.10606602,0.21213204 +0.425,0.024999999,0.21213207,0.10606602 +0.42499998,0.024999999,0.18898815,0.18898816 +0.425,0.025000002,0.1336348,0.2672696 +0.425,0.024999999,0.2672696,0.1336348 +0.425,0.025000002,0.23811018,0.23811015 +0.425,0.024999999,0.1683693,0.3367386 +0.425,0.025000004,0.33673862,0.16836931 +0.425,0.075,0.15,0.15 +0.425,0.074999996,0.10606602,0.21213202 +0.425,0.075,0.21213207,0.10606602 +0.42499998,0.075,0.18898815,0.18898815 +0.425,0.075,0.1336348,0.2672696 +0.425,0.075,0.2672696,0.1336348 +0.425,0.075,0.23811018,0.23811015 +0.425,0.075,0.1683693,0.33673862 +0.425,0.075,0.33673862,0.16836932 +0.425,0.125,0.15,0.15 +0.425,0.125,0.10606602,0.21213204 +0.425,0.125,0.21213207,0.10606602 +0.42499998,0.125,0.18898815,0.18898815 +0.425,0.125,0.1336348,0.2672696 +0.425,0.125,0.2672696,0.1336348 +0.425,0.125,0.23811018,0.23811015 +0.425,0.125,0.1683693,0.33673865 +0.425,0.125,0.33673862,0.1683693 +0.425,0.175,0.15,0.15 +0.425,0.17499998,0.10606602,0.21213202 +0.425,0.17500001,0.21213207,0.106066026 +0.42499998,0.17500001,0.18898815,0.18898816 +0.425,0.17500001,0.1336348,0.2672696 +0.425,0.175,0.2672696,0.1336348 +0.425,0.175,0.23811018,0.23811015 +0.425,0.175,0.1683693,0.33673862 +0.425,0.17500001,0.33673862,0.16836931 +0.425,0.22500001,0.15,0.15 +0.425,0.225,0.10606602,0.21213202 +0.425,0.22500001,0.21213207,0.10606602 +0.42499998,0.225,0.18898815,0.18898815 +0.425,0.225,0.1336348,0.2672696 +0.425,0.225,0.2672696,0.1336348 +0.425,0.225,0.23811018,0.23811017 +0.425,0.22500001,0.1683693,0.33673862 +0.425,0.225,0.33673862,0.1683693 +0.425,0.275,0.15,0.14999999 +0.425,0.275,0.10606602,0.21213204 +0.425,0.275,0.21213207,0.10606605 +0.42499998,0.275,0.18898815,0.18898816 +0.425,0.275,0.1336348,0.2672696 +0.425,0.275,0.2672696,0.1336348 +0.425,0.27499998,0.23811018,0.23811015 +0.425,0.275,0.1683693,0.3367386 +0.425,0.275,0.33673862,0.16836931 +0.425,0.325,0.15,0.15 +0.425,0.32500002,0.10606602,0.21213205 +0.425,0.325,0.21213207,0.10606602 +0.42499998,0.325,0.18898815,0.18898815 +0.425,0.325,0.1336348,0.2672696 +0.425,0.325,0.2672696,0.1336348 +0.425,0.325,0.23811018,0.23811015 +0.425,0.325,0.1683693,0.3367386 +0.425,0.325,0.33673862,0.16836928 +0.425,0.375,0.15,0.14999998 +0.425,0.375,0.10606602,0.21213207 +0.425,0.375,0.21213207,0.10606605 +0.42499998,0.375,0.18898815,0.18898812 +0.425,0.375,0.1336348,0.2672696 +0.425,0.375,0.2672696,0.13363484 +0.425,0.375,0.23811018,0.23811018 +0.425,0.375,0.1683693,0.33673862 +0.425,0.375,0.33673862,0.1683693 +0.425,0.425,0.15,0.15 +0.425,0.425,0.10606602,0.21213207 +0.425,0.425,0.21213207,0.10606602 +0.42499998,0.42499998,0.18898815,0.18898815 +0.425,0.425,0.1336348,0.2672696 +0.425,0.425,0.2672696,0.1336348 +0.425,0.425,0.23811018,0.23811018 +0.425,0.425,0.1683693,0.33673862 +0.425,0.425,0.33673862,0.1683693 +0.425,0.47500002,0.15,0.15 +0.425,0.475,0.10606602,0.21213204 +0.425,0.475,0.21213207,0.10606605 +0.42499998,0.475,0.18898815,0.18898815 +0.425,0.47500002,0.1336348,0.26726964 +0.425,0.475,0.2672696,0.13363487 +0.425,0.475,0.23811018,0.23811013 +0.425,0.475,0.1683693,0.33673865 +0.425,0.47500002,0.33673862,0.16836932 +0.425,0.525,0.15,0.15000004 +0.425,0.525,0.10606602,0.21213207 +0.425,0.525,0.21213207,0.10606605 +0.42499998,0.525,0.18898815,0.18898815 +0.425,0.525,0.1336348,0.26726958 +0.425,0.525,0.2672696,0.13363487 +0.425,0.525,0.23811018,0.23811015 +0.425,0.525,0.1683693,0.3367386 +0.425,0.525,0.33673862,0.16836926 +0.425,0.575,0.15,0.14999998 +0.425,0.575,0.10606602,0.21213207 +0.425,0.57500005,0.21213207,0.10606605 +0.42499998,0.575,0.18898815,0.18898809 +0.425,0.575,0.1336348,0.2672696 +0.425,0.57500005,0.2672696,0.13363487 +0.425,0.575,0.23811018,0.23811015 +0.425,0.575,0.1683693,0.3367386 +0.425,0.575,0.33673862,0.1683693 +0.425,0.625,0.15,0.14999998 +0.425,0.625,0.10606602,0.2121321 +0.425,0.625,0.21213207,0.10606599 +0.42499998,0.625,0.18898815,0.18898809 +0.425,0.625,0.1336348,0.2672696 +0.425,0.625,0.2672696,0.1336348 +0.425,0.625,0.23811018,0.23811018 +0.425,0.625,0.1683693,0.3367386 +0.425,0.625,0.33673862,0.1683693 +0.425,0.675,0.15,0.14999998 +0.425,0.675,0.10606602,0.2121321 +0.425,0.67499995,0.21213207,0.10606605 +0.42499998,0.675,0.18898815,0.18898809 +0.425,0.6750001,0.1336348,0.26726967 +0.425,0.67499995,0.2672696,0.13363487 +0.425,0.675,0.23811018,0.23811018 +0.425,0.675,0.1683693,0.3367386 +0.425,0.675,0.33673862,0.1683693 +0.425,0.725,0.15,0.15000004 +0.425,0.725,0.10606602,0.21213204 +0.425,0.725,0.21213207,0.10606605 +0.42499998,0.725,0.18898815,0.18898815 +0.425,0.725,0.1336348,0.2672696 +0.425,0.725,0.2672696,0.13363487 +0.425,0.725,0.23811018,0.23811013 +0.425,0.725,0.1683693,0.3367386 +0.425,0.725,0.33673862,0.1683693 +0.425,0.775,0.15,0.15000004 +0.425,0.775,0.10606602,0.21213204 +0.425,0.775,0.21213207,0.10606599 +0.42499998,0.775,0.18898815,0.18898815 +0.425,0.775,0.1336348,0.26726967 +0.425,0.775,0.2672696,0.1336348 +0.425,0.775,0.23811018,0.23811013 +0.425,0.775,0.1683693,0.3367386 +0.425,0.775,0.33673862,0.1683693 +0.425,0.825,0.15,0.14999998 +0.425,0.825,0.10606602,0.2121321 +0.425,0.825,0.21213207,0.10606599 +0.42499998,0.825,0.18898815,0.18898809 +0.425,0.82500005,0.1336348,0.26726967 +0.425,0.825,0.2672696,0.1336348 +0.425,0.825,0.23811018,0.23811018 +0.425,0.825,0.1683693,0.3367386 +0.425,0.825,0.33673862,0.1683693 +0.425,0.875,0.15,0.14999998 +0.425,0.875,0.10606602,0.2121321 +0.425,0.875,0.21213207,0.10606599 +0.42499998,0.875,0.18898815,0.18898809 +0.425,0.875,0.1336348,0.2672696 +0.425,0.875,0.2672696,0.1336348 +0.425,0.875,0.23811018,0.23811018 +0.425,0.875,0.1683693,0.3367386 +0.425,0.875,0.33673862,0.1683693 +0.425,0.925,0.15,0.14999998 +0.425,0.925,0.10606602,0.2121321 +0.425,0.92499995,0.21213207,0.10606593 +0.42499998,0.925,0.18898815,0.18898809 +0.425,0.9250001,0.1336348,0.26726967 +0.425,0.92499995,0.2672696,0.13363475 +0.425,0.925,0.23811018,0.23811018 +0.425,0.92499995,0.1683693,0.33673853 +0.425,0.92499995,0.33673862,0.16836923 +0.425,0.97499996,0.15,0.14999998 +0.425,0.975,0.10606602,0.21213204 +0.425,0.975,0.21213207,0.10606599 +0.42499998,0.97499996,0.18898815,0.18898809 +0.425,0.975,0.1336348,0.26726967 +0.425,0.975,0.2672696,0.1336348 +0.425,0.975,0.23811018,0.23811013 +0.425,0.975,0.1683693,0.3367386 +0.425,0.975,0.33673862,0.1683693 +0.47500002,0.025,0.15,0.15 +0.475,0.024999995,0.10606605,0.21213204 +0.475,0.024999999,0.21213204,0.10606602 +0.475,0.024999999,0.18898815,0.18898816 +0.475,0.025000002,0.13363487,0.2672696 +0.47500002,0.024999999,0.26726964,0.1336348 +0.475,0.025000002,0.23811013,0.23811015 +0.47500002,0.024999999,0.16836932,0.3367386 +0.475,0.025000004,0.33673865,0.16836931 +0.47500002,0.075,0.15,0.15 +0.475,0.074999996,0.10606605,0.21213202 +0.475,0.075,0.21213204,0.10606602 +0.475,0.075,0.18898815,0.18898815 +0.475,0.075,0.13363487,0.2672696 +0.47500002,0.075,0.26726964,0.1336348 +0.475,0.075,0.23811013,0.23811015 +0.47500002,0.075,0.16836932,0.33673862 +0.475,0.075,0.33673865,0.16836932 +0.47500002,0.125,0.15,0.15 +0.475,0.125,0.10606605,0.21213204 +0.475,0.125,0.21213204,0.10606602 +0.475,0.125,0.18898815,0.18898815 +0.475,0.125,0.13363487,0.2672696 +0.47500002,0.125,0.26726964,0.1336348 +0.475,0.125,0.23811013,0.23811015 +0.47500002,0.125,0.16836932,0.33673865 +0.475,0.125,0.33673865,0.1683693 +0.47500002,0.175,0.15,0.15 +0.475,0.17499998,0.10606605,0.21213202 +0.475,0.17500001,0.21213204,0.106066026 +0.475,0.17500001,0.18898815,0.18898816 +0.475,0.17500001,0.13363487,0.2672696 +0.47500002,0.175,0.26726964,0.1336348 +0.475,0.175,0.23811013,0.23811015 +0.47500002,0.175,0.16836932,0.33673862 +0.475,0.17500001,0.33673865,0.16836931 +0.47500002,0.22500001,0.15,0.15 +0.475,0.225,0.10606605,0.21213202 +0.475,0.22500001,0.21213204,0.10606602 +0.475,0.225,0.18898815,0.18898815 +0.475,0.225,0.13363487,0.2672696 +0.47500002,0.225,0.26726964,0.1336348 +0.475,0.225,0.23811013,0.23811017 +0.47500002,0.22500001,0.16836932,0.33673862 +0.475,0.225,0.33673865,0.1683693 +0.47500002,0.275,0.15,0.14999999 +0.475,0.275,0.10606605,0.21213204 +0.475,0.275,0.21213204,0.10606605 +0.475,0.275,0.18898815,0.18898816 +0.475,0.275,0.13363487,0.2672696 +0.47500002,0.275,0.26726964,0.1336348 +0.475,0.27499998,0.23811013,0.23811015 +0.47500002,0.275,0.16836932,0.3367386 +0.475,0.275,0.33673865,0.16836931 +0.47500002,0.325,0.15,0.15 +0.475,0.32500002,0.10606605,0.21213205 +0.475,0.325,0.21213204,0.10606602 +0.475,0.325,0.18898815,0.18898815 +0.475,0.325,0.13363487,0.2672696 +0.47500002,0.325,0.26726964,0.1336348 +0.475,0.325,0.23811013,0.23811015 +0.47500002,0.325,0.16836932,0.3367386 +0.475,0.325,0.33673865,0.16836928 +0.47500002,0.375,0.15,0.14999998 +0.475,0.375,0.10606605,0.21213207 +0.475,0.375,0.21213204,0.10606605 +0.475,0.375,0.18898815,0.18898812 +0.475,0.375,0.13363487,0.2672696 +0.47500002,0.375,0.26726964,0.13363484 +0.475,0.375,0.23811013,0.23811018 +0.47500002,0.375,0.16836932,0.33673862 +0.475,0.375,0.33673865,0.1683693 +0.47500002,0.425,0.15,0.15 +0.475,0.425,0.10606605,0.21213207 +0.475,0.425,0.21213204,0.10606602 +0.475,0.42499998,0.18898815,0.18898815 +0.475,0.425,0.13363487,0.2672696 +0.47500002,0.425,0.26726964,0.1336348 +0.475,0.425,0.23811013,0.23811018 +0.47500002,0.425,0.16836932,0.33673862 +0.475,0.425,0.33673865,0.1683693 +0.47500002,0.47500002,0.15,0.15 +0.475,0.475,0.10606605,0.21213204 +0.475,0.475,0.21213204,0.10606605 +0.475,0.475,0.18898815,0.18898815 +0.475,0.47500002,0.13363487,0.26726964 +0.47500002,0.475,0.26726964,0.13363487 +0.475,0.475,0.23811013,0.23811013 +0.47500002,0.475,0.16836932,0.33673865 +0.475,0.47500002,0.33673865,0.16836932 +0.47500002,0.525,0.15,0.15000004 +0.475,0.525,0.10606605,0.21213207 +0.475,0.525,0.21213204,0.10606605 +0.475,0.525,0.18898815,0.18898815 +0.475,0.525,0.13363487,0.26726958 +0.47500002,0.525,0.26726964,0.13363487 +0.475,0.525,0.23811013,0.23811015 +0.47500002,0.525,0.16836932,0.3367386 +0.475,0.525,0.33673865,0.16836926 +0.47500002,0.575,0.15,0.14999998 +0.475,0.575,0.10606605,0.21213207 +0.475,0.57500005,0.21213204,0.10606605 +0.475,0.575,0.18898815,0.18898809 +0.475,0.575,0.13363487,0.2672696 +0.47500002,0.57500005,0.26726964,0.13363487 +0.475,0.575,0.23811013,0.23811015 +0.47500002,0.575,0.16836932,0.3367386 +0.475,0.575,0.33673865,0.1683693 +0.47500002,0.625,0.15,0.14999998 +0.475,0.625,0.10606605,0.2121321 +0.475,0.625,0.21213204,0.10606599 +0.475,0.625,0.18898815,0.18898809 +0.475,0.625,0.13363487,0.2672696 +0.47500002,0.625,0.26726964,0.1336348 +0.475,0.625,0.23811013,0.23811018 +0.47500002,0.625,0.16836932,0.3367386 +0.475,0.625,0.33673865,0.1683693 +0.47500002,0.675,0.15,0.14999998 +0.475,0.675,0.10606605,0.2121321 +0.475,0.67499995,0.21213204,0.10606605 +0.475,0.675,0.18898815,0.18898809 +0.475,0.6750001,0.13363487,0.26726967 +0.47500002,0.67499995,0.26726964,0.13363487 +0.475,0.675,0.23811013,0.23811018 +0.47500002,0.675,0.16836932,0.3367386 +0.475,0.675,0.33673865,0.1683693 +0.47500002,0.725,0.15,0.15000004 +0.475,0.725,0.10606605,0.21213204 +0.475,0.725,0.21213204,0.10606605 +0.475,0.725,0.18898815,0.18898815 +0.475,0.725,0.13363487,0.2672696 +0.47500002,0.725,0.26726964,0.13363487 +0.475,0.725,0.23811013,0.23811013 +0.47500002,0.725,0.16836932,0.3367386 +0.475,0.725,0.33673865,0.1683693 +0.47500002,0.775,0.15,0.15000004 +0.475,0.775,0.10606605,0.21213204 +0.475,0.775,0.21213204,0.10606599 +0.475,0.775,0.18898815,0.18898815 +0.475,0.775,0.13363487,0.26726967 +0.47500002,0.775,0.26726964,0.1336348 +0.475,0.775,0.23811013,0.23811013 +0.47500002,0.775,0.16836932,0.3367386 +0.475,0.775,0.33673865,0.1683693 +0.47500002,0.825,0.15,0.14999998 +0.475,0.825,0.10606605,0.2121321 +0.475,0.825,0.21213204,0.10606599 +0.475,0.825,0.18898815,0.18898809 +0.475,0.82500005,0.13363487,0.26726967 +0.47500002,0.825,0.26726964,0.1336348 +0.475,0.825,0.23811013,0.23811018 +0.47500002,0.825,0.16836932,0.3367386 +0.475,0.825,0.33673865,0.1683693 +0.47500002,0.875,0.15,0.14999998 +0.475,0.875,0.10606605,0.2121321 +0.475,0.875,0.21213204,0.10606599 +0.475,0.875,0.18898815,0.18898809 +0.475,0.875,0.13363487,0.2672696 +0.47500002,0.875,0.26726964,0.1336348 +0.475,0.875,0.23811013,0.23811018 +0.47500002,0.875,0.16836932,0.3367386 +0.475,0.875,0.33673865,0.1683693 +0.47500002,0.925,0.15,0.14999998 +0.475,0.925,0.10606605,0.2121321 +0.475,0.92499995,0.21213204,0.10606593 +0.475,0.925,0.18898815,0.18898809 +0.475,0.9250001,0.13363487,0.26726967 +0.47500002,0.92499995,0.26726964,0.13363475 +0.475,0.925,0.23811013,0.23811018 +0.47500002,0.92499995,0.16836932,0.33673853 +0.475,0.92499995,0.33673865,0.16836923 +0.47500002,0.97499996,0.15,0.14999998 +0.475,0.975,0.10606605,0.21213204 +0.475,0.975,0.21213204,0.10606599 +0.475,0.97499996,0.18898815,0.18898809 +0.475,0.975,0.13363487,0.26726967 +0.47500002,0.975,0.26726964,0.1336348 +0.475,0.975,0.23811013,0.23811013 +0.47500002,0.975,0.16836932,0.3367386 +0.475,0.975,0.33673865,0.1683693 +0.525,0.025,0.15000004,0.15 +0.525,0.024999995,0.10606605,0.21213204 +0.525,0.024999999,0.21213207,0.10606602 +0.525,0.024999999,0.18898815,0.18898816 +0.525,0.025000002,0.13363487,0.2672696 +0.525,0.024999999,0.26726958,0.1336348 +0.525,0.025000002,0.23811015,0.23811015 +0.525,0.024999999,0.16836926,0.3367386 +0.525,0.025000004,0.3367386,0.16836931 +0.525,0.075,0.15000004,0.15 +0.525,0.074999996,0.10606605,0.21213202 +0.525,0.075,0.21213207,0.10606602 +0.525,0.075,0.18898815,0.18898815 +0.525,0.075,0.13363487,0.2672696 +0.525,0.075,0.26726958,0.1336348 +0.525,0.075,0.23811015,0.23811015 +0.525,0.075,0.16836926,0.33673862 +0.525,0.075,0.3367386,0.16836932 +0.525,0.125,0.15000004,0.15 +0.525,0.125,0.10606605,0.21213204 +0.525,0.125,0.21213207,0.10606602 +0.525,0.125,0.18898815,0.18898815 +0.525,0.125,0.13363487,0.2672696 +0.525,0.125,0.26726958,0.1336348 +0.525,0.125,0.23811015,0.23811015 +0.525,0.125,0.16836926,0.33673865 +0.525,0.125,0.3367386,0.1683693 +0.525,0.175,0.15000004,0.15 +0.525,0.17499998,0.10606605,0.21213202 +0.525,0.17500001,0.21213207,0.106066026 +0.525,0.17500001,0.18898815,0.18898816 +0.525,0.17500001,0.13363487,0.2672696 +0.525,0.175,0.26726958,0.1336348 +0.525,0.175,0.23811015,0.23811015 +0.525,0.175,0.16836926,0.33673862 +0.525,0.17500001,0.3367386,0.16836931 +0.525,0.22500001,0.15000004,0.15 +0.525,0.225,0.10606605,0.21213202 +0.525,0.22500001,0.21213207,0.10606602 +0.525,0.225,0.18898815,0.18898815 +0.525,0.225,0.13363487,0.2672696 +0.525,0.225,0.26726958,0.1336348 +0.525,0.225,0.23811015,0.23811017 +0.525,0.22500001,0.16836926,0.33673862 +0.525,0.225,0.3367386,0.1683693 +0.525,0.275,0.15000004,0.14999999 +0.525,0.275,0.10606605,0.21213204 +0.525,0.275,0.21213207,0.10606605 +0.525,0.275,0.18898815,0.18898816 +0.525,0.275,0.13363487,0.2672696 +0.525,0.275,0.26726958,0.1336348 +0.525,0.27499998,0.23811015,0.23811015 +0.525,0.275,0.16836926,0.3367386 +0.525,0.275,0.3367386,0.16836931 +0.525,0.325,0.15000004,0.15 +0.525,0.32500002,0.10606605,0.21213205 +0.525,0.325,0.21213207,0.10606602 +0.525,0.325,0.18898815,0.18898815 +0.525,0.325,0.13363487,0.2672696 +0.525,0.325,0.26726958,0.1336348 +0.525,0.325,0.23811015,0.23811015 +0.525,0.325,0.16836926,0.3367386 +0.525,0.325,0.3367386,0.16836928 +0.525,0.375,0.15000004,0.14999998 +0.525,0.375,0.10606605,0.21213207 +0.525,0.375,0.21213207,0.10606605 +0.525,0.375,0.18898815,0.18898812 +0.525,0.375,0.13363487,0.2672696 +0.525,0.375,0.26726958,0.13363484 +0.525,0.375,0.23811015,0.23811018 +0.525,0.375,0.16836926,0.33673862 +0.525,0.375,0.3367386,0.1683693 +0.525,0.425,0.15000004,0.15 +0.525,0.425,0.10606605,0.21213207 +0.525,0.425,0.21213207,0.10606602 +0.525,0.42499998,0.18898815,0.18898815 +0.525,0.425,0.13363487,0.2672696 +0.525,0.425,0.26726958,0.1336348 +0.525,0.425,0.23811015,0.23811018 +0.525,0.425,0.16836926,0.33673862 +0.525,0.425,0.3367386,0.1683693 +0.525,0.47500002,0.15000004,0.15 +0.525,0.475,0.10606605,0.21213204 +0.525,0.475,0.21213207,0.10606605 +0.525,0.475,0.18898815,0.18898815 +0.525,0.47500002,0.13363487,0.26726964 +0.525,0.475,0.26726958,0.13363487 +0.525,0.475,0.23811015,0.23811013 +0.525,0.475,0.16836926,0.33673865 +0.525,0.47500002,0.3367386,0.16836932 +0.525,0.525,0.15000004,0.15000004 +0.525,0.525,0.10606605,0.21213207 +0.525,0.525,0.21213207,0.10606605 +0.525,0.525,0.18898815,0.18898815 +0.525,0.525,0.13363487,0.26726958 +0.525,0.525,0.26726958,0.13363487 +0.525,0.525,0.23811015,0.23811015 +0.525,0.525,0.16836926,0.3367386 +0.525,0.525,0.3367386,0.16836926 +0.525,0.575,0.15000004,0.14999998 +0.525,0.575,0.10606605,0.21213207 +0.525,0.57500005,0.21213207,0.10606605 +0.525,0.575,0.18898815,0.18898809 +0.525,0.575,0.13363487,0.2672696 +0.525,0.57500005,0.26726958,0.13363487 +0.525,0.575,0.23811015,0.23811015 +0.525,0.575,0.16836926,0.3367386 +0.525,0.575,0.3367386,0.1683693 +0.525,0.625,0.15000004,0.14999998 +0.525,0.625,0.10606605,0.2121321 +0.525,0.625,0.21213207,0.10606599 +0.525,0.625,0.18898815,0.18898809 +0.525,0.625,0.13363487,0.2672696 +0.525,0.625,0.26726958,0.1336348 +0.525,0.625,0.23811015,0.23811018 +0.525,0.625,0.16836926,0.3367386 +0.525,0.625,0.3367386,0.1683693 +0.525,0.675,0.15000004,0.14999998 +0.525,0.675,0.10606605,0.2121321 +0.525,0.67499995,0.21213207,0.10606605 +0.525,0.675,0.18898815,0.18898809 +0.525,0.6750001,0.13363487,0.26726967 +0.525,0.67499995,0.26726958,0.13363487 +0.525,0.675,0.23811015,0.23811018 +0.525,0.675,0.16836926,0.3367386 +0.525,0.675,0.3367386,0.1683693 +0.525,0.725,0.15000004,0.15000004 +0.525,0.725,0.10606605,0.21213204 +0.525,0.725,0.21213207,0.10606605 +0.525,0.725,0.18898815,0.18898815 +0.525,0.725,0.13363487,0.2672696 +0.525,0.725,0.26726958,0.13363487 +0.525,0.725,0.23811015,0.23811013 +0.525,0.725,0.16836926,0.3367386 +0.525,0.725,0.3367386,0.1683693 +0.525,0.775,0.15000004,0.15000004 +0.525,0.775,0.10606605,0.21213204 +0.525,0.775,0.21213207,0.10606599 +0.525,0.775,0.18898815,0.18898815 +0.525,0.775,0.13363487,0.26726967 +0.525,0.775,0.26726958,0.1336348 +0.525,0.775,0.23811015,0.23811013 +0.525,0.775,0.16836926,0.3367386 +0.525,0.775,0.3367386,0.1683693 +0.525,0.825,0.15000004,0.14999998 +0.525,0.825,0.10606605,0.2121321 +0.525,0.825,0.21213207,0.10606599 +0.525,0.825,0.18898815,0.18898809 +0.525,0.82500005,0.13363487,0.26726967 +0.525,0.825,0.26726958,0.1336348 +0.525,0.825,0.23811015,0.23811018 +0.525,0.825,0.16836926,0.3367386 +0.525,0.825,0.3367386,0.1683693 +0.525,0.875,0.15000004,0.14999998 +0.525,0.875,0.10606605,0.2121321 +0.525,0.875,0.21213207,0.10606599 +0.525,0.875,0.18898815,0.18898809 +0.525,0.875,0.13363487,0.2672696 +0.525,0.875,0.26726958,0.1336348 +0.525,0.875,0.23811015,0.23811018 +0.525,0.875,0.16836926,0.3367386 +0.525,0.875,0.3367386,0.1683693 +0.525,0.925,0.15000004,0.14999998 +0.525,0.925,0.10606605,0.2121321 +0.525,0.92499995,0.21213207,0.10606593 +0.525,0.925,0.18898815,0.18898809 +0.525,0.9250001,0.13363487,0.26726967 +0.525,0.92499995,0.26726958,0.13363475 +0.525,0.925,0.23811015,0.23811018 +0.525,0.92499995,0.16836926,0.33673853 +0.525,0.92499995,0.3367386,0.16836923 +0.525,0.97499996,0.15000004,0.14999998 +0.525,0.975,0.10606605,0.21213204 +0.525,0.975,0.21213207,0.10606599 +0.525,0.97499996,0.18898815,0.18898809 +0.525,0.975,0.13363487,0.26726967 +0.525,0.975,0.26726958,0.1336348 +0.525,0.975,0.23811015,0.23811013 +0.525,0.975,0.16836926,0.3367386 +0.525,0.975,0.3367386,0.1683693 +0.575,0.025,0.14999998,0.15 +0.57500005,0.024999995,0.10606605,0.21213204 +0.575,0.024999999,0.21213207,0.10606602 +0.575,0.024999999,0.18898809,0.18898816 +0.57500005,0.025000002,0.13363487,0.2672696 +0.575,0.024999999,0.2672696,0.1336348 +0.575,0.025000002,0.23811015,0.23811015 +0.575,0.024999999,0.1683693,0.3367386 +0.575,0.025000004,0.3367386,0.16836931 +0.575,0.075,0.14999998,0.15 +0.57500005,0.074999996,0.10606605,0.21213202 +0.575,0.075,0.21213207,0.10606602 +0.575,0.075,0.18898809,0.18898815 +0.57500005,0.075,0.13363487,0.2672696 +0.575,0.075,0.2672696,0.1336348 +0.575,0.075,0.23811015,0.23811015 +0.575,0.075,0.1683693,0.33673862 +0.575,0.075,0.3367386,0.16836932 +0.575,0.125,0.14999998,0.15 +0.57500005,0.125,0.10606605,0.21213204 +0.575,0.125,0.21213207,0.10606602 +0.575,0.125,0.18898809,0.18898815 +0.57500005,0.125,0.13363487,0.2672696 +0.575,0.125,0.2672696,0.1336348 +0.575,0.125,0.23811015,0.23811015 +0.575,0.125,0.1683693,0.33673865 +0.575,0.125,0.3367386,0.1683693 +0.575,0.175,0.14999998,0.15 +0.57500005,0.17499998,0.10606605,0.21213202 +0.575,0.17500001,0.21213207,0.106066026 +0.575,0.17500001,0.18898809,0.18898816 +0.57500005,0.17500001,0.13363487,0.2672696 +0.575,0.175,0.2672696,0.1336348 +0.575,0.175,0.23811015,0.23811015 +0.575,0.175,0.1683693,0.33673862 +0.575,0.17500001,0.3367386,0.16836931 +0.575,0.22500001,0.14999998,0.15 +0.57500005,0.225,0.10606605,0.21213202 +0.575,0.22500001,0.21213207,0.10606602 +0.575,0.225,0.18898809,0.18898815 +0.57500005,0.225,0.13363487,0.2672696 +0.575,0.225,0.2672696,0.1336348 +0.575,0.225,0.23811015,0.23811017 +0.575,0.22500001,0.1683693,0.33673862 +0.575,0.225,0.3367386,0.1683693 +0.575,0.275,0.14999998,0.14999999 +0.57500005,0.275,0.10606605,0.21213204 +0.575,0.275,0.21213207,0.10606605 +0.575,0.275,0.18898809,0.18898816 +0.57500005,0.275,0.13363487,0.2672696 +0.575,0.275,0.2672696,0.1336348 +0.575,0.27499998,0.23811015,0.23811015 +0.575,0.275,0.1683693,0.3367386 +0.575,0.275,0.3367386,0.16836931 +0.575,0.325,0.14999998,0.15 +0.57500005,0.32500002,0.10606605,0.21213205 +0.575,0.325,0.21213207,0.10606602 +0.575,0.325,0.18898809,0.18898815 +0.57500005,0.325,0.13363487,0.2672696 +0.575,0.325,0.2672696,0.1336348 +0.575,0.325,0.23811015,0.23811015 +0.575,0.325,0.1683693,0.3367386 +0.575,0.325,0.3367386,0.16836928 +0.575,0.375,0.14999998,0.14999998 +0.57500005,0.375,0.10606605,0.21213207 +0.575,0.375,0.21213207,0.10606605 +0.575,0.375,0.18898809,0.18898812 +0.57500005,0.375,0.13363487,0.2672696 +0.575,0.375,0.2672696,0.13363484 +0.575,0.375,0.23811015,0.23811018 +0.575,0.375,0.1683693,0.33673862 +0.575,0.375,0.3367386,0.1683693 +0.575,0.425,0.14999998,0.15 +0.57500005,0.425,0.10606605,0.21213207 +0.575,0.425,0.21213207,0.10606602 +0.575,0.42499998,0.18898809,0.18898815 +0.57500005,0.425,0.13363487,0.2672696 +0.575,0.425,0.2672696,0.1336348 +0.575,0.425,0.23811015,0.23811018 +0.575,0.425,0.1683693,0.33673862 +0.575,0.425,0.3367386,0.1683693 +0.575,0.47500002,0.14999998,0.15 +0.57500005,0.475,0.10606605,0.21213204 +0.575,0.475,0.21213207,0.10606605 +0.575,0.475,0.18898809,0.18898815 +0.57500005,0.47500002,0.13363487,0.26726964 +0.575,0.475,0.2672696,0.13363487 +0.575,0.475,0.23811015,0.23811013 +0.575,0.475,0.1683693,0.33673865 +0.575,0.47500002,0.3367386,0.16836932 +0.575,0.525,0.14999998,0.15000004 +0.57500005,0.525,0.10606605,0.21213207 +0.575,0.525,0.21213207,0.10606605 +0.575,0.525,0.18898809,0.18898815 +0.57500005,0.525,0.13363487,0.26726958 +0.575,0.525,0.2672696,0.13363487 +0.575,0.525,0.23811015,0.23811015 +0.575,0.525,0.1683693,0.3367386 +0.575,0.525,0.3367386,0.16836926 +0.575,0.575,0.14999998,0.14999998 +0.57500005,0.575,0.10606605,0.21213207 +0.575,0.57500005,0.21213207,0.10606605 +0.575,0.575,0.18898809,0.18898809 +0.57500005,0.575,0.13363487,0.2672696 +0.575,0.57500005,0.2672696,0.13363487 +0.575,0.575,0.23811015,0.23811015 +0.575,0.575,0.1683693,0.3367386 +0.575,0.575,0.3367386,0.1683693 +0.575,0.625,0.14999998,0.14999998 +0.57500005,0.625,0.10606605,0.2121321 +0.575,0.625,0.21213207,0.10606599 +0.575,0.625,0.18898809,0.18898809 +0.57500005,0.625,0.13363487,0.2672696 +0.575,0.625,0.2672696,0.1336348 +0.575,0.625,0.23811015,0.23811018 +0.575,0.625,0.1683693,0.3367386 +0.575,0.625,0.3367386,0.1683693 +0.575,0.675,0.14999998,0.14999998 +0.57500005,0.675,0.10606605,0.2121321 +0.575,0.67499995,0.21213207,0.10606605 +0.575,0.675,0.18898809,0.18898809 +0.57500005,0.6750001,0.13363487,0.26726967 +0.575,0.67499995,0.2672696,0.13363487 +0.575,0.675,0.23811015,0.23811018 +0.575,0.675,0.1683693,0.3367386 +0.575,0.675,0.3367386,0.1683693 +0.575,0.725,0.14999998,0.15000004 +0.57500005,0.725,0.10606605,0.21213204 +0.575,0.725,0.21213207,0.10606605 +0.575,0.725,0.18898809,0.18898815 +0.57500005,0.725,0.13363487,0.2672696 +0.575,0.725,0.2672696,0.13363487 +0.575,0.725,0.23811015,0.23811013 +0.575,0.725,0.1683693,0.3367386 +0.575,0.725,0.3367386,0.1683693 +0.575,0.775,0.14999998,0.15000004 +0.57500005,0.775,0.10606605,0.21213204 +0.575,0.775,0.21213207,0.10606599 +0.575,0.775,0.18898809,0.18898815 +0.57500005,0.775,0.13363487,0.26726967 +0.575,0.775,0.2672696,0.1336348 +0.575,0.775,0.23811015,0.23811013 +0.575,0.775,0.1683693,0.3367386 +0.575,0.775,0.3367386,0.1683693 +0.575,0.825,0.14999998,0.14999998 +0.57500005,0.825,0.10606605,0.2121321 +0.575,0.825,0.21213207,0.10606599 +0.575,0.825,0.18898809,0.18898809 +0.57500005,0.82500005,0.13363487,0.26726967 +0.575,0.825,0.2672696,0.1336348 +0.575,0.825,0.23811015,0.23811018 +0.575,0.825,0.1683693,0.3367386 +0.575,0.825,0.3367386,0.1683693 +0.575,0.875,0.14999998,0.14999998 +0.57500005,0.875,0.10606605,0.2121321 +0.575,0.875,0.21213207,0.10606599 +0.575,0.875,0.18898809,0.18898809 +0.57500005,0.875,0.13363487,0.2672696 +0.575,0.875,0.2672696,0.1336348 +0.575,0.875,0.23811015,0.23811018 +0.575,0.875,0.1683693,0.3367386 +0.575,0.875,0.3367386,0.1683693 +0.575,0.925,0.14999998,0.14999998 +0.57500005,0.925,0.10606605,0.2121321 +0.575,0.92499995,0.21213207,0.10606593 +0.575,0.925,0.18898809,0.18898809 +0.57500005,0.9250001,0.13363487,0.26726967 +0.575,0.92499995,0.2672696,0.13363475 +0.575,0.925,0.23811015,0.23811018 +0.575,0.92499995,0.1683693,0.33673853 +0.575,0.92499995,0.3367386,0.16836923 +0.575,0.97499996,0.14999998,0.14999998 +0.57500005,0.975,0.10606605,0.21213204 +0.575,0.975,0.21213207,0.10606599 +0.575,0.97499996,0.18898809,0.18898809 +0.57500005,0.975,0.13363487,0.26726967 +0.575,0.975,0.2672696,0.1336348 +0.575,0.975,0.23811015,0.23811013 +0.575,0.975,0.1683693,0.3367386 +0.575,0.975,0.3367386,0.1683693 +0.625,0.025,0.14999998,0.15 +0.625,0.024999995,0.10606599,0.21213204 +0.625,0.024999999,0.2121321,0.10606602 +0.625,0.024999999,0.18898809,0.18898816 +0.625,0.025000002,0.1336348,0.2672696 +0.625,0.024999999,0.2672696,0.1336348 +0.625,0.025000002,0.23811018,0.23811015 +0.625,0.024999999,0.1683693,0.3367386 +0.625,0.025000004,0.3367386,0.16836931 +0.625,0.075,0.14999998,0.15 +0.625,0.074999996,0.10606599,0.21213202 +0.625,0.075,0.2121321,0.10606602 +0.625,0.075,0.18898809,0.18898815 +0.625,0.075,0.1336348,0.2672696 +0.625,0.075,0.2672696,0.1336348 +0.625,0.075,0.23811018,0.23811015 +0.625,0.075,0.1683693,0.33673862 +0.625,0.075,0.3367386,0.16836932 +0.625,0.125,0.14999998,0.15 +0.625,0.125,0.10606599,0.21213204 +0.625,0.125,0.2121321,0.10606602 +0.625,0.125,0.18898809,0.18898815 +0.625,0.125,0.1336348,0.2672696 +0.625,0.125,0.2672696,0.1336348 +0.625,0.125,0.23811018,0.23811015 +0.625,0.125,0.1683693,0.33673865 +0.625,0.125,0.3367386,0.1683693 +0.625,0.175,0.14999998,0.15 +0.625,0.17499998,0.10606599,0.21213202 +0.625,0.17500001,0.2121321,0.106066026 +0.625,0.17500001,0.18898809,0.18898816 +0.625,0.17500001,0.1336348,0.2672696 +0.625,0.175,0.2672696,0.1336348 +0.625,0.175,0.23811018,0.23811015 +0.625,0.175,0.1683693,0.33673862 +0.625,0.17500001,0.3367386,0.16836931 +0.625,0.22500001,0.14999998,0.15 +0.625,0.225,0.10606599,0.21213202 +0.625,0.22500001,0.2121321,0.10606602 +0.625,0.225,0.18898809,0.18898815 +0.625,0.225,0.1336348,0.2672696 +0.625,0.225,0.2672696,0.1336348 +0.625,0.225,0.23811018,0.23811017 +0.625,0.22500001,0.1683693,0.33673862 +0.625,0.225,0.3367386,0.1683693 +0.625,0.275,0.14999998,0.14999999 +0.625,0.275,0.10606599,0.21213204 +0.625,0.275,0.2121321,0.10606605 +0.625,0.275,0.18898809,0.18898816 +0.625,0.275,0.1336348,0.2672696 +0.625,0.275,0.2672696,0.1336348 +0.625,0.27499998,0.23811018,0.23811015 +0.625,0.275,0.1683693,0.3367386 +0.625,0.275,0.3367386,0.16836931 +0.625,0.325,0.14999998,0.15 +0.625,0.32500002,0.10606599,0.21213205 +0.625,0.325,0.2121321,0.10606602 +0.625,0.325,0.18898809,0.18898815 +0.625,0.325,0.1336348,0.2672696 +0.625,0.325,0.2672696,0.1336348 +0.625,0.325,0.23811018,0.23811015 +0.625,0.325,0.1683693,0.3367386 +0.625,0.325,0.3367386,0.16836928 +0.625,0.375,0.14999998,0.14999998 +0.625,0.375,0.10606599,0.21213207 +0.625,0.375,0.2121321,0.10606605 +0.625,0.375,0.18898809,0.18898812 +0.625,0.375,0.1336348,0.2672696 +0.625,0.375,0.2672696,0.13363484 +0.625,0.375,0.23811018,0.23811018 +0.625,0.375,0.1683693,0.33673862 +0.625,0.375,0.3367386,0.1683693 +0.625,0.425,0.14999998,0.15 +0.625,0.425,0.10606599,0.21213207 +0.625,0.425,0.2121321,0.10606602 +0.625,0.42499998,0.18898809,0.18898815 +0.625,0.425,0.1336348,0.2672696 +0.625,0.425,0.2672696,0.1336348 +0.625,0.425,0.23811018,0.23811018 +0.625,0.425,0.1683693,0.33673862 +0.625,0.425,0.3367386,0.1683693 +0.625,0.47500002,0.14999998,0.15 +0.625,0.475,0.10606599,0.21213204 +0.625,0.475,0.2121321,0.10606605 +0.625,0.475,0.18898809,0.18898815 +0.625,0.47500002,0.1336348,0.26726964 +0.625,0.475,0.2672696,0.13363487 +0.625,0.475,0.23811018,0.23811013 +0.625,0.475,0.1683693,0.33673865 +0.625,0.47500002,0.3367386,0.16836932 +0.625,0.525,0.14999998,0.15000004 +0.625,0.525,0.10606599,0.21213207 +0.625,0.525,0.2121321,0.10606605 +0.625,0.525,0.18898809,0.18898815 +0.625,0.525,0.1336348,0.26726958 +0.625,0.525,0.2672696,0.13363487 +0.625,0.525,0.23811018,0.23811015 +0.625,0.525,0.1683693,0.3367386 +0.625,0.525,0.3367386,0.16836926 +0.625,0.575,0.14999998,0.14999998 +0.625,0.575,0.10606599,0.21213207 +0.625,0.57500005,0.2121321,0.10606605 +0.625,0.575,0.18898809,0.18898809 +0.625,0.575,0.1336348,0.2672696 +0.625,0.57500005,0.2672696,0.13363487 +0.625,0.575,0.23811018,0.23811015 +0.625,0.575,0.1683693,0.3367386 +0.625,0.575,0.3367386,0.1683693 +0.625,0.625,0.14999998,0.14999998 +0.625,0.625,0.10606599,0.2121321 +0.625,0.625,0.2121321,0.10606599 +0.625,0.625,0.18898809,0.18898809 +0.625,0.625,0.1336348,0.2672696 +0.625,0.625,0.2672696,0.1336348 +0.625,0.625,0.23811018,0.23811018 +0.625,0.625,0.1683693,0.3367386 +0.625,0.625,0.3367386,0.1683693 +0.625,0.675,0.14999998,0.14999998 +0.625,0.675,0.10606599,0.2121321 +0.625,0.67499995,0.2121321,0.10606605 +0.625,0.675,0.18898809,0.18898809 +0.625,0.6750001,0.1336348,0.26726967 +0.625,0.67499995,0.2672696,0.13363487 +0.625,0.675,0.23811018,0.23811018 +0.625,0.675,0.1683693,0.3367386 +0.625,0.675,0.3367386,0.1683693 +0.625,0.725,0.14999998,0.15000004 +0.625,0.725,0.10606599,0.21213204 +0.625,0.725,0.2121321,0.10606605 +0.625,0.725,0.18898809,0.18898815 +0.625,0.725,0.1336348,0.2672696 +0.625,0.725,0.2672696,0.13363487 +0.625,0.725,0.23811018,0.23811013 +0.625,0.725,0.1683693,0.3367386 +0.625,0.725,0.3367386,0.1683693 +0.625,0.775,0.14999998,0.15000004 +0.625,0.775,0.10606599,0.21213204 +0.625,0.775,0.2121321,0.10606599 +0.625,0.775,0.18898809,0.18898815 +0.625,0.775,0.1336348,0.26726967 +0.625,0.775,0.2672696,0.1336348 +0.625,0.775,0.23811018,0.23811013 +0.625,0.775,0.1683693,0.3367386 +0.625,0.775,0.3367386,0.1683693 +0.625,0.825,0.14999998,0.14999998 +0.625,0.825,0.10606599,0.2121321 +0.625,0.825,0.2121321,0.10606599 +0.625,0.825,0.18898809,0.18898809 +0.625,0.82500005,0.1336348,0.26726967 +0.625,0.825,0.2672696,0.1336348 +0.625,0.825,0.23811018,0.23811018 +0.625,0.825,0.1683693,0.3367386 +0.625,0.825,0.3367386,0.1683693 +0.625,0.875,0.14999998,0.14999998 +0.625,0.875,0.10606599,0.2121321 +0.625,0.875,0.2121321,0.10606599 +0.625,0.875,0.18898809,0.18898809 +0.625,0.875,0.1336348,0.2672696 +0.625,0.875,0.2672696,0.1336348 +0.625,0.875,0.23811018,0.23811018 +0.625,0.875,0.1683693,0.3367386 +0.625,0.875,0.3367386,0.1683693 +0.625,0.925,0.14999998,0.14999998 +0.625,0.925,0.10606599,0.2121321 +0.625,0.92499995,0.2121321,0.10606593 +0.625,0.925,0.18898809,0.18898809 +0.625,0.9250001,0.1336348,0.26726967 +0.625,0.92499995,0.2672696,0.13363475 +0.625,0.925,0.23811018,0.23811018 +0.625,0.92499995,0.1683693,0.33673853 +0.625,0.92499995,0.3367386,0.16836923 +0.625,0.97499996,0.14999998,0.14999998 +0.625,0.975,0.10606599,0.21213204 +0.625,0.975,0.2121321,0.10606599 +0.625,0.97499996,0.18898809,0.18898809 +0.625,0.975,0.1336348,0.26726967 +0.625,0.975,0.2672696,0.1336348 +0.625,0.975,0.23811018,0.23811013 +0.625,0.975,0.1683693,0.3367386 +0.625,0.975,0.3367386,0.1683693 +0.675,0.025,0.14999998,0.15 +0.67499995,0.024999995,0.10606605,0.21213204 +0.675,0.024999999,0.2121321,0.10606602 +0.675,0.024999999,0.18898809,0.18898816 +0.67499995,0.025000002,0.13363487,0.2672696 +0.6750001,0.024999999,0.26726967,0.1336348 +0.675,0.025000002,0.23811018,0.23811015 +0.675,0.024999999,0.1683693,0.3367386 +0.675,0.025000004,0.3367386,0.16836931 +0.675,0.075,0.14999998,0.15 +0.67499995,0.074999996,0.10606605,0.21213202 +0.675,0.075,0.2121321,0.10606602 +0.675,0.075,0.18898809,0.18898815 +0.67499995,0.075,0.13363487,0.2672696 +0.6750001,0.075,0.26726967,0.1336348 +0.675,0.075,0.23811018,0.23811015 +0.675,0.075,0.1683693,0.33673862 +0.675,0.075,0.3367386,0.16836932 +0.675,0.125,0.14999998,0.15 +0.67499995,0.125,0.10606605,0.21213204 +0.675,0.125,0.2121321,0.10606602 +0.675,0.125,0.18898809,0.18898815 +0.67499995,0.125,0.13363487,0.2672696 +0.6750001,0.125,0.26726967,0.1336348 +0.675,0.125,0.23811018,0.23811015 +0.675,0.125,0.1683693,0.33673865 +0.675,0.125,0.3367386,0.1683693 +0.675,0.175,0.14999998,0.15 +0.67499995,0.17499998,0.10606605,0.21213202 +0.675,0.17500001,0.2121321,0.106066026 +0.675,0.17500001,0.18898809,0.18898816 +0.67499995,0.17500001,0.13363487,0.2672696 +0.6750001,0.175,0.26726967,0.1336348 +0.675,0.175,0.23811018,0.23811015 +0.675,0.175,0.1683693,0.33673862 +0.675,0.17500001,0.3367386,0.16836931 +0.675,0.22500001,0.14999998,0.15 +0.67499995,0.225,0.10606605,0.21213202 +0.675,0.22500001,0.2121321,0.10606602 +0.675,0.225,0.18898809,0.18898815 +0.67499995,0.225,0.13363487,0.2672696 +0.6750001,0.225,0.26726967,0.1336348 +0.675,0.225,0.23811018,0.23811017 +0.675,0.22500001,0.1683693,0.33673862 +0.675,0.225,0.3367386,0.1683693 +0.675,0.275,0.14999998,0.14999999 +0.67499995,0.275,0.10606605,0.21213204 +0.675,0.275,0.2121321,0.10606605 +0.675,0.275,0.18898809,0.18898816 +0.67499995,0.275,0.13363487,0.2672696 +0.6750001,0.275,0.26726967,0.1336348 +0.675,0.27499998,0.23811018,0.23811015 +0.675,0.275,0.1683693,0.3367386 +0.675,0.275,0.3367386,0.16836931 +0.675,0.325,0.14999998,0.15 +0.67499995,0.32500002,0.10606605,0.21213205 +0.675,0.325,0.2121321,0.10606602 +0.675,0.325,0.18898809,0.18898815 +0.67499995,0.325,0.13363487,0.2672696 +0.6750001,0.325,0.26726967,0.1336348 +0.675,0.325,0.23811018,0.23811015 +0.675,0.325,0.1683693,0.3367386 +0.675,0.325,0.3367386,0.16836928 +0.675,0.375,0.14999998,0.14999998 +0.67499995,0.375,0.10606605,0.21213207 +0.675,0.375,0.2121321,0.10606605 +0.675,0.375,0.18898809,0.18898812 +0.67499995,0.375,0.13363487,0.2672696 +0.6750001,0.375,0.26726967,0.13363484 +0.675,0.375,0.23811018,0.23811018 +0.675,0.375,0.1683693,0.33673862 +0.675,0.375,0.3367386,0.1683693 +0.675,0.425,0.14999998,0.15 +0.67499995,0.425,0.10606605,0.21213207 +0.675,0.425,0.2121321,0.10606602 +0.675,0.42499998,0.18898809,0.18898815 +0.67499995,0.425,0.13363487,0.2672696 +0.6750001,0.425,0.26726967,0.1336348 +0.675,0.425,0.23811018,0.23811018 +0.675,0.425,0.1683693,0.33673862 +0.675,0.425,0.3367386,0.1683693 +0.675,0.47500002,0.14999998,0.15 +0.67499995,0.475,0.10606605,0.21213204 +0.675,0.475,0.2121321,0.10606605 +0.675,0.475,0.18898809,0.18898815 +0.67499995,0.47500002,0.13363487,0.26726964 +0.6750001,0.475,0.26726967,0.13363487 +0.675,0.475,0.23811018,0.23811013 +0.675,0.475,0.1683693,0.33673865 +0.675,0.47500002,0.3367386,0.16836932 +0.675,0.525,0.14999998,0.15000004 +0.67499995,0.525,0.10606605,0.21213207 +0.675,0.525,0.2121321,0.10606605 +0.675,0.525,0.18898809,0.18898815 +0.67499995,0.525,0.13363487,0.26726958 +0.6750001,0.525,0.26726967,0.13363487 +0.675,0.525,0.23811018,0.23811015 +0.675,0.525,0.1683693,0.3367386 +0.675,0.525,0.3367386,0.16836926 +0.675,0.575,0.14999998,0.14999998 +0.67499995,0.575,0.10606605,0.21213207 +0.675,0.57500005,0.2121321,0.10606605 +0.675,0.575,0.18898809,0.18898809 +0.67499995,0.575,0.13363487,0.2672696 +0.6750001,0.57500005,0.26726967,0.13363487 +0.675,0.575,0.23811018,0.23811015 +0.675,0.575,0.1683693,0.3367386 +0.675,0.575,0.3367386,0.1683693 +0.675,0.625,0.14999998,0.14999998 +0.67499995,0.625,0.10606605,0.2121321 +0.675,0.625,0.2121321,0.10606599 +0.675,0.625,0.18898809,0.18898809 +0.67499995,0.625,0.13363487,0.2672696 +0.6750001,0.625,0.26726967,0.1336348 +0.675,0.625,0.23811018,0.23811018 +0.675,0.625,0.1683693,0.3367386 +0.675,0.625,0.3367386,0.1683693 +0.675,0.675,0.14999998,0.14999998 +0.67499995,0.675,0.10606605,0.2121321 +0.675,0.67499995,0.2121321,0.10606605 +0.675,0.675,0.18898809,0.18898809 +0.67499995,0.6750001,0.13363487,0.26726967 +0.6750001,0.67499995,0.26726967,0.13363487 +0.675,0.675,0.23811018,0.23811018 +0.675,0.675,0.1683693,0.3367386 +0.675,0.675,0.3367386,0.1683693 +0.675,0.725,0.14999998,0.15000004 +0.67499995,0.725,0.10606605,0.21213204 +0.675,0.725,0.2121321,0.10606605 +0.675,0.725,0.18898809,0.18898815 +0.67499995,0.725,0.13363487,0.2672696 +0.6750001,0.725,0.26726967,0.13363487 +0.675,0.725,0.23811018,0.23811013 +0.675,0.725,0.1683693,0.3367386 +0.675,0.725,0.3367386,0.1683693 +0.675,0.775,0.14999998,0.15000004 +0.67499995,0.775,0.10606605,0.21213204 +0.675,0.775,0.2121321,0.10606599 +0.675,0.775,0.18898809,0.18898815 +0.67499995,0.775,0.13363487,0.26726967 +0.6750001,0.775,0.26726967,0.1336348 +0.675,0.775,0.23811018,0.23811013 +0.675,0.775,0.1683693,0.3367386 +0.675,0.775,0.3367386,0.1683693 +0.675,0.825,0.14999998,0.14999998 +0.67499995,0.825,0.10606605,0.2121321 +0.675,0.825,0.2121321,0.10606599 +0.675,0.825,0.18898809,0.18898809 +0.67499995,0.82500005,0.13363487,0.26726967 +0.6750001,0.825,0.26726967,0.1336348 +0.675,0.825,0.23811018,0.23811018 +0.675,0.825,0.1683693,0.3367386 +0.675,0.825,0.3367386,0.1683693 +0.675,0.875,0.14999998,0.14999998 +0.67499995,0.875,0.10606605,0.2121321 +0.675,0.875,0.2121321,0.10606599 +0.675,0.875,0.18898809,0.18898809 +0.67499995,0.875,0.13363487,0.2672696 +0.6750001,0.875,0.26726967,0.1336348 +0.675,0.875,0.23811018,0.23811018 +0.675,0.875,0.1683693,0.3367386 +0.675,0.875,0.3367386,0.1683693 +0.675,0.925,0.14999998,0.14999998 +0.67499995,0.925,0.10606605,0.2121321 +0.675,0.92499995,0.2121321,0.10606593 +0.675,0.925,0.18898809,0.18898809 +0.67499995,0.9250001,0.13363487,0.26726967 +0.6750001,0.92499995,0.26726967,0.13363475 +0.675,0.925,0.23811018,0.23811018 +0.675,0.92499995,0.1683693,0.33673853 +0.675,0.92499995,0.3367386,0.16836923 +0.675,0.97499996,0.14999998,0.14999998 +0.67499995,0.975,0.10606605,0.21213204 +0.675,0.975,0.2121321,0.10606599 +0.675,0.97499996,0.18898809,0.18898809 +0.67499995,0.975,0.13363487,0.26726967 +0.6750001,0.975,0.26726967,0.1336348 +0.675,0.975,0.23811018,0.23811013 +0.675,0.975,0.1683693,0.3367386 +0.675,0.975,0.3367386,0.1683693 +0.725,0.025,0.15000004,0.15 +0.725,0.024999995,0.10606605,0.21213204 +0.725,0.024999999,0.21213204,0.10606602 +0.725,0.024999999,0.18898815,0.18898816 +0.725,0.025000002,0.13363487,0.2672696 +0.725,0.024999999,0.2672696,0.1336348 +0.725,0.025000002,0.23811013,0.23811015 +0.725,0.024999999,0.1683693,0.3367386 +0.725,0.025000004,0.3367386,0.16836931 +0.725,0.075,0.15000004,0.15 +0.725,0.074999996,0.10606605,0.21213202 +0.725,0.075,0.21213204,0.10606602 +0.725,0.075,0.18898815,0.18898815 +0.725,0.075,0.13363487,0.2672696 +0.725,0.075,0.2672696,0.1336348 +0.725,0.075,0.23811013,0.23811015 +0.725,0.075,0.1683693,0.33673862 +0.725,0.075,0.3367386,0.16836932 +0.725,0.125,0.15000004,0.15 +0.725,0.125,0.10606605,0.21213204 +0.725,0.125,0.21213204,0.10606602 +0.725,0.125,0.18898815,0.18898815 +0.725,0.125,0.13363487,0.2672696 +0.725,0.125,0.2672696,0.1336348 +0.725,0.125,0.23811013,0.23811015 +0.725,0.125,0.1683693,0.33673865 +0.725,0.125,0.3367386,0.1683693 +0.725,0.175,0.15000004,0.15 +0.725,0.17499998,0.10606605,0.21213202 +0.725,0.17500001,0.21213204,0.106066026 +0.725,0.17500001,0.18898815,0.18898816 +0.725,0.17500001,0.13363487,0.2672696 +0.725,0.175,0.2672696,0.1336348 +0.725,0.175,0.23811013,0.23811015 +0.725,0.175,0.1683693,0.33673862 +0.725,0.17500001,0.3367386,0.16836931 +0.725,0.22500001,0.15000004,0.15 +0.725,0.225,0.10606605,0.21213202 +0.725,0.22500001,0.21213204,0.10606602 +0.725,0.225,0.18898815,0.18898815 +0.725,0.225,0.13363487,0.2672696 +0.725,0.225,0.2672696,0.1336348 +0.725,0.225,0.23811013,0.23811017 +0.725,0.22500001,0.1683693,0.33673862 +0.725,0.225,0.3367386,0.1683693 +0.725,0.275,0.15000004,0.14999999 +0.725,0.275,0.10606605,0.21213204 +0.725,0.275,0.21213204,0.10606605 +0.725,0.275,0.18898815,0.18898816 +0.725,0.275,0.13363487,0.2672696 +0.725,0.275,0.2672696,0.1336348 +0.725,0.27499998,0.23811013,0.23811015 +0.725,0.275,0.1683693,0.3367386 +0.725,0.275,0.3367386,0.16836931 +0.725,0.325,0.15000004,0.15 +0.725,0.32500002,0.10606605,0.21213205 +0.725,0.325,0.21213204,0.10606602 +0.725,0.325,0.18898815,0.18898815 +0.725,0.325,0.13363487,0.2672696 +0.725,0.325,0.2672696,0.1336348 +0.725,0.325,0.23811013,0.23811015 +0.725,0.325,0.1683693,0.3367386 +0.725,0.325,0.3367386,0.16836928 +0.725,0.375,0.15000004,0.14999998 +0.725,0.375,0.10606605,0.21213207 +0.725,0.375,0.21213204,0.10606605 +0.725,0.375,0.18898815,0.18898812 +0.725,0.375,0.13363487,0.2672696 +0.725,0.375,0.2672696,0.13363484 +0.725,0.375,0.23811013,0.23811018 +0.725,0.375,0.1683693,0.33673862 +0.725,0.375,0.3367386,0.1683693 +0.725,0.425,0.15000004,0.15 +0.725,0.425,0.10606605,0.21213207 +0.725,0.425,0.21213204,0.10606602 +0.725,0.42499998,0.18898815,0.18898815 +0.725,0.425,0.13363487,0.2672696 +0.725,0.425,0.2672696,0.1336348 +0.725,0.425,0.23811013,0.23811018 +0.725,0.425,0.1683693,0.33673862 +0.725,0.425,0.3367386,0.1683693 +0.725,0.47500002,0.15000004,0.15 +0.725,0.475,0.10606605,0.21213204 +0.725,0.475,0.21213204,0.10606605 +0.725,0.475,0.18898815,0.18898815 +0.725,0.47500002,0.13363487,0.26726964 +0.725,0.475,0.2672696,0.13363487 +0.725,0.475,0.23811013,0.23811013 +0.725,0.475,0.1683693,0.33673865 +0.725,0.47500002,0.3367386,0.16836932 +0.725,0.525,0.15000004,0.15000004 +0.725,0.525,0.10606605,0.21213207 +0.725,0.525,0.21213204,0.10606605 +0.725,0.525,0.18898815,0.18898815 +0.725,0.525,0.13363487,0.26726958 +0.725,0.525,0.2672696,0.13363487 +0.725,0.525,0.23811013,0.23811015 +0.725,0.525,0.1683693,0.3367386 +0.725,0.525,0.3367386,0.16836926 +0.725,0.575,0.15000004,0.14999998 +0.725,0.575,0.10606605,0.21213207 +0.725,0.57500005,0.21213204,0.10606605 +0.725,0.575,0.18898815,0.18898809 +0.725,0.575,0.13363487,0.2672696 +0.725,0.57500005,0.2672696,0.13363487 +0.725,0.575,0.23811013,0.23811015 +0.725,0.575,0.1683693,0.3367386 +0.725,0.575,0.3367386,0.1683693 +0.725,0.625,0.15000004,0.14999998 +0.725,0.625,0.10606605,0.2121321 +0.725,0.625,0.21213204,0.10606599 +0.725,0.625,0.18898815,0.18898809 +0.725,0.625,0.13363487,0.2672696 +0.725,0.625,0.2672696,0.1336348 +0.725,0.625,0.23811013,0.23811018 +0.725,0.625,0.1683693,0.3367386 +0.725,0.625,0.3367386,0.1683693 +0.725,0.675,0.15000004,0.14999998 +0.725,0.675,0.10606605,0.2121321 +0.725,0.67499995,0.21213204,0.10606605 +0.725,0.675,0.18898815,0.18898809 +0.725,0.6750001,0.13363487,0.26726967 +0.725,0.67499995,0.2672696,0.13363487 +0.725,0.675,0.23811013,0.23811018 +0.725,0.675,0.1683693,0.3367386 +0.725,0.675,0.3367386,0.1683693 +0.725,0.725,0.15000004,0.15000004 +0.725,0.725,0.10606605,0.21213204 +0.725,0.725,0.21213204,0.10606605 +0.725,0.725,0.18898815,0.18898815 +0.725,0.725,0.13363487,0.2672696 +0.725,0.725,0.2672696,0.13363487 +0.725,0.725,0.23811013,0.23811013 +0.725,0.725,0.1683693,0.3367386 +0.725,0.725,0.3367386,0.1683693 +0.725,0.775,0.15000004,0.15000004 +0.725,0.775,0.10606605,0.21213204 +0.725,0.775,0.21213204,0.10606599 +0.725,0.775,0.18898815,0.18898815 +0.725,0.775,0.13363487,0.26726967 +0.725,0.775,0.2672696,0.1336348 +0.725,0.775,0.23811013,0.23811013 +0.725,0.775,0.1683693,0.3367386 +0.725,0.775,0.3367386,0.1683693 +0.725,0.825,0.15000004,0.14999998 +0.725,0.825,0.10606605,0.2121321 +0.725,0.825,0.21213204,0.10606599 +0.725,0.825,0.18898815,0.18898809 +0.725,0.82500005,0.13363487,0.26726967 +0.725,0.825,0.2672696,0.1336348 +0.725,0.825,0.23811013,0.23811018 +0.725,0.825,0.1683693,0.3367386 +0.725,0.825,0.3367386,0.1683693 +0.725,0.875,0.15000004,0.14999998 +0.725,0.875,0.10606605,0.2121321 +0.725,0.875,0.21213204,0.10606599 +0.725,0.875,0.18898815,0.18898809 +0.725,0.875,0.13363487,0.2672696 +0.725,0.875,0.2672696,0.1336348 +0.725,0.875,0.23811013,0.23811018 +0.725,0.875,0.1683693,0.3367386 +0.725,0.875,0.3367386,0.1683693 +0.725,0.925,0.15000004,0.14999998 +0.725,0.925,0.10606605,0.2121321 +0.725,0.92499995,0.21213204,0.10606593 +0.725,0.925,0.18898815,0.18898809 +0.725,0.9250001,0.13363487,0.26726967 +0.725,0.92499995,0.2672696,0.13363475 +0.725,0.925,0.23811013,0.23811018 +0.725,0.92499995,0.1683693,0.33673853 +0.725,0.92499995,0.3367386,0.16836923 +0.725,0.97499996,0.15000004,0.14999998 +0.725,0.975,0.10606605,0.21213204 +0.725,0.975,0.21213204,0.10606599 +0.725,0.97499996,0.18898815,0.18898809 +0.725,0.975,0.13363487,0.26726967 +0.725,0.975,0.2672696,0.1336348 +0.725,0.975,0.23811013,0.23811013 +0.725,0.975,0.1683693,0.3367386 +0.725,0.975,0.3367386,0.1683693 +0.775,0.025,0.15000004,0.15 +0.775,0.024999995,0.10606599,0.21213204 +0.775,0.024999999,0.21213204,0.10606602 +0.775,0.024999999,0.18898815,0.18898816 +0.775,0.025000002,0.1336348,0.2672696 +0.775,0.024999999,0.26726967,0.1336348 +0.775,0.025000002,0.23811013,0.23811015 +0.775,0.024999999,0.1683693,0.3367386 +0.775,0.025000004,0.3367386,0.16836931 +0.775,0.075,0.15000004,0.15 +0.775,0.074999996,0.10606599,0.21213202 +0.775,0.075,0.21213204,0.10606602 +0.775,0.075,0.18898815,0.18898815 +0.775,0.075,0.1336348,0.2672696 +0.775,0.075,0.26726967,0.1336348 +0.775,0.075,0.23811013,0.23811015 +0.775,0.075,0.1683693,0.33673862 +0.775,0.075,0.3367386,0.16836932 +0.775,0.125,0.15000004,0.15 +0.775,0.125,0.10606599,0.21213204 +0.775,0.125,0.21213204,0.10606602 +0.775,0.125,0.18898815,0.18898815 +0.775,0.125,0.1336348,0.2672696 +0.775,0.125,0.26726967,0.1336348 +0.775,0.125,0.23811013,0.23811015 +0.775,0.125,0.1683693,0.33673865 +0.775,0.125,0.3367386,0.1683693 +0.775,0.175,0.15000004,0.15 +0.775,0.17499998,0.10606599,0.21213202 +0.775,0.17500001,0.21213204,0.106066026 +0.775,0.17500001,0.18898815,0.18898816 +0.775,0.17500001,0.1336348,0.2672696 +0.775,0.175,0.26726967,0.1336348 +0.775,0.175,0.23811013,0.23811015 +0.775,0.175,0.1683693,0.33673862 +0.775,0.17500001,0.3367386,0.16836931 +0.775,0.22500001,0.15000004,0.15 +0.775,0.225,0.10606599,0.21213202 +0.775,0.22500001,0.21213204,0.10606602 +0.775,0.225,0.18898815,0.18898815 +0.775,0.225,0.1336348,0.2672696 +0.775,0.225,0.26726967,0.1336348 +0.775,0.225,0.23811013,0.23811017 +0.775,0.22500001,0.1683693,0.33673862 +0.775,0.225,0.3367386,0.1683693 +0.775,0.275,0.15000004,0.14999999 +0.775,0.275,0.10606599,0.21213204 +0.775,0.275,0.21213204,0.10606605 +0.775,0.275,0.18898815,0.18898816 +0.775,0.275,0.1336348,0.2672696 +0.775,0.275,0.26726967,0.1336348 +0.775,0.27499998,0.23811013,0.23811015 +0.775,0.275,0.1683693,0.3367386 +0.775,0.275,0.3367386,0.16836931 +0.775,0.325,0.15000004,0.15 +0.775,0.32500002,0.10606599,0.21213205 +0.775,0.325,0.21213204,0.10606602 +0.775,0.325,0.18898815,0.18898815 +0.775,0.325,0.1336348,0.2672696 +0.775,0.325,0.26726967,0.1336348 +0.775,0.325,0.23811013,0.23811015 +0.775,0.325,0.1683693,0.3367386 +0.775,0.325,0.3367386,0.16836928 +0.775,0.375,0.15000004,0.14999998 +0.775,0.375,0.10606599,0.21213207 +0.775,0.375,0.21213204,0.10606605 +0.775,0.375,0.18898815,0.18898812 +0.775,0.375,0.1336348,0.2672696 +0.775,0.375,0.26726967,0.13363484 +0.775,0.375,0.23811013,0.23811018 +0.775,0.375,0.1683693,0.33673862 +0.775,0.375,0.3367386,0.1683693 +0.775,0.425,0.15000004,0.15 +0.775,0.425,0.10606599,0.21213207 +0.775,0.425,0.21213204,0.10606602 +0.775,0.42499998,0.18898815,0.18898815 +0.775,0.425,0.1336348,0.2672696 +0.775,0.425,0.26726967,0.1336348 +0.775,0.425,0.23811013,0.23811018 +0.775,0.425,0.1683693,0.33673862 +0.775,0.425,0.3367386,0.1683693 +0.775,0.47500002,0.15000004,0.15 +0.775,0.475,0.10606599,0.21213204 +0.775,0.475,0.21213204,0.10606605 +0.775,0.475,0.18898815,0.18898815 +0.775,0.47500002,0.1336348,0.26726964 +0.775,0.475,0.26726967,0.13363487 +0.775,0.475,0.23811013,0.23811013 +0.775,0.475,0.1683693,0.33673865 +0.775,0.47500002,0.3367386,0.16836932 +0.775,0.525,0.15000004,0.15000004 +0.775,0.525,0.10606599,0.21213207 +0.775,0.525,0.21213204,0.10606605 +0.775,0.525,0.18898815,0.18898815 +0.775,0.525,0.1336348,0.26726958 +0.775,0.525,0.26726967,0.13363487 +0.775,0.525,0.23811013,0.23811015 +0.775,0.525,0.1683693,0.3367386 +0.775,0.525,0.3367386,0.16836926 +0.775,0.575,0.15000004,0.14999998 +0.775,0.575,0.10606599,0.21213207 +0.775,0.57500005,0.21213204,0.10606605 +0.775,0.575,0.18898815,0.18898809 +0.775,0.575,0.1336348,0.2672696 +0.775,0.57500005,0.26726967,0.13363487 +0.775,0.575,0.23811013,0.23811015 +0.775,0.575,0.1683693,0.3367386 +0.775,0.575,0.3367386,0.1683693 +0.775,0.625,0.15000004,0.14999998 +0.775,0.625,0.10606599,0.2121321 +0.775,0.625,0.21213204,0.10606599 +0.775,0.625,0.18898815,0.18898809 +0.775,0.625,0.1336348,0.2672696 +0.775,0.625,0.26726967,0.1336348 +0.775,0.625,0.23811013,0.23811018 +0.775,0.625,0.1683693,0.3367386 +0.775,0.625,0.3367386,0.1683693 +0.775,0.675,0.15000004,0.14999998 +0.775,0.675,0.10606599,0.2121321 +0.775,0.67499995,0.21213204,0.10606605 +0.775,0.675,0.18898815,0.18898809 +0.775,0.6750001,0.1336348,0.26726967 +0.775,0.67499995,0.26726967,0.13363487 +0.775,0.675,0.23811013,0.23811018 +0.775,0.675,0.1683693,0.3367386 +0.775,0.675,0.3367386,0.1683693 +0.775,0.725,0.15000004,0.15000004 +0.775,0.725,0.10606599,0.21213204 +0.775,0.725,0.21213204,0.10606605 +0.775,0.725,0.18898815,0.18898815 +0.775,0.725,0.1336348,0.2672696 +0.775,0.725,0.26726967,0.13363487 +0.775,0.725,0.23811013,0.23811013 +0.775,0.725,0.1683693,0.3367386 +0.775,0.725,0.3367386,0.1683693 +0.775,0.775,0.15000004,0.15000004 +0.775,0.775,0.10606599,0.21213204 +0.775,0.775,0.21213204,0.10606599 +0.775,0.775,0.18898815,0.18898815 +0.775,0.775,0.1336348,0.26726967 +0.775,0.775,0.26726967,0.1336348 +0.775,0.775,0.23811013,0.23811013 +0.775,0.775,0.1683693,0.3367386 +0.775,0.775,0.3367386,0.1683693 +0.775,0.825,0.15000004,0.14999998 +0.775,0.825,0.10606599,0.2121321 +0.775,0.825,0.21213204,0.10606599 +0.775,0.825,0.18898815,0.18898809 +0.775,0.82500005,0.1336348,0.26726967 +0.775,0.825,0.26726967,0.1336348 +0.775,0.825,0.23811013,0.23811018 +0.775,0.825,0.1683693,0.3367386 +0.775,0.825,0.3367386,0.1683693 +0.775,0.875,0.15000004,0.14999998 +0.775,0.875,0.10606599,0.2121321 +0.775,0.875,0.21213204,0.10606599 +0.775,0.875,0.18898815,0.18898809 +0.775,0.875,0.1336348,0.2672696 +0.775,0.875,0.26726967,0.1336348 +0.775,0.875,0.23811013,0.23811018 +0.775,0.875,0.1683693,0.3367386 +0.775,0.875,0.3367386,0.1683693 +0.775,0.925,0.15000004,0.14999998 +0.775,0.925,0.10606599,0.2121321 +0.775,0.92499995,0.21213204,0.10606593 +0.775,0.925,0.18898815,0.18898809 +0.775,0.9250001,0.1336348,0.26726967 +0.775,0.92499995,0.26726967,0.13363475 +0.775,0.925,0.23811013,0.23811018 +0.775,0.92499995,0.1683693,0.33673853 +0.775,0.92499995,0.3367386,0.16836923 +0.775,0.97499996,0.15000004,0.14999998 +0.775,0.975,0.10606599,0.21213204 +0.775,0.975,0.21213204,0.10606599 +0.775,0.97499996,0.18898815,0.18898809 +0.775,0.975,0.1336348,0.26726967 +0.775,0.975,0.26726967,0.1336348 +0.775,0.975,0.23811013,0.23811013 +0.775,0.975,0.1683693,0.3367386 +0.775,0.975,0.3367386,0.1683693 +0.825,0.025,0.14999998,0.15 +0.825,0.024999995,0.10606599,0.21213204 +0.825,0.024999999,0.2121321,0.10606602 +0.825,0.024999999,0.18898809,0.18898816 +0.825,0.025000002,0.1336348,0.2672696 +0.82500005,0.024999999,0.26726967,0.1336348 +0.825,0.025000002,0.23811018,0.23811015 +0.825,0.024999999,0.1683693,0.3367386 +0.825,0.025000004,0.3367386,0.16836931 +0.825,0.075,0.14999998,0.15 +0.825,0.074999996,0.10606599,0.21213202 +0.825,0.075,0.2121321,0.10606602 +0.825,0.075,0.18898809,0.18898815 +0.825,0.075,0.1336348,0.2672696 +0.82500005,0.075,0.26726967,0.1336348 +0.825,0.075,0.23811018,0.23811015 +0.825,0.075,0.1683693,0.33673862 +0.825,0.075,0.3367386,0.16836932 +0.825,0.125,0.14999998,0.15 +0.825,0.125,0.10606599,0.21213204 +0.825,0.125,0.2121321,0.10606602 +0.825,0.125,0.18898809,0.18898815 +0.825,0.125,0.1336348,0.2672696 +0.82500005,0.125,0.26726967,0.1336348 +0.825,0.125,0.23811018,0.23811015 +0.825,0.125,0.1683693,0.33673865 +0.825,0.125,0.3367386,0.1683693 +0.825,0.175,0.14999998,0.15 +0.825,0.17499998,0.10606599,0.21213202 +0.825,0.17500001,0.2121321,0.106066026 +0.825,0.17500001,0.18898809,0.18898816 +0.825,0.17500001,0.1336348,0.2672696 +0.82500005,0.175,0.26726967,0.1336348 +0.825,0.175,0.23811018,0.23811015 +0.825,0.175,0.1683693,0.33673862 +0.825,0.17500001,0.3367386,0.16836931 +0.825,0.22500001,0.14999998,0.15 +0.825,0.225,0.10606599,0.21213202 +0.825,0.22500001,0.2121321,0.10606602 +0.825,0.225,0.18898809,0.18898815 +0.825,0.225,0.1336348,0.2672696 +0.82500005,0.225,0.26726967,0.1336348 +0.825,0.225,0.23811018,0.23811017 +0.825,0.22500001,0.1683693,0.33673862 +0.825,0.225,0.3367386,0.1683693 +0.825,0.275,0.14999998,0.14999999 +0.825,0.275,0.10606599,0.21213204 +0.825,0.275,0.2121321,0.10606605 +0.825,0.275,0.18898809,0.18898816 +0.825,0.275,0.1336348,0.2672696 +0.82500005,0.275,0.26726967,0.1336348 +0.825,0.27499998,0.23811018,0.23811015 +0.825,0.275,0.1683693,0.3367386 +0.825,0.275,0.3367386,0.16836931 +0.825,0.325,0.14999998,0.15 +0.825,0.32500002,0.10606599,0.21213205 +0.825,0.325,0.2121321,0.10606602 +0.825,0.325,0.18898809,0.18898815 +0.825,0.325,0.1336348,0.2672696 +0.82500005,0.325,0.26726967,0.1336348 +0.825,0.325,0.23811018,0.23811015 +0.825,0.325,0.1683693,0.3367386 +0.825,0.325,0.3367386,0.16836928 +0.825,0.375,0.14999998,0.14999998 +0.825,0.375,0.10606599,0.21213207 +0.825,0.375,0.2121321,0.10606605 +0.825,0.375,0.18898809,0.18898812 +0.825,0.375,0.1336348,0.2672696 +0.82500005,0.375,0.26726967,0.13363484 +0.825,0.375,0.23811018,0.23811018 +0.825,0.375,0.1683693,0.33673862 +0.825,0.375,0.3367386,0.1683693 +0.825,0.425,0.14999998,0.15 +0.825,0.425,0.10606599,0.21213207 +0.825,0.425,0.2121321,0.10606602 +0.825,0.42499998,0.18898809,0.18898815 +0.825,0.425,0.1336348,0.2672696 +0.82500005,0.425,0.26726967,0.1336348 +0.825,0.425,0.23811018,0.23811018 +0.825,0.425,0.1683693,0.33673862 +0.825,0.425,0.3367386,0.1683693 +0.825,0.47500002,0.14999998,0.15 +0.825,0.475,0.10606599,0.21213204 +0.825,0.475,0.2121321,0.10606605 +0.825,0.475,0.18898809,0.18898815 +0.825,0.47500002,0.1336348,0.26726964 +0.82500005,0.475,0.26726967,0.13363487 +0.825,0.475,0.23811018,0.23811013 +0.825,0.475,0.1683693,0.33673865 +0.825,0.47500002,0.3367386,0.16836932 +0.825,0.525,0.14999998,0.15000004 +0.825,0.525,0.10606599,0.21213207 +0.825,0.525,0.2121321,0.10606605 +0.825,0.525,0.18898809,0.18898815 +0.825,0.525,0.1336348,0.26726958 +0.82500005,0.525,0.26726967,0.13363487 +0.825,0.525,0.23811018,0.23811015 +0.825,0.525,0.1683693,0.3367386 +0.825,0.525,0.3367386,0.16836926 +0.825,0.575,0.14999998,0.14999998 +0.825,0.575,0.10606599,0.21213207 +0.825,0.57500005,0.2121321,0.10606605 +0.825,0.575,0.18898809,0.18898809 +0.825,0.575,0.1336348,0.2672696 +0.82500005,0.57500005,0.26726967,0.13363487 +0.825,0.575,0.23811018,0.23811015 +0.825,0.575,0.1683693,0.3367386 +0.825,0.575,0.3367386,0.1683693 +0.825,0.625,0.14999998,0.14999998 +0.825,0.625,0.10606599,0.2121321 +0.825,0.625,0.2121321,0.10606599 +0.825,0.625,0.18898809,0.18898809 +0.825,0.625,0.1336348,0.2672696 +0.82500005,0.625,0.26726967,0.1336348 +0.825,0.625,0.23811018,0.23811018 +0.825,0.625,0.1683693,0.3367386 +0.825,0.625,0.3367386,0.1683693 +0.825,0.675,0.14999998,0.14999998 +0.825,0.675,0.10606599,0.2121321 +0.825,0.67499995,0.2121321,0.10606605 +0.825,0.675,0.18898809,0.18898809 +0.825,0.6750001,0.1336348,0.26726967 +0.82500005,0.67499995,0.26726967,0.13363487 +0.825,0.675,0.23811018,0.23811018 +0.825,0.675,0.1683693,0.3367386 +0.825,0.675,0.3367386,0.1683693 +0.825,0.725,0.14999998,0.15000004 +0.825,0.725,0.10606599,0.21213204 +0.825,0.725,0.2121321,0.10606605 +0.825,0.725,0.18898809,0.18898815 +0.825,0.725,0.1336348,0.2672696 +0.82500005,0.725,0.26726967,0.13363487 +0.825,0.725,0.23811018,0.23811013 +0.825,0.725,0.1683693,0.3367386 +0.825,0.725,0.3367386,0.1683693 +0.825,0.775,0.14999998,0.15000004 +0.825,0.775,0.10606599,0.21213204 +0.825,0.775,0.2121321,0.10606599 +0.825,0.775,0.18898809,0.18898815 +0.825,0.775,0.1336348,0.26726967 +0.82500005,0.775,0.26726967,0.1336348 +0.825,0.775,0.23811018,0.23811013 +0.825,0.775,0.1683693,0.3367386 +0.825,0.775,0.3367386,0.1683693 +0.825,0.825,0.14999998,0.14999998 +0.825,0.825,0.10606599,0.2121321 +0.825,0.825,0.2121321,0.10606599 +0.825,0.825,0.18898809,0.18898809 +0.825,0.82500005,0.1336348,0.26726967 +0.82500005,0.825,0.26726967,0.1336348 +0.825,0.825,0.23811018,0.23811018 +0.825,0.825,0.1683693,0.3367386 +0.825,0.825,0.3367386,0.1683693 +0.825,0.875,0.14999998,0.14999998 +0.825,0.875,0.10606599,0.2121321 +0.825,0.875,0.2121321,0.10606599 +0.825,0.875,0.18898809,0.18898809 +0.825,0.875,0.1336348,0.2672696 +0.82500005,0.875,0.26726967,0.1336348 +0.825,0.875,0.23811018,0.23811018 +0.825,0.875,0.1683693,0.3367386 +0.825,0.875,0.3367386,0.1683693 +0.825,0.925,0.14999998,0.14999998 +0.825,0.925,0.10606599,0.2121321 +0.825,0.92499995,0.2121321,0.10606593 +0.825,0.925,0.18898809,0.18898809 +0.825,0.9250001,0.1336348,0.26726967 +0.82500005,0.92499995,0.26726967,0.13363475 +0.825,0.925,0.23811018,0.23811018 +0.825,0.92499995,0.1683693,0.33673853 +0.825,0.92499995,0.3367386,0.16836923 +0.825,0.97499996,0.14999998,0.14999998 +0.825,0.975,0.10606599,0.21213204 +0.825,0.975,0.2121321,0.10606599 +0.825,0.97499996,0.18898809,0.18898809 +0.825,0.975,0.1336348,0.26726967 +0.82500005,0.975,0.26726967,0.1336348 +0.825,0.975,0.23811018,0.23811013 +0.825,0.975,0.1683693,0.3367386 +0.825,0.975,0.3367386,0.1683693 +0.875,0.025,0.14999998,0.15 +0.875,0.024999995,0.10606599,0.21213204 +0.875,0.024999999,0.2121321,0.10606602 +0.875,0.024999999,0.18898809,0.18898816 +0.875,0.025000002,0.1336348,0.2672696 +0.875,0.024999999,0.2672696,0.1336348 +0.875,0.025000002,0.23811018,0.23811015 +0.875,0.024999999,0.1683693,0.3367386 +0.875,0.025000004,0.3367386,0.16836931 +0.875,0.075,0.14999998,0.15 +0.875,0.074999996,0.10606599,0.21213202 +0.875,0.075,0.2121321,0.10606602 +0.875,0.075,0.18898809,0.18898815 +0.875,0.075,0.1336348,0.2672696 +0.875,0.075,0.2672696,0.1336348 +0.875,0.075,0.23811018,0.23811015 +0.875,0.075,0.1683693,0.33673862 +0.875,0.075,0.3367386,0.16836932 +0.875,0.125,0.14999998,0.15 +0.875,0.125,0.10606599,0.21213204 +0.875,0.125,0.2121321,0.10606602 +0.875,0.125,0.18898809,0.18898815 +0.875,0.125,0.1336348,0.2672696 +0.875,0.125,0.2672696,0.1336348 +0.875,0.125,0.23811018,0.23811015 +0.875,0.125,0.1683693,0.33673865 +0.875,0.125,0.3367386,0.1683693 +0.875,0.175,0.14999998,0.15 +0.875,0.17499998,0.10606599,0.21213202 +0.875,0.17500001,0.2121321,0.106066026 +0.875,0.17500001,0.18898809,0.18898816 +0.875,0.17500001,0.1336348,0.2672696 +0.875,0.175,0.2672696,0.1336348 +0.875,0.175,0.23811018,0.23811015 +0.875,0.175,0.1683693,0.33673862 +0.875,0.17500001,0.3367386,0.16836931 +0.875,0.22500001,0.14999998,0.15 +0.875,0.225,0.10606599,0.21213202 +0.875,0.22500001,0.2121321,0.10606602 +0.875,0.225,0.18898809,0.18898815 +0.875,0.225,0.1336348,0.2672696 +0.875,0.225,0.2672696,0.1336348 +0.875,0.225,0.23811018,0.23811017 +0.875,0.22500001,0.1683693,0.33673862 +0.875,0.225,0.3367386,0.1683693 +0.875,0.275,0.14999998,0.14999999 +0.875,0.275,0.10606599,0.21213204 +0.875,0.275,0.2121321,0.10606605 +0.875,0.275,0.18898809,0.18898816 +0.875,0.275,0.1336348,0.2672696 +0.875,0.275,0.2672696,0.1336348 +0.875,0.27499998,0.23811018,0.23811015 +0.875,0.275,0.1683693,0.3367386 +0.875,0.275,0.3367386,0.16836931 +0.875,0.325,0.14999998,0.15 +0.875,0.32500002,0.10606599,0.21213205 +0.875,0.325,0.2121321,0.10606602 +0.875,0.325,0.18898809,0.18898815 +0.875,0.325,0.1336348,0.2672696 +0.875,0.325,0.2672696,0.1336348 +0.875,0.325,0.23811018,0.23811015 +0.875,0.325,0.1683693,0.3367386 +0.875,0.325,0.3367386,0.16836928 +0.875,0.375,0.14999998,0.14999998 +0.875,0.375,0.10606599,0.21213207 +0.875,0.375,0.2121321,0.10606605 +0.875,0.375,0.18898809,0.18898812 +0.875,0.375,0.1336348,0.2672696 +0.875,0.375,0.2672696,0.13363484 +0.875,0.375,0.23811018,0.23811018 +0.875,0.375,0.1683693,0.33673862 +0.875,0.375,0.3367386,0.1683693 +0.875,0.425,0.14999998,0.15 +0.875,0.425,0.10606599,0.21213207 +0.875,0.425,0.2121321,0.10606602 +0.875,0.42499998,0.18898809,0.18898815 +0.875,0.425,0.1336348,0.2672696 +0.875,0.425,0.2672696,0.1336348 +0.875,0.425,0.23811018,0.23811018 +0.875,0.425,0.1683693,0.33673862 +0.875,0.425,0.3367386,0.1683693 +0.875,0.47500002,0.14999998,0.15 +0.875,0.475,0.10606599,0.21213204 +0.875,0.475,0.2121321,0.10606605 +0.875,0.475,0.18898809,0.18898815 +0.875,0.47500002,0.1336348,0.26726964 +0.875,0.475,0.2672696,0.13363487 +0.875,0.475,0.23811018,0.23811013 +0.875,0.475,0.1683693,0.33673865 +0.875,0.47500002,0.3367386,0.16836932 +0.875,0.525,0.14999998,0.15000004 +0.875,0.525,0.10606599,0.21213207 +0.875,0.525,0.2121321,0.10606605 +0.875,0.525,0.18898809,0.18898815 +0.875,0.525,0.1336348,0.26726958 +0.875,0.525,0.2672696,0.13363487 +0.875,0.525,0.23811018,0.23811015 +0.875,0.525,0.1683693,0.3367386 +0.875,0.525,0.3367386,0.16836926 +0.875,0.575,0.14999998,0.14999998 +0.875,0.575,0.10606599,0.21213207 +0.875,0.57500005,0.2121321,0.10606605 +0.875,0.575,0.18898809,0.18898809 +0.875,0.575,0.1336348,0.2672696 +0.875,0.57500005,0.2672696,0.13363487 +0.875,0.575,0.23811018,0.23811015 +0.875,0.575,0.1683693,0.3367386 +0.875,0.575,0.3367386,0.1683693 +0.875,0.625,0.14999998,0.14999998 +0.875,0.625,0.10606599,0.2121321 +0.875,0.625,0.2121321,0.10606599 +0.875,0.625,0.18898809,0.18898809 +0.875,0.625,0.1336348,0.2672696 +0.875,0.625,0.2672696,0.1336348 +0.875,0.625,0.23811018,0.23811018 +0.875,0.625,0.1683693,0.3367386 +0.875,0.625,0.3367386,0.1683693 +0.875,0.675,0.14999998,0.14999998 +0.875,0.675,0.10606599,0.2121321 +0.875,0.67499995,0.2121321,0.10606605 +0.875,0.675,0.18898809,0.18898809 +0.875,0.6750001,0.1336348,0.26726967 +0.875,0.67499995,0.2672696,0.13363487 +0.875,0.675,0.23811018,0.23811018 +0.875,0.675,0.1683693,0.3367386 +0.875,0.675,0.3367386,0.1683693 +0.875,0.725,0.14999998,0.15000004 +0.875,0.725,0.10606599,0.21213204 +0.875,0.725,0.2121321,0.10606605 +0.875,0.725,0.18898809,0.18898815 +0.875,0.725,0.1336348,0.2672696 +0.875,0.725,0.2672696,0.13363487 +0.875,0.725,0.23811018,0.23811013 +0.875,0.725,0.1683693,0.3367386 +0.875,0.725,0.3367386,0.1683693 +0.875,0.775,0.14999998,0.15000004 +0.875,0.775,0.10606599,0.21213204 +0.875,0.775,0.2121321,0.10606599 +0.875,0.775,0.18898809,0.18898815 +0.875,0.775,0.1336348,0.26726967 +0.875,0.775,0.2672696,0.1336348 +0.875,0.775,0.23811018,0.23811013 +0.875,0.775,0.1683693,0.3367386 +0.875,0.775,0.3367386,0.1683693 +0.875,0.825,0.14999998,0.14999998 +0.875,0.825,0.10606599,0.2121321 +0.875,0.825,0.2121321,0.10606599 +0.875,0.825,0.18898809,0.18898809 +0.875,0.82500005,0.1336348,0.26726967 +0.875,0.825,0.2672696,0.1336348 +0.875,0.825,0.23811018,0.23811018 +0.875,0.825,0.1683693,0.3367386 +0.875,0.825,0.3367386,0.1683693 +0.875,0.875,0.14999998,0.14999998 +0.875,0.875,0.10606599,0.2121321 +0.875,0.875,0.2121321,0.10606599 +0.875,0.875,0.18898809,0.18898809 +0.875,0.875,0.1336348,0.2672696 +0.875,0.875,0.2672696,0.1336348 +0.875,0.875,0.23811018,0.23811018 +0.875,0.875,0.1683693,0.3367386 +0.875,0.875,0.3367386,0.1683693 +0.875,0.925,0.14999998,0.14999998 +0.875,0.925,0.10606599,0.2121321 +0.875,0.92499995,0.2121321,0.10606593 +0.875,0.925,0.18898809,0.18898809 +0.875,0.9250001,0.1336348,0.26726967 +0.875,0.92499995,0.2672696,0.13363475 +0.875,0.925,0.23811018,0.23811018 +0.875,0.92499995,0.1683693,0.33673853 +0.875,0.92499995,0.3367386,0.16836923 +0.875,0.97499996,0.14999998,0.14999998 +0.875,0.975,0.10606599,0.21213204 +0.875,0.975,0.2121321,0.10606599 +0.875,0.97499996,0.18898809,0.18898809 +0.875,0.975,0.1336348,0.26726967 +0.875,0.975,0.2672696,0.1336348 +0.875,0.975,0.23811018,0.23811013 +0.875,0.975,0.1683693,0.3367386 +0.875,0.975,0.3367386,0.1683693 +0.925,0.025,0.14999998,0.15 +0.92499995,0.024999995,0.10606593,0.21213204 +0.925,0.024999999,0.2121321,0.10606602 +0.925,0.024999999,0.18898809,0.18898816 +0.92499995,0.025000002,0.13363475,0.2672696 +0.9250001,0.024999999,0.26726967,0.1336348 +0.925,0.025000002,0.23811018,0.23811015 +0.92499995,0.024999999,0.16836923,0.3367386 +0.92499995,0.025000004,0.33673853,0.16836931 +0.925,0.075,0.14999998,0.15 +0.92499995,0.074999996,0.10606593,0.21213202 +0.925,0.075,0.2121321,0.10606602 +0.925,0.075,0.18898809,0.18898815 +0.92499995,0.075,0.13363475,0.2672696 +0.9250001,0.075,0.26726967,0.1336348 +0.925,0.075,0.23811018,0.23811015 +0.92499995,0.075,0.16836923,0.33673862 +0.92499995,0.075,0.33673853,0.16836932 +0.925,0.125,0.14999998,0.15 +0.92499995,0.125,0.10606593,0.21213204 +0.925,0.125,0.2121321,0.10606602 +0.925,0.125,0.18898809,0.18898815 +0.92499995,0.125,0.13363475,0.2672696 +0.9250001,0.125,0.26726967,0.1336348 +0.925,0.125,0.23811018,0.23811015 +0.92499995,0.125,0.16836923,0.33673865 +0.92499995,0.125,0.33673853,0.1683693 +0.925,0.175,0.14999998,0.15 +0.92499995,0.17499998,0.10606593,0.21213202 +0.925,0.17500001,0.2121321,0.106066026 +0.925,0.17500001,0.18898809,0.18898816 +0.92499995,0.17500001,0.13363475,0.2672696 +0.9250001,0.175,0.26726967,0.1336348 +0.925,0.175,0.23811018,0.23811015 +0.92499995,0.175,0.16836923,0.33673862 +0.92499995,0.17500001,0.33673853,0.16836931 +0.925,0.22500001,0.14999998,0.15 +0.92499995,0.225,0.10606593,0.21213202 +0.925,0.22500001,0.2121321,0.10606602 +0.925,0.225,0.18898809,0.18898815 +0.92499995,0.225,0.13363475,0.2672696 +0.9250001,0.225,0.26726967,0.1336348 +0.925,0.225,0.23811018,0.23811017 +0.92499995,0.22500001,0.16836923,0.33673862 +0.92499995,0.225,0.33673853,0.1683693 +0.925,0.275,0.14999998,0.14999999 +0.92499995,0.275,0.10606593,0.21213204 +0.925,0.275,0.2121321,0.10606605 +0.925,0.275,0.18898809,0.18898816 +0.92499995,0.275,0.13363475,0.2672696 +0.9250001,0.275,0.26726967,0.1336348 +0.925,0.27499998,0.23811018,0.23811015 +0.92499995,0.275,0.16836923,0.3367386 +0.92499995,0.275,0.33673853,0.16836931 +0.925,0.325,0.14999998,0.15 +0.92499995,0.32500002,0.10606593,0.21213205 +0.925,0.325,0.2121321,0.10606602 +0.925,0.325,0.18898809,0.18898815 +0.92499995,0.325,0.13363475,0.2672696 +0.9250001,0.325,0.26726967,0.1336348 +0.925,0.325,0.23811018,0.23811015 +0.92499995,0.325,0.16836923,0.3367386 +0.92499995,0.325,0.33673853,0.16836928 +0.925,0.375,0.14999998,0.14999998 +0.92499995,0.375,0.10606593,0.21213207 +0.925,0.375,0.2121321,0.10606605 +0.925,0.375,0.18898809,0.18898812 +0.92499995,0.375,0.13363475,0.2672696 +0.9250001,0.375,0.26726967,0.13363484 +0.925,0.375,0.23811018,0.23811018 +0.92499995,0.375,0.16836923,0.33673862 +0.92499995,0.375,0.33673853,0.1683693 +0.925,0.425,0.14999998,0.15 +0.92499995,0.425,0.10606593,0.21213207 +0.925,0.425,0.2121321,0.10606602 +0.925,0.42499998,0.18898809,0.18898815 +0.92499995,0.425,0.13363475,0.2672696 +0.9250001,0.425,0.26726967,0.1336348 +0.925,0.425,0.23811018,0.23811018 +0.92499995,0.425,0.16836923,0.33673862 +0.92499995,0.425,0.33673853,0.1683693 +0.925,0.47500002,0.14999998,0.15 +0.92499995,0.475,0.10606593,0.21213204 +0.925,0.475,0.2121321,0.10606605 +0.925,0.475,0.18898809,0.18898815 +0.92499995,0.47500002,0.13363475,0.26726964 +0.9250001,0.475,0.26726967,0.13363487 +0.925,0.475,0.23811018,0.23811013 +0.92499995,0.475,0.16836923,0.33673865 +0.92499995,0.47500002,0.33673853,0.16836932 +0.925,0.525,0.14999998,0.15000004 +0.92499995,0.525,0.10606593,0.21213207 +0.925,0.525,0.2121321,0.10606605 +0.925,0.525,0.18898809,0.18898815 +0.92499995,0.525,0.13363475,0.26726958 +0.9250001,0.525,0.26726967,0.13363487 +0.925,0.525,0.23811018,0.23811015 +0.92499995,0.525,0.16836923,0.3367386 +0.92499995,0.525,0.33673853,0.16836926 +0.925,0.575,0.14999998,0.14999998 +0.92499995,0.575,0.10606593,0.21213207 +0.925,0.57500005,0.2121321,0.10606605 +0.925,0.575,0.18898809,0.18898809 +0.92499995,0.575,0.13363475,0.2672696 +0.9250001,0.57500005,0.26726967,0.13363487 +0.925,0.575,0.23811018,0.23811015 +0.92499995,0.575,0.16836923,0.3367386 +0.92499995,0.575,0.33673853,0.1683693 +0.925,0.625,0.14999998,0.14999998 +0.92499995,0.625,0.10606593,0.2121321 +0.925,0.625,0.2121321,0.10606599 +0.925,0.625,0.18898809,0.18898809 +0.92499995,0.625,0.13363475,0.2672696 +0.9250001,0.625,0.26726967,0.1336348 +0.925,0.625,0.23811018,0.23811018 +0.92499995,0.625,0.16836923,0.3367386 +0.92499995,0.625,0.33673853,0.1683693 +0.925,0.675,0.14999998,0.14999998 +0.92499995,0.675,0.10606593,0.2121321 +0.925,0.67499995,0.2121321,0.10606605 +0.925,0.675,0.18898809,0.18898809 +0.92499995,0.6750001,0.13363475,0.26726967 +0.9250001,0.67499995,0.26726967,0.13363487 +0.925,0.675,0.23811018,0.23811018 +0.92499995,0.675,0.16836923,0.3367386 +0.92499995,0.675,0.33673853,0.1683693 +0.925,0.725,0.14999998,0.15000004 +0.92499995,0.725,0.10606593,0.21213204 +0.925,0.725,0.2121321,0.10606605 +0.925,0.725,0.18898809,0.18898815 +0.92499995,0.725,0.13363475,0.2672696 +0.9250001,0.725,0.26726967,0.13363487 +0.925,0.725,0.23811018,0.23811013 +0.92499995,0.725,0.16836923,0.3367386 +0.92499995,0.725,0.33673853,0.1683693 +0.925,0.775,0.14999998,0.15000004 +0.92499995,0.775,0.10606593,0.21213204 +0.925,0.775,0.2121321,0.10606599 +0.925,0.775,0.18898809,0.18898815 +0.92499995,0.775,0.13363475,0.26726967 +0.9250001,0.775,0.26726967,0.1336348 +0.925,0.775,0.23811018,0.23811013 +0.92499995,0.775,0.16836923,0.3367386 +0.92499995,0.775,0.33673853,0.1683693 +0.925,0.825,0.14999998,0.14999998 +0.92499995,0.825,0.10606593,0.2121321 +0.925,0.825,0.2121321,0.10606599 +0.925,0.825,0.18898809,0.18898809 +0.92499995,0.82500005,0.13363475,0.26726967 +0.9250001,0.825,0.26726967,0.1336348 +0.925,0.825,0.23811018,0.23811018 +0.92499995,0.825,0.16836923,0.3367386 +0.92499995,0.825,0.33673853,0.1683693 +0.925,0.875,0.14999998,0.14999998 +0.92499995,0.875,0.10606593,0.2121321 +0.925,0.875,0.2121321,0.10606599 +0.925,0.875,0.18898809,0.18898809 +0.92499995,0.875,0.13363475,0.2672696 +0.9250001,0.875,0.26726967,0.1336348 +0.925,0.875,0.23811018,0.23811018 +0.92499995,0.875,0.16836923,0.3367386 +0.92499995,0.875,0.33673853,0.1683693 +0.925,0.925,0.14999998,0.14999998 +0.92499995,0.925,0.10606593,0.2121321 +0.925,0.92499995,0.2121321,0.10606593 +0.925,0.925,0.18898809,0.18898809 +0.92499995,0.9250001,0.13363475,0.26726967 +0.9250001,0.92499995,0.26726967,0.13363475 +0.925,0.925,0.23811018,0.23811018 +0.92499995,0.92499995,0.16836923,0.33673853 +0.92499995,0.92499995,0.33673853,0.16836923 +0.925,0.97499996,0.14999998,0.14999998 +0.92499995,0.975,0.10606593,0.21213204 +0.925,0.975,0.2121321,0.10606599 +0.925,0.97499996,0.18898809,0.18898809 +0.92499995,0.975,0.13363475,0.26726967 +0.9250001,0.975,0.26726967,0.1336348 +0.925,0.975,0.23811018,0.23811013 +0.92499995,0.975,0.16836923,0.3367386 +0.92499995,0.975,0.33673853,0.1683693 +0.97499996,0.025,0.14999998,0.15 +0.975,0.024999995,0.10606599,0.21213204 +0.975,0.024999999,0.21213204,0.10606602 +0.97499996,0.024999999,0.18898809,0.18898816 +0.975,0.025000002,0.1336348,0.2672696 +0.975,0.024999999,0.26726967,0.1336348 +0.975,0.025000002,0.23811013,0.23811015 +0.975,0.024999999,0.1683693,0.3367386 +0.975,0.025000004,0.3367386,0.16836931 +0.97499996,0.075,0.14999998,0.15 +0.975,0.074999996,0.10606599,0.21213202 +0.975,0.075,0.21213204,0.10606602 +0.97499996,0.075,0.18898809,0.18898815 +0.975,0.075,0.1336348,0.2672696 +0.975,0.075,0.26726967,0.1336348 +0.975,0.075,0.23811013,0.23811015 +0.975,0.075,0.1683693,0.33673862 +0.975,0.075,0.3367386,0.16836932 +0.97499996,0.125,0.14999998,0.15 +0.975,0.125,0.10606599,0.21213204 +0.975,0.125,0.21213204,0.10606602 +0.97499996,0.125,0.18898809,0.18898815 +0.975,0.125,0.1336348,0.2672696 +0.975,0.125,0.26726967,0.1336348 +0.975,0.125,0.23811013,0.23811015 +0.975,0.125,0.1683693,0.33673865 +0.975,0.125,0.3367386,0.1683693 +0.97499996,0.175,0.14999998,0.15 +0.975,0.17499998,0.10606599,0.21213202 +0.975,0.17500001,0.21213204,0.106066026 +0.97499996,0.17500001,0.18898809,0.18898816 +0.975,0.17500001,0.1336348,0.2672696 +0.975,0.175,0.26726967,0.1336348 +0.975,0.175,0.23811013,0.23811015 +0.975,0.175,0.1683693,0.33673862 +0.975,0.17500001,0.3367386,0.16836931 +0.97499996,0.22500001,0.14999998,0.15 +0.975,0.225,0.10606599,0.21213202 +0.975,0.22500001,0.21213204,0.10606602 +0.97499996,0.225,0.18898809,0.18898815 +0.975,0.225,0.1336348,0.2672696 +0.975,0.225,0.26726967,0.1336348 +0.975,0.225,0.23811013,0.23811017 +0.975,0.22500001,0.1683693,0.33673862 +0.975,0.225,0.3367386,0.1683693 +0.97499996,0.275,0.14999998,0.14999999 +0.975,0.275,0.10606599,0.21213204 +0.975,0.275,0.21213204,0.10606605 +0.97499996,0.275,0.18898809,0.18898816 +0.975,0.275,0.1336348,0.2672696 +0.975,0.275,0.26726967,0.1336348 +0.975,0.27499998,0.23811013,0.23811015 +0.975,0.275,0.1683693,0.3367386 +0.975,0.275,0.3367386,0.16836931 +0.97499996,0.325,0.14999998,0.15 +0.975,0.32500002,0.10606599,0.21213205 +0.975,0.325,0.21213204,0.10606602 +0.97499996,0.325,0.18898809,0.18898815 +0.975,0.325,0.1336348,0.2672696 +0.975,0.325,0.26726967,0.1336348 +0.975,0.325,0.23811013,0.23811015 +0.975,0.325,0.1683693,0.3367386 +0.975,0.325,0.3367386,0.16836928 +0.97499996,0.375,0.14999998,0.14999998 +0.975,0.375,0.10606599,0.21213207 +0.975,0.375,0.21213204,0.10606605 +0.97499996,0.375,0.18898809,0.18898812 +0.975,0.375,0.1336348,0.2672696 +0.975,0.375,0.26726967,0.13363484 +0.975,0.375,0.23811013,0.23811018 +0.975,0.375,0.1683693,0.33673862 +0.975,0.375,0.3367386,0.1683693 +0.97499996,0.425,0.14999998,0.15 +0.975,0.425,0.10606599,0.21213207 +0.975,0.425,0.21213204,0.10606602 +0.97499996,0.42499998,0.18898809,0.18898815 +0.975,0.425,0.1336348,0.2672696 +0.975,0.425,0.26726967,0.1336348 +0.975,0.425,0.23811013,0.23811018 +0.975,0.425,0.1683693,0.33673862 +0.975,0.425,0.3367386,0.1683693 +0.97499996,0.47500002,0.14999998,0.15 +0.975,0.475,0.10606599,0.21213204 +0.975,0.475,0.21213204,0.10606605 +0.97499996,0.475,0.18898809,0.18898815 +0.975,0.47500002,0.1336348,0.26726964 +0.975,0.475,0.26726967,0.13363487 +0.975,0.475,0.23811013,0.23811013 +0.975,0.475,0.1683693,0.33673865 +0.975,0.47500002,0.3367386,0.16836932 +0.97499996,0.525,0.14999998,0.15000004 +0.975,0.525,0.10606599,0.21213207 +0.975,0.525,0.21213204,0.10606605 +0.97499996,0.525,0.18898809,0.18898815 +0.975,0.525,0.1336348,0.26726958 +0.975,0.525,0.26726967,0.13363487 +0.975,0.525,0.23811013,0.23811015 +0.975,0.525,0.1683693,0.3367386 +0.975,0.525,0.3367386,0.16836926 +0.97499996,0.575,0.14999998,0.14999998 +0.975,0.575,0.10606599,0.21213207 +0.975,0.57500005,0.21213204,0.10606605 +0.97499996,0.575,0.18898809,0.18898809 +0.975,0.575,0.1336348,0.2672696 +0.975,0.57500005,0.26726967,0.13363487 +0.975,0.575,0.23811013,0.23811015 +0.975,0.575,0.1683693,0.3367386 +0.975,0.575,0.3367386,0.1683693 +0.97499996,0.625,0.14999998,0.14999998 +0.975,0.625,0.10606599,0.2121321 +0.975,0.625,0.21213204,0.10606599 +0.97499996,0.625,0.18898809,0.18898809 +0.975,0.625,0.1336348,0.2672696 +0.975,0.625,0.26726967,0.1336348 +0.975,0.625,0.23811013,0.23811018 +0.975,0.625,0.1683693,0.3367386 +0.975,0.625,0.3367386,0.1683693 +0.97499996,0.675,0.14999998,0.14999998 +0.975,0.675,0.10606599,0.2121321 +0.975,0.67499995,0.21213204,0.10606605 +0.97499996,0.675,0.18898809,0.18898809 +0.975,0.6750001,0.1336348,0.26726967 +0.975,0.67499995,0.26726967,0.13363487 +0.975,0.675,0.23811013,0.23811018 +0.975,0.675,0.1683693,0.3367386 +0.975,0.675,0.3367386,0.1683693 +0.97499996,0.725,0.14999998,0.15000004 +0.975,0.725,0.10606599,0.21213204 +0.975,0.725,0.21213204,0.10606605 +0.97499996,0.725,0.18898809,0.18898815 +0.975,0.725,0.1336348,0.2672696 +0.975,0.725,0.26726967,0.13363487 +0.975,0.725,0.23811013,0.23811013 +0.975,0.725,0.1683693,0.3367386 +0.975,0.725,0.3367386,0.1683693 +0.97499996,0.775,0.14999998,0.15000004 +0.975,0.775,0.10606599,0.21213204 +0.975,0.775,0.21213204,0.10606599 +0.97499996,0.775,0.18898809,0.18898815 +0.975,0.775,0.1336348,0.26726967 +0.975,0.775,0.26726967,0.1336348 +0.975,0.775,0.23811013,0.23811013 +0.975,0.775,0.1683693,0.3367386 +0.975,0.775,0.3367386,0.1683693 +0.97499996,0.825,0.14999998,0.14999998 +0.975,0.825,0.10606599,0.2121321 +0.975,0.825,0.21213204,0.10606599 +0.97499996,0.825,0.18898809,0.18898809 +0.975,0.82500005,0.1336348,0.26726967 +0.975,0.825,0.26726967,0.1336348 +0.975,0.825,0.23811013,0.23811018 +0.975,0.825,0.1683693,0.3367386 +0.975,0.825,0.3367386,0.1683693 +0.97499996,0.875,0.14999998,0.14999998 +0.975,0.875,0.10606599,0.2121321 +0.975,0.875,0.21213204,0.10606599 +0.97499996,0.875,0.18898809,0.18898809 +0.975,0.875,0.1336348,0.2672696 +0.975,0.875,0.26726967,0.1336348 +0.975,0.875,0.23811013,0.23811018 +0.975,0.875,0.1683693,0.3367386 +0.975,0.875,0.3367386,0.1683693 +0.97499996,0.925,0.14999998,0.14999998 +0.975,0.925,0.10606599,0.2121321 +0.975,0.92499995,0.21213204,0.10606593 +0.97499996,0.925,0.18898809,0.18898809 +0.975,0.9250001,0.1336348,0.26726967 +0.975,0.92499995,0.26726967,0.13363475 +0.975,0.925,0.23811013,0.23811018 +0.975,0.92499995,0.1683693,0.33673853 +0.975,0.92499995,0.3367386,0.16836923 +0.97499996,0.97499996,0.14999998,0.14999998 +0.975,0.975,0.10606599,0.21213204 +0.975,0.975,0.21213204,0.10606599 +0.97499996,0.97499996,0.18898809,0.18898809 +0.975,0.975,0.1336348,0.26726967 +0.975,0.975,0.26726967,0.1336348 +0.975,0.975,0.23811013,0.23811013 +0.975,0.975,0.1683693,0.3367386 +0.975,0.975,0.3367386,0.1683693 +0.05,0.05,0.3,0.3 +0.049999997,0.04999999,0.21213204,0.42426407 +0.04999999,0.049999997,0.42426407,0.21213204 +0.049999997,0.049999997,0.37797633,0.37797633 +0.049999997,0.050000004,0.2672696,0.5345392 +0.050000004,0.049999997,0.5345392,0.2672696 +0.050000004,0.050000004,0.4762203,0.4762203 +0.05000001,0.049999997,0.33673862,0.6734772 +0.049999997,0.05000001,0.6734772,0.33673862 +0.05,0.15,0.3,0.3 +0.049999997,0.14999999,0.21213204,0.42426404 +0.04999999,0.15,0.42426407,0.21213204 +0.049999997,0.15,0.37797633,0.3779763 +0.049999997,0.15,0.2672696,0.5345392 +0.050000004,0.15,0.5345392,0.2672696 +0.050000004,0.15,0.4762203,0.4762203 +0.05000001,0.15,0.33673862,0.67347723 +0.049999997,0.15,0.6734772,0.33673865 +0.05,0.25,0.3,0.3 +0.049999997,0.25,0.21213204,0.42426407 +0.04999999,0.25,0.42426407,0.21213204 +0.049999997,0.25,0.37797633,0.3779763 +0.049999997,0.25,0.2672696,0.5345392 +0.050000004,0.25,0.5345392,0.2672696 +0.050000004,0.25,0.4762203,0.4762203 +0.05000001,0.25,0.33673862,0.6734773 +0.049999997,0.25,0.6734772,0.3367386 +0.05,0.35,0.3,0.3 +0.049999997,0.34999996,0.21213204,0.42426404 +0.04999999,0.35000002,0.42426407,0.21213205 +0.049999997,0.35000002,0.37797633,0.37797633 +0.049999997,0.35000002,0.2672696,0.5345392 +0.050000004,0.35,0.5345392,0.2672696 +0.050000004,0.35,0.4762203,0.4762203 +0.05000001,0.35,0.33673862,0.67347723 +0.049999997,0.35000002,0.6734772,0.33673862 +0.05,0.45000002,0.3,0.3 +0.049999997,0.45,0.21213204,0.42426404 +0.04999999,0.45000002,0.42426407,0.21213204 +0.049999997,0.45,0.37797633,0.3779763 +0.049999997,0.45,0.2672696,0.5345392 +0.050000004,0.45,0.5345392,0.2672696 +0.050000004,0.45,0.4762203,0.47622034 +0.05000001,0.45000002,0.33673862,0.67347723 +0.049999997,0.45,0.6734772,0.3367386 +0.05,0.55,0.3,0.29999998 +0.049999997,0.55,0.21213204,0.42426407 +0.04999999,0.55,0.42426407,0.2121321 +0.049999997,0.55,0.37797633,0.37797633 +0.049999997,0.55,0.2672696,0.5345392 +0.050000004,0.55,0.5345392,0.2672696 +0.050000004,0.54999995,0.4762203,0.4762203 +0.05000001,0.55,0.33673862,0.6734772 +0.049999997,0.55,0.6734772,0.33673862 +0.05,0.65,0.3,0.3 +0.049999997,0.65000004,0.21213204,0.4242641 +0.04999999,0.65,0.42426407,0.21213204 +0.049999997,0.65,0.37797633,0.3779763 +0.049999997,0.65,0.2672696,0.5345392 +0.050000004,0.65,0.5345392,0.2672696 +0.050000004,0.65,0.4762203,0.4762203 +0.05000001,0.65,0.33673862,0.6734772 +0.049999997,0.65,0.6734772,0.33673856 +0.05,0.75,0.3,0.29999995 +0.049999997,0.75,0.21213204,0.42426413 +0.04999999,0.75,0.42426407,0.2121321 +0.049999997,0.75,0.37797633,0.37797624 +0.049999997,0.75,0.2672696,0.5345392 +0.050000004,0.75,0.5345392,0.26726967 +0.050000004,0.75,0.4762203,0.47622037 +0.05000001,0.75,0.33673862,0.67347723 +0.049999997,0.75,0.6734772,0.3367386 +0.05,0.85,0.3,0.3 +0.049999997,0.85,0.21213204,0.42426413 +0.04999999,0.85,0.42426407,0.21213204 +0.049999997,0.84999996,0.37797633,0.3779763 +0.049999997,0.85,0.2672696,0.5345392 +0.050000004,0.85,0.5345392,0.2672696 +0.050000004,0.85,0.4762203,0.47622037 +0.05000001,0.85,0.33673862,0.67347723 +0.049999997,0.85,0.6734772,0.3367386 +0.05,0.95000005,0.3,0.3 +0.049999997,0.95,0.21213204,0.42426407 +0.04999999,0.95,0.42426407,0.2121321 +0.049999997,0.95,0.37797633,0.3779763 +0.049999997,0.95000005,0.2672696,0.5345393 +0.050000004,0.95,0.5345392,0.26726973 +0.050000004,0.95,0.4762203,0.47622025 +0.05000001,0.95,0.33673862,0.6734773 +0.049999997,0.95000005,0.6734772,0.33673865 +0.15,0.05,0.3,0.3 +0.15,0.04999999,0.21213204,0.42426407 +0.14999999,0.049999997,0.42426404,0.21213204 +0.15,0.049999997,0.3779763,0.37797633 +0.15,0.050000004,0.2672696,0.5345392 +0.15,0.049999997,0.5345392,0.2672696 +0.15,0.050000004,0.4762203,0.4762203 +0.15,0.049999997,0.33673865,0.6734772 +0.15,0.05000001,0.67347723,0.33673862 +0.15,0.15,0.3,0.3 +0.15,0.14999999,0.21213204,0.42426404 +0.14999999,0.15,0.42426404,0.21213204 +0.15,0.15,0.3779763,0.3779763 +0.15,0.15,0.2672696,0.5345392 +0.15,0.15,0.5345392,0.2672696 +0.15,0.15,0.4762203,0.4762203 +0.15,0.15,0.33673865,0.67347723 +0.15,0.15,0.67347723,0.33673865 +0.15,0.25,0.3,0.3 +0.15,0.25,0.21213204,0.42426407 +0.14999999,0.25,0.42426404,0.21213204 +0.15,0.25,0.3779763,0.3779763 +0.15,0.25,0.2672696,0.5345392 +0.15,0.25,0.5345392,0.2672696 +0.15,0.25,0.4762203,0.4762203 +0.15,0.25,0.33673865,0.6734773 +0.15,0.25,0.67347723,0.3367386 +0.15,0.35,0.3,0.3 +0.15,0.34999996,0.21213204,0.42426404 +0.14999999,0.35000002,0.42426404,0.21213205 +0.15,0.35000002,0.3779763,0.37797633 +0.15,0.35000002,0.2672696,0.5345392 +0.15,0.35,0.5345392,0.2672696 +0.15,0.35,0.4762203,0.4762203 +0.15,0.35,0.33673865,0.67347723 +0.15,0.35000002,0.67347723,0.33673862 +0.15,0.45000002,0.3,0.3 +0.15,0.45,0.21213204,0.42426404 +0.14999999,0.45000002,0.42426404,0.21213204 +0.15,0.45,0.3779763,0.3779763 +0.15,0.45,0.2672696,0.5345392 +0.15,0.45,0.5345392,0.2672696 +0.15,0.45,0.4762203,0.47622034 +0.15,0.45000002,0.33673865,0.67347723 +0.15,0.45,0.67347723,0.3367386 +0.15,0.55,0.3,0.29999998 +0.15,0.55,0.21213204,0.42426407 +0.14999999,0.55,0.42426404,0.2121321 +0.15,0.55,0.3779763,0.37797633 +0.15,0.55,0.2672696,0.5345392 +0.15,0.55,0.5345392,0.2672696 +0.15,0.54999995,0.4762203,0.4762203 +0.15,0.55,0.33673865,0.6734772 +0.15,0.55,0.67347723,0.33673862 +0.15,0.65,0.3,0.3 +0.15,0.65000004,0.21213204,0.4242641 +0.14999999,0.65,0.42426404,0.21213204 +0.15,0.65,0.3779763,0.3779763 +0.15,0.65,0.2672696,0.5345392 +0.15,0.65,0.5345392,0.2672696 +0.15,0.65,0.4762203,0.4762203 +0.15,0.65,0.33673865,0.6734772 +0.15,0.65,0.67347723,0.33673856 +0.15,0.75,0.3,0.29999995 +0.15,0.75,0.21213204,0.42426413 +0.14999999,0.75,0.42426404,0.2121321 +0.15,0.75,0.3779763,0.37797624 +0.15,0.75,0.2672696,0.5345392 +0.15,0.75,0.5345392,0.26726967 +0.15,0.75,0.4762203,0.47622037 +0.15,0.75,0.33673865,0.67347723 +0.15,0.75,0.67347723,0.3367386 +0.15,0.85,0.3,0.3 +0.15,0.85,0.21213204,0.42426413 +0.14999999,0.85,0.42426404,0.21213204 +0.15,0.84999996,0.3779763,0.3779763 +0.15,0.85,0.2672696,0.5345392 +0.15,0.85,0.5345392,0.2672696 +0.15,0.85,0.4762203,0.47622037 +0.15,0.85,0.33673865,0.67347723 +0.15,0.85,0.67347723,0.3367386 +0.15,0.95000005,0.3,0.3 +0.15,0.95,0.21213204,0.42426407 +0.14999999,0.95,0.42426404,0.2121321 +0.15,0.95,0.3779763,0.3779763 +0.15,0.95000005,0.2672696,0.5345393 +0.15,0.95,0.5345392,0.26726973 +0.15,0.95,0.4762203,0.47622025 +0.15,0.95,0.33673865,0.6734773 +0.15,0.95000005,0.67347723,0.33673865 +0.25,0.05,0.3,0.3 +0.25,0.04999999,0.21213204,0.42426407 +0.25,0.049999997,0.42426407,0.21213204 +0.25,0.049999997,0.3779763,0.37797633 +0.25,0.050000004,0.2672696,0.5345392 +0.25,0.049999997,0.5345392,0.2672696 +0.25,0.050000004,0.4762203,0.4762203 +0.25,0.049999997,0.3367386,0.6734772 +0.25,0.05000001,0.6734773,0.33673862 +0.25,0.15,0.3,0.3 +0.25,0.14999999,0.21213204,0.42426404 +0.25,0.15,0.42426407,0.21213204 +0.25,0.15,0.3779763,0.3779763 +0.25,0.15,0.2672696,0.5345392 +0.25,0.15,0.5345392,0.2672696 +0.25,0.15,0.4762203,0.4762203 +0.25,0.15,0.3367386,0.67347723 +0.25,0.15,0.6734773,0.33673865 +0.25,0.25,0.3,0.3 +0.25,0.25,0.21213204,0.42426407 +0.25,0.25,0.42426407,0.21213204 +0.25,0.25,0.3779763,0.3779763 +0.25,0.25,0.2672696,0.5345392 +0.25,0.25,0.5345392,0.2672696 +0.25,0.25,0.4762203,0.4762203 +0.25,0.25,0.3367386,0.6734773 +0.25,0.25,0.6734773,0.3367386 +0.25,0.35,0.3,0.3 +0.25,0.34999996,0.21213204,0.42426404 +0.25,0.35000002,0.42426407,0.21213205 +0.25,0.35000002,0.3779763,0.37797633 +0.25,0.35000002,0.2672696,0.5345392 +0.25,0.35,0.5345392,0.2672696 +0.25,0.35,0.4762203,0.4762203 +0.25,0.35,0.3367386,0.67347723 +0.25,0.35000002,0.6734773,0.33673862 +0.25,0.45000002,0.3,0.3 +0.25,0.45,0.21213204,0.42426404 +0.25,0.45000002,0.42426407,0.21213204 +0.25,0.45,0.3779763,0.3779763 +0.25,0.45,0.2672696,0.5345392 +0.25,0.45,0.5345392,0.2672696 +0.25,0.45,0.4762203,0.47622034 +0.25,0.45000002,0.3367386,0.67347723 +0.25,0.45,0.6734773,0.3367386 +0.25,0.55,0.3,0.29999998 +0.25,0.55,0.21213204,0.42426407 +0.25,0.55,0.42426407,0.2121321 +0.25,0.55,0.3779763,0.37797633 +0.25,0.55,0.2672696,0.5345392 +0.25,0.55,0.5345392,0.2672696 +0.25,0.54999995,0.4762203,0.4762203 +0.25,0.55,0.3367386,0.6734772 +0.25,0.55,0.6734773,0.33673862 +0.25,0.65,0.3,0.3 +0.25,0.65000004,0.21213204,0.4242641 +0.25,0.65,0.42426407,0.21213204 +0.25,0.65,0.3779763,0.3779763 +0.25,0.65,0.2672696,0.5345392 +0.25,0.65,0.5345392,0.2672696 +0.25,0.65,0.4762203,0.4762203 +0.25,0.65,0.3367386,0.6734772 +0.25,0.65,0.6734773,0.33673856 +0.25,0.75,0.3,0.29999995 +0.25,0.75,0.21213204,0.42426413 +0.25,0.75,0.42426407,0.2121321 +0.25,0.75,0.3779763,0.37797624 +0.25,0.75,0.2672696,0.5345392 +0.25,0.75,0.5345392,0.26726967 +0.25,0.75,0.4762203,0.47622037 +0.25,0.75,0.3367386,0.67347723 +0.25,0.75,0.6734773,0.3367386 +0.25,0.85,0.3,0.3 +0.25,0.85,0.21213204,0.42426413 +0.25,0.85,0.42426407,0.21213204 +0.25,0.84999996,0.3779763,0.3779763 +0.25,0.85,0.2672696,0.5345392 +0.25,0.85,0.5345392,0.2672696 +0.25,0.85,0.4762203,0.47622037 +0.25,0.85,0.3367386,0.67347723 +0.25,0.85,0.6734773,0.3367386 +0.25,0.95000005,0.3,0.3 +0.25,0.95,0.21213204,0.42426407 +0.25,0.95,0.42426407,0.2121321 +0.25,0.95,0.3779763,0.3779763 +0.25,0.95000005,0.2672696,0.5345393 +0.25,0.95,0.5345392,0.26726973 +0.25,0.95,0.4762203,0.47622025 +0.25,0.95,0.3367386,0.6734773 +0.25,0.95000005,0.6734773,0.33673865 +0.35,0.05,0.3,0.3 +0.35000002,0.04999999,0.21213205,0.42426407 +0.34999996,0.049999997,0.42426404,0.21213204 +0.35000002,0.049999997,0.37797633,0.37797633 +0.35,0.050000004,0.2672696,0.5345392 +0.35000002,0.049999997,0.5345392,0.2672696 +0.35,0.050000004,0.4762203,0.4762203 +0.35000002,0.049999997,0.33673862,0.6734772 +0.35,0.05000001,0.67347723,0.33673862 +0.35,0.15,0.3,0.3 +0.35000002,0.14999999,0.21213205,0.42426404 +0.34999996,0.15,0.42426404,0.21213204 +0.35000002,0.15,0.37797633,0.3779763 +0.35,0.15,0.2672696,0.5345392 +0.35000002,0.15,0.5345392,0.2672696 +0.35,0.15,0.4762203,0.4762203 +0.35000002,0.15,0.33673862,0.67347723 +0.35,0.15,0.67347723,0.33673865 +0.35,0.25,0.3,0.3 +0.35000002,0.25,0.21213205,0.42426407 +0.34999996,0.25,0.42426404,0.21213204 +0.35000002,0.25,0.37797633,0.3779763 +0.35,0.25,0.2672696,0.5345392 +0.35000002,0.25,0.5345392,0.2672696 +0.35,0.25,0.4762203,0.4762203 +0.35000002,0.25,0.33673862,0.6734773 +0.35,0.25,0.67347723,0.3367386 +0.35,0.35,0.3,0.3 +0.35000002,0.34999996,0.21213205,0.42426404 +0.34999996,0.35000002,0.42426404,0.21213205 +0.35000002,0.35000002,0.37797633,0.37797633 +0.35,0.35000002,0.2672696,0.5345392 +0.35000002,0.35,0.5345392,0.2672696 +0.35,0.35,0.4762203,0.4762203 +0.35000002,0.35,0.33673862,0.67347723 +0.35,0.35000002,0.67347723,0.33673862 +0.35,0.45000002,0.3,0.3 +0.35000002,0.45,0.21213205,0.42426404 +0.34999996,0.45000002,0.42426404,0.21213204 +0.35000002,0.45,0.37797633,0.3779763 +0.35,0.45,0.2672696,0.5345392 +0.35000002,0.45,0.5345392,0.2672696 +0.35,0.45,0.4762203,0.47622034 +0.35000002,0.45000002,0.33673862,0.67347723 +0.35,0.45,0.67347723,0.3367386 +0.35,0.55,0.3,0.29999998 +0.35000002,0.55,0.21213205,0.42426407 +0.34999996,0.55,0.42426404,0.2121321 +0.35000002,0.55,0.37797633,0.37797633 +0.35,0.55,0.2672696,0.5345392 +0.35000002,0.55,0.5345392,0.2672696 +0.35,0.54999995,0.4762203,0.4762203 +0.35000002,0.55,0.33673862,0.6734772 +0.35,0.55,0.67347723,0.33673862 +0.35,0.65,0.3,0.3 +0.35000002,0.65000004,0.21213205,0.4242641 +0.34999996,0.65,0.42426404,0.21213204 +0.35000002,0.65,0.37797633,0.3779763 +0.35,0.65,0.2672696,0.5345392 +0.35000002,0.65,0.5345392,0.2672696 +0.35,0.65,0.4762203,0.4762203 +0.35000002,0.65,0.33673862,0.6734772 +0.35,0.65,0.67347723,0.33673856 +0.35,0.75,0.3,0.29999995 +0.35000002,0.75,0.21213205,0.42426413 +0.34999996,0.75,0.42426404,0.2121321 +0.35000002,0.75,0.37797633,0.37797624 +0.35,0.75,0.2672696,0.5345392 +0.35000002,0.75,0.5345392,0.26726967 +0.35,0.75,0.4762203,0.47622037 +0.35000002,0.75,0.33673862,0.67347723 +0.35,0.75,0.67347723,0.3367386 +0.35,0.85,0.3,0.3 +0.35000002,0.85,0.21213205,0.42426413 +0.34999996,0.85,0.42426404,0.21213204 +0.35000002,0.84999996,0.37797633,0.3779763 +0.35,0.85,0.2672696,0.5345392 +0.35000002,0.85,0.5345392,0.2672696 +0.35,0.85,0.4762203,0.47622037 +0.35000002,0.85,0.33673862,0.67347723 +0.35,0.85,0.67347723,0.3367386 +0.35,0.95000005,0.3,0.3 +0.35000002,0.95,0.21213205,0.42426407 +0.34999996,0.95,0.42426404,0.2121321 +0.35000002,0.95,0.37797633,0.3779763 +0.35,0.95000005,0.2672696,0.5345393 +0.35000002,0.95,0.5345392,0.26726973 +0.35,0.95,0.4762203,0.47622025 +0.35000002,0.95,0.33673862,0.6734773 +0.35,0.95000005,0.67347723,0.33673865 +0.45000002,0.05,0.3,0.3 +0.45000002,0.04999999,0.21213204,0.42426407 +0.45,0.049999997,0.42426404,0.21213204 +0.45,0.049999997,0.3779763,0.37797633 +0.45,0.050000004,0.2672696,0.5345392 +0.45,0.049999997,0.5345392,0.2672696 +0.45,0.050000004,0.47622034,0.4762203 +0.45,0.049999997,0.3367386,0.6734772 +0.45000002,0.05000001,0.67347723,0.33673862 +0.45000002,0.15,0.3,0.3 +0.45000002,0.14999999,0.21213204,0.42426404 +0.45,0.15,0.42426404,0.21213204 +0.45,0.15,0.3779763,0.3779763 +0.45,0.15,0.2672696,0.5345392 +0.45,0.15,0.5345392,0.2672696 +0.45,0.15,0.47622034,0.4762203 +0.45,0.15,0.3367386,0.67347723 +0.45000002,0.15,0.67347723,0.33673865 +0.45000002,0.25,0.3,0.3 +0.45000002,0.25,0.21213204,0.42426407 +0.45,0.25,0.42426404,0.21213204 +0.45,0.25,0.3779763,0.3779763 +0.45,0.25,0.2672696,0.5345392 +0.45,0.25,0.5345392,0.2672696 +0.45,0.25,0.47622034,0.4762203 +0.45,0.25,0.3367386,0.6734773 +0.45000002,0.25,0.67347723,0.3367386 +0.45000002,0.35,0.3,0.3 +0.45000002,0.34999996,0.21213204,0.42426404 +0.45,0.35000002,0.42426404,0.21213205 +0.45,0.35000002,0.3779763,0.37797633 +0.45,0.35000002,0.2672696,0.5345392 +0.45,0.35,0.5345392,0.2672696 +0.45,0.35,0.47622034,0.4762203 +0.45,0.35,0.3367386,0.67347723 +0.45000002,0.35000002,0.67347723,0.33673862 +0.45000002,0.45000002,0.3,0.3 +0.45000002,0.45,0.21213204,0.42426404 +0.45,0.45000002,0.42426404,0.21213204 +0.45,0.45,0.3779763,0.3779763 +0.45,0.45,0.2672696,0.5345392 +0.45,0.45,0.5345392,0.2672696 +0.45,0.45,0.47622034,0.47622034 +0.45,0.45000002,0.3367386,0.67347723 +0.45000002,0.45,0.67347723,0.3367386 +0.45000002,0.55,0.3,0.29999998 +0.45000002,0.55,0.21213204,0.42426407 +0.45,0.55,0.42426404,0.2121321 +0.45,0.55,0.3779763,0.37797633 +0.45,0.55,0.2672696,0.5345392 +0.45,0.55,0.5345392,0.2672696 +0.45,0.54999995,0.47622034,0.4762203 +0.45,0.55,0.3367386,0.6734772 +0.45000002,0.55,0.67347723,0.33673862 +0.45000002,0.65,0.3,0.3 +0.45000002,0.65000004,0.21213204,0.4242641 +0.45,0.65,0.42426404,0.21213204 +0.45,0.65,0.3779763,0.3779763 +0.45,0.65,0.2672696,0.5345392 +0.45,0.65,0.5345392,0.2672696 +0.45,0.65,0.47622034,0.4762203 +0.45,0.65,0.3367386,0.6734772 +0.45000002,0.65,0.67347723,0.33673856 +0.45000002,0.75,0.3,0.29999995 +0.45000002,0.75,0.21213204,0.42426413 +0.45,0.75,0.42426404,0.2121321 +0.45,0.75,0.3779763,0.37797624 +0.45,0.75,0.2672696,0.5345392 +0.45,0.75,0.5345392,0.26726967 +0.45,0.75,0.47622034,0.47622037 +0.45,0.75,0.3367386,0.67347723 +0.45000002,0.75,0.67347723,0.3367386 +0.45000002,0.85,0.3,0.3 +0.45000002,0.85,0.21213204,0.42426413 +0.45,0.85,0.42426404,0.21213204 +0.45,0.84999996,0.3779763,0.3779763 +0.45,0.85,0.2672696,0.5345392 +0.45,0.85,0.5345392,0.2672696 +0.45,0.85,0.47622034,0.47622037 +0.45,0.85,0.3367386,0.67347723 +0.45000002,0.85,0.67347723,0.3367386 +0.45000002,0.95000005,0.3,0.3 +0.45000002,0.95,0.21213204,0.42426407 +0.45,0.95,0.42426404,0.2121321 +0.45,0.95,0.3779763,0.3779763 +0.45,0.95000005,0.2672696,0.5345393 +0.45,0.95,0.5345392,0.26726973 +0.45,0.95,0.47622034,0.47622025 +0.45,0.95,0.3367386,0.6734773 +0.45000002,0.95000005,0.67347723,0.33673865 +0.55,0.05,0.29999998,0.3 +0.55,0.04999999,0.2121321,0.42426407 +0.55,0.049999997,0.42426407,0.21213204 +0.55,0.049999997,0.37797633,0.37797633 +0.55,0.050000004,0.2672696,0.5345392 +0.55,0.049999997,0.5345392,0.2672696 +0.54999995,0.050000004,0.4762203,0.4762203 +0.55,0.049999997,0.33673862,0.6734772 +0.55,0.05000001,0.6734772,0.33673862 +0.55,0.15,0.29999998,0.3 +0.55,0.14999999,0.2121321,0.42426404 +0.55,0.15,0.42426407,0.21213204 +0.55,0.15,0.37797633,0.3779763 +0.55,0.15,0.2672696,0.5345392 +0.55,0.15,0.5345392,0.2672696 +0.54999995,0.15,0.4762203,0.4762203 +0.55,0.15,0.33673862,0.67347723 +0.55,0.15,0.6734772,0.33673865 +0.55,0.25,0.29999998,0.3 +0.55,0.25,0.2121321,0.42426407 +0.55,0.25,0.42426407,0.21213204 +0.55,0.25,0.37797633,0.3779763 +0.55,0.25,0.2672696,0.5345392 +0.55,0.25,0.5345392,0.2672696 +0.54999995,0.25,0.4762203,0.4762203 +0.55,0.25,0.33673862,0.6734773 +0.55,0.25,0.6734772,0.3367386 +0.55,0.35,0.29999998,0.3 +0.55,0.34999996,0.2121321,0.42426404 +0.55,0.35000002,0.42426407,0.21213205 +0.55,0.35000002,0.37797633,0.37797633 +0.55,0.35000002,0.2672696,0.5345392 +0.55,0.35,0.5345392,0.2672696 +0.54999995,0.35,0.4762203,0.4762203 +0.55,0.35,0.33673862,0.67347723 +0.55,0.35000002,0.6734772,0.33673862 +0.55,0.45000002,0.29999998,0.3 +0.55,0.45,0.2121321,0.42426404 +0.55,0.45000002,0.42426407,0.21213204 +0.55,0.45,0.37797633,0.3779763 +0.55,0.45,0.2672696,0.5345392 +0.55,0.45,0.5345392,0.2672696 +0.54999995,0.45,0.4762203,0.47622034 +0.55,0.45000002,0.33673862,0.67347723 +0.55,0.45,0.6734772,0.3367386 +0.55,0.55,0.29999998,0.29999998 +0.55,0.55,0.2121321,0.42426407 +0.55,0.55,0.42426407,0.2121321 +0.55,0.55,0.37797633,0.37797633 +0.55,0.55,0.2672696,0.5345392 +0.55,0.55,0.5345392,0.2672696 +0.54999995,0.54999995,0.4762203,0.4762203 +0.55,0.55,0.33673862,0.6734772 +0.55,0.55,0.6734772,0.33673862 +0.55,0.65,0.29999998,0.3 +0.55,0.65000004,0.2121321,0.4242641 +0.55,0.65,0.42426407,0.21213204 +0.55,0.65,0.37797633,0.3779763 +0.55,0.65,0.2672696,0.5345392 +0.55,0.65,0.5345392,0.2672696 +0.54999995,0.65,0.4762203,0.4762203 +0.55,0.65,0.33673862,0.6734772 +0.55,0.65,0.6734772,0.33673856 +0.55,0.75,0.29999998,0.29999995 +0.55,0.75,0.2121321,0.42426413 +0.55,0.75,0.42426407,0.2121321 +0.55,0.75,0.37797633,0.37797624 +0.55,0.75,0.2672696,0.5345392 +0.55,0.75,0.5345392,0.26726967 +0.54999995,0.75,0.4762203,0.47622037 +0.55,0.75,0.33673862,0.67347723 +0.55,0.75,0.6734772,0.3367386 +0.55,0.85,0.29999998,0.3 +0.55,0.85,0.2121321,0.42426413 +0.55,0.85,0.42426407,0.21213204 +0.55,0.84999996,0.37797633,0.3779763 +0.55,0.85,0.2672696,0.5345392 +0.55,0.85,0.5345392,0.2672696 +0.54999995,0.85,0.4762203,0.47622037 +0.55,0.85,0.33673862,0.67347723 +0.55,0.85,0.6734772,0.3367386 +0.55,0.95000005,0.29999998,0.3 +0.55,0.95,0.2121321,0.42426407 +0.55,0.95,0.42426407,0.2121321 +0.55,0.95,0.37797633,0.3779763 +0.55,0.95000005,0.2672696,0.5345393 +0.55,0.95,0.5345392,0.26726973 +0.54999995,0.95,0.4762203,0.47622025 +0.55,0.95,0.33673862,0.6734773 +0.55,0.95000005,0.6734772,0.33673865 +0.65,0.05,0.3,0.3 +0.65,0.04999999,0.21213204,0.42426407 +0.65000004,0.049999997,0.4242641,0.21213204 +0.65,0.049999997,0.3779763,0.37797633 +0.65,0.050000004,0.2672696,0.5345392 +0.65,0.049999997,0.5345392,0.2672696 +0.65,0.050000004,0.4762203,0.4762203 +0.65,0.049999997,0.33673856,0.6734772 +0.65,0.05000001,0.6734772,0.33673862 +0.65,0.15,0.3,0.3 +0.65,0.14999999,0.21213204,0.42426404 +0.65000004,0.15,0.4242641,0.21213204 +0.65,0.15,0.3779763,0.3779763 +0.65,0.15,0.2672696,0.5345392 +0.65,0.15,0.5345392,0.2672696 +0.65,0.15,0.4762203,0.4762203 +0.65,0.15,0.33673856,0.67347723 +0.65,0.15,0.6734772,0.33673865 +0.65,0.25,0.3,0.3 +0.65,0.25,0.21213204,0.42426407 +0.65000004,0.25,0.4242641,0.21213204 +0.65,0.25,0.3779763,0.3779763 +0.65,0.25,0.2672696,0.5345392 +0.65,0.25,0.5345392,0.2672696 +0.65,0.25,0.4762203,0.4762203 +0.65,0.25,0.33673856,0.6734773 +0.65,0.25,0.6734772,0.3367386 +0.65,0.35,0.3,0.3 +0.65,0.34999996,0.21213204,0.42426404 +0.65000004,0.35000002,0.4242641,0.21213205 +0.65,0.35000002,0.3779763,0.37797633 +0.65,0.35000002,0.2672696,0.5345392 +0.65,0.35,0.5345392,0.2672696 +0.65,0.35,0.4762203,0.4762203 +0.65,0.35,0.33673856,0.67347723 +0.65,0.35000002,0.6734772,0.33673862 +0.65,0.45000002,0.3,0.3 +0.65,0.45,0.21213204,0.42426404 +0.65000004,0.45000002,0.4242641,0.21213204 +0.65,0.45,0.3779763,0.3779763 +0.65,0.45,0.2672696,0.5345392 +0.65,0.45,0.5345392,0.2672696 +0.65,0.45,0.4762203,0.47622034 +0.65,0.45000002,0.33673856,0.67347723 +0.65,0.45,0.6734772,0.3367386 +0.65,0.55,0.3,0.29999998 +0.65,0.55,0.21213204,0.42426407 +0.65000004,0.55,0.4242641,0.2121321 +0.65,0.55,0.3779763,0.37797633 +0.65,0.55,0.2672696,0.5345392 +0.65,0.55,0.5345392,0.2672696 +0.65,0.54999995,0.4762203,0.4762203 +0.65,0.55,0.33673856,0.6734772 +0.65,0.55,0.6734772,0.33673862 +0.65,0.65,0.3,0.3 +0.65,0.65000004,0.21213204,0.4242641 +0.65000004,0.65,0.4242641,0.21213204 +0.65,0.65,0.3779763,0.3779763 +0.65,0.65,0.2672696,0.5345392 +0.65,0.65,0.5345392,0.2672696 +0.65,0.65,0.4762203,0.4762203 +0.65,0.65,0.33673856,0.6734772 +0.65,0.65,0.6734772,0.33673856 +0.65,0.75,0.3,0.29999995 +0.65,0.75,0.21213204,0.42426413 +0.65000004,0.75,0.4242641,0.2121321 +0.65,0.75,0.3779763,0.37797624 +0.65,0.75,0.2672696,0.5345392 +0.65,0.75,0.5345392,0.26726967 +0.65,0.75,0.4762203,0.47622037 +0.65,0.75,0.33673856,0.67347723 +0.65,0.75,0.6734772,0.3367386 +0.65,0.85,0.3,0.3 +0.65,0.85,0.21213204,0.42426413 +0.65000004,0.85,0.4242641,0.21213204 +0.65,0.84999996,0.3779763,0.3779763 +0.65,0.85,0.2672696,0.5345392 +0.65,0.85,0.5345392,0.2672696 +0.65,0.85,0.4762203,0.47622037 +0.65,0.85,0.33673856,0.67347723 +0.65,0.85,0.6734772,0.3367386 +0.65,0.95000005,0.3,0.3 +0.65,0.95,0.21213204,0.42426407 +0.65000004,0.95,0.4242641,0.2121321 +0.65,0.95,0.3779763,0.3779763 +0.65,0.95000005,0.2672696,0.5345393 +0.65,0.95,0.5345392,0.26726973 +0.65,0.95,0.4762203,0.47622025 +0.65,0.95,0.33673856,0.6734773 +0.65,0.95000005,0.6734772,0.33673865 +0.75,0.05,0.29999995,0.3 +0.75,0.04999999,0.2121321,0.42426407 +0.75,0.049999997,0.42426413,0.21213204 +0.75,0.049999997,0.37797624,0.37797633 +0.75,0.050000004,0.26726967,0.5345392 +0.75,0.049999997,0.5345392,0.2672696 +0.75,0.050000004,0.47622037,0.4762203 +0.75,0.049999997,0.3367386,0.6734772 +0.75,0.05000001,0.67347723,0.33673862 +0.75,0.15,0.29999995,0.3 +0.75,0.14999999,0.2121321,0.42426404 +0.75,0.15,0.42426413,0.21213204 +0.75,0.15,0.37797624,0.3779763 +0.75,0.15,0.26726967,0.5345392 +0.75,0.15,0.5345392,0.2672696 +0.75,0.15,0.47622037,0.4762203 +0.75,0.15,0.3367386,0.67347723 +0.75,0.15,0.67347723,0.33673865 +0.75,0.25,0.29999995,0.3 +0.75,0.25,0.2121321,0.42426407 +0.75,0.25,0.42426413,0.21213204 +0.75,0.25,0.37797624,0.3779763 +0.75,0.25,0.26726967,0.5345392 +0.75,0.25,0.5345392,0.2672696 +0.75,0.25,0.47622037,0.4762203 +0.75,0.25,0.3367386,0.6734773 +0.75,0.25,0.67347723,0.3367386 +0.75,0.35,0.29999995,0.3 +0.75,0.34999996,0.2121321,0.42426404 +0.75,0.35000002,0.42426413,0.21213205 +0.75,0.35000002,0.37797624,0.37797633 +0.75,0.35000002,0.26726967,0.5345392 +0.75,0.35,0.5345392,0.2672696 +0.75,0.35,0.47622037,0.4762203 +0.75,0.35,0.3367386,0.67347723 +0.75,0.35000002,0.67347723,0.33673862 +0.75,0.45000002,0.29999995,0.3 +0.75,0.45,0.2121321,0.42426404 +0.75,0.45000002,0.42426413,0.21213204 +0.75,0.45,0.37797624,0.3779763 +0.75,0.45,0.26726967,0.5345392 +0.75,0.45,0.5345392,0.2672696 +0.75,0.45,0.47622037,0.47622034 +0.75,0.45000002,0.3367386,0.67347723 +0.75,0.45,0.67347723,0.3367386 +0.75,0.55,0.29999995,0.29999998 +0.75,0.55,0.2121321,0.42426407 +0.75,0.55,0.42426413,0.2121321 +0.75,0.55,0.37797624,0.37797633 +0.75,0.55,0.26726967,0.5345392 +0.75,0.55,0.5345392,0.2672696 +0.75,0.54999995,0.47622037,0.4762203 +0.75,0.55,0.3367386,0.6734772 +0.75,0.55,0.67347723,0.33673862 +0.75,0.65,0.29999995,0.3 +0.75,0.65000004,0.2121321,0.4242641 +0.75,0.65,0.42426413,0.21213204 +0.75,0.65,0.37797624,0.3779763 +0.75,0.65,0.26726967,0.5345392 +0.75,0.65,0.5345392,0.2672696 +0.75,0.65,0.47622037,0.4762203 +0.75,0.65,0.3367386,0.6734772 +0.75,0.65,0.67347723,0.33673856 +0.75,0.75,0.29999995,0.29999995 +0.75,0.75,0.2121321,0.42426413 +0.75,0.75,0.42426413,0.2121321 +0.75,0.75,0.37797624,0.37797624 +0.75,0.75,0.26726967,0.5345392 +0.75,0.75,0.5345392,0.26726967 +0.75,0.75,0.47622037,0.47622037 +0.75,0.75,0.3367386,0.67347723 +0.75,0.75,0.67347723,0.3367386 +0.75,0.85,0.29999995,0.3 +0.75,0.85,0.2121321,0.42426413 +0.75,0.85,0.42426413,0.21213204 +0.75,0.84999996,0.37797624,0.3779763 +0.75,0.85,0.26726967,0.5345392 +0.75,0.85,0.5345392,0.2672696 +0.75,0.85,0.47622037,0.47622037 +0.75,0.85,0.3367386,0.67347723 +0.75,0.85,0.67347723,0.3367386 +0.75,0.95000005,0.29999995,0.3 +0.75,0.95,0.2121321,0.42426407 +0.75,0.95,0.42426413,0.2121321 +0.75,0.95,0.37797624,0.3779763 +0.75,0.95000005,0.26726967,0.5345393 +0.75,0.95,0.5345392,0.26726973 +0.75,0.95,0.47622037,0.47622025 +0.75,0.95,0.3367386,0.6734773 +0.75,0.95000005,0.67347723,0.33673865 +0.85,0.05,0.3,0.3 +0.85,0.04999999,0.21213204,0.42426407 +0.85,0.049999997,0.42426413,0.21213204 +0.84999996,0.049999997,0.3779763,0.37797633 +0.85,0.050000004,0.2672696,0.5345392 +0.85,0.049999997,0.5345392,0.2672696 +0.85,0.050000004,0.47622037,0.4762203 +0.85,0.049999997,0.3367386,0.6734772 +0.85,0.05000001,0.67347723,0.33673862 +0.85,0.15,0.3,0.3 +0.85,0.14999999,0.21213204,0.42426404 +0.85,0.15,0.42426413,0.21213204 +0.84999996,0.15,0.3779763,0.3779763 +0.85,0.15,0.2672696,0.5345392 +0.85,0.15,0.5345392,0.2672696 +0.85,0.15,0.47622037,0.4762203 +0.85,0.15,0.3367386,0.67347723 +0.85,0.15,0.67347723,0.33673865 +0.85,0.25,0.3,0.3 +0.85,0.25,0.21213204,0.42426407 +0.85,0.25,0.42426413,0.21213204 +0.84999996,0.25,0.3779763,0.3779763 +0.85,0.25,0.2672696,0.5345392 +0.85,0.25,0.5345392,0.2672696 +0.85,0.25,0.47622037,0.4762203 +0.85,0.25,0.3367386,0.6734773 +0.85,0.25,0.67347723,0.3367386 +0.85,0.35,0.3,0.3 +0.85,0.34999996,0.21213204,0.42426404 +0.85,0.35000002,0.42426413,0.21213205 +0.84999996,0.35000002,0.3779763,0.37797633 +0.85,0.35000002,0.2672696,0.5345392 +0.85,0.35,0.5345392,0.2672696 +0.85,0.35,0.47622037,0.4762203 +0.85,0.35,0.3367386,0.67347723 +0.85,0.35000002,0.67347723,0.33673862 +0.85,0.45000002,0.3,0.3 +0.85,0.45,0.21213204,0.42426404 +0.85,0.45000002,0.42426413,0.21213204 +0.84999996,0.45,0.3779763,0.3779763 +0.85,0.45,0.2672696,0.5345392 +0.85,0.45,0.5345392,0.2672696 +0.85,0.45,0.47622037,0.47622034 +0.85,0.45000002,0.3367386,0.67347723 +0.85,0.45,0.67347723,0.3367386 +0.85,0.55,0.3,0.29999998 +0.85,0.55,0.21213204,0.42426407 +0.85,0.55,0.42426413,0.2121321 +0.84999996,0.55,0.3779763,0.37797633 +0.85,0.55,0.2672696,0.5345392 +0.85,0.55,0.5345392,0.2672696 +0.85,0.54999995,0.47622037,0.4762203 +0.85,0.55,0.3367386,0.6734772 +0.85,0.55,0.67347723,0.33673862 +0.85,0.65,0.3,0.3 +0.85,0.65000004,0.21213204,0.4242641 +0.85,0.65,0.42426413,0.21213204 +0.84999996,0.65,0.3779763,0.3779763 +0.85,0.65,0.2672696,0.5345392 +0.85,0.65,0.5345392,0.2672696 +0.85,0.65,0.47622037,0.4762203 +0.85,0.65,0.3367386,0.6734772 +0.85,0.65,0.67347723,0.33673856 +0.85,0.75,0.3,0.29999995 +0.85,0.75,0.21213204,0.42426413 +0.85,0.75,0.42426413,0.2121321 +0.84999996,0.75,0.3779763,0.37797624 +0.85,0.75,0.2672696,0.5345392 +0.85,0.75,0.5345392,0.26726967 +0.85,0.75,0.47622037,0.47622037 +0.85,0.75,0.3367386,0.67347723 +0.85,0.75,0.67347723,0.3367386 +0.85,0.85,0.3,0.3 +0.85,0.85,0.21213204,0.42426413 +0.85,0.85,0.42426413,0.21213204 +0.84999996,0.84999996,0.3779763,0.3779763 +0.85,0.85,0.2672696,0.5345392 +0.85,0.85,0.5345392,0.2672696 +0.85,0.85,0.47622037,0.47622037 +0.85,0.85,0.3367386,0.67347723 +0.85,0.85,0.67347723,0.3367386 +0.85,0.95000005,0.3,0.3 +0.85,0.95,0.21213204,0.42426407 +0.85,0.95,0.42426413,0.2121321 +0.84999996,0.95,0.3779763,0.3779763 +0.85,0.95000005,0.2672696,0.5345393 +0.85,0.95,0.5345392,0.26726973 +0.85,0.95,0.47622037,0.47622025 +0.85,0.95,0.3367386,0.6734773 +0.85,0.95000005,0.67347723,0.33673865 +0.95000005,0.05,0.3,0.3 +0.95,0.04999999,0.2121321,0.42426407 +0.95,0.049999997,0.42426407,0.21213204 +0.95,0.049999997,0.3779763,0.37797633 +0.95,0.050000004,0.26726973,0.5345392 +0.95000005,0.049999997,0.5345393,0.2672696 +0.95,0.050000004,0.47622025,0.4762203 +0.95000005,0.049999997,0.33673865,0.6734772 +0.95,0.05000001,0.6734773,0.33673862 +0.95000005,0.15,0.3,0.3 +0.95,0.14999999,0.2121321,0.42426404 +0.95,0.15,0.42426407,0.21213204 +0.95,0.15,0.3779763,0.3779763 +0.95,0.15,0.26726973,0.5345392 +0.95000005,0.15,0.5345393,0.2672696 +0.95,0.15,0.47622025,0.4762203 +0.95000005,0.15,0.33673865,0.67347723 +0.95,0.15,0.6734773,0.33673865 +0.95000005,0.25,0.3,0.3 +0.95,0.25,0.2121321,0.42426407 +0.95,0.25,0.42426407,0.21213204 +0.95,0.25,0.3779763,0.3779763 +0.95,0.25,0.26726973,0.5345392 +0.95000005,0.25,0.5345393,0.2672696 +0.95,0.25,0.47622025,0.4762203 +0.95000005,0.25,0.33673865,0.6734773 +0.95,0.25,0.6734773,0.3367386 +0.95000005,0.35,0.3,0.3 +0.95,0.34999996,0.2121321,0.42426404 +0.95,0.35000002,0.42426407,0.21213205 +0.95,0.35000002,0.3779763,0.37797633 +0.95,0.35000002,0.26726973,0.5345392 +0.95000005,0.35,0.5345393,0.2672696 +0.95,0.35,0.47622025,0.4762203 +0.95000005,0.35,0.33673865,0.67347723 +0.95,0.35000002,0.6734773,0.33673862 +0.95000005,0.45000002,0.3,0.3 +0.95,0.45,0.2121321,0.42426404 +0.95,0.45000002,0.42426407,0.21213204 +0.95,0.45,0.3779763,0.3779763 +0.95,0.45,0.26726973,0.5345392 +0.95000005,0.45,0.5345393,0.2672696 +0.95,0.45,0.47622025,0.47622034 +0.95000005,0.45000002,0.33673865,0.67347723 +0.95,0.45,0.6734773,0.3367386 +0.95000005,0.55,0.3,0.29999998 +0.95,0.55,0.2121321,0.42426407 +0.95,0.55,0.42426407,0.2121321 +0.95,0.55,0.3779763,0.37797633 +0.95,0.55,0.26726973,0.5345392 +0.95000005,0.55,0.5345393,0.2672696 +0.95,0.54999995,0.47622025,0.4762203 +0.95000005,0.55,0.33673865,0.6734772 +0.95,0.55,0.6734773,0.33673862 +0.95000005,0.65,0.3,0.3 +0.95,0.65000004,0.2121321,0.4242641 +0.95,0.65,0.42426407,0.21213204 +0.95,0.65,0.3779763,0.3779763 +0.95,0.65,0.26726973,0.5345392 +0.95000005,0.65,0.5345393,0.2672696 +0.95,0.65,0.47622025,0.4762203 +0.95000005,0.65,0.33673865,0.6734772 +0.95,0.65,0.6734773,0.33673856 +0.95000005,0.75,0.3,0.29999995 +0.95,0.75,0.2121321,0.42426413 +0.95,0.75,0.42426407,0.2121321 +0.95,0.75,0.3779763,0.37797624 +0.95,0.75,0.26726973,0.5345392 +0.95000005,0.75,0.5345393,0.26726967 +0.95,0.75,0.47622025,0.47622037 +0.95000005,0.75,0.33673865,0.67347723 +0.95,0.75,0.6734773,0.3367386 +0.95000005,0.85,0.3,0.3 +0.95,0.85,0.2121321,0.42426413 +0.95,0.85,0.42426407,0.21213204 +0.95,0.84999996,0.3779763,0.3779763 +0.95,0.85,0.26726973,0.5345392 +0.95000005,0.85,0.5345393,0.2672696 +0.95,0.85,0.47622025,0.47622037 +0.95000005,0.85,0.33673865,0.67347723 +0.95,0.85,0.6734773,0.3367386 +0.95000005,0.95000005,0.3,0.3 +0.95,0.95,0.2121321,0.42426407 +0.95,0.95,0.42426407,0.2121321 +0.95,0.95,0.3779763,0.3779763 +0.95,0.95000005,0.26726973,0.5345393 +0.95000005,0.95,0.5345393,0.26726973 +0.95,0.95,0.47622025,0.47622025 +0.95000005,0.95,0.33673865,0.6734773 +0.95,0.95000005,0.6734773,0.33673865 +0.1,0.1,0.6,0.6 +0.099999994,0.09999998,0.42426407,0.84852815 +0.09999998,0.099999994,0.84852815,0.42426407 +0.099999994,0.099999994,0.75595266,0.75595266 +0.099999994,0.10000001,0.5345392,1.0690784 +0.10000001,0.099999994,1.0690784,0.5345392 +0.10000001,0.10000001,0.9524406,0.9524406 +0.10000002,0.099999994,0.67347723,1.3469543 +0.099999994,0.10000002,1.3469543,0.67347723 +0.1,0.3,0.6,0.6 +0.099999994,0.29999998,0.42426407,0.8485281 +0.09999998,0.3,0.84852815,0.42426407 +0.099999994,0.3,0.75595266,0.7559526 +0.099999994,0.3,0.5345392,1.0690784 +0.10000001,0.3,1.0690784,0.5345392 +0.10000001,0.3,0.9524406,0.9524406 +0.10000002,0.3,0.67347723,1.3469545 +0.099999994,0.3,1.3469543,0.6734773 +0.1,0.5,0.6,0.6 +0.099999994,0.5,0.42426407,0.84852815 +0.09999998,0.5,0.84852815,0.42426407 +0.099999994,0.5,0.75595266,0.7559526 +0.099999994,0.5,0.5345392,1.0690784 +0.10000001,0.5,1.0690784,0.5345392 +0.10000001,0.5,0.9524406,0.9524406 +0.10000002,0.5,0.67347723,1.3469546 +0.099999994,0.5,1.3469543,0.6734772 +0.1,0.7,0.6,0.6 +0.099999994,0.6999999,0.42426407,0.8485281 +0.09999998,0.70000005,0.84852815,0.4242641 +0.099999994,0.70000005,0.75595266,0.75595266 +0.099999994,0.70000005,0.5345392,1.0690784 +0.10000001,0.7,1.0690784,0.5345392 +0.10000001,0.7,0.9524406,0.9524406 +0.10000002,0.7,0.67347723,1.3469545 +0.099999994,0.70000005,1.3469543,0.67347723 +0.1,0.90000004,0.6,0.6 +0.099999994,0.9,0.42426407,0.8485281 +0.09999998,0.90000004,0.84852815,0.42426407 +0.099999994,0.9,0.75595266,0.7559526 +0.099999994,0.9,0.5345392,1.0690784 +0.10000001,0.9,1.0690784,0.5345392 +0.10000001,0.9,0.9524406,0.9524407 +0.10000002,0.90000004,0.67347723,1.3469545 +0.099999994,0.9,1.3469543,0.6734772 +0.3,0.1,0.6,0.6 +0.3,0.09999998,0.42426407,0.84852815 +0.29999998,0.099999994,0.8485281,0.42426407 +0.3,0.099999994,0.7559526,0.75595266 +0.3,0.10000001,0.5345392,1.0690784 +0.3,0.099999994,1.0690784,0.5345392 +0.3,0.10000001,0.9524406,0.9524406 +0.3,0.099999994,0.6734773,1.3469543 +0.3,0.10000002,1.3469545,0.67347723 +0.3,0.3,0.6,0.6 +0.3,0.29999998,0.42426407,0.8485281 +0.29999998,0.3,0.8485281,0.42426407 +0.3,0.3,0.7559526,0.7559526 +0.3,0.3,0.5345392,1.0690784 +0.3,0.3,1.0690784,0.5345392 +0.3,0.3,0.9524406,0.9524406 +0.3,0.3,0.6734773,1.3469545 +0.3,0.3,1.3469545,0.6734773 +0.3,0.5,0.6,0.6 +0.3,0.5,0.42426407,0.84852815 +0.29999998,0.5,0.8485281,0.42426407 +0.3,0.5,0.7559526,0.7559526 +0.3,0.5,0.5345392,1.0690784 +0.3,0.5,1.0690784,0.5345392 +0.3,0.5,0.9524406,0.9524406 +0.3,0.5,0.6734773,1.3469546 +0.3,0.5,1.3469545,0.6734772 +0.3,0.7,0.6,0.6 +0.3,0.6999999,0.42426407,0.8485281 +0.29999998,0.70000005,0.8485281,0.4242641 +0.3,0.70000005,0.7559526,0.75595266 +0.3,0.70000005,0.5345392,1.0690784 +0.3,0.7,1.0690784,0.5345392 +0.3,0.7,0.9524406,0.9524406 +0.3,0.7,0.6734773,1.3469545 +0.3,0.70000005,1.3469545,0.67347723 +0.3,0.90000004,0.6,0.6 +0.3,0.9,0.42426407,0.8485281 +0.29999998,0.90000004,0.8485281,0.42426407 +0.3,0.9,0.7559526,0.7559526 +0.3,0.9,0.5345392,1.0690784 +0.3,0.9,1.0690784,0.5345392 +0.3,0.9,0.9524406,0.9524407 +0.3,0.90000004,0.6734773,1.3469545 +0.3,0.9,1.3469545,0.6734772 +0.5,0.1,0.6,0.6 +0.5,0.09999998,0.42426407,0.84852815 +0.5,0.099999994,0.84852815,0.42426407 +0.5,0.099999994,0.7559526,0.75595266 +0.5,0.10000001,0.5345392,1.0690784 +0.5,0.099999994,1.0690784,0.5345392 +0.5,0.10000001,0.9524406,0.9524406 +0.5,0.099999994,0.6734772,1.3469543 +0.5,0.10000002,1.3469546,0.67347723 +0.5,0.3,0.6,0.6 +0.5,0.29999998,0.42426407,0.8485281 +0.5,0.3,0.84852815,0.42426407 +0.5,0.3,0.7559526,0.7559526 +0.5,0.3,0.5345392,1.0690784 +0.5,0.3,1.0690784,0.5345392 +0.5,0.3,0.9524406,0.9524406 +0.5,0.3,0.6734772,1.3469545 +0.5,0.3,1.3469546,0.6734773 +0.5,0.5,0.6,0.6 +0.5,0.5,0.42426407,0.84852815 +0.5,0.5,0.84852815,0.42426407 +0.5,0.5,0.7559526,0.7559526 +0.5,0.5,0.5345392,1.0690784 +0.5,0.5,1.0690784,0.5345392 +0.5,0.5,0.9524406,0.9524406 +0.5,0.5,0.6734772,1.3469546 +0.5,0.5,1.3469546,0.6734772 +0.5,0.7,0.6,0.6 +0.5,0.6999999,0.42426407,0.8485281 +0.5,0.70000005,0.84852815,0.4242641 +0.5,0.70000005,0.7559526,0.75595266 +0.5,0.70000005,0.5345392,1.0690784 +0.5,0.7,1.0690784,0.5345392 +0.5,0.7,0.9524406,0.9524406 +0.5,0.7,0.6734772,1.3469545 +0.5,0.70000005,1.3469546,0.67347723 +0.5,0.90000004,0.6,0.6 +0.5,0.9,0.42426407,0.8485281 +0.5,0.90000004,0.84852815,0.42426407 +0.5,0.9,0.7559526,0.7559526 +0.5,0.9,0.5345392,1.0690784 +0.5,0.9,1.0690784,0.5345392 +0.5,0.9,0.9524406,0.9524407 +0.5,0.90000004,0.6734772,1.3469545 +0.5,0.9,1.3469546,0.6734772 +0.7,0.1,0.6,0.6 +0.70000005,0.09999998,0.4242641,0.84852815 +0.6999999,0.099999994,0.8485281,0.42426407 +0.70000005,0.099999994,0.75595266,0.75595266 +0.7,0.10000001,0.5345392,1.0690784 +0.70000005,0.099999994,1.0690784,0.5345392 +0.7,0.10000001,0.9524406,0.9524406 +0.70000005,0.099999994,0.67347723,1.3469543 +0.7,0.10000002,1.3469545,0.67347723 +0.7,0.3,0.6,0.6 +0.70000005,0.29999998,0.4242641,0.8485281 +0.6999999,0.3,0.8485281,0.42426407 +0.70000005,0.3,0.75595266,0.7559526 +0.7,0.3,0.5345392,1.0690784 +0.70000005,0.3,1.0690784,0.5345392 +0.7,0.3,0.9524406,0.9524406 +0.70000005,0.3,0.67347723,1.3469545 +0.7,0.3,1.3469545,0.6734773 +0.7,0.5,0.6,0.6 +0.70000005,0.5,0.4242641,0.84852815 +0.6999999,0.5,0.8485281,0.42426407 +0.70000005,0.5,0.75595266,0.7559526 +0.7,0.5,0.5345392,1.0690784 +0.70000005,0.5,1.0690784,0.5345392 +0.7,0.5,0.9524406,0.9524406 +0.70000005,0.5,0.67347723,1.3469546 +0.7,0.5,1.3469545,0.6734772 +0.7,0.7,0.6,0.6 +0.70000005,0.6999999,0.4242641,0.8485281 +0.6999999,0.70000005,0.8485281,0.4242641 +0.70000005,0.70000005,0.75595266,0.75595266 +0.7,0.70000005,0.5345392,1.0690784 +0.70000005,0.7,1.0690784,0.5345392 +0.7,0.7,0.9524406,0.9524406 +0.70000005,0.7,0.67347723,1.3469545 +0.7,0.70000005,1.3469545,0.67347723 +0.7,0.90000004,0.6,0.6 +0.70000005,0.9,0.4242641,0.8485281 +0.6999999,0.90000004,0.8485281,0.42426407 +0.70000005,0.9,0.75595266,0.7559526 +0.7,0.9,0.5345392,1.0690784 +0.70000005,0.9,1.0690784,0.5345392 +0.7,0.9,0.9524406,0.9524407 +0.70000005,0.90000004,0.67347723,1.3469545 +0.7,0.9,1.3469545,0.6734772 +0.90000004,0.1,0.6,0.6 +0.90000004,0.09999998,0.42426407,0.84852815 +0.9,0.099999994,0.8485281,0.42426407 +0.9,0.099999994,0.7559526,0.75595266 +0.9,0.10000001,0.5345392,1.0690784 +0.9,0.099999994,1.0690784,0.5345392 +0.9,0.10000001,0.9524407,0.9524406 +0.9,0.099999994,0.6734772,1.3469543 +0.90000004,0.10000002,1.3469545,0.67347723 +0.90000004,0.3,0.6,0.6 +0.90000004,0.29999998,0.42426407,0.8485281 +0.9,0.3,0.8485281,0.42426407 +0.9,0.3,0.7559526,0.7559526 +0.9,0.3,0.5345392,1.0690784 +0.9,0.3,1.0690784,0.5345392 +0.9,0.3,0.9524407,0.9524406 +0.9,0.3,0.6734772,1.3469545 +0.90000004,0.3,1.3469545,0.6734773 +0.90000004,0.5,0.6,0.6 +0.90000004,0.5,0.42426407,0.84852815 +0.9,0.5,0.8485281,0.42426407 +0.9,0.5,0.7559526,0.7559526 +0.9,0.5,0.5345392,1.0690784 +0.9,0.5,1.0690784,0.5345392 +0.9,0.5,0.9524407,0.9524406 +0.9,0.5,0.6734772,1.3469546 +0.90000004,0.5,1.3469545,0.6734772 +0.90000004,0.7,0.6,0.6 +0.90000004,0.6999999,0.42426407,0.8485281 +0.9,0.70000005,0.8485281,0.4242641 +0.9,0.70000005,0.7559526,0.75595266 +0.9,0.70000005,0.5345392,1.0690784 +0.9,0.7,1.0690784,0.5345392 +0.9,0.7,0.9524407,0.9524406 +0.9,0.7,0.6734772,1.3469545 +0.90000004,0.70000005,1.3469545,0.67347723 +0.90000004,0.90000004,0.6,0.6 +0.90000004,0.9,0.42426407,0.8485281 +0.9,0.90000004,0.8485281,0.42426407 +0.9,0.9,0.7559526,0.7559526 +0.9,0.9,0.5345392,1.0690784 +0.9,0.9,1.0690784,0.5345392 +0.9,0.9,0.9524407,0.9524407 +0.9,0.90000004,0.6734772,1.3469545 +0.90000004,0.9,1.3469545,0.6734772 +0.16666666,0.16666666,0.99999994,0.99999994 +0.16666666,0.16666666,0.70710677,1.4142137 +0.16666666,0.16666666,1.4142137,0.70710677 +0.16666666,0.16666666,1.2599211,1.2599211 +0.16666664,0.16666669,0.8908987,1.7817975 +0.16666669,0.16666664,1.7817975,0.8908987 +0.16666669,0.16666669,1.587401,1.587401 +0.16666667,0.16666663,1.122462,2.244924 +0.16666663,0.16666667,2.244924,1.122462 +0.16666666,0.5,0.99999994,1.0 +0.16666666,0.5,0.70710677,1.4142137 +0.16666666,0.5,1.4142137,0.7071068 +0.16666666,0.5,1.2599211,1.2599211 +0.16666664,0.5,0.8908987,1.7817974 +0.16666669,0.5,1.7817975,0.8908987 +0.16666669,0.49999997,1.587401,1.5874009 +0.16666667,0.5,1.122462,2.244924 +0.16666663,0.5,2.244924,1.122462 +0.16666666,0.83333325,0.99999994,0.99999994 +0.16666666,0.8333333,0.70710677,1.4142135 +0.16666666,0.8333333,1.4142137,0.7071067 +0.16666666,0.8333333,1.2599211,1.259921 +0.16666664,0.8333334,0.8908987,1.7817974 +0.16666669,0.83333325,1.7817975,0.89089864 +0.16666669,0.8333333,1.587401,1.587401 +0.16666667,0.83333325,1.122462,2.244924 +0.16666663,0.8333334,2.244924,1.122462 +0.5,0.16666666,1.0,0.99999994 +0.5,0.16666666,0.7071068,1.4142137 +0.5,0.16666666,1.4142137,0.70710677 +0.5,0.16666666,1.2599211,1.2599211 +0.5,0.16666669,0.8908987,1.7817975 +0.5,0.16666664,1.7817974,0.8908987 +0.49999997,0.16666669,1.5874009,1.587401 +0.5,0.16666663,1.122462,2.244924 +0.5,0.16666667,2.244924,1.122462 +0.5,0.5,1.0,1.0 +0.5,0.5,0.7071068,1.4142137 +0.5,0.5,1.4142137,0.7071068 +0.5,0.5,1.2599211,1.2599211 +0.5,0.5,0.8908987,1.7817974 +0.5,0.5,1.7817974,0.8908987 +0.49999997,0.49999997,1.5874009,1.5874009 +0.5,0.5,1.122462,2.244924 +0.5,0.5,2.244924,1.122462 +0.5,0.83333325,1.0,0.99999994 +0.5,0.8333333,0.7071068,1.4142135 +0.5,0.8333333,1.4142137,0.7071067 +0.5,0.8333333,1.2599211,1.259921 +0.5,0.8333334,0.8908987,1.7817974 +0.5,0.83333325,1.7817974,0.89089864 +0.49999997,0.8333333,1.5874009,1.587401 +0.5,0.83333325,1.122462,2.244924 +0.5,0.8333334,2.244924,1.122462 +0.83333325,0.16666666,0.99999994,0.99999994 +0.8333333,0.16666666,0.7071067,1.4142137 +0.8333333,0.16666666,1.4142135,0.70710677 +0.8333333,0.16666666,1.259921,1.2599211 +0.83333325,0.16666669,0.89089864,1.7817975 +0.8333334,0.16666664,1.7817974,0.8908987 +0.8333333,0.16666669,1.587401,1.587401 +0.8333334,0.16666663,1.122462,2.244924 +0.83333325,0.16666667,2.244924,1.122462 +0.83333325,0.5,0.99999994,1.0 +0.8333333,0.5,0.7071067,1.4142137 +0.8333333,0.5,1.4142135,0.7071068 +0.8333333,0.5,1.259921,1.2599211 +0.83333325,0.5,0.89089864,1.7817974 +0.8333334,0.5,1.7817974,0.8908987 +0.8333333,0.49999997,1.587401,1.5874009 +0.8333334,0.5,1.122462,2.244924 +0.83333325,0.5,2.244924,1.122462 +0.83333325,0.83333325,0.99999994,0.99999994 +0.8333333,0.8333333,0.7071067,1.4142135 +0.8333333,0.8333333,1.4142135,0.7071067 +0.8333333,0.8333333,1.259921,1.259921 +0.83333325,0.8333334,0.89089864,1.7817974 +0.8333334,0.83333325,1.7817974,0.89089864 +0.8333333,0.8333333,1.587401,1.587401 +0.8333334,0.83333325,1.122462,2.244924 +0.83333325,0.8333334,2.244924,1.122462 diff --git a/mediapipe/tasks/testdata/metadata/efficientdet_lite0_v1.json b/mediapipe/tasks/testdata/metadata/efficientdet_lite0_v1.json index a3b98a62..f9122998 100644 --- a/mediapipe/tasks/testdata/metadata/efficientdet_lite0_v1.json +++ b/mediapipe/tasks/testdata/metadata/efficientdet_lite0_v1.json @@ -42,15 +42,13 @@ "description": "The scores of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 } }, - "stats": { - } + "stats": {} }, { "name": "location", @@ -71,34 +69,29 @@ "max": 2 } }, - "stats": { - } + "stats": {} }, { "name": "number of detections", "description": "The number of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - } + "content_properties": {} }, - "stats": { - } + "stats": {} }, { "name": "category", "description": "The categories of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 } }, - "stats": { - }, + "stats": {}, "associated_files": [ { "name": "labels.txt", diff --git a/mediapipe/tasks/testdata/metadata/ssd_mobilenet_v1_no_metadata.json b/mediapipe/tasks/testdata/metadata/ssd_mobilenet_v1_no_metadata.json index 95500f19..e4df01dd 100644 --- a/mediapipe/tasks/testdata/metadata/ssd_mobilenet_v1_no_metadata.json +++ b/mediapipe/tasks/testdata/metadata/ssd_mobilenet_v1_no_metadata.json @@ -56,23 +56,20 @@ "max": 2 } }, - "stats": { - } + "stats": {} }, { "name": "category", "description": "The categories of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 } }, - "stats": { - }, + "stats": {}, "associated_files": [ { "name": "labels.txt", @@ -86,26 +83,22 @@ "description": "The scores of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - }, + "content_properties": {}, "range": { "min": 2, "max": 2 } }, - "stats": { - } + "stats": {} }, { "name": "number of detections", "description": "The number of the detected boxes.", "content": { "content_properties_type": "FeatureProperties", - "content_properties": { - } + "content_properties": {} }, - "stats": { - } + "stats": {} } ], "output_tensor_groups": [ diff --git a/mediapipe/tasks/testdata/text/BUILD b/mediapipe/tasks/testdata/text/BUILD index 62251ed8..0a50a229 100644 --- a/mediapipe/tasks/testdata/text/BUILD +++ b/mediapipe/tasks/testdata/text/BUILD @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All Rights Reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ mediapipe_files(srcs = [ "30k-clean.model", "albert_with_metadata.tflite", "bert_text_classifier.tflite", + "language_detector.tflite", "mobilebert_embedding_with_metadata.tflite", "mobilebert_with_metadata.tflite", "language_detector.tflite", @@ -111,3 +112,8 @@ filegroup( name = "universal_sentence_encoder_qa", srcs = ["universal_sentence_encoder_qa_with_metadata.tflite"], ) + +filegroup( + name = "language_detector", + srcs = ["language_detector.tflite"], +) diff --git a/mediapipe/tasks/testdata/vision/BUILD b/mediapipe/tasks/testdata/vision/BUILD index 649d8d45..632e8aa4 100644 --- a/mediapipe/tasks/testdata/vision/BUILD +++ b/mediapipe/tasks/testdata/vision/BUILD @@ -41,6 +41,7 @@ mediapipe_files(srcs = [ "conv2d_input_channel_1.tflite", "deeplabv3.tflite", "dense.tflite", + "efficientdet_lite0_fp16_no_nms.tflite", "face_detection_full_range.tflite", "face_detection_full_range_sparse.tflite", "face_detection_short_range.tflite", @@ -79,6 +80,7 @@ mediapipe_files(srcs = [ "pose_detection.tflite", "pose_landmark_lite.tflite", "pose_landmarker.task", + "pose_segmentation_mask_golden.png", "right_hands.jpg", "right_hands_rotated.jpg", "segmentation_golden_rotation0.png", @@ -142,6 +144,7 @@ filegroup( "portrait_selfie_segmentation_expected_confidence_mask.jpg", "portrait_selfie_segmentation_landscape_expected_category_mask.jpg", "pose.jpg", + "pose_segmentation_mask_golden.png", "right_hands.jpg", "right_hands_rotated.jpg", "segmentation_golden_rotation0.png", @@ -167,6 +170,7 @@ filegroup( "conv2d_input_channel_1.tflite", "deeplabv3.tflite", "dense.tflite", + "efficientdet_lite0_fp16_no_nms.tflite", "face_detection_full_range.tflite", "face_detection_full_range_sparse.tflite", "face_detection_short_range.tflite", diff --git a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier.ts b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier.ts index 907461d0..d3996419 100644 --- a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier.ts +++ b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_options.d.ts b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_options.d.ts index dc3c494b..64ca96e8 100644 --- a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_options.d.ts +++ b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_result.d.ts b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_result.d.ts index 0b616126..cb4b9bb3 100644 --- a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_result.d.ts +++ b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_test.ts b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_test.ts index b7bb158d..ba4f4535 100644 --- a/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_test.ts +++ b/mediapipe/tasks/web/audio/audio_classifier/audio_classifier_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -86,6 +86,10 @@ describe('AudioClassifier', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + audioClassifier.close(); + }); + it('initializes graph', async () => { verifyGraph(audioClassifier); verifyListenersRegistered(audioClassifier); diff --git a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder.ts b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder.ts index 35531382..afb1df64 100644 --- a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder.ts +++ b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_options.d.ts b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_options.d.ts index ac22728a..07fe5865 100644 --- a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_options.d.ts +++ b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_result.d.ts b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_result.d.ts index 13abc28d..e7ad379f 100644 --- a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_result.d.ts +++ b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_test.ts b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_test.ts index 9e37e598..0944e75e 100644 --- a/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_test.ts +++ b/mediapipe/tasks/web/audio/audio_embedder/audio_embedder_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -76,6 +76,10 @@ describe('AudioEmbedder', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + audioEmbedder.close(); + }); + it('initializes graph', () => { verifyGraph(audioEmbedder); verifyListenersRegistered(audioEmbedder); diff --git a/mediapipe/tasks/web/audio/core/audio_task_runner.ts b/mediapipe/tasks/web/audio/core/audio_task_runner.ts index 7462a31f..cf3e348c 100644 --- a/mediapipe/tasks/web/audio/core/audio_task_runner.ts +++ b/mediapipe/tasks/web/audio/core/audio_task_runner.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/index.ts b/mediapipe/tasks/web/audio/index.ts index e7465878..ef48c5d6 100644 --- a/mediapipe/tasks/web/audio/index.ts +++ b/mediapipe/tasks/web/audio/index.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/audio/types.ts b/mediapipe/tasks/web/audio/types.ts index 19073b70..4e4e4779 100644 --- a/mediapipe/tasks/web/audio/types.ts +++ b/mediapipe/tasks/web/audio/types.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/bounding_box.d.ts b/mediapipe/tasks/web/components/containers/bounding_box.d.ts index 69174f4c..77f2837d 100644 --- a/mediapipe/tasks/web/components/containers/bounding_box.d.ts +++ b/mediapipe/tasks/web/components/containers/bounding_box.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/category.d.ts b/mediapipe/tasks/web/components/containers/category.d.ts index 8ab8e6b8..c3ca7609 100644 --- a/mediapipe/tasks/web/components/containers/category.d.ts +++ b/mediapipe/tasks/web/components/containers/category.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/classification_result.d.ts b/mediapipe/tasks/web/components/containers/classification_result.d.ts index 30590ab4..f7294dca 100644 --- a/mediapipe/tasks/web/components/containers/classification_result.d.ts +++ b/mediapipe/tasks/web/components/containers/classification_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/detection_result.d.ts b/mediapipe/tasks/web/components/containers/detection_result.d.ts index 37817307..3d0e86a0 100644 --- a/mediapipe/tasks/web/components/containers/detection_result.d.ts +++ b/mediapipe/tasks/web/components/containers/detection_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/embedding_result.d.ts b/mediapipe/tasks/web/components/containers/embedding_result.d.ts index 43d14d30..a4b4ec20 100644 --- a/mediapipe/tasks/web/components/containers/embedding_result.d.ts +++ b/mediapipe/tasks/web/components/containers/embedding_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/keypoint.d.ts b/mediapipe/tasks/web/components/containers/keypoint.d.ts index 3aaf9eb0..c30d36c4 100644 --- a/mediapipe/tasks/web/components/containers/keypoint.d.ts +++ b/mediapipe/tasks/web/components/containers/keypoint.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/landmark.d.ts b/mediapipe/tasks/web/components/containers/landmark.d.ts index 0f916bf8..bb6104d8 100644 --- a/mediapipe/tasks/web/components/containers/landmark.d.ts +++ b/mediapipe/tasks/web/components/containers/landmark.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/matrix.d.ts b/mediapipe/tasks/web/components/containers/matrix.d.ts index e0bad58c..029ca73e 100644 --- a/mediapipe/tasks/web/components/containers/matrix.d.ts +++ b/mediapipe/tasks/web/components/containers/matrix.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/containers/rect.d.ts b/mediapipe/tasks/web/components/containers/rect.d.ts index 9afece9c..49767b51 100644 --- a/mediapipe/tasks/web/components/containers/rect.d.ts +++ b/mediapipe/tasks/web/components/containers/rect.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/classifier_options.test.ts b/mediapipe/tasks/web/components/processors/classifier_options.test.ts index 928bda42..895d9f6d 100644 --- a/mediapipe/tasks/web/components/processors/classifier_options.test.ts +++ b/mediapipe/tasks/web/components/processors/classifier_options.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/classifier_options.ts b/mediapipe/tasks/web/components/processors/classifier_options.ts index 5b8ae796..3d30b434 100644 --- a/mediapipe/tasks/web/components/processors/classifier_options.ts +++ b/mediapipe/tasks/web/components/processors/classifier_options.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/classifier_result.test.ts b/mediapipe/tasks/web/components/processors/classifier_result.test.ts index 2e8f9956..3e8b1dd1 100644 --- a/mediapipe/tasks/web/components/processors/classifier_result.test.ts +++ b/mediapipe/tasks/web/components/processors/classifier_result.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/classifier_result.ts b/mediapipe/tasks/web/components/processors/classifier_result.ts index ae58252e..03ba1ccd 100644 --- a/mediapipe/tasks/web/components/processors/classifier_result.ts +++ b/mediapipe/tasks/web/components/processors/classifier_result.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/detection_result.test.ts b/mediapipe/tasks/web/components/processors/detection_result.test.ts index 28904350..28b37ab0 100644 --- a/mediapipe/tasks/web/components/processors/detection_result.test.ts +++ b/mediapipe/tasks/web/components/processors/detection_result.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/detection_result.ts b/mediapipe/tasks/web/components/processors/detection_result.ts index 6b38820b..304b51a8 100644 --- a/mediapipe/tasks/web/components/processors/detection_result.ts +++ b/mediapipe/tasks/web/components/processors/detection_result.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/embedder_options.test.ts b/mediapipe/tasks/web/components/processors/embedder_options.test.ts index b879a6b2..1f44f7dd 100644 --- a/mediapipe/tasks/web/components/processors/embedder_options.test.ts +++ b/mediapipe/tasks/web/components/processors/embedder_options.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/embedder_options.ts b/mediapipe/tasks/web/components/processors/embedder_options.ts index f000dbd6..fa7ce98b 100644 --- a/mediapipe/tasks/web/components/processors/embedder_options.ts +++ b/mediapipe/tasks/web/components/processors/embedder_options.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/embedder_result.test.ts b/mediapipe/tasks/web/components/processors/embedder_result.test.ts index 97ba935c..ef54e2d3 100644 --- a/mediapipe/tasks/web/components/processors/embedder_result.test.ts +++ b/mediapipe/tasks/web/components/processors/embedder_result.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/embedder_result.ts b/mediapipe/tasks/web/components/processors/embedder_result.ts index 285afe68..b1041617 100644 --- a/mediapipe/tasks/web/components/processors/embedder_result.ts +++ b/mediapipe/tasks/web/components/processors/embedder_result.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/landmark_result.test.ts b/mediapipe/tasks/web/components/processors/landmark_result.test.ts index 3a263510..b0a46b3c 100644 --- a/mediapipe/tasks/web/components/processors/landmark_result.test.ts +++ b/mediapipe/tasks/web/components/processors/landmark_result.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/landmark_result.ts b/mediapipe/tasks/web/components/processors/landmark_result.ts index 3a4fa024..9bb56338 100644 --- a/mediapipe/tasks/web/components/processors/landmark_result.ts +++ b/mediapipe/tasks/web/components/processors/landmark_result.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/processors/landmark_result_test_lib.ts b/mediapipe/tasks/web/components/processors/landmark_result_test_lib.ts index 318ab2f6..d0628817 100644 --- a/mediapipe/tasks/web/components/processors/landmark_result_test_lib.ts +++ b/mediapipe/tasks/web/components/processors/landmark_result_test_lib.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/components/utils/cosine_similarity.test.ts b/mediapipe/tasks/web/components/utils/cosine_similarity.test.ts index 2a82f388..623ddaa6 100644 --- a/mediapipe/tasks/web/components/utils/cosine_similarity.test.ts +++ b/mediapipe/tasks/web/components/utils/cosine_similarity.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * *

Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain a diff --git a/mediapipe/tasks/web/components/utils/cosine_similarity.ts b/mediapipe/tasks/web/components/utils/cosine_similarity.ts index b512478f..a022129a 100644 --- a/mediapipe/tasks/web/components/utils/cosine_similarity.ts +++ b/mediapipe/tasks/web/components/utils/cosine_similarity.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * *

Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain a diff --git a/mediapipe/tasks/web/core/classifier_options.d.ts b/mediapipe/tasks/web/core/classifier_options.d.ts index 08e7a766..bd8ad6e8 100644 --- a/mediapipe/tasks/web/core/classifier_options.d.ts +++ b/mediapipe/tasks/web/core/classifier_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/core/embedder_options.d.ts b/mediapipe/tasks/web/core/embedder_options.d.ts index 8669acfc..cd8331b2 100644 --- a/mediapipe/tasks/web/core/embedder_options.d.ts +++ b/mediapipe/tasks/web/core/embedder_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/core/fileset_resolver.ts b/mediapipe/tasks/web/core/fileset_resolver.ts index 5c845b80..1e13548a 100644 --- a/mediapipe/tasks/web/core/fileset_resolver.ts +++ b/mediapipe/tasks/web/core/fileset_resolver.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/core/task_runner.ts b/mediapipe/tasks/web/core/task_runner.ts index 238564f1..91a38cd4 100644 --- a/mediapipe/tasks/web/core/task_runner.ts +++ b/mediapipe/tasks/web/core/task_runner.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -256,6 +256,11 @@ export abstract class TaskRunner { this.baseOptions.setAcceleration(acceleration); } + + /** Closes and cleans up the resources held by this task. */ + close(): void { + this.graphRunner.closeGraph(); + } } diff --git a/mediapipe/tasks/web/core/task_runner_options.d.ts b/mediapipe/tasks/web/core/task_runner_options.d.ts index 5f23cd4b..6b096089 100644 --- a/mediapipe/tasks/web/core/task_runner_options.d.ts +++ b/mediapipe/tasks/web/core/task_runner_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/core/task_runner_test.ts b/mediapipe/tasks/web/core/task_runner_test.ts index 8c9a1a5d..873e6fea 100644 --- a/mediapipe/tasks/web/core/task_runner_test.ts +++ b/mediapipe/tasks/web/core/task_runner_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/core/task_runner_test_utils.ts b/mediapipe/tasks/web/core/task_runner_test_utils.ts index b0aa3409..edf1d0d3 100644 --- a/mediapipe/tasks/web/core/task_runner_test_utils.ts +++ b/mediapipe/tasks/web/core/task_runner_test_utils.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,7 +36,8 @@ export function createSpyWasmModule(): SpyWasmModule { '_setAutoRenderToScreen', 'stringToNewUTF8', '_attachProtoListener', '_attachProtoVectorListener', '_free', '_waitUntilIdle', '_addStringToInputStream', '_registerModelResourcesGraphService', - '_configureAudio', '_malloc', '_addProtoToInputStream', '_getGraphConfig' + '_configureAudio', '_malloc', '_addProtoToInputStream', '_getGraphConfig', + '_closeGraph' ]); spyWasmModule._getGraphConfig.and.callFake(() => { (spyWasmModule.simpleListeners![CALCULATOR_GRAPH_CONFIG_LISTENER_NAME] as diff --git a/mediapipe/tasks/web/core/wasm_fileset.d.ts b/mediapipe/tasks/web/core/wasm_fileset.d.ts index 18227eab..558aa3fa 100644 --- a/mediapipe/tasks/web/core/wasm_fileset.d.ts +++ b/mediapipe/tasks/web/core/wasm_fileset.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/index.ts b/mediapipe/tasks/web/text/index.ts index 2fbdd548..74ab2ad6 100644 --- a/mediapipe/tasks/web/text/index.ts +++ b/mediapipe/tasks/web/text/index.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/language_detector/language_detector.ts b/mediapipe/tasks/web/text/language_detector/language_detector.ts index 13343fab..f028b99e 100644 --- a/mediapipe/tasks/web/text/language_detector/language_detector.ts +++ b/mediapipe/tasks/web/text/language_detector/language_detector.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/language_detector/language_detector_options.d.ts b/mediapipe/tasks/web/text/language_detector/language_detector_options.d.ts index 54b73553..422e86e2 100644 --- a/mediapipe/tasks/web/text/language_detector/language_detector_options.d.ts +++ b/mediapipe/tasks/web/text/language_detector/language_detector_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/language_detector/language_detector_result.d.ts b/mediapipe/tasks/web/text/language_detector/language_detector_result.d.ts index b21285ef..c040e27e 100644 --- a/mediapipe/tasks/web/text/language_detector/language_detector_result.d.ts +++ b/mediapipe/tasks/web/text/language_detector/language_detector_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/language_detector/language_detector_test.ts b/mediapipe/tasks/web/text/language_detector/language_detector_test.ts index 6e91b666..94eafb04 100644 --- a/mediapipe/tasks/web/text/language_detector/language_detector_test.ts +++ b/mediapipe/tasks/web/text/language_detector/language_detector_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,6 +62,10 @@ describe('LanguageDetector', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + languageDetector.close(); + }); + it('initializes graph', async () => { verifyGraph(languageDetector); verifyListenersRegistered(languageDetector); diff --git a/mediapipe/tasks/web/text/text_classifier/text_classifier.ts b/mediapipe/tasks/web/text/text_classifier/text_classifier.ts index e9a2940d..1da03950 100644 --- a/mediapipe/tasks/web/text/text_classifier/text_classifier.ts +++ b/mediapipe/tasks/web/text/text_classifier/text_classifier.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_classifier/text_classifier_options.d.ts b/mediapipe/tasks/web/text/text_classifier/text_classifier_options.d.ts index 25592deb..8f5c953d 100644 --- a/mediapipe/tasks/web/text/text_classifier/text_classifier_options.d.ts +++ b/mediapipe/tasks/web/text/text_classifier/text_classifier_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_classifier/text_classifier_result.d.ts b/mediapipe/tasks/web/text/text_classifier/text_classifier_result.d.ts index 707ba5da..b1215ae2 100644 --- a/mediapipe/tasks/web/text/text_classifier/text_classifier_result.d.ts +++ b/mediapipe/tasks/web/text/text_classifier/text_classifier_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_classifier/text_classifier_test.ts b/mediapipe/tasks/web/text/text_classifier/text_classifier_test.ts index d9eb1486..84374518 100644 --- a/mediapipe/tasks/web/text/text_classifier/text_classifier_test.ts +++ b/mediapipe/tasks/web/text/text_classifier/text_classifier_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,6 +61,10 @@ describe('TextClassifier', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + textClassifier.close(); + }); + it('initializes graph', async () => { verifyGraph(textClassifier); verifyListenersRegistered(textClassifier); diff --git a/mediapipe/tasks/web/text/text_embedder/text_embedder.ts b/mediapipe/tasks/web/text/text_embedder/text_embedder.ts index 66aca4a6..8bbf471d 100644 --- a/mediapipe/tasks/web/text/text_embedder/text_embedder.ts +++ b/mediapipe/tasks/web/text/text_embedder/text_embedder.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_embedder/text_embedder_options.d.ts b/mediapipe/tasks/web/text/text_embedder/text_embedder_options.d.ts index 7689ee0c..13cdc560 100644 --- a/mediapipe/tasks/web/text/text_embedder/text_embedder_options.d.ts +++ b/mediapipe/tasks/web/text/text_embedder/text_embedder_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_embedder/text_embedder_result.d.ts b/mediapipe/tasks/web/text/text_embedder/text_embedder_result.d.ts index 65640b50..8a3cf54f 100644 --- a/mediapipe/tasks/web/text/text_embedder/text_embedder_result.d.ts +++ b/mediapipe/tasks/web/text/text_embedder/text_embedder_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/text/text_embedder/text_embedder_test.ts b/mediapipe/tasks/web/text/text_embedder/text_embedder_test.ts index e26b85bf..53c09826 100644 --- a/mediapipe/tasks/web/text/text_embedder/text_embedder_test.ts +++ b/mediapipe/tasks/web/text/text_embedder/text_embedder_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,6 +61,10 @@ describe('TextEmbedder', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + textEmbedder.close(); + }); + it('initializes graph', async () => { verifyGraph(textEmbedder); verifyListenersRegistered(textEmbedder); diff --git a/mediapipe/tasks/web/text/types.ts b/mediapipe/tasks/web/text/types.ts index 9f9e48c5..d7b5c9d9 100644 --- a/mediapipe/tasks/web/text/types.ts +++ b/mediapipe/tasks/web/text/types.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/BUILD b/mediapipe/tasks/web/vision/BUILD index fa1ed32d..503db325 100644 --- a/mediapipe/tasks/web/vision/BUILD +++ b/mediapipe/tasks/web/vision/BUILD @@ -31,6 +31,7 @@ VISION_LIBS = [ "//mediapipe/tasks/web/vision/image_segmenter", "//mediapipe/tasks/web/vision/interactive_segmenter", "//mediapipe/tasks/web/vision/object_detector", + "//mediapipe/tasks/web/vision/pose_landmarker", ] mediapipe_ts_library( diff --git a/mediapipe/tasks/web/vision/README.md b/mediapipe/tasks/web/vision/README.md index 6423807f..a9e4e714 100644 --- a/mediapipe/tasks/web/vision/README.md +++ b/mediapipe/tasks/web/vision/README.md @@ -160,3 +160,20 @@ const detections = objectDetector.detect(image); For more information, refer to the [Object Detector](https://developers.google.com/mediapipe/solutions/vision/object_detector/web_js) documentation. + +## Pose Landmark Detection + +The MediaPipe Pose Landmarker task lets you detect the landmarks of body poses +in an image. You can use this Task to localize key points of a pose and render +visual effects over the body. + +``` +const vision = await FilesetResolver.forVisionTasks( + "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm" +); +const poseLandmarker = await PoseLandmarker.createFromModelPath(vision, + "model.task" +); +const image = document.getElementById("image") as HTMLImageElement; +const landmarks = poseLandmarker.detect(image); +``` diff --git a/mediapipe/tasks/web/vision/core/drawing_utils.ts b/mediapipe/tasks/web/vision/core/drawing_utils.ts index a4013a00..e9462189 100644 --- a/mediapipe/tasks/web/vision/core/drawing_utils.ts +++ b/mediapipe/tasks/web/vision/core/drawing_utils.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/core/image.test.ts b/mediapipe/tasks/web/vision/core/image.test.ts index 7373ea38..e991aa7d 100644 --- a/mediapipe/tasks/web/vision/core/image.test.ts +++ b/mediapipe/tasks/web/vision/core/image.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,43 +29,77 @@ if (skip) { /** The image types supported by MPImage. */ type ImageType = ImageData|ImageBitmap|WebGLTexture; -async function createTestData( - gl: WebGL2RenderingContext, data: number[], width: number, - height: number): Promise<[ImageData, ImageBitmap, WebGLTexture]> { - const imageData = new ImageData(new Uint8ClampedArray(data), width, height); - const imageBitmap = await createImageBitmap(imageData); - const webGlTexture = gl.createTexture()!; +const IMAGE_2_2 = [1, 1, 1, 255, 2, 2, 2, 255, 3, 3, 3, 255, 4, 4, 4, 255]; +const IMAGE_2_1 = [1, 1, 1, 255, 2, 2, 2, 255]; +const IMAGE_2_3 = [ + 1, 1, 1, 255, 2, 2, 2, 255, 3, 3, 3, 255, + 4, 4, 4, 255, 5, 5, 5, 255, 6, 6, 6, 255 +]; - gl.bindTexture(gl.TEXTURE_2D, webGlTexture); - gl.texImage2D( - gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageBitmap); - gl.bindTexture(gl.TEXTURE_2D, null); +/** The test images and data to use for the unit tests below. */ +class MPImageTestContext { + canvas!: OffscreenCanvas; + gl!: WebGL2RenderingContext; + uint8ClampedArray!: Uint8ClampedArray; + float32Array!: Float32Array; + imageData!: ImageData; + imageBitmap!: ImageBitmap; + webGLTexture!: WebGLTexture; - return [imageData, imageBitmap, webGlTexture]; + async init(pixels = IMAGE_2_2, width = WIDTH, height = HEIGHT): + Promise { + // Initialize a canvas with default dimensions. Note that the canvas size + // can be different from the image size. + this.canvas = new OffscreenCanvas(WIDTH, HEIGHT); + this.gl = this.canvas.getContext('webgl2') as WebGL2RenderingContext; + + const gl = this.gl; + + this.uint8ClampedArray = new Uint8ClampedArray(pixels.length / 4); + this.float32Array = new Float32Array(pixels.length / 4); + for (let i = 0; i < this.uint8ClampedArray.length; ++i) { + this.uint8ClampedArray[i] = pixels[i * 4]; + this.float32Array[i] = pixels[i * 4] / 255; + } + this.imageData = + new ImageData(new Uint8ClampedArray(pixels), width, height); + this.imageBitmap = await createImageBitmap(this.imageData); + this.webGLTexture = gl.createTexture()!; + + gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture); + gl.texImage2D( + gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.imageBitmap); + gl.bindTexture(gl.TEXTURE_2D, null); + } + + get(type: unknown) { + switch (type) { + case Uint8ClampedArray: + return this.uint8ClampedArray; + case Float32Array: + return this.float32Array; + case ImageData: + return this.imageData; + case ImageBitmap: + return this.imageBitmap; + case WebGLTexture: + return this.webGLTexture; + default: + throw new Error(`Unsupported type: ${type}`); + } + } + + close(): void { + this.gl.deleteTexture(this.webGLTexture); + this.imageBitmap.close(); + } } (skip ? xdescribe : describe)('MPImage', () => { - let canvas: OffscreenCanvas; - let gl: WebGL2RenderingContext; - let imageData: ImageData; - let imageBitmap: ImageBitmap; - let webGlTexture: WebGLTexture; - - beforeEach(async () => { - canvas = new OffscreenCanvas(WIDTH, HEIGHT); - gl = canvas.getContext('webgl2') as WebGL2RenderingContext; - - const images = await createTestData( - gl, [1, 0, 0, 255, 2, 0, 0, 255, 3, 0, 0, 255, 4, 0, 0, 255], WIDTH, - HEIGHT); - imageData = images[0]; - imageBitmap = images[1]; - webGlTexture = images[2]; - }); + const context = new MPImageTestContext(); afterEach(() => { - gl.deleteTexture(webGlTexture); - imageBitmap.close(); + context.close(); }); function readPixelsFromImageBitmap(imageBitmap: ImageBitmap): ImageData { @@ -78,6 +112,7 @@ async function createTestData( function readPixelsFromWebGLTexture(texture: WebGLTexture): Uint8Array { const pixels = new Uint8Array(WIDTH * WIDTH * 4); + const gl = context.gl; gl.bindTexture(gl.TEXTURE_2D, texture); const framebuffer = gl.createFramebuffer()!; @@ -94,7 +129,13 @@ async function createTestData( } function assertEquality(image: MPImage, expected: ImageType): void { - if (expected instanceof ImageData) { + if (expected instanceof Uint8ClampedArray) { + const result = image.getImage(MPImageStorageType.UINT8_CLAMPED_ARRAY); + expect(result).toEqual(expected); + } else if (expected instanceof Float32Array) { + const result = image.getImage(MPImageStorageType.FLOAT32_ARRAY); + expect(result).toEqual(expected); + } else if (expected instanceof ImageData) { const result = image.getImage(MPImageStorageType.IMAGE_DATA); expect(result).toEqual(expected); } else if (expected instanceof ImageBitmap) { @@ -112,11 +153,9 @@ async function createTestData( shaderContext: MPImageShaderContext, input: ImageType, width: number, height: number): MPImage { return new MPImage( - input instanceof ImageData ? input : null, - input instanceof ImageBitmap ? input : null, - input instanceof WebGLTexture ? input : null, - /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, canvas, - shaderContext, width, height); + [input], + /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, + context.canvas, shaderContext, width, height); } function runConversionTest( @@ -138,115 +177,105 @@ async function createTestData( shaderContext.close(); } - it(`converts from ImageData to ImageData`, () => { - runConversionTest(imageData, imageData); - }); + const sources = skip ? + [] : + [Uint8ClampedArray, Float32Array, ImageData, ImageBitmap, WebGLTexture]; - it(`converts from ImageData to ImageBitmap`, () => { - runConversionTest(imageData, imageBitmap); - }); + for (let i = 0; i < sources.length; i++) { + for (let j = 0; j < sources.length; j++) { + it(`converts from ${sources[i].name} to ${sources[j].name}`, async () => { + await context.init(); + runConversionTest(context.get(sources[i]), context.get(sources[j])); + }); + } + } - it(`converts from ImageData to WebGLTexture`, () => { - runConversionTest(imageData, webGlTexture); - }); - - it(`converts from ImageBitmap to ImageData`, () => { - runConversionTest(imageBitmap, imageData); - }); - - it(`converts from ImageBitmap to ImageBitmap`, () => { - runConversionTest(imageBitmap, imageBitmap); - }); - - it(`converts from ImageBitmap to WebGLTexture`, () => { - runConversionTest(imageBitmap, webGlTexture); - }); - - it(`converts from WebGLTexture to ImageData`, () => { - runConversionTest(webGlTexture, imageData); - }); - - it(`converts from WebGLTexture to ImageBitmap`, () => { - runConversionTest(webGlTexture, imageBitmap); - }); - - it(`converts from WebGLTexture to WebGLTexture`, () => { - runConversionTest(webGlTexture, webGlTexture); - }); - - it(`clones ImageData`, () => { - runCloneTest(imageData); - }); - - it(`clones ImageBitmap`, () => { - runCloneTest(imageBitmap); - }); - - it(`clones WebGLTextures`, () => { - runCloneTest(webGlTexture); - }); + for (let i = 0; i < sources.length; i++) { + it(`clones ${sources[i].name}`, async () => { + await context.init(); + runCloneTest(context.get(sources[i])); + }); + } it(`does not flip textures twice`, async () => { - const [imageData, , webGlTexture] = await createTestData( - gl, [1, 0, 0, 255, 2, 0, 0, 255, 3, 0, 0, 255, 4, 0, 0, 255], WIDTH, - HEIGHT); + await context.init(); const shaderContext = new MPImageShaderContext(); const image = new MPImage( - /* imageData= */ null, /* imageBitmap= */ null, webGlTexture, - /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, canvas, - shaderContext, WIDTH, HEIGHT); + [context.webGLTexture], + /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, + context.canvas, shaderContext, WIDTH, HEIGHT); const result = image.clone().getImage(MPImageStorageType.IMAGE_DATA); - expect(result).toEqual(imageData); + expect(result).toEqual(context.imageData); - gl.deleteTexture(webGlTexture); shaderContext.close(); }); it(`can clone and get image`, async () => { - const [imageData, , webGlTexture] = await createTestData( - gl, [1, 0, 0, 255, 2, 0, 0, 255, 3, 0, 0, 255, 4, 0, 0, 255], WIDTH, - HEIGHT); + await context.init(); const shaderContext = new MPImageShaderContext(); const image = new MPImage( - /* imageData= */ null, /* imageBitmap= */ null, webGlTexture, - /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, canvas, - shaderContext, WIDTH, HEIGHT); + [context.webGLTexture], + /* ownsImageBitmap= */ false, /* ownsWebGLTexture= */ false, + context.canvas, shaderContext, WIDTH, HEIGHT); // Verify that we can mix the different shader modes by running them out of // order. let result = image.getImage(MPImageStorageType.IMAGE_DATA); - expect(result).toEqual(imageData); + expect(result).toEqual(context.imageData); result = image.clone().getImage(MPImageStorageType.IMAGE_DATA); - expect(result).toEqual(imageData); + expect(result).toEqual(context.imageData); result = image.getImage(MPImageStorageType.IMAGE_DATA); - expect(result).toEqual(imageData); + expect(result).toEqual(context.imageData); - gl.deleteTexture(webGlTexture); shaderContext.close(); }); it('supports hasType()', async () => { + await context.init(); + const shaderContext = new MPImageShaderContext(); - const image = createImage(shaderContext, imageData, WIDTH, HEIGHT); + const image = createImage(shaderContext, context.imageData, WIDTH, HEIGHT); expect(image.hasType(MPImageStorageType.IMAGE_DATA)).toBe(true); + expect(image.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)).toBe(false); + expect(image.hasType(MPImageStorageType.FLOAT32_ARRAY)).toBe(false); + expect(image.hasType(MPImageStorageType.WEBGL_TEXTURE)).toBe(false); + expect(image.hasType(MPImageStorageType.IMAGE_BITMAP)).toBe(false); + + image.getImage(MPImageStorageType.UINT8_CLAMPED_ARRAY); + + expect(image.hasType(MPImageStorageType.IMAGE_DATA)).toBe(true); + expect(image.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)).toBe(true); + expect(image.hasType(MPImageStorageType.FLOAT32_ARRAY)).toBe(false); + expect(image.hasType(MPImageStorageType.WEBGL_TEXTURE)).toBe(false); + expect(image.hasType(MPImageStorageType.IMAGE_BITMAP)).toBe(false); + + image.getImage(MPImageStorageType.FLOAT32_ARRAY); + + expect(image.hasType(MPImageStorageType.IMAGE_DATA)).toBe(true); + expect(image.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)).toBe(true); + expect(image.hasType(MPImageStorageType.FLOAT32_ARRAY)).toBe(true); expect(image.hasType(MPImageStorageType.WEBGL_TEXTURE)).toBe(false); expect(image.hasType(MPImageStorageType.IMAGE_BITMAP)).toBe(false); image.getImage(MPImageStorageType.WEBGL_TEXTURE); expect(image.hasType(MPImageStorageType.IMAGE_DATA)).toBe(true); + expect(image.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)).toBe(true); + expect(image.hasType(MPImageStorageType.FLOAT32_ARRAY)).toBe(true); expect(image.hasType(MPImageStorageType.WEBGL_TEXTURE)).toBe(true); expect(image.hasType(MPImageStorageType.IMAGE_BITMAP)).toBe(false); - await image.getImage(MPImageStorageType.IMAGE_BITMAP); + image.getImage(MPImageStorageType.IMAGE_BITMAP); expect(image.hasType(MPImageStorageType.IMAGE_DATA)).toBe(true); + expect(image.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)).toBe(true); + expect(image.hasType(MPImageStorageType.FLOAT32_ARRAY)).toBe(true); expect(image.hasType(MPImageStorageType.WEBGL_TEXTURE)).toBe(true); expect(image.hasType(MPImageStorageType.IMAGE_BITMAP)).toBe(true); @@ -255,33 +284,32 @@ async function createTestData( }); it('supports image that is smaller than the canvas', async () => { - const [imageData, imageBitmap, webGlTexture] = await createTestData( - gl, [1, 0, 0, 255, 2, 0, 0, 255], /* width= */ 2, /* height= */ 1); + await context.init(IMAGE_2_1, /* width= */ 2, /* height= */ 1); - runConversionTest(imageData, webGlTexture, /* width= */ 2, /* height= */ 1); runConversionTest( - webGlTexture, imageBitmap, /* width= */ 2, /* height= */ 1); - runConversionTest(imageBitmap, imageData, /* width= */ 2, /* height= */ 1); + context.imageData, context.webGLTexture, /* width= */ 2, + /* height= */ 1); + runConversionTest( + context.webGLTexture, context.imageBitmap, /* width= */ 2, + /* height= */ 1); + runConversionTest( + context.imageBitmap, context.imageData, /* width= */ 2, + /* height= */ 1); - gl.deleteTexture(webGlTexture); - imageBitmap.close(); + context.close(); }); it('supports image that is larger than the canvas', async () => { - const [imageData, imageBitmap, webGlTexture] = await createTestData( - gl, - [ - 1, 0, 0, 255, 2, 0, 0, 255, 3, 0, 0, 255, - 4, 0, 0, 255, 5, 0, 0, 255, 6, 0, 0, 255 - ], - /* width= */ 2, /* height= */ 3); + await context.init(IMAGE_2_3, /* width= */ 2, /* height= */ 3); - runConversionTest(imageData, webGlTexture, /* width= */ 2, /* height= */ 3); runConversionTest( - webGlTexture, imageBitmap, /* width= */ 2, /* height= */ 3); - runConversionTest(imageBitmap, imageData, /* width= */ 2, /* height= */ 3); - - gl.deleteTexture(webGlTexture); - imageBitmap.close(); + context.imageData, context.webGLTexture, /* width= */ 2, + /* height= */ 3); + runConversionTest( + context.webGLTexture, context.imageBitmap, /* width= */ 2, + /* height= */ 3); + runConversionTest( + context.imageBitmap, context.imageData, /* width= */ 2, + /* height= */ 3); }); }); diff --git a/mediapipe/tasks/web/vision/core/image.ts b/mediapipe/tasks/web/vision/core/image.ts index a4bbdfe1..739f05f0 100644 --- a/mediapipe/tasks/web/vision/core/image.ts +++ b/mediapipe/tasks/web/vision/core/image.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,12 @@ /** The underlying type of the image. */ export enum MPImageStorageType { + /** Represents the native `UInt8ClampedArray` type. */ + UINT8_CLAMPED_ARRAY, + /** + * Represents the native `Float32Array` type. Values range from [0.0, 1.0]. + */ + FLOAT32_ARRAY, /** Represents the native `ImageData` type. */ IMAGE_DATA, /** Represents the native `ImageBitmap` type. */ @@ -24,7 +30,9 @@ export enum MPImageStorageType { WEBGL_TEXTURE } -type MPImageNativeContainer = ImageData|ImageBitmap|WebGLTexture; +/** The supported image formats. For internal usage. */ +export type MPImageNativeContainer = + Uint8ClampedArray|Float32Array|ImageData|ImageBitmap|WebGLTexture; const VERTEX_SHADER = ` attribute vec2 aVertex; @@ -211,6 +219,7 @@ export class MPImageShaderContext { return result; } + /** * Binds a framebuffer to the canvas. If the framebuffer does not yet exist, * creates it first. Binds the provided texture to the framebuffer. @@ -249,6 +258,97 @@ export class MPImageShaderContext { } } +/** + * An interface that can be used to provide custom conversion functions. These + * functions are invoked to convert pixel values between different channel + * counts and value ranges. Any conversion function that is not specified will + * result in a default conversion. + */ +export interface MPImageChannelConverter { + /** + * A conversion function to convert a number in the [0.0, 1.0] range to RGBA. + * The output is an array with four elemeents whose values range from 0 to 255 + * inclusive. + * + * The default conversion function is `[v * 255, v * 255, v * 255, 255]` + * and will log a warning if invoked. + */ + floatToRGBAConverter?: (value: number) => [number, number, number, number]; + + /* + * A conversion function to convert a number in the [0, 255] range to RGBA. + * The output is an array with four elemeents whose values range from 0 to 255 + * inclusive. + * + * The default conversion function is `[v, v , v , 255]` and will log a + * warning if invoked. + */ + uint8ToRGBAConverter?: (value: number) => [number, number, number, number]; + + /** + * A conversion function to convert an RGBA value in the range of 0 to 255 to + * a single value in the [0.0, 1.0] range. + * + * The default conversion function is `(r / 3 + g / 3 + b / 3) / 255` and will + * log a warning if invoked. + */ + rgbaToFloatConverter?: (r: number, g: number, b: number, a: number) => number; + + /** + * A conversion function to convert an RGBA value in the range of 0 to 255 to + * a single value in the [0, 255] range. + * + * The default conversion function is `r / 3 + g / 3 + b / 3` and will log a + * warning if invoked. + */ + rgbaToUint8Converter?: (r: number, g: number, b: number, a: number) => number; + + /** + * A conversion function to convert a single value in the 0.0 to 1.0 range to + * [0, 255]. + * + * The default conversion function is `r * 255` and will log a warning if + * invoked. + */ + floatToUint8Converter?: (value: number) => number; + + /** + * A conversion function to convert a single value in the 0 to 255 range to + * [0.0, 1.0] . + * + * The default conversion function is `r / 255` and will log a warning if + * invoked. + */ + uint8ToFloatConverter?: (value: number) => number; +} + +const DEFAULT_CONVERTER: Required = { + floatToRGBAConverter: v => { + console.log('Using default floatToRGBAConverter'); + return [v * 255, v * 255, v * 255, 255]; + }, + uint8ToRGBAConverter: v => { + console.log('Using default uint8ToRGBAConverter'); + return [v, v, v, 255]; + }, + rgbaToFloatConverter: (r, g, b) => { + console.log('Using default floatToRGBAConverter'); + return (r / 3 + g / 3 + b / 3) / 255; + }, + rgbaToUint8Converter: (r, g, b) => { + console.log('Using default rgbaToUint8Converter'); + return r / 3 + g / 3 + b / 3; + }, + floatToUint8Converter: v => { + console.log('Using default floatToUint8Converter'); + return v * 255; + }, + uint8ToFloatConverter: v => { + console.log('Using default uint8ToFloatConverter'); + return v / 255; + }, +}; + /** * The wrapper class for MediaPipe Image objects. * @@ -268,15 +368,21 @@ export class MPImageShaderContext { * initialized with an `OffscreenCanvas`. As we require WebGL2 support, this * places some limitations on Browser support as outlined here: * https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas/getContext + * + * Some MediaPipe tasks return single channel masks. These masks are stored + * using an underlying `Uint8ClampedArray` an `Float32Array` (represented as + * single-channel arrays). To convert these type to other formats a conversion + * function is invoked to convert pixel values between single channel and four + * channel RGBA values. To customize this conversion, you can specify these + * conversion functions when you invoke `getImage()`. If you use the default + * conversion function a warning will be logged to the console. */ export class MPImage { private gl?: WebGL2RenderingContext; /** @hideconstructor */ constructor( - private imageData: ImageData|null, - private imageBitmap: ImageBitmap|null, - private webGLTexture: WebGLTexture|null, + private readonly containers: MPImageNativeContainer[], private ownsImageBitmap: boolean, private ownsWebGLTexture: boolean, /** Returns the canvas element that the image is bound to. */ @@ -294,56 +400,137 @@ export class MPImage { * `getType()`. */ hasType(type: MPImageStorageType): boolean { - if (type === MPImageStorageType.IMAGE_DATA) { - return !!this.imageData; - } else if (type === MPImageStorageType.IMAGE_BITMAP) { - return !!this.imageBitmap; - } else if (type === MPImageStorageType.WEBGL_TEXTURE) { - return !!this.webGLTexture; - } else { - throw new Error(`Type is not supported: ${type}`); - } + return !!this.getContainer(type); } + /** + * Returns the underlying image as a single channel `Uint8ClampedArray`. Note + * that this involves an expensive GPU to CPU transfer if the current image is + * only available as an `ImageBitmap` or `WebGLTexture`. If necessary, this + * function converts RGBA data pixel-by-pixel to a single channel value by + * invoking a conversion function (see class comment for detail). + * + * @param type The type of image to return. + * @param converter A set of conversion functions that will be invoked to + * convert the underlying pixel data if necessary. You may omit this + * function if the requested conversion does not change the pixel format. + * @return The current data as a Uint8ClampedArray. + */ + getImage( + type: MPImageStorageType.UINT8_CLAMPED_ARRAY, + converter?: MPImageChannelConverter): Uint8ClampedArray; + /** + * Returns the underlying image as a single channel `Float32Array`. Note + * that this involves an expensive GPU to CPU transfer if the current image is + * only available as an `ImageBitmap` or `WebGLTexture`. If necessary, this + * function converts RGBA data pixel-by-pixel to a single channel value by + * invoking a conversion function (see class comment for detail). + * + * @param type The type of image to return. + * @param converter A set of conversion functions that will be invoked to + * convert the underlying pixel data if necessary. You may omit this + * function if the requested conversion does not change the pixel format. + * @return The current image as a Float32Array. + */ + getImage( + type: MPImageStorageType.FLOAT32_ARRAY, + converter?: MPImageChannelConverter): Float32Array; /** * Returns the underlying image as an `ImageData` object. Note that this * involves an expensive GPU to CPU transfer if the current image is only - * available as an `ImageBitmap` or `WebGLTexture`. + * available as an `ImageBitmap` or `WebGLTexture`. If necessary, this + * function converts single channel pixel values to RGBA by invoking a + * conversion function (see class comment for detail). * * @return The current image as an ImageData object. */ - getImage(type: MPImageStorageType.IMAGE_DATA): ImageData; + getImage( + type: MPImageStorageType.IMAGE_DATA, + converter?: MPImageChannelConverter): ImageData; /** * Returns the underlying image as an `ImageBitmap`. Note that * conversions to `ImageBitmap` are expensive, especially if the data - * currently resides on CPU. + * currently resides on CPU. If necessary, this function first converts single + * channel pixel values to RGBA by invoking a conversion function (see class + * comment for detail). * * Processing with `ImageBitmap`s requires that the MediaPipe Task was * initialized with an `OffscreenCanvas` with WebGL2 support. See * https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas/getContext * for a list of supported platforms. * + * @param type The type of image to return. + * @param converter A set of conversion functions that will be invoked to + * convert the underlying pixel data if necessary. You may omit this + * function if the requested conversion does not change the pixel format. * @return The current image as an ImageBitmap object. */ - getImage(type: MPImageStorageType.IMAGE_BITMAP): ImageBitmap; + getImage( + type: MPImageStorageType.IMAGE_BITMAP, + converter?: MPImageChannelConverter): ImageBitmap; /** * Returns the underlying image as a `WebGLTexture` object. Note that this * involves a CPU to GPU transfer if the current image is only available as * an `ImageData` object. The returned texture is bound to the current * canvas (see `.canvas`). * + * @param type The type of image to return. + * @param converter A set of conversion functions that will be invoked to + * convert the underlying pixel data if necessary. You may omit this + * function if the requested conversion does not change the pixel format. * @return The current image as a WebGLTexture. */ - getImage(type: MPImageStorageType.WEBGL_TEXTURE): WebGLTexture; - getImage(type?: MPImageStorageType): MPImageNativeContainer { - if (type === MPImageStorageType.IMAGE_DATA) { - return this.convertToImageData(); - } else if (type === MPImageStorageType.IMAGE_BITMAP) { - return this.convertToImageBitmap(); - } else if (type === MPImageStorageType.WEBGL_TEXTURE) { - return this.convertToWebGLTexture(); - } else { - throw new Error(`Type is not supported: ${type}`); + getImage( + type: MPImageStorageType.WEBGL_TEXTURE, + converter?: MPImageChannelConverter): WebGLTexture; + getImage(type?: MPImageStorageType, converter?: MPImageChannelConverter): + MPImageNativeContainer { + const internalConverter = {...DEFAULT_CONVERTER, ...converter}; + switch (type) { + case MPImageStorageType.UINT8_CLAMPED_ARRAY: + return this.convertToUint8ClampedArray(internalConverter); + case MPImageStorageType.FLOAT32_ARRAY: + return this.convertToFloat32Array(internalConverter); + case MPImageStorageType.IMAGE_DATA: + return this.convertToImageData(internalConverter); + case MPImageStorageType.IMAGE_BITMAP: + return this.convertToImageBitmap(internalConverter); + case MPImageStorageType.WEBGL_TEXTURE: + return this.convertToWebGLTexture(internalConverter); + default: + throw new Error(`Type is not supported: ${type}`); + } + } + + + private getContainer(type: MPImageStorageType.UINT8_CLAMPED_ARRAY): + Uint8ClampedArray|undefined; + private getContainer(type: MPImageStorageType.FLOAT32_ARRAY): Float32Array + |undefined; + private getContainer(type: MPImageStorageType.IMAGE_DATA): ImageData + |undefined; + private getContainer(type: MPImageStorageType.IMAGE_BITMAP): ImageBitmap + |undefined; + private getContainer(type: MPImageStorageType.WEBGL_TEXTURE): WebGLTexture + |undefined; + private getContainer(type: MPImageStorageType): MPImageNativeContainer + |undefined; + /** Returns the container for the requested storage type iff it exists. */ + private getContainer(type: MPImageStorageType): MPImageNativeContainer + |undefined { + switch (type) { + case MPImageStorageType.UINT8_CLAMPED_ARRAY: + return this.containers.find(img => img instanceof Uint8ClampedArray); + case MPImageStorageType.FLOAT32_ARRAY: + return this.containers.find(img => img instanceof Float32Array); + case MPImageStorageType.IMAGE_DATA: + return this.containers.find(img => img instanceof ImageData); + case MPImageStorageType.IMAGE_BITMAP: + return this.containers.find(img => img instanceof ImageBitmap); + case MPImageStorageType.WEBGL_TEXTURE: + return this.containers.find(img => img instanceof WebGLTexture); + default: + throw new Error(`Type is not supported: ${type}`); } } @@ -355,58 +542,63 @@ export class MPImage { * avoided. */ clone(): MPImage { + const destinationContainers: MPImageNativeContainer[] = []; + // TODO: We might only want to clone one backing datastructure - // even if multiple are defined. - let destinationImageData: ImageData|null = null; - let destinationImageBitmap: ImageBitmap|null = null; - let destinationWebGLTexture: WebGLTexture|null = null; + // even if multiple are defined; + for (const container of this.containers) { + let destinationContainer: MPImageNativeContainer; - if (this.imageData) { - destinationImageData = - new ImageData(this.imageData.data, this.width, this.height); - } + if (container instanceof Uint8ClampedArray) { + destinationContainer = new Uint8ClampedArray(container); + } else if (container instanceof Float32Array) { + destinationContainer = new Float32Array(container); + } else if (container instanceof ImageData) { + destinationContainer = + new ImageData(container.data, this.width, this.height); + } else if (container instanceof WebGLTexture) { + const gl = this.getGL(); + const shaderContext = this.getShaderContext(); - if (this.webGLTexture) { - const gl = this.getGL(); - const shaderContext = this.getShaderContext(); + // Create a new texture and use it to back a framebuffer + gl.activeTexture(gl.TEXTURE1); + destinationContainer = + assertNotNull(gl.createTexture(), 'Failed to create texture'); + gl.bindTexture(gl.TEXTURE_2D, destinationContainer); - // Create a new texture and use it to back a framebuffer - gl.activeTexture(gl.TEXTURE1); - destinationWebGLTexture = - assertNotNull(gl.createTexture(), 'Failed to create texture'); - gl.bindTexture(gl.TEXTURE_2D, destinationWebGLTexture); + gl.texImage2D( + gl.TEXTURE_2D, 0, gl.RGBA, this.width, this.height, 0, gl.RGBA, + gl.UNSIGNED_BYTE, null); - gl.texImage2D( - gl.TEXTURE_2D, 0, gl.RGBA, this.width, this.height, 0, gl.RGBA, - gl.UNSIGNED_BYTE, null); + shaderContext.bindFramebuffer(gl, destinationContainer); + shaderContext.run(gl, /* flipVertically= */ false, () => { + this.bindTexture(); // This activates gl.TEXTURE0 + gl.clearColor(0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); + gl.drawArrays(gl.TRIANGLE_FAN, 0, 4); + this.unbindTexture(); + }); + shaderContext.unbindFramebuffer(); - shaderContext.bindFramebuffer(gl, destinationWebGLTexture); - shaderContext.run(gl, /* flipVertically= */ false, () => { - this.bindTexture(); // This activates gl.TEXTURE0 - gl.clearColor(0, 0, 0, 0); - gl.clear(gl.COLOR_BUFFER_BIT); - gl.drawArrays(gl.TRIANGLE_FAN, 0, 4); this.unbindTexture(); - }); - shaderContext.unbindFramebuffer(); + } else if (container instanceof ImageBitmap) { + this.convertToWebGLTexture(DEFAULT_CONVERTER); + this.bindTexture(); + destinationContainer = this.copyTextureToBitmap(); + this.unbindTexture(); + } else { + throw new Error(`Type is not supported: ${container}`); + } - this.unbindTexture(); - } - - if (this.imageBitmap) { - this.convertToWebGLTexture(); - this.bindTexture(); - destinationImageBitmap = this.copyTextureToBitmap(); - this.unbindTexture(); + destinationContainers.push(destinationContainer); } return new MPImage( - destinationImageData, destinationImageBitmap, destinationWebGLTexture, - !!destinationImageBitmap, !!destinationWebGLTexture, this.canvas, + destinationContainers, this.hasType(MPImageStorageType.IMAGE_BITMAP), + this.hasType(MPImageStorageType.WEBGL_TEXTURE), this.canvas, this.shaderContext, this.width, this.height); } - private getOffscreenCanvas(): OffscreenCanvas { if (!(this.canvas instanceof OffscreenCanvas)) { throw new Error( @@ -438,76 +630,166 @@ export class MPImage { return this.shaderContext; } - private convertToImageBitmap(): ImageBitmap { - if (!this.imageBitmap) { - if (!this.webGLTexture) { - this.webGLTexture = this.convertToWebGLTexture(); - } - this.imageBitmap = this.convertWebGLTextureToImageBitmap(); + private convertToImageBitmap(converter: Required): + ImageBitmap { + let imageBitmap = this.getContainer(MPImageStorageType.IMAGE_BITMAP); + if (!imageBitmap) { + this.convertToWebGLTexture(converter); + imageBitmap = this.convertWebGLTextureToImageBitmap(); + this.containers.push(imageBitmap); this.ownsImageBitmap = true; } - return this.imageBitmap; + return imageBitmap; } - private convertToImageData(): ImageData { - if (!this.imageData) { - const gl = this.getGL(); - const shaderContext = this.getShaderContext(); - const pixels = new Uint8Array(this.width * this.height * 4); + private convertToImageData(converter: Required): + ImageData { + let imageData = this.getContainer(MPImageStorageType.IMAGE_DATA); + if (!imageData) { + if (this.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)) { + const source = + this.getContainer(MPImageStorageType.UINT8_CLAMPED_ARRAY)!; + const destination = new Uint8ClampedArray(this.width * this.height * 4); + for (let i = 0; i < this.width * this.height; i++) { + const rgba = converter.uint8ToRGBAConverter(source[i]); + destination[i * 4] = rgba[0]; + destination[i * 4 + 1] = rgba[1]; + destination[i * 4 + 2] = rgba[2]; + destination[i * 4 + 3] = rgba[3]; + } + imageData = new ImageData(destination, this.width, this.height); + this.containers.push(imageData); + } else if (this.hasType(MPImageStorageType.FLOAT32_ARRAY)) { + const source = this.getContainer(MPImageStorageType.FLOAT32_ARRAY)!; + const destination = new Uint8ClampedArray(this.width * this.height * 4); + for (let i = 0; i < this.width * this.height; i++) { + const rgba = converter.floatToRGBAConverter(source[i]); + destination[i * 4] = rgba[0]; + destination[i * 4 + 1] = rgba[1]; + destination[i * 4 + 2] = rgba[2]; + destination[i * 4 + 3] = rgba[3]; + } + imageData = new ImageData(destination, this.width, this.height); + this.containers.push(imageData); + } else if ( + this.hasType(MPImageStorageType.IMAGE_BITMAP) || + this.hasType(MPImageStorageType.WEBGL_TEXTURE)) { + const gl = this.getGL(); + const shaderContext = this.getShaderContext(); + const pixels = new Uint8Array(this.width * this.height * 4); - // Create texture if needed - this.convertToWebGLTexture(); + // Create texture if needed + const webGlTexture = this.convertToWebGLTexture(converter); - // Create a framebuffer from the texture and read back pixels - shaderContext.bindFramebuffer(gl, this.webGLTexture!); - gl.readPixels( - 0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); - shaderContext.unbindFramebuffer(); + // Create a framebuffer from the texture and read back pixels + shaderContext.bindFramebuffer(gl, webGlTexture); + gl.readPixels( + 0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + shaderContext.unbindFramebuffer(); - this.imageData = new ImageData( - new Uint8ClampedArray(pixels.buffer), this.width, this.height); + imageData = new ImageData( + new Uint8ClampedArray(pixels.buffer), this.width, this.height); + this.containers.push(imageData); + } else { + throw new Error('Couldn\t find backing image for ImageData conversion'); + } } - return this.imageData; + return imageData; } - private convertToWebGLTexture(): WebGLTexture { - if (!this.webGLTexture) { + private convertToUint8ClampedArray( + converter: Required): Uint8ClampedArray { + let uint8ClampedArray = + this.getContainer(MPImageStorageType.UINT8_CLAMPED_ARRAY); + if (!uint8ClampedArray) { + if (this.hasType(MPImageStorageType.FLOAT32_ARRAY)) { + const source = this.getContainer(MPImageStorageType.FLOAT32_ARRAY)!; + uint8ClampedArray = new Uint8ClampedArray( + source.map(v => converter.floatToUint8Converter(v))); + } else { + const source = this.convertToImageData(converter).data; + uint8ClampedArray = new Uint8ClampedArray(this.width * this.height); + for (let i = 0; i < this.width * this.height; i++) { + uint8ClampedArray[i] = converter.rgbaToUint8Converter( + source[i * 4], source[i * 4 + 1], source[i * 4 + 2], + source[i * 4 + 3]); + } + } + this.containers.push(uint8ClampedArray); + } + + return uint8ClampedArray; + } + + private convertToFloat32Array(converter: Required): + Float32Array { + let float32Array = this.getContainer(MPImageStorageType.FLOAT32_ARRAY); + if (!float32Array) { + if (this.hasType(MPImageStorageType.UINT8_CLAMPED_ARRAY)) { + const source = + this.getContainer(MPImageStorageType.UINT8_CLAMPED_ARRAY)!; + float32Array = new Float32Array(source).map( + v => converter.uint8ToFloatConverter(v)); + } else { + const source = this.convertToImageData(converter).data; + float32Array = new Float32Array(this.width * this.height); + for (let i = 0; i < this.width * this.height; i++) { + float32Array[i] = converter.rgbaToFloatConverter( + source[i * 4], source[i * 4 + 1], source[i * 4 + 2], + source[i * 4 + 3]); + } + } + this.containers.push(float32Array); + } + + return float32Array; + } + + private convertToWebGLTexture(converter: Required): + WebGLTexture { + let webGLTexture = this.getContainer(MPImageStorageType.WEBGL_TEXTURE); + if (!webGLTexture) { const gl = this.getGL(); - this.bindTexture(); - const source = (this.imageBitmap || this.imageData)!; + webGLTexture = this.bindTexture(); + const source = this.getContainer(MPImageStorageType.IMAGE_BITMAP) || + this.convertToImageData(converter); gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source); this.unbindTexture(); } - return this.webGLTexture!; + return webGLTexture; } /** * Binds the backing texture to the canvas. If the texture does not yet * exist, creates it first. */ - private bindTexture() { + private bindTexture(): WebGLTexture { const gl = this.getGL(); gl.viewport(0, 0, this.width, this.height); - gl.activeTexture(gl.TEXTURE0); - if (!this.webGLTexture) { - this.webGLTexture = + + let webGLTexture = this.getContainer(MPImageStorageType.WEBGL_TEXTURE); + if (!webGLTexture) { + webGLTexture = assertNotNull(gl.createTexture(), 'Failed to create texture'); + this.containers.push(webGLTexture); this.ownsWebGLTexture = true; } - gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture); + gl.bindTexture(gl.TEXTURE_2D, webGLTexture); // TODO: Ideally, we would only set these once per texture and // not once every frame. gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + + return webGLTexture; } private unbindTexture(): void { @@ -581,15 +863,12 @@ export class MPImage { */ close(): void { if (this.ownsImageBitmap) { - this.imageBitmap!.close(); - } - - if (!this.gl) { - return; + this.getContainer(MPImageStorageType.IMAGE_BITMAP)!.close(); } if (this.ownsWebGLTexture) { - this.gl.deleteTexture(this.webGLTexture!); + const gl = this.getGL(); + gl.deleteTexture(this.getContainer(MPImageStorageType.WEBGL_TEXTURE)!); } } } diff --git a/mediapipe/tasks/web/vision/core/image_processing_options.d.ts b/mediapipe/tasks/web/vision/core/image_processing_options.d.ts index b7673154..9d463591 100644 --- a/mediapipe/tasks/web/vision/core/image_processing_options.d.ts +++ b/mediapipe/tasks/web/vision/core/image_processing_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/core/render_utils.ts b/mediapipe/tasks/web/vision/core/render_utils.ts index 903d789f..13af6176 100644 --- a/mediapipe/tasks/web/vision/core/render_utils.ts +++ b/mediapipe/tasks/web/vision/core/render_utils.ts @@ -1,7 +1,7 @@ /** @fileoverview Utility functions used in the vision demos. */ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/core/types.d.ts b/mediapipe/tasks/web/vision/core/types.d.ts index 344d4db8..1cc2e36f 100644 --- a/mediapipe/tasks/web/vision/core/types.d.ts +++ b/mediapipe/tasks/web/vision/core/types.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,16 +25,6 @@ import {NormalizedKeypoint} from '../../../../tasks/web/components/containers/ke */ export type SegmentationMask = Uint8ClampedArray|Float32Array|WebGLTexture; -/** - * A callback that receives an `ImageData` object from a Vision task. The - * lifetime of the underlying data is limited to the duration of the callback. - * If asynchronous processing is needed, all data needs to be copied before the - * callback returns. - * - * The `WebGLTexture` output type is reserved for future usage. - */ -export type ImageCallback = - (image: ImageData|WebGLTexture, width: number, height: number) => void; /** A Region-Of-Interest (ROI) to represent a region within an image. */ export declare interface RegionOfInterest { diff --git a/mediapipe/tasks/web/vision/core/vision_task_options.d.ts b/mediapipe/tasks/web/vision/core/vision_task_options.d.ts index a45efd6d..67792180 100644 --- a/mediapipe/tasks/web/vision/core/vision_task_options.d.ts +++ b/mediapipe/tasks/web/vision/core/vision_task_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/core/vision_task_runner.test.ts b/mediapipe/tasks/web/vision/core/vision_task_runner.test.ts index f45035b6..c8be900c 100644 --- a/mediapipe/tasks/web/vision/core/vision_task_runner.test.ts +++ b/mediapipe/tasks/web/vision/core/vision_task_runner.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/core/vision_task_runner.ts b/mediapipe/tasks/web/vision/core/vision_task_runner.ts index b815a24d..a79cee55 100644 --- a/mediapipe/tasks/web/vision/core/vision_task_runner.ts +++ b/mediapipe/tasks/web/vision/core/vision_task_runner.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_detector/face_detector.ts b/mediapipe/tasks/web/vision/face_detector/face_detector.ts index 039f7dd4..d9a69037 100644 --- a/mediapipe/tasks/web/vision/face_detector/face_detector.ts +++ b/mediapipe/tasks/web/vision/face_detector/face_detector.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_detector/face_detector_options.d.ts b/mediapipe/tasks/web/vision/face_detector/face_detector_options.d.ts index 665035f7..d2539ecb 100644 --- a/mediapipe/tasks/web/vision/face_detector/face_detector_options.d.ts +++ b/mediapipe/tasks/web/vision/face_detector/face_detector_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_detector/face_detector_result.d.ts b/mediapipe/tasks/web/vision/face_detector/face_detector_result.d.ts index 6a36559f..5e52bb98 100644 --- a/mediapipe/tasks/web/vision/face_detector/face_detector_result.d.ts +++ b/mediapipe/tasks/web/vision/face_detector/face_detector_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_detector/face_detector_test.ts b/mediapipe/tasks/web/vision/face_detector/face_detector_test.ts index 88dd20d2..28f60296 100644 --- a/mediapipe/tasks/web/vision/face_detector/face_detector_test.ts +++ b/mediapipe/tasks/web/vision/face_detector/face_detector_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,6 +66,10 @@ describe('FaceDetector', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + faceDetector.close(); + }); + it('initializes graph', async () => { verifyGraph(faceDetector); verifyListenersRegistered(faceDetector); diff --git a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker.ts b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker.ts index 2a30f060..c0122da2 100644 --- a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker.ts +++ b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_options.d.ts b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_options.d.ts index f537ca2f..67739b89 100644 --- a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_options.d.ts +++ b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_result.d.ts b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_result.d.ts index 123c0a82..4bbe3b0c 100644 --- a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_result.d.ts +++ b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_test.ts b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_test.ts index b590b4a4..7070d1dd 100644 --- a/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_test.ts +++ b/mediapipe/tasks/web/vision/face_landmarker/face_landmarker_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -94,6 +94,10 @@ describe('FaceLandmarker', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + faceLandmarker.close(); + }); + it('initializes graph', async () => { verifyGraph(faceLandmarker); verifyListenersRegistered(faceLandmarker); diff --git a/mediapipe/tasks/web/vision/face_landmarker/face_landmarks_connections.ts b/mediapipe/tasks/web/vision/face_landmarker/face_landmarks_connections.ts index 337f663e..9bd4b1b9 100644 --- a/mediapipe/tasks/web/vision/face_landmarker/face_landmarks_connections.ts +++ b/mediapipe/tasks/web/vision/face_landmarker/face_landmarks_connections.ts @@ -1,5 +1,5 @@ /** - * CopyRIGHT 2023 The MediaPipe Authors. All RIGHTs Reserved. + * CopyRIGHT 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer.ts b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer.ts index dfce0303..13558e23 100644 --- a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer.ts +++ b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,6 @@ import {BaseOptions as BaseOptionsProto} from '../../../../tasks/cc/core/proto/b import {FaceStylizerGraphOptions as FaceStylizerGraphOptionsProto} from '../../../../tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options_pb'; import {WasmFileset} from '../../../../tasks/web/core/wasm_fileset'; import {ImageProcessingOptions} from '../../../../tasks/web/vision/core/image_processing_options'; -import {ImageCallback} from '../../../../tasks/web/vision/core/types'; import {VisionGraphRunner, VisionTaskRunner} from '../../../../tasks/web/vision/core/vision_task_runner'; import {ImageSource, WasmModule} from '../../../../web/graph_runner/graph_runner'; // Placeholder for internal dependency on trusted resource url @@ -39,11 +38,20 @@ const FACE_STYLIZER_GRAPH = // The OSS JS API does not support the builder pattern. // tslint:disable:jspb-use-builder-pattern -export {ImageCallback}; +/** + * A callback that receives an image from the face stylizer, or `null` if no + * face was detected. The lifetime of the underlying data is limited to the + * duration of the callback. If asynchronous processing is needed, all data + * needs to be copied before the callback returns. + * + * The `WebGLTexture` output type is reserved for future usage. + */ +export type FaceStylizerCallback = + (image: ImageData|WebGLTexture|null, width: number, height: number) => void; /** Performs face stylization on images. */ export class FaceStylizer extends VisionTaskRunner { - private userCallback: ImageCallback = () => {}; + private userCallback: FaceStylizerCallback = () => {}; private readonly options: FaceStylizerGraphOptionsProto; /** @@ -134,7 +142,7 @@ export class FaceStylizer extends VisionTaskRunner { * lifetime of the returned data is only guaranteed for the duration of the * callback. */ - stylize(image: ImageSource, callback: ImageCallback): void; + stylize(image: ImageSource, callback: FaceStylizerCallback): void; /** * Performs face stylization on the provided single image. The method returns * synchronously once the callback returns. Only use this method when the @@ -158,11 +166,12 @@ export class FaceStylizer extends VisionTaskRunner { */ stylize( image: ImageSource, imageProcessingOptions: ImageProcessingOptions, - callback: ImageCallback): void; + callback: FaceStylizerCallback): void; stylize( image: ImageSource, - imageProcessingOptionsOrCallback: ImageProcessingOptions|ImageCallback, - callback?: ImageCallback): void { + imageProcessingOptionsOrCallback: ImageProcessingOptions| + FaceStylizerCallback, + callback?: FaceStylizerCallback): void { const imageProcessingOptions = typeof imageProcessingOptionsOrCallback !== 'function' ? imageProcessingOptionsOrCallback : @@ -191,7 +200,7 @@ export class FaceStylizer extends VisionTaskRunner { */ stylizeForVideo( videoFrame: ImageSource, timestamp: number, - callback: ImageCallback): void; + callback: FaceStylizerCallback): void; /** * Performs face stylization on the provided video frame. Only use this * method when the FaceStylizer is created with the video running mode. @@ -219,12 +228,12 @@ export class FaceStylizer extends VisionTaskRunner { */ stylizeForVideo( videoFrame: ImageSource, imageProcessingOptions: ImageProcessingOptions, - timestamp: number, callback: ImageCallback): void; + timestamp: number, callback: FaceStylizerCallback): void; stylizeForVideo( videoFrame: ImageSource, timestampOrImageProcessingOptions: number|ImageProcessingOptions, - timestampOrCallback: number|ImageCallback, - callback?: ImageCallback): void { + timestampOrCallback: number|FaceStylizerCallback, + callback?: FaceStylizerCallback): void { const imageProcessingOptions = typeof timestampOrImageProcessingOptions !== 'number' ? timestampOrImageProcessingOptions : @@ -272,6 +281,7 @@ export class FaceStylizer extends VisionTaskRunner { }); this.graphRunner.attachEmptyPacketListener( STYLIZED_IMAGE_STREAM, timestamp => { + this.userCallback(null, /* width= */ 0, /* height= */ 0); this.setLatestOutputTimestamp(timestamp); }); diff --git a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_options.d.ts b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_options.d.ts index 38f5028c..73942bad 100644 --- a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_options.d.ts +++ b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_test.ts b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_test.ts index 72d54079..167fd674 100644 --- a/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_test.ts +++ b/mediapipe/tasks/web/vision/face_stylizer/face_stylizer_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ class FaceStylizerFake extends FaceStylizer implements MediapipeTasksFake { fakeWasmModule: SpyWasmModule; imageListener: ((images: WasmImage, timestamp: number) => void)|undefined; + emptyPacketListener: ((timestamp: number) => void)|undefined; constructor() { super(createSpyWasmModule(), /* glCanvas= */ null); @@ -42,6 +43,12 @@ class FaceStylizerFake extends FaceStylizer implements MediapipeTasksFake { expect(stream).toEqual('stylized_image'); this.imageListener = listener; }); + this.attachListenerSpies[1] = + spyOn(this.graphRunner, 'attachEmptyPacketListener') + .and.callFake((stream, listener) => { + expect(stream).toEqual('stylized_image'); + this.emptyPacketListener = listener; + }); spyOn(this.graphRunner, 'setGraph').and.callFake(binaryGraph => { this.graph = CalculatorGraphConfig.deserializeBinary(binaryGraph); }); @@ -59,6 +66,10 @@ describe('FaceStylizer', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + faceStylizer.close(); + }); + it('initializes graph', async () => { verifyGraph(faceStylizer); verifyListenersRegistered(faceStylizer); @@ -111,4 +122,21 @@ describe('FaceStylizer', () => { done(); }); }); + + it('invokes callback even when no faes are detected', (done) => { + // Pass the test data to our listener + faceStylizer.fakeWasmModule._waitUntilIdle.and.callFake(() => { + verifyListenersRegistered(faceStylizer); + faceStylizer.emptyPacketListener!(/* timestamp= */ 1337); + }); + + // Invoke the face stylizeer + faceStylizer.stylize({} as HTMLImageElement, (image, width, height) => { + expect(faceStylizer.fakeWasmModule._waitUntilIdle).toHaveBeenCalled(); + expect(image).toBeNull(); + expect(width).toEqual(0); + expect(height).toEqual(0); + done(); + }); + }); }); diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts index df9c9128..806a794f 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts index 9e9728af..3a5b0b5d 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts index 32329000..f3dadf41 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_test.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_test.ts index 2331f5e2..95ba06cc 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_test.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -113,6 +113,10 @@ describe('GestureRecognizer', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + gestureRecognizer.close(); + }); + it('initializes graph', async () => { verifyGraph(gestureRecognizer); verifyListenersRegistered(gestureRecognizer); diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmark.d.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmark.d.ts index ca2543f7..37d3c747 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmark.d.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmark.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker.ts index 2d2d05f9..6def4fb8 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_options.d.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_options.d.ts index fe79b708..2fde24be 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_options.d.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_result.d.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_result.d.ts index dc0f2fe0..69bf6a78 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_result.d.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_test.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_test.ts index f439e66e..91cba1f1 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_test.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarker_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -83,6 +83,10 @@ describe('HandLandmarker', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + handLandmarker.close(); + }); + it('initializes graph', async () => { verifyGraph(handLandmarker); verifyListenersRegistered(handLandmarker); diff --git a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarks_connections.ts b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarks_connections.ts index edb789c8..c5195ef3 100644 --- a/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarks_connections.ts +++ b/mediapipe/tasks/web/vision/hand_landmarker/hand_landmarks_connections.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier.ts index 5cd69081..60a097c6 100644 --- a/mediapipe/tasks/web/vision/image_classifier/image_classifier.ts +++ b/mediapipe/tasks/web/vision/image_classifier/image_classifier.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts index e99dd2b6..b3f37764 100644 --- a/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts +++ b/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts index 44032234..3a30a93b 100644 --- a/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts +++ b/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier_test.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier_test.ts index 7058e2a5..889de4bc 100644 --- a/mediapipe/tasks/web/vision/image_classifier/image_classifier_test.ts +++ b/mediapipe/tasks/web/vision/image_classifier/image_classifier_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,6 +66,10 @@ describe('ImageClassifier', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + imageClassifier.close(); + }); + it('initializes graph', async () => { verifyGraph(imageClassifier); verifyListenersRegistered(imageClassifier); diff --git a/mediapipe/tasks/web/vision/image_embedder/image_embedder.ts b/mediapipe/tasks/web/vision/image_embedder/image_embedder.ts index 229647e4..7900746a 100644 --- a/mediapipe/tasks/web/vision/image_embedder/image_embedder.ts +++ b/mediapipe/tasks/web/vision/image_embedder/image_embedder.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_embedder/image_embedder_options.d.ts b/mediapipe/tasks/web/vision/image_embedder/image_embedder_options.d.ts index 8a04be5e..b43af6be 100644 --- a/mediapipe/tasks/web/vision/image_embedder/image_embedder_options.d.ts +++ b/mediapipe/tasks/web/vision/image_embedder/image_embedder_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_embedder/image_embedder_result.d.ts b/mediapipe/tasks/web/vision/image_embedder/image_embedder_result.d.ts index 15663650..ee7c7092 100644 --- a/mediapipe/tasks/web/vision/image_embedder/image_embedder_result.d.ts +++ b/mediapipe/tasks/web/vision/image_embedder/image_embedder_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_embedder/image_embedder_test.ts b/mediapipe/tasks/web/vision/image_embedder/image_embedder_test.ts index 5a8293c4..6aa6f11c 100644 --- a/mediapipe/tasks/web/vision/image_embedder/image_embedder_test.ts +++ b/mediapipe/tasks/web/vision/image_embedder/image_embedder_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,6 +62,10 @@ describe('ImageEmbedder', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + imageEmbedder.close(); + }); + it('initializes graph', async () => { verifyGraph(imageEmbedder); verifyListenersRegistered(imageEmbedder); diff --git a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter.ts b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter.ts index c32423e1..4089a2b1 100644 --- a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter.ts +++ b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_options.d.ts b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_options.d.ts index f80a792a..5e7fe7a4 100644 --- a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_options.d.ts +++ b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_result.d.ts b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_result.d.ts index be082d51..b731e032 100644 --- a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_result.d.ts +++ b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_test.ts b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_test.ts index 6b5c9008..1327c1b3 100644 --- a/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_test.ts +++ b/mediapipe/tasks/web/vision/image_segmenter/image_segmenter_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -68,6 +68,10 @@ describe('ImageSegmenter', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + imageSegmenter.close(); + }); + it('initializes graph', async () => { verifyGraph(imageSegmenter); diff --git a/mediapipe/tasks/web/vision/index.ts b/mediapipe/tasks/web/vision/index.ts index c4adab7e..2ea0e727 100644 --- a/mediapipe/tasks/web/vision/index.ts +++ b/mediapipe/tasks/web/vision/index.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import {ImageEmbedder as ImageEmbedderImpl} from '../../../tasks/web/vision/imag import {ImageSegmenter as ImageSegementerImpl} from '../../../tasks/web/vision/image_segmenter/image_segmenter'; import {InteractiveSegmenter as InteractiveSegmenterImpl} from '../../../tasks/web/vision/interactive_segmenter/interactive_segmenter'; import {ObjectDetector as ObjectDetectorImpl} from '../../../tasks/web/vision/object_detector/object_detector'; +import {PoseLandmarker as PoseLandmarkerImpl} from '../../../tasks/web/vision/pose_landmarker/pose_landmarker'; // Declare the variables locally so that Rollup in OSS includes them explicitly // as exports. @@ -44,6 +45,7 @@ const ImageEmbedder = ImageEmbedderImpl; const ImageSegmenter = ImageSegementerImpl; const InteractiveSegmenter = InteractiveSegmenterImpl; const ObjectDetector = ObjectDetectorImpl; +const PoseLandmarker = PoseLandmarkerImpl; export { DrawingUtils, @@ -59,5 +61,6 @@ export { ImageEmbedder, ImageSegmenter, InteractiveSegmenter, - ObjectDetector + ObjectDetector, + PoseLandmarker }; diff --git a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter.ts b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter.ts index df00b2ce..70d2c1f4 100644 --- a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter.ts +++ b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_options.d.ts b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_options.d.ts index 269403d9..952a5190 100644 --- a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_options.d.ts +++ b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_result.d.ts b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_result.d.ts index f7e1f3a1..f1f134a7 100644 --- a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_result.d.ts +++ b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_test.ts b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_test.ts index 884be032..0a947760 100644 --- a/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_test.ts +++ b/mediapipe/tasks/web/vision/interactive_segmenter/interactive_segmenter_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -84,6 +84,10 @@ describe('InteractiveSegmenter', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + interactiveSegmenter.close(); + }); + it('initializes graph', async () => { verifyGraph(interactiveSegmenter); diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector.ts b/mediapipe/tasks/web/vision/object_detector/object_detector.ts index 5d406f1a..7bfcc0f0 100644 --- a/mediapipe/tasks/web/vision/object_detector/object_detector.ts +++ b/mediapipe/tasks/web/vision/object_detector/object_detector.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts b/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts index 7564e776..d0ead197 100644 --- a/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts +++ b/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts b/mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts index 54bc6f90..531fef59 100644 --- a/mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts +++ b/mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector_test.ts b/mediapipe/tasks/web/vision/object_detector/object_detector_test.ts index 18e4a206..1613f27d 100644 --- a/mediapipe/tasks/web/vision/object_detector/object_detector_test.ts +++ b/mediapipe/tasks/web/vision/object_detector/object_detector_test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,6 +66,10 @@ describe('ObjectDetector', () => { {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); }); + afterEach(() => { + objectDetector.close(); + }); + it('initializes graph', async () => { verifyGraph(objectDetector); verifyListenersRegistered(objectDetector); diff --git a/mediapipe/tasks/web/vision/pose_landmarker/BUILD b/mediapipe/tasks/web/vision/pose_landmarker/BUILD new file mode 100644 index 00000000..932fce8b --- /dev/null +++ b/mediapipe/tasks/web/vision/pose_landmarker/BUILD @@ -0,0 +1,73 @@ +# This contains the MediaPipe Pose Landmarker Task. +# +# This task takes video frames and outputs synchronized frames along with +# the detection results for one or more pose categories, using Pose Landmarker. + +load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration", "mediapipe_ts_library") +load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") + +package(default_visibility = ["//mediapipe/tasks:internal"]) + +licenses(["notice"]) + +mediapipe_ts_library( + name = "pose_landmarker", + srcs = ["pose_landmarker.ts"], + visibility = ["//visibility:public"], + deps = [ + ":pose_landmarker_types", + "//mediapipe/framework:calculator_jspb_proto", + "//mediapipe/framework:calculator_options_jspb_proto", + "//mediapipe/framework/formats:landmark_jspb_proto", + "//mediapipe/tasks/cc/core/proto:base_options_jspb_proto", + "//mediapipe/tasks/cc/vision/pose_detector/proto:pose_detector_graph_options_jspb_proto", + "//mediapipe/tasks/cc/vision/pose_landmarker/proto:pose_landmarker_graph_options_jspb_proto", + "//mediapipe/tasks/cc/vision/pose_landmarker/proto:pose_landmarks_detector_graph_options_jspb_proto", + "//mediapipe/tasks/web/components/containers:category", + "//mediapipe/tasks/web/components/containers:landmark", + "//mediapipe/tasks/web/components/processors:landmark_result", + "//mediapipe/tasks/web/core", + "//mediapipe/tasks/web/vision/core:image_processing_options", + "//mediapipe/tasks/web/vision/core:types", + "//mediapipe/tasks/web/vision/core:vision_task_runner", + "//mediapipe/web/graph_runner:graph_runner_ts", + ], +) + +mediapipe_ts_declaration( + name = "pose_landmarker_types", + srcs = [ + "pose_landmarker_options.d.ts", + "pose_landmarker_result.d.ts", + ], + visibility = ["//visibility:public"], + deps = [ + "//mediapipe/tasks/web/components/containers:category", + "//mediapipe/tasks/web/components/containers:landmark", + "//mediapipe/tasks/web/core", + "//mediapipe/tasks/web/vision/core:vision_task_options", + ], +) + +mediapipe_ts_library( + name = "pose_landmarker_test_lib", + testonly = True, + srcs = [ + "pose_landmarker_test.ts", + ], + deps = [ + ":pose_landmarker", + ":pose_landmarker_types", + "//mediapipe/framework:calculator_jspb_proto", + "//mediapipe/tasks/web/components/processors:landmark_result", + "//mediapipe/tasks/web/core", + "//mediapipe/tasks/web/core:task_runner_test_utils", + "//mediapipe/tasks/web/vision/core:vision_task_runner", + ], +) + +jasmine_node_test( + name = "pose_landmarker_test", + tags = ["nomsan"], + deps = [":pose_landmarker_test_lib"], +) diff --git a/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker.ts b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker.ts new file mode 100644 index 00000000..0b119780 --- /dev/null +++ b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker.ts @@ -0,0 +1,434 @@ +/** + * Copyright 2023 The MediaPipe Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {CalculatorGraphConfig} from '../../../../framework/calculator_pb'; +import {CalculatorOptions} from '../../../../framework/calculator_options_pb'; +import {LandmarkList, NormalizedLandmarkList} from '../../../../framework/formats/landmark_pb'; +import {BaseOptions as BaseOptionsProto} from '../../../../tasks/cc/core/proto/base_options_pb'; +import {PoseDetectorGraphOptions} from '../../../../tasks/cc/vision/pose_detector/proto/pose_detector_graph_options_pb'; +import {PoseLandmarkerGraphOptions} from '../../../../tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options_pb'; +import {PoseLandmarksDetectorGraphOptions} from '../../../../tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options_pb'; +import {convertToLandmarks, convertToWorldLandmarks} from '../../../../tasks/web/components/processors/landmark_result'; +import {WasmFileset} from '../../../../tasks/web/core/wasm_fileset'; +import {ImageProcessingOptions} from '../../../../tasks/web/vision/core/image_processing_options'; +import {Connection} from '../../../../tasks/web/vision/core/types'; +import {VisionGraphRunner, VisionTaskRunner} from '../../../../tasks/web/vision/core/vision_task_runner'; +import {ImageSource, WasmModule} from '../../../../web/graph_runner/graph_runner'; +// Placeholder for internal dependency on trusted resource url + +import {PoseLandmarkerOptions} from './pose_landmarker_options'; +import {PoseLandmarkerResult} from './pose_landmarker_result'; + +export * from './pose_landmarker_options'; +export * from './pose_landmarker_result'; +export {ImageSource}; + +// The OSS JS API does not support the builder pattern. +// tslint:disable:jspb-use-builder-pattern + +const IMAGE_STREAM = 'image_in'; +const NORM_RECT_STREAM = 'norm_rect'; +const NORM_LANDMARKS_STREAM = 'normalized_landmarks'; +const WORLD_LANDMARKS_STREAM = 'world_landmarks'; +const AUXILIARY_LANDMARKS_STREAM = 'auxiliary_landmarks'; +const SEGMENTATION_MASK_STREAM = 'segmentation_masks'; +const POSE_LANDMARKER_GRAPH = + 'mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph'; + +const DEFAULT_NUM_POSES = 1; +const DEFAULT_SCORE_THRESHOLD = 0.5; +const DEFAULT_OUTPUT_SEGMANTATION_MASKS = false; + +/** + * A callback that receives the result from the pose detector. The returned + * masks are only valid for the duration of the callback. If asynchronous + * processing is needed, the masks need to be copied before the callback + * returns. + */ +export type PoseLandmarkerCallback = (result: PoseLandmarkerResult) => void; + +/** Performs pose landmarks detection on images. */ +export class PoseLandmarker extends VisionTaskRunner { + private result: PoseLandmarkerResult = { + landmarks: [], + worldLandmarks: [], + auxilaryLandmarks: [] + }; + private outputSegmentationMasks = false; + private readonly options: PoseLandmarkerGraphOptions; + private readonly poseLandmarksDetectorGraphOptions: + PoseLandmarksDetectorGraphOptions; + private readonly poseDetectorGraphOptions: PoseDetectorGraphOptions; + + /** + * An array containing the pairs of pose landmark indices to be rendered with + * connections. + */ + static POSE_CONNECTIONS: Connection[] = [ + {start: 0, end: 1}, {start: 1, end: 2}, {start: 2, end: 3}, + {start: 3, end: 7}, {start: 0, end: 4}, {start: 4, end: 5}, + {start: 5, end: 6}, {start: 6, end: 8}, {start: 9, end: 10}, + {start: 11, end: 12}, {start: 11, end: 13}, {start: 13, end: 15}, + {start: 15, end: 17}, {start: 15, end: 19}, {start: 15, end: 21}, + {start: 17, end: 19}, {start: 12, end: 14}, {start: 14, end: 16}, + {start: 16, end: 18}, {start: 16, end: 20}, {start: 16, end: 22}, + {start: 18, end: 20}, {start: 11, end: 23}, {start: 12, end: 24}, + {start: 23, end: 24}, {start: 23, end: 25}, {start: 24, end: 26}, + {start: 25, end: 27}, {start: 26, end: 28}, {start: 27, end: 29}, + {start: 28, end: 30}, {start: 29, end: 31}, {start: 30, end: 32}, + {start: 27, end: 31}, {start: 28, end: 32} + ]; + + /** + * Initializes the Wasm runtime and creates a new `PoseLandmarker` from the + * provided options. + * @param wasmFileset A configuration object that provides the location of the + * Wasm binary and its loader. + * @param poseLandmarkerOptions The options for the PoseLandmarker. + * Note that either a path to the model asset or a model buffer needs to + * be provided (via `baseOptions`). + */ + static createFromOptions( + wasmFileset: WasmFileset, + poseLandmarkerOptions: PoseLandmarkerOptions): Promise { + return VisionTaskRunner.createVisionInstance( + PoseLandmarker, wasmFileset, poseLandmarkerOptions); + } + + /** + * Initializes the Wasm runtime and creates a new `PoseLandmarker` based on + * the provided model asset buffer. + * @param wasmFileset A configuration object that provides the location of the + * Wasm binary and its loader. + * @param modelAssetBuffer A binary representation of the model. + */ + static createFromModelBuffer( + wasmFileset: WasmFileset, + modelAssetBuffer: Uint8Array): Promise { + return VisionTaskRunner.createVisionInstance( + PoseLandmarker, wasmFileset, {baseOptions: {modelAssetBuffer}}); + } + + /** + * Initializes the Wasm runtime and creates a new `PoseLandmarker` based on + * the path to the model asset. + * @param wasmFileset A configuration object that provides the location of the + * Wasm binary and its loader. + * @param modelAssetPath The path to the model asset. + */ + static createFromModelPath( + wasmFileset: WasmFileset, + modelAssetPath: string): Promise { + return VisionTaskRunner.createVisionInstance( + PoseLandmarker, wasmFileset, {baseOptions: {modelAssetPath}}); + } + + /** @hideconstructor */ + constructor( + wasmModule: WasmModule, + glCanvas?: HTMLCanvasElement|OffscreenCanvas|null) { + super( + new VisionGraphRunner(wasmModule, glCanvas), IMAGE_STREAM, + NORM_RECT_STREAM, /* roiAllowed= */ false); + + this.options = new PoseLandmarkerGraphOptions(); + this.options.setBaseOptions(new BaseOptionsProto()); + this.poseLandmarksDetectorGraphOptions = + new PoseLandmarksDetectorGraphOptions(); + this.options.setPoseLandmarksDetectorGraphOptions( + this.poseLandmarksDetectorGraphOptions); + this.poseDetectorGraphOptions = new PoseDetectorGraphOptions(); + this.options.setPoseDetectorGraphOptions(this.poseDetectorGraphOptions); + + this.initDefaults(); + } + + protected override get baseOptions(): BaseOptionsProto { + return this.options.getBaseOptions()!; + } + + protected override set baseOptions(proto: BaseOptionsProto) { + this.options.setBaseOptions(proto); + } + + /** + * Sets new options for this `PoseLandmarker`. + * + * Calling `setOptions()` with a subset of options only affects those options. + * You can reset an option back to its default value by explicitly setting it + * to `undefined`. + * + * @param options The options for the pose landmarker. + */ + override setOptions(options: PoseLandmarkerOptions): Promise { + // Configure pose detector options. + if ('numPoses' in options) { + this.poseDetectorGraphOptions.setNumPoses( + options.numPoses ?? DEFAULT_NUM_POSES); + } + if ('minPoseDetectionConfidence' in options) { + this.poseDetectorGraphOptions.setMinDetectionConfidence( + options.minPoseDetectionConfidence ?? DEFAULT_SCORE_THRESHOLD); + } + + // Configure pose landmark detector options. + if ('minTrackingConfidence' in options) { + this.options.setMinTrackingConfidence( + options.minTrackingConfidence ?? DEFAULT_SCORE_THRESHOLD); + } + if ('minPosePresenceConfidence' in options) { + this.poseLandmarksDetectorGraphOptions.setMinDetectionConfidence( + options.minPosePresenceConfidence ?? DEFAULT_SCORE_THRESHOLD); + } + + if ('outputSegmentationMasks' in options) { + this.outputSegmentationMasks = + options.outputSegmentationMasks ?? DEFAULT_OUTPUT_SEGMANTATION_MASKS; + } + + return this.applyOptions(options); + } + + /** + * Performs pose detection on the provided single image and waits + * synchronously for the response. Only use this method when the + * PoseLandmarker is created with running mode `image`. + * + * @param image An image to process. + * @param callback The callback that is invoked with the result. The + * lifetime of the returned masks is only guaranteed for the duration of + * the callback. + * @return The detected pose landmarks. + */ + detect(image: ImageSource, callback: PoseLandmarkerCallback): void; + /** + * Performs pose detection on the provided single image and waits + * synchronously for the response. Only use this method when the + * PoseLandmarker is created with running mode `image`. + * + * @param image An image to process. + * @param imageProcessingOptions the `ImageProcessingOptions` specifying how + * to process the input image before running inference. + * @param callback The callback that is invoked with the result. The + * lifetime of the returned masks is only guaranteed for the duration of + * the callback. + * @return The detected pose landmarks. + */ + detect( + image: ImageSource, imageProcessingOptions: ImageProcessingOptions, + callback: PoseLandmarkerCallback): void; + detect( + image: ImageSource, + imageProcessingOptionsOrCallback: ImageProcessingOptions| + PoseLandmarkerCallback, + callback?: PoseLandmarkerCallback): void { + const imageProcessingOptions = + typeof imageProcessingOptionsOrCallback !== 'function' ? + imageProcessingOptionsOrCallback : + {}; + const userCallback = + typeof imageProcessingOptionsOrCallback === 'function' ? + imageProcessingOptionsOrCallback : + callback!; + + this.resetResults(); + this.processImageData(image, imageProcessingOptions); + userCallback(this.result); + } + + /** + * Performs pose detection on the provided video frame and waits + * synchronously for the response. Only use this method when the + * PoseLandmarker is created with running mode `video`. + * + * @param videoFrame A video frame to process. + * @param timestamp The timestamp of the current frame, in ms. + * @param callback The callback that is invoked with the result. The + * lifetime of the returned masks is only guaranteed for the duration of + * the callback. + * @return The detected pose landmarks. + */ + detectForVideo( + videoFrame: ImageSource, timestamp: number, + callback: PoseLandmarkerCallback): void; + /** + * Performs pose detection on the provided video frame and waits + * synchronously for the response. Only use this method when the + * PoseLandmarker is created with running mode `video`. + * + * @param videoFrame A video frame to process. + * @param imageProcessingOptions the `ImageProcessingOptions` specifying how + * to process the input image before running inference. + * @param timestamp The timestamp of the current frame, in ms. + * @param callback The callback that is invoked with the result. The + * lifetime of the returned masks is only guaranteed for the duration of + * the callback. + * @return The detected pose landmarks. + */ + detectForVideo( + videoFrame: ImageSource, imageProcessingOptions: ImageProcessingOptions, + timestamp: number, callback: PoseLandmarkerCallback): void; + detectForVideo( + videoFrame: ImageSource, + timestampOrImageProcessingOptions: number|ImageProcessingOptions, + timestampOrCallback: number|PoseLandmarkerCallback, + callback?: PoseLandmarkerCallback): void { + const imageProcessingOptions = + typeof timestampOrImageProcessingOptions !== 'number' ? + timestampOrImageProcessingOptions : + {}; + const timestamp = typeof timestampOrImageProcessingOptions === 'number' ? + timestampOrImageProcessingOptions : + timestampOrCallback as number; + const userCallback = typeof timestampOrCallback === 'function' ? + timestampOrCallback : + callback!; + this.resetResults(); + this.processVideoData(videoFrame, imageProcessingOptions, timestamp); + userCallback(this.result); + } + + private resetResults(): void { + this.result = {landmarks: [], worldLandmarks: [], auxilaryLandmarks: []}; + if (this.outputSegmentationMasks) { + this.result.segmentationMasks = []; + } + } + + /** Sets the default values for the graph. */ + private initDefaults(): void { + this.poseDetectorGraphOptions.setNumPoses(DEFAULT_NUM_POSES); + this.poseDetectorGraphOptions.setMinDetectionConfidence( + DEFAULT_SCORE_THRESHOLD); + this.poseLandmarksDetectorGraphOptions.setMinDetectionConfidence( + DEFAULT_SCORE_THRESHOLD); + this.options.setMinTrackingConfidence(DEFAULT_SCORE_THRESHOLD); + } + + /** + * Converts raw data into a landmark, and adds it to our landmarks list. + */ + private addJsLandmarks(data: Uint8Array[]): void { + for (const binaryProto of data) { + const poseLandmarksProto = + NormalizedLandmarkList.deserializeBinary(binaryProto); + this.result.landmarks = convertToLandmarks(poseLandmarksProto); + } + } + + /** + * Converts raw data into a world landmark, and adds it to our + * worldLandmarks list. + */ + private adddJsWorldLandmarks(data: Uint8Array[]): void { + for (const binaryProto of data) { + const poseWorldLandmarksProto = + LandmarkList.deserializeBinary(binaryProto); + this.result.worldLandmarks = + convertToWorldLandmarks(poseWorldLandmarksProto); + } + } + + /** + * Converts raw data into a landmark, and adds it to our auxilary + * landmarks list. + */ + private addJsAuxiliaryLandmarks(data: Uint8Array[]): void { + for (const binaryProto of data) { + const auxiliaryLandmarksProto = + NormalizedLandmarkList.deserializeBinary(binaryProto); + this.result.auxilaryLandmarks = + convertToLandmarks(auxiliaryLandmarksProto); + } + } + + /** Updates the MediaPipe graph configuration. */ + protected override refreshGraph(): void { + const graphConfig = new CalculatorGraphConfig(); + graphConfig.addInputStream(IMAGE_STREAM); + graphConfig.addInputStream(NORM_RECT_STREAM); + graphConfig.addOutputStream(NORM_LANDMARKS_STREAM); + graphConfig.addOutputStream(WORLD_LANDMARKS_STREAM); + graphConfig.addOutputStream(AUXILIARY_LANDMARKS_STREAM); + graphConfig.addOutputStream(SEGMENTATION_MASK_STREAM); + + const calculatorOptions = new CalculatorOptions(); + calculatorOptions.setExtension( + PoseLandmarkerGraphOptions.ext, this.options); + + const landmarkerNode = new CalculatorGraphConfig.Node(); + landmarkerNode.setCalculator(POSE_LANDMARKER_GRAPH); + landmarkerNode.addInputStream('IMAGE:' + IMAGE_STREAM); + landmarkerNode.addInputStream('NORM_RECT:' + NORM_RECT_STREAM); + landmarkerNode.addOutputStream('NORM_LANDMARKS:' + NORM_LANDMARKS_STREAM); + landmarkerNode.addOutputStream('WORLD_LANDMARKS:' + WORLD_LANDMARKS_STREAM); + landmarkerNode.addOutputStream( + 'AUXILIARY_LANDMARKS:' + AUXILIARY_LANDMARKS_STREAM); + landmarkerNode.setOptions(calculatorOptions); + + graphConfig.addNode(landmarkerNode); + + this.graphRunner.attachProtoVectorListener( + NORM_LANDMARKS_STREAM, (binaryProto, timestamp) => { + this.addJsLandmarks(binaryProto); + this.setLatestOutputTimestamp(timestamp); + }); + this.graphRunner.attachEmptyPacketListener( + NORM_LANDMARKS_STREAM, timestamp => { + this.setLatestOutputTimestamp(timestamp); + }); + + this.graphRunner.attachProtoVectorListener( + WORLD_LANDMARKS_STREAM, (binaryProto, timestamp) => { + this.adddJsWorldLandmarks(binaryProto); + this.setLatestOutputTimestamp(timestamp); + }); + this.graphRunner.attachEmptyPacketListener( + WORLD_LANDMARKS_STREAM, timestamp => { + this.setLatestOutputTimestamp(timestamp); + }); + + this.graphRunner.attachProtoVectorListener( + AUXILIARY_LANDMARKS_STREAM, (binaryProto, timestamp) => { + this.addJsAuxiliaryLandmarks(binaryProto); + this.setLatestOutputTimestamp(timestamp); + }); + this.graphRunner.attachEmptyPacketListener( + AUXILIARY_LANDMARKS_STREAM, timestamp => { + this.setLatestOutputTimestamp(timestamp); + }); + + if (this.outputSegmentationMasks) { + landmarkerNode.addOutputStream( + 'SEGMENTATION_MASK:' + SEGMENTATION_MASK_STREAM); + this.graphRunner.attachImageVectorListener( + SEGMENTATION_MASK_STREAM, (masks, timestamp) => { + this.result.segmentationMasks = + masks.map(m => m.data) as Float32Array[] | WebGLBuffer[]; + this.setLatestOutputTimestamp(timestamp); + }); + this.graphRunner.attachEmptyPacketListener( + SEGMENTATION_MASK_STREAM, timestamp => { + this.setLatestOutputTimestamp(timestamp); + }); + } + + const binaryGraph = graphConfig.serializeBinary(); + this.setGraph(new Uint8Array(binaryGraph), /* isBinary= */ true); + } +} + + diff --git a/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_options.d.ts b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_options.d.ts new file mode 100644 index 00000000..fdd29c6a --- /dev/null +++ b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_options.d.ts @@ -0,0 +1,47 @@ +/** + * Copyright 2023 The MediaPipe Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {VisionTaskOptions} from '../../../../tasks/web/vision/core/vision_task_options'; + +/** Options to configure the MediaPipe PoseLandmarker Task */ +export declare interface PoseLandmarkerOptions extends VisionTaskOptions { + /** + * The maximum number of poses can be detected by the PoseLandmarker. + * Defaults to 1. + */ + numPoses?: number|undefined; + + /** + * The minimum confidence score for the pose detection to be considered + * successful. Defaults to 0.5. + */ + minPoseDetectionConfidence?: number|undefined; + + /** + * The minimum confidence score of pose presence score in the pose landmark + * detection. Defaults to 0.5. + */ + minPosePresenceConfidence?: number|undefined; + + /** + * The minimum confidence score for the pose tracking to be considered + * successful. Defaults to 0.5. + */ + minTrackingConfidence?: number|undefined; + + /** Whether to output segmentation masks. Defaults to false. */ + outputSegmentationMasks?: boolean|undefined; +} diff --git a/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_result.d.ts b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_result.d.ts new file mode 100644 index 00000000..4ddd085d --- /dev/null +++ b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_result.d.ts @@ -0,0 +1,38 @@ +/** + * Copyright 2023 The MediaPipe Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Category} from '../../../../tasks/web/components/containers/category'; +import {Landmark, NormalizedLandmark} from '../../../../tasks/web/components/containers/landmark'; + +export {Category, Landmark, NormalizedLandmark}; + +/** + * Represents the pose landmarks deection results generated by `PoseLandmarker`. + * Each vector element represents a single pose detected in the image. + */ +export declare interface PoseLandmarkerResult { + /** Pose landmarks of detected poses. */ + landmarks: NormalizedLandmark[]; + + /** Pose landmarks in world coordinates of detected poses. */ + worldLandmarks: Landmark[]; + + /** Detected auxiliary landmarks, used for deriving ROI for next frame. */ + auxilaryLandmarks: NormalizedLandmark[]; + + /** Segmentation mask for the detected pose. */ + segmentationMasks?: Float32Array[]|WebGLTexture[]; +} diff --git a/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_test.ts b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_test.ts new file mode 100644 index 00000000..1a5afba5 --- /dev/null +++ b/mediapipe/tasks/web/vision/pose_landmarker/pose_landmarker_test.ts @@ -0,0 +1,264 @@ +/** + * Copyright 2023 The MediaPipe Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import 'jasmine'; + +import {CalculatorGraphConfig} from '../../../../framework/calculator_pb'; +import {createLandmarks, createWorldLandmarks} from '../../../../tasks/web/components/processors/landmark_result_test_lib'; +import {addJasmineCustomFloatEqualityTester, createSpyWasmModule, MediapipeTasksFake, SpyWasmModule, verifyGraph} from '../../../../tasks/web/core/task_runner_test_utils'; +import {VisionGraphRunner} from '../../../../tasks/web/vision/core/vision_task_runner'; + +import {PoseLandmarker} from './pose_landmarker'; +import {PoseLandmarkerOptions} from './pose_landmarker_options'; +import {PoseLandmarkerResult} from './pose_landmarker_result'; + +// The OSS JS API does not support the builder pattern. +// tslint:disable:jspb-use-builder-pattern + +type PacketListener = (data: unknown, timestamp: number) => void; + +class PoseLandmarkerFake extends PoseLandmarker implements MediapipeTasksFake { + calculatorName = 'mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph'; + attachListenerSpies: jasmine.Spy[] = []; + graph: CalculatorGraphConfig|undefined; + fakeWasmModule: SpyWasmModule; + listeners = new Map(); + + constructor() { + super(createSpyWasmModule(), /* glCanvas= */ null); + this.fakeWasmModule = + this.graphRunner.wasmModule as unknown as SpyWasmModule; + + this.attachListenerSpies[0] = + spyOn(this.graphRunner, 'attachProtoVectorListener') + .and.callFake((stream, listener) => { + expect(stream).toMatch( + /(normalized_landmarks|world_landmarks|auxiliary_landmarks)/); + this.listeners.set(stream, listener as PacketListener); + }); + this.attachListenerSpies[1] = + spyOn(this.graphRunner, 'attachImageVectorListener') + .and.callFake((stream, listener) => { + expect(stream).toEqual('segmentation_masks'); + this.listeners.set(stream, listener as PacketListener); + }); + + spyOn(this.graphRunner, 'setGraph').and.callFake(binaryGraph => { + this.graph = CalculatorGraphConfig.deserializeBinary(binaryGraph); + }); + spyOn(this.graphRunner, 'addGpuBufferAsImageToStream'); + spyOn(this.graphRunner, 'addProtoToStream'); + } + + getGraphRunner(): VisionGraphRunner { + return this.graphRunner; + } +} + +describe('PoseLandmarker', () => { + let poseLandmarker: PoseLandmarkerFake; + + beforeEach(async () => { + addJasmineCustomFloatEqualityTester(); + poseLandmarker = new PoseLandmarkerFake(); + await poseLandmarker.setOptions( + {baseOptions: {modelAssetBuffer: new Uint8Array([])}}); + }); + + it('initializes graph', async () => { + verifyGraph(poseLandmarker); + expect(poseLandmarker.listeners).toHaveSize(3); + }); + + it('reloads graph when settings are changed', async () => { + await poseLandmarker.setOptions({numPoses: 1}); + verifyGraph(poseLandmarker, [['poseDetectorGraphOptions', 'numPoses'], 1]); + expect(poseLandmarker.listeners).toHaveSize(3); + + await poseLandmarker.setOptions({numPoses: 5}); + verifyGraph(poseLandmarker, [['poseDetectorGraphOptions', 'numPoses'], 5]); + expect(poseLandmarker.listeners).toHaveSize(3); + }); + + it('registers listener for segmentation masks', async () => { + expect(poseLandmarker.listeners).toHaveSize(3); + await poseLandmarker.setOptions({outputSegmentationMasks: true}); + expect(poseLandmarker.listeners).toHaveSize(4); + }); + + it('merges options', async () => { + await poseLandmarker.setOptions({numPoses: 2}); + await poseLandmarker.setOptions({minPoseDetectionConfidence: 0.1}); + verifyGraph(poseLandmarker, [ + 'poseDetectorGraphOptions', { + numPoses: 2, + baseOptions: undefined, + minDetectionConfidence: 0.1, + minSuppressionThreshold: 0.5 + } + ]); + }); + + describe('setOptions()', () => { + interface TestCase { + optionPath: [keyof PoseLandmarkerOptions, ...string[]]; + fieldPath: string[]; + customValue: unknown; + defaultValue: unknown; + } + + const testCases: TestCase[] = [ + { + optionPath: ['numPoses'], + fieldPath: ['poseDetectorGraphOptions', 'numPoses'], + customValue: 5, + defaultValue: 1 + }, + { + optionPath: ['minPoseDetectionConfidence'], + fieldPath: ['poseDetectorGraphOptions', 'minDetectionConfidence'], + customValue: 0.1, + defaultValue: 0.5 + }, + { + optionPath: ['minPosePresenceConfidence'], + fieldPath: + ['poseLandmarksDetectorGraphOptions', 'minDetectionConfidence'], + customValue: 0.2, + defaultValue: 0.5 + }, + { + optionPath: ['minTrackingConfidence'], + fieldPath: ['minTrackingConfidence'], + customValue: 0.3, + defaultValue: 0.5 + }, + ]; + + /** Creates an options object that can be passed to setOptions() */ + function createOptions( + path: string[], value: unknown): PoseLandmarkerOptions { + const options: Record = {}; + let currentLevel = options; + for (const element of path.slice(0, -1)) { + currentLevel[element] = {}; + currentLevel = currentLevel[element] as Record; + } + currentLevel[path[path.length - 1]] = value; + return options; + } + + for (const testCase of testCases) { + it(`uses default value for ${testCase.optionPath[0]}`, async () => { + verifyGraph( + poseLandmarker, [testCase.fieldPath, testCase.defaultValue]); + }); + + it(`can set ${testCase.optionPath[0]}`, async () => { + await poseLandmarker.setOptions( + createOptions(testCase.optionPath, testCase.customValue)); + verifyGraph(poseLandmarker, [testCase.fieldPath, testCase.customValue]); + }); + + it(`can clear ${testCase.optionPath[0]}`, async () => { + await poseLandmarker.setOptions( + createOptions(testCase.optionPath, testCase.customValue)); + verifyGraph(poseLandmarker, [testCase.fieldPath, testCase.customValue]); + + await poseLandmarker.setOptions( + createOptions(testCase.optionPath, undefined)); + verifyGraph( + poseLandmarker, [testCase.fieldPath, testCase.defaultValue]); + }); + } + }); + + it('doesn\'t support region of interest', () => { + expect(() => { + poseLandmarker.detect( + {} as HTMLImageElement, + {regionOfInterest: {left: 0, right: 0, top: 0, bottom: 0}}, () => {}); + }).toThrowError('This task doesn\'t support region-of-interest.'); + }); + + it('transforms results', (done) => { + const landmarksProto = [createLandmarks().serializeBinary()]; + const worldLandmarksProto = [createWorldLandmarks().serializeBinary()]; + const masks = [ + {data: new Float32Array([0, 1, 2, 3]), width: 2, height: 2}, + ]; + + poseLandmarker.setOptions({outputSegmentationMasks: true}); + + // Pass the test data to our listener + poseLandmarker.fakeWasmModule._waitUntilIdle.and.callFake(() => { + poseLandmarker.listeners.get('normalized_landmarks')! + (landmarksProto, 1337); + poseLandmarker.listeners.get('world_landmarks')! + (worldLandmarksProto, 1337); + poseLandmarker.listeners.get('auxiliary_landmarks')! + (landmarksProto, 1337); + poseLandmarker.listeners.get('segmentation_masks')!(masks, 1337); + }); + + // Invoke the pose landmarker + poseLandmarker.detect({} as HTMLImageElement, result => { + expect(poseLandmarker.getGraphRunner().addProtoToStream) + .toHaveBeenCalledTimes(1); + expect(poseLandmarker.getGraphRunner().addGpuBufferAsImageToStream) + .toHaveBeenCalledTimes(1); + expect(poseLandmarker.fakeWasmModule._waitUntilIdle).toHaveBeenCalled(); + + expect(result).toEqual({ + 'landmarks': [{'x': 0, 'y': 0, 'z': 0}], + 'worldLandmarks': [{'x': 0, 'y': 0, 'z': 0}], + 'auxilaryLandmarks': [{'x': 0, 'y': 0, 'z': 0}], + 'segmentationMasks': [new Float32Array([0, 1, 2, 3])], + }); + done(); + }); + }); + + it('clears results between invoations', async () => { + const landmarksProto = [createLandmarks().serializeBinary()]; + const worldLandmarksProto = [createWorldLandmarks().serializeBinary()]; + + // Pass the test data to our listener + poseLandmarker.fakeWasmModule._waitUntilIdle.and.callFake(() => { + poseLandmarker.listeners.get('normalized_landmarks')! + (landmarksProto, 1337); + poseLandmarker.listeners.get('world_landmarks')! + (worldLandmarksProto, 1337); + poseLandmarker.listeners.get('auxiliary_landmarks')! + (landmarksProto, 1337); + }); + + // Invoke the pose landmarker twice + let landmarks1: PoseLandmarkerResult|undefined; + poseLandmarker.detect({} as HTMLImageElement, result => { + landmarks1 = result; + }); + + let landmarks2: PoseLandmarkerResult|undefined; + poseLandmarker.detect({} as HTMLImageElement, result => { + landmarks2 = result; + }); + + // Verify that poses2 is not a concatenation of all previously returned + // poses. + expect(landmarks1).toBeDefined(); + expect(landmarks1).toEqual(landmarks2); + }); +}); diff --git a/mediapipe/tasks/web/vision/types.ts b/mediapipe/tasks/web/vision/types.ts index 92cae43f..1c0466bc 100644 --- a/mediapipe/tasks/web/vision/types.ts +++ b/mediapipe/tasks/web/vision/types.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,3 +27,4 @@ export * from '../../../tasks/web/vision/image_embedder/image_embedder'; export * from '../../../tasks/web/vision/image_segmenter/image_segmenter'; export * from '../../../tasks/web/vision/interactive_segmenter/interactive_segmenter'; export * from '../../../tasks/web/vision/object_detector/object_detector'; +export * from '../../../tasks/web/vision/pose_landmarker/pose_landmarker'; diff --git a/mediapipe/util/BUILD b/mediapipe/util/BUILD index cd82a850..b0b7f346 100644 --- a/mediapipe/util/BUILD +++ b/mediapipe/util/BUILD @@ -194,6 +194,7 @@ cc_library( "//mediapipe/framework:android_no_jni": ["resource_util_loonix.cc"], "//mediapipe:ios": ["resource_util_apple.cc"], "//mediapipe:macos": ["resource_util_default.cc"], + "//mediapipe:windows": ["resource_util_windows.cc"], }), hdrs = [ "resource_util.h", @@ -232,6 +233,10 @@ cc_library( "//mediapipe:macos": [ "@com_google_absl//absl/flags:flag", ], + "//mediapipe:windows": [ + "@bazel_tools//tools/cpp/runfiles", + "@com_google_absl//absl/flags:flag", + ], }), ) diff --git a/mediapipe/util/resource_util_windows.cc b/mediapipe/util/resource_util_windows.cc new file mode 100644 index 00000000..34806da4 --- /dev/null +++ b/mediapipe/util/resource_util_windows.cc @@ -0,0 +1,91 @@ +// Copyright 2019 The MediaPipe Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include "absl/flags/flag.h" +#include "mediapipe/framework/deps/file_path.h" +#include "mediapipe/framework/port/file_helpers.h" +#include "mediapipe/framework/port/singleton.h" +#include "mediapipe/framework/port/statusor.h" +#include "tools/cpp/runfiles/runfiles.h" + +ABSL_FLAG( + std::string, resource_root_dir, "", + "The absolute path to the resource directory." + "If specified, resource_root_dir will be prepended to the original path."); + +namespace mediapipe { + +using mediapipe::file::GetContents; +using mediapipe::file::JoinPath; + +namespace { + +class RunfilesHolder { + public: + // TODO: We should ideally use `CreateForTests` when this is + // accessed from unit tests. + RunfilesHolder() + : runfiles_( + ::bazel::tools::cpp::runfiles::Runfiles::Create("", nullptr)) {} + + std::string Rlocation(const std::string& path) { + if (!runfiles_) { + // Return the original path when Runfiles is not available (e.g. for + // Python) + return JoinPath(absl::GetFlag(FLAGS_resource_root_dir), path); + } + return runfiles_->Rlocation(path); + } + + private: + std::unique_ptr<::bazel::tools::cpp::runfiles::Runfiles> runfiles_; +}; + +} // namespace + +namespace internal { + +std::string PathToResourceAsFileInternal(const std::string& path) { + return Singleton::get()->Rlocation(path); +} + +absl::Status DefaultGetResourceContents(const std::string& path, + std::string* output, + bool read_as_binary) { + std::string resource_path = PathToResourceAsFileInternal(path); + return GetContents(path, output, read_as_binary); +} + +} // namespace internal + +absl::StatusOr PathToResourceAsFile(const std::string& path) { + std::string qualified_path = path; + if (absl::StartsWith(qualified_path, "./")) { + qualified_path = "mediapipe" + qualified_path.substr(1); + } else if (path[0] != '/') { + qualified_path = "mediapipe/" + qualified_path; + } + + // Try to load the file from bazel-bin. If it does not exist, fall back to the + // resource folder. + auto bazel_path = internal::PathToResourceAsFileInternal(qualified_path); + if (file::Exists(bazel_path).ok()) { + return bazel_path; + } + return JoinPath(absl::GetFlag(FLAGS_resource_root_dir), path); +} + +} // namespace mediapipe diff --git a/mediapipe/util/tflite/operations/max_pool_argmax.cc b/mediapipe/util/tflite/operations/max_pool_argmax.cc index c55c16f5..71d08e12 100644 --- a/mediapipe/util/tflite/operations/max_pool_argmax.cc +++ b/mediapipe/util/tflite/operations/max_pool_argmax.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The TensorFlow Authors. All Rights Reserved. +// Copyright 2018 The TensorFlow Authors. // Copyright 2019 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/mediapipe/util/tflite/operations/transpose_conv_bias.cc b/mediapipe/util/tflite/operations/transpose_conv_bias.cc index 1fe5acd7..32b7c400 100644 --- a/mediapipe/util/tflite/operations/transpose_conv_bias.cc +++ b/mediapipe/util/tflite/operations/transpose_conv_bias.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The TensorFlow Authors. All Rights Reserved. +// Copyright 2018 The TensorFlow Authors. // Copyright 2019 The MediaPipe Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/mediapipe/web/graph_runner/graph_runner.ts b/mediapipe/web/graph_runner/graph_runner.ts index 0115312b..615971cb 100644 --- a/mediapipe/web/graph_runner/graph_runner.ts +++ b/mediapipe/web/graph_runner/graph_runner.ts @@ -63,6 +63,7 @@ export declare interface WasmModule { _bindTextureToCanvas: () => boolean; _changeBinaryGraph: (size: number, dataPtr: number) => void; _changeTextGraph: (size: number, dataPtr: number) => void; + _closeGraph: () => void; _free: (ptr: number) => void; _malloc: (size: number) => number; _processFrame: (width: number, height: number, timestamp: number) => void; @@ -1148,6 +1149,16 @@ export class GraphRunner { finishProcessing(): void { this.wasmModule._waitUntilIdle(); } + + /** + * Closes the input streams and all calculators for this graph and frees up + * any C++ resources. The graph will not be usable once closed. + */ + closeGraph(): void { + this.wasmModule._closeGraph(); + this.wasmModule.simpleListeners = undefined; + this.wasmModule.emptyPacketListeners = undefined; + } } // Quick private helper to run the given script safely diff --git a/mediapipe/web/graph_runner/platform_utils.test.ts b/mediapipe/web/graph_runner/platform_utils.test.ts index 080260cf..89325b89 100644 --- a/mediapipe/web/graph_runner/platform_utils.test.ts +++ b/mediapipe/web/graph_runner/platform_utils.test.ts @@ -1,5 +1,5 @@ /** - * Copyright 2022 The MediaPipe Authors. All Rights Reserved. + * Copyright 2022 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/mediapipe/web/graph_runner/platform_utils.ts b/mediapipe/web/graph_runner/platform_utils.ts index 59359a14..71239aba 100644 --- a/mediapipe/web/graph_runner/platform_utils.ts +++ b/mediapipe/web/graph_runner/platform_utils.ts @@ -1,5 +1,5 @@ /** - * Copyright 2023 The MediaPipe Authors. All Rights Reserved. + * Copyright 2023 The MediaPipe Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/setup.py b/setup.py index c94f14af..202917ef 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -"""Copyright 2020-2022 The MediaPipe Authors. All Rights Reserved. +"""Copyright 2020-2022 The MediaPipe Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/third_party/external_files.bzl b/third_party/external_files.bzl index 7264c1b1..ff338bae 100644 --- a/third_party/external_files.bzl +++ b/third_party/external_files.bzl @@ -198,8 +198,8 @@ def external_files(): http_file( name = "com_google_mediapipe_coco_ssd_mobilenet_v1_score_calibration_json", - sha256 = "f377600be924c29697477f9d739db9db5d712aec4a644548526912858db6a082", - urls = ["https://storage.googleapis.com/mediapipe-assets/coco_ssd_mobilenet_v1_score_calibration.json?generation=1677522739770755"], + sha256 = "a850674f9043bfc775527fee7f1b639f7fe0fb56e8d3ed2b710247967c888b09", + urls = ["https://storage.googleapis.com/mediapipe-assets/coco_ssd_mobilenet_v1_score_calibration.json?generation=1682456086898538"], ) http_file( @@ -262,10 +262,28 @@ def external_files(): urls = ["https://storage.googleapis.com/mediapipe-assets/dynamic_input_classifier.tflite?generation=1680543275416843"], ) + http_file( + name = "com_google_mediapipe_efficientdet_lite0_fp16_no_nms_anchors_csv", + sha256 = "284475a0f16e34afcc6c0fe68b05bd871aca5b20c83db0870c6a36dd63827176", + urls = ["https://storage.googleapis.com/mediapipe-assets/efficientdet_lite0_fp16_no_nms_anchors.csv?generation=1682456090001817"], + ) + + http_file( + name = "com_google_mediapipe_efficientdet_lite0_fp16_no_nms_json", + sha256 = "dc3b333e41c43fb49ace048c25c18d0e34df78fb5ee77edbe169264368f78b92", + urls = ["https://storage.googleapis.com/mediapipe-assets/efficientdet_lite0_fp16_no_nms.json?generation=1682456092938505"], + ) + + http_file( + name = "com_google_mediapipe_efficientdet_lite0_fp16_no_nms_tflite", + sha256 = "237a58389081333e5cf4154e42b593ce7dd357445536fcaf4ca5bc51c2c50f1c", + urls = ["https://storage.googleapis.com/mediapipe-assets/efficientdet_lite0_fp16_no_nms.tflite?generation=1682632067597216"], + ) + http_file( name = "com_google_mediapipe_efficientdet_lite0_v1_json", - sha256 = "7a9e1fb625a6130a251e612637fc546cfc8cfabfadc7dbdade44c87f1d8996ca", - urls = ["https://storage.googleapis.com/mediapipe-assets/efficientdet_lite0_v1.json?generation=1677522746026682"], + sha256 = "ef9706696a3ea5d87f4324ac56e877a92033d33e522c4b7d5a416fbcab24d8fc", + urls = ["https://storage.googleapis.com/mediapipe-assets/efficientdet_lite0_v1.json?generation=1682456098581704"], ) http_file( @@ -310,12 +328,6 @@ def external_files(): urls = ["https://storage.googleapis.com/mediapipe-assets/expected_pose_landmarks.prototxt?generation=16812442325229901681244235071100"], ) - http_file( - name = "com_google_mediapipe_expected_pose_landmarks_prototxt_orig", - sha256 = "c230e0933e6cb4af69ec21314f3f9930fe13e7bb4bf1dbdb74427e4138c24c1e", - urls = ["https://storage.googleapis.com/mediapipe-assets/expected_pose_landmarks.prototxt.orig?generation=1681244235071100"], - ) - http_file( name = "com_google_mediapipe_expected_right_down_hand_landmarks_prototxt", sha256 = "f281b745175aaa7f458def6cf4c89521fb56302dd61a05642b3b4a4f237ffaa3", @@ -406,6 +418,12 @@ def external_files(): urls = ["https://storage.googleapis.com/mediapipe-assets/face_stylization_dummy.tflite?generation=1678323589048063"], ) + http_file( + name = "com_google_mediapipe_face_stylizer_task", + sha256 = "b34f3896cbe860468538cf5a562c0468964f182b8bb07cb527224312969d1625", + urls = ["https://storage.googleapis.com/mediapipe-assets/face_stylizer.task?generation=1682627841126340"], + ) + http_file( name = "com_google_mediapipe_feature_tensor_meta_json", sha256 = "b2c30ddfd495956ce81085f8a143422f4310b002cfbf1c594ff2ee0576e29d6f", @@ -946,6 +964,12 @@ def external_files(): urls = ["https://storage.googleapis.com/mediapipe-assets/portrait_selfie_segmentation_landscape_expected_category_mask.jpg?generation=1678606939469429"], ) + http_file( + name = "com_google_mediapipe_portrait_small_jpg", + sha256 = "873a1a5e4cc86c040101362c5dea6a71cf524563b0700640175e5c3763a4246a", + urls = ["https://storage.googleapis.com/mediapipe-assets/portrait_small.jpg?generation=1682627845552867"], + ) + http_file( name = "com_google_mediapipe_pose_detection_tflite", sha256 = "9ba9dd3d42efaaba86b4ff0122b06f29c4122e756b329d89dca1e297fd8f866c", @@ -1000,6 +1024,12 @@ def external_files(): urls = ["https://storage.googleapis.com/mediapipe-assets/pose_landmarks.pbtxt?generation=1681425322701589"], ) + http_file( + name = "com_google_mediapipe_pose_segmentation_mask_golden_png", + sha256 = "62ee418e18f317327572da5fcc988af703eb31e6f0b9e0bf3d55e6f4797d6953", + urls = ["https://storage.googleapis.com/mediapipe-assets/pose_segmentation_mask_golden.png?generation=1682541414235372"], + ) + http_file( name = "com_google_mediapipe_ptm_512_hdt_ptm_woid_tflite", sha256 = "2baa1c9783d03dd26f91e3c49efbcab11dd1361ff80e40e7209e81f84f281b6a", @@ -1158,8 +1188,8 @@ def external_files(): http_file( name = "com_google_mediapipe_ssd_mobilenet_v1_no_metadata_json", - sha256 = "89157590b736cf3f3247aa9c8be3570c2856f4981a1e9476117e7c629e7c4825", - urls = ["https://storage.googleapis.com/mediapipe-assets/ssd_mobilenet_v1_no_metadata.json?generation=1677522786336455"], + sha256 = "ae5a5971a1c3df705307448ef97c854d846b7e6f2183fb51015bd5af5d7deb0f", + urls = ["https://storage.googleapis.com/mediapipe-assets/ssd_mobilenet_v1_no_metadata.json?generation=1682456117002011"], ) http_file( diff --git a/third_party/halide/halide.bzl b/third_party/halide/halide.bzl index f1e8b537..bbb0a1f9 100644 --- a/third_party/halide/halide.bzl +++ b/third_party/halide/halide.bzl @@ -1,4 +1,4 @@ -# Copyright 2023 The MediaPipe Authors. All rights reserved. +# Copyright 2023 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/third_party/org_tensorflow_compatibility_fixes.diff b/third_party/org_tensorflow_compatibility_fixes.diff index c360b072..36bc34f9 100644 --- a/third_party/org_tensorflow_compatibility_fixes.diff +++ b/third_party/org_tensorflow_compatibility_fixes.diff @@ -54,3 +54,17 @@ index 462ec7c2218..f2b583a4cbd 100644 # copybara:comment_end def gpu_delegate_linkopts(): +diff --git a/tensorflow/tsl/platform/windows/error_windows.cc b/tensorflow/tsl/platform/windows/error_windows.cc +index fea37ddb2ea..4070ea55425 100644 +--- a/tensorflow/tsl/platform/windows/error_windows.cc ++++ b/tensorflow/tsl/platform/windows/error_windows.cc +@@ -15,8 +15,8 @@ limitations under the License. + + #include "tensorflow/tsl/platform/windows/error_windows.h" + +-#include + #include ++#include + + #include + \ No newline at end of file diff --git a/third_party/repo.bzl b/third_party/repo.bzl index ca9e4a80..69190554 100644 --- a/third_party/repo.bzl +++ b/third_party/repo.bzl @@ -1,4 +1,4 @@ -# Copyright 2022 The MediaPipe Authors. All rights reserved. +# Copyright 2022 The MediaPipe Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/third_party/wasm_files.bzl b/third_party/wasm_files.bzl index a484d2f8..b1b357f0 100644 --- a/third_party/wasm_files.bzl +++ b/third_party/wasm_files.bzl @@ -12,72 +12,72 @@ def wasm_files(): http_file( name = "com_google_mediapipe_wasm_audio_wasm_internal_js", - sha256 = "b810de53d7ccf991b9c70fcdf7e88b5c3f2942ae766436f22be48159b6a7e687", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_internal.js?generation=1681849488227617"], + sha256 = "1c555ecdb8faffca703d191626a6830e56fd0ab996d8837d7240d50098cc3109", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_internal.js?generation=1682632113236604"], ) http_file( name = "com_google_mediapipe_wasm_audio_wasm_internal_wasm", - sha256 = "26d91147e5c6c8a92e0a4ebf59599068a3cff6108847b793ef33ac23e98eddb9", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_internal.wasm?generation=1681849491546937"], + sha256 = "aee8e7832b876a32a323f26b9f45002d2cc9d9e25db109ae360ec57fb3ed0c2e", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_internal.wasm?generation=1682632115959200"], ) http_file( name = "com_google_mediapipe_wasm_audio_wasm_nosimd_internal_js", - sha256 = "b38e37b3024692558eaaba159921fedd3297d1a09bba1c16a06fed327845b0bd", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_nosimd_internal.js?generation=1681849494099698"], + sha256 = "73df132f8d6ba62a406f120c514700e5a65d69a114e86de11dc9759024eedd7c", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_nosimd_internal.js?generation=1682632118022450"], ) http_file( name = "com_google_mediapipe_wasm_audio_wasm_nosimd_internal_wasm", - sha256 = "6a8e73d2e926565046e16adf1748f0f8ec5135fafe7eb8b9c83892e64c1a449a", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_nosimd_internal.wasm?generation=1681849496451970"], + sha256 = "7a4400c0b16f768161574b2ce512179e0afc4f8aa313232db7a4b7c572de2abb", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/audio_wasm_nosimd_internal.wasm?generation=1682632120654892"], ) http_file( name = "com_google_mediapipe_wasm_text_wasm_internal_js", - sha256 = "785cba67b623b1dc66dc3621e97fd6b30edccbb408184a3094d0aa68ddd5becb", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_internal.js?generation=1681849498746265"], + sha256 = "18ffadd94fa7844a106b2a9197f8258c39e601f99f01945c543fc0d879baad7f", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_internal.js?generation=1682632123000744"], ) http_file( name = "com_google_mediapipe_wasm_text_wasm_internal_wasm", - sha256 = "a858b8a2e8b40e9c936b66566c5aefd396536c4e936459ab9ae7e239621adc14", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_internal.wasm?generation=1681849501370461"], + sha256 = "96591ca0b64da9b565554384306663f1067b0c0a823d7e856fa58b28b659405a", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_internal.wasm?generation=1682632125672531"], ) http_file( name = "com_google_mediapipe_wasm_text_wasm_nosimd_internal_js", - sha256 = "5292f1442d5e5c037e7cffb78a8c2d71255348ca2c3bd759b314bdbedd5590c2", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_nosimd_internal.js?generation=1681849503379116"], + sha256 = "668569cd80d6680c6e418ce42109d85151d6ec88ed06940206151585dba895df", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_nosimd_internal.js?generation=1682632128111024"], ) http_file( name = "com_google_mediapipe_wasm_text_wasm_nosimd_internal_wasm", - sha256 = "e44b48ab29ee1d8befec804e9a63445c56266b679d19fb476d556ca621f0e493", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_nosimd_internal.wasm?generation=1681849505997020"], + sha256 = "f548cfe74a77aa609b988c212e7a60aa2b078194c3eeda0a3d5802165c2b5fe7", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/text_wasm_nosimd_internal.wasm?generation=1682632130623184"], ) http_file( name = "com_google_mediapipe_wasm_vision_wasm_internal_js", - sha256 = "205855eba70464a92b9d00e90acac15c51a9f76192f900e697304ac6dea8f714", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_internal.js?generation=1681849508414277"], + sha256 = "347d3ae5a947846431b6e8ea15966156b9cbf1a9ae800932954507b6c12c6ecf", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_internal.js?generation=1682632132979491"], ) http_file( name = "com_google_mediapipe_wasm_vision_wasm_internal_wasm", - sha256 = "c0cbd0df3adb2a9cd1331d14f522d2bae9f8adc9f1b35f92cbbc4b782b190cef", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_internal.wasm?generation=1681849510936608"], + sha256 = "849092df0b599e00d074f4d8c2d7ef16912061298d27e5748ccf353b0f93b168", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_internal.wasm?generation=1682632135762121"], ) http_file( name = "com_google_mediapipe_wasm_vision_wasm_nosimd_internal_js", - sha256 = "0969812de4d3573198fa2eba4f5b0a7e97e98f97bd4215d876543f4925e57b84", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_nosimd_internal.js?generation=1681849513292639"], + sha256 = "7a130f5c20a320157d109a8aa767904df9717c24e77c99c4313a1716c3685e65", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_nosimd_internal.js?generation=1682632137850608"], ) http_file( name = "com_google_mediapipe_wasm_vision_wasm_nosimd_internal_wasm", - sha256 = "f2ab62c3f8dabab0a573dadf5c105ff81a03c29c70f091f8cf273ae030c0a86f", - urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_nosimd_internal.wasm?generation=1681849515999000"], + sha256 = "c45e706965e0572b41e1518e6243e6dee0d6834e0ac81f49370951d23e52e387", + urls = ["https://storage.googleapis.com/mediapipe-assets/wasm/vision_wasm_nosimd_internal.wasm?generation=1682632140714614"], )