diff --git a/.dockerignore b/.dockerignore index 0e869cde0..547e77e93 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,3 +3,5 @@ lattice/node_modules lattice/build statik/statik.go build +testenv +bin diff --git a/.gitignore b/.gitignore index e4a08c1a2..70ee50ecc 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,46 @@ outputs.json builds/ *.tfstate.backup .vscode + +# copy of .gitignore from archived idk repo +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +vendor + +.terraform +terraform.tfstate* + +bin +build +testenv +.pulled + +pilosa-sec-data-idk + +.idea/ +tags.dot +*.log +*.swp diff --git a/.gitlab/.gitlab-ci.yml b/.gitlab/.gitlab-ci.yml index 04f4b2850..bd70bf523 100644 --- a/.gitlab/.gitlab-ci.yml +++ b/.gitlab/.gitlab-ci.yml @@ -3,20 +3,63 @@ include: - template: Security/License-Scanning.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml +gosec-sast: + before_script: + - export GOPRIVATE=github.com/molecula/* + - apk add openssh-client + - eval $(ssh-agent -s) + - echo "$FB_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - git config --global --add url."ssh://git@github.com/".insteadOf "https://github.com/" + - ssh-keygen -F github.com || echo "$SSH_KNOWN_HOSTS_HASHED" >> ~/.ssh/known_hosts + - chmod 644 ~/.ssh/known_hosts + variables: GOVERSION: "1.17.8" stages: - lint + - pretest # run FB linux amd 64 because it is a dependency for idk tests - test - build + - post build - integration - gauntlet - performance - - post build - nonblocking - cleanup_build +.setup_ssh: + before_script: + - export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin + - export GOPRIVATE=github.com/molecula/* + + ## Install ssh-agent if not already installed, it is required by Docker. + ## (change apt-get to yum if you use an RPM-based image) + - "command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )" + + ## Run ssh-agent (inside the build environment) + - eval $(ssh-agent -s) + + ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store + ## We're using tr to fix line endings which makes ed25519 keys work + ## without extra base64 encoding. + ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556 + - echo "$FB_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + + ## Create the SSH directory and give it the right permissions + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + + - git config --global --get url."ssh://git@github.com/".insteadOf || git config --global --add url."ssh://git@github.com/".insteadOf "https://github.com/" || true + ## Set up known_hosts so we don't get prompted when there's no + ## human to answer the prompt (resulting in cryptic failures). + ## ssh-keygen -F checks whether github.com is in known_hosts and + ## handles HashKnownHosts appropriately. + - ssh-keygen -F github.com || echo "$SSH_KNOWN_HOSTS_HASHED" >> ~/.ssh/known_hosts + - chmod 644 ~/.ssh/known_hosts + smoke build: image: golang:$GOVERSION stage: lint @@ -35,7 +78,7 @@ golangci-lint: - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' script: - echo "Checking for issues in new code" - - golangci-lint run + - golangci-lint run -v --timeout=8m go mod tidy: stage: lint @@ -46,8 +89,10 @@ go mod tidy: - go mod tidy - git diff --exit-code -- go.mod go.sum +### lattice, build for linux amd64 and build amd fb container are needed for IDK unit testing +### running them at an earlier stage allows for decreasing run time. build lattice: - stage: test + stage: pretest image: node:14 variables: CI: "false" @@ -66,6 +111,41 @@ build lattice: paths: - lattice.tar.gz +build for linux amd64: + stage: pretest + image: golang:$GOVERSION + rules: + - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' + script: + - rm -r lattice + - tar -xvf lattice.tar.gz + - go get -v -u github.com/rakyll/statik + - /go/bin/statik -src=lattice + - GOOS="linux" GOARCH="amd64" make build FLAGS="-o featurebase_linux_amd64" + - GOOS="linux" GOARCH="amd64" go build -o roaring-migrate_linux_amd64 ./cmd/roaring-migrate + artifacts: + paths: + - featurebase_linux_amd64 + - roaring-migrate_linux_amd64 + needs: + - job: build lattice + +build amd container fb: + stage: pretest + tags: + - shell + rules: + - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' + before_script: + - echo "${DOCKER_DEPLOY_TOKEN}" | docker login -u ${DOCKER_DEPLOY_USER} --password-stdin ${CI_REGISTRY} + script: + - tag=${CI_REGISTRY_IMAGE}/featurebase:linux-amd64-${CI_COMMIT_REF_SLUG} + - docker build --build-arg GO_VERSION=$GOVERSION --build-arg ARCH=amd64 -t $tag -f .gitlab/Dockerfile . + - docker push $tag + - echo Created docker featurebase image with tag "$tag" + needs: + - job: build for linux amd64 + run jest tests: stage: test image: node:14 @@ -90,7 +170,7 @@ run go tests: retry: 1 script: - echo "Running featurebase unit tests..." - - go test -timeout=30m ./... + - go test -v -timeout=30m $(go list ./... | grep -Ev idk) tags: - aws @@ -103,7 +183,7 @@ run go tests race: needs: ["smoke build"] # we do block on smoke build though bc it's pretty dumb to test stuff if it doesn't build script: - echo "Running featurebase race tests..." - - go test -race -v -timeout=90m ./... + - go test -race -v -timeout=90m $(go list ./... | grep -Ev idk) tags: - aws @@ -114,7 +194,7 @@ run go tests shardwidth22: - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' script: - echo "Running featurebase shardwidth22 tests..." - - go test -timeout=30m -tags=shardwidth22 ./... + - go test -timeout=30m -tags=shardwidth22 -v $(go list ./... | grep -Ev idk) tags: - aws @@ -129,8 +209,8 @@ run go tests future: retry: 1 script: - echo "Running featurebase unit tests..." - - PKG_LIST=$(go list ./... | grep -Ev 'internal/clustertests|simulacraData' | paste -s -d, -) - - go test -timeout=30m -json -coverprofile=coverage.out -covermode=atomic -coverpkg=${PKG_LIST} ./... | tee test-report.out + - PKG_LIST=$(go list ./... | grep -Ev 'internal/clustertests|simulacraData' | grep -Ev 'idk' | paste -s -d, -) + - go test -timeout=30m -json -coverprofile=coverage.out -covermode=atomic -coverpkg=${PKG_LIST} $(go list ./... | grep -Ev idk) | tee test-report.out artifacts: paths: - coverage.out @@ -146,8 +226,8 @@ run go tests future plg: retry: 1 script: - echo "Running featurebase plg-specific unit tests..." - - PKG_LIST=$(go list ./... | grep -Ev 'internal/clustertests|simulacraData' | paste -s -d, -) - - go test -tags=plg -timeout=30m -coverprofile=coverage-plg.out -covermode=atomic -coverpkg=${PKG_LIST} ./... | tee test-report-plg.out + - PKG_LIST=$(go list ./... | grep -Ev 'internal/clustertests|simulacraData' | grep -Ev 'idk' | paste -s -d, -) + - go test -tags=plg -timeout=30m -coverprofile=coverage-plg.out -covermode=atomic -coverpkg=${PKG_LIST} $(go list ./... | grep -Ev idk) | tee test-report-plg.out artifacts: paths: - coverage-plg.out @@ -155,6 +235,127 @@ run go tests future plg: tags: - aws +# idk tests +run go tests idk race: + extends: + - .setup_ssh + variables: + USERNAME: fb-idk-access + PROJECT: race_${CI_CONCURRENT_ID} + stage: test + retry: 1 + rules: + - if: '$CI_COMMIT_TAG == null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + script: + - echo "Running test-all-race" + - cd ./idk/ + - command -v certstrap >/dev/null || go install github.com/square/certstrap@latest + - echo $PROJECT + - echo $DOCKER_PASSWORD | docker login registry.gitlab.com --username "$USERNAME" --password-stdin + - BRANCH_NAME=${CI_COMMIT_BRANCH} make test-all-race + after_script: + - make save-pilosa-logs + - make shutdown + artifacts: + paths: + - ./idk/testdata/*_coverage.out + - ./idk/testdata/*_report.out + tags: + - shell + - aws + needs: + - job: build amd container fb + +run go tests idk shard transactional: + extends: + - .setup_ssh + variables: + IDK_DEFAULT_SHARD_TRANSACTIONAL: 1 + USERNAME: fb-idk-access + PROJECT: shardttrans_${CI_CONCURRENT_ID} + stage: test + retry: 1 + rules: + - if: '$CI_COMMIT_TAG == null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + script: + - echo "Running shard transactional tests" + - cd ./idk/ + - command -v certstrap >/dev/null || go install github.com/square/certstrap@latest + - echo $PROJECT + - echo $DOCKER_PASSWORD | docker login registry.gitlab.com --username "$USERNAME" --password-stdin + - BRANCH_NAME=${CI_COMMIT_BRANCH} make test-all + after_script: + - make save-pilosa-logs + - make shutdown + artifacts: + paths: + - ./idk/testdata/*_coverage.out + - ./idk/testdata/*_report.out + - ./idk/testdata/*_logs.txt + tags: + - shell + - aws + needs: + - job: build amd container fb + +run go tests idk 533: + extends: + - .setup_ssh + variables: + USERNAME: fb-idk-access + PROJECT: test533_${CI_CONCURRENT_ID} + stage: test + retry: 1 + script: + - echo "Running confluent 5.3.3 test-all" + - cd ./idk/ + - command -v certstrap >/dev/null || go install github.com/square/certstrap@latest + - echo $DOCKER_PASSWORD | docker login registry.gitlab.com --username "$USERNAME" --password-stdin + - CONFLUENT_VERSION=5.3.3 BRANCH_NAME=${CI_COMMIT_BRANCH} make test-all + after_script: + - make save-pilosa-logs + - make shutdown + rules: + - if: '$CI_COMMIT_TAG == null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + tags: + - shell + - aws + artifacts: + paths: + - ./idk/testdata/*_coverage.out + - ./idk/testdata/*_report.out + needs: + - job: build amd container fb + +run go tests idk sasl: + extends: + - .setup_ssh + variables: + USERNAME: fb-idk-access + PROJECT: sasl_${CI_CONCURRENT_ID} + stage: test + retry: 1 + script: + - echo "Running test-all-kafka-sasl" + - cd ./idk/ + - command -v certstrap >/dev/null || go install github.com/square/certstrap@latest + - echo $DOCKER_PASSWORD | docker login registry.gitlab.com --username "$USERNAME" --password-stdin + - BRANCH_NAME=${CI_COMMIT_BRANCH} make test-all-kafka-sasl + after_script: + - make save-pilosa-logs + - make shutdown + rules: + - if: '$CI_COMMIT_TAG == null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + tags: + - shell + - aws + artifacts: + paths: + - ./idk/testdata/*_coverage.out + - ./idk/testdata/*_report.out + needs: + - job: build amd container fb + upload to sonarcloud: stage: integration image: sonarsource/sonar-scanner-cli:4.6 @@ -164,28 +365,17 @@ upload to sonarcloud: - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' script: - sonar-scanner -Dsonar.projectKey=molecula_featurebase -Dsonar.organization=molecula -Dsonar.sources=. -Dsonar.host.url=https://sonarcloud.io -Dsonar.go.coverage.reportPaths=coverage*.out,results/coverage*out -Dsonar.go.tests.reportPaths=test-report*.out -Dsonar.javascript.lcov.reportPaths=lattice/coverage/lcov.info + - cd ./idk + - ls ./testdata + - sonar-scanner -Dsonar.projectKey=molecula_featurebase -Dsonar.organization=molecula -Dsonar.sources=. -Dsonar.host.url=https://sonarcloud.io -Dsonar.go.coverage.reportPaths=testdata/*coverage.out -Dsonar.go.tests.reportPaths=testdata/*report.out -Dsonar.coverage.exclusions=**/*_test.go -Dsonar.cpd.exclusions=**/*_test.go needs: - job: run go tests future plg - job: run go tests future - job: run jest tests - job: clustertests - -build for linux amd64: - stage: build - image: golang:$GOVERSION - rules: - - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' - script: - - rm -r lattice - - tar -xvf lattice.tar.gz - - go get -v -u github.com/rakyll/statik - - /go/bin/statik -src=lattice - - GOOS="linux" GOARCH="amd64" make build FLAGS="-o featurebase_linux_amd64" - - GOOS="linux" GOARCH="amd64" go build -o roaring-migrate_linux_amd64 ./cmd/roaring-migrate - artifacts: - paths: - - featurebase_linux_amd64 - - roaring-migrate_linux_amd64 + - job: run go tests idk race + - job: run go tests idk sasl + - job: run go tests idk 533 build for linux arm64: stage: build @@ -377,22 +567,6 @@ package plg for linux arm64: # end PLG -build amd container fb: - stage: build - needs: - - "build for linux amd64" - tags: - - shell - rules: - - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' - before_script: - - echo "${DOCKER_DEPLOY_TOKEN}" | docker login -u ${DOCKER_DEPLOY_USER} --password-stdin ${CI_REGISTRY} - script: - - tag=${CI_REGISTRY_IMAGE}/featurebase:linux-amd64-${CI_COMMIT_REF_SLUG} - - docker build --build-arg GO_VERSION=$GOVERSION --build-arg ARCH=amd64 -t $tag -f .gitlab/Dockerfile . - - docker push $tag - - echo Created docker featurebase image with tag "$tag" - build arm container fb: stage: build needs: @@ -409,6 +583,128 @@ build arm container fb: - docker push $tag - echo Created docker featurebase image with tag "$tag" +### start idk builds ### +# building them all serially because otherwise you get container name conflicts. +idk build_all: + stage: build + variables: + BUILD_NAME: build_${CI_COMMIT_SHA}_${CI_CONCURRENT_ID} + extends: + - .setup_ssh + tags: + - shell + rules: + - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' + script: + - cd ./idk/ + - make docker-build GOOS="linux" GOARCH="amd64" BUILD_CGO=1 + - make docker-build GOOS="darwin" GOARCH="amd64" + - make docker-build GOOS="darwin" GOARCH="arm64" + artifacts: + paths: + - ./idk/build/* + +idk build_linux_arm64: + stage: build + extends: + - .setup_ssh + tags: + - shell-arm64 + rules: + - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"' + script: + - cd ./idk/ + - make docker-build GOOS="linux" GOARCH="arm64" BUILD_CGO=1 BUILD_NAME="linux-arm64" + artifacts: + paths: + - ./idk/build/* + +# building them all serially because otherwise you get container name conflicts. +# only do containers on default branch +idk package_docker_all: + stage: build + extends: + - .setup_ssh + tags: + - shell + rules: + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + script: + - cd ./idk/ + - make docker GOOS="linux" GOARCH="amd64" + - make docker GOOS="linux" GOARCH="arm64" + - make docker GOOS="darwin" GOARCH="amd64" + - make docker GOOS="darwin" GOARCH="arm64" + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - make docker-tag-push GOOS="linux" GOARCH="amd64" + - make docker-tag-push GOOS="linux" GOARCH="arm64" + - make docker-tag-push GOOS="darwin" GOARCH="amd64" + - make docker-tag-push GOOS="darwin" GOARCH="arm64" + needs: + - job: idk build_all + - job: idk build_linux_arm64 + +idk s3 dump: + stage: post build + extends: + - .setup_ssh + allow_failure: false + variables: + PROFILE: "service-fb-ci" + AWS_SSH_PRIVATE_KEY: $AWS_FBCI_SSH_KEY + AWS_ACCESS_KEY_ID: $AWS_FBCI_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: $AWS_FBCI_SECRET_ACCESS_KEY + tags: + - shell + rules: + - if: '$CI_COMMIT_TAG == null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + script: + - aws configure set aws_access_key_id $AWS_FBCI_ACCESS_KEY_ID + - aws configure set aws_secret_access_key $AWS_FBCI_SECRET_ACCESS_KEY + - aws configure set region "us-east-2" + - aws configure set aws_profile $PROFILE + - aws s3 cp ./idk/build/ s3://molecula-artifact-storage/idk/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/ --recursive + - aws s3 cp ./idk/build/ s3://molecula-artifact-storage/idk/${CI_COMMIT_BRANCH}/_latest/ --recursive + needs: + - job: idk build_all + - job: idk build_linux_arm64 + +idk s3 dump tag: + stage: post build + extends: + - .setup_ssh + variables: + PROFILE: "service-fb-ci" + AWS_SSH_PRIVATE_KEY: $AWS_FBCI_SSH_KEY + AWS_ACCESS_KEY_ID: $AWS_FBCI_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: $AWS_FBCI_SECRET_ACCESS_KEY + LOCATION: molecula-artifact-storage/idk/_tags + tags: + - shell + rules: + - if: '$CI_COMMIT_TAG != null && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")' + script: + - aws configure set aws_access_key_id $AWS_FBCI_ACCESS_KEY_ID + - aws configure set aws_secret_access_key $AWS_FBCI_SECRET_ACCESS_KEY + - aws configure set region "us-east-2" + - aws configure set aws_profile $PROFILE + - | + for goos in "darwin" "linux"; do + for goarch in "amd64" "arm64"; do + dir=idk-${CI_COMMIT_TAG}-${goos}-${goarch} + echo "Directory ${dir}" + mkdir ${dir} + mv ./idk/build/idk-${goos}-${goarch}/molecula-consumer-* ${dir}/ + tar cvzf ${dir}.tar.gz ${dir} + aws s3 cp ${dir} s3://${LOCATION}/${CI_COMMIT_TAG}/${dir}/ --recursive + aws s3 cp ${dir}.tar.gz s3://${LOCATION}/${CI_COMMIT_TAG}/ + done + done + needs: + - job: idk build_all + - job: idk build_linux_arm64 +### end idk builds ### + # clustertests doesn't run in docker, and requires several things to be set up on the runner to work: # 1. Install Go, make sure it's on the path # 2. Make sure "make" is installed @@ -502,16 +798,18 @@ smoke test auth: - export PATH=$PATH:/usr/local/go/bin - TF_VAR_cluster_prefix="pipeline-$CI_PIPELINE_ID-auth-smoke-$CI_JOB_ID" - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - # download datagen for FB-1270 repro test. TODO replace w/ locally built datagen once we merge IDK into FB - - aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-arm64/datagen ./datagen_linux_arm64 - - chmod +x ./datagen_linux_arm64 + # download datagen for FB-1270 repro test. + - aws s3 cp s3://molecula-artifact-storage/idk/${CI_COMMIT_BRANCH}/_latest/idk-linux-arm64/datagen ./datagen_linux_arm64 + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./datagen_linux_arm64 ./featurebase_linux_arm64 script: - - ./qa/scripts/auth-smoke/setup.sh + - ./qa/scripts/auth-smoke/setup.sh $CI_COMMIT_BRANCH - ./qa/scripts/auth-smoke/test.sh after_script: - ./qa/scripts/auth-smoke/teardown.sh needs: - - job: build for linux arm64 + - job: s3 dump + - job: idk s3 dump artifacts: when: always paths: @@ -559,17 +857,19 @@ smoke test: - export PATH=$PATH:/usr/local/go/bin - TF_VAR_cluster_prefix="pipeline-$CI_PIPELINE_ID-smoke-$CI_JOB_ID" - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - # download datagen for FB-1270 repro test. TODO replace w/ locally built datagen once we merge IDK into FB - - aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-arm64/datagen ./datagen_linux_arm64 - - chmod +x ./datagen_linux_arm64 + # download datagen for FB-1270 repro test. + - aws s3 cp s3://molecula-artifact-storage/idk/${CI_COMMIT_BRANCH}/_latest/idk-linux-arm64/datagen ./datagen_linux_arm64 + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./datagen_linux_arm64 ./featurebase_linux_arm64 script: - - ./qa/scripts/setupSmokeTest.sh + - ./qa/scripts/setupSmokeTest.sh $CI_COMMIT_BRANCH - ./qa/scripts/testSmokeTest.sh - ./qa/scripts/bug_repro_tests.sh after_script: - ./qa/scripts/teardownSmokeTest.sh needs: - - job: build for linux arm64 + - job: s3 dump + - job: idk s3 dump artifacts: when: always paths: @@ -628,19 +928,19 @@ tremor-delete-test: script: - echo "Start CloudFormation deploy..." - > - aws cloudformation deploy - --stack-name $CF_STACK_NAME - --template-file ./qa/cft/FeatureBaseClusterCFTTremor.yaml - --parameter-overrides - FBInstanceCount=$FB_INSTANCE_COUNT - EBSVolumeSize=1200 - TestName=$CI_JOB_NAME - TestID=$CI_JOB_ID - Name=$CF_VAR_cluster_prefix - Prefix=$CF_VAR_cluster_prefix - TestCommitSHA=$CI_COMMIT_SHA - --capabilities CAPABILITY_NAMED_IAM - --profile $PROFILE + aws cloudformation deploy + --stack-name $CF_STACK_NAME + --template-file ./qa/cft/FeatureBaseClusterCFTTremor.yaml + --parameter-overrides + FBInstanceCount=$FB_INSTANCE_COUNT + EBSVolumeSize=1200 + TestName=$CI_JOB_NAME + TestID=$CI_JOB_ID + Name=$CF_VAR_cluster_prefix + Prefix=$CF_VAR_cluster_prefix + TestCommitSHA=$CI_COMMIT_SHA + --capabilities CAPABILITY_NAMED_IAM + --profile $PROFILE - echo "CloudFormation deploy done." - echo "Start configuring and start featurebase..." - ./qa/scripts/setupTremorDeleteCFT.sh $CF_STACK_NAME $PROFILE $REPLICA_COUNT $FB_INSTANCE_COUNT $CI_COMMIT_BRANCH @@ -660,6 +960,9 @@ tremor-delete-test: - echo "Deleting stack after test, stack name = ${CF_STACK_NAME}" - aws cloudformation delete-stack --stack-name $CF_STACK_NAME --profile $PROFILE --retain-resources DeploymentEC2Role - echo "Delete stack complete!" + needs: + - job: s3 dump + - job: idk s3 dump samsung-gauntlet: stage: gauntlet @@ -710,13 +1013,18 @@ samsung-gauntlet: - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - export INSTANCE_ID=$(curl --silent --fail "http://169.254.169.254/latest/meta-data/instance-id" | tee instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --protected-from-scale-in --profile $INFRA_PROFILE + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./featurebase_linux_arm64 script: - - ./qa/scripts/setupSamsungGauntlet.sh + - ./qa/scripts/setupSamsungGauntlet.sh $CI_COMMIT_BRANCH - ./qa/scripts/testSamsungGauntlet.sh after_script: - ./qa/scripts/teardownSamsungGauntlet.sh || true # leaving dangling resources is better than dangling ASG instances that can't be terminated - export INSTANCE_ID=$(cat instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --no-protected-from-scale-in --profile $INFRA_PROFILE + needs: + - job: s3 dump + - job: idk s3 dump backup-restore-gauntlet: stage: gauntlet @@ -767,15 +1075,18 @@ backup-restore-gauntlet: - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - export INSTANCE_ID=$(curl --silent --fail "http://169.254.169.254/latest/meta-data/instance-id" | tee instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --protected-from-scale-in --profile $INFRA_PROFILE + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./featurebase_linux_arm64 script: - - ./qa/scripts/setupBackupRestoreGauntlet.sh - - ./qa/scripts/testBackupRestoreGauntlet.sh + - ./qa/scripts/setupBackupRestoreGauntlet.sh $CI_COMMIT_BRANCH + - ./qa/scripts/testBackupRestoreGauntlet.sh $CI_COMMIT_BRANCH after_script: - ./qa/scripts/teardownBackupRestoreGauntlet.sh || true # leaving dangling resources is better than dangling ASG instances that can't be terminated - export INSTANCE_ID=$(cat instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --no-protected-from-scale-in --profile $INFRA_PROFILE needs: - - build for linux arm64 + - job: s3 dump + - job: idk s3 dump s3 dump: stage: post build @@ -808,7 +1119,7 @@ s3 dump: - aws s3 cp featurebase_darwin_arm64 s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/featurebase_darwin_arm64 - aws s3 cp featurebase_darwin_arm64 s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_darwin_arm64 - aws s3 cp roaring-migrate_darwin_arm64 s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/roaring-migrate_darwin_arm64 - - aws s3 cp roaring-migrate_darwin_arm64 s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/roaring-migrate_darwin_arm64 + - aws s3 cp roaring-migrate_darwin_arm64 s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/roaring-migrate_darwin_arm64 - aws s3 cp single_node_featurebase_linux_amd64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/single_node_featurebase_linux_amd64 - aws s3 cp single_node_featurebase_linux_amd64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/_latest/single_node_featurebase_linux_amd64 - aws s3 cp single_node_featurebase_linux_arm64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/single_node_featurebase_linux_arm64 @@ -816,7 +1127,7 @@ s3 dump: - aws s3 cp single_node_featurebase_darwin_amd64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/single_node_featurebase_darwin_amd64 - aws s3 cp single_node_featurebase_darwin_amd64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/_latest/single_node_featurebase_darwin_amd64 - aws s3 cp single_node_featurebase_darwin_arm64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/${CI_COMMIT_SHORT_SHA}/single_node_featurebase_darwin_arm64 - - aws s3 cp single_node_featurebase_darwin_arm64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/_latest/single_node_featurebase_darwin_arm64 + - aws s3 cp single_node_featurebase_darwin_arm64 s3://molecula-artifact-storage/single_node_featurebase/${CI_COMMIT_BRANCH}/_latest/single_node_featurebase_darwin_arm64 needs: - job: build for darwin amd64 - job: build for darwin arm64 @@ -889,15 +1200,18 @@ perf_delete: - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - export INSTANCE_ID=$(curl --silent --fail "http://169.254.169.254/latest/meta-data/instance-id" | tee instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --protected-from-scale-in --profile $INFRA_PROFILE + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./featurebase_linux_arm64 script: - - ./qa/scripts/perf/delete/deleteSetup.sh - - ./qa/scripts/perf/delete/deleteTest.sh + - ./qa/scripts/perf/delete/deleteSetup.sh $CI_COMMIT_BRANCH + - ./qa/scripts/perf/delete/deleteTest.sh $CI_COMMIT_BRANCH after_script: - ./qa/scripts/perf/delete/deleteTeardown.sh || true - export INSTANCE_ID=$(cat instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --no-protected-from-scale-in --profile $INFRA_PROFILE needs: - - job: build for linux arm64 + - job: s3 dump + - job: idk s3 dump s3 dump tag: stage: post build @@ -992,4 +1306,6 @@ cleanup_build_job: - aws configure set aws_profile $FBCI_PROFILE - ./qa/scripts/gitlabCleanupBuild.sh when: always - + needs: + - job: smoke test + - job: smoke test auth diff --git a/.gitlab/.perf-able-gitlab-ci.yml b/.gitlab/.perf-able-gitlab-ci.yml index cff47b8b2..c115f6959 100644 --- a/.gitlab/.perf-able-gitlab-ci.yml +++ b/.gitlab/.perf-able-gitlab-ci.yml @@ -1,6 +1,6 @@ variables: GOVERSION: "1.17.8" - + stages: - performance @@ -34,7 +34,7 @@ perf_able: - aws configure set region "us-east-2" --profile $INFRA_PROFILE - echo $AWS_FBCI_SSH_KEY > gitlab-featurebase-ci.pem - chmod 400 gitlab-featurebase-ci.pem - - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" - eval $(ssh-agent -s) - mkdir -p ~/.ssh - echo $AWS_FBCI_SSH_KEY > /root/.ssh/gitlab-featurebase-ci.pem @@ -50,8 +50,10 @@ perf_able: - echo "Cluster Prefix --> $TF_VAR_cluster_prefix" - export INSTANCE_ID=$(curl --silent --fail "http://169.254.169.254/latest/meta-data/instance-id" | tee instance_id) - aws autoscaling set-instance-protection --instance-ids "$INSTANCE_ID" --auto-scaling-group-name $ASG_NAME --protected-from-scale-in --profile $INFRA_PROFILE + - aws s3 cp s3://molecula-artifact-storage/featurebase/${CI_COMMIT_BRANCH}/_latest/featurebase_linux_arm64 ./ + - chmod +x ./featurebase_linux_arm64 script: - - ./qa/scripts/perf/able/ableSetup.sh + - ./qa/scripts/perf/able/ableSetup.sh $CI_COMMIT_BRANCH - ./qa/scripts/perf/able/ableTest.sh after_script: - ./qa/scripts/perf/able/ableTeardown.sh || true diff --git a/go.mod b/go.mod index 7e00a234a..b237c5b1f 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,30 @@ module github.com/molecula/featurebase/v3 +replace github.com/go-avro/avro => github.com/pilosa/avro v0.0.0-20200626214113-bc1bf9fd41c1 + require ( github.com/CAFxX/gcnotifier v0.0.0-20220409005548-0153238b886a github.com/DataDog/datadog-go v4.8.3+incompatible + github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect + github.com/alexbrainman/odbc v0.0.0-20211220213544-9c9a2e61c5e2 + github.com/aws/aws-sdk-go v1.42.39 github.com/beevik/ntp v0.3.0 github.com/benbjohnson/immutable v0.3.0 github.com/buger/jsonparser v1.1.1 github.com/cespare/xxhash v1.1.0 + github.com/confluentinc/confluent-kafka-go v1.9.0 github.com/davecgh/go-spew v1.1.1 - github.com/felixge/fgprof v0.9.1 + github.com/denisenkom/go-mssqldb v0.11.0 + github.com/felixge/fgprof v0.9.2 github.com/getsentry/sentry-go v0.13.0 + github.com/glycerine/vprint v0.0.0-20200730000117-76cea49a68ea + github.com/go-avro/avro v0.0.0-20171219232920-444163702c11 + github.com/go-sql-driver/mysql v1.6.0 github.com/go-test/deep v1.0.7 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt v3.2.2+incompatible github.com/golang/protobuf v1.5.2 - github.com/google/go-cmp v0.5.7 + github.com/google/go-cmp v0.5.8 github.com/gorilla/handlers v1.3.0 github.com/gorilla/mux v1.8.0 github.com/gorilla/securecookie v1.1.1 @@ -25,18 +35,21 @@ require ( github.com/opentracing/opentracing-go v1.2.0 github.com/pelletier/go-toml v1.9.5 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.11.1 + github.com/prometheus/client_golang v1.12.2 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/prom2json v1.3.0 + github.com/prometheus/prom2json v1.3.1 github.com/rakyll/statik v0.1.7 + github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/satori/go.uuid v1.2.0 - github.com/shirou/gopsutil/v3 v3.21.9 - github.com/spf13/cobra v1.1.3 + github.com/segmentio/kafka-go v0.4.29 + github.com/shirou/gopsutil/v3 v3.22.5 + github.com/spf13/cobra v1.2.1 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.7.1 - github.com/stretchr/testify v1.7.0 + github.com/spf13/viper v1.8.1 + github.com/stretchr/testify v1.7.1 github.com/uber/jaeger-client-go v2.25.0+incompatible - github.com/zeebo/blake3 v0.1.1 + github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/zeebo/blake3 v0.2.3 go.etcd.io/bbolt v1.3.6 go.etcd.io/etcd v3.3.27+incompatible go.etcd.io/etcd/api/v3 v3.5.4 @@ -45,22 +58,28 @@ require ( go.etcd.io/etcd/server/v3 v3.5.4 golang.org/x/exp v0.0.0-20201008143054-e3b2a7f2fdc7 golang.org/x/mod v0.5.1 - golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c + golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb + golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f + golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 google.golang.org/grpc v1.38.0 gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 + gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183 // indirect gopkg.in/yaml.v2 v2.4.0 modernc.org/mathutil v1.0.0 modernc.org/strutil v1.0.0 + sigs.k8s.io/yaml v1.2.0 vitess.io/vitess v3.0.0-rc.3.0.20190602171040-12bfde34629c+incompatible ) +require ( + github.com/jaffee/commandeer v0.5.0 + github.com/linkedin/goavro/v2 v2.11.1 +) + require ( github.com/DataDog/datadog-go/v5 v5.1.0 // indirect github.com/DataDog/gostackparse v0.5.0 // indirect - github.com/HdrHistogram/hdrhistogram-go v1.1.0 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect - github.com/StackExchange/wmi v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -70,10 +89,12 @@ require ( github.com/dustin/go-humanize v1.0.0 // indirect github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/fsnotify/fsnotify v1.4.9 // indirect - github.com/go-ole/go-ole v1.2.5 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect + github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect - github.com/google/pprof v0.0.0-20210423192551-a2663126120b // indirect + github.com/google/pprof v0.0.0-20211214055906-6f57359322fd // indirect github.com/google/uuid v1.3.0 // indirect github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -83,30 +104,35 @@ require ( github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jonboulle/clockwork v0.3.0 // indirect - github.com/json-iterator/go v1.1.11 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.15.1 // indirect - github.com/magiconair/properties v1.8.1 // indirect + github.com/klauspost/cpuid/v2 v2.0.12 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.5 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pierrec/lz4/v4 v4.1.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/common v0.26.0 // indirect - github.com/prometheus/procfs v0.6.0 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/common v0.33.0 // indirect + github.com/prometheus/procfs v0.7.3 // indirect github.com/rs/cors v1.8.2 // indirect github.com/sirupsen/logrus v1.7.0 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/afero v1.2.2 // indirect - github.com/spf13/cast v1.3.0 // indirect - github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.3.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/stretchr/objx v0.2.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect - github.com/tklauser/go-sysconf v0.3.9 // indirect - github.com/tklauser/numcpus v0.3.0 // indirect + github.com/tklauser/go-sysconf v0.3.10 // indirect + github.com/tklauser/numcpus v0.4.0 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect - github.com/uber/jaeger-lib v2.4.0+incompatible // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect go.etcd.io/etcd/client/v2 v2.305.4 // indirect go.etcd.io/etcd/pkg/v3 v3.5.4 // indirect go.etcd.io/etcd/raft/v3 v3.5.4 // indirect @@ -127,16 +153,13 @@ require ( golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/appengine v1.6.6 // indirect + google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/ini.v1 v1.51.1 // indirect + google.golang.org/protobuf v1.28.0 // indirect + gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect nhooyr.io/websocket v1.8.6 // indirect - sigs.k8s.io/yaml v1.2.0 // indirect ) go 1.17 diff --git a/go.sum b/go.sum index 259d4c5f1..d42e374c7 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,15 @@ cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0 h1:EpMNVUorLiZIELdMZbCYX/ByTFCdoYopYAGxaGVz9ms= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -30,6 +37,7 @@ cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= @@ -60,8 +68,8 @@ github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZ github.com/DataDog/sketches-go v1.0.0 h1:chm5KSXO7kO+ywGWJ0Zs6tdmWU8PBXSbywFVciL6BG4= github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/HdrHistogram/hdrhistogram-go v1.1.0 h1:6dpdDPTRoo78HxAJ6T1HfMiKSnqhgRRqzCuPshRkQ7I= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -78,8 +86,6 @@ github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqR github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= @@ -89,6 +95,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexbrainman/odbc v0.0.0-20211220213544-9c9a2e61c5e2 h1:090cWAt7zsbdvRegKCBVwcCTghjxhUh1PK2KNSq82vw= +github.com/alexbrainman/odbc v0.0.0-20211220213544-9c9a2e61c5e2/go.mod h1:c5eyz5amZqTKvY3ipqerFO/74a/8CYmXOahSr40c+Ww= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -103,6 +111,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/aws/aws-sdk-go v1.42.39 h1:6Lso73VoCI8Zmv3zAMv4BNg2gHAKNOlbLv1s/ew90SI= +github.com/aws/aws-sdk-go v1.42.39/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w= @@ -127,6 +137,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= @@ -154,6 +165,7 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -166,6 +178,8 @@ github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u9 github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/confluentinc/confluent-kafka-go v1.9.0 h1:d1k62oAuQVxgdMdiDQnpkABbtIWTBwXHpDcyGQUw5QQ= +github.com/confluentinc/confluent-kafka-go v1.9.0/go.mod h1:WDFs+KlhHITEoCzEfHSNgj5aP7vjajyYbZpvTEGs1sE= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= @@ -193,6 +207,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.11.0 h1:9rHa233rhdOyrz2GcP9NM+gi2psgJZ4GWDpL/7ND8HI= github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= @@ -220,6 +235,7 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -230,8 +246,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/felixge/fgprof v0.9.1 h1:E6FUJ2Mlv043ipLOCFqo8+cHo9MhQ203E2cdEK/isEs= -github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphsnGvqxE= +github.com/felixge/fgprof v0.9.2 h1:tAMHtWMyl6E0BimjVbFt7fieU6FpjttsZN7j0wT5blc= +github.com/felixge/fgprof v0.9.2/go.mod h1:+VNi+ZXtHIQ6wIw6bUT8nXQRefQflWECoFyRealT5sg= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -257,6 +273,8 @@ github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjX github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/glycerine/vprint v0.0.0-20200730000117-76cea49a68ea h1:Uiuhuh77mImdrAMjPfw2V8tWw4AF6r9dxbNkECo23SA= +github.com/glycerine/vprint v0.0.0-20200730000117-76cea49a68ea/go.mod h1:q7RHAiHHxYrXtGEkX14OuACg+cHODdKnVvTgpBnOzHk= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= @@ -270,14 +288,17 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= @@ -297,6 +318,7 @@ github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRf github.com/go-redis/redis/v8 v8.0.0/go.mod h1:isLoQT/NFSP7V67lyvM9GmdvLdyZ7pEhsXvvyQtnQTo= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -349,6 +371,7 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -365,6 +388,8 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -388,6 +413,7 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= @@ -403,24 +429,34 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200615235658-03e1cf38a040/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20210423192551-a2663126120b h1:l2YRhr+YLzmSp7KJMswRVk/lO5SwoFIcCLzJsVj+YPc= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -445,6 +481,7 @@ github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= @@ -521,6 +558,7 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= @@ -588,12 +626,16 @@ github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jaffee/commandeer v0.5.0 h1:241M9N+gHQmPyjIG+yy8GGcZPfzFuIyOmJHzm5ka92g= +github.com/jaffee/commandeer v0.5.0/go.mod h1:kCwfuSvZ2T0NVEr3LDSo6fDUgi0xSBnAVDdkOKTtpLQ= github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= @@ -610,8 +652,9 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -641,10 +684,14 @@ github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8 github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= +github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -669,10 +716,15 @@ github.com/lib/pq v1.10.5 h1:J+gdV2cUmX7ZqL2B0lFcW0m+egaHC2V3lpO8nWxyYiQ= github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linkedin/goavro/v2 v2.11.1 h1:4cuAtbDfqkKnBXp9E+tRkIJGa6W6iAjwonwt8O1f4U0= +github.com/linkedin/goavro/v2 v2.11.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -721,6 +773,7 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -730,8 +783,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/molecula/apophenia v0.0.0-20190827192002-68b7a14a478b h1:cZADDaNYM7xn/nklO3g198JerGQjadFuA0ofxBJgK0Y= github.com/molecula/apophenia v0.0.0-20190827192002-68b7a14a478b/go.mod h1:uXd1BiH7xLmgkhVmspdJLENv6uGWrTL/MQX2TN7Yz9s= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= @@ -789,6 +843,7 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -798,8 +853,12 @@ github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.5.2+incompatible h1:WCjObylUIOlKy/+7Abdn34TLIkXiA4UWUMhxq9m9ZXI= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pilosa/avro v0.0.0-20200626214113-bc1bf9fd41c1 h1:VEiqiLmebtgmPmpMhcByL5oXeLmDZyCLx+JmCJxDlG4= +github.com/pilosa/avro v0.0.0-20200626214113-bc1bf9fd41c1/go.mod h1:evNEPnmTS6kdXAZXtqlZgYvM+FwoJ9YdGc7YbLb2RVU= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -807,10 +866,13 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -818,8 +880,11 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -835,8 +900,10 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.33.0 h1:rHgav/0a6+uYgGdNt3jwz8FNSesO/Hsang3O0T9A5SE= +github.com/prometheus/common v0.33.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -845,16 +912,17 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/prom2json v1.3.0 h1:BlqrtbT9lLH3ZsOVhXPsHzFrApCTKRifB7gjJuypu6Y= -github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+1isKykIP5ZnM= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/prom2json v1.3.1 h1:OogL5hsrJpLPz3jZ4LPz4sJRTtADzViCNRQoqrzUQvk= +github.com/prometheus/prom2json v1.3.1/go.mod h1:A8Oy9aiQx4wrJY9ya1i4nHOySGmkVp5EO0aU1iSJR+g= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237 h1:HQagqIiBmr8YXawX/le3+O26N+vPPC1PtjaF3mwnook= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -876,10 +944,11 @@ github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/kafka-go v0.4.29 h1:4ujULpikzHG0HqKhjumDghFjy/0RRCSl/7lbriwQAH0= github.com/segmentio/kafka-go v0.4.29/go.mod h1:m1lXeqJtIFYZayv0shM/tjrAFljvWLTprxBHd+3PnaU= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil/v3 v3.21.9 h1:Vn4MUz2uXhqLSiCbGFRc0DILbMVLAY92DSkT8bsYrHg= -github.com/shirou/gopsutil/v3 v3.21.9/go.mod h1:YWp/H8Qs5fVmf17v7JNZzA0mPJ+mS2e9JdiUF9LlKzQ= +github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= +github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -903,25 +972,30 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -935,8 +1009,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= @@ -957,10 +1032,10 @@ github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSR github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= github.com/tinylib/msgp v1.1.2 h1:gWmO7n0Ys2RBEb7GPYB9Ujq8Mk5p2U08lRnmMcGy6BQ= github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= -github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= -github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= -github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= +github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= @@ -970,8 +1045,9 @@ github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqri github.com/twitchtv/twirp v8.1.1+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ= -github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= +github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -998,7 +1074,9 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= @@ -1012,14 +1090,17 @@ github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FB github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/blake3 v0.1.1 h1:Nbsts7DdKThRHHd+YNlqiGlRqGEF2bE2eXN+xQ1hsEs= -github.com/zeebo/blake3 v0.1.1/go.mod h1:G9pM4qQwjRzF1/v7+vabMj/c5mWpGZ2Wzo3Eb4z0pb4= -github.com/zeebo/pcg v1.0.0 h1:dt+dx+HvX8g7Un32rY9XWoYnd0NmKmrIzpHF7qiTDj0= -github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= +github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= +github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= +github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -1029,10 +1110,13 @@ go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v3.3.27+incompatible h1:5hMrpf6REqTHV2LW2OclNpRtxI0k9ZplMemJsMSWju0= go.etcd.io/etcd v3.3.27+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg= go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v2 v2.305.4 h1:Dcx3/MYyfKcPNLpR4VVQUP5KgYrBeJtktBwEKkw08Ao= go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= @@ -1051,6 +1135,8 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE= @@ -1156,6 +1242,7 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= @@ -1167,6 +1254,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= @@ -1186,9 +1275,11 @@ golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1209,26 +1300,46 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1237,10 +1348,12 @@ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1300,14 +1413,22 @@ golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201014080544-cc95f250f6bc/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1317,11 +1438,12 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1405,9 +1527,19 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1437,15 +1569,24 @@ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1475,8 +1616,22 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1496,9 +1651,16 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= @@ -1514,11 +1676,14 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 h1:nAKgcpJLXRHF56cKCP3bN8gTTQmmNAZFEblbyGKhKTo= gopkg.in/DataDog/dd-trace-go.v1 v1.38.1/go.mod h1:GBhK4yaMJ1h329ivtKAqRNe1EZ944UnZwtz5lh7CnJc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183 h1:PGIdqvwfpMUyUP+QAlAnKTSWQ671SmYjoou2/5j7HXk= +gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183/go.mod h1:FvqrFXt+jCsyQibeRv4xxEJBL5iG2DDW5aeJwzDiq4A= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1531,8 +1696,9 @@ gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.1 h1:GyboHr4UqMiLUybYjd22ZjQIKEJEpgtLXtuGbR21Oho= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= diff --git a/idk/.cloud-env.template b/idk/.cloud-env.template new file mode 100644 index 000000000..581444b8e --- /dev/null +++ b/idk/.cloud-env.template @@ -0,0 +1,4 @@ +PROFILE = +AWS_REGION = +ECR_URL = +ECR_REPO = diff --git a/idk/Dockerfile b/idk/Dockerfile new file mode 100644 index 000000000..266b2dd1b --- /dev/null +++ b/idk/Dockerfile @@ -0,0 +1,38 @@ +ARG GO_VERSION=1.17.8 + +FROM golang:1.17.8-stretch as builder + +WORKDIR / +RUN ["apt-get","update","-y"] +RUN ["apt-get","install","-y","git","unixodbc","unixodbc-dev","netcat", "build-essential","musl-tools"] +RUN ["git", "clone", "https://github.com/edenhill/librdkafka.git"] +WORKDIR /librdkafka +RUN ["./configure", "--prefix", "/usr"] +RUN ["make"] +RUN ["make", "install"] + +WORKDIR /featurebase + +COPY . . + +ARG MAKE_FLAGS +ARG GO_BUILD_FLAGS + +WORKDIR /featurebase/idk/ + +RUN make build GO_BUILD_FLAGS="-mod=vendor ${GO_BUILD_FLAGS}" ${MAKE_FLAGS} + +FROM ubuntu:20.04 as runner + +RUN ["apt-get","update","-y"] +RUN ["apt-get","install","-y","unixodbc-dev","netcat","ca-certificates", "musl-tools"] + +COPY --from=builder /idk/bin/* /usr/local/bin/ + +COPY /docker-sasl/ssl_keys /etc/kafka/secrets + +# Verify that the linker can find everything. +FROM runner as linkcheck +RUN if [ -e /usr/local/bin/molecula-consumer-sql-odbc ] ; then ldd /usr/local/bin/molecula-consumer-sql-odbc; fi + +FROM runner diff --git a/idk/Dockerfile-fakeIDP b/idk/Dockerfile-fakeIDP new file mode 100644 index 000000000..a6f3729a7 --- /dev/null +++ b/idk/Dockerfile-fakeIDP @@ -0,0 +1,7 @@ +FROM golang:1.17.8 + +WORKDIR / +COPY fakeidp ./ +RUN go build . + +ENTRYPOINT ["/fakeidp"] diff --git a/idk/Dockerfile-test b/idk/Dockerfile-test new file mode 100644 index 000000000..9a7a7335c --- /dev/null +++ b/idk/Dockerfile-test @@ -0,0 +1,24 @@ +ARG GO_VERSION=1.17.8 + +FROM golang:${GO_VERSION} as build_base + +WORKDIR / +RUN ["apt-get","update","-y"] +RUN ["apt-get","install","-y","git","unixodbc","unixodbc-dev","netcat", "build-essential","musl-tools"] +RUN ["git", "clone", "https://github.com/edenhill/librdkafka.git"] +WORKDIR /librdkafka +# need to install dependencies because librdkafka does not find openssl header otherwise +RUN ["./configure", "--install-deps"] +RUN ["./configure", "--prefix", "/usr"] +RUN ["make"] +RUN ["make", "install"] + +FROM build_base + +WORKDIR /go/src/github.com/molecula/featurebase/ + +COPY . . + +WORKDIR /go/src/github.com/molecula/featurebase/idk/ + +CMD ["go","test","-v","-mod=vendor","-tags=odbc,dynamic","./..."] diff --git a/idk/Dockerfile-wait b/idk/Dockerfile-wait new file mode 100644 index 000000000..35dae38c1 --- /dev/null +++ b/idk/Dockerfile-wait @@ -0,0 +1,8 @@ +FROM ubuntu:18.04 + +RUN ["apt-get", "update", "-y"] +RUN ["apt-get", "install", "-y", "postgresql-client", "curl", "netcat"] + +ADD wait.sh /wait + +ENTRYPOINT ["/wait"] diff --git a/idk/Makefile b/idk/Makefile new file mode 100644 index 000000000..6f73760d7 --- /dev/null +++ b/idk/Makefile @@ -0,0 +1,311 @@ +GO ?= go +GOOS ?= $(shell $(GO) env GOOS) +GOARCH ?= $(shell $(GO) env GOARCH) +GO_VERSION=1.17.8 +GO_BUILD_FLAGS= +ODBC_ENABLED= +BINOUT ?= bin +VERSION := $(shell git describe --tags 2> /dev/null || git rev-parse --verify --short=7 HEAD) +VERSION_ID = $(VERSION)-$(GOOS)-$(GOARCH) +BUILD_TIME := $(shell date -u +%FT%T%z) +BRANCH_NAME ?= "" + +# We allow setting a custom docker-compose "project". Multiple of the +# same docker-compose environment can exist simultaneously as long as +# they use different projects (the project name is prepended to +# container names and such). This is useful in a CI environment where +# we might be running multiple instances of the tests concurrently. +PROJECT ?= idk +DOCKER_COMPOSE = docker-compose -p $(PROJECT) + +UNAME_P := $(shell uname -p) +ifneq ($(filter arm%,$(UNAME_P)),) + IS_ARM := 1 +else + IS_ARM := 0 +endif + +ifneq ($(filter Darwin%,$(shell uname)),) + IS_MAC := 1 +else + IS_MAC := 0 +endif + +LDFLAGS="-X github.com/molecula/featurebase/idk.Version=$(VERSION) -X github.com/molecula/featurebase/idk.BuildTime=$(BUILD_TIME)" +LDFLAGS_STATIC="-linkmode external -extldflags \"-static\" -X github.com/molecula/featurebase/idk.Version=$(VERSION) -X github.com/molecula/featurebase/idk.BuildTime=$(BUILD_TIME) " +export GOPRIVATE=github.com/molecula +export CGO_ENABLED=1 + +# Cloud Deployment environment (dev, prod, staging, etc.), specified with the value of MCLOUD_ENV +# E.g. `MCLOUD_ENV=test make docker-push-ecr` +MCLOUD_ENV ?= dev +MCLOUD_ENV_FILE=.cloud-env.$(MCLOUD_ENV) +-include $(MCLOUD_ENV_FILE) + +PROFILE ?= +AWS_REGION ?= +ECR_URL ?= +ECR_REPO ?= idk + + +BINS := $(patsubst cmd/%,$(BINOUT)/%,$(wildcard cmd/*)) +.PHONY: install build release-build release test $(BINS) + +install: +ifeq ($(filter $(IS_ARM),$(IS_MAC)), 1) + export HOMEBREW_NO_AUTO_UPDATE=1 && [ "${PKG_CONFIG_PATH}" != "$$(brew --prefix openssl)/lib/pkgconfig" ] && (brew list pkg-config || brew install pkg-config) && (brew list librdkafka || brew install librdkafka) && (brew list openssl || brew install openssl) && export PKG_CONFIG_PATH="$$(brew --prefix openssl)/lib/pkgconfig"; \ + $(GO) install -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -tags dynamic ./cmd/... +else + $(GO) install -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) ./cmd/... +endif + +$(BINS): + $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o $@ ./cmd/$(notdir $@) + +$(BINOUT)/molecula-consumer-sql-odbc: + CGO_ENABLED=1 $(GO) build -tags=odbc -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o $@ ./cmd/molecula-consumer-sql + +build_non_cgo: + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/ingester ./cmd/ingester + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-csv ./cmd/molecula-consumer-csv + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka-static ./cmd/molecula-consumer-kafka-static + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-sql ./cmd/molecula-consumer-sql + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-github ./cmd/molecula-consumer-github + CGO_ENABLED=0 $(GO) build -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kinesis ./cmd/molecula-consumer-kinesis + +build_cgo: +ifeq ($(GOARCH), arm64) + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka ./cmd/molecula-consumer-kafka + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka-delete ./cmd/molecula-consumer-kafka-delete + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/kafkagen ./cmd/kafkagen + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/kafkaput ./cmd/kafkaput + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/datagen ./cmd/datagen + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/bankgen ./cmd/bankgen + CGO_ENABLED=1 $(GO) build -tags dynamic $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka-sasl ./cmd/molecula-consumer-kafka-sasl +endif +ifeq ($(GOARCH), amd64) + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka ./cmd/molecula-consumer-kafka + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka-delete ./cmd/molecula-consumer-kafka-delete + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/kafkagen ./cmd/kafkagen + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/kafkaput ./cmd/kafkaput + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/datagen ./cmd/datagen + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/bankgen ./cmd/bankgen + CC=/usr/bin/musl-gcc CGO_ENABLED=1 $(GO) build -tags "musl static" -ldflags $(LDFLAGS_STATIC) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-kafka-sasl ./cmd/molecula-consumer-kafka-sasl +endif + + CGO_ENABLED=1 $(GO) build -tags=odbc -ldflags $(LDFLAGS) $(GO_BUILD_FLAGS) -o bin/molecula-consumer-sql-odbc ./cmd/molecula-consumer-sql + +BUILD_CGO ?= 0 +build: + @echo GOOS=$(GOOS) GOARCH=$(GOARCH) uname -p=$(UNAME_P) build_cgo=$(BUILD_CGO) + make build_non_cgo +ifeq ($(BUILD_CGO), 1) + make build_cgo +endif + +release-build: + mkdir -p build/molecula-consumer-$(VERSION_ID)/ + $(MAKE) build BINOUT=build/molecula-consumer-$(VERSION_ID)/ + tar -cvz -C build -f build/molecula-consumer-$(VERSION_ID).tar.gz molecula-consumer-$(VERSION_ID)/ + @echo Created release build: build/molecula-consumer-$(VERSION_ID).tar.gz + +release: check-clean + make release-build GOOS=linux GOARCH=amd64 + make release-build GOOS=linux GOARCH=arm64 + make release-build GOOS=darwin GOARCH=amd64 + make release-build GOOS=darwin GOARCH=arm64 + +test: + $(GO) test ./... + +test-local: testenv + IDK_TEST_CERT_PATH=$(shell pwd)/testenv/certs \ + IDK_TEST_KAFKA_HOST=localhost:9092 \ + IDK_TEST_PILOSA_GRPC_HOST=localhost:20101 \ + IDK_TEST_PILOSA_HOST=localhost:10101 \ + IDK_TEST_PILOSA_TLS_HOST=https://localhost:10111 \ + IDK_TEST_REGISTRY_HOST=localhost:8081 \ + $(GO) test $(TESTFLAGS) ./... + +vendor: ../go.mod + $(GO) mod vendor + +build-%: + $(DOCKER_COMPOSE) build $* + +pull-%: + $(DOCKER_COMPOSE) pull $* + +save-%-logs: + $(DOCKER_COMPOSE) logs $* > ./testdata/$(PROJECT)_$*_logs.txt + + +start-all: .pulled testenv build-wait + echo "branch name" ${BRANCH_NAME} + $(DOCKER_COMPOSE) up -d zookeeper + $(DOCKER_COMPOSE) run -T wait zookeeper 'echo "ruok" | nc -w 2 zookeeper 2181 | grep imok' + $(DOCKER_COMPOSE) up -d kafka + $(DOCKER_COMPOSE) up -d schema-registry + $(DOCKER_COMPOSE) up -d postgres + $(DOCKER_COMPOSE) run -T wait postgres pg_isready -h postgres -p 5432 -U postgres + BRANCH_NAME=${BRANCH_NAME} $(DOCKER_COMPOSE) up -d pilosa + BRANCH_NAME=${BRANCH_NAME} $(DOCKER_COMPOSE) up -d pilosa-tls + BRANCH_NAME=${BRANCH_NAME} $(DOCKER_COMPOSE) up -d pilosa-auth + $(DOCKER_COMPOSE) run -T wait pilosa curl --silent --fail http://pilosa:10101/status + $(DOCKER_COMPOSE) run -T wait pilosa-tls curl --silent --cacert /certs/ca.crt --key /certs/theclient.key --cert /certs/theclient.crt --fail https://pilosa-tls:10111/status + $(DOCKER_COMPOSE) run -T wait pilosa-auth curl --silent --fail http://pilosa-auth:10105/version + $(DOCKER_COMPOSE) run -T wait kafka nc -z kafka 9092 + $(DOCKER_COMPOSE) run -T wait schema-registry curl --silent --fail http://schema-registry:8081/config + +start-postgres: build-wait testenv .pulled + $(DOCKER_COMPOSE) up -d postgres + $(DOCKER_COMPOSE) run -T wait postgres pg_isready -h postgres -p 5432 -U postgres + +start-pilosa: build-pilosa start-postgres build-wait testenv .pulled + $(DOCKER_COMPOSE) up -d pilosa + $(DOCKER_COMPOSE) run -T wait pilosa curl --silent --fail http://pilosa:10101/status + +start-pilosa-tls: build-pilosa-tls build-wait testenv .pulled + $(DOCKER_COMPOSE) up -d pilosa-tls + $(DOCKER_COMPOSE) run -T wait pilosa-tls curl --silent --cacert /certs/ca.crt --key /certs/theclient.key --cert /certs/theclient.crt --fail https://pilosa-tls:10111/status + +start-pilosa-auth: build-pilosa-auth build-wait testenv .pulled + $(DOCKER_COMPOSE) up -d pilosa-auth + $(DOCKER_COMPOSE) run -T wait pilosa-auth curl --silent --fail http://pilosa-auth:10105/version + +start-zookeeper: pull-zookeeper testenv + $(DOCKER_COMPOSE) up -d zookeeper + $(DOCKER_COMPOSE) run -T wait zookeeper 'echo "ruok" | nc -w 2 zookeeper 2181 | grep imok' + +start-kafka: pull-kafka start-zookeeper build-wait testenv + $(DOCKER_COMPOSE) up -d kafka + $(DOCKER_COMPOSE) run -T wait kafka nc -z kafka 9092 + +start-schema-registry: start-zookeeper start-kafka pull-schema-registry build-wait testenv + $(DOCKER_COMPOSE) up -d schema-registry + $(DOCKER_COMPOSE) run -T wait schema-registry curl --silent --fail http://schema-registry:8081/config + +startup-old: start-postgres start-pilosa start-pilosa-tls start-pilosa-auth start-zookeeper start-kafka start-schema-registry +startup: start-all + +shutdown: + $(DOCKER_COMPOSE) down -v --remove-orphans + rm .pulled + +test-all: testenv + $(MAKE) startup + $(MAKE) test-run + $(DOCKER_COMPOSE) logs kafka | grep "Kafka version" + $(MAKE) shutdown + + +test-all-race: testenv + $(MAKE) startup + $(MAKE) test-run-race + $(MAKE) shutdown + +test-all-kafka-sasl: testenv + $(MAKE) startup + $(MAKE) test-run-kafka-sasl + $(MAKE) shutdown + +TCMD ?= ./... +# do "make startup", then e.g. "make test-run-local TCMD='-run=MyFavTest ./kafka'" +test-run-local: + pwd + $(DOCKER_COMPOSE) build idk-test + $(DOCKER_COMPOSE) run -T idk-test go test -mod=vendor -tags=odbc,dynamic $(TCMD) + + +TPKG ?= ./... +test-run: testenv vendor + $(DOCKER_COMPOSE) build idk-test + $(DOCKER_COMPOSE) run -T idk-test bash -c "set -o pipefail; go test -v -mod=vendor -tags=odbc,dynamic $(TPKG) -covermode=atomic -coverpkg=$(TPKG) -json -coverprofile=/testdata/$(PROJECT)_coverage.out | tee /testdata/$(PROJECT)_report.out" + $(DOCKER_COMPOSE) run -T idk-test /go/src/github.com/molecula/featurebase/idk/reingest_test.sh + + +test-run-race: testenv vendor + $(DOCKER_COMPOSE) build idk-test + $(DOCKER_COMPOSE) run -T idk-test bash -c "set -o pipefail; go test -v -mod=vendor -race -covermode=atomic -tags=dynamic $(TPKG) -coverpkg=$(TPKG) -timeout=30m -json -coverprofile=/testdata/$(PROJECT)_coverage.out | tee /testdata/$(PROJECT)_report.out" + +test-run-kafka-sasl: testenv vendor + $(DOCKER_COMPOSE) build idk-test + $(DOCKER_COMPOSE) run -T idk-test bash -c "set -o pipefail; go test -v --tags=kafka_sasl -mod=vendor -race -timeout=30m $(TPKG) -covermode=atomic -coverpkg=$(TPKG) -json -coverprofile=/testdata/$(PROJECT)_coverage.out | tee /testdata/$(PROJECT)_report.out" + +.pulled: + $(DOCKER_COMPOSE) pull + touch .pulled + +testenv: testenv/certs + +testenv/certs: + certstrap --depot-path testenv/certs init --common-name ca --passphrase "" --expires "100 years" + certstrap --depot-path=testenv/certs request-cert --domain localhost --common-name localhost --passphrase "" + certstrap --depot-path=testenv/certs sign --CA ca --expires "100 years" localhost + certstrap --depot-path=testenv/certs request-cert --domain pilosa-tls --common-name pilosa-tls --passphrase "" + certstrap --depot-path=testenv/certs sign --CA ca --expires "100 years" pilosa-tls + certstrap --depot-path=testenv/certs request-cert --domain theclient --common-name theclient --passphrase "" + certstrap --depot-path=testenv/certs sign --CA ca --expires "100 years" theclient + +# Create release using Docker +docker-release: + @if [ $(IS_ARM) = 1 ]; then \ + echo Building linux-amd64 image on $(UNAME_P) is not supported; \ + else \ + $(MAKE) docker-build GOOS=linux GOARCH=amd64; \ + fi + $(MAKE) docker-build GOOS=darwin GOARCH=amd64 + $(MAKE) docker-build GOOS=darwin GOARCH=arm64 + $(MAKE) docker-build GOOS=linux GOARCH=arm64 + + +# This allows multiple concurrent builds to happen in CI without +# creating container name conflicts and such. (different BUILD_NAMEs +# are passed in from gitlab-ci.yml) +BUILD_NAME ?= idk-build + +# Build a release in Docker +docker-build: vendor + DOCKER_BUILDKIT=0 docker build \ + -f ../idk/Dockerfile \ + --build-arg GO_VERSION=$(GO_VERSION) \ + --build-arg MAKE_FLAGS="GOOS=$(GOOS) GOARCH=$(GOARCH) BUILD_CGO=$(BUILD_CGO)" \ + --build-arg GO_BUILD_FLAGS=$(GO_BUILD_FLAGS) \ + --target builder \ + --tag idk:$(BUILD_NAME) ../. + mkdir -p build/idk-$(GOOS)-$(GOARCH) + docker create --name $(BUILD_NAME) idk:$(BUILD_NAME) + docker cp $(BUILD_NAME):/featurebase/idk/bin/. ./build/idk-$(GOOS)-$(GOARCH) + docker rm $(BUILD_NAME) + +# Create Docker image from Dockerfile +docker-image: vendor + docker build \ + --build-arg GO_VERSION=$(GO_VERSION) \ + --build-arg MAKE_FLAGS="GOOS=$(GOOS) GOARCH=$(GOARCH) BUILD_CGO=$(BUILD_CGO)" \ + --tag registry.gitlab.com/molecula/featurebase/idk:$(VERSION_ID) . + @echo Created docker image: registry.gitlab.com/molecula/featurebase/idk:$(VERSION_ID) + +docker: docker-image + +docker-tag-push: + docker push registry.gitlab.com/molecula/featurebase/idk:$(VERSION_ID) + @echo Pushed docker image: registry.gitlab.com/molecula/featurebase/idk:$(VERSION_ID) + +clean: + $(MAKE) shutdown + rm -rf testenv + +# Error out if there are untracked changes in Git +check-clean: +ifndef SKIP_CHECK_CLEAN + $(if $(shell git status --porcelain),$(error Git status is not clean! Please commit or checkout/reset changes.)) +endif + +docker-push-ecr: docker-image aws-login + docker tag idk:$(VERSION) $(ECR_URL)/$(ECR_REPO):$(VERSION) + aws ecr get-login-password --region $(AWS_REGION) --profile $(PROFILE)| docker login --username AWS --password-stdin $(ECR_URL) + docker push $(ECR_URL)/$(ECR_REPO):$(VERSION) + +aws-login: + aws sso login --profile $(PROFILE) diff --git a/idk/README.md b/idk/README.md new file mode 100644 index 000000000..2cf566851 --- /dev/null +++ b/idk/README.md @@ -0,0 +1,124 @@ +# idk: Ingest Development Kit + +## Integration tests + +To run the tests, you will need to install the following dependencies: + +1. [Docker](https://docs.docker.com/install/) +2. [Docker Compose](https://docs.docker.com/compose/install/) +3. [Certstrap](https://github.com/square/certstrap) + +In addition to these dependancies, you will need to be added to the moleculacorp [Dockerhub](https://hub.docker.com/orgs/moleculacorp) account. + +First start the test environment. This is a docker-compose environment that includes pilosa and a confluent kafka stack. Run the following to start those services: + + make startup + +To build and run the integration tests, run: + + make test-run + +Then to shut down the test environment, run: + + make shutdown + +You can run all of the previous commands by calling test-all: + + make test-all + +The previous command is equivalent to running the following: + + make startup + sleep 30 # wait for services to come up + make test-run + make shutdown + +To run an individual test, you can run the command directly using docker-compose. Note that you must run `docker-compose build idk-test` for docker to run the latest code. Modify the following as needed: + + make startup + docker-compose build idk-test + docker-compose run idk-test /usr/local/go/bin/go test -count=1 -mod=vendor -run=TestCmdMainOne ./kafka + +To shutdown and reset the environment: + + make clean + +## Running dependencies locally (rather than in docker) "make test-local" + +This is for running the tests locally and *not* in Docker... so you +have to be running a bunch of stuff natively on your machine. + +Run Pilosa with default config: + + pilosa server + +Run another pilosa like + + pilosa server --config=pilosa-sec-test.conf + +which will run Pilosa with TLS using certs in testenv. (`make testenv` first if you haven't). + +You also need to be running the Confluent stack which, after you've +installed it from Confluent's site might look something like: + + export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home + confluent local destroy && confluent local start schema-registry + +Or it might not! You may not need the first line, but if you have the +wrong Java version by default, that's how you set it. The second line +may change depending on what version of the confluent stack you get. According to + + confluent version + +I'm running: + + Version: v0.212.0 + Git Ref: 2b04985 + +Use the test-local make target: + + make test-local + +This sets a number of environment variables (which it prints when you +run it), and should set them correctly if you follow the instructions +above, but if you're running things on non-default ports you may need +to tweak them. + +## CSV Ingester + +1. make sure you're running Pilosa (localhost:10101 for these instructions) + +molecula-consumer-csv --primary-key-fields=asset_tag -i sample-index --files sample.csv + + asset_tag__String,fan_time__RecordTime_2006-01-02,fan_val__String_F_YMD + ABCD,2019-01-02,70% + ABCD,2019-01-03,20% + ABCD,2019-01-04,30% + BEDF,2019-01-02,70% + BEDF,2019-01-05,90% + BEDF,2019-01-08,10% + BEDF,2019-01-08,20% + ABCD,2019-01-30,40% + +## Datagen +Datagen is an internal command-line tool to generate various application-specific datasets, and ingest them directly into Pilosa. After running `make install`, run `datagen` with no arguments to see a list of available "sources". + +When running Datagen with local Docker stacks, make sure to add individual docker stacks to the `/etc/hosts` file: + + 127.0.0.1 kafka + 127.0.0.1 pilosa + 127.0.0.1 + +## ODBC Support + +By default, the SQL ingester is not built with ODBC support. +This is because it uses CGO with extra dependencies, and the resulting binaries are not portable. +In order to build with ODBC support, it is necessary to install `unixODBC` to the system. +Then run: +``` +make bin/molecula-consumer-sql-odbc +``` + +Different Linux distros will store certain libraries in different locations. +ODBC uses dynamic library loading to handle drivers, so full static linking of dependencies is not possible. +It is therefore necessary to build on a system with the same distro and the same software versions as the target machine. diff --git a/idk/api/codec.go b/idk/api/codec.go new file mode 100644 index 000000000..2b1956aa3 --- /dev/null +++ b/idk/api/codec.go @@ -0,0 +1,84 @@ +package api + +import ( + "encoding/json" + "io" + + "github.com/pkg/errors" +) + +// newJSONCodec creates a codec to stream a JSON array of objects, each of which represents a record. +// This returns an error if the data stream does not contain the start of a valid JSON array. +func newJSONCodec(r io.Reader) (*jsonCodec, error) { + // Create a JSON decoder. + d := json.NewDecoder(r) + + // Enable the json.Number type in parsed output. + // This allows us to retain precision on numbers, rather than converting them to floating point. + d.UseNumber() + + // Do not allow unknown fields. + d.DisallowUnknownFields() + + // Read the opening bracket of the array. + token, err := d.Token() + if err != nil { + if err == io.EOF { + // The input included nothing (except maybe whitespace). + // This is not expected. + err = io.ErrUnexpectedEOF + } + return nil, errors.Wrap(err, "parsing start of JSON data") + } + switch token { + case json.Delim('['): + // This is the start of the array of records. + + case json.Delim('{'): + // The input is a JSON object instead of an array. + // This seems like an easy user error, so provide a descriptive error. + return nil, errors.New("expected an array of records but found an object") + + default: + // This is a number or something. + return nil, errors.Errorf("expected array of records but got %v", token) + } + + return &jsonCodec{d: d}, nil +} + +type record struct { + PrimaryKey interface{} `json:"primary-key"` + Values map[string]interface{} `json:"values"` +} + +type jsonCodec struct { + d *json.Decoder +} + +func (c *jsonCodec) Next() (record, error) { + if !c.d.More() { + // There are no more records in the stream. + // Read the ']'. + _, err := c.d.Token() + if err != nil { + if err == io.EOF { + // If the closing bracket is missing, then the stream was terminated prematurely. + err = io.ErrUnexpectedEOF + } + return record{}, errors.Wrap(err, "parsing end of record array") + } + + // There are no more records. + return record{}, io.EOF + } + + // Parse the record. + var r record + err := c.d.Decode(&r) + if err != nil { + return record{}, errors.Wrap(err, "parsing record") + } + + return r, nil +} diff --git a/idk/api/codec_test.go b/idk/api/codec_test.go new file mode 100644 index 000000000..d8d62756c --- /dev/null +++ b/idk/api/codec_test.go @@ -0,0 +1,112 @@ +package api + +import ( + "encoding/json" + "io" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestJSONCodec(t *testing.T) { + t.Parallel() + + // Ensure that an empty input is handled gracefully. + t.Run("MissingInput", func(t *testing.T) { + t.Parallel() + + _, err := newJSONCodec(strings.NewReader(``)) + assert.EqualError(t, err, "parsing start of JSON data: unexpected EOF") + }) + + // Ensure that something other than an array is handled gracefully. + t.Run("Object", func(t *testing.T) { + t.Parallel() + + _, err := newJSONCodec(strings.NewReader(`{}`)) + assert.EqualError(t, err, "expected an array of records but found an object") + }) + + // Ensure that an incomplete array is handled gracefully. + t.Run("IncompleteArray", func(t *testing.T) { + t.Parallel() + + codec, err := newJSONCodec(strings.NewReader(`[`)) + if !assert.NoError(t, err) { + return + } + + _, err = codec.Next() + assert.EqualError(t, err, "parsing end of record array: unexpected EOF") + }) + + // Test normal behavior. + t.Run("Normal", func(t *testing.T) { + t.Parallel() + + expect := []record{ + { + PrimaryKey: json.Number("2"), + Values: map[string]interface{}{ + "int": json.Number("1"), + "decimal": json.Number("2.01"), + "string": "h", + "idset": []interface{}{ + json.Number("1"), + json.Number("2"), + json.Number("4"), + }, + "stringset": []interface{}{"plugh"}, + }, + }, + { + PrimaryKey: "h", + Values: map[string]interface{}{}, + }, + } + codec, err := newJSONCodec(strings.NewReader(`[ + { + "primary-key": 2, + "values": { + "int": 1, + "decimal": 2.01, + "string": "h", + "idset": [1, 2, 4], + "stringset": ["plugh"] + } + }, + { + "primary-key": "h", + "values": {} + } + ]`)) + if !assert.NoError(t, err) { + return + } + + out, err := decodeAll(codec) + if !assert.NoError(t, err) { + return + } + + assert.Equal(t, expect, out) + }) +} + +func decodeAll(c *jsonCodec) ([]record, error) { + var out []record + for { + rec, err := c.Next() + if err != nil { + if err == io.EOF { + break + } + return nil, err + } + + out = append(out, rec) + } + + return out, nil +} diff --git a/idk/api/schema.go b/idk/api/schema.go new file mode 100644 index 000000000..0234a5812 --- /dev/null +++ b/idk/api/schema.go @@ -0,0 +1,183 @@ +package api + +import ( + "encoding/json" + "io" + "time" + + pilosa "github.com/molecula/featurebase/v3" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/pkg/errors" +) + +type schema struct { + IndexName string `json:"index-name"` + IfNotExists bool `json:"if-not-exists,omitempty"` + PrimaryKeyType string `json:"primary-key-type"` + + Fields []schemaField `json:"fields"` +} + +type schemaField struct { + FieldName string `json:"field-name"` + FieldType string `json:"field-type"` + FieldOptions struct { + TimeQuantum string `json:"time-quantum,omitempty"` + CacheSize int `json:"cache-size,omitempty"` + CacheType string `json:"cache-type,omitempty"` + EnforceMutualExclusion bool `json:"enforce-mutual-exclusion,omitempty"` + Scale int `json:"scale,omitempty"` + Epoch string `json:"epoch,omitempty"` + Unit string `json:"unit,omitempty"` + TTL string `json:"ttl,omitempty"` + } `json:"field-options,omitempty"` +} + +// DecodeSchema takes JSON stream (io.Reader - mainly http request body) +// and tries to decode it into pilosa.Schema. +// The function returns also a map: index-name -> if-not-exists option, +// so we can swallow "conflict" error in case of creating an index with +// the name as existing one. +func DecodeSchema(r io.Reader) (*pilosaclient.Schema, map[string]bool, error) { + pilosaSchema := pilosaclient.NewSchema() + + // map: index-name -> if-not-exists option + ifNotExists := make(map[string]bool) + + // Create a JSON decoder. + d := json.NewDecoder(r) + + // This is just a generic loop-approach where we can iterate over JSON objects + // (stream of indexes), but on daily-bases we should just decode one index. + for d.More() { + var apiSchema schema + if err := d.Decode(&apiSchema); err != nil { + return nil, nil, errors.Wrap(err, "decoding schema") + } + + err := apiSchema.applyToPilosa(pilosaSchema) + if err != nil { + return nil, nil, errors.Wrapf(err, "applying schema of index %q", apiSchema.IndexName) + } + + ifNotExists[apiSchema.IndexName] = apiSchema.IfNotExists + } + + return pilosaSchema, ifNotExists, nil +} + +// applyToPilosa validates an index schema and adds it to a Pilosa schema. +func (s schema) applyToPilosa(ps *pilosaclient.Schema) error { + if err := pilosa.ValidateName(s.IndexName); err != nil { + return errors.Wrap(err, "validating index name") + } + + var keyed bool + switch s.PrimaryKeyType { + case "string": + keyed = true + case "uint": + keyed = false + case "auto": + return errors.New("auto primary keys not yet implemented") + default: + return errors.Errorf(`invalid primary-key-type %q, it must be "string", "uint" or "auto"`, s.PrimaryKeyType) + } + + idx := ps.Index(s.IndexName, + pilosaclient.OptIndexTrackExistence(true), + pilosaclient.OptIndexKeys(keyed), + ) + + for _, f := range s.Fields { + err := f.applyToPilosa(idx) + if err != nil { + return errors.Wrapf(err, "applying field %q from schema", f.FieldName) + } + } + + return nil +} + +// applyToPilosa validates a field schema and adds it to an index schema. +func (f schemaField) applyToPilosa(idx *pilosaclient.Index) error { + if err := pilosa.ValidateName(f.FieldName); err != nil { + return errors.Wrap(err, "validating field name") + } + + if idx.HasField(f.FieldName) { + return errors.New("field defined multiple times") + } + + var opts []pilosaclient.FieldOption + switch f.FieldType { + case "id": + switch { + case f.FieldOptions.EnforceMutualExclusion: + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeMutex(pilosaclient.CacheType(f.FieldOptions.CacheType), f.FieldOptions.CacheSize)} + case f.FieldOptions.TimeQuantum != "": + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeTime(pilosaclient.TimeQuantum(f.FieldOptions.TimeQuantum))} + if f.FieldOptions.TTL != "" { + ttl, err := time.ParseDuration(f.FieldOptions.TTL) + if err != nil { + return errors.Wrapf(err, "unable to parse TTL from field %s", f.FieldName) + } else { + opts = append(opts, pilosaclient.OptFieldTTL(ttl)) + } + } + default: + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeSet(pilosaclient.CacheType(f.FieldOptions.CacheType), f.FieldOptions.CacheSize)} + } + + case "string": + switch { + case f.FieldOptions.EnforceMutualExclusion: + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeMutex(pilosaclient.CacheType(f.FieldOptions.CacheType), f.FieldOptions.CacheSize)} + case f.FieldOptions.TimeQuantum != "": + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeTime(pilosaclient.TimeQuantum(f.FieldOptions.TimeQuantum))} + if f.FieldOptions.TTL != "" { + ttl, err := time.ParseDuration(f.FieldOptions.TTL) + if err != nil { + return errors.Wrapf(err, "unable to parse TTL from field %s", f.FieldName) + } else { + opts = append(opts, pilosaclient.OptFieldTTL(ttl)) + } + } + default: + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeSet(pilosaclient.CacheType(f.FieldOptions.CacheType), f.FieldOptions.CacheSize)} + } + + case "bool": + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeBool()} + + case "int": + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeInt()} + + case "decimal": + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeDecimal(int64(f.FieldOptions.Scale))} + + case "timestamp": + epoch := time.Unix(0, 0) + if f.FieldOptions.Epoch != "" { + var err error + epoch, err = time.Parse(time.RFC3339, f.FieldOptions.Epoch) + if err != nil { + return errors.Errorf("invalid epoch time %q for layout %q", f.FieldOptions.Epoch, time.RFC3339) + } + } + + unit := f.FieldOptions.Unit + if !pilosa.IsValidTimeUnit(unit) { + return errors.Errorf("invalid time unit %q", f.FieldOptions.Unit) + } + + opts = []pilosaclient.FieldOption{pilosaclient.OptFieldTypeTimestamp(epoch, unit)} + + default: + return errors.Errorf(`invalid field-type %q, it must be "id", "string", "bool", "int", "decimal" or "timestamp"`, f.FieldType) + } + + idx.Field(f.FieldName, opts...) + + return nil +} diff --git a/idk/api/schema_test.go b/idk/api/schema_test.go new file mode 100644 index 000000000..d88992954 --- /dev/null +++ b/idk/api/schema_test.go @@ -0,0 +1,139 @@ +package api + +import ( + "strings" + "testing" + + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/stretchr/testify/assert" +) + +func TestApplyToPilosa(t *testing.T) { + client, err := pilosaclient.NewClient("pilosa:10101") + if !assert.NoError(t, err) { + return + } + t.Cleanup(func() { + err := client.Close() + assert.NoError(t, err) + }) + + schema, err := client.Schema() + if !assert.NoError(t, err) { + return + } + if schema.HasIndex("apitestingest_unkeyed") { + err := client.DeleteIndexByName("apitestingest_unkeyed") + if !assert.NoError(t, err) { + return + } + } + + schema, err = client.Schema() + if !assert.NoError(t, err) { + return + } + + unkeyedIdx := schema.Index("apitestingest_unkeyed", pilosaclient.OptIndexTrackExistence(true)) + + err = client.SyncSchema(schema) + if !assert.NoError(t, err) { + return + } + t.Cleanup(func() { + err := client.DeleteIndex(unkeyedIdx) + assert.NoError(t, err) + }) + + type FieldOpt struct { //nolint:unused + TimeQuantum string `json:"time-quantum,omitempty"` + CacheSize int `json:"cache-size,omitempty"` + CacheType string `json:"cache-type,omitempty"` + EnforceMutualExclusion bool `json:"enforce-mutual-exclusion,omitempty"` + Scale int `json:"scale,omitempty"` + Epoch string `json:"epoch,omitempty"` + Unit string `json:"unit,omitempty"` + TTL string `json:"ttl,omitempty"` + } + + tests := []struct { + name string + schemaField schemaField + expErr string + expOption string + }{ + { + name: "id_ttl", + schemaField: schemaField{ + FieldName: "id_ttl", + FieldType: "id", + FieldOptions: FieldOpt{"YMD", 0, "", false, 0, "", "", "11s"}, + }, + expErr: "", + expOption: `"{"options":{"noStandardView":false,"timeQuantum":"YMD","ttl":"11s","type":"time"}}"}`, + }, + { + name: "id_bad_ttl", + schemaField: schemaField{ + FieldName: "id_bad_ttl", + FieldType: "id", + FieldOptions: FieldOpt{"YMD", 0, "", false, 0, "", "", "bad-ttl"}, + }, + expErr: "unable to parse TTL", + expOption: `"{"options":{"type":"set"}}"}`, + }, + { + name: "id_ttl_without_time_quantum", + schemaField: schemaField{ + FieldName: "id_ttl_without_time_quantum", + FieldType: "id", + FieldOptions: FieldOpt{"", 0, "", false, 0, "", "", "12s"}, + }, + expErr: "", + expOption: `options: "{"options":{"type":"set"}}"}`, + }, + { + name: "string_ttl", + schemaField: schemaField{ + FieldName: "string_ttl", + FieldType: "string", + FieldOptions: FieldOpt{"YMD", 0, "", false, 0, "", "", "13s"}, + }, + expErr: "", + expOption: `"{"options":{"noStandardView":false,"timeQuantum":"YMD","ttl":"13s","type":"time"}}"}`, + }, + { + name: "string_bad_ttl", + schemaField: schemaField{ + FieldName: "string_bad_ttl", + FieldType: "string", + FieldOptions: FieldOpt{"YMD", 0, "", false, 0, "", "", "bad-ttl"}, + }, + expErr: "unable to parse TTL", + expOption: `"{"options":{"type":"set"}}"}`, + }, + { + name: "string_ttl_without_time_quantum", + schemaField: schemaField{ + FieldName: "string_ttl_without_time_quantum", + FieldType: "string", + FieldOptions: FieldOpt{"", 0, "", false, 0, "", "", "14s"}, + }, + expErr: "", + expOption: `options: "{"options":{"type":"set"}}"}`, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + err := (test.schemaField).applyToPilosa(unkeyedIdx) + if err != nil && !strings.Contains(err.Error(), test.expErr) { + t.Errorf("expected error: '%s', got: '%s'", test.expErr, err.Error()) + } + + if !strings.Contains(unkeyedIdx.String(), test.expOption) { + t.Errorf("expected option: '%v', got: '%v'", test.expOption, unkeyedIdx.String()) + } + }) + } +} diff --git a/idk/api/source.go b/idk/api/source.go new file mode 100644 index 000000000..58f4deae7 --- /dev/null +++ b/idk/api/source.go @@ -0,0 +1,477 @@ +package api + +import ( + "context" + "encoding/json" + "fmt" + "io" + "reflect" + "strconv" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" + + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/pql" +) + +func IngestJSON(index *pilosaclient.Index, m idk.Main, in io.Reader) error { + codec, err := newJSONCodec(in) + if err != nil { + return errors.Wrap(err, "reading start of JSON data") + } + + fields := index.Fields() + + idkSchema := make([]idk.Field, 1, len(index.Fields())+1) + fieldMappers := make(map[string]mapper, len(fields)) + if index.Opts().Keys() { + idkSchema[0] = idk.StringField{ + NameVal: "/", + } + m.PrimaryKeyFields = []string{"/"} + } else { + idkSchema[0] = idk.IDField{ + NameVal: "/", + } + m.IDField = "/" + } + + m.Index = index.Name() + + // TODO: time quantums + for name, field := range fields { + i := len(idkSchema) + fopts := field.Opts() + switch typ := fopts.Type(); typ { + case pilosaclient.FieldTypeSet: + if fopts.Keys() { + idkSchema = append(idkSchema, idk.StringArrayField{ + NameVal: name, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + var set []string + switch v := v.(type) { + case string: + set = []string{v} + + case []interface{}: + set = make([]string, len(v)) + for i, elem := range v { + str, ok := elem.(string) + if !ok { + return nil, errors.Wrapf(TypeError{ + Expected: typeDescriptionString, + Value: elem, + }, "parsing element %d of set", i) + } + + set[i] = str + } + + if len(set) > 1 { + dups := make(map[string]struct{}, len(set)) + for _, elem := range set { + if _, dup := dups[elem]; dup { + return nil, ErrDuplicateElement{ + Elem: elem, + } + } + dups[elem] = struct{}{} + } + } + + default: + return nil, TypeError{ + Expected: typeDescriptionStringSet, + Value: v, + } + } + + for _, v := range set { + if v == "" { + return nil, errors.New("empty string in set") + } + } + + return set, nil + }, + } + } else { + idkSchema = append(idkSchema, idk.IDArrayField{ + NameVal: name, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + var set []uint64 + switch v := v.(type) { + case json.Number: + id, err := strconv.ParseUint(string(v), 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing ID") + } + + set = []uint64{id} + + case []interface{}: + set = make([]uint64, len(v)) + for i, elem := range v { + num, ok := elem.(json.Number) + if !ok { + return nil, errors.Wrapf(TypeError{ + Expected: typeDescriptionID, + Value: elem, + }, "parsing element %d of set", i) + } + + id, err := strconv.ParseUint(string(num), 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing element %d of set", i) + } + + set[i] = id + } + + if len(set) > 1 { + dups := make(map[uint64]struct{}, len(set)) + for _, elem := range set { + if _, dup := dups[elem]; dup { + return nil, ErrDuplicateElement{ + Elem: elem, + } + } + dups[elem] = struct{}{} + } + } + + default: + return nil, TypeError{ + Expected: typeDescriptionIDSet, + Value: v, + } + } + + for _, v := range set { + if v == ^uint64(0) { + // The client package uses this as a nil sentinel. + return nil, errors.New("max uint64 is not a valid row ID") + } + } + + return set, nil + }, + } + } + + case pilosaclient.FieldTypeMutex: + if fopts.Keys() { + idkSchema = append(idkSchema, idk.StringField{ + NameVal: name, + Mutex: true, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + str, ok := v.(string) + if !ok { + return nil, TypeError{ + Expected: typeDescriptionString, + Value: v, + } + } + + return str, nil + }, + } + } else { + idkSchema = append(idkSchema, idk.IDField{ + NameVal: name, + Mutex: true, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + num, ok := v.(json.Number) + if !ok { + return nil, TypeError{ + Expected: typeDescriptionID, + Value: v, + } + } + + id, err := strconv.ParseUint(string(num), 10, 64) + if err != nil { + return nil, err + } + + if id == ^uint64(0) { + // The client package uses this as a nil sentinel. + return nil, errors.New("max uint64 is not a valid row ID") + } + + return id, nil + }, + } + } + + /* + case pilosaclient.FieldTypeBool: + // TODO: not supported by IDK :) + idkSchema = append(idkSchema, idk.BoolField{ + NameVal: name, + }) + */ + + case pilosaclient.FieldTypeInt: + if fopts.Keys() { + idkSchema = append(idkSchema, idk.StringField{ + NameVal: name, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + str, ok := v.(string) + if !ok { + return nil, TypeError{ + Expected: typeDescriptionString, + Value: v, + } + } + + return str, nil + }, + } + break + } + idkSchema = append(idkSchema, idk.IntField{ + NameVal: name, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + number, ok := v.(json.Number) + if !ok { + return nil, TypeError{ + Expected: typeDescriptionInt, + Value: v, + } + } + + return strconv.ParseInt(string(number), 10, 64) + }, + } + + case pilosaclient.FieldTypeDecimal: + scale := fopts.Scale() + idkSchema = append(idkSchema, idk.DecimalField{ + NameVal: name, + Scale: scale, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + var raw string + switch v := v.(type) { + case json.Number: + raw = string(v) + case string: + raw = string(v) + default: + return nil, TypeError{ + Expected: typeDescriptionDecimal, + Value: v, + } + } + + dec, err := pql.ParseDecimal(raw) + if err != nil { + return nil, err + } + + return dec, nil + }, + } + + /* + // Pilosa unfortunately does not return the epoch to us. + // As a result, this does not currently work. + // Also now we need to parse the timestamp here. + case pilosaclient.FieldTypeTimestamp: + idkSchema = append(idkSchema, idk.TimestampField{ + NameVal: name, + Epoch: fopts.MinTimestamp(), + Granularity: fopts.TimeUnit(), + Layout: time.RFC3339Nano, + }) + fieldMappers[name] = mapper{ + idx: i, + mapper: func(v interface{}) (interface{}, error) { + str, ok := v.(string) + if !ok { + return nil, TypeError{ + Expected: "time string", + Value: v, + } + } + + return str, nil + }, + }*/ + + default: + // Ignore the field for now. + } + } + + src := source{ + c: codec, + fields: fieldMappers, + schema: idkSchema, + pkstring: index.Opts().Keys(), + } + m.NewSource = func() (idk.Source, error) { + return &src, nil + } + + return m.Run() +} + +// TypeError is an error indicating that the type of a value was set incorrectly. +type TypeError struct { + // Expected is a human-readable name of the expected type. + Expected string + + // Value is the incorrectly-typed value. + Value interface{} +} + +const ( + typeDescriptionID = "ID" + typeDescriptionIDSet = "set of " + typeDescriptionID + "s" + typeDescriptionString = "string" + typeDescriptionStringSet = "set of " + typeDescriptionString + "s" + typeDescriptionInt = "integer" + typeDescriptionDecimal = "decimal" +) + +func (t TypeError) Error() string { + valType := reflect.TypeOf(t.Value) + valTypeName := valType.String() + if name, ok := friendlyTypeNames[valType]; ok { + valTypeName = name + } + + return fmt.Sprintf("expected a %s but got %v (a %s)", t.Expected, t.Value, valTypeName) +} + +// friendlyTypeNames contains more-easily understood names for some common types. +var friendlyTypeNames = map[reflect.Type]string{ + reflect.TypeOf(json.Number("")): "number", + reflect.TypeOf([]interface{}{}): "array", + reflect.TypeOf(map[string]interface{}{}): "object", +} + +// ErrDuplicateElement is an error indicating that an element was included in a set multiple times. +type ErrDuplicateElement struct { + // Elem is the duplicated element. + Elem interface{} +} + +func (err ErrDuplicateElement) Error() string { + return fmt.Sprintf("found duplicate element %v in set", err.Elem) +} + +type source struct { + c *jsonCodec + pkstring bool + fields map[string]mapper + schema []idk.Field +} + +type mapper struct { + idx int + mapper func(interface{}) (interface{}, error) +} + +func (s *source) Record() (idk.Record, error) { + // Decode the next record. + raw, err := s.c.Next() + if err != nil { + return nil, err + } + + // Parse the record into IDK-format. + out := make(idkRec, len(s.schema)) + switch pk := raw.PrimaryKey.(type) { + case string: + if !s.pkstring { + return nil, errors.Wrap(TypeError{ + Expected: typeDescriptionID, + Value: pk, + }, "parsing primary key") + } + + out[0] = pk + + case json.Number: + if s.pkstring { + return nil, errors.Wrap(TypeError{ + Expected: typeDescriptionString, + Value: pk, + }, "parsing primary key") + } + + id, err := strconv.ParseUint(string(pk), 10, 64) + if err != nil { + return nil, errors.Wrap(err, "parsing primary key") + } + + out[0] = id + + default: + expect := typeDescriptionID + if s.pkstring { + expect = typeDescriptionString + } + return nil, errors.Wrap(TypeError{ + Expected: expect, + Value: pk, + }, "parsing primary key") + } + for field, value := range raw.Values { + m, ok := s.fields[field] + if !ok { + return nil, errors.Errorf("field %q missing from schema", field) + } + + v, err := m.mapper(value) + if err != nil { + return nil, errors.Wrapf(err, "parsing record field %q", field) + } + + out[m.idx] = v + } + + return out, nil +} + +func (s *source) Schema() []idk.Field { + return s.schema +} + +func (s *source) Close() error { + return nil +} + +type idkRec []interface{} + +func (r idkRec) Commit(ctx context.Context) error { + return nil +} + +func (r idkRec) Data() []interface{} { + return r +} diff --git a/idk/api/source_test.go b/idk/api/source_test.go new file mode 100644 index 000000000..3843ccf8b --- /dev/null +++ b/idk/api/source_test.go @@ -0,0 +1,225 @@ +package api + +import ( + "io" + "io/ioutil" + "net/http" + "strings" + "testing" + + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/stretchr/testify/assert" +) + +func TestIngest(t *testing.T) { + if testing.Short() { + t.Skip() + } + + client, err := pilosaclient.NewClient("pilosa:10101") + if !assert.NoError(t, err) { + return + } + t.Cleanup(func() { + err := client.Close() + assert.NoError(t, err) + }) + + schema, err := client.Schema() + if !assert.NoError(t, err) { + return + } + if schema.HasIndex("apitestingest_unkeyed") { + err := client.DeleteIndexByName("apitestingest_unkeyed") + if !assert.NoError(t, err) { + return + } + } + + schema, err = client.Schema() + if !assert.NoError(t, err) { + return + } + + unkeyedIdx := schema.Index("apitestingest_unkeyed", pilosaclient.OptIndexTrackExistence(true)) + unkeyedIdx.Field("idset") + unkeyedIdx.Field("id", pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0)) + unkeyedIdx.Field("stringset", pilosaclient.OptFieldKeys(true)) + unkeyedIdx.Field("string", pilosaclient.OptFieldKeys(true), pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0)) + //unkeyedIdx.Field("bool", pilosaclient.OptFieldTypeBool()) + unkeyedIdx.Field("int", pilosaclient.OptFieldTypeInt()) + unkeyedIdx.Field("decimal", pilosaclient.OptFieldTypeDecimal(2)) + //unkeyedIdx.Field("timestamp", pilosaclient.OptFieldTypeTimestamp(time.Unix(1, 0).UTC(), "s")) + keyedIdx := schema.Index("apitestingest_keyed", pilosaclient.OptIndexTrackExistence(true), pilosaclient.OptIndexKeys(true)) + keyedIdx.Field("idset") + keyedIdx.Field("id", pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0)) + keyedIdx.Field("stringset", pilosaclient.OptFieldKeys(true)) + keyedIdx.Field("string", pilosaclient.OptFieldKeys(true), pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0)) + //keyedIdx.Field("bool", pilosaclient.OptFieldTypeBool()) + keyedIdx.Field("int", pilosaclient.OptFieldTypeInt()) + keyedIdx.Field("decimal", pilosaclient.OptFieldTypeDecimal(2)) + //keyedIdx.Field("timestamp", pilosaclient.OptFieldTypeTimestamp(time.Unix(1, 0).UTC(), "s")) + + err = client.SyncSchema(schema) + if !assert.NoError(t, err) { + return + } + t.Cleanup(func() { + err := client.DeleteIndex(unkeyedIdx) + assert.NoError(t, err) + err = client.DeleteIndex(keyedIdx) + assert.NoError(t, err) + }) + + m := *idk.NewMain() + m.PilosaHosts = []string{"pilosa:10101"} + m.PilosaGRPCHosts = []string{"pilosa:20101"} + m.Verbose = true + m.Pprof = "" + m.Stats = "" + m.PackBools = "" + + t.Run("Unkeyed", func(t *testing.T) { + t.Parallel() + + err := IngestJSON(unkeyedIdx, m, strings.NewReader(`[ + { + "primary-key": 0, + "values": { + "idset": [5, 7], + "id": 4, + "stringset": ["a"], + "string": "h", + "int": -13, + "decimal": 1.01 + } + }, + { + "primary-key": 1, + "values": { + "idset": 6, + "id": 8, + "stringset": "b", + "decimal": "1.02" + } + }, + { + "primary-key": 2, + "values": {} + } + ]`)) + if !assert.NoError(t, err) { + return + } + + // Unfortunately the go-pilosa client is still very behind. + resp, err := http.Post("http://pilosa:10101/index/apitestingest_unkeyed/query", "text/plain", strings.NewReader("Extract(All(), Rows(idset), Rows(id), Rows(stringset), Rows(string), Rows(int), Rows(decimal))")) + if !assert.NoError(t, err) { + return + } + defer resp.Body.Close() + defer io.Copy(ioutil.Discard, resp.Body) //nolint: errcheck + if !assert.Equal(t, 200, resp.StatusCode) { + body, _ := ioutil.ReadAll(resp.Body) + t.Logf("request error: %s", body) + return + } + data, err := ioutil.ReadAll(resp.Body) + if !assert.NoError(t, err) { + return + } + + expect := `{ + "results": [ + { + "fields": [ + {"name":"idset","type":"[]uint64"}, + {"name":"id","type":"uint64"}, + {"name":"stringset","type":"[]string"}, + {"name":"string","type":"string"}, + {"name":"int","type":"int64"}, + {"name":"decimal","type":"decimal"} + ], + "columns": [ + {"column":0,"rows":[[5,7],4,["a"],"h",-13,1.01]}, + {"column":1,"rows":[[6],8,["b"],null,null,1.02]}, + {"column":2,"rows":[[],null,[],null,null,null]} + ] + } + ] + }` + assert.JSONEq(t, expect, string(data)) + }) + t.Run("Keyed", func(t *testing.T) { + t.Parallel() + + err := IngestJSON(keyedIdx, m, strings.NewReader(`[ + { + "primary-key": "a", + "values": { + "idset": [5, 7], + "id": 4, + "stringset": ["a"], + "string": "h", + "int": -13, + "decimal": 1.01 + } + }, + { + "primary-key": "b", + "values": { + "idset": 6, + "id": 8, + "stringset": "b", + "decimal": "1.02" + } + }, + { + "primary-key": "c", + "values": {} + } + ]`)) + if !assert.NoError(t, err) { + return + } + + // Unfortunately the go-pilosa client is still very behind. + resp, err := http.Post("http://pilosa:10101/index/apitestingest_keyed/query", "text/plain", strings.NewReader("Extract(All(), Rows(idset), Rows(id), Rows(stringset), Rows(string), Rows(int), Rows(decimal))")) + if !assert.NoError(t, err) { + return + } + defer resp.Body.Close() + defer io.Copy(ioutil.Discard, resp.Body) //nolint: errcheck + if !assert.Equal(t, 200, resp.StatusCode) { + body, _ := ioutil.ReadAll(resp.Body) + t.Logf("request error: %s", body) + return + } + data, err := ioutil.ReadAll(resp.Body) + if !assert.NoError(t, err) { + return + } + + expect := `{ + "results": [ + { + "fields": [ + {"name":"idset","type":"[]uint64"}, + {"name":"id","type":"uint64"}, + {"name":"stringset","type":"[]string"}, + {"name":"string","type":"string"}, + {"name":"int","type":"int64"}, + {"name":"decimal","type":"decimal"} + ], + "columns": [ + {"column":"a","rows":[[5,7],4,["a"],"h",-13,1.01]}, + {"column":"b","rows":[[6],8,["b"],null,null,1.02]}, + {"column":"c","rows":[[],null,[],null,null,null]} + ] + } + ] + }` + assert.JSONEq(t, expect, string(data)) + }) +} diff --git a/idk/bankgen/put.go b/idk/bankgen/put.go new file mode 100644 index 000000000..01531f51b --- /dev/null +++ b/idk/bankgen/put.go @@ -0,0 +1,315 @@ +package bankgen + +import ( + "encoding/binary" + "fmt" + "io" + "math/rand" + "os" + "strconv" + "strings" + "sync/atomic" + + liavro "github.com/linkedin/goavro/v2" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" +) + +// PutCmd represents a command to put data into Kafka +type PutCmd struct { + idk.ConfluentCommand `flag:"!embed"` + + Topic string `help:"Kafka topic to post to."` + Subject string + Seed int64 `help:"Random seed for data generation"` + Save string `help:"Filename of record log. '-' for stdout."` + BatchSize int `help:"Size of record batches to submit to Kafka."` + + NumRecords int `help:"Number of records to generate"` + + DryRun bool `help:"Dry run - just flag parsing."` + + log logger.Logger + rand *rand.Rand + configMap *confluent.ConfigMap +} + +// NewPutCmd creates a new PutCmd +func NewPutCmd() (*PutCmd, error) { + var err error + p := &PutCmd{} + p.ConfluentCommand = idk.ConfluentCommand{ + KafkaBootstrapServers: []string{"localhost:9092"}, + SchemaRegistryURL: "localhost:8081", + } + + p.Topic = "banktest" + p.Subject = "test" + p.Save = "" + p.BatchSize = 1000 + p.NumRecords = 10 + p.log = logger.NewVerboseLogger(os.Stderr) + return p, err +} + +func (p *PutCmd) Log() logger.Logger { return p.log } + +// Run is the entry point for PutCmd +func (p *PutCmd) Run() (err error) { + p.configMap, err = common.SetupConfluent(&p.ConfluentCommand) + if err != nil { + return + } + var auth *csrc.BasicAuth + if len(p.SchemaRegistryUsername) > 0 { + auth = &csrc.BasicAuth{ + KafkaSchemaApiKey: p.SchemaRegistryUsername, + KafkaSchemaApiSecret: p.SchemaRegistryPassword, + } + } + client := csrc.NewClient(p.SchemaRegistryURL, nil, auth) + + schemaStr := getBankSchema() + + resp, err := client.PostSubjects(p.Subject, schemaStr) + if err != nil { + return errors.Wrap(err, "posting schema") + } + p.log.Printf("Posted schema ID: %d\n", resp.ID) + + licodec, err := liavro.NewCodec(schemaStr) + if err != nil { + return errors.Wrap(err, "li decoding schema") + } + + p.rand = rand.New(rand.NewSource(p.Seed)) + + var w io.Writer = os.Stdout + if p.Save != "" && p.Save != "-" { + f, err := os.Create(p.Save) + if err != nil { + return errors.Wrap(err, "creating record log file") + } + defer f.Close() + + w = f + } + + // librdkafka has a large (1000000) default buffer. + // limit the go buffer size to reduce memory consumption + // but allows for the intended buffered channel behavior + err = p.configMap.SetKey("go.produce.channel.size", 1) + if err != nil { + return errors.Wrap(err, "setting go.produce.channel.size") + } + producer, err := confluent.NewProducer(p.configMap) + if err != nil { + fmt.Printf("Failed to create producer: %s\n", err) + os.Exit(1) + } + defer producer.Close() + + finished := int32(0) + iter := int64(0) + doneChan := common.LaunchKafkaEventConfirmer(producer, &finished, &iter) + for n := 0; n < p.NumRecords; n++ { + data := p.generateRecord() + rec, _, err := licodec.NativeFromTextual([]byte(data)) + if err != nil { + return errors.Wrap(err, "decoding generated data") + } + + buf := make([]byte, 5, 1000) + buf[0] = 0 + binary.BigEndian.PutUint32(buf[1:], uint32(resp.ID)) + buf, err = licodec.BinaryFromNative(buf, rec.(map[string]interface{})) + if err != nil { + return errors.Errorf("encoding:\n%+v\nerr: %v", rec, err) + } + + var uid int + switch v := rec.(map[string]interface{})["user_id"].(type) { + case int: + uid = v + case int32: + uid = int(v) + } + producer.ProduceChannel() <- &confluent.Message{ + TopicPartition: confluent.TopicPartition{Topic: &p.Topic, Partition: confluent.PartitionAny}, + Key: []byte(strconv.Itoa(uid)), + Value: buf, + } + atomic.AddInt64(&iter, 1) + + if p.Save != "" { + fmt.Fprintf(w, "%v\n", rec.(map[string]interface{})) + } + + } + atomic.AddInt32(&finished, 1) + <-doneChan //wait till all messages are acked + producer.Flush(10 * 1000) + p.log.Printf("Put %d generated records\n", iter) + + return nil +} + +var ( + floatMeta = `"type": ["null", {"type": "float", "scale": 3}], "default": null` + boolMeta = `"type": ["null", "boolean"], "default": null` + stringMeta = `"type": ["null", "string"], "default": null, "mutex": true` + intMeta = `"type": ["null", "int"], "default": null` + + floatNames = []string{ + "pfm_category_total_current_balance__personal_loan", + } + + boolNames = []string{ + "pfm_boolean__personal_loan", + "pfm_boolean__mortgage", + } + + stringNames = []string{ + "survey_5dfe1a89_29fa_4505_ac00_4cd055b758ab", + } + + intNames = []string{ + "product_recency__consumer_loan", + } + + floatCount = 1 + boolCount = 2 + stringCount = 1 + intCount = 1 + + floatNullChance = 0.1 + boolNullChance = 0.1 + stringNullChance = 0.1 + intNullChance = 0.1 +) + +func getBankSchema() string { + meta := `"type": "record", + "name": "bank_user_data", + "namespace": "bank.user.data", + "doc": "Per-user bank data"` + + fields := []string{ + `{"name": "aba", "type": "string"}`, + `{"name": "db", "type": "string"}`, + `{"name": "user_id", "type": "int"}`, + `{"name": "custom_audiences", "type": ["null", "string"], "default": null}`, + } + + for n := 0; n < floatCount; n++ { + fields = append(fields, `{"name": "float_`+floatNames[n]+`", `+floatMeta+`}`) + } + for n := 0; n < boolCount; n++ { + fields = append(fields, `{"name": "bool_`+boolNames[n]+`", `+boolMeta+`}`) + } + for n := 0; n < stringCount; n++ { + fields = append(fields, `{"name": "string_`+stringNames[n]+`", `+stringMeta+`}`) + } + for n := 0; n < intCount; n++ { + fields = append(fields, `{"name": "int_`+intNames[n]+`", `+intMeta+`}`) + } + schema := fmt.Sprintf(`{%s, "fields": [%s]}`, meta, strings.Join(fields, ", ")) + + return schema +} + +func (p *PutCmd) generateRecord() string { + fields := []string{ + `"aba": "` + p.ABA() + `"`, + `"db": "` + p.Db() + `"`, + `"user_id": ` + strconv.FormatInt(int64(p.UserID()), 10), + `"custom_audiences": {"string": "` + p.CustomAudiences() + `"}`, + } + + for n := 0; n < floatCount; n++ { + if floatNullChance < p.rand.Float64() { + floatStr := strconv.FormatFloat(p.rand.Float64(), 'f', 3, 64) + fields = append(fields, `"float_`+floatNames[n]+`": {"float": `+floatStr+`}`) + } + } + for n := 0; n < boolCount; n++ { + if boolNullChance < p.rand.Float64() { + boolStr := strconv.FormatBool(p.rand.Intn(2) == 1) + fields = append(fields, `"bool_`+boolNames[n]+`": {"boolean": `+boolStr+`}`) + } + } + + for n := 0; n < stringCount; n++ { + if stringNullChance < p.rand.Float64() { + stringStr := text(p.rand, 1, 6, true, true, true, false) + fields = append(fields, `"string_`+stringNames[n]+`": {"string": "`+stringStr+`"}`) + } + } + + for n := 0; n < intCount; n++ { + if intNullChance < p.rand.Float64() { + intStr := strconv.FormatInt(int64(p.rand.Intn(1000000)), 10) + fields = append(fields, `"int_`+intNames[n]+`": {"int": `+intStr+`}`) + } + } + + return `{` + strings.Join(fields, ", ") + `}` +} + +// ABA returns a random 9 numeric digit string with about 27000 possible values. +func (p *PutCmd) ABA() string { + num := p.rand.Intn(27000) + 22213 + num2 := num/10 - 1213 + numstr := strconv.Itoa(num) + num2str := strconv.Itoa(num2) + numstrbytes := append([]byte(numstr), num2str[3], numstr[0], numstr[1], numstr[2]) + return string(numstrbytes) +} + +// Db returns a db +func (p *PutCmd) Db() string { + return text(p.rand, 1, 6, true, true, true, false) +} + +// UserID returns a user ID +func (p *PutCmd) UserID() int { + return p.rand.Intn(10000000) // 10 mil +} + +// CustomAudiences returns a fake Custom Audience string +func (p *PutCmd) CustomAudiences() string { + return text(p.rand, 1, 6, true, true, true, false) +} + +var lowerLetters = []rune("abcdefghijklmnopqrstuvwxyz") +var upperLetters = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ") +var numeric = []rune("0123456789") +var specialChars = []rune(`!'@#$%^&*()_+-=[]{};:",./?`) + +func text(rand *rand.Rand, atLeast, atMost int, allowLower, allowUpper, allowNumeric, allowSpecial bool) string { + allowedChars := []rune{} + if allowLower { + allowedChars = append(allowedChars, lowerLetters...) + } + if allowUpper { + allowedChars = append(allowedChars, upperLetters...) + } + if allowNumeric { + allowedChars = append(allowedChars, numeric...) + } + if allowSpecial { + allowedChars = append(allowedChars, specialChars...) + } + + result := []rune{} + nTimes := rand.Intn(atMost-atLeast+1) + atLeast + for i := 0; i < nTimes; i++ { + result = append(result, allowedChars[rand.Intn(len(allowedChars))]) + } + return string(result) +} diff --git a/idk/bankgen/put_test.go b/idk/bankgen/put_test.go new file mode 100644 index 000000000..c44e5b8ea --- /dev/null +++ b/idk/bankgen/put_test.go @@ -0,0 +1,26 @@ +package bankgen + +import ( + "fmt" + "math/rand" + "testing" + "time" +) + +func TestBankgen(t *testing.T) { + p, err := NewPutCmd() + if err != nil { + t.Fatalf("failed to get NewPutCmd: %v", err) + } + + p.KafkaBootstrapServers = []string{"kafka:9092"} + p.SchemaRegistryURL = "http://schema-registry:8081" + p.Topic = fmt.Sprintf("topic-%d", rand.New(rand.NewSource(time.Now().Unix())).Uint64()) + p.NumRecords = 100 + + err = p.Run() + if err != nil { + t.Fatalf("failed to run bankgen: %v", err) + } + +} diff --git a/idk/cmd/bankgen/main.go b/idk/cmd/bankgen/main.go new file mode 100644 index 000000000..8e687f3c0 --- /dev/null +++ b/idk/cmd/bankgen/main.go @@ -0,0 +1,35 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/bankgen" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m, err := bankgen.NewPutCmd() + if err != nil { + log.Fatal(err) + } + if err := pflag.LoadEnv(m, "BANKGEN_", nil); err != nil { + log.Fatal(err) + } + if m.DryRun { + log.Printf("%+v\n", m) + return + } + + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/bankgen/main_test.go b/idk/cmd/bankgen/main_test.go new file mode 100644 index 000000000..b2b1ad6a0 --- /dev/null +++ b/idk/cmd/bankgen/main_test.go @@ -0,0 +1,129 @@ +package main + +import ( + "reflect" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/bankgen" + pflag13 "github.com/spf13/pflag" +) + +func TestBankgenArgs(t *testing.T) { + tests := []struct { + name string + args []string + + KafkaHosts []string + RegistryURL string + Topic string + Subject string + Save string + NumRecords int + Seed int64 + BatchSize int + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + }, + KafkaHosts: []string{"localhost:9092"}, + RegistryURL: "localhost:8081", + Topic: "banktest", + Subject: "test", + Save: "", + NumRecords: 10, + }, + { + name: "many-kafka-hosts", + args: []string{ + "bankgen", // os.Args[0] can be ignored + "--kafka-bootstrap-servers", "localhost:0,localhost:80,localhost:9092", + "--num-records", "123", + "--schema-registry-url", "https://localhost:8081", + "--save", "-", + "--subject", "test", + "--topic", "test", + "--batch-size", "30", + }, + KafkaHosts: []string{"localhost:0", "localhost:80", "localhost:9092"}, + RegistryURL: "https://localhost:8081", + Topic: "test", + Subject: "test", + Save: "-", + NumRecords: 123, + BatchSize: 30, + }, + { + name: "with-seed", + args: []string{ + "bankgen", // os.Args[0] can be ignored + "--kafka-bootstrap-servers", "kafka:9092", + "--num-records", "10", + "--schema-registry-url", "localhost:8081", + "--save", "/tmp/file.log", + "--seed", "1234567890", + "--subject", "subject", + "--topic", "banktest", + }, + KafkaHosts: []string{"kafka:9092"}, + RegistryURL: "localhost:8081", + Topic: "banktest", + Subject: "subject", + Save: "/tmp/file.log", + NumRecords: 10, + Seed: int64(1234567890), + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m, err := bankgen.NewPutCmd() + if err != nil { + t.Fatal(err) + } + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "BANKGEN_", nil); err != nil { + t.Fatal(err) + } + + if !reflect.DeepEqual(tc.KafkaHosts, m.KafkaBootstrapServers) { + t.Fatalf("--kafka-bootstrap-servers expected: %v got: %v", tc.KafkaHosts, m.KafkaBootstrapServers) + } + if !reflect.DeepEqual(tc.RegistryURL, m.SchemaRegistryURL) { + t.Fatalf("--schema-registry-url expected: %v got: %v", tc.RegistryURL, m.SchemaRegistryURL) + } + + if !reflect.DeepEqual(tc.Topic, m.Topic) { + t.Fatalf("--topic expected: %v got: %v", tc.Topic, m.Topic) + } + + if !reflect.DeepEqual(tc.Subject, m.Subject) { + t.Fatalf("--subject expected: %v got: %v", tc.Subject, m.Subject) + } + + if !reflect.DeepEqual(tc.Save, m.Save) { + t.Fatalf("--save expected: %v got: %v", tc.Save, m.Save) + } + + if !reflect.DeepEqual(tc.NumRecords, m.NumRecords) { + t.Fatalf("--num-records expected: %v got: %v", tc.NumRecords, m.NumRecords) + } + + if tc.BatchSize != 0 { + if !reflect.DeepEqual(tc.BatchSize, m.BatchSize) { + t.Fatalf("--batch-size expected: %v got: %v", tc.BatchSize, m.BatchSize) + } + } + + if tc.Seed != 0 { + if !reflect.DeepEqual(tc.Seed, m.Seed) { + t.Fatalf("--seed expected: %v got: %v", tc.Seed, m.Seed) + } + } + }) + } +} diff --git a/idk/cmd/datagen/main.go b/idk/cmd/datagen/main.go new file mode 100644 index 000000000..150693804 --- /dev/null +++ b/idk/cmd/datagen/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/datagen" + "github.com/molecula/featurebase/v3/logger" + "gopkg.in/DataDog/dd-trace-go.v1/profiler" +) + +func main() { + + m := datagen.NewMain() + + if err := pflag.LoadEnv(m, "GEN_", nil); err != nil { + log.Fatal(err) + } + + if m.Datadog { + err := profiler.Start( + profiler.WithService("datagen"), + profiler.WithEnv("fb-1253"), + profiler.WithVersion("v1"), + profiler.WithProfileTypes( + profiler.CPUProfile, + profiler.HeapProfile, + profiler.BlockProfile, + profiler.MutexProfile, + profiler.GoroutineProfile, + ), + ) + if err != nil { + log.Fatal(err) + } + defer profiler.Stop() + } + + if err := m.Preload(); err != nil { + log.Fatal(err) + } + m.PrintPlan() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + if err := m.Run(); err != nil { + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/datagen/main_test.go b/idk/cmd/datagen/main_test.go new file mode 100644 index 000000000..ac4c5f8f3 --- /dev/null +++ b/idk/cmd/datagen/main_test.go @@ -0,0 +1,174 @@ +package main + +import ( + "reflect" + "strings" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/datagen" + pflag13 "github.com/spf13/pflag" +) + +func TestDatagenArgs(t *testing.T) { + tests := []struct { + name string + args []string + + Source string + Target string + Concurrency int + StartFrom uint64 + EndAt uint64 + + PilosaHosts []string + PilosaIndex string + PilosaBatchSize int + + KafkaHosts []string + KafkaRegistryURL string + KafkaTopic string + KafkaSubject string + KafkaBatchSize int + KafkaReplicationFactor int + KafkaNumPartitions int + Datadog bool + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + "--source", "example", + }, + Source: "example", + Target: "featurebase", + Concurrency: 1, + StartFrom: uint64(0), + EndAt: uint64(0), + + PilosaHosts: nil, + PilosaIndex: "", + PilosaBatchSize: 0, + + KafkaHosts: nil, + KafkaRegistryURL: "", + KafkaTopic: "", + KafkaSubject: "", + KafkaReplicationFactor: 0, + KafkaNumPartitions: 0, + Datadog: false, + }, + { + name: "long", + args: []string{ + "datagen", + "--source", "customer", + "--target", "kafka", + "--concurrency", "10", + "--start-from", "1", + "--end-at", "11", + "--pilosa.hosts", "pilosa:1,pilosa:2,pilosa:3", + "--pilosa.index", "idx", + "--pilosa.batch-size", "12345", + "--kafka.confluent-command.kafka-bootstrap-servers", "kafka:1,kafka:2,kafka:3", + "--kafka.confluent-command.schema-registry-url", "registry:1", + "--kafka.subject", "subj", + "--kafka.topic", "top", + "--kafka.batch-size", "2", + "--kafka.replication-factor", "3", + "--kafka.num-partitions", "3", + "--datadog", + }, + Source: "customer", + Target: "kafka", + Concurrency: 10, + StartFrom: uint64(1), + EndAt: uint64(11), + + PilosaHosts: []string{"pilosa:1", "pilosa:2", "pilosa:3"}, + PilosaIndex: "idx", + PilosaBatchSize: 12345, + + KafkaHosts: []string{"kafka:1", "kafka:2", "kafka:3"}, + KafkaRegistryURL: "registry:1", + KafkaSubject: "subj", + KafkaTopic: "top", + KafkaBatchSize: 2, + KafkaReplicationFactor: 3, + KafkaNumPartitions: 3, + Datadog: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m := datagen.NewMain() + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "GEN_", nil); err != nil { + t.Fatal(err) + } + + if err := m.Preload(); err != nil { + t.Fatalf("failed to load: %v", err) + } + + if tc.Source != m.Source { + t.Fatalf("--source expected: %v got: %v", tc.Source, m.Source) + } + if tc.Target != m.Target { + t.Fatalf("--target expected: %v got: %v", tc.Target, m.Target) + } + if tc.Concurrency != m.Concurrency { + t.Fatalf("--concurrency expected: %v got: %v", tc.Concurrency, m.Concurrency) + } + + if !reflect.DeepEqual(tc.PilosaHosts, m.Pilosa.Hosts) { + t.Fatalf("--pilosa.hosts expected: %v got: %v", tc.PilosaHosts, m.Pilosa.Hosts) + } + if tc.PilosaIndex != m.Pilosa.Index { + t.Fatalf("--pilosa.index expected: %v got: %v", tc.PilosaIndex, m.Pilosa.Index) + } + if tc.PilosaBatchSize != m.Pilosa.BatchSize { + t.Fatalf("--pilosa.batch-size expected: %v got: %v", tc.PilosaBatchSize, m.Pilosa.BatchSize) + } + + if tc.KafkaHosts != nil { + bs, err := m.KafkaPut.ConfigMap.Get("bootstrap.servers", nil) + if err != nil || bs == nil { + t.Fatalf("kafka servers not set properly: %v", err) + } + bootstrapServers := bs.(string) + + if !reflect.DeepEqual(strings.Join(tc.KafkaHosts, ","), bootstrapServers) { + t.Fatalf("--kafka.hosts expected: %v got: %v", strings.Join(tc.KafkaHosts, ","), bootstrapServers) + } + } + if tc.KafkaRegistryURL != m.Kafka.SchemaRegistryURL { + t.Fatalf("--kafka.registry-url expected: %v got: %v", tc.KafkaRegistryURL, m.Kafka.SchemaRegistryURL) + } + if tc.KafkaSubject != m.Kafka.Subject { + t.Fatalf("--kafka.subject expected: %v got: %v", tc.KafkaSubject, m.Kafka.Subject) + } + if tc.KafkaTopic != m.Kafka.Topic { + t.Fatalf("--kafka.topic expected: %v got: %v", tc.KafkaTopic, m.Kafka.Topic) + } + if tc.KafkaBatchSize != 0 { + if tc.KafkaBatchSize != m.Kafka.BatchSize { + t.Fatalf("--kafka.batch-size expected: %v got: %v", tc.KafkaBatchSize, m.Kafka.BatchSize) + } + } + if tc.KafkaReplicationFactor != 0 { + if tc.KafkaReplicationFactor != m.Kafka.ReplicationFactor { + t.Fatalf("--kafka.replication-factor expected: %v got: %v", tc.KafkaReplicationFactor, m.Kafka.ReplicationFactor) + } + } + if tc.KafkaNumPartitions != 0 { + if tc.KafkaNumPartitions != m.Kafka.NumPartitions { + t.Fatalf("--kafka.num-partitions expected: %v got: %v", tc.KafkaNumPartitions, m.Kafka.NumPartitions) + } + } + }) + } +} diff --git a/idk/cmd/ingester/README.md b/idk/cmd/ingester/README.md new file mode 100644 index 000000000..7043275b5 --- /dev/null +++ b/idk/cmd/ingester/README.md @@ -0,0 +1,12 @@ +## Ingester + +_Ingester service_ consumes [Programmatic Ingest API](https://github.com/molecula/docs/blob/master/docs/internal/proposals/programmatic-ingest-api.md) +and sends data to the _Pilosa service_. + +``` +Usage of ./ingester: + --dry-run Dry run - just flag parsing. + --http-addr string HTTP address for Ingester. (default "localhost:8080") + --pilosa-hosts strings Comma separated list of host:port pairs for Pilosa. (default [localhost:10101]) + +``` diff --git a/idk/cmd/ingester/main.go b/idk/cmd/ingester/main.go new file mode 100644 index 000000000..b4b3540db --- /dev/null +++ b/idk/cmd/ingester/main.go @@ -0,0 +1,187 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "runtime/debug" + + "github.com/gorilla/mux" + "github.com/jaffee/commandeer/pflag" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/api" + "github.com/pkg/errors" +) + +func main() { + i := &ingester{ + PilosaHosts: []string{"localhost:10101"}, + HttpAddr: "localhost:8080", + } + + if err := pflag.LoadEnv(i, "INGESTER_", nil); err != nil { + log.Fatal(err) + } + if i.DryRun { + log.Printf("%+v\n", i) + return + } + + if err := i.Run(); err != nil { + log.Fatal(err) + } +} + +// ingester is a HTTP handler which lets ingest data to pilosa over "programmatic ingest API". +// https://github.com/molecula/docs/blob/master/docs/internal/proposals/programmatic-ingest-api.md +type ingester struct { + DryRun bool `help:"Dry run - just flag parsing."` + PilosaHosts []string `short:"" help:"Comma separated list of host:port pairs for FeatureBase."` + PilosaGrpcHosts []string `short:"" help:"Comma separated list of host:port pairs for FeatureBase's gRPC endpoint."` + BatchSize uint `short:"" help:"Batch size to use for ingest operations."` + HttpAddr string `short:"" help:"HTTP address for Ingester."` + + client *pilosaclient.Client + router *mux.Router + tmplMain idk.Main + + AuthToken string `flag:"auth-token" help:"Authentication Token for FeatureBase"` +} + +func (i *ingester) Run() error { + client, err := pilosaclient.NewClient(i.PilosaHosts, + pilosaclient.OptClientRetries(2), + pilosaclient.OptClientTotalPoolSize(1000), + pilosaclient.OptClientPoolSizePerRoute(400), + ) + if err != nil { + return errors.Wrap(err, "getting featurebase client") + } + defer client.Close() + + i.client = client + + i.router = mux.NewRouter() + i.router.HandleFunc("/schema", i.postSchema).Methods("POST").Name("PostSchema") + i.router.HandleFunc("/index/{index}", i.postIndex).Methods("POST").Name("PostIndex") + + m := *idk.NewMain() + m.PilosaHosts = i.PilosaHosts + m.PilosaGRPCHosts = i.PilosaGrpcHosts + m.Pprof = "" + m.Stats = "" + m.PackBools = "" + m.BatchSize = int(i.BatchSize) + m.AuthToken = i.AuthToken + i.tmplMain = m + + s := &http.Server{Addr: i.HttpAddr, Handler: i} + return s.ListenAndServe() +} + +// ServeHTTP handles an HTTP request. +func (i *ingester) ServeHTTP(w http.ResponseWriter, r *http.Request) { + defer func() { + if err := recover(); err != nil { + w.WriteHeader(http.StatusInternalServerError) + stack := debug.Stack() + log.Printf("PANIC: %s\n%s", err, stack) + } + }() + + i.router.ServeHTTP(w, r) +} + +// POST /schema +func (i *ingester) postSchema(w http.ResponseWriter, r *http.Request) { + body := r.Body + defer body.Close() + + schema, ifNotExists, err := api.DecodeSchema(body) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + for idxName, idx := range schema.Indexes() { + if err := i.client.CreateIndex(idx); err != nil { + if errors.Is(err, pilosaclient.ErrIndexExists) { + if ifNotExists[idxName] { + continue + } + + http.Error(w, err.Error(), http.StatusConflict) + return + } + + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + for fldName, fld := range idx.Fields() { + if fldName == "_exists" { + continue + } + + if err := i.client.EnsureField(fld); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + } + } + + // Following code is not really needed, + // but it's kind of informative if we want to check what's the current pilosa schema. + // If we decide to keep it, we'll need to improve "pilosa/client", + // because with current implementation we can serialize just map of indices. + schema, err = i.client.Schema() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusOK) + w.Write([]byte(schema.String())) //nolint: errcheck +} + +// POST /index/{index} +func (i *ingester) postIndex(w http.ResponseWriter, r *http.Request) { + index := mux.Vars(r)["index"] + + schema, err := i.client.Schema() + if err != nil { + http.Error(w, fmt.Sprintf("fetching schema: %v", err), http.StatusInternalServerError) + return + } + + idx, ok := schema.Indexes()[index] + if !ok { + http.Error(w, fmt.Sprintf("index %q not found", index), http.StatusNotFound) + return + } + + switch ctype := r.Header.Get("Content-Type"); ctype { + case "": + http.Error(w, "missing Content-Type header", http.StatusUnsupportedMediaType) + return + + case "application/json": + err = api.IngestJSON(idx, i.tmplMain, r.Body) + if err != nil { + errCode := http.StatusInternalServerError + if errors.As(err, &api.TypeError{}) || errors.As(err, &api.ErrDuplicateElement{}) { + errCode = http.StatusBadRequest + } + http.Error(w, err.Error(), errCode) + return + } + + default: + http.Error(w, fmt.Sprintf("unsupported Content-Type %q", ctype), http.StatusUnsupportedMediaType) + return + } + + w.WriteHeader(http.StatusOK) + w.Write([]byte("OK")) //nolint: errcheck +} diff --git a/idk/cmd/kafkagen/main.go b/idk/cmd/kafkagen/main.go new file mode 100644 index 000000000..e6f6bd7a7 --- /dev/null +++ b/idk/cmd/kafkagen/main.go @@ -0,0 +1,30 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafkagen" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m, err := kafkagen.NewMain() + if err != nil { + + log.Fatal(err) + } + if err := pflag.LoadEnv(m, "KGEN_", nil); err != nil { + log.Fatal(err) + } + if m.DryRun { + log.Printf("%+v\n", m) + return + } + + if err := m.Run(); err != nil { + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/kafkagen/main_test.go b/idk/cmd/kafkagen/main_test.go new file mode 100644 index 000000000..c84437963 --- /dev/null +++ b/idk/cmd/kafkagen/main_test.go @@ -0,0 +1,90 @@ +package main + +import ( + "reflect" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafkagen" + pflag13 "github.com/spf13/pflag" +) + +func TestKafkagenArgs(t *testing.T) { + tests := []struct { + name string + args []string + + KafkaHosts []string + RegistryURL string + Topic string + Subject string + SchemaFile string + }{ + { + name: "empty", + args: []string{ + "", + }, + + KafkaHosts: []string{"localhost:9092"}, + RegistryURL: "localhost:8081", + Topic: "defaulttopic", + Subject: "bigschema", + SchemaFile: "bigschema.json", + }, + { + name: "all-set", + args: []string{ + "kafkagen", + "--kafka-bootstrap-servers", "kafka:1,kafka:2,kafka:3,kafka4", + "--schema-registry-url", "idk.registry.com", + "--schema-file", "/tmp/schema.json", + "--subject", "whatever", + "--topic", "whatever", + }, + KafkaHosts: []string{"kafka:1", "kafka:2", "kafka:3", "kafka4"}, + RegistryURL: "idk.registry.com", + Topic: "whatever", + Subject: "whatever", + SchemaFile: "/tmp/schema.json", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m, err := kafkagen.NewMain() + if err != nil { + t.Fatal(err) + } + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "KGEN_", nil); err != nil { + t.Fatal(err) + } + + if len(tc.KafkaHosts) > 0 { + if !reflect.DeepEqual(tc.KafkaHosts, m.KafkaBootstrapServers) { + t.Fatalf("--kafka-bootstrap-servers expected: %v got: %v", tc.KafkaHosts, m.KafkaBootstrapServers) + } + } + + if tc.RegistryURL != "" { + if !reflect.DeepEqual(tc.RegistryURL, m.SchemaRegistryURL) { + t.Fatalf("--registry-url expected: %v got: %v", tc.RegistryURL, m.SchemaRegistryURL) + } + } + + if tc.Topic != "" { + if !reflect.DeepEqual(tc.Topic, m.Topic) { + t.Fatalf("--topic expected: %v got: %v", tc.Topic, m.Topic) + } + } + + if tc.Subject != "" { + if !reflect.DeepEqual(tc.Subject, m.Subject) { + t.Fatalf("--subject expected: %v got: %v", tc.Subject, m.Subject) + } + } + }) + } +} diff --git a/idk/cmd/kafkaput/main.go b/idk/cmd/kafkaput/main.go new file mode 100644 index 000000000..85215daa3 --- /dev/null +++ b/idk/cmd/kafkaput/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m, err := kafka.NewPutCmd() + if err != nil { + log.Fatal(err) + } + if err := pflag.LoadEnv(m, "KPUT_", nil); err != nil { + log.Fatal(err) + } + if m.DryRun { + log.Printf("%+v\n", m) + return + } + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/kafkaput/main_test.go b/idk/cmd/kafkaput/main_test.go new file mode 100644 index 000000000..4a4d1774e --- /dev/null +++ b/idk/cmd/kafkaput/main_test.go @@ -0,0 +1,103 @@ +package main + +import ( + "reflect" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka" + pflag13 "github.com/spf13/pflag" +) + +func TestKafkaputArgs(t *testing.T) { + tests := []struct { + name string + args []string + + KafkaHosts []string + RegistryURL string + Topic string + Schema string + SchemaFile string + Subject string + Data string + }{ + { + name: "empty", + args: []string{ + "", + }, + KafkaHosts: []string{"localhost:9092"}, + RegistryURL: "localhost:8081", + Topic: "defaulttopic", + Subject: "test", + SchemaFile: "", + Schema: "{\"type\": \"record\",\"namespace\": \"c.e\",\"name\": \"F\",\"fields\": [{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"a\",\"type\": \"boolean\"},{\"name\": \"b\", \"type\": \"float\", \"scale\": 2}]}", + Data: "{\"id\": 1, \"a\": true, \"b\": 1.43}", + }, + { + name: "all-set", + args: []string{ + "kafkaput", + "--kafka-bootstrap-servers", "localhost:0,localhost:80,localhost:9092", + "--schema-registry-url", "https://localhost:8081", + "--topic", "my-topic", + "--schema", "{}", + "--schema-file", "/tmp/schema.json", + "--data", "{}", + "--subject", "my-subject", + }, + KafkaHosts: []string{"localhost:0", "localhost:80", "localhost:9092"}, + RegistryURL: "https://localhost:8081", + Topic: "my-topic", + Subject: "my-subject", + SchemaFile: "/tmp/schema.json", + Schema: "{}", + Data: "{}", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m, err := kafka.NewPutCmd() + if err != nil { + t.Fatal(err) + } + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "KPUT_", nil); err != nil { + t.Fatal(err) + } + + if len(tc.KafkaHosts) > 0 { + if !reflect.DeepEqual(tc.KafkaHosts, m.KafkaBootstrapServers) { + t.Fatalf("--kafka-hosts expected: %v got: %v", tc.KafkaHosts, m.KafkaBootstrapServers) + } + } + + if tc.RegistryURL != m.SchemaRegistryURL { + t.Fatalf("--registry-url expected: %v got: %v", tc.RegistryURL, m.SchemaRegistryURL) + } + + if tc.Topic != m.Topic { + t.Fatalf("--topic expected: %v got: %v", tc.Topic, m.Topic) + } + + if tc.Subject != m.Subject { + t.Fatalf("--subject expected: %v got: %v", tc.Subject, m.Subject) + } + + if tc.SchemaFile != m.SchemaFile { + t.Fatalf("--schema-file expected: %v got: %v", tc.SchemaFile, m.SchemaFile) + } + + if tc.Schema != m.Schema { + t.Fatalf("--schema expected: %v got: %v", tc.Schema, m.Schema) + } + + if tc.Data != m.Data { + t.Fatalf("--data expected: %v got: %v", tc.Data, m.Data) + } + }) + } +} diff --git a/idk/cmd/molecula-consumer-csv/main.go b/idk/cmd/molecula-consumer-csv/main.go new file mode 100644 index 000000000..0d1b4f37e --- /dev/null +++ b/idk/cmd/molecula-consumer-csv/main.go @@ -0,0 +1,48 @@ +package main + +import ( + "fmt" + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/csv" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m := csv.NewMain() + if err := pflag.LoadEnv(m, "IDKCSV_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + fields, err := m.ValidateHeaders() + if err != nil { + log.Printf("validation error: %v\n", err) + return + } + fmt.Printf("%+v\n", m) + fmt.Printf("Parsed fields:\n") + for _, f := range fields { + fmt.Printf(" %-20T %+[1]v\n", f) + } + return + } + + if m.Concurrency != 1 { + m.Log().Infof("Concurrency is not supported for csv ingest. '--concurrency' flag will be ignored.") + m.Concurrency = 1 + } + + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-csv/main_test.go b/idk/cmd/molecula-consumer-csv/main_test.go new file mode 100644 index 000000000..f9322aa67 --- /dev/null +++ b/idk/cmd/molecula-consumer-csv/main_test.go @@ -0,0 +1,207 @@ +package main + +import ( + "reflect" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/csv" + pflag13 "github.com/spf13/pflag" +) + +func TestConsumerCSVArgs(t *testing.T) { + tests := []struct { + name string + args []string + + AssumeEmptyPilosa bool + AutoGenerate bool + BatchSize int + Concurrency int + IDField string + PilosaHosts []string + PilosaGRPCHosts []string + Stats string + Verbose bool + ExpSplitBatchMode bool + WriteCSV string + Files []string + Header []string + Index string + JustDoIt bool + IgnoreHeader bool + FutureRename bool + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + }, + AssumeEmptyPilosa: false, + AutoGenerate: false, + BatchSize: 1, + Concurrency: 1, + IDField: "", + PilosaHosts: []string{"localhost:10101"}, + PilosaGRPCHosts: []string{"localhost:20101"}, + Stats: "localhost:9093", + Verbose: false, + ExpSplitBatchMode: false, + WriteCSV: "", + Index: "", + JustDoIt: false, + IgnoreHeader: false, + FutureRename: false, + }, + { + name: "long", + args: []string{ + "molecula-consumer-csv", + "--assume-empty-pilosa", "true", + "--auto-generate", "true", + "--batch-size", "12345", + "--concurrency", "1", + "--exp-split-batch-mode", "true", + "--id-field", "id", + "--index", "index_name", + "--log-path", "/tmp/file.log", + "--pack-bools", "true", + "--pilosa-grpc-hosts", "grpc:1,grpc:2,grpc:3", + "--pilosa-hosts", "pilosa:1,pilosa:2,pilosa:3", + "--primary-key-fields", "primary_key", + "--stats", "localhost:9093", + "--tls.ca-certificate", "/tmp/file.ca", + "--tls.certificate", "/tmp/file.certificate", + "--tls.enable-client-verification", "true", + "--tls.key", "/tmp/file.key", + "--tls.skip-verify", "false", + "--verbose", "true", + "--write-csv", "/tmp/file.csv", + "--files", "f1,f2,f3", + "--header", "h1,h2,h3", + "--index", "index-name", + "--just-do-it", "true", + "--ignore-header", "true", + }, + AssumeEmptyPilosa: true, + AutoGenerate: true, + BatchSize: 12345, + Concurrency: 1, + IDField: "id", + PilosaHosts: []string{"pilosa:1", "pilosa:2", "pilosa:3"}, + PilosaGRPCHosts: []string{"grpc:1", "grpc:2", "grpc:3"}, + Stats: "localhost:9093", + Verbose: true, + ExpSplitBatchMode: true, + WriteCSV: "/tmp/file.csv", + Files: []string{"f1", "f2", "f3"}, + Header: []string{"h1", "h2", "h3"}, + Index: "index-name", + JustDoIt: true, + IgnoreHeader: true, + FutureRename: false, + }, + { + name: "empty", + args: []string{ + "molecula-consumer-csv", + "--future.rename", "true", + "--featurebase-hosts", "localhost:50101", + "--featurebase-grpc-hosts", "localhost:60101", + }, + AssumeEmptyPilosa: false, + AutoGenerate: false, + BatchSize: 1, + Concurrency: 1, + IDField: "", + PilosaHosts: []string{"localhost:50101"}, + PilosaGRPCHosts: []string{"localhost:60101"}, + Stats: "localhost:9093", + Verbose: false, + ExpSplitBatchMode: false, + WriteCSV: "", + Index: "", + JustDoIt: false, + IgnoreHeader: false, + FutureRename: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m := csv.NewMain() + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "IDKCSV_", nil); err != nil { + t.Fatal(err) + } + + m.Rename() + + if tc.AssumeEmptyPilosa != m.AssumeEmptyPilosa { + t.Fatalf("--assume-empty-pilosa expected: %v got: %v", tc.AssumeEmptyPilosa, m.AssumeEmptyPilosa) + } + if tc.AutoGenerate != m.AutoGenerate { + t.Fatalf("--auto-generate expected: %v got: %v", tc.AutoGenerate, m.AutoGenerate) + } + if tc.BatchSize != m.BatchSize { + t.Fatalf("--batch-size expected: %v got: %v", tc.BatchSize, m.BatchSize) + } + if tc.Concurrency != m.Concurrency { + t.Fatalf("--concurrency expected: %v got: %v", tc.Concurrency, m.Concurrency) + } + if tc.IDField != m.IDField { + t.Fatalf("--id-field expected: %v got: %v", tc.IDField, m.IDField) + } + if !reflect.DeepEqual(tc.PilosaHosts, m.PilosaHosts) { + t.Fatalf("--pilosa-hosts expected: %v got: %v", tc.PilosaHosts, m.PilosaHosts) + } + if !reflect.DeepEqual(tc.PilosaGRPCHosts, m.PilosaGRPCHosts) { + t.Fatalf("--pilosa-grpc-hosts expected: %v got: %v", tc.PilosaGRPCHosts, m.PilosaGRPCHosts) + } + if tc.Stats != m.Stats { + t.Fatalf("--stats expected: %v got: %v", tc.Stats, m.Stats) + } + if tc.Verbose != m.Verbose { + t.Fatalf("--verbose expected: %v got: %v", tc.Verbose, m.Verbose) + } + if tc.ExpSplitBatchMode != m.ExpSplitBatchMode { + t.Fatalf("--exp-split-batch-mode expected: %v got: %v", tc.ExpSplitBatchMode, m.ExpSplitBatchMode) + } + if tc.WriteCSV != m.WriteCSV { + t.Fatalf("--write-csv expected: %v got: %v", tc.WriteCSV, m.WriteCSV) + } + if !reflect.DeepEqual(tc.Files, m.Files) { + t.Fatalf("--files expected: %+v got: %+v", tc.Files, m.Files) + } + if !reflect.DeepEqual(tc.Header, m.Header) { + t.Fatalf("--header expected: %v got: %v", tc.Header, m.Header) + } + if tc.Index != m.Index { + t.Fatalf("--index expected: %v got: %v", tc.Index, m.Index) + } + if tc.JustDoIt != m.JustDoIt { + t.Fatalf("--just-do-it expected: %v got: %v", tc.JustDoIt, m.JustDoIt) + } + if tc.IgnoreHeader != m.IgnoreHeader { + t.Fatalf("--ignore-header expected: %v got: %v", tc.IgnoreHeader, m.IgnoreHeader) + } + if tc.FutureRename != m.Future.Rename { + t.Fatalf("--future.rename expected: %v got: %v", tc.FutureRename, m.Future.Rename) + } + + source, err := m.NewSource() + // check for err as empty testcase fails to create Source + if err == nil { + csvSource := source.(*csv.Source) + if csvSource.JustDoIt != m.JustDoIt { + t.Fatalf("Source.JustDoIt does not match Main.JustDoIt") + } + if csvSource.IgnoreHeader != m.IgnoreHeader { + t.Fatalf("Source.IgnoreHeader does not match Main.IgnoreHeader") + } + } + }) + } +} diff --git a/idk/cmd/molecula-consumer-github/README.md b/idk/cmd/molecula-consumer-github/README.md new file mode 100644 index 000000000..93644ec86 --- /dev/null +++ b/idk/cmd/molecula-consumer-github/README.md @@ -0,0 +1,4 @@ +### Example +``` +./molecula-consumer-github -d id -i events --record-type event --batch-size=100000 --start-time "2015-10-13T00:00:00Z" +``` diff --git a/idk/cmd/molecula-consumer-github/main.go b/idk/cmd/molecula-consumer-github/main.go new file mode 100644 index 000000000..1bc665e73 --- /dev/null +++ b/idk/cmd/molecula-consumer-github/main.go @@ -0,0 +1,435 @@ +package main + +import ( + "compress/gzip" + "context" + "encoding/json" + "expvar" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + _ "net/http/pprof" + "os" + "path/filepath" + "time" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +const ( + MinWaitDuration = 5 * time.Minute +) + +var ( + ghEventsVar = expvar.NewInt("gh_events") + ghEventsPerSecVar = expvar.NewFloat("gh_events_per_sec") +) + +func main() { + m := NewMain() + if err := pflag.LoadEnv(m, "IDKGITHUB_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} + +type Main struct { + idk.Main `flag:"!embed"` + RecordType string `help:"Output record type"` + StartTime time.Time `help:"Start time"` + EndTime time.Time `help:"End time, optional"` + CacheDir string `help:"Directory for local data files"` +} + +func NewMain() *Main { + m := &Main{ + Main: *idk.NewMain(), + StartTime: time.Now().UTC().Truncate(24 * time.Hour), + } + m.Main.Namespace = "ingester_github" + + // Start streaming events to channel in timestamp order. + + m.NewSource = func() (idk.Source, error) { + if !IsValidRecordType(m.RecordType) { + return nil, errors.New("invalid record type; must be 'event', 'user', 'issue' or 'repo'") + } + events := make(chan Event) + go m.stream(events) + source := NewSource(events) + source.RecordType = m.RecordType + source.Log = m.Main.Log() + // source.JustDoIt = m.JustDoIt + return source, nil + } + return m +} + +func (m *Main) Run() error { + // Set up HTTP endpoint to provide /debug/vars & /debug/pprof + fmt.Println("Serving debug endpoint at http://localhost:7070/debug") + go func() { _ = http.ListenAndServe(":7070", nil) }() + + go m.monitor() + + return m.Main.Run() +} + +func (m *Main) stream(events chan Event) { + defer close(events) + + // Ensure start time is aligned to hour. + t := m.StartTime.Truncate(1 * time.Hour) + + for { + // Stop once we reach the end time. + if !m.EndTime.IsZero() && t.After(m.EndTime) { + m.Main.Log().Printf("end of time range, stopping") + break + } + + // Fetch JSON data and convert to CSV. + // If the data doesn't exist, wait and retry. + if err := m.process(events, t); err == errNotFound { + d := time.Until(t) + if d < MinWaitDuration { + d = MinWaitDuration + } + m.Main.Log().Printf("cannot fetch data for %s, waiting %s", t.Format(time.RFC3339), d) + time.Sleep(d) + continue + } else if err != nil { + m.Main.Log().Printf("error processing data: %s", err) + events <- Event{err: err} + return + } + + // Move to the next timestamp. + t = t.Add(time.Hour) + } +} + +// process fetches the GitHub Archive gzipped JSON data streams each event to the events channel. +func (m *Main) process(events chan Event, t time.Time) error { + log.Printf("processing %s", t.Format(time.RFC3339)) + defer log.Printf("done processing %s", t.Format(time.RFC3339)) + + // Fetch a reader for the timestamp. + r, err := m.openURLReader(t) + if err != nil { + return err + } + defer r.Close() + + // Decompress stream. + gr, err := gzip.NewReader(r) + if err != nil { + return err + } + defer gr.Close() + + // Read data as JSON. + dec := json.NewDecoder(gr) + counter := 0 + for { + // Unmarshal single event from JSON stream. + var event Event + if err := dec.Decode(&event); err == io.EOF { + return nil + } else if err != nil { + return err + } + if counter%20000 == 0 { + m.Main.Log().Printf("record: id=%d", event.ID) + } + counter++ + + // Send event to channel. + events <- event + ghEventsVar.Add(1) // total event count + } +} + +// monitor runs in a separate goroutine and updates the ingestion rate stats. +func (m *Main) monitor() { + ticker := time.NewTicker(1 * time.Second) + defer ticker.Stop() + + var lastTime time.Time + var lastN int64 + for range ticker.C { + now, n := time.Now(), ghEventsVar.Value() + if !lastTime.IsZero() { + ghEventsPerSecVar.Set(float64(lastN-n) / lastTime.Sub(now).Seconds()) + } + lastTime, lastN = now, n + } +} + +type Source struct { + RecordType string + Log logger.Logger + + events chan Event +} + +func NewSource(events chan Event) *Source { + return &Source{events: events} +} + +func (s *Source) Record() (idk.Record, error) { + for { + event, ok := <-s.events + if !ok { + return nil, io.EOF + } + // Break out the error to hand back to IDK. + if event.err != nil { + return nil, event.err + } + + var record idk.Record + switch s.RecordType { + case RecordTypeEvent: + record = EventRecord(event) + case RecordTypeUser: + record = UserRecord(event) + case RecordTypeRepo: + record = RepoRecord(event) + case RecordTypeIssue: + record = IssueRecord(event) + default: + panic(fmt.Errorf("invalid source record type: %q", s.RecordType)) + } + + // If record implementation a validation function then check it. + // Retry the next record if the record is invalid. + if record, ok := record.(interface { + Valid() bool + }); ok && !record.Valid() { + continue + } + return record, nil + } +} + +func (s *Source) Schema() []idk.Field { + switch s.RecordType { + case RecordTypeEvent: + return s.eventSchema() + case RecordTypeUser: + return s.userSchema() + case RecordTypeRepo: + return s.repoSchema() + case RecordTypeIssue: + return s.issueSchema() + default: + panic(fmt.Sprintf("no schema for record type: %q", s.RecordType)) + } +} + +func (s *Source) eventSchema() []idk.Field { + idMin := int64(0) + idMax := int64(1 << 31) + return []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.StringField{NameVal: "type"}, + idk.IDField{NameVal: "actor_id", Quantum: "YMDH"}, + idk.IDField{NameVal: "repo_id", Quantum: "YMDH"}, + idk.IntField{NameVal: "actor_bsi", Min: &idMin, Max: &idMax}, + idk.IntField{NameVal: "repo_bsi", Min: &idMin, Max: &idMax}, + idk.RecordTimeField{NameVal: "created_at", Layout: time.RFC3339}, + } +} + +func (s *Source) userSchema() []idk.Field { + return []idk.Field{ + idk.StringField{NameVal: "login"}, + idk.IDField{NameVal: "github_id"}, + } +} + +func (s *Source) repoSchema() []idk.Field { + return []idk.Field{ + idk.StringField{NameVal: "name"}, + idk.IDField{NameVal: "github_id"}, + } +} + +func (s *Source) issueSchema() []idk.Field { + idMin := int64(0) + idMax := int64(1 << 31) + return []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.StringField{NameVal: "url"}, + idk.IntField{NameVal: "number", Min: &idMin, Max: &idMax}, + idk.IDField{NameVal: "comments", Mutex: true}, + idk.RecordTimeField{NameVal: "created_at", Layout: time.RFC3339}, + } +} +func (s *Source) Close() error { + return nil +} + +// Output type constants. +const ( + RecordTypeEvent = "event" + RecordTypeUser = "user" + RecordTypeRepo = "repo" + RecordTypeIssue = "issue" +) + +// IsValidRecordType returns true if s is a valid record type. +func IsValidRecordType(s string) bool { + switch s { + case RecordTypeEvent, RecordTypeUser, RecordTypeRepo, RecordTypeIssue: + return true + default: + return false + } +} + +type EventRecord Event + +func (r EventRecord) Data() []interface{} { + return []interface{}{r.ID, r.Type, r.Actor.ID, r.Repo.ID, r.Actor.ID, r.Repo.ID, r.CreatedAt} +} + +func (r EventRecord) Commit(ctx context.Context) error { return nil } + +type UserRecord Event + +func (r UserRecord) Data() []interface{} { + return []interface{}{r.Actor.Login, r.Actor.ID} +} + +func (r UserRecord) Commit(ctx context.Context) error { return nil } + +type RepoRecord Event + +func (r RepoRecord) Data() []interface{} { + return []interface{}{r.Repo.Name, r.Repo.ID} +} + +func (r RepoRecord) Commit(ctx context.Context) error { return nil } + +type IssueRecord Event + +func (r IssueRecord) Valid() bool { + return r.Type == "IssuesEvent" || r.Type == "IssueCommentEvent" +} + +func (r IssueRecord) Data() []interface{} { + var issue Issue + switch r.Type { + case "IssuesEvent": + var payload IssuePayload + _ = json.Unmarshal(r.Payload, &payload) + issue = payload.Issue + case "IssueCommentEvent": + var payload IssueCommentPayload + _ = json.Unmarshal(r.Payload, &payload) + issue = payload.Issue + } + return []interface{}{issue.ID, issue.URL, issue.Number, issue.Comments, r.CreatedAt} +} + +func (r IssueRecord) Commit(ctx context.Context) error { return nil } + +func (m *Main) openURLReader(t time.Time) (io.ReadCloser, error) { + filename := fmt.Sprintf("%04d-%02d-%02d-%d.json.gz", t.Year(), t.Month(), t.Day(), t.Hour()) + cachePath := filepath.Join(m.CacheDir, filename) + + if m.CacheDir != "" { + if fi, err := os.Stat(cachePath); err == nil && fi.Size() != 0 { + m.Log().Printf("using cached file") + return os.Open(cachePath) + } + } + + rawurl := "https://data.gharchive.org/" + filename + resp, err := http.Get(rawurl) + if err != nil { + return nil, err + } else if resp.StatusCode == http.StatusNotFound { + resp.Body.Close() + return nil, errNotFound + } else if resp.StatusCode >= 400 { + resp.Body.Close() + return nil, fmt.Errorf("invalid status code: code=%d url=%s", resp.StatusCode, rawurl) + } + + // If no cache directory, return body directly. + if m.CacheDir == "" { + return resp.Body, nil + } + + // If cache enabled, write to file first and then return. + if buf, err := ioutil.ReadAll(resp.Body); err != nil { + return nil, err + } else if err := ioutil.WriteFile(cachePath+".tmp", buf, 0666); err != nil { + return nil, err + } else if err := os.Rename(cachePath+".tmp", cachePath); err != nil { + return nil, err + } + m.Log().Printf("cached file written") + return os.Open(cachePath) +} + +type Event struct { + ID int `json:"id,string"` + Type string `json:"type"` + Actor *Actor `json:"actor"` + Repo *Repo `json:"repo"` + Payload json.RawMessage `json:"payload"` + CreatedAt time.Time `json:"created_at"` + + err error +} + +type Actor struct { + ID int `json:"id"` + Login string `json:"login"` +} + +type Repo struct { + ID int `json:"id"` + Name string `json:"name"` +} + +type Issue struct { + ID int `json:"id"` + URL string `json:"url"` + Number int `json:"number"` + Comments int `json:"comments"` +} + +type IssuePayload struct { + Issue Issue `json:"issue"` +} + +type IssueCommentPayload struct { + Issue Issue `json:"issue"` +} + +// errNotFound is returned when a data file does not exist. +var errNotFound = errors.New("not found") diff --git a/idk/cmd/molecula-consumer-kafka-delete/main.go b/idk/cmd/molecula-consumer-kafka-delete/main.go new file mode 100644 index 000000000..3e1053f3d --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka-delete/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "log" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka" +) + +func main() { + dm, err := kafka.NewMain() + if err != nil { + log.Fatal(err) + } + dm.Delete = true + + if err := pflag.LoadEnv(dm, "CONSUMER_DEL_", nil); err != nil { + log.Fatal(err) + } + dm.Rename() + if dm.DryRun { + log.Printf("%+v\n", dm) + return + } + if err := dm.Run(); err != nil { + logger := dm.Log() + if logger != nil { + logger.Printf("Error running command: %v", err) + } + log.Fatal(err) // make sure we log to stderr if the error happened before logging was set up + } +} diff --git a/idk/cmd/molecula-consumer-kafka-delete/main_test.go b/idk/cmd/molecula-consumer-kafka-delete/main_test.go new file mode 100644 index 000000000..19ce873a5 --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka-delete/main_test.go @@ -0,0 +1,192 @@ +package main + +import ( + "reflect" + "testing" + "time" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka" + pflag13 "github.com/spf13/pflag" +) + +func TestConsumerKafkaDeleteArgs(t *testing.T) { + tests := []struct { + name string + args []string + + AssumeEmptyPilosa bool + AutoGenerate bool + BatchSize int + Concurrency int + IDField string + PilosaHosts []string + PilosaGRPCHosts []string + Stats string + Verbose bool + ExpSplitBatchMode bool + WriteCSV string + Index string + PrimaryKeyFields []string + Pprof string + KafkaHosts []string + RegistryURL string + MaxMsgs uint64 + Group string + Topics []string + Timeout time.Duration + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + }, + AssumeEmptyPilosa: false, + AutoGenerate: false, + BatchSize: 1, + Concurrency: 1, + IDField: "", + PilosaHosts: []string{"localhost:10101"}, + PilosaGRPCHosts: []string{"localhost:20101"}, + Stats: "localhost:9093", + Verbose: false, + ExpSplitBatchMode: false, + WriteCSV: "", + Index: "", + Pprof: "localhost:6062", + KafkaHosts: []string{"localhost:9092"}, + RegistryURL: "http://localhost:8081", + MaxMsgs: uint64(0), + Group: "defaultgroup", + Topics: []string{"defaulttopic"}, + Timeout: time.Second, + }, + { + name: "long", + args: []string{ + "molecula-consumer-kafka-delete", + "--assume-empty-pilosa", "true", + "--auto-generate", "true", + "--batch-size", "12345", + "--concurrency", "1", + "--exp-split-batch-mode", "true", + "--id-field", "id", + "--index", "index_name", + "--log-path", "/tmp/file.log", + "--pack-bools", "true", + "--pilosa-grpc-hosts", "grpc:1,grpc:2,grpc:3", + "--pilosa-hosts", "pilosa:1,pilosa:2,pilosa:3", + "--stats", "localhost:9093", + "--tls.ca-certificate", "/tmp/file.ca", + "--tls.certificate", "/tmp/file.certificate", + "--tls.enable-client-verification", "true", + "--tls.key", "/tmp/file.key", + "--tls.skip-verify", "false", + "--verbose", "true", + "--write-csv", "/tmp/file.csv", + "--index", "index-name", + "--primary-key-fields", "k1", + "--pprof", "localhost:6666", + "--kafka-bootstrap-servers", "kafka:1,kafka:2,kafka:3", + "--schema-registry-url", "registry.molecula.com", + "--max-msgs", "1234", + "--group", "molecula", + "--topics", "t1,t2,t3,t4", + "--timeout", "123ms", + }, + AssumeEmptyPilosa: true, + AutoGenerate: true, + BatchSize: 12345, + Concurrency: 1, + IDField: "id", + PilosaHosts: []string{"pilosa:1", "pilosa:2", "pilosa:3"}, + PilosaGRPCHosts: []string{"grpc:1", "grpc:2", "grpc:3"}, + Stats: "localhost:9093", + Verbose: true, + ExpSplitBatchMode: true, + WriteCSV: "/tmp/file.csv", + Index: "index-name", + PrimaryKeyFields: []string{"k1"}, + KafkaHosts: []string{"kafka:1", "kafka:2", "kafka:3"}, + RegistryURL: "registry.molecula.com", + MaxMsgs: uint64(1234), + Group: "molecula", + Topics: []string{"t1", "t2", "t3", "t4"}, + Timeout: 123 * time.Millisecond, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m, err := kafka.NewMain() + if err != nil { + t.Fatal(err) + } + m.Delete = true + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "CONSUMER_DEL_", nil); err != nil { + t.Fatal(err) + } + + if tc.AssumeEmptyPilosa != m.AssumeEmptyPilosa { + t.Fatalf("--assume-empty-pilosa expected: %v got: %v", tc.AssumeEmptyPilosa, m.AssumeEmptyPilosa) + } + if tc.AutoGenerate != m.AutoGenerate { + t.Fatalf("--auto-generate expected: %v got: %v", tc.AutoGenerate, m.AutoGenerate) + } + if tc.BatchSize != m.BatchSize { + t.Fatalf("--batch-size expected: %v got: %v", tc.BatchSize, m.BatchSize) + } + if tc.Concurrency != m.Concurrency { + t.Fatalf("--concurrency expected: %v got: %v", tc.Concurrency, m.Concurrency) + } + if tc.IDField != m.IDField { + t.Fatalf("--id-field expected: %v got: %v", tc.IDField, m.IDField) + } + if !reflect.DeepEqual(tc.PilosaHosts, m.PilosaHosts) { + t.Fatalf("--pilosa-hosts expected: %v got: %v", tc.PilosaHosts, m.PilosaHosts) + } + if !reflect.DeepEqual(tc.PilosaGRPCHosts, m.PilosaGRPCHosts) { + t.Fatalf("--pilosa-grpc-hosts expected: %v got: %v", tc.PilosaGRPCHosts, m.PilosaGRPCHosts) + } + if tc.Stats != m.Stats { + t.Fatalf("--stats expected: %v got: %v", tc.Stats, m.Stats) + } + if tc.Verbose != m.Verbose { + t.Fatalf("--verbose expected: %v got: %v", tc.Verbose, m.Verbose) + } + if tc.ExpSplitBatchMode != m.ExpSplitBatchMode { + t.Fatalf("--exp-split-batch-mode expected: %v got: %v", tc.ExpSplitBatchMode, m.ExpSplitBatchMode) + } + if tc.WriteCSV != m.WriteCSV { + t.Fatalf("--write-csv expected: %v got: %v", tc.WriteCSV, m.WriteCSV) + } + if tc.Index != m.Index { + t.Fatalf("--index expected: %v got: %v", tc.Index, m.Index) + } + if !reflect.DeepEqual(tc.PrimaryKeyFields, m.PrimaryKeyFields) { + t.Fatalf("--primary-key-fields expected: %v got: %v", tc.PrimaryKeyFields, m.PrimaryKeyFields) + } + if !reflect.DeepEqual(tc.KafkaHosts, m.KafkaBootstrapServers) { + t.Fatalf("--kafka-hosts expected: %v got: %v", tc.KafkaHosts, m.KafkaBootstrapServers) + } + if tc.RegistryURL != m.SchemaRegistryURL { + t.Fatalf("--registry-url expected: %v got: %v", tc.RegistryURL, m.SchemaRegistryURL) + } + if tc.MaxMsgs != m.MaxMsgs { + t.Fatalf("--max-msgs expected: %v got: %v", tc.MaxMsgs, m.MaxMsgs) + } + if tc.Group != m.Group { + t.Fatalf("--group expected: %v got: %v", tc.Group, m.Group) + } + if !reflect.DeepEqual(tc.Topics, m.Topics) { + t.Fatalf("--topics expected: %v got: %v", tc.Topics, m.Topics) + } + if tc.Timeout != m.Timeout { + t.Fatalf("--timeout expected: %v got: %v", tc.Timeout, m.Timeout) + } + }) + } +} diff --git a/idk/cmd/molecula-consumer-kafka-sasl/main.go b/idk/cmd/molecula-consumer-kafka-sasl/main.go new file mode 100644 index 000000000..88e441e00 --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka-sasl/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka_sasl" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m, err := kafka_sasl.NewMain() + if err != nil { + log.Fatal(err) + } + if err := pflag.LoadEnv(m, "CONSUMER_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-kafka-sasl/readme.md b/idk/cmd/molecula-consumer-kafka-sasl/readme.md new file mode 100644 index 000000000..837ff67fa --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka-sasl/readme.md @@ -0,0 +1,67 @@ +## Molecula Consumer Kafka SASL + +#### Background + +The goal of **Molecula Consumer Kafka SASL** is to allow IDK to connect to Kafka brokers with SASL-SSL enabled. Currently, the Kafka library we are using in **Molecula Consumer Kafka** and **Molecula Consumer Kafka Static** is Kafka-go from [Segment IO](https://github.com/segmentio/kafka-go) and it does not seem to support both SASL and SSL. After some research, we found that [Confluent Kafka Go](https://github.com/segmentio/kafka-go) is a tool we can use to connect to Kafka brokers with SASL and SSL. **Molecula Consumer Kafka SASL** was written based on **Molecula Consumer Kafka Static**. + +#### Future + +There should be a ticket coming soon to re-write **Molecula Consumer Kafka** with [Confluent Kafka Go](https://github.com/segmentio/kafka-go). At this moment, one of the challenges that will come up is finding a way to cross compile cgo through different architectures (**arm64!**) [*make docker-release*]. Once **Molecula Consumer Kafka** re-write with [Confluent Kafka Go](https://github.com/segmentio/kafka-go) is done, Kafka-go from [Segment IO](https://github.com/segmentio/kafka-go) should be removed as there is no need to have 2 libraries that basically do the same thing to exist within the project. + +#### Kafka SASL + +**Molecula Consumer Kafka SASL** should function and behave just like **Molecula Consumer Kafka Static**. The only difference is: **Molecula Consumer Kafka SASL** will be able to connect to Kafka brokers with SASL and SSL enabled by providing the needed information. + +#### New options + +The following options were added for Kafka SASL. None of the newly added are required. +- Username: SASL authentication username +- Password: SASL authentication password +- IdAlgorithm: The endpoint identification algorithm used by clients to validate server host name. The default value is https. +- SaslMechanism: SASL mechanism to use for authentication. Range: GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER +- SecurityProtocol: Protocol used to communicate with brokers. Range: plaintext, ssl, sasl_plaintext, sasl_ssl +- SslCaLocation: File or directory path to CA certificate(s) for verifying the broker's key. +- SslCertificateLocation: Path to client's public key (PEM) used for authentication. +- SslKeyLocation: Path to client's private key (PEM) used for authentication. +- SslKeyPassword: Private key passphrase (for use with ssl.key.location and set_ssl_cert()). + +#### How to start Kafka SASL and connect to Lccal IDK Broker with SASL and SSL enabled + +1. Start Local IDK by navigating to project IDK then enter: ***make shutdown && sudo make startup*** + - Looking at **docker-compose.yml**, non SASL & non SSL broker is at kafka:9092 + - SASL & SSL broker is at kafka:9094 +2. Connect to kafka:9094 + - The SASL and SSL information needed to connect to kafka:9094 is under docker-sasl/client-ssl-test.conf + - test connection by listing the topics in kafka:9094: + - kafka-topics --bootstrap-server kafka:9094 --list **--command-config client-ssl-test.conf.conf** +3. Create a new topic to test sending/receiving messages + - kafka-topics --bootstrap-server kafka:9094 --create --replication-factor 1 --partitions 10 **--topic testSasl** --command-config client-ssl-test.conf +4. Create a header file + - Since **Molecula Consumer Kafka SASL** was written based on **Molecula Consumer Kafka Static**, it needs a header file that has a schema inside it + - Example header.json: + ``` + [ + { + "name":"test_string", + "path":[ + "s" + ], + "type":"string" + } + ] + ``` + - example message that matches the above schema: **{"s":"test 1"}** +5. Create a producer + - kafka-console-producer --bootstrap-server kafka:9094 **--topic testSasl** --producer.config client-ssl-test.conf +6. SSL Certificates: + - There is a script to generate SSL certificates under docker-sasl/ssl_keys/gen-ssl-certs.sh + - Can also use existing certs in the above folder and feed cert files to molecula-consumer-kafka-sasl + - These certs are needed since in this scenario, we are using kafka with SSL enabled on localhost so we have to geenrate self-signed SSL certs. +7. Run molecula-consumer-kafka-sasl + - If binary is not there, build by using **go build** + - Run : + - ./molecula-consumer-kafka-sasl --auto-generate --index test_string --group testGroup --header header.json --topics testSasl --kafka-hosts kafka:9094 --kafka-sasl.username kafkaClient1 --kafka-sasl.password kafkaClient1pw --kafka-sasl.sasl-mechanism PLAIN --kafka-sasl.security-protocol SASL_SSL --kafka-sasl.ssl-ca-location ../../docker-sasl/ssl_keys/ca-cert --kafka-sasl.ssl-certificate-location ../../docker-sasl/ssl_keys/client_kafkaClient_client.pem --kafka-sasl.ssl-key-location ../../docker-sasl/ssl_keys/client_kafkaClient_client.key --kafka-sasl.ssl-key-password 123456 +8. Send a message with kafka-console-producer +9. molecula-consumer-kafka-sasl should be able to receive the message and commit it to locally +10. Double check by going to local pilosa (http://127.0.0.1:10101/) -> query builder -> select test_string in the Table dropdown -> Run + - the results should show the messages that were sent by kafka-console-producer diff --git a/idk/cmd/molecula-consumer-kafka-static/main.go b/idk/cmd/molecula-consumer-kafka-static/main.go new file mode 100644 index 000000000..e79c80597 --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka-static/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka_static" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m := kafka_static.NewMain() + if err := pflag.LoadEnv(m, "CONSUMER_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-kafka/main.go b/idk/cmd/molecula-consumer-kafka/main.go new file mode 100644 index 000000000..70ca74840 --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kafka" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m, err := kafka.NewMain() + if err != nil { + log.Fatal(err) + } + + if err := pflag.LoadEnv(m, "CONSUMER_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-kafka/main_test.go b/idk/cmd/molecula-consumer-kafka/main_test.go new file mode 100644 index 000000000..bd7ba0cca --- /dev/null +++ b/idk/cmd/molecula-consumer-kafka/main_test.go @@ -0,0 +1,206 @@ +package main + +import ( + "reflect" + "testing" + "time" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/kafka" + pflag13 "github.com/spf13/pflag" +) + +func TestConsumerKafkaArgs(t *testing.T) { + tests := []struct { + name string + args []string + + AssumeEmptyPilosa bool + AutoGenerate bool + ExternalGenerate bool + OffsetMode bool + BatchSize int + Concurrency int + IDField string + PilosaHosts []string + PilosaGRPCHosts []string + Stats string + Verbose bool + ExpSplitBatchMode bool + WriteCSV string + Index string + PrimaryKeyFields []string + Pprof string + KafkaHosts []string + RegistryURL string + ConfluentCommand idk.ConfluentCommand + Group string + Topics []string + Timeout time.Duration + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + }, + AssumeEmptyPilosa: false, + AutoGenerate: false, + ExternalGenerate: false, + OffsetMode: true, + BatchSize: 1, + Concurrency: 1, + IDField: "", + PilosaHosts: []string{"localhost:10101"}, + PilosaGRPCHosts: []string{"localhost:20101"}, + Stats: "localhost:9093", + Verbose: false, + ExpSplitBatchMode: false, + WriteCSV: "", + Index: "", + Pprof: "localhost:6062", + KafkaHosts: []string{"localhost:9092"}, + RegistryURL: "http://localhost:8081", + Group: "defaultgroup", + Topics: []string{"defaulttopic"}, + Timeout: time.Second, + }, + { + name: "long", + args: []string{ + "molecula-consumer-kafka", + "--assume-empty-pilosa", "true", + "--auto-generate", "true", + "--external-generate", + "--batch-size", "12345", + "--concurrency", "1", + "--exp-split-batch-mode", "true", + "--id-field", "id", + "--index", "index_name", + "--kafka-debug", "consumer", + "--log-path", "/tmp/file.log", + "--pack-bools", "true", + "--pilosa-grpc-hosts", "grpc:1,grpc:2,grpc:3", + "--pilosa-hosts", "pilosa:1,pilosa:2,pilosa:3", + "--stats", "localhost:9093", + "--tls.ca-certificate", "/tmp/file.ca", + "--tls.certificate", "/tmp/file.certificate", + "--tls.enable-client-verification", "true", + "--tls.key", "/tmp/file.key", + "--tls.skip-verify", "false", + "--verbose", "true", + "--write-csv", "/tmp/file.csv", + "--index", "index-name", + "--primary-key-fields", "k1", + "--pprof", "localhost:6666", + "--kafka-bootstrap-servers", "kafka:1,kafka:2,kafka:3", + "--schema-registry-url", "registry.molecula.com", + "--group", "molecula", + "--topics", "t1,t2,t3,t4", + "--timeout", "123ms", + }, + AssumeEmptyPilosa: true, + ExternalGenerate: true, + AutoGenerate: true, + BatchSize: 12345, + Concurrency: 1, + IDField: "id", + PilosaHosts: []string{"pilosa:1", "pilosa:2", "pilosa:3"}, + PilosaGRPCHosts: []string{"grpc:1", "grpc:2", "grpc:3"}, + Stats: "localhost:9093", + Verbose: true, + ExpSplitBatchMode: true, + WriteCSV: "/tmp/file.csv", + Index: "index-name", + PrimaryKeyFields: []string{"k1"}, + KafkaHosts: []string{"kafka:1", "kafka:2", "kafka:3"}, + RegistryURL: "registry.molecula.com", + ConfluentCommand: idk.ConfluentCommand{ + KafkaDebug: "consumer", + }, + Group: "molecula", + Topics: []string{"t1", "t2", "t3", "t4"}, + Timeout: 123 * time.Millisecond, + OffsetMode: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m, err := kafka.NewMain() + if err != nil { + t.Fatal(err) + } + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "CONSUMER_", nil); err != nil { + t.Fatal(err) + } + + if tc.AssumeEmptyPilosa != m.AssumeEmptyPilosa { + t.Fatalf("--assume-empty-pilosa expected: %v got: %v", tc.AssumeEmptyPilosa, m.AssumeEmptyPilosa) + } + if tc.AutoGenerate != m.AutoGenerate { + t.Fatalf("--auto-generate expected: %v got: %v", tc.AutoGenerate, m.AutoGenerate) + } + if tc.ExternalGenerate != m.ExternalGenerate { + t.Fatalf("--external-generate expected: %v got: %v", tc.ExternalGenerate, m.ExternalGenerate) + } + if tc.OffsetMode != m.OffsetMode { + t.Fatalf("--offset-mode expected: %v got: %v", tc.OffsetMode, m.OffsetMode) + } + if tc.BatchSize != m.BatchSize { + t.Fatalf("--batch-size expected: %v got: %v", tc.BatchSize, m.BatchSize) + } + if tc.Concurrency != m.Concurrency { + t.Fatalf("--concurrency expected: %v got: %v", tc.Concurrency, m.Concurrency) + } + if tc.IDField != m.IDField { + t.Fatalf("--id-field expected: %v got: %v", tc.IDField, m.IDField) + } + if !reflect.DeepEqual(tc.PilosaHosts, m.PilosaHosts) { + t.Fatalf("--pilosa-hosts expected: %v got: %v", tc.PilosaHosts, m.PilosaHosts) + } + if !reflect.DeepEqual(tc.PilosaGRPCHosts, m.PilosaGRPCHosts) { + t.Fatalf("--pilosa-grpc-hosts expected: %v got: %v", tc.PilosaGRPCHosts, m.PilosaGRPCHosts) + } + if tc.Stats != m.Stats { + t.Fatalf("--stats expected: %v got: %v", tc.Stats, m.Stats) + } + if tc.Verbose != m.Verbose { + t.Fatalf("--verbose expected: %v got: %v", tc.Verbose, m.Verbose) + } + if tc.ExpSplitBatchMode != m.ExpSplitBatchMode { + t.Fatalf("--exp-split-batch-mode expected: %v got: %v", tc.ExpSplitBatchMode, m.ExpSplitBatchMode) + } + if tc.WriteCSV != m.WriteCSV { + t.Fatalf("--write-csv expected: %v got: %v", tc.WriteCSV, m.WriteCSV) + } + if tc.Index != m.Index { + t.Fatalf("--index expected: %v got: %v", tc.Index, m.Index) + } + if !reflect.DeepEqual(tc.PrimaryKeyFields, m.PrimaryKeyFields) { + t.Fatalf("--primary-key-fields expected: %v got: %v", tc.PrimaryKeyFields, m.PrimaryKeyFields) + } + if !reflect.DeepEqual(tc.KafkaHosts, m.KafkaBootstrapServers) { + t.Fatalf("--kafka-hosts expected: %v got: %v", tc.KafkaHosts, m.KafkaBootstrapServers) + } + if tc.RegistryURL != m.SchemaRegistryURL { + t.Fatalf("--registry-url expected: %v got: %v", tc.RegistryURL, m.SchemaRegistryURL) + } + if tc.ConfluentCommand.KafkaDebug != m.ConfluentCommand.KafkaDebug { + t.Fatalf("--kafka-debug expected: %v got: %v", tc.ConfluentCommand.KafkaDebug, m.ConfluentCommand.KafkaDebug) + } + if tc.Group != m.Group { + t.Fatalf("--group expected: %v got: %v", tc.Group, m.Group) + } + if !reflect.DeepEqual(tc.Topics, m.Topics) { + t.Fatalf("--topics expected: %v got: %v", tc.Topics, m.Topics) + } + if tc.Timeout != m.Timeout { + t.Fatalf("--timeout expected: %v got: %v", tc.Timeout, m.Timeout) + } + }) + } +} diff --git a/idk/cmd/molecula-consumer-kinesis/main.go b/idk/cmd/molecula-consumer-kinesis/main.go new file mode 100644 index 000000000..f445137f0 --- /dev/null +++ b/idk/cmd/molecula-consumer-kinesis/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/kinesis" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m := kinesis.NewMain() + if err := pflag.LoadEnv(m, "CONSUMER_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-sql/main.go b/idk/cmd/molecula-consumer-sql/main.go new file mode 100644 index 000000000..a7a779248 --- /dev/null +++ b/idk/cmd/molecula-consumer-sql/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "log" + "os" + + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/sql" + "github.com/molecula/featurebase/v3/logger" +) + +func main() { + m := sql.NewMain() + if err := pflag.LoadEnv(m, "IDK_", nil); err != nil { + log.Fatal(err) + } + m.Rename() + if m.DryRun { + log.Printf("%+v\n", m) + return + } + + if m.Concurrency != 1 { + m.Log().Infof("Concurrency is not supported for sql ingest. '--concurrency' flag will be ignored.") + m.Concurrency = 1 + } + + if err := m.Run(); err != nil { + log := m.Log() + if log == nil { + // if we fail before a logger was instantiated + logger.NewStandardLogger(os.Stderr).Errorf("Error running command: %v", err) + os.Exit(1) + } + log.Errorf("Error running command: %v", err) + os.Exit(1) + } +} diff --git a/idk/cmd/molecula-consumer-sql/main_test.go b/idk/cmd/molecula-consumer-sql/main_test.go new file mode 100644 index 000000000..5c058c4fa --- /dev/null +++ b/idk/cmd/molecula-consumer-sql/main_test.go @@ -0,0 +1,151 @@ +package main + +import ( + "reflect" + "testing" + + "github.com/jaffee/commandeer" + "github.com/jaffee/commandeer/pflag" + "github.com/molecula/featurebase/v3/idk/sql" + pflag13 "github.com/spf13/pflag" +) + +func TestConsumerSQLArgs(t *testing.T) { + tests := []struct { + name string + args []string + + AssumeEmptyPilosa bool + AutoGenerate bool + BatchSize int + Concurrency int + IDField string + PilosaHosts []string + PilosaGRPCHosts []string + Stats string + Verbose bool + ExpSplitBatchMode bool + WriteCSV string + Driver string + ConnectionString string + RowExpr string + StringArraySeparator string + }{ + { + name: "empty", + args: []string{ + "", // os.Args[0] can be ignored + }, + BatchSize: 1, + Concurrency: 1, + PilosaHosts: []string{"localhost:10101"}, + PilosaGRPCHosts: []string{"localhost:20101"}, + Stats: "localhost:9093", + Driver: "postgres", + ConnectionString: "postgres://user:password@localhost:5432/defaultindex?sslmode=disable", + StringArraySeparator: ",", + }, + { + name: "long", + args: []string{ + "molecula-consumer-sql", + "--assume-empty-pilosa", "true", + "--auto-generate", "true", + "--batch-size", "12345", + "--concurrency", "1", + "--exp-split-batch-mode", "true", + "--id-field", "id", + "--index", "index_name", + "--log-path", "/tmp/file.log", + "--pack-bools", "true", + "--pilosa-grpc-hosts", "grpc:1,grpc:2,grpc:3", + "--pilosa-hosts", "pilosa:1,pilosa:2,pilosa:3", + "--primary-key-fields", "primary_key", + "--stats", "localhost:9093", + "--tls.ca-certificate", "/tmp/file.ca", + "--tls.certificate", "/tmp/file.certificate", + "--tls.enable-client-verification", "true", + "--tls.key", "/tmp/file.key", + "--tls.skip-verify", "false", + "--verbose", "true", + "--write-csv", "/tmp/file.csv", + "--driver", "mysql", + "--connection-string", "mysql://user:password@localhost:3306/index_name", + "--string-array-separator", ";", + "--row-expr", "select 1;", + }, + AssumeEmptyPilosa: true, + AutoGenerate: true, + BatchSize: 12345, + Concurrency: 1, + IDField: "id", + PilosaHosts: []string{"pilosa:1", "pilosa:2", "pilosa:3"}, + PilosaGRPCHosts: []string{"grpc:1", "grpc:2", "grpc:3"}, + Stats: "localhost:9093", + Verbose: true, + ExpSplitBatchMode: true, + WriteCSV: "/tmp/file.csv", + Driver: "mysql", + ConnectionString: "mysql://user:password@localhost:3306/index_name", + StringArraySeparator: ";", + RowExpr: "select 1;", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + fs := &pflag.FlagSet{FlagSet: pflag13.NewFlagSet(tc.args[0], pflag13.ExitOnError)} + m := sql.NewMain() + + if err := commandeer.LoadArgsEnv(fs, m, tc.args[1:], "IDK_", nil); err != nil { + t.Fatal(err) + } + + if tc.AssumeEmptyPilosa != m.AssumeEmptyPilosa { + t.Fatalf("--assume-empty-pilosa expected: %v got: %v", tc.AssumeEmptyPilosa, m.AssumeEmptyPilosa) + } + if tc.AutoGenerate != m.AutoGenerate { + t.Fatalf("--auto-generate expected: %v got: %v", tc.AutoGenerate, m.AutoGenerate) + } + if tc.BatchSize != m.BatchSize { + t.Fatalf("--batch-size expected: %v got: %v", tc.BatchSize, m.BatchSize) + } + if tc.Concurrency != m.Concurrency { + t.Fatalf("--concurrency expected: %v got: %v", tc.Concurrency, m.Concurrency) + } + if tc.IDField != m.IDField { + t.Fatalf("--id-field expected: %v got: %v", tc.IDField, m.IDField) + } + if !reflect.DeepEqual(tc.PilosaHosts, m.PilosaHosts) { + t.Fatalf("--pilosa-hosts expected: %v got: %v", tc.PilosaHosts, m.PilosaHosts) + } + if !reflect.DeepEqual(tc.PilosaGRPCHosts, m.PilosaGRPCHosts) { + t.Fatalf("--pilosa-grpc-hosts expected: %v got: %v", tc.PilosaGRPCHosts, m.PilosaGRPCHosts) + } + if tc.Stats != m.Stats { + t.Fatalf("--stats expected: %v got: %v", tc.Stats, m.Stats) + } + if tc.Verbose != m.Verbose { + t.Fatalf("--verbose expected: %v got: %v", tc.Verbose, m.Verbose) + } + if tc.ExpSplitBatchMode != m.ExpSplitBatchMode { + t.Fatalf("--exp-split-batch-mode expected: %v got: %v", tc.ExpSplitBatchMode, m.ExpSplitBatchMode) + } + if tc.WriteCSV != m.WriteCSV { + t.Fatalf("--write-csv expected: %v got: %v", tc.WriteCSV, m.WriteCSV) + } + if tc.Driver != m.Driver { + t.Fatalf("--driver expected: %v got: %v", tc.Driver, m.Driver) + } + if tc.ConnectionString != m.ConnectionString { + t.Fatalf("--connection-string expected: %v got: %v", tc.ConnectionString, m.ConnectionString) + } + if tc.StringArraySeparator != m.StringArraySeparator { + t.Fatalf("--string-array-separator expected: %v got: %v", tc.StringArraySeparator, m.StringArraySeparator) + } + if tc.RowExpr != m.RowExpr { + t.Fatalf("--row-expr expected: %v got: %v", tc.RowExpr, m.RowExpr) + } + }) + } +} diff --git a/idk/common/configMap.go b/idk/common/configMap.go new file mode 100644 index 000000000..20a1084fa --- /dev/null +++ b/idk/common/configMap.go @@ -0,0 +1,191 @@ +package common + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "strings" + "sync/atomic" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +// LaunchKafkaEventConfirmer consumes the events channel for the messages Produced by the producer + +func LaunchKafkaEventConfirmer(producer *confluent.Producer, finished *int32, iter *int64) chan struct{} { + doneChan := make(chan struct{}) + go func() { + defer func() { + close(doneChan) + }() + cnt := int64(0) + for e := range producer.Events() { + switch ev := e.(type) { + case *confluent.Message: + cnt += 1 + msg := ev + if msg.TopicPartition.Error != nil { + fmt.Printf("Delivery failed: %v\n", msg.TopicPartition.Error) + } + default: + fmt.Printf("Ignored event: %s\n", ev) + } + check := atomic.LoadInt32(finished) + if check > 0 { + sent := atomic.LoadInt64(iter) + if cnt >= sent { + doneChan <- struct{}{} + } + } + } + }() + return doneChan +} +func SetupConfluent(m *idk.ConfluentCommand) (*confluent.ConfigMap, error) { + var err error + configMap := &confluent.ConfigMap{} + if m.KafkaConfiguration != "" { + file, er := ioutil.ReadFile(m.KafkaConfiguration) + if er != nil { + return nil, er + } + er = json.Unmarshal([]byte(file), configMap) + if er != nil { + return nil, er + } + } + err = configMap.SetKey("enable.auto.commit", false) + if err != nil { + return nil, errors.Wrap(err, "disabling auto commit") + } + if m.KafkaSocketTimeoutMs > 0 { + err = configMap.SetKey("socket.timeout.ms", m.KafkaSocketTimeoutMs) + if err != nil { + return nil, errors.Wrap(err, "setting socket timeout") + } + } else { + err = configMap.SetKey("socket.timeout.ms", 60000) + if err != nil { + return nil, errors.Wrap(err, "setting socket timeout") + } + } + if len(m.KafkaBootstrapServers) > 0 { + err = configMap.SetKey("bootstrap.servers", strings.Join(m.KafkaBootstrapServers, ",")) + if err != nil { + return nil, errors.Wrap(err, "setting bootstrap") + } + + } else { + err = configMap.SetKey("bootstrap.servers", "localhost:9092") + if err != nil { + return nil, errors.Wrap(err, "setting bootstrap") + } + } + + //SSL + if m.KafkaSslCaLocation != "" { + err = configMap.SetKey("ssl.ca.location", m.KafkaSslCaLocation) + if err != nil { + return nil, err + } + } + if m.KafkaSslKeyLocation != "" { + err = configMap.SetKey("ssl.key.location", m.KafkaSslKeyLocation) + if err != nil { + return nil, err + } + } + if m.KafkaSslKeyPassword != "" { + err = configMap.SetKey("ssl.key.password", m.KafkaSslKeyPassword) + if err != nil { + return nil, err + } + } + if m.KafkaSslCertificateLocation != "" { + err = configMap.SetKey("ssl.certificate.location", m.KafkaSslCertificateLocation) + if err != nil { + return nil, err + } + } + err = configMap.SetKey("enable.ssl.certificate.verification", m.KafkaEnableSslCertificateVerification) + if err != nil { + return nil, err + } + + if m.KafkaSslEndpointIdentificationAlgorithm != "" { + err = configMap.SetKey("ssl.endpoint.identification.algorithm", m.KafkaSslEndpointIdentificationAlgorithm) + if err != nil { + return nil, err + } + } + + //SSL + if m.KafkaSslCaLocation != "" { + err = configMap.SetKey("ssl.ca.location", m.KafkaSslCaLocation) + if err != nil { + return nil, err + } + } + if m.KafkaSslKeyLocation != "" { + err = configMap.SetKey("ssl.key.location", m.KafkaSslKeyLocation) + if err != nil { + return nil, err + } + } + if m.KafkaSslCertificateLocation != "" { + err = configMap.SetKey("ssl.certificate.location", m.KafkaSslCertificateLocation) + if err != nil { + return nil, err + } + } + err = configMap.SetKey("enable.ssl.certificate.verification", m.KafkaEnableSslCertificateVerification) + if err != nil { + return nil, err + } + + if m.KafkaSslEndpointIdentificationAlgorithm != "" { + err = configMap.SetKey("ssl.endpoint.identification.algorithm", m.KafkaSslEndpointIdentificationAlgorithm) + if err != nil { + return nil, err + } + } + // SASL, + if m.KafkaSaslUsername != "" && m.KafkaSaslPassword != "" { + err = configMap.SetKey("sasl.username", m.KafkaSaslUsername) + if err != nil { + return nil, err + } + err = configMap.SetKey("sasl.password", m.KafkaSaslPassword) + if err != nil { + return nil, err + } + } + if m.KafkaSaslMechanism != "" { + err = configMap.SetKey("sasl.mechanism", m.KafkaSaslMechanism) + if err != nil { + return nil, err + } + } + if m.KafkaSecurityProtocol != "" { + err = configMap.SetKey("security.protocol", m.KafkaSecurityProtocol) + if err != nil { + return nil, err + } + } + if m.KafkaClientId != "" { + err = configMap.SetKey("client.id", m.KafkaClientId) + if err != nil { + return nil, err + } + } + if m.KafkaDebug != "" { + err = configMap.SetKey("debug", m.KafkaDebug) + if err != nil { + return nil, err + } + } + + return configMap, nil +} diff --git a/idk/csv/cmd.go b/idk/csv/cmd.go new file mode 100644 index 000000000..a7ae7f8fa --- /dev/null +++ b/idk/csv/cmd.go @@ -0,0 +1,138 @@ +package csv + +import ( + "encoding/csv" + "os" + "path/filepath" + "sync" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +type Main struct { + idk.Main `flag:"!embed"` + Files []string `help:"List of files, URLs, or directories to ingest."` + Header []string `help:"Optional header. If not passed, first line of each file is used."` + IgnoreHeader bool `short:"g" help:"Ignore header in file and use configured header. You *must* configure a header."` + JustDoIt bool `short:"j" help:"Any header field not in the appropriate format, just downcase, use it as the name and process the value as a String/set field"` + + files chan string + visited map[string]struct{} +} + +func NewMain() *Main { + m := &Main{ + Main: *idk.NewMain(), + files: make(chan string), + visited: make(map[string]struct{}), + } + m.Main.Namespace = "ingester_csv" + + once := &sync.Once{} + m.NewSource = func() (idk.Source, error) { + if len(m.Files) == 0 { + return nil, errors.New("must provide at least one file or directory with --files") + } + once.Do(func() { go m.streamFileNames() }) + + source := NewSource() + source.Files = m.files + source.Header = m.Header + source.Log = m.Main.Log() + source.once = &sync.Once{} + source.JustDoIt = m.JustDoIt + source.IgnoreHeader = m.IgnoreHeader + return source, nil + } + return m +} + +// ValidateHeaders is used during --dry-run to check that all headers provided at CLI or in +// CSV files can be parsed properly. +// Also returns the field structs as it would be parsed in a normal run. In the case of +// multiple CSV files, only returns the fields for the last file. +func (m *Main) ValidateHeaders() ([]idk.Field, error) { + var err error + fields := make([]idk.Field, 0) + if len(m.Header) > 0 { + fields, err = m.validateHeader(m.Header) + if err != nil { + return fields, errors.Wrap(err, "validating header") + } + } else { + for _, f := range m.Files { + f, err := openFileOrURL(f) + if err != nil { + return fields, errors.Wrapf(err, "opening file (%s)", f) + } + defer f.Close() + reader := csv.NewReader(f) + header, err := reader.Read() + if err != nil { + return fields, errors.Wrapf(err, "reading CSV file (%s)", f) + } + fields, err = m.validateHeader(header) + if err != nil { + return fields, errors.Wrap(err, "validating header") + } + } + } + return fields, nil +} + +func (m *Main) validateHeader(h []string) ([]idk.Field, error) { + fields := make([]idk.Field, 0) + for _, val := range h { + field, err := idk.HeaderToField(val, m.Log()) + if err != nil { + return fields, errors.Wrapf(err, "invalid header (%v)", val) + } + fields = append(fields, field) + } + return fields, nil +} + +func (m *Main) streamFileNames() { + defer close(m.files) + + for _, filename := range m.Files { + if err := filepath.Walk(filename, m.traverse); err != nil { + m.Log().Printf("filepath.Walk(%s) %v", filename, err) + continue + } + } +} + +func (m *Main) traverse(path string, fi os.FileInfo, err error) error { + if err != nil { + m.Log().Printf("prevent panic by handling failure accessing a path %q: %v\n", path, err) + return err + } + + switch mode := fi.Mode(); { + case mode.IsRegular(): + if _, ok := m.visited[path]; !ok { + m.visited[path] = struct{}{} + m.files <- path + } + + case mode.IsDir(): + if _, ok := m.visited[path]; !ok { + m.visited[path] = struct{}{} + } + + case mode&os.ModeSymlink != 0: + lnk, err := filepath.EvalSymlinks(path) + if err != nil { + return err + } + if _, ok := m.visited[lnk]; !ok { + if err := filepath.Walk(lnk, m.traverse); err != nil { + return err + } + } + } + + return nil +} diff --git a/idk/csv/csv_test.go b/idk/csv/csv_test.go new file mode 100644 index 000000000..e6af1c30a --- /dev/null +++ b/idk/csv/csv_test.go @@ -0,0 +1,654 @@ +package csv + +import ( + "fmt" + "io" + "io/ioutil" + "math/rand" + "os" + "path/filepath" + "reflect" + "strings" + "sync" + "testing" + "time" + + "github.com/molecula/featurebase/v3/idk/idktest" +) + +func configureTestFlags(main *Main) { + if pilosaHost, ok := os.LookupEnv("IDK_TEST_PILOSA_HOST"); ok { + main.PilosaHosts = []string{pilosaHost} + } else { + main.PilosaHosts = []string{"pilosa:10101"} + } + if grpcHost, ok := os.LookupEnv("IDK_TEST_GRPC_HOST"); ok { + main.PilosaGRPCHosts = []string{grpcHost} + } else { + main.PilosaGRPCHosts = []string{"pilosa:20101"} + } + main.Stats = "" +} + +func TestCSVCommand(t *testing.T) { + file := ` +id__ID,s__String_F_YMDH,__RecordTime_2006-01-02T15 +0,a,2019-01-09T04 +1,a,2019-01-09T05 +2,a,2019-02-09T04 +3,b,2019-01-09T04 +4,a,2018-01-09T04 +5,a,2019-01-10T04 +`[1:] + name := writeTempFile(t, file) + + m := NewMain() + m.AutoGenerate = true + configureTestFlags(m) + m.Files = []string{name} + rand.Seed(time.Now().UnixNano()) + m.Index = fmt.Sprintf("csvtest%d", rand.Intn(100000)) + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + + client := m.PilosaClient() + + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index(m.Index) + + s := index.Field("s") + + resp, err := client.Query(s.Range("a", tim(t, "2019-01-07T03"), tim(t, "2019-01-10T05"))) + if err != nil { + t.Fatalf("querying: %v", err) + } + + if !reflect.DeepEqual(resp.Results()[0].Row().Columns, []uint64{0, 1, 5}) { + t.Errorf("got/exp\n%v\n%v", resp.Results()[0].Row().Columns, []uint64{0, 1, 5}) + } +} + +func TestCSVCommandCustomHeader(t *testing.T) { + file := ` +ABCD,2019-01-02,70% +ABCD,2019-01-03,20% +ABCD,2019-01-04,30% +BEDF,2019-01-02,70% +BEDF,2019-01-05,90% +BEDF,2019-01-08,10% +BEDF,2019-01-08,20% +ABCD,2019-01-30,40% +`[1:] + name := writeTempFile(t, file) + + m := NewMain() + m.AutoGenerate = true + m.Header = []string{"asset_tag__String", "fan_time__RecordTime_2006-01-02"} + configureTestFlags(m) + m.Files = []string{name} + rand.Seed(time.Now().UnixNano()) + m.Index = fmt.Sprintf("csvtest%d", rand.Intn(100000)) + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + + client := m.PilosaClient() + + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index(m.Index) + + s := index.Field("asset_tag") + + resp, err := client.Query(s.Row("ABCD")) + if err != nil { + t.Fatalf("querying: %v", err) + } + + if !reflect.DeepEqual(resp.Results()[0].Row().Columns, []uint64{0, 1, 2, 7}) { + t.Errorf("got/exp\n%v\n%v", resp.Results()[0].Row().Columns, []uint64{0, 1, 2, 7}) + } +} + +type recordTimeTestCase struct { + name string + layout string + unit string + scale int // how many unit it takes to move an hour +} + +func TestCSVRecordTime(t *testing.T) { + testCases := []recordTimeTestCase{ + {name: "plusHours", layout: "", unit: "h", scale: 1}, + {name: "plusMinutes", layout: "", unit: "m", scale: 60}, + {name: "plusSeconds", layout: "", unit: "s", scale: 60 * 60}, + } + // We set our epoch at 4AM, 2019-01-09, because that's the epoch used in + // the previous example. + arbitraryEpoch, err := time.Parse("2006-01-02T15", "2019-01-09T04") + if err != nil { + t.Fatalf("parsing time: %v", err) + } + + for _, tc := range testCases { + lines := []string{} + layout := tc.layout + if layout == "" { + layout = time.RFC3339 + } + header := fmt.Sprintf(`id__ID,s__String_F_YMDH,__RecordTime_%s_%s_%s`, + layout, arbitraryEpoch.Format(layout), tc.unit) + lines = append(lines, header) + // We expect -1..1 to show up in our query, and -2 and +2 not to. + for i, offset := range []int{-2, -1, 0, 1, 2} { + record := fmt.Sprintf("%d,a,%d", i, offset*tc.scale) + lines = append(lines, record) + } + lines = append(lines, "") + file := strings.Join(lines, "\n") + + name := writeTempFile(t, file) + + m := NewMain() + m.AutoGenerate = true + configureTestFlags(m) + m.Files = []string{name} + rand.Seed(time.Now().UnixNano()) + m.Index = fmt.Sprintf("csvtest%d", rand.Intn(100000)) + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + + client := m.PilosaClient() + + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index(m.Index) + + s := index.Field("s") + + // We specify a range of one minute after the hour because otherwise + // we hit the end of the range and don't count the +1 case. I am + // not convinced that this is correct. + resp, err := client.Query(s.Range("a", tim(t, "2019-01-09T03"), tim(t, "2019-01-09T05").Add(1*time.Minute))) + if err != nil { + t.Fatalf("querying: %v", err) + } + + if !reflect.DeepEqual(resp.Results()[0].Row().Columns, []uint64{1, 2, 3}) { + t.Errorf("record time (%s): got/exp\n%v\n%v", tc.name, resp.Results()[0].Row().Columns, []uint64{1, 2, 3}) + } + } +} + +func tim(t *testing.T, tstr string) time.Time { + ti, err := time.Parse("2006-01-02T15", tstr) + if err != nil { + t.Fatalf("parsing time: %v", err) + } + return ti +} + +func writeTempFile(t *testing.T, data string) string { + f, err := ioutil.TempFile("", "") + if err != nil { + t.Fatalf("getting temp file: %v", err) + } + defer f.Close() + + _, err = io.WriteString(f, data) + if err != nil { + t.Fatalf("writing string: %v", err) + } + + return f.Name() +} + +func TestStreamFileNames(t *testing.T) { + tmp, err := testDirTree("d1/d2/d3/d4/d5") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmp) + + mtx := &sync.Mutex{} + visited := make(map[string]int) + + m := NewMain() + configureTestFlags(m) + // duplicate all files from the same directory + m.Files = []string{tmp, tmp, tmp, tmp, tmp, tmp} + _, err = m.NewSource() + if err != nil { + t.Fatal(err) + } + + wg := &sync.WaitGroup{} + visitor := func(files chan string) { + defer wg.Done() + + for f := range files { + // count all visited files + mtx.Lock() + visited[f]++ + mtx.Unlock() + } + } + + wg.Add(3) + go visitor(m.files) + go visitor(m.files) + go visitor(m.files) + wg.Wait() + + for p, n := range visited { + fi, err := os.Lstat(p) + if err != nil { + t.Fatal(err) + } + + if fi.Mode().IsRegular() && n != 1 { + t.Fatalf("file %s was visited %d times", p, n) + } + } +} + +func testDirTree(tree string) (string, error) { + tmp, err := ioutil.TempDir("", "") + if err != nil { + return "", err + } + + err = os.MkdirAll(filepath.Join(tmp, tree), 0755) + if err != nil { + os.RemoveAll(tmp) + return "", err + } + + return tmp, filepath.Walk(tmp, func(path string, _ os.FileInfo, _ error) error { + f, err := os.Create(filepath.Join(path, "csv")) + if err != nil { + return err + } + return f.Close() + }) +} + +// Tests various out of range values are ingested as nil when CLI flags are set to true. +func TestVariousOORValues(t *testing.T) { + file := ` +id__ID,s__String_F_YMDH,ts__Timestamp_s_2006-01-02 15:04:05.999,price__Decimal_2,age__Int_1_120 +0,a,1832-01-03 08:00:00.000,0.0,1 +1,b,1700-01-03 08:00:00.000,5.44,35 +2,b,2019-50-03 08:00:00.000,5.44,120 +3,b,2019-01-50 08:00:00.000,5.44,120 +4,b,2019-01-03 50:00:00.000,5.44,120 +5,a,2019-04-03 00:90:00.000,5.44,129 +6,a,2019-04-03 00:00:90.000,5.44,120 +5,a,2019-04-03 00:00:00.000,123.123,1 +6,a,2019-04-03 00:00:00.000,-1,1 +7,a,2019-04-03 00:00:00.000,994492233720368547758.0892233720368547758,100 +5,a,2019-04-03 00:00:00.000,2.34,121 +6,a,2019-04-03 00:00:00.000,3.44,0 +7,a,1500-04-03 00:00:00.000,994492233720368547758.0892233720368547758,2342342 +8,a,2019-04-03 00:00:00.000,3.44,100 +`[1:] + name := writeTempFile(t, file) + + checker := make(map[string]interface{}) + checker["ts"] = []interface{}{nil, nil, nil, nil, nil, nil, nil, "2019-04-03T00:00:00Z", "2019-04-03T00:00:00Z", "2019-04-03T00:00:00Z", "2019-04-03T00:00:00Z", "2019-04-03T00:00:00Z", nil, "2019-04-03T00:00:00Z"} + checker["age"] = []interface{}{1, 35, 120, 120, 120, nil, 120, 1, 1, 100, nil, nil, nil, 100} + checker["price"] = []interface{}{0.0, 5.44, 5.44, 5.44, 5.44, 5.44, 5.44, 123.12, -1.0, nil, 2.34, 3.44, nil, 3.44} + + m := NewMain() + m.AutoGenerate = true + m.BatchSize = 1 + configureTestFlags(m) + m.Files = []string{name} + rand.Seed(time.Now().UnixNano()) + m.Index = fmt.Sprintf("csvtest%d", rand.Intn(100000)) + m.AllowIntOutOfRange = true + m.AllowDecimalOutOfRange = true + m.AllowTimestampOutOfRange = true + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + + client := m.PilosaClient() + + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index(m.Index) + + resp, err := client.Query(index.Count(index.All())) + if err != nil { + t.Fatalf("querying: %v", err) + } + if cnt := resp.Result().Count(); cnt != 14 { + t.Fatalf("expected 14, got %+v", cnt) + } + + for _, field := range []string{"ts", "age", "price"} { + pql := fmt.Sprintf("Extract(All(), Rows(%s))", field) + + eResp, err := idktest.DoExtractQuery(pql, m.Index) + if err != nil { + t.Fatal("doing extract: ", err) + } + if eResp.Results[0].Columns == nil { + t.Fatal("no results: ", err) + } + + for i, item := range eResp.Results[0].Columns { + check := checker[field].([]interface{}) + + switch exp := check[i].(type) { + case nil: + if item.Rows[0] != nil { + t.Errorf("expected nil, got %+v", item.Rows[0]) + } + case string: + if item.Rows[0] != exp { + t.Errorf("expected %s, got %+v", exp, item.Rows[0]) + } + case int: + vAsInt := int(item.Rows[0].(float64)) + if vAsInt != exp { + t.Errorf("expected %d, got %+v", exp, item.Rows[0]) + } else { + expAsFloat := float64(exp) + if item.Rows[0] != expAsFloat { + t.Errorf("expected %f, got %+v", expAsFloat, item.Rows[0]) + } + } + case float64: + if item.Rows[0] != exp { + t.Errorf("expected %f, got %+v", exp, item.Rows[0]) + } + default: + t.Errorf("unknown type: %T", exp) + } + } + } + +} + +// Test that out of range int values are ingested as nil when AllowIntOutOfRange is true. +func TestIntOpts(t *testing.T) { + file := ` +id__ID,negneg__Int_-10_-5,negpos__Int_-10_10,pospos__Int_5_10,negzero__Int_-10_0,zeropos__Int_0_10,zerozero__Int_0_0 +1,-20,-20,-20,-20,-20,-20 +2,-10,-10,-10,-10,-10,-10 +3,-5,-5,-5,-5,-5,-5 +4,0,0,0,0,0,0 +5,5,5,5,5,5,5 +6,10,10,10,10,10,10 +7,20,20,20,20,20,20 +`[1:] + + checker := make(map[string]interface{}) + checker["negneg"] = []interface{}{nil, -10, -5, nil, nil, nil, nil} + checker["negzero"] = []interface{}{nil, -10, -5, 0, nil, nil, nil} + checker["negpos"] = []interface{}{nil, -10, -5, 0, 5, 10, nil} + checker["zeropos"] = []interface{}{nil, nil, nil, 0, 5, 10, nil} + checker["zerozero"] = []interface{}{nil, nil, nil, 0, nil, nil, nil} + checker["pospos"] = []interface{}{nil, nil, nil, nil, 5, 10, nil} + + batchSizes := []int{1, 3, 4, 10} + for _, bsize := range batchSizes { + t.Run(fmt.Sprintf("batchsize=%d", bsize), func(t *testing.T) { + m := newMainOORFactory(t, file, true, false, false) + m.BatchSize = bsize + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + + for _, field := range []string{"negneg", "negzero", "negpos", "zeropos", "pospos"} { + pql := fmt.Sprintf("Extract(All(), Rows(%s))", field) + + eResp, err := idktest.DoExtractQuery(pql, m.Index) + if err != nil { + t.Fatal("doing extract: ", err) + } + if eResp.Results[0].Columns == nil { + t.Fatal("no results: ", err) + } + + for i, item := range eResp.Results[0].Columns { + check := checker[field].([]interface{}) + switch exp := check[i].(type) { + case nil: + if item.Rows[0] != nil { + t.Errorf("expected nil, got %+v", item.Rows[0]) + } + case string: + if item.Rows[0] != exp { + t.Errorf("expected %s, got %+v", exp, item.Rows[0]) + } + case int: + vAsInt := int(item.Rows[0].(float64)) + if vAsInt != exp { + t.Errorf("expected %d, got %+v", exp, item.Rows[0]) + } else { + expAsFloat := float64(exp) + if item.Rows[0] != expAsFloat { + t.Errorf("expected %f, got %+v", expAsFloat, item.Rows[0]) + } + } + case float64: + if item.Rows[0] != exp { + t.Errorf("expected %f, got %+v", exp, item.Rows[0]) + } + default: + t.Errorf("unknown type: %T", exp) + } + } + } + }) + } + +} + +// Test that out of range timestamp values are ingested as nil when AllowTimestampOutOfRange is true. +func TestTimestampOOR(t *testing.T) { + file := ` +id__ID,ts1__Timestamp_s_2006-01-02 15:04:05.999,ts2__Timestamp_s_2006-01-02T15:04:05Z07:00_2261-12-31T15:04:05Z_h,ts3__Timestamp_s_2006-01-02T15:04:05Z07:00_1679-12-31T15:04:05Z_h,ts4__Timestamp_s_2006-01-02 15:04:05.999 +0,1833-01-03 08:00:00.000,2431,-19960,2009-11-24 17:31:44.000 +1,1833-11-24 17:31:44.000,2433,-19955,1800-11-24 17:31:44.000 +2,1833-11-25 17:31:44.000,9999,0,2011-11-25 17:31:44.000 +3,2106-02-06 06:28:16.000,0,-99999,2008-02-06 06:28:16.000 +4,2106-02-07 06:28:16.000,9999,-99999,1800-02-07 06:28:16.000 +5,2106-02-08 06:28:16.000,99999999999999999999999,-9999999999999999999999999,2012-02-07 06:28:16.000 +`[1:] + + checker := make(map[string]interface{}) + // should import nil if timestamp val is out of range + checker["ts1"] = []interface{}{nil, "1833-11-24T17:31:44Z", "1833-11-25T17:31:44Z", "2106-02-06T06:28:16Z", "2106-02-07T06:28:16Z", nil} + // should import nil if custom epoch + value overflows + checker["ts2"] = []interface{}{"2262-04-11T22:04:05Z", nil, nil, "2261-12-31T15:04:05Z", nil, nil} + checker["ts3"] = []interface{}{nil, "1677-09-21T04:04:05Z", "1679-12-31T15:04:05Z", nil, nil, nil} + checker["ts4"] = []interface{}{"2009-11-24T17:31:44Z", nil, "2011-11-25T17:31:44Z", "2008-02-06T06:28:16Z", nil, "2012-02-07T06:28:16Z"} + batchSizes := []int{3, 1, 4, 10} + for _, bsize := range batchSizes { + + t.Run(fmt.Sprintf("batchsize=%d", bsize), func(t *testing.T) { + m := newMainOORFactory(t, file, false, false, true) + m.BatchSize = bsize + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if err != nil { + t.Fatalf("running: %v", err) + } + for _, field := range []string{"ts1", "ts2", "ts3", "ts4"} { + pql := fmt.Sprintf("Extract(All(), Rows(%s))", field) + + eResp, err := idktest.DoExtractQuery(pql, m.Index) + if err != nil { + t.Fatal("doing extract: ", err) + } + if eResp.Results[0].Columns == nil { + t.Fatal("no results: ", err) + } + + for i, item := range eResp.Results[0].Columns { + check := checker[field].([]interface{}) + + switch exp := check[i].(type) { + case nil: + if item.Rows[0] != nil { + t.Errorf("expected nil, got %+v", item.Rows[0]) + } + case string: + if item.Rows[0] != exp { + t.Errorf("expected %s, got %+v", exp, item.Rows[0]) + } + default: + t.Errorf("unknown type: %T", exp) + } + } + } + }) + } + +} + +// Tests various conditions that should halt ingest +func TestFailureConditions(t *testing.T) { + type testCase struct { + name string + csv string + fail bool + intOutOfRange bool + decimalOutOfRange bool + timestampOutOfRange bool + } + + testCases := []testCase{ + {name: "too small", csv: `id__ID,ts1__Timestamp_s_2006-01-02T15:04:05Z07:00_1600-12-31T15:04:05Z_h +0,0 +`, fail: true, intOutOfRange: true, timestampOutOfRange: true, decimalOutOfRange: true}, + {name: "just right", csv: `id__ID,ts1__Timestamp_s_2006-01-02T15:04:05Z07:00_2200-12-31T15:04:05Z_h +0,0 +`, fail: false, intOutOfRange: true, timestampOutOfRange: true, decimalOutOfRange: true}, + {name: "too big", csv: `id__ID,ts1__Timestamp_s_2006-01-02T15:04:05Z07:00_2262-12-31T15:04:05Z_h +0,0 +`, fail: true, intOutOfRange: true, timestampOutOfRange: true, decimalOutOfRange: true}, + {name: "intOutOfRange not allowed", csv: `id__ID,pospos__Int_5_10 +0,4 +`, fail: true, intOutOfRange: false, timestampOutOfRange: true, decimalOutOfRange: true}, + {name: "intOutOfRange not allowed-2", csv: `id__ID,pospos__Int_5_10 +0,11 +`, fail: true, intOutOfRange: false, timestampOutOfRange: true, decimalOutOfRange: true}, + {name: "timestampOutOfRange not allowed", csv: `id__ID,ts1__Timestamp_s_2006-01-02 15:04:05.999 +0,1833-01-03 08:00:00.000 +`, fail: true, intOutOfRange: true, timestampOutOfRange: false, decimalOutOfRange: true}, + {name: "timestampOutOfRange not allowed-2", csv: `id__ID,ts2__Timestamp_s_2006-01-02T15:04:05Z07:00_2261-12-31T15:04:05Z_h +0,2433 +`, fail: true, intOutOfRange: true, timestampOutOfRange: false, decimalOutOfRange: true}, + {name: "decimalOutOfRange not allowed", csv: `id__ID,price__Decimal_2 +0,994492233720368547758.0892233720368547758 +`, fail: true, intOutOfRange: true, timestampOutOfRange: true, decimalOutOfRange: false}, + {name: "intOverflow", csv: `id__ID,pospos__Int +0,89273948723984729387492387492987 + `, fail: true, intOutOfRange: false, timestampOutOfRange: false, decimalOutOfRange: false}, + + {name: "int string overflow", csv: `id__ID,pospos__Int +0,"89273948723984729387492387492987" +`, fail: true, intOutOfRange: false, timestampOutOfRange: false, decimalOutOfRange: false}} + + for _, test := range testCases { + t.Run(test.name, func(t *testing.T) { + m := newMainOORFactory(t, test.csv, test.intOutOfRange, test.decimalOutOfRange, test.timestampOutOfRange) + m.BatchSize = 1 + + defer func() { + if err := m.PilosaClient().DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err := m.Run() + if test.fail { + if err == nil { + t.Fatal("expected error, got nil") + } + } else { + if err != nil { + t.Fatalf("running: %v", err) + } + } + }) + + } + +} + +func newMainOORFactory(t *testing.T, file string, allowIntOOR bool, allowDecOOR bool, allowTSOOR bool) *Main { + name := writeTempFile(t, file) + m := NewMain() + m.AutoGenerate = true + configureTestFlags(m) + m.Files = []string{name} + rand.Seed(time.Now().UnixNano()) + m.Index = fmt.Sprintf("oortest%d", rand.Intn(100000)) + m.AllowIntOutOfRange = allowIntOOR + m.AllowDecimalOutOfRange = allowDecOOR + m.AllowTimestampOutOfRange = allowTSOOR + return m +} diff --git a/idk/csv/source.go b/idk/csv/source.go new file mode 100644 index 000000000..a64cb3662 --- /dev/null +++ b/idk/csv/source.go @@ -0,0 +1,187 @@ +package csv + +import ( + "context" + "encoding/csv" + "io" + "net/http" + "os" + "reflect" + "strings" + "sync" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +type Source struct { + Files chan string + Header []string + IgnoreHeader bool + JustDoIt bool + Log logger.Logger + + schemaLock sync.Mutex + schema []idk.Field + + records chan Record + once *sync.Once + expectHeader bool +} + +func (s *Source) Record() (idk.Record, error) { + s.once.Do(func() { go s.run() }) + + rec, ok := <-s.records + if !ok { + return nil, io.EOF + } + return rec, rec.err +} + +type Record struct { + data []interface{} + err error +} + +func (r Record) Data() []interface{} { + return r.data +} +func (r Record) Commit(ctx context.Context) error { return nil } // TODO do + +func (s *Source) Schema() []idk.Field { + s.schemaLock.Lock() + defer s.schemaLock.Unlock() + return s.schema +} + +func (s *Source) run() { + defer close(s.records) + + s.expectHeader = len(s.Header) == 0 + if !s.expectHeader { + var err error + s.schemaLock.Lock() + s.schema, err = s.processHeader(s.Header) + s.schemaLock.Unlock() + if err != nil { + s.records <- Record{err: errors.Wrapf(err, "processing given header: %+v", s.Header)} + return + } + } + + for filename := range s.Files { + s.processFile(filename) + } +} + +func (s *Source) processHeader(header []string) (schema []idk.Field, err error) { + schema = make([]idk.Field, len(header)) + for i, val := range header { + schema[i], err = idk.HeaderToField(val, s.Log) + if err != nil && s.JustDoIt { + schema[i] = idk.StringField{NameVal: strings.ToLower(val)} + } else if err != nil { + return nil, err + } + } + return schema, nil +} + +func (s *Source) processFile(name string) { + s.Log.Printf("processFile: %s", name) + + f, err := openFileOrURL(name) + if err != nil { + s.records <- Record{err: errors.Wrapf(err, "opening %s", name)} + return + } + defer f.Close() + + reader := csv.NewReader(f) + reader.ReuseRecord = true + reader.FieldsPerRecord = 0 + var nextErr error + if s.expectHeader || s.IgnoreHeader { + header, err := reader.Read() + if err != nil { + s.records <- Record{err: errors.Wrapf(err, "reading header from '%s'", name)} + return + } + if s.expectHeader { + newschema, err := s.processHeader(header) + if err != nil { + s.Log.Printf("processHeader error: %v\n", err) + s.records <- Record{err: errors.Wrapf(err, "processing header from '%s': %+v", name, header)} + return + } + if !reflect.DeepEqual(newschema, s.schema) { + s.schema = newschema + nextErr = idk.ErrSchemaChange + } + } + } + // weird hack to reuse memory rather than allocating eery + // time. Would probably be better to get rid of the channel and + // just the next CSV row on demand. + recs := [2]Record{ + {data: make([]interface{}, len(s.schema)), err: nextErr}, + {data: make([]interface{}, len(s.schema))}, + } + i := -1 + extraColumnsCount := 0 + row, err := reader.Read() + for ; err == nil; row, err = reader.Read() { + i += 1 + for j, val := range row { + if len(s.schema) <= j { + if extraColumnsCount == 0 { + s.Log.Warnf("'%s': ignoring additional column(s) not included in the header specification", name) + } + extraColumnsCount++ + break + } + recs[i%2].data[j] = val + } + s.records <- recs[i%2] + recs[i%2].err = nil + } + if extraColumnsCount > 0 { + s.Log.Printf("Processing '%s': %d rows have more columns than header specification", name, extraColumnsCount) + } + if err != io.EOF { + s.Log.Printf("ERROR Processing '%s': '%v'. Skipping rest of file.", name, err) + } +} + +func NewSource() *Source { + return &Source{ + records: make(chan Record, 0), // nolint: gosimple // do not change buffer size! + } +} + +func openFileOrURL(name string) (io.ReadCloser, error) { + var content io.ReadCloser + if strings.HasPrefix(name, "http") { + resp, err := http.Get(name) + if err != nil { + return nil, errors.Wrap(err, "getting via http") + } + if resp.StatusCode > 299 { + return nil, errors.Errorf("got status %d via http.Get", resp.StatusCode) + } + content = resp.Body + } else { + f, err := os.Open(name) + if err != nil { + return nil, errors.Wrap(err, "opening file") + } + content = f + } + return content, nil +} + +func (s *Source) Close() error { + return nil +} diff --git a/idk/datagen/README.md b/idk/datagen/README.md new file mode 100644 index 000000000..f3c3cc732 --- /dev/null +++ b/idk/datagen/README.md @@ -0,0 +1,39 @@ +# Datagen Tool + +## Help Usage + +```sh +Usage of datagen: + -c, --concurrency int Number of concurrent sources and indexing routines to launch. (default 1) + --dry-run Dry run - just flag parsing. + -e, --end-at uint ID at which to stop generating records. + --kafka.batch-size int Number of records to generate before sending them to Kafka all at once. Generally, larger means better throughput and more memory usage. (default 1000) + --kafka.hosts strings Comma separated list of host:port pairs for Kafka. (default []) + --kafka.registry-url string Location of Confluent Schema Registry. Must start with 'https://' if you want to use TLS. + --kafka.subject string Kafka schema subject. + --kafka.topic string Kafka topic to post to. + --pilosa.batch-size int Number of records to read before indexing all of them at once. Generally, larger means better throughput and more memory usage. 1,048,576 might be a good number. + --pilosa.cache-length uint Number of batches of ID mappings to cache. (default 64) + --pilosa.hosts strings Comma separated list of host:port pairs for Pilosa. (default []) + --pilosa.index string Name of Pilosa index. + --seed int Seed to use for any random number generation. + -s, --source string Source generator type. Running datagen with no arguments will list the available source types. + -b, --start-from uint ID at which to start generating records. + -t, --target string Destination for the generated data: [kafka, pilosa]. (default "pilosa") + --track-progress Periodically print status updates on how many records have been sourced. +``` + +## Example Usage + +The following command will create 100 records in Pilosa index (starting at ID 0 and ending at ID 99) +in the `equipment` index using the `equipment` data generator. + +```sh +datagen --source=equipment --pilosa.index=equipment --end-at=99 +``` + +## Adding New Sources + +TODO: redo README (or delete?) + +If you're looking to add a new Source to datagen, the best thing to do is use the special "custom" datagen source (`datagen --source=custom --custom-config=somefile.yaml`) and write a `somefile.yaml` which describes the data you want to generate. An example can be found in `datagen/testdata/custom.yaml`, and there are some more in the molecula/technical-validation repo. diff --git a/idk/datagen/all-field-types.go b/idk/datagen/all-field-types.go new file mode 100644 index 000000000..2226e07ff --- /dev/null +++ b/idk/datagen/all-field-types.go @@ -0,0 +1,319 @@ +package datagen + +import ( + "io" + "sort" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" + "github.com/molecula/featurebase/v3/pql" +) + +// Ensure AllFieldTypes implements interface. +var _ Sourcer = (*AllFieldTypes)(nil) + +// AllFieldTypes implements Sourcer, and returns a data +// set containing one of every field type. +type AllFieldTypes struct{} + +// NewAllFieldTypes returns a new instance of AllFieldTypes. +func NewAllFieldTypes(cfg SourceGeneratorConfig) Sourcer { + return &AllFieldTypes{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (a *AllFieldTypes) Source(cfg SourceConfig) idk.Source { + epoch := time.Date(2010, 1, 1, 0, 0, 0, 0, time.UTC) + layout := "2006-01-02" + src := &AllFieldTypesSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + epoch: epoch, + layout: layout, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.BoolField{NameVal: "bool"}, // 1 + idk.DateIntField{ + NameVal: "dateint", + Epoch: epoch, + Unit: idk.Day, + Layout: layout, + }, // 2 + idk.DecimalField{NameVal: "decimal", Scale: 3}, // 3 + idk.IDArrayField{NameVal: "idarray"}, // 4 + idk.IDField{NameVal: "idfield"}, // 5 + //idk.IgnoreField{}, // TODO: maybe an "ignore" property instead? + idk.IntField{ + NameVal: "int", + Min: intptr(-100000), + Max: intptr(200000), + }, // 6 // TODO: foreignIndex + idk.RecordTimeField{ + NameVal: "recordtime", + Layout: layout, + }, // 7 + idk.SignedIntBoolKeyField{NameVal: "signedintboolkey"}, // 8 + idk.StringArrayField{NameVal: "stringarray"}, // 9 + idk.StringField{NameVal: "string"}, // 10 + + // Include `mutex` fields. + idk.IDField{NameVal: "idfieldmutex", Mutex: true}, // 11 + idk.StringField{NameVal: "stringmutex", Mutex: true}, // 12 + + // Include `quantum` fields. + idk.IDArrayField{NameVal: "idarrayquantum", Quantum: "YMD", TTL: "0s"}, // 13 + idk.IDField{NameVal: "idfieldquantum", Quantum: "YMD", TTL: "0s"}, // 14 + idk.StringArrayField{NameVal: "stringarrayquantum", Quantum: "YMD", TTL: "0s"}, // 15 + idk.StringField{NameVal: "stringquantum", Quantum: "YMD", TTL: "0s"}, // 16 + idk.TimestampField{NameVal: "timestamp", Unit: idk.Second}, // 17 + }, + } + + src.record = make([]interface{}, len(src.schema)) + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (a *AllFieldTypes) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (a *AllFieldTypes) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (a *AllFieldTypes) Info() string { + return "Generates data for all field types." +} + +// Ensure ExampleSource implements interface. +var _ idk.Source = (*AllFieldTypesSource)(nil) + +// AllFieldTypesSource is an instance of a source generated +// by the Sourcer implementation AllFieldTypes. +type AllFieldTypesSource struct { + g *gen.Gen + + cur uint64 + endAt uint64 + + epoch time.Time + layout string + + schema []idk.Field + record record +} + +// Record implements idk.Source. +func (a *AllFieldTypesSource) Record() (idk.Record, error) { + if a.cur >= a.endAt { + return nil, io.EOF + } + + // Increment the ID. + a.record[0] = a.cur + + // 1 - Bool + switch a.cur % 7 { + case 0: + a.record[1] = nil + case 1: + a.record[1] = true + case 2: + a.record[1] = false + case 3: + a.record[1] = "true" + case 4: + a.record[1] = "false" + case 5: + a.record[1] = 1 + case 6: + a.record[1] = 0 + } + + // 2 - DateIntField + switch a.cur % 2 { + case 0: + a.record[2] = nil + case 1: + a.record[2] = a.epoch.AddDate(0, 0, int(a.cur)).Format(a.layout) + } + + // 3 - Decimal + switch a.cur % 2 { + case 0: + a.record[3] = nil + case 1: + a.record[3] = pql.NewDecimal(int64(1003*a.cur), 2) + } + + // 4 - IDArray + switch a.cur % 8 { + case 7: + a.record[4] = nil + default: + // Generate a random set field. + set := a.g.Set(100, 1000, 10) + vals := make([]uint64, 0, len(set)) + for v := range set { + vals = append(vals, v) + } + a.record[4] = vals + } + + // 5 - ID (pilosa rowID field, not primary key) + switch a.cur % 6 { + case 5: + a.record[5] = nil + default: + a.record[5] = a.g.R.Int63n(100000) + } + + // x - IgnoreField + + // 6 - Int + switch a.cur % 9 { + case 8: + a.record[6] = nil + default: + a.record[6] = a.g.R.Int63n(300000) - 100000 + } + + // 7 - RecordTime + switch a.cur % 7 { + case 8: + a.record[7] = nil + default: + a.record[7] = a.epoch.AddDate(5, 0, int(a.cur)).Format(a.layout) + } + + // 8 - SignedIntBoolKey + switch a.cur % 10 { + case 4: + a.record[8] = nil + default: + a.record[8] = int64(2*(a.cur%2)-1) * a.g.R.Int63n(10000) + } + + // 9 - StringArray + switch a.cur % 7 { + case 5: + a.record[9] = nil + default: + // Generate a random set field. + set := a.g.Set(100, 1000, 10) + vals := make([]string, 0, len(set)) + for v := range set { + vals = append(vals, "v"+strconv.FormatUint(v, 10)) + } + sort.Strings(vals) + a.record[9] = vals + } + + // 10 - String + switch a.cur % 8 { + case 5: + a.record[10] = nil + default: + rint := a.g.R.Int63n(2000) + a.record[10] = "s" + strconv.FormatUint(uint64(rint), 10) + } + + // 11 - ID, mutex + switch a.cur % 16 { + case 6: + a.record[11] = nil + default: + a.record[11] = a.g.R.Int63n(100000) + } + + // 12 - String, mutex + switch a.cur % 17 { + case 5: + a.record[12] = nil + default: + rint := a.g.R.Int63n(2000) + a.record[12] = "sm" + strconv.FormatUint(uint64(rint), 10) + } + + // 13 - IDArray + switch a.cur % 9 { + case 2: + a.record[13] = nil + default: + // Generate a random set field. + set := a.g.Set(100, 1000, 10) + vals := make([]uint64, 0, len(set)) + for v := range set { + vals = append(vals, v) + } + a.record[13] = vals + } + + // 14 - ID, quantum + switch a.cur % 14 { + case 7: + a.record[14] = nil + default: + a.record[14] = a.g.R.Int63n(100000) + } + + // 15 - StringArray, quantum + switch a.cur % 18 { + case 7: + a.record[15] = nil + default: + // Generate a random set field. + set := a.g.Set(100, 1000, 10) + vals := make([]string, 0, len(set)) + for v := range set { + vals = append(vals, "sa"+strconv.FormatUint(v, 10)) + } + sort.Strings(vals) + a.record[15] = vals + } + + // 16 - String, quantum + switch a.cur % 17 { + case 5: + a.record[16] = nil + default: + rint := a.g.R.Int63n(2000) + a.record[16] = "sq" + strconv.FormatUint(uint64(rint), 10) + } + + // 17 - Timestamp + switch a.cur % 15 { + case 8: + a.record[17] = nil + default: + rint := a.g.R.Int63n(604800) // seconds in a week + a.record[17] = 1605041948 + rint // offset by sometime in 2021 + } + + a.cur++ + + return a.record, nil +} + +// Schema implements idk.Source. +func (a *AllFieldTypesSource) Schema() []idk.Field { + return a.schema +} + +func (a *AllFieldTypesSource) Close() error { + return nil +} diff --git a/idk/datagen/bank.go b/idk/datagen/bank.go new file mode 100644 index 000000000..984e5cd6c --- /dev/null +++ b/idk/datagen/bank.go @@ -0,0 +1,311 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + "strconv" + "strings" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +// Ensure Bank implements interface. +var _ Sourcer = (*Bank)(nil) + +// Bank implements Sourcer. +type Bank struct { + schema []idk.Field +} + +// NewBank returns a new instance of a Bank data generator. +func NewBank(cfg SourceGeneratorConfig) Sourcer { + return &Bank{ + schema: []idk.Field{ + idk.StringField{NameVal: "aba", Mutex: true}, + idk.StringField{NameVal: "db", Mutex: true}, + idk.IntField{NameVal: "user_id"}, + idk.StringField{NameVal: "custom_audiences"}, + // TODO generalize + idk.DecimalField{NameVal: floatNames[0]}, + idk.BoolField{NameVal: boolNames[0]}, + idk.BoolField{NameVal: boolNames[1]}, + idk.StringField{NameVal: stringNames[0]}, + idk.IntField{NameVal: intNames[0]}, + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (b *Bank) Source(cfg SourceConfig) idk.Source { + src := &BankSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: b.schema, + rand: rand.New(rand.NewSource(cfg.seed)), + } + + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + src.record = make([]interface{}, len(src.schema)) + // TODO alloc? + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (b *Bank) PrimaryKeyFields() []string { + return []string{"aba", "db", "user_id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (b *Bank) DefaultEndAt() uint64 { + return 20000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (b *Bank) Info() string { + return "Generates user data representative of a multi-site banking application" +} + +// Ensure BankSource implements interface. +var _ idk.Source = (*BankSource)(nil) + +// Ensure BankSource implements interface. +//var _ idk.KafkaSource = (*BankSource)(nil) // TODO + +// BankSource is a data generator which generates +// data for all Pilosa field types. +type BankSource struct { + g *gen.Gen + + cur, endAt uint64 + + schema []idk.Field + record record + + rand *rand.Rand +} + +var ( + // kafka cruft a.k.a. kruftka + floatMeta = `"type": ["null", {"type": "float", "scale": 3}], "default": null` + boolMeta = `"type": ["null", "boolean"], "default": null` + stringMeta = `"type": ["null", "string"], "default": null, "mutex": true` + intMeta = `"type": ["null", "int"], "default": null` + + floatNames = []string{ + "pfm_category_total_current_balance__personal_loan", + } + + boolNames = []string{ + "pfm_boolean__personal_loan", + "pfm_boolean__mortgage", + } + + stringNames = []string{ + "survey_5dfe1a89_29fa_4505_ac00_4cd055b758ab", + } + + intNames = []string{ + "product_recency__consumer_loan", + } + + floatNullChance = 0.1 + boolNullChance = 0.1 + stringNullChance = 0.1 + intNullChance = 0.1 + + // TODO these are effectively consts right now + floatCount = 1 + boolCount = 2 + stringCount = 1 + intCount = 1 +) + +// Record implements idk.Source. +func (b *BankSource) Record() (idk.Record, error) { + if b.cur >= b.endAt { + return nil, io.EOF + } + + // Increment the ID. + //b.record[0] = b.cur + b.cur++ + + b.record[0] = b.ABA() + b.record[1] = b.Db() + b.record[2] = b.UserID() + b.record[3] = b.CustomAudiences() + + // TODO generalize + if floatNullChance < b.rand.Float64() { + b.record[4] = b.rand.Float64() + } + // TODO: handle null chance + + if boolNullChance < b.rand.Float64() { + b.record[5] = b.rand.Intn(2) == 1 + } + // TODO: handle null chance + + if boolNullChance < b.rand.Float64() { + b.record[6] = b.rand.Intn(2) == 1 + } + // TODO: handle null chance + + if stringNullChance < b.rand.Float64() { + b.record[7] = text(b.rand, 1, 6, true, true, true, false) + } + // TODO: handle null chance + + if intNullChance < b.rand.Float64() { + b.record[8] = int64(b.rand.Intn(1000000)) + } + // TODO: handle null chance + + return b.record, nil +} + +// KafkaRecord might implement idk.KafkaSource +// TODO: going to want to generate the kafka record from the idk record +// automatic handling would be nice, but allowing per-source is probably important, +// e.g. to handle special cases for individual kafka environments +func (b *BankSource) KafkaRecord() string { + fields := []string{ + `"aba": "` + b.ABA() + `"`, + `"db": "` + b.Db() + `"`, + `"user_id": ` + strconv.FormatInt(int64(b.UserID()), 10), + `"custom_audiences": {"string": "` + b.CustomAudiences() + `"}`, + } + + for n := 0; n < floatCount; n++ { + if floatNullChance < b.rand.Float64() { + floatStr := strconv.FormatFloat(b.rand.Float64(), 'f', 3, 64) + fields = append(fields, `"float_`+floatNames[n]+`": {"float": `+floatStr+`}`) + } + } + for n := 0; n < boolCount; n++ { + if boolNullChance < b.rand.Float64() { + boolStr := strconv.FormatBool(b.rand.Intn(2) == 1) + fields = append(fields, `"bool_`+boolNames[n]+`": {"boolean": `+boolStr+`}`) + } + } + + for n := 0; n < stringCount; n++ { + if stringNullChance < b.rand.Float64() { + stringStr := text(b.rand, 1, 6, true, true, true, false) + fields = append(fields, `"string_`+stringNames[n]+`": {"string": "`+stringStr+`"}`) + } + } + + for n := 0; n < intCount; n++ { + if intNullChance < b.rand.Float64() { + intStr := strconv.FormatInt(int64(b.rand.Intn(1000000)), 10) + fields = append(fields, `"int_`+intNames[n]+`": {"int": `+intStr+`}`) + } + } + + return `{` + strings.Join(fields, ", ") + `}` +} + +// ABA returns a random 9 numeric digit string with about 27000 possible values. +func (b *BankSource) ABA() string { + num := b.rand.Intn(27000) + 22213 + num2 := num/10 - 1213 + numstr := strconv.Itoa(num) + num2str := strconv.Itoa(num2) + numstrbytes := append([]byte(numstr), num2str[3], numstr[0], numstr[1], numstr[2]) + return string(numstrbytes) +} + +// Db returns a db +func (b *BankSource) Db() string { + return text(b.rand, 1, 6, true, true, true, false) +} + +// UserID returns a user ID +func (b *BankSource) UserID() int { + return b.rand.Intn(10000000) // 10 mil +} + +// CustomAudiences returns a fake Custom Audience string +func (b *BankSource) CustomAudiences() string { + return text(b.rand, 1, 6, true, true, true, false) +} + +// TODO: move to gen.go +var lowerLetters = []rune("abcdefghijklmnopqrstuvwxyz") +var upperLetters = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ") +var numeric = []rune("0123456789") +var specialChars = []rune(`!'@#$%^&*()_+-=[]{};:",./?`) + +func text(rand *rand.Rand, atLeast, atMost int, allowLower, allowUpper, allowNumeric, allowSpecial bool) string { + allowedChars := []rune{} + if allowLower { + allowedChars = append(allowedChars, lowerLetters...) + } + if allowUpper { + allowedChars = append(allowedChars, upperLetters...) + } + if allowNumeric { + allowedChars = append(allowedChars, numeric...) + } + if allowSpecial { + allowedChars = append(allowedChars, specialChars...) + } + + result := []rune{} + nTimes := rand.Intn(atMost-atLeast+1) + atLeast + for i := 0; i < nTimes; i++ { + result = append(result, allowedChars[rand.Intn(len(allowedChars))]) + } + return string(result) +} + +// Schema implements idk.Source +func (b *BankSource) Schema() []idk.Field { + return b.schema +} + +// KafkaSchema implements idk.KafkaSource +func (b *BankSource) KafkaSchema() string { + meta := `"type": "record", + "name": "bank_user_data", + "namespace": "bank.user.data", + "doc": "Per-user bank data"` + + fields := []string{ + `{"name": "aba", "type": "string"}`, + `{"name": "db", "type": "string"}`, + `{"name": "user_id", "type": "int"}`, + `{"name": "custom_audiences", "type": ["null", "string"], "default": null}`, + } + + // TODO redmove loops if Schema() is not generalized + for n := 0; n < floatCount; n++ { + fields = append(fields, `{"name": "float_`+floatNames[n]+`", `+floatMeta+`}`) + } + for n := 0; n < boolCount; n++ { + fields = append(fields, `{"name": "bool_`+boolNames[n]+`", `+boolMeta+`}`) + } + for n := 0; n < stringCount; n++ { + fields = append(fields, `{"name": "string_`+stringNames[n]+`", `+stringMeta+`}`) + } + for n := 0; n < intCount; n++ { + fields = append(fields, `{"name": "int_`+intNames[n]+`", `+intMeta+`}`) + } + schema := fmt.Sprintf(`{%s, "fields": [%s]}`, meta, strings.Join(fields, ", ")) + + return schema +} + +func (b *BankSource) Close() error { + return nil +} diff --git a/idk/datagen/claim.go b/idk/datagen/claim.go new file mode 100644 index 000000000..4bfb0d3bf --- /dev/null +++ b/idk/datagen/claim.go @@ -0,0 +1,128 @@ +package datagen + +import ( + "io" + "math/rand" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Claim implements interface. +var _ Sourcer = (*Claim)(nil) + +// Claim implements Sourcer. +type Claim struct{} + +// NewClaim returns a new instance of Claim. +func NewClaim(cfg SourceGeneratorConfig) Sourcer { + return &Claim{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (c *Claim) Source(cfg SourceConfig) idk.Source { + min := int64(0) + src := &ClaimSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(19)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.StringField{NameVal: "service_type"}, + idk.IntField{NameVal: "date"}, + idk.IntField{NameVal: "item_id", Min: &min}, + idk.StringArrayField{NameVal: "part"}, + }, + } + src.record = make([]interface{}, len(src.schema)) + + src.partZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(parts)-1)) + + src.record[4] = make([]string, 4) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (c *Claim) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (c *Claim) DefaultEndAt() uint64 { + return 50000000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (c *Claim) Info() string { + return "TODO" +} + +// Ensure ClaimSource implements interface. +var _ idk.Source = (*ClaimSource)(nil) + +type ClaimSource struct { + Log logger.Logger + + cur, endAt uint64 + + rand *rand.Rand + partZipf *rand.Zipf + schema []idk.Field + record record +} + +var parts = []string{"cpu", "ram", "motherboard", "cooler", "case", "speaker", "microphone", "nic", "wlan", "screen", "keyboard", "disk", "ssd", "optical", "fan", "powersupp", "part0", "part1", "part2", "part3", "part4", "part5", "part6", "part7", "part8", "part9", "part10", "part11", "part12", "part13", "part14", "part15", "part16", "part17", "part18", "part19", "part20", "part21", "part22", "part23", "part24", "part25", "part26", "part27", "part28", "part29", "part30", "part31", "part32", "part33", "part34", "part35", "part36", "part37", "part38", "part39", "part40", "part41", "part42", "part43", "part44", "part45", "part46", "part47", "part48", "part49", "part50", "part51", "part52", "part53", "part54", "part55", "part56", "part57", "part58", "part59", "part60", "part61", "part62", "part63", "part64", "part65", "part66", "part67", "part68", "part69", "part70", "part71", "part72", "part73", "part74", "part75", "part76", "part77", "part78", "part79", "part80", "part81", "part82", "part83", "part84"} +var claimTypes = []string{"warranty", "damage", "spill", "intentional", "accidental", "collateral", "priority", "replacement", "reimbursement"} + +func (s *ClaimSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + s.record[1] = claimTypes[s.rand.Intn(len(claimTypes))] + s.record[2] = int64(time.Duration(s.rand.Intn(int(currentDur))) / (time.Hour * 24)) // day + s.record[3] = s.rand.Intn(1500000000) + s.record[4] = s.record[4].([]string)[:randNumParts(s.rand)] + for i := range s.record[4].([]string) { + s.record[4].([]string)[i] = parts[s.partZipf.Uint64()] + } + s.cur++ + return s.record, nil +} + +func (s *ClaimSource) Schema() []idk.Field { + return s.schema +} + +func (s *ClaimSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*ClaimSource)(nil) + +func randNumParts(r *rand.Rand) int { + n := r.Intn(100) + if n < 80 { + return 1 + } + if n < 90 { + return 2 + } + if n < 95 { + return 3 + } + return 4 +} + +func (s *ClaimSource) Close() error { + return nil +} diff --git a/idk/datagen/cmd.go b/idk/datagen/cmd.go new file mode 100644 index 000000000..da4376261 --- /dev/null +++ b/idk/datagen/cmd.go @@ -0,0 +1,607 @@ +package datagen + +import ( + "context" + "fmt" + "math" + "math/rand" + "os" + "sort" + "strconv" + "strings" + "sync" + + "github.com/glycerine/vprint" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" + + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka" +) + +const ( + TargetFeaturebase = "featurebase" + TargetKafka = "kafka" + TargetKafkaStatic = "kafkastatic" +) + +// Main is the top-level datagen struct. It represents datagen-specific +// configuration parameters, as well as sub-level parameteres specific +// to each target. +type Main struct { + idkMain *idk.Main + + KafkaPut *kafka.PutSource `flag:"-"` + + srcs []idk.Source + srcLock sync.Mutex + + cfg SourceGeneratorConfig + + Source string `short:"s" flag:"source" help:"Source generator type. Running datagen with no arguments will list the available source types."` + Target string `short:"t" flag:"target" help:"Destination for the generated data: [kafka, featurebase]."` + + Concurrency int `short:"c" flag:"concurrency" help:"Number of concurrent sources and indexing routines to launch."` + + StartFrom uint64 `short:"b" help:"ID at which to start generating records."` + EndAt uint64 `short:"e" help:"ID at which to stop generating records."` + + Seed int64 `short:"" help:"Seed to use for any random number generation."` + + TrackProgress bool `short:"" help:"Periodically print status updates on how many records have been sourced."` + UseIngestAPI bool `help:"Experimental: use new HTTP/JSON ingest API instead of low-level import API. Probably slow, does not support packed bools."` + + UseShardTransactionalEndpoint bool `flag:"use-shard-transactional-endpoint" help:"Use experimental transactional endpoint"` + + CustomConfig string `short:"" help:"File from which to pull configuration for 'custom' source."` + + // Used strictly for configuration of the targets. + Pilosa PilosaConfig + Kafka KafkaConfig + + DryRun bool `help:"Dry run - just flag parsing."` + + AuthToken string `flag:"auth-token" help:"Authentication token for FeatureBase"` + Verbose bool `flag:"verbose" help:"Enable extended logging for debug"` + Datadog bool `flag:"datadog" help:"Enable datadog profiling"` +} + +// PilosaConfig is meant to represent the scoped (pilosa.*) configuration options +// to be used when target = pilosa. These are really just a sub-set of idk.Main, +// containing only those arguments that really apply to datagen. +type PilosaConfig struct { + Hosts []string `short:"" help:"Comma separated list of host:port pairs for FeatureBase."` + Index string `short:"" help:"Name of FeatureBase index."` + BatchSize int `short:"" help:"Number of records to read before indexing all of them at once. Generally, larger means better throughput and more memory usage. 1,048,576 might be a good number."` + CacheLength uint64 `help:"Number of batches of ID mappings to cache."` +} + +// KafkaConfig is meant to represent the scoped (pilosa.*) configuration options +// to be used when target = kafka. These are really just a sub-set of kafka.PutSource, +// containing only those arguments that really apply to datagen. +type KafkaConfig struct { + idk.ConfluentCommand + Topic string `short:"" help:"Kafka topic to post to."` + Subject string `short:"" help:"Kafka schema subject."` + BatchSize int `short:"" help:"Number of records to generate before sending them to Kafka all at once. Generally, larger means better throughput and more memory usage."` + ReplicationFactor int `short:"" help:"set replication factor for kafka cluster"` + NumPartitions int `short:"" help:"set partition for kafka cluster"` +} + +// NewMain returns a new instance of Main. +func NewMain() *Main { + return &Main{ + idkMain: &idk.Main{}, + KafkaPut: &kafka.PutSource{}, + Target: TargetFeaturebase, + + Concurrency: 1, + Pilosa: PilosaConfig{ + CacheLength: 64, + }, + Kafka: KafkaConfig{ + BatchSize: 1000, + ReplicationFactor: 1, + NumPartitions: 1, + }, + } +} + +// Sourcer is an interface describing a type which can generate sources, +// which in this case are `idk.Source`. It contains a few additional +// methods which are used to configure the source. +type Sourcer interface { + Source(SourceConfig) idk.Source + PrimaryKeyFields() []string + DefaultEndAt() uint64 + Info() string +} + +// SourceConfig is the configuration required by a Sourcer when creating +// a new Source. +type SourceConfig struct { + startFrom uint64 + endAt uint64 + total uint64 + seed int64 +} + +// sourcerTypes is a map of all available custom Sourcer +// implementations. +var sourcerTypes = map[string]func(SourceGeneratorConfig) Sourcer{ + "all-field-types": NewAllFieldTypes, + "bank": NewBank, + "claim": NewClaim, + "customer_segmentation": NewPerson, + "customer_segmentation_linkedin": NewLinkedInPerson, + "customer": NewCustomer, + "custom": NewCustom, + "dell": NewDell, + "dwarranty": NewDWarranty, + "example": NewExample, + "hughes": NewHughes, + "equipment": NewEquipment, + "network_ts": NewNetwork, + "power_ts": NewTimeseries, + "site": NewSite, + "transactions_ts": NewTransaction, + "item": NewItem, + "kitchensink": NewKitchenSink, + "kitchensink_keyed": NewKitchenSinkKeyed, + "merck": NewMerck, + "paloalto": NewPaloAlto, + "power_scenario_1": NewPower1, + "power_scenario_1_2": NewPower1_2, + "sizing": NewSizing, + "stringpk": NewStringPK, + "texas_health": NewTexasHealth, + "transactions_scenario_1": NewTransaction1, + "warranty": NewWarranty, +} + +var sourcerTypeGroups = map[string][]string{ + "iot": { + "equipment", + "network_ts", + "power_ts", + "site", + "transactions_ts", + }, +} + +func (m *Main) info() string { + // Sort the sourcerTypes map by key. + keys := make([]string, 0, len(sourcerTypes)) + for k := range sourcerTypes { + keys = append(keys, k) + } + sort.Strings(keys) + + ret := "\n------------------------------------------\n" + ret += "A source must be specified with --source\n" + ret += "The following source types are supported:\n\n" + + alreadyPrinted := make(map[string]struct{}) + + for group, keys := range sourcerTypeGroups { + ret += fmt.Sprintf(" %s\n", group) + for _, k := range keys { + info, _ := typeInfo(k) + ret += fmt.Sprintf(" %-21s: %s\n", k, info) + alreadyPrinted[k] = struct{}{} + } + } + for _, k := range keys { + if _, ok := alreadyPrinted[k]; ok { + continue + } + info, _ := typeInfo(k) + ret += fmt.Sprintf(" %-25s: %s\n", k, info) + } + ret += "\n" + return ret +} + +func typeInfo(key string) (string, error) { + srcrFn, ok := sourcerTypes[key] + if !ok { + return "", errors.Errorf("invalid key: %s", key) + } + src := srcrFn(SourceGeneratorConfig{}) + return src.Info(), nil +} + +// Preload configures the Sources based on the concurrency +// and start/end range. +func (m *Main) Preload() error { + if m.Source == "" { + return errors.New(m.info()) + } + + cfg := SourceGeneratorConfig{ + StartFrom: m.StartFrom, + EndAt: m.EndAt, + Concurrency: m.Concurrency, + Seed: m.Seed, + CustomConfig: m.CustomConfig, + } + + pks, srcs, err := m.makeSources(m.Source, cfg) + if err != nil { + return errors.Wrap(err, "getting sources") + } + m.idkMain = idk.NewMain() + // TODO: this is a little hacky because of the complexity around + // PrimaryKeyFields and IDField, and the fact that those are + // currently being set before having a schema. + // See: https://github.com/molecula/featurebase/v3/idk/issues/147 + switch { + case len(pks) == 1 && pks[0] == "id": + m.idkMain.IDField = "id" + case len(pks) > 0: + m.idkMain.IDField = "" + m.idkMain.PrimaryKeyFields = pks + default: + m.idkMain.AutoGenerate = true + m.idkMain.ExternalGenerate = true + } + switch m.Target { + case TargetKafka, TargetKafkaStatic: + m.KafkaPut, _ = kafka.NewPutSource() + m.KafkaPut.Concurrency = m.Concurrency + m.KafkaPut.NewSource = m.newSource + m.KafkaPut.TrackProgress = m.TrackProgress + m.KafkaPut.BatchSize = m.Kafka.BatchSize + m.KafkaPut.ConfluentCommand = m.Kafka.ConfluentCommand + m.KafkaPut.ConfigMap, err = common.SetupConfluent(&m.Kafka.ConfluentCommand) + m.KafkaPut.Target = m.Target + if err != nil { + return errors.Wrap(err, "setup confluent") + } + if m.Kafka.Topic != "" { + m.KafkaPut.Topic = m.Kafka.Topic + } + if m.Kafka.Subject != "" { + m.KafkaPut.Subject = m.Kafka.Subject + } + if m.Verbose { + m.KafkaPut.Log = logger.NewVerboseLogger(os.Stderr) + } + m.KafkaPut.ReplicationFactor = m.Kafka.ReplicationFactor + m.KafkaPut.NumPartitions = m.Kafka.NumPartitions + m.KafkaPut.FBPrimaryKeyFields = m.idkMain.PrimaryKeyFields + m.KafkaPut.FBIDField = m.idkMain.IDField + m.KafkaPut.FBIndexName = m.Pilosa.Index + + default: + m.idkMain.Namespace = "ingester_datagen" + m.idkMain.Concurrency = m.Concurrency + m.idkMain.CacheLength = m.Pilosa.CacheLength + m.idkMain.NewSource = m.newSource + m.idkMain.TrackProgress = m.TrackProgress + m.idkMain.UseIngestAPI = m.UseIngestAPI + m.idkMain.AuthToken = m.AuthToken + m.idkMain.UseShardTransactionalEndpoint = m.UseShardTransactionalEndpoint + if len(m.Pilosa.Hosts) > 0 { + m.idkMain.PilosaHosts = m.Pilosa.Hosts + } + m.idkMain.Index = m.Pilosa.Index + if m.Pilosa.BatchSize > 0 { + m.idkMain.BatchSize = m.Pilosa.BatchSize + } + } + + m.srcs = srcs + + return nil +} + +// Sources returns the list of sources. This is typically +// called by tests, after the generator has created the sources +// during Preload(). +func (m *Main) Sources() []idk.Source { + return m.srcs +} + +// Run generates data for the specified target. +func (m *Main) Run() error { + switch m.Target { + case TargetKafka, TargetKafkaStatic: + return m.KafkaPut.Run() + default: + return m.idkMain.Run() + } +} + +func (m *Main) PrintPlan() { + cfg := m.cfg + startFrom := cfg.StartFrom + endAt := cfg.EndAt - 1 // adjust for the implementation detail `endAt++` in generator.Sources + concurrency := cfg.Concurrency + RecordCount := endAt - startFrom + + switch m.Target { + case TargetKafka: + Topic := m.Kafka.Topic + NumPartitions := m.Kafka.NumPartitions + ReplicationFactor := m.Kafka.ReplicationFactor + Subject := m.Kafka.Subject + Hosts := m.KafkaPut.KafkaBootstrapServers + RegURL := m.KafkaPut.SchemaRegistryURL + if m.Kafka.Topic == "" { + Topic = m.KafkaPut.Topic + } + if m.Kafka.Subject == "" { + Subject = m.KafkaPut.Subject + } + fmt.Printf(`Datagen config: + hosts: %s + start id: %s + end id: %s + total generated: %s + concurrency: %d + registry URL: %s + topic: %s + subject: %s + num partitions: %d + replication factor: %d +`, + strings.Join(Hosts, ", "), + AddThousandSep(startFrom), + AddThousandSep(endAt), + AddThousandSep(RecordCount), + concurrency, + RegURL, + Topic, + Subject, + NumPartitions, + ReplicationFactor, + ) + case TargetKafkaStatic: + Topic := m.Kafka.Topic + NumPartitions := m.Kafka.NumPartitions + ReplicationFactor := m.Kafka.ReplicationFactor + Subject := m.Kafka.Subject + Hosts := m.KafkaPut.KafkaBootstrapServers + if m.Kafka.Topic == "" { + Topic = m.KafkaPut.Topic + } + if m.Kafka.Subject == "" { + Subject = m.KafkaPut.Subject + } + fmt.Printf(`Datagen config: + hosts: %s + start id: %s + end id: %s + total generated: %s + concurrency: %d + topic: %s + subject: %s + num partitions: %d + replication factor: %d +`, + strings.Join(Hosts, ", "), + AddThousandSep(startFrom), + AddThousandSep(endAt), + AddThousandSep(RecordCount), + concurrency, + Topic, + Subject, + NumPartitions, + ReplicationFactor, + ) + default: + Hosts := m.Pilosa.Hosts + BatchSize := m.Pilosa.BatchSize + if len(m.Pilosa.Hosts) <= 0 { + Hosts = m.idkMain.PilosaHosts + } + if m.Pilosa.BatchSize <= 0 { + BatchSize = m.idkMain.BatchSize + } + BatchCount := uint64(math.Ceil(float64(RecordCount) / float64(BatchSize))) + + if m.Pilosa.Index == "" { + m.Pilosa.Index = "(not specified)" + } + fmt.Printf(`Datagen config: + hosts: %s + index: %s + start id: %s + end id: %s + total generated: %s + concurrency: %d + batch size: %s + total batches: %s +`, + strings.Join(Hosts, ", "), + m.Pilosa.Index, + AddThousandSep(startFrom), + AddThousandSep(endAt), + AddThousandSep(RecordCount), + concurrency, + AddThousandSep(uint64(BatchSize)), + AddThousandSep(BatchCount), + ) + + fmt.Println("Schema:") + for _, field := range m.srcs[0].Schema() { + fmt.Printf("%T %+[1]v\n", field) + } + + } +} + +func AddThousandSep(num uint64) string { + in := strconv.FormatUint(num, 10) + out := "" + for i := 1; i <= len(in); i++ { + out = string(in[len(in)-i]) + out + if i != 0 && i != len(in) && i%3 == 0 { + out = "," + out + } + } + return out +} + +// newSource pops the next idk.Source from srcs. +func (m *Main) newSource() (source idk.Source, err error) { + m.srcLock.Lock() + defer m.srcLock.Unlock() + + if len(m.srcs) < 1 { + return nil, errors.New("requested too many sources") + } + source = m.srcs[0] + m.srcs = m.srcs[1:] + return source, nil +} + +// PilosaClient is a helper for tests. The datagen command +// used to embed idk.Main, so datagen tests could call +// Main.PilosaClient(), but idk.Main is no longer +// directly embedded. +func (m *Main) PilosaClient() *pilosaclient.Client { + if m.idkMain == nil { + return nil + } + return m.idkMain.PilosaClient() +} + +// NoStats is a helper for tests. +func (m *Main) NoStats() { + if m.idkMain != nil { + m.idkMain.Stats = "" + } +} + +// Sources implements the SourceGenerator interface. +func (m *Main) makeSources(key string, cfg SourceGeneratorConfig) ([]string, []idk.Source, error) { + srcrFn, ok := sourcerTypes[key] + if !ok { + return nil, nil, errors.Errorf("invalid key: %s", key) + } + srcr := srcrFn(cfg) + + // Get the primary key fields for the source. + pks := srcr.PrimaryKeyFields() + + startFrom, endAt := cfg.StartFrom, cfg.EndAt + + if endAt == 0 { + if dflt := srcr.DefaultEndAt(); dflt > 0 { + endAt = dflt + } else { + endAt = startFrom + 99 // Default to 100 records. + } + } + if startFrom > endAt { + return nil, nil, errors.Errorf("invalid start/end: %d/%d", startFrom, endAt) + } + endAt++ // endAt is used as `a.cur >= a.endAt`, so increment it to get the expected, inclusive, behavior. + + // Calculate the concurrency, total, and start/end boundaries + // based on the configuration values. + m.cfg = SourceGeneratorConfig{ + StartFrom: startFrom, + EndAt: endAt, + Concurrency: cfg.Concurrency, + Seed: cfg.Seed, + CustomConfig: cfg.CustomConfig, + } + concurrency, startEnds, total := startEnds(m.cfg) + + seedGen := rand.New(rand.NewSource(cfg.Seed)) + + srcs := make([]idk.Source, concurrency) + + // Distribute the total range of records over a number of + // Sources equal to the concurrency. + for i := 0; i < concurrency; i++ { + srcCfg := SourceConfig{ + startFrom: startEnds[i].start, + endAt: startEnds[i].end, + total: total, + seed: cfg.Seed, + } + vprint.VV("source config for i: %d, %#v", i, srcCfg) + + src := srcr.Source(srcCfg) + + // TODO: pull seed from config? + if s, ok := src.(Seedable); ok { + s.Seed(seedGen.Int63()) + } + + srcs[i] = src + } + + return pks, srcs, nil +} + +// startEnds returns the start/end boundaries for each source +// run needed based on cfg.StartFrom, cfg.EndAt, and cfg.Concurrency. +// It also returns the calculated total, and the final concurrency +// (in case it had to be adjusted). +// returns (concurrency, startEnds, total) +func startEnds(cfg SourceGeneratorConfig) (int, []startEnd, uint64) { + var startFrom uint64 = cfg.StartFrom + var endAt uint64 = cfg.EndAt + var concurrency int = cfg.Concurrency + + if concurrency == 0 { + return 0, []startEnd{}, 0 + } + + total := endAt - startFrom + if uint64(concurrency) > total { + concurrency = int(total) + } + + var current uint64 + + interval := total / uint64(concurrency) + if startFrom > current { + current = startFrom + } + leftover := total - (interval * uint64(concurrency)) + + ses := make([]startEnd, concurrency) + + // Distribute the total range of records over a number of + // Sources equal to the concurrency. + for i := 0; i < concurrency; i++ { + var start uint64 = current + var end uint64 + current += interval + // Include one of the leftovers in each iteration until there + // are no more. + if uint64(i) < leftover { + current++ + } + // start is inclusive, end is exclusive + end = current + + ses[i] = startEnd{ + start: start, + end: end, + } + } + + return concurrency, ses, total +} + +type record []interface{} + +func (r record) Commit(ctx context.Context) error { return nil } + +func (r record) Data() []interface{} { + return r +} + +type startEnd struct { + start uint64 + end uint64 +} diff --git a/idk/datagen/common.go b/idk/datagen/common.go new file mode 100644 index 000000000..60d7fb6d2 --- /dev/null +++ b/idk/datagen/common.go @@ -0,0 +1,34 @@ +package datagen + +import ( + "github.com/molecula/featurebase/v3/idk" +) + +// SourceGenerator is an interface for anything which can generate +// data by providing one or more idk.Source. It also contains +// a method for getting information about the supported sources. +// Info() - return information about the generator along with +// a list of supported types +// Sources() - provided a string key and configuration, returns +// a list of primary key fields and a list of sources. +type SourceGenerator interface { + Info() string + Sources(string, SourceGeneratorConfig) ([]string, []idk.Source, error) + Config() SourceGeneratorConfig +} + +// SourceGeneratorConfig provides configuration values used by +// implementations of the SourceGenerator interface. +type SourceGeneratorConfig struct { + StartFrom uint64 + EndAt uint64 + Concurrency int + Seed int64 + CustomConfig string +} + +// Seedable is an interface representing anything for which +// a seed can be provided. +type Seedable interface { + Seed(int64) +} diff --git a/idk/datagen/custom.go b/idk/datagen/custom.go new file mode 100644 index 000000000..3db2943cf --- /dev/null +++ b/idk/datagen/custom.go @@ -0,0 +1,949 @@ +package datagen + +import ( + "bufio" + "encoding/csv" + "fmt" + "io" + "io/ioutil" + "log" + "math/rand" + "os" + "sort" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" + "sigs.k8s.io/yaml" +) + +// Ensure Custom implements Sourcer interface. +var _ Sourcer = (*Custom)(nil) + +// Custom implements Sourcer +type Custom struct { + err error + CustomConfig *CustomConfig + IDKAndGenFields *IDKAndGenFields +} + +// NewCustom returns a new instance of Custom. +func NewCustom(cfg SourceGeneratorConfig) Sourcer { + conf := &CustomConfig{} + if bytes, err := ioutil.ReadFile(cfg.CustomConfig); err != nil { + return &Custom{err: errors.Wrap(err, "reading custom config file")} + } else if err = yaml.Unmarshal(bytes, conf); err != nil { + return &Custom{err: errors.Wrap(err, "unmarshaling custom config file")} + } else if err := conf.PostUnmarshal(); err != nil { + return &Custom{err: errors.Wrap(err, "post unmarshal")} + } else if ig, err := conf.GetIDKFields(); err != nil { + return &Custom{err: errors.Wrap(err, "getting IDK fields from custom config file")} + } else { + return &Custom{ + CustomConfig: conf, + IDKAndGenFields: ig, + } + } + +} + +// CustomConfig represents the JSON/yaml configuration for the "custom" datagen source. +type CustomConfig struct { + // Fields describe the data to be generated. + Fields []*GenField `json:"fields"` + + // IDKParams configure how the generated data should be treated by + // the IDK (and probably ultimately ingested into FeatureBase). + IDKParams IDKParams `json:"idk_params"` +} + +// GenField describes one field of the data to be generated. Many of +// the struct fields are only used for certain values of the 'Type' +// field. See the commented custom.yaml example as a reference. +// +// GenField says nothing about what should be done with the generated +// data, or how it might map to FeatureBase fields. +// +// NOTE: If you add fields here, make sure you add them to the custom +// UnmarshalJSON method below. +type GenField struct { + Name string `json:"name"` + Type string `json:"type"` + Distribution string `json:"distribution"` + Min int64 `json:"min"` + Max int64 `json:"max"` + MinFloat float64 `json:"min_float"` + MaxFloat float64 `json:"max_float"` + Repeat bool `json:"repeat"` + Step int64 `json:"step"` + S float64 `json:"s"` + V float64 `json:"v"` + SourceFile string `json:"source_file"` + GeneratorType string `json:"generator_type"` + Cardinality uint64 `json:"cardinality"` + Charset string `json:"charset"` + MinLen uint64 `json:"min_len"` + MaxLen uint64 `json:"max_len"` + MinNum uint64 `json:"min_num"` + MaxNum uint64 `json:"max_num"` + MinStepDuration string `json:"min_step_duration"` + MaxStepDuration string `json:"max_step_duration"` + minStepDuration time.Duration + maxStepDuration time.Duration + MinDate time.Time `json:"min_date"` + MaxDate time.Time `json:"max_date"` + TimeFormat TimeFormat `json:"time_format"` + TimeUnit idk.Unit `json:"time_unit"` + NullChance float64 `json:"null_chance"` // between 0 and 1.0. Fraction of the time that we get a null value for this field +} + +// PostUnmarshal does post-processing of the CustomConfig object after +// the basic JSON/yaml unmarshal, like converting time strings to +// durations. There's probably an elegant way to do this during the +// Unmarshal, but I couldn't figure it out. +func (c *CustomConfig) PostUnmarshal() error { + for i, g := range c.Fields { + if g.MinStepDuration != "" { + dur, err := time.ParseDuration(g.MinStepDuration) + if err != nil { + return errors.Wrap(err, "parsing step_duration_min") + } + c.Fields[i].minStepDuration = dur + } + if g.MaxStepDuration != "" { + dur, err := time.ParseDuration(g.MaxStepDuration) + if err != nil { + return errors.Wrap(err, "parsing step_duration_max") + } + c.Fields[i].maxStepDuration = dur + } + } + return nil +} + +// DefaultIDKField returns default IDK configuration for a given +// GenField. This is convenient for the common case of generated data +// wanting to be ingested into FeatureBase so that the user doesn't +// have to specify explicit "idk_params" configuration for every +// field. +func (g *GenField) DefaultIDKField() (idk.Field, error) { + switch g.Type { + case "uint": + return idk.IDField{NameVal: g.Name}, nil + case "int": + var min int64 = g.Min + var max int64 = g.Max + return idk.IntField{NameVal: g.Name, Min: &min, Max: &max}, nil + case "string": + return idk.StringField{NameVal: g.Name}, nil + case "string-set": + return idk.StringArrayField{NameVal: g.Name}, nil + case "uint-set": + return idk.IDArrayField{NameVal: g.Name}, nil + case "timestamp": + return idk.TimestampField{NameVal: g.Name}, nil + case "float": + return idk.DecimalField{NameVal: g.Name, Scale: 2}, nil + default: + return nil, errors.Errorf("no default IDK field for type: '%s'", g.Type) + } +} + +// IDKParams describes how data from CustomConfig.Fields should map to IDK fields. +type IDKParams struct { + Fields map[string][]IngestField `json:"fields"` + PrimaryKeyConfig PrimaryKeyConfig `json:"primary_key_config"` +} + +// IngestField is a json/yaml configuration for an IDK Field. See the +// ToIDKField method for how this configuration maps to each possible +// IDK Field. +type IngestField struct { + Type string `json:"type"` + Name string `json:"name"` + Layout string `json:"layout"` + Epoch time.Time `json:"epoch"` + Unit string `json:"unit"` + Keyed bool `json:"keyed"` + Mutex bool `json:"mutex"` + TimeQuantum string `json:"time_quantum"` + Min *int64 `json:"min"` + Max *int64 `json:"max"` + Scale int64 `json:"scale"` + ForeignIndex string `json:"foreign_index"` + Granularity string `json:"granularity"` + TTL string `json:"ttl"` +} + +// ToIDKField converts the general IngestField to a specific IDK Field. +func (f IngestField) ToIDKField(g *GenField) (idk.Field, error) { + name := g.Name + destName := g.Name + if f.Name != "" { + destName = f.Name + } + switch f.Type { + case "ID": + return idk.IDField{NameVal: name, DestNameVal: destName, Quantum: f.TimeQuantum, Mutex: f.Mutex, TTL: f.TTL}, nil + case "IDArray": + return idk.IDArrayField{NameVal: name, DestNameVal: destName, Quantum: f.TimeQuantum, TTL: f.TTL}, nil + case "Int": + return idk.IntField{NameVal: name, DestNameVal: destName, Min: f.Min, Max: f.Max, ForeignIndex: f.ForeignIndex}, nil + case "RecordTime": + return idk.RecordTimeField{NameVal: name, DestNameVal: destName, Layout: f.Layout, Epoch: f.Epoch, Unit: idk.Unit(f.Unit)}, nil + case "String": + return idk.StringField{NameVal: name, DestNameVal: destName, Mutex: f.Mutex, Quantum: f.TimeQuantum, TTL: f.TTL}, nil + case "StringArray": + return idk.StringArrayField{NameVal: name, DestNameVal: destName, Quantum: f.TimeQuantum, TTL: f.TTL}, nil + case "Timestamp": + return idk.TimestampField{NameVal: name, DestNameVal: destName, Layout: f.Layout, Epoch: f.Epoch, Unit: idk.Unit(f.Unit), Granularity: f.Granularity}, nil + case "Decimal": + return idk.DecimalField{NameVal: name, DestNameVal: destName, Scale: f.Scale}, nil + default: + return nil, errors.Errorf("unsupported idk field type: '%s' for field named: '%s'", f.Type, f.Name) + + } +} + +// PrimaryKeyConfig specifies what should be interpreted as the record +// identifier in Featurebase. +type PrimaryKeyConfig struct { + Field string `json:"field"` +} + +// IDKAndGenFields keeps the IDK schema and generated data in +// sync. schema and genFields will always be the same length, and the +// idk.Fields in schema will always be non-nil. Items in genFields may +// be nil which indicates that the corresponding idk.Field in schema +// will use data generated by the last non-nil genField. +// e.g. +// +// schema: IDField, RecordTimeField, TimestampField +// genFields: Gen{"id"}, Gen{"timestamp"}, nil +// +// The TimestampField will get values from Gen{"timestamp"} since its +// corresponding genField is nil. +type IDKAndGenFields struct { + schema []idk.Field + genFields []*GenField +} + +// Append adds to IDKAndGenFields and ensures that schema and genFields stay in sync. +func (ig *IDKAndGenFields) Append(f idk.Field, g *GenField) { + ig.schema = append(ig.schema, f) + ig.genFields = append(ig.genFields, g) +} + +// GetIDKFields figures out what IDK Fields should be created based on +// the generated data fields and the IDK configuration parameters. If +// multiple IDK fields are generated for a single genField, the +// corresponding entries beyond the first in IDKAndGenFields.genFields +// will be nil. We'll only create one generator and use the value it +// generates for all those fields in the generated record. +func (cc *CustomConfig) GetIDKFields() (*IDKAndGenFields, error) { + ig := &IDKAndGenFields{} + for _, genField := range cc.Fields { + idkFieldConfig, ok := cc.IDKParams.Fields[genField.Name] + if !ok { + idkField, err := genField.DefaultIDKField() + if err != nil { + return ig, errors.Wrapf(err, "getting default IDK field for %+v", genField) + } + ig.Append(idkField, genField) + continue + } + for i, ingestField := range idkFieldConfig { + idkField, err := ingestField.ToIDKField(genField) + if err != nil { + return ig, errors.Wrap(err, "getting configured IDK field") + } + if i == 0 { + ig.Append(idkField, genField) + } else { + ig.Append(idkField, nil) + } + } + } + return ig, nil +} + +// Source returns a configured Custom idk.Source. It does not +// currently have explicit support for concurrency or paritioned data +// generation as some of the other datagen sources do. +func (c *Custom) Source(cfg SourceConfig) idk.Source { + if c.err != nil { + log.Fatal(c.err) // TODO add error return arg to Sourcer interface + } + + r := rand.New(rand.NewSource(cfg.seed)) + + generators := make([]FieldGenerator, len(c.IDKAndGenFields.genFields)) + for i, g := range c.IDKAndGenFields.genFields { + var err error + if g == nil { + generators[i] = nil + continue + } + generators[i], err = g.Generator(r) + log.Printf("Generator for %s, %+v\n", g.Name, generators[i]) + if err != nil { + log.Fatal(errors.Wrap(err, "getting generators")) + } + } + + log.Printf("schema: %+v", c.IDKAndGenFields.schema) + recordsToGenerate := uint64(0) + if cfg.endAt > 0 { + recordsToGenerate = cfg.endAt - cfg.startFrom + } + return &CustomSource{ + conf: c.CustomConfig, + schema: c.IDKAndGenFields.schema, + + generators: generators, + record: make([]interface{}, len(generators)), + recordsToGenerate: recordsToGenerate, + } +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (c *Custom) PrimaryKeyFields() []string { + if c.err != nil { + log.Fatal(errors.Wrap(c.err, "can't get primary key fields")) + } + return []string{c.CustomConfig.IDKParams.PrimaryKeyConfig.Field} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. Not used for Custom. +func (_ *Custom) DefaultEndAt() uint64 { + return 0 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (_ *Custom) Info() string { + return "Generates data from a yaml definition file." +} + +// Ensure CustomSource implements interface. +var _ idk.Source = (*CustomSource)(nil) + +// CustomSource is an instance of a source generated +// by the Sourcer implementation Custom. +type CustomSource struct { + conf *CustomConfig + generators []FieldGenerator + + schema []idk.Field + record record + recordsToGenerate uint64 + recordCounter uint64 +} + +// Schema returns the IDK fields which were determined from the data +// generation and ingest configuration parameters in the custom yaml +// file. +func (cs *CustomSource) Schema() []idk.Field { + return cs.schema +} + +// Record uses the configured generators to emit a custom record. If +// any of the generators are nil, it uses the value from the last +// non-nil generator. +func (cs *CustomSource) Record() (idk.Record, error) { + // track last generated value + var last interface{} + for i, gen := range cs.generators { + // this indicates that the same value is being used for multiple IDK fields. + if gen == nil { + cs.record[i] = last + continue + } + var err error + cs.record[i], err = gen.Generate(cs.record[i]) + if err == io.EOF { + return nil, nil + } + if err != nil { + return nil, errors.Wrapf(err, "generating for %+v", cs.schema[i]) + } + last = cs.record[i] + } + if cs.recordsToGenerate > 0 && cs.recordCounter >= cs.recordsToGenerate { + //break when number records produced + return nil, io.EOF + } else { + cs.recordCounter++ + } + return cs.record, nil +} + +func (c *CustomSource) Close() error { + return nil +} + +// FieldGenerator is an interface for generating values for a particular field. +type FieldGenerator interface { + // Generate produces a value. It takes in the previous value as an + // optimization—some implementations may opt to reuse a slice, for + // example. + Generate(oldval interface{}) (interface{}, error) +} + +type NullChanceGenerator struct { + R *rand.Rand + NullChance float64 + G FieldGenerator +} + +func (g *NullChanceGenerator) Generate(oldval interface{}) (interface{}, error) { + if g.R.Float64() < g.NullChance { + return nil, nil + } + return g.G.Generate(oldval) +} + +// Generator creates a data generator based on the GenField. +func (g *GenField) Generator(r *rand.Rand) (fg FieldGenerator, err error) { + if g.NullChance < 0 || g.NullChance > 1.0 { + return nil, errors.Errorf("null_chance must be in the range [0.0, 1.0], but got: %f", g.NullChance) + } + defer func() { + if err != nil { + return + } + if g.NullChance == 0.0 { + return + } + // if NullChance > 0, we'll wrap the generator we're going to return in a NullChanceGenerator + fg = &NullChanceGenerator{ + R: r, + NullChance: g.NullChance, + G: fg, + } + }() + switch g.Type { + case "uint": + if g.Distribution != "sequential" && g.Distribution != "" { + return nil, errors.Errorf("unsupported distribution %s for uint field", g.Distribution) + } + if g.Step < 1 { + return nil, errors.Errorf("step must be >=1 for uint, got: %d", g.Step) + } + return &SequentialUintFieldGenerator{ + cur: uint64(g.Min), + Min: uint64(g.Min), + Max: uint64(g.Max), + Repeat: g.Repeat, + Step: uint64(g.Step), + }, nil + case "int": + return getIntGenerator(g, r) + case "string": + return getStringGenerator(g, r) + case "string-set": + sg, err := getStringGenerator(g, r) + if err != nil { + return nil, errors.Wrap(err, "getting string generator") + } + return NewStringSetGenerator(g, r, sg) + case "uint-set": + ig, err := getIntGenerator(g, r) + if err != nil { + return nil, errors.Wrap(err, "getting int generator") + } + return &UintSetGenerator{ + G: ig, + R: r, + + MinNum: g.MinNum, + MaxNum: g.MaxNum, + }, nil + case "timestamp": + return getTimestampGenerator(g, r) + case "float": + switch g.Distribution { + case "uniform", "": + return &UniformFloatGenerator{ + R: r, + MinFloat: g.MinFloat, + MaxFloat: g.MaxFloat, + }, nil + default: + return nil, errors.Errorf("unsupported distribution: '%s'", g.Distribution) + } + default: + return nil, errors.Errorf("unsupported type '%s'", g.Type) + + } +} + +func getIntGenerator(g *GenField, r *rand.Rand) (FieldGenerator, error) { + if g.Max == 0 && g.Min == 0 { + g.Max = 1000 // default + } + if g.Max <= g.Min { + return nil, errors.Errorf("max must be > min for int field min: %d, max: %d", g.Min, g.Max) + } + switch g.Distribution { + case "uniform", "": + return &UniformIntFieldGenerator{ + R: r, + Min: g.Min, + Max: g.Max, + }, nil + case "zipfian": + z := rand.NewZipf(r, g.S, g.V, uint64(g.Max-g.Min)) + if z == nil { + return nil, errors.Errorf("err getting int zipf: s: %f, v: %f, imax: %d", g.S, g.V, uint64(g.Max-g.Min)) + } + return &ZipfianIntFieldGenerator{ + Z: z, + Min: g.Min, + }, nil + default: + return nil, errors.Errorf("unsupported distribution for int, got: %s", g.Distribution) + } +} + +func getStringGenerator(g *GenField, r *rand.Rand) (FieldGenerator, error) { + if g.SourceFile != "" { + vals, err := readLines(g.SourceFile) + if err != nil { + return nil, errors.Wrapf(err, "reading source file for field '%s'", g.Name) + } + switch g.Distribution { + case "zipfian", "": + if g.S == 0.0 && g.V == 0.0 { + g.S, g.V = 1.1, 5.1 // sane defaults + } + z := rand.NewZipf(r, g.S, g.V, uint64(len(vals)-1)) + if z == nil { + return nil, errors.Errorf("err getting string zipf: s: %f, v: %f, imax: %d", g.S, g.V, uint64(len(vals)-1)) + } + return &ZipfianStringSourceFieldGenerator{ + Source: vals, + Z: z, + }, nil + case "uniform": + return &UniformStringSourceFieldGenerator{ + Source: vals, + R: r, + }, nil + case "fixed": // use probabilities from file + vals, probs, err := readLinesWithProbabilities(g.SourceFile) + if err != nil { + return nil, errors.Wrapf(err, "reading source file for field '%s'", g.Name) + } + return NewFixedProbabilitySourceFieldGenerator(vals, probs, r) + default: + return nil, errors.Errorf("unknown distribution: '%s'", g.Distribution) + } + } else if g.GeneratorType == "random-string" { + if g.MinLen > g.MaxLen || g.MaxLen == 0 { + return nil, errors.Errorf("invalid max and min lengths: min(<=max): %d, max(>0): %d", g.MinLen, g.MaxLen) + } + return &RandomStringGenerator{ + R: r, + MinLen: g.MinLen, + MaxLen: g.MaxLen, + Charset: g.Charset, + }, nil + } else if g.Distribution == "shifting" { + return NewShiftingStringGenerator(g, r) + } + return nil, errors.Errorf("unsupported string config for field '%s'", g.Name) +} + +func getTimestampGenerator(g *GenField, r *rand.Rand) (FieldGenerator, error) { + switch g.Distribution { + case "increasing": + if g.TimeFormat == "" { + g.TimeFormat = timestampFormat + } + if !(g.TimeFormat == unixFormat || g.TimeFormat == timestampFormat) { + return nil, errors.Errorf("'%s' is not a valid output format", g.TimeFormat) + } + return &IncreasingTimestampGenerator{ + R: r, + MinDate: g.MinDate, + MaxDate: g.MaxDate, + MaxStepDuration: g.maxStepDuration, + MinStepDuration: g.minStepDuration, + Repeat: g.Repeat, + OutputFormat: g.TimeFormat, + Unit: g.TimeUnit, + }, nil + default: + return nil, errors.Errorf("unimplemented distribution: %s", g.Distribution) + } +} + +// SequentialUintFieldGenerator generates unsigned integers +// sequentially from a minimum up to a maximum with a configurable +// step. It will start from the beginning when it reaches the max if +// repeat==true. +type SequentialUintFieldGenerator struct { + cur uint64 + Min uint64 + Max uint64 + Repeat bool + Step uint64 +} + +func (g *SequentialUintFieldGenerator) Generate(_ interface{}) (interface{}, error) { + ret := g.cur + g.cur += g.Step + if g.cur > g.Max { + if g.Repeat { + g.cur = g.Min + } else { + return nil, io.EOF + } + } + return ret, nil +} + +// UniformIntFieldGenerator generates random integers between Min and Max with a uniform distribution +type UniformIntFieldGenerator struct { + R *rand.Rand + Min int64 + Max int64 +} + +func (g *UniformIntFieldGenerator) Generate(_ interface{}) (interface{}, error) { + return g.R.Int63n(g.Max+1-g.Min) + g.Min, nil +} + +type ZipfianIntFieldGenerator struct { + Z *rand.Zipf + Min int64 +} + +func (g *ZipfianIntFieldGenerator) Generate(_ interface{}) (interface{}, error) { + return int64(g.Z.Uint64()) + g.Min, nil +} + +type ZipfianStringSourceFieldGenerator struct { + Source []string + Z *rand.Zipf +} + +func (g *ZipfianStringSourceFieldGenerator) Generate(_ interface{}) (interface{}, error) { + return g.Source[g.Z.Uint64()], nil +} + +type UniformStringSourceFieldGenerator struct { + Source []string + R *rand.Rand +} + +func (g *UniformStringSourceFieldGenerator) Generate(_ interface{}) (interface{}, error) { + return g.Source[g.R.Intn(len(g.Source))], nil +} + +func readLines(filename string) ([]string, error) { + file, err := os.Open(filename) + if err != nil { + return nil, err + } + + defer file.Close() + + out := make([]string, 0) + scanner := bufio.NewScanner(file) + for scanner.Scan() { + out = append(out, scanner.Text()) + } + return out, nil +} + +func readLinesWithProbabilities(filename string) ([]string, []float64, error) { + file, err := os.Open(filename) + if err != nil { + return nil, nil, err + } + defer file.Close() + + values := make([]string, 0) + probabilities := make([]float64, 0) + r := csv.NewReader(file) + r.FieldsPerRecord = -1 + r.ReuseRecord = true + + var record []string + for record, err = r.Read(); err == nil; record, err = r.Read() { + if len(record) == 0 { + continue + } + values = append(values, record[0]) + if len(record) > 1 { + var p float64 + p, err = strconv.ParseFloat(record[1], 64) + if err != nil { + return nil, nil, errors.Wrapf(err, "could not parse '%s' as a probability", record[1]) + } + probabilities = append(probabilities, p) + } else { + probabilities = append(probabilities, -1.0) + } + } + if err == io.EOF { + err = nil + } + return values, probabilities, err +} + +type RandomStringGenerator struct { + R *rand.Rand + + MinLen uint64 + MaxLen uint64 + Charset string +} + +func (g *RandomStringGenerator) Generate(prev interface{}) (interface{}, error) { + length := g.R.Int63n(int64(g.MaxLen-g.MinLen)+1) + int64(g.MinLen) + buf, ok := prev.([]byte) + if !ok { + buf = make([]byte, g.MaxLen) + } + buf = buf[:0] + for i := int64(0); i < length; i++ { + buf = append(buf, g.Charset[g.R.Intn(len(g.Charset))]) + } + return buf, nil +} + +type StringSetGenerator struct { + G FieldGenerator // for generating individual strings + R *rand.Rand + + MinNum uint64 + MaxNum uint64 +} + +func NewStringSetGenerator(g *GenField, r *rand.Rand, fg FieldGenerator) (*StringSetGenerator, error) { + return &StringSetGenerator{ + G: fg, + R: r, + + MinNum: g.MinNum, + MaxNum: g.MaxNum, + }, nil +} + +func (g *StringSetGenerator) Generate(prev interface{}) (interface{}, error) { + sslice, ok := prev.([]string) + if !ok { + sslice = make([]string, g.MaxNum) + } + sslice = sslice[:0] + num := g.R.Int63n(int64(g.MaxNum-g.MinNum)+1) + int64(g.MinNum) + var val []byte + for i := int64(0); i < num; i++ { + vali, err := g.G.Generate(val) + if err != nil { + return nil, errors.Wrap(err, "generating string") + } + if val, ok := vali.([]byte); ok { + sslice = append(sslice, string(val)) + } else { + sslice = append(sslice, vali.(string)) + } + } + return sslice, nil +} + +type UintSetGenerator struct { + G FieldGenerator + R *rand.Rand + + MinNum uint64 + MaxNum uint64 +} + +func (g *UintSetGenerator) Generate(_ interface{}) (interface{}, error) { + num := g.R.Intn(int(g.MaxNum-g.MinNum)+1) + int(g.MinNum) + // ok, so we allocate a new slice for each record here, gross, I + // know. Problem is that IDK ultimately passes these to + // client.Batch.Add which adds the slice directly to a thing. This + // works differently for the string-set case (with []string) which + // is kind of horrible, and we should really make Batch.Add very + // clear and consistent about its semantics. TODO Right now + // though, we have this function which allocates a new slice every + // time, and the string ones above reuse the previous slice, and I + // just wanted to make sure everyone knows that that's on purpose. + uslice := make([]uint64, num) + for i := 0; i < num; i++ { + val, err := g.G.Generate(nil) + if err != nil { + return nil, errors.Wrap(err, "generating uint") + } + uslice[i] = uint64((val.(int64))) + } + return uslice, nil +} + +type IncreasingTimestampGenerator struct { + R *rand.Rand + prev time.Time + + MinDate time.Time + MaxDate time.Time + MinStepDuration time.Duration + MaxStepDuration time.Duration + Repeat bool + + OutputFormat TimeFormat // "time", "int" + Unit idk.Unit // "s", "ms", "us", "ns" +} + +type TimeFormat string + +const ( + timestampFormat = "timestamp" // time.Time + unixFormat = "unix" // unix epoch number (int64) +) + +func (g *IncreasingTimestampGenerator) Generate(_ interface{}) (interface{}, error) { + step := time.Duration(g.R.Int63n(int64(g.MaxStepDuration)-int64(g.MinStepDuration)+1)) + g.MinStepDuration + + if g.prev.IsZero() { + g.prev = g.MinDate + } + + next := g.prev.Add(step) + if next.After(g.MaxDate) { + if !g.Repeat { + return nil, io.EOF + } + next = g.MinDate.Add(step) + } + g.prev = next + var ret interface{} = next + if g.OutputFormat == unixFormat { + unitDuration, err := g.Unit.Duration() + if err != nil { + return nil, err + } + ret = next.UnixNano() / int64(unitDuration) + } + return ret, nil +} + +type UniformFloatGenerator struct { + R *rand.Rand + MinFloat float64 + MaxFloat float64 +} + +func (g *UniformFloatGenerator) Generate(_ interface{}) (interface{}, error) { + return g.R.Float64()*(g.MaxFloat-g.MinFloat) + g.MinFloat, nil +} + +type FixedProbabilitySourceFieldGenerator struct { + r *rand.Rand + source []string + probabilities []float64 +} + +func NewFixedProbabilitySourceFieldGenerator(vals []string, probs []float64, r *rand.Rand) (*FixedProbabilitySourceFieldGenerator, error) { + total := float64(0) + numUnspecified := 0 + for _, prob := range probs { + if prob < 0 { + numUnspecified++ + continue + } + total += prob + } + if total > 1.0 { + return nil, errors.Errorf("sum of all probabilities is greater than 1: %f", total) + } + unspecProb := 0.0 + if numUnspecified > 0 { + unspecProb = (1.0 - total) / float64(numUnspecified) + } + total = float64(0) + for i, prob := range probs { + if prob < 0 { + probs[i] = unspecProb + } + total += prob + probs[i] = total + } + return &FixedProbabilitySourceFieldGenerator{ + r: r, + source: vals, + probabilities: probs, + }, nil +} + +func (g *FixedProbabilitySourceFieldGenerator) Generate(_ interface{}) (interface{}, error) { + val := g.r.Float64() + idx := sort.SearchFloat64s(g.probabilities, val) + if idx == len(g.probabilities) { + return nil, nil + } + return g.source[idx], nil +} + +type ShiftingStringGenerator struct { + shiftAmnt uint64 + z *rand.Zipf + i uint64 + step uint64 + baseLen uint64 + lenVariance uint64 +} + +func (g *ShiftingStringGenerator) Generate(_ interface{}) (interface{}, error) { + num := g.z.Uint64() + g.shiftAmnt + g.i++ + if g.i%g.step == 0 { + g.shiftAmnt++ + } + length := g.baseLen + num%(g.lenVariance+1) + return numToString(num, length), nil +} + +func numToString(num uint64, length uint64) string { + return fmt.Sprintf("%0*X", length, num) +} + +func NewShiftingStringGenerator(g *GenField, r *rand.Rand) (*ShiftingStringGenerator, error) { + if g.MinLen+g.MaxLen != 0 { + if g.MinLen == 0 { + g.MinLen = g.MaxLen + } else if g.MaxLen == 0 { + g.MaxLen = g.MinLen + } + } + if g.MaxLen < g.MinLen { + return nil, errors.Errorf("max_len(%d) must be greater than or equal to min_len(%d)", g.MaxLen, g.MinLen) + } + if g.Step < 0 { + return nil, errors.Errorf("'step' for shifting must be positive, but got: %d", g.Step) + } + if g.Step == 0 { + g.Step = 1 // default to 1 if no step is passed + } + if g.S == 0 { + g.S = 1.01 + } + if g.V == 0 { + g.V = 200 + } + z := rand.NewZipf(r, g.S, g.V, g.Cardinality-1) + return &ShiftingStringGenerator{ + z: z, + step: uint64(g.Step), + baseLen: g.MinLen, + lenVariance: g.MaxLen - g.MinLen, + }, nil +} diff --git a/idk/datagen/custom_test.go b/idk/datagen/custom_test.go new file mode 100644 index 000000000..6370a3f17 --- /dev/null +++ b/idk/datagen/custom_test.go @@ -0,0 +1,309 @@ +package datagen + +import ( + "io/ioutil" + "math/rand" + "os" + "strings" + "testing" + "time" + + "github.com/molecula/featurebase/v3/idk" +) + +func TestGetIDKFields(t *testing.T) { + cc := &CustomConfig{ + Fields: []*GenField{ + { + Name: "a", + Type: "uint", + }, + { + Name: "b", + Type: "int", + }, + }, + IDKParams: IDKParams{ + Fields: map[string][]IngestField{ + "a": { + { + Type: "ID", + Name: "a", + }, + { + Type: "Int", + Name: "a2", + }, + { + Type: "ID", + Name: "ID_ttl", + TimeQuantum: "YMD", + TTL: "101s", + }, + { + Type: "IDArray", + Name: "IDArray_ttl", + TimeQuantum: "YMD", + TTL: "102s", + }, + { + Type: "String", + Name: "String_ttl", + TimeQuantum: "YMD", + TTL: "103s", + }, + { + Type: "StringArray", + Name: "StringArray_ttl", + TimeQuantum: "YMD", + TTL: "104s", + }, + }, + }, + }, + } + min := int64(0) + max := int64(0) + exp := &IDKAndGenFields{ + schema: []idk.Field{ + idk.IDField{ + NameVal: "a", + DestNameVal: "a", + }, + idk.IntField{ + NameVal: "a", + DestNameVal: "a2", + }, + idk.IDField{ + NameVal: "a", + DestNameVal: "ID_ttl", + Quantum: "YMD", + TTL: "101s", + }, + idk.IDArrayField{ + NameVal: "a", + DestNameVal: "IDArray_ttl", + Quantum: "YMD", + TTL: "102s", + }, + idk.StringField{ + NameVal: "a", + DestNameVal: "String_ttl", + Quantum: "YMD", + TTL: "103s", + }, + idk.StringArrayField{ + NameVal: "a", + DestNameVal: "StringArray_ttl", + Quantum: "YMD", + TTL: "104s", + }, + idk.IntField{ + NameVal: "b", + DestNameVal: "", // no dest because we take the default path + Min: &min, + Max: &max, + }, + }, + genFields: []*GenField{ + { + Name: "a", + Type: "uint", + }, + nil, + nil, + nil, + nil, + nil, + { + Name: "b", + Type: "int", + }, + }, + } + + igs, err := cc.GetIDKFields() + if err != nil { + t.Fatalf("getting IDK fields: %v", err) + } + + if len(igs.schema) != len(exp.schema) || + len(igs.genFields) != len(exp.genFields) || + len(igs.schema) != len(igs.genFields) { + t.Fatalf("mismatched lengths: %+v", igs) + } + for i := 0; i < len(igs.schema); i++ { + gotSchema, expSchema := igs.schema[i], exp.schema[i] + gotGenField, expGenField := igs.genFields[i], exp.genFields[i] + if !idk.FieldsEqual(gotSchema, expSchema) { + t.Fatalf("mismatched schemas at %d: got:\n%+v\nexp:\n%+v", i, gotSchema, expSchema) + } + if gotGenField == nil && expGenField == nil { + // great + } else if *gotGenField != *expGenField { + t.Fatalf("mismatched genFields at %d: got:\n%+v\nexp:\n%+v", i, gotGenField, expGenField) + } + } + +} + +func TestNewCustomUnmarshalling(t *testing.T) { + tmp, err := ioutil.TempFile("", "") + if err != nil { + t.Fatalf("creating temp file: %v", err) + } + defer os.Remove(tmp.Name()) + _, err = tmp.WriteString(` +fields: + - name: "myfield" + type: "timestamp" + min_step_duration: "1s" + min_date: 2013-10-16T22:34:43Z + time_format: "unix" + time_unit: "ms" +`) + if err != nil { + t.Fatalf("writing: %v", err) + } + cc := NewCustom(SourceGeneratorConfig{CustomConfig: tmp.Name()}).(*Custom) + if cc.err != nil { + t.Fatalf("creating Custom: %v", cc.err) + } + if cc.CustomConfig.Fields[0].minStepDuration != time.Second { + t.Fatalf("wrong duration: %+v", cc.CustomConfig.Fields[0]) + } + if cc.CustomConfig.Fields[0].MinDate.Hour() != 22 { + t.Fatalf("wrong time: %s", cc.CustomConfig.Fields[0].MinDate) + } + if cc.CustomConfig.Fields[0].TimeUnit != idk.Millisecond { + t.Fatalf("wrong time unit: %s", cc.CustomConfig.Fields[0].TimeUnit) + } + if cc.CustomConfig.Fields[0].TimeFormat != unixFormat { + t.Fatalf("wrong time format: %s", cc.CustomConfig.Fields[0].TimeFormat) + } + +} + +func TestIncreasingTimestampGenerator(t *testing.T) { + cases := []struct { + name string + unit idk.Unit + min int64 + max int64 + }{ + { + name: "millis", + unit: idk.Millisecond, + max: 1136073600000 + 2001, + min: 1136073600000, + }, + { + name: "days", + unit: idk.Day, + max: 13149, + min: 13149, + }, + } + + for _, testcase := range cases { + t.Run(testcase.name, func(t *testing.T) { + genField := &GenField{ + Type: "timestamp", + minStepDuration: time.Second, + maxStepDuration: time.Second * 2, + TimeFormat: unixFormat, + TimeUnit: testcase.unit, + Distribution: "increasing", + MinDate: time.Date(2006, time.January, 1, 0, 0, 0, 0, time.UTC), + MaxDate: time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC), + } + + r := rand.New(rand.NewSource(3)) + gen, err := genField.Generator(r) + if err != nil { + t.Fatalf("making generator: %v", err) + } + + rec, err := gen.Generate(nil) + if err != nil { + t.Fatalf("generating: %v", err) + } + if recInt, ok := rec.(int64); !ok { + t.Fatalf("expected int64, but got %v of %[1]T", recInt) + } else if recInt < testcase.min || recInt > testcase.max { + t.Fatalf("unexpected value for time: %v", recInt) + } + + }) + } +} + +func TestShiftingStringGenerator(t *testing.T) { + // max < min + if ssg, err := NewShiftingStringGenerator(&GenField{MinLen: 10, MaxLen: 9}, nil); err == nil { + t.Fatalf("expected error, but got %+v", ssg) + } else if !strings.Contains(err.Error(), "must be greater than or equal to") { + t.Fatalf("unexpected error: %v", err) + } + + // neg step + if ssg, err := NewShiftingStringGenerator(&GenField{Step: -1}, nil); err == nil { + t.Fatalf("expected error, but got %+v", ssg) + } else if !strings.Contains(err.Error(), "'step' for shifting must be positive") { + t.Fatalf("unexpected error: %v", err) + } + + // min zero but max not + if ssg, err := NewShiftingStringGenerator(&GenField{MaxLen: 7, Step: 2}, rand.New(rand.NewSource(1))); err != nil { + t.Fatalf("unexpected error %v", err) + } else if ssg.lenVariance != 0 { + t.Fatalf("expected zero variance, but got: %+v", ssg) + } + + // max zero but min not + if ssg, err := NewShiftingStringGenerator(&GenField{MinLen: 7}, rand.New(rand.NewSource(1))); err != nil { + t.Fatalf("unexpected error %v", err) + } else if ssg.lenVariance != 0 { + t.Fatalf("expected zero variance, but got: %+v", ssg) + } else if ssg.step != 1 { + t.Fatalf("expected step 0 but got: %+v", ssg) + } + + ssg, err := NewShiftingStringGenerator(&GenField{MinLen: 5, MaxLen: 10, Cardinality: 4, Step: 20}, rand.New(rand.NewSource(1))) + if err != nil { + t.Fatalf("unexpected error: %+v", err) + } + + vals := make([]string, 0, 40) + valMap := make(map[string]struct{}) + for i := 0; i < 20; i++ { + val, err := ssg.Generate(nil) + if err != nil { + t.Fatalf("unexpected generation err: %v", err) + } + valStr := val.(string) + vals = append(vals, valStr) + valMap[valStr] = struct{}{} + if len(valStr) < 5 || len(valStr) > 10 { + t.Fatalf("got unexpected length val at position: %d, %v", i, vals) + } + } + if len(valMap) != 4 { + t.Fatalf("unexpected cardinality: %v", valMap) + } + for i := 20; i < 40; i++ { + val, err := ssg.Generate(nil) + if err != nil { + t.Fatalf("unexpected generation err: %v", err) + } + valStr := val.(string) + vals = append(vals, valStr) + delete(valMap, valStr) + if len(valStr) < 5 || len(valStr) > 10 { + t.Fatalf("got unexpected length val at position: %d, %v", i, vals) + } + } + if len(valMap) != 1 { + t.Fatalf("should have a single value from the first 20 that isn't generated in second 20, but have valMap:\n%v\nvals:\n%v", valMap, vals) + } +} diff --git a/idk/datagen/customer.go b/idk/datagen/customer.go new file mode 100644 index 000000000..569e0fb84 --- /dev/null +++ b/idk/datagen/customer.go @@ -0,0 +1,106 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Customer implements interface. +var _ Sourcer = (*Customer)(nil) + +// Customer implements Sourcer. +type Customer struct{} + +// NewCustomer returns a new instance of Customer. +func NewCustomer(cfg SourceGeneratorConfig) Sourcer { + return &Customer{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (c *Customer) Source(cfg SourceConfig) idk.Source { + src := &CustomerSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(22)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.StringField{NameVal: "region"}, + idk.IntField{NameVal: "size"}, + idk.IDField{NameVal: "sales_channel"}, + }, + } + src.record = make([]interface{}, len(src.schema)) + + src.regionZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(regions))-1) + + src.record[0] = cfg.startFrom + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (c *Customer) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (c *Customer) DefaultEndAt() uint64 { + return 100 // TODO: what should this be? +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (c *Customer) Info() string { + return "TODO" +} + +// Ensure CustomerSource implements interface. +var _ idk.Source = (*CustomerSource)(nil) + +type CustomerSource struct { + Log logger.Logger + + cur, endAt uint64 + + rand *rand.Rand + regionZipf *rand.Zipf + schema []idk.Field + record record +} + +var regions = []string{"US", "Canada", "Central America", "South America", "Western Europe", "Eastern Europe", "Africa", "China", "Japan", "Russia", "Middle East", "Pacific Islands", "Antarctica"} + +func (s *CustomerSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + s.record[1] = regions[s.regionZipf.Uint64()] + s.record[2] = s.rand.Intn(24990) + 10 + s.record[3] = uint64(s.rand.Intn(500)) + s.cur++ + return s.record, nil +} + +func (s *CustomerSource) Schema() []idk.Field { + return s.schema +} + +func (s *CustomerSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*CustomerSource)(nil) + +func (s *CustomerSource) Close() error { + return nil +} diff --git a/idk/datagen/customer_segmentation.go b/idk/datagen/customer_segmentation.go new file mode 100644 index 000000000..446da930f --- /dev/null +++ b/idk/datagen/customer_segmentation.go @@ -0,0 +1,603 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + "sort" + "strings" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +/* +go run cmd/datagen/main.go \ + --source=customer_segmentation --pilosa.index=customer_segmentation \ + --start-from=1 --end-at=100 --pilosa.batch-size=100 + +go run cmd/datagen/main.go \ + --source=example --pilosa.index=example \ + --start-from=1 --end-at=100 --pilosa.batch-size=100 +*/ + +// Ensure Person implements interface. +var _ Sourcer = (*Person)(nil) + +// Person implements Sourcer, +type Person struct{} + +// NewPerson returns a new instance of Person. +func NewPerson(cfg SourceGeneratorConfig) Sourcer { + return &Person{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (p *Person) Source(cfg SourceConfig) idk.Source { + g := gen.New(gen.OptGenSeed(cfg.seed)) + src := &PersonSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "sex"}, // 1 + idk.IntField{NameVal: "age"}, // 2 + idk.StringField{NameVal: "race"}, // 3 + idk.BoolField{NameVal: "hispanic"}, // 4 + idk.StringField{NameVal: "political_party_affiliation"}, // 5 + idk.StringArrayField{NameVal: "education"}, // 6 + idk.IntField{NameVal: "income"}, // 7 + idk.IDField{NameVal: "general_election_voting_frequency"}, // 8 + idk.IDField{NameVal: "primary_election_voting_frequency"}, // 9 + idk.StringArrayField{NameVal: "hobbies"}, // 10 + }, + g: g, + generatePerson: getGenRandPerson(g.R), + hobbyStash: []string{}, + } + + src.record = make([]interface{}, len(src.schema)) + src.record[0] = uint64(0) + src.record[1] = make([]byte, 12) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Person) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Person) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (p *Person) Info() string { + return "Generates data for customer segmentation." +} + +// Ensure PersonSource implements interface. +var _ idk.Source = (*PersonSource)(nil) + +// PersonSource is an instance of a source generated +// by the Sourcer implementation Person. +type PersonSource struct { + cur uint64 + endAt uint64 + + schema []idk.Field + record record + + g *gen.Gen + generatePerson func() *person + hobbyStash []string +} + +// Record implements idk.Source. +func (ps *PersonSource) Record() (idk.Record, error) { + if ps.cur >= ps.endAt { + return nil, io.EOF + } + + p := ps.generatePerson() + ps.setRandomHobbies() + + // Populate fields + ps.record[0] = ps.cur + ps.record[1] = p.sex + ps.record[2] = p.age + ps.record[3] = p.race + ps.record[4] = p.hispanic + ps.record[5] = p.politicalPartyAffiliation + ps.record[6] = educationLevelToStringArr(p.education) + ps.record[7] = p.income + ps.record[8] = p.generalElectionVotingFrequency + ps.record[9] = p.primaryElectionVotingFrequency + ps.record[10] = ps.hobbyStash + + // Increment the ID. + ps.cur++ + + return ps.record, nil +} + +func (ps *PersonSource) setRandomHobbies() { + ps.hobbyStash = ps.g.StringSliceFromListWeighted(ps.hobbyStash, hobbies, 2, 5) +} + +// Schema implements idk.Source. +func (ps *PersonSource) Schema() []idk.Field { + return ps.schema +} + +// ---------------------------------------------------- +// THIS IS WHERE THE MAGIC HAPPENS +// ---------------------------------------------------- + +type randValue struct { + value interface{} + probability float64 // probability of being picked, all in set should add to 1.0 + count int // number of times val has been picked so far +} + +type randVarPickerFn func() interface{} +type getStatsFn func() string + +func getRandVarPicker(rng *rand.Rand, vals []randValue) (randVarPickerFn, getStatsFn) { + + cumulativeSums := make([]float64, len(vals)) + currSum := float64(0) + for i, v := range vals { + currSum += v.probability + cumulativeSums[i] = currSum + } + + // call stats at any time to get, well, stats + stats := func() string { + // make copy to avoid modifying original + valsCopy := make([]randValue, len(vals)) + copy(valsCopy, vals) + // sort counts + sort.Slice(valsCopy, func(i, j int) bool { + return valsCopy[i].count > valsCopy[j].count + }) + // get total gen so far + total := 0 + for _, v := range valsCopy { + total += v.count + } + // gen str summary + var sb strings.Builder + for _, v := range valsCopy { + percentage := (float64(v.count) / float64(total)) * 100 + s := fmt.Sprintf("%v (%d/%d) %0.2f%%\n", v.value, v.count, total, percentage) + sb.WriteString(s) + } + return sb.String() + } + + picker := func() interface{} { + rv := rng.Float64() + i := sort.SearchFloat64s(cumulativeSums, rv) + // note that if the probabilities do not add up to 1.0 + // i will == len(cumulativeSums), hence out of bounds error + // however, floating points are tricky and require special care + // so I will assume that the probabilities provided were meant to + // add closely up to 1.0 (eg it ended up being 0.999900) + // and if the rv generated is for example 0.9999000011, the last + // value of the slice will be picked instead. In future, there + // should be an assertion on the vals slice probabilities to ensure + // they add up to 1 +/- some epsilon value. + if i == len(vals) { + i = len(vals) - 1 + } + vals[i].count++ + return vals[i].value + } + + return picker, stats +} + +type numericRange struct { + min int // inclusive + max int // inclusive +} + +type raceEthnicity struct { + race string + isHispanic bool +} + +type educationLevel struct { + hasCompletedHighSchool bool + hasAttendedSomeCollege bool + hasCompletedBachelors bool + hasCompletedGraduate bool +} + +var cG []string = []string{"High school diploma or GED", "Some college", "Bachelor's degree", "Doctorate and/or Professional degree"} +var cB []string = []string{"High school diploma or GED", "Some college", "Bachelor's degree"} +var cASG []string = []string{"High school diploma or GED", "Some college"} +var cHS []string = []string{"High school diploma or GED"} + +func educationLevelToStringArr(e educationLevel) []string { + if e.hasCompletedGraduate { + return cG + } + if e.hasCompletedBachelors { + return cB + } + if e.hasAttendedSomeCollege { + return cASG + } + if e.hasCompletedHighSchool { + return cHS + } + return nil +} + +func pickRandNumFromRange(rng *rand.Rand, nr numericRange) int { + upperBoundExclusive := int32((nr.max - nr.min) + 1) + rv := int(rng.Int31n(upperBoundExclusive)) // [0, upperBoundExclusive) + return rv + nr.min +} + +type person struct { + sex string + age int + race string + hispanic bool + politicalPartyAffiliation string + education educationLevel + income int + generalElectionVotingFrequency int + primaryElectionVotingFrequency int +} + +func getGenRandPerson(rng *rand.Rand) func() *person { + + pickSex, _ := getRandVarPicker(rng, []randValue{ + { + value: "Male", + probability: 0.475, + }, + { + value: "Female", + probability: 0.475, + }, + { + value: "Unspecified", + probability: 0.05, + }, + }) + + pickAge, _ := getRandVarPicker(rng, []randValue{ + { + value: numericRange{ + min: 0, + max: 14, + }, + probability: 0.1873, + }, + { + value: numericRange{ + min: 15, + max: 24, + }, + probability: 0.1327, + }, { + value: numericRange{ + min: 25, + max: 54, + }, + probability: 0.3945, + }, + { + value: numericRange{ + min: 55, + max: 64, + }, + probability: 0.1291, + }, + { + value: numericRange{ + min: 65, + max: 100, + }, + probability: 0.1563, + }, + }) + + // 75.72% (53.89% Non-Hispanic) White + // 16.06% (14.77% Non-Hispanic) African American + // 7.09% Asian / Pacific Islander + // 1.13% Native American / Alaskan Native + pickRaceAndEthnicity, _ := getRandVarPicker(rng, []randValue{ + { + value: raceEthnicity{ + race: "White", + isHispanic: false, + }, + probability: 0.5389, + }, + { + value: raceEthnicity{ + race: "White", + isHispanic: true, + }, + probability: 0.2183, + }, + { + value: raceEthnicity{ + race: "African American", + isHispanic: false, + }, + probability: 0.1477, + }, + { + value: raceEthnicity{ + race: "African American", + isHispanic: true, + }, + probability: 0.0129, + }, + { + value: raceEthnicity{ + race: "Asian / Pacific Islander", + isHispanic: false, + }, + probability: 0.0709, + }, + { + value: raceEthnicity{ + race: "Native American / Alaskan Native", + isHispanic: false, + }, + probability: 0.0113, + }, + }) + + // Democrat 27% + // Republican 20% + // Independent 19% + // Democrat & Independent 6% + // Republican & Independent 5% + // Democrat & Republican 4% + // Democrat & Republican & Independent 1% + // None Reported/ Declined to reply 18% + pickPoliticalPartyAffiliation, _ := getRandVarPicker(rng, []randValue{ + { + value: "Democrat", + probability: 0.27, + }, + { + value: "Republican", + probability: 0.20, + }, + { + value: "Independent", + probability: 0.19, + }, + { + value: "Democrat and Independent", + probability: 0.06, + }, + { + value: "Republican and Independent", + probability: 0.05, + }, + { + value: "Democrat and Republican", + probability: 0.04, + }, + { + value: "Democrat and Republican and Independent", + probability: 0.01, + }, + { + value: "", + probability: 0.18, + }, + }) + + // 89.80% High school diploma or GED + // 61.28% Some college + // 34.98% Bachelor's degree + // 13.04% Master's and/or doctorate and/or professional degree + + // Percentages are additive, meaning that 89.80% High School/GED + // includes everyone with that education level or higher. + + // Let + // H = HighSchool + // SC = SomeCollege + // B = Bachelor's + // G = Graduate/Professional + + // P(H) = 0.8980 + // P(H & SC) = 0.6128 + // P(H & SC & B) = 0.3498 + // P(H & SC & B & G) = 0.1304 + + // P(SC | H) = P(H & SC) / P(H) = 0.6824 + // P(B | H & SC) = P(H & SC & B) / P(H & SC) = 0.5708 + // P(G | H & SC & B) = P(H & SC & B & G) / P(SC & B & G) = 0.3728 + pickEducationLevel := func(rng *rand.Rand) educationLevel { + var ed educationLevel + if rng.Float64() > 0.8980 { + return ed + } + ed.hasCompletedHighSchool = true + if rng.Float64() > 0.6824 { + return ed + } + ed.hasAttendedSomeCollege = true + if rng.Float64() > 0.5708 { + return ed + } + ed.hasCompletedBachelors = true + if rng.Float64() > 0.3728 { + return ed + } + ed.hasCompletedGraduate = true + return ed + } + + // 9.1% $0-$15000 + // 8% $15000-$24999 + // 8.3% $25000-$34999 + // 11.7% $35000-$49999 + // 16.5% $50000-$74999 + // 12.3% 75000-99999 + // 15.5% 100000-149999 + // 8.3% 150000-199999 + // 10.3% $200000+ + pickIncome, _ := getRandVarPicker(rng, []randValue{ + { + value: numericRange{ + min: 0, + max: 15000, + }, + probability: 0.091, + }, + { + value: numericRange{ + min: 15000, + max: 24999, + }, + probability: 0.08, + }, { + value: numericRange{ + min: 25000, + max: 34999, + }, + probability: 0.083, + }, + { + value: numericRange{ + min: 35000, + max: 49999, + }, + probability: 0.117, + }, + { + value: numericRange{ + min: 50000, + max: 74999, + }, + probability: 0.165, + }, + { + value: numericRange{ + min: 75000, + max: 99999, + }, + probability: 0.123, + }, + { + value: numericRange{ + min: 100000, + max: 149999, + }, + probability: 0.155, + }, + { + value: numericRange{ + min: 150000, + max: 199999, + }, + probability: 0.083, + }, + { + value: numericRange{ + min: 200000, + max: 500000, + }, + probability: 0.103, + }, + }) + + // 0 -> 21% + // 1 -> 17% + // 2 -> 17% + // 3 -> 15% + // 4 -> 38% + pickGeneralElectionVotingFrequency, _ := getRandVarPicker(rng, []randValue{ + { + value: 0, + probability: 0.21, + }, + { + value: 1, + probability: 0.17, + }, + { + value: 2, + probability: 0.17, + }, + { + value: 3, + probability: 0.15, + }, + { + value: 4, + probability: 0.38, + }, + }) + + // 0 -> 51% + // 1 -> 19% + // 2 -> 11% + // 3 -> 7% + // 4 -> 11% + pickPrimaryElectionVotingFrequency, _ := getRandVarPicker(rng, []randValue{ + { + value: 0, + probability: 0.51, + }, + { + value: 1, + probability: 0.19, + }, + { + value: 2, + probability: 0.11, + }, + { + value: 3, + probability: 0.07, + }, + { + value: 4, + probability: 0.11, + }, + }) + + return func() *person { + p := &person{} + p.sex = pickSex().(string) + p.age = pickRandNumFromRange(rng, pickAge().(numericRange)) + raceAndEthnicity := pickRaceAndEthnicity().(raceEthnicity) + p.race = raceAndEthnicity.race + p.hispanic = raceAndEthnicity.isHispanic + p.politicalPartyAffiliation = pickPoliticalPartyAffiliation().(string) + p.education = pickEducationLevel(rng) + p.income = pickRandNumFromRange(rng, pickIncome().(numericRange)) + p.generalElectionVotingFrequency = pickGeneralElectionVotingFrequency().(int) + p.primaryElectionVotingFrequency = pickPrimaryElectionVotingFrequency().(int) + return p + } +} + +func (ps *PersonSource) Close() error { + return nil +} diff --git a/idk/datagen/customer_segmentation_add_linkedin.go b/idk/datagen/customer_segmentation_add_linkedin.go new file mode 100644 index 000000000..c6e85f979 --- /dev/null +++ b/idk/datagen/customer_segmentation_add_linkedin.go @@ -0,0 +1,95 @@ +package datagen + +import ( + "io" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +var _ Sourcer = (*LinkedInPerson)(nil) + +type LinkedInPerson struct{} + +func NewLinkedInPerson(cfg SourceGeneratorConfig) Sourcer { + return &LinkedInPerson{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (p *LinkedInPerson) Source(cfg SourceConfig) idk.Source { + g := gen.New(gen.OptGenSeed(cfg.seed)) + src := &LinkedInPersonSource{ + startFrom: cfg.startFrom, + endAt: cfg.endAt, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "city"}, // 1 + idk.StringField{NameVal: "zip_code"}, // 2 + idk.StringArrayField{NameVal: "skills"}, // 3 + idk.StringArrayField{NameVal: "titles"}, // 4 + }, + g: g, + } + + src.record = make([]interface{}, len(src.schema)) + src.record[3] = []string{} + src.record[4] = []string{} + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *LinkedInPerson) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *LinkedInPerson) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (p *LinkedInPerson) Info() string { + return "Simulates adding LinkedIn data to existing customer segmentation data." +} + +var _ idk.Source = (*LinkedInPersonSource)(nil) + +type LinkedInPersonSource struct { + count uint64 + startFrom uint64 + endAt uint64 + + schema []idk.Field + record record + + g *gen.Gen +} + +func (lp *LinkedInPersonSource) Record() (idk.Record, error) { + lp.count++ + if lp.count > lp.endAt-lp.startFrom { + return nil, io.EOF + } + lp.record[0] = uint64(lp.g.R.Int63n(int64(lp.endAt-lp.startFrom))) + lp.startFrom + lp.record[1] = lp.g.StringFromList(uscities) + lp.record[2] = lp.g.StringFromList(zip_codes) + lp.record[3] = lp.g.StringSliceFromListWeighted(lp.record[3].([]string), skills, 2, 5) + lp.record[4] = lp.g.StringSliceFromListWeighted(lp.record[4].([]string), titles, 2, 5) + + return lp.record, nil +} + +func (lp *LinkedInPersonSource) Schema() []idk.Field { + return lp.schema +} +func (lp *LinkedInPersonSource) Close() error { + return nil +} diff --git a/idk/datagen/customer_segmentation_test.go b/idk/datagen/customer_segmentation_test.go new file mode 100644 index 000000000..d4c0053aa --- /dev/null +++ b/idk/datagen/customer_segmentation_test.go @@ -0,0 +1,27 @@ +package datagen + +import ( + "testing" +) + +func TestPersonHobbies(t *testing.T) { + p := NewPerson(SourceGeneratorConfig{}) + ps := p.Source(SourceConfig{endAt: 10}) + + i := 0 + for i = 0; i < 10; i++ { + rec, err := ps.Record() + if err != nil { + t.Fatalf("getting record: %v", err) + } + data := rec.Data() + if dataStringSlice, ok := data[10].([]string); !ok { + t.Fatalf("expected string slice, but got type:%T, data:%[1]v", data[10]) + } else if len(dataStringSlice) > 0 { + break // we just want to see one that has data in it, then we'll call that success + } + } + if i == 10 { + t.Fatalf("never saw any generated hobbies (slice was always empty)") + } +} diff --git a/idk/datagen/datagen_test.go b/idk/datagen/datagen_test.go new file mode 100644 index 000000000..65dd41614 --- /dev/null +++ b/idk/datagen/datagen_test.go @@ -0,0 +1,559 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + "os" + "sort" + "sync" + "testing" + "time" + + "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" +) + +var sources = []string{ + "bank", + "claim", + "custom", + "customer", + "dell", + "dwarranty", + "equipment", + "hughes", + "item", + "kitchensink", + "kitchensink_keyed", + "merck", + "network_ts", + "power_scenario_1", + "power_scenario_1_2", + "power_ts", + "site", + "sizing", + "stringpk", + "texas_health", + "transactions_scenario_1", + "transactions_ts", + "warranty", +} + +var keyedIndices = map[string]bool{ + "stringpk": true, + "kitchensink_keyed": true, + "bank": true, +} + +var duplicateIndices = map[string]bool{ + "bank": true, + "customer_segmentation_linkedin": true, + "custom": true, +} + +// TestConfig tests that all default configurations load. +func TestConfig(t *testing.T) { + t.Parallel() + + for _, src := range sources { + src := src + t.Run(src, func(t *testing.T) { + t.Parallel() + + main := NewMain() + main.Source = src + main.Concurrency = 2 + if src == "custom" { + main.CustomConfig = "testdata/custom.yaml" + } + main.Target = TargetFeaturebase + err := main.Preload() + if err != nil { + t.Errorf("failed to preload: %v", err) + return + } + main.NoStats() + main.PrintPlan() + }) + } +} + +// TestGen tests record generation. +// It ensures that all generated IDs are unique, and that the right number of records are generated. +// If the IDs are numerical, it also ensures that they occupy a single contiguous range. +func TestGen(t *testing.T) { + t.Parallel() + + for _, src := range sources { + src := src + t.Run(src, func(t *testing.T) { + t.Parallel() + + const conc = 16 + const n = 100 + + main := NewMain() + main.Source = src + main.Concurrency = conc + main.EndAt = n - 1 + if src == "custom" { + main.CustomConfig = "testdata/custom.yaml" + } + if err := main.Preload(); err != nil { + t.Errorf("failed to preload: %v", err) + return + } + main.NoStats() + + var wg sync.WaitGroup + var out [conc]map[interface{}]struct{} + var errs [conc]error + srcs := main.Sources() + for i := range out { + i := i + wg.Add(1) + go func() { + defer wg.Done() + + ids := map[interface{}]struct{}{} + out[i] = ids + + for { + rec, err := srcs[i].Record() + if err != nil { + if err == io.EOF { + return + } + + errs[i] = err + return + } + + id := rec.Data()[0] + if idbytes, ok := id.([]byte); ok { + id = string(idbytes) + } + if _, ok := ids[id]; ok { + errs[i] = fmt.Errorf("duplicated ID: %v", id) + return + } + ids[id] = struct{}{} + } + }() + } + wg.Wait() + + for i, v := range errs { + if v != nil { + t.Errorf("source %d failed: %v", i, v) + } + } + + total := 0 + ids := map[interface{}][]int{} + var idlist []interface{} + for i, s := range out { + total += len(s) + for id := range s { + if _, ok := ids[id]; !ok { + idlist = append(idlist, id) + } + ids[id] = append(ids[id], i) + } + } + // some sources are expected to have duplicate records, so skip checking for duplicates. + if !duplicateIndices[src] { + sort.Slice(idlist, func(i, j int) bool { + switch idlist[i].(type) { + case uint64: + return idlist[i].(uint64) < idlist[j].(uint64) + case string: + return idlist[i].(string) < idlist[j].(string) + default: + panic(fmt.Errorf("unexpected type: %T", idlist[i])) + } + }) + for _, id := range idlist { + srcs := ids[id] + if len(srcs) > 1 { + sort.Ints(srcs) + t.Errorf("duplicates of id %v found in sources: %v", id, srcs) + } + } + if base, ok := idlist[0].(uint64); ok { + for i, v := range idlist { + if base+uint64(i) != v { + t.Errorf("found gap in ID range at %d", base+uint64(i)) + break + } + } + } + } + + if total != n { + t.Errorf("expected %d records; got %d records", n, total) + } + + }) + } +} + +func configureTestFlags(main *Main) { + if pilosaHost, ok := os.LookupEnv("IDK_TEST_PILOSA_HOST"); ok { + main.Pilosa.Hosts = []string{pilosaHost} + } else { + main.Pilosa.Hosts = []string{"pilosa:10101"} + } +} + +func TestThousandFormating(t *testing.T) { + t.Parallel() + tests := []struct { + input uint64 + output string + }{ + {input: 0, output: "0"}, + {input: 1000, output: "1,000"}, + {input: 111222333444, output: "111,222,333,444"}, + } + for _, tc := range tests { + tc := tc + if tc.output != AddThousandSep(tc.input) { + t.Errorf("expected %v but got %v", tc.output, AddThousandSep(tc.input)) + } + } +} + +// TestIntegration is an intergration test that ingests each source into Pilosa. +// It currently only verifies that the correct number of rows are ingested into each index. +func TestIntegration(t *testing.T) { + t.Parallel() + + if testing.Short() { + t.Skip("skipping integration tests in short mode") + return + } + + for _, src := range sources { + src := src + t.Run(src, func(t *testing.T) { + t.Parallel() + + const n = 100 + + main := NewMain() + configureTestFlags(main) + main.Pilosa.Index = fmt.Sprintf("test-%s-%d", src, rand.New(rand.NewSource(time.Now().Unix())).Uint64()) + main.Source = src + main.Target = TargetFeaturebase + main.EndAt = n - 1 + main.Concurrency = 3 + main.Pilosa.BatchSize = 13 + if src == "custom" { + main.CustomConfig = "testdata/custom.yaml" + } + if err := main.Preload(); err != nil { + t.Errorf("failed to preload: %v", err) + return + } + main.NoStats() + + defer func() { + client := main.PilosaClient() + if client == nil { + return + } + if err := client.DeleteIndexByName(main.Pilosa.Index); err != nil { + t.Errorf("deleting test index: %v", err) + } + }() + + if err := main.Run(); err != nil { + t.Errorf("failed to ingest: %v", err) + return + } + + client := main.PilosaClient() + + schema, err := client.Schema() + if err != nil { + t.Errorf("getting schema: %v", err) + return + } + + index := schema.Indexes()[main.Pilosa.Index] + if index == nil { + t.Error("index dissapeared") + return + } + + expectKeys := keyedIndices[src] + indexKeys := index.Opts().Keys() + if indexKeys != expectKeys { + t.Errorf("expected keys=%v; got keys=%v", expectKeys, indexKeys) + } + + resp, err := client.Query(index.Count(index.All())) + if err != nil { + t.Errorf("validation query failed: %v", err) + return + } + + recordCount := resp.Result().Count() + // some sources have duplicate records with same id. + // record count in featurebase won't match the number of ingested records + if duplicateIndices[src] { + if recordCount == 0 { + t.Errorf("expected %d records; found %d records", 0, recordCount) + } + } else { + if recordCount != n { + t.Errorf("expected %d records; found %d records", n, recordCount) + } + } + }) + } +} + +func TestConfigKafka(t *testing.T) { + t.Parallel() + tests := []struct { + src string + conc int + numpartitions int + replicationfactor int + topic string + batchsize int + target string + }{ + { + src: sources[0], + conc: 2, + numpartitions: 4, + replicationfactor: 2, + topic: fmt.Sprintf("topic-%d", rand.New(rand.NewSource(time.Now().Unix())).Uint64()), + batchsize: 1000000, + target: TargetKafka, + }, + { + src: sources[0], + conc: 1, + numpartitions: 1, + replicationfactor: 1, + topic: fmt.Sprintf("topic-%d", rand.New(rand.NewSource(time.Now().Unix())).Uint64()), + batchsize: 10000, + target: TargetKafkaStatic, + }, + { + src: sources[0], + conc: 3, + numpartitions: 1, + replicationfactor: 1, + topic: fmt.Sprintf("topic-%d", rand.New(rand.NewSource(time.Now().Unix())).Uint64()), + batchsize: 10000, + target: TargetKafkaStatic, + }, + } + + for i, test := range tests { + tc := test + t.Run(fmt.Sprintf("Test%d", i), func(t *testing.T) { + t.Parallel() + + main := NewMain() + main.Source = tc.src + main.Concurrency = tc.conc + main.Target = tc.target + main.Concurrency = tc.conc + main.Kafka.BatchSize = tc.batchsize + main.Kafka.Topic = tc.topic + main.Kafka.ReplicationFactor = tc.replicationfactor + main.Kafka.NumPartitions = tc.numpartitions + err := main.Preload() + if err != nil { + t.Fatalf("failed to preload: %v", err) + } + if main.KafkaPut.Concurrency != tc.conc { + t.Fatalf("expected %d for concurrency, got %d", tc.conc, main.KafkaPut.Concurrency) + } + if main.KafkaPut.BatchSize != tc.batchsize { + t.Fatalf("expected %d for batch-size, got %d", tc.batchsize, main.KafkaPut.BatchSize) + } + if main.KafkaPut.NumPartitions != tc.numpartitions { + t.Fatalf("expected %d for num partitions, got %d", tc.numpartitions, main.KafkaPut.NumPartitions) + } + if main.KafkaPut.ReplicationFactor != tc.replicationfactor { + t.Fatalf("expected %d for replication factor, got %d", tc.replicationfactor, main.KafkaPut.ReplicationFactor) + } + if main.KafkaPut.Target != tc.target { + t.Fatalf("expected %s for target, got %s", tc.target, main.KafkaPut.Target) + } + if main.KafkaPut.Topic != tc.topic { + t.Fatalf("expected %s for topic, got %s", tc.topic, main.KafkaPut.Topic) + } + }) + } +} + +func configureKafkaTestFlags(main *Main) { + main.Pilosa.Hosts = []string{"pilosa:10101"} + main.Kafka.KafkaBootstrapServers = []string{"kafka:9092"} +} + +func TestIntegrationWithKafka(t *testing.T) { + tests := []struct { + target string + numPartitions int + primaryKeyFields []string + idField string + }{ + { + target: TargetKafka, + numPartitions: 6, + primaryKeyFields: []string{"uuid"}, + idField: "uuid", + }, + { + target: TargetKafka, + numPartitions: 1, + primaryKeyFields: []string{}, + idField: "", + }, + { + target: TargetKafkaStatic, + numPartitions: 4, + primaryKeyFields: []string{}, + idField: "", + }, + { + target: TargetKafkaStatic, + numPartitions: 2, + primaryKeyFields: []string{"uuid"}, + idField: "uuid", + }, + } + + for i, test := range tests { + tc := test + ti := i + t.Run(tc.target, func(t *testing.T) { + const n = 100 + src := "custom" + + main := NewMain() + main.Pilosa.Index = fmt.Sprintf("test-%s-%d-%d", tc.target, ti, rand.New(rand.NewSource(time.Now().Unix())).Uint64()) + main.Source = src + main.CustomConfig = "testdata/tremor_keys.yaml" + main.Target = tc.target + main.EndAt = n - 1 + main.Pilosa.BatchSize = 13 + configureKafkaTestFlags(main) + main.Kafka.Topic = fmt.Sprintf("topic-%s-%d-%d", tc.target, ti, rand.New(rand.NewSource(time.Now().Unix())).Uint64()) + main.Kafka.NumPartitions = tc.numPartitions + main.Concurrency = tc.numPartitions // make concurrency and partitions equal + main.Kafka.ReplicationFactor = 1 + if tc.target == TargetKafka { + main.Kafka.SchemaRegistryURL = "http://schema-registry:8081" + } + if len(tc.primaryKeyFields) != 0 { + main.idkMain.PrimaryKeyFields = tc.primaryKeyFields + } + if tc.idField != "" { + main.idkMain.IDField = tc.idField + } + if err := main.Preload(); err != nil { + t.Fatalf("failed to preload: %v", err) + } + + if err := main.KafkaPut.Run(); err != nil { + t.Fatalf("failed to ingest records to kafka: %v", err) + } + + if err := main.KafkaPut.ConfigMap.SetKey("go.produce.channel.size", 1); err != nil { + t.Fatalf("failed to st produce channel size: %v", err) + } + + confluentCommand := idk.ConfluentCommand{ + KafkaBootstrapServers: []string{"kafka:9092"}, + KafkaSocketTimeoutMs: 10, + } + + configMap, err := common.SetupConfluent(&confluentCommand) + if err != nil { + t.Fatalf("failed to create kafka confluent config map: %v", err) + } + + kafkaClient, err := kafka.NewAdminClient(configMap) + if err != nil { + t.Fatalf("failed to get kafka client: %v", err) + } + defer kafkaClient.Close() + + metadata, err := kafkaClient.GetMetadata(&main.KafkaPut.Topic, false, 100) + if err != nil { + t.Fatalf("failed to get kafka metadata: %v", err) + } + + topic, ok := metadata.Topics[main.KafkaPut.Topic] + if !ok { + t.Fatalf("topic %s not found in metadata", main.KafkaPut.Topic) + } + + if len(topic.Partitions) != tc.numPartitions { + t.Fatalf("expected %d for num partitions, got %d", tc.numPartitions, len(topic.Partitions)) + } + }) + } +} + +func TestStartEnds(t *testing.T) { + tests := []struct { + config SourceGeneratorConfig + conc int + ses []startEnd + total uint64 + }{ + { + config: SourceGeneratorConfig{ + StartFrom: 0, + EndAt: 100, + Concurrency: 5}, + conc: 5, + ses: []startEnd{{0, 20}, {20, 40}, {40, 60}, {60, 80}, {80, 100}}, + total: 100, + }, + { + config: SourceGeneratorConfig{ + StartFrom: 0, + EndAt: 100, + Concurrency: 1}, + conc: 1, + ses: []startEnd{{0, 100}}, + total: 100, + }, + } + + for i, test := range tests { + tc := test + t.Run(fmt.Sprintf("Test_%d", i), func(t *testing.T) { + conc, ses, total := startEnds(tc.config) + if conc != tc.conc { + t.Fatalf("expected %d for concurrency, got %d", tc.conc, conc) + } + if total != tc.total { + t.Fatalf("expected %d for total records, got %d", tc.total, total) + } + if len(ses) != len(tc.ses) { + t.Fatalf("expected %d of boundaries, got %d", len(tc.ses), len(ses)) + } + for i, exp := range tc.ses { + got := ses[i] + if exp.start != got.start || exp.end != got.end { + t.Fatalf("expected boundaries to start %d and end at %d, but got start %d and end at %d", exp.start, exp.end, got.start, got.end) + } + } + }) + } +} diff --git a/idk/datagen/dell.data.go b/idk/datagen/dell.data.go new file mode 100644 index 000000000..d696f9c13 --- /dev/null +++ b/idk/datagen/dell.data.go @@ -0,0 +1,22 @@ +package datagen + +// Data arrays +var system_ram = []string{"1", "2", "4", "6", "8", "12", "16", "20", "24", "32", "64", "128", "256"} + +var system_model = []string{"XS23-TY", "XPS13 9333", "XPS One 2710", "XPS M1530", "XPS M1330", "XPS L701X", "XPS L521X", "XPS L501X", "XPS L421X", "XPS L412Z", "XPS L401X", "XPS L322X", "XPS A2010", "XPS 9Q23", "XPS 8930", "XPS 8920", "XPS 8910", "XPS 8900", "XPS 8700", "XPS 8500", "XPS 8300", "XPS 7760 AIO", "XPS 730X", "XPS 730", "XPS 630i", "XPS 625", "XPS 2730", "XPS 2720", "XPS 1820", "XPS 18", "XPS 17 Pro 9700", "XPS 17 9700", "XPS 15 9575", "XPS 15 9570", "XPS 15 9560", "XPS 15 9550", "XPS 15 9530", "XPS 15 9500", "XPS 15 7590", "XPS 13 9380", "XPS 13 9370", "XPS 13 9365", "XPS 13 9360", "XPS 13 9350", "XPS 13 9343", "XPS 13 9310 2-in-1", "XPS 13 9310", "XPS 13 9300", "XPS 13 7390 2-in-1", "XPS 13 7390", "XPS 13 7300", "XPS 12-9Q33", "XPS 12 9Q23", "XPS 12 9250", "XPS 11 9P33", "�X", "Wyse 7040", "Wyse 5470", "Wyse 5070 Thin Client", "Wyse 5070 Extended Thin Client", "Workform 1000", "WN09_", "WN09", "Vostro2510", "Vostro1710", "Vostro1510", "Vostro1310", "Vostro V131", "Vostro V130", "Vostro V13", "Vostro A860", "Vostro A840", "Vostro A180", "Vostro 7590", "Vostro 7580", "Vostro 7570", "Vostro 7500", "Vostro 5880", "Vostro 5590", "Vostro 5581", "Vostro 5568", "Vostro 5560", "Vostro 5490", "Vostro 5481", "Vostro 5471", "Vostro 5470", "Vostro 5468", "Vostro 5460 AIO", "Vostro 5460", "Vostro 5391", "Vostro 5390", "Vostro 5370", "Vostro 5090-China HDD Protection", "Vostro 5090", "Vostro 470", "Vostro 460", "Vostro 430", "Vostro 420 Series", "Vostro 410", "Vostro 400", "Vostro 3905", "Vostro 3902", "Vostro 3901", "Vostro 3900", "Vostro 3888-China HDD Protection", "Vostro 3888", "Vostro 3881", "Vostro 3800", "Vostro 3700", "Vostro 3681", "Vostro 3671-China HDD Protection", "Vostro 3671", "Vostro 3670-China HDD Protection", "Vostro 3670", "Vostro 3669", "Vostro 3668", "Vostro 3667", "Vostro 3660", "Vostro 3653", "Vostro 3650", "Vostro 360", "Vostro 3591", "Vostro 3590", "Vostro 3584", "Vostro 3583", "Vostro 3582", "Vostro 3581", "Vostro 3580", "Vostro 3578", "Vostro 3561", "Vostro 3560", "Vostro 3559", "Vostro 3558tion", "Vostro 3558tio", "Vostro 3558ti", "Vostro 3558", "Vostro 3555", "Vostro 3550", "Vostro 3549", "Vostro 3546", "Vostro 3500", "Vostro 3491", "Vostro 3490", "Vostro 3481", "Vostro 3480", "Vostro 3478", "Vostro 3471", "Vostro 3470", "Vostro 3460", "Vostro 3459", "Vostro 3458tion", "Vostro 3458tio", "Vostro 3458ti", "Vostro 3458", "Vostro 3449", "Vostro 3446", "Vostro 3445", "Vostro 3400", "Vostro 3360", "Vostro 3350", "Vostro 3300", "Vostro 330", "Vostro 3268", "Vostro 3267", "Vostro 3252", "Vostro 3250", "Vostro 320", "Vostro 3070-China HDD Protection", "Vostro 3070", "Vostro 270s", "Vostro 270", "Vostro 260s", "Vostro 260", "Vostro 2521", "Vostro 2520", "Vostro 24-5460", "Vostro 24-5450", "Vostro 2421", "Vostro 2420", "Vostro 23-3340", "Vostro 230", "Vostro 220s Series", "Vostro 220 Series", "Vostro 20-3055", "Vostro 20-3052", "Vostro 200", "Vostro 20 Model 3010", "Vostro 20 3015", "Vostro 1720", "Vostro 1700", "Vostro 1550", "Vostro 1540", "Vostro 15-3572", "Vostro 15-3568", "Vostro 15-3565", "Vostro 15-3562", "Vostro 1520", "Vostro 1500", "Vostro 15 5501", "Vostro 14-5480", "Vostro 14-5459", "Vostro 1450", "Vostro 1440", "Vostro 14-3468", "Vostro 1400", "Vostro 14 5401", "Vostro 1320", "Vostro 13 5300", "Vostro 1220", "Vostro 1200", "Vostro 1088", "Vostro 1015", "Vostro 1014", "Vostro 1000", "Vizrt Graphics & Video Platform", "VIG644M", "VIG642M", "VideoXpert Enhanced Decoder", "Venue 8 Pro 5855", "Venue 8 Pro 5830", "Venue 8 Pro 3845", "Venue 11 Pro 7140", "Venue 11 Pro 7139", "Venue 11 Pro 7130 vPro", "Venue 11 Pro 7130 MS", "Venue 11 Pro 7130", "Venue 11 Pro 5130", "Venue 10 Pro 5056", "Venue 10 Pro 5055", "Unidentified System", "T620, DBE", "SYSFexxx", "Studio XPS 9100", "Studio XPS 8100", "Studio XPS 8000", "Studio XPS 7100", "Studio XPS 435T/9000", "Studio XPS 435T", "Studio XPS 435MT", "Studio XPS 1647", "Studio XPS 1645", "Studio XPS 1640", "Studio XPS 1340", "Studio Slim 540s", "Studio One 1909", "Studio 540", "Studio 1749", "Studio 1747", "Studio 1745", "Studio 1737", "Studio 1735", "Studio 1569", "Studio 1558", "Studio 1557", "Studio 1555", "Studio 1537", "Studio 1536", "Studio 1535", "Studio 1458", "Studio 1457", "Studio 1450", "Studio 1440", "Studio 1435", "Standard PC (i440FX + PIIX, 1996)", "SNB-CPT", "SKL_", "SCIEX Alpha Workstation", "RIP Workstation", "R740xd Storage Spaces Direct RN", "R720, DBE", "R640 Storage Spaces Direct RN", "R640 ScaleIO Ready Node", "Precision WorkStation T7500", "Precision WorkStation T7400", "Precision WorkStation T5500", "Precision WorkStation T5400", "Precision WorkStation T3500", "Precision WorkStation T3400", "Precision WorkStation R5500", "Precision WorkStation R5400", "Precision WorkStation 690", "Precision WorkStation 670", "Precision WorkStation 650", "Precision WorkStation 490", "Precision WorkStation 470", "Precision WorkStation 390", "Precision WorkStation 380", "Precision WorkStation 370", "Precision WorkStation 360", "Precision Tower 7910, DBE", "Precision Tower 7910", "Precision Tower 7810, DBE", "Precision Tower 7810", "Precision Tower 5810, DBE", "Precision Tower 5810", "Precision Tower 3620, DBE", "Precision Tower 3620", "Precision Tower 3431", "Precision Tower 3430-China HDD Protection", "Precision Tower 3430", "Precision Tower 3420, DBE", "Precision Tower 3420", "Precision T7610049D00D2/", "Precision T7610", "Precision T7600", "Precision T5810", "Precision T5610", "Precision T5600", "Precision T3610", "Precision T3600", "Precision T1700", "Precision T1650", "Precision T1600", "Precision T1500", "Precision Rack 7910", "Precision R7610", "Precision M90", "Precision M70", "Precision M6800", "Precision M6700", "Precision M6600", "Precision M6500", "Precision M65", "Precision M6400", "Precision M6300", "Precision M4800", "Precision M4700", "Precision M4600", "Precision M4500", "Precision M4400", "Precision M4300", "Precision M2800", "Precision M2400", "Precision M2300", "Precision 7920 Tower", "Precision 7920 Rack", "Precision 7820 Tower", "Precision 7750", "Precision 7740", "Precision 7730", "Precision 7720", "Precision 7710", "Precision 7550", "Precision 7540", "Precision 7530", "Precision 7520", "Precision 7510", "Precision 5820 Tower X-Series", "Precision 5820 Tower", "Precision 5750", "Precision 5720 AIO", "Precision 5550", "Precision 5540", "Precision 5530 2-in-1", "Precision 5530", "Precision 5520", "Precision 5510", "Precision 3930 Rack", "Precision 3640 Tower", "Precision 3630 Tower-China HDD Protection", "Precision 3630 Tower", "Precision 3551", "Precision 3550", "Precision 3541", "Precision 3540", "Precision 3530", "Precision 3520", "Precision 3510", "Prec T7920, DBE", "Prec T5820, DBE", "PowerVault NX400", "PowerVault NX3200", "PowerVault NX3100", "PowerVault NX3000", "PowerVault NX300", "PowerVault NX200", "PowerVault DL4000", "PowerVault DL2200", "PowerVault 600", "PowerVault 500", "PowerEdge T710", "PowerEdge T640", "PowerEdge T630", "PowerEdge T620", "PowerEdge T610", "PowerEdge T605", "PowerEdge T440", "PowerEdge T430", "PowerEdge T420", "PowerEdge T410", "PowerEdge T40", "PowerEdge T340", "PowerEdge T330", "PowerEdge T320", "PowerEdge T310", "PowerEdge T300", "PowerEdge T30", "PowerEdge T20", "PowerEdge T140", "PowerEdge T130", "PowerEdge T110 II", "PowerEdge T110", "PowerEdge T105", "PowerEdge T100", "PowerEdge SC440", "PowerEdge SC430", "PowerEdge SC420", "PowerEdge SC1435", "PowerEdge SC1430", "PowerEdge R940xa", "PowerEdge R940", "PowerEdge R930", "PowerEdge R920", "PowerEdge R910", "PowerEdge R905", "PowerEdge R900", "PowerEdge R840", "PowerEdge R830", "PowerEdge R820", "PowerEdge R815", "PowerEdge R810", "PowerEdge R805", "PowerEdge R7515", "PowerEdge R7425", "PowerEdge R7415", "PowerEdge R740xd2", "PowerEdge R740xd", "PowerEdge R740", "PowerEdge R730xd", "PowerEdge R730", "PowerEdge R720xd", "PowerEdge R720", "PowerEdge R715", "PowerEdge R710", "PowerEdge R6525", "PowerEdge R6515", "PowerEdge R6415", "PowerEdge R640", "PowerEdge R630", "PowerEdge R620", "PowerEdge R610", "PowerEdge R540", "PowerEdge R530", "PowerEdge R520", "PowerEdge R515", "PowerEdge R510", "PowerEdge R440", "PowerEdge R430", "PowerEdge R420", "PowerEdge R415", "PowerEdge R410", "PowerEdge R340", "PowerEdge R330", "PowerEdge R320", "PowerEdge R310", "PowerEdge R300", "PowerEdge R240", "PowerEdge R230", "PowerEdge R220", "PowerEdge R210 II", "PowerEdge R210", "PowerEdge R200", "PowerEdge MX740c", "PowerEdge M910", "PowerEdge M830 (VRTX)", "PowerEdge M830", "PowerEdge M820", "PowerEdge M710HD", "PowerEdge M710", "PowerEdge M640 (VRTX)", "PowerEdge M640", "PowerEdge M630 (VRTX)", "PowerEdge M630", "PowerEdge M620", "PowerEdge M610", "PowerEdge M520", "PowerEdge FC830", "PowerEdge FC640", "PowerEdge FC630", "PowerEdge FC430", "PowerEdge C6420", "PowerEdge C6320", "PowerEdge C6220 II", "PowerEdge C6220", "PowerEdge C6105", "PowerEdge C2100", "PowerEdge 860", "PowerEdge 840", "PowerEdge 830", "PowerEdge 6950", "PowerEdge 400SC", "PowerEdge 2970", "PowerEdge 2950", "PowerEdge 2900", "PowerEdge 2850", "PowerEdge 1950", "PowerEdge 1900", "PowerEdge 1850", "PowerEdge 1800", "PI Sleep Button", "PeopleLink Desktop VC Unit", "PE_SC3_", "PE R630 - MS Storage Spaces", "or Aggregator", "OptiPlex XE3", "OptiPlex XE2, DBE", "OptiPlex XE2", "OptiPlex XE", "OptiPlex SX280", "OptiPlex SX260", "OptiPlex GX620", "OptiPlex GX60", "OptiPlex GX520", "OptiPlex GX280", "OptiPlex GX270", "OptiPlex GX260", "OptiPlex FX160", "OptiPlex 990", "OptiPlex 980", "OptiPlex 960", "OptiPlex 9030 AIO", "OptiPlex 9020M", "OptiPlex 90202004CK05MO/", "OptiPlex 902020048T03IU/", "OptiPlex 9020 AIO", "OptiPlex 9020", "OptiPlex 9010 AIO", "OptiPlex 9010", "OptiPlex 790", "OptiPlex 780", "OptiPlex 7780 AIO", "OptiPlex 7770 AIO", "OptiPlex 7760 AIO-China HDD Protection", "OptiPlex 7760 AIO", "OptiPlex 760", "OptiPlex 755", "OptiPlex 7480 AIO", "OptiPlex 7470 AIO-China HDD Protection", "OptiPlex 7470 AIO", "OptiPlex 7460 AIO-China HDD Protection", "OptiPlex 7460 AIO", "OptiPlex 745c", "OptiPlex 7450 AIO-China HDD Protection", "OptiPlex 7450 AIO", "OptiPlex 745", "OptiPlex 7440 AIO, DBE", "OptiPlex 7440 AIO", "OptiPlex 740 Enhanced", "OptiPlex 740", "OptiPlex 7080", "OptiPlex 7071", "OptiPlex 7070-China HDD Protection", "OptiPlex 7070 Ultra", "OptiPlex 7070", "OptiPlex 7060-China HDD Protection", "OptiPlex 7060", "OptiPlex 7050-China HDD Protection", "OptiPlex 7050, DBE", "OptiPlex 7050", "OptiPlex 7040, DBE", "OptiPlex 7040", "OptiPlex 7020 /", "OptiPlex 7020", "OptiPlex 7010", "OptiPlex 580", "OptiPlex 5480 AIO", "OptiPlex 5270 AIO-China HDD Protection", "OptiPlex 5270 AIO", "OptiPlex 5260 AIO-China HDD Protection", "OptiPlex 5260 AIO", "OptiPlex 5250 AIO-China HDD Protection", "OptiPlex 5250 AIO", "OptiPlex 5080", "OptiPlex 5070-China HDD Protection", "OptiPlex 5070", "OptiPlex 5060-China HDD Protection", "OptiPlex 5060", "OptiPlex 5055 Ryzen CPU", "OptiPlex 5055 Ryzen APU", "OptiPlex 5055 A-Series", "OptiPlex 5050-China HDD Protection", "OptiPlex 5050, DBE", "OptiPlex 5050", "OptiPlex 5040, DBE", "OptiPlex 5040", "OptiPlex 390", "OptiPlex 380", "OptiPlex 360", "OptiPlex 330", "OptiPlex 3280 AIO", "OptiPlex 3240 AIO", "OptiPlex 320", "OptiPlex 3080-China HDD Protection", "OptiPlex 3080", "OptiPlex 3070-China HDD Protection", "OptiPlex 3070", "OptiPlex 3060-China HDD Protection", "OptiPlex 3060 QEB 2019A", "OptiPlex 3060", "OptiPlex 3050-China HDD Protection", "OptiPlex 3050, DBE", "OptiPlex 3050 AIO-China HDD Protection", "OptiPlex 3050 AIO", "OptiPlex 3050", "OptiPlex 3046", "OptiPlex 3040, DBE", "OptiPlex 3040", "OptiPlex 3030 AIO", "OptiPlex 3020M", "OptiPlex 3020", "OptiPlex 3011 AIO", "OptiPlex 3010", "OptiPlex 210L", "OptiPlex 170L", "OptiPlex 160L", "OptiPlex 160", "oft.HEVCVideoExtension_1.0.2512.0_x64_8wekyb3d8bbwe (x64)", "OEM-R 720xd", "NVR Workstation", "Nobilis", "MXP061", "MXG071", "MXG061", "MXC062", "MXC061", "MXC051", "MP061", "MM061", "ME051", "M92P", "M18xR2", "M18xR1", "M17xR4", "M17xR3", "M17x", "M15x", "M14xR2", "M14xR1", "M11xR3", "M11x R2", "M11x", "Latitude Z600", "Latitude XT3", "Latitude XT2", "Latitude XT", "Latitude ST", "Latitude E7470", "Latitude E7450", "Latitude E74401948Q0071/", "Latitude E7440", "Latitude E7270", "Latitude E7250", "Latitude E724063522084D/", "Latitude E7240", "Latitude E6540", "Latitude E6530", "Latitude E6520", "Latitude E6510", "Latitude E6500", "Latitude E6440", "Latitude E6430s", "Latitude E6430", "Latitude E6420", "Latitude E6410", "Latitude E6400", "Latitude E6330", "Latitude E6320", "Latitude E6230", "Latitude E6220", "Latitude E5570", "Latitude E5550", "Latitude E554063418003F/", "Latitude E5540", "Latitude E5530 vPro", "Latitude E5530 non-vPro", "Latitude E5520m", "Latitude E5520", "Latitude E5510", "Latitude E5500", "Latitude E5470", "Latitude E5450", "Latitude E5440", "Latitude E5430 vPro", "Latitude E5430 non-vPro", "Latitude E5420m", "Latitude E5420", "Latitude E5410", "Latitude E5400", "Latitude E5270", "Latitude E5250", "Latitude E4310", "Latitude E4300", "Latitude E4200", "Latitude D830", "Latitude D820", "Latitude D810", "Latitude D800", "Latitude D631", "Latitude D630C", "Latitude D630", "Latitude D620", "Latitude D610", "Latitude D600", "Latitude D531", "Latitude D530", "Latitude D520", "Latitude D510", "Latitude D505", "Latitude D430", "Latitude D420", "Latitude D410", "Latitude 9510", "Latitude 9410 2-in-1", "Latitude 9410", "Latitude 7490", "Latitude 7480", "Latitude 7424 Rugged Extreme", "Latitude 7414 QEB 2018B", "Latitude 7414", "Latitude 7410 Clamshell", "Latitude 7410 2-in-1", "Latitude 7410", "Latitude 7400 2-in-1", "Latitude 7400", "Latitude 7390 2-in-1", "Latitude 7390", "Latitude 7389 2-in-1", "Latitude 7389", "Latitude 7380", "Latitude 7370", "Latitude 7350", "Latitude 7310 Clamshell", "Latitude 7310 2-in-1", "Latitude 7310", "Latitude 7300", "Latitude 7290", "Latitude 7285", "Latitude 7280", "Latitude 7275", "Latitude 7250", "Latitude 7220EX Rugged Extreme Tablet", "Latitude 7220 Rugged Extreme Tablet", "Latitude 7214", "Latitude 7212 Rugged Extreme Tablet", "Latitude 7210 2-in-1", "Latitude 7200 2-in-1", "Latitude 6430U", "Latitude 5591", "Latitude 5590", "Latitude 5580", "Latitude 5550", "Latitude 5511", "Latitude 5510", "Latitude 5501", "Latitude 5500", "Latitude 5495", "Latitude 5491", "Latitude 5490 mobile thin client", "Latitude 5490", "Latitude 5488", "Latitude 5480", "Latitude 5450", "Latitude 5424 Rugged", "Latitude 5420 Rugged", "Latitude 5414", "Latitude 5411", "Latitude 5410", "Latitude 5401", "Latitude 5400", "Latitude 5310 2-in-1", "Latitude 5310", "Latitude 5300 2-in-1 Chromebook Enterprise", "Latitude 5300 2-in-1", "Latitude 5300", "Latitude 5290 2-in-1", "Latitude 5290", "Latitude 5289", "Latitude 5288", "Latitude 5285", "Latitude 5280", "Latitude 5250", "Latitude 5179", "Latitude 5175", "Latitude 3590", "Latitude 3588", "Latitude 3580", "Latitude 3570", "Latitude 3560", "Latitude 3550", "Latitude 3540", "Latitude 3510", "Latitude 3500", "Latitude 3490", "Latitude 3488", "Latitude 3480", "Latitude 3470", "Latitude 3460", "Latitude 3450", "Latitude 3440", "Latitude 3410", "Latitude 3400", "Latitude 3390 2-in-1", "Latitude 3380", "Latitude 3379", "Latitude 3350", "Latitude 3340", "Latitude 3330", "Latitude 3311", "Latitude 3310 2-in-1", "Latitude 3310", "Latitude 3301", "Latitude 3300", "Latitude 3190 2-in-1", "Latitude 3190", "Latitude 3189", "Latitude 3180", "Latitude 3160", "Latitude 3150", "Latitude 2120", "Latitude 2110", "Latitude 2100", "Latitude 14 Rugged Extreme (7404)", "Latitude 14 Rugged (5404)", "Latitude 131L", "Latitude 13", "Latitude 120L", "Latitude 12 Rugged Tablet 7202", "Latitude 12 Rugged Extreme (7204)", "Latitude 10 - ST2e", "Latitude 10 - ST2", "Latitude 10", "ition", "INVALID", "INVA", "Inspiron XPS Gen2", "Inspiron One 2330", "Inspiron One 2320", "Inspiron One 2310", "Inspiron One 2305", "Inspiron One 2205", "Inspiron One 2020", "Inspiron One 19T", "Inspiron One 19A", "Inspiron N7010", "Inspiron N5110", "Inspiron N5050", "Inspiron N5040", "Inspiron N5030", "Inspiron N5010", "Inspiron N4050", "Inspiron N4030", "Inspiron N4020", "Inspiron N4010", "Inspiron N311z", "Inspiron N301Z", "Inspiron N3010", "Inspiron M5110", "Inspiron M5040", "Inspiron M5030", "Inspiron M5010", "Inspiron M4040", "Inspiron M4010", "Inspiron M301Z", "Inspiron 9300", "Inspiron 910", "Inspiron 8600", "Inspiron 7791 2n1", "Inspiron 7790 AIO", "Inspiron 7786", "Inspiron 7777 AIO", "Inspiron 7773", "Inspiron 7737", "Inspiron 7720", "Inspiron 7591 2n1", "Inspiron 7591", "Inspiron 7590 2n1", "Inspiron 7590", "Inspiron 7586", "Inspiron 7580", "Inspiron 7577", "Inspiron 7573", "Inspiron 7572", "Inspiron 7570", "Inspiron 7566", "Inspiron 7560", "Inspiron 7559", "Inspiron 7558", "Inspiron 7557", "Inspiron 7548", "Inspiron 7547", "Inspiron 7537", "Inspiron 7520", "Inspiron 7501", "Inspiron 7500 2n1 Silver", "Inspiron 7500 2n1 Black", "Inspiron 7500", "Inspiron 7490", "Inspiron 7472", "Inspiron 7466", "Inspiron 7460", "Inspiron 7447", "Inspiron 7437", "Inspiron 7420", "Inspiron 7405 2n1", "Inspiron 7400", "Inspiron 7391 2n1", "Inspiron 7391", "Inspiron 7390 2n1", "Inspiron 7386", "Inspiron 7380", "Inspiron 7375", "Inspiron 7373", "Inspiron 7370", "Inspiron 7352", "Inspiron 7348", "Inspiron 7347", "Inspiron 7300 2n1", "Inspiron 7300", "Inspiron 700m", "Inspiron 660s", "Inspiron 660", "Inspiron 620s", "Inspiron 620", "Inspiron 6000", "Inspiron 580s", "Inspiron 580", "Inspiron 5775", "Inspiron 5770", "Inspiron 5767", "Inspiron 5765", "Inspiron 5759", "Inspiron 5758on", "Inspiron 5758o", "Inspiron 5758", "Inspiron 5755", "Inspiron 5749", "Inspiron 5748", "Inspiron 5737", "Inspiron 5735", "Inspiron 5721", "Inspiron 5720", "Inspiron 570", "Inspiron 5680", "Inspiron 5676", "Inspiron 5675", "Inspiron 560s", "Inspiron 560", "Inspiron 5598", "Inspiron 5594", "Inspiron 5593", "Inspiron 5591 2n1", "Inspiron 5590", "Inspiron 5585", "Inspiron 5584", "Inspiron 5583", "Inspiron 5582", "Inspiron 5580", "Inspiron 5579", "Inspiron 5577", "Inspiron 5576", "Inspiron 5575", "Inspiron 5570", "Inspiron 5567", "Inspiron 5566", "Inspiron 5565", "Inspiron 5559", "Inspiron 5558on", "Inspiron 5558o", "Inspiron 5558", "Inspiron 5557", "Inspiron 5555", "Inspiron 5552", "Inspiron 5551", "Inspiron 5548", "Inspiron 5547", "Inspiron 5545", "Inspiron 5543", "Inspiron 5542", "Inspiron 5537", "Inspiron 5535", "Inspiron 5525", "Inspiron 5523", "Inspiron 5521", "Inspiron 5520", "Inspiron 5498", "Inspiron 5494", "Inspiron 5493", "Inspiron 5491 AIO", "Inspiron 5491 2n1", "Inspiron 5490 AIO", "Inspiron 5490", "Inspiron 5488 AIO", "Inspiron 5488", "Inspiron 5485 2n1", "Inspiron 5485", "Inspiron 5482", "Inspiron 5481", "Inspiron 5480", "Inspiron 5477 AIO", "Inspiron 546S", "Inspiron 5468", "Inspiron 546", "Inspiron 545s", "Inspiron 5459", "Inspiron 5458on", "Inspiron 5458o", "Inspiron 5458", "Inspiron 5457", "Inspiron 5455", "Inspiron 5452", "Inspiron 5451", "Inspiron 545", "Inspiron 5448", "Inspiron 5447", "Inspiron 5445", "Inspiron 5443", "Inspiron 5442", "Inspiron 5439", "Inspiron 5437", "Inspiron 5435", "Inspiron 5425", "Inspiron 5423", "Inspiron 5421", "Inspiron 5420", "Inspiron 5400 2n1", "Inspiron 5391", "Inspiron 5390", "Inspiron 537s", "Inspiron 5379", "Inspiron 5370", "Inspiron 537", "Inspiron 535s", "Inspiron 535", "Inspiron 5323", "Inspiron 531s", "Inspiron 531", "Inspiron 530sb", "Inspiron 530s", "Inspiron 530 Mini Tower", "Inspiron 530", "Inspiron 5280", "Inspiron 519", "Inspiron 518", "Inspiron 5150", "Inspiron 410", "Inspiron 400", "Inspiron 3881", "Inspiron 3880", "Inspiron 3847", "Inspiron 3793", "Inspiron 3790", "Inspiron 3785", "Inspiron 3782", "Inspiron 3781", "Inspiron 3780", "Inspiron 3737", "Inspiron 3721", "Inspiron 3671", "Inspiron 3670", "Inspiron 3668", "Inspiron 3662", "Inspiron 3656", "Inspiron 3655", "Inspiron 3650", "Inspiron 3647", "Inspiron 3646", "Inspiron 3595", "Inspiron 3593", "Inspiron 3590", "Inspiron 3585", "Inspiron 3584", "Inspiron 3583", "Inspiron 3582", "Inspiron 3581", "Inspiron 3580", "Inspiron 3576", "Inspiron 3568", "Inspiron 3559", "Inspiron 3558", "Inspiron 3551", "Inspiron 3543", "Inspiron 3542", "Inspiron 3541", "Inspiron 3537", "Inspiron 3531", "Inspiron 3521", "Inspiron 3520", "Inspiron 3493", "Inspiron 3490", "Inspiron 3482", "Inspiron 3481", "Inspiron 3480 AIO", "Inspiron 3480", "Inspiron 3477 AIO", "Inspiron 3476", "Inspiron 3475 AIO", "Inspiron 3472", "Inspiron 3471", "Inspiron 3470", "Inspiron 3468", "Inspiron 3464 AIO", "Inspiron 3459", "Inspiron 3458o", "Inspiron 3458", "Inspiron 3451", "Inspiron 3443", "Inspiron 3442", "Inspiron 3441", "Inspiron 3437", "Inspiron 3421", "Inspiron 3420", "Inspiron 3290 AIO", "Inspiron 3280 AIO", "Inspiron 3277 AIO", "Inspiron 3275 AIO", "Inspiron 3268", "Inspiron 3264 AIO", "Inspiron 3252", "Inspiron 3250", "Inspiron 3195", "Inspiron 3185", "Inspiron 3180", "Inspiron 3179", "Inspiron 3169", "Inspiron 3138", "Inspiron 3137", "Inspiron 3135", "Inspiron 3064 AIO", "Inspiron 3050", "Inspiron 27 7775", "Inspiron 24-7459", "Inspiron 24-5459", "Inspiron 24-3459", "Inspiron 24-3455", "Inspiron 24-3452", "Inspiron 24 5475", "Inspiron 2350", "Inspiron 23 Model 5348O/", "Inspiron 23 Model 5348K/", "Inspiron 23 Model 53483/", "Inspiron 23 Model 5348", "Inspiron 22-3265", "Inspiron 22-3263", "Inspiron 2200", "Inspiron 20-3059", "Inspiron 20-3052", "Inspiron 20 Model 3048Z/", "Inspiron 20 Model 3048Y/", "Inspiron 20 Model 3048T/", "Inspiron 20 Model 3048R/", "Inspiron 20 Model 3048Q/", "Inspiron 20 Model 3048K/", "Inspiron 20 Model 3048I/", "Inspiron 20 Model 3048C/", "Inspiron 20 Model 3048B/", "Inspiron 20 Model 30488/", "Inspiron 20 Model 30487/", "Inspiron 20 Model 3048", "Inspiron 20 Model 3045", "Inspiron 20 Model 3043", "Inspiron 17-7779", "Inspiron 17-7778", "Inspiron 1764", "Inspiron 1750", "Inspiron 1721", "Inspiron 1720", "Inspiron 17 7000 Series 7746", "Inspiron 15-7579", "Inspiron 15-7569", "Inspiron 15-7568", "Inspiron 1570", "Inspiron 1564", "Inspiron 15-5578", "Inspiron 15-5568", "Inspiron 1546", "Inspiron 1545", "Inspiron 15-3573", "Inspiron 15-3567", "Inspiron 15-3565", "Inspiron 15-3555", "Inspiron 15-3552", "Inspiron 1526", "Inspiron 1525", "Inspiron 1521", "Inspiron 1520", "Inspiron 1501", "Inspiron 15 7000 Gaming", "Inspiron 15 5501", "Inspiron 1470", "Inspiron 1464", "Inspiron 1440", "Inspiron 14-3473", "Inspiron 14-3467", "Inspiron 14-3465", "Inspiron 14-3462", "Inspiron 14-3452", "Inspiron 1428", "Inspiron 1427", "Inspiron 1425", "Inspiron 1420", "Inspiron 1410", "Inspiron 14 7000 Series 7437", "Inspiron 14 7000 Gaming", "Inspiron 14 5408", "Inspiron 14 5401", "Inspiron 13-7378", "Inspiron 13-7368", "Inspiron 13-7359", "Inspiron 13-7353", "Inspiron 1370", "Inspiron 13-5378", "Inspiron 13-5368", "Inspiron 1320", "Inspiron 1318", "Inspiron 13 5300", "Inspiron 1210", "Inspiron 1150", "Inspiron 11-3168", "Inspiron 11-3164", "Inspiron 11-3162", "Inspiron 11-3158", "Inspiron 11-3157", "Inspiron 11-3153", "Inspiron 11-3152", "Inspiron 1122", "Inspiron 1121", "Inspiron 1120", "Inspiron 1110", "Inspiron 11 - 3148", "Inspiron 11 - 3147", "Inspiron 1090", "Inspiron 1018", "Inspiron 1012", "Inspiron 1011", "Inspiron 1010", "Image Server", "HD NVR", "Google Search Appliance", "G7 7790", "G7 7700", "G7 7590", "G7 7588", "G7 7587", "G7 7500", "G5 5779", "G5 5590", "G5 5587", "G5 5579", "G5 5505", "G5 5500", "G5 5090", "G5 5000", "G3 3779", "G3 3590", "G3 3579", "G3 3500", "FX09_", "FS12-TY", "Embedded Box PC 5000", "Embedded Box PC 3000", "Edge Gateway 5100", "Edge Gateway 5000", "Edge Gateway 3003", "Edge Gateway 3002", "Edge Gateway 3001", "dt_ex", "DQ77MK", "DQ67SW", "Dimension XPSGEN5", "Dimension XPS", "Dimension E521", "Dimension C521", "Dimension 9100", "Dimension 8400", "Dimension 8300", "Dimension 8250", "Dimension 5100", "Dimension 5000", "Dimension 4700c", "Dimension 4700", "Dimension 4600i", "Dimension 4600C", "Dimension 4600", "Dimension 4550", "Dimension 3000", "Dimension 2400", "Dimension 2350", "Dimension 2010", "DELLOSE", "Dell XPS720", "Dell XPS710", "Dell XPS430", "Dell XPS420", "Dell XC730xd-24", "Dell XC630-10", "Dell System XPS L702X", "Dell System XPS L502X", "Dell System XPS L322X", "Dell System XPS L321X", "Dell System XPS 15Z", "Dell System Vostro 5560", "Dell System Vostro 5460", "Dell System Vostro 3750", "Dell System Vostro 3460", "Dell System Vostro 3450", "Dell System Vostro 3360", "Dell System Inspiron N7110", "Dell System Inspiron N4120", "Dell System Inspiron N411Z", "Dell System Inspiron N4110", "Dell System Inspiron M4110", "Dell System Inspiron 7720", "Dell System Inspiron 7420", "Dell System Inspiron 5720", "Dell System Inspiron 5420", "Dell System Inspiron 5323", "Dell System Inspiron 17 7000 Series 7737", "Dell System Inspiron 15 7000 Series 7537", "Dell System Inspiron 14 7000 Series 7437", "Dell Storage NX430", "Dell Storage NX3330", "Dell Storage NX3230", "Dell Precision M3800", "Dell EMC NX440", "Dell EMC NX3340", "Dell EMC NX3240", "Dell DXP061", "Dell DXP051", "Dell DXG061", "Dell DXG051", "Dell DXC061", "Dell DXC051", "Dell DV051", "Dell DR4000", "Dell DM061", "Dell DM051", "Dell DL4300", "DELL Dimension 1000", "Dell DE051", "Dell DC051", "Dell 500", "DCS2210", "DCS CS24-NV7", "CS24-TY", "CS24-SC", "CS23-SH", "CL09_", "ChengMing 3990-China HDD Protection", "ChengMing 3990", "ChengMing 3988", "ChengMing 3980", "ChengMing 3977", "ChengMing 3967", "CBX3_", "C6100", "BUSINESSline", "BNPPT5500_1_", "BNPPT5400_2_", "BNPPE5400_1_", "BNPPE4300_1_", "BNPP780_1_", "BNPP760_1_", "BNPP755_1_", "BNPP745_1_", "AXIS S9101", "AXIS S1116 RACKED", "AXIS S1016 MKII", "Aurora-R4", "Aurora-R3", "Aurora-R2", "Aurora", "ASM201", "ASM200", "ASM100", "Area 51", "Arcserve Appliance 9024", "Arcada", "ALIENWRE", "Alienware X51 R3", "Alienware X51 R2", "Alienware X51", "Alienware m17 R3", "Alienware m17 R2", "Alienware m17", "Alienware m15 R3", "Alienware m15 R2", "Alienware m15", "Alienware Aurora Ryzen Edition", "Alienware Aurora R9", "Alienware Aurora R8", "Alienware Aurora R7", "Alienware Aurora R6", "Alienware Aurora R5", "Alienware Aurora R11", "Alienware Area-51m R2", "Alienware Area-51m", "Alienware Area-51 R7", "Alienware Area-51 R6", "Alienware Area-51 R5", "Alienware Area-51 R4", "Alienware Area-51 R3", "Alienware Area-51 R2", "Alienware 18", "Alienware 17 R5", "Alienware 17 R4", "Alienware 17 R3", "Alienware 17 R2", "Alienware 17", "Alienware 15 R4", "Alienware 15 R3", "Alienware 15 R2", "Alienware 15", "Alienware 14", "Alienware 13 R3", "Alienware 13 R2", "Alienware 13", "Adamo XPS", "Adamo 13", "A7448002", "8807DE1", "7820 Tower", "7517C1U", "7075K7G", "7033H45", "7033A2U", "7033A1G", "627793P", "6069Y4A", "5864C24", "5498B73", "4MN RM Workstation", "4524BE7", "4518AD9", "4384WSE", "4004H1U", "4004G7U", "4004C1U", "37722FP", "36602G2", "35983N9", "3578C8S", "3574Z7S", "3493ENG", "3493AZG", "3484J7G", "3484HPU", "3414DJU", "3396C4G", "3395AT9", "3388C1Y", "3306G3U", "3306G2U", "3306G1U", "3306A1U", "3264P3S", "3264C87", "32641Z6", "3238BT9", "3238AU2", "3237CU6", "3237A1U", "3227BR3", "3227A2U", "32275C7", "32273N8", "32094H6", "32091N7", "3157D2J", "3134B8U", "2MN RM Workstation", "2992E5U", "2992E3U", "2988E2U", "2929AZ6", "2929A77", "29292D7", "2349NZ8", "23426QU", "2306CTO", "2124AAP", "2122ABP", "2122AAP", "2121D5U", "1761E4U", "1578G7P", "0967B5U", "0967B5S", "0967A1S", "0958B2U", "05695B5"} + +var bios_version = []string{"0.0.0", "0.0.17", "0.0.18", "0.0.20", "0.0.35", "0.0.36", "0.0.37", "0.0.5", "0.0.6", "0.0.60", "0.0.7", "0.0.8", "0.0.9", "0.1.0", "0.1.1", "0.1.10", "0.1.11", "0.1.12", "0.1.13", "0.1.19", "0.1.2", "0.1.20", "0.1.24", "0.1.25", "0.1.28", "0.1.3", "0.1.30", "0.1.31", "0.1.4", "0.1.5", "0.1.6", "0.1.7", "0.1.8", "0.1.9", "0.10.20", "0.10.21", "0.12.22", "0.13.24", "0.14.24", "0.14.25", "0.14.26", "0.15.25", "0.17.27", "0.2.0", "0.2.1", "0.2.10", "0.2.11", "0.2.12", "0.2.13", "0.2.14", "0.2.15", "0.2.16", "0.2.17", "0.2.18", "0.2.2", "0.2.20", "0.2.3", "0.2.4", "0.2.49", "0.2.5", "0.2.6", "0.2.7", "0.2.8", "0.2.9", "0.3.0", "0.3.1", "0.3.10", "0.3.11", "0.3.12", "0.3.13", "0.3.16", "0.3.2", "0.3.3", "0.3.4", "0.3.5", "0.3.6", "0.3.7", "0.3.8", "0.3.9", "0.35.34", "0.4.0", "0.4.1", "0.4.10", "0.4.11", "0.4.12", "0.4.13", "0.4.14", "0.4.15", "0.4.17", "0.4.2", "0.4.21", "0.4.22", "0.4.23", "0.4.25", "0.4.27", "0.4.29", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.98", "0.5.0", "0.5.1", "0.5.2", "0.5.22", "0.5.4", "0.5.5", "0.5.6", "0.5.7", "0.5.98", "0.56.17", "0.6.0", "0.6.01", "0.6.1", "0.6.13", "0.6.2", "0.6.21", "0.6.3", "0.6.4", "0.7.0", "0.7.2", "0.7.26", "0.7.3", "0.7.4", "0.7.53", "0.8.17", "0.8.2", "0.9.17", "0.9.2", "00.01.09", "00.01.23", "00.05.00", "01.00.00", "01.00.01", "01.00.02", "01.00.03", "01.00.04", "01.00.05", "01.00.06", "01.00.07", "01.00.08", "01.00.09", "01.00.10", "01.00.12", "01.00.13", "01.00.14", "01.00.15", "01.00.16", "01.00.17", "01.00.19", "01.00.21", "01.00.22", "01.00.23", "01.00.24", "01.01.00", "01.01.01", "01.01.05", "01.01.06", "01.01.09", "01.01.15", "01.01.19", "01.02.00", "01.02.10", "01.03.00", "01.03.02", "01.04.00", "01.04.05", "01.05.00", "01.05.01", "01.05.03", "01.06.00", "01.06.03", "01.06.06", "01.07.00", "01.07.03", "01.08.00", "01.08.03", "01.09.00", "01.10.00", "01.11.01", "01.11.02", "01.11.06", "01.12.00", "01.13.00", "01.13.02", "1.0.0", "1.0.0.0", "1.0.1", "1.0.10", "1.0.11", "1.0.12", "1.0.13", "1.0.14", "1.0.15", "1.0.16", "1.0.17", "1.0.18", "1.0.19", "1.0.2", "1.0.20", "1.0.21", "1.0.22", "1.0.24", "1.0.26", "1.0.28", "1.0.29", "1.0.3", "1.0.4", "1.0.5", "1.0.6", "1.0.7", "1.0.8", "1.0.9", "1.00.02", "1.00.25", "1.00.26", "1.05.04", "1.06.03", "1.1.0", "1.1.1", "1.1.10", "1.1.11", "1.1.12", "1.1.13", "1.1.14", "1.1.15", "1.1.16", "1.1.17", "1.1.2", "1.1.20", "1.1.23", "1.1.25", "1.1.26", "1.1.27", "1.1.29", "1.1.3", "1.1.31", "1.1.32", "1.1.33", "1.1.34", "1.1.4", "1.1.5", "1.1.6", "1.1.7", "1.1.8", "1.1.9", "1.10.0", "1.10.1", "1.10.2", "1.10.2 [GlobalMed 1.0.0]", "1.10.3", "1.10.4", "1.10.5", "1.10.6", "1.10.7", "1.10.8", "1.11.0", "1.11.0 [AQ 1.0.0]", "1.11.1", "1.11.2", "1.11.3", "1.11.4", "1.12.0", "1.12.1", "1.12.2", "1.12.3", "1.12.4", "1.12.6", "1.13.0", "1.13.1", "1.13.2", "1.13.3", "1.13.4", "1.13.5", "1.13.6", "1.14.0", "1.14.1", "1.14.2", "1.14.3", "1.14.4", "1.14.5", "1.15.0", "1.15.1", "1.15.2", "1.15.3", "1.15.4", "1.15.5", "1.16.0", "1.16.1", "1.16.2", "1.16.3", "1.16.4", "1.16.5", "1.17.0", "1.17.1", "1.17.3", "1.17.4", "1.17.5", "1.17.7", "1.18.0", "1.18.1", "1.18.2", "1.18.5", "1.18.6", "1.19.0", "1.19.1", "1.19.3", "1.19.4", "1.2.0", "1.2.1", "1.2.10", "1.2.11", "1.2.12", "1.2.13", "1.2.14", "1.2.15", "1.2.16", "1.2.17", "1.2.18", "1.2.19", "1.2.2", "1.2.21", "1.2.22", "1.2.22 [GlobalMed 1.0.0]", "1.2.23", "1.2.25", "1.2.26", "1.2.29", "1.2.3", "1.2.4", "1.2.5", "1.2.6", "1.2.7", "1.2.71", "1.2.8", "1.2.9", "1.20.0", "1.20.3", "1.20.4", "1.21.0", "1.21.1", "1.21.4", "1.21.6", "1.22.0", "1.22.3", "1.22.8", "1.23.0", "1.23.3", "1.24.0", "1.24.0 [BORMANN 1.0.0]", "1.24.0[TUV 1.0.0]", "1.25.0", "1.25.1", "1.26.0", "1.27.0", "1.27.1", "1.28.0", "1.28.2", "1.29.0", "1.3.0", "1.3.1", "1.3.10", "1.3.11", "1.3.12", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.4.0", "1.4.1", "1.4.10", "1.4.11", "1.4.12", "1.4.13", "1.4.14", "1.4.15", "1.4.17", "1.4.18", "1.4.2", "1.4.3", "1.4.4", "1.4.5", "1.4.6", "1.4.7", "1.4.8", "1.4.9", "1.5.0", "1.5.0 [Zivelo 1.0.0]", "1.5.1", "1.5.10", "1.5.11", "1.5.12", "1.5.15", "1.5.17", "1.5.19", "1.5.2", "1.5.20", "1.5.21", "1.5.24", "1.5.3", "1.5.4", "1.5.5", "1.5.6", "1.5.7", "1.5.8", "1.5.9", "1.6.0", "1.6.1", "1.6.11", "1.6.12", "1.6.13", "1.6.2", "1.6.3", "1.6.4", "1.6.5", "1.6.6", "1.6.7", "1.6.9", "1.7.0", "1.7.1", "1.7.11", "1.7.14", "1.7.16", "1.7.2", "1.7.20", "1.7.3", "1.7.4", "1.7.5", "1.7.6", "1.7.7", "1.7.9", "1.8.0", "1.8.1", "1.8.2", "1.8.3", "1.8.4", "1.8.5", "1.8.6", "1.8.7", "1.8.9", "1.9.0", "1.9.1", "1.9.2", "1.9.3", "1.9.4", "1.9.5", "1.9.5 [Northrop Grumman 0.0.1]", "1.9.6", "1.9.7", "1.9.8", "1.9.9", "10.0.40219", "10.19.0", "11.0.61030", "12.0.21005", "15.0.4569.1506", "16.0.4266.1001", "2.0.0", "2.0.1", "2.0.10", "2.0.11", "2.0.12", "2.0.13", "2.0.14", "2.0.15", "2.0.16", "2.0.19", "2.0.2", "2.0.21", "2.0.22", "2.0.3", "2.0.4", "2.0.5", "2.0.6", "2.0.6", "2.0.7", "2.0.8", "2.0.8 [BNP PARIBAS]", "2.0.9", "2.1.0", "2.1.1", "2.1.10", "2.1.15", "2.1.2", "2.1.3", "2.1.4", "2.1.5", "2.1.6", "2.1.7", "2.1.8", "2.1.9", "2.1.9 [Embedded]", "2.10.0", "2.10.1", "2.10.2", "2.10.5", "2.11.0", "2.11.1", "2.11.2", "2.12.0", "2.12.1", "2.13.0", "2.13.1", "2.14.0", "2.14.1", "2.15.0", "2.2.0", "2.2.1", "2.2.10", "2.2.11", "2.2.11 [Hetzner 1.0.2]", "2.2.2", "2.2.3", "2.2.4", "2.2.5", "2.2.6", "2.2.7", "2.2.8", "2.2.9", "2.3.0", "2.3.1", "2.3.10", "2.3.12", "2.3.2", "2.3.3", "2.3.4", "2.3.5", "2.3.6", "2.3.8", "2.4.0", "2.4.1", "2.4.2", "2.4.3", "2.4.4", "2.4.5", "2.4.7", "2.4.8", "2.4.8 [Hetzner 1.0.2]", "2.5.0", "2.5.1", "2.5.2", "2.5.3", "2.5.4", "2.5.5", "2.5.6", "2.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6", "2.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4", "2.8.0", "2.8.1", "2.8.4", "2.9.0", "2.9.1", "25B", "2JKT31AUS", "2RKT54AUS", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.1.0", "3.1.2", "3.1.3", "3.1.4", "3.10.1", "3.11.0", "3.11.1", "3.2.0", "3.2.1", "3.2.2", "3.2.3", "3.2.4", "3.3.0", "3.3.10", "3.3.2", "3.3.5", "3.3.6", "3.3.7", "3.3.8", "3.4.0", "3.4.1", "3.5.0", "3.5.2", "3.6.0", "3.6.1", "3.7.0", "3.7.1", "3.8.0", "3.8.1", "3.8.3", "3.9.0", "3.9.1", "4.0.1", "4.0.11", "4.0.13", "4.0.3", "4.0.4", "4.0.7", "4.0.9", "4.1.0", "4.1.1", "4.1.2", "4.1.3", "4.1.5", "4.1.6", "4.1.7", "4.2.0", "4.2.1", "4.3.0", "4.4.0", "4.6.5", "51.25.0", "5CKT46AUS", "5CKT54AUS", "5CKT61AUS", "5CKT63AUS", "5CKT68AUS", "5CKT69AUS", "5CKT77AUS", "5HKT50AUS", "5JKT45AUS", "5JKT50AUS", "5JKT51AUS", "5JKT54AUS", "5JKT65AUS", "6.0.7", "6.1.0", "6.2.3", "6.3.0", "6.4.0", "6.5.0", "6.6.0", "60KT44AUS", "61.2.4", "6IET65WW (1.25 )", "6IET72WW (1.32 )", "6IET74WW (1.34 )", "6IET85WW (1.45 )", "6MET87WW (1.47 )", "6QET70WW (1.40 )", "7UET94WW (3.24 )", "8.0.0", "8.3.1", "80ET61WW (2.01 )", "83.5.0", "83ET63WW (1.33 )", "83ET67WW (1.37 )", "83ET76WW (1.46 )", "83ET82WW (1.52 )", "88.0.12", "88.0.17", "88.19.0", "88.19.1", "88.2.22", "88.53.0", "89.06.01", "89.1.3", "89.2.1", "89.2.3", "89.3.3", "89.5.22", "89.7.49", "89.7.50", "89.7.51", "89.99.49", "8CET51WW (1.31 )", "8DET50WW (1.20 )", "8DET76WW (1.46 )", "8GET46WW (1.23 )", "97.02.23", "97.02.43", "97.4.5 [DVT2.1]", "98.0.8_min33W", "98.00.00[W00]", "98.06.04", "98.06.04[T80_TouchScreen]", "98.1.1[BB:1.1.10 CBIR-202]", "98.1.24", "98.10.1", "98.10.1[W83]", "98.11.1", "98.11.1[LB:I02 BB:1.11.1 CBIR-264]", "98.11.2[[BB:1.11.2 CBIR-228.0]]", "98.12.8[W128]", "98.13.1", "98.13.2[BITS373760_BITS394172]", "98.14.6[W132]", "98.15.1[CBIR-95]", "98.15.10[V10]", "98.15.5", "98.2.1", "98.2.1[LB:I01 BB:1.2.3]", "98.2.6 [Test]", "98.2.8[[LB:I03 BB:1.2.8 CBIR-78.0]]", "98.20.20", "98.20.20[W20]", "98.20.27", "98.3.0", "98.3.12", "98.3.5[LB:I08 BB:1.3.3]", "98.4.1", "98.4.1[LB:I01]", "98.4.1[W_BIOS_A_Can_1.1.1_V1907]", "98.4.2", "98.5.0", "98.5.0[W_BIOS_A_Can_1.1.1_V1907]", "98.7.0", "98.8.0[LB:I01]", "98.8.2", "98.8.4", "98.8.5[[LB:A00 BB:1.8.5 CBIR-290.0]]", "98.9.1", "98.9.1[W119]", "98.9.3", "98.9.4[Based on 1.9.4 plus TPM over SPI bus set to 30MHz]", "99.0.4[X00_T01]", "99.01.13", "99.06.07[Dongle test]", "99.1.0[X02_T20]", "99.1.1 [T356]", "99.1.30", "99.11.09[V7]", "99.11.1[OA]", "99.115.2 [Test]", "99.18.80", "99.2.0 [Test]", "99.2.30", "99.2.30[W30]", "99.2.6[DVT1]", "99.21.1 [Test]", "99.3.14", "99.3.6", "99.4.11[DVT2]", "99.4.5 [Test]", "99.4.5 DVT2", "99.4.7", "99.4.7 [DVT2]", "99.4.8", "99.83.1[McAfee NVMe Test BIOS]", "99.98.5", "99.99.17", "99.99.2", "99.99.30", "9HKT37AUS", "9HKT39AUS", "9HKT41AUS", "9HKT43AUS", "9HKT45AUS", "9HKT46AUS", "9HKT47AUS", "9HKT50AUS", "9HKT53AUS", "9HKT54AUS", "9HKT54TUS", "9HKT58AUS", "9OKT21AUS", "9PKT27AUS", "9QKT29AUS", "9QKT31AUS", "9QKT34AUS", "9QKT37AUS", "9QKT39AUS", "9SKT33AUS", "9SKT37AUS", "9SKT39AUS", "9SKT40AUS", "9SKT41AUS", "9SKT53AUS", "9SKT54AUS", "9SKT56AUS", "9SKT58AUS", "9SKT59AUS", "9SKT61AUS", "9SKT63AUS", "9SKT65AUS", "9SKT69AUS", "9SKT70AUS", "9SKT71AUS", "9SKT73AUS", "9SKT75AUS", "9SKT76AUS", "9SKT77AUS", "9SKT79AUS", "9SKT81AUS", "9SKT86AUS", "9SKT95AUS", "9SKT97AUS", "9SKT98AUS", "9SKT99AUS", "9SKT9AAUS", "9SKT9BAUS", "9SKT9CAUS", "9XKT23AUS", "9ZKT33AUS", "A00", "A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A08.Test", "A09", "A0KT47AUS", "A10", "A10AHCI", "A11", "A12", "A13", "A13_1_CFI", "A14", "A14+", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", "A26", "A27", "A28", "A29", "A30", "A31", "A32", "A33", "A34", "A38", "B00", "B03", "C53", "C54", "C65", "C99Q3B23", "C99Q3B25", "E00", "E01", "E02", "E03", "E04", "E06", "E07", "E08", "E09", "E11", "E12", "E16", "E29", "��e�t", "F1KT19AUS", "F1KT21AUS", "F1KT22AUS", "F1KT25AUS", "F1KT27AUS", "F1KT39AUS", "F1KT44AUS", "F1KT46AUS", "F1KT47AUS", "F1KT50AUS", "F1KT51AUS", "F1KT52AUS", "F1KT53AUS", "F1KT54AUS", "F1KT57AUS", "F1KT63AUS", "F1KT65AUS", "F1KT70AUS", "F1KT71AUS", "F1KT74AUS", "F23", "F4KT21AUS", "F4KT22AUS", "F4KT32AUS", "F4KT35AUS", "F4KT39AUS", "F4KT42AUS", "F4KT43AUS", "F4KT44AUS", "F4KT45AUS", "F4KT52AUS", "F6KT31AUS", "F6KT32AUS", "G1ET73WW (2.09 )", "G1ET93WW (2.53 )", "G1ET98WW (2.58 )", "G1ETB1WW (2.71 )", "G1ETC2WW (2.82 )", "G2ET97WW (2.57 )", "G2ETB7WW (2.77 )", "GCET92WW (2.52 )", "Google_Arcada.12200.41.0", "Google_Arcada.12200.48.0", "Google_Arcada.12200.58.0", "H0ET30WW (1.12 )", "H0ET90WW (2.50 )", "H1ET82BX(1.21)", "HEET34WW (1.15 )", "HEET42WW (1.23 )", "I01", "I03", "I05", "I07", "I09", "I10", "I20", "I28", "I32", "I36", "I59", "I70", "��k�t", "M10", "MKQ7710H.86A.0049.2012.0717.1955", "MKQ7710H.86A.0054.2012.1120.1444", "MKQ7710H.86A.0062.2013.0902.1328", "MKQ7710H.86A.0074.2018.1025.1727", "P4.10C", "P4.20A", "P�t", "Q25", "RIVE0", "S01", "S45_3A10", "S5400.86B.06.00.0028.081320082126", "S99_3A14", "S99C3B22", "S99C3B23", "S99Q3B15", "S99Q3B16", "SB4", "SC7", "SE2", "SG7", "SS01", "���t", "T04", "T07", "T15", "T19", "T23", "T29", "T42", "T80", "T83", "V1.1", "V2.7", "V3.5", "VirtualBox", "VMW71.00V.13989454.B64.1906190538", "VMW71.00V.7581552.B64.1801142334", "VMW71.00V.9318676.B64.1807270745", "W00", "��w�t", "X04", "X05", "X07", "X08T01", "X09", "X10T01", "X11", "X12", "X13", "X14", "X14T01", "X14T02", "X14T3", "X15", "X16", "X17", "X18", "X19", "X20", "X21", "X23", "X24", "X25", "X26", "X27", "X30", "X31", "X32", "X33", "X34", "X35", "X36", "X40", "X41", "X56", "Y23", "Z07", "Z13", "Z99"} + +var operating_system = []string{"Windows JG Seven [32-bit OS][System Locale pl-PL]", "Windows JG Seven [64-bit OS][System Locale pl-PL]", "Windows Seven Ice Extreme v1 [32 bit OS][System Locale it-IT]", "Windows Seven Ice Extreme v1 [64 bit OS][System Locale it-IT]", "[64-bit OS][System Locale en-US]", "/-/OTA/-/ WindowsRD v2 7 Deluxe [32 bits OS][System Locale es-ES]", "[ OS][System Locale ]", "[ OS][System Locale en-US]", "[ OS][System Locale pt-BR]", "[32-bit OS][System Locale en-US]", "[64 bits OS][System Locale es-ES]", "[64 bits OS][System Locale fr-FR]", "[64 bits OS][System Locale pt-BR]", "[64 ビット OS][System Locale ja-JP]", "[64 位 OS][System Locale zh-CN]", "[64-bit OS][System Locale bg-BG]", "[64-bit OS][System Locale de-DE]", "[64-bit OS][System Locale en-GB]", "[64-bit OS][System Locale en-US]", "[64-bit OS][System Locale zh-CN]", "[64-bit OS][System Locale zh-TW]", "[64-bitowy OS][System Locale pl-PL]", "[64-разрядная OS][System Locale ru-RU]", "„Microsoft“ „Windows 8.1“ su „Bing“[64-bit OS][System Locale en-US]", "„Microsoft“ Windows 10 Pro[64-bit OS][System Locale lt-LT]", "„Microsoft“ Windows 8.1 Enterprise[64-bit OS][System Locale en-US]", "„Microsoft“ Windows 8.1 Enterprise[64-bit OS][System Locale lt-LT]", "„Microsoft“ Windows 8.1 Pro[32-bit OS][System Locale en-US]", "„Microsoft“ Windows 8.1 Pro[64-bit OS][System Locale en-US]", "„Microsoft“ Windows 8.1 Pro[64-bit OS][System Locale lt-LT]", "„Microsoft“ Windows 8.1[64-bit OS][System Locale en-US]", "„Microsoft“ Windows 8.1[64-bit OS][System Locale lt-LT]", "„Microsoft“ Windows 8.1[64-bit OS][System Locale pl-PL]", "„Microsoft“ Windows 8.1[64-bitowy OS][System Locale pl-PL]", "„Microsoft“ Windows 8[64-bit OS][System Locale en-US]", "80AD000080AD", "AmbalaGurpreet Windows 7 X4 [32-bit OS][System Locale en-US]", "Computer Media Windows 7 Lite by Computer Media [32-bit OS][System Locale en-US]", "Computer Worms Team Windows 7 Aero Blue Lite Edition 2016 [32-bit OS][System Locale en-US]", "DiLshad Sys Windows 8.1 ubantu Edition[64-bit OS][System Locale en-US]", "dio Ltd.", "HACKER30 Windows 10 Pro light edition[64 bits OS][System Locale fr-FR]", "Inc.", "JARVHACK Windows 7 Ultimate All Rock [64 bits OS][System Locale es-ES]", "Microsoft [64-bit OS][System Locale en-US]", "Microsoft [32 bits OS][System Locale pt-BR]", "Microsoft [64 bit OS][System Locale tr-TR]", "Microsoft [64 bites OS][System Locale hu-HU]", "Microsoft [64 bits OS][System Locale es-ES]", "Microsoft [64 bits OS][System Locale fr-FR]", "Microsoft [64 bits OS][System Locale pt-BR]", "Microsoft [64 位 OS][System Locale zh-CN]", "Microsoft [64-bit OS][System Locale ar-SA]", "Microsoft [64-bit OS][System Locale en-GB]", "Microsoft [64-bit OS][System Locale en-US]", "Microsoft [64-bit OS][System Locale he-IL]", "Microsoft [64-bitowy OS][System Locale pl-PL]", "Microsoft [32-bit OS][System Locale en-US]", "Microsoft [64-bit OS][System Locale el-GR]", "Microsoft [64-bit OS][System Locale en-US]", "Microsoft [32-bit OS][System Locale en-US]", "Microsoft [64 bit OS][System Locale tr-TR]", "Microsoft [64 bits OS][System Locale es-ES]", "Microsoft [64 bits OS][System Locale pt-BR]", "Microsoft [64-bit OS][System Locale en-GB]", "Microsoft [64-bit OS][System Locale en-US]", "Microsoft Bing ile Windows 8.1 Single Language[64 bit OS][System Locale tr-TR]", "Microsoft Black 7 VIII [64-bit OS][System Locale en-US]", "Microsoft Blue Alienware edition [64-bit OS][System Locale en-US]", "Microsoft Media Center içeren Windows 8.1 Pro[64 bit OS][System Locale tr-TR]", "Microsoft Media Center içeren Windows 8.1 Pro[64-bit OS][System Locale tr-TR]", "Microsoft Media Centert tartalmazó Windows 8.1 Pro[64 bites OS][System Locale hu-HU]", "Microsoft Minimal 10 TC&AXE Build 2019[64-bit OS][System Locale en-US]", "Microsoft TC&AXE Build 2019[64-bit OS][System Locale en-US]", "Microsoft Version d’évaluation de Windows 10 Entreprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Business [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Business Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Business N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Business[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Business[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Business[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Business[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Business[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Business[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Business[64 bitar OS][System Locale nb-NO]", "Microsoft Windows 10 Business[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Business[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Business[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Business[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Business[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Business[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Business[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Business[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Business[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Business[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Business[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Business[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Business[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Business[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Business[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Business[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Business[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Business[64-Bit OS][System Locale en-US]", "Microsoft Windows 10 Business[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Business[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Business[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Business[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Business[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Business[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Business[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Business[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Business[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Business[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Business[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Business[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Business[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Business[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Business[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Business[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Business[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Business[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Business[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Business[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Business[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Business[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Business[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Business[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Business[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 CRUX[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Education [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Education [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Éducation [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Education in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Education Insider Preview[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Éducation Insider Preview[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Education Insider Preview[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Education Insider Preview[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Education Insider Preview[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Education Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Education Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Education Insider Preview[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Education N[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Education N[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Education N[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Education N[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Education N[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Education N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Éducation N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Education N[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Education N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Education N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Education N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Education N[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Education N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Education N[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation N[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Education N[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Education N[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Education N[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Education N[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Education N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Education N[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Education[ OS][System Locale en-US]", "Microsoft Windows 10 Education[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Education[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Education[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Education[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Education[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Éducation[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Education[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Education[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Education[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Education[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Education[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Education[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Education[32-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Education[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Education[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Education[64 bit OS][System Locale de-DE]", "Microsoft Windows 10 Education[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Education[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Education[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Education[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Education[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Education[64 bitar OS][System Locale en-GB]", "Microsoft Windows 10 Education[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Education[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Education[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Education[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Education[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Education[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Education[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Education[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Education[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Education[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Education[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Education[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Education[64 bits OS][System Locale sv-SE]", "Microsoft Windows 10 Education[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Education[64 ビット OS][System Locale en-GB]", "Microsoft Windows 10 Education[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Education[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Education[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Education[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Education[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Education[64-bit OS][System Locale ar-QA]", "Microsoft Windows 10 Education[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Education[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Education[64-bit OS][System Locale ca-ES]", "Microsoft Windows 10 Education[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Education[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Education[64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Education[64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Education[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Education[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Education[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Education[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Education[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Education[64-Bit OS][System Locale en-US]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Education[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Education[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Education[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Education[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Education[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Education[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Education[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Education[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Education[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Education[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Education[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Education[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Education[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Education[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Education[64-bit OS][System Locale lt-lt]", "Microsoft Windows 10 Education[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Education[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Education[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Education[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Education[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Education[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Education[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Education[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Education[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Education[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Education[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Education[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Education[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Education[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Education[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Education[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Education[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Education[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Education[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Education[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Education[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Education[64-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Education[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Education[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Education[64-bittinen OS][System Locale de-DE]", "Microsoft Windows 10 Education[64-bittinen OS][System Locale en-GB]", "Microsoft Windows 10 Education[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Education[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Education[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Education[64비트 OS][System Locale en-GB]", "Microsoft Windows 10 Education[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Education[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Education[64비트 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise [64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2015 LTSB Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2015 LTSB[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise 2015 LTSB[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2015 LTSB[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise 2015 LTSB[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise 2015 LTSB[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise 2015 LTSB[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise 2016 LTSB Evaluation[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2016 LTSB Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2016 LTSB[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise 2016 LTSB[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-Bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise 2016 LTSB[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise 2016 LTSB[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise 2016 LTSB[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise 2016 LTSB[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise 2016 LTSB[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise 2016 LTSB[64비트 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise Evaluation[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise Evaluation[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise Evaluation[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise Evaluation[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise Evaluation[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Evaluation[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise Evaluation[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Evaluation[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise for Virtual Desktops[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise G [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise G [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise G N [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Insider Preview[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Insider Preview[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise Insider Preview[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise Insider Preview[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise Insider Preview[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise Insider Preview[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise Insider Preview[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise Insider Preview[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise Insider Preview[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise Insider Preview[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise K 2015 LTSB[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise LTSC Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise LTSC Evaluation[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise LTSC Evaluation[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise LTSC Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise LTSC[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise LTSC[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64 bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise LTSC[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise LTSC[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise LTSC[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise LTSC[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise LTSC[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise LTSC[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise LTSC[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise LTSC[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Enterprise LTSC[64-Bit OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Enterprise LTSC[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise LTSC[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise LTSC[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise LTSC[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise LTSC[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Enterprise LTSC[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise LTSC[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise LTSC[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise N 2015 LTSB[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N 2015 LTSB[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N 2015 LTSB[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise N 2015 LTSB[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N 2015 LTSB[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N 2015 LTSB[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise N 2016 LTSB[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N 2016 LTSB[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise N 2016 LTSB[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise N Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N LTSC Evaluation[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N LTSC[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N LTSC[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N LTSC[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise N LTSC[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N LTSC[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise N LTSC[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise N LTSC[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N LTSC[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N LTSC[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise N LTSC[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise N LTSC[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise N[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise N[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise N[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise N[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale pt-br]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Enterprise N[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise N[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise N[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise N[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise N[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise N[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise N[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise[ OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[32 bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise[32 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise[32 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale he-IL]", "Microsoft Windows 10 Enterprise[32-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise[32-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise[32비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale it-it]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise[64 bit OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise[64 bitar OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 bitar OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64 bitar OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise[64 bites OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64 bites OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 bites OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale es-mx]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale pt-br]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise[64 ビット OS][System Locale zh-TW]", "Microsoft Windows 10 Enterprise[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale af-ZA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ar-JO]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ar-QA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Enterprise[64-Bit OS][System Locale bg-BG]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Enterprise[64-Bit OS][System Locale de-de]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale de-LU]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-IE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-419]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Enterprise[64-Bit OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale is-IS]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale mk-MK]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ms-MY]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale sv-FI]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 Enterprise[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Enterprise[64-biters OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Enterprise[64-biters OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale pl-PL]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale sk-SK]", "Microsoft Windows 10 Enterprise[64bitový OS][System Locale sv-SE]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale de-DE]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale fr-FR]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale pl-pl]", "Microsoft Windows 10 Enterprise[64-bitowy OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise[64-bittinen OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Enterprise[64-разрядная OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Enterprise[64비트 OS][System Locale en-GB]", "Microsoft Windows 10 Enterprise[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Enterprise[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Enterprise[64비트 OS][System Locale zh-CN]", "Microsoft Windows 10 Entreprise 2015 LTSB N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2015 LTSB[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2015 LTSB[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise 2015 LTSB[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2015 LTSB[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Entreprise 2015 LTSB[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2016 LTSB[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2016 LTSB[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Entreprise 2016 LTSB[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Entreprise 2016 LTSB[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise 2016 LTSB[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise 2016 LTSB[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2016 LTSB[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Entreprise 2016 LTSB[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise 2016 LTSB[64-bit OS][System Locale fr-MA]", "Microsoft Windows 10 Entreprise Insider Preview[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise LTSC[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise LTSC[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Entreprise LTSC[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise LTSC[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise LTSC[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise LTSC[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Entreprise N 2016 LTSB[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise N LTSC[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise N[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Entreprise N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale sv-SE]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Extreme Performance Edition[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Famille [64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Famille [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille en mode S[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille en mode S[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Insider Preview Langue unique[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Insider Preview[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Langue unique[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Langue unique[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Langue unique[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille N[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Unilingue [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Unilingue[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Unilingue[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[32-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Famille[64 bits OS][System Locale ar-SA]", "Microsoft Windows 10 Famille[64 bits OS][System Locale cs-CZ]", "Microsoft Windows 10 Famille[64 bits OS][System Locale da-DK]", "Microsoft Windows 10 Famille[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Famille[64 bits OS][System Locale el-GR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Famille[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Famille[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Famille[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale he-IL]", "Microsoft Windows 10 Famille[64 bits OS][System Locale hu-HU]", "Microsoft Windows 10 Famille[64 bits OS][System Locale it-IT]", "Microsoft Windows 10 Famille[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Famille[64 bits OS][System Locale nb-NO]", "Microsoft Windows 10 Famille[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Famille[64 bits OS][System Locale pl-PL]", "Microsoft Windows 10 Famille[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Famille[64 bits OS][System Locale ru-RU]", "Microsoft Windows 10 Famille[64 bits OS][System Locale tr-TR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Famille[64 bits OS][System Locale zh-TW]", "Microsoft Windows 10 Famille[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Famille[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Famille[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Famille[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Famille[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Famille[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 FPS edition[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home [32-bit OS][System Locale de-DE]", "Microsoft Windows 10 Home [32-bit OS][System Locale el-GR]", "Microsoft Windows 10 Home [32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home [32-bit OS][System Locale en-IE]", "Microsoft Windows 10 Home [32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home [32-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home [32-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home [32-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home [64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Home [64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home [64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home [64-bit OS][System Locale ca-ES]", "Microsoft Windows 10 Home [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Home [64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home [64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Home [64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Home [64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Home [64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-029]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-HK]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-IE]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-JM]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home [64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-419]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-PR]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-PY]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-US]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-UY]", "Microsoft Windows 10 Home [64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Home [64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Home [64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Home [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home [64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home [64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Home [64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Home [64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Home [64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home [64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Home [64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Home [64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Home [64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Home [64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Home [64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Home [64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home [64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Home [64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Home [64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Home [64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home [64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home [64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 10 Home [64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Home [64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home [64-bit OS][System Locale vi-VN]", "Microsoft Windows 10 Home [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home [64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Home China[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Home China[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home in S mode[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home in S mode[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Home in S mode[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home in S mode[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home in S mode[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home in S mode[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home in S mode[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Home in S mode[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home in S mode[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Home in S mode[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home in S mode[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Home in S mode[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Home in S mode[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home in S mode[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview Single Language[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home Insider Preview Single Language[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home Insider Preview Single Language[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home Insider Preview Single Language[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home Insider Preview Single Language[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home Insider Preview[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home Insider Preview[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home Insider Preview[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home Insider Preview[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home Insider Preview[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home Insider Preview[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home Insider Preview[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home Insider Preview[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home Insider Preview[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home Insider Preview[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home Insider Preview[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home Insider Preview[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Home Insider Preview[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Home Insider Preview[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home Insider Preview[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Home K[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Home K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Home N[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home N[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home N[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home N[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Home N[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home N[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Home N[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home N[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Home N[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home N[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home N[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Home N[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home N[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Home N[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Home N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home Single Language [32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language [32-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-ID]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-419]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-BO]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-US]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-UY]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale id-ID]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale vi-VN]", "Microsoft Windows 10 Home Single Language [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home Single Language in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language[ OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language[ OS][System Locale es-MX]", "Microsoft Windows 10 Home Single Language[ OS][System Locale pt-BR]", "Microsoft Windows 10 Home Single Language[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home Single Language[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home Single Language[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home Single Language[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home Single Language[32-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home Single Language[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home Single Language[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language[32-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home Single Language[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home Single Language[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home Single Language[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home Single Language[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home Single Language[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale ]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home Single Language[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Home Single Language[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ar-AE]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ar-KW]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ar-OM]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home Single Language[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-029]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-BZ]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-ID]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-JM]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale en-ZW]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-419]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-BO]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-NI]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-US]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-UY]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale fil-PH]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale hi-IN]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale id-ID]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale vi-VN]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 Home Single Language[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Home Single Language[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Home Single Language[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home Single Language[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Home Single Language[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Home Single Language[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Home[ OS][System Locale ]", "Microsoft Windows 10 Home[ OS][System Locale en-US]", "Microsoft Windows 10 Home[ OS][System Locale ja-JP]", "Microsoft Windows 10 Home[32 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home[32 bit OS][System Locale en-US]", "Microsoft Windows 10 Home[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home[32 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home[32 bits OS][System Locale en-GB]", "Microsoft Windows 10 Home[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Home[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home[32 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Home[32 ビット OS][System Locale en-US]", "Microsoft Windows 10 Home[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Home[32-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home[32-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home[32-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home[32-bit OS][System Locale el-GR]", "Microsoft Windows 10 Home[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Home[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Home[32-bit OS][System Locale es-ES]", "Microsoft Windows 10 Home[32-bit OS][System Locale es-MX]", "Microsoft Windows 10 Home[32-bit OS][System Locale et-EE]", "Microsoft Windows 10 Home[32-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home[32-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home[32-bit OS][System Locale it-IT]", "Microsoft Windows 10 Home[32-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home[32-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Home[32-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Home[32-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Home[32-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home[32-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Home[32-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Home[32-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home[32-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home[32-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Home[32-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Home[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[32-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Home[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home[32-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Home[32비트 OS][System Locale en-US]", "Microsoft Windows 10 Home[32비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64 bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home[64 bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home[64 bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64 bit OS][System Locale da-DK]", "Microsoft Windows 10 Home[64 bit OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Home[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Home[64 bit OS][System Locale es-ES]", "Microsoft Windows 10 Home[64 bit OS][System Locale es-MX]", "Microsoft Windows 10 Home[64 bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64 bit OS][System Locale he-IL]", "Microsoft Windows 10 Home[64 bit OS][System Locale hu-HU]", "Microsoft Windows 10 Home[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Home[64 bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 bit OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64 bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64 bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64 bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home[64 bit OS][System Locale sl-SI]", "Microsoft Windows 10 Home[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home[64 bit OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64 bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64 bit OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64 bitar OS][System Locale ar-SA]", "Microsoft Windows 10 Home[64 bitar OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64 bitar OS][System Locale da-DK]", "Microsoft Windows 10 Home[64 bitar OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 bitar OS][System Locale el-GR]", "Microsoft Windows 10 Home[64 bitar OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Home[64 bitar OS][System Locale es-ES]", "Microsoft Windows 10 Home[64 bitar OS][System Locale fi-FI]", "Microsoft Windows 10 Home[64 bitar OS][System Locale hu-HU]", "Microsoft Windows 10 Home[64 bitar OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 bitar OS][System Locale nb-NO]", "Microsoft Windows 10 Home[64 bitar OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64 bitar OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64 bites OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64 bites OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 bites OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Home[64 bites OS][System Locale es-ES]", "Microsoft Windows 10 Home[64 bites OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64 bites OS][System Locale he-IL]", "Microsoft Windows 10 Home[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Home[64 bites OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 bites OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64 bites OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64 bites OS][System Locale ro-RO]", "Microsoft Windows 10 Home[64 bites OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64 bites OS][System Locale sk-SK]", "Microsoft Windows 10 Home[64 bites OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64 bits OS][System Locale ar-SA]", "Microsoft Windows 10 Home[64 bits OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64 bits OS][System Locale da-DK]", "Microsoft Windows 10 Home[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 bits OS][System Locale el-GR]", "Microsoft Windows 10 Home[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Home[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Home[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Home[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Home[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64 bits OS][System Locale he-IL]", "Microsoft Windows 10 Home[64 bits OS][System Locale hu-HU]", "Microsoft Windows 10 Home[64 bits OS][System Locale it-IT]", "Microsoft Windows 10 Home[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 bits OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64 bits OS][System Locale nb-NO]", "Microsoft Windows 10 Home[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64 bits OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Home[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Home[64 bits OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64 bits OS][System Locale sk-SK]", "Microsoft Windows 10 Home[64 bits OS][System Locale sl-SI]", "Microsoft Windows 10 Home[64 bits OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64 bits OS][System Locale tr-TR]", "Microsoft Windows 10 Home[64 bits OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64 bits OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64 ビット OS][System Locale ]", "Microsoft Windows 10 Home[64 ビット OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 ビット OS][System Locale el-GR]", "Microsoft Windows 10 Home[64 ビット OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Home[64 ビット OS][System Locale es-ES]", "Microsoft Windows 10 Home[64 ビット OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 ビット OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64 ビット OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64 ビット OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64 ビット OS][System Locale pt-BR]", "Microsoft Windows 10 Home[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64 ビット OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64 位 OS][System Locale de-DE]", "Microsoft Windows 10 Home[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 Home[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Home[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 位 OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 Home[64 位元 OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 Home[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64-bit OS][System Locale ]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-AE]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-BH]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-IQ]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-JO]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-KW]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-OM]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-QA]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-SY]", "Microsoft Windows 10 Home[64-bit OS][System Locale ar-YE]", "Microsoft Windows 10 Home[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Home[64-bit OS][System Locale ca-ES]", "Microsoft Windows 10 Home[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Home[64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Home[64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Home[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Home[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-029]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-BZ]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Home[64-Bit OS][System Locale en-GB]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-ID]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-IE]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-JM]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Home[64-Bit OS][System Locale en-US]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Home[64-bit OS][System Locale en-ZW]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-419]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-BO]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-CU]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Home[64-Bit OS][System Locale es-ES]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Home[64-Bit OS][System Locale es-MX]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-NI]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-PR]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-PY]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-US]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-UY]", "Microsoft Windows 10 Home[64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Home[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Home[64-bit OS][System Locale fa-IR]", "Microsoft Windows 10 Home[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Home[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Home[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Home[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64-bit OS][System Locale fr-HT]", "Microsoft Windows 10 Home[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Home[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Home[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Home[64-bit OS][System Locale is-IS]", "Microsoft Windows 10 Home[64-bit OS][System Locale it-CH]", "Microsoft Windows 10 Home[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Home[64-Bit OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Home[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Home[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Home[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Home[64-Bit OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64-Bit OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Home[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Home[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Home[64-Bit OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64-Bit OS][System Locale sk-SK]", "Microsoft Windows 10 Home[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Home[64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 10 Home[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Home[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Home[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64-bit OS][System Locale vi-VN]", "Microsoft Windows 10 Home[64-Bit OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 Home[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 Home[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Home[64-biters OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64-biters OS][System Locale da-DK]", "Microsoft Windows 10 Home[64-biters OS][System Locale de-DE]", "Microsoft Windows 10 Home[64-biters OS][System Locale en-GB]", "Microsoft Windows 10 Home[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Home[64-biters OS][System Locale es-ES]", "Microsoft Windows 10 Home[64-biters OS][System Locale he-IL]", "Microsoft Windows 10 Home[64-biters OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Home[64-biters OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64-biters OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64-biters OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64bitový OS][System Locale de-DE]", "Microsoft Windows 10 Home[64bitový OS][System Locale el-GR]", "Microsoft Windows 10 Home[64bitový OS][System Locale en-GB]", "Microsoft Windows 10 Home[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Home[64bitový OS][System Locale es-ES]", "Microsoft Windows 10 Home[64bitový OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64bitový OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64bitový OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64bitový OS][System Locale sk-SK]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale ]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale da-DK]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale de-DE]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale el-GR]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale es-ES]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale he-IL]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale it-IT]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale nb-NO]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale nl-NL]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64-bitowy OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale de-DE]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale en-GB]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64-bittinen OS][System Locale sv-SE]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale de-DE]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale en-US]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale he-IL]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Home[64-разрядная OS][System Locale uk-UA]", "Microsoft Windows 10 Home[64비트 OS][System Locale cs-CZ]", "Microsoft Windows 10 Home[64비트 OS][System Locale de-DE]", "Microsoft Windows 10 Home[64비트 OS][System Locale en-GB]", "Microsoft Windows 10 Home[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Home[64비트 OS][System Locale es-ES]", "Microsoft Windows 10 Home[64비트 OS][System Locale fr-FR]", "Microsoft Windows 10 Home[64비트 OS][System Locale ja-JP]", "Microsoft Windows 10 Home[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Home[64비트 OS][System Locale pl-PL]", "Microsoft Windows 10 Home[64비트 OS][System Locale zh-CN]", "Microsoft Windows 10 Home[64비트 OS][System Locale zh-TW]", "Microsoft Windows 10 IoT Enterprise LTSC 2019[64-bit OS][System Locale en-US]", "Microsoft Windows 10 IoT Enterprise[64-bit OS][System Locale en-US]", "Microsoft Windows 10 IoT 企业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Lite Edition v3[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Lite Edition v3[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Lite Edition v3[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Lite Edition v3[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Lite Edition v3[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Lite Edition v9 2019[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Lite Editions[64-bit OS][System Locale en-US]", "Microsoft Windows 10 NUMIX[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro [32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro [32-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro [64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro [64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro [64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Pro [64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Pro [64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-ID]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-IE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-JM]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro [64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-419]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-BO]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-NI]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-US]", "Microsoft Windows 10 Pro [64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Pro [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro [64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro [64-bit OS][System Locale id-ID]", "Microsoft Windows 10 Pro [64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro [64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro [64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Pro [64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro [64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro [64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro [64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro [64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro [64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro [64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Pro [64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro Education [64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education [64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro Education Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro Education N[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro Education N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro Education N[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro Education[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro Education[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro Education[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro Education[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro Education[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro Education[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro Education[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro Education[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro Education[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro Education[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale ar-JO]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro Education[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro Education[64-Bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Pro Education[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro Education[64-biters OS][System Locale da-DK]", "Microsoft Windows 10 Pro Education[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro Education[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro Education[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64-bitowy OS][System Locale nb-NO]", "Microsoft Windows 10 Pro Education[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro Education[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro Education[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Pro Education[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro for Workstations [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro for Workstations Insider Preview[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro for Workstations[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro for Workstations[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro for Workstations[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro for Workstations[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro for Workstations[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro for Workstations[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro for Workstations[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro for Workstations[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro for Workstations[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro for Workstations[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro for Workstations[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro for Workstations[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro for Workstations[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro for Workstations[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Pro for Workstations[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Pro for Workstations[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ar-QA]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro for Workstations[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro for Workstations[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Pro for Workstations[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro for Workstations[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro for Workstations[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64bitový OS][System Locale sk-SK]", "Microsoft Windows 10 Pro for Workstations[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro for Workstations[64-bittinen OS][System Locale en-GB]", "Microsoft Windows 10 Pro for Workstations[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro for Workstations[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Pro for Workstations[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Pro for Workstations[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro in S mode[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro in S mode[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Insider Preview [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Insider Preview[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Insider Preview[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro Insider Preview[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro Insider Preview[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro Insider Preview[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro Insider Preview[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro Insider Preview[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro Insider Preview[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro Insider Preview[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro Insider Preview[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro Insider Preview[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro Insider Preview[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro Insider Preview[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro Insider Preview[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro Insider Preview[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro KN[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro N for Workstations[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N for Workstations[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro N for Workstations[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro N for Workstations[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro N for Workstations[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro N for Workstations[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro N for Workstations[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro N for Workstations[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro N for Workstations[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N for Workstations[64-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro N for Workstations[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro N for Workstations[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro N Insider Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro N[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro N[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro N[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro N[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro N[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro N[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro N[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro N[64 bitar OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro N[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro N[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[64-Bit OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale mk-MK]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Pro N[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro N[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro N[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro N[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Pro N[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro N[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro N[64-bittinen OS][System Locale sv-SE]", "Microsoft Windows 10 Pro N[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro Single Language[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro[ OS][System Locale ]", "Microsoft Windows 10 Pro[ OS][System Locale en-US]", "Microsoft Windows 10 Pro[ OS][System Locale es-ES]", "Microsoft Windows 10 Pro[ OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[32 bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro[32 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro[32 bit OS][System Locale en-US]", "Microsoft Windows 10 Pro[32 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro[32 bitar OS][System Locale en-US]", "Microsoft Windows 10 Pro[32 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[32 bites OS][System Locale en-US]", "Microsoft Windows 10 Pro[32 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[32 bits OS][System Locale en-GB]", "Microsoft Windows 10 Pro[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro[32 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro[32 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[32 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[32 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[32 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro[32 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[32 ビット OS][System Locale en-US]", "Microsoft Windows 10 Pro[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[32-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro[32-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro[32-bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[32-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro[32-Bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro[32-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro[32-bit OS][System Locale en-AU]", "Microsoft Windows 10 Pro[32-bit OS][System Locale en-CA]", "Microsoft Windows 10 Pro[32-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro[32-bit OS][System Locale en-IN]", "Microsoft Windows 10 Pro[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro[32-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro[32-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro[32-bit OS][System Locale et-EE]", "Microsoft Windows 10 Pro[32-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[32-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro[32-bit OS][System Locale hr-HR]", "Microsoft Windows 10 Pro[32-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[32-bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro[32-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[32-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Pro[32-Bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[32-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[32-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[32-bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro[32-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro[32-bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[32-bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[32-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro[32-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 10 Pro[32-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[32-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[32-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Pro[32-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[32bitový OS][System Locale en-US]", "Microsoft Windows 10 Pro[32-bitowy OS][System Locale de-DE]", "Microsoft Windows 10 Pro[32-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Pro[32-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Pro[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[32-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Pro[32-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[32비트 OS][System Locale en-US]", "Microsoft Windows 10 Pro[32비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro[64 bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro[64 bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64 bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64 bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 bit OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64 bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro[64 bit OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64 bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64 bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64 bit OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64 bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64 bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro[64 bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro[64 bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64 bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro[64 bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro[64 bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64 bites OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64 bites OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 bites OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 bites OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 bites OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64 bites OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64 bites OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64 bites OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64 bites OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64 bites OS][System Locale ro-RO]", "Microsoft Windows 10 Pro[64 bites OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64 bites OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[64 bites OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64 bits OS][System Locale ]", "Microsoft Windows 10 Pro[64 bits OS][System Locale ar-SA]", "Microsoft Windows 10 Pro[64 bits OS][System Locale bg-BG]", "Microsoft Windows 10 Pro[64 bits OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64 bits OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 bits OS][System Locale el-GR]", "Microsoft Windows 10 Pro[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Pro[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Pro[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64 bits OS][System Locale he-IL]", "Microsoft Windows 10 Pro[64 bits OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64 bits OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64 bits OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64 bits OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64 bits OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Pro[64 bits OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64 bits OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[64 bits OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64 bits OS][System Locale tr-TR]", "Microsoft Windows 10 Pro[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64 bits OS][System Locale zh-TW]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale es-MX]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64 ビット OS][System Locale zh-TW]", "Microsoft Windows 10 Pro[64 位 OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64 位 OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64 位 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 Pro[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-AE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-BH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-EG]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-IQ]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-JO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-KW]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-LB]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-LY]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-OM]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-QA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ar-YE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale bg-BG]", "Microsoft Windows 10 Pro[64-bit OS][System Locale bs-Latn-BA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ca-ES]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64-bit OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64-bit OS][System Locale de-AT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale el-GR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-029]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-BZ]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-ID]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-IE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-IN]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-JM]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-MY]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-PH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-SG]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-TT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-ZA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale en-ZW]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-419]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-AR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-BO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-CL]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-CO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-CR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-DO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-EC]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-GT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-HN]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-MX]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-NI]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-PA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-PE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-PY]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-SV]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-US]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-UY]", "Microsoft Windows 10 Pro[64-bit OS][System Locale es-VE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale et-EE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fa-IR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fo-FO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fr-CM]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale fr-LU]", "Microsoft Windows 10 Pro[64-bit OS][System Locale he-IL]", "Microsoft Windows 10 Pro[64-bit OS][System Locale hi-IN]", "Microsoft Windows 10 Pro[64-bit OS][System Locale hr-hr]", "Microsoft Windows 10 Pro[64-bit OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64-bit OS][System Locale id-ID]", "Microsoft Windows 10 Pro[64-bit OS][System Locale is-IS]", "Microsoft Windows 10 Pro[64-bit OS][System Locale it-CH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale lt-LT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale lv-LV]", "Microsoft Windows 10 Pro[64-bit OS][System Locale mk-MK]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ms-MY]", "Microsoft Windows 10 Pro[64-bit OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64-bit OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64-bit OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale pt-PT]", "Microsoft Windows 10 Pro[64-bit OS][System Locale ro-RO]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sl-SI]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sr-Cyrl-RS]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sr-Latn-ME]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sv-FI]", "Microsoft Windows 10 Pro[64-bit OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64-bit OS][System Locale th-TH]", "Microsoft Windows 10 Pro[64-bit OS][System Locale tr-TR]", "Microsoft Windows 10 Pro[64-bit OS][System Locale uk-UA]", "Microsoft Windows 10 Pro[64-bit OS][System Locale vi-VN]", "Microsoft Windows 10 Pro[64-Bit OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 Pro[64-bit OS][System Locale zh-MO]", "Microsoft Windows 10 Pro[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 Pro[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 Pro[64-biters OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64-biters OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64-biters OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64-biters OS][System Locale en-US]", "Microsoft Windows 10 Pro[64-biters OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64-biters OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64-biters OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64-biters OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64bitový OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64bitový OS][System Locale el-GR]", "Microsoft Windows 10 Pro[64bitový OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64bitový OS][System Locale en-US]", "Microsoft Windows 10 Pro[64bitový OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64bitový OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64bitový OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64bitový OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64bitový OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale cs-CZ]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale en-US]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale nl-NL]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale ro-RO]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale sk-SK]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale sl-SI]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale tr-TR]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale uk-UA]", "Microsoft Windows 10 Pro[64-bitowy OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale da-DK]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale en-US]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale et-EE]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale nb-NO]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64-bittinen OS][System Locale sv-SE]", "Microsoft Windows 10 Pro[64-разрядная OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64-разрядная OS][System Locale en-US]", "Microsoft Windows 10 Pro[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64비트 OS][System Locale de-DE]", "Microsoft Windows 10 Pro[64비트 OS][System Locale en-GB]", "Microsoft Windows 10 Pro[64비트 OS][System Locale en-US]", "Microsoft Windows 10 Pro[64비트 OS][System Locale es-ES]", "Microsoft Windows 10 Pro[64비트 OS][System Locale es-MX]", "Microsoft Windows 10 Pro[64비트 OS][System Locale fi-FI]", "Microsoft Windows 10 Pro[64비트 OS][System Locale fr-FR]", "Microsoft Windows 10 Pro[64비트 OS][System Locale hu-HU]", "Microsoft Windows 10 Pro[64비트 OS][System Locale it-IT]", "Microsoft Windows 10 Pro[64비트 OS][System Locale ja-JP]", "Microsoft Windows 10 Pro[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 Pro[64비트 OS][System Locale pl-PL]", "Microsoft Windows 10 Pro[64비트 OS][System Locale pt-BR]", "Microsoft Windows 10 Pro[64비트 OS][System Locale ru-RU]", "Microsoft Windows 10 Pro[64비트 OS][System Locale zh-CN]", "Microsoft Windows 10 Pro[64비트 OS][System Locale zh-TW]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Éducation N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Éducation[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Éducation[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel Éducation[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Éducation[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel Éducation[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Insider Preview[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel Insider Preview[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel N pour les Stations de travail[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel N[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel N[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Professionnel N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel N[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel pour les Stations de travail[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale nb-NO]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[32-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[32-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale ar-SA]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale cs-CZ]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale da-DK]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale de-DE]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale el-GR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale he-IL]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale hu-HU]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale it-IT]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale ko-KR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale nl-NL]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale pl-PL]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale pt-PT]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale ru-RU]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale sk-SK]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale sv-SE]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale tr-TR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale zh-CN]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale ar-TN]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale de-CH]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-BE]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-CH]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-LU]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-MA]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-SN]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale it-IT]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale nl-BE]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale nl-NL]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 Remote Server[64-bit OS][System Locale en-US]", "Microsoft Windows 10 SolidShare Edition[32 bit OS][System Locale tr-TR]", "Microsoft Windows 10 SolidShare Edition[64 bit OS][System Locale tr-TR]", "Microsoft Windows 10 专业工作站版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业工作站版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业工作站版 N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业工作站版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 专业工作站版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 专业工作站版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业工作站版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 专业工作站版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 专业工作站版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业教育版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业教育版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 专业教育版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 专业教育版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业教育版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业版 N[64 位 OS][System Locale en-US]", "Microsoft Windows 10 专业版 N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版 N[64-bit OS][System Locale en-US]", "Microsoft Windows 10 专业版 [64-bit OS][System Locale en-US]", "Microsoft Windows 10 专业版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业版 2018 长期服务版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版 Insider Preview[64 位 OS][System Locale en-US]", "Microsoft Windows 10 专业版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版 N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[32 位 OS][System Locale en-US]", "Microsoft Windows 10 专业版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[32-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 专业版[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 专业版[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 专业版[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 专业版[64 ビット OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[64 位 OS][System Locale cs-CZ]", "Microsoft Windows 10 专业版[64 位 OS][System Locale de-DE]", "Microsoft Windows 10 专业版[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 专业版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 专业版[64 位 OS][System Locale es-ES]", "Microsoft Windows 10 专业版[64 位 OS][System Locale fr-FR]", "Microsoft Windows 10 专业版[64 位 OS][System Locale it-IT]", "Microsoft Windows 10 专业版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 专业版[64 位 OS][System Locale ko-KR]", "Microsoft Windows 10 专业版[64 位 OS][System Locale nl-NL]", "Microsoft Windows 10 专业版[64 位 OS][System Locale pl-PL]", "Microsoft Windows 10 专业版[64 位 OS][System Locale pt-BR]", "Microsoft Windows 10 专业版[64 位 OS][System Locale ru-RU]", "Microsoft Windows 10 专业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 专业版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 专业版[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 专业版[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 专业版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 专业版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 专业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 专业版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 专业版[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 专业版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 专业版[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 企业版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2015 长期服务方案[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2015 长期服务方案[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2015 长期服务方案[64-bit OS][System Locale en-US]", "Microsoft Windows 10 企业版 2015 长期服务方案[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2016 长期服务版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2016 长期服务版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 企业版 2016 长期服务版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 2016 长期服务版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 企业版 2016 长期服务版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 G [32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 G [64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 G [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 G N [64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 G 神州网信政府版(V0-G.1013.001)[64 位 OS][System Locale zh-CN", "Microsoft Windows 10 企业版 G 神州网信政府版(V0-G.1014.000)[64 位 OS][System Locale zh-CN", "Microsoft Windows 10 企业版 G 神州网信政府版(V0-G.1014.000)[64-bit OS][System Locale zh-CN", "Microsoft Windows 10 企业版 G 神州网信政府版(V0-H.1020.000)[64 位 OS][System Locale zh-CN", "Microsoft Windows 10 企业版 G 神州网信政府版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 Insider Preview[64 位 OS][System Locale en-US]", "Microsoft Windows 10 企业版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 LTSC[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 LTSC[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 企业版 LTSC[64 位 OS][System Locale en-US]", "Microsoft Windows 10 企业版 LTSC[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 N LTSC[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 N[64 位 OS][System Locale en-US]", "Microsoft Windows 10 企业版 N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 S N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版 S[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版[64 位 OS][System Locale de-DE]", "Microsoft Windows 10 企业版[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 企业版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 企业版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 企业版[64 位 OS][System Locale ko-KR]", "Microsoft Windows 10 企业版[64 位 OS][System Locale pt-BR]", "Microsoft Windows 10 企业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企业版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 企业版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 企业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 企业评估版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企業版 2015 長期維護[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 企業版 2016 長期維護[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 企業版 LTSC[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 企業版 LTSC[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 企業版[32 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 企業版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 企業版[64 位元 OS][System Locale en-GB]", "Microsoft Windows 10 企業版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 企業版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 企業版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 企業版[64 位元 OS][System Locale zh-tw]", "Microsoft Windows 10 企業版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 企業版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 商业版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 商业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 商務版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家庭 Insider Preview中文版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭 Insider Preview中文版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭 Insider Preview单语言版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版 [64-bit OS][System Locale en-US]", "Microsoft Windows 10 家庭中文版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版[ OS][System Locale ]", "Microsoft Windows 10 家庭中文版[ OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版[64 位 OS][System Locale ]", "Microsoft Windows 10 家庭中文版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale ar-SA]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale de-DE]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-IE]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale es-ES]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale ko-KR]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale ru-RU]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 家庭中文版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 家庭单语言版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭单语言版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭单语言版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭单语言版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版 [64-bit OS][System Locale en-HK]", "Microsoft Windows 10 家庭版 [64-bit OS][System Locale en-US]", "Microsoft Windows 10 家庭版 [64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 家庭版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版 Insider Preview[64 位 OS][System Locale en-US]", "Microsoft Windows 10 家庭版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版 以 S 模式[64 位 OS][System Locale en-US]", "Microsoft Windows 10 家庭版[32 位 OS][System Locale en-US]", "Microsoft Windows 10 家庭版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版[32-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版[64 bit OS][System Locale it-IT]", "Microsoft Windows 10 家庭版[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 家庭版[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale ar-SA]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale cs-CZ]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale de-DE]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale el-GR]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale es-ES]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale fr-FR]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale he-IL]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale hu-HU]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale it-IT]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale ko-KR]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale nl-NL]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale pl-PL]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale ru-RU]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale sk-SK]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale sv-SE]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale zh-cn]", "Microsoft Windows 10 家庭版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 家庭版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 家庭版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家庭版[64-Bit OS][System Locale de-DE]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-GB]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-NZ]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale zh-SG]", "Microsoft Windows 10 家庭版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 家庭版[64비트 OS][System Locale ko-KR]", "Microsoft Windows 10 家用單一語言版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家用版 (S 模式)[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 家用版 [64-bit OS][System Locale en-HK]", "Microsoft Windows 10 家用版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 家用版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 家用版 Insider Preview[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家用版[32 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家用版[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 家用版[64 ビット OS][System Locale zh-TW]", "Microsoft Windows 10 家用版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 家用版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 家用版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale de-DE]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale en-GB]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale fr-FR]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale ja-JP]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale ko-KR]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 家用版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 家用版[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 家用版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 家用版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 家用版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 家用版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 家用版[64-bit OS][System Locale zh-MO]", "Microsoft Windows 10 家用版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 專業教育版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 專業教育版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 專業版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 專業版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 專業版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 專業版 Insider Preview[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 專業版[32 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 專業版[32 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 專業版[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 10 專業版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 專業版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 專業版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale de-DE]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale en-GB]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale es-ES]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale fr-FR]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale ja-JP]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale ko-KR]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale pt-BR]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 專業版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 專業版[64-bit OS][System Locale en-AU]", "Microsoft Windows 10 專業版[64-bit OS][System Locale en-HK]", "Microsoft Windows 10 專業版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 專業版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 10 專業版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 專業版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 10 專業版[64-bit OS][System Locale zh-MO]", "Microsoft Windows 10 專業版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 工作站專業版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 工作站專業版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 工作站專業版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 工作站專業版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 教育版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 教育版 Insider Preview[64 位 OS][System Locale en-US]", "Microsoft Windows 10 教育版 Insider Preview[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 教育版 N[64 位 OS][System Locale en-US]", "Microsoft Windows 10 教育版 N[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 教育版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 10 教育版[64 位 OS][System Locale en-GB]", "Microsoft Windows 10 教育版[64 位 OS][System Locale en-US]", "Microsoft Windows 10 教育版[64 位 OS][System Locale fr-FR]", "Microsoft Windows 10 教育版[64 位 OS][System Locale ja-JP]", "Microsoft Windows 10 教育版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 10 教育版[64 位 OS][System Locale zh-TW]", "Microsoft Windows 10 教育版[64 位元 OS][System Locale en-US]", "Microsoft Windows 10 教育版[64 位元 OS][System Locale ja-JP]", "Microsoft Windows 10 教育版[64 位元 OS][System Locale zh-CN]", "Microsoft Windows 10 教育版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 10 教育版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 10 教育版[64-bit OS][System Locale en-US]", "Microsoft Windows 10 教育版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 10 教育版[64-bit OS][System Locale zh-TW]", "Microsoft Windows 10 远程服务器[64 位 OS][System Locale zh-CN]", "Microsoft Windows 17 Gaming[64-bit OS][System Locale en-US]", "Microsoft Windows 17 Pro[32-bit OS][System Locale en-US]", "Microsoft Windows 17 Pro[64-bit OS][System Locale en-US]", "Microsoft Windows 18 Luxury[64-bit OS][System Locale en-US]", "Microsoft Windows 18 Pro[64-bit OS][System Locale en-US]", "Microsoft Windows 7 •••• Blue Core •••• [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Alienware 2010 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Autumn [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Autumn [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise Service Pack 1[64-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32 bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Enterprise [32 bits OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Enterprise [32 ビット OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale da-DK]", "Microsoft Windows 7 Enterprise [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale en-AU]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale en-GB]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale es-MX]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale et-EE]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale he-IL]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Enterprise [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Enterprise [32-bits OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Enterprise [64 bit OS][System Locale de-DE]", "Microsoft Windows 7 Enterprise [64 bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [64 bit OS][System Locale fr-FR]", "Microsoft Windows 7 Enterprise [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Enterprise [64 bits OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Enterprise [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Enterprise [64 ビット OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [64 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ar-AE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale da-DK]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale de-AT]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale de-CH]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-IE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-NZ]", "Microsoft Windows 7 Enterprise [64-Bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale es-PE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale et-EE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale nl-BE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale th-TH]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Enterprise [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 Enterprise [64-bits OS][System Locale en-US]", "Microsoft Windows 7 Enterprise [64-bits OS][System Locale fr-FR]", "Microsoft Windows 7 Enterprise [64-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Enterprise E [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise K [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise K [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Enterprise K [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise K [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Enterprise KN [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Enterprise N [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Enterprise N [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise N [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Enterprise N [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Enterprise N [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Enterprise N [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Enterprise N [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Enterprise N [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Enterprise N [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Enterprise N [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Entreprise [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [64 bits OS][System Locale en-US]", "Microsoft Windows 7 Entreprise [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 eXtreme [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Extreme Edition R1 - x64 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Extreme Edition R1 [32-bit OS][System Locale en-US]", "Microsoft Windows 7 eXtreme™ Draconis Edition [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Basic Service Pack 1[64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Home Basic Service Pack 1[64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Basic Service Pack 1[64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Home Basic Service Pack 1[64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Basic [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Basic [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Home Basic [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale sr-Latn-CS]", "Microsoft Windows 7 Home Basic [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Home Basic [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Basic [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Home Basic [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-MY]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-PH]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-CL]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-HN]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Home Basic [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Home Basic [64-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Home Basic K [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Home Premium Service Pack 1[32-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-MY]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Home Premium Service Pack 1[64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Premium [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Premium [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Home Premium [32 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale da-DK]", "Microsoft Windows 7 Home Premium [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale en-GB]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale es-ES]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale es-MX]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale et-EE]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale he-IL]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Home Premium [32-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Home Premium [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Home Premium [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Premium [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Home Premium [64 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ar-EG]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale da-DK]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale de-AT]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale de-CH]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-029]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-IE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-MY]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-NZ]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-SG]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-BO]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-CL]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-EC]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-HN]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-PE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-UY]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale es-VE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale et-EE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale id-ID]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale nl-BE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale sr-Latn-CS]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale th-TH]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Home Premium [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 Home Premium [64-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Home Premium E [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium K Service Pack 1[64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Home Premium K [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Home Premium K [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Home Premium N [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium N [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Premium N [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Home Premium N [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Home Premium N [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Lite [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Lite 3.0 [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Lite 3.0 [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Luxury [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Luxury [64-bit OS][System Locale en-US]", "Microsoft Windows 7 nBook Ultimate [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 NVIDIA 2010 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional Service Pack 1[32-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional Service Pack 1[32-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale de-AT]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale de-CH]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-IE]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-MY]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-SG]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale es-BO]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale es-CL]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Professional Service Pack 1[64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Professional [ OS][System Locale ]", "Microsoft Windows 7 Professional [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Professional [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professional [32 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ar-EG]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Professional [32-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Professional [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Professional [32-bit OS][System Locale da-DK]", "Microsoft Windows 7 Professional [32-bit OS][System Locale de-CH]", "Microsoft Windows 7 Professional [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-AU]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-CA]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-GB]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-IE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-IN]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-MY]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-PH]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-SG]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional [32-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-CO]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-DO]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-ES]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-GT]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-HN]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-MX]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-PA]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-PE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-SV]", "Microsoft Windows 7 Professional [32-bit OS][System Locale es-VE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale et-EE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Professional [32-bit OS][System Locale he-IL]", "Microsoft Windows 7 Professional [32-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Professional [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Professional [32-bit OS][System Locale id-ID]", "Microsoft Windows 7 Professional [32-bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional [32-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Professional [32-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Professional [32-bit OS][System Locale mk-MK]", "Microsoft Windows 7 Professional [32-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Professional [32-bit OS][System Locale nl-BE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Professional [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Professional [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Professional [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Professional [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Professional [32-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Professional [32-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Professional [32-bit OS][System Locale sr-Latn-CS]", "Microsoft Windows 7 Professional [32-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Professional [32-bit OS][System Locale th-TH]", "Microsoft Windows 7 Professional [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Professional [32-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Professional [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Professional [32-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Professional [32-bit OS][System Locale zh-TW]", "Microsoft Windows 7 Professional [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Professional [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Professional [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professional [64 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-AE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-EG]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-JO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-KW]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-LY]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-OM]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Professional [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Professional [64-bit OS][System Locale da-DK]", "Microsoft Windows 7 Professional [64-bit OS][System Locale de-AT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale de-CH]", "Microsoft Windows 7 Professional [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-029]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-BZ]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-IE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-JM]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-MY]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-NZ]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-PH]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-SG]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-TT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale en-ZW]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-BO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-CL]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-CR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-DO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-EC]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-ES_tradnl]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-GT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-HN]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-NI]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-PA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-PE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-PY]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-SV]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-US]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-UY]", "Microsoft Windows 7 Professional [64-bit OS][System Locale es-VE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale et-EE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fr-BE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fr-CH]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale fr-LU]", "Microsoft Windows 7 Professional [64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Professional [64-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Professional [64-bit OS][System Locale id-ID]", "Microsoft Windows 7 Professional [64-bit OS][System Locale is-IS]", "Microsoft Windows 7 Professional [64-bit OS][System Locale it-CH]", "Microsoft Windows 7 Professional [64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Professional [64-bit OS][System Locale mk-MK]", "Microsoft Windows 7 Professional [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale nl-BE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Professional [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Professional [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Professional [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sr-Latn-CS]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sv-FI]", "Microsoft Windows 7 Professional [64-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Professional [64-bit OS][System Locale th-TH]", "Microsoft Windows 7 Professional [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Professional [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Professional [64-bit OS][System Locale vi-VN]", "Microsoft Windows 7 Professional [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Professional [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Professional [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 Professional [64-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Professional E [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional E [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional K Service Pack 1[64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional K [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional K [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional KN [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Professional N [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Professional N [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Professional N [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Professional N [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional N [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Professional N [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Professional N [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Professional N [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale da-DK]", "Microsoft Windows 7 Professional N [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale et-EE]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Professional N [64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Professional VL [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Professionnel Service Pack 1[64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel [32-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Professionnel [32-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale ar-MA]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale fr-BE]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale fr-CH]", "Microsoft Windows 7 Professionnel [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Razer Edition 2018 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 ROG Rampage (64 Bit) (E3) [64-bit OS][System Locale en-US]", "Microsoft Windows 7 ROG Rampage (64 Bit) [64-bit OS][System Locale en-US]", "Microsoft Windows 7 ROG SP1 (64 Bit) [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Silentall Edition [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Starter [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Starter [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Starter [32-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Starter [32-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Starter [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Starter [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Starter [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Starter [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Starter [32-bit OS][System Locale es-MX]", "Microsoft Windows 7 Starter [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Starter [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Starter [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Starter [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Starter [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Starter [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Starter K [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Super Lite [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Super Lite by R-ALMODARIS [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate Service Pack 1[32-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate Service Pack 1[64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Ultimate Service Pack 1[64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Ultimate Service Pack 1[64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Ultimate Service Pack 1[64-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate Service Pack 1[64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Ultimate [32 bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [32 bit OS][System Locale it-IT]", "Microsoft Windows 7 Ultimate [32 bits OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Ultimate [32 ビット OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [32 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale ar-EG]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale da-DK]", "Microsoft Windows 7 Ultimate [32-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale el-GR]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale en-GB]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale en-IN]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-CO]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-ES]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-GT]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-HN]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-MX]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-PE]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale es-VE]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale he-IL]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale id-ID]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale it-IT]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale th-TH]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Ultimate [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Ultimate [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Ultimate [64 bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Ultimate [64 bits OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Ultimate [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Ultimate [64 ビット OS][System Locale de-DE]", "Microsoft Windows 7 Ultimate [64 ビット OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64 ビット OS][System Locale ja-JP]", "Microsoft Windows 7 Ultimate [64 ビット OS][System Locale pt-BR]", "Microsoft Windows 7 Ultimate [64 ビット OS][System Locale zh-CN]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ar-DZ]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ar-EG]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ar-JO]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ar-SA]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale bg-BG]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale da-DK]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale el-GR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-AU]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-CA]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-GB]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-IN]", "Microsoft Windows 7 Ultimate [64-Bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale en-ZA]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-AR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-CL]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-CO]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-ES]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-GT]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-HN]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-MX]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-US]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale es-VE]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale et-EE]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale fi-FI]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale he-IL]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale hr-HR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale hu-HU]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale id-ID]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale it-IT]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale lt-LT]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale lv-LV]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale nb-NO]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale nl-NL]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale pt-BR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale pt-PT]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ro-RO]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale sk-SK]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale sl-SI]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale sv-SE]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale th-TH]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale tr-TR]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale vi-VN]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 Ultimate [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 Ultimate [64-bits OS][System Locale en-US]", "Microsoft Windows 7 Ultimate [64-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Ultimate Compact [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate E [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate E [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate K [32-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Ultimate K [64-bit OS][System Locale de-DE]", "Microsoft Windows 7 Ultimate K [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate K [64-bit OS][System Locale ko-KR]", "Microsoft Windows 7 Ultimate MoN Edition [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate N [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate N [32-bits OS][System Locale nl-NL]", "Microsoft Windows 7 Ultimate N [64 bit OS][System Locale it-IT]", "Microsoft Windows 7 Ultimate N [64 bits OS][System Locale es-ES]", "Microsoft Windows 7 Ultimate N [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Ultimate N [64-bit OS][System Locale pl-PL]", "Microsoft Windows 7 Ultimate Powered © by XTreme.ws™ [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate Powered © by XTreme.ws™ [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Ultimate UralSOFT [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Домашняя базовая Service Pack 1[64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Домашняя базовая [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Домашняя базовая [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Домашняя расширенная Service Pack 1[64-bit OS][System Locale", "Microsoft Windows 7 Домашняя расширенная [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Домашняя расширенная [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Корпоративная [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Корпоративная [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Корпоративная [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Корпоративная [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Корпоративная N [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Максимальная Service Pack 1[64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Максимальная [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Максимальная [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Максимальная [64-Bit OS][System Locale de-DE]", "Microsoft Windows 7 Максимальная [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Максимальная [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Максимальная [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 Максимальная Powered © by XTreme.ws™ [32-bit OS][System Locale ru", "Microsoft Windows 7 Начальная [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Профессиональная Service Pack 1[64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Профессиональная [32-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Профессиональная [64-bit OS][System Locale ru-RU]", "Microsoft Windows 7 Профессиональная [64-bit OS][System Locale uk-UA]", "Microsoft Windows 7 专业版 Service Pack 1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 专业版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 专业版 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 专业版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 企业版 [32-bit OS][System Locale de-DE]", "Microsoft Windows 7 企业版 [32-bit OS][System Locale en-US]", "Microsoft Windows 7 企业版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 企业版 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 企业版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 企業版 [32-bit OS][System Locale zh-HK]", "Microsoft Windows 7 企業版 [32-bit OS][System Locale zh-TW]", "Microsoft Windows 7 企業版 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 企業版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 企業版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 家庭普通版 Service Pack 1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家庭普通版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家庭普通版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家庭高级版 Service Pack 1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家庭高级版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家庭高级版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 家用入門版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 家用入門版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 家用進階版 Service Pack 1[64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 家用進階版 [32-bit OS][System Locale zh-HK]", "Microsoft Windows 7 家用進階版 [32-bit OS][System Locale zh-TW]", "Microsoft Windows 7 家用進階版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 家用進階版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 專業版 Service Pack 1[64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 專業版 Service Pack 1[64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 專業版 [32-bit OS][System Locale zh-HK]", "Microsoft Windows 7 專業版 [32-bit OS][System Locale zh-TW]", "Microsoft Windows 7 專業版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 專業版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 專業版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 旗舰版 Service Pack 1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 旗舰版 [32-bit OS][System Locale en-US]", "Microsoft Windows 7 旗舰版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 7 旗舰版 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 旗舰版 [64-bit OS][System Locale ja-JP]", "Microsoft Windows 7 旗舰版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 旗艦版 [32-bit OS][System Locale zh-HK]", "Microsoft Windows 7 旗艦版 [32-bit OS][System Locale zh-TW]", "Microsoft Windows 7 旗艦版 [64-bit OS][System Locale en-US]", "Microsoft Windows 7 旗艦版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 7 旗艦版 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 7 旗艦版 [64-bit OS][System Locale zh-TW]", "Microsoft Windows 7 简易版 [32-bit OS][System Locale zh-CN]", "Microsoft Windows 8 [64-bit OS][System Locale en-US]", "Microsoft Windows 8 [64-bit OS][System Locale fr-FR]", "Microsoft Windows 8 Aero Final [64-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise Evaluation[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise N[32-bit OS][System Locale en-GB]", "Microsoft Windows 8 Enterprise N[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8 Enterprise N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Enterprise N[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise[32 bit OS][System Locale it-IT]", "Microsoft Windows 8 Enterprise[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8 Enterprise[32 bits OS][System Locale es-ES]", "Microsoft Windows 8 Enterprise[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Enterprise[32-bit OS][System Locale en-GB]", "Microsoft Windows 8 Enterprise[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise[64 bit OS][System Locale it-IT]", "Microsoft Windows 8 Enterprise[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8 Enterprise[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8 Enterprise[64 bits OS][System Locale en-US]", "Microsoft Windows 8 Enterprise[64 bits OS][System Locale es-ES]", "Microsoft Windows 8 Enterprise[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Enterprise[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8 Enterprise[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8 Enterprise[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Enterprise[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Enterprise[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8 Enterprise[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8 Entreprise N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Entreprise[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Entreprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 K[64-bit OS][System Locale en-US]", "Microsoft Windows 8 K[64비트 OS][System Locale en-US]", "Microsoft Windows 8 K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8 N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro [64-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8 Pro N[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro N[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro with Media Center[32 bits OS][System Locale es-ES]", "Microsoft Windows 8 Pro with Media Center[32-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro with Media Center[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro with Media Center[64 bits OS][System Locale es-ES]", "Microsoft Windows 8 Pro with Media Center[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Pro with Media Center[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8 Pro with Media Center[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro with Media Center[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro[32 bit OS][System Locale it-IT]", "Microsoft Windows 8 Pro[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8 Pro[32 bits OS][System Locale es-ES]", "Microsoft Windows 8 Pro[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Pro[32 bits OS][System Locale pt-PT]", "Microsoft Windows 8 Pro[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8 Pro[32-bit OS][System Locale ar-SA]", "Microsoft Windows 8 Pro[32-Bit OS][System Locale de-DE]", "Microsoft Windows 8 Pro[32-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro[32-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8 Pro[64 bit OS][System Locale el-GR]", "Microsoft Windows 8 Pro[64 bit OS][System Locale it-IT]", "Microsoft Windows 8 Pro[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8 Pro[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 8 Pro[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8 Pro[64 bits OS][System Locale en-US]", "Microsoft Windows 8 Pro[64 bits OS][System Locale es-ES]", "Microsoft Windows 8 Pro[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8 Pro[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Pro[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8 Pro[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8 Pro[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8 Pro[64-bit OS][System Locale da-DK]", "Microsoft Windows 8 Pro[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8 Pro[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Pro[64-bit OS][System Locale en-IN]", "Microsoft Windows 8 Pro[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Pro[64-bit OS][System Locale en-ZA]", "Microsoft Windows 8 Pro[64-bit OS][System Locale es-CO]", "Microsoft Windows 8 Pro[64-bit OS][System Locale es-ES]", "Microsoft Windows 8 Pro[64-bit OS][System Locale es-MX]", "Microsoft Windows 8 Pro[64-bit OS][System Locale he-IL]", "Microsoft Windows 8 Pro[64-bit OS][System Locale it-IT]", "Microsoft Windows 8 Pro[64-bit OS][System Locale pl-PL]", "Microsoft Windows 8 Pro[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8 Pro[64-bit OS][System Locale sk-SK]", "Microsoft Windows 8 Pro[64-bit OS][System Locale sv-SE]", "Microsoft Windows 8 Pro[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8 Pro[64-bitowy OS][System Locale en-US]", "Microsoft Windows 8 Pro[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8 Pro[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 8 Pro[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 8 Professionnel avec Media Center[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Professionnel N[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Professionnel N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Professionnel[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Professionnel[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 Professionnel[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8 Single Language [64-bit OS][System Locale en-US]", "Microsoft Windows 8 Single Language [64-bit OS][System Locale es-ES]", "Microsoft Windows 8 Single Language [64-bit OS][System Locale es-MX]", "Microsoft Windows 8 Single Language [64-bit OS][System Locale pt-BR]", "Microsoft Windows 8 Single Language[32-bit OS][System Locale en-GB]", "Microsoft Windows 8 Single Language[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8 Single Language[64 bits OS][System Locale es-ES]", "Microsoft Windows 8 Single Language[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale ar-AE]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale en-GB]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale en-IN]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale en-US]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale en-ZA]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-CO]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-ES]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-GT]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-HN]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-MX]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale es-PE]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8 Single Language[64-bit OS][System Locale tr-TR]", "Microsoft Windows 8 Unilingue[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8 专业版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8 专业版[64 位 OS][System Locale en-US]", "Microsoft Windows 8 专业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8 专业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8 中文版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8 中文版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8 企业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8 企业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8 專業版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8 專業版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1 (含必应)[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 [32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 [32-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 [64-bit OS][System Locale cs-CZ]", "Microsoft Windows 8.1 [64-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 [64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-CA]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-IE]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-TT]", "Microsoft Windows 8.1 [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-CO]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-DO]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-HN]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-PE]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-PR]", "Microsoft Windows 8.1 [64-bit OS][System Locale es-VE]", "Microsoft Windows 8.1 [64-bit OS][System Locale et-EE]", "Microsoft Windows 8.1 [64-bit OS][System Locale fr-CA]", "Microsoft Windows 8.1 [64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 [64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 [64-bit OS][System Locale hu-HU]", "Microsoft Windows 8.1 [64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1 [64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 [64-bit OS][System Locale ko-KR]", "Microsoft Windows 8.1 [64-bit OS][System Locale nl-NL]", "Microsoft Windows 8.1 [64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 [64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 [64-bit OS][System Locale ru-RU]", "Microsoft Windows 8.1 [64-bit OS][System Locale sk-SK]", "Microsoft Windows 8.1 [64-bit OS][System Locale sv-SE]", "Microsoft Windows 8.1 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 [64-bit OS][System Locale zh-HK]", "Microsoft Windows 8.1 Alienware 2015[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 ar Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 avec Bing [64-bit OS][System Locale fr-CA]", "Microsoft Windows 8.1 avec Bing [64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 avec Bing[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 avec Bing[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 avec Bing[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 avec Bing[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 avec Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Bing szoftverrel [64-bit OS][System Locale hu-HU]", "Microsoft Windows 8.1 Bing szoftverrel[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Bing szoftverrel[64-bit OS][System Locale hu-HU]", "Microsoft Windows 8.1 China[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 China[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 com o Bing[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 com o Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-SV]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale es-VE]", "Microsoft Windows 8.1 con Bing [64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1 con Bing[32 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 con Bing[32 bits OS][System Locale en-US]", "Microsoft Windows 8.1 con Bing[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 con Bing[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 con Bing[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 con Bing[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 con Bing[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 con Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 cu Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 DoIT[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise - Testversion[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Enterprise Evaluation[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise K[32비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Enterprise K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Enterprise N[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Enterprise N[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Enterprise N[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Enterprise N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Enterprise N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Enterprise N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Enterprise N[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Enterprise[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Enterprise[32 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Enterprise[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Enterprise[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Enterprise[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Enterprise[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Enterprise[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Enterprise[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[32-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1 Enterprise[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Enterprise[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Enterprise[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Enterprise[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Enterprise[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Enterprise[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 8.1 Enterprise[64 bites OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Enterprise[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Enterprise[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Enterprise[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Enterprise[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Enterprise[64 ビット OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale bg-BG]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale da-DK]", "Microsoft Windows 8.1 Enterprise[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale et-EE]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale hr-HR]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale nl-NL]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale ru-RU]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale sk-SK]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale sl-SI]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale sv-SE]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Enterprise[64-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1 Enterprise[64-biters OS][System Locale nb-NO]", "Microsoft Windows 8.1 Enterprise[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Enterprise[64bitový OS][System Locale en-US]", "Microsoft Windows 8.1 Enterprise[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Enterprise[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 8.1 Entreprise N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Entreprise[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Entreprise[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Entreprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Entreprise[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Entreprise[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 K with Bing [64-bit OS][System Locale ko-KR]", "Microsoft Windows 8.1 K with Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 K with Bing[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 K[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 K[32비트 OS][System Locale en-US]", "Microsoft Windows 8.1 K[32비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 K[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 K[64-bit OS][System Locale ko-KR]", "Microsoft Windows 8.1 K[64비트 OS][System Locale en-US]", "Microsoft Windows 8.1 K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Luxury[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 med Bing[64-bit OS][System Locale da-DK]", "Microsoft Windows 8.1 met Bing [64-bit OS][System Locale nl-NL]", "Microsoft Windows 8.1 met Bing[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 met Bing[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 mit Bing [64-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 mit Bing[32-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 mit Bing[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 mit Bing[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 mit Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 N[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 N[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 N[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 N[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 N[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro [64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 Pro com Media Center[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Pro com Media Center[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro con Media Center[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro con Media Center[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro con Media Center[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro con Media Center[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro con Media Center[64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Pro for Education[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro K[32비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Pro K[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro K[64비트 OS][System Locale en-US]", "Microsoft Windows 8.1 Pro K[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Pro KN[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8.1 Pro Lite 2019[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro med Media Center[64-bit OS][System Locale da-DK]", "Microsoft Windows 8.1 Pro met Media Center[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro met Media Center[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro mit Media Center[32-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro mit Media Center[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro mit Media Center[64-Bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro N[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro N[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro N[32 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro N[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro N[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro N[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro N[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Pro N[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro N[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro N[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro N[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro N[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro N[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro N[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro Preview[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro s aplikací Media Center[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Pro VL[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Pro Volume License[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Pro with Media Center [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro with Media Center[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro with Media Center[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro with Media Center[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro with Media Center[64 ビット OS][System Locale en-US]", "Microsoft Windows 8.1 Pro with Media Center[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro with Media Center[64-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro with Media Center[64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro with Media Center[64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 Pro with Media Center[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro with Media Center[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro z programem Media Center[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro με Media Center[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro עם Media Center[64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 Pro[32 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro[32 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Pro[32 bitar OS][System Locale sv-SE]", "Microsoft Windows 8.1 Pro[32 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Pro[32 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Pro[32 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro[32-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Pro[32-bit OS][System Locale da-DK]", "Microsoft Windows 8.1 Pro[32-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[32-biters OS][System Locale nb-NO]", "Microsoft Windows 8.1 Pro[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Pro[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro[64 bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Pro[64 bitar OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 8.1 Pro[64 bites OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Pro[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro[64 ビット OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 Pro[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ar-EG]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ar-JO]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale bg-BG]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale da-DK]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale de-AT]", "Microsoft Windows 8.1 Pro[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-CA]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-IE]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-MY]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 Pro[64-Bit OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-BO]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-CL]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-CO]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-PE]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale es-PY]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale et-EE]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale hr-HR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale hu-HU]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale lt-LT]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale lv-LV]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale nl-BE]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale nl-NL]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale pt-PT]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ro-RO]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale ru-RU]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale sk-SK]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale sl-SI]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale th-TH]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 Pro[64-bit OS][System Locale zh-HK]", "Microsoft Windows 8.1 Pro[64-biters OS][System Locale nb-NO]", "Microsoft Windows 8.1 Pro[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 Pro[64bitový OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64-bitowy OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 Pro[64-bittinen OS][System Locale en-US]", "Microsoft Windows 8.1 Pro[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 8.1 Pro[64-разрядная OS][System Locale ru-RU]", "Microsoft WINDOWS 8.1 PROFESSIONAL VL[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Professionnel [64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel avec Media Center[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel avec Media Center[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Professionnel avec Media Center[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel N[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1 Professionnel[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Professionnel[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1 Professionnel[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Professionnel[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 rakendusega Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 s aplikací Bing[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1 sa uslugom Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Silentall Edition[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale ar-AE]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-CL]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-CO]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-HN]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-PE]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-SV]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-US]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale es-UY]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 Single Language [64-bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Single Language con Bing [64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language con Bing [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Single Language con Bing[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language with Bing [32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language with Bing [32-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Single Language with Bing [32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language with Bing [32-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 Single Language with Bing [32-bit OS][System Locale vi-VN]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-MY]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale id-ID]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale th-TH]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale vi-VN]", "Microsoft Windows 8.1 Single Language with Bing [64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 Single Language with Bing[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language with Bing[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language with Bing[64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Single Language with Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language with Bing[64-bit OS][System Locale id-ID]", "Microsoft Windows 8.1 Single Language مع Bing[32-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Single Language مع Bing[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Single Language[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Single Language[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Single Language[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Single Language[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1 Single Language[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ar-AE]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ar-EG]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ar-KW]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ar-OM]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-029]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-MY]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-BO]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-CL]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-CO]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-DO]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-HN]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-NI]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-PE]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-SV]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-US]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale es-UY]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale id-ID]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale th-TH]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale tr-TR]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale vi-VN]", "Microsoft Windows 8.1 Single Language[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 Single Language[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 8.1 Ultimate 2015[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Unilingue [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 Unilingue [64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 Unilingue avec Bing[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Unilingue[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Unilingue[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1 Unilingue[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1 with Bing [32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 with Bing [32-bit OS][System Locale en-IE]", "Microsoft Windows 8.1 with Bing [32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 with Bing [32-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale bg-BG]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-CA]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-IE]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-JM]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-TT]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-DO]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-PR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale es-VE]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale et-EE]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale fr-CA]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale ko-KR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale lt-LT]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale lv-LV]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale ro-RO]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale ru-RU]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale sr-Latn-RS]", "Microsoft Windows 8.1 with Bing [64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 with Bing[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 with Bing[32-bit OS][System Locale de-DE]", "Microsoft Windows 8.1 with Bing[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 with Bing[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1 with Bing[32-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 with Bing[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1 with Bing[64-bit OS][System Locale en-CA]", "Microsoft Windows 8.1 with Bing[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1 with Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 z usługą Bing [32-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 z usługą Bing [64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1 z usługą Bing[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 z usługą Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 z usługą Bing[64-bitowy OS][System Locale en-US]", "Microsoft Windows 8.1 z usługą Bing[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1 με Bing [32-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 με Bing [64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1 με Bing[32 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 με Bing[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1 με Bing[64 bit OS][System Locale en-US]", "Microsoft Windows 8.1 με Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 с Bing[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 עם Bing [32-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 עם Bing[32-bit OS][System Locale he-IL]", "Microsoft Windows 8.1 专业版(含 Media Center)[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 专业版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 专业版[32-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 专业版[64 位 OS][System Locale en-US]", "Microsoft Windows 8.1 专业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 专业版[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 专业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版 (含 Bing)[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版 (含必应)[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版 [64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版[32-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 中文版[64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1 中文版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 企业版[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 企业版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 企业版[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1 企業版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8.1 企業版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1 单语言版[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1 專業版 (含 Media Center)[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1 專業版[32 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1 專業版[64 位元 OS][System Locale en-US]", "Microsoft Windows 8.1 專業版[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8.1 專業版[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1 專業版[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1 專業版[64-bit OS][System Locale zh-HK]", "Microsoft Windows 8.1[32 bit OS][System Locale el-GR]", "Microsoft Windows 8.1[32 bit OS][System Locale it-IT]", "Microsoft Windows 8.1[32 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1[32 bitar OS][System Locale sv-SE]", "Microsoft Windows 8.1[32 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1[32 bits OS][System Locale de-DE]", "Microsoft Windows 8.1[32 bits OS][System Locale en-US]", "Microsoft Windows 8.1[32 bits OS][System Locale es-ES]", "Microsoft Windows 8.1[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1[32 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1[32 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1[32 位 OS][System Locale en-US]", "Microsoft Windows 8.1[32 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1[32-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1[32-bit OS][System Locale en-CA]", "Microsoft Windows 8.1[32-bit OS][System Locale en-GB]", "Microsoft Windows 8.1[32-bit OS][System Locale en-US]", "Microsoft Windows 8.1[32-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1[32-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1[32-bit OS][System Locale ro-RO]", "Microsoft Windows 8.1[32-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1[32-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1[32-biters OS][System Locale nb-NO]", "Microsoft Windows 8.1[32bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1[32-bitowy OS][System Locale en-US]", "Microsoft Windows 8.1[32-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1[32-bittinen OS][System Locale fi-FI]", "Microsoft Windows 8.1[64 bit OS][System Locale de-DE]", "Microsoft Windows 8.1[64 bit OS][System Locale el-GR]", "Microsoft Windows 8.1[64 bit OS][System Locale en-US]", "Microsoft Windows 8.1[64 bit OS][System Locale it-IT]", "Microsoft Windows 8.1[64 bit OS][System Locale pl-PL]", "Microsoft Windows 8.1[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8.1[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 8.1[64 bites OS][System Locale en-US]", "Microsoft Windows 8.1[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8.1[64 bits OS][System Locale de-DE]", "Microsoft Windows 8.1[64 bits OS][System Locale en-US]", "Microsoft Windows 8.1[64 bits OS][System Locale es-ES]", "Microsoft Windows 8.1[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8.1[64 bits OS][System Locale ja-JP]", "Microsoft Windows 8.1[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8.1[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8.1[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8.1[64 ビット OS][System Locale en-US]", "Microsoft Windows 8.1[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8.1[64 位 OS][System Locale en-GB]", "Microsoft Windows 8.1[64 位 OS][System Locale en-US]", "Microsoft Windows 8.1[64 位 OS][System Locale ja-JP]", "Microsoft Windows 8.1[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8.1[64 位 OS][System Locale zh-HK]", "Microsoft Windows 8.1[64 位元 OS][System Locale en-US]", "Microsoft Windows 8.1[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8.1[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8.1[64-bit OS][System Locale ar-EG]", "Microsoft Windows 8.1[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8.1[64-bit OS][System Locale bg-BG]", "Microsoft Windows 8.1[64-bit OS][System Locale ca-ES]", "Microsoft Windows 8.1[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 8.1[64-bit OS][System Locale da-DK]", "Microsoft Windows 8.1[64-bit OS][System Locale de-AT]", "Microsoft Windows 8.1[64-bit OS][System Locale de-CH]", "Microsoft Windows 8.1[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8.1[64-bit OS][System Locale el-GR]", "Microsoft Windows 8.1[64-bit OS][System Locale en-AU]", "Microsoft Windows 8.1[64-bit OS][System Locale en-CA]", "Microsoft Windows 8.1[64-bit OS][System Locale en-GB]", "Microsoft Windows 8.1[64-bit OS][System Locale en-IE]", "Microsoft Windows 8.1[64-bit OS][System Locale en-IN]", "Microsoft Windows 8.1[64-bit OS][System Locale en-JM]", "Microsoft Windows 8.1[64-bit OS][System Locale en-MY]", "Microsoft Windows 8.1[64-bit OS][System Locale en-NZ]", "Microsoft Windows 8.1[64-bit OS][System Locale en-PH]", "Microsoft Windows 8.1[64-bit OS][System Locale en-SG]", "Microsoft Windows 8.1[64-bit OS][System Locale en-TT]", "Microsoft Windows 8.1[64-bit OS][System Locale en-US]", "Microsoft Windows 8.1[64-bit OS][System Locale en-ZA]", "Microsoft Windows 8.1[64-bit OS][System Locale es-AR]", "Microsoft Windows 8.1[64-bit OS][System Locale es-BO]", "Microsoft Windows 8.1[64-bit OS][System Locale es-CL]", "Microsoft Windows 8.1[64-bit OS][System Locale es-CO]", "Microsoft Windows 8.1[64-bit OS][System Locale es-CR]", "Microsoft Windows 8.1[64-bit OS][System Locale es-DO]", "Microsoft Windows 8.1[64-bit OS][System Locale es-EC]", "Microsoft Windows 8.1[64-bit OS][System Locale es-ES]", "Microsoft Windows 8.1[64-bit OS][System Locale es-GT]", "Microsoft Windows 8.1[64-bit OS][System Locale es-HN]", "Microsoft Windows 8.1[64-bit OS][System Locale es-MX]", "Microsoft Windows 8.1[64-bit OS][System Locale es-NI]", "Microsoft Windows 8.1[64-bit OS][System Locale es-PA]", "Microsoft Windows 8.1[64-bit OS][System Locale es-PE]", "Microsoft Windows 8.1[64-bit OS][System Locale es-PR]", "Microsoft Windows 8.1[64-bit OS][System Locale es-PY]", "Microsoft Windows 8.1[64-bit OS][System Locale es-SV]", "Microsoft Windows 8.1[64-bit OS][System Locale es-US]", "Microsoft Windows 8.1[64-bit OS][System Locale es-UY]", "Microsoft Windows 8.1[64-bit OS][System Locale es-VE]", "Microsoft Windows 8.1[64-bit OS][System Locale et-EE]", "Microsoft Windows 8.1[64-bit OS][System Locale fr-BE]", "Microsoft Windows 8.1[64-bit OS][System Locale fr-CA]", "Microsoft Windows 8.1[64-bit OS][System Locale fr-CH]", "Microsoft Windows 8.1[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8.1[64-bit OS][System Locale he-IL]", "Microsoft Windows 8.1[64-bit OS][System Locale hr-HR]", "Microsoft Windows 8.1[64-bit OS][System Locale hu-HU]", "Microsoft Windows 8.1[64-bit OS][System Locale it-IT]", "Microsoft Windows 8.1[64-bit OS][System Locale ja-JP]", "Microsoft Windows 8.1[64-bit OS][System Locale ko-KR]", "Microsoft Windows 8.1[64-bit OS][System Locale lt-LT]", "Microsoft Windows 8.1[64-bit OS][System Locale lv-LV]", "Microsoft Windows 8.1[64-bit OS][System Locale nb-NO]", "Microsoft Windows 8.1[64-bit OS][System Locale nl-BE]", "Microsoft Windows 8.1[64-bit OS][System Locale nl-NL]", "Microsoft Windows 8.1[64-bit OS][System Locale pl-PL]", "Microsoft Windows 8.1[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8.1[64-bit OS][System Locale pt-PT]", "Microsoft Windows 8.1[64-bit OS][System Locale ro-RO]", "Microsoft Windows 8.1[64-bit OS][System Locale ru-RU]", "Microsoft Windows 8.1[64-bit OS][System Locale sk-SK]", "Microsoft Windows 8.1[64-bit OS][System Locale sl-SI]", "Microsoft Windows 8.1[64-bit OS][System Locale sv-SE]", "Microsoft Windows 8.1[64-bit OS][System Locale tr-TR]", "Microsoft Windows 8.1[64-bit OS][System Locale uk-UA]", "Microsoft Windows 8.1[64-bit OS][System Locale vi-VN]", "Microsoft Windows 8.1[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8.1[64-bit OS][System Locale zh-HK]", "Microsoft Windows 8.1[64-bit OS][System Locale zh-SG]", "Microsoft Windows 8.1[64-bit OS][System Locale zh-TW]", "Microsoft Windows 8.1[64-biters OS][System Locale nb-NO]", "Microsoft Windows 8.1[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8.1[64bitový OS][System Locale en-US]", "Microsoft Windows 8.1[64-bitowy OS][System Locale en-US]", "Microsoft Windows 8.1[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8.1[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows 8.1[64-разрядная OS][System Locale ru-RU]", "Microsoft Windows 8.1[64비트 OS][System Locale ko-KR]", "Microsoft Windows 8[32 bits OS][System Locale es-ES]", "Microsoft Windows 8[32 bits OS][System Locale fr-FR]", "Microsoft Windows 8[32 bits OS][System Locale pt-BR]", "Microsoft Windows 8[32 ビット OS][System Locale ja-JP]", "Microsoft Windows 8[32-bit OS][System Locale en-GB]", "Microsoft Windows 8[32-bit OS][System Locale en-US]", "Microsoft Windows 8[64 bit OS][System Locale el-GR]", "Microsoft Windows 8[64 bit OS][System Locale en-US]", "Microsoft Windows 8[64 bit OS][System Locale it-IT]", "Microsoft Windows 8[64 bit OS][System Locale tr-TR]", "Microsoft Windows 8[64 bitar OS][System Locale sv-SE]", "Microsoft Windows 8[64 bites OS][System Locale hu-HU]", "Microsoft Windows 8[64 bits OS][System Locale en-US]", "Microsoft Windows 8[64 bits OS][System Locale es-ES]", "Microsoft Windows 8[64 bits OS][System Locale fr-FR]", "Microsoft Windows 8[64 bits OS][System Locale nl-NL]", "Microsoft Windows 8[64 bits OS][System Locale pt-BR]", "Microsoft Windows 8[64 bits OS][System Locale pt-PT]", "Microsoft Windows 8[64 ビット OS][System Locale en-US]", "Microsoft Windows 8[64 ビット OS][System Locale ja-JP]", "Microsoft Windows 8[64 位 OS][System Locale zh-CN]", "Microsoft Windows 8[64 位元 OS][System Locale zh-HK]", "Microsoft Windows 8[64 位元 OS][System Locale zh-TW]", "Microsoft Windows 8[64-bit OS][System Locale ar-SA]", "Microsoft Windows 8[64-bit OS][System Locale cs-CZ]", "Microsoft Windows 8[64-bit OS][System Locale da-DK]", "Microsoft Windows 8[64-Bit OS][System Locale de-DE]", "Microsoft Windows 8[64-bit OS][System Locale el-GR]", "Microsoft Windows 8[64-bit OS][System Locale en-CA]", "Microsoft Windows 8[64-bit OS][System Locale en-GB]", "Microsoft Windows 8[64-bit OS][System Locale en-IN]", "Microsoft Windows 8[64-bit OS][System Locale en-US]", "Microsoft Windows 8[64-bit OS][System Locale es-AR]", "Microsoft Windows 8[64-bit OS][System Locale es-BO]", "Microsoft Windows 8[64-bit OS][System Locale es-EC]", "Microsoft Windows 8[64-bit OS][System Locale es-ES]", "Microsoft Windows 8[64-bit OS][System Locale es-GT]", "Microsoft Windows 8[64-bit OS][System Locale es-MX]", "Microsoft Windows 8[64-bit OS][System Locale es-VE]", "Microsoft Windows 8[64-bit OS][System Locale fr-CA]", "Microsoft Windows 8[64-bit OS][System Locale fr-FR]", "Microsoft Windows 8[64-bit OS][System Locale he-IL]", "Microsoft Windows 8[64-bit OS][System Locale ja-JP]", "Microsoft Windows 8[64-bit OS][System Locale pl-PL]", "Microsoft Windows 8[64-bit OS][System Locale pt-BR]", "Microsoft Windows 8[64-bit OS][System Locale zh-CN]", "Microsoft Windows 8[64-bit OS][System Locale zh-TW]", "Microsoft Windows 8[64-biters OS][System Locale nb-NO]", "Microsoft Windows 8[64bitový OS][System Locale cs-CZ]", "Microsoft Windows 8[64bitový OS][System Locale en-US]", "Microsoft Windows 8[64-bitowy OS][System Locale en-US]", "Microsoft Windows 8[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows 8[64-bittinen OS][System Locale fi-FI]", "Microsoft Windows CRUX 2015 [64-bit OS][System Locale en-US]", "Microsoft Windows Developer Preview[64-bit OS][System Locale ru-RU]", "Microsoft Windows Embedded 8.1 Industry Enterprise[32 bits OS][System Locale es-ES]", "Microsoft Windows Embedded 8.1 Industry Enterprise[32-bit OS][System Locale en-US]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64 bites OS][System Locale hu-HU]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64 bits OS][System Locale es-ES]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64 bits OS][System Locale pt-BR]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64 位 OS][System Locale zh-CN]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64-bit OS][System Locale en-GB]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64-bit OS][System Locale en-US]", "Microsoft Windows Embedded 8.1 Industry Enterprise[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Embedded 8.1 Industry Pro[32 bits OS][System Locale es-ES]", "Microsoft Windows Embedded 8.1 Industry Pro[32 bits OS][System Locale pt-BR]", "Microsoft Windows Embedded 8.1 Industry Pro[32-Bit OS][System Locale de-DE]", "Microsoft Windows Embedded 8.1 Industry Pro[32-bit OS][System Locale en-US]", "Microsoft Windows Embedded 8.1 Industry Pro[64 bit OS][System Locale tr-TR]", "Microsoft Windows Embedded 8.1 Industry Pro[64 bites OS][System Locale hu-HU]", "Microsoft Windows Embedded 8.1 Industry Pro[64 bits OS][System Locale es-ES]", "Microsoft Windows Embedded 8.1 Industry Pro[64 bits OS][System Locale fr-FR]", "Microsoft Windows Embedded 8.1 Industry Pro[64 bits OS][System Locale pt-BR]", "Microsoft Windows Embedded 8.1 Industry Pro[64 位 OS][System Locale zh-CN]", "Microsoft Windows Embedded 8.1 Industry Pro[64-Bit OS][System Locale de-DE]", "Microsoft Windows Embedded 8.1 Industry Pro[64-bit OS][System Locale en-GB]", "Microsoft Windows Embedded 8.1 Industry Pro[64-bit OS][System Locale en-US]", "Microsoft Windows Embedded 8.1 Industry Pro[64-bit OS][System Locale uk-UA]", "Microsoft Windows Embedded 8.1 Industry Pro[64비트 OS][System Locale ko-KR]", "Microsoft Windows Embedded Standard [32 bit OS][System Locale it-IT]", "Microsoft Windows Embedded Standard [32 bits OS][System Locale es-ES]", "Microsoft Windows Embedded Standard [32 bits OS][System Locale fr-FR]", "Microsoft Windows Embedded Standard [32-bit OS][System Locale en-US]", "Microsoft Windows Embedded Standard [32-bit OS][System Locale hu-HU]", "Microsoft Windows Embedded Standard [32-bit OS][System Locale pl-PL]", "Microsoft Windows Embedded Standard [32-bit OS][System Locale ru-RU]", "Microsoft Windows Embedded Standard [64 bit OS][System Locale it-IT]", "Microsoft Windows Embedded Standard [64 bits OS][System Locale es-ES]", "Microsoft Windows Embedded Standard [64 bits OS][System Locale fr-FR]", "Microsoft Windows Embedded Standard [64-Bit OS][System Locale de-DE]", "Microsoft Windows Embedded Standard [64-bit OS][System Locale en-US]", "Microsoft Windows Embedded Standard [64-bit OS][System Locale ru-RU]", "Microsoft Windows Server 2008 R2 Enterprise [64-bit OS][System Locale en-US]", "Microsoft Windows Server 2008 R2 Standard [64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2016 Datacenter Evaluation[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Datacenter Evaluation[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2016 Datacenter Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale nl-NL]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2016 Datacenter[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2016 Datacenter[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2016 Datacenter[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Datacenter[64 位元 OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2016 Datacenter[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2016 Datacenter[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2016 Datacenter[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2016 Datacenter[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2016 Datacenter[64비트 OS][System Locale ko-KR]", "Microsoft Windows Server 2016 Essentials[64 bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2016 Essentials[64 bit OS][System Locale tr-TR]", "Microsoft Windows Server 2016 Essentials[64 bites OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64 bites OS][System Locale hu-HU]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale nl-NL]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2016 Essentials[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2016 Essentials[64 ビット OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2016 Essentials[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Essentials[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2016 Essentials[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2016 Essentials[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2016 Essentials[64bitový OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2016 Essentials[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2016 Essentials[64비트 OS][System Locale ko-KR]", "Microsoft Windows Server 2016 Standard Evaluation[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2016 Standard Evaluation[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2016 Standard Evaluation[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2016 Standard Evaluation[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2016 Standard Evaluation[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Standard Evaluation[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2016 Standard Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2016 Standard[64 bit OS][System Locale tr-TR]", "Microsoft Windows Server 2016 Standard[64 bitar OS][System Locale sv-SE]", "Microsoft Windows Server 2016 Standard[64 bites OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 bites OS][System Locale hu-HU]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale nl-NL]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2016 Standard[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2016 Standard[64 ビット OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2016 Standard[64 位 OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Standard[64 位元 OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale ar-SA]", "Microsoft Windows Server 2016 Standard[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale en-GB]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale es-ES]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale fr-FR]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale pt-PT]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale zh-CN]", "Microsoft Windows Server 2016 Standard[64-bit OS][System Locale zh-TW]", "Microsoft Windows Server 2016 Standard[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2016 Standard[64bitový OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2016 Standard[64비트 OS][System Locale en-US]", "Microsoft Windows Server 2016 Standard[64비트 OS][System Locale ko-KR]", "Microsoft Windows Server 2016 Technical Preview 4 Essentials[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2016 Technical Preview 4[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2016 Technical Preview 4[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Datacenter Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2019 Datacenter Evaluation[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2019 Datacenter Evaluation[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2019 Datacenter Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Datacenter[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2019 Datacenter[64 bites OS][System Locale hu-HU]", "Microsoft Windows Server 2019 Datacenter[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2019 Datacenter[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2019 Datacenter[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2019 Datacenter[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2019 Datacenter[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2019 Datacenter[64 ビット OS][System Locale en-US]", "Microsoft Windows Server 2019 Datacenter[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2019 Datacenter[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2019 Datacenter[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2019 Datacenter[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2019 Datacenter[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Datacenter[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2019 Datacenter[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2019 Datacenter[64비트 OS][System Locale ko-KR]", "Microsoft Windows Server 2019 Essentials[64 bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Essentials[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2019 Essentials[64 bit OS][System Locale tr-TR]", "Microsoft Windows Server 2019 Essentials[64 bites OS][System Locale hu-HU]", "Microsoft Windows Server 2019 Essentials[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2019 Essentials[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2019 Essentials[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2019 Essentials[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2019 Essentials[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2019 Essentials[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2019 Essentials[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2019 Essentials[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2019 Essentials[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2019 Essentials[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Essentials[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2019 Essentials[64bitový OS][System Locale en-US]", "Microsoft Windows Server 2019 Essentials[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2019 Essentials[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2019 Standard Evaluation[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2019 Standard Evaluation[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard Evaluation[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2019 Standard Evaluation[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2019 Standard Evaluation[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2019 Standard Evaluation[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2019 Standard Evaluation[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard Evaluation[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64 bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64 bit OS][System Locale it-IT]", "Microsoft Windows Server 2019 Standard[64 bit OS][System Locale tr-TR]", "Microsoft Windows Server 2019 Standard[64 bitar OS][System Locale sv-SE]", "Microsoft Windows Server 2019 Standard[64 bites OS][System Locale hu-HU]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale es-ES]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale fr-FR]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale nl-NL]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale pt-BR]", "Microsoft Windows Server 2019 Standard[64 bits OS][System Locale pt-PT]", "Microsoft Windows Server 2019 Standard[64 ビット OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64 ビット OS][System Locale ja-JP]", "Microsoft Windows Server 2019 Standard[64 位 OS][System Locale zh-CN]", "Microsoft Windows Server 2019 Standard[64 位元 OS][System Locale zh-TW]", "Microsoft Windows Server 2019 Standard[64-Bit OS][System Locale de-DE]", "Microsoft Windows Server 2019 Standard[64-bit OS][System Locale en-GB]", "Microsoft Windows Server 2019 Standard[64-bit OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64bitový OS][System Locale cs-CZ]", "Microsoft Windows Server 2019 Standard[64bitový OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64-bitowy OS][System Locale en-US]", "Microsoft Windows Server 2019 Standard[64-bitowy OS][System Locale pl-PL]", "Microsoft Windows Server 2019 Standard[64비트 OS][System Locale ko-KR]", "Microsoft Windows Storage Server 2016 Standard[64 bits OS][System Locale en-US]", "Microsoft Windows Storage Server 2016 Standard[64 ビット OS][System Locale en-US]", "Microsoft Windows Storage Server 2016 Standard[64-bit OS][System Locale en-US]", "Microsoft Windows Storage Server 2016 Workgroup[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Affaires[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Affaires[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Affaires[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale fr-ca]", "Microsoft Windows 10 Éducation[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Éducation[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Enterprise N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Entreprise[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille [64-bit OS][System Locale en-US]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Famille [64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Famille en mode S[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille en mode S[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille Insider Preview[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille Insider Preview[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Famille Langue unique[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille[32 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale ar-SA]", "Microsoft Windows 10 Famille[64 bits OS][System Locale cs-CZ]", "Microsoft Windows 10 Famille[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Famille[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Famille[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Famille[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Famille[64 bits OS][System Locale ja-JP]", "Microsoft Windows 10 Famille[64 bits OS][System Locale pl-PL]", "Microsoft Windows 10 Famille[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Famille[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Famille[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Pro N[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel [64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel Éducation[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel Éducation[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel Éducation[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Éducation[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel Éducation[64-bit OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel Insider Preview[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel pour les Stations de travail[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[32 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale en-GB]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale es-ES]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale es-MX]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale fr-FR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale it-IT]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale pt-BR]", "Microsoft Windows 10 Professionnel[64 bits OS][System Locale ru-RU]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale en-CA]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale en-US]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-CA]", "Microsoft Windows 10 Professionnel[64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Basique [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Basique [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Basique N [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium Service Pack 1[64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Édition Familiale Premium Service Pack 1[64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium [32-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium [64-bit OS][System Locale fr-BE]", "Microsoft Windows 7 Édition Familiale Premium [64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Édition Familiale Premium [64-bit OS][System Locale fr-CH]", "Microsoft Windows 7 Édition Familiale Premium [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium N [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Familiale Premium N [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale Service Pack 1[64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale [32 bits OS][System Locale en-US]", "Microsoft Windows 7 Édition Intégrale [32 bits OS][System Locale es-ES]", "Microsoft Windows 7 Édition Intégrale [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale [32-bit OS][System Locale en-US]", "Microsoft Windows 7 Édition Intégrale [32-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale [64 bits OS][System Locale de-DE]", "Microsoft Windows 7 Édition Intégrale [64 bits OS][System Locale en-US]", "Microsoft Windows 7 Édition Intégrale [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale [64 bits OS][System Locale tr-TR]", "Microsoft Windows 7 Édition Intégrale [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Édition Intégrale [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale N [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Intégrale N [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Édition Starter [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [32 bits OS][System Locale en-US]", "Microsoft Windows 7 Entreprise [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [32-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [64 bits OS][System Locale de-DE]", "Microsoft Windows 7 Entreprise [64 bits OS][System Locale en-US]", "Microsoft Windows 7 Entreprise [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise [64-bit OS][System Locale en-US]", "Microsoft Windows 7 Entreprise [64-bit OS][System Locale fr-BE]", "Microsoft Windows 7 Entreprise [64-bit OS][System Locale fr-CA]", "Microsoft Windows 7 Entreprise [64-bit OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise N [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Entreprise N [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel N [32 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel N [64 bits OS][System Locale fr-FR]", "Microsoft Windows 7 Professionnel N [64-bit OS][System Locale fr-FR]", "Microsoft Windows® 8 Underground™ 2013 x64[64-bit OS][System Locale en-US]", "Microsoft 适用于虚拟桌面的 Windows 10 企业版[64 位 OS][System Locale zh-CN]", "nc.", "oft Corporation", "orporation", "Reckons International Team® Windows® 7 Regal™ Business Edition 2014 [32-bit OS][System Locale en", "Reckons International Team® Windows® 8.1 Heavier™ Edition 2014 x64[64-bit OS][System Locale en-U", "rporation", "sanet.st Windows 10 Enterprise[64-bit OS][System Locale en-US]", "sanet.st Windows 10 Lite Edition v10 2019[64 bits OS][System Locale es-ES]", "sanet.st Windows 10 Lite Edition v10 2019[64-bit OS][System Locale en-US]", "Sanet.st Windows 10 Lite Edition v9[32-bit OS][System Locale en-US]", "Sanet.st Windows 10 ROG EDITION V4 2019[64-bit OS][System Locale en-US]", "Semiconductor Corp.", "SLT™ Sevenity NextBuild - Performance Core [64-bit OS][System Locale pl-PL]", "SLT™ Sevenity NextBuild - Technical Pro Final [64-bit OS][System Locale pl-PL]", "Systems Incorporated", "t Corporation", "TEAM OS Aero SX 2015[64-bit OS][System Locale en-US]", "TEAM OS Windows 10 Super Edition v.3[64-bit OS][System Locale en-US]", "TeamOS 2017 Windows 10 ROG EDITION 2017[64-bit OS][System Locale en-US]", "TEAMOS Numix Duo[64-bit OS][System Locale en-US]", "TeamOS Windows 10 Airlock Premium Edition 2018[64-bit OS][System Locale en-US]", "TEAMOS Windows 10 Altum[64-bit OS][System Locale en-US]", "TeamOS Windows 7 Dark 2015 [64-bit OS][System Locale en-US]", "TEAMOS Windows 7 elementary [64-bit OS][System Locale en-US]", "TEAMOS-HKRG Windows CRUX [32-bit OS][System Locale en-US]", "TRIBAL WINDOWS 7 ULTIMATE [32-Bit OS][System Locale de-DE]", "TRIBAL WINDOWS 7 ULTIMATE [64-Bit OS][System Locale de-DE]", "WarezVirtual Eclipse7® [32 bits OS][System Locale es-ES]", "Windows 10 Alienware Windows 10 Alienware Edition 2019[64-bit OS][System Locale en-US]", "Windows 10 ROG EDITION V5 2019 Windows 10 ROG EDITION V5 2019[64-bit OS][System Locale en-US]", "Windows 10 Windows 10 ROG EDITION V6 2019[64-bit OS][System Locale en-US]", "Windows 10 Windows 10 Zero Extreme Edition 2019[64-bit OS][System Locale en-US]", "Windows 10 Windows 10 Zero Extreme Edition v1 2019[64-bit OS][System Locale en-US]", "www.teamos-hkrg.com Windows 10 NUMIX[32-bit OS][System Locale en-US]", "Майкрософт [64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Education N[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Education[32-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Education[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Education[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Education[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Education[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise 2016 LTSB[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Enterprise 2016 LTSB[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise LTSB (с долгосрочным обслуживани�", "Майкрософт Windows 10 Enterprise LTSC[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Enterprise LTSC[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise LTSC[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Enterprise LTSC[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise N 2016 LTSB[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Enterprise N 2016 LTSB[64-разрядная OS][System Locale en-US", "Майкрософт Windows 10 Enterprise N 2016 LTSB[64-разрядная OS][System Locale ru-RU", "Майкрософт Windows 10 Enterprise N[64-разрядная OS][System Locale cs-CZ]", "Майкрософт Windows 10 Enterprise N[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Enterprise N[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise[64-bit OS][System Locale en-GB]", "Майкрософт Windows 10 Enterprise[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Enterprise[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Enterprise[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Enterprise[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Home N[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Home Single Language [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Home Single Language [64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Home Single Language[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Home Single Language[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Home Single Language[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Home[32-bit OS][System Locale en-US]", "Майкрософт Windows 10 Home[32-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Home[32-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Home[64-bit OS][System Locale cs-CZ]", "Майкрософт Windows 10 Home[64-bit OS][System Locale de-DE]", "Майкрософт Windows 10 Home[64-bit OS][System Locale el-GR]", "Майкрософт Windows 10 Home[64-bit OS][System Locale en-GB]", "Майкрософт Windows 10 Home[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Home[64-bit OS][System Locale es-ES]", "Майкрософт Windows 10 Home[64-bit OS][System Locale fr-FR]", "Майкрософт Windows 10 Home[64-bit OS][System Locale he-IL]", "Майкрософт Windows 10 Home[64-bit OS][System Locale hu-HU]", "Майкрософт Windows 10 Home[64-bit OS][System Locale it-IT]", "Майкрософт Windows 10 Home[64-bit OS][System Locale nb-NO]", "Майкрософт Windows 10 Home[64-bit OS][System Locale pl-PL]", "Майкрософт Windows 10 Home[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Home[64-bit OS][System Locale sv-SE]", "Майкрософт Windows 10 Home[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Home[64bitový OS][System Locale cs-CZ]", "Майкрософт Windows 10 Home[64-bitowy OS][System Locale pl-PL]", "Майкрософт Windows 10 Home[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Home[64-разрядная OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro (Registered Trademark) [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro (Registered Trademark)[32-разрядная OS][System Locale r", "Майкрософт Windows 10 Pro (Registered Trademark)[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro (Registered Trademark)[64-разрядная OS][System Locale e", "Майкрософт Windows 10 Pro (Registered Trademark)[64-разрядная OS][System Locale r", "Майкрософт Windows 10 Pro [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro Education[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Pro Education[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro for Workstations[64-bit OS][System Locale en-GB]", "Майкрософт Windows 10 Pro for Workstations[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Pro for Workstations[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro for Workstations[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro Insider Preview[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro Insider Preview[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro Insider Preview[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro N[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Pro N[64-разрядная OS][System Locale en-GB]", "Майкрософт Windows 10 Pro N[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Pro N[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro для образовательных учреждений[32-р", "Майкрософт Windows 10 Pro для образовательных учреждений[64-bi", "Майкрософт Windows 10 Pro для образовательных учреждений[64-р", "Майкрософт Windows 10 Pro для рабочих станций[64-bit OS][System Locale ru", "Майкрософт Windows 10 Pro для рабочих станций[64-разрядная OS][S", "Майкрософт Windows 10 Pro[32-bit OS][System Locale en-US]", "Майкрософт Windows 10 Pro[32-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro[32-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro[32-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Pro[32-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro[32-разрядная OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro[64 bits OS][System Locale fr-FR]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale cs-CZ]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale de-DE]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale en-GB]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale es-ES]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale et-EE]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale fr-FR]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale hu-HU]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale it-IT]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale nl-NL]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale pl-PL]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale sv-SE]", "Майкрософт Windows 10 Pro[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro[64bitový OS][System Locale cs-CZ]", "Майкрософт Windows 10 Pro[64-bitowy OS][System Locale pl-PL]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale cs-CZ]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale da-DK]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale de-DE]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale el-GR]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale en-GB]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale es-ES]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale et-EE]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale fi-FI]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale fr-FR]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale he-IL]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale hu-HU]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale it-IT]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale ja-JP]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale ko-KR]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale lt-LT]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale lv-LV]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale nb-NO]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale nl-NL]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale pl-PL]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale pt-PT]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale ro-RO]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale sk-SK]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale sv-SE]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale tr-TR]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale uk-UA]", "Майкрософт Windows 10 Pro[64-разрядная OS][System Locale zh-CN]", "Майкрософт Windows 10 Professional[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 для бизнеса[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 для образовательных учреждений[32-раз", "Майкрософт Windows 10 для образовательных учреждений[64-bit OS", "Майкрософт Windows 10 для образовательных учреждений[64-раз", "Майкрософт Windows 10 Домашняя [64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Домашняя [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Домашняя [64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Домашняя Insider Preview для одного языка[64-�", "Майкрософт Windows 10 Домашняя Insider Preview[64-разрядная OS][System Lo", "Майкрософт Windows 10 Домашняя в S-режиме[64-разрядная OS][System", "Майкрософт Windows 10 Домашняя для одного языка [32-bit OS][System L", "Майкрософт Windows 10 Домашняя для одного языка [64-bit OS][System L", "Майкрософт Windows 10 Домашняя для одного языка[32-bit OS][System Lo", "Майкрософт Windows 10 Домашняя для одного языка[32-разрядна�", "Майкрософт Windows 10 Домашняя для одного языка[64-bit OS][System Lo", "Майкрософт Windows 10 Домашняя для одного языка[64-разрядна�", "Майкрософт Windows 10 Домашняя[32-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Домашняя[32-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Домашняя[64 bit OS][System Locale el-GR]", "Майкрософт Windows 10 Домашняя[64 bit OS][System Locale it-IT]", "Майкрософт Windows 10 Домашняя[64 ビット OS][System Locale ja-JP]", "Майкрософт Windows 10 Домашняя[64-Bit OS][System Locale de-DE]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale en-GB]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale et-EE]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale he-IL]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale pl-PL]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Домашняя[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Домашняя[64bitový OS][System Locale cs-CZ]", "Майкрософт Windows 10 Домашняя[64-bitowy OS][System Locale pl-PL]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale ar-SA]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale cs-CZ]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale da-DK]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale de-DE]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale el-GR]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale en-GB]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale es-ES]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale et-EE]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale fi-FI]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale fr-FR]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale he-IL]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale hu-HU]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale it-IT]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale ja-JP]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale ko-KR]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale lt-LT]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale lv-LV]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale nb-NO]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale nl-NL]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale pl-PL]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale sk-SK]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale sl-SI]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale sv-SE]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale tr-TR]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale uk-UA]", "Майкрософт Windows 10 Домашняя[64-разрядная OS][System Locale zh-CN]", "Майкрософт Windows 10 Корпоративная 2015 с долгосрочным обсл", "Майкрософт Windows 10 Корпоративная 2016 с долгосрочным обсл", "Майкрософт Windows 10 Корпоративная 2017 с долгосрочным обсл", "Майкрософт Windows 10 Корпоративная 2018 с долгосрочным обсл", "Майкрософт Windows 10 Корпоративная Insider Preview[64-разрядная OS]", "Майкрософт Windows 10 Корпоративная LTSC[32-разрядная OS][System Loc", "Майкрософт Windows 10 Корпоративная LTSC[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Корпоративная LTSC[64-разрядная OS][System Loc", "Майкрософт Windows 10 Корпоративная N LTSC[64-разрядная OS][System L", "Майкрософт Windows 10 Корпоративная для виртуальных рабоч�", "Майкрософт Windows 10 Корпоративная[32-разрядная OS][System Locale e", "Майкрософт Windows 10 Корпоративная[32-разрядная OS][System Locale r", "Майкрософт Windows 10 Корпоративная[64-bit OS][System Locale en-US]", "Майкрософт Windows 10 Корпоративная[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 10 Корпоративная[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale b", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale d", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale e", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale f", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale h", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale p", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale r", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale u", "Майкрософт Windows 10 Корпоративная[64-разрядная OS][System Locale z", "Майкрософт Windows 8 для одного языка[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8 для одного языка[64-разрядная OS][System Local", "Майкрософт Windows 8 Корпоративная[64-разрядная OS][System Locale ru", "Майкрософт Windows 8 Профессиональная с Media Center[64-разрядна�", "Майкрософт Windows 8 Профессиональная[32-разрядная OS][System Loc", "Майкрософт Windows 8 Профессиональная[64-разрядная OS][System Loc", "Майкрософт Windows 8.1 [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Lite by Den[32-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Lite by Den[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Lite[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Pro by blackman[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1 для одного языка [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 для одного языка с Bing [32-bit OS][System Locale ru", "Майкрософт Windows 8.1 для одного языка с Bing [32-bit OS][System Locale uk", "Майкрософт Windows 8.1 для одного языка с Bing [64-bit OS][System Locale ru", "Майкрософт Windows 8.1 для одного языка с Bing[32-разрядная OS][Sy", "Майкрософт Windows 8.1 для одного языка с Bing[64-bit OS][System Locale ru-", "Майкрософт Windows 8.1 для одного языка с Bing[64-bit OS][System Locale uk-", "Майкрософт Windows 8.1 для одного языка с Bing[64-разрядная OS][Sy", "Майкрософт Windows 8.1 для одного языка[32-разрядная OS][System Loc", "Майкрософт Windows 8.1 для одного языка[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 для одного языка[64-разрядная OS][System Loc", "Майкрософт Windows 8.1 Корпоративная[32-разрядная OS][System Locale", "Майкрософт Windows 8.1 Корпоративная[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Корпоративная[64-разрядная OS][System Locale", "Майкрософт Windows 8.1 Профессиональная с Media Center[32-разрядн�", "Майкрософт Windows 8.1 Профессиональная с Media Center[64-bit OS][System", "Майкрософт Windows 8.1 Профессиональная с Media Center[64-разрядн�", "Майкрософт Windows 8.1 Профессиональная[32-разрядная OS][System L", "Майкрософт Windows 8.1 Профессиональная[64-bit OS][System Locale en-US]", "Майкрософт Windows 8.1 Профессиональная[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 Профессиональная[64-bit OS][System Locale uk-UA]", "Майкрософт Windows 8.1 Профессиональная[64-разрядная OS][System L", "Майкрософт Windows 8.1 с Bing [64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 с Bing [64-bit OS][System Locale uk-UA]", "Майкрософт Windows 8.1 с Bing[32-bit OS][System Locale en-US]", "Майкрософт Windows 8.1 с Bing[32-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1 с Bing[64-bit OS][System Locale en-US]", "Майкрософт Windows 8.1 с Bing[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1 с Bing[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 8.1 с Bing[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1[32-bit OS][System Locale en-US]", "Майкрософт Windows 8.1[32-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8.1[64-Bit OS][System Locale de-DE]", "Майкрософт Windows 8.1[64-bit OS][System Locale en-US]", "Майкрософт Windows 8.1[64-bit OS][System Locale he-IL]", "Майкрософт Windows 8.1[64-bit OS][System Locale ru-RU]", "Майкрософт Windows 8.1[64-bitowy OS][System Locale pl-PL]", "Майкрософт Windows 8.1[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 8.1[64-разрядная OS][System Locale he-IL]", "Майкрософт Windows 8.1[64-разрядная OS][System Locale pl-PL]", "Майкрософт Windows 8.1[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows 8[64-bit OS][System Locale en-US]", "Майкрософт Windows 8[64-разрядная OS][System Locale en-US]", "Майкрософт Windows 8[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Embedded 8.1 Industry Enterprise[32-разрядная OS][System Local", "Майкрософт Windows Embedded 8.1 Industry Enterprise[64-разрядная OS][System Local", "Майкрософт Windows Embedded 8.1 Industry Pro[32-разрядная OS][System Locale ru-RU", "Майкрософт Windows Embedded 8.1 Industry Pro[64-разрядная OS][System Locale ru-RU", "Майкрософт Windows Server 2016 Datacenter[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Server 2016 Essentials[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Server 2016 Standard Evaluation[64-разрядная OS][System Locale", "Майкрософт Windows Server 2016 Standard[64-bit OS][System Locale en-US]", "Майкрософт Windows Server 2016 Standard[64-разрядная OS][System Locale en-US]", "Майкрософт Windows Server 2016 Standard[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Server 2019 Datacenter[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Server 2019 Essentials[64-разрядная OS][System Locale ru-RU]", "Майкрософт Windows Server 2019 Standard Evaluation[64-разрядная OS][System Locale", "Майкрософт Windows Server 2019 Standard[64-разрядная OS][System Locale en-US]", "Майкрософт Windows Server 2019 Standard[64-разрядная OS][System Locale ru-RU]", "Майкрософт Ознакомительная версия Windows 10 Корпоративна", "Майкрософт Удаленный сервер Windows 10[64-разрядная OS][System Loc"} + +var video_controller = []string{"(PE) Intel(R) 2nd Generation SandyBridge HD Graphics", "(PE) Intel(R) CherryView (Braswell) HD Graphics", "(PE64) AMD Radeon HD 6570 Graphics/7570/8550 Series", "(PE64) Intel(R) 2nd Generation SandyBridge HD Graphics", "(PE64) Intel(R) 2nd Generation SandyBridge HD Graphics 3000", "(PE64) Intel(R) 3rd Generation IvyBridge HD Graphics 4000", "(PE64) NVIDIA GeForce GT 610M/620M/710M/720M/800M/820M/ Quadro NVS 5200M", "(Vista) ATI Mobility Radeon HD 5730", "@oem0.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem1.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem10.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem100.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem101.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem102.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem103.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem104.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem105.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem106.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem107.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem108.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem109.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem11.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem110.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem111.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem112.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem113.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem114.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem115.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem116.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem117.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem118.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem119.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem12.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem120.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem121.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem122.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem123.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem124.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem125.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem126.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem127.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem128.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem129.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem13.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem130.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem131.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem132.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem133.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem134.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem135.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem136.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem137.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem138.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem139.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem14.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem140.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem141.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem142.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem143.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem144.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem145.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem146.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem147.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem148.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem149.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem15.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem150.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem151.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem152.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem153.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem154.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem155.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem156.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem157.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem158.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem159.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem16.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem160.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem161.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem162.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem163.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem164.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem165.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem166.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem167.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem168.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem169.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem17.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem170.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem171.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem172.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem173.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem174.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem175.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem176.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem177.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem178.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem179.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem18.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem180.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem182.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem184.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem185.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem187.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem188.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem189.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem19.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem190.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem191.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem192.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem193.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem195.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem196.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem197.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem198.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem199.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem2.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem20.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem200.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem201.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem203.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem204.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem205.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem206.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem207.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem208.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem209.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem21.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem210.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem211.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem212.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem213.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem215.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem217.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem218.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem219.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem22.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem220.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem222.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem225.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem227.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem228.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem23.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem232.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem233.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem236.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem237.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem24.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem25.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem259.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem26.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem262.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem263.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem264.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem265.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem266.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem267.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem27.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem273.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem274.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem276.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem279.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem28.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem280.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem281.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem282.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem29.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem3.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem30.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem304.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem31.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem311.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem319.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem32.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem327.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem33.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem34.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem346.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem35.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem353.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem36.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem37.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem376.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem38.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem387.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem39.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem4.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem40.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem41.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem42.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem43.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem44.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem448.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem45.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem46.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem462.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem47.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem48.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem49.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem5.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem50.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem51.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem52.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem53.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem54.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem55.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem56.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem57.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem58.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem584.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem59.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem6.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem60.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem61.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem62.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem63.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem64.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem65.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem66.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem67.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem672.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem68.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem69.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem7.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem70.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem71.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem72.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem73.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem74.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem75.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem76.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem77.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem78.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem79.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem8.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem80.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem81.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem82.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem83.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem84.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem85.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem86.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem87.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem88.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem89.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem9.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem90.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem91.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem92.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem93.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem94.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem95.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem96.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem97.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem98.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "@oem99.inf,%dwmirrordrv% 64-bit;DameWare Development Mirror Driver 64-bit", "128MB ATI Radeon X1300", "128MB ATI Radeon X1300 Secondary", "128MB ATI RADEON X600 SE", "256MB ATI Radeon X1300PRO", "256MB ATI Radeon X1300PRO Secondary", "256MB ATI RADEON X600", "256MB ATI RADEON X600 Secondary", "3D Video Controller", "3D 视频控制器", "3DP (ATI Radeon Xpress 1200 Series)", "3DP (ATI RADEON XPRESS 200 Series)", "3DP Edition (Intel HD Graphics 620)", "3DP Edition (Intel HD Graphics 630)", "3DP Edition (Intel UHD Graphics 620)", "4)", "9e�#udr!���C(ɫ�������", "ABT komado", "Activu Capture Driver", "Adaptador de gráficos VGA padrão", "Adaptador de pantalla básico de Microsoft", "Adaptador de pantalla básico de Microsoft (no compatible con ACPI)", "Adaptador de Vídeo Básico da Microsoft", "Adaptador de Vídeo Básico da Microsoft (Sem suporte de ACPI)", "Ahranta Virtual Display Driver(ARTDRV101)", "Ai Squared 10.1 Mirror Driver", "Ai Squared 11 Mirror Driver", "Ai Squared Mirror Driver", "Air Display (Microsoft Corporation - WDDM v1.1)", "Air Display Graphics Adapter", "Air Display Mirror Adapter", "Általános Microsoft-videokártya", "AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics", "AMD (ATI) FirePro M4000 (FireGL V) Mobility Pro Graphics", "AMD (ATI) FirePro M5950 (FireGL) Mobility Pro Graphics", "AMD (ATI) FirePro M5950 Mobility Pro Graphics", "AMD (ATI) FirePro M6000 (FireGL V) Mobility Pro Graphics", "AMD (ATI) FirePro M8900 (FireGL) Mobility Pro Graphics", "AMD (ATI) FirePro M8900 Mobility Pro Graphics", "AMD Embedded Radeon E9173", "AMD FirePro 2270", "AMD FirePro 2270 (ATI FireGL)", "AMD FirePro 2460", "AMD FirePro M4000", "AMD FirePro M4000 Mobility Pro Graphics", "AMD FirePro M5100", "AMD FirePro M5100 FireGL V", "AMD FirePro M6000", "AMD FirePro M6000 Mobility Pro Graphics", "AMD FirePro M6100", "AMD FirePro M6100 FireGL V", "AMD FirePro S10000", "AMD FirePro V3900", "AMD FirePro V3900 (ATI FireGL)", "AMD FirePro V3900 (FireGL V)", "AMD FirePro V3900 (FireGL V) Graphics Adapter", "AMD FirePro V4900", "AMD FirePro V4900 (ATI FireGL)", "AMD FirePro V4900 (FireGL V)", "AMD FirePro V4900 (FireGL V) Graphics Adapter", "AMD FirePro V5900", "AMD FirePro V5900 (ATI FireGL)", "AMD FirePro V5900 (FireGL V)", "AMD FirePro V5900 (FireGL V) Graphics Adapter", "AMD FirePro V7900", "AMD FirePro V7900 (FireGL V)", "AMD FirePro V7900 (FireGL V) Graphics Adapter", "AMD FirePro W2100", "AMD FirePro W2100 (FireGL V)", "AMD FirePro W2100 (FireGL V) Graphics Adapter", "AMD FirePro W2100 Graphics Adapter", "AMD FirePro W4100", "AMD FirePro W4100 (FireGL V)", "AMD FirePro W4100 (FireGL V) Graphics Adapter", "AMD FirePro W4100 Graphics Adapter", "AMD FirePro W4170M", "AMD FirePro W4170M (FireGL V)", "AMD FirePro W4300", "AMD FirePro W5000", "AMD FirePro W5000 (FireGL V)", "AMD FirePro W5000 (FireGL V) Graphics Adapter", "AMD FirePro W5000 Graphics Adapter", "AMD FirePro W5100", "AMD FirePro W5100 (FireGL V)", "AMD FirePro W5100 (FireGL V) Graphics Adapter", "AMD FirePro W5100 Graphics Adapter", "AMD FirePro W5130M", "AMD FirePro W5170M", "AMD FirePro W600", "AMD FirePro W7000", "AMD FirePro W7000 (FireGL V)", "AMD FirePro W7000 (FireGL V) Graphics Adapter", "AMD FirePro W7000 Graphics Adapter", "AMD FirePro W7100", "AMD FirePro W7100 (FireGL V)", "AMD FirePro W7100 Graphics Adapter", "AMD FirePro W7170M", "AMD FirePro W8000", "AMD FirePro W8000 (FireGL V) Graphics Adapter", "AMD FirePro W8100", "AMD FirePro W8100 (FireGL V)", "AMD FirePro W8100 Graphic Adapter", "AMD FirePro W9000", "AMD FirePro W9100", "AMD FirePro W9100 (FireGL V)", "AMD FirePro W9100 Graphics Adapter", "AMD FireStream 9170", "AMD FireStream 9250", "AMD Mobility Radeon HD 5000", "AMD Mobility Radeon HD 5000 Series", "AMD Mobility Radeon HD 5570", "AMD Mobility Radeon HD 5800 Series", "AMD Radeon R5 M240", "AMD Radeon R7 240", "AMD Radeon (TM) HD 8500M/8700M", "AMD Radeon (TM) Pro WX 3200 Graphics", "AMD Radeon (TM) Pro WX 7100 Graphics", "AMD Radeon (TM) Pro WX 7130 Graphics", "AMD Radeon (TM) R5 340", "AMD Radeon (TM) R5 A335", "AMD Radeon (TM) R5 M315", "AMD Radeon (TM) R5 M330", "AMD Radeon (TM) R5 M335", "AMD Radeon (TM) R5 M415 Graphics", "AMD Radeon (TM) R5 M430", "AMD Radeon (TM) R5 M430 Graphics", "AMD Radeon (TM) R7 300 Series", "AMD Radeon (TM) R7 340", "AMD Radeon (TM) R7 350", "AMD Radeon (TM) R7 360 Series", "AMD Radeon (TM) R7 370 Series", "AMD Radeon (TM) R7 370 Series Graphics", "AMD Radeon (TM) R7 450", "AMD Radeon (TM) R7 M340", "AMD Radeon (TM) R7 M360", "AMD Radeon (TM) R7 M370", "AMD Radeon (TM) R9 200 Series", "AMD Radeon (TM) R9 350", "AMD Radeon (TM) R9 360", "AMD Radeon (TM) R9 370", "AMD Radeon (TM) R9 370 Series", "AMD Radeon (TM) R9 380", "AMD Radeon (TM) R9 380 Series", "AMD Radeon (TM) R9 390 Series", "AMD Radeon (TM) R9 Fury Series", "AMD Radeon (TM) R9 Fury X", "AMD Radeon (TM) R9 M360", "AMD Radeon (TM) R9 M375X", "AMD Radeon (TM) R9 M385", "AMD Radeon (TM) R9 M390X", "AMD Radeon (TM) R9 M470X", "AMD Radeon (TM) R9 M485X", "AMD Radeon (TM) RX 460", "AMD Radeon (TM) RX 470", "AMD Radeon (TM) RX 480", "AMD Radeon (TM) RX 560", "AMD Radeon (TM) RX 560X", "AMD Radeon (TM) RX 570", "AMD Radeon (TM) RX 570X", "AMD Radeon (TM) RX 580", "AMD Radeon (TM) RX 580X", "AMD Radeon 520 Series", "AMD Radeon 540X Series", "AMD Radeon 610 Series", "AMD Radeon 6600M and 6700M Series", "AMD Radeon 6600M and 6700M Series (Engineering Sample - WDDM v1.20)", "AMD Radeon 6600M and 6700M Series (Microsoft Corporation - WDDM v1.20)", "AMD Radeon 6600M and 6700M Series (Microsoft Corporation- WDDM v1.20)", "AMD Radeon E8860", "AMD Radeon HD 5400 Series", "AMD Radeon HD 5450", "AMD Radeon HD 5500 Series", "AMD Radeon HD 5570", "AMD Radeon HD 5600/5700", "AMD Radeon HD 5670", "AMD Radeon HD 5700 Series", "AMD Radeon HD 5800 Series", "AMD Radeon HD 5900 Series", "AMD Radeon HD 6200 series Graphics", "AMD Radeon HD 6250 Graphics", "AMD Radeon HD 6290 Graphics", "AMD Radeon HD 6300 series Graphics", "AMD Radeon HD 6300M Series", "AMD Radeon HD 6310 Graphics", "AMD Radeon HD 6320 Graphics", "AMD Radeon HD 6320 Graphics (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 6350", "AMD Radeon HD 6380G", "AMD Radeon HD 6400 Series", "AMD Radeon HD 6400M Series", "AMD Radeon HD 6400M Series (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 6450", "AMD Radeon HD 6450 (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 6450 (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 6450M", "AMD Radeon HD 6470M", "AMD Radeon HD 6480G", "AMD Radeon HD 6490M", "AMD Radeon HD 6500 Series", "AMD Radeon HD 6500M/5600/5700 Series", "AMD Radeon HD 6520G", "AMD Radeon HD 6570", "AMD Radeon HD 6570M/5700 Series", "AMD Radeon HD 6600 Series", "AMD Radeon HD 6600A Series", "AMD Radeon HD 6620G", "AMD Radeon HD 6620G (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 6630M", "AMD Radeon HD 6670", "AMD Radeon HD 6670 (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 6670 (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 6700 Series", "AMD Radeon HD 6700M Series", "AMD Radeon HD 6750", "AMD Radeon HD 6770", "AMD Radeon HD 6800 Series", "AMD Radeon HD 6800M Series", "AMD Radeon HD 6870", "AMD Radeon HD 6870M", "AMD Radeon HD 6900 Series", "AMD Radeon HD 6900M Series", "AMD Radeon HD 6950", "AMD Radeon HD 6970", "AMD Radeon HD 6970M", "AMD Radeon HD 6990", "AMD Radeon HD 7000 series", "AMD Radeon HD 7000 series (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 7300 Series", "AMD Radeon HD 7350", "AMD Radeon HD 7350 Graphics", "AMD Radeon HD 7400 Series", "AMD Radeon HD 7400 Series (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 7400M Series", "AMD Radeon HD 7400M Series (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 7400M Series (Microsoft Corporation- WDDM v1.20)", "AMD Radeon HD 7420G", "AMD Radeon HD 7430M", "AMD Radeon HD 7450", "AMD Radeon HD 7450 Graphics", "AMD Radeon HD 7450M", "AMD Radeon HD 7470", "AMD Radeon HD 7470 Series", "AMD Radeon HD 7470M", "AMD Radeon HD 7480D", "AMD Radeon HD 7500 Series", "AMD Radeon HD 7500 Series (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 7500 Series (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 7500/7600 Series", "AMD Radeon HD 7500M/7600M Series", "AMD Radeon HD 7520G + HD 7500M/7600M Dual Graphics", "AMD Radeon HD 7540D", "AMD Radeon HD 7560D", "AMD Radeon HD 7570", "AMD Radeon HD 7570M", "AMD Radeon HD 7600 Series", "AMD Radeon HD 7600A Series", "AMD Radeon HD 7600A Series (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 7600M Series", "AMD Radeon HD 7600M Series (Engineering Sample - WDDM v1.20)", "AMD Radeon HD 7600M Series (Microsoft Corporation - WDDM v1.20)", "AMD Radeon HD 7640G", "AMD Radeon HD 7640G + 7500M/7600M Dual Graphics", "AMD Radeon HD 7640G + 7650M Dual Graphics", "AMD Radeon HD 7640G + HD 7500M/7600M Dual Graphics", "AMD Radeon HD 7650A", "AMD Radeon HD 7650M", "AMD Radeon HD 7660G", "AMD Radeon HD 7670", "AMD Radeon HD 7670M", "AMD Radeon HD 7700 Series", "AMD Radeon HD 7700M Series", "AMD Radeon HD 7730M", "AMD Radeon HD 7770", "AMD Radeon HD 7770 GHz Edition", "AMD Radeon HD 7800 Series", "AMD Radeon HD 7800M Series", "AMD Radeon HD 7870", "AMD Radeon HD 7900 Series", "AMD Radeon HD 7950", "AMD Radeon HD 7970", "AMD Radeon HD 7970M", "AMD Radeon HD 8200 / R3 Series", "AMD Radeon HD 8240", "AMD Radeon HD 8250", "AMD Radeon HD 8310G", "AMD Radeon HD 8330", "AMD Radeon HD 8350", "AMD Radeon HD 8370D", "AMD Radeon HD 8470", "AMD Radeon HD 8470 Graphics", "AMD Radeon HD 8470D", "AMD Radeon HD 8490", "AMD Radeon HD 8500 Series", "AMD Radeon HD 8500M", "AMD Radeon HD 8500M Series", "AMD Radeon HD 8510G", "AMD Radeon HD 8510G + 8670M Dual Graphics", "AMD Radeon HD 8510G + HD 8600M Dual Graphics", "AMD Radeon HD 8510G + HD 8670M Dual Graphics", "AMD Radeon HD 8570", "AMD Radeon HD 8570 Graphics", "AMD Radeon HD 8570D", "AMD Radeon HD 8570D + HD 8490 Dual Graphics", "AMD Radeon HD 8570D + HD8490 Dual Graphics", "AMD Radeon HD 8570D + R5 240 Dual Graphics", "AMD Radeon HD 8600 Series", "AMD Radeon HD 8600/8700M", "AMD Radeon HD 8600M Series", "AMD Radeon HD 8610G", "AMD Radeon HD 8670D", "AMD Radeon HD 8670D + HD 8490 Dual Graphics", "AMD Radeon HD 8670M", "AMD Radeon HD 8690A", "AMD Radeon HD 8690M", "AMD Radeon HD 8730M", "AMD Radeon HD 8750A", "AMD Radeon HD 8790M", "AMD Radeon HD 8800M Series", "AMD Radeon HD 8850M", "AMD Radeon HD 8870", "AMD Radeon HD 8870M", "AMD Radeon HD 8950", "AMD Radeon HD 8990", "AMD Radeon HD R5 230", "AMD RADEON HD5450", "AMD Radeon HD6310 Graphics", "AMD Radeon HD7700 Series", "AMD Radeon Hybrid (Blocked)", "AMD Radeon Pro WX 2100", "AMD Radeon Pro WX 2100 Graphics", "AMD Radeon Pro WX 3100", "AMD Radeon Pro WX 3200 Series", "AMD Radeon R2", "AMD Radeon R3", "AMD Radeon R4", "AMD Radeon R5", "AMD Radeon R5 200 Series", "AMD Radeon R5 220", "AMD Radeon R5 220 Series", "AMD Radeon R5 230", "AMD Radeon R5 235", "AMD Radeon R5 240", "AMD Radeon R5 310", "AMD Radeon R5 320", "AMD Radeon R5 330", "AMD Radeon R5 340", "AMD Radeon R5 430", "AMD Radeon R5 A240", "AMD Radeon R5 A315", "AMD Radeon R5 Graphics", "AMD Radeon R5 M200 / HD 8500M Series", "AMD Radeon R5 M200 Series", "AMD Radeon R5 M230", "AMD Radeon R5 M230 Series", "AMD Radeon R5 M240", "AMD Radeon R5 M315", "AMD Radeon R5 M335", "AMD Radeon R5 M430", "AMD Radeon R5 M435", "AMD Radeon R6", "AMD Radeon R6 Graphics", "AMD Radeon R6 Graphics + R7 M265DX Dual Graphics", "AMD Radeon R6 M345DX", "AMD Radeon R7 200 Series", "AMD Radeon R7 200 Series (Engineering Sample - WDDM v2.0)", "AMD Radeon R7 240", "AMD Radeon R7 240 Series", "AMD Radeon R7 250 Series", "AMD Radeon R7 350 Series", "AMD Radeon R7 370 Series", "AMD Radeon R7 430", "AMD Radeon R7 450", "AMD Radeon R7 A265", "AMD Radeon R7 A360", "AMD Radeon R7 A370", "AMD Radeon R7 Graphics", "AMD Radeon R7 Graphics + R7 M440 Dual Graphics", "AMD Radeon R7 M260", "AMD Radeon R7 M260 (Engineering Sample - WDDM v2.0)", "AMD Radeon R7 M265", "AMD Radeon R7 M265 Series", "AMD Radeon R7 M265DX", "AMD Radeon R7 M270", "AMD Radeon R7 M360", "AMD Radeon R7 M370", "AMD Radeon R7 M440", "AMD Radeon R7 M460", "AMD Radeon R8 M350DX", "AMD Radeon R9 200 / HD 7900 Series", "AMD Radeon R9 200 Series", "AMD Radeon R9 255", "AMD Radeon R9 260", "AMD Radeon R9 270", "AMD Radeon R9 270 1024SP", "AMD Radeon R9 360", "AMD Radeon R9 370", "AMD Radeon R9 380", "AMD Radeon R9 M200X Series", "AMD Radeon R9 M265X", "AMD Radeon R9 M270X", "AMD Radeon R9 M290X", "AMD Radeon R9 M295X", "AMD Radeon R9 M390", "AMD Radeon R9 M390X", "AMD Radeon R9 M395X", "AMD Radeon RX 550", "AMD Radeon RX 5500M Series", "AMD Radeon RX 5600 XT", "AMD Radeon RX 5700", "AMD Radeon RX 5700 XT", "AMD Radeon RX 5700 XT 50th Anniversary", "AMD Radeon RX 5700M Series", "AMD Radeon RX 580 2048SP", "AMD Radeon RX 640 Series", "AMD Radeon RX Vega 64", "AMD Radeon RX5600", "AMD Radeon VII", "AMD Radeon X300/X550/X1050 Series", "AMD Radeon(TM) 540", "AMD Radeon(TM) 630", "AMD Radeon(TM) Graphics", "AMD Radeon(TM) HD 6380G", "AMD Radeon(TM) HD 6400 Series", "AMD Radeon(TM) HD 6480G", "AMD Radeon(TM) HD 6520G", "AMD Radeon(TM) HD 6620G", "AMD Radeon(TM) HD 7450", "AMD Radeon(TM) HD 7450M", "AMD Radeon(TM) HD 8350", "AMD Radeon(TM) HD 8490", "AMD RADEON(TM) HD6450", "AMD Radeon(TM) HD8490", "AMD Radeon(TM) HD8570", "AMD Radeon(TM) HD8970M", "AMD Radeon(TM) R2 Graphics", "AMD Radeon(TM) R3 Graphics", "AMD Radeon(TM) R4 Graphics", "AMD RADEON(TM) R5 230", "AMD Radeon(TM) R5 230 series", "AMD Radeon(TM) R5 235X", "AMD Radeon(TM) R5 240", "AMD Radeon(TM) R5 310", "AMD Radeon(TM) R5 340X", "AMD Radeon(TM) R5 A220X", "AMD Radeon(TM) R5 A315", "AMD Radeon(TM) R5 Graphics", "AMD Radeon(TM) R5 M435", "AMD Radeon(TM) R5 M435 Graphics", "AMD Radeon(TM) R6 Graphics", "AMD Radeon(TM) R7 250", "AMD Radeon(TM) R7 350X", "AMD Radeon(TM) R7 360 Series", "AMD Radeon(TM) R7 Graphics", "AMD Radeon(TM) R7 M440", "AMD Radeon(TM) R7 M465", "AMD Radeon(TM) R7 M465X", "AMD Radeon(TM) R8 M445 DX", "AMD Radeon(TM) R8 M445DX Graphics", "AMD Radeon(TM) R9 270", "AMD Radeon(TM) R9 270X", "AMD Radeon(TM) R9 290X", "AMD Radeon(TM) R9 370 Series", "AMD Radeon(TM) RX 540", "AMD Radeon(TM) RX 560 Series", "AMD Radeon(TM) RX 5600M Series", "AMD Radeon(TM) RX Vega 10 Graphics", "AMD Radeon(TM) RX Vega 11 Graphics", "AMD Radeon(TM) RX460", "AMD Radeon(TM) Vega 10 Graphics", "AMD Radeon(TM) Vega 11 Graphics", "AMD Radeon(TM) Vega 3 Graphics", "AMD Radeon(TM) Vega 6 Graphics", "AMD Radeon(TM) Vega 8 Graphics", "AMD Radeon. R5 A330", "AMD RadeonT R5 430", "AMD RadeonT R7 450", "AMD Ryzen 5 2500U with Radeon Vega Graphics", "AMD Ryzen 7 2700U with Radeon Vega Graphics", "Artista Virtual Display (WDDM)", "Asiastar Graphics Adapter", "ASPEED Graphics Family(WDDM)", "ASUS EAH4350 series", "ASUS EAH5450", "ASUS EAH5450 Series", "ASUS EAH5570 series", "ASUS EAH5670 Series", "ASUS EAH5770 Series", "ASUS EAH5870 Series", "ASUS EAH6450", "ASUS EAH6450 Series", "ASUS EAH6570 Series", "ASUS EAH6670 Series", "ASUS EAH6870 Series", "ASUS HD5450", "ASUS HD5450 Series", "ASUS HD6450", "ASUS HD7750 Series", "ASUS HD7770 Series", "ASUS HD7850 Series", "ASUS HD7870 Series", "ASUS HD7970 Series", "ASUS Mirror Driver", "ASUS R5 230 Series", "ASUS R7 240 Series", "ASUS R7 250 Series", "ASUS R7 250X Series", "ASUS R7 265 Series", "ASUS R7 370 Series", "ASUS R9 270 Series", "ASUS R9 280 Series", "ASUS Radeon RX 470 Series", "ASUS Radeon RX 550 Series", "ASUS Radeon RX 560 Series", "ASUS Radeon RX 570 Series", "ASUS Radeon RX 580 Series", "ASUS Radeon RX Vega", "ATI All-in-Wonder HD", "ATI ES1000", "ATI FireGL V3100", "ATI FireGL V3100 (Microsoft Corporation - WDDM)", "ATI FireGL V3100 Secondary", "ATI FireGL V3100 Secondary (Microsoft Corporation - WDDM)", "ATI FireGL V3100(Microsoft Corporation - WDDM)", "ATI FireGL V3300 (Microsoft Corporation - WDDM)", "ATI FireGL V3350 (Microsoft Corporation - WDDM)", "ATI FireGL V3400", "ATI FireGL V3400 (Microsoft Corporation - WDDM)", "ATI FireGL V3400 Secondary", "ATI FireGL V3400 Secondary (Microsoft Corporation - WDDM)", "ATI FireGL V3600", "ATI FireGL V5600", "ATI FireGL V5600 (Microsoft Corporation WDDM 1.1)", "ATI FireGL V7200 (Microsoft Corporation - WDDM)", "ATI FireGL V7200 Secondary", "ATI FireGL V7200 Secondary (Microsoft Corporation - WDDM)", "ATI FireGL V7600", "ATI FireGL V7600 (Microsoft Corporation WDDM 1.1)", "ATI FireGL V7700", "ATI FireMV 2200", "ATI FireMV 2200 (Microsoft Corporation - WDDM)", "ATI FireMV 2250", "ATI FireMV 2250 (Microsoft Corporation - WDDM)", "ATI FireMV 2250 Secondary", "ATI FireMV 2260 (Microsoft Corporation - WDDM)", "ATI FireMV 2260 (Microsoft Corporation WDDM 1.1)", "ATI FireMV 2450", "ATI FirePro (FireGL) Graphics Adapter", "ATI FirePro 2260", "ATI FirePro 2260 (Engineering Sample - WDDM v1.1)", "ATI FirePro 2260 (Microsoft Corporation - WDDM v1.1)", "ATI FirePro 2270", "ATI FirePro 2450", "ATI FirePro 2460 (FireMV)", "ATI FirePro 3800 (FireGL) Graphics Adapter", "ATI FirePro M7740", "ATI FirePro M7820", "ATI FirePro M7820 (FireGL)", "ATI FirePro V (FireGL V) Graphics Adapter", "ATI FirePro V(FireGL V) Graphics Adapter", "ATI FirePro V3700 (FireGL)", "ATI FirePro V3750 (FireGL)", "ATI FirePro V3800", "ATI FirePro V3800 (FireGL V)", "ATI FirePro V3800 (FireGL)", "ATI FirePro V4800", "ATI FirePro V4800 (FireGL V)", "ATI FirePro V4800 (FireGL)", "ATI FirePro V4800 (FireGL) Graphics Adapter", "ATI FirePro V5700 (FireGL)", "ATI FirePro V5800", "ATI FirePro V5800 (FireGL V)", "ATI FirePro V5800 (FireGL)", "ATI FirePro V5800 (FireGL) Graphics Adapter", "ATI FirePro V7750 (FireGL)", "ATI FirePro V7800 (FireGL V)", "ATI FirePro V7800 (FireGL)", "ATI FirePro V7800 (FireGL) Graphics Adapter", "ATI FirePro V8700 (FireGL)", "ATI Mobility Radeon HD 2400", "ATI Mobility Radeon HD 3400 Series", "ATI Mobility Radeon HD 3400 Series (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 3400 Series (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 3450", "ATI Mobility Radeon HD 3650", "ATI Mobility Radeon HD 3650 (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 3650 (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 3650 (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 3670", "ATI Mobility Radeon HD 3670 (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 3670 (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 4200", "ATI Mobility Radeon HD 4200 Series", "ATI Mobility Radeon HD 4200 Series (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 4200 Series (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 4225", "ATI Mobility Radeon HD 4225 Series", "ATI Mobility Radeon HD 4250", "ATI Mobility Radeon HD 4300 Series", "ATI Mobility Radeon HD 4300 Series (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 4300 Series (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 4300 Series (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 4330", "ATI Mobility Radeon HD 4350", "ATI Mobility Radeon HD 4500 Series", "ATI Mobility Radeon HD 4500 Series (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 4500 Series (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 4500 Series (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 4500/5100 Series", "ATI Mobility Radeon HD 4530", "ATI MOBILITY RADEON HD 4530 / 4570", "ATI Mobility Radeon HD 4570", "ATI Mobility Radeon HD 4650", "ATI Mobility Radeon HD 4650 (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 4650 (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 4650 (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 4670", "ATI Mobility Radeon HD 4670 (Engineering Sample - WDDM v1.1)", "ATI Mobility Radeon HD 4670 (Microsoft Corporation - WDDM v1.1)", "ATI Mobility Radeon HD 4670 (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 4850", "ATI Mobility Radeon HD 4870", "ATI Mobility Radeon HD 4870 (Microsoft Corporation WDDM 1.1)", "ATI Mobility Radeon HD 5000 Series", "ATI Mobility Radeon HD 5000 Series (Engineering Sample - WDDM v1.20)", "ATI Mobility Radeon HD 5000 Series (Microsoft Corporation - WDDM v1.20)", "ATI Mobility Radeon HD 5000 Series (Microsoft Corporation- WDDM v1.20)", "ATI Mobility Radeon HD 530v", "ATI Mobility Radeon HD 5400 Series", "ATI Mobility Radeon HD 540v", "ATI Mobility Radeon HD 5430", "ATI Mobility Radeon HD 5450", "ATI Mobility Radeon HD 5450 Series", "ATI Mobility Radeon HD 545v", "ATI Mobility Radeon HD 5470", "ATI Mobility Radeon HD 550v", "ATI Mobility Radeon HD 5600/5700 Series", "ATI Mobility Radeon HD 560v", "ATI Mobility Radeon HD 5650", "ATI Mobility Radeon HD 565v", "ATI Mobility Radeon HD 5730", "ATI Mobility Radeon HD 5800 Series", "ATI Mobility Radeon HD 5800 Series (Engineering Sample - WDDM v1.20)", "ATI Mobility Radeon HD 5850", "ATI Mobility Radeon HD 5870", "ATI MOBILITY RADEON X1300", "ATI Mobility Radeon X1400", "ATI Mobility Radeon X1400 Series", "ATI Mobility Radeon X1800", "ATI Mobility Radeon X1900", "ATI MOBILITY RADEON X300", "ATI MOBILITY RADEON X600", "ATI Mobility Radeon. HD 530v", "ATI RADEON 9600 Series (Microsoft Corporation - WDDM)", "ATI RADEON E4690", "ATI Radeon HD 2350", "ATI Radeon HD 2400", "ATI Radeon HD 2400 Pro", "ATI Radeon HD 2400 PRO (Engineering Sample - WDDM v1.1)", "ATI Radeon HD 2400 PRO (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 2400 PRO (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 2400 Series", "ATI Radeon HD 2400 XT", "ATI Radeon HD 2400 XT (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 2400 XT (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 2600 Pro", "ATI Radeon HD 2600 Pro (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 2600 XT", "ATI Radeon HD 2600 XT (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 2600 XT (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 2600/3600 Series", "ATI Radeon HD 3200 Graphics", "ATI Radeon HD 3200 Graphics (Engineering Sample - WDDM v1.1)", "ATI Radeon HD 3200 Graphics (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 3200 Graphics (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3400 Series", "ATI Radeon HD 3450", "ATI Radeon HD 3450 - Dell Optiplex", "ATI Radeon HD 3450 (Engineering Sample - WDDM v1.1)", "ATI Radeon HD 3450 (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 3450 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3470", "ATI Radeon HD 3470 - Dell Optiplex", "ATI Radeon HD 3470 (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 3470 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3600 Series", "ATI Radeon HD 3600 Series (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 3600 Series (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3650", "ATI Radeon HD 3800 Series", "ATI Radeon HD 3850", "ATI Radeon HD 3850 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3870", "ATI Radeon HD 3870 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 3870 X2", "ATI Radeon HD 4200", "ATI Radeon HD 4200 (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 4250", "ATI Radeon HD 4300 Series", "ATI Radeon HD 4300/4500 Series", "ATI Radeon HD 4300/4500 Series (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 4350", "ATI Radeon HD 4350 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 4500 Series", "ATI Radeon HD 4550", "ATI Radeon HD 4550 (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 4550 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 4600 Series", "ATI Radeon HD 4600 Series (Engineering Sample - WDDM v1.1)", "ATI Radeon HD 4600 Series (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 4650", "ATI Radeon HD 4650 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 4670", "ATI Radeon HD 4670 (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 4770", "ATI Radeon HD 4800 Series", "ATI Radeon HD 4800 Series (Microsoft Corporation WDDM 1.1)", "ATI Radeon HD 4800 Series (Engineering Sample - WDDM v1.1)", "ATI Radeon HD 4800 Series (Microsoft Corporation - WDDM v1.1)", "ATI Radeon HD 4850", "ATI Radeon HD 4870", "ATI Radeon HD 4870 X2", "ATI Radeon HD 5400 Series", "ATI Radeon HD 5450", "ATI Radeon HD 5450 (Engineering Sample - WDDM v1.20)", "ATI Radeon HD 5450 (Microsoft Corporation - WDDM v1.20)", "ATI Radeon HD 5470", "ATI Radeon HD 5500 Series", "ATI Radeon HD 5570", "ATI Radeon HD 5600 Series", "ATI Radeon HD 5670", "ATI Radeon HD 5700 Series", "ATI Radeon HD 5700 Series (Engineering Sample - WDDM v1.20)", "ATI Radeon HD 5750", "ATI Radeon HD 5800 Series", "ATI Radeon HD 5870", "ATI Radeon HD 5900 Series", "ATI Radeon HD 6230", "ATI Radeon HD 6350", "ATI Radeon HD 6750", "ATI Radeon HD 7350", "ATI Radeon HD4300/HD4500 series", "ATI Radeon X1200 Series", "ATI Radeon X1270", "ATI Radeon X300/X550/X1050 Series", "ATI Radeon X300/X550/X1050 Series Secondary", "ATI RADEON X800 XL (Microsoft Corporation - WDDM)", "ATI Radeon Xpress 1100", "ATI RADEON XPRESS 1100 Series", "ATI Radeon Xpress 1150", "ATI Radeon Xpress 1200 Series", "ATI Radeon Xpress 1200 Series (Microsoft Corporation - WDDM)", "ATI Radeon Xpress 1250", "ATI RADEON XPRESS 200 Series", "ATI Radeon Xpress Series", "Audio Driver", "Barco MXRT 1450 (WDDM)", "Barco MXRT 2400 (WDDM v1.1)", "Barco MXRT 2400 (WDDM)", "Barco MXRT 2500 (WDDM)", "Barco MXRT 2600 (WDDM)", "Barco MXRT 5200 (WDDM v1.1)", "Barco MXRT 5400 (WDDM v1.1)", "Barco MXRT 5400 (WDDM)", "Barco MXRT 5450 (WDDM v1.1)", "Barco MXRT 5450 (WDDM)", "Barco MXRT 5500 (WDDM)", "Barco MXRT 5550 (WDDM)", "Barco MXRT 5600 (WDDM)", "Barco MXRT 7500 (WDDM)", "Barco MXRT 7600 (WDDM)", "BB Capture Driver", "BenQ EZ USB Display", "BmcMirror.2.0", "BmcMirror.3.0", "BmcMirror.4.0", "BmcMirror.4.0.afterWin8", "BmcMirror.4.0.beforeWin8", "Bomgar Display Driver", "CA IT Client Manager r12 Secure Control Adapter", "CA IT Client Manager r12 Video Capture Adapter", "Calsoft Mirror Driver", "Capture Driver", "Carte graphique VGA standard", "Carte vidéo de base Microsoft", "Chell 1.8b for Intel(R) 945G", "Chell 1.8b for Intel(R) GMA 3150", "Chell 1.8b for Intel(R) Q35", "Chell 1.8b for Mobile Intel(R) 945", "Chell 1.8b for Mobile Intel(R) 965", "Chipset Intel(R) Q45/Q43 Express (Microsoft Corporation - WDDM 1,1)", "Čipová sada Intel(R) G41 Express (Microsoft Corporation – WDDM 1.1)", "Čipová sada Intel(R) G45/G43 Express (Microsoft Corporation – WDDM 1.1)", "Čipová sada Intel(R) Q35 Express (Microsoft Corporation – WDDM 1.0)", "Čipová sada Intel(R) Q45/Q43 Express (Microsoft Corporation – WDDM 1.1)", "Čipová sada Mobile Intel(R) 45 Express (Microsoft Corporation – WDDM 1.1)", "Citrix Display Driver (Citrix Systems - WDDM)", "Citrix Display Mirror Driver", "Citrix Display Only Adapter", "Citrix Indirect Display Adapter", "Citrix Systems Inc. Display Mirror Driver", "CMS Display Driver", "ConferenceManager Application Sharing Driver", "Controlador de vídeo", "Controlador de vídeo (Compatível com VGA)", "Controlador de vídeo 3D", "Controladora de vídeo (compatible VGA)", "Contrôleur vidéo (compatible VGA)", "Custom Virtual Screen Capture", "CyberLink Mirror Driver", "DameWare Development Mirror Driver", "DameWare Development Mirror Driver 64-bit", "Dell 4-in-1 Adapter", "Dell D3100 USB3.0 Dock", "Dell Universal Dock D6000", "DesktopAuthority Mirror Driver", "Devguru Twomon WDDM Display Adapter", "Devguru Twomon WDDM Display Driver", "Display", "DisplayLink Mirror Adapter", "DisplayLink USB Device", "DisplayPal Extension", "DisplayPal Mirror", "dp video driver", "Drova Display Driver Device", "DTU-1031X", "Duet Display", "EBAMirror Display", "EIZO MED-X30LP", "EIZO MED-X3900", "EIZO MED-X4900", "EIZO MED-X50LP", "EIZO MED-X70", "EIZO MED-X7000", "EIZO Quadro MED-XN30LP", "EIZO Quadro MED-XN31LP", "EIZO Quadro MED-XN51LP", "EIZO Quadro MED-XN71", "EIZO Quadro MED-XN91", "Epson Projector Idd Device", "EPSON Projector Support Driver for MPP", "EPSON Projector Support Driver for NP", "EPSON Projector Support Driver for QW", "EPSON Projector Support Driver for UD", "extension Graphics Adapter", "EZ Display", "EZ Display Mirror", "Família de Chipsets Intel(R) G33/G31 Express (Microsoft Corporation - WDDM 1,0)", "Família de Chipsets Intel(R) Q35 Express (Microsoft Corporation - WDDM 1,0)", "Família de Chipsets Mobile Intel(R) 45 Express (Microsoft Corporation - WDDM 1.1)", "Família de Chipsets Mobile Intel(R) 965 Express (Microsoft Corporation - WDDM 1.1)", "Familia Intel(R) 82945G Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Intel(R) G33/G31 Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Intel(R) G965 Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.2)", "Familia Intel(R) Q35 Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Intel(R) Q965/Q963 Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Mobile Intel(R) 4 Series Express Chipset (Microsoft Corporation - WDDM 1.1)", "Familia Mobile Intel(R) 45 Express Chipset (Microsoft Corporation - WDDM 1.1)", "Familia Mobile Intel(R) 945 Express Chipset (Microsoft Corporation - WDDM 1.0)", "Familia Mobile Intel(R) 965 Express Chipset (Microsoft Corporation - WDDM 1.1)", "Famille de jeu de puces Express Intel(R) 82945G (Microsoft Corporation - WDDM 1.0)", "Famille de jeu de puces Express Intel(R) G33/G31 (Microsoft Corporation - WDDM 1.0)", "Famille de jeu de puces Express Intel(R) Q35 (Microsoft Corporation - WDDM 1.0)", "Famille de jeu de puces Express Intel(R) Q965/Q963 (Microsoft Corporation - WDDM 1.0)", "Famille de jeu de puces Express Mobile Intel(R) 4 Series (Microsoft Corporation - WDDM 1.1)", "Famille de jeu de puces Express Mobile Intel(R) 45 (Microsoft Corporation - WDDM 1.1)", "Famille de jeu de puces Express Mobile Intel(R) 945 (Microsoft Corporation - WDDM 1.0)", "Famille de jeu de puces Express Mobile Intel(R) 965 (Microsoft Corporation - WDDM 1.1)", "FH Web Edition Display Driver", "Freedom Scientific Accessibility Display Driver", "Freedom Scientific Mirror Display Driver", "Fresco Logic IDDCX Adapter", "Fujitsu Live Help graphics driver", "FUJITSU RVEC Mirror Driver", "Glance Speed Boost", "GO-Global Display Driver", "HelpCom Mirror Virtual Driver Ver3", "Hitachi Remote Control Display Mirror Driver", "Horizon Indirect Display Driver", "HP L2311c UFX7000 USB DirectDisplay", "HP RC Mirror Driver", "HP Remote Graphics Driver", "iDisplay (Microsoft Corporation - WDDM v1.1)", "IncrediblE Q45/Q43 Express Chipset", "Insignia USB3.0 To VGA Adapter", "Intel Coffee Lake UHD Graphics", "Intel Corporation 915G/915GV/910GL Embedded Graphics Chipset Function 1", "Intel Haswell HD Graphics - GT2", "Intel Haswell HD Graphics - GT2ULT", "Intel Skylake HD Graphics ULT GT2", "Intel Unite Graphics Adapter", "Intel(R) 946GZ Express Chipset Family", "Intel(R) 946GZ Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) 946GZ Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Intel(R) - Express Chipset G41 (Microsoft Corporation - WDDM 1.1)", "Intel(R) - Express Chipset G45/G43 (Microsoft Corporation - WDDM 1.1)", "Intel(R) - Express Chipset Q45/Q43 (Microsoft Corporation - WDDM 1.1)", "Intel(R) - famiglia Express Chipset 82945G (Microsoft Corporation - WDDM 1.0)", "Intel(R) - famiglia Express Chipset Q35 (Microsoft Corporation - WDDM 1.0)", "Intel(R) G965 Express Chipset Family", "Intel(R) G965 Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) G965 Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Intel(R) HD Graphics Family", "Intel(R) Q965/Q963 Express Chipset Family", "Intel(R) Q965/Q963 Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) Q965/Q963 Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Intel(R) 4 Series Internal Chipset", "Intel(R) 4 Series Internal Chipset (Microsoft Corporation - WDDM 1.1)", "Intel(R) 82845G/GL/GE/PE/GV Graphics Controller", "Intel(R) 82852/82855 GM/GME Graphics Controller", "Intel(R) 82852/82855 GM/GME Graphics Controller (Microsoft Corporation - XDDM)", "Intel(R) 82865G Graphics Controller", "Intel(R) 82915G/915GV/910GL Graphics Graphics", "Intel(R) 82915G/GV/910GL Express Chipset Family", "Intel(R) 82945G Express Chipset Family", "Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) 82945G Express lapkakészletcsalád (Microsoft Corporation - WDDM 1.0)", "Intel(R) Atom(TM) Processor E3800 Series/Intel(R) Celeron(R) Processor N2920/J1900", "Intel(R) G33/G31 Express Chipset Family", "Intel(R) G33/G31 Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) G33/G31 Express lapkakészletcsalád (Microsoft Corporation - WDDM 1.0)", "Intel(R) G41 Express Chipset", "Intel(R) G41 Express Chipset (Microsoft Corporation - WDDM 1.1)", "Intel(R) G41 Express Chipset v2", "Intel(R) G41 Express lapkakészlet (Microsoft Corporation - WDDM 1.1)", "Intel(R) G41 Express Yonga Kümesi (Microsoft Corporation - WDDM 1.1)", "Intel(R) G41 Express-Chipsatz (Microsoft Corporation - WDDM 1.1)", "Intel(R) G45/G43 Express Chipset", "Intel(R) G45/G43 Express Chipset (Microsoft Corporation - WDDM 1.1)", "Intel(R) Graphics Media Accelerator", "Intel(R) Graphics Media Accelerator 3150", "Intel(R) Graphics Media Accelerator 3150 (Microsoft Corporation - WDDM 1.0)", "Intel(R) Graphics Media Accelerator 500", "Intel(R) Graphics Media Accelerator 600", "Intel(R) Graphics Media Accelerator HD", "Intel(R) HD Graphics", "Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.1)", "Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.2)", "Intel(R) HD Graphics 3000", "Intel(R) HD Graphics 3000 (PHDGD Omega 5.0)", "Intel(R) HD Graphics 4000", "Intel(R) HD Graphics 4000 (Microsoft Corporation - WDDM 1.2)", "Intel(R) HD Graphics 4000 (PHDGD IvyDrive 3.0)", "Intel(R) HD Graphics 4400", "Intel(R) HD Graphics 4400 manual-gen9_2015-134121", "Intel(R) HD Graphics 4600", "Intel(R) HD Graphics 4600 manual-gen9_2015-134121", "Intel(R) HD Graphics 500", "Intel(R) HD Graphics 5000", "Intel(R) HD Graphics 505", "Intel(R) HD Graphics 510", "Intel(R) HD Graphics 515", "Intel(R) HD Graphics 520", "Intel(R) HD Graphics 520 (PHDGD Skylake v2.9)", "Intel(R) HD Graphics 530", "Intel(R) HD Graphics 5300", "Intel(R) HD Graphics 5300 manual-gen9_2015-134121", "Intel(R) HD Graphics 535", "Intel(R) HD Graphics 5500", "Intel(R) HD Graphics 5500 manual-gen9_2015-134121", "Intel(R) HD Graphics 6000", "Intel(R) HD Graphics 610", "Intel(R) HD Graphics 615", "Intel(R) HD Graphics 620", "Intel(R) HD Graphics 630", "Intel(R) HD Graphics Family", "Intel(R) HD Graphics Family (Microsoft Corporation - WDDM 1.2)", "Intel(R) HD Graphics Family (PHDGD Skylake v2.9)", "Intel(R) HD Graphics Family manual-gen9_2015-134121", "Intel(R) HD Graphics P3000", "Intel(R) HD Graphics P4600/P4700", "Intel(R) HD Graphics P530", "Intel(R) HD Graphics P630", "Intel(R) Iris(R) Graphics 540", "Intel(R) Iris(R) Plus Graphics", "Intel(R) Iris(R) Plus Graphics 640", "Intel(R) Iris(R) Plus Graphics 650", "Intel(R) Iris(R) Plus Graphics 940", "Intel(R) Iris(R) Pro Graphics 580", "Intel(R) Iris(R) Pro Graphics P580", "Intel(R) Iris(TM) Graphics 5100", "Intel(R) Iris(TM) Graphics 540", "Intel(R) Iris(TM) Graphics 550", "Intel(R) Iris(TM) Graphics 6100", "Intel(R) Iris(TM) Graphics 640", "Intel(R) Iris(TM) Plus Graphics 640", "Intel(R) Iris(TM) Pro Graphics 5200", "Intel(R) Iris(TM) Pro Graphics P580", "Intel(R) Iris(TM) Pro Graphics P6300", "Intel(R) Q35 Express Chipset Family", "Intel(R) Q35 Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Intel(R) Q35 Express lapkakészletcsalád (Microsoft Corporation - WDDM 1.0)", "Intel(R) Q45/Q43 Express Chipset", "Intel(R) Q45/Q43 Express Chipset (Microsoft Corporation - WDDM 1.1)", "Intel(R) Q45/Q43 Express Chipset v2", "Intel(R) Q45/Q43 Express lapkakészlet (Microsoft Corporation - WDDM 1.1)", "Intel(R) Q45/Q43 Express Yonga Kümesi (Microsoft Corporation - WDDM 1.1)", "Intel(R) Q45/Q43 Express-Chipsatz (Microsoft Corporation - WDDM 1.1)", "Intel(R) UHD Graphics", "Intel(R) UHD Graphics 600", "Intel(R) UHD Graphics 605", "Intel(R) UHD Graphics 610", "Intel(R) UHD Graphics 615", "Intel(R) UHD Graphics 620", "Intel(R) UHD Graphics 630", "Intel(R) UHD Graphics 630 pf4 3", "Intel(R) UHD Graphics 920", "Intel(R) UHD Graphics P630", "Intel(R) UHD Graphics, Gen11 LP", "IntelliAdmin Mirror Driver", "Jeu de puces Express Intel(R) G41 (Microsoft Corporation - WDDM 1.1)", "Jeu de puces Express Intel(R) G45/G43 (Microsoft Corporation - WDDM 1.1)", "Jeu de puces Express Intel(R) Q45/Q43 (Microsoft Corporation - WDDM 1.1)", "Kaseya Mirror Driver", "Kontroler wideo (zgodny z VGA)", "LANDesk Remote Control Mirror Driver", "LanSchool Mirror Driver", "Laplink RC Video Driver", "LogMeIn Mirror Driver", "LuminonCore IDDCX Adapter", "LV-N301", "Matrox C420 LP PCIe x16", "Matrox C680 PCIe x16", "Matrox C900 PCIe x16", "Matrox Extio Expander", "Matrox Extio F2408", "Matrox G200eR", "Matrox G200eR (Renesas) WDDM 1.2", "Matrox G200eR (Renesas) WDDM 2.0", "Matrox G200eR (WDDM 1.2)", "Matrox G200eW (Nuvoton)", "Matrox G200eW (Nuvoton) - English", "Matrox G200eW (Nuvoton) WDDM 1.2", "Matrox G200eW (Nuvoton) WDDM 2.0", "Matrox G200eW (WDDM 1.2)", "Matrox G200eW (Winbond)", "Matrox G200eW3 (Nuvoton) WDDM 1.2", "Matrox G200eW3 (Nuvoton) WDDM 2.0", "Matrox G450 Multi-Monitor", "Matrox M9120 PCIe x16", "Matrox M9120 Plus LP PCIe x1", "Matrox M9120 Plus LP PCIe x16", "Matrox M9125 PCIe x16", "Matrox M9128 LP PCIe x16", "Matrox M9138 LP PCIe x16", "Matrox M9140 LP PCIe x16", "Matrox M9148 LP PCIe x16", "Matrox M9188 ATX PCIe x16", "Matrox Millennium G550 PCIe", "Matrox Millennium P690 PCIe x16", "Matrox Millennium P690 Plus LP PCIe x16", "Matrox OrionHD", "Matrox QID LP PCIe", "Matrox Xenia", "Matrox Xenia Pro", "MaxiVista Virtual Video Demo", "MaxiVista Virtual Video ExtA", "MB16AC", "MCT USB External Graphics Device(580F)", "MCT USB3.0 External Graphics Device", "MCT USB3.0 External Graphics Device (HDMI)", "MCT USB3.0 External Grpahics Device", "MCT USB3.0 Externel Graphics Device", "MCT USB3.0 Externel Graphics Device (HDMI)", "Mengyi video mirror driver", "Microsoft Basic Display Adapter", "Microsoft Basic Display Adapter (Low Resolution)", "Microsoft Basic Display Adapter (No ACPI support)", "Microsoft Basic Display-adapter", "Microsoft Basic Render Driver", "Microsoft Basic-skærmkort", "Microsoft Remote Display Adapter", "Microsoft Temel Görüntü Bağdaştırıcısı", "Microsoft 기본 디스플레이 어댑터", "Microsoft 基本ディスプレイ アダプター", "Microsoft 基本ディスプレイ アダプター (ACPI サポートなし)", "Microsoft 基本显示适配器", "Microsoft 基本显示适配器(无 ACPI 支持)", "Microsoft 基本顯示卡", "Microsoftin perusnäyttösovitin", "Mikroukład Intel(R) G41 Express Chipset (Microsoft Corporation — WDDM 1.1)", "Mikroukład Intel(R) Q45/Q43 Express Chipset (Microsoft Corporation — WDDM 1.1)", "Mirage Driver", "Mirror Surface Capture Driver", "MirrorOp Virtual Graphics Adaptor", "Mobile 5th Generation Intel(R) Core(TM) Integrated Graphics - 1606", "Mobile 5th Generation Intel(R) Core(TM) Integrated Graphics - 1616", "Mobile 5th Generation Intel(R) Core(TM) Integrated Graphics - 1626", "Mobile Intel(R) - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) - famiglia Express Chipset 965 (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 4 Series Express Chipset Family", "Mobile Intel(R) 4 Series Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 4 Series Express Chipset Family v2", "Mobile Intel(R) 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 45 Express lapkakészletcsalád (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 45 Express Yonga Kümesi Ailesi (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 45 Express-Chipsatzfamilie (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family", "Mobile Intel(R) 945 Express Chipset Family", "Mobile Intel(R) 945 Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Mobile Intel(R) 945 famiglia Express Chipset (Microsoft Corporation - WDDM 1.0)", "Mobile Intel(R) 945GM Express Chipset Family", "Mobile Intel(R) 965 Express Chipset Family", "Mobile Intel(R) 965 Express Chipset Family (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 965 Express lapkakészletcsalád (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 965 Express Yonga Kümesi Ailesi (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) 965 Express-Chipsatzfamilie (Microsoft Corporation - WDDM 1.1)", "Mobile Intel(R) HD Graphics", "MS Idd Device", "mv video hook driver2", "ne Driver", "Net Control 2 Video Hook Driver VHM", "Net Control 2 Video Hook Driver VST", "NetClient RC Driver 3 (Ver 2.4)", "Netop Mirror Driver", "NoMachine Display Adapter", "NumaraMirror.10.1.0.110318j", "NumaraMirror.10.1.0.110405r", "NumaraMirror.11.0.0.111110o", "NumaraMirror.11.1.0.120420k", "NumaraMirror.11.5.0.121004r", "NVIDIA GeForce GTX 555", "NVIDIA GeForce 205", "NVIDIA GeForce 210", "NVIDIA GeForce 310", "NVIDIA GeForce 310M", "NVIDIA GeForce 315", "NVIDIA GeForce 405", "NVIDIA GeForce 505", "NVIDIA GeForce 510", "NVIDIA GeForce 605", "NVIDIA GeForce 610M", "NVIDIA GeForce 6150 LE", "NVIDIA GeForce 6150 LE (Microsoft Corporation - WDDM v1.2)", "NVIDIA GeForce 6150 LE (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6150SE nForce 430", "NVIDIA GeForce 6150SE nForce 430 (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6200", "NVIDIA GeForce 6200 (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6200 LE", "NVIDIA GeForce 6200 LE (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6200 TurboCache(TM)", "NVIDIA GeForce 6200 TurboCache(TM) (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6500", "NVIDIA GeForce 6600", "NVIDIA GeForce 6600 (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6600 GT", "NVIDIA GeForce 6600 GT (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6600 LE", "NVIDIA GeForce 6800", "NVIDIA GeForce 6800 (Microsoft Corporation - WDDM)", "NVIDIA GeForce 6800 GS", "NVIDIA GeForce 6800 Series GPU", "NVIDIA GeForce 7100 GS", "NVIDIA GeForce 7100 GS (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7300 GS", "NVIDIA GeForce 7300 GS (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7300 GT", "NVIDIA GeForce 7300 GT (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7300 LE", "NVIDIA GeForce 7300 LE (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7300 SE/7200 GS", "NVIDIA GeForce 7300 SE/7200 GS (Microsoft Corporation - WDDM v1.2)", "NVIDIA GeForce 7300 SE/7200 GS (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7500 LE", "NVIDIA GeForce 7500 LE (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7600 GS", "NVIDIA GeForce 7600 GS (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7600 GT", "NVIDIA GeForce 7600 GT (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7800 GT", "NVIDIA GeForce 7800 GTX", "NVIDIA GeForce 7900 GS", "NVIDIA GeForce 7900 GS (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7900 GT/GTO", "NVIDIA GeForce 7900 GTX", "NVIDIA GeForce 7950 GT", "NVIDIA GeForce 7950 GT (Microsoft Corporation - WDDM)", "NVIDIA GeForce 7950 GX2", "NVIDIA GeForce 820M", "NVIDIA GeForce 8300 GS", "NVIDIA GeForce 8300 GS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 830M", "NVIDIA GeForce 8400", "NVIDIA GeForce 8400 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8400 GS", "NVIDIA GeForce 8400 GS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8400GS", "NVIDIA GeForce 8400M GS", "NVIDIA GeForce 840M", "NVIDIA GeForce 845M", "NVIDIA GeForce 8500 GT", "NVIDIA GeForce 8500 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8600 GS", "NVIDIA GeForce 8600 GT", "NVIDIA GeForce 8600 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8600 GTS", "NVIDIA GeForce 8600 GTS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8600M GS", "NVIDIA GeForce 8600M GT", "NVIDIA GeForce 8700M GT", "NVIDIA GeForce 8800 GS", "NVIDIA GeForce 8800 GT", "NVIDIA GeForce 8800 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8800 GTS", "NVIDIA GeForce 8800 GTS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 8800 GTS 512", "NVIDIA GeForce 8800 GTX", "NVIDIA GeForce 8800M GTX", "NVIDIA GeForce 9200", "NVIDIA GeForce 9200 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9200M GS", "NVIDIA GeForce 920M", "NVIDIA GeForce 920MX", "NVIDIA GeForce 9300 GE", "NVIDIA GeForce 9300 GE (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9300 GS", "NVIDIA GeForce 9300 GS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9300M GS", "NVIDIA GeForce 9300M GS (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 930M", "NVIDIA GeForce 930MX", "NVIDIA GeForce 9400", "NVIDIA GeForce 9400 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9400 GT", "NVIDIA GeForce 9400 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9400M G", "NVIDIA GeForce 940M", "NVIDIA GeForce 940MX", "NVIDIA GeForce 9500 GS", "NVIDIA GeForce 9500 GT", "NVIDIA GeForce 9500 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9500M (GF 9200MGS + GF 9400MG)", "NVIDIA GeForce 9500M (GF 9400MG + GF 9200MGS)", "NVIDIA GeForce 9600 GS", "NVIDIA GeForce 9600 GSO", "NVIDIA GeForce 9600 GSO 512", "NVIDIA GeForce 9600 GT", "NVIDIA GeForce 9600 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9600M GS", "NVIDIA GeForce 9800 GT", "NVIDIA GeForce 9800 GT (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9800 GTX/9800 GTX+", "NVIDIA GeForce 9800 GTX/9800 GTX+ (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce 9800 GTX+", "NVIDIA GeForce 9800M GT", "NVIDIA GeForce 9800M GTX", "NVIDIA GeForce FX 5200", "NVIDIA GeForce FX 5200 (Dell)", "NVIDIA GeForce FX 5500", "NVIDIA GeForce FX Go5200", "NVIDIA GeForce G100", "NVIDIA GeForce G105M", "NVIDIA GeForce G210", "NVIDIA GeForce G210M", "NVIDIA GeForce Go 7300", "NVIDIA GeForce Go 7400", "NVIDIA GeForce Go 7900 GS", "NVIDIA GeForce Go 7950 GTX", "NVIDIA GeForce GPU", "NVIDIA GeForce GT 1030", "NVIDIA GeForce GT 120", "NVIDIA GeForce GT 130", "NVIDIA GeForce GT 140", "NVIDIA GeForce GT 220", "NVIDIA GeForce GT 230", "NVIDIA GeForce GT 240", "NVIDIA GeForce GT 240M", "NVIDIA GeForce GT 320", "NVIDIA GeForce GT 330", "NVIDIA GeForce GT 330M", "NVIDIA GeForce GT 335M", "NVIDIA GeForce GT 340", "NVIDIA GeForce GT 420", "NVIDIA GeForce GT 420M", "NVIDIA GeForce GT 425M", "NVIDIA GeForce GT 430", "NVIDIA GeForce GT 435M", "NVIDIA GeForce GT 440", "NVIDIA GeForce GT 445M", "NVIDIA GeForce GT 520", "NVIDIA GeForce GT 520M", "NVIDIA GeForce GT 525M", "NVIDIA GeForce GT 525M (Microsoft Corporation - WDDM v1.2)", "NVIDIA GeForce GT 530", "NVIDIA GeForce GT 540M", "NVIDIA GeForce GT 545", "NVIDIA GeForce GT 550M", "NVIDIA GeForce GT 555M", "NVIDIA GeForce GT 610", "NVIDIA GeForce GT 620", "NVIDIA GeForce GT 620M", "NVIDIA GeForce GT 620M / GT710M / Quadro NVS 5200M", "NVIDIA GeForce GT 625", "NVIDIA GeForce GT 625 (OEM)", "NVIDIA GeForce GT 625M", "NVIDIA GeForce GT 630", "NVIDIA GeForce GT 630M", "NVIDIA GeForce GT 635", "NVIDIA GeForce GT 640", "NVIDIA GeForce GT 640M", "NVIDIA GeForce GT 640M LE", "NVIDIA GeForce GT 650M", "NVIDIA GeForce GT 705", "NVIDIA GeForce GT 710", "NVIDIA GeForce GT 720", "NVIDIA GeForce GT 720M", "NVIDIA GeForce GT 730", "NVIDIA GeForce GT 730M", "NVIDIA GeForce GT 740", "NVIDIA GeForce GT 740M", "NVIDIA GeForce GT 750M", "NVIDIA GeForce GT 840M", "NVIDIA GeForce GT625M", "NVIDIA GeForce GTS 240", "NVIDIA GeForce GTS 250", "NVIDIA GeForce GTS 250 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce GTS 450", "NVIDIA GeForce GTX 1050", "NVIDIA GeForce GTX 1050 Ti", "NVIDIA GeForce GTX 1050 Ti with Max-Q Design", "NVIDIA GeForce GTX 1060", "NVIDIA GeForce GTX 1060 3GB", "NVIDIA GeForce GTX 1060 5GB", "NVIDIA GeForce GTX 1060 6GB", "NVIDIA GeForce GTX 1060 with Max-Q Design", "NVIDIA GeForce GTX 1070", "NVIDIA GeForce GTX 1070 Ti", "NVIDIA GeForce GTX 1070 with Max-Q Design", "NVIDIA GeForce GTX 1080", "NVIDIA GeForce GTX 1080 Ti", "NVIDIA GeForce GTX 1080 with Max-Q Design", "NVIDIA GeForce GTX 1650", "NVIDIA GeForce GTX 1650 SUPER", "NVIDIA GeForce GTX 1650 Ti", "NVIDIA GeForce GTX 1660", "NVIDIA GeForce GTX 1660 SUPER", "NVIDIA GeForce GTX 1660 Ti", "NVIDIA GeForce GTX 1660 Ti with Max-Q Design", "NVIDIA GeForce GTX 260", "NVIDIA GeForce GTX 260 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce GTX 260M", "NVIDIA GeForce GTX 275", "NVIDIA GeForce GTX 280", "NVIDIA GeForce GTX 280M", "NVIDIA GeForce GTX 285", "NVIDIA GeForce GTX 285 (Microsoft Corporation - WDDM v1.1)", "NVIDIA GeForce GTX 285M", "NVIDIA GeForce GTX 295", "NVIDIA GeForce GTX 460", "NVIDIA GeForce GTX 460 SE", "NVIDIA GeForce GTX 460 v2", "NVIDIA GeForce GTX 460M", "NVIDIA GeForce GTX 465", "NVIDIA GeForce GTX 470", "NVIDIA GeForce GTX 480", "NVIDIA GeForce GTX 550 Ti", "NVIDIA GeForce GTX 560", "NVIDIA GeForce GTX 560 SE", "NVIDIA GeForce GTX 560 Ti", "NVIDIA GeForce GTX 560M", "NVIDIA GeForce GTX 570", "NVIDIA GeForce GTX 570M", "NVIDIA GeForce GTX 580", "NVIDIA GeForce GTX 580M", "NVIDIA GeForce GTX 590", "NVIDIA GeForce GTX 645", "NVIDIA GeForce GTX 650", "NVIDIA GeForce GTX 650 Ti", "NVIDIA GeForce GTX 650 Ti BOOST", "NVIDIA GeForce GTX 660", "NVIDIA GeForce GTX 660 Ti", "NVIDIA GeForce GTX 660M", "NVIDIA GeForce GTX 670", "NVIDIA GeForce GTX 670M", "NVIDIA GeForce GTX 670MX", "NVIDIA GeForce GTX 675M", "NVIDIA GeForce GTX 675MX", "NVIDIA GeForce GTX 680", "NVIDIA GeForce GTX 680M", "NVIDIA GeForce GTX 690", "NVIDIA GeForce GTX 745", "NVIDIA GeForce GTX 750", "NVIDIA GeForce GTX 750 Ti", "NVIDIA GeForce GTX 760", "NVIDIA GeForce GTX 760 (192-bit)", "NVIDIA GeForce GTX 760 Ti OEM", "NVIDIA GeForce GTX 765M", "NVIDIA GeForce GTX 770", "NVIDIA GeForce GTX 770M", "NVIDIA GeForce GTX 780", "NVIDIA GeForce GTX 780 Ti", "NVIDIA GeForce GTX 780M", "NVIDIA GeForce GTX 850M", "NVIDIA GeForce GTX 860M", "NVIDIA GeForce GTX 870M", "NVIDIA GeForce GTX 880M", "NVIDIA GeForce GTX 950", "NVIDIA GeForce GTX 950M", "NVIDIA GeForce GTX 960", "NVIDIA GeForce GTX 960M", "NVIDIA GeForce GTX 965M", "NVIDIA GeForce GTX 970", "NVIDIA GeForce GTX 970M", "NVIDIA GeForce GTX 980", "NVIDIA GeForce GTX 980 Ti", "NVIDIA GeForce GTX 980M", "NVIDIA GeForce GTX 980M 8GB", "NVIDIA GeForce GTX TITAN", "NVIDIA GeForce GTX TITAN Black", "NVIDIA GeForce GTX TITAN X", "NVIDIA GeForce GTX TITAN Z", "NVIDIA GeForce MX110", "NVIDIA GeForce MX130", "NVIDIA GeForce MX150", "NVIDIA GeForce MX230", "NVIDIA GeForce MX250", "NVIDIA GeForce MX330", "NVIDIA GeForce MX350", "NVIDIA GeForce RTX 2060", "NVIDIA GeForce RTX 2060 SUPER", "NVIDIA GeForce RTX 2060 with Max-Q Design", "NVIDIA GeForce RTX 2070", "NVIDIA GeForce RTX 2070 SUPER", "NVIDIA GeForce RTX 2070 with Max-Q Design", "NVIDIA GeForce RTX 2080", "NVIDIA GeForce RTX 2080 SUPER", "NVIDIA GeForce RTX 2080 Super with Max-Q Design", "NVIDIA GeForce RTX 2080 Ti", "NVIDIA GeForce RTX 2080 with Max-Q Design", "NVIDIA GeForce RTX 2080TI", "NVIDIA GeForce4 MX 440 with AGP8X", "NVIDIA GeForce4 MX 440 with AGP8X (Dell)", "NVIDIA GF117", "NVIDIA Graphics Device", "NVIDIA GRID K1", "NVIDIA GRID K2", "NVIDIA GTX 1060", "NVIDIA ION", "NVIDIA N16V-GM", "NVIDIA NVS 300", "NVIDIA NVS 310", "NVIDIA NVS 3100M", "NVIDIA NVS 3100M (Microsoft Corporation - WDDM v1.2)", "NVIDIA NVS 315", "NVIDIA NVS 4200M", "NVIDIA NVS 510", "NVIDIA NVS 5200M", "NVIDIA NVS 5400M", "NVIDIA NVS 810", "NVIDIA Quadro 1000M", "NVIDIA Quadro 2000", "NVIDIA Quadro 2000D", "NVIDIA Quadro 2000M", "NVIDIA Quadro 3000M", "NVIDIA Quadro 400", "NVIDIA Quadro 4000", "NVIDIA Quadro 4000M", "NVIDIA Quadro 410", "NVIDIA Quadro 5000", "NVIDIA Quadro 5000M", "NVIDIA Quadro 5010M", "NVIDIA Quadro 600", "NVIDIA Quadro 6000", "NVIDIA Quadro FX 1400", "NVIDIA Quadro FX 1400 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 1500", "NVIDIA Quadro FX 1500 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 1500M", "NVIDIA Quadro FX 1600M", "NVIDIA Quadro FX 1700", "NVIDIA Quadro FX 1700 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 1700M", "NVIDIA Quadro FX 1800", "NVIDIA Quadro FX 1800 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 1800M", "NVIDIA Quadro FX 2500M", "NVIDIA Quadro FX 2700M", "NVIDIA Quadro FX 2800M", "NVIDIA Quadro FX 3450", "NVIDIA Quadro FX 3450/4000 SDI", "NVIDIA Quadro FX 3450/4000 SDI (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 3500", "NVIDIA Quadro FX 3500 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 3500M", "NVIDIA Quadro FX 350M", "NVIDIA Quadro FX 3600M", "NVIDIA Quadro FX 360M", "NVIDIA Quadro FX 370", "NVIDIA Quadro FX 370 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 370 Low Profile", "NVIDIA Quadro FX 370 LP", "NVIDIA Quadro FX 3700", "NVIDIA Quadro FX 3700 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 3700M", "NVIDIA Quadro FX 370M", "NVIDIA Quadro FX 380", "NVIDIA Quadro FX 380 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 380 LP", "NVIDIA Quadro FX 3800", "NVIDIA Quadro FX 3800M", "NVIDIA Quadro FX 4500", "NVIDIA Quadro FX 4500 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 4600", "NVIDIA Quadro FX 4600 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 4800", "NVIDIA Quadro FX 4800 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 540", "NVIDIA Quadro FX 540 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 550", "NVIDIA Quadro FX 550 (Microsoft Corporation - WDDM)", "NVIDIA Quadro FX 5500", "NVIDIA Quadro FX 560", "NVIDIA Quadro FX 5600", "NVIDIA Quadro FX 570", "NVIDIA Quadro FX 570 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 580", "NVIDIA Quadro FX 580 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 5800", "NVIDIA Quadro FX 5800 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro FX 770M", "NVIDIA Quadro FX 880M", "NVIDIA Quadro GP100", "NVIDIA Quadro GV100", "NVIDIA Quadro K1000M", "NVIDIA Quadro K1100M", "NVIDIA Quadro K1200", "NVIDIA Quadro K2000", "NVIDIA Quadro K2000D", "NVIDIA Quadro K2000M", "NVIDIA Quadro K2100M", "NVIDIA Quadro K2200", "NVIDIA Quadro K2200M", "NVIDIA Quadro K3000M", "NVIDIA Quadro K3100M", "NVIDIA Quadro K4000", "NVIDIA Quadro K4000M", "NVIDIA Quadro K4100M", "NVIDIA Quadro K420", "NVIDIA Quadro K4200", "NVIDIA Quadro K5000", "NVIDIA Quadro K5000M", "NVIDIA Quadro K5100M", "NVIDIA Quadro K5200", "NVIDIA Quadro K600", "NVIDIA Quadro K6000", "NVIDIA Quadro K610M", "NVIDIA Quadro K620", "NVIDIA Quadro M1000M", "NVIDIA Quadro M1200", "NVIDIA Quadro M2000", "NVIDIA Quadro M2000M", "NVIDIA Quadro M2200", "NVIDIA Quadro M3000M", "NVIDIA Quadro M4000", "NVIDIA Quadro M4000M", "NVIDIA Quadro M5000", "NVIDIA Quadro M5000M", "NVIDIA Quadro M6000", "NVIDIA Quadro M6000 24GB", "NVIDIA Quadro M620", "NVIDIA Quadro NVS 110M", "NVIDIA Quadro NVS 120M", "NVIDIA Quadro NVS 135M", "NVIDIA Quadro NVS 140M", "NVIDIA Quadro NVS 160M", "NVIDIA Quadro NVS 210S", "NVIDIA Quadro NVS 285", "NVIDIA Quadro NVS 285 (Microsoft Corporation - WDDM v1.2)", "NVIDIA Quadro NVS 285 (Microsoft Corporation - WDDM)", "NVIDIA Quadro NVS 290", "NVIDIA Quadro NVS 290 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro NVS 295", "NVIDIA Quadro NVS 420", "NVIDIA Quadro NVS 420 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro NVS 440", "NVIDIA Quadro NVS 440 (Microsoft Corporation - WDDM)", "NVIDIA Quadro NVS 450", "NVIDIA Quadro NVS 450 (Microsoft Corporation - WDDM v1.1)", "NVIDIA Quadro NVS 510M", "NVIDIA Quadro P1000", "NVIDIA Quadro P2000", "NVIDIA Quadro P2200", "NVIDIA Quadro P3000", "NVIDIA Quadro P3000M", "NVIDIA Quadro P3200", "NVIDIA Quadro P400", "NVIDIA Quadro P4000", "NVIDIA Quadro P4200", "NVIDIA Quadro P5000", "NVIDIA Quadro P520", "NVIDIA Quadro P5200", "NVIDIA Quadro P600", "NVIDIA Quadro P6000", "NVIDIA Quadro P620", "NVIDIA Quadro RTX 3000", "NVIDIA Quadro RTX 3000 with Max-Q Design", "NVIDIA Quadro RTX 4000", "NVIDIA Quadro RTX 5000", "NVIDIA Quadro RTX 6000", "NVIDIA Quadro RTX 8000", "NVIDIA Quadro T1000", "NVIDIA Quadro T2000", "NVIDIA Tesla C1060", "NVIDIA Tesla C2050", "NVIDIA Tesla C2070", "NVIDIA Tesla C2075", "NVIDIA Tesla K10", "NVIDIA Tesla K20c", "NVIDIA Tesla K20Xm", "NVIDIA Tesla K40c", "NVIDIA Tesla K40m", "NVIDIA Tesla K80", "NVIDIA Tesla M10", "NVIDIA Tesla M2090", "NVIDIA Tesla M60", "NVIDIA Tesla P100-PCIE-12GB", "NVIDIA Tesla P100-PCIE-16GB", "NVIDIA Tesla P4", "NVIDIA Tesla P40", "NVIDIA Tesla T4", "NVIDIA Tesla V100-PCIE-16GB", "NVIDIA Tesla V100-PCIE-32GB", "NVIDIA TITAN RTX", "NVIDIA TITAN V", "NVIDIA TITAN X (Pascal)", "NVIDIA TITAN Xp", "NVIDIA TITAN Xp COLLECTORS EDITION", "Optimal Remote Control Mirror Driver", "Optimal Remote Mirror Driver", "Oray Display Mirror Driver", "OSBASE iDisplay Graphics Adapter", "OSBASE iDisplay Mirror Adapter", "OSBASE UFX6000 DirectDisplay", "PC2TV Mirror Display Driver", "PCI GDIHOOK5", "PC-PJ Transfer Mirror Driver", "PHDGD Ivy 4", "PHDGD Quantic C3", "PI Lid", "Pico_Projector", "PicoPix 1020 Virtual Display Adapter", "PicoPix Viewer Extension Virtual Display Adapter", "PicoPix Viewer Virtual Display Adapter", "Placa Gráfica Básica da Microsoft", "PLANEX Wifi Display VGA Adapter", "Podstawowa karta graficzna Microsoft", "Proficy WebSpace Display Driver", "r x64-based Systems (KB4023057)", "RAC Mirror Driver", "Radeon (TM) 520", "Radeon (TM) 530", "Radeon (TM) Pro WX 4100", "Radeon (TM) Pro WX 4130 Graphics", "Radeon (TM) Pro WX 4150 Graphics", "Radeon (TM) Pro WX 5100 Graphics", "Radeon (TM) Pro WX 7100 Graphics", "Radeon (TM) PRO WX 8200", "Radeon (TM) Pro WX 9100", "Radeon (TM) Pro WX 9100 Graphics", "Radeon (TM) Pro WX Series", "Radeon (TM) R5 M420", "Radeon (TM) R5 M430", "Radeon (TM) R7 M440", "Radeon (TM) R7 M445", "Radeon (TM) R9 M470X", "Radeon (TM) RX 470", "Radeon (TM) RX 470 Graphics", "Radeon (TM) RX 470 Series", "Radeon (TM) RX 480 Graphics", "Radeon (TM) RX 550", "Radeon (TM) RX 570", "Radeon (TM) RX 570 Graphics", "Radeon (TM) RX 580 Graphics", "Radeon 500 Series", "Radeon 520", "Radeon 540X Series", "Radeon 550 Series", "Radeon 550X Series", "Radeon 630", "RADEON 7000 SERIES", "RADEON 9250 Secondary (Microsoft Corporation - XDDM)", "RADEON 9800 PRO (Microsoft Corporation - WDDM)", "Radeon Pro WX 4100", "Radeon Pro WX 5100", "Radeon Pro WX 7100", "Radeon Pro WX Vega M GL Graphics", "Radeon RX 550", "Radeon RX 550 Series", "Radeon RX 5500 XT", "Radeon RX 550X", "Radeon RX 560", "Radeon RX 560 Series", "Radeon RX 560 XT", "Radeon RX 570", "Radeon RX 570 Series", "Radeon RX 580 Series", "Radeon RX 590 Series", "Radeon RX Vega", "Radeon RX Vega M GL Graphics", "Radeon RX480", "Radeon RX550/550 Series", "Radeon Sky 500", "Radeon Vega Frontier Edition", "Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM)", "Radeon X1300 / X1550 Series (Microsoft Corporation - WDDM)", "Radeon X1300 / X1550 Series Secondary", "Radeon X1300 / X1550 Series Secondary (Microsoft Corporation - WDDM)", "Radeon X1300 Series Sec. (Microsoft Corporation - WDDM)", "Radeon X1300 Series Secondary", "Radeon X1300/X1550 Series", "Radeon X1300/X1550 Series (Microsoft Corporation - WDDM)", "Radeon X1300/X1550 Series (Microsoft Corporation - WDDM)", "Radeon X1300/X1550 Series Secondary", "Radeon X1300/X1550 Series Secondary (Microsoft Corporation - WDDM)", "Radeon X1550 64-bit (Microsoft Corporation - WDDM)", "Radeon X1550 64-bit Secondary (Microsoft Corporation - WDDM)", "Radeon X1550 Series (Microsoft Corporation - WDDM)", "Radeon X1600 Series", "Radeon X1600 Series (Microsoft Corporation - WDDM)", "Radeon X1600 Series Secondary", "Radeon X1600 Series Secondary (Microsoft Corporation - WDDM)", "Radeon X1600/1650 Series Secondary", "Radeon X1600/X1650 Series", "Radeon X1650 Series", "Radeon X1650 Series (Microsoft Corporation - WDDM)", "Radeon X1650 Series Secondary", "Radeon X1650 Series Secondary (Microsoft Corporation - WDDM)", "Radeon X1800 Series", "Radeon X1900 Series (Microsoft Corporation - WDDM)", "Radeon X1950 Pro", "Radeon X1950 Series (Microsoft Corporation - WDDM)", "RADEON X300 SE 128MB HyperMemory", "RADEON X300 Series", "Radeon X300/X550/X1050 Series", "Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM)", "Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM)", "Radeon X300/X550/X1050 Series Secondary", "Radeon X300/X550/X1050 Series Secondary (Microsoft Corporation - WDDM)", "RADEON X600 256MB HyperMemory", "RADEON X600 256MB HyperMemory Secondary", "RADEON X600 Series (Microsoft Corporation - WDDM)", "RADEON X600 Series Secondary (Microsoft Corporation - WDDM)", "RADEON X600/X550 Series (Microsoft Corporation - WDDM)", "RADEON X700 (Microsoft Corporation - WDDM)", "RADEON X700 PRO (Microsoft Corporation - WDDM)", "RADEON X800 GTO (Microsoft Corporation - WDDM)", "RADEON X800GT", "RADEON X850 Series", "RADEON X850 XT Platinum Edition (Microsoft Corporation - WDDM)", "RADEON XPRESS 200 Series (Microsoft Corporation - WDDM)", "Radeon(TM) 530 Series", "Radeon(TM) R7 M445", "Radeon(TM) RX 460 Graphics", "Radeon(TM) RX 480", "Radeon(TM) RX 550", "Radeon(TM) RX 560 Graphics", "Radeon(TM) RX 580", "Radmin Mirror Driver V3", "RADVISION Ltd Collaboration Driver", "ratii video hook driver", "RDesktop video mirror driver", "rdshd video hook driver", "rdsp video hook driver", "Realtek Wifi Display VGA Adapter", "Remote Control Mirror Driver", "Remote Runner Mirror Driver", "RemoteControl Video Driver", "RemotelyAnywhere Mirror Driver", "RemotePC Graphics Adapter", "RemotePC HelpDesk Driver", "RemotePC Mirror Driver", "Ricoh DPJ Display Driver", "Rodzina mikroukładów Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0)", "Rodzina mikroukładów Intel(R) Q35 Express Chipset Family (Microsoft Corporation — WDDM 1.0)", "Rodzina mikroukładów Mobile Intel(R) 4 Series Express (Microsoft Corporation — WDDM 1.1)", "Route1 Video Mirror Driver", "Royal BNA Driver", "Rsupport VRVD5(VRVD520)", "rvices", "s 10 Home[64-bit OS][System Locale en-US]", "s 10 Pro[64 ビット OS][System Locale ja-JP]", "s 10 Pro[64-bit OS][System Locale en-US]", "s 7 Home Premium [64-bit OS][System Locale en-US]", "s 8.1[64-bit OS][System Locale en-US]", "Scheda grafica VGA Standard", "Scheda video di base Microsoft", "SHAPE Services iDisplay", "ShoreTel Desktop Sharing Accelerator", "SiS Mirage 3 Graphics", "SMI VideoWall Controller", "SOBA HOOK Driver", "Softfoundry Display Mirror Device", "Software", "Solstice Graphics Adapter", "spacedesk Display Auxiliary", "spacedesk Graphics Adapter", "Standaard-VGA grafische adapter", "Standard VGA Grafik Bağdaştırıcısı", "Standard VGA Graphics Adapter", "Standard VGA-bildskärmskort", "Standard VGA-skærmkort", "Standard VGA-skjermkort", "Standardní grafický adaptér s rozlišením VGA", "Standardowa karta graficzna VGA", "Standard-VGA-Grafikkarte", "support.com Remote Driver", "Supremo Mirror Driver", "Szabványos VGA grafikus adapter", "Tarjeta gráfica VGA estándar", "ThinNetworks TN-502 Dualview", "Trauma Zer0 Mirror Driver", "Trigger 1+ Graphics Card", "Trigger 6 External Graphics", "Trigger Family External Graphics Extend", "Trigger II External Graphics", "Trigger II External Graphics Extend", "Trigger USB Graphics Chipset Family (1P-E)", "Trigger USB Graphics Chipset Family (1P-M)", "ture Button", "Twomon SE Virtual Display", "U170 USB Graphics", "Unicenter r11 Remote Control Secure Control Adapter", "Unicenter r11 Remote Control Video Capture Adapter", "USB 2.0 Graphic Dock (Extend).", "USB 2.0 Graphics Card-Extend.", "USB 2.0 Graphics Device-1(Extend)", "USB 2.0 VGA DEVICE-1(Extend)", "USB 3.0 External Graphic Device", "USB 3.0 Graphic Adaptor- Mirror", "USB Display Device (T1N)", "USB Live II", "USB Mobile Monitor Mirror Driver", "USB Projector (Extend)", "USB Tablet UHD Video Dock", "USB2.0 VGA DEVICE(DISPLAY)-0901.", "USB2.0 VGA DEVICE(DISPLAY)-0902.", "USB3.0 External Graphics Device", "VGA-vakionäytönohjain", "vgwdrv driver", "Video Controller", "Video Controller (VGA Compatible)", "Video Driver", "Videocontroller (VGA-kompatibel)", "Virtual Display Adapter", "Virtual Display Driver", "VirtualBox Graphics Adapter (WDDM)", "VirtualBox Graphics Adapter for Windows Vista and 7", "VisionTek Radeon 4350", "VisionTek Radeon 4550", "VisionTek Radeon HD 5450", "Visiontek Radeon HD 5550/5570 Series", "Visual Care Mirror Driver", "Vivi Display Adapter", "VMware Horizon Indirect Display Driver", "VMware SVGA 3D", "VNC Mirror Driver", "vSpace Idd Display Adapter", "Weijiangtai video mirror driver", "Window-Eyes Display Driver", "Windows Live Display Driver", "Winvnc video hook driver", "WOW Vision Display Adapter", "WPS Virtual Desktop 1", "X350 Graphic Controller", "X550 Graphic Controller", "XinAnBao Graphics Adapter", "Xvision Technology display driver", "Základní grafický adaptér Microsoft", "ZoneScreen Virtual Display Driver", "Zoom Indirect Display Adapter", "Βασικός προσαρμογέας οθόνης Microsoft", "Τυπικός προσαρμογέας γραφικών VGA", "Базовый видеоадаптер (Майкрософт)", "Видеоконтроллер (VGA-совместимый)", "Семейство наборов микросхем Intel(R) 82945G Express (корпорация", "Семейство наборов микросхем Intel(R) Q965/Q963 Express (корпораци", "Семейство наборов микросхем Mobile Intel(R) 45 Express (корпораци", "Стандартный VGA графический адаптер", "ビデオ コントローラー (VGA 互換)", "מתאם גרפיקת VGA רגיל", "محول رسومات VGA القياسية", "표준 VGA 그래픽 어댑터", "标准 VGA 图形适配器", "標準 VGA グラフィック アダプター", "標準 VGA 繪圖卡", "视频控制器(VGA 兼容)"} + +var ddv_revision = []string{"1.1.0.4", "1.1.0.6", "1.3.2-au4-rev1", "1.4.10-au5-rev5", "2.5.2-fc-rev1", "4.0.8.0", "4.1.9.0", "4.2.2.0", "4.3.4.0", "4.3.5.0", "4.3.6.0", "4.3.7.0", "4.3.8.0", "4.3.9.0", "4.4.0.0", "4.4.1.0", "4.4.2.0", "5.1.0.39", "5.1.1.46", "5.1.2.50", "5.2.1.55", "5.2.10.108", "5.2.10.109", "5.2.11.111", "5.2.13.697", "5.2.15.748", "5.2.15.751", "5.2.15.756", "5.2.17.796", "5.2.2.60", "5.2.3.62", "5.2.4.77", "5.2.5.81", "5.2.6.87", "5.2.7.93", "5.2.8.103", "5.2.9.104", "5.2.9.106", "5.3.0.96", "5.3.1.107", "5.3.2.112"} + +var motherboard_eppid = []string{"CN04M3YM486433280358A00", "CN05HRPPWSC0087R00A3A00", "BR0TDN17CMJ009890049A00", "CN0845MX129663AF0504A00", "CN0W0CHXWS20081T04QXA01", "CN0RW61CCMC0097R0807A00", "CN0JYH5JWS20079N00HNA00", "CN0GY6Y87220041I05EYA02", "TW043RD6750858B200F9A01", "CN0C2XKD701635C800YVA00", "CN008W3YCMC009AT183BA00", "CN0PW5P4WSC0073G007RA00"} + +var processor_information = []string{"Core i3- 8100 3.6 Ghz 6 MB Cache 4 cores [Cores 4] [Logical/Core 1]", "Core i5- 7200 3.1 Ghz 3 MB Cache 2 cores [Cores 2] [Logical/Core 2]", "[Cores 1] [Logical/Core 1]", "[Cores 2] [Logical/Core 1]", "[Cores 2] [Logical/Core 2]", "[Cores 4] [Logical/Core 1]", "[Cores 4] [Logical/Core 2]", "[Cores 6] [Logical/Core 2]", "[Cores 8] [Logical/Core 2]", "11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz[Cores 4] [Logical/Core 2]", "AMD A10-4600M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A10-5700 APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A10-5745M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A10-5745M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A10-5750M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A10-6700 APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A10-6800K APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A10-7300 APU with AMD Radeon R6 Graphics [Cores 4] [Logical/Core 1]", "AMD A10-7300 Radeon R6, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 1]", "AMD A10-7300 Radeon R6, 10 Compute Cores 4C+6G [Cores 4] [Logical/Core 1]", "AMD A10-7700K Radeon R7, 10 Compute Cores 4C+6G[Cores 2] [Logical/Core 2]", "AMD A10-7800 Radeon R7, 12 Compute Cores 4C+8G [Cores 2] [Logical/Core 2]", "AMD A10-7860K Radeon R7, 12 Compute Cores 4C+8G[Cores 2] [Logical/Core 2]", "AMD A10-7870K Radeon R7, 12 Compute Cores 4C+8G[Cores 2] [Logical/Core 2]", "AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G[Cores 1] [Logical/Core 1]", "AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G[Cores 1] [Logical/Core 2]", "AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G[Cores 2] [Logical/Core 1]", "AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G[Cores 2] [Logical/Core 2]", "AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G[Cores 4] [Logical/Core 1]", "AMD A10-9600P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 1] [Logical/Core 1]", "AMD A10-9600P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 2] [Logical/Core 1]", "AMD A10-9600P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 3] [Logical/Core 1]", "AMD A10-9600P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 4] [Logical/Core 1]", "AMD A10-9630P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 2] [Logical/Core 1]", "AMD A10-9630P RADEON R5, 10 COMPUTE CORES 4C+6G[Cores 4] [Logical/Core 1]", "AMD A10-9700 RADEON R7, 10 COMPUTE CORES 4C+6G [Cores 4] [Logical/Core 1]", "AMD A10-9700E RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 4] [Logical/Core 1]", "AMD A12-9700P RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 1] [Logical/Core 1]", "AMD A12-9700P RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 2] [Logical/Core 1]", "AMD A12-9700P RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 3] [Logical/Core 1]", "AMD A12-9700P RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 4] [Logical/Core 1]", "AMD A12-9730P RADEON R7, 10 COMPUTE CORES 4C+6G[Cores 4] [Logical/Core 1]", "AMD A12-9800E RADEON R7, 12 COMPUTE CORES 4C+8G[Cores 1] [Logical/Core 1]", "AMD A12-9800E RADEON R7, 12 COMPUTE CORES 4C+8G[Cores 4] [Logical/Core 1]", "AMD A4-1350 APU with Radeon(TM) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A4-3300M APU with Radeon(tm) HD Graphics[Cores 1] [Logical/Core 1]", "AMD A4-3300M APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD A4-3305M APU with Radeon(tm) HD Graphics[Cores 1] [Logical/Core 1]", "AMD A4-3305M APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD A4-4300M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A4-5000 APU with Radeon(TM) HD Graphics [Cores 1] [Logical/Core 1]", "AMD A4-5000 APU with Radeon(TM) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A4-5145M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A4-5300 APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 2]", "AMD A4-6210 APU with AMD Radeon R3 Graphics [Cores 3] [Logical/Core 1]", "AMD A4-6210 APU with AMD Radeon R3 Graphics [Cores 4] [Logical/Core 1]", "AMD A4-6300 APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 2]", "AMD A4-6300 APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A4-7210 APU with AMD Radeon R3 Graphics [Cores 4] [Logical/Core 1]", "AMD A4-7300 APU with Radeon HD Graphics [Cores 1] [Logical/Core 2]", "AMD A4-7300 APU with Radeon HD Graphics [Cores 2] [Logical/Core 1]", "AMD A6-1450 APU with Radeon(TM) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A6-3400M APU with Radeon(tm) HD Graphics[Cores 1] [Logical/Core 1]", "AMD A6-3400M APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A6-3420M APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A6-3430MX APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A6-4400M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A6-4455M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A6-5345M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A6-5400B APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 2]", "AMD A6-5400K APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 2]", "AMD A6-6310 APU with AMD Radeon R4 Graphics [Cores 2] [Logical/Core 1]", "AMD A6-6310 APU with AMD Radeon R4 Graphics [Cores 3] [Logical/Core 1]", "AMD A6-6310 APU with AMD Radeon R4 Graphics [Cores 4] [Logical/Core 1]", "AMD A6-6400K APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 2]", "AMD A6-7310 APU with AMD Radeon R4 Graphics [Cores 2] [Logical/Core 1]", "AMD A6-7310 APU with AMD Radeon R4 Graphics [Cores 3] [Logical/Core 1]", "AMD A6-7310 APU with AMD Radeon R4 Graphics [Cores 4] [Logical/Core 1]", "AMD A6-7400K Radeon R5, 6 Compute Cores 2C+4G [Cores 1] [Logical/Core 2]", "AMD A6-9200 RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A6-9200 RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A6-9200 RADEON R4, 5 COMPUTE CORES 2C+3G 2.80 GHz[Cores 2] [Logical/Core 1]", "AMD A6-9220 RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A6-9220e RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A6-9220e RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A6-9225 RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A6-9225 RADEON R4, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A6-9500 RADEON R5, 8 COMPUTE CORES 2C+6G [Cores 2] [Logical/Core 1]", "AMD A8-3500M APU with Radeon(tm) HD Graphics[Cores 3] [Logical/Core 1]", "AMD A8-3500M APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A8-3520M APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A8-3550MX APU with Radeon(tm) HD Graphics[Cores 4] [Logical/Core 1]", "AMD A8-4500M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A8-5500 APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A8-5500B APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A8-5545M APU with Radeon(tm) HD Graphics [Cores 1] [Logical/Core 1]", "AMD A8-5545M APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 1]", "AMD A8-5545M APU with Radeon(tm) HD Graphics [Cores 3] [Logical/Core 1]", "AMD A8-5545M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A8-5550M APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A8-5600K APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A8-6410 APU with AMD Radeon R5 Graphics [Cores 4] [Logical/Core 1]", "AMD A8-6500 APU with Radeon(tm) HD Graphics [Cores 2] [Logical/Core 2]", "AMD A8-6500 APU with Radeon(tm) HD Graphics [Cores 4] [Logical/Core 1]", "AMD A8-7100 Radeon R5, 8 Compute Cores 4C+4G [Cores 2] [Logical/Core 1]", "AMD A8-7100 Radeon R5, 8 Compute Cores 4C+4G [Cores 4] [Logical/Core 1]", "AMD A8-7100 Radeon R5, 8 Compute Cores 4C+4G[Cores 4] [Logical/Core 1]", "AMD A8-7410 APU with AMD Radeon R5 Graphics [Cores 1] [Logical/Core 1]", "AMD A8-7410 APU with AMD Radeon R5 Graphics [Cores 2] [Logical/Core 1]", "AMD A8-7410 APU with AMD Radeon R5 Graphics [Cores 3] [Logical/Core 1]", "AMD A8-7410 APU with AMD Radeon R5 Graphics [Cores 4] [Logical/Core 1]", "AMD A8-7500 Radeon R7, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 2]", "AMD A8-7600 Radeon R7, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 2]", "AMD A8-7650K Radeon R7, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 2]", "AMD A8-7670K Radeon R7, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 2]", "AMD A8-8600P Radeon R6, 10 Compute Cores 4C+6G [Cores 2] [Logical/Core 2]", "AMD A8-8600P Radeon R6, 10 Compute Cores 4C+6G [Cores 4] [Logical/Core 1]", "AMD A9-9400 RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A9-9400 RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A9-9420e RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A9-9420e RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD A9-9425 RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 1] [Logical/Core 1]", "AMD A9-9425 RADEON R5, 5 COMPUTE CORES 2C+3G [Cores 2] [Logical/Core 1]", "AMD AMD AMD AMD AMD AMD AMD AMD AMD AMD AMD AMD [Cores 4] [Logical/Core 1]", "AMD ATHLON 64 X2 3800+[Cores 4] [Logical/Core 2]", "AMD Athlon Silver 3050U with Radeon Graphics [Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 Processor 3200+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 Processor 3500+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 Processor 3800+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 Processor 4000+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 3600+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 3800+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4000+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4200+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4400+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4600+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4800+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 4800+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5200+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5400+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5600+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 5800+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 6000+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual Core Processor 6400+[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 7450 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 7550 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) 7750 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 4050e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 4450B[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 4450e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 4850e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 5000B[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 5050e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 5200B[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 5400B[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Dual Core Processor 5600B[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II Neo K125 Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II Neo K145 Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II Neo K325 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II Neo K345 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II P320 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II P340 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II P360 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 215 Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II X2 215 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 220 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 235e Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 240 Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II X2 240 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 240e Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II X2 240e Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 245 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 245e Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 250 Processor[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) II X2 250 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 250e Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 250u Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 255 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 260 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 260u Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 270 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 270u Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 280 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 B22 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 B24 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 B26 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X2 B28 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X3 400e Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 420e Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 425 Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 435 Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 445 Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 450 Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X3 455 Processor[Cores 3] [Logical/Core 1]", "AMD Athlon(tm) II X4 605e Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 610e Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 620 Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 620e Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 630 Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 635 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) II X4 635 Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 640 Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) II X4 645 Processor[Cores 4] [Logical/Core 1]", "AMD Athlon(tm) Neo X2 Dual Core Processor 6850e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) Processor 1640B[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) Processor 2650e[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) Processor 2850e[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) Processor LE-1660[Cores 1] [Logical/Core 1]", "AMD Athlon(tm) X2 250 Processor[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) X2 340 Dual Core Processor [Cores 1] [Logical/Core 2]", "AMD Athlon(tm) X2 450 Dual Core Processor [Cores 1] [Logical/Core 2]", "AMD Athlon(tm) X2 Dual Core Processor 3250e[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) X2 Dual-Core QL-62[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) X2 Dual-Core QL-64[Cores 2] [Logical/Core 1]", "AMD Athlon(tm) X4 730 Quad Core Processor [Cores 2] [Logical/Core 2]", "AMD Athlon(tm) X4 760K Quad Core Processor [Cores 2] [Logical/Core 2]", "AMD Athlon(tm) X4 830 Quad Core Processor [Cores 2] [Logical/Core 2]", "AMD Athlon(tm) X4 840 Quad Core Processor [Cores 2] [Logical/Core 2]", "AMD Athlon(tm) X4 860K Quad Core Processor [Cores 2] [Logical/Core 2]", "AMD C-50 Processor[Cores 2] [Logical/Core 1]", "AMD C-60 APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD E1-1200 APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD E1-2500 APU with Radeon(TM) HD Graphics [Cores 1] [Logical/Core 1]", "AMD E1-2500 APU with Radeon(TM) HD Graphics [Cores 2] [Logical/Core 1]", "AMD E1-6010 APU with AMD Radeon R2 Graphics [Cores 2] [Logical/Core 1]", "AMD E1-7010 APU with AMD Radeon R2 Graphics [Cores 2] [Logical/Core 1]", "AMD E2-1800 APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD E2-3000M APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD E2-6110 APU with AMD Radeon R2 Graphics [Cores 4] [Logical/Core 1]", "AMD E2-7110 APU with AMD Radeon R2 Graphics [Cores 2] [Logical/Core 1]", "AMD E2-7110 APU with AMD Radeon R2 Graphics [Cores 4] [Logical/Core 1]", "AMD E2-9000 RADEON R2, 4 COMPUTE CORES 2C+2G [Cores 1] [Logical/Core 1]", "AMD E2-9000 RADEON R2, 4 COMPUTE CORES 2C+2G [Cores 2] [Logical/Core 1]", "AMD E2-9000e RADEON R2, 4 COMPUTE CORES 2C+2G [Cores 1] [Logical/Core 1]", "AMD E2-9000e RADEON R2, 4 COMPUTE CORES 2C+2G [Cores 2] [Logical/Core 1]", "AMD E-300 APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD E-350 Processor[Cores 2] [Logical/Core 1]", "AMD E-450 APU with Radeon(tm) HD Graphics[Cores 1] [Logical/Core 1]", "AMD E-450 APU with Radeon(tm) HD Graphics[Cores 2] [Logical/Core 1]", "AMD Eng Sample: 100-000000053-04_32/20_N [Cores 32] [Logical/Core 2]", "AMD Eng Sample: 100-000000083-40_38/18_Y [Cores 8] [Logical/Core 1]", "AMD Eng Sample: 100-000000084-40_37/21_Y [Cores 6] [Logical/Core 1]", "AMD Eng Sample: 100-000000098-40_39/27_Y [Cores 8] [Logical/Core 2]", "AMD Eng Sample: 100-000000099-40_40/28_Y [Cores 8] [Logical/Core 2]", "AMD Eng Sample: 100-000000100-40_37/30_Y [Cores 6] [Logical/Core 2]", "AMD EPYC 7251 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD EPYC 7261 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD EPYC 7262 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD EPYC 7281 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7301 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7302 16-Core Processor [Cores 16] [Logical/Core 1]", "AMD EPYC 7302 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7302P 16-Core Processor [Cores 16] [Logical/Core 1]", "AMD EPYC 7302P 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7351 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7351P 16-Core Processor [Cores 16] [Logical/Core 1]", "AMD EPYC 7351P 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD EPYC 7352 24-Core Processor [Cores 24] [Logical/Core 2]", "AMD EPYC 7401 24-Core Processor [Cores 24] [Logical/Core 2]", "AMD EPYC 7401P 24-Core Processor [Cores 24] [Logical/Core 2]", "AMD EPYC 7402P 24-Core Processor [Cores 24] [Logical/Core 1]", "AMD EPYC 7402P 24-Core Processor [Cores 24] [Logical/Core 2]", "AMD EPYC 7451 24-Core Processor [Cores 24] [Logical/Core 2]", "AMD EPYC 7452 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7501 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7502 32-Core Processor [Cores 32] [Logical/Core 1]", "AMD EPYC 7502P 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7542 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7551 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7551P 32-Core Processor [Cores 32] [Logical/Core 1]", "AMD EPYC 7551P 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7551P 32-Core Processor [Cores 8] [Logical/Core 2]", "AMD EPYC 7601 32-Core Processor [Cores 32] [Logical/Core 1]", "AMD EPYC 7601 32-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7702 64-Core Processor [Cores 64] [Logical/Core 1]", "AMD EPYC 7702P 64-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7742 64-Core Processor [Cores 32] [Logical/Core 2]", "AMD EPYC 7H12 64-Core Processor [Cores 32] [Logical/Core 2]", "AMD FX-8800P Radeon R7, 12 Compute Cores 4C+8G [Cores 2] [Logical/Core 2]", "AMD FX-8800P Radeon R7, 12 Compute Cores 4C+8G [Cores 4] [Logical/Core 1]", "AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G [Cores 2] [Logical/Core 1]", "AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G [Cores 3] [Logical/Core 1]", "AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G [Cores 4] [Logical/Core 1]", "AMD FX-9830P RADEON R7, 12 COMPUTE CORES 4C+8G [Cores 2] [Logical/Core 1]", "AMD FX-9830P RADEON R7, 12 COMPUTE CORES 4C+8G [Cores 4] [Logical/Core 1]", "AMD Opteron(tm) Processor 4122[Cores 4] [Logical/Core 1]", "AMD Opteron(tm) Processor 4130[Cores 4] [Logical/Core 1]", "AMD Opteron(tm) Processor 4133[Cores 4] [Logical/Core 1]", "AMD Opteron(tm) Processor 4162 EE[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4170 HE[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4174 HE[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4176 HE[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4180[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4184[Cores 6] [Logical/Core 1]", "AMD Opteron(tm) Processor 4226 [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4228 HE [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4234 [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4238 [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4274 HE [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 4280 [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 4284 [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 4310 EE [Cores 2] [Logical/Core 2]", "AMD Opteron(tm) Processor 4332 HE [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4334 [Cores 3] [Logical/Core 2]", "AMD Opteron(tm) Processor 4376 HE [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 4386 [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 6128[Cores 8] [Logical/Core 1]", "AMD Opteron(tm) Processor 6134[Cores 8] [Logical/Core 1]", "AMD Opteron(tm) Processor 6136[Cores 8] [Logical/Core 1]", "AMD Opteron(tm) Processor 6164 HE[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6168[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6172[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6172[Cores 4] [Logical/Core 1]", "AMD Opteron(tm) Processor 6174[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6176 SE[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6176[Cores 12] [Logical/Core 1]", "AMD Opteron(tm) Processor 6180 SE[Cores 12] [Logical/Core 1]", "AMD Opteron(TM) Processor 6212 [Cores 4] [Logical/Core 2]", "AMD Opteron(TM) Processor 6234 [Cores 6] [Logical/Core 2]", "AMD Opteron(TM) Processor 6238 [Cores 6] [Logical/Core 2]", "AMD Opteron(tm) Processor 6262 HE [Cores 8] [Logical/Core 2]", "AMD Opteron(TM) Processor 6272 [Cores 8] [Logical/Core 2]", "AMD Opteron(TM) Processor 6274 [Cores 8] [Logical/Core 2]", "AMD Opteron(TM) Processor 6276 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6278 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6281 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6282 SE [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6284 SE [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6328 [Cores 4] [Logical/Core 2]", "AMD Opteron(tm) Processor 6344 [Cores 6] [Logical/Core 2]", "AMD Opteron(tm) Processor 6348 [Cores 6] [Logical/Core 2]", "AMD Opteron(tm) Processor 6376 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6378 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6380 [Cores 8] [Logical/Core 2]", "AMD Opteron(tm) Processor 6386 SE [Cores 8] [Logical/Core 2]", "AMD Phenom(tm) 8450e Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) 8600B Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) 8650 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) 8750 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) 9150e Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9500 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9550 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9600 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9600B Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9650 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9750 Quad-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) 9750 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9850 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) 9950 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II N620 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II N660 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II N830 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II N850 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II N870 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II N930 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II N950 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II N970 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II P650 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II P820 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II P840 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II P860 Triple-Core Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II P920 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II P940 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II P960 Quad-Core Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X2 550 Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II X2 555 Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II X2 B53 Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II X2 B55 Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II X2 B57 Processor[Cores 2] [Logical/Core 1]", "AMD Phenom(tm) II X3 710 Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II X3 B75 Processor[Cores 3] [Logical/Core 1]", "AMD Phenom(tm) II X4 810 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 820 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 830 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 840 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 850 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 905e Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 920 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 925 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 940 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 945 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 955 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 960T Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 965 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 B93 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 B95 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X4 B97 Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X6 1035T Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X6 1035T Processor[Cores 6] [Logical/Core 1]", "AMD Phenom(tm) II X6 1045T Processor[Cores 6] [Logical/Core 1]", "AMD Phenom(tm) II X6 1055T Processor[Cores 4] [Logical/Core 1]", "AMD Phenom(tm) II X6 1055T Processor[Cores 6] [Logical/Core 1]", "AMD Phenom(tm) II X6 1075T Processor[Cores 6] [Logical/Core 1]", "AMD Phenom(tm) II X6 1090T Processor[Cores 6] [Logical/Core 1]", "AMD Phenom(tm) II X6 1100T Processor[Cores 6] [Logical/Core 1]", "AMD PRO A10-9700 R7, 10 COMPUTE CORES 4C+6G [Cores 4] [Logical/Core 1]", "AMD PRO A12-9800 R7, 12 COMPUTE CORES 4C+8G [Cores 4] [Logical/Core 1]", "AMD PRO A12-9800E R7, 12 COMPUTE CORES 4C+8G [Cores 4] [Logical/Core 1]", "AMD PRO A6-9500 R5, 8 COMPUTE CORES 2C+6G [Cores 2] [Logical/Core 1]", "AMD PRO A8-9600 R7, 10 COMPUTE CORES 4C+6G [Cores 4] [Logical/Core 1]", "AMD Processor model unknown[Cores 1] [Logical/Core 1]", "AMD Processor model unknown[Cores 2] [Logical/Core 1]", "AMD Processor model unknown[Cores 4] [Logical/Core 1]", "AMD Processor model unknown[Cores 6] [Logical/Core 1]", "AMD Ryzen 3 1200 Quad-Core Processor [Cores 4] [Logical/Core 1]", "AMD Ryzen 3 1300X Quad-Core Processor [Cores 4] [Logical/Core 1]", "AMD Ryzen 3 2200U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 1]", "AMD Ryzen 3 2200U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 2]", "AMD Ryzen 3 2200U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 1]", "AMD Ryzen 3 2200U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 3 2300U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 1]", "AMD Ryzen 3 2300U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 1]", "AMD Ryzen 3 2300U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 1]", "AMD Ryzen 3 2300U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 1]", "AMD Ryzen 3 3200U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 2]", "AMD Ryzen 3 3200U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 3 3250U with Radeon Graphics [Cores 2] [Logical/Core 2]", "AMD Ryzen 3 4300U with Radeon Graphics [Cores 4] [Logical/Core 1]", "AMD Ryzen 3 PRO 1300 Quad-Core Processor [Cores 1] [Logical/Core 1]", "AMD Ryzen 3 PRO 1300 Quad-Core Processor [Cores 3] [Logical/Core 1]", "AMD Ryzen 3 PRO 1300 Quad-Core Processor [Cores 4] [Logical/Core 1]", "AMD Ryzen 3 PRO 2200G with Radeon Vega Graphics[Cores 1] [Logical/Core 1]", "AMD Ryzen 3 PRO 2200G with Radeon Vega Graphics[Cores 4] [Logical/Core 1]", "AMD Ryzen 3 PRO 2300U w/ Radeon Vega Mobile Gfx[Cores 4] [Logical/Core 1]", "AMD Ryzen 5 1400 Quad-Core Processor [Cores 1] [Logical/Core 2]", "AMD Ryzen 5 1400 Quad-Core Processor [Cores 2] [Logical/Core 2]", "AMD Ryzen 5 1400 Quad-Core Processor [Cores 3] [Logical/Core 2]", "AMD Ryzen 5 1400 Quad-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 1500X Quad-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 1600 Six-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 1600X Six-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 2400G with Radeon Vega Graphics [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 2500U with Radeon Vega Graphics [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 1]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 2]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 1]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 1]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 2]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 1]", "AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 2600 Six-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 2600X Six-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 3500 6-Core Processor [Cores 6] [Logical/Core 1]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 1]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 1] [Logical/Core 2]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 1]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 1]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 2]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 1]", "AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 3600 6-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 3600X 6-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 4500U with Radeon Graphics [Cores 6] [Logical/Core 1]", "AMD Ryzen 5 4600H with Radeon Graphics [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 PRO 1500 Quad-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 5 PRO 1600 Six-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 5 PRO 2400G with Radeon Vega Graphics[Cores 4] [Logical/Core 2]", "AMD Ryzen 5 PRO 2500U w/ Radeon Vega Mobile Gfx[Cores 4] [Logical/Core 2]", "AMD Ryzen 7 1700 Eight-Core Processor [Cores 2] [Logical/Core 2]", "AMD Ryzen 7 1700 Eight-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 1700 Eight-Core Processor [Cores 6] [Logical/Core 1]", "AMD Ryzen 7 1700 Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 2] [Logical/Core 2]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 4] [Logical/Core 1]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 5] [Logical/Core 2]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 7] [Logical/Core 2]", "AMD Ryzen 7 1700X Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 1800X Eight-Core Processor [Cores 1] [Logical/Core 2]", "AMD Ryzen 7 1800X Eight-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 1800X Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 2700 Eight-Core Processor [Cores 1] [Logical/Core 1]", "AMD Ryzen 7 2700 Eight-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 2700 Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 2700U with Radeon Vega Graphics [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 2700U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 7 2700U with Radeon Vega Mobile Gfx [Cores 3] [Logical/Core 2]", "AMD Ryzen 7 2700U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 2700X Eight-Core Processor [Cores 2] [Logical/Core 2]", "AMD Ryzen 7 2700X Eight-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 2700X Eight-Core Processor [Cores 5] [Logical/Core 2]", "AMD Ryzen 7 2700X Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 1]", "AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx [Cores 2] [Logical/Core 2]", "AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 3700X 8-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen 7 3700X 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 3800X 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 4700U with Radeon Graphics [Cores 8] [Logical/Core 1]", "AMD Ryzen 7 4800H with Radeon Graphics [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 PRO 1700 Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 PRO 2700 Eight-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 7 PRO 2700U w/ Radeon Vega Mobile Gfx[Cores 4] [Logical/Core 2]", "AMD Ryzen 9 3900 12-Core Processor [Cores 12] [Logical/Core 2]", "AMD Ryzen 9 3900 12-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 9 3900X 12-Core Processor [Cores 12] [Logical/Core 2]", "AMD Ryzen 9 3900X 12-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen 9 3950X 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD Ryzen 9 3950X 16-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen 9 3990X 64-Core Processor[Cores 4] [Logical/Core 2]", "AMD Ryzen 9 4900H with Radeon Graphics [Cores 8] [Logical/Core 2]", "AMD Ryzen Threadripper 1900X 8-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen Threadripper 1900X 8-Core Processor [Cores 8] [Logical/Core 1]", "AMD Ryzen Threadripper 1900X 8-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen Threadripper 1920 12-Core Processor [Cores 12] [Logical/Core 2]", "AMD Ryzen Threadripper 1920X 12-Core Processor [Cores 12] [Logical/Core 2]", "AMD Ryzen Threadripper 1920X 12-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen Threadripper 1920X 12-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen Threadripper 1950X 16-Core Processor [Cores 16] [Logical/Core 1]", "AMD Ryzen Threadripper 1950X 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD Ryzen Threadripper 1950X 16-Core Processor [Cores 4] [Logical/Core 2]", "AMD Ryzen Threadripper 1950X 16-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen Threadripper 2920X 12-Core Processor [Cores 12] [Logical/Core 2]", "AMD Ryzen Threadripper 2920X 12-Core Processor [Cores 6] [Logical/Core 2]", "AMD Ryzen Threadripper 2950X 16-Core Processor [Cores 16] [Logical/Core 2]", "AMD Ryzen Threadripper 2950X 16-Core Processor [Cores 8] [Logical/Core 2]", "AMD Ryzen Threadripper 2990WX 32-Core Processor[Cores 32] [Logical/Core 2]", "AMD Ryzen: ZD270XBGM88AF_42/37_Y [Cores 8] [Logical/Core 2]", "AMD Ryzen: ZD3201BBM4KF4_34/32_Y [Cores 4] [Logical/Core 2]", "AMD Ryzen: ZD3406BAM88F4_38/34_Y [Cores 8] [Logical/Core 2]", "AMD Sempron(tm) 140 Processor[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) 150 Processor[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) Processor 3400+[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) Processor 3600+[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) Processor LE-1100[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) Processor LE-1250[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) Processor LE-1300[Cores 1] [Logical/Core 1]", "AMD Sempron(tm) X2 180 Processor[Cores 2] [Logical/Core 1]", "AMD Sempron(tm) X2 190 Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 Mobile Technology MK-36[Cores 1] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-50[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-52[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-56[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-58[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-60[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-62[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-64[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-66[Cores 2] [Logical/Core 1]", "AMD Turion(tm) 64 X2 Mobile Technology TL-68[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II N530 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II N570 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II Neo K625 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II Neo K645 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II P520 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II P540 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) II P560 Dual-Core Processor[Cores 2] [Logical/Core 1]", "AMD Turion(tm) X2 Dual Core Mobile RM-70[Cores 2] [Logical/Core 1]", "AMD Turion(tm) X2 Dual Core Mobile RM-74[Cores 2] [Logical/Core 1]", "AMD Turion(tm) X2 Dual-Core Mobile RM-74[Cores 2] [Logical/Core 1]", "AMD Turion(tm) X2 Dual-Core Mobile RM-75[Cores 2] [Logical/Core 1]", "AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-84[Cores 2] [Logical/Core 1]", "AMD V120 Processor[Cores 1] [Logical/Core 1]", "AMD V140 Processor[Cores 1] [Logical/Core 1]", "AMD V160 Processor[Cores 1] [Logical/Core 1]", "Celeron(R) Dual-Core CPU T3000 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Celeron(R) Dual-Core CPU T3100 @ 1.90GHz[Cores 2] [Logical/Core 1]", "Celeron(R) Dual-Core CPU T3300 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Celeron(R) Dual-Core CPU T3500 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Celeron(R) Dual-Core CPU T3500 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Common KVM processor[Cores 12] [Logical/Core 1]", "Common KVM processor[Cores 2] [Logical/Core 1]", "Common KVM processor[Cores 4] [Logical/Core 1]", "Common KVM processor[Cores 6] [Logical/Core 1]", "Core i3- 7100 3.9 Ghz 3 MB Cache 2 cores[Cores 2] [Logical/Core 2]", "Dual-Core AMD Opteron(tm) Processor 1210[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 1212[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 1214[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 1216[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 2212[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 2216[Cores 2] [Logical/Core 1]", "Dual-Core AMD Opteron(tm) Processor 8220 SE[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.66GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU 000 @ 1.60GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 000 @ 1.73GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 000 @ 1.87GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 000 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 000 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 000 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 000 @ 3.07GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 000 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 575 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU 585 @ 2.16GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU 2140 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU 2140 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU 2160 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU 2160 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T1300 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU T1350 @ 1.86GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU T1400 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T1500 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T1600 @ 1.66GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2050 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2060 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2080 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2130 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2250 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2300 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU T2300 @ 1.66GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2400 @ 1.83GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU T2400 @ 1.83GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2500 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU T2600 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU U1300 @ 1.06GHz[Cores 1] [Logical/Core 1]", "Genuine Intel(R) CPU U2400 @ 1.06GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU U2500 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU U4100 @ 1.30GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU U7300 @ 1.30GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU @ 1.60GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 1.70GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 1.90GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.00GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.30GHz[Cores 10] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.30GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.40GHz[Cores 8] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.50GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.50GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.60GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.70GHz[Cores 8] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.70GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.80GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.80GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.90GHz[Cores 6] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.90GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.90GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU @ 3.10GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.20GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.40GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU @ 1.80GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.00GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.00GHz[Cores 14] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.00GHz[Cores 14] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.10GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.10GHz[Cores 14] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 10] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 14] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 14] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.20GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.40GHz[Cores 10] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.40GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.40GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.80GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.80GHz[Cores 12] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.80GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU @ 2.90GHz[Cores 10] [Logical/Core 1]", "Genuine Intel(R) CPU @ 2.90GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.20GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 1.80GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.20GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.50GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.60GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 2.70GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 0 @ 3.10GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 0.80GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.00GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.40GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 1.50GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.60GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.60GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.60GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.80GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 1.90GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.00GHz[Cores 16] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.00GHz[Cores 18] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.00GHz[Cores 20] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.10GHz[Cores 22] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.10GHz[Cores 8] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 2.10GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 12] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 14] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 16] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 18] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.20GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.30GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.40GHz[Cores 14] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.50GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.60GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.60GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 2.60GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.70GHz[Cores 2] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.70GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 2.70GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.80GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.90GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 2.90GHz[Cores 8] [Logical/Core 1]", "Genuine Intel(R) CPU 0000 @ 2.90GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.00GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.00GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.10GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.10GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.30GHz[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.40GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.50GHz[Cores 6] [Logical/Core 2]", "Genuine Intel(R) CPU 0000 @ 3.50GHz[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 0000%@[Cores 10] [Logical/Core 2]", "Genuine Intel(R) CPU 0000%@[Cores 16] [Logical/Core 2]", "Genuine Intel(R) CPU 0000%@[Cores 24] [Logical/Core 2]", "Genuine Intel(R) CPU 0000%@[Cores 8] [Logical/Core 2]", "Genuine Intel(R) CPU 3.00GHz[Cores 2] [Logical/Core 1]", "Genuine Intel(R) CPU 3.40GHz[Cores 2] [Logical/Core 1]", "Intel Core i5 3.75GHz[Cores 4] [Logical/Core 1]", "Intel Core i5 8100 3.9 Ghz 6 MB Cache 4 cores[Cores 2] [Logical/Core 2]", "Intel Core i5 8800 4.6 Ghz 6 MB Cache 8 cores[Cores 2] [Logical/Core 2]", "Intel Core i5 8800 4.6 Ghz 6 MB Cache 8 cores[Cores 6] [Logical/Core 1]", "Intel Core i5 8800 5.6 Ghz 6 MB Cache 8 cores INSTALLED RAM 8 GB[Cores 6] [Logical/Core 1]", "Intel Core i5 9500 4.6 Ghz 6 MB Cache 8 cores[Cores 4] [Logical/Core 1]", "Intel Core i5 vPro, 3M Cache, 3.30 GHz Turbo - Flagship[Cores 2] [Logical/Core 2]", "Intel� Core� i5-1035G1[Cores 2] [Logical/Core 1]", "Intel Core i5-5750[Cores 2] [Logical/Core 2]", "Intel Core i7 - 4M Cache, up to 3.10 GHz Turbo[Cores 2] [Logical/Core 2]", "Intel Core i7 8700 3.2 GHz[Cores 2] [Logical/Core 2]", "Intel Core i7 vPro - 4M Cache, 3.7 GHz Turbo, Flagship[Cores 2] [Logical/Core 2]", "Intel Core i7 vPro MQ 3.80 GHz Turbo - Quad Core, 6M Cache, 8 Threads[Cores 4] [Logical/Core 2]", "Intel Core i7 vPro Quad Core - 6M Cache, 8 Threads - Up to 2.93 GHz Turbo[Cores 4] [Logical/Core 2]", "Intel Core i7 vPro Quad Core - 6M Cache, 8 Threads, Up to 2.93 GHz Turbo[Cores 4] [Logical/Core 2]", "Intel Core i7 vPro Quad Core - 6M Cache, 8 Threads[Cores 4] [Logical/Core 2]", "Intel Core i7 vPro Quad Core - 8M Cache, 8 Threads, up to 3.06 GHz Turbo[Cores 4] [Logical/Core 2]", "Intel Core i7-7740X[Cores 2] [Logical/Core 2]", "Intel Xeon E3-12xx v2 (Ivy Bridge, IBRS)[Cores 8] [Logical/Core 1]", "Intel(R) Core (TM) i7 - 7600 2.50 GHz", "Intel(R) Atom(TM) CPU 230 @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU 330 @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Atom(TM) CPU E3805 @ 1.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Atom(TM) CPU E3815 @ 1.46GHz[Cores 1] [Logical/Core 1]", "Intel(R) Atom(TM) CPU E3825 @ 1.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Atom(TM) CPU E3827 @ 1.74GHz[Cores 2] [Logical/Core 1]", "Intel(R) Atom(TM) CPU E3845 @ 1.91GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3735F @ 1.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3735G @ 1.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3740D @ 1.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3745D @ 1.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3770 @ 1.46GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3775 @ 1.46GHz[Cores 2] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3775 @ 1.46GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3775D @ 1.49GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU Z3795 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) CPU N270 @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N280 @ 1.66GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N450 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Atom(TM) CPU N450 @ 1.66GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N455 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Atom(TM) CPU N455 @ 1.66GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N470 @ 1.83GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N550 @ 1.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N550 @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Atom(TM) CPU N550 @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Atom(TM) CPU N570 @ 1.66GHz[Cores 2] [Logical/Core 2]", "Intel(R) Atom(TM) CPU Z2760 @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Atom(TM) CPU Z520 @ 1.33GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU Z530 @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU Z540 @ 1.86GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) CPU Z670 @ 1.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) x5-Z8500 CPU @ 1.44GHz[Cores 4] [Logical/Core 1]", "Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44GHz[Cores 4] [Logical/Core 1]", "Intel(R) Bore(TM) i5-4570 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) C/re(TM) )7-4712Q CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) CC150 CPU @ 3.50GHz[Cores 8] [Logical/Core 2]", "Intel(R) Celeron(R) 2955U @ 1.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) 2955U @ 1.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) 2957U @ 1.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) 2957U @ 1.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) 2981U @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) 3205U @ 1.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) 3205U @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) 3755U @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 420 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 430 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 440 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 450 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 530 @ 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 540 @ 1.86GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 550 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 560 @ 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 723 @ 1.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 743 @ 1.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 900 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 925 @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E1200 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E1400 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E1500 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E1500 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E3200 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E3300 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU E3400 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1101 @ 2.27GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU P4500 @ 1.87GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU P4600 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU P4600 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU U3400 @ 1.07GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU U3600 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU J1800 @ 2.41GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU J1800 @ 2.41GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU J1900 @ 1.99GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) CPU J3060 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU J3160 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2810 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2815 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2820 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2830 @ 2.16GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2830 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2840 @ 2.16GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2840 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2930 @ 1.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N2940 @ 1.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3010 @ 1.04GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3050 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3050 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3060 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3060 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3150 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3150 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) CPU U1800 @ 2.41GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1000M @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1005M @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1007U @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1017U @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 1017U @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 2950M @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3.06GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3215U @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3215U @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3855U @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3865U @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3865U @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3955U @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 3965U @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 4205U @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 4205U @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 4305U @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 5205U @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 847 @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 857 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 867 @ 1.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU 887 @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B710 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B720 @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B730 @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Celeron(R) CPU B800 @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B810 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B815 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B815 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B820 @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B830 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU B840 @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1610 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1610T @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1610T @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1620 @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1620 @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1620T @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1630 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1820 @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1820T @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1820TE @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1830 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1840 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1840 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1840T @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G1850 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3900 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3900E @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3900T @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3920 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3930 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3930T @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G3950 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G440 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G460 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G460 @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Celeron(R) CPU G465 @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G465 @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Celeron(R) CPU G470 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G470 @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Celeron(R) CPU G530 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G530T @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G540 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G550 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU G550T @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU I5-6500 @ [Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3350 @ 1.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3350 @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) D CPU 3.06GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) D CPU 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) D CPU 3.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) G4900 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) G4900 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G4900T CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G4920 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G4930 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) G4930 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G4930T CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G5900 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) G5900T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) J4005 CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) J4105 CPU @ 1.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) M CPU 410 @ 1.46GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M CPU 430 @ 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M CPU 520 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M CPU 530 @ 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M processor 1.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M processor 1.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M processor 1.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M processor 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) M processor 1500MHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) N4000 CPU @ 1.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Celeron(R) N4000 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) N4020 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Celeron(R) N4100 CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Celeron(R) N4120 CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Cope(TM) i7-4790 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core (TM) i3-7100 CPU @ 3.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core (TM) I7 CPU [Cores 4] [Logical/Core 1]", "Intel(R) Core i3- 7100 3.6 Ghz 6 MB Cache 6 cores[Cores 4] [Logical/Core 1]", "Intel(R) Core i3- 7100 3.9 Ghz 3 MB Cache 2 cores[Cores 2] [Logical/Core 2]", "Intel(R) Core i3- 7100U 3.7 Ghz 3 MB Cache 2 cores[Cores 2] [Logical/Core 2]", "Intel(R) Core i3- 7101E 3.9 Ghz 3 MB Cache 2 cores[Cores 2] [Logical/Core 2]", "Intel(R) Core i3- 7600 3.6 Ghz 6 MB Cache 6 cores[Cores 2] [Logical/Core 2]", "Intel(R) Core(PM) i5-4460 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TL) i3-4050 CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM i5-4460 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM( i3-4140T CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM( i3-4160 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM( i5-4460 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3 2105 3.10GHz", "Intel(R) Core(TM) I5 7500 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4712HQ CPU @[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) 4200Y CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) CPU 870 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) CPU 965 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) CPU Q 720 @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) CPU Q 820 @ 1.73GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) CPU X 920 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) CPU i7-7700 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) Duo CPU T2250 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU T2300 @ 1.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU T2350 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU T2400 @ 1.83GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU T2700 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) Duo CPU U2500 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 560 @ 3.33GHz [Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU 560 @ 3.33GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU M 390 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3 CPU M 390 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU U 330 @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU U 330 @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU U 380 @ 1.33GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3 CPU U 380 @ 1.33GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-10100 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i3-10100T CPU @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-10300 CPU @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i3-10300T CPU @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i3-10320 CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2100T CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2100T CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2102 CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2105 CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2120T CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2120T CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2125 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2125 CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2312M CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2357M CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2365M CPU @ 1.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2365M CPU @ 1.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2365M CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-2375M CPU @ 1.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-2375M CPU @ 1.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-2375M CPU @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-2375M CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3130M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3130M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3210 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3210 CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3220T CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3220T CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3220T CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3225 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3225 CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3240T CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-3240T CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3240T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3245 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3245 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-3250 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-3250 CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4000M CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4020U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4020Y CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4030Y CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4100M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150 CP @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150 CPE @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150T CPU @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4150T CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4150T CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4160T CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4160T CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4160T CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4170T CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-4170T CPU @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4170T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4170T CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4330 CPU @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-4330 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4330 CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4330T CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4340 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4350 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4350T CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4350T CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4360 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4360 CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4360T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-4370 CPU @ 3.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-4570T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-5015U CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-5015U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-5015U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-5015U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6098P CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6098P CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100E CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100H CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100TE CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100TE CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6300 CPU @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6300 CPU @ 3.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6300T CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-6300T CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6320 CPU @ 3.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-6320T CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7020U CPU @ 3.0GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7020U CPU @ 3.0GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100H CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100T CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100T CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100T CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100T CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100U @2.4GHz Integrated Graphics Memory 1GB [Cores 2] [Logical/Core", "Intel(R) Core(TM) i3-7100U CPU @ 2.40Ghz Integeated Graphics Memory 1 GB [Cores 2]", "Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100U CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100U CPU @ 3.9GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7100U CPU @ 3.9GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-7100U CPU @2.4Ghz Integeated Graphics Memory 1 GB [Cores 2] [", "Intel(R) Core(TM) i3-7130U CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-7130U CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-7130U CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7130U CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7300 CPU @ 4.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7300 CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7300T CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7300T CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7310T CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7320 CPU @ 4.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-7350K CPU @ 4.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-7350K CPU @ 4.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-8145U CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-8145U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i3-8145U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-8145U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i3-8300 CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-8300T CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-8350K CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100F CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100T CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100T CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i3-9100T CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9300 CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9300T CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i3-9350KF CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5 4500 CPU @ 3.16Ghz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 660 @ 3.33GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 660 @ 3.33GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 661 @ 3.33GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 670 @ 3.47GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 680 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 680 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU K 655 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 460 @ 2.13GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 580 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 580 @ 2.67GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU M 580 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5 CPU M 580 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU U 430 @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU U 470 @ 1.33GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU U 470 @ 1.33GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 CPU U 520 @ 1.07GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5 cpu 8500 @ 3.4 GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-10210U CPU @ 4.2GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-10300H CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-1034G1 CPU @ 0.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G7 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-1035G7 CPU @ 1.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-1035G7 CPU @ 1.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10400H CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-10400H CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-10400T CPU @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10500T CPU @ 2.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10600 CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-10600T CPU @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2310 CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2310 CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2310 CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2380P CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2390T CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2390T CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2405S CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2415M CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2450P CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500S CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500S CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2500T CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2537M CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2550K CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-2557M CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-2560M CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3210MP CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330S CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330S CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330S CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3330S CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3335S CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3337U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3340 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340L CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3340M CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340M CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3340M CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340M CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3340S CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3340S CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3350P CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3350P CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3350P CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3437U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3437U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3450 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3450 CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3450 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3450S CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3450S CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3450S CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470T CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470T CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3470T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-3475S CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3475S CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3550 CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3550S CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570S CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570S CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-3570T CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210H CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210H CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210H CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210H CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4210Y CPU @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4210Y CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4220Y CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4260U CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300Y CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4300Y CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4300Y CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4310M BPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4310M CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4310M CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4310M CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4310M CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4330M CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4340M CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4340M CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4350U CPU @ 1.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4430S CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460S CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460S CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460S CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460S CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4460T CPU @ 1.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570R CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570S CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570S CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570S CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570T CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4570TE CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4570TE CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-4590 CPT @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590S CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590S CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590S CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590S CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-4670 CPU @ 2.8 GHz max[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670K CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670S CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4670T CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690K CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690S CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690S CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-4690T CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-5###U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-5200 CPU @ 2.40GHz 4GB RAM [Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6200M CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6360U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6360U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6402P CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440EQ CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440EQ CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440HQ CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440HQ CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440HQ CPU @ 2.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6440HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6500TE CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-6600T CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7400T CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500 CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7600 CPU @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-7600 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7600 CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7600K CPU @ 3.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7600T CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-7Y54 CPU @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7Y54 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-7Y57 CPU @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-7Y57 CPU @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-7Y57 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8200Y CPU @ 1.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8200Y CPU @ 1.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8200Y CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8250U CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8250U CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.8GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8265UC CPU @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8300H CPU @ 2.3GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8305G CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8305G CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8305G CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz [Core 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-8400T CPU @ 1.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-8500T CPU @ 2.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600 CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600 CPU @ 3.10GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600 CPU @ 3.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600K CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600K CPU @ 3.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-8600T CPU @ 2.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9100 CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9100T CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400H CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9400H CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i5-9400T CPU @ 1.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500F CPU @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9500T CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600 CPU @ 3.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600KF CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i5-9600T CPU @ 2.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7 4590 CPU 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 6500U CPU @3.1GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 880 @ 3.07GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 880 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 920 @ 3.22GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 965 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 965 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 975 @ 3.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU 975 @ 3.33GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU 980 @ 3.33GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU K 875 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU L 640 @ 2.13GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 840 @ 1.87GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 840 @ 1.87GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU Q 840 @ 1.87GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU Q 840 @ 1.87GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU S 860 @ 2.53GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU U 640 @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU U 640 @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU U 680 @ 1.47GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU X 920 @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU X 920 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU X 920 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU X 940 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU X 940 @ 2.13GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7 CPU X 990 @ 3.47GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7 CPU X 990 @ 3.47GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7- CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-10700F CPU @ 2.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-10700KF CPU @ 3.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-10700T CPU @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-10810U CPU @ 1.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-10810U CPU @ 1.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-10875H CPU @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600 CPU @ 3.4GHZ[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2617M CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2630UM CPU @ 1.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2637M CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2637M CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2675QM CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2677M CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2710QE CPU @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2740QM CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2840QM CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-2960XM CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-2960XM CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-2960XM CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3517U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3517U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3517U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3517U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3520M CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3610QE CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3610QE CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3612QM CPU @ 2.79GHz [Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3667U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3667U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3687U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3687U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3687U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770 CPU @ 2.40Ghz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3770T CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3770T CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3920XM CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3920XM CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-3940XM CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-3940XM CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-3940XM CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3940XM CPU @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-3970X CPU @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4550U CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4600M CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4600M CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4600M CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4600M CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4610M CPU @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4610M CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4610M CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4702MQ CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4702MQ CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770T CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770T CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4770T CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770TE CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4770Е CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i74790 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz 4GB RAM[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4790T CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4790T CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4860EQ CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-4930MX CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4930MX CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4930MX CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-4930MX CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4930MX CPU @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4950HQ CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4960X CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-4960X CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-4960X CPU @ 3.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-4960X CPU @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-5###U CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5550U CPU @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5720K CPU @ 2.80GHz 4GB RAM[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6567U CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6650U CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6650U CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6700T CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6700TE CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820EQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820EQ CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HK CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HK CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820HK CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HK CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-6900K CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz[Cores 10] [Logical/Core 1]", "Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7500U CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7560U CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7560U CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7560U CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7560U CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60 GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60 GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700HQ @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HK CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HK CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HK CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HK CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HK CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 7] [Logical/Core 2]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-790 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7900X CPU @ 3.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-7Y75 CPU @ 1.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-7Y75 CPU @ 1.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-7Y75 CPU @ 1.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-7Y75 CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8086K CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8086K CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8086K CPU @ 4.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8086K CPU @ 4.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-820QM CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8250U CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8500U CPU @ 3.70GHz Dedicated Graphics 2GB[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8500Y CPU @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8500Y CPU @ 1.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8550U CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U 4.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8565U CPU @ 3.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz [Core 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8700T CPU @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8706G CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8706G CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700F CPU @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700KF CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700T CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700T CPU @ 2.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-9700T CPU @ 2.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-9800X CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-9800X CPU @ 3.80GHz[Cores 7] [Logical/Core 2]", "Intel(R) Core(TM) i7-9800X CPU @ 3.80GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i7-9800X CPU @ 3.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i7-9850H CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i9-10880H CPU @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900 CPU @ 2.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900F CPU @ 2.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900KF CPU @ 3.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900T CPU @ 1.90GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10900X CPU @ 3.70GHz[Cores 10] [Logical/Core 1]", "Intel(R) Core(TM) i9-10900X CPU @ 3.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-10920X CPU @ 3.50GHz[Cores 12] [Logical/Core 1]", "Intel(R) Core(TM) i9-10920X CPU @ 3.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Core(TM) i9-10940X CPU @ 3.30GHz[Cores 14] [Logical/Core 1]", "Intel(R) Core(TM) i9-10940X CPU @ 3.30GHz[Cores 14] [Logical/Core 2]", "Intel(R) Core(TM) i9-10980HK CPU @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz[Cores 18] [Logical/Core 1]", "Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz[Cores 18] [Logical/Core 2]", "Intel(R) Core(TM) i9-7900X CPU @ 3.30GHz[Cores 10] [Logical/Core 1]", "Intel(R) Core(TM) i9-7900X CPU @ 3.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-7900X CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i9-7900X CPU @ 3.30GHz[Cores 9] [Logical/Core 2]", "Intel(R) Core(TM) i9-7920X CPU @ 2.90GHz[Cores 11] [Logical/Core 2]", "Intel(R) Core(TM) i9-7920X CPU @ 2.90GHz[Cores 12] [Logical/Core 1]", "Intel(R) Core(TM) i9-7920X CPU @ 2.90GHz[Cores 12] [Logical/Core 2]", "Intel(R) Core(TM) i9-7940X CPU @ 3.10GHz[Cores 14] [Logical/Core 1]", "Intel(R) Core(TM) i9-7940X CPU @ 3.10GHz[Cores 14] [Logical/Core 2]", "Intel(R) Core(TM) i9-7960X CPU @ 2.80GHz[Cores 16] [Logical/Core 1]", "Intel(R) Core(TM) i9-7960X CPU @ 2.80GHz[Cores 16] [Logical/Core 2]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 16] [Logical/Core 2]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 17] [Logical/Core 1]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 17] [Logical/Core 2]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 18] [Logical/Core 1]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 18] [Logical/Core 2]", "Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz[Cores 9] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i9-9820X CPU @ 3.30GHz[Cores 10] [Logical/Core 1]", "Intel(R) Core(TM) i9-9820X CPU @ 3.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 7] [Logical/Core 2]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 7] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) I9-9900K CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900KS CPU @ 4.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900KS CPU @ 4.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900T CPU @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900T CPU @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900X CPU @ 3.50GHz[Cores 10] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900X CPU @ 3.50GHz[Cores 10] [Logical/Core 2]", "Intel(R) Core(TM) i9-9900X CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i9-9900X CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9920X CPU @ 3.50GHz[Cores 12] [Logical/Core 1]", "Intel(R) Core(TM) i9-9920X CPU @ 3.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Core(TM) i9-9920X CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz[Cores 12] [Logical/Core 1]", "Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz[Cores 13] [Logical/Core 2]", "Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz[Cores 14] [Logical/Core 1]", "Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz[Cores 14] [Logical/Core 2]", "Intel(R) Core(TM) i9-9960X CPU @ 3.10GHz[Cores 16] [Logical/Core 1]", "Intel(R) Core(TM) i9-9960X CPU @ 3.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 5] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 7] [Logical/Core 1]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 7] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980HK CPU @ 4.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz[Cores 17] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz[Cores 18] [Logical/Core 1]", "Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz[Cores 18] [Logical/Core 2]", "Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Core(TM) m3-6Y30 CPU @ 0.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) m3-6Y30 CPU @ 0.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m3-7Y30 CPU @ 1.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m5-6Y54 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) m5-6Y54 CPU @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m5-6Y57 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) m5-6Y57 CPU @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m5-7Y54 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) M-5Y10c CPU @ 0.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) M-5Y10c CPU @ 0.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) M-5Y71 CPU @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) M-5Y71 CPU @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) M-5Y71 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM) m7-7Y75 CPU @ 1.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 4400 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6420 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5200 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5300 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T7400 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU T7600 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU U7500 @ 1.06GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU U7600 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 CPU X6800 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4300 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4400 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4400 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E4700 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6300 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6305 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6400 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6405 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6850 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E6850 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7200 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7200 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7300 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7300 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7600 @ 3.06GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E7600 @ 3.06GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8135 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8200 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8200 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8235 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8300 @ 2.83GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8335 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8335 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8435 @ 3.06GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8600 @ 3.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU E8600 @ 3.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU L7500 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU L7700 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU L9400 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU L9600 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7370 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7450 @ 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7450 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7550 @ 2.26GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7550 @ 2.26GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P7570 @ 2.26GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P8800 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9300 @ 2.26GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9400 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9400 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9500 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9600 @ 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9600 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9600 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU P9700 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5270 @ 1.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5470 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5470 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5670 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5670 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5800 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5800 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5850 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5870 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5870 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5900 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T5900 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6400 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6400 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6500 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6500 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6600 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6600 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6670 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T6670 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T7800 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9500 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9550 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9600 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9600 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9800 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU T9900 @ 3.06GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU U7600 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU U7700 @ 1.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU U9300 @ 1.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU U9400 @ 1.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Duo CPU U9600 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU @ 2.26GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU Q6800 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU Q6850 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X7800 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X7900 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X9000 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X9100 @ 3.06GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X9650 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Extreme CPU X9770 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9000 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9100 @ 2.26GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9300 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9300 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q6700 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q6700 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8300 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8300 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9500 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9505 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz[Cores 3] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Core(TM)2 Solo CPU U2100 @ 1.06GHz[Cores 1] [Logical/Core 1]", "Intel(R) Core(TM)2 Solo CPU U3500 @ 1.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) CPU Core i3 8800 4.6 Ghz 6 MB Cache 8 cores[Cores 2] [Logical/Core 2]", "Intel(R) CPU Core i3 8800 4.6 Ghz 6 MB Cache 8 cores[Cores 4] [Logical/Core 1]", "Intel(R) CPU Core i3 9600 4.6 Ghz 6 MB Cache 8 cores[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) 3556U @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) 3558U @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 3558U @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) 3805U @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 3805U @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.26GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 2.53GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 2.93GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.06GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.06GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.73GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) 4 CPU 3.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) 4 CPU 3.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) C@U G3260 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G6950 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G6960 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6000 @ 1.87GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6000 @ 1.87GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6100 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6100 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6200 @ 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6200 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU P6300 @ 2.27GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J2900 @ 2.41GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J2900 @ 2.41GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J2900 @ 2.41GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J2900 @ 2.41GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J3710 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J3710 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3520 @ 2.16GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3530 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3530 @ 2.16GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3530 @ 2.16GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3540 @ 2.16GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3540 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3540 @ 2.16GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3540 @ 2.16GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3700 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3700 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3700 @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3700 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3710 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3710 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3710 @ 1.60GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3710 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N3710 @ 4.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU U2900 @ 2.41GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 1403 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 1403 v2 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 1407 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 2020M @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 2117U @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 2117U @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 2127U @ 1.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 2127U @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 3825U @ 1.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 3825U @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 3825U @ 1.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 4405U @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 4405U @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 4405U @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 4415U @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 4415U @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 4415U @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 4415U @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 5405U @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 5405U @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 5405U @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU 5405U @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 6405U @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU 997 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU A1018 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B940 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B940 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B950 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B960 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B960 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B970 @ 2.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B970 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU B980 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2010 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2020 @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2020 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2020T @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2020T @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2030 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2030 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2030T @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2030T @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2120 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G2130 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3220 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3220 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3220T @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3220T @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3240 @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3240 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3240T @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3240T @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3250 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3250 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3250T @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3258 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3260 @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3260 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3260T @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3420 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3430 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3440 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3440T @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3450 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3460 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3460T @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3930 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G3950 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4400 @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4400 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4400T @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4400T @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4500 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4500T @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4560 @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4560 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) CPU G4560 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4560 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU G4560T @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4560T @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4560T @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU G4600 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G4600 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU G4620 @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) CPU G620 @ 2.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G620 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G620T @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G630 @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G630 @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G630T @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G640 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G645 @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G645 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G645T @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G645T @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G840 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G840 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G850 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G860 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU G870 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) CPU J4205 @ 1.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N4200 @ 1.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) CPU N4200 @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) D CPU 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.46GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.46GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) D CPU 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) D CPU 3.73GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Dual CPU E2140 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2140 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU E2220 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2310 @ 1.46GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2390 @ 1.86GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2390 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T2410 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T3200 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T3200 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5400 CPU @ 3.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5400 CPU @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5400 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5400 CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5400T CPU @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5400T CPU @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5400T CPU @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5420 CPU @ 3.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5420 CPU @ 3.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5420 CPU @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5420 CPU @ 3.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5420T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5420T CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5500 CPU @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5500 CPU @ 3.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5500T CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5500T CPU @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5600 CPU @ 3.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Gold G5600 CPU @ 3.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G5600T CPU @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G6400 CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G6500 CPU @ 4.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) Gold G6500T CPU @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Pentium(R) M processor 1.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.73GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1.86GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1300MHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1400MHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1500MHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1600MHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 1700MHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 2.13GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) M processor 2.26GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) Silver J5005!CPU @ 1.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Pentium(R) Silver N5030 CPU @ 1.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Processor 5Y10 CPU @ 0.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Processor 5Y70 CPU @ 0.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Processor 5Y70 CPU @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Bronze 3104 CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3104 CPU @ 1.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3106 CPU @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3106 CPU @ 1.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3106 CPU @ 1.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3204 CPU @ 1.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) Bronze 3206R CPU @ 1.90GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3040 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3050 @ 2.13GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3060 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3065 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3070 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3075 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 3085 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5110 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5120 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5130 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5130 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5140 @ 2.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5140 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5148 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5150 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5150 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5160 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU 5160 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3110 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3113 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3120 @ 3.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5205 @ 1.86GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5240 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5310 @ 1.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5310 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5320 @ 1.86GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5320 @ 1.86GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5330 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5335 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5345 @ 2.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5345 @ 2.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5345 @ 2.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5405 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5405 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5405 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5410 @ 2.33GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5410 @ 2.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5420 @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5420 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5420 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5430 @ 2.66GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5430 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5430 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5440 @ 2.83GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5440 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5450 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5462 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5472 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5502 @ 1.87GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5503 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5504 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5504 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5506 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5507 @ 2.27GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5520 @ 2.27GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5520 @ 2.27GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5520 @ 2.27GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5530 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5530 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5530 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5540 @ 2.53GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5540 @ 2.53GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5540 @ 2.53GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5603 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5606 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5607 @ 2.27GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5620 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5630 @ 2.53GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5630 @ 2.53GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5640 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5640 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5645 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5645 @ 2.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5645 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5649 @ 2.53GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5649 @ 2.53GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E6510 @ 1.73GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E6540 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7330 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7340 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7420 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7440 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7450 @ 2.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7520 @ 1.87GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7530 @ 1.87GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7530 @ 1.87GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7540 @ 2.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7540 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L3406 @ 2.27GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L3426 @ 1.87GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5240 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5310 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5320 @ 1.86GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5335 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5410 @ 2.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5420 @ 2.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5420 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5430 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5506 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5520 @ 2.27GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5520 @ 2.27GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5520 @ 2.27GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5530 @ 2.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5530 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5609 @ 1.87GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5630 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5630 @ 2.13GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5638 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5639 @ 2.13GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5639 @ 2.13GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5640 @ 2.27GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L5640 @ 2.27GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L5640 @ 2.27GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L7455 @ 2.13GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU L7545 @ 1.87GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU L7555 @ 1.87GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3503 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3503 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3505 @ 2.53GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3520 @ 2.67GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3520 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3520 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3520 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3530 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3540 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3540 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3540 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3550 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3565 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3565 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3565 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3565 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3570 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3570 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3580 @ 3.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3580 @ 3.33GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3670 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3670 @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3670 @ 3.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3680 @ 3.33GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3680 @ 3.33GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3690 @ 3.47GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W3690 @ 3.47GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W3690 @ 3.47GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W5580 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W5580 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W5580 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU W5590 @ 3.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU W5590 @ 3.33GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3210 @ 2.13GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3220 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3230 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3320 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3323 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3330 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3350 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3353 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3360 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3363 @ 2.83GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3370 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3380 @ 3.16GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3430 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3430 @ 2.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3430 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3440 @ 2.53GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3440 @ 2.53GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3450 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3460 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3470 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X3470 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X3480 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5260 @ 3.33GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5270 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5272 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5340 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5355 @ 2.66GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5355 @ 2.66GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5365 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5450 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5450 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5450 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5460 @ 3.16GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5460 @ 3.16GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5460 @ 3.16GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5470 @ 3.33GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5472 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5482 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5482 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5492 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5550 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5550 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5550 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5560 @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5560 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5560 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5570 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5570 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5570 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5647 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5647 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5650 @ 2.67GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5660 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5660 @ 2.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5660 @ 2.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5667 @ 3.07GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5667 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5670 @ 2.93GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5670 @ 2.93GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5670 @ 2.93GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5670 @ 2.93GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5672 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5672 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5675 @ 3.07GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5675 @ 3.07GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5675 @ 3.07GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5675 @ 3.07GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5677 @ 3.47GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5677 @ 3.47GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5677 @ 3.47GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5679 @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5680 @ 3.33GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5680 @ 3.33GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5687 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5687 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5690 @ 3.47GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5690 @ 3.47GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X5690 @ 3.47GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5690 @ 3.47GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X5690 @ 3.47GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X6550 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X7350 @ 2.93GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X7460 @ 2.66GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X7542 @ 2.67GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X7550 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU X7560 @ 2.27GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU X7560 @ 2.27GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31220 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31220 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31220L @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1220L V2 @ 2.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1220L v3 @ 1.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31225 @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31225 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31225 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 V2 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 V2 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v6 @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v6 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1225 v6 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31230 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31230 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230 v5 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1230L v3 @ 1.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31235 @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31235 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1235L v5 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31240 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31240 @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240L v3 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1240L v5 @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31245 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31245 @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31245 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31245 @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 v3 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v3 @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 v3 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v3 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1245 v6 @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v6 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1245 v6 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31260L @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1260L v5 @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31265L @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1265L v3 @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31270 @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31270 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31275 @ 3.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1275 V2 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1275 v6 @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1275 v6 @ 3.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1275 v6 @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1275L v3 @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1276 v3 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31280 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1280 V2 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1280 V2 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1280 v3 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1280 v5 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1280 v6 @ 3.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1280 v6 @ 3.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1281 v3 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1281 v3 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1285 v3 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1285 v6 @ 4.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1285 v6 @ 4.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1285 v6 @ 4.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1285 v6 @ 4.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1285L v3 @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1286 v3 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1286L v3 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31290 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31290 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E31290 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E31290 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1290 V2 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1290 V2 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v5 @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1545M v5 @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E3-1575M v5 @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1410 0 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1410 v2 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1410 v2 @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1603 0 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 0 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 0 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v3 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v3 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v3 @ 2.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v3 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v4 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v4 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1603 v4 @ 2.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 0 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 0 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 0 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v2 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v2 @ 3.00GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v2 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v3 @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v3 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v3 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v4 @ 3.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v4 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1607 v4 @ 3.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 0 @ 3.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 0 @ 3.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 0 @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v2 @ 3.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 7] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1660 v4 @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1680 v2 @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1680 v2 @ 3.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1680 v3 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1680 v3 @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1680 v3 @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-1680 v4 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1680 v4 @ 3.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-1680 v4 @ 3.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2403 0 @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2403 v2 @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2407 v2 @ 2.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2407 v2 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2420 v2 @ 2.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2420 v2 @ 2.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2430 v2 @ 2.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2430L 0 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2430L v2 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2440 0 @ 2.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2440 0 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2440 v2 @ 1.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2450 0 @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2450 0 @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2450 v2 @ 2.50GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2450 v2 @ 2.50GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2450L 0 @ 1.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2450L v2 @ 1.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2470 v2 @ 2.40GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2470 v2 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2603 0 @ 1.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 0 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 0 @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v2 @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v2 @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v3 @ 1.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v3 @ 1.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v3 @ 1.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v3 @ 1.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2608L v3 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v4 @ 1.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v4 @ 1.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2609 v4 @ 1.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2618L v3 @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 5] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2620 v4@ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2628 v3 @ 2.50GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2628L v2 @ 1.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2628L v3 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2629 v3 @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz[Cores 9] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630L v3 @ 1.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630L v4 @ 1.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2630L v4 @ 1.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 0 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 0 @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2637 v4@ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz[Cores 7] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz[Cores 9] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 v2 @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 v2 @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 v3 @ 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 v3 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 v3 @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 v3 @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2648L v2 @ 1.90GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2648L v3 @ 1.80GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2649 v3 @ 2.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650L 0 @ 1.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650L v2 @ 1.70GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2650L v2 @ 1.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650L v3 @ 1.80GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2650L v4 @ 1.70GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2658 0 @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2658A v3 @ 2.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2663 v3 @ 2.80GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 v2 @ 3.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 v2 @ 3.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2669 v3 @ 2.30GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 7] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2673 v2 @ 3.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2675 v3 @ 1.80GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2675 v3 @ 1.80GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz[Cores 15] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2685 v3 @ 2.60GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2686 v3 @ 2.00GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2686 v3 @ 2.00GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 11] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz[Cores 9] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2689 v4 @ 3.10GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2690 v4@ 2.60GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2695 v2 @ 2.40GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2695 v2 @ 2.40GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2696 v2 @ 2.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2696 v3 @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2696 v3 @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2696 v4 @ 2.20GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2696 v4 @ 2.20GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz[Cores 20] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz[Cores 17] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz[Cores 17] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-2699A v4 @ 2.40GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-2699A v4 @ 2.40GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4603 0 @ 2.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4603 v2 @ 2.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4607 0 @ 2.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4610 0 @ 2.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4610 v2 @ 2.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4610 v3 @ 1.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4610 v4 @ 1.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4617 0 @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4620 v2 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4620 v3 @ 2.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4620 v4 @ 2.10GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4620 v4 @ 2.10GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4627 v2 @ 3.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4627 v3 @ 2.60GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4627 v4 @ 2.60GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4628L v4 @ 1.80GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4640 v2 @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4640 v3 @ 1.90GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4640 v4 @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4650 0 @ 2.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4650 0 @ 2.70GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4650 v2 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4650 v3 @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4650 v4 @ 2.20GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4650L 0 @ 2.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4655 v3 @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4655 v4 @ 2.50GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4660 v3 @ 2.10GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4660 v4 @ 2.20GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4667 v4 @ 2.20GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4669 v3 @ 2.10GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E5-4669 v4 @ 2.20GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E5-4669 v4 @ 2.20GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 2850 @ 2.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4807 @ 1.87GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4820 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4830 @ 2.13GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4850 @ 2.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4860 @ 2.27GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7- 4860 @ 2.27GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7- 8837 @ 2.67GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7- 8870 @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4809 v2 @ 1.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4809 v3 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4809 v4 @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4820 v2 @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4820 v3 @ 1.90GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4820 v4 @ 2.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4830 v2 @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4830 v3 @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4830 v4 @ 2.00GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4850 v4 @ 2.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4860 v2 @ 2.60GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4880 v2 @ 2.50GHz[Cores 15] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz[Cores 15] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz[Cores 15] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8860 v3 @ 2.20GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8860 v4 @ 2.20GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8867 v4 @ 2.40GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8880 v2 @ 2.50GHz[Cores 15] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8880 v4 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7-8880 v4 @ 2.20GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8890 v3 @ 2.50GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8890 v4 @ 2.20GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8891 v2 @ 3.20GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) CPU E7-8891 v2 @ 3.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8891 v4 @ 2.80GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8893 v2 @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-8893 v3 @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) CPU E7-L8867 @ 2.13GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) E-2124 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) E-2124 CPU @ 3.30GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2124G CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) E-2124G CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2126G CPU @ 3.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2134 CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2134 CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2144G CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2146G CPU @ 3.50GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) E-2146G CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2146G CPU @ 3.50GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2146G CPU @ 3.50GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2146G CPU @ 3.50GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176G CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2176G CPU @ 3.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 5] [Logical/Core 1]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2176M CPU @ 2.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186G CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186G CPU @ 3.80GHz[Cores 5] [Logical/Core 1]", "Intel(R) Xeon(R) E-2186G CPU @ 3.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2186G CPU @ 3.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2186M CPU @ 2.90GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2224 CPU @ 3.40GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2224G CPU @ 3.50GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2226G CPU @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2234 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2244G CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2246G CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) E-2246G CPU @ 3.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2246G CPU @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2274G CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) E-2274G CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2276G CPU @ 3.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2276M CPU @ 2.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) E-2286G CPU @ 4.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) E-2286G CPU @ 4.00GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) E-2286M CPU @ 2.40GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) E-2286M CPU @ 2.40GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) E-2286M CPU @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) E-2288G CPU @ 3.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) E-2288G CPU @ 3.70GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5115 CPU @ 2.40GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5115 CPU @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5117M CPU @ 2.00GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5120T CPU @ 2.20GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5122 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5122 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5122 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5215 CPU @ 2.50GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5215 CPU @ 2.50GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5215M CPU @ 2.50GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5217 CPU @ 3.00GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5217 CPU @ 3.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5218N CPU @ 2.30GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5220R CPU @ 2.20GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5220S CPU @ 2.70GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6128 CPU @ 3.40GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6128 CPU @ 3.40GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6128 CPU @ 3.40GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6128 CPU @ 3.40GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6134M CPU @ 3.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6134M CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6137 CPU @ 3.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6137M CPU @ 3.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz[Cores 20] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6138 CPU @ 2.00GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6138T CPU @ 2.00GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6139 CPU @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6139 CPU @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6140M CPU @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6142M CPU @ 2.60GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6143 CPU @ 2.80GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6144 CPU @ 3.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6144 CPU @ 3.50GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6144 CPU @ 3.50GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6145 CPU @ 2.00GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6146 CPU @ 3.20GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6146 CPU @ 3.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz[Cores 20] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6149 CPU @ 3.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6150 CPU @ 2.70GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6150 CPU @ 2.70GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6210U CPU @ 2.50GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6212U CPU @ 2.40GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6226 CPU @ 2.70GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6226 CPU @ 2.70GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz[Cores 20] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6234 CPU @ 3.30GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6234 CPU @ 3.30GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz[Cores 22] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz[Cores 22] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6240M CPU @ 2.60GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6242 CPU @ 2.80GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6242 CPU @ 2.80GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6244 CPU @ 3.60GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6244 CPU @ 3.60GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6244 CPU @ 3.70GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6246 CPU @ 3.30GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6246R CPU @ 3.40GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz[Cores 20] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz[Cores 20] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) Gold 6262V CPU @ 1.90GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8153 CPU @ 2.00GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8156 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8160 CPU @ 2.10GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8160 CPU @ 2.10GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8160M CPU @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8160M CPU @ 2.10GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8160M CPU @ 2.10GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8160M CPU @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8164 CPU @ 2.00GHz[Cores 26] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8170 CPU @ 2.10GHz[Cores 26] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8173M CPU @ 2.00GHz[Cores 28] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8173M CPU @ 2.00GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8176 CPU @ 2.10GHz[Cores 28] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8176 CPU @ 2.10GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8176M CPU @ 2.10GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8176M CPU @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz[Cores 28] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8180M CPU @ 2.50GHz[Cores 28] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8180M CPU @ 2.50GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8253 CPU @ 2.20GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8253 CPU @ 2.20GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8256 CPU @ 3.80GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8260L CPU @ 2.30GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8260M CPU @ 2.40GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8268 CPU @ 2.90GHz[Cores 24] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8268 CPU @ 2.90GHz[Cores 24] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8270 CPU @ 2.70GHz[Cores 26] [Logical/Core 1]", "Intel(R) Xeon(R) Platinum 8270 CPU @ 2.70GHz[Cores 26] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8276 CPU @ 2.20GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8276L CPU @ 2.20GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8280L CPU @ 2.70GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Platinum 8280M CPU @ 2.70GHz[Cores 28] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4109T CPU @ 2.00GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4112 CPU @ 2.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4112 CPU @ 2.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4112 CPU @ 2.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4112 CPU @ 2.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz[Cores 9] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4208 CPU @ 2.10GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4208 CPU @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4208 CPU @ 2.10GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4210R CPU @ 2.40GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4214R CPU @ 2.40GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4214Y CPU @ 2.20GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4215 CPU @ 2.50GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4215 CPU @ 2.50GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4215R CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz[Cores 16] [Logical/Core 1]", "Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz[Cores 16] [Logical/Core 2]", "Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) W-10855M CPU @ 2.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) W-10885M CPU @ 2.40GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) W-1250 CPU @ 3.30GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) W-2102 CPU @ 2.90GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2102 CPU @ 2.90GHz[Cores 3] [Logical/Core 1]", "Intel(R) Xeon(R) W-2102 CPU @ 2.90GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2104 CPU @ 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2104 CPU @ 3.20GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 3] [Logical/Core 2]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 5] [Logical/Core 1]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) W-2140B CPU @ 3.20GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 7] [Logical/Core 1]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 7] [Logical/Core 2]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) W-2150B CPU @ 3.00GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) W-2155 CPU @ 3.30GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(R) W-2155 CPU @ 3.30GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) W-2155 CPU @ 3.30GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) W-2155 CPU @ 3.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2155 CPU @ 3.30GHz[Cores 5] [Logical/Core 2]", "Intel(R) Xeon(R) W-2170B CPU @ 2.50GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) W-2175 CPU @ 2.50GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) W-2175 CPU @ 2.50GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) W-2175 CPU @ 2.50GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) W-2175 CPU @ 2.50GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2191B CPU @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) W-2195 CPU @ 2.30GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) W-2195 CPU @ 2.30GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(R) W-2195 CPU @ 2.30GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(R) W-2223 CPU @ 3.60GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2223 CPU @ 3.60GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2225 CPU @ 4.10GHz[Cores 4] [Logical/Core 1]", "Intel(R) Xeon(R) W-2225 CPU @ 4.10GHz[Cores 4] [Logical/Core 2]", "Intel(R) Xeon(R) W-2235 CPU @ 3.80GHz[Cores 6] [Logical/Core 1]", "Intel(R) Xeon(R) W-2235 CPU @ 3.80GHz[Cores 6] [Logical/Core 2]", "Intel(R) Xeon(R) W-2245 CPU @ 3.90GHz[Cores 8] [Logical/Core 1]", "Intel(R) Xeon(R) W-2245 CPU @ 3.90GHz[Cores 8] [Logical/Core 2]", "Intel(R) Xeon(R) W-2255 CPU @ 3.70GHz[Cores 10] [Logical/Core 1]", "Intel(R) Xeon(R) W-2255 CPU @ 3.70GHz[Cores 10] [Logical/Core 2]", "Intel(R) Xeon(R) W-2265 CPU @ 3.50GHz[Cores 12] [Logical/Core 1]", "Intel(R) Xeon(R) W-2265 CPU @ 3.50GHz[Cores 12] [Logical/Core 2]", "Intel(R) Xeon(R) W-2275 CPU @ 3.30GHz[Cores 14] [Logical/Core 1]", "Intel(R) Xeon(R) W-2275 CPU @ 3.30GHz[Cores 14] [Logical/Core 2]", "Intel(R) Xeon(R) W-2295 CPU @ 3.00GHz[Cores 18] [Logical/Core 1]", "Intel(R) Xeon(R) W-2295 CPU @ 3.00GHz[Cores 18] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 2.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 2.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 2.80GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.00GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.00GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.00GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.20GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.20GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.20GHz[Cores 2] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.40GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.40GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.60GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.60GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.73GHz[Cores 2] [Logical/Core 2]", "Intel(R) Xeon(TM) CPU 3.80GHz[Cores 1] [Logical/Core 1]", "Intel(R) Xeon(TM) CPU 3.80GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) MP CPU 3.16GHz[Cores 1] [Logical/Core 2]", "Intel(R) Xeon(TM) MV CPU 3.20GHz[Cores 2] [Logical/Core 2]", "Intel(R)Core(TM)i5-8400 @3.20GHz[Cores 4] [Logical/Core 1]", "Intel® Core™ i5-1035G1[Cores 2] [Logical/Core 1]", "Intel® Core™ i7-6500U[Cores 2] [Logical/Core 2]", "Intel® Core™ i7-7700 Processor CPU i7-7700 @ 3.4 GHz[Cores 4] [Logical/Core 2]", "Mobile AMD Sempron(tm) Processor 3500+[Cores 1] [Logical/Core 1]", "Mobile AMD Sempron(tm) Processor 3600+[Cores 1] [Logical/Core 1]", "Mobile Intel(R) Pentium(R) 4 CPU 2.80GHz[Cores 1] [Logical/Core 1]", "Mobile Intel(R) Pentium(R) 4 CPU 2.80GHz[Cores 1] [Logical/Core 2]", "Mobile Intel(R) Pentium(R) 4 CPU 3.06GHz[Cores 1] [Logical/Core 1]", "Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz[Cores 1] [Logical/Core 1]", "Mobile Intel(R) Pentium(R) 4 - M CPU 2.40GHz[Cores 1] [Logical/Core 1]", "Not Available[Cores 10] [Logical/Core 2]", "Not Available[Cores 4] [Logical/Core 2]", "Not Available[Cores 6] [Logical/Core 2]", "Not Available[Cores 8] [Logical/Core 1]", "Not Available[Cores 8] [Logical/Core 2]", "Pentium(R) Dual-Core CPU E5200 @ 2.50GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5200 @ 2.50GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5300 @ 2.60GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5300 @ 2.60GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5400 @ 2.70GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5400 @ 2.70GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5500 @ 2.80GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5500 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5700 @ 3.00GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5700 @ 3.00GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5800 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E5800 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6300 @ 2.80GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6500 @ 2.93GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6600 @ 3.06GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6700 @ 3.20GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6700 @ 3.20GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU E6800 @ 3.33GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4200 @ 2.00GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4200 @ 2.00GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4300 @ 2.10GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4300 @ 2.10GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4400 @ 2.20GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4400 @ 2.20GHz[Cores 2] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4500 @ 2.30GHz[Cores 1] [Logical/Core 1]", "Pentium(R) Dual-Core CPU T4500 @ 2.30GHz[Cores 2] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 1352[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 1354[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 1381[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2350[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2352[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2356[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2372 HE[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2373 EE[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2376[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2387[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 2389[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 8358 SE[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 8360 SE[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 8374 HE[Cores 4] [Logical/Core 1]", "Quad-Core AMD Opteron(tm) Processor 8378[Cores 4] [Logical/Core 1]", "Six-Core AMD Opteron(tm) Processor 2423 HE[Cores 6] [Logical/Core 1]", "Six-Core AMD Opteron(tm) Processor 2425 HE[Cores 6] [Logical/Core 1]", "Six-Core AMD Opteron(tm) Processor 2431[Cores 6] [Logical/Core 1]", "Super procesador Core i1000[Cores 4] [Logical/Core 1]"} + +var epsa_fail_code = []string{"2000:0511", "2000:8135", "2000:0155", "2000:0712", "2000:0334", "2000:0132", "2000:8138", "2000:0333", "2000:0141", "2000:0716", "2000:0131", "2000:0142", "2000:0133", "2000:0151", "2000:0415", "2000:0122", "2000:0161", "2000:0723", "2000:0145", "2000:0245", "2000:0156", "2000:0620", "2000:8170", "2000:0150", "2000:0321", "2000:8003", "2000:0244", "2000:0147", "2000:0114", "2000:0512", "2000:0135", "2000:0411", "2000:0314", "2000:0322", "2000:0713", "2000:0123", "2000:0711", "2000:8010", "2000:0146", "2000:0332", "2000:0124", "2000:0722", "2000:8008", "2000:0152", "2000:0243", "2000:8016", "2000:0413", "2000:0261", "2000:0121", "2000:0251", "2000:0331", "2000:0326", "2000:8171", "2000:8015", "2000:0221", "2000:0414", "2000:0327", "2000:0714", "2000:8019", "2000:0233", "2000:0212", "2000:0621", "2000:0315", "2000:8166", "2000:0242", "2000:0412", "2000:8160"} + +var epsa_version = []string{"V4400", "V4306", "V4304", "V4302", "V4300", "V4236", "V4228", "V4220", "V4126", "V4208", "V4222", "V4127", "V4206", "V4232", "V4117", "V4123", "V4122", "V4524", "V4230", "V4527", "V4213", "V4124", "V4214", "V4116", "V4129", "V4121", "V4525", "V4513", "V4216", "V4523", "V4520", "V4234", "V4204", "V4119", "V4125"} diff --git a/idk/datagen/dell.go b/idk/datagen/dell.go new file mode 100644 index 000000000..556f7a849 --- /dev/null +++ b/idk/datagen/dell.go @@ -0,0 +1,171 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" +) + +// Ensure Dell implements interface. +var _ Sourcer = (*Dell)(nil) + +// Dell implements Sourcer, and returns a very basic +// data set. It can be used as an Dell for writing +// additional custom Sourcers. +type Dell struct{} + +// NewDell returns a new instance of Dell. +func NewDell(cfg SourceGeneratorConfig) Sourcer { + return &Dell{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (e *Dell) Source(cfg SourceConfig) idk.Source { + src := &DellSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(19)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "service_tag"}, // 1 + idk.IntField{NameVal: "record_date", Min: intptr(10000), Max: intptr(30000)}, // 2 + idk.StringField{NameVal: "system_model"}, // 3 + idk.StringField{NameVal: "bios_version"}, // 4 + idk.StringField{NameVal: "operating_system"}, // 5 + idk.IntField{NameVal: "system_ram_gb", Min: intptr(1), Max: intptr(256)}, // 6 + idk.IntField{NameVal: "video_fan_speed", Min: intptr(0), Max: intptr(20)}, // 7 + idk.IntField{NameVal: "proc_fan_speed", Min: intptr(0), Max: intptr(20)}, // 8 + idk.StringField{NameVal: "epsa_fail_code"}, // 9 + idk.StringField{NameVal: "epsa_version"}, // 10 + idk.StringField{NameVal: "video_controller"}, // 11 + idk.StringField{NameVal: "ddv_revision"}, // 12 + idk.StringField{NameVal: "motherboard_eppid"}, // 13 + idk.IntField{NameVal: "proc_fan_avg", Min: intptr(0), Max: intptr(30)}, // 14 + idk.StringField{NameVal: "proc_information"}, // 15 + }, + } + + src.system_modelZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(system_model))-1) + src.operating_systemZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(operating_system))-1) + src.system_ramZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(system_ram))-1) + src.epsa_fail_codeZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(epsa_fail_code))-1) + src.epsa_versionZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(epsa_version))-1) + src.video_controllerZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(video_controller))-1) + src.ddv_revisionZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(ddv_revision))-1) + src.motherboard_eppidZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(motherboard_eppid))-1) + src.processor_informationZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(processor_information))-1) + src.bios_versionZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(bios_version))-1) + + src.record = make([]interface{}, len(src.schema)) + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Dell) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Dell) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (e *Dell) Info() string { + return "Generates data representative of Dell's internal hardware tracking operations." +} + +// Ensure DellSource implements interface. +var _ idk.Source = (*DellSource)(nil) + +// DellSource is an instance of a source generated +// by the Sourcer implementation Dell. +type DellSource struct { + cur uint64 + endAt uint64 + + rand *rand.Rand + system_modelZipf *rand.Zipf + operating_systemZipf *rand.Zipf + system_ramZipf *rand.Zipf + epsa_fail_codeZipf *rand.Zipf + epsa_versionZipf *rand.Zipf + video_controllerZipf *rand.Zipf + ddv_revisionZipf *rand.Zipf + motherboard_eppidZipf *rand.Zipf + processor_informationZipf *rand.Zipf + bios_versionZipf *rand.Zipf + + schema []idk.Field + record record +} + +// Record implements idk.Source. +func (e *DellSource) Record() (idk.Record, error) { + if e.cur >= e.endAt { + return nil, io.EOF + } + + e.record[0] = e.cur + e.record[1] = e.StringDell(7) + e.record[2] = e.generateRandomInt(30000, 10000) + e.record[3] = system_model[e.system_modelZipf.Uint64()] + e.record[4] = bios_version[e.bios_versionZipf.Uint64()] + e.record[5] = operating_system[e.operating_systemZipf.Uint64()] + e.record[6] = system_ram[e.system_ramZipf.Uint64()] + e.record[7] = e.generateRandomInt(20, 0) + e.record[8] = e.generateRandomInt(20, 0) + e.record[9] = epsa_fail_code[e.epsa_fail_codeZipf.Uint64()] + e.record[10] = epsa_version[e.epsa_versionZipf.Uint64()] + e.record[11] = video_controller[e.video_controllerZipf.Uint64()] + e.record[12] = ddv_revision[e.ddv_revisionZipf.Uint64()] + e.record[13] = motherboard_eppid[e.motherboard_eppidZipf.Uint64()] + e.record[14] = e.generateRandomInt(30, 0) + e.record[15] = processor_information[e.processor_informationZipf.Uint64()] + + e.cur++ + return e.record, nil +} + +// Schema implements idk.Source. +func (e *DellSource) Schema() []idk.Field { + return e.schema +} +func (e *DellSource) Seed(seed int64) { + e.rand.Seed(seed) +} + +var _ Seedable = (*DellSource)(nil) + +const charsetDell = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +// returns a string with random characters from a predefined charset of a specified length +func (e *DellSource) StringWithCharset(length int, charset string) string { + b := make([]byte, length) + for i := range b { + b[i] = charsetDell[e.rand.Intn(len(charsetDell))] + } + return string(b) +} + +//returns a string with random English alphabets of the specified length +func (e *DellSource) StringDell(length int) string { + return e.StringWithCharset(length, charsetDell) +} + +//generates a random int between range max and min (inclusive) +func (e *DellSource) generateRandomInt(max int, min int) int { + return e.rand.Intn(max-min) + min +} + +func (e *DellSource) Close() error { + return nil +} diff --git a/idk/datagen/dwarranty.go b/idk/datagen/dwarranty.go new file mode 100644 index 000000000..cb3e24b03 --- /dev/null +++ b/idk/datagen/dwarranty.go @@ -0,0 +1,124 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" +) + +// Ensure DWarranty implements interface. +var _ Sourcer = (*DWarranty)(nil) + +// DWarranty implements Sourcer. +type DWarranty struct{} + +// NewDWarranty returns a new instance of DWarranty. +func NewDWarranty(cfg SourceGeneratorConfig) Sourcer { + return &DWarranty{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (d *DWarranty) Source(cfg SourceConfig) idk.Source { + min := int64(0) + src := &DWarrantySource{ + totalGenerating: cfg.total, + WarrantySource: WarrantySource{ + startFrom: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(19)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.StringField{NameVal: "type"}, + idk.IntField{NameVal: "start", Min: &min}, + idk.IntField{NameVal: "last", Min: &min}, + idk.IntField{NameVal: "cust_id", Min: &min}, + idk.IntField{NameVal: "item_id", Min: &min}, + idk.StringField{NameVal: "prod"}, + }, + }, + } + src.typeZipf = rand.NewZipf(src.rand, 1.03, 5, uint64(len(types)-1)) + src.prodZipf = rand.NewZipf(src.rand, 1.2, 8, uint64(len(prods)-1)) + src.custZipf = rand.NewZipf(src.rand, 1.01, 4, 100000000) + + src.record = make([]interface{}, len(src.schema)) + src.record[2] = make([]string, 52*5) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (d *DWarranty) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (d *DWarranty) DefaultEndAt() uint64 { + return 2147483648 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (d *DWarranty) Info() string { + return "TODO" +} + +// Ensure DWarrantySource implements interface. +var _ idk.Source = (*DWarrantySource)(nil) + +type DWarrantySource struct { + WarrantySource + + totalGenerating uint64 + prodZipf *rand.Zipf +} + +func (s *DWarrantySource) Record() (idk.Record, error) { + if s.startFrom >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.startFrom + s.record[1] = types[s.typeZipf.Uint64()] + startDay := (s.startFrom * uint64(daysSinceStart)) / s.totalGenerating + days := numDays(s.rand) + s.record[2] = startDay + s.record[3] = startDay + uint64(days) + s.record[4] = int64(s.custZipf.Uint64()) // 100M customers + s.record[5] = s.rand.Intn(1500000000) // 1.5B items + s.record[6] = prods[s.prodZipf.Uint64()] + s.startFrom++ + return s.record, nil +} + +func (s *DWarrantySource) Schema() []idk.Field { + return s.schema +} + +var _ Seedable = (*DWarrantySource)(nil) + +var types = make([]string, 100) +var prods = make([]string, 3200) + +func init() { + var baseTypes = []string{"AZ-PQ-SUP1", "AZ-PQ-GOLDSUP", "BASICSUPPORT", "LM-NO-BASICLOWSUP", "QZ-PG-NONE", "CLIENTFGBG", "PHONE-BUNDLE", "AZ-PQ-PLATSUP", "AZ-PQ-PARTSUP", "OTHERSUP"} + for i := range types { + bt := baseTypes[i%len(baseTypes)] + types[i] = fmt.Sprintf("%s-%d", bt, i) + } + + for i := range prods { + prods[i] = fmt.Sprintf("PRD-%d", i) + } +} + +func (s *DWarrantySource) Close() error { + return nil +} diff --git a/idk/datagen/equipment.data.go b/idk/datagen/equipment.data.go new file mode 100644 index 000000000..d470dc7d7 --- /dev/null +++ b/idk/datagen/equipment.data.go @@ -0,0 +1,269 @@ +package datagen + +var costs = map[string]map[string]minMax{ + "Power": { + "Breaker": {min: 10, max: 400}, + "Generator": {min: 1000, max: 850000}, + "Air Handler": {min: 1000, max: 35000}, + "Chiller": {min: 1000, max: 500000}, + "UPS": {min: 200, max: 100000}, + }, + "Communications": { + "Router": {min: 100, max: 210000}, + "Server": {min: 1000, max: 25000}, + "BTS": {min: 500, max: 20000}, + "CPE": {min: 40, max: 500}, + }, + "Transactions": { + "POS": {min: 50, max: 1000}, + }, +} + +// domain,type,manufacturer,model +var domains = map[string]map[string]map[string][]string{ + "Power": { + "Breaker": { + "GE": {"A Series", "FB100", "FC100", "J600", "Q-Line", "Spectra", "TEY"}, + "Westinghouse": {"MCP331000", "MCP13300R", "KD3225", "JDC3200", "JDB3150", "HMCP150T4"}, + "Cutler-Hammer": {"C Series", "EG Series", "G Series", "JG Series", "LG Series", "NZM1", "NZM2"}, + "Siemens": {"SIRIUS 3RV29", "SIRIUS 3RV28", "SIRIUS 3RV27", "SIRIUS 3RV2773", "SIRIUS 3RT2024", "SIRIUS 3RV1611", "SIRIUS 3RV1714"}, + "ABB": {"Tmax T", "Tmax XT", "ISOMAX"}, + "Federal Pacific": {"NA260", "NK-631000", "NEF431100", "NBGF20", "NFJ631225", "HEF631100"}, + "Square D": {"QOB120", "QO120", "QO230", "QO220", "QO1515", "QO2020", "QO115PDF"}, + "PACS Industries": {"Type VAH", "Type VHA", "Type VHAL", "Model PHVX", "Model PHAX", "Model PHX,", "Model HAX", "15VAH5000", "VAH 13.8-63-50-27", "VAH 17-50-50-27", "FBO3121525-FS"}, + }, + "Generator": { + "ABB": {"3AFP9105246", "3AFP9105265"}, + "Action": {"Gen-Act-0", "Gen-Act-1", "Gen-Act-2", "Gen-Act-3"}, // fake + "Aggreko": {"YAAF003", "GHPII8065E", "GHPDC950", "GHPII8065E"}, + "Atlas Copco": {"QIS 35", "QIS 45", "QIS 65", "QIS 95", "QIS 415", "QIS 505"}, + "Caterpillar": {"C1.1", "C1.5", "C2.2", "C3.3", "C4.4"}, + "Cummins": {"D1703", "V2203", "4BT3.3", "S3.8"}, + "Himoinso": {"HYW-8 T5", "HYW-13 T5", "HYW-17 T5", "HYW-45 T5"}, + "Ingersoll Rand": {"Gen-Ing-0", "Gen-Ing-1", "Gen-Ing-2", "Gen-Ing-3"}, // fake + "Kirloskar": {"KG1-125WS", "KG1-15AS", "KG1-40AS", "KG1-100WS"}, + "Manlift Group": {"MPG-600", "MPG-650", "MPG-800", "MPG-1000", "MPG-1500", "MPG-2000"}, + "Generac": {"RG022", "RG04845", "RG027"}, + "Briggs & Stratton": {"076191", "076195"}, + "Winco": {"Gen-Win-0", "Gen-Win-1", "Gen-Win-2", "Gen-Win-3", "Gen-Win-4", "Gen-Win-5"}, // fake + "Westinghouse": {"Gen-Wes-0", "Gen-Wes-1", "Gen-Wes-2", "Gen-Wes-3", "Gen-Wes-4"}, // fake + "DuroMax": {"Gen-Dur-0", "Gen-Dur-1", "Gen-Dur-2", "Gen-Dur-3", "Gen-Dur-4", "Gen-Dur-5", "Gen-Dur-6"}, // fake + "DuroStar": {"Gen-Dur-0", "Gen-Dur-1", "Gen-Dur-2", "Gen-Dur-3"}, // fake + "ATIMA": {"Gen-ATI-0", "Gen-ATI-1", "Gen-ATI-2", "Gen-ATI-3", "Gen-ATI-4", "Gen-ATI-5", "Gen-ATI-6"}, // fake + "Champion Power Equipment": {"Gen-Cha-0", "Gen-Cha-1", "Gen-Cha-2"}, // fake + "Firman Power Equipment": {"Gen-Fir-0", "Gen-Fir-1", "Gen-Fir-2", "Gen-Fir-3", "Gen-Fir-4"}, // fake + }, + "Air Handler": { + "Carrier USA": {"Air-Car-0", "Air-Car-1"}, // fake + "Trane USA": {"TAM9A0A24", "TAM9A0B30", "TAM9A0C36", "TAM7A0C42", "TAM7A0C48", "TAM7A0C60"}, + "York": {"Air-Yor-0", "Air-Yor-1", "Air-Yor-2", "Air-Yor-3", "Air-Yor-4"}, // fake + "Wolf GmbH": {"Air-Wol-0", "Air-Wol-1", "Air-Wol-2", "Air-Wol-3", "Air-Wol-4", "Air-Wol-5", "Air-Wol-6"}, // fake + "GEA Air Treatment": {"Air-GEA-0"}, // fake + "Sabiana": {"Air-Sab-0", "Air-Sab-1", "Air-Sab-2", "Air-Sab-3", "Air-Sab-4", "Air-Sab-5", "Air-Sab-6"}, // fake + "BPS Clima": {"Air-BPS-0", "Air-BPS-1", "Air-BPS-2", "Air-BPS-3", "Air-BPS-4"}, // fake + "Goodman": {"Air-Goo-0", "Air-Goo-1", "Air-Goo-2", "Air-Goo-3", "Air-Goo-4", "Air-Goo-5", "Air-Goo-6"}, // fake + "Liebert": {"Air-Lie-0", "Air-Lie-1", "Air-Lie-2", "Air-Lie-3", "Air-Lie-4", "Air-Lie-5", "Air-Lie-6"}, // fake + "Nortek Air Solutions": {"Air-Nor-0", "Air-Nor-1"}, // fake + }, + "Chiller": { + "Cold Shot Chillers": {"ACWC-24-QST", "ACWC-36-QST", "ACWC-60-QST", "ACWC-90-QST", "ACWC120-QST", "ACWC-150-EST", "ACWC-180-EST", "ACWC-240-EST", "ACWC-300-GCST", "ACWC-360-GCST", "ACWC-480-GCST", "ACWC-600-GCST", "ACWC-720-GCST", "ACWC-840-GCST", "ACWC-960-GCST", "ACWC-1080-GCST", "ACWC-1200-GCST"}, + "Thermal Care Inc": {"TSEW10S", "TSEW15S", "TSEW20S", "TSEW25S", "TSEW30S", "TSEW40S", "TSEW50S", "TSEW60S", "TSEW70S", "TSEW80S", "TSEW100S", "TSEW120S"}, + "Glen Dimplex Thermal Solutions": {"SVI-3000-M", "SVI-5000-M", "SVI-7500-M", "SVI-10000-M", "SVI-15000-M", "SVI-20000-M", "SVO-2000-M", "SVO-3000-M", "SVO-5000-M", "SVO-7500-M", "SVO-10000-M", "SVO-15000-M", "SVO-20000-M"}, + "Chillermen": {"CMI20", "CMI40", "CMI60", "CMI80", "CMI100", "CMI120", "CMO20", "CMO40", "CMO60", "CMO80", "CMO100", "CMO120"}, + "Thermonics": {"W-40-1100", "W-40-2000", "W-40-3100", "W-60-2800", "W-60-3100", "W-60-4700", "W-80-600", "W-80-1800", "W-80-2500", "A-40-1100", "A-40-1900", "A-40-2700", "A-60-2700", "A-60-3000", "A-60-4600", "A-80-500", "A-80-1700", "A-80-2400"}, + "SINGLE Temperature Controls": {"STWS-20-I", "STWS-30-I", "STWS-40-I", "STWS50-I", "STWS-60-I", "STWS-80-I", "STWS-100-I", "STWS-120-I", "STWS-20-O", "STWS-30-O", "STWS-40-O", "STWS-50-O", "STWS-60-O", "STWS-80-O", "STWS-100-O", "STWS-120-O"}, + "Dry Coolers": {"OCWC-20", "OCWC-60", "OCWC-80", "OCWC-100", "OCWC-120", "OCAC-20", "OCAC-60", "OCAC-80", "OCAC-100", "OCAC-120"}, + "Advance Industrial Refrigeration": {"CA-PW-100", "CA-SW-100", "CA-TW-100", "CA-CW-100", "CA-SA-100", "CA-TA-100", "CA-CA-100"}, + "Data Aire": {"gFORCE-ULTRA-80", "gFORCE-ULTRA-100", "gFORCE-ULTRA-120", "gFORCE-DX-80", "gFORCE-DX-100", "gFORCE-DX-120", "gFORCE-GT-80", "gFORCE-GT-100", "gFORCE-GT-120"}, + }, + "UPS": { + "APC": {"GVSUPS10KB4FS", "GVSUPS10KB2FS", "GVSUPS100KB5GS", "G5TUPS100", "G5TUPS40", "GUPXC100FS", "GUPXC100GFDIS"}, + "Mitsubishi": {"9900CX", "9900D", "9900AEGIS", "7011B"}, + "Eaton": {"9PX700RT", "9PX1000RT", "9PX1000GRT", "5SC500", "5SC750", "5SC1000"}, + "Schneider": {"E3MUPS100KHS", "E3MUPS120KHS", "E3MUPS200KHS"}, + "Siemens": {"SITOP UPS5000", "SITOP UPS 501S", "SITOP PSU6200"}, + }, + }, + "Communications": { + "Router": { + "Meraki": {"MX64-HW", "MR33-HW", "", "", "", "", "", "", ""}, + "Juniper": {"MX960", "MX240", "MX480", "MX2020", "MX10016", "MX10003", "MX2008", "MX10008"}, + "Cisco": {"NCS 5001", "NCS 5002", "NCS 5011", "NCS 5501", "NCS 5501-SE", "NCS 5502", "NCS 5502-SE", "NCS 5516"}, + "Asus": {"ROG Rapture GT-AC5300", "RT-AC5300", "ROG Rapture GT-AC11000", "RT-AX88U", "RT-N12+"}, + }, + "Server": { + "Dell": {"1300", "1400SC", "1500SC", "1550", "1600SC", "1650", "1655MC", "1750", "1800", "1850", "1855", "1900", "1950", "1955", "2100", "2200", "2300", "2400", "2450", "2500", "2500SC", "2550", "2600", "2650", "2800", "2850", "2900", "2950", "2970", "300", "300SC", "3250", "350", "400SC", "4100", "4300", "4350", "4400", "4600", "500SC", "600SC", "6100", "6300", "6350", "6400", "6450", "650", "6600", "6650", "6800", "6850", "6950", "700", "7150", "7250", "750", "800", "830", "840", "8450", "850", "860", "C1100", "C2100", "C410X", "C4130", "C4140", "C5000", "C5125", "C5220", "C5230", "C6100", "C6105", "C6145", "C6220", "C6220 II", "C6300", "C6320", "C6320p", "C6400", "C6420", "C8000", "C8220", "C8220 II", "C8220x", "C8220xd", "FC430", "FC630", "FC640", "FC830", "FD332", "FM120x4 (for PE FX2/FX2s)", "M420", "M520", "M520 (for PE VRTX)", "M600", "M605", "M610", "M610x", "M620", "M620 (for PE VRTX)", "M630", "M630 (for PE VRTX)", "M640", "M640 (for PE VRTX)", "M710", "M710HD", "M805", "M820", "M820 (for PE VRTX)", "M830", "M830 (for PE VRTX)", "M905", "M910", "M915", "MX5016s", "MX740c", "MX840c", "R200", "R210", "R210 II", "R220", "R230", "R240", "R300", "R310", "R320", "R330", "R340", "R410", "R415", "R420", "R420xr", "R430", "R440", "R510", "R515", "R520", "R530", "R530xd", "R540", "R610", "R620", "R630", "R640", "R6415", "R710", "R715", "R720", "R720xd", "R730", "R730xd", "R740", "R740xd", "R740xd2", "R7415", "R7425", "R805", "R810", "R815", "R820", "R830", "R840", "R900", "R905", "R910", "R920", "R930", "R940", "R940xa", "SC 400", "SC 420", "SC 430", "SC 440", "SC1420", "SC1425", "SC1430", "SC1435", "T100", "T105", "T110", "T110 II", "T130", "T140", "T20", "T30", "T300", "T310", "T320", "T330", "T340", "T410", "T420", "T430", "T440", "T605", "T610", "T620", "T630", "T640", "T710"}, + "IBM": {"004", "00M", "014", "015", "017", "024", "084", "106", "112_212", "112_312", "124_224", "124_324", "12F", "12G", "12N", "12P", "12S", "1U3", "212", "212_312", "214_216", "21A", "21L", "224", "224_324", "22A", "22C", "22H", "22L", "22N", "22P", "22X", "2396LFA_2836LF8", "2397LFA_2836LF8", "2397LFA_2837LF8", "2398LFA_2836LF8", "2398LFA_2837LF8", "2398LFA_2838LF8", "2399LFA_2836LF8", "2399LFA_2837LF8", "2399LFA_2838LF8", "2399LFA_2839LF8", "2421961_2831985", "2421961_2831986", "2421961_283198E", "242196E_283185E", "242196E_283186E", "242196E_283198E", "2422961_2831985", "2422961_2831986", "2422961_283198E", "2422961_283298E", "242296E_283185E", "242296E_283186E", "242296E_283198E", "242296E_283298E", "2423961_2831985", "2423961_2831986", "2423961_283198E", "2423961_283298E", "2423961_283398E", "242396E_283185E", "242396E_283186E", "242396E_283198E", "242396E_283298E", "242396E_283398E", "2424961_2831985", "2424961_2831986", "2424961_283198E", "2424961_283298E", "2424961_283398E", "2424961_283498E", "242496E_283185E", "242496E_283186E", "242496E_283198E", "242496E_283298E", "242496E_283398E", "242496E_283498E", "24F", "24G", "25B", "25M", "2H2", "2H2_3H2", "2H4", "2H4_3H4", "2YR", "312", "324", "3H2", "3H4", "3YR", "416", "418", "41A", "420", "424", "425", "426", "42A", "42H", "430", "435", "436", "452", "4H4", "4YR", "520", "524_624", "525", "526", "530", "535", "536", "550", "551", "552", "55E_60E", "55F_60F", "55G_60G", "5YR", "60E", "60F", "60G", "60G_60F", "60S", "624", "631_632", "650", "651", "652", "6M2", "700", "724", "816", "824", "84E", "85E", "86E", "88E", "9119MHE_9080M9S", "9119MME_9080M9S", "92E_9AE", "92F", "92G", "931_941", "931_9B2", "932_941", "932_9B2", "94Y", "95E_96E", "95X", "983", "984", "985", "986", "988", "98B", "98E", "98F", "993", "994", "996", "9AE_92E", "A00", "A01", "A10", "A11_A21", "A6P", "A9F", "AC5", "ACL", "ACN", "ACP", "ACQ", "ACR", "AE1", "AE2", "AE3", "AE4", "AE5", "AE6", "AEA", "AEZ", "AF1", "AF4", "AF6", "AF7", "AF7_AF8", "AF8", "AFF", "AG8", "AIA", "AIE", "ALC", "ALS", "AMT", "AP1", "ARE", "AS1", "AS2", "AS3", "AS4", "AS5", "ASE", "B01", "B02", "B03", "B04", "B05", "B06", "B08", "B15", "B16", "B17", "B18", "B19", "B1A_E11", "B20", "B21", "B22", "B23", "B24", "B45", "BR1", "C10", "CB7", "CB8", "CBA", "CBB", "CBC", "CBD", "CBE", "CBF", "CBG", "CBH", "CD1", "CD3", "CD4", "CD5", "CD6", "CM1", "CMC", "CMF", "CMG", "CMH", "CMT", "CO1", "CO2", "CO3", "CO4", "CO5", "CP7", "CP8", "CR1", "CS1", "CS2", "CS3", "CS4", "CS5", "CS6", "CS7", "CS8", "CSA", "CSB", "CSM", "CT3", "CT5", "CT7", "CTA", "CTC", "CTF", "CTG", "CTH", "CY2", "CY3", "D22_D23", "D23_D53", "D25", "D52_D53", "D53_D23", "D55", "DAE", "DB1", "DB8", "DBA", "DBB", "DBC", "DBD", "DBE", "DBF", "DBG", "DBH", "DFH", "DME", "DP4", "DRP", "DS2", "E04", "E07_E08", "E07_EH7", "E08", "E08_60G", "E08_EH8", "E12", "E16", "E24", "E3A", "E85", "E92", "E96", "EAL", "EB7", "EB8", "EBA", "EBB", "EBC", "EBD", "EBE", "EBF", "EBG", "EBH", "ED0", "ED2", "EH7_EH8", "EH8", "EH8_60F", "EL5", "ELL", "ER6", "ES0", "ET7", "ET8", "ETA", "ETC", "ETF", "ETG", "ETH", "EV7", "EVA", "EVB", "EVC", "EVD", "EVE", "EVF", "EVG", "EVH", "EWM", "EXC", "EXF", "EXG", "EXH", "F00", "F04", "F05", "F06", "F08", "F12", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "F25", "F3S", "F40", "F41", "F42", "F43", "F44", "F45", "F46", "F47", "F48", "F49", "F50", "F51", "F52", "F53", "F54", "F55", "F56", "F57", "F58", "F59", "F5A_F5C", "F60", "F61", "F62", "F63", "F64", "F6A", "F6A_F6C", "F6C", "F7A", "F7A_F7C", "F7C", "F8A", "F8C", "F8S", "F92", "F96", "FA1", "FA2", "FA3", "FAC", "FAD", "FAF", "FAG", "FAH", "FAJ", "FAL", "FAP", "FAQ", "FAR", "FAS", "FAT", "FAU", "FAV", "FAW", "FAX", "FAY", "FAZ", "FF8", "FM6", "FN1", "FNT", "FS1", "FS2", "FSJ", "FSK", "FSL", "FSM", "FSN", "FSP", "FSQ", "FSR", "FSS", "FST", "FSU", "FSV", "FSW", "FSX", "FSY", "FSZ", "G36", "G37", "G62", "G90", "G98", "GLP", "GTC", "GTG", "GTH", "GTW", "GTX", "GU6", "H23", "H24", "H25", "H37", "H39", "H42", "H5S", "H6S", "H7S", "H8S", "HAA", "HAB", "HAC", "HAD", "HAE", "HAF", "HAG", "HAH", "HAI", "HAM", "HAS", "HGO", "HMA", "HMB", "HMC", "HMV", "HMW", "IP1", "ITL", "IVP", "J06", "J07", "J08", "J09", "J10", "J11", "J12", "J13", "J15", "JS1", "L22", "L22_L23", "L23_L53", "L25", "L2C", "L3A", "L3S", "L52_L53", "L53_L23", "L55", "LEU", "LF8", "LFA", "LNK", "LNX", "LOP", "LP1", "LP2", "LP3", "LP4", "LP5", "LP6", "LP7", "LP8", "LP9", "LSF", "LT1", "LT2", "LT3", "LT4", "LT5", "LT6", "LT7", "LT8", "LT9", "M01", "M10", "M9S", "MAL", "MC1", "MC2", "MC3", "MC4", "MC5", "MC6", "MCA", "MCB", "MCC", "MCD", "MCE", "MCF", "MCG", "MCH", "MCJ", "MCK", "MCL", "MCM", "MCN", "MCP", "MCQ", "MCR", "MCS", "MCT", "MG1", "MHD", "MHE", "MHE_M9S", "MHU", "MM3", "MM4", "MM5", "MMA_MMX", "MMD", "MME_M9S", "MMU", "MMX", "MR9", "N64", "N96", "NKY", "NLV", "OEL", "OMF", "P03", "PAC", "PAE", "PAI", "PAV", "PC1", "PC2", "PCA", "PCS", "PD1", "PD2", "PDP", "PE3", "PEL", "PHN", "PLX", "PPM", "PSA", "PSE", "PST", "PT1", "PTB", "PTC", "PTL", "PVE", "PVL", "PVS", "PWO", "PXI", "QU1", "QU2", "QUB", "R04", "R16", "R18", "R42", "R50", "RB7", "RB8", "RBA", "RBB", "RBC", "RBD", "RBE", "RBF", "RBG", "RBH", "RDI", "RDS", "RDW", "REC", "REF", "REG", "REH", "RM7", "RMA", "RMB", "RMC", "RMD", "RME", "RMF", "RMG", "RMH", "RMZ", "RS1", "RS3", "S01", "S02", "S03", "S10", "S12", "S13", "S14", "S16", "S17", "S24", "S24_S54", "S25", "S2C", "S42", "S48", "S52", "S54_S24", "S55", "S5H", "S6H", "S7H", "S8H", "SA2", "SAP", "SAV", "SBV", "SCP", "SCV", "SDV", "SEU", "SEV", "SF1", "SF2", "SF3", "SF4", "SF5", "SF6", "SF7", "SF8", "SFV", "SGV", "SHV", "SKC", "SKL", "SKM", "SKP", "SLE", "SM1", "SM2", "SM3", "SM4", "SM5", "SM6", "SM7", "SM8", "SP3", "SPE", "SPM", "SPN", "SPO", "SPP", "SS1", "SSA", "SSB", "SSC", "SSE", "SSJ", "SSK", "SSL", "SSM", "SSN", "SSP", "SSQ", "SSR", "ST1", "STG", "SU3", "SV1", "SV2", "SV3", "SV4", "SV5", "SV6", "SV7", "SV8", "SV9", "SVA", "SVB", "SVC", "SVD", "SVE", "SVF", "SVG", "SVH", "SVJ", "SVK", "SVL", "SVM", "SVN", "SVP", "SVQ", "SVR", "SVS", "SVT", "SVU", "SVV", "SVW", "SVX", "SVY", "SVZ", "SWM", "SX3", "T00", "T12", "T24", "T32", "T42", "T48", "T96", "TAA", "TAB", "TAC", "TAD", "TAE", "TAF", "TAH", "TAI", "TBG", "TF4", "TL2", "TL3", "TL4", "TL5", "TL6", "TL7", "TL8", "TL9", "TR1", "U12", "U16", "U24", "U25", "U5B", "U7A", "U7B", "U7C", "UF3", "UF7", "UF8", "UG8", "UHB", "V12", "V24", "V42", "VC7", "VC8", "VCA", "VCB", "VCC", "VCD", "VCE", "VCS", "VE3", "VEC", "VED", "VF1", "VL3", "VM7", "VS3", "W28", "WDS", "WE2", "WE3", "WQE", "WQM", "WQS", "WQX", "X11", "X12", "X13", "X15", "X29", "X49", "X51", "X52", "X53", "X54", "X55", "X56", "X57", "X58", "XB7", "XB8", "XBA", "XBB", "XBC", "XBD", "XBE", "XBF", "XBG", "XBH", "XC1", "XC2", "XC3", "XC4", "XC5", "XC6", "XC7", "XC8", "XD8", "XDA", "XDB", "XDC", "XDD", "XDE", "XDF", "XDG", "XDH", "XSA", "XSB", "XT2", "XT7", "XTA", "XTB", "XTC", "XTF", "XTG", "XTH", "XW1", "XX1", "XX2", "XX3", "XX4", "XX5", "XX9", "XXC", "XXD", "XXE", "XXF", "XXG", "XXK", "XXL", "XXQ", "XXR", "XXS", "XXT", "YYB", "YYC", "YYE", "Z87", "ZZC", "ZZF", "ZZG", "ZZH"}, + "Cisco": {"WAAS", "UCS", "ACE", "Mini", "B460_M4", "B420_M4", "B260_M4", "B200_M4", "B480_M5", "B200_M5", "C460_M4", "C240_M4", "C220_M4", "C480_M5", "C240_M5", "C220_M5", "6200", "6300"}, + "Lenovo": {"TD340", "TD350", "RS140", "RD340", "RD440", "RD550", "RD650", "TS140", "TS440", "TD330", "TS130", "TS430", "TD200", "TD200x", "TD230", "TS200v", "RD220", "RD230", "RD240", "TD100", "TD100x", "TS200", "RS110", "RD120", "RD210", "RS210", "TS100"}, + "Acer": {"Altos_T310", "Altos_T110", "Altos_T110_F4", "AT350_F3", "Altos_C100_F3", "AR780", "Altos_R380_F2", "Altos_R360_F2", "Altos_R320_F3", "AR580", "AW2000h", "AB7000_F3"}, + "Asus": {"TS700-E8-RS8 V2", "TS700-E9-RS8", "RS720Q-E9-RS8-S", "RS700-E9-RS12", "RS720Q-E9-RS24-S", "RS720-E9-RS12-E", "RS100-E10-PI2", "RS100-E9-PI2", "ESC4000 G4", "ESC4000 G3", "RS500A-E9-RS4-U", "RS700A-E9-RS12", "ESC8000 G4/10G", "RS720-E9-RS24-E", "RS300-E10-RS4", "RS720A-E9-RS24-E", "RS520-E9-RS12-E", "RS300-E9-PS4", "RS700A-E9-RS4", "ESC8000 G4", "RS500A-E10-RS12U", "TS100-E10-PI4", "ESC4000 G4X", "ESC4000 DHD G4", "RS300-E9-RS4"}, + "Huawei": {"9008", "9016", "9032", "E9000", "CH242", "CH226", "CH225", "CH222 ", "CH220", "CH140", "CH121", "CH140L", "CH121L", "9000", "6000", "RH8100", "RH5885H", "RH5885", "5288", "RH2288H", "RH2288", "RH1288", "X6800", "XH628", "XH622", "XH620", "X6000", "XH321"}, + "Fujitsu": {"TX1310_M1", "TX1320_M2", "TX1330_M2", "TX150_S8", "TX2540_M1", "TX2560_M2", "RX1330_M2", "RX2510_M2", "RX2520_M1", "RX2530_M2", "RX2540_M2", "RX2560_M2", "RX4770_M2", "BX400_S1", "BX600_S1", "BX600_S2", "BX600_S3", "BX900_S2", "BX2560_M2", "BX2580_M2", "BX2560_M2", "BX2580_M2", "CX400_M1", "CX400_S2", "CX420_S1", "CX2550_M2", "CX2570_M2", "CX250_S2", "CX270_S2", "CX272_S1"}, + "Intel": {"R1208WFTYSR", "R1304WFTYSR", "R2208WFTZSR", "R2224WFTZSR", "R2308WFTZSR", "R2312WFTZSR", "M2098S-2U4N3", "M2099Q-2U4N6", "R1102S-1U4", "R2096S-2U8", "R2096S-2U8", "R2101S-2U24-Plus", "R2103S-1U10", "R2124Q-1U10", "R2122S-2U12", "W2001S-FULL", "W2002S-FULL", "T2097S-FULL8"}, + "NEC": {"Express5800/R320f", "Express5800/R320g", "Express5800/R320g", "Express5800/R120g-1M", "Express5800/R120g-2M", "Express5800/R120g-2M"}, + "Oracle": {"X8-2", "X8-2L", "X8-8", "M8-8", "M10-1", "M10-4S", "S7-2", "M12-1", "M12-2", "M12-2S"}, + }, + "BTS": { + "CommScope": {"UAP", "UAP-X", "UAP-N25"}, + "Cisco": {"MFELX1-RF", "GLC-LH-SMD-RF", "SFP-GE-T-RF"}, + "Danphone": {"DCB9140", "DCM9140F"}, + "Microelectronics Technology": {"MCH-14801", "MRH-24605", "MCH-14801", "MCH-24713"}, + "Nortel": {"EL4512045", "AA1419043-E6"}, + "Powerwave Technologies": {"Nexus FT 4000"}, + "Purcell Systems": {"42RU", "37RU", "74RU"}, + "Sunwave": {"CrossFire HRU", "CrossFire NRU", "CrossFire AU", "Crossfire LRU"}, + "TriadRF Systems": {"THPR"}, + }, + "CPE": { + "Cisco": {"1841", "2801", "2811", "2821", "2851", "3825", "3845"}, + "Motorola": {"SB5101", "SB5101U", "SB6182", "SBV6220", "SB6121", "SBG6580", "SB6120"}, + "Arris": {"CM820A", "DG1670A", "DG860A", "DG950A", "NVG468MQ", "SBG6400"}, + "Technicolor": {"C2000T", "TC8117", "TC8305C", "TC8717"}, + "Netgear": {"C6300", "C6300BD", "CG3000D", "CM1000", "CM400", "N600"}, + "Ubee": {"UBC1302", "UBC1318", "UBC1322", "UBC1319", "UBC1303", "UBC1301", "EVW32C", "UBC1310", "UBC1307", "DVW32CB", "DDW36C"}, + "D-Link": {"DCM 301"}, + "Huawei": {"MT130U"}, + "SMC Networks": {"SMCD3GNV3"}, + "Zoom Telephonics": {"5341", "5350", "5352"}, + }, + }, + "Transactions": { + "POS": { + "Square": {"Square Terminal", "Square Register"}, + "Shopkeep": {"POS-Sho-0", "POS-Sho-1", "POS-Sho-2", "POS-Sho-3", "POS-Sho-4", "POS-Sho-5"}, // fake + "Springboard": {"B850", "B851", "125702"}, + "Lightspeed": {"POS-Lig-0", "POS-Lig-1", "POS-Lig-2", "POS-Lig-3", "POS-Lig-4"}, + "Verifone": {"E355", "E280", "E285", "Ruby2", "Topaz", "RubiCi"}, + "Revel": {"M-S 16", "Cash Drawer", "Revel L Stand (Night)", "Revel C Stand", "Revel Stand Alone Kiosk", "Whozz Calling ID", "RevelGuard"}, + "Upserve": {"POS-Ups-0", "POS-Ups-1", "POS-Ups-2", "POS-Ups-3", "POS-Ups-4", "POS-Ups-5"}, + "NCR": {"PX10", "P1235", "P1532", "P1535", "XR7"}, + "GrOOV": {"GrOOV One", "GrOOV One Plus", "GrOOV StoreFront", "GrOOV Terminal"}, + "Magtek": {"DynaPro", "DynaPro Go", "DynaPro Mini"}, + }, + }, +} + +// domain,type,manufacturer,model +// var domains = map[string]map[string]map[string][]string{ +// "Power": map[string]map[string][]string{ +// "Breaker": map[string][]string{ +// "GE": []string{}, +// "Westinghouse": []string{}, +// "Cutler-Hammer": []string{}, +// "Siemens": []string{}, +// "ABB": []string{}, +// "Federal Pacific": []string{}, +// "Square D": []string{}, +// "PACS Industries": []string{}, +// }, +// "Generator": map[string][]string{ +// "ABB": []string{}, +// "Action": []string{}, +// "Aggreko": []string{}, +// "Atlas Copco": []string{}, +// "Caterpillar": []string{}, +// "Cummins": []string{}, +// "Himoinso": []string{}, +// "Ingersoll Rand": []string{}, +// "Kirloskar": []string{}, +// "Manlift Group": []string{}, +// "Generac": []string{}, +// "Briggs & Stratton": []string{}, +// "Winco": []string{}, +// "Westinghouse": []string{}, +// "DuroMax": []string{}, +// "DuroStar": []string{}, +// "ATIMA": []string{}, +// "Champion Power Equipment": []string{}, +// "Firman Power Equipment": []string{}, +// }, +// "Air Handler": map[string][]string{ +// "Carrier USA": []string{}, +// "Trane USA": []string{}, +// "York": []string{}, +// "Wolf GmbH": []string{}, +// "GEA Air Treatment": []string{}, +// "Sabiana": []string{}, +// "BPS Clima": []string{}, +// "Goodman": []string{}, +// "Liebert": []string{}, +// "Nortek Air Solutions": []string{}, +// }, +// "Chiller": map[string][]string{ +// "Cold Shot Chillers": []string{}, +// "Thermal Care Inc": []string{}, +// "Glen Dimplex Thermal Solutions": []string{}, +// "Chillermem": []string{}, +// "Thermonics": []string{}, +// "SINGLE Temperature Controls": []string{}, +// "Dry Coolers": []string{}, +// "Advance Industrial Refrigeration": []string{}, +// "Data Aire": []string{}, +// }, +// "UPS": map[string][]string{ +// "APC": []string{}, +// "Mitsubishi": []string{}, +// "Eaton": []string{}, +// "Schneider": []string{}, +// "Siemens": []string{}, +// }, +// }, +// "Communications": map[string]map[string][]string{ +// "Router": map[string][]string{ +// "Meraki": []string{}, +// "Juniper": []string{}, +// "Cisco": []string{}, +// }, +// "Server": map[string][]string{ +// "Dell": []string{}, +// "IBM": []string{}, +// "Cisco": []string{}, +// "Lenovo": []string{}, +// "ACER": []string{}, +// "ASUS": []string{}, +// "Huawei": []string{}, +// "Fuitsu": []string{}, +// "Intel": []string{}, +// "NEC": []string{}, +// "Oracle": []string{}, +// }, +// "BTS": map[string][]string{ +// "CommScope": []string{}, +// "Cisco": []string{}, +// "Danphone": []string{}, +// "Microelectronics Technology": []string{}, +// "Nortel": []string{}, +// "Powerwave Technologies": []string{}, +// "Purcell Systems": []string{}, +// "Sunwave": []string{}, +// "TriadRF Systems": []string{}, +// }, +// "CPE": map[string][]string{ +// "Cisco": []string{}, +// "Motorola": []string{}, +// "Arris": []string{}, +// "Technicolor": []string{}, +// "Netgear": []string{}, +// "Ubee": []string{}, +// "D-Link": []string{}, +// "Huawei": []string{}, +// "SMC Networks": []string{}, +// "Zoom Telephonics": []string{}, +// }, +// }, +// "Transactions": map[string]map[string][]string{ +// "POS": map[string][]string{ +// "Square": []string{}, +// "Shopkepp": []string{}, +// "Springboard": []string{}, +// "Lightspeed": []string{}, +// "Verifone": []string{}, +// "Revel": []string{}, +// "Upserve": []string{}, +// "NCR": []string{}, +// "GrOOV": []string{}, +// "Magtek": []string{}, +// }, +// }, +// } diff --git a/idk/datagen/equipment.go b/idk/datagen/equipment.go new file mode 100644 index 000000000..0af1800df --- /dev/null +++ b/idk/datagen/equipment.go @@ -0,0 +1,282 @@ +package datagen + +import ( + "errors" + "fmt" + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Equipment implements interface. +var _ Sourcer = (*Equipment)(nil) + +// Equipment implements Sourcer. +type Equipment struct{} + +// NewEquipment returns a new instance of Equipment. +func NewEquipment(cfg SourceGeneratorConfig) Sourcer { + return &Equipment{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (e *Equipment) Source(cfg SourceConfig) idk.Source { + src := &EquipmentSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "domain"}, // 1 + idk.IntField{NameVal: "cost"}, // 2 + idk.IntField{NameVal: "site_id"}, // 3 + idk.DateIntField{NameVal: "date_acquired", Unit: idk.Day}, // 4 + idk.DateIntField{NameVal: "last_maintenance", Unit: idk.Day}, // 5 + idk.StringField{NameVal: "name"}, // 6 + idk.StringField{NameVal: "type"}, // 7 + idk.StringField{NameVal: "manufacturer"}, // 8 + idk.StringField{NameVal: "model"}, // 9 + }, + mfgrZipfs: make(map[string]map[string]*rand.Zipf), + modelZipfs: make(map[string]map[string]map[string]*rand.Zipf), + } + + src.dcZipf = rand.NewZipf(src.rand, 1.5, 6, 3000000) + + // set up zipfs for all equipment manufacturers and models + // + // TODO: I believe the fact that we make rand calls during map + // iteration (where order is random) is making this datagen + // non-reproducible. + for dom, typeMap := range domains { + src.mfgrZipfs[dom] = make(map[string]*rand.Zipf) + src.modelZipfs[dom] = make(map[string]map[string]*rand.Zipf) + for typ, mfgrMap := range typeMap { + src.modelZipfs[dom][typ] = make(map[string]*rand.Zipf) + src.mfgrZipfs[dom][typ] = rand.NewZipf(src.rand, 1.001+src.rand.Float64(), float64(src.rand.Intn(7))+src.rand.Float64()+1, uint64(len(mfgrMap))-1) + for mfgr, models := range mfgrMap { + src.modelZipfs[dom][typ][mfgr] = rand.NewZipf(src.rand, 1.001+src.rand.Float64(), float64(src.rand.Intn(7))+src.rand.Float64()+1, uint64(len(models))-1) + } + } + } + + src.record = make([]interface{}, len(src.schema)) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Equipment) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Equipment) DefaultEndAt() uint64 { + return 36000000 - 1 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (e *Equipment) Info() string { + return "Generates equipment and device data (manufacturer, cost, etc) - includes a foreign key for network_ts, power_ts, transaction_ts." +} + +// Ensure EquipmentSource implements interface. +var _ idk.Source = (*EquipmentSource)(nil) + +type EquipmentSource struct { + Log logger.Logger + + rand *rand.Rand + mfgrZipfs map[string]map[string]*rand.Zipf + modelZipfs map[string]map[string]map[string]*rand.Zipf + dcZipf *rand.Zipf + schema []idk.Field + + cur, endAt uint64 + + record record +} + +func (s *EquipmentSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + switch { + case s.cur < 5000000: + s.fillRecord("Power", s.powerType()) + case s.cur < 35000000: + s.fillRecord("Communications", s.communicationsType()) + case s.cur < 36000000: + s.fillRecord("Transactions", s.transactionsType()) + default: + return nil, errors.New("exhausted equipment data set") + } + s.cur++ + + return s.record, nil +} + +func (s *EquipmentSource) fillRecord(domain, eqType string) { + s.record[1] = domain + + // type + s.record[7] = eqType + + // manufacturer + mfgrs := mfgrLists[domain][eqType] + mfgr := mfgrs[s.mfgrZipfs[domain][eqType].Uint64()] + s.record[8] = mfgr + + // model + models := domains[domain][eqType][mfgr] + modelZipf, ok := s.modelZipfs[domain][eqType][mfgr] + if !ok { + s.Log.Printf("%s %s %s", domain, eqType, mfgr) + } + model := models[modelZipf.Uint64()] + s.record[9] = model + + // cost + s.record[2] = costs[domain][eqType].Cost(s.rand) + + // site id + s.record[3] = s.siteID(eqType) + + // date acquired + s.record[4] = startDayInt + s.rand.Int63n(365*10-200) + + // last maintenance + s.record[5] = s.record[4].(int64) + s.rand.Int63n(todayInt-s.record[4].(int64)) + +} + +func (s *EquipmentSource) powerType() string { + num := s.rand.Intn(100) + switch { + case num < 75: + return "Breaker" + case num < 77: + return "Generator" + case num < 82: + return "Air Handler" + case num < 88: + return "Chiller" + default: + return "UPS" + } +} + +func (s *EquipmentSource) siteID(typ string) int64 { + switch typ { + case "Breaker": + return s.rand.Int63n(4680000) + case "Generator": + return s.rand.Int63n(4680000) + case "Air Handler": + return s.rand.Int63n(4680000) + case "Chiller": + return s.rand.Int63n(4680000) + case "UPS": + return s.rand.Int63n(4680000) + case "Router": + num := s.rand.Int63n(1000 + 7000 + 3000000) + switch { + case num < 8000: + // MSC or Headend + return num + default: + // datacenter + return num + 1680000 + } + case "Server": + num := s.rand.Intn(100) + // not a datacenter + if num == 0 { + // non-DC + return s.rand.Int63n(1688000) + } else { + // DC + return int64(s.dcZipf.Uint64()) + 1688000 + } + case "BTS": + // Cell Site + return s.rand.Int63n(400000) + 488000 + case "CPE": + // Retail + return s.rand.Int63n(400000) + 88000 + case "POS": + // Retail + return s.rand.Int63n(400000) + 88000 + default: + panic(fmt.Sprintf("unknown type %s", typ)) + } +} + +func (s *EquipmentSource) communicationsType() string { + // 30M communications eq from 5M to 35M + // 1M router, 14M Server, 13M CPE, 2M BTS + id := s.record[0].(uint64) + switch { + case id < 18000000: + return "CPE" + case id < 19000000: + return "Router" + case id < 33000000: + return "Server" + default: + return "BTS" + } +} + +func (s *EquipmentSource) transactionsType() string { return "POS" } + +func (s *EquipmentSource) Schema() []idk.Field { + return s.schema +} + +func (s *EquipmentSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*EquipmentSource)(nil) + +var mfgrLists = make(map[string]map[string][]string) + +func init() { + for name, typeMap := range domains { + mfgrLists[name] = make(map[string][]string) + for typ, mfgrMap := range typeMap { + mfgrs := make([]string, 0) + for mfgr := range mfgrMap { + mfgrs = append(mfgrs, mfgr) + } + mfgrLists[name][typ] = mfgrs + } + } +} + +type minMax struct { + min int64 + max int64 +} + +func (m minMax) Cost(r *rand.Rand) int64 { + return r.Int63n(m.max-m.min) + m.min + +} + +func (s *EquipmentSource) Close() error { + return nil +} diff --git a/idk/datagen/example.go b/idk/datagen/example.go new file mode 100644 index 000000000..c9db61d35 --- /dev/null +++ b/idk/datagen/example.go @@ -0,0 +1,100 @@ +package datagen + +import ( + "fmt" + "io" + + "github.com/molecula/featurebase/v3/idk" +) + +// Ensure Example implements interface. +var _ Sourcer = (*Example)(nil) + +// Example implements Sourcer, and returns a very basic +// data set. It can be used as an example for writing +// additional custom Sourcers. +type Example struct{} + +// NewExample returns a new instance of Example. +func NewExample(cfg SourceGeneratorConfig) Sourcer { + return &Example{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +// NOTE: avro Name fields can only contain certain +// characters. +// See: https://avro.apache.org/docs/current/spec.html#names +func (e *Example) Source(cfg SourceConfig) idk.Source { + src := &ExampleSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "string"}, // 1 + }, + } + + src.record = make([]interface{}, len(src.schema)) + src.record[0] = uint64(0) + src.record[1] = make([]byte, 12) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Example) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Example) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (e *Example) Info() string { + return "generate data for a couple of fields to use as an example" +} + +// Ensure ExampleSource implements interface. +var _ idk.Source = (*ExampleSource)(nil) + +// ExampleSource is an instance of a source generated +// by the Sourcer implementation Example. +type ExampleSource struct { + cur uint64 + endAt uint64 + + schema []idk.Field + record record +} + +// Record implements idk.Source. +func (e *ExampleSource) Record() (idk.Record, error) { + if e.cur >= e.endAt { + return nil, io.EOF + } + + // Increment the ID. + e.record[0] = e.cur + e.record[1] = []byte(fmt.Sprintf("foo-%d", e.cur)) + e.cur++ + + return e.record, nil +} + +// Schema implements idk.Source. +func (e *ExampleSource) Schema() []idk.Field { + return e.schema +} + +func (e *ExampleSource) Close() error { + return nil +} diff --git a/idk/datagen/gen/constants.data.go b/idk/datagen/gen/constants.data.go new file mode 100644 index 000000000..4b0fc6d32 --- /dev/null +++ b/idk/datagen/gen/constants.data.go @@ -0,0 +1,65 @@ +package gen + +var Animals = []string{"Millipede", "Reindeer", "Otter", "Umbrellabird", "Bandicoot", "Macaroni Penguin", "Australian Cattle Dog", "Hercules Beetle", "Magpie", "Bernese Mountain Dog", + "Royal Penguin", "Manatee", "Black Russian Terrier", "Badger", "Indian Elephant", "Indochinese Tiger", "Centipede", "Bluetick Coonhound", "Humpback Whale", "Caiman Lizard", + "Grasshopper", "Tortoise", "Alpine Dachsbracke", "Quetzal", "Aldabra Giant Tortoise", "Electric Eel", "Vervet Monkey", "Mountain Lion", "Geoffroys Tamarin", "Collared Peccary", + "Doberman Pinscher", "Megalodon", "Insect", "Shiba Inu", "Tiger Shark", "Aye Aye", "Black Rhinoceros", "Gar", "Stick Insect", "Marine Toad", + "Grouse", "Javanese", "Water Dragon", "Whippet", "Giant Clam", "Caiman", "Fennec Fox", "Weasel", "Rat", "Golden Retriever Complete Pet Guide", + "Starfish", "Moth", "Horned Frog", "Water Vole", "King Crab", "Common Frog", "Neanderthal", "Fossa", "Frigatebird", "Spider Monkey", + "Appenzeller Dog", "Emperor Penguin", "Saint Bernard", "Eagle", "Platypus", "Monkfish", "Lizard", "Barracuda", "Wombat", "Pika", + "Yak", "Ibis", "Beetle", "Horse", "Arctic Fox", "Chihuahua", "African Wild Dog", "Bat", "Dogue De Bordeaux", "Akita", + "Mastiff", "Fox Terrier", "Thorny Devil", "Dachshund", "Zonkey", "Dormouse", "Guinea Pig", "Edible Frog", "Barnacle", "Asian Palm Civet", + "Irish WolfHound", "Giant Panda Bear", "Abyssinian", "Toucan", "Wild Boar", "Grizzly Bear", "Borneo Elephant", "Dusky Dolphin", "Gecko", "Golden Lion Tamarin", + "Deer", "Indri", "Stoat", "Skunk", "Sea Lion", "Turkey", "Octopus", "Pelican", "Meerkat", "Pig", + "Glass Lizard", "Fur Seal", "Pekingese", "Bottlenose Dolphin", "Fox", "Siamese", "Scorpion Fish", "Howler Monkey", "Anatolian Shepherd Dog", "Mountain Gorilla", + "Burrowing Frog", "African Bush Elephant", "Havanese", "Sumatran Elephant", "Glow Worm", "Saber-Toothed Tiger", "Japanese Chin", "Tuatara", "Estrela Mountain Dog", "Cow", + "Dwarf Crocodile", "Flounder", "Tetra", "Gorilla", "Bearded Collie", "Angelfish", "Gentoo Penguin", "Afghan Hound", "Porpoise", "Australian Kelpie Dog", + "Pygmy Marmoset", "Harpy Eagle", "Ostrich", "Woolly Mammoth", "Duck", "Binturong", "Sea Slug", "Sumatran Tiger", "Cassowary", "King Penguin", + "Bongo", "Basset Hound", "Siberian Husky", "Camel Spider", "Boxer Dog", "Cockroach", "Antelope", "Foxhound", "Beagle", "Impala", + "Snapping Turtle", "Grey Reef Shark", "Jellyfish", "Pheasant", "Cavalier King Charles Spaniel", "Monarch Butterfly", "Wrasse", "Drever", "Catfish", "Malayan Civet", + "Bearded Dragon", "Red Wolf", "Cuttlefish", "Chipmunk", "English Springer Spaniel", "Tiger Salamander", "Epagneul Pont Audemer", "Mongoose", "Somali", "Parrot", + "Burmese", "Greyhound", "Tiger", "Tree Frog", "Skate Fish", "Flamingo", "Bonobo", "Ibizan Hound", "Spadefoot Toad", "Japanese Macaque", + "Leopard Seal", "Leopard Tortoise", "Moose", "Chicken", "Avocet", "Australian Mist", "Little Penguin", "Quail", "Elephant Seal", "English Cocker Spaniel", + "Humboldt Penguin", "Bedlington Terrier", "Blue Whale", "Tibetan Mastiff", "Pink Fairy Armadillo", "Hedgehog", "Bavarian Mountain Hound", "Basking Shark", "Quoll", "West Highland Terrier", + "Polar Bear", "Egyptian Mau", "Fish", "Crocodile", "Vulture", "Arctic Wolf", "Javan Rhinoceros", "Capybara", "Baboon", "Gharial", + "Hawaiian Crow", "Piranha", "Australian Shepherd", "Fishing Cat", "Sponge", "Guppy", "Tasmanian Devil", "Chesapeake Bay Retriever", "Lobster", "Elephant", + "Labradoodle – The Complete Guide For Owners", "Radiated Tortoise", "Dugong", "French Bulldog", "Slow Worm", "Bulldog", "Giant African Land Snail", "African Tree Toad", "Serval", "Nurse Shark", + "Kangaroo", "Jackal", "Neapolitan Mastiff", "Cockatoo", "Pond Skater", "Okapi", "Hyena", "Border Terrier", "Silver Dollar", "Dog", + "Coati", "Butterfly", "Moorhen", "Numbat", "Human", "King Cobra", "Green Bee-Eater", "Common Loon", "Cross River Gorilla", "Moray Eel", + "Bloodhound", "Spixs Macaw", "Sperm Whale", "Russian Blue", "Persian", "Chimpanzee", "Tiffany", "African Civet", "Koala", "Tapir", + "Minke Whale", "Clumber Spaniel", "Leopard", "Liger", "Red Panda", "Wolf Spider", "Mayfly", "Zebra", "Bombay", "Rattlesnake", + "African Forest Elephant", "Yorkshire Terrier", "Jack Russel", "Maltese", "Booby", "Bison", "Woodpecker", "Squid", "Uguisu", "Sumatran Orang-utan", + "Asian Giant Hornet", "Pink Dolphin", "German Pinscher", "Dalmatian", "Sun Bear", "Caracal", "Camel", "Vampire Bat", "Mole", "Dolphin", + "Nightingale", "German Shepherd Guide", "Coyote", "Mandrill", "Newfoundland", "Cairn Terrier", "Kingfisher", "Darwin’s Frog", "Mouse", "Aardvark", + "Greater Swiss Mountain Dog", "Pied Tamarin", "Monkey", "Raccoon", "Sea Turtle", "Sloth", "Airedale Terrier", "Alligator", "Orang-utan", "Wyoming Toad", + "Shrimp", "Steller’s Sea Cow", "Cotton-top Tamarin", "Asiatic Black Bear", "Western Lowland Gorilla", "Alaskan Malamute", "Caterpillar", "Spiny Dogfish", "Bull Terrier", "Maned Wolf", + "Cocker Spaniel", "Buffalo", "Lemming", "Crane", "Tang", "Monitor Lizard", "Crab-Eating Macaque", "Kudu", "Dunker", "Border Collie", + "Bobcat", "Grey Mouse Lemur", "South China Tiger", "Bolognese Dog", "Kiwi", "Horseshoe Crab", "Highland Cattle", "Stingray", "Macaw", "Patas Monkey", + "Bornean Orang-utan", "Birman", "Emu", "Spectacled Bear", "Lionfish", "Golden Masked Owl", "Honey Badger", "Wildebeest", "Quokka", "Hippopotamus", + "Heron", "Cichlid", "Water Buffalo", "Chinook", "African Penguin", "Common Toad", "Termite", "Affenpinscher", "Leaf-Tailed Gecko", "Maine Coon", + "Lynx", "Bactrian Camel", "Water Spaniel", "Harrier", "Manta Ray", "Coral", "Dogo Argentino", "Gerbil", "Australian Terrier", "Masked Palm Civet", + "Snake", "Desert Tortoise", "Axolotl", "Greenland Dog", "Indian Palm Squirrel", "Fluke Fish (summer flounder)", "Woolly Monkey", "Ladybug", "Wolf", "Common Buzzard", + "African Palm Civet", "Cesky Fousek", "Mule", "Amur Leopard", "Norwegian Forest", "Flying Squirrel", "Eskimo Dog", "Monte Iberia Eleuth", "Lion", "Eastern Lowland Gorilla", + "Blobfish", "Chamois", "Arctic Hare", "Grey Seal", "English Shepherd", "Swan", "Sea Urchin", "Birds Of Paradise", "Butterfly Fish", "Blue Jay", + "Staffordshire Bull Terrier", "Siamese Fighting Fish", "White-Faced Capuchin", "Whale Shark", "Snail", "Pit Bull Terrier", "Squirrel Monkey", "Hoopoe", "Sea Dragon", "Seahorse", + "Great Dane", "Clown Fish", "Snowy Owl", "Anteater", "White Rhinoceros", "Boykin Spaniel", "Green Anole", "Pug", "Dhole", "Goose", + "Deutsche Bracke", "Banded Palm Civet", "Llama", "Sri Lankan Elephant", "Welsh Corgi: The Complete Pet Guide", "Tropicbird", "Rhinoceros", "Curly Coated Retriever", "Leopard Cat", "Black Widow Spider", + "Ragdoll", "Horn Shark", "Donkey", "Elephant Shrew", "Armadillo", "Keel Billed Toucan", "Purple Emperor", "Scorpion", "Chameleon", "Sea Otter", + "Giant Schnauzer", "Bear", "Honey Bee", "Zebu", "African Clawed Frog", "Blue Lacy Dog", "Pangolin", "Cat", "Collie", "Dodo", + "Brown Bear", "Akbash", "Tapanuli Orang-utan", "Puma", "Iguana", "Uakari", "Chinese Crested Dog", "Magellanic Penguin", "Hare", "Molly", + "Peacock", "Saola", "Squirrel", "Basenji Dog", "Bumblebee", "Ferret", "Staffordshire Terrier", "Ainu Dog", "Rottweiler", "Beaver", + "Sparrow", "Sea Squirt", "Labrador Retriever", "Pool Frog", "Bichon Frise", "Oyster", "Panther", "Hammerhead Shark", "Frog", "Ocelot", + "Coonhound", "Rabbit", "Adelie Penguin", "Olm", "Porcupine", "Hummingbird", "Wasp", "Tawny Owl", "Walrus", "X-Ray Tetra", + "Goat", "Komodo Dragon", "Fly", "Western Gorilla", "Golden-Crowned Flying Fox", "Stag Beetle", "Budgerigar", "Chinchilla", "Finnish Spitz", "Woodlouse", + "Bull Mastiff", "Jaguar", "River Turtle", "Wolverine", "Siberian Tiger", "Jerboa", "Crab", "Emperor Tamarin", "Kakapo", "Hermit Crab", + "Eskimo Dog", "North American Black Bear", "Galapagos Penguin", "Chow Chow", "Red-handed Tamarin", "Albatross", "Roseate Spoonbill", "Siberian", "Striped Rocket Frog", "Malayan Tiger", + "Boston Terrier: Complete Pet Guide", "Poodle", "Clouded Leopard", "Red Knee Tarantula", "Yellow-Eyed Penguin", "Zebra Shark", "Lemur", "Raccoon Dog", "Pointer", "Newt", + "Dragonfly", "Carolina Dog", "Xerus", "Crested Penguin", "Warthog", "Ermine", "Frilled Lizard", "Field Spaniel", "Himalayan", "Turkish Angora", + "Discus", "Echidna", "Markhor", "Pygmy Hippopotamus", "Fin Whale", "Canaan Dog", "Marsh Frog", "Gopher", "Bull Shark", "Salamander", + "Brazilian Terrier", "Balinese", "Asian Elephant", "Prawn", "Robin", "Entlebucher Mountain Dog", "Snowshoe", "Galapagos Tortoise", "Barn Owl", "Proboscis Monkey", + "Wallaby", "Gila Monster", "Indian Rhinoceros", "Bullfrog", "Norfolk Terrier", "Sumatran Rhinoceros", "Bengal Tiger", "Penguin", "Mongrel", "Cougar", + "Narwhal", "Old English Sheepdog", "Flat Coat Retriever", "Pere Davids Deer", "Eastern Gorilla", "Barb", "Golden Oriole", "Pademelon", "Sheep", "Indian Star Tortoise", + "Aurochs", "Possum", "Zorse", "Chinstrap Penguin", "Sucker Fish", "Great White Shark", "Gibbon", "Guinea Fowl", "Sand Lizard", "Earwig", + "Seal", "Irish Setter Complete Pet Guide", "Rock Hyrax", "Cheetah", "Puffin", "American Bulldog", "Pufferfish", "White Tiger", "Hamster", "Rockhopper Penguin", + "Shih Tzu", "Fire-Bellied Toad", "Cuscus", "Pike", "Poison Dart Frog", "Dingo", "Puss Moth", "Ant", "Tarsier", "Scimitar-horned Oryx", + "Long-Eared Owl", "Falcon", "Killer Whale", "Bird", "Giraffe", "Opossum"} diff --git a/idk/datagen/gen/gen.go b/idk/datagen/gen/gen.go new file mode 100644 index 000000000..e9b5b7276 --- /dev/null +++ b/idk/datagen/gen/gen.go @@ -0,0 +1,154 @@ +package gen + +import ( + "math/rand" +) + +type Gen struct { + seed int64 + + // cache of zipfs for various imax. All have s==1.1 and v==10 + zipfs map[uint64]*rand.Zipf + + R *rand.Rand +} + +type Opt func(g *Gen) + +// OptGenSeed is a functional option for providing a seed +// to Gen. +func OptGenSeed(s int64) Opt { + return func(g *Gen) { + g.seed = s + } +} + +// New creates a new *Gen +func New(opts ...Opt) *Gen { + g := &Gen{ + seed: 17, + zipfs: make(map[uint64]*rand.Zipf), + } + for _, opt := range opts { + opt(g) + } + g.R = rand.New(rand.NewSource(g.seed)) + return g +} + +var alphaUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +var alphaLower = "abcdefghijklmnopqrstuvwxyz" + +func (g *Gen) AlphaUpper(bs []byte) { + for i := range bs { + bs[i] = alphaUpper[g.R.Intn(len(alphaUpper))] + } +} + +func (g *Gen) AlphaLower(bs []byte) { + for i := range bs { + bs[i] = alphaLower[g.R.Intn(len(alphaLower))] + } +} + +// StringSliceFromList repopulates input with a random number of items +// from list. If input does not have enough capacity it may return a +// new list. There may be repeat items, there may be 0 items, there +// will never be more items than the length of list. +func (g *Gen) StringSliceFromList(input []string, list []string) []string { + input = input[:0] + num := g.R.Intn(len(list) + 1) + for i := 0; i < num; i++ { + input = append(input, list[g.R.Intn(len(list))]) + } + + return input +} + +// StringSliceFromListWeighted picks between 0 and upto items from list randomly, but zipfian weighted toward items earlier in list. It will try to re-use input, but may allocate a new list if needed. +func (g *Gen) StringSliceFromListWeighted(input []string, list []string, s, v float64) []string { + input = input[:0] + z := g.getZipfParams(uint64(len(list)-1), s, v) + num := z.Uint64() + for i := uint64(0); i < num; i++ { + input = append(input, list[z.Uint64()]) + } + return input +} + +// StringFromListWeighted returns a random string from the list +// weighted toward the items earlier in the list. +func (g *Gen) StringFromListWeighted(list []string) string { + z := g.getZipf(uint64(len(list) - 1)) + return list[z.Uint64()] +} + +// StringFromList returns a random string from the list +// each with uniform probability +func (g *Gen) StringFromList(list []string) string { + return list[g.R.Intn(len(list))] +} + +// Set generates a random set of integers between min and max (inclusive). +// The mean cardinality of the set is specified by typicalCardinality. +func (g *Gen) Set(min uint64, max uint64, typicalCardinality uint64) map[uint64]struct{} { + // The expected value of a negative binomial distribution is E(X) = r/p. + // In this case we want E(x) = typicalCardinality. + // In this context, a success means that we stop producing elements, so r = 1. + // Therefore, p = 1/typicalCardinality. + p := 1 / float64(typicalCardinality) + + // Create a random target cardinality. + var n uint64 + for n < max-min && g.R.Float64() > p { + n++ + } + + set := map[uint64]struct{}{} + + if n > (max-min)/2 { + // The target cardinality is a substantial portion of the entire range. + // Generating random values and checking would result in many collisions and raise the complexity. + // Generate a list of values, shuffle it, and select the first n entries. + list := make([]uint64, max-min) + for i := range list { + list[i] = uint64(i) + min + } + g.R.Shuffle(len(list), func(i, j int) { + list[j], list[i] = list[i], list[j] + }) + list = list[:n] + for _, v := range list { + set[v] = struct{}{} + } + } else { + // The target cardinality is a small portion of the range. + // Randomly selecting values should be fairly fast since collisions should be somewhat infrequent. + for uint64(len(set)) < n { + // Generate another value for the set. + set[min+uint64(g.R.Int63n(int64((max-min)+1)))] = struct{}{} + } + } + + return set +} + +func (g *Gen) getZipf(imax uint64) *rand.Zipf { + if nz, ok := g.zipfs[imax]; !ok { + nz = rand.NewZipf(g.R, 1.1, 10, imax) + g.zipfs[imax] = nz + return nz + } else { + return nz + } +} + +func (g *Gen) getZipfParams(imax uint64, s, v float64) *rand.Zipf { + if nz, ok := g.zipfs[imax]; !ok { + nz = rand.NewZipf(g.R, s, v, imax) + g.zipfs[imax] = nz + return nz + } else { + return nz + } +} diff --git a/idk/datagen/gen/gen_test.go b/idk/datagen/gen/gen_test.go new file mode 100644 index 000000000..3e00479b2 --- /dev/null +++ b/idk/datagen/gen/gen_test.go @@ -0,0 +1,87 @@ +package gen_test + +import ( + "testing" + + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +func TestGen(t *testing.T) { + g := gen.New() + + byteSlice := make([]byte, 6) + + // Test AlphaUpper + g.AlphaUpper(byteSlice) + if len(byteSlice) != 6 { + t.Errorf("AlphaUpper modified byte slice length: %s", byteSlice) + } + for i, b := range byteSlice { + if b < 65 || b > 90 { + t.Errorf("non uppercase char at position %d: %d", i, b) + } + } + + // Test AlphaLower + g.AlphaLower(byteSlice) + if len(byteSlice) != 6 { + t.Errorf("AlphaLower modified byte slice length: %s", byteSlice) + } + for i, b := range byteSlice { + if b < 97 || b > 122 { + t.Errorf("non lowercase char at position %d: %d", i, b) + } + } + + // Test StringSliceFromList + var input []string + list := []string{"a", "b", "c", "d", "e", "f", "g"} + + minLen, maxLen := 8, -1 + for i := 0; i < 100; i++ { + randList := g.StringSliceFromList(input, list) + if len(randList) < minLen { + minLen = len(randList) + } + if len(randList) > maxLen { + maxLen = len(randList) + } + for j, item := range randList { + if len(item) != 1 || item[0] < 97 || item[0] > 103 { + t.Errorf("Unexpected list item at %d: %s. List: %v", j, item, randList) + } + } + } + if minLen != 0 { + t.Errorf("Unexpected minimum length of %d", minLen) + } + if maxLen != 7 { + t.Errorf("Unexpected maximum length of %d", maxLen) + } + + // TestStringFromListWeighted + seen := make(map[string]int) + for i := 0; i < 100; i++ { + s := g.StringFromListWeighted([]string{"blah", "bleh", "blue"}) + seen[s]++ + if s != "blah" && s != "bleh" && s != "blue" { + t.Errorf("Unexpected string %s", s) + } + } + if len(seen) != 3 { + t.Errorf("Should have seen 3 different strings but saw: %v", seen) + } + + seen = make(map[string]int) + for i := 0; i < 100; i++ { + s := g.StringFromListWeighted([]string{"blah", "bleh", "blue", "bler"}) + seen[s]++ + if s != "blah" && s != "bleh" && s != "blue" && s != "bler" { + t.Errorf("Unexpected string %s", s) + } + } + if len(seen) != 4 { + t.Errorf("Should have seen 4 different strings but saw: %v", seen) + } + +} diff --git a/idk/datagen/hobbies.data.go b/idk/datagen/hobbies.data.go new file mode 100644 index 000000000..05fc4780c --- /dev/null +++ b/idk/datagen/hobbies.data.go @@ -0,0 +1,114 @@ +package datagen + +var hobbies = []string{ + "Lego building", "Watching movies", "Watch making", "Slacklining", "BMX", "Cricket", + "Sketching", "Satellite watching", "Volunteering", "Radio-controlled model playing", + "Stone collecting", "Picnicking", "Hydroponics", "Karate", "Roller skating", "Skateboarding", + "Element collecting", "Weaving", "Beach volleyball", "Archery", "Livestreaming", "Stone skipping", + "Trapshooting", "Filmmaking", "Diorama", "Makeup", "Rugby league football", "Community activism", + "Field hockey", "Backpacking", "Slot car", "Insect collecting", "VR Gaming", "Video making", + "Bowling", "Sled dog racing", "Skiing", "Web design", "Sand art", "Public speaking", + "Movie memorabilia collecting", "Gardening", "Wikipedia editing", "Croquet", "Mathematics", + "Rail transport modeling", "Darts", "Judo", "Equestrianism", "Figure Skating", "Scrapbooking", + "Airbrushing", "Photography", "Climbing", "Tourism", "Journaling", "Flower growing", + "Wood carving", "Fashion design", "Polo", "Slot car racing", "Reading", "Electronic games", + "Martial arts", "Bell ringing", " Air sports", "Skipping rope", "Bowling", "Caving", + "Leather crafting", "Construction", "Bus riding", "Flag football", "Anime", "Whittling", + "Aerospace", "Sun bathing", "Music", "Running", "Diving", "Plastic art", "Stamp collecting", + "Gymnastics", "Kabaddi", "Coin collecting", "Video editing", "Stripping", "Cribbage", + "Candy making", "Amateur geology", "Motor sports", "Sculpting", "Transit map collecting", + "Refinishing", "Surfing", "Swimming", "Skateboarding", "Knowledge/word games", "Tether car", + "Poi", "Manga", " Action figure", "Teaching", "Blacksmithing", "Fingerpainting", "Audiophile", + "Spreadsheets", "Scouting", "Frisbee", "Metal detecting", "Book collecting", "Radio-controlled model playing", + "Films", "Karaoke", "Wargaming", "Biology", "DJing", "Axe throwing", "Volleyball", + "Life Science", "Fossil hunting", "Beachcombing", "Sudoku", "Cross-stitch", "Ephemera collecting", + "Puzzles", "Hiking/backpacking", "Digital hoarding", "Horseshoes", "Amateur astronomy", + "Book discussion clubs", "Model building", "Ceramics", "Telling jokes", "Gardening", + "Renaissance fair", "Record collecting", "Collecting", "Taxidermy", "Flying", "Zumba", + " Archaeology", "Quidditch", "Playing musical instruments", "Tapestry", "Perfume", + "Philately", "Business", "Microbiology", "Rafting", "Postcrossing", "Whisky", "Botany", + "Badminton", "Chatting", "Board sports", "Groundhopping", "Inventing", "Paragliding", + "Shooting sport", "Esports", "Sport stacking", "Proverbs", "Marching band", "Feng shui decorating", + "Car tuning", "Sociology", "Writing music", "Robot combat", "Parkour", "Shogi", "Weightlifting", + "Fashion", "Safari", "Motorcycling", "Pool", "Meteorology", "Auto audiophilia", "Mushroom hunting/mycology", + "Radio-controlled model playing", "Miniature art", "Video game developing", "Medical science", + "Herp keeping", "Shoemaking", "Gongfu tea", "Dowsing", "Microscopy", "Welding", "Woodworking", + "Clothesmaking", "Fingerprint collecting", "Crossword puzzles", "Breadmaking", "Ice hockey", + "Dolls", "Curling", "Sailing", "Mazes (indoor/outdoor)", "Fishkeeping", "Ticket collecting", + "Flower arranging", "Nail art", "Couponing", "Skimboarding", "Fishing", "Figure skating", + "Herping", "Surfing", "Go", "Vintage clothing", "Shortwave listening", "Water sports", + "Darts", "Bonsai", "Lomography", "Crocheting", "Meditation", "Cornhole", "Railway journeys", + "Cardistry", "Book restoration", "Graffiti", "Decorating", "Yo-yoing", "Speedcubing", + "Lotology (lottery ticket collecting)", "Houseplant care", "Cryptography", "Quilling", + "Powerlifting", "Cheesemaking", "Table tennis", "Public transport riding", "Pet adoption & fostering", + "Magnet fishing", "Hooping", "Bridge", "Rubik's Cube", "Beekeeping", "Digital arts", + "Foreign language learning", "Race walking", "Fusilately (phonecard collecting)", + "Fishfarming", "Jigsaw puzzles", "Reviewing Gadgets", "Entrepreneurship", "Pickleball", + "Wine tasting", "Footbag", "Astronomy", "Stuffed toy collecting", "Roller derby", + "Astrology", "Furniture building", "Lapidary", "Iceboat racing", "High-power rocketry", + "Reiki", "Baking", "Automobilism", "Witchcraft", "Walking", "Aerial silk", "Gongoozling", + "Learning", "Cartophily (card collecting)", "Paintball", "Genealogy", "Do it yourself", + "Volleyball", "Science and technology studies", "Horsemanship", "Swimming", "Needlepoint", + "Fishkeeping", "Vintage cars", "Basketball", "Qigong", "Video game collecting", "Writing", + "Vacation", "Nordic skating", "Powerboat racing", "Baseball", "Candle making", "Whale watching", + "Knot tying", "Ice skating", "Debate", "Checkers (draughts)", "Board/tabletop games", + "Model engineering", "VR Gaming", "Palmistry", "Air hockey", "Pole dancing", "Modeling", + "Puppetry", "Memory training", "Sculling or rowing", "Seashell collecting", "Poetry", + "Role-playing games", "Flying model planes", "Tennis polo", "Gymnastics", "Metalworking", + "Scutelliphily", "Eating", "Pet sitting", "Fruit picking", "Farming", "Survivalism", + "Fly tying", "Wax sealing", "Sea glass collecting", "Antiquing", "Metal detecting", + "Guerrilla gardening", "Dance", "Birdwatching", "Skiing", "Jujitsu", "Hiking", "Model aircraft", + "Model United Nations", "Jukskei", "Leaves", "Drama", "Lacrosse", "LARPing", "Home improvement", + "Skydiving", "Snowmobiling", "Meteorology", "Fantasy sports", "Blogging", "Hobby horsing", + "Knife throwing", "English", "Soapmaking", "Talking", "Lace making", "Driving", "Engraving", + "Kung fu", "Laser tag", "Composting", "Sledding", "Croquet", "Railway studies", "Magic", + "Kite flying", "Acting", "Juggling", "Travel", "Glassblowing", "Baton twirling", "Boxing", + "Kart racing", "Comic book collecting", "Meditation", "Mineral collecting", "Dancing", + "Antiquities", "Ultimate frisbee", "Planning", "Pole dancing", "Snorkeling", "Zoo visiting", + "Animation", "Rock painting", "Exhibition drill", "Stamp collecting", "People-watching", + "Knife collecting", "Herbalism", "Knitting", "Karting", "Tennis", "Drink mixing", + "Kombucha brewing", "Chemistry", "Badminton", "Lock picking", "Letterboxing", "Storm chasing", + "Sports memorabilia", "Tai chi", "Calligraphy", "Weight training", "Pin (lapel)", + "Coffee roasting", "Unicycling", "Ghost hunting", "Archery", "Museum visiting", "Card games", + "Dog sport", "Herping", "Netball", "Video gaming", "Trade fair visiting", "Baseball", + "plush collecting", "Car fixing & building", "Tatebanko", "BASE jumping", "Gold prospecting", + "Animal fancy", "Jogging", "Gunsmithing", "Shooting", "Long-distance running", "Quizzes", + "Canoeing", "Aquascaping", "Practical jokes", "Tattooing", "Social studies", "Vehicle restoration", + "Cheerleading", "Proofreading and editing", "Fishing", "Squash", "Tarot", "Sewing", + "Birdwatching", "Cycling", "Button collecting", "Animation", "Art", "Giving advice", + "Handball", "Die-cast toy", "Jewelry making", "Deltiology (postcard collecting)", + "Brazilian jiu-jitsu", "Coloring", "Podcast hosting", "Couch surfing", "Reading", + "Compact discs", "Bullet journaling", "Hunting", "Australian rules football", "Origami", + "Tea bag collecting", "Webtooning", "Longboarding", "Auto detailing", "Hacking", "Kendama", + "Photography", "Pilates", "Snowboarding", "Pressed flower craft", "Conlanging", "Beatboxing", + "Amateur radio", "Freestyle football", "Mountaineering", "Rock tumbling", "Yoga", + "Bus spotting", "Tour skating", "Rock balancing", "Camping", "Sculling or rowing", + "Performance", "Djembe", "Entertaining", "Chess", "Cleaning", "Electronics", "Vinyl Records", + "Beauty pageants", "Auto racing", "Climbing", "Road biking", "Gingerbread house making", + "Distro Hopping", "Geocaching", "Snowshoeing", "Creative writing", "Taekwondo", "Radio-controlled car racing", + "Worldbuilding", "Car riding", "Stand-up comedy", "Flying disc", "Dog walking", "Phillumeny", + "Foraging", "Singing", "Barbershop Music", "Confectionery", "Amusement park visiting", + "Inline skating", "Knife making", "History", "Breakdancing", "Experimenting", "Color guard", + "Painting", "Soccer", "Backgammon", "City trip", "Marbles", "Renovating", "Speed skating", + "Handball", "Gaming", "Triathlon", "Mountain biking", "Machining", "Art collecting", + "Baton twirling", "Horseback riding", "Benchmarking", "Philately", "Tourism", "Wrestling", + "Disc golf", "Flower collecting and pressing", "Fitness", "Acroyoga", "Beer tasting", + "Video gaming", "Lacrosse", "Bodybuilding", "Thrifting", "Topiary", "3D printing", + "Crystals", "Orienteering", "Noodling", "Geocaching", "Orienteering", "Winemaking", + "Watching documentaries", "Pet", "Drawing", "Photography", "Airsoft", "Homebrewing", + "Aircraft spotting", "Mini Golf", "Storytelling", "Pickleball", "Shuffleboard", "Cooking", + "Rock climbing", "Vegetable farming", "Radio-controlled model playing", "Billiards", + "Association football", "Embroidery", "Waxing", "Physics", "Hobby tunneling", "Scuba diving", + "Kayaking", "Videography", "Tennis", "Slot car", "Table tennis", "Golfing", "Dog training", + "Craft", "Mahjong", "Cycling", "Thru-hiking", "Fencing", "Airsoft", "Humor", "Mycology", + "Rail transport modelling", "Sports science", "Table football", "Trainspotting", "Minimalism", + "Urban exploration", "Macrame", "Computer programming", "Horseback riding", "Cue sports", + "Magic", "Pyrography", "Ice skating", "Upcycling", "Shoes", "Power Nap", "Pen Spinning", + "Jumping rope", "Astronomy", "Pottery", "Martial arts", "Butterfly watching", "Hula hooping", + "Water polo", "Geography", "Chess", "Rugby", "Cosplaying", "Racquetball", "Shopping", + "Graphic design", "Binge-watching", "Kitesurfing", "Research", "Model racing", "Listening to podcasts", + "Radio-controlled model collecting", "Research", "Rapping", "Poker", "Rappelling", + "Watching television", "Listening to music", "Mechanics", "Philosophy", "Recipe creation", + "Quilting", "Fossicking", "Social media", "Word searches", "Massaging", "Dominoes", + "Longboarding", "Scuba Diving", "Dining", "Hardware", "Communication", "Ant-keeping", + "Canyoning", "Dandyism", "Psychology", "Softball", "Table tennis playing"} diff --git a/idk/datagen/hughes.go b/idk/datagen/hughes.go new file mode 100644 index 000000000..a8cfb91c9 --- /dev/null +++ b/idk/datagen/hughes.go @@ -0,0 +1,148 @@ +package datagen + +import ( + "io" + "math/rand" + "time" + + "github.com/molecula/featurebase/v3/idk" +) + +// Ensure Hughes implements interface. +var _ Sourcer = (*Hughes)(nil) + +// Implements Hughes as a Sourcer. +type Hughes struct{} + +// NewHughes returns a new instance of Hughes. +func NewHughes(cfg SourceGeneratorConfig) Sourcer { + return &Hughes{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +// NOTE: avro Name fields can only contain certain +// characters. +// See: https://avro.apache.org/docs/current/spec.html#names +func (e *Hughes) Source(cfg SourceConfig) idk.Source { + epoch := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) + layout := "2006-01-02 15:00" + src := &HughesSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(int64(cfg.startFrom))), + epoch: epoch, + layout: layout, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, //0 + idk.StringField{NameVal: "sid"}, //1 + idk.DateIntField{ //2 + NameVal: "time_stamp", + Epoch: epoch, + Unit: idk.Hour, + Layout: layout, + }, + idk.DecimalField{NameVal: "metered_wan_b_mb_usage", Scale: 2}, //3 + idk.DateIntField{ //4 + NameVal: "asap_billing_cycle_gmt_start_date_time", + Epoch: epoch, + Unit: idk.Hour, + Layout: layout, + }, + idk.DecimalField{NameVal: "metered_vsat_wan_a_mb_usage", Scale: 2}, //5 + }, + } + + src.record = make([]interface{}, len(src.schema)) + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Hughes) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Hughes) DefaultEndAt() uint64 { + return 6000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (e *Hughes) Info() string { + return "Generates data representative of Baker Hughes' oil field service operations." +} + +// Ensure HughesSource implements interface. +var _ idk.Source = (*HughesSource)(nil) + +// HughesSource is an instance of a source generated +// by the Sourcer implementation Hughes. +type HughesSource struct { + cur uint64 + endAt uint64 + epoch time.Time + layout string + rand *rand.Rand + bDate int + + schema []idk.Field + record record +} + +// Record implements idk.Source. +func (e *HughesSource) Record() (idk.Record, error) { + if e.cur >= e.endAt { + return nil, io.EOF + } + e.record[0] = e.cur + if e.cur%6000 == 0 { // generates 6000 hours (January 1st to September 6th (23:00)) of data for each new unique SID + e.record[1] = e.SIDHughes(24) + e.bDate = e.rand.Intn(27) + 1 + e.record[4] = e.epoch.AddDate(0, -1, e.bDate).Format(e.layout) + } + e.record[2] = e.epoch.Add(time.Duration(e.cur%6000) * time.Hour).Format(e.layout) + e.record[3] = e.floatRand(10000, 0) + currDate := e.epoch.Add(time.Duration(e.cur%6000) * time.Hour) + if currDate.Day() == e.bDate && currDate.Hour() == 0 { + e.record[4] = currDate.Format(e.layout) + } + e.record[5] = e.floatRand(10000, 0) + e.cur++ + return e.record, nil +} + +// Schema implements idk.Source. +func (e *HughesSource) Schema() []idk.Field { + return e.schema +} + +//returns a random float between a range +func (e *HughesSource) floatRand(max float64, min float64) float64 { + return min + e.rand.Float64()*(max-min) +} + +const charsetHughes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +// returns a string with random characters from a predefined charset of a specified length +func (e *HughesSource) StringWithCharset(length int, charset string) string { + b := make([]byte, length) + for i := range b { + b[i] = charsetHughes[e.rand.Intn(len(charsetHughes))] + } + return string(b) +} + +//returns a string with random English alphabets of the specified length +func (e *HughesSource) SIDHughes(length int) string { + return e.StringWithCharset(length, charsetHughes) +} + +func (e *HughesSource) Close() error { + return nil +} diff --git a/idk/datagen/item.go b/idk/datagen/item.go new file mode 100644 index 000000000..81a90722d --- /dev/null +++ b/idk/datagen/item.go @@ -0,0 +1,131 @@ +package datagen + +import ( + "io" + "math/rand" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Item implements interface. +var _ Sourcer = (*Item)(nil) + +// Item implements Sourcer. +type Item struct{} + +// NewItem returns a new instance of Item. +func NewItem(cfg SourceGeneratorConfig) Sourcer { + return &Item{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (i *Item) Source(cfg SourceConfig) idk.Source { + min := int64(0) + src := &ItemSource{ + rand: rand.New(rand.NewSource(19)), + startFrom: cfg.startFrom, + endAt: cfg.endAt, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.IntField{NameVal: "cust_id"}, + idk.DecimalField{NameVal: "cost", Scale: 2}, + idk.IntField{NameVal: "ship_date", Min: &min}, + idk.StringField{NameVal: "pli"}, + idk.IDField{NameVal: "prod"}, + }, + } + src.pliZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(plis))-1) + src.prodZipf = rand.NewZipf(src.rand, 1.01, 4, 3200) + src.custZipf = rand.NewZipf(src.rand, 1.01, 4, 100000000) + + src.record = make([]interface{}, len(src.schema)) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (i *Item) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (i *Item) DefaultEndAt() uint64 { + return 1543503872 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (i *Item) Info() string { + return "TODO" +} + +// Ensure ItemSource implements interface. +var _ idk.Source = (*ItemSource)(nil) + +type ItemSource struct { + Log logger.Logger + + startFrom uint64 + endAt uint64 + + rand *rand.Rand + pliZipf *rand.Zipf + prodZipf *rand.Zipf + custZipf *rand.Zipf + schema []idk.Field + record record +} + +type ItemSourceOption func(s *ItemSource) error + +func OptItemStartFrom(start uint64) ItemSourceOption { + return func(s *ItemSource) error { + s.startFrom = start + return nil + } +} + +func OptItemEndAt(end uint64) ItemSourceOption { + return func(s *ItemSource) error { + s.endAt = end + return nil + } +} + +var plis = []string{"laptop", "desktop", "server", "rack", "phone", "fan", "enclosure", "switch", "monitor", "pli1", "pli2", "pli3", "pli4", "pli5", "pli6", "pli7", "pli8", "pli9", "pli10", "pli11", "pli12", "pli13", "pli14", "pli15", "pli16", "pli17", "pli18", "pli19", "pli20", "pli21", "pli22", "pli23", "pli24", "pli25", "pli26", "pli27", "pli28", "pli29", "pli30", "pli31", "pli32", "pli33", "pli34", "pli35", "pli36", "pli37", "pli38", "pli39", "pli40", "pli41", "pli42"} + +func (s *ItemSource) Record() (idk.Record, error) { + if s.startFrom >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.startFrom + s.startFrom++ + s.record[1] = int64(s.custZipf.Uint64()) // cust_id + s.record[2] = s.rand.Float64() * 10000 // max $10k // cost + s.record[3] = int64(time.Duration(s.rand.Intn(int(currentDur))) / (time.Hour * 24)) // random number of days since start ship_date + s.record[4] = plis[s.pliZipf.Uint64()] + s.record[5] = s.prodZipf.Uint64() + return s.record, nil +} + +func (s *ItemSource) Schema() []idk.Field { + return s.schema +} + +func (s *ItemSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*ItemSource)(nil) + +func (s *ItemSource) Close() error { + return nil +} diff --git a/idk/datagen/kitchen-sink-keyed.go b/idk/datagen/kitchen-sink-keyed.go new file mode 100644 index 000000000..59d7b9e82 --- /dev/null +++ b/idk/datagen/kitchen-sink-keyed.go @@ -0,0 +1,163 @@ +package datagen + +import ( + "crypto/sha256" + "encoding/binary" + "encoding/hex" + "io" + "sort" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +// Ensure KitchenSinkKeyed implements interface. +var _ Sourcer = (*KitchenSinkKeyed)(nil) + +// KitchenSinkKeyed implements Sourcer. +type KitchenSinkKeyed struct { + schema []idk.Field +} + +// NewKitchenSinkKeyed returns a new instance of KitchenSinkKeyed. +func NewKitchenSinkKeyed(cfg SourceGeneratorConfig) Sourcer { + return &KitchenSinkKeyed{ + schema: []idk.Field{ + idk.StringField{NameVal: "pk"}, // 0 + idk.StringArrayField{NameVal: "set", CacheConfig: &idk.CacheConfig{CacheType: "lru", CacheSize: 1}}, // 1 + idk.IntField{NameVal: "int", Min: intptr(-9223372036854775807), Max: intptr(9223372036854775807)}, // 2 + idk.BoolField{NameVal: "bool"}, // 3 + idk.StringField{NameVal: "time", Quantum: "YMD"}, // 4 + idk.StringField{NameVal: "mutex", Mutex: true, CacheConfig: &idk.CacheConfig{CacheType: "ranked", CacheSize: 500}}, // 5 + idk.StringField{NameVal: "string"}, // 6 + idk.DecimalField{NameVal: "decimal", Scale: 2}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (k *KitchenSinkKeyed) Source(cfg SourceConfig) idk.Source { + src := &KitchenSinkKeyedSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: k.schema, + } + + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + src.record = make([]interface{}, len(src.schema)) + src.record[0] = make([]byte, sha256.Size*(8/4)) + src.record[6] = make([]byte, 12) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (k *KitchenSinkKeyed) PrimaryKeyFields() []string { + return []string{"pk"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (k *KitchenSinkKeyed) DefaultEndAt() uint64 { + return 20000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (k *KitchenSinkKeyed) Info() string { + return "Generates data to test everything but the kitchen sink. With Keys." +} + +// Ensure KitchenSinkKeyedSource implements interface. +var _ idk.Source = (*KitchenSinkKeyedSource)(nil) + +type KitchenSinkKeyedSource struct { + g *gen.Gen + + cur, endAt uint64 + + schema []idk.Field + record record +} + +func NewKitchenSinkKeyedSource(start, end uint64) *KitchenSinkKeyedSource { + src := &KitchenSinkKeyedSource{ + cur: start, + endAt: end, + + schema: []idk.Field{ + idk.StringField{NameVal: "pk"}, // 0 + idk.StringArrayField{NameVal: "set", CacheConfig: &idk.CacheConfig{CacheType: "lru", CacheSize: 1}}, // 1 + idk.IntField{NameVal: "int", Min: intptr(-9223372036854775807), Max: intptr(9223372036854775807)}, // 2 + idk.BoolField{NameVal: "bool"}, // 3 + idk.StringField{NameVal: "time", Quantum: "YMD"}, // 4 + idk.StringField{NameVal: "mutex", Mutex: true, CacheConfig: &idk.CacheConfig{CacheType: "ranked", CacheSize: 500}}, // 5 + idk.StringField{NameVal: "string"}, // 6 + idk.DecimalField{NameVal: "decimal", Scale: 2}, // 7 + }, + } + + src.record = make([]interface{}, len(src.schema)) + src.record[0] = make([]byte, sha256.Size*(8/4)) + src.record[6] = make([]byte, 12) + + return src + +} + +func (k *KitchenSinkKeyedSource) Record() (idk.Record, error) { + if k.cur >= k.endAt { + return nil, io.EOF + } + + // Generate a unique string key. + var nbytes [64 / 8]byte + binary.LittleEndian.PutUint64(nbytes[:], k.cur) + hash := sha256.Sum256(nbytes[:]) + hex.Encode(k.record[0].([]byte), hash[:]) + k.cur++ + + // Generate a random set field. + set := k.g.Set(100, 1000, 10) + vals := make([]string, 0, len(set)) + for v := range set { + vals = append(vals, "v"+strconv.FormatUint(v, 10)) + } + sort.Strings(vals) + k.record[1] = vals + + // Generate a random int field. + k.record[2] = ((2 * k.g.R.Int63n(2)) - 1) * k.g.R.Int63n(9223372036854775807) + + // Generate a random bool field. + k.record[3] = k.g.R.Intn(2) == 0 + + // Generate a random time field. + k.record[4] = startTime.Add(time.Duration(k.g.R.Int63n(int64(timeSpan)))) + + // Generate a random mutex value. + k.record[5] = strconv.Itoa(k.g.R.Intn(20)) + + // Generate a random string field. + k.g.AlphaUpper(k.record[6].([]byte)) + + // Generate a random floating point value. + k.record[7] = float64(k.g.R.Int63()) / 100 + + return k.record, nil +} + +func (k *KitchenSinkKeyedSource) Schema() []idk.Field { + return k.schema +} + +func (k *KitchenSinkKeyedSource) Close() error { + return nil +} diff --git a/idk/datagen/kitchen-sink.go b/idk/datagen/kitchen-sink.go new file mode 100644 index 000000000..a13f9ea02 --- /dev/null +++ b/idk/datagen/kitchen-sink.go @@ -0,0 +1,139 @@ +package datagen + +import ( + "io" + "sort" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" + "github.com/molecula/featurebase/v3/pql" +) + +// Ensure KitchenSink implements interface. +var _ Sourcer = (*KitchenSink)(nil) + +// KitchenSink implements Sourcer. +type KitchenSink struct { + schema []idk.Field +} + +// NewKitchenSink returns a new instance of KitchenSink. +func NewKitchenSink(cfg SourceGeneratorConfig) Sourcer { + return &KitchenSink{ + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringArrayField{NameVal: "set", CacheConfig: &idk.CacheConfig{CacheType: "lru", CacheSize: 1}}, // 1 + idk.IntField{NameVal: "int", Min: intptr(-9223372036854775807), Max: intptr(9223372036854775807)}, // 2 + idk.BoolField{NameVal: "bool"}, // 3 + idk.StringField{NameVal: "time", Quantum: "YMD"}, // 4 + idk.StringField{NameVal: "mutex", Mutex: true, CacheConfig: &idk.CacheConfig{CacheType: "ranked", CacheSize: 500}}, // 5 + idk.StringField{NameVal: "string"}, // 6 + idk.DecimalField{NameVal: "decimal", Scale: 2}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (k *KitchenSink) Source(cfg SourceConfig) idk.Source { + src := &KitchenSinkSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: k.schema, + } + + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + src.record = make([]interface{}, len(src.schema)) + src.record[0] = uint64(0) + src.record[6] = make([]byte, 12) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (k *KitchenSink) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (k *KitchenSink) DefaultEndAt() uint64 { + return 20000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (k *KitchenSink) Info() string { + return "Generates data to test everything but the kitchen sink." +} + +// Ensure KitchenSinkSource implements interface. +var _ idk.Source = (*KitchenSinkSource)(nil) + +// KitchenSinkSource is a data generator which generates +// data for all Pilosa field types. +type KitchenSinkSource struct { + g *gen.Gen + + cur, endAt uint64 + + schema []idk.Field + record record +} + +var endTime = time.Date(2020, time.May, 4, 12, 2, 28, 0, time.UTC) +var startTime = endTime.Add(-5 * 365 * 24 * time.Hour) +var timeSpan = endTime.Sub(startTime) + +func (k *KitchenSinkSource) Record() (idk.Record, error) { + if k.cur >= k.endAt { + return nil, io.EOF + } + + // Increment the ID. + k.record[0] = k.cur + k.cur++ + + // Generate a random set field. + set := k.g.Set(100, 1000, 10) + vals := make([]string, 0, len(set)) + for v := range set { + vals = append(vals, "v"+strconv.FormatUint(v, 10)) + } + sort.Strings(vals) + k.record[1] = vals + + // Generate a random int field. + k.record[2] = ((2 * k.g.R.Int63n(2)) - 1) * k.g.R.Int63n(9223372036854775807) + + // Generate a random bool field. + k.record[3] = k.g.R.Intn(2) == 0 + + // Generate a random time field. + k.record[4] = startTime.Add(time.Duration(k.g.R.Int63n(int64(timeSpan)))) + + // Generate a random mutex value. + k.record[5] = strconv.Itoa(k.g.R.Intn(20)) + + // Generate a random string field. + k.g.AlphaUpper(k.record[6].([]byte)) + + // Generate a random floating point value. + k.record[7] = pql.NewDecimal(k.g.R.Int63(), 2) + + return k.record, nil +} + +func (k *KitchenSinkSource) Schema() []idk.Field { + return k.schema +} + +func (k *KitchenSinkSource) Close() error { + return nil +} diff --git a/idk/datagen/locations.data.go b/idk/datagen/locations.data.go new file mode 100644 index 000000000..710a236cb --- /dev/null +++ b/idk/datagen/locations.data.go @@ -0,0 +1,104535 @@ +package datagen + +type location struct { + lon float64 + lat float64 +} + +// a sample of ~100k locations of actual cell sites +var locations = []location{ + {8.7210845947266, 51.683120727539}, + {-58.202286, -26.179047}, + {10.881271362305, 48.385848999023}, + {13.310124, 52.566771}, + {9.221878, 48.467331}, + {8.0783843994141, 51.091232299805}, + {10.792922, 52.432023}, + {-16.728744506836, 28.367385864258}, + {13.17913, 52.396889}, + {11.524315, 48.076172}, + {11.503005, 49.849568}, + {8.58713, 49.746438}, + {7.149399, 49.384415}, + {13.329849243164, 52.523574829102}, + {13.403973, 52.518162}, + {13.339655, 52.47621}, + {13.203506469727, 52.637557983398}, + {13.225845, 52.542876}, + {12.555303, 53.042735}, + {12.756865, 52.804909}, + {-17.259521, 32.812042}, + {23.15299987793, 37.269058227539}, + {22.983173, 37.246058}, + {9.894739, 52.399337}, + {11.598949, 48.264015}, + {12.184151, 51.557137}, + {11.796763, 50.259352}, + {13.305536, 52.510165}, + {10.19706, 52.356113}, + {13.321021, 51.863999}, + {12.017205, 52.552348}, + {12.271892, 51.519082}, + {13.399994, 51.312676}, + {13.7439, 52.50055}, + {13.717538, 51.169996}, + {3.599853, 50.370438}, + {-1.592893, 48.823765}, + {13.403963, 52.411283}, + {-1.6211700439453, 49.634170532227}, + {11.81798, 52.71338}, + {4.242096, 50.497799}, + {11.607718, 52.277001}, + {11.673939, 51.596073}, + {10.518873, 52.24527}, + {9.844726, 52.489008}, + {9.75417, 52.366805}, + {13.460075, 52.48729}, + {7.853737, 50.957011}, + {10.493894, 52.308534}, + {10.96192, 59.931358}, + {10.962087, 59.928237}, + {13.89834, 52.500524}, + {10.643714, 59.383888}, + {9.802023, 49.995691}, + {7.521779, 51.601061}, + {6.119587, 49.544488}, + {11.676064, 52.120342}, + {11.017745, 49.413893}, + {11.041767, 59.974982}, + {10.261774, 52.328062}, + {9.811732, 56.219138}, + {6.8032, 51.279934}, + {9.372909, 55.084502}, + {9.476029, 54.76289}, + {8.599543, 50.151061}, + {7.475301, 51.40711}, + {6.858462, 51.463409}, + {13.55988, 51.189558}, + {7.430928, 51.526498}, + {8.551084, 47.423037}, + {13.334214, 52.537439}, + {10.96588, 59.203887}, + {7.635818, 51.924219}, + {10.512734, 52.252542}, + {13.469793, 52.513144}, + {4.300868, 50.802367}, + {9.737656, 52.570191}, + {6.861441, 46.974776}, + {9.967333, 57.065072}, + {6.89015, 51.995188}, + {14.649122, 52.168841}, + {9.900714, 53.513754}, + {10.088938, 53.522025}, + {8.620892, 53.029126}, + {6.418427, 48.21546}, + {9.833671, 49.735846}, + {7.658617, 51.691231}, + {11.934868, 57.704587}, + {5.224066, 51.695345}, + {13.251396, 52.309988}, + {7.168835, 50.693324}, + {12.559491, 56.881246}, + {10.151116, 53.477005}, + {10.012424, 57.019365}, + {12.272082, 55.674593}, + {10.012535, 56.993981}, + {9.806097, 55.889916}, + {10.682386, 59.83161}, + {11.004523, 51.80267}, + {9.767263, 52.424108}, + {8.80389, 56.268713}, + {11.810489, 50.329317}, + {3.324026, 49.783894}, + {12.453712, 53.150291}, + {9.062223, 54.418402}, + {8.642975, 53.775605}, + {11.95641, 51.483173}, + {5.824004, 51.108883}, + {8.987206, 54.322933}, + {4.847692, 45.692595}, + {10.827677, 48.810972}, + {13.500258, 52.38523}, + {9.94537, 51.659832}, + {5.648004, 51.742862}, + {6.434089, 51.223962}, + {9.422986, 50.002002}, + {9.222168, 48.487725}, + {9.944059, 54.032998}, + {13.320162, 52.306162}, + {11.95716, 57.717482}, + {10.3384, 56.449694}, + {10.434195, 53.797027}, + {6.928209, 49.65017}, + {9.956969, 57.0669}, + {10.344853, 53.468534}, + {13.59652, 51.115856}, + {7.407441, 50.915972}, + {7.70494, 51.586995}, + {7.179217, 50.697617}, + {10.486205, 51.180932}, + {12.463885, 48.647961}, + {2.1334075927734, 41.502914428711}, + {10.284304, 48.426564}, + {6.594523, 50.866045}, + {12.430846, 55.691022}, + {7.307576, 52.185837}, + {12.313851, 50.612706}, + {9.504805, 50.963994}, + {7.058477, 50.924405}, + {9.424121, 56.434444}, + {-0.026779174804688, 40.126876831055}, + {13.770754, 51.399486}, + {11.897628, 51.467374}, + {6.780319, 46.508775}, + {13.415057, 52.494031}, + {8.686691, 50.295127}, + {9.398088, 56.460757}, + {-0.10780334472656, 40.004653930664}, + {8.928648, 50.08641}, + {10.106117, 53.578493}, + {9.839687, 50.528848}, + {6.891031, 51.161833}, + {13.440104, 52.320014}, + {9.972856, 53.580439}, + {8.72582, 53.638769}, + {8.464157, 55.492896}, + {8.448576, 49.550068}, + {8.588848, 49.827672}, + {16.331039, 48.135086}, + {5.719139, 50.88468}, + {7.068589, 53.152274}, + {9.606776, 51.626041}, + {6.70613, 51.468705}, + {7.555659, 48.490033}, + {9.128697, 52.819985}, + {13.700971, 50.999132}, + {2.381544, 49.007115}, + {11.623933, 51.79979}, + {12.343617, 55.620613}, + {10.561477, 52.453155}, + {8.557966, 51.739155}, + {8.120569, 53.58147}, + {8.577012, 49.990206}, + {6.813717, 50.721266}, + {1.5319061279297, 48.439407348633}, + {6.707978, 49.806597}, + {11.918978, 54.139729}, + {14.36255, 52.169581}, + {11.499219, 53.446723}, + {8.158862, 50.020816}, + {9.376722, 56.433763}, + {7.5661468505859, 51.44416809082}, + {12.483353, 55.73378}, + {12.247715, 50.678071}, + {7.554885, 50.397411}, + {8.74615, 52.077754}, + {10.757233, 52.433031}, + {8.369781, 51.640437}, + {9.932747, 53.593326}, + {11.227684, 45.411668}, + {13.977207, 51.9504}, + {6.837119, 51.478419}, + {11.288118, 55.370796}, + {12.069247, 54.117331}, + {9.307, 51.046041}, + {11.424563, 52.520258}, + {12.993637, 52.448758}, + {13.269468, 53.561786}, + {7.225572, 51.558617}, + {6.669531, 51.709193}, + {10.731253, 52.34457}, + {11.695646, 50.592782}, + {5.441826, 50.733056}, + {7.062994, 50.829127}, + {11.596778, 46.657378}, + {5.444132, 51.406749}, + {5.623939, 51.301109}, + {9.739981, 52.395753}, + {10.547911, 52.963177}, + {9.878866, 52.35777}, + {9.009831, 50.1051}, + {6.00429, 51.22723}, + {11.838594, 51.512374}, + {7.062336, 51.065199}, + {20.962018, 50.368946}, + {18.161063, 50.467855}, + {8.27126, 50.740562}, + {8.76191, 51.736489}, + {7.377227, 51.343776}, + {7.463979, 50.971787}, + {12.483469, 51.940337}, + {7.172847, 51.278245}, + {11.421422, 48.203865}, + {14.130279, 50.900953}, + {9.142824, 48.883195}, + {8.337496, 51.826707}, + {11.658733, 48.182162}, + {7.126462, 51.710103}, + {10.987533, 50.886538}, + {8.773566, 53.208823}, + {11.533762, 50.022169}, + {9.711456, 54.721417}, + {12.170644, 54.15119}, + {10.026938, 54.5283}, + {14.318943, 51.762183}, + {8.730837, 52.350178}, + {5.553275, 43.293625}, + {9.961389, 52.461656}, + {9.00227, 53.794877}, + {6.983551, 51.198779}, + {9.543203, 51.114114}, + {12.647703, 48.034655}, + {9.980571, 53.560451}, + {10.00618, 53.588944}, + {9.351232, 48.727067}, + {10.457278, 55.283772}, + {10.114836, 54.287929}, + {8.606982, 50.186128}, + {12.000841, 57.804789}, + {4.426138, 51.246622}, + {8.60232, 49.87279}, + {10.263593, 55.393069}, + {0.046857, 51.263704}, + {-0.655743, 52.036747}, + {3.069747, 51.181676}, + {7.447827, 51.487836}, + {8.012554, 51.821423}, + {8.298489, 50.216345}, + {5.819414, 51.409587}, + {6.93388, 51.405901}, + {12.943211, 50.803403}, + {7.322392, 52.706737}, + {2.556384, 49.042368}, + {7.820892, 43.844376}, + {12.986206, 51.552014}, + {11.918984, 54.976171}, + {10.432242, 51.63127}, + {10.074465, 48.411101}, + {9.809664, 56.580328}, + {12.462087, 50.838414}, + {10.763123, 51.518806}, + {10.337867, 52.247816}, + {2.477127, 48.937314}, + {7.527265, 51.796748}, + {10.302515, 48.359371}, + {8.418074, 50.009005}, + {6.905413, 51.196672}, + {7.953444, 52.287143}, + {10.01627, 53.661273}, + {4.288785, 51.219364}, + {12.893654, 53.19919}, + {9.68197, 47.400273}, + {4.352469, 51.260156}, + {9.432596, 55.076604}, + {7.143169, 51.470047}, + {2.47982, 48.758011}, + {11.067335, 49.413224}, + {4.745805, 51.247837}, + {12.341679, 53.670155}, + {8.796496, 50.012384}, + {9.657245, 47.368668}, + {13.549893, 52.678528}, + {12.792614, 52.900165}, + {4.399648, 51.181699}, + {11.853857, 57.961753}, + {12.765033, 50.704654}, + {5.878641, 52.02085}, + {8.299424, 53.384188}, + {9.494536, 48.159362}, + {12.487212, 55.610021}, + {9.217942, 48.23163}, + {8.439251, 51.78406}, + {8.846169, 51.814722}, + {6.928614, 50.932066}, + {9.295439, 48.409067}, + {10.230224, 55.106718}, + {8.630789, 49.893891}, + {1.372515, 41.154102}, + {3.177639, 43.269562}, + {5.20634, 47.572556}, + {10.801995, 45.562179}, + {11.114742, 46.080953}, + {2.724252, 49.518686}, + {7.987511, 49.836515}, + {6.947591, 51.190967}, + {5.806141, 51.828865}, + {7.172562, 50.192624}, + {11.106562, 46.068627}, + {9.101137, 52.223073}, + {7.32877, 48.770019}, + {7.490839, 43.79155}, + {9.639754, 62.385048}, + {8.473499, 49.297099}, + {9.724251, 59.273945}, + {2.231908, 48.98657}, + {9.446031, 51.259915}, + {6.987087, 50.988467}, + {7.731271, 45.173854}, + {5.825006, 49.651173}, + {5.667432, 49.977585}, + {10.387718, 55.280346}, + {10.780726, 48.772583}, + {9.224859, 45.656085}, + {11.835816, 50.293882}, + {11.040088, 50.293383}, + {10.175965, 49.340044}, + {7.465639, 51.752117}, + {11.554945, 49.947919}, + {2.75511, 49.604186}, + {15.870896, 50.026019}, + {9.015893, 53.784677}, + {13.394761, 52.531993}, + {9.404984, 45.638809}, + {10.355744, 49.897967}, + {5.339786, 51.863269}, + {8.756263, 48.906372}, + {6.526169, 51.23517}, + {9.850278, 50.934589}, + {5.595152, 52.331414}, + {0.732949, 47.387825}, + {13.767107, 51.963689}, + {10.1283, 56.11093}, + {6.2491607666016, 49.636917114258}, + {9.28291, 48.866387}, + {7.639492, 51.225835}, + {7.39243, 51.365203}, + {7.236332, 51.218681}, + {9.098739, 45.525284}, + {8.852205, 45.645349}, + {6.614201, 51.489685}, + {12.764831, 56.019922}, + {4.623542, 50.562677}, + {4.437299, 52.205989}, + {4.067152, 50.487244}, + {13.164567, 51.775954}, + {7.522009, 51.580479}, + {7.426235, 51.967914}, + {3.1304168701172, 45.761489868164}, + {10.41945, 55.406699}, + {4.255873, 50.494432}, + {-2.988648, 50.974512}, + {-2.27162, 52.991207}, + {-1.293294, 52.026444}, + {5.97047, 50.643431}, + {12.322819, 51.339278}, + {9.178101, 48.862651}, + {5.882319, 45.646966}, + {8.449219, 52.824998}, + {9.54245, 45.608679}, + {7.452489, 51.529644}, + {6.913941, 51.455065}, + {12.207448, 47.653203}, + {10.075149536133, 56.985397338867}, + {6.622397, 49.986374}, + {12.655346, 50.814215}, + {10.301372, 52.336742}, + {9.408228, 55.253511}, + {12.165824, 53.398063}, + {6.226238, 49.375893}, + {9.213316, 48.807452}, + {4.84449, 45.680564}, + {3.473739, 50.359543}, + {11.86068, 51.939645}, + {6.767071, 51.199528}, + {4.897552, 45.71198}, + {16.142034, 51.1504}, + {9.166385, 48.706774}, + {5.271372, 51.000661}, + {6.692158, 51.651094}, + {13.419421, 52.513462}, + {10.094526, 52.614808}, + {10.133182, 48.07644}, + {4.388287, 43.796244}, + {7.821201, 50.891806}, + {6.742613, 50.531489}, + {9.485686, 47.666648}, + {5.050281, 52.328227}, + {6.571551, 50.412386}, + {8.433004, 49.937249}, + {10.42387, 55.414291}, + {13.694255, 51.093177}, + {8.495029, 58.586926}, + {8.558421, 51.546734}, + {9.664271, 52.399371}, + {4.312721, 50.895092}, + {13.445092, 52.323284}, + {9.2470550537109, 45.545883178711}, + {2.602079, 48.832936}, + {7.970617, 51.912845}, + {11.071074, 53.127103}, + {8.265981, 50.989821}, + {8.536857, 52.049108}, + {13.416735, 52.665199}, + {10.329093, 59.736265}, + {1.033017, 49.359575}, + {8.658886, 47.921002}, + {10.502418, 59.875666}, + {6.253673, 61.776049}, + {10.825271, 62.01635}, + {5.044235, 47.285294}, + {11.085654, 59.609283}, + {8.843266, 49.904714}, + {7.383566, 52.512851}, + {2.69783, 49.343719}, + {9.558791, 50.818978}, + {9.016952, 47.849079}, + {8.033708, 51.775165}, + {9.726677, 52.865227}, + {5.280245, 52.112119}, + {9.154677, 48.535194}, + {7.208803, 51.600644}, + {10.497127, 57.44101}, + {10.01711, 53.463678}, + {7.569992, 49.460395}, + {10.251691, 52.742706}, + {0.71777, 47.386322}, + {10.316014, 50.993118}, + {7.097664, 51.446952}, + {4.944942, 51.839884}, + {4.907246, 51.553828}, + {7.715614, 47.275397}, + {7.602646, 46.780699}, + {7.55617, 47.059589}, + {8.86314, 51.394446}, + {7.304731, 51.838507}, + {11.998415, 51.161184}, + {-1.554701, 47.260851}, + {-0.841827, 47.06337}, + {-2.103701, 47.44231}, + {8.254338, 50.043062}, + {2.922534, 50.501961}, + {8.861087, 51.932374}, + {8.766463, 52.034831}, + {8.273253, 52.083168}, + {5.23973, 51.84433}, + {13.569233, 51.692741}, + {9.645625, 47.592984}, + {6.155121, 48.785649}, + {5.887711, 50.546611}, + {5.029713, 50.313089}, + {7.063399, 51.558862}, + {10.451924, 48.881691}, + {9.015474, 48.690814}, + {13.73622, 51.040352}, + {-3.339749, 47.810909}, + {3.000286, 50.416368}, + {8.444357, 50.882091}, + {4.124461, 51.23185}, + {4.552721, 45.490936}, + {7.172753, 52.800822}, + {0.196778, 51.39441}, + {13.673881, 51.003705}, + {13.064017, 55.60345}, + {12.544326782227, 52.408218383789}, + {11.718989, 52.134131}, + {6.74149, 51.388965}, + {7.298669, 51.538951}, + {-0.57259, 45.31587}, + {5.459057, 50.638048}, + {6.952369, 49.219161}, + {8.643586, 50.087683}, + {2.312207, 48.94582}, + {0.065698, 44.533163}, + {8.561404, 52.02111}, + {2.55819, 48.633732}, + {7.595314, 47.153677}, + {2.555505, 48.650976}, + {7.194616, 51.274031}, + {12.497885, 50.728933}, + {-0.684845, 46.551876}, + {10.334655, 51.80291}, + {7.789129, 47.984942}, + {3.266343, 49.826154}, + {11.118057, 49.465144}, + {9.975427, 53.566618}, + {3.1729888916016, 50.767135620117}, + {4.299774, 49.007263}, + {13.013416, 52.275411}, + {-2.497508, 51.505932}, + {5.306327, 46.058505}, + {11.453979, 53.599877}, + {4.176365, 51.939241}, + {14.901108, 51.302868}, + {6.200742, 50.83894}, + {1.445903, 49.051461}, + {3.49517, 47.450153}, + {11.897506713867, 55.651931762695}, + {7.917859, 50.968848}, + {13.937481, 52.470272}, + {3.058354, 50.546879}, + {9.499872, 51.306279}, + {0.612703, 48.123522}, + {4.322982, 51.893923}, + {11.601922, 48.175827}, + {5.534775, 50.615524}, + {4.713571, 47.124466}, + {12.978973, 51.196289}, + {18.886498, 47.452167}, + {14.29227, 48.21873}, + {5.9731292724609, 45.525283813477}, + {5.739671, 49.831675}, + {6.09598, 45.51212}, + {0.699379, 51.228004}, + {10.090311, 59.535559}, + {6.898914, 50.821394}, + {10.664174, 53.60488}, + {8.98131, 50.80865}, + {14.105074, 47.905541}, + {17.30324, 45.074387}, + {4.437416, 51.244917}, + {9.742925, 47.536778}, + {7.876353, 53.174694}, + {12.375454, 51.348485}, + {12.99277, 51.558363}, + {10.050607, 53.581125}, + {7.281123, 46.875135}, + {6.291458, 51.956818}, + {9.093341, 47.56275}, + {10.450455, 51.839477}, + {9.617801, 47.792004}, + {14.608383178711, 52.141799926758}, + {10.745412, 53.190657}, + {7.544031, 49.449931}, + {9.054032, 53.384337}, + {12.216508, 53.793329}, + {7.87183, 58.143969}, + {7.089881, 51.25348}, + {8.20263, 49.452385}, + {6.064029, 51.299344}, + {7.442525, 51.509832}, + {4.735795, 44.555054}, + {12.364106, 55.739358}, + {7.955245, 51.817849}, + {9.906366, 53.570106}, + {6.640714, 49.757842}, + {8.891471, 49.241943}, + {15.06753, 49.718091}, + {7.171753, 50.195393}, + {7.318441, 49.701919}, + {10.740142, 59.911627}, + {7.276351, 47.700277}, + {11.563752, 50.933124}, + {3.458944, 46.139515}, + {-2.1409, 51.513969}, + {8.257901, 47.901612}, + {7.8798, 50.480547}, + {4.756003, 52.606845}, + {6.686348, 49.374971}, + {5.015793, 43.918992}, + {8.965589, 56.122498}, + {8.521711, 52.043611}, + {5.029624, 45.025091}, + {14.331938, 53.307447}, + {6.980629, 50.946884}, + {7.1857452392578, 43.730392456055}, + {9.732101, 47.422789}, + {12.878952, 51.072027}, + {5.6462860107422, 43.470840454102}, + {14.579544067383, 53.418960571289}, + {7.420918, 46.951421}, + {16.152983, 54.186977}, + {11.86203, 58.352166}, + {-4.034309, 50.368536}, + {9.124801, 54.180919}, + {11.40209, 47.197235}, + {7.097227, 46.731588}, + {6.712779, 49.327707}, + {8.474376, 50.589181}, + {12.292686, 55.660053}, + {11.116958, 50.485843}, + {11.133225, 51.214471}, + {2.142785, 48.797791}, + {4.139236, 51.021818}, + {11.522598266602, 51.628189086914}, + {9.7304534912109, 47.409439086914}, + {7.966399, 49.8795}, + {6.45442, 51.174544}, + {7.181306, 49.341557}, + {6.052284, 45.893762}, + {6.122818, 51.850662}, + {7.444781, 51.353429}, + {8.596232, 50.529116}, + {8.353308, 52.395171}, + {2.46377, 51.041365}, + {9.952938, 47.345584}, + {12.006958, 51.323621}, + {13.579978, 53.458131}, + {10.00604, 52.115709}, + {12.130938, 49.043398}, + {7.179515, 51.185454}, + {12.909805, 50.812144}, + {6.327629, 52.681045}, + {9.564945, 49.210471}, + {11.510433, 49.752396}, + {1.732333, 50.752128}, + {9.938386, 45.062632}, + {7.604407, 47.221138}, + {13.420897, 52.604695}, + {13.76106262207, 52.030563354492}, + {8.506184, 48.881199}, + {10.140072, 56.143313}, + {12.771197, 51.307638}, + {9.374779, 54.792056}, + {6.062064, 46.227095}, + {11.647148, 52.343819}, + {3.915938, 50.685721}, + {3.541035, 49.336513}, + {-0.072503, 47.693137}, + {-0.698445, 44.829918}, + {1.887622, 47.95122}, + {7.682825, 49.586855}, + {10.688122, 48.566806}, + {11.872333, 52.596638}, + {9.710351, 47.196093}, + {9.6041107177734, 47.469863891602}, + {9.6562957763672, 47.464370727539}, + {12.46401, 50.845066}, + {8.635098, 49.433277}, + {5.714405, 58.851148}, + {9.6837615966797, 47.362747192383}, + {10.131149, 50.611933}, + {8.822735, 50.876419}, + {6.24218, 46.417604}, + {6.904363, 46.326222}, + {8.716565, 50.609606}, + {10.356503, 48.932271}, + {9.919034, 57.03896}, + {1.785151, 48.79989}, + {11.395684, 53.577966}, + {5.220625, 43.461359}, + {13.544272, 53.65977}, + {0.99769592285156, 49.495468139648}, + {7.671312, 49.774733}, + {8.575973, 50.048447}, + {10.866829, 48.432723}, + {5.785843, 52.200432}, + {15.539984, 59.347883}, + {12.748136, 56.016372}, + {7.292214, 46.878947}, + {10.807386, 48.180324}, + {10.125875, 48.475106}, + {11.957326, 60.209625}, + {10.024385, 50.505402}, + {12.004234, 57.686365}, + {7.822826, 51.675137}, + {7.950765, 50.773401}, + {10.212872, 54.395991}, + {9.742665, 52.377732}, + {-1.67432, 51.249165}, + {6.067161, 46.17809}, + {11.535073, 53.487194}, + {12.22297668457, 44.970474243164}, + {9.728629, 47.462542}, + {6.996528, 51.016355}, + {11.331635, 47.259949}, + {12.869616, 43.896304}, + {8.386982, 48.979688}, + {9.043319, 47.60889}, + {9.209442, 49.14393}, + {8.333264, 49.012335}, + {6.112749, 48.603598}, + {12.982431, 55.771625}, + {9.198382, 54.221496}, + {7.671663, 49.214343}, + {10.197961, 52.880522}, + {7.899139, 50.918888}, + {14.305257, 51.781218}, + {12.344903, 50.495459}, + {9.752034, 47.444753}, + {9.680722, 47.358956}, + {8.93674, 48.773509}, + {1.873467, 48.622457}, + {6.748503, 51.531786}, + {8.564202, 50.140261}, + {9.482792, 49.451209}, + {5.915266, 51.64883}, + {13.465932, 53.435583}, + {11.318875, 52.177713}, + {3.132967, 50.614307}, + {4.989608, 51.942007}, + {12.910248, 50.865985}, + {2.891889, 51.146761}, + {4.838065, 49.07484}, + {4.820065, 51.588816}, + {2.218288, 41.54592}, + {-7.220295, 38.885644}, + {-1.865054, 43.315906}, + {-2.8296661376953, 50.93879699707}, + {5.243483, 45.949078}, + {9.093556, 54.205698}, + {8.615888, 50.115452}, + {11.606369018555, 53.586502075195}, + {8.6537933349609, 50.092849731445}, + {7.037183, 49.183172}, + {6.982444, 51.854033}, + {8.47446, 49.476534}, + {8.481914, 47.084908}, + {9.9597930908203, 53.581008911133}, + {8.426049, 48.932827}, + {8.844787, 51.540771}, + {4.363841, 51.222846}, + {5.08506, 49.827116}, + {8.168956, 49.879262}, + {12.632864, 50.585545}, + {11.525815, 48.199807}, + {13.850582, 51.134384}, + {8.995896, 48.802817}, + {17.032131, 61.243322}, + {17.417944, 58.938321}, + {9.7428131103516, 47.493209838867}, + {11.934805, 55.534062}, + {12.62413, 41.837845}, + {9.747967, 47.455788}, + {7.287632, 47.157878}, + {11.064614, 49.469956}, + {3.444234, 50.336723}, + {9.498796, 46.845423}, + {2.627151, 48.818253}, + {11.317419, 48.158586}, + {6.159184, 49.113476}, + {11.159722, 46.065095}, + {9.071677, 47.031827}, + {6.854784, 58.249741}, + {-2.657586, 54.293295}, + {11.02821, 49.528246}, + {13.951942, 53.479754}, + {10.432178, 48.570507}, + {8.433274, 49.414328}, + {3.266433, 50.61769}, + {11.441602, 50.111155}, + {11.434418, 47.248771}, + {8.458707, 49.543209}, + {11.445181, 50.09742}, + {11.077805, 49.443543}, + {4.606927, 51.561299}, + {12.728144, 53.845376}, + {8.470039, 47.010822}, + {8.231539, 47.48561}, + {7.316366, 49.291156}, + {12.324602, 58.30513}, + {17.98276, 59.425645}, + {11.86572, 48.766079}, + {11.928342, 48.900198}, + {2.589486, 46.350931}, + {11.221158, 49.468859}, + {10.114684, 55.439566}, + {11.548193, 48.187075}, + {9.726792, 47.493439}, + {-0.49095153808594, 47.501449584961}, + {11.937986, 57.876214}, + {9.061259, 50.17301}, + {14.891473, 50.380066}, + {3.1867218017578, 43.980331420898}, + {0.415358, 47.327765}, + {6.122889, 52.523168}, + {2.197098, 47.922289}, + {12.731119, 51.500835}, + {16.164737, 47.734715}, + {8.696719, 53.307943}, + {6.420785, 51.85662}, + {8.769493, 46.166268}, + {12.837054, 48.83086}, + {9.114882, 48.733736}, + {11.211064, 49.290359}, + {8.544203, 50.785538}, + {7.321807, 52.705803}, + {9.658267, 51.315683}, + {11.554733, 48.11852}, + {9.793903, 50.93296}, + {16.191823, 58.630491}, + {7.190687, 46.798513}, + {12.32122, 55.611684}, + {6.5512847900391, 46.571731567383}, + {11.64542, 48.098907}, + {11.564699, 48.141488}, + {9.256072, 48.771472}, + {11.174461, 52.844308}, + {7.949855, 53.37841}, + {13.383258, 48.383177}, + {12.063297, 48.586381}, + {-1.681349, 42.376656}, + {-1.780476, 43.336904}, + {11.523199, 48.14923}, + {10.043231, 49.23139}, + {10.937839, 48.370492}, + {9.741032, 49.530562}, + {9.788009, 51.985485}, + {7.559305, 51.02202}, + {11.114544, 55.669071}, + {12.709051, 48.893009}, + {8.836331, 48.254031}, + {9.864119, 46.513596}, + {8.139423, 47.044429}, + {5.889085, 45.579289}, + {15.917723, 45.80081}, + {19.174274, 47.379458}, + {16.838607788086, 47.97248840332}, + {7.047023, 50.284966}, + {13.320912, 52.566693}, + {7.536305, 47.557808}, + {7.568034, 47.54602}, + {11.657913, 48.184635}, + {-0.472166, 51.329534}, + {10.790917, 49.493196}, + {8.4066009521484, 51.666641235352}, + {10.049744, 54.320526}, + {9.518296, 52.285241}, + {12.745292, 48.256529}, + {10.399248, 53.284378}, + {16.900405883789, 48.598709106445}, + {9.097023, 51.934433}, + {8.743233, 50.062101}, + {10.907724, 48.403925}, + {9.04455, 47.684399}, + {8.850459, 53.113045}, + {12.278074, 52.642397}, + {13.075561, 52.39698}, + {9.08342, 48.80549}, + {14.292909, 48.291176}, + {11.605633, 48.129534}, + {0.37559509277344, 51.40983581543}, + {9.735977, 52.122584}, + {9.409759, 53.371227}, + {8.593386, 51.58412}, + {9.363951, 49.132679}, + {7.333691, 47.394719}, + {2.517035, 48.982261}, + {9.3487, 48.700317}, + {11.30845, 53.653434}, + {5.70096, 58.958161}, + {13.687699, 51.610543}, + {12.673589, 52.409613}, + {7.968006, 46.308747}, + {9.740067, 47.49115}, + {10.155304, 48.678278}, + {8.858003, 48.76982}, + {7.276493, 46.956456}, + {3.192908, 50.96215}, + {0.192942, 47.945024}, + {1.434904, 48.704898}, + {12.998657, 52.350246}, + {13.402633666992, 54.091873168945}, + {11.457307, 48.232029}, + {11.528091, 48.084412}, + {12.082655, 47.886919}, + {13.770298, 48.814244}, + {8.25202, 47.494559}, + {-16.261773, 28.428917}, + {1.953756, 47.820181}, + {-16.547706, 28.416753}, + {13.279983, 52.424322}, + {16.510391235352, 48.216934204102}, + {9.557958, 52.975854}, + {9.705358, 47.430042}, + {11.621849, 48.195804}, + {15.279922485352, 45.309677124023}, + {12.758441, 52.255916}, + {13.340571, 52.498246}, + {-0.052513, 51.260153}, + {6.259418, 48.634155}, + {15.072984, 58.530307}, + {13.599586, 52.484437}, + {11.675902, 52.268627}, + {12.224401, 51.123506}, + {8.452836, 50.091856}, + {11.287506, 47.948538}, + {2.214598, 48.927603}, + {6.589999, 51.727431}, + {8.211068, 50.099659}, + {13.691015, 47.973866}, + {6.981212, 51.424318}, + {5.614343, 52.0405}, + {13.295631, 52.536838}, + {13.28967, 52.472446}, + {10.961979, 49.491027}, + {-16.51989, 28.383351}, + {10.638003, 49.831253}, + {7.85703, 47.989402}, + {12.786207, 54.126682}, + {13.295275, 52.392057}, + {9.995452, 53.837128}, + {8.315965, 50.010796}, + {14.190265, 51.440148}, + {0.104602, 51.682666}, + {2.871596, 42.712601}, + {8.514478, 50.13222}, + {8.393119, 52.538824}, + {13.087055, 52.918219}, + {11.731273, 52.028972}, + {9.104506, 54.218565}, + {9.367299, 54.856297}, + {7.077575, 49.108213}, + {13.555194, 52.536684}, + {6.930323, 51.197583}, + {7.201906, 51.231002}, + {9.4983673095703, 51.260147094727}, + {9.958923, 47.668813}, + {10.713715, 52.857574}, + {6.941739, 51.017399}, + {18.026245, 59.274509}, + {5.568184, 51.401621}, + {4.332046, 52.032623}, + {6.77761, 51.279898}, + {12.506323, 58.802387}, + {7.124984, 51.427154}, + {7.304321, 52.075435}, + {2.294839, 48.884812}, + {-16.582996, 28.057658}, + {17.946171, 43.673065}, + {7.104368, 49.503755}, + {12.902983, 50.838781}, + {7.142021, 51.265373}, + {7.101651, 51.19728}, + {11.572635, 48.153065}, + {8.070863, 50.024115}, + {18.249063, 50.475966}, + {13.526229858398, 52.459030151367}, + {19.054515, 50.101628}, + {11.494155, 51.476292}, + {7.532181, 52.175675}, + {11.57523, 49.944663}, + {17.014516, 48.25671}, + {11.868179, 49.873801}, + {9.377766, 48.681132}, + {15.407473, 46.989323}, + {11.635909, 53.817913}, + {12.034477, 48.999948}, + {13.531061, 48.726814}, + {15.556748, 49.125652}, + {13.06906, 57.015268}, + {5.763973, 43.754589}, + {5.643367, 51.674367}, + {8.7979888916016, 53.053665161133}, + {8.67647, 50.10521}, + {-2.823071, 53.305047}, + {13.25041, 47.98048}, + {13.859939575195, 49.84977722168}, + {9.7386932373047, 47.480850219727}, + {8.365052, 50.05785}, + {6.055927, 46.203688}, + {14.408799, 48.221512}, + {7.372976, 51.452163}, + {7.312555, 51.210781}, + {12.386832, 50.497574}, + {10.125924, 56.252322}, + {5.060989, 52.116623}, + {27.944288, -26.04052}, + {28.091058, -26.056138}, + {7.479455, 51.36023}, + {6.46862, 51.657965}, + {7.297005, 51.557089}, + {6.275005, 49.723209}, + {12.539895, 48.537073}, + {5.172757, 45.861754}, + {3.5245513916016, 50.36750793457}, + {5.703324, 45.132385}, + {5.657821, 50.684137}, + {14.768908, 50.899711}, + {8.518165, 49.004935}, + {-16.372299, 28.357925}, + {8.4942, 47.392723}, + {28.023462, -26.143476}, + {8.716991, 50.130898}, + {10.783979, 50.206532}, + {4.511449, 46.381666}, + {11.846695, 45.411759}, + {17.996292114258, 46.106185913086}, + {19.012058, 47.466469}, + {6.783496, 51.229248}, + {8.650359, 50.123108}, + {-3.133879, 42.627225}, + {-9.13512, 38.708525}, + {-3.139344, 40.641861}, + {-1.614826, 42.906382}, + {11.413457, 53.738938}, + {7.281362, 51.635224}, + {7.3354339599609, 49.624557495117}, + {6.980863, 50.924672}, + {22.127819, 46.025139}, + {25.991584, 43.853991}, + {21.745835, 46.106644}, + {7.461321, 50.312854}, + {3.733258, 51.050838}, + {14.845107, 50.879224}, + {-0.571289, 44.868851}, + {10.989164, 49.104309}, + {13.866482, 46.605707}, + {9.986889, 48.304423}, + {12.709465, 57.580032}, + {14.01237487793, 48.162002563477}, + {10.116348266602, 53.491744995117}, + {7.650153, 47.842859}, + {5.977343, 50.961093}, + {4.772415, 45.734024}, + {13.082098, 47.770284}, + {13.114116, 47.674794}, + {12.115832, 49.111535}, + {4.399337, 50.394102}, + {12.502033, 55.750536}, + {28.320452, -25.72139}, + {13.145421, 52.175104}, + {6.836364, 47.516113}, + {6.946793, 50.923348}, + {23.389576, 60.356969}, + {17.53348, 58.996584}, + {8.699658, 47.454923}, + {-1.697045, 42.819214}, + {18.22753, 43.99331}, + {1.856843, 48.177816}, + {18.320389, 43.937759}, + {28.054516, -26.157296}, + {15.322495, 47.129974}, + {3.84664, 48.05756}, + {-7.903293, 40.950852}, + {2.476376, 47.591058}, + {-1.0951995849609, 54.06852722168}, + {12.430216, 51.378921}, + {11.048803, 49.429371}, + {10.046844, 49.844055}, + {2.799772, 49.038559}, + {7.161048, 47.080319}, + {13.962238, 51.800195}, + {8.658386, 49.886846}, + {8.455055, 52.819925}, + {2.973175, 51.096726}, + {0.587225, 52.264966}, + {5.918174, 45.577748}, + {11.393502, 53.609391}, + {8.28092, 51.347219}, + {4.562597, 45.500926}, + {8.915953, 50.109828}, + {4.347399, 50.85316}, + {9.636901, 54.795961}, + {7.289385, 51.293012}, + {9.137191, 45.523911}, + {-2.729694, 53.406056}, + {6.964818, 51.478329}, + {10.284796, 43.888539}, + {6.829144, 49.152834}, + {13.17304, 52.981241}, + {10.60561, 49.880578}, + {28.298392, -25.21565}, + {13.303016, 48.489628}, + {11.093745, 50.386723}, + {14.445688, 46.64002}, + {4.10523, 50.474242}, + {8.696227, 51.751173}, + {6.635145, 50.585508}, + {3.317952, 43.822593}, + {10.865617, 50.110267}, + {1.07077, 49.437285}, + {10.438914, 50.296538}, + {7.515701, 50.909003}, + {9.566517, 51.621754}, + {8.676595, 53.354966}, + {7.9245758056641, 51.367263793945}, + {12.110029, 49.193187}, + {12.953275, 50.864614}, + {14.149135, 51.174924}, + {5.399644, 43.248367}, + {5.591099, 47.279929}, + {1.387598, 48.18045}, + {8.372098, 48.990614}, + {11.510776, 51.02973}, + {10.965001, 48.397411}, + {-1.382422, 43.64068}, + {4.537574, 49.432713}, + {9.8155975341797, 52.291488647461}, + {5.607578, 51.933544}, + {9.269522, 45.520417}, + {9.247052, 45.734025}, + {1.320896, 44.694598}, + {11.024729, 53.720265}, + {1.918212, 48.745514}, + {4.474416, 51.217424}, + {5.233889, 51.018613}, + {7.305907, 50.865326}, + {7.326596, 47.233572}, + {8.372052, 49.636928}, + {3.329359, 46.584078}, + {2.350072, 48.763765}, + {4.589155, 49.81912}, + {27.208863, -25.531016}, + {9.619903, 47.48085}, + {12.864475, 50.232582}, + {6.961629, 50.944952}, + {3.592296, 46.766466}, + {8.789062, 50.013886}, + {0.989025, 45.166964}, + {-1.990282, 43.285577}, + {16.289017, 48.099655}, + {-1.869636, 52.512295}, + {-7.1033477783203, 53.449172973633}, + {-4.07505, 53.210499}, + {0.24375915527344, 51.45378112793}, + {6.095998, 50.799449}, + {14.443673, 51.17272}, + {7.050691, 49.202835}, + {8.814222, 52.168856}, + {5.684896, 51.927895}, + {8.5865020751953, 50.028305053711}, + {7.112837, 52.004865}, + {13.59489440918, 52.529067993164}, + {17.830781, 49.735798}, + {17.811485, 49.684623}, + {6.908737, 49.67566}, + {4.456392, 51.125128}, + {11.418131, 53.798683}, + {5.440914, 46.677433}, + {13.229598999023, 52.526321411133}, + {9.7441864013672, 47.504196166992}, + {11.492123, 45.515572}, + {6.977481, 50.945941}, + {8.980528, 49.102692}, + {4.074578, 50.945711}, + {7.721406, 50.773581}, + {8.52981, 45.462999}, + {10.573654174805, 44.623031616211}, + {2.268688, 50.734868}, + {27.885575, -26.384731}, + {11.882963, 52.600795}, + {8.090129, 48.862211}, + {9.6219635009766, 47.464370727539}, + {9.9831390380859, 53.111343383789}, + {13.751449584961, 52.633438110352}, + {10.744199, 53.875257}, + {2.327091, 43.212963}, + {6.132533, 46.252231}, + {6.805148, 51.217459}, + {13.358658, 52.502539}, + {8.197207, 50.079239}, + {0.17372131347656, 51.512832641602}, + {4.7879791259766, 49.07112121582}, + {3.318433, 49.821313}, + {5.5913543701172, 50.588607788086}, + {13.307843, 52.551882}, + {6.922468, 49.227115}, + {8.2294464111328, 50.057144165039}, + {9.243084, 50.082997}, + {11.518176, 49.312463}, + {8.656854, 49.912564}, + {27.923469, -26.213294}, + {13.13346862793, 52.546920776367}, + {6.593398, 51.080249}, + {13.211251, 46.020485}, + {11.424788, 50.201975}, + {4.460693, 51.001918}, + {7.340282, 50.816392}, + {15.950852, 45.779606}, + {13.015366, 47.823701}, + {28.119492, -26.007948}, + {4.267536, 45.245673}, + {3.793272, 46.672302}, + {10.646438598633, 54.09049987793}, + {2.633472, 48.904346}, + {9.8334503173828, 53.593368530273}, + {-1.117859, 51.257401}, + {11.799093, 50.310288}, + {7.5991058349609, 47.567367553711}, + {9.763041, 51.509575}, + {9.811348, 56.639287}, + {7.3601531982422, 52.972640991211}, + {6.3137054443359, 50.97038269043}, + {4.409637, 50.40802}, + {13.574295043945, 52.673263549805}, + {5.015717, 51.840591}, + {8.244812, 50.054271}, + {12.680334, 56.847756}, + {9.535358, 62.243439}, + {9.895512, 48.197163}, + {6.261519, 52.241022}, + {5.680594, 52.490751}, + {3.64165, 49.30355}, + {8.292788, 47.0747}, + {3.844818, 47.718279}, + {4.751587, 51.380997}, + {9.778084, 47.172174}, + {5.672921, 51.249439}, + {10.313188, 44.762193}, + {4.771926, 52.295009}, + {9.038084, 45.771792}, + {10.064933, 59.054123}, + {17.432784, 51.70372}, + {-1.919662, 51.156869}, + {27.296217, -25.362168}, + {28.015546, -26.104833}, + {10.39924621582, 52.685623168945}, + {11.427145, 53.583075}, + {9.6370697021484, 47.460250854492}, + {13.836181, 41.449616}, + {14.847491, 40.976822}, + {13.289898, 49.487354}, + {13.319843, 49.612394}, + {13.371561, 49.743701}, + {14.460759, 42.226999}, + {9.38019, 47.713465}, + {10.705490112305, 53.899612426758}, + {16.870505, 40.702977}, + {13.792741, 43.173433}, + {11.974151, 54.061047}, + {20.094681, 46.2957}, + {16.359329223633, 48.17985534668}, + {7.567531, 47.522353}, + {10.562696, 44.750918}, + {9.715332, 53.780138}, + {12.232611, 49.853505}, + {9.81915, 48.573099}, + {3.693206, 51.092092}, + {12.319629, 42.494892}, + {8.3585357666016, 49.628677368164}, + {14.330647, 40.898999}, + {11.367532, 48.813092}, + {6.630626, 45.965674}, + {12.324614, 44.152688}, + {14.992081, 41.064776}, + {12.638546, 42.075716}, + {4.958267, 52.338183}, + {14.553451538086, 52.334060668945}, + {2.507641, 46.372351}, + {11.915682, 53.118571}, + {9.937654, 49.394848}, + {11.127055, 46.180314}, + {13.009147, 50.595879}, + {30.383415, -29.602902}, + {7.5345611572266, 49.436416625977}, + {8.597488, 48.655472}, + {27.955777, -26.06636}, + {11.26579284668, 47.261123657227}, + {22.827167, 52.011313}, + {-5.519588, 35.871907}, + {28.02131652832, -26.562881469727}, + {10.178427, 53.319765}, + {8.139599, 52.170243}, + {-5.478704, 41.11749}, + {-6.333878, 39.261932}, + {1.817865, 46.207047}, + {11.716877, 48.836004}, + {-0.781177, 50.785904}, + {18.057131, 50.621282}, + {4.241741, 48.900464}, + {-1.673572, 43.384609}, + {9.849082, 51.860182}, + {12.790006, 49.903522}, + {12.775141, 52.364214}, + {4.956214, 50.953013}, + {-0.52704, 44.819761}, + {16.892166137695, 41.044235229492}, + {7.681409, 47.000807}, + {5.599767, 52.401552}, + {5.287857, 51.704178}, + {13.530349731445, 52.265396118164}, + {8.919278, 53.258547}, + {8.556747, 44.853746}, + {11.666436, 45.635504}, + {7.984318, 44.892427}, + {7.14019, 48.931206}, + {16.245329, 52.373041}, + {27.002427, -26.757949}, + {11.398466, 43.69459}, + {11.533519, 48.055047}, + {6.823149, 51.790649}, + {7.01515, 50.033721}, + {-6.169291, 37.698039}, + {5.523618, 52.26455}, + {7.2393035888672, 50.319442749023}, + {-0.400063, 45.528643}, + {24.824185, 59.429864}, + {16.326370239258, 48.168869018555}, + {9.014464, 50.065201}, + {6.7545318603516, 51.503219604492}, + {7.838237, 44.459283}, + {16.335969, 48.1966}, + {5.96644, 51.807406}, + {11.869837, 43.11539}, + {2.569665, 48.78548}, + {13.515729, 52.427126}, + {28.186867, -26.325461}, + {16.322250366211, 48.17024230957}, + {11.246566772461, 44.524154663086}, + {13.639755, 50.501175}, + {4.735675, 45.690676}, + {1.249939, 49.48549}, + {5.090279, 52.081252}, + {10.382774, 44.797457}, + {15.937812, 53.304681}, + {15.278087, 48.259698}, + {10.537899, 51.553644}, + {13.060755, 50.75849}, + {8.1813812255859, 53.190994262695}, + {9.007325, 49.653491}, + {11.490326, 48.206635}, + {11.565636, 48.281694}, + {16.760330200195, 49.185104370117}, + {17.231144, 49.596098}, + {10.665482, 45.442741}, + {12.795639038086, 52.166519165039}, + {7.851106, 52.736435}, + {9.250538, 45.396727}, + {12.878036499023, 50.24528503418}, + {8.780365, 50.012398}, + {8.516982, 50.100936}, + {6.087373, 48.191399}, + {6.156819, 48.74436}, + {9.0190887451172, 50.661392211914}, + {15.796645, 49.055393}, + {6.930509, 50.946056}, + {17.784805297852, 59.223861694336}, + {18.316956, 43.857422}, + {10.668868, 52.760646}, + {7.6993560791016, 47.640151977539}, + {13.738278, 51.354677}, + {14.154002, 42.411692}, + {-6.001086, 35.474628}, + {5.7492828369141, 60.557327270508}, + {-7.113706, 33.81983}, + {10.007858276367, 53.552169799805}, + {6.089169, 48.695704}, + {11.067848, 55.57076}, + {13.74870300293, 51.574630737305}, + {10.775528, 59.924927}, + {10.05386, 52.630007}, + {9.096681, 50.769197}, + {5.39566, 45.537643}, + {13.671264, 51.246419}, + {8.543766, 47.417427}, + {13.502178, 49.591989}, + {10.512123, 46.913957}, + {8.941073, 52.64655}, + {6.819445, 49.142762}, + {8.866849, 48.234003}, + {7.6087188720703, 51.478500366211}, + {7.057752, 51.363786}, + {9.661788, 47.47673}, + {12.880258, 47.781074}, + {12.370551, 53.85155}, + {8.788734, 51.674982}, + {10.319173, 47.716739}, + {11.570663452148, 52.097854614258}, + {11.178243, 50.348361}, + {7.7501678466797, 45.15998840332}, + {6.954859, 51.058274}, + {11.261678, 44.389573}, + {10.921096, 51.741486}, + {4.349813, 50.863781}, + {20.877916, 64.099419}, + {12.229844, 51.799164}, + {14.220581, 52.69213}, + {2.151655, 50.979832}, + {11.254814, 51.59524}, + {9.6274566650391, 47.464370727539}, + {13.287025, 49.705469}, + {15.568513, 49.37774}, + {10.387104, 53.661435}, + {8.183009, 50.029671}, + {9.534521, 49.342145}, + {2.174332, 41.373001}, + {0.473731, 49.476808}, + {-0.905015, 51.422995}, + {13.303756713867, 52.416458129883}, + {9.5917510986328, 47.285842895508}, + {11.76641, 44.371514}, + {10.362168, 51.923997}, + {9.977132, 53.098695}, + {2.513154, 49.240145}, + {7.093678, 50.027701}, + {7.45491, 51.544418}, + {12.321444, 53.772426}, + {8.81643, 52.992262}, + {12.081083, 54.097602}, + {7.499067, 53.419001}, + {12.373886, 55.662155}, + {11.30507, 51.590659}, + {7.576103, 51.874695}, + {10.789937, 52.746376}, + {12.228712, 54.234072}, + {18.049850463867, 59.348831176758}, + {10.400625, 54.163012}, + {8.338396, 52.672274}, + {8.648181, 53.031075}, + {12.137538, 48.554371}, + {13.830237, 51.17775}, + {13.952407, 48.134537}, + {28.197456, -25.783821}, + {12.139213, 52.105428}, + {11.905746459961, 50.92643737793}, + {11.822285, 45.311465}, + {13.967972, 50.765762}, + {13.152356, 43.74962}, + {19.721978, 50.075337}, + {9.73011, 52.375946}, + {12.184861, 52.244475}, + {9.556046, 56.144257}, + {8.9119720458984, 52.836685180664}, + {7.8462982177734, 43.862228393555}, + {9.446004, 51.265517}, + {10.719643, 50.425751}, + {9.636041, 47.348328}, + {10.878765, 47.259175}, + {7.397219, 49.217525}, + {18.523214, 50.352451}, + {14.23210144043, 51.429061889648}, + {-1.34562, 51.640671}, + {8.948282, 45.854105}, + {23.661574, 61.456382}, + {7.667022, 50.438083}, + {10.170593, 49.209137}, + {12.229187, 42.696174}, + {6.9042205810547, 50.837173461914}, + {8.3626556396484, 47.094955444336}, + {8.501818, 45.761261}, + {7.324932, 45.739258}, + {17.912521362305, 44.209671020508}, + {10.42121887207, 51.928939819336}, + {8.1717681884766, 49.46662902832}, + {9.001097, 45.152022}, + {-2.12059, 46.808853}, + {7.271302, 49.323601}, + {9.494935, 50.202027}, + {11.082454, 50.980763}, + {13.478164672852, 54.383010864258}, + {7.600479, 47.590027}, + {10.204103, 50.864646}, + {9.3129730224609, 45.948257446289}, + {9.7716522216797, 50.390853881836}, + {11.842862, 52.270752}, + {5.710469, 50.481406}, + {105.85807800293, 20.983200073242}, + {4.189911, 50.517883}, + {-5.174539, 41.492124}, + {-2.707218, 52.884636}, + {12.054061889648, 54.135818481445}, + {9.151152, 49.011841}, + {5.764662, 51.934982}, + {14.533654, 50.120544}, + {14.642716, 53.369522}, + {16.693349, 53.191893}, + {9.9364471435547, 53.469772338867}, + {24.57179, 58.325043}, + {21.033468, 52.296848}, + {7.7858734130859, 47.56462097168}, + {13.095713, 52.162258}, + {13.851699829102, 50.92643737793}, + {9.7290802001953, 47.472610473633}, + {5.957103, 46.118268}, + {8.2898712158203, 48.888473510742}, + {-0.20393371582031, 51.507339477539}, + {14.208715, 52.728748}, + {13.680731, 50.845414}, + {8.935801, 45.033796}, + {14.97917175293, 51.60758972168}, + {-6.013689, 37.414047}, + {6.731543, 50.105925}, + {6.643296, 51.207962}, + {-6.410495, 54.458743}, + {2.809644, 48.975117}, + {13.72987, 53.199261}, + {-2.841206, 53.737443}, + {9.720073, 47.491513}, + {11.297729, 55.411402}, + {9.704361, 52.429506}, + {9.465918, 48.759207}, + {9.948807, 53.947077}, + {5.710831, 50.888672}, + {9.547089, 49.746103}, + {11.167146, 54.816056}, + {11.856294, 47.424552}, + {7.1775054931641, 51.77375793457}, + {5.847818, 50.599251}, + {10.432162, 63.381265}, + {7.342775, 51.224098}, + {2.504337, 48.771887}, + {-4.4927215576172, 55.447311401367}, + {11.401064, 46.493997}, + {26.675324, -26.924527}, + {9.7524261474609, 47.457504272461}, + {14.103012084961, 50.105209350586}, + {8.516922, 47.791214}, + {2.91411, 42.365381}, + {11.585286, 52.06645}, + {5.8193206787109, 49.55451965332}, + {-2.542806, 37.741723}, + {19.021458, 50.20958}, + {10.235526, 56.571061}, + {7.012871, 51.194149}, + {6.820512, 52.989811}, + {4.720731, 51.416026}, + {5.661392, 50.888443}, + {2.49742, 48.976165}, + {6.235927, 46.202691}, + {28.670185, 54.838476}, + {5.786025, 51.810838}, + {5.851299, 51.841638}, + {10.467910766602, 45.283584594727}, + {37.252578735352, 55.649185180664}, + {8.452263, 46.970329}, + {15.188684, 52.706253}, + {49.404830932617, 55.737075805664}, + {57.176726, 54.865506}, + {11.89372, 48.713069}, + {12.536087036133, 52.438430786133}, + {-3.035201, 52.868271}, + {8.815154, 45.536957}, + {-6.252342, 53.345375}, + {-6.7101, 53.668608}, + {-3.0411529541016, 50.905838012695}, + {7.993241, 53.125763}, + {10.856764, 50.629175}, + {13.36355, 48.834976}, + {3.294526, 50.83539}, + {9.75563, 52.391281}, + {9.80305, 51.443583}, + {13.547169, 55.836473}, + {8.2514190673828, 53.192367553711}, + {10.908387, 45.681153}, + {6.816068, 49.888124}, + {10.148386, 54.433699}, + {8.6510467529297, 50.116195678711}, + {11.316645, 46.427999}, + {10.38688659668, 53.287124633789}, + {9.4503021240234, 51.834182739258}, + {17.80351, 59.427735}, + {11.30973815918, 51.533432006836}, + {10.279769897461, 63.151473999023}, + {8.206102, 53.121643}, + {8.166167, 49.888999}, + {12.406997680664, 55.67253112793}, + {6.421279, 47.385483}, + {11.059797, 44.85878}, + {14.51774597168, 52.351913452148}, + {7.412109, 51.298599}, + {9.054796, 49.956207}, + {9.0657806396484, 45.732650756836}, + {10.274965, 45.494386}, + {6.1090850830078, 50.780868530273}, + {-1.66737, 54.40979}, + {12.299421, 53.411869}, + {28.170491, -25.99597}, + {11.540099, 3.875309}, + {6.954346, 50.940857}, + {10.875531, 50.421969}, + {7.6114654541016, 47.596206665039}, + {7.8971099853516, 48.475112915039}, + {1.034675, 48.480799}, + {1.376386, 43.610138}, + {6.485141, 51.444855}, + {4.769448, 51.588368}, + {7.824326, 51.196976}, + {6.950323, 51.048268}, + {12.752037, 52.926979}, + {13.563649, 52.566147}, + {-0.673408, 52.914107}, + {11.848736, 52.10816}, + {10.187485, 56.189163}, + {13.459625, 52.531816}, + {10.966417, 52.991868}, + {13.176040649414, 52.533187866211}, + {9.364076, 53.159607}, + {22.261301, 46.007328}, + {25.931747, 43.812741}, + {27.389604, 41.449361}, + {9.04578, 52.664654}, + {9.436569, 55.759735}, + {8.198995, 47.739104}, + {10.150291, 51.702031}, + {30.276257, 40.707116}, + {14.992904663086, 51.151657104492}, + {4.6794891357422, 52.022323608398}, + {15.228012, 47.226381}, + {17.350153, 52.24274}, + {1.627785, 49.694019}, + {2.314373, 48.887705}, + {9.64119, 56.133958}, + {14.909822, 51.142044}, + {12.953567504883, 47.826919555664}, + {25.800704956055, 42.652359008789}, + {11.416855, 48.775275}, + {1.187282, 49.512523}, + {9.254798, 45.446124}, + {13.090295, 54.297746}, + {13.444657, 52.565598}, + {5.483387, 50.636884}, + {4.857922, 52.478152}, + {13.621674, 52.360153}, + {18.095047, 62.921997}, + {8.640065, 49.279179}, + {14.341509, 51.535263}, + {7.6883697509766, 49.43229675293}, + {7.065582, 50.872192}, + {8.282608, 50.720711}, + {5.2796173095703, 45.842514038086}, + {9.7826385498047, 49.491348266602}, + {28.161926, -25.89736}, + {26.716690063477, -28.776626586914}, + {5.546525, 50.646875}, + {11.809434, 47.165504}, + {12.24522, 54.172624}, + {4.531231, 49.964266}, + {4.295476, 50.858549}, + {13.692757, 51.175621}, + {4.32312, 50.869964}, + {24.912202, 49.974559}, + {32.837209, 50.076107}, + {11.092275, 49.460839}, + {7.330215, 47.739853}, + {1.609997, 50.712394}, + {36.26976, 49.939957}, + {20.645565, 46.215272}, + {11.312484741211, 49.352645874023}, + {11.685265, 52.186322}, + {-1.623126, 49.638528}, + {14.925668, 48.140731}, + {7.570672, 47.630895}, + {-3.0054473876953, 53.232192993164}, + {6.322403, 50.621109}, + {36.16539, 49.957962}, + {9.116592, 45.360489}, + {12.144806, 48.019178}, + {7.552414, 47.735825}, + {8.248252, 50.741407}, + {10.461732, 52.68425}, + {17.906649, 47.108637}, + {-0.534235, 38.634812}, + {3.6234283447266, 47.815933227539}, + {11.305385, 3.789274}, + {9.764064, 4.042599}, + {22.362337, 49.986432}, + {6.074755, 43.140793}, + {4.050251, 49.227312}, + {11.489264, 48.030292}, + {-0.303147, 46.82649}, + {7.6828765869141, 45.154495239258}, + {10.045583, 56.44493}, + {12.049162, 47.836875}, + {23.62215, 65.837555}, + {24.140532, 65.840258}, + {7.745361, 49.44397}, + {8.501883, 47.383751}, + {8.1085968017578, 53.248672485352}, + {12.685357, 52.932136}, + {6.477815, 50.784302}, + {4.681705, 43.989807}, + {16.189041137695, 48.186721801758}, + {2.249397, 48.946863}, + {11.626968383789, 52.16926574707}, + {8.6455535888672, 50.112075805664}, + {24.437515, 60.276023}, + {5.483552, 50.996476}, + {13.396454, 52.525635}, + {7.285144, 50.684053}, + {8.710098, 53.263092}, + {4.903911, 45.650426}, + {7.113655, 43.56845}, + {5.084345, 47.323597}, + {5.806361, 47.28327}, + {13.040543, 52.829361}, + {14.175053, 52.75934}, + {13.336715698242, 48.370742797852}, + {5.208026, 50.562083}, + {11.911315, 42.998819}, + {15.60127, 48.182948}, + {7.1527862548828, 49.842910766602}, + {9.697037, 4.072861}, + {15.590204, 52.27438}, + {21.127486, 52.23274}, + {11.571787, 3.935291}, + {2.8035736083984, 50.66276550293}, + {11.459427, 55.783081}, + {13.585556, 52.200577}, + {9.433138, 53.293306}, + {8.192844, 52.88338}, + {3.360312, 43.360786}, + {4.7852325439453, 52.470016479492}, + {18.924516, 47.440652}, + {12.499611, 41.674475}, + {5.412083, 49.884871}, + {8.972394, 45.503319}, + {7.333658, 51.874602}, + {14.78141, 40.796587}, + {8.578606, 52.188835}, + {11.549675, 48.729569}, + {16.363285, 56.358031}, + {13.122575, 52.355804}, + {7.1308135986328, 51.779251098633}, + {28.864517211914, 47.035903930664}, + {11.520538, 3.863983}, + {14.157627, 52.741895}, + {7.728195, 51.304475}, + {13.984216, 50.543636}, + {13.278322, 52.833264}, + {11.603622436523, 48.782730102539}, + {0.19294738769531, 52.052536010742}, + {4.6327972412109, 51.733932495117}, + {11.43196105957, 49.29084777832}, + {-1.607692, 54.965282}, + {19.351684, 51.053991}, + {4.70701, 51.81621}, + {13.546829223633, 52.544174194336}, + {0.503471, 51.518088}, + {7.499505, 50.519475}, + {12.993751, 51.206249}, + {14.43917, 50.104209}, + {8.121495, 48.734529}, + {5.685643, 50.714581}, + {9.5656585693359, 47.25700378418}, + {-5.690664, 42.088216}, + {11.892151, 43.441315}, + {9.729382, 4.017362}, + {12.552721, 41.677327}, + {9.375458, 54.991379}, + {7.574211, 51.005004}, + {7.8984832763672, 52.023696899414}, + {10.830459594727, 52.438430786133}, + {12.866076, 50.862956}, + {9.6823883056641, 53.679885864258}, + {14.210743, 41.034256}, + {3.380854, 49.041279}, + {3.85266, 50.461526}, + {7.72269, 50.875791}, + {7.625752, 50.95723}, + {13.422089, 54.42421}, + {10.789185, 44.847319}, + {12.102676, 51.952286}, + {5.658657, 58.87841}, + {10.648422, 59.908524}, + {5.901297, 51.017745}, + {-6.0761260986328, 37.508010864258}, + {13.455803, 53.010706}, + {8.822475, 45.757486}, + {9.80919, 53.392411}, + {8.2472991943359, 52.030563354492}, + {7.5537872314453, 47.589340209961}, + {4.742653, 49.78386}, + {12.51704, 54.301714}, + {4.39426, 50.405012}, + {9.3679046630859, 53.008346557617}, + {13.543522, 54.565613}, + {74.549789, 34.16699}, + {3.122709, 50.682333}, + {4.871418, 45.519468}, + {-2.235618, 53.471336}, + {8.075084, 49.206}, + {100.519409, 13.734775}, + {11.573551, 48.137401}, + {11.229058, 42.45289}, + {103.326027, 3.806834}, + {21.010588, 52.170161}, + {38.01025, 48.566137}, + {8.530554, 49.417981}, + {13.543691, 51.052585}, + {-113.985613, 50.902891}, + {2.337859, 48.821953}, + {-118.334106, 34.100858}, + {37.451706, 55.714789}, + {-1.282203, 51.669964}, + {-118.198048, 34.020274}, + {4.146538, 51.103249}, + {-8.796569, 37.094726}, + {-1.625937, 41.532988}, + {31.095525, 50.919179}, + {19.420486, 51.7733}, + {19.731411, 41.35807}, + {10.592880249023, 52.255783081055}, + {-77.156374, 38.964929}, + {10.69107, 59.91909}, + {-0.872883, 48.089678}, + {3.908209, 51.074042}, + {-3.284598, 48.240614}, + {-118.275155, 34.157034}, + {11.596291, 48.173175}, + {-4.062007, 40.911791}, + {138.587543, -34.875086}, + {15.575946, 56.177829}, + {30.938381, 50.713787}, + {-0.169246, 51.667017}, + {11.370033, 47.97231}, + {-2.179146, 53.425894}, + {-115.008468, 36.028061}, + {-8.567561, 41.238438}, + {174.871006, -41.277271}, + {25.014045, 60.278693}, + {18.654547, 54.34719}, + {-117.990712, 34.02201}, + {9.099041, 48.724664}, + {22.7196, 51.184317}, + {-3.83981, 40.476186}, + {19.870834, 50.096466}, + {3.950729, 51.072922}, + {11.182798, 47.488494}, + {18.565423, 54.392662}, + {5.426042, 50.327855}, + {11.664766, 48.059555}, + {8.289131, 40.588348}, + {49.585375, 58.600151}, + {13.98761, 46.607666}, + {100.184921, 15.551836}, + {21.632518, 51.849776}, + {10.025057, 53.405121}, + {14.407654, 50.07225}, + {21.239085, 52.218046}, + {138.603851, -34.923733}, + {37.345964, 55.796471}, + {18.599166870117, 54.424209594727}, + {14.162521, 41.316147}, + {2.351761, 48.840752}, + {-2.887024, 47.990161}, + {24.916031, 60.207687}, + {9.364992, 41.17128}, + {14.433664, 50.095872}, + {37.457373, 55.73493}, + {-9.232264, 38.741175}, + {12.545295, 52.314646}, + {8.514954, 52.031388}, + {1.171759, 47.297247}, + {1.523544, 44.196358}, + {1.317673, 43.608219}, + {4.901962, 52.363423}, + {28.849232, 61.219426}, + {37.996665, 48.44363}, + {0.349388, 42.889366}, + {1.163721, 41.659853}, + {28.291642, 61.065516}, + {16.410599, 48.279419}, + {1.907451, 43.871416}, + {19.00597, 49.535388}, + {0.155858, 43.463212}, + {13.364487, 52.600396}, + {101.521912, 3.661194}, + {138.658619, -34.929142}, + {35.253067, 32.802429}, + {-118.335217, 34.035061}, + {12.782068, 52.842707}, + {10.030305, 53.55235}, + {37.387975, 55.849431}, + {-1.284953, 52.018977}, + {-8.582604, 41.165694}, + {2.307112, 48.690238}, + {11.818542, 53.561783}, + {11.34183, 47.253679}, + {8.089217, 49.235968}, + {49.633196, 58.578287}, + {-118.247772, 34.222824}, + {-2.245552, 53.481179}, + {-41.857046, -22.415765}, + {10.263977, 53.957977}, + {2.13829, 48.690645}, + {100.60111999512, 13.918991088867}, + {24.745924, 60.186414}, + {25.647729, 60.945116}, + {15.988316, 47.133651}, + {23.536148, 52.906494}, + {9.2937469482422, 40.058212280273}, + {5.652981, 50.67564}, + {20.744435, 41.163154}, + {100.337114, 5.412557}, + {145.391529, -38.067287}, + {1.081929, 49.330446}, + {101.69937, 3.175799}, + {-118.536084, 34.170552}, + {100.720269, 14.550949}, + {10.036697387695, 53.660659790039}, + {2.6909637451172, 48.742904663086}, + {11.094504, 47.507318}, + {11.170578, 45.419083}, + {9.186856, 48.781658}, + {5.21236, 50.280764}, + {23.311257, 51.171519}, + {37.647779, 55.769051}, + {20.975071, 52.230721}, + {2.351785, 43.212756}, + {9.55619, 39.948976}, + {-8.273523, 37.289159}, + {-81.15958, 41.24433}, + {16.916676, 53.532763}, + {4.335744, 50.835906}, + {23.388973, 52.755352}, + {13.947548, 46.611775}, + {37.476769, 55.865822}, + {9.04063, 48.790754}, + {9.703965, 47.193185}, + {2.156472, 41.429102}, + {-8.246058, 37.89932}, + {-3.568855, 48.241699}, + {-117.42754, 34.189797}, + {3.14209, 50.635986}, + {4.199931, 51.149555}, + {28.7002, 61.172645}, + {-0.407182, 51.502714}, + {0.228213, 43.146898}, + {26.185303, 60.6176}, + {2.315733, 48.804138}, + {1.699247, 45.21963}, + {77.2332, 28.623642}, + {13.529346, 52.486622}, + {2.373858, 48.894591}, + {0.348938, 42.928411}, + {12.993404, 48.422659}, + {2.2817230224609, 48.799209594727}, + {-77.053103, 38.907983}, + {-77.118874, 39.056396}, + {-118.233147, 34.118729}, + {10.404526, 52.131772}, + {13.894364, 50.592684}, + {9.948807, 49.375305}, + {3.993179, 43.654635}, + {19.468853, 51.768069}, + {4.320704, 52.087252}, + {-58.45319, -34.561956}, + {16.99173, 52.424698}, + {16.55376, 49.231001}, + {-118.49784851074, 34.012985229492}, + {25.657539, 50.780182}, + {-2.271423, 53.467026}, + {6.150564, 46.382391}, + {2.428833, 48.868868}, + {-118.405838, 34.105911}, + {-118.548977, 34.038444}, + {16.425247, 43.549119}, + {14.173049926758, 51.825942993164}, + {19.355936, 52.23527}, + {13.088805, 51.52936}, + {8.8886260986328, 45.791702270508}, + {12.108307, 51.271134}, + {9.184252, 48.781925}, + {-2.8516387939453, 52.438430786133}, + {-0.509903, 47.470825}, + {2.4204254150391, 48.942031860352}, + {2.1691131591797, 41.416397094727}, + {34.793104, 32.072674}, + {9.8169708251953, 51.407089233398}, + {0.154151, 51.766548}, + {4.158118, 47.487735}, + {13.521513, 52.523694}, + {24.914623, 60.751625}, + {-77.196311, 38.720675}, + {13.780538, 45.559242}, + {6.141787, 46.20369}, + {2.14971, 41.414049}, + {18.63899230957, 54.363784790039}, + {2.170744, 48.765693}, + {13.351626, 52.483651}, + {16.421127, 48.171444}, + {2.051413, 47.21888}, + {101.882984, 3.406792}, + {10.455551147461, 45.457992553711}, + {23.089041, 51.15537}, + {9.5999908447266, 52.423324584961}, + {-115.159836, 36.13884}, + {-9.148178, 38.746033}, + {8.1937408447266, 49.200210571289}, + {-14.080505, 28.235627}, + {7.786732, 48.086373}, + {77.297138, 28.540684}, + {49.645156860352, 58.626480102539}, + {8.698424, 50.354118}, + {-0.612443, 47.289414}, + {-9.1262054443359, 38.73161315918}, + {0.54725646972656, 41.615524291992}, + {80.584717, 26.111069}, + {-1.728393, 41.43106}, + {-122.883143, 49.07133}, + {4.828626, 45.445633}, + {16.136856, 49.303894}, + {4.333832, 52.088928}, + {0.71067810058594, 47.40119934082}, + {-117.748032, 33.655243}, + {16.367683, 48.249664}, + {-122.1851348877, 47.616806030273}, + {-117.302171, 47.667161}, + {10.144724, 44.942764}, + {37.428359985352, 55.761795043945}, + {102.253189, 2.201638}, + {11.53123, 48.225469}, + {14.973678588867, 50.736923217773}, + {1.28746, 45.875473}, + {-0.442886, 51.49498}, + {5.868211, 50.632005}, + {8.865389, 53.405786}, + {5.4977, 50.621228}, + {8.1099700927734, 49.220809936523}, + {1.4385223388672, 43.572463989258}, + {2.265929, 45.861912}, + {-3.685684, 40.419846}, + {28.051271, -26.108751}, + {77.303695, 28.541794}, + {2.332077, 48.832932}, + {13.549073, 45.743842}, + {6.468201, 48.201828}, + {11.451187, 48.146896}, + {13.626124, 47.083664}, + {13.368301391602, 52.612838745117}, + {-7.1239471435547, 37.32536315918}, + {4.511338, 50.761795}, + {4.6959686279297, 50.846786499023}, + {-8.2253265380859, 41.406784057617}, + {4.778366, 48.67012}, + {-2.725093, 52.745945}, + {13.89358, 48.007513}, + {4.547034, 50.739838}, + {25.53622, 60.308477}, + {2.444458, 48.729944}, + {-117.349354, 33.701988}, + {-117.820816, 34.104996}, + {26.535415649414, 60.823745727539}, + {11.43196, 48.198395}, + {4.869109, 45.72177}, + {10.363541, 59.431915}, + {24.463119506836, 61.029739379883}, + {16.201400756836, 54.198989868164}, + {4.360199, 50.857086}, + {9.070062, 45.810121}, + {-9.3143463134766, 38.683547973633}, + {101.699295, 3.192215}, + {13.391828, 52.488519}, + {24.670029, 60.154038}, + {-4.5915985107422, 48.28010559082}, + {9.1701507568359, 45.496444702148}, + {14.402389526367, 50.062637329102}, + {-0.174866, 51.160812}, + {9.2841339111328, 48.696212768555}, + {4.332341, 52.0904}, + {7.293205, 51.601067}, + {12.305259, 52.259605}, + {22.724533081055, 51.181869506836}, + {5.400296, 50.488219}, + {19.483515, 51.71552}, + {12.044227, 55.677297}, + {6.501267, 46.449967}, + {4.8882293701172, 52.211837768555}, + {-75.615243, 45.388233}, + {13.274917, 48.484728}, + {28.035049, -26.143342}, + {4.433607, 51.131048}, + {9.538424, 49.807324}, + {18.790054321289, 49.741287231445}, + {14.344756, 49.038817}, + {10.978809, 50.897957}, + {2.210794, 49.01391}, + {7.635431, 50.270645}, + {30.415951, 60.010437}, + {18.02375793457, 53.109970092773}, + {-117.815666, 34.120102}, + {12.001849, 50.911865}, + {7.97865, 52.42073}, + {8.919415, 48.823344}, + {3.69339, 50.989053}, + {49.592447, 58.533622}, + {-7.520488, 39.83986}, + {22.263793945312, 60.449523925781}, + {-2.075979, 43.138379}, + {12.40699, 52.802813}, + {11.075664, 53.993607}, + {8.943166, 49.225127}, + {3.775864, 51.08574}, + {29.148119, 60.589047}, + {10.225413, 43.947921}, + {10.087942, 53.588816}, + {12.191647, 49.882952}, + {13.507985, 52.512393}, + {2.376867, 48.865493}, + {5.856353, 50.557172}, + {10.002725, 53.577347}, + {-0.355121, 51.509338}, + {49.592128, 58.596454}, + {-0.618079, 47.257789}, + {-6.144673, 36.47358}, + {7.687456, 46.599532}, + {-6.062031, 36.788957}, + {-1.704942, 55.236511}, + {8.7224578857422, 47.631912231445}, + {-15.575472, 27.898549}, + {2.703698, 49.461635}, + {29.35055, 60.447574}, + {6.785431, 49.134979}, + {9.402237, 48.816147}, + {-15.409878, 27.992654}, + {-0.17561, 51.516438}, + {-3.735762, 56.276034}, + {-3.9282989501953, 37.181167602539}, + {4.952729, 45.932479}, + {9.261646, 48.690892}, + {7.7680206298828, 47.556381225586}, + {-2.736283, 52.2892}, + {-2.858849, 53.207302}, + {2.351927, 48.864919}, + {18.020657, 53.109629}, + {3.78574, 51.042693}, + {10.338478, 43.776741}, + {7.598419, 47.189026}, + {22.972641, 40.568619}, + {-7.771753, 37.638508}, + {9.304047, 48.814659}, + {11.931381, 47.8228}, + {12.006848, 45.817906}, + {2.383072, 48.831928}, + {9.213638, 48.693466}, + {9.964371, 53.599777}, + {30.517175, 59.945821}, + {10.052108, 53.562699}, + {-2.199669, 53.440933}, + {7.562855, 49.583532}, + {10.70759, 59.90829}, + {8.117886, 48.741128}, + {-0.127226, 51.190698}, + {9.517645, 49.44434}, + {5.828934, 50.635865}, + {-8.939438, 39.55101}, + {-94.148369, 36.123734}, + {2.976733, 50.434674}, + {-2.239973, 53.536515}, + {14.2733, 53.896317}, + {2.370529, 48.752975}, + {3.146896, 50.752945}, + {38.400194, 55.543593}, + {13.385442, 52.464311}, + {-8.611679, 41.15118}, + {-14.262247, 28.171478}, + {9.060869, 45.409626}, + {3.098145, 50.127869}, + {3.720698, 51.060692}, + {-8.138715, 40.706333}, + {12.897262573242, 48.841781616211}, + {13.4262, 52.515228}, + {5.120401, 52.090073}, + {18.292465, 54.000778}, + {11.300125, 50.280991}, + {6.2464141845703, 51.865768432617}, + {5.0722503662109, 52.121200561523}, + {9.1454315185547, 48.693466186523}, + {10.43438, 48.413087}, + {11.440412, 47.260596}, + {-8.655061, 41.204699}, + {18.890305, 51.91452}, + {12.625605, 53.626907}, + {3.943405, 50.480118}, + {-5.8206939697266, 37.343215942383}, + {24.919556, 60.179031}, + {6.932081, 50.653741}, + {7.220592, 51.146422}, + {14.850103, 51.333863}, + {4.755153, 51.298178}, + {14.418294, 46.81157}, + {2.1581268310547, 41.410903930664}, + {9.938684, 53.648955}, + {8.190422, 50.073166}, + {-0.138885, 51.151791}, + {8.56336, 49.663831}, + {14.008875, 55.962325}, + {-77.11647, 39.056396}, + {23.157172, 41.889179}, + {8.621108, 49.682579}, + {10.903535, 48.347397}, + {10.042523, 53.434628}, + {8.856418, 51.948207}, + {9.9735260009766, 56.469039916992}, + {2.688934, 39.588786}, + {4.408264, 51.212082}, + {-46.649935, -23.582512}, + {8.62825, 50.115921}, + {26.186111, 43.14952}, + {-74.005614, 40.727251}, + {-80.33368, 43.404802}, + {9.954758, 53.570023}, + {2.256489, 48.819981}, + {-0.209427, 51.498825}, + {2.352562, 48.836769}, + {-1.246067, 51.750917}, + {24.155519, 56.926124}, + {22.550834, 56.689608}, + {2.722866, 39.62214}, + {2.695088, 49.379198}, + {20.743594, 51.347671}, + {4.823314, 45.906188}, + {9.998126, 53.603365}, + {-2.420597, 53.568649}, + {8.558407, 49.537585}, + {-81.841404, 38.442618}, + {23.142903, 42.606044}, + {3.791977, 50.993088}, + {5.304112, 51.858506}, + {8.587589, 49.746153}, + {19.108862, 50.367708}, + {-0.19432067871094, 51.489486694336}, + {-76.541977, 38.971939}, + {16.866226, 48.064437}, + {149.0728, -35.243454}, + {-73.963852, 40.671158}, + {8.789107, 49.855362}, + {-13.509445, 28.994599}, + {-15.670465, 28.119982}, + {-81.865511, 39.968654}, + {-1.225508, 51.7625}, + {-1.899261, 53.717651}, + {4.369583, 50.847244}, + {8.195702, 49.920796}, + {4.416, 52.114334}, + {14.371005, 46.639811}, + {-76.698586, 39.259199}, + {144.355949, -38.068233}, + {15.382295, 48.409446}, + {18.032912, 59.195665}, + {-73.944397, 40.814209}, + {7.7323150634766, 44.978713989258}, + {1.526717, 47.741089}, + {12.086472, 54.179214}, + {4.917412, 45.815735}, + {14.291153, 48.30043}, + {18.285679, 48.17371}, + {0.701705, 52.260635}, + {-76.43732, 39.389851}, + {16.584598, 49.194404}, + {13.376541137695, 52.529067993164}, + {-69.8789, 18.507418}, + {3.334499, 50.834009}, + {-74.004593, 40.744629}, + {18.05534362793, 59.351577758789}, + {-0.080132, 51.552658}, + {3.805349, 51.043086}, + {7.75274, 48.18792}, + {9.3006134033203, 51.970138549805}, + {9.99108, 53.536287}, + {2.405372, 51.016071}, + {151.014816, -33.940292}, + {8.639511, 49.633621}, + {150.814133, -34.049835}, + {5.270644, 45.584027}, + {2.470693, 48.896524}, + {-81.121337, 42.948258}, + {-73.54866027832, 40.725631713867}, + {8.8144683837891, 47.079849243164}, + {-3.710976, 40.412521}, + {23.727108, 56.896639}, + {-74.168854, 40.729828}, + {10.444958, 42.95865}, + {14.539717, -22.957078}, + {27.569046, 42.443619}, + {8.638687, 49.390775}, + {6.112518, 49.047775}, + {-0.421828, 46.300736}, + {-98.203353881836, 19.086685180664}, + {3.666456, 51.039049}, + {9.70289, 59.270516}, + {8.866526, 48.973492}, + {14.917967, 50.105807}, + {7.6403045654297, 47.57698059082}, + {8.3733, 49.797266}, + {17.210861, 49.566971}, + {5.7767486572266, 44.536514282227}, + {-84.166948, 33.933121}, + {17.963384, 59.460073}, + {17.022222, 48.349247}, + {4.913118, 45.714883}, + {17.927628, 59.420929}, + {22.183951, 52.438593}, + {11.247633, 51.455875}, + {6.897836, 49.413358}, + {16.322933, 48.340098}, + {8.8886260986328, 53.108596801758}, + {16.401901245117, 41.14860534668}, + {11.579979, 44.813687}, + {17.031322, 52.398306}, + {13.252944946289, 52.747421264648}, + {15.235657, 51.135539}, + {8.603451, 53.346383}, + {17.698905, 50.752037}, + {99.839048, 19.916656}, + {6.871667, 50.796276}, + {7.270279, 51.311753}, + {-5.650346, 43.490755}, + {11.39762878418, 47.25700378418}, + {-64.124308, -31.440414}, + {-9.034071, 38.755362}, + {8.8927459716797, 49.918441772461}, + {9.372025, 52.78656}, + {1.919724, 44.620119}, + {10.903716, 45.476923}, + {11.228028, 52.914633}, + {5.3510284423828, 60.347213745117}, + {14.452146, 49.005521}, + {-70.62561, -33.456002}, + {9.96035, 52.389686}, + {4.867973, 50.456772}, + {18.004073, 59.325943}, + {11.754684448242, 52.785873413086}, + {-4.399189, 40.765181}, + {-0.918496, 43.6187}, + {6.349382, 50.14287}, + {-70.925774, -33.705659}, + {5.3675079345703, 43.334884643555}, + {12.185897827148, 51.60758972168}, + {13.991777, 52.281532}, + {15.67099, 43.808347}, + {30.084686, 59.731979}, + {16.090913, 48.556682}, + {-1.483825, 48.108156}, + {11.965497, 47.86477}, + {9.509125, 52.953186}, + {14.046351, 41.349252}, + {0.141152, 47.939058}, + {10.409958, 63.440689}, + {10.409546, 63.440552}, + {30.391617, 59.807968}, + {31.277424, 59.32618}, + {14.138989, 45.826624}, + {19.072458, 52.665218}, + {35.768721, 56.884466}, + {37.969443, 56.420977}, + {13.366928100586, 52.461776733398}, + {12.641444, 52.734692}, + {40.758590698242, 56.202621459961}, + {14.691006, 53.501041}, + {14.807029, 51.955042}, + {0.593947, 44.797462}, + {14.95719909668, 51.137924194336}, + {51.309665, 54.035846}, + {6.950499, 50.931775}, + {6.947805, 50.895958}, + {3.991975, 46.083453}, + {61.580228, 55.246325}, + {2.0592498779297, 41.489181518555}, + {100.568161, 13.683472}, + {2.322864, 49.36359}, + {2.300339, 48.811112}, + {100.580521, 13.754196}, + {8.346671, 54.695383}, + {18.592319, 50.381937}, + {14.449081420898, 51.59797668457}, + {8.063278, 50.591354}, + {5.568111, 50.830782}, + {11.603627, 52.039903}, + {8.665185, 50.103899}, + {12.01887, 54.045684}, + {12.864161, 49.193474}, + {7.851336, 44.956753}, + {-2.6126861572266, 42.841873168945}, + {-99.077225, 19.185867}, + {14.249954223633, 53.038558959961}, + {-1.34183, 51.280778}, + {17.785801, 51.491902}, + {8.864594, 45.637207}, + {9.736541, 51.816354}, + {13.616524, 52.367707}, + {8.522994, 48.057869}, + {25.718857, 50.118485}, + {8.6551666259766, 49.22492980957}, + {9.744085, 47.504687}, + {11.320723, 50.969467}, + {14.613876342773, 49.974746704102}, + {7.706669, 53.512051}, + {13.443489, 52.499199}, + {5.752945, 45.166626}, + {13.279512, 51.722328}, + {9.3102264404297, 45.581588745117}, + {5.4196929931641, 50.89485168457}, + {19.069303, 50.234307}, + {16.189041137695, 38.657455444336}, + {9.040375, 51.694107}, + {11.069412231445, 59.970932006836}, + {14.743608, 53.428128}, + {11.050035, 47.313878}, + {12.873916625977, 52.31071472168}, + {17.100301, 48.113885}, + {15.719231, 48.355984}, + {6.1241912841797, 49.59846496582}, + {13.16911, 48.017924}, + {12.758221, 47.855765}, + {72.866569, 19.2453}, + {4.42955, 51.264954}, + {10.892471, 59.957026}, + {8.205067, 53.212971}, + {7.31163, 51.533432}, + {14.510193, 50.040498}, + {19.719964, 45.396789}, + {4.474335, 51.147983}, + {12.975751, 55.614814}, + {10.34205, 49.702673}, + {14.43798, 50.072266}, + {10.320968, 54.070587}, + {6.924228, 49.422865}, + {12.932968139648, 50.889358520508}, + {11.305718, 47.262662}, + {23.818359, 40.024567}, + {5.331602, 46.062243}, + {0.249926, 51.473892}, + {70.049314, 53.027071}, + {6.999446, 51.044692}, + {73.120414, 49.788118}, + {11.011734008789, 49.636917114258}, + {26.277235, 40.933939}, + {9.527773, 50.378499}, + {74.196853637695, 44.829025268555}, + {13.414078, 52.520687}, + {5.704665, 50.762005}, + {4.625931, 52.478714}, + {7.9383087158203, 48.534164428711}, + {13.610687, 52.478256}, + {-5.4801177978516, 35.891647338867}, + {10.014072, 46.996767}, + {9.9254608154297, 52.272262573242}, + {7.086182, 46.102066}, + {11.41136, 53.639603}, + {13.182907104492, 52.533187866211}, + {10.827713012695, 56.36604309082}, + {2.868754, 49.227269}, + {13.35319519043, 52.448043823242}, + {8.6634063720703, 47.384719848633}, + {12.277565, 52.46521}, + {-3.006833, 39.168052}, + {2.18549, 49.877475}, + {121.341195, 23.413503}, + {10.778429, 44.712381}, + {-84.437866, 33.641129}, + {22.456741333008, 44.482955932617}, + {-122.645275, 45.567857}, + {13.54133605957, 52.375259399414}, + {13.321604, 52.45537}, + {11.339950561523, 44.531021118164}, + {11.614609, 48.133987}, + {12.07628, 52.468648}, + {14.520133, 53.446772}, + {10.144371, 47.988979}, + {9.684323, 52.345007}, + {10.52834, 43.833855}, + {8.126827, 49.809274}, + {11.596755981445, 53.07975769043}, + {7.6691436767578, 47.603073120117}, + {13.931899, 52.656255}, + {7.672233, 47.951889}, + {9.235148, 45.701981}, + {9.876704, 52.949983}, + {-1.6637420654297, 42.814407348633}, + {9.508304, 47.676522}, + {4.856216, 52.328478}, + {6.397388, 50.606773}, + {8.1072235107422, 53.184127807617}, + {21.319657, 46.169357}, + {9.765129, 4.060478}, + {9.359954, 52.344769}, + {4.229111, 50.88783}, + {13.520736694336, 52.294235229492}, + {12.138537, 48.051072}, + {17.54088, 49.425512}, + {7.399378, 47.785506}, + {8.674931, 44.548798}, + {7.958907, 53.274765}, + {13.358686, 49.679494}, + {-100.389196, 25.742611}, + {4.51845, 51.094437}, + {9.653549, 52.7948}, + {-17.31308, 14.730606}, + {13.044751, 41.475177}, + {9.869745, 54.331071}, + {7.992691, 43.873215}, + {13.859038, 43.006669}, + {24.382335, 40.937705}, + {11.230785, 50.213953}, + {8.503196, 59.463273}, + {16.067036, 49.846426}, + {22.982276, 53.957441}, + {25.865502, 56.490828}, + {7.496109, 48.424988}, + {12.441332, 51.696396}, + {1.185013, 41.096147}, + {1.47926, 41.187977}, + {8.250045, 49.365692}, + {5.937874, 51.121903}, + {10.005111694336, 57.293014526367}, + {17.338843, 59.209452}, + {12.593889, 52.329369}, + {6.4400482177734, 51.198348999023}, + {8.9023590087891, 49.251022338867}, + {19.096754, 47.629461}, + {19.194423, 50.316087}, + {114.841324, -3.458633}, + {6.881561, 52.649918}, + {6.29618, 51.436883}, + {25.594711, 49.546463}, + {8.1195831298828, 53.561782836914}, + {13.767234, 50.546724}, + {18.927383422852, 49.09309387207}, + {11.754684448242, 54.141311645508}, + {20.181198120117, 49.064254760742}, + {10.616368, 44.711017}, + {19.623287, 47.231345}, + {6.966019, 53.085938}, + {9.6329498291016, 47.460250854492}, + {-16.260682, 28.452072}, + {6.816577, 50.889546}, + {12.203686, 51.429049}, + {11.279374, 49.113094}, + {112.76710510254, -7.2901153564453}, + {17.601888, 48.352893}, + {6.525983, 50.875872}, + {0.278721, 51.534062}, + {12.227096, 52.650375}, + {112.735561, -7.242175}, + {6.710432, 51.199426}, + {10.618353, 47.688259}, + {8.429249, 47.382473}, + {5.532852, 43.284348}, + {12.363739, 50.667572}, + {9.735693, 52.306355}, + {6.92894, 51.70372}, + {20.26496887207, 52.833938598633}, + {7.3093414306641, 52.475509643555}, + {11.046202, 50.76824}, + {6.59888, 46.519024}, + {9.771156, 52.340145}, + {6.738763, 51.238702}, + {18.100206, 49.727707}, + {31.221906, 51.465319}, + {30.701523, 36.902847}, + {16.653213500977, 51.029434204102}, + {31.530753, 50.893479}, + {16.323967, 48.226547}, + {31.583239, 36.719938}, + {-58.51632, -34.470737}, + {30.697768, 36.890939}, + {12.303315, 53.703919}, + {15.42751, 47.08023}, + {6.345771, 51.255984}, + {10.01629, 48.574849}, + {-5.7987213134766, 35.746078491211}, + {-79.328653, 43.834797}, + {24.134903, 56.953812}, + {-2.259749, 43.281805}, + {9.6096038818359, 47.270736694336}, + {11.706619262695, 51.897354125977}, + {4.612563, 50.505341}, + {14.588458, 50.118612}, + {13.05179, 55.570915}, + {11.76786, 53.005165}, + {9.633712, 54.149202}, + {6.715618, 51.239568}, + {13.780288696289, 50.568008422852}, + {7.3615264892578, 51.164016723633}, + {13.418219, 52.548709}, + {7.132875, 52.830507}, + {99.265243, 16.908615}, + {11.45393371582, 49.220809936523}, + {24.191781, 43.252}, + {24.191208, 56.957245}, + {7.2406768798828, 49.760513305664}, + {9.7277069091797, 47.493209838867}, + {20.664027, 47.77779}, + {6.961486, 50.853585}, + {13.463684, 52.336845}, + {30.939834, 30.075073}, + {29.933762, 31.210373}, + {31.250613, 29.477006}, + {32.756882, 25.915604}, + {3.3968353271484, 6.5499114990234}, + {2.479477, 48.956223}, + {8.518391, 49.462556}, + {13.013682, 47.812483}, + {12.661056518555, 41.934127807617}, + {25.321426391602, 57.334213256836}, + {14.277674, 40.917892}, + {30.546226, 50.435371}, + {10.633942, 44.714493}, + {12.320058, 41.811905}, + {13.600095, 51.117494}, + {31.832788, 29.88448}, + {-16.698532, 28.069382}, + {9.334764, 49.995429}, + {-0.042572, 40.014954}, + {-1.123037, 39.527723}, + {7.298356, 52.658844}, + {6.14922, 51.768627}, + {4.578551, 50.703964}, + {6.719415, 51.56116}, + {7.505399, 52.502906}, + {38.016281, -2.511902}, + {-0.85145, 38.187793}, + {10.866165161133, 51.706466674805}, + {30.079249, -30.183721}, + {8.111639, 52.015628}, + {6.803186, 51.444914}, + {8.610756, 50.152817}, + {8.589439, 48.926794}, + {13.026824, 52.542802}, + {9.568995, 52.420727}, + {-3.036758, 43.312775}, + {7.6265716552734, 47.902450561523}, + {9.496594, 52.494754}, + {14.432601928711, 53.274765014648}, + {6.828898, 51.53636}, + {24.160667, 56.987099}, + {8.652662, 52.002349}, + {6.176148, 46.213241}, + {16.239793, 47.327183}, + {13.340835571289, 52.489242553711}, + {8.849719, 45.815507}, + {9.5189666748047, 51.26838684082}, + {-1.442477, 43.477103}, + {6.7682647705078, 51.113204956055}, + {12.536615, 49.500433}, + {13.541155, 52.417767}, + {20.550025, 52.585589}, + {9.519882, 51.257401}, + {17.593848, 59.079125}, + {12.015609741211, 54.108352661133}, + {6.788144, 51.475102}, + {12.518925, 55.651737}, + {9.219197, 45.490657}, + {23.375475, 45.341263}, + {22.998583, 60.836306}, + {13.378557, 52.504174}, + {7.490027, 44.599097}, + {13.699264526367, 51.07063293457}, + {8.609616, 49.745499}, + {10.167473, 53.514127}, + {4.458847, 51.550369}, + {0.241699, 51.448975}, + {28.383933, 47.225288}, + {-0.25062561035156, 51.26838684082}, + {36.855698, -1.31316}, + {21.216659545898, 45.73127746582}, + {-4.579863, 36.591027}, + {-99.191978, 20.050375}, + {-4.015408, 41.179313}, + {39.152527, 21.54213}, + {-115.09620666504, 36.19514465332}, + {28.865891, 47.056915}, + {0.205765, 51.430206}, + {9.6096038818359, 52.176132202148}, + {8.9298248291016, 45.022659301758}, + {12.476536, 47.929355}, + {28.805938, 47.017708}, + {6.640467, 51.825974}, + {8.594214, 53.518472}, + {-79.332088, 43.781828}, + {15.722122, 48.339157}, + {10.127858, 54.320363}, + {27.970269, -26.055573}, + {7.0072174072266, 50.683364868164}, + {-7.634983, 33.583145}, + {10.393067, 63.441926}, + {11.537081, 48.082436}, + {10.628586, 35.487213}, + {12.370949, 43.097992}, + {5.459519, 43.53027}, + {-0.550444, 38.36835}, + {8.072066, 48.171616}, + {14.396896362305, 46.018295288086}, + {21.211166381836, 45.73127746582}, + {11.09223, 49.275697}, + {8.636398, 49.407578}, + {15.828781, 48.410111}, + {8.2720184326172, 49.046401977539}, + {2.167053, 43.92128}, + {-117.914592, 33.642197}, + {-71.614567, 10.684766}, + {-84.605484, 9.786758}, + {-79.482334, 9.014916}, + {10.658338, 59.431164}, + {6.587775, 51.089271}, + {5.026655, 43.827026}, + {14.578170776367, 48.141403198242}, + {14.678617, 47.185004}, + {5.286653, 46.38598}, + {6.7201995849609, 51.20246887207}, + {-64.659348, 10.201492}, + {2.059767, 48.762475}, + {-84.126238, 10.020316}, + {7.951583, 48.553876}, + {-0.483865, 38.342697}, + {11.408615112305, 53.62907409668}, + {6.9509124755859, 51.555404663086}, + {12.536687, 51.435235}, + {-84.123001098633, 9.9488067626953}, + {10.915043, 50.67512}, + {-84.160309, 9.945831}, + {0.028564, 32.910469}, + {10.423641, 52.150954}, + {8.52898, 47.344584}, + {15.627365112305, 52.088241577148}, + {3.3089447021484, 45.838394165039}, + {-0.573541, 39.003361}, + {18.50853, -33.829814}, + {11.470413208008, 48.819808959961}, + {7.2832489013672, 49.737167358398}, + {-69.942222, 18.47138}, + {18.014189, 59.349718}, + {14.689952, 51.588029}, + {6.8987274169922, 51.353530883789}, + {-90.493011, 14.594307}, + {-90.510406, 14.604034}, + {3.252252, 45.809612}, + {8.403397, 49.082565}, + {-111.160995, 35.122514}, + {25.613999, 49.496442}, + {-84.055252, 9.932785}, + {-90.532150268555, 14.646835327148}, + {14.423905, 48.051682}, + {26.282979, -26.969761}, + {4.677626, 52.471863}, + {12.990646362305, 55.546188354492}, + {11.318665, 49.528427}, + {2.381058, 48.644028}, + {7.931786, 48.465328}, + {13.531418, 46.899033}, + {35.199509, 31.781387}, + {9.8403167724609, 48.628921508789}, + {3.254931, 43.337632}, + {77.182388305664, 28.561019897461}, + {7.521217, 51.484944}, + {18.026649, 59.294767}, + {7.1733856201172, 52.75016784668}, + {13.444385, 52.360722}, + {19.06671, 54.041317}, + {-84.471336, 33.925301}, + {11.54854, 48.606186}, + {30.110212, -29.66141}, + {-0.85212707519531, 37.740097045898}, + {-94.347153, 39.038544}, + {11.059882, 49.389313}, + {-84.492073, 33.939857}, + {6.910697, 50.806614}, + {103.88465881348, 1.3025665283203}, + {11.56379699707, 53.589248657227}, + {31.070939, -29.752121}, + {6.7037200927734, 51.010208129883}, + {30.159148, -23.815904}, + {9.692869, 49.771889}, + {33.84247, 27.086793}, + {9.427643, 50.312576}, + {5.915226, 45.57835}, + {6.8987274169922, 50.28923034668}, + {9.388352, 53.81545}, + {88.132463, 25.012853}, + {10.108932, 53.543106}, + {14.347733, 51.782822}, + {9.961123, 52.326624}, + {10.614358, 53.838906}, + {8.647232, 49.456558}, + {11.699396, 49.504862}, + {13.869552612305, 53.317337036133}, + {15.203362, 37.701302}, + {6.221997, 51.866885}, + {-5.8426666259766, 35.779037475586}, + {14.80513, 48.085098}, + {-90.548843, 14.55908}, + {16.688951, 50.70237}, + {8.4436798095703, 49.521560668945}, + {18.279683, 53.239096}, + {6.5112, 45.749027}, + {2.248447, 41.452208}, + {6.123641, 51.047012}, + {12.125505, 49.549295}, + {-99.171916, 19.302292}, + {12.61354, 41.909409}, + {-0.074452, 51.527939}, + {16.859722, 52.48937}, + {7.5414276123047, 51.054153442383}, + {7.5702667236328, 45.05973815918}, + {4.863992, 52.393908}, + {1.559372, 43.672028}, + {7.02306, 51.204661}, + {10.632007, 52.399137}, + {7.896079, 50.554578}, + {13.582534790039, 52.610092163086}, + {30.468317, -30.185202}, + {-97.873764, 22.33696}, + {9.5642852783203, 52.678756713867}, + {4.438992, 51.921473}, + {14.951498, 50.920494}, + {9.1042327880859, 49.458389282227}, + {-93.148544, 16.7547}, + {-99.161911, 19.332779}, + {12.155685424805, 54.192123413086}, + {16.078581, 50.148387}, + {2.757369, 49.630285}, + {5.6476593017578, 50.672378540039}, + {5.748577, 52.872299}, + {11.608658, 52.183914}, + {16.592046, 59.622962}, + {6.622902, 51.34341}, + {7.730646, 49.19747}, + {13.751024, 51.057121}, + {-0.70930480957031, 38.27018737793}, + {4.565506, 51.863022}, + {9.52377, 47.667619}, + {13.350174, 52.552689}, + {9.674983, 51.221352}, + {119.43718, -5.157983}, + {-122.438164, 37.752457}, + {8.1580352783203, 51.55403137207}, + {17.677166, 47.704931}, + {8.466486, 50.17907}, + {-84.524518, 39.071331}, + {-99.182510375977, 19.311904907227}, + {4.767885, 52.066668}, + {8.617763, 49.845462}, + {16.054725, 50.393065}, + {12.361588, 55.710617}, + {5.387941, 43.575023}, + {2.423911, 48.640436}, + {8.55217, 51.946793}, + {20.15335, 51.714311}, + {2.220362, 48.911258}, + {12.151131, 49.71791}, + {5.525994, 51.109535}, + {14.890366, 51.244583}, + {151.73516, -29.753504}, + {11.567001, 48.141403}, + {14.432601928711, 50.090103149414}, + {37.598742, 55.776055}, + {-3.218651, 5.464668}, + {12.52388, 55.773239}, + {7.622108, 46.73172}, + {2.044487, 48.795948}, + {11.981278, 51.714706}, + {6.720418, 46.576103}, + {11.28091, 52.245488}, + {12.837182, 51.210041}, + {10.998302, 49.508913}, + {-99.187814, 19.295047}, + {9.911924, 45.500958}, + {9.7586, 45.670169}, + {8.5961151123047, 47.397079467773}, + {79.065523, 21.181236}, + {7.7268218994141, 48.617935180664}, + {24.706192016602, 56.754684448242}, + {48.391402, 54.314824}, + {4.888177, 52.490651}, + {16.343767, 48.073426}, + {14.031389, 51.167618}, + {9.94645, 53.878068}, + {-3.308967, 43.395685}, + {14.21938, 51.424219}, + {-75.294113, 39.968491}, + {36.258708, 33.509086}, + {-84.384987, 10.128052}, + {12.823104858398, 51.056900024414}, + {-8.744476, 42.222279}, + {-0.703425, 38.253021}, + {12.025857, 51.237186}, + {14.371494, 48.34397}, + {6.244369, 62.476533}, + {10.153128, 54.324075}, + {3.586678, 51.05573}, + {-90.526056, 36.077943}, + {8.468135, 47.213333}, + {13.533097, 52.455695}, + {9.515662, 51.294045}, + {6.861947, 51.54293}, + {6.40055, 51.450376}, + {25.961616, 56.149624}, + {10.631337, 49.584918}, + {-61.489792, 10.645065}, + {6.9138336181641, 51.176376342773}, + {150.923476, -31.108974}, + {8.490921, 47.379501}, + {10.74441, 48.536461}, + {11.987459, 57.726105}, + {4.982595, 43.422848}, + {14.430599, 50.077028}, + {34.795589, 32.077847}, + {9.378, 48.812965}, + {15.590105, 47.254846}, + {55.128067, 25.047867}, + {6.566093, 51.343949}, + {55.142441, 25.074692}, + {8.664512, 47.230454}, + {1.0347747802734, 49.395217895508}, + {13.817611, 50.461712}, + {9.486871, 52.320845}, + {6.630936, 51.168137}, + {11.055679321289, 49.44465637207}, + {8.521194, 47.413254}, + {6.491384, 50.438262}, + {6.331766, 50.830687}, + {7.443237, 52.286911}, + {8.357138, 48.691847}, + {8.570389, 47.416489}, + {-74.44124, 39.352997}, + {6.261232, 51.024889}, + {4.364655, 50.684896}, + {12.709091, 50.728336}, + {-97.119827, 32.645187}, + {12.533947, 50.668871}, + {10.953715, 53.830271}, + {17.576607, 48.304479}, + {-0.79994201660156, 38.476181030273}, + {-78.4784, -0.17497}, + {-59.034205, -34.121976}, + {-58.412345, -34.610367}, + {5.582308, 50.645138}, + {7.273738, 51.095608}, + {11.886857, 57.800292}, + {8.4093475341797, 49.42268371582}, + {13.893818, 51.467976}, + {14.095673, 49.969719}, + {100.61897277832, 13.972549438477}, + {10.897939, 50.490328}, + {5.182179, 52.354294}, + {151.182937, -33.89706}, + {19.038619995117, 52.405471801758}, + {19.148512, 47.777938}, + {151.343183, -33.41022}, + {8.015877, 50.560465}, + {4.890191, 45.786994}, + {8.573098, 52.191023}, + {7.570883, 52.001154}, + {0.30006408691406, 41.605911254883}, + {13.218457, 47.408676}, + {-74.221848, 4.572922}, + {59.026218, 53.418236}, + {34.750624, 32.052781}, + {24.000235, 60.187399}, + {151.193848, -33.873138}, + {13.377914428711, 52.516708374023}, + {24.409099, 57.221833}, + {5.25222, 43.437538}, + {23.259951, 53.312739}, + {-74.023818969727, 4.8195648193359}, + {-74.105759, 4.584808}, + {19.012822, 47.415413}, + {25.376065, 50.761058}, + {25.317306518555, 50.738296508789}, + {21.811058, 52.20546}, + {25.6707, 42.295303}, + {140.686369, -2.57638}, + {6.976832, 51.127473}, + {2.6895904541016, 48.87336730957}, + {32.787696, 39.694647}, + {34.201126098633, 37.819747924805}, + {36.195828, 37.09105}, + {106.703044, 10.785533}, + {31.336441040039, 30.059280395508}, + {-75.6426, 1.596231}, + {150.181389, -33.547783}, + {13.285903930664, 52.531814575195}, + {34.702272, 31.929069}, + {100.641975, 13.936501}, + {151.142349, -33.87291}, + {72.381821, 23.591537}, + {12.558187, 51.058112}, + {15.328072, 48.573126}, + {6.750641, 51.563645}, + {100.639193, 13.986851}, + {4.786946, 45.795644}, + {-16.329941, 28.489059}, + {15.360946655273, 52.312088012695}, + {18.36777, 49.677778}, + {16.318130493164, 47.942276000977}, + {10.693373, 51.690772}, + {-58.52897644043, -34.646072387695}, + {-63.882052, -8.742586}, + {-5.728902, 37.926649}, + {12.766096, 51.259233}, + {109.32838439941, -7.4425506591797}, + {8.929879, 46.000333}, + {34.761428833008, 32.028579711914}, + {14.377670288086, 52.114334106445}, + {11.812957, 51.878694}, + {6.901616, 50.83487}, + {-1.69729, 53.69923}, + {-1.730348, 53.728536}, + {23.124809, 60.38559}, + {-51.179122, -30.030779}, + {79.085495, 21.122891}, + {4.327791, 45.496308}, + {-0.508529, 44.70845}, + {37.55127, 55.756378}, + {24.420547485352, 57.229843139648}, + {77.674576, 12.999435}, + {107.44339, -6.789017}, + {-16.796722, 28.162766}, + {6.808548, 47.318917}, + {10.124176, 54.334328}, + {106.6902923584, 10.783767700195}, + {72.836788, 19.153026}, + {-70.555206, -33.395508}, + {19.507082, 51.213196}, + {77.094497680664, 28.540420532227}, + {10.024795, 53.148422}, + {12.287585, 52.488224}, + {106.699905, 10.734158}, + {150.33073425293, -33.713607788086}, + {10.511856079102, 59.89128112793}, + {-71.524258, -16.436405}, + {106.9100189209, 10.967788696289}, + {8.729859, 53.0575}, + {12.258503, 51.584492}, + {11.317703, 43.730804}, + {7.088699, 43.605515}, + {18.693237, 50.294158}, + {27.888658, -26.276469}, + {-1.99677, 39.496345}, + {1.998706, 41.339075}, + {6.695096, 45.895468}, + {10.99205, 50.279617}, + {-1.690909, 53.707267}, + {27.911651, -26.131012}, + {2.348186, 48.877205}, + {8.6428070068359, 48.871994018555}, + {11.661116, 48.961182}, + {-4.538311, 48.527985}, + {120.995763, 14.648514}, + {-1.4495086669922, 43.49006652832}, + {-58.521595, -34.594917}, + {4.804655, 45.378538}, + {4.800888, 43.951218}, + {11.636662, 48.130417}, + {5.710154, 43.491902}, + {7.118918, 51.197313}, + {13.435276, 52.429293}, + {9.234291, 47.42495}, + {3.838348, 43.58017}, + {11.768417, 53.486938}, + {4.87597, 44.128238}, + {-86.201407, 32.325353}, + {9.992325, 54.060123}, + {-65.301159, -24.173436}, + {8.679608, 50.187332}, + {6.951019, 50.851335}, + {-9.1097259521484, 38.786544799805}, + {7.12578, 52.470475}, + {-122.10939, 37.406479}, + {17.074951, 51.1048}, + {7.728968, 36.82575}, + {44.764344, 41.709229}, + {9.4132232666016, 48.703079223633}, + {-1.99096, 53.634443}, + {10.819473, 52.311173}, + {11.114699, 49.507371}, + {7.682066, 51.660102}, + {4.608765, 51.673508}, + {-70.986822, -34.610728}, + {-0.739074, 49.278581}, + {-58.369463, -34.606036}, + {6.509548, 51.575223}, + {21.479864, 53.003063}, + {14.405823, 46.141377}, + {38.140411, 54.244995}, + {7.862611, 52.403856}, + {24.865494, 60.206517}, + {9.734205, 52.425904}, + {-74.10074, 4.648939}, + {16.282424926758, 48.133163452148}, + {14.530106, 52.322388}, + {-120.424611, 34.887766}, + {10.918350219727, 49.628677368164}, + {0.44151306152344, 41.513900756836}, + {8.224328, 50.078868}, + {4.9308013916016, 45.714797973633}, + {-0.089493, 51.576767}, + {90.340161, 23.629258}, + {2.513809, 48.853317}, + {13.926658, 51.567278}, + {8.595657, 50.143662}, + {101.096191, 4.598465}, + {-74.059937, 4.749527}, + {-117.08198547363, 32.705612182617}, + {-74.069726, 4.667099}, + {13.749372, 51.039188}, + {-73.308805, 6.239729}, + {9.4036102294922, 47.736282348633}, + {-3.73621, 43.384323}, + {8.467484, 48.356094}, + {39.747047, 43.634033}, + {9.838028, 54.461288}, + {13.718149, 54.09256}, + {144.98568, -37.851952}, + {24.799374, 60.247691}, + {-7.534833, 33.598845}, + {-99.0872, 19.394267}, + {6.448288, 51.230999}, + {34.868125, 32.364803}, + {4.451327, 50.402658}, + {12.41272, 51.343231}, + {-87.186091, 14.077028}, + {-87.333012, 14.196379}, + {-87.169469, 14.098841}, + {-87.737618, 15.493698}, + {8.856037, 50.093844}, + {15.426453, 47.004868}, + {-99.126549, 19.409409}, + {7.084449, 51.231339}, + {144.998871, -37.829957}, + {-1.788621, 52.341412}, + {0.04798, 52.466943}, + {9.086983, 48.957961}, + {-1.326493, 53.206663}, + {-2.417687, 53.58969}, + {13.929291, 42.801361}, + {15.988999, 54.000778}, + {-4.483851, 48.403739}, + {16.417389, 48.223572}, + {12.1445, 49.350793}, + {19.263996, 48.956664}, + {-70.716591, -33.42556}, + {8.772583, 50.066757}, + {9.668381, 48.575917}, + {-2.283096, 53.620834}, + {-9.147477, 38.737588}, + {106.623825, 10.849136}, + {22.44645, 53.796619}, + {-88.171332, 13.465118}, + {24.925267, 35.389706}, + {11.255902, 48.760898}, + {2.545641, 48.817165}, + {-46.824292, -24.18946}, + {106.793408, -6.298836}, + {4.975101, 51.926388}, + {-72.309951782227, 18.535995483398}, + {11.436184, 48.723683}, + {23.608017, 61.503983}, + {4.112594, 51.131334}, + {-72.292252, 18.570938}, + {11.582649, 48.120429}, + {19.416676, 51.865826}, + {18.771516, 52.861679}, + {-58.812293, -34.778216}, + {7.121378, 35.859973}, + {9.3115997314453, 48.994216918945}, + {172.685166, -43.481312}, + {-87.22554, 14.042862}, + {11.868303, 49.4415}, + {35.155563354492, -0.44837951660156}, + {-0.76423645019531, 54.148178100586}, + {8.435237, 51.888116}, + {17.719574, 51.300889}, + {8.524033, 47.37664}, + {28.059768676758, -26.098709106445}, + {18.492048, 51.282146}, + {3.397645, 46.163108}, + {5.617591, 50.626609}, + {38.76594543457, 8.9902496337891}, + {172.45170593262, -43.517532348633}, + {11.73943, 51.999292}, + {7.1157073974609, 51.275253295898}, + {9.480979, 52.176765}, + {10.569549, 51.93097}, + {-7.70135, 33.488565}, + {21.826404, 61.489204}, + {10.83169, 51.490045}, + {6.611099, 51.237412}, + {25.037155, 60.269329}, + {16.066818237305, 48.55339050293}, + {-2.058563, 53.483505}, + {7.283675, 47.161347}, + {15.636292, 48.050079}, + {-71.553308, 43.448733}, + {12.942733, 50.835885}, + {14.599923, 44.963775}, + {44.10530090332, 39.942855834961}, + {12.037582, 57.850571}, + {10.87152, 48.697244}, + {15.675430297852, 51.820449829102}, + {41.837217, 48.35264}, + {4.335608, 50.821897}, + {3.265749, 43.311314}, + {4.101999, 43.701362}, + {24.000109, 45.788258}, + {24.385254, 45.086929}, + {48.315518, 54.269176}, + {2.987137, 48.389511}, + {27.830349, -25.627924}, + {35.289459, 31.777856}, + {-122.677322, 49.109848}, + {37.563243, 55.767546}, + {-93.197708129883, 44.934768676758}, + {6.842166, 51.294737}, + {5.935135, 43.125229}, + {11.118481, 48.646249}, + {24.72118, 60.163288}, + {-93.260255, 36.655322}, + {29.031742, -26.020754}, + {10.537033, 48.837892}, + {7.586849, 49.647526}, + {8.308529, 46.978773}, + {10.276062, 36.811615}, + {-2.088175, 52.328437}, + {-1.29982, 52.923203}, + {-106.522684, 35.116709}, + {73.07887, 33.566791}, + {1.912442, 47.918982}, + {-93.713285, 32.516546}, + {-92.648447, 41.242521}, + {10.082015991211, 53.71696472168}, + {-76.185734, 4.081364}, + {-3.269878, 51.406868}, + {-49.233323, -25.490846}, + {-3.663342, 47.883484}, + {27.495097, 41.185368}, + {-2.772674, 53.359909}, + {13.428726196289, 52.623825073242}, + {-120.97389221191, 37.628860473633}, + {13.899895, 56.811513}, + {6.0376739501953, 50.778121948242}, + {17.999382, 59.302654}, + {-2.84582, 52.27286}, + {-2.2501373291016, 53.515090942383}, + {25.610271, 62.027101}, + {10.156173706055, 43.987197875977}, + {-2.939431, 43.260727}, + {99.632778, 7.774115}, + {2.90751, 51.214308}, + {-3.891416, 40.4702}, + {-3.692588, 40.408105}, + {139.065547, 36.612383}, + {5.379692, 50.615155}, + {5.798003, 50.668655}, + {-80.644454956055, 8.7883758544922}, + {2.5069427490234, 48.93928527832}, + {-70.694412, -33.361221}, + {34.805374, 31.80027}, + {106.947845, -6.389333}, + {9.5464324951172, 47.627792358398}, + {55.371780395508, 25.237655639648}, + {12.235336303711, 45.573348999023}, + {11.832962036133, 45.48957824707}, + {151.11421, -33.937288}, + {35.47863, 31.748085}, + {25.934463, 48.318421}, + {11.314362, 46.421077}, + {9.118769, 51.408656}, + {121.153519, 13.945633}, + {37.668584, 55.747808}, + {26.907349, 41.506348}, + {16.139602661133, 47.870864868164}, + {16.005249, 45.785523}, + {13.49739074707, 38.101272583008}, + {34.784134, 32.058884}, + {-71.644821, 10.530167}, + {55.262506, 25.206659}, + {144.965523, -37.829624}, + {30.93544, -29.849854}, + {19.890787, 51.508086}, + {30.048878, -27.671168}, + {6.6020965576172, 47.053756713867}, + {7.431549, 51.583711}, + {112.901508, 52.246041}, + {27.793232, -25.66615}, + {-7.609764, 33.593863}, + {-71.422805786133, 46.846389770508}, + {16.426392, 48.380013}, + {-9.981055, 51.643196}, + {6.624731, 51.340632}, + {139.74128723145, 35.680160522461}, + {4.844875, 45.076218}, + {8.690353, 48.889817}, + {10.105637, 48.866226}, + {-1.976853, 53.284938}, + {10.768187, 51.570725}, + {14.636307, 49.154892}, + {48.297146, 54.273312}, + {14.678238, 49.789261}, + {96.769662, 56.158699}, + {9.5217132568359, 46.845016479492}, + {100.156205, 54.623365}, + {23.019933, 54.170312}, + {6.843259, 51.506307}, + {48.322906, 54.298096}, + {5.279007, 45.59639}, + {2.720489, 48.591843}, + {25.117454, 60.373661}, + {4.706268, 50.502777}, + {9.825836, 52.384806}, + {27.301712036133, 61.690292358398}, + {13.69514465332, 48.08235168457}, + {5.866009, 46.00986}, + {9.057568, 50.69321}, + {-1.609634, 47.262772}, + {6.987297, 51.482196}, + {7.405476, 50.623218}, + {9.195655, 45.46584}, + {9.255643, 49.168395}, + {7.0554, 51.428685}, + {145.213511, -37.856273}, + {8.636246, 48.871079}, + {18.081273, 48.304502}, + {4.628481, 52.621961}, + {16.923579, 47.892832}, + {6.452014, 51.189939}, + {15.897903, 52.566834}, + {12.483309, 51.29816}, + {8.357416, 51.926371}, + {-103.381622, 20.638779}, + {9.684812, 52.422436}, + {8.998414, 49.670852}, + {17.106781, 61.726227}, + {5.517195, 52.257157}, + {-80.137710571289, 25.774612426758}, + {31.39274597168, 36.804885864258}, + {12.463131, 41.818686}, + {8.671405, 49.875796}, + {8.550146, 51.959369}, + {-2.068863, 53.483505}, + {9.277082, 47.412688}, + {10.661544799805, 47.585220336914}, + {9.710924, 55.771943}, + {145.232721, -37.863244}, + {4.501221, 52.044233}, + {-3.630954, 40.518034}, + {39.553451, 50.148836}, + {-79.735547, 43.461733}, + {31.426579, 36.791028}, + {-2.940216, 42.704887}, + {40.335386, 48.351746}, + {-3.688202, 40.363541}, + {23.262863, 42.661057}, + {25.136349, 36.994717}, + {39.857719, 47.178603}, + {50.741051, 61.787271}, + {7.879715, 45.187912}, + {6.129292, 49.560798}, + {16.328792, 48.233472}, + {8.798969, 52.154505}, + {8.791122, 36.945648}, + {-8.238747, 37.379288}, + {10.725085, 50.56333}, + {75.771802, 23.192753}, + {37.491188, 55.794754}, + {20.958191, 52.245723}, + {11.761026, 54.13836}, + {3.234893, 39.37463}, + {4.270707, 50.432053}, + {34.741828, 31.933573}, + {-96.985069, 32.118495}, + {27.78923034668, 40.40153503418}, + {-0.273167, 49.060632}, + {7.012132, 49.230115}, + {-72.649243, 19.404422}, + {26.72108, 47.244644}, + {10.835956, 59.795318}, + {8.55866, 49.120768}, + {-1.5772247314453, 53.763656616211}, + {16.369826, 48.192957}, + {23.862767, 60.371365}, + {-0.770469, 35.745867}, + {8.565443, 49.248204}, + {38.106502, 45.245707}, + {6.641565, 51.434538}, + {47.627792358398, 42.899551391602}, + {13.527374, 52.490387}, + {8.540512, 49.411999}, + {-79.116265, 48.597795}, + {6.873322, 51.428353}, + {9.757004, 47.607651}, + {-1.726678, 53.683927}, + {8.41804, 47.156214}, + {-2.964605, 39.985044}, + {4.75296, 45.778215}, + {151.236777, -33.950995}, + {8.245514, 47.127159}, + {-99.668655395508, 18.803787231445}, + {18.107911, 45.173729}, + {3.887888, 43.583015}, + {-122.705065, 49.140611}, + {106.8853, -6.31279}, + {16.382217, 48.235474}, + {2.47467, 48.626154}, + {1.837692, 48.962631}, + {77.214283, 28.550654}, + {16.427892, 48.188016}, + {106.563503, -7.013742}, + {9.046115, 49.209384}, + {-99.240807, 19.464494}, + {-6.089166, 43.530585}, + {8.505599, 47.383407}, + {10.629796, 44.694198}, + {8.561475, 48.935446}, + {-2.47879, 53.437271}, + {-2.262125, 53.555817}, + {6.455086, 50.851778}, + {-7.7542877197266, 38.962326049805}, + {5.078939, 52.13599}, + {6.219223, 44.554917}, + {7.280864, 51.477669}, + {11.730605, 48.098772}, + {2.391724, 48.967987}, + {11.534957885742, 3.8843536376953}, + {4.899673, 52.368851}, + {9.08844, 48.735523}, + {5.03725, 51.692426}, + {28.096012, -25.629901}, + {12.23737, 51.864222}, + {13.472671508789, 52.555160522461}, + {8.272934, 47.426147}, + {-43.980484, -19.898758}, + {14.45182800293, 50.022811889648}, + {8.771445, 47.202872}, + {9.232112, 48.967589}, + {8.569629, 48.932004}, + {-43.870382, -19.848159}, + {-88.229599, 13.924026}, + {5.668481, 50.692789}, + {10.94856262207, 50.249404907227}, + {-6.2299346923828, 53.324203491211}, + {-70.645848, -33.443442}, + {10.482006, 63.429958}, + {5.459518, 43.555842}, + {10.203686, 52.115442}, + {9.538651, 40.923389}, + {3.793435, 49.212786}, + {24.095078, 56.901901}, + {6.546137, 51.10151}, + {9.226627, 48.507191}, + {8.048659, 50.406256}, + {14.510055, 53.396713}, + {2.204587, 44.051515}, + {5.374146, 43.31749}, + {8.356131, 51.909398}, + {2.334799, 48.623303}, + {16.121325, 47.58427}, + {14.483674, 50.127628}, + {-84.023928, 9.95273}, + {9.879382, 51.552703}, + {0.317297, 51.492602}, + {7.475784, 51.360947}, + {74.746170043945, 19.37370300293}, + {4.264297, 50.760727}, + {9.731303, 50.553149}, + {5.45723, 43.58696}, + {-84.438794, 10.356387}, + {4.364236, 43.941231}, + {-6.901474, 33.941299}, + {101.41136169434, 3.0548858642578}, + {6.858578, 46.477029}, + {106.62162780762, -6.2189483642578}, + {8.714403, 48.665967}, + {16.722675, 47.284058}, + {-2.094499, 53.54465}, + {37.835999, 55.719223}, + {10.484390258789, 56.316604614258}, + {44.423447, 48.576737}, + {7.55003, 51.452913}, + {-0.18208, 51.542806}, + {16.264229, 48.183203}, + {-0.147349, 5.706711}, + {14.075611, 50.488665}, + {5.4004669189453, 52.136306762695}, + {-0.203171, 5.572281}, + {7.238129, 51.560836}, + {7.732454, 50.324634}, + {7.092846, 52.714781}, + {9.199761, 49.199802}, + {-82.418746948242, 8.4285736083984}, + {7.106462, 50.751269}, + {30.853042602539, -29.776382446289}, + {6.776013, 51.224442}, + {-122.467346, 37.740097}, + {15.091297, 61.786368}, + {-16.903439, 32.671145}, + {17.833687, 59.722959}, + {-84.487061, 33.831161}, + {76.652985, 28.666477}, + {70.509337, 21.629601}, + {16.393387, 48.218307}, + {16.369171, 48.183975}, + {8.154978, 47.382709}, + {37.891007, 56.095352}, + {-109.572266, 36.615832}, + {10.70747, 50.84514}, + {14.414061, 52.640311}, + {85.310726, 27.724514}, + {-70.61393737793, -33.425216674805}, + {10.986896, 50.875679}, + {7.105236, 51.481762}, + {11.734414, 48.083845}, + {9.817658, 51.981812}, + {25.351378, 41.541025}, + {-120.344928, 50.747224}, + {13.343818, 52.506277}, + {12.011716, 60.198442}, + {15.735855102539, 47.092208862305}, + {10.357202, 43.625917}, + {-0.626635, 49.247522}, + {5.070429, 50.177378}, + {3.819561, 49.046301}, + {16.550217, 41.129379}, + {9.515761, 55.771244}, + {7.755393, 44.963005}, + {-109.429653, -27.150392}, + {5.989986, 50.942956}, + {10.120873, 52.975819}, + {6.209925, 49.17823}, + {6.843338, 50.973305}, + {-58.489151000977, -34.650192260742}, + {7.970185, 49.967006}, + {37.95283, 55.814859}, + {16.678734, 41.108265}, + {16.509646, 48.257466}, + {-3.340198, 42.51967}, + {138.581106, -34.89495}, + {3.731231, 51.122818}, + {5.334415, 52.123133}, + {6.296708, 51.843705}, + {-67.984787, -38.927719}, + {8.828837, 50.123274}, + {16.343029, 48.219143}, + {14.547042, 61.005478}, + {10.062789916992, 50.19172668457}, + {13.181533, 50.64871}, + {-110.227402, 36.71274}, + {6.822331, 51.217385}, + {14.79984, 51.341127}, + {9.392527, 46.13532}, + {9.428984, 52.354554}, + {-80.16242980957, 8.3736419677734}, + {12.778471, 50.731659}, + {-79.276506, -1.431322}, + {17.597444, 50.709289}, + {13.432567, 52.533339}, + {5.376955, 43.881997}, + {13.404988, 52.507292}, + {8.304447, 48.395915}, + {30.265331, 50.338891}, + {3.722031, 51.006445}, + {2.850971, 49.91911}, + {-1.433029, 48.101406}, + {8.545303, 48.935715}, + {14.042647, 66.291146}, + {0.90843200683594, 40.998916625977}, + {2.274857, 48.62233}, + {4.84211, 46.77475}, + {-74.822933, 10.999781}, + {16.346664, 48.190842}, + {8.858278, 50.061815}, + {-71.859512329102, 42.031631469727}, + {-6.849976, 33.988266}, + {2.9450225830078, 50.635299682617}, + {4.244293, 49.120985}, + {-88.029517, 43.112104}, + {55.43083190918, 25.29670715332}, + {5.310862, 51.970258}, + {39.90852355957, 44.771347045898}, + {13.557129, 48.240967}, + {16.653838, 48.099206}, + {29.116324, 36.62081}, + {6.17115, 51.685372}, + {133.1275177002, 42.951736450195}, + {-0.093505, 51.645355}, + {9.487327, 47.189201}, + {5.946268, 50.409167}, + {24.295648, 45.396159}, + {16.288033, 48.142891}, + {-0.709305, 51.4991}, + {-79.87793, -2.063141}, + {2.9244232177734, 50.436172485352}, + {10.78239440918, 48.615188598633}, + {11.730348, 53.937285}, + {10.053176, 47.896042}, + {11.222706, 45.412159}, + {1.901304, 49.163774}, + {7.200504, 51.584328}, + {55.529404, 25.134201}, + {-1.090279, 53.958893}, + {-46.739616, -23.587558}, + {9.022217, 53.06427}, + {15.337862, 48.212089}, + {9.826243, 45.60837}, + {14.663827, 50.90384}, + {7.758934, 48.247041}, + {13.424606323242, 52.533187866211}, + {3.5781097412109, 50.344161987305}, + {-88.027725, 15.476303}, + {10.784624, 50.829271}, + {-1.395991, 53.354438}, + {-77.017899, -12.154872}, + {8.430109, 44.281518}, + {6.885223, 47.641754}, + {-2.696457, 43.398743}, + {-0.57209, 44.837265}, + {20.884838, 52.215958}, + {35.021667, 48.521576}, + {26.120006, 44.381976}, + {-96.940432, 32.689566}, + {-74.061109, 4.65403}, + {15.448743, 47.151166}, + {12.218857, 46.72554}, + {6.025407, 49.181452}, + {-1.7543792724609, 53.656539916992}, + {5.05577, 49.840716}, + {10.110855102539, 53.546676635742}, + {9.95636, 53.607925}, + {9.713572, 52.455218}, + {79.808905, 10.925805}, + {6.8341827392578, 51.538925170898}, + {0.737506, 49.699247}, + {16.94259, 52.380853}, + {-2.644272, 48.249905}, + {4.71203, 51.423846}, + {2.631876, 49.858527}, + {12.177658, 47.592392}, + {10.685268, 48.026601}, + {7.260884, 43.729019}, + {6.120388, 48.138799}, + {1.434518, 48.460669}, + {111.499113, -1.912929}, + {7.080917, 43.630142}, + {22.574244, 40.467367}, + {15.791321, 49.954769}, + {-1.429169, 52.850208}, + {8.693622, 48.365123}, + {-96.872893, 32.691866}, + {7.101354, 51.09935}, + {4.882184, 51.29648}, + {9.020564, 46.205063}, + {13.283329, 52.342644}, + {-1.2064361572266, 40.361709594727}, + {11.054663, 53.500666}, + {16.761772, 52.377663}, + {3.270496, 51.327896}, + {4.04846, 51.110688}, + {3.131332, 50.654526}, + {-99.153671264648, 23.716049194336}, + {7.33503, 51.336652}, + {14.622191, 46.150433}, + {8.706469, 53.23973}, + {8.2390594482422, 48.656387329102}, + {11.570823, 52.170321}, + {19.143204, 50.213469}, + {12.611067, 56.027994}, + {19.28091, 50.028505}, + {6.274971, 51.443619}, + {7.334755, 45.749136}, + {14.462296, 53.428886}, + {15.908032, 48.154278}, + {76.656955, 43.265947}, + {-1.353176, 52.018616}, + {-1.160286, 51.461337}, + {13.559389, 43.494779}, + {15.060155, 50.747911}, + {5.876541, 51.948166}, + {76.798233, 30.48967}, + {-68.141556, -16.49437}, + {16.274872, 48.122864}, + {4.615358, 51.56226}, + {10.235919, 54.10237}, + {5.568131, 50.668758}, + {12.444076538086, 44.098434448242}, + {13.882287, 42.900675}, + {2.27211, 48.781357}, + {72.853693, 19.301303}, + {26.202137, -29.068609}, + {-79.907333, -2.239151}, + {15.147035, 50.72902}, + {31.36631, 31.037064}, + {40.639114379883, 64.656600952148}, + {9.489735, 54.514614}, + {-73.300886, 45.35673}, + {8.612251, 50.099716}, + {6.276489, 51.944595}, + {6.567764, 51.329793}, + {10.936266, 50.888259}, + {11.489639282227, 47.272109985352}, + {6.801958, 51.40388}, + {7.852871, 53.439756}, + {8.508421, 53.367134}, + {9.53426, 45.833463}, + {23.786087, 38.031921}, + {20.987108, 38.319405}, + {22.925719, 37.917252}, + {23.714574, 37.992579}, + {25.080414, 37.040405}, + {23.88771, 37.895966}, + {23.694575, 37.997262}, + {4.516525, 51.955795}, + {4.894115, 51.723535}, + {17.931747436523, 59.646835327148}, + {-95.30203, 29.602267}, + {30.61876, 59.712754}, + {6.0994720458984, 50.793228149414}, + {11.355056762695, 48.225173950195}, + {6.9907379150391, 51.021194458008}, + {2.7651214599609, 48.887100219727}, + {120.41496276855, 36.133346557617}, + {-17.291794, 14.763565}, + {76.881637573242, 11.000747680664}, + {30.476761, 60.002747}, + {7.13768, 51.493057}, + {4.521989, 51.896647}, + {4.918098, 52.347794}, + {4.304159, 52.079728}, + {5.005444, 51.605853}, + {5.259606, 52.062934}, + {6.869354, 53.101144}, + {4.627989, 52.218018}, + {4.293043, 51.736722}, + {4.792688, 52.398017}, + {4.919815, 51.948853}, + {5.153, 51.304093}, + {6.893106, 52.222249}, + {6.135133, 53.10917}, + {5.043709, 52.100624}, + {4.497153, 51.944702}, + {6.441078, 52.522888}, + {4.853223, 52.302306}, + {5.691056, 51.422334}, + {4.680176, 51.850662}, + {5.27092, 51.766892}, + {6.773788, 52.264739}, + {5.385819, 52.204514}, + {3.1029510498047, 51.192855834961}, + {5.478057, 51.225128}, + {4.410687, 51.229824}, + {5.6737518310547, 50.672378540039}, + {5.407529, 51.21424}, + {5.3263092041016, 47.870864868164}, + {20.684509, 47.216492}, + {5.5487823486328, 50.63117980957}, + {2.343521, 48.819809}, + {7.702103, 48.720474}, + {32.551803588867, 0.39756774902344}, + {-0.20098, 47.0152}, + {7.627835, 51.294809}, + {34.877452, 31.912275}, + {34.86505, 31.925708}, + {6.082319, 49.59524}, + {9.299545, 45.483933}, + {13.17623, 47.5129}, + {14.109757, 49.975378}, + {4.440029, 51.867999}, + {5.4759979248047, 51.499099731445}, + {11.904286, 48.010443}, + {2.6424, 48.311692}, + {7.447208, 51.393086}, + {5.597042, 51.9368}, + {-3.70308, 51.527253}, + {-64.258346557617, -31.314468383789}, + {1.730546, 41.219795}, + {-16.621627807617, 28.143539428711}, + {140.404964, 36.762502}, + {1.417468, 43.757631}, + {77.968674, 27.184677}, + {14.428139, 48.070507}, + {19.02116, 50.255683}, + {7.910843, 47.547455}, + {113.539803, 22.204682}, + {-3.983311, 5.406849}, + {4.54605, 51.865428}, + {10.925431, 49.707825}, + {13.271784, 58.209027}, + {2.164525, 48.873771}, + {16.364822387695, 48.199081420898}, + {13.428589, 52.555115}, + {0.169516, 47.241383}, + {15.96553, 52.335928}, + {-1.392059, 47.182312}, + {-16.723869, 28.378578}, + {39.233246, 21.557312}, + {39.704048, 47.292709}, + {7.408878, 50.770016}, + {110.374157, -7.921921}, + {1.031111, 49.424973}, + {1.878954, 41.454492}, + {11.938705, 51.039963}, + {15.428237915039, 47.07160949707}, + {9.410288, 45.516476}, + {9.90725, 45.621295}, + {11.232289, 51.538729}, + {6.012188, 51.960781}, + {16.448593139648, 48.222427368164}, + {12.320755, 44.15062}, + {-71.401405, 42.952652}, + {24.937788, 60.172806}, + {24.946518, 60.187912}, + {23.657545, 60.204117}, + {23.742142, 61.498032}, + {-6.243668, 53.382156}, + {-118.3358001709, 33.794631958008}, + {4.365056, 43.832153}, + {-0.86723327636719, 52.170639038086}, + {3.614347, 45.207434}, + {-0.521164, 51.451859}, + {-0.078811, 52.226639}, + {-1.401443, 51.833933}, + {11.508659, 45.532631}, + {15.561447143555, 38.185043334961}, + {15.440859, 38.024237}, + {2.857001, 50.262745}, + {12.327346801758, 55.679397583008}, + {2.1512603759766, 41.397171020508}, + {2.140617, 41.366615}, + {-0.244453, 51.445505}, + {-0.482026, 44.932709}, + {8.703232, 47.60582}, + {48.066902, 29.181747}, + {72.128677368164, 34.000625610352}, + {73.014450073242, 32.630081176758}, + {73.088607788086, 33.643569946289}, + {72.658767700195, 34.017105102539}, + {71.877365112305, 34.740829467773}, + {68.378219604492, 25.368118286133}, + {66.95686340332, 24.950637817383}, + {67.051620483398, 24.87922668457}, + {67.033767700195, 24.903945922852}, + {68.897323608398, 27.690353393555}, + {68.615798950195, 25.520553588867}, + {67.199935913086, 24.855880737305}, + {73.041915893555, 31.443557739258}, + {73.815078735352, 32.270278930664}, + {73.46076965332, 32.058792114258}, + {74.320449829102, 31.499862670898}, + {74.416580200195, 31.490249633789}, + {74.324569702148, 31.966781616211}, + {74.617080688477, 32.378768920898}, + {73.260269165039, 30.002975463867}, + {73.738174438477, 30.54817199707}, + {71.094589233398, 30.964279174805}, + {71.582107543945, 29.702224731445}, + {70.456008911133, 28.732681274414}, + {70.685348510742, 30.872268676758}, + {1.548386, 45.166855}, + {-1.605395, 54.939747}, + {11.027183, 55.341225}, + {-1.305328, 53.280947}, + {-1.3932037353516, 54.074020385742}, + {-1.3286590576172, 53.221206665039}, + {-0.248337, 51.460648}, + {1.275509, 52.059142}, + {5.428154, 52.176389}, + {9.633867, 47.827026}, + {2.664413, 48.94371}, + {2.532088, 48.831648}, + {-1.541161, 37.733232}, + {2.2679901123047, 41.553726196289}, + {18.316301, 47.48772}, + {21.631393432617, 47.531661987305}, + {19.107285, 47.487202}, + {18.322408, 47.493089}, + {14.954251, 44.499542}, + {9.1674041748047, 45.444259643555}, + {13.059249, 45.674661}, + {26.07641, 44.41985}, + {7.463036, 46.98246}, + {0.071467, 51.437339}, + {-2.563934, 51.541672}, + {-2.129225, 52.441489}, + {-1.960477, 51.156693}, + {-0.19432067871094, 51.401596069336}, + {-0.753858, 52.088679}, + {-0.134203, 50.819321}, + {-0.936891, 52.253416}, + {-4.872179, 50.41467}, + {-4.303176, 55.880959}, + {-1.50032, 54.677091}, + {-4.029546, 55.77567}, + {-2.545202, 53.493317}, + {-3.551212, 51.56438}, + {1.719393, 52.584654}, + {-0.26435852050781, 51.628189086914}, + {-0.916892, 51.461801}, + {0.027466, 51.46418}, + {-0.247182, 51.556269}, + {-2.648522, 53.41883}, + {-0.096817, 51.570261}, + {9.971583, 57.023627}, + {12.360306, 55.613676}, + {13.308048, 59.576042}, + {16.652527, 57.743988}, + {10.859322, 59.95891}, + {10.684187, 59.417989}, + {24.31539, 60.330909}, + {24.966588, 60.312911}, + {23.062892, 60.854273}, + {44.774094, 53.169159}, + {135.111166, 48.410805}, + {30.284976, 60.219798}, + {15.416351, 48.029456}, + {37.969095, 59.140778}, + {30.536543, 50.437773}, + {36.358675, 50.035357}, + {19.580811, 50.263991}, + {14.539192, 53.413051}, + {6.922277, 50.918655}, + {10.038070678711, 53.552169799805}, + {-9.1838836669922, 38.66569519043}, + {27.626228, 43.226489}, + {14.513969, 46.033058}, + {-79.638694, 43.580261}, + {-114.03327941895, 51.100845336914}, + {-122.778793, 45.476722}, + {-117.167358, 32.726841}, + {-73.989275, 40.948211}, + {-114.285961, 32.668281}, + {13.390274, 52.509567}, + {-117.306976, 33.180313}, + {-98.327925, 34.593888}, + {-117.76022, 34.069977}, + {-90.382301, 38.691497}, + {-99.20154, 19.426477}, + {-99.183883666992, 19.43962097168}, + {76.970901489258, 29.747543334961}, + {77.614447, 12.942581}, + {78.361874, 17.480278}, + {77.200241088867, 28.543167114258}, + {77.316970825195, 28.550033569336}, + {44.001793, 36.190865}, + {44.235763549805, 17.544479370117}, + {34.853498, 32.271857}, + {107.100082, 10.391556}, + {101.66679382324, 2.9985809326172}, + {101.771321, 3.068344}, + {138.632698, -34.927597}, + {144.953098, -37.817001}, + {151.19068, -33.86653}, + {150.863765, -34.442764}, + {100.633294, -0.927462}, + {106.776724, -6.172171}, + {121.0343170166, 14.667434692383}, + {103.8159942627, 1.3231658935547}, + {114.851516, 4.960212}, + {29.993362, 31.230698}, + {6.976132, 35.909749}, + {3.362385, 6.54689}, + {18.607407, -34.04686}, + {28.221713, -26.103495}, + {-76.796493530273, -12.482528686523}, + {-43.191258, -22.956854}, + {-43.941433, -19.92906}, + {-48.225271, -18.915672}, + {-43.9488, -19.939756}, + {-47.877731323242, -15.803146362305}, + {-46.586269, -23.53924}, + {-46.567612, -23.523827}, + {-46.80486, -23.500823}, + {-42.784195, -5.066829}, + {-41.951012, -18.838018}, + {-51.162482, -30.011303}, + {-41.87370300293, -22.746505737305}, + {-43.314162, -22.907909}, + {-53.166904, -23.767037}, + {-47.085781, -22.892929}, + {-46.416956, -23.709018}, + {-36.681002, -9.719718}, + {-36.023312, -9.504719}, + {-74.126732, 4.721994}, + {-68.01275, 10.204123}, + {14.505386352539, 35.866928100586}, + {14.494400024414, 35.908126831055}, + {11.663729, 47.986328}, + {-73.528060913086, 40.667953491211}, + {-9.367218, 38.968506}, + {14.557571411133, 53.545303344727}, + {-80.378193, 25.614369}, + {-48.514938354492, -27.557144165039}, + {6.050621, 43.184215}, + {-80.111771, 26.086502}, + {12.512604, 55.683792}, + {-48.520431518555, -27.598342895508}, + {26.68098449707, 58.438339233398}, + {15.956954956055, 41.343612670898}, + {10.664978, 44.69307}, + {11.456680297852, 44.476089477539}, + {-2.205494, 53.155076}, + {-1.803131, 37.306137}, + {14.213194, 47.127497}, + {-3.4957122802734, 36.714248657227}, + {17.17781, 48.146896}, + {17.100834, 48.120081}, + {-2.3792266845703, 51.352157592773}, + {-70.656508, -33.85437}, + {7.6856231689453, 45.10368347168}, + {-70.641402, -33.277589}, + {-2.292709, 51.795731}, + {17.927212, 59.341405}, + {7.0607757568359, 51.218948364258}, + {174.77256774902, -36.85432434082}, + {-84.383821, 37.322194}, + {30.350418, 59.927673}, + {17.130263, 48.129127}, + {-80.085526, 26.355515}, + {11.452835, 53.873245}, + {5.6435394287109, 43.197555541992}, + {14.670379, 63.206406}, + {79.515609741211, 29.040298461914}, + {2.3586273193359, 48.87336730957}, + {10.186523, 49.595626}, + {-79.24919128418, 43.827896118164}, + {18.07798, 59.343756}, + {-47.012768, -23.155333}, + {31.883011, 49.198803}, + {20.976333618164, 52.316207885742}, + {-121.962675, 37.248419}, + {21.741256713867, 38.26057434082}, + {23.66789, 37.99358}, + {-80.167236, 26.007974}, + {5.18486, 52.222481}, + {4.915828, 52.34374}, + {4.980452, 52.185046}, + {5.102233, 52.036438}, + {17.686963, 59.880182}, + {6.883011, 53.31749}, + {6.824984, 52.792328}, + {-3.963429, 40.464485}, + {7.233047, 43.685074}, + {-0.843897, 41.65256}, + {-4.04096, 43.345922}, + {-5.9291839599609, 37.411880493164}, + {1.8587493896484, 42.107162475586}, + {6.1708831787109, 49.348526000977}, + {2.352917, 48.916309}, + {1.034088, 49.001427}, + {5.588708, 50.628433}, + {2.41409, 46.984129}, + {2.857416, 42.679067}, + {6.16333, 49.144592}, + {2.358627, 48.900931}, + {21.631119, 47.521866}, + {101.836022, 2.760656}, + {101.318056, 3.169104}, + {103.317921, 3.946583}, + {116.803611, 5.873827}, + {-73.642992, 45.542056}, + {101.723254, 3.027575}, + {19.068458, 47.480101}, + {20.135879516602, 46.239395141602}, + {118.098092, 5.859361}, + {-4.512863, 36.60347}, + {2.948532, 42.271881}, + {-3.631153, 40.439472}, + {-117.941513, 33.785629}, + {-84.39079284668, 33.753433227539}, + {16.613388061523, 47.01530456543}, + {15.046406, 45.372749}, + {16.018337, 45.797279}, + {20.12137, 42.839796}, + {20.418144, 44.764481}, + {9.255466, 45.447006}, + {8.032805, 43.886971}, + {11.296005249023, 43.804550170898}, + {12.710266, 43.971176}, + {12.614364624023, 43.071212768555}, + {-87.977061, 42.724775}, + {9.210066, 45.467158}, + {12.458037, 41.905289}, + {11.914585, 44.533198}, + {10.908052, 45.269806}, + {8.891716, 44.438438}, + {14.352733, 40.819203}, + {13.362808, 38.118075}, + {13.514015, 41.962389}, + {10.913169, 44.680523}, + {11.608723, 44.825102}, + {12.296524, 45.486832}, + {14.224096, 40.867684}, + {14.416023, 40.660728}, + {14.471054077148, 40.769577026367}, + {12.486649, 41.893714}, + {11.23981, 43.451265}, + {13.826295, 41.483296}, + {12.401505, 42.079582}, + {13.555618, 43.532639}, + {27.583433, 47.148318}, + {23.283591, 45.040512}, + {26.054829, 44.416973}, + {26.11018, 44.41308}, + {6.643982, 46.54248}, + {9.024067, 46.193488}, + {16.595753, 49.169769}, + {18.067123, 49.7158}, + {-122.408981, 37.804621}, + {-118.28753, 35.100604}, + {-87.906475, 41.978474}, + {-70.928421020508, 42.462844848633}, + {12.936214, 49.741287}, + {17.441998, 48.456725}, + {17.166043, 48.141688}, + {19.000328, 49.105271}, + {14.52622, 48.239778}, + {14.309005737305, 46.626663208008}, + {15.226913, 46.820297}, + {-1.015477, 50.878444}, + {-1.666794, 54.464035}, + {-2.853114, 53.456599}, + {-1.1309051513672, 52.597732543945}, + {-1.91185, 52.515335}, + {-1.133651, 52.728195}, + {-0.258086, 51.451342}, + {-1.562782, 52.330414}, + {-0.251083, 50.83992}, + {0.51017761230469, 51.698226928711}, + {-2.978266, 51.117777}, + {-2.2336578369141, 53.454666137695}, + {-0.197148, 51.488639}, + {-0.176988, 51.620345}, + {-0.743294, 51.536179}, + {0.09716, 51.581497}, + {0.046594, 51.455547}, + {-0.077590942382812, 51.521072387695}, + {0.046754, 51.272757}, + {-0.171224, 51.911378}, + {-0.309677, 52.656097}, + {-1.5291595458984, 52.419204711914}, + {-1.525729, 52.456547}, + {-0.112129, 51.515579}, + {-2.224402, 53.008029}, + {-1.679231, 53.734851}, + {-0.21766662597656, 51.595230102539}, + {-2.56691, 53.347549}, + {-0.463531, 51.839676}, + {-0.496293, 51.542038}, + {-0.013562, 51.445915}, + {-0.105633, 51.375468}, + {-0.092697143554688, 51.363143920898}, + {-1.389966, 52.880484}, + {-0.947857, 51.415958}, + {-1.541977, 53.993454}, + {-0.32238, 51.704063}, + {-0.256404, 51.415665}, + {-0.356409, 51.550598}, + {-0.085007, 51.483444}, + {0.576143, 50.853895}, + {-0.133209, 50.83168}, + {27.136721, 38.33022}, + {-2.177353, 53.385773}, + {-4.417899, 52.890177}, + {-2.631611, 53.764059}, + {-2.46585, 53.716648}, + {-0.091019, 51.572749}, + {0.641904, 51.54906}, + {-2.2075653076172, 53.482131958008}, + {-3.004299, 53.80715}, + {-1.447191, 52.982168}, + {-1.76754, 50.849533}, + {-0.483116, 52.145031}, + {-4.0093231201172, 55.808486938477}, + {-2.371926, 53.052231}, + {-1.574624, 53.804037}, + {-0.164795, 51.54332}, + {-2.442093, 57.318954}, + {-1.188068, 51.890631}, + {-0.602875, 51.534805}, + {8.790643, 55.895448}, + {12.390976, 55.665665}, + {12.375915, 55.751708}, + {9.53896, 55.71272}, + {12.563552856445, 55.67253112793}, + {18.049507, 59.328232}, + {17.945088, 59.402782}, + {14.513626098633, 59.318618774414}, + {18.062313, 59.336472}, + {17.919387817383, 59.269180297852}, + {11.628208, 58.187978}, + {17.803445, 59.758463}, + {20.245285, 63.834229}, + {10.047684, 59.756699}, + {10.732955932617, 59.911880493164}, + {26.800299, 60.928915}, + {25.410627, 61.246237}, + {25.477544, 64.987436}, + {22.974038, 60.873112}, + {25.325555, 54.664244}, + {25.311394, 54.707737}, + {23.924206, 54.929242}, + {24.471359, 56.845322}, + {24.730911254883, 59.428482055664}, + {60.514711, 56.814826}, + {30.309219, 59.967575}, + {49.053672, 55.831914}, + {83.752869, 53.284915}, + {83.755875, 53.344345}, + {158.665337, 53.055636}, + {43.896560668945, 56.316604614258}, + {37.726588, 55.706583}, + {36.518632, 50.521421}, + {30.324478, 59.935226}, + {43.619614, 43.488693}, + {37.581825, 55.792007}, + {37.572767, 55.854545}, + {56.254806518555, 57.976913452148}, + {39.757977, 47.24049}, + {39.615644, 47.194033}, + {65.835535, 56.92284}, + {86.085663, 55.35206}, + {37.546234, 55.738449}, + {129.722106, 62.044628}, + {30.392884, 59.737473}, + {37.462692, 56.010444}, + {129.743135, 62.03729}, + {30.325883, 59.977636}, + {37.620838, 55.766132}, + {41.456221, 52.704163}, + {58.977708, 53.318187}, + {50.21465, 53.201875}, + {50.184435, 53.215038}, + {50.249444, 53.229543}, + {-6.05347, 54.558107}, + {37.583155, 55.776901}, + {37.865524, 55.660629}, + {37.654325, 55.74818}, + {55.175399780273, 51.775131225586}, + {37.575545, 55.715103}, + {39.817887, 54.600907}, + {49.232221, 55.776836}, + {61.410081, 55.16931}, + {45.934657, 51.595442}, + {36.639658, 55.1256}, + {35.01741, 48.43466}, + {36.362556, 49.956504}, + {30.447275, 50.461134}, + {25.374137, 50.761239}, + {37.809292, 48.010789}, + {31.063169, 46.67501}, + {24.019546508789, 49.808578491211}, + {30.468227, 50.359661}, + {24.72541809082, 49.042282104492}, + {31.015090942383, 51.508712768555}, + {37.804642, 48.000126}, + {27.597656, 53.922958}, + {27.800279, 53.947183}, + {27.448835, 53.88035}, + {29.005191, 54.299218}, + {27.928529, 47.765094}, + {16.918258666992, 52.406845092773}, + {20.820829, 52.292296}, + {17.477279, 51.858627}, + {18.952597, 50.373813}, + {19.489929, 51.788182}, + {16.478347, 50.831223}, + {20.773773, 52.623138}, + {19.173477, 50.302744}, + {19.522705, 51.794034}, + {8.639504, 49.540638}, + {10.032921, 53.592819}, + {9.417453, 48.647983}, + {7.873077, 51.533432}, + {8.6730194091797, 50.107955932617}, + {-9.0424346923828, 38.903274536133}, + {-9.178325, 38.701058}, + {-9.274459, 38.697824}, + {-6.4354, 53.362727}, + {-6.550712, 53.341598}, + {33.627002, 34.913864}, + {42.688064575195, 42.262344360352}, + {44.515634, 40.206528}, + {24.638729, 43.412304}, + {24.594184, 43.421495}, + {23.293263, 42.672813}, + {28.881775, 41.105084}, + {30.813323, 36.988484}, + {29.016952514648, 41.075820922852}, + {29.072749, 40.98203}, + {31.175766, 40.835609}, + {15.174619, 46.335599}, + {15.073787, 46.5382}, + {15.120817, 46.360245}, + {21.157608, 41.062775}, + {-79.614045, 43.690028}, + {-73.545031, 45.545393}, + {-73.584714, 45.5301}, + {-74.920687, 45.637959}, + {-122.424474, 37.771983}, + {-77.054672241211, 38.892288208008}, + {-117.15591, 32.79239}, + {-80.290747, 25.923958}, + {-96.898727, 32.871866}, + {-122.02806, 37.403665}, + {-71.067123413086, 42.359848022461}, + {-71.115189, 42.360535}, + {-118.363129, 33.938141}, + {-82.310165, 29.651413}, + {-80.376663208008, 25.804824829102}, + {-115.26924133301, 36.259689331055}, + {-115.171051, 36.292648}, + {-118.105265, 34.121505}, + {-71.026354, 42.369289}, + {-84.415873, 33.915482}, + {-81.926872, 40.832512}, + {-80.674667358398, 41.01676940918}, + {-118.47862243652, 34.213485717773}, + {-77.232023, 38.932898}, + {-89.958552, 35.147136}, + {-73.975785, 40.7967}, + {-117.110519, 32.665558}, + {-74.386596, 40.433304}, + {-85.651473999023, 30.18424987793}, + {-77.044907, 38.912837}, + {-82.403298, 28.088951}, + {-87.436743, 41.569877}, + {-117.258591, 33.254105}, + {-87.644969, 41.872461}, + {-73.945796, 40.719172}, + {-96.742172, 32.908761}, + {-73.727188, 40.694733}, + {-82.296127, 28.413859}, + {-74.051572, 40.779784}, + {-118.339233, 34.021921}, + {-97.25654, 37.762763}, + {-73.817266, 40.756353}, + {-87.710037, 41.773041}, + {-110.316802, 24.158883}, + {-99.130325317383, 19.423141479492}, + {-99.20314, 19.40139}, + {-116.995627, 32.511636}, + {-99.285146, 19.348948}, + {-100.325588, 25.7042}, + {-99.163284301758, 19.51789855957}, + {-92.94013, 18.088932}, + {-96.122906, 19.178666}, + {-103.39851379395, 25.521926879883}, + {-63.07313, 18.080442}, + {-69.465351, 19.308272}, + {-61.529648, 10.682083}, + {49.786836, 40.430832}, + {48.986282, 40.047226}, + {76.633071899414, 43.198928833008}, + {76.957463, 43.236694}, + {76.903610229492, 43.238754272461}, + {73.165071, 22.314508}, + {70.138779, 22.487228}, + {77.672424, 27.5121}, + {77.291096, 30.136}, + {75.967025756836, 10.99250793457}, + {78.357162, 10.097122}, + {79.467369, 11.613119}, + {81.651979, 21.1937}, + {72.830658, 19.017048}, + {73.00536, 19.123437}, + {73.83584, 20.019958}, + {82.510223, 20.901845}, + {72.996318, 26.274816}, + {75.894913, 26.885254}, + {72.785110473633, 21.167221069336}, + {78.504867553711, 17.403030395508}, + {77.630694, 13.030683}, + {77.573933, 12.918411}, + {77.66098, 12.992706}, + {80.247933, 13.045409}, + {80.243453979492, 13.066177368164}, + {88.313865, 22.486647}, + {88.351965, 22.532272}, + {73.442969, 18.235332}, + {73.89728, 18.536633}, + {72.845535, 19.118423}, + {72.856522, 19.013077}, + {72.85934, 19.167637}, + {76.610653, 8.89774}, + {77.117496, 28.541025}, + {77.284547, 28.535509}, + {77.182772, 28.645594}, + {72.835293, 21.207905}, + {77.243963, 28.612343}, + {77.376623, 28.559655}, + {76.425247, 32.148056}, + {75.860872, 30.909669}, + {75.878334, 31.204605}, + {80.309372, 26.478424}, + {85.670425, 23.053665}, + {67.033498, 24.91506}, + {69.169599, 34.408212}, + {79.919357299805, 6.8946075439453}, + {36.064499, 32.019608}, + {44.008951, 36.1755}, + {48.125905, 29.074631}, + {39.173617, 21.503756}, + {41.732254, 27.478867}, + {46.683792, 24.579849}, + {55.341567993164, 25.243148803711}, + {56.355777, 25.197896}, + {56.358044, 25.079751}, + {56.337203979492, 25.148391723633}, + {34.445915, 31.525955}, + {35.538765, 32.788543}, + {35.276551, 32.916825}, + {34.92343, 32.274716}, + {59.614337, 35.995055}, + {69.30173, 41.322958}, + {69.300007, 41.326206}, + {69.236046, 41.32473}, + {139.468071, 35.564495}, + {139.77012634277, 35.684280395508}, + {137.177314, 34.965334}, + {137.127151, 35.074463}, + {139.443741, 35.797806}, + {105.8470916748, 21.025772094727}, + {106.668561, 10.788345}, + {106.678391, 10.794296}, + {114.151154, 22.281876}, + {114.16236877441, 22.279586791992}, + {103.199779, 13.090897}, + {113.031235, 34.950943}, + {104.093157, 30.683939}, + {113.69957, 34.723801}, + {90.403272, 23.734008}, + {90.405581, 23.798818}, + {90.385048, 23.752281}, + {91.890182, 24.872665}, + {90.386581420898, 23.757247924805}, + {101.694889, 3.06551}, + {101.429214, 3.023163}, + {100.331877, 5.407178}, + {101.70112609863, 3.1427764892578}, + {101.5926361084, 3.0521392822266}, + {100.456797, 5.350741}, + {101.731892, 3.205357}, + {100.461001, 5.316653}, + {151.088426, -33.980484}, + {145.035667, -37.934143}, + {144.337561, -38.141058}, + {150.986618, -33.763046}, + {153.02615, -27.64375}, + {151.157089, -33.849518}, + {151.403723, -33.300471}, + {151.22715, -33.897457}, + {144.752426, -37.810106}, + {153.3162689209, -27.92106628418}, + {144.789119, -37.769713}, + {138.941949, -35.025226}, + {144.817201, -37.79377}, + {150.870968, -33.97522}, + {145.039719, -37.843094}, + {151.083697, -33.947691}, + {153.034744, -27.506058}, + {153.528614, -28.195896}, + {145.396957, -38.073349}, + {106.88941955566, -6.3452911376953}, + {106.744734, -6.121935}, + {104.224411, 0.973251}, + {106.815255, -6.292811}, + {112.73414611816, -7.3162078857422}, + {98.673943, 3.624175}, + {106.896761, -6.399765}, + {113.44036, -8.156164}, + {108.556778, -7.365005}, + {115.178393, -8.737353}, + {107.504416, -6.843215}, + {106.867658, -6.372757}, + {106.94160461426, -6.3054656982422}, + {106.590786, -6.565395}, + {99.402858, 3.260797}, + {112.741459, -7.266218}, + {106.933136, -6.309128}, + {99.052219, 3.550644}, + {106.408768, -2.488174}, + {115.17036437988, -8.7773895263672}, + {106.912766, -6.277313}, + {104.692893, -4.865834}, + {120.995102, 14.532547}, + {123.91410827637, 10.322341918945}, + {121.081009, 14.623184}, + {100.560007, 13.80415}, + {100.413371, 13.87485}, + {100.501343, 13.675507}, + {100.991864, 13.381133}, + {103.911095, 1.328468}, + {103.84757995605, 1.3643646240234}, + {103.671455, 1.321861}, + {103.837704, 1.301133}, + {103.966727, 1.366028}, + {114.735166, 4.829404}, + {175.301824, -37.772553}, + {174.640938, -36.865997}, + {29.905678, 31.20385}, + {3.900245, 36.37122}, + {5.39434, 36.189651}, + {-6.831014, 33.972368}, + {-7.593307, 33.559799}, + {-7.614395, 33.580399}, + {10.705827, 35.615631}, + {10.898169, 35.631319}, + {13.030078, 32.170457}, + {15.089456, 32.365329}, + {23.975617, 32.081633}, + {-1.5071868896484, 12.368545532227}, + {57.482528686523, -20.248489379883}, + {7.523407, 9.076347}, + {3.400612, 6.498928}, + {7.482685, 6.450039}, + {5.665049, 5.890969}, + {3.378754, 6.467514}, + {32.549112, 15.57161}, + {36.771927, -1.275375}, + {36.828866, -1.284714}, + {30.181503295898, -17.357711791992}, + {28.01055, -26.030429}, + {31.955092, -28.775926}, + {27.924713, -26.102964}, + {18.544235229492, -33.868789672852}, + {18.425237, -33.914168}, + {28.312499, -25.735485}, + {30.110566, -23.85693}, + {22.784544, -34.006402}, + {18.464335, -33.939618}, + {18.47282409668, -33.960800170898}, + {18.397865, -33.90667}, + {-90.502526, 14.610737}, + {-90.574631, 14.670822}, + {-89.274302, 13.678015}, + {-87.179318, 14.082459}, + {-84.075251, 9.935299}, + {-79.549942, 8.977515}, + {-77.013579, -12.038005}, + {-58.434448, -34.553833}, + {-54.55725, -25.615217}, + {-58.382504, -34.593887}, + {-64.176671, -31.418213}, + {-58.3961, -34.591141}, + {-57.917429, -35.809726}, + {-58.368207, -34.603216}, + {-64.192942, -31.421835}, + {-39.264058, -14.776709}, + {-59.989024, -3.09292}, + {-38.475616, -3.796754}, + {-43.962204, -19.972443}, + {-43.256607, -22.865982}, + {-43.064085, -22.908391}, + {-43.226395, -22.911301}, + {-43.069804, -22.808875}, + {-43.212225, -22.971538}, + {-44.160422, -23.032301}, + {13.373154, 52.425613}, + {-47.931063, -19.749398}, + {-43.935469, -19.879813}, + {-43.95195, -19.946365}, + {-47.925501, -15.756223}, + {-47.918338, -15.786819}, + {-50.049227, -24.87878}, + {-47.854385375977, -15.723495483398}, + {-48.466222, -1.438078}, + {-43.069037, -22.644836}, + {-40.600762, -11.386819}, + {-60.049209594727, -3.0521392822266}, + {-40.353858, -20.343515}, + {-43.105545043945, -22.904434204102}, + {-46.647491, -23.492203}, + {-49.065672, -22.32071}, + {-46.491165, -23.456706}, + {-47.649026, -22.723424}, + {-46.833787, -23.636195}, + {-46.714553833008, -23.543014526367}, + {-46.556625366211, -23.661117553711}, + {-46.663659, -23.538687}, + {-51.187698, -29.970274}, + {-52.319661, -24.106765}, + {-51.154073, -23.316015}, + {-48.507776, -27.436483}, + {-47.927716, -15.796724}, + {-47.855398, -15.807484}, + {-48.758701, -25.110386}, + {-55.533482, -30.894161}, + {-46.685825, -23.523788}, + {-43.100255, -22.850963}, + {-40.406456, -20.343246}, + {-46.690407, -23.615112}, + {-46.484367, -23.561218}, + {-43.619705, -22.878342}, + {-45.563102, -23.039334}, + {-46.680084, -23.656036}, + {-60.024173, -3.131156}, + {-45.429778, -23.662904}, + {-46.471821, -23.54024}, + {-45.973989, -23.278764}, + {-48.523155, -27.650086}, + {-49.245752, -16.687731}, + {-46.589584, -23.548508}, + {-51.25979, -20.522749}, + {-52.356648, -31.737584}, + {-51.112987, -29.968861}, + {-48.66188, -27.633133}, + {-51.17775, -29.893112}, + {101.607313, 3.18758}, + {-51.21208190918, -30.022201538086}, + {-46.89088, -23.52918}, + {-46.559647, -23.49646}, + {-46.95319, -23.519035}, + {-47.403877, -23.494846}, + {-46.531263, -23.64069}, + {-46.544, -23.631127}, + {-46.614303588867, -23.32878112793}, + {-60.03329, -3.128357}, + {-39.581559, -8.092066}, + {-34.916964, -8.021412}, + {-35.768051147461, -9.6823883056641}, + {-43.216782, -22.972183}, + {-34.899391, -8.07662}, + {-38.514407, -12.992289}, + {-35.182882, -5.823207}, + {-43.943252563477, -19.962844848633}, + {-75.56565, 6.226439}, + {-75.56694, 6.239548}, + {-75.584766, 6.168621}, + {-74.184579, 4.622291}, + {-74.529019, 4.257591}, + {-75.684128, 4.821466}, + {-71.625294, 10.663008}, + {-66.918411254883, 10.492630004883}, + {-66.885896, 10.492347}, + {-71.648015, 10.555918}, + {-64.464737, 9.433243}, + {-66.835234, 10.499451}, + {-66.989316, 10.449245}, + {-66.942235, 10.337229}, + {-66.949825, 10.47349}, + {-58.164636, 6.800288}, + {-54.636627, -25.502302}, + {-56.875769, -26.592299}, + {-56.195755004883, -34.902877807617}, + {19.068832, 47.50351}, + {2.4039459228516, 48.80744934082}, + {-6.195034, 57.389674}, + {100.583479, 13.719336}, + {8.5933685302734, 44.91828918457}, + {13.08609, 43.805923}, + {144.44378, -37.749539}, + {11.643449, 48.276771}, + {-18.113021850586, 65.678329467773}, + {23.475949, 60.658423}, + {-17.34257, 65.694126}, + {11.451872, 48.172409}, + {11.590576, 48.175049}, + {7.968116, 48.57848}, + {101.72172546387, 3.2457733154297}, + {101.60499572754, 3.0699920654297}, + {102.00736999512, 2.6772308349609}, + {101.54319763184, 3.0260467529297}, + {101.37977600098, 3.0837249755859}, + {101.67503356934, 3.2567596435547}, + {23.61442565918, 46.790084838867}, + {17.85141, 59.246816}, + {16.327194, 58.684433}, + {-77.102737, -12.051659}, + {5.132125, 51.558975}, + {8.612595, 53.002853}, + {100.58464050293, 13.740463256836}, + {-75.698891, 45.328217}, + {2.3339080810547, 48.913192749023}, + {18.07251, 59.331116}, + {-0.29068, 51.441879}, + {10.050430297852, 44.043502807617}, + {18.069076538086, 59.330978393555}, + {-49.281692, -25.415421}, + {23.230304, 66.549685}, + {16.343613, 48.320084}, + {8.5576629638672, 40.725631713867}, + {16.434389, 48.236827}, + {16.642196, 50.723736}, + {17.870626, 59.240301}, + {16.660995, 50.657272}, + {24.723693, 60.178722}, + {17.022971, 51.094403}, + {11.557323, 48.137087}, + {16.342506, 48.21805}, + {16.420091, 48.184583}, + {17.015278, 51.096645}, + {16.447048, 48.272724}, + {6.060369, 50.793758}, + {26.399459838867, 59.443588256836}, + {13.405094, 52.582111}, + {16.984177, 51.124191}, + {19.031753540039, 50.25764465332}, + {11.544894, 48.113251}, + {2.2336578369141, 48.832168579102}, + {6.766434, 43.420716}, + {16.398697, 48.224258}, + {-6.257858, 53.356018}, + {-6.2546539306641, 53.296737670898}, + {-6.249161, 53.376389}, + {-6.440598, 53.05806}, + {13.309078, 47.844772}, + {-9.190293, 38.83461}, + {18.830229, 59.613026}, + {1.4920806884766, 43.58757019043}, + {-6.094957, 53.489982}, + {34.352188, 53.236656}, + {11.941452, 47.825546}, + {19.093094, 47.477646}, + {24.351383, 44.426776}, + {26.004777, 45.283722}, + {19.61540222168, 46.923294067383}, + {16.272811889648, 48.207321166992}, + {-6.25848, 53.388748}, + {12.69401550293, 56.044692993164}, + {12.564926, 55.680084}, + {52.546920776367, 57.762680053711}, + {-8.541443, 54.149209}, + {-0.843887, 51.719376}, + {-6.292849, 53.384199}, + {-9.108009, 52.976761}, + {-43.210135, -22.898941}, + {13.67951, 55.864264}, + {-6.295853, 53.302865}, + {-6.382876, 53.361716}, + {16.368599, 48.208008}, + {16.417007446289, 48.233413696289}, + {-6.341629, 53.379288}, + {12.419351, 53.1704}, + {-83.860016, 32.999954}, + {-6.2738800048828, 53.35578918457}, + {-79.398880004883, 43.65348815918}, + {16.44722, 59.297333}, + {-6.4524078369141, 53.57551574707}, + {35.267621, 46.770585}, + {-6.380844, 53.33107}, + {19.229851, 50.343819}, + {16.662731, 50.743104}, + {13.040084838867, 55.723342895508}, + {-84.364872, 33.950157}, + {8.6304473876953, 49.325180053711}, + {11.517782, 48.119148}, + {7.979635, 48.58861}, + {16.346352, 48.210411}, + {35.169508, 32.91224}, + {35.267144, 33.018037}, + {8.020706, 47.555205}, + {8.519845, 47.388628}, + {-6.440048, 53.35326}, + {82.919511, 55.025711}, + {-2.40205, 51.39231}, + {16.697626, 49.165282}, + {8.695816, 50.110703}, + {-8.426666, 53.454882}, + {16.515198, 48.281479}, + {16.243973, 48.004623}, + {8.7870025634766, 50.129928588867}, + {-1.090391, 52.26883}, + {34.796677, 31.791458}, + {14.478378, 50.110703}, + {35.027736, 32.528124}, + {35.027847290039, 32.514724731445}, + {17.995109, 49.592973}, + {19.189682006836, 50.352401733398}, + {16.204834, 47.773361}, + {9.99959, 53.550882}, + {30.340118, 59.948273}, + {37.55333, 55.601578}, + {4.064181, 39.961866}, + {8.5562896728516, 49.621810913086}, + {2.550888, 48.864029}, + {7.7501678466797, 48.582229614258}, + {31.411491, 58.665196}, + {13.327271, 45.896086}, + {17.668305, 49.800568}, + {33.903294, 58.384867}, + {35.995331, 30.920334}, + {35.619418, 30.136713}, + {27.536766, 53.902448}, + {7.763297, 48.210674}, + {17.100317, 48.393104}, + {3.158008, 42.424268}, + {15.635164, 49.695602}, + {7.70328, 48.144346}, + {27.533455, 53.910354}, + {8.4889984130859, 50.007705688477}, + {-81.499655, 35.146457}, + {11.632461547852, 48.226547241211}, + {18.36118, 49.626216}, + {8.581696, 48.928986}, + {16.643337, 49.208862}, + {14.306873, 50.092534}, + {32.413101196289, 58.752822875977}, + {30.50972, 59.808884}, + {10.195999145508, 48.744277954102}, + {18.043048, 48.34783}, + {17.392044067383, 49.579238891602}, + {9.604111, 48.616105}, + {-77.179985, 38.967133}, + {-77.093124, 37.505264}, + {30.126571655273, 59.571304321289}, + {30.414962768555, 59.948959350586}, + {19.20911, 47.349997}, + {21.393814086914, 43.904800415039}, + {9.4228363037109, 39.138107299805}, + {9.2305755615234, 49.18098449707}, + {16.563187, 49.191055}, + {8.4807586669922, 49.42268371582}, + {13.481827, 52.12944}, + {16.960830688477, 49.551773071289}, + {-58.059310913086, -35.25032043457}, + {27.589515, 53.911972}, + {10.442179, 63.33981}, + {17.749099731445, 49.581985473633}, + {23.861617, 53.661347}, + {23.89801, 53.66272}, + {11.171036, 47.903824}, + {77.222213745117, 28.569259643555}, + {-6.430985, 53.354691}, + {8.808059, 53.02231}, + {-6.299973, 53.345627}, + {11.323471, 46.496811}, + {30.151290893555, 59.535598754883}, + {30.146255, 59.791031}, + {8.6194610595703, 53.307723999023}, + {116.437569, 39.950752}, + {11.756057739258, 53.359909057617}, + {8.6112213134766, 52.96989440918}, + {7.002926, 51.447859}, + {30.321578979492, 59.848709106445}, + {116.388016, 39.937363}, + {9.926834, 48.378296}, + {9.622884, 52.398613}, + {-6.1090850830078, 53.26789855957}, + {18.758011, 49.440195}, + {-79.382401, 43.834076}, + {16.54324, 52.375283}, + {23.718567, 52.090759}, + {13.220215, 46.086731}, + {-6.1173248291016, 53.285751342773}, + {-0.819818, 37.767482}, + {10.187947, 56.17191}, + {14.388656616211, 50.13542175293}, + {11.816941, 47.7754}, + {8.6730194091797, 49.272994995117}, + {17.16895, 48.14284}, + {12.864303588867, 52.016830444336}, + {1.837051, 41.597397}, + {37.999836, 55.573716}, + {13.447677, 52.602127}, + {17.000198, 51.063309}, + {10.50910949707, 53.119583129883}, + {8.598132, 48.045024}, + {20.701662, 49.871065}, + {7.6567840576172, 51.714706420898}, + {6.862335, 51.190109}, + {30.327072, 59.760818}, + {11.405509, 60.858256}, + {8.6716461181641, 49.538040161133}, + {-9.060896, 38.588182}, + {15.74923, 50.03554}, + {17.574626, 48.203481}, + {11.986313, 47.715683}, + {-79.429057, 43.652944}, + {9.128762, 39.22985}, + {12.516862, 51.324463}, + {-79.394939, 43.648234}, + {9.2140960693359, 48.749771118164}, + {9.711228, 53.748894}, + {11.593695, 48.399054}, + {11.377947, 49.633125}, + {21.634393, 37.636655}, + {7.7790069580078, 48.020553588867}, + {10.978518, 51.647}, + {14.454143, 46.058848}, + {8.6634063720703, 50.232925415039}, + {17.111892700195, 48.144149780273}, + {10.533142, 49.76326}, + {11.845779, 50.701981}, + {10.691757, 63.426134}, + {11.388016, 49.614945}, + {18.72963, 48.483353}, + {9.9584197998047, 53.549423217773}, + {145.144775, -37.820091}, + {-60.292436, -33.337785}, + {-64.211502, -31.411057}, + {9.8787689208984, 51.552658081055}, + {9.677582, 50.659332}, + {-63.151073, -32.42343}, + {9.2360687255859, 48.781356811523}, + {10.440152, 63.421003}, + {11.727277, 51.703851}, + {11.552352, 52.067185}, + {12.833405, 50.988235}, + {9.443961, 52.364743}, + {13.527603149414, 51.059646606445}, + {8.847326, 50.142339}, + {10.70961, 52.183914}, + {7.0168304443359, 51.023941040039}, + {-3.713837, 40.427399}, + {-3.709571, 40.412022}, + {9.890412, 47.089757}, + {10.54069519043, 52.251663208008}, + {10.437698364258, 63.437118530273}, + {7.223648, 50.727036}, + {14.139861, 57.557831}, + {15.419998168945, 47.070236206055}, + {-43.299179, -22.892532}, + {13.044891, 55.72197}, + {13.008695, 47.634855}, + {-16.321152, 28.483841}, + {-85.285492, 34.979095}, + {19.428634643555, 51.711959838867}, + {16.394411, 48.211067}, + {14.811287, 46.74717}, + {2.626419, 39.564972}, + {-5.857031, 34.081977}, + {-1.8587493896484, 52.898483276367}, + {8.363574, 51.884537}, + {14.896774291992, 40.924758911133}, + {11.171035766602, 43.749618530273}, + {49.613571166992, 53.513717651367}, + {3.802349, 50.432445}, + {-79.470291137695, 43.830642700195}, + {-6.093207, 52.999506}, + {17.973076, 59.247566}, + {-3.051224, 53.566742}, + {16.174189, 48.397847}, + {-83.442535, 42.284042}, + {17.071304, 52.433853}, + {-71.385123, 41.889963}, + {16.919305, 52.23881}, + {34.872045, 32.099435}, + {-73.633032, 41.020203}, + {-73.746071, 40.951195}, + {34.804000854492, 32.11784362793}, + {18.073196, 59.2939}, + {21.213912, 45.767532}, + {34.756393, 31.955109}, + {4.9925994873047, 43.413162231445}, + {13.306176, 52.593279}, + {-71.222845, 42.479521}, + {7.3807525634766, 46.573104858398}, + {-0.20118713378906, 43.271713256836}, + {28.986740112305, 41.046981811523}, + {15.921946, 62.543111}, + {6.4290618896484, 51.072006225586}, + {16.3916, 61.397095}, + {15.680224, 48.227791}, + {13.608627319336, 51.14616394043}, + {7.873413, 47.312734}, + {-111.890945, 40.546417}, + {-44.294743, -23.004181}, + {39.751968383789, 43.56559753418}, + {12.998428, 47.826004}, + {133.26759338379, 44.15885925293}, + {126.79389953613, 37.484664916992}, + {16.528244, 48.213329}, + {20.033338, 49.299559}, + {15.095901, 37.54715}, + {16.180932, 51.128923}, + {19.063556, 47.511352}, + {35.523605, 38.691101}, + {-88.02864074707, 42.307662963867}, + {30.279535, 59.913359}, + {16.013259887695, 47.877731323242}, + {114.15687561035, 22.326278686523}, + {-0.21217346191406, 51.526565551758}, + {8.2047271728516, 50.043411254883}, + {7.279129, 51.288529}, + {17.049179, 51.110733}, + {11.913071, 57.673416}, + {16.650466918945, 59.063186645508}, + {9.696722, 45.702438}, + {17.365036, 46.775208}, + {8.355102, 49.019623}, + {14.284973, 46.650181}, + {13.461685180664, 52.629318237305}, + {13.256125, 52.486207}, + {13.828353, 58.382034}, + {7.468643, 51.505508}, + {-6.558838, 53.441162}, + {114.192123, 22.337265}, + {21.165244, 48.766302}, + {-99.22411, 19.581805}, + {-121.981888, 37.305679}, + {14.045604, 46.609087}, + {114.13764953613, 22.370223999023}, + {8.401566, 48.943863}, + {55.710434, -4.32518}, + {27.408828735352, 54.050674438477}, + {8.5329437255859, 47.405319213867}, + {-89.981460571289, 29.916458129883}, + {13.087692, 50.841446}, + {24.729537963867, 60.224990844727}, + {-16.728744506836, 28.091354370117}, + {7.2132110595703, 51.039047241211}, + {7.4562835693359, 51.533432006836}, + {-46.728286743164, -23.551254272461}, + {7.26059, 51.446915}, + {39.891356, 57.691269}, + {37.619934, 55.717163}, + {11.602249, 48.183517}, + {9.174817, 48.56499}, + {9.135051, 48.709825}, + {80.575790405273, 7.2667694091797}, + {-122.268219, 47.469177}, + {7.5084686279297, 51.477127075195}, + {20.954124, 48.860487}, + {-58.520405, -34.510488}, + {6.1489105224609, 50.802841186523}, + {114.17747497559, 22.320785522461}, + {-51.090496, -25.261039}, + {-3.6591339111328, 40.419387817383}, + {8.496551, 51.355591}, + {13.02269, 48.70079}, + {-101.396336, 20.624144}, + {-42.963311, -22.802124}, + {-96.45181, 18.741213}, + {16.602402, 48.745308}, + {7.362354, 51.586444}, + {101.920166, 2.71019}, + {15.991837, 58.206528}, + {16.377182, 48.26683}, + {114.134354, 22.366379}, + {-1.5071868896484, 52.917709350586}, + {21.252365112305, 52.100601196289}, + {103.74183654785, 1.4948272705078}, + {12.11586, 51.076298}, + {-98.293365, 19.15861}, + {10.050430297852, 53.693618774414}, + {12.112298, 50.430461}, + {103.74321, 1.380844}, + {20.442123413086, 47.395706176758}, + {-99.197245, 18.937372}, + {-104.844034, 21.443534}, + {7.716534, 53.676459}, + {115.797584, -32.093124}, + {10.822946, 54.789344}, + {19.430368, 51.14443}, + {-100.42067, 20.620468}, + {121.451841, 25.178604}, + {14.816664, 46.789169}, + {5.686643, 59.531927}, + {103.8338470459, 1.3025665283203}, + {19.325518, 49.112798}, + {121.555664, 25.083801}, + {17.605591, 59.098206}, + {7.00264, 51.39061}, + {-1.915741, 37.167779}, + {10.701370239258, 59.926986694336}, + {121.562053, 25.028915}, + {-18.674683, 63.487727}, + {-118.31520080566, 33.776779174805}, + {55.45280456543, -20.874710083008}, + {14.140434, 55.772438}, + {-103.442002, 20.708346}, + {-100.062486, 26.3694}, + {13.371906, 52.546749}, + {12.169418334961, 45.466232299805}, + {13.978729, 49.586105}, + {14.67155456543, 50.532302856445}, + {114.040146, 22.445755}, + {-2.1279144287109, 53.46565246582}, + {121.019211, 24.77726}, + {8.4272, 50.062466}, + {-100.528336, 25.73204}, + {16.905644, 48.280824}, + {120.290543, 22.718491}, + {120.656275, 24.241104}, + {2.283783, 49.164505}, + {120.653768, 24.206412}, + {19.092894, 47.515125}, + {-0.11864, 51.516146}, + {-14.114888, 28.243386}, + {8.7073516845703, 51.468887329102}, + {120.64430236816, 24.171981811523}, + {120.53581237793, 24.067611694336}, + {121.520576, 25.090714}, + {-100.150182, 25.684974}, + {121.160488, 24.951153}, + {-118.11367, 33.766136}, + {-72.771378, 41.53656}, + {120.697892, 24.182996}, + {135.29457092285, 34.731216430664}, + {113.97834777832, 22.393569946289}, + {114.174728, 22.379379}, + {121.252122, 25.1017}, + {-73.441543579102, 45.758743286133}, + {26.122055053711, 44.37858581543}, + {120.64567565918, 24.397201538086}, + {10.542068481445, 36.394271850586}, + {8.4381866455078, 48.995590209961}, + {102.45231628418, 12.389144897461}, + {121.025881, 24.824099}, + {120.510897, 24.077225}, + {114.17198181152, 22.322158813477}, + {120.68412780762, 24.148635864258}, + {9.259506, 48.81102}, + {-83.047714, 39.918137}, + {-76.37764, 37.030792}, + {-3.914731, 40.368502}, + {120.464401, 23.803024}, + {-118.106919, 34.003372}, + {72.861671, 19.175949}, + {12.979797, 55.629252}, + {120.301285, 22.617569}, + {121.536026, 24.959726}, + {7.576152, 47.568937}, + {12.508621, 55.694046}, + {2.344666, 48.906441}, + {56.346817016602, 27.211074829102}, + {98.352127, 7.887039}, + {121.221827, 24.962997}, + {16.307144165039, 50.407333374023}, + {-102.90412902832, 20.012283325195}, + {120.70472717285, 24.27360534668}, + {10.447311401367, 63.434371948242}, + {135.50605773926, 34.652938842773}, + {-92.970432, 34.262925}, + {114.19120788574, 22.28645324707}, + {36.220464, 50.015788}, + {49.428177, 53.522873}, + {120.216236, 22.990723}, + {23.995686, 49.81081}, + {13.401953, 47.991729}, + {-75.362777709961, 40.284805297852}, + {2.162387, 41.413528}, + {-112.62016296387, 33.863296508789}, + {120.66215515137, 23.884963989258}, + {120.31059265137, 22.621536254883}, + {120.14305114746, 23.032150268555}, + {139.76188659668, 35.676040649414}, + {120.492869, 23.766713}, + {15.429457, 62.76085}, + {8.529648, 47.396805}, + {99.883576, 19.182816}, + {113.08433532715, 3.1812286376953}, + {153.3959197998, -27.919692993164}, + {25.247971, 54.695267}, + {120.196806, 22.981535}, + {-121.961838, 47.856894}, + {153.04298400879, -27.432174682617}, + {120.625991, 24.169693}, + {-80.140388, 26.005875}, + {-1.62886, 48.157074}, + {-1.6747283935547, 48.083724975586}, + {104.92836, 11.536331}, + {-75.795365, 45.337601}, + {139.8168182373, 35.714492797852}, + {2.255287, 49.417534}, + {-67.092819213867, 10.238571166992}, + {-3.562087, 50.421525}, + {9.401114, 47.66837}, + {120.322145, 22.676478}, + {121.427496, 24.993867}, + {-0.19020080566406, 51.451034545898}, + {-0.22453308105469, 51.48811340332}, + {8.392427, 51.912902}, + {6.702347, 49.349442}, + {120.693135, 24.182708}, + {-106.035234, 39.641191}, + {8.1168365478516, 49.20295715332}, + {9.621602, 45.592431}, + {120.452214, 23.602238}, + {121.300795, 25.009271}, + {120.18562316895, 22.896194458008}, + {121.508102, 25.039215}, + {121.580235, 25.078178}, + {121.2279510498, 24.947891235352}, + {27.80574, 47.215059}, + {25.737451, 62.234692}, + {11.58576965332, 48.171615600586}, + {121.303139, 25.014668}, + {120.37376403809, 22.627029418945}, + {2.2611236572266, 49.900588989258}, + {-87.56721496582, 36.526107788086}, + {21.428665, 49.004018}, + {-87.317276000977, 36.63459777832}, + {-78.952560424805, 35.049819946289}, + {121.0961151123, 24.886093139648}, + {7.1665191650391, 51.530685424805}, + {15.755081176758, 58.700637817383}, + {7.0140838623047, 51.451034545898}, + {13.078536987305, 47.843399047852}, + {120.32844543457, 22.665481567383}, + {37.746423, 55.600653}, + {43.864779, 56.248332}, + {44.481779, 48.759581}, + {120.65528869629, 28.024063110352}, + {-99.192013, 19.42592}, + {7.99598, 48.57628}, + {8.237665, 48.236487}, + {8.208832, 48.829424}, + {-90.092697143555, 20.233383178711}, + {121.018181, 24.825325}, + {9.1330718994141, 45.506057739258}, + {27.912826538086, -26.168746948242}, + {9.5354461669922, 51.279373168945}, + {30.538558959961, 50.427932739258}, + {-104.96406555176, 21.202926635742}, + {40.34087, 47.294485}, + {9.596025, 45.737992}, + {120.56602478027, 24.122543334961}, + {120.217209, 22.993698}, + {-99.245882, 19.346297}, + {-8.9009857177734, 38.601150512695}, + {120.566483, 24.243164}, + {100.51460266113, 13.859939575195}, + {13.61618, 52.592239}, + {120.3572845459, 22.614669799805}, + {120.493989, 23.445636}, + {-111.899774, 40.569665}, + {121.236191, 22.880402}, + {-6.38237, 53.36373}, + {-86.528002, 35.949327}, + {105.7901, 21.003799}, + {-96.724319, 17.05101}, + {135.544739, 34.520874}, + {151.15608215332, -33.780899047852}, + {9.296219, 45.537644}, + {23.950435, 54.896965}, + {-118.48274230957, 34.306869506836}, + {-0.38246154785156, 51.879501342773}, + {74.402161, 16.959457}, + {12.242202758789, 51.830062866211}, + {-122.51472473145, 45.42366027832}, + {115.79521179199, -31.872024536133}, + {82.919655, 55.049915}, + {79.886856, 6.885452}, + {26.06575012207, 44.46647644043}, + {120.998955, 24.763527}, + {27.677078, 53.941269}, + {120.309906, 22.637329}, + {5.973718, 51.622893}, + {-81.797676, 26.133041}, + {7.574771, 47.100394}, + {6.117717, 49.441125}, + {5.933695, 49.96945}, + {24.661463, 44.976962}, + {8.671646, 49.359684}, + {120.494664, 22.690817}, + {23.927536010742, 54.919967651367}, + {-16.628838, 28.050499}, + {56.254959, 58.016586}, + {120.34074, 22.62958}, + {-118.146817, 34.03829}, + {120.536646, 23.706142}, + {23.795357, 38.020592}, + {120.294662, 23.305573}, + {113.40843200684, 24.189834594727}, + {83.22624206543, 17.718887329102}, + {-46.611901, -23.560181}, + {121.748102, 25.128328}, + {121.484835, 25.073344}, + {6.936469, 51.66489}, + {35.000381, 32.786636}, + {121.270588, 24.978431}, + {30.857162475586, -29.812088012695}, + {16.46095, 59.607926}, + {-46.655502319336, -23.430404663086}, + {106.837234, -6.197662}, + {121.026862, 24.817429}, + {120.924606, 24.710464}, + {120.685226, 24.119522}, + {113.975601, 22.387733}, + {114.175415, 22.27478}, + {-116.894394, 33.741898}, + {-46.675373, -23.536236}, + {12.717361450195, 41.638870239258}, + {-86.166458129883, 42.195053100586}, + {121.382034, 25.046494}, + {121.534966, 25.07395}, + {12.161818, 51.280532}, + {13.505630493164, 52.427444458008}, + {120.186996, 23.012924}, + {121.550949, 25.03331}, + {120.354734, 22.625264}, + {30.979385375977, -29.913711547852}, + {-90.554122924805, 19.833755493164}, + {-92.420425415039, 34.747695922852}, + {13.280072, 52.470116}, + {120.643547, 24.150421}, + {13.092269897461, 45.927658081055}, + {-89.629581, 21.034857}, + {-83.695907592773, 41.69792175293}, + {7.196045, 51.268387}, + {120.684814, 24.154404}, + {-74.14029, 40.061726}, + {31.035690307617, -29.715957641602}, + {-79.490058, 44.061188}, + {-104.81698, 47.912076}, + {-83.678741, 41.54068}, + {120.97114562988, 22.636642456055}, + {112.74513244629, -7.3285675048828}, + {-73.945098, 40.794758}, + {-77.829666, 34.256973}, + {-73.824013, 40.702299}, + {-2.6525115966797, 53.627700805664}, + {-90.44237, 38.629463}, + {15.438275, 48.405882}, + {23.320541381836, 42.683944702148}, + {120.28659, 22.792392}, + {121.528015, 23.862991}, + {5.3771209716797, 50.85090637207}, + {14.334902, 41.057576}, + {-99.505535, 17.552317}, + {13.033218383789, 43.816909790039}, + {14.393902, 49.019187}, + {-156.472416, 20.863215}, + {-96.761398, 19.462968}, + {-88.078079223633, 38.237228393555}, + {-92.449496, 15.139637}, + {-117.66975402832, 34.05143737793}, + {114.191551, 22.260017}, + {-95.848159790039, 36.247329711914}, + {-88.746869, 34.159928}, + {114.071893, 22.347282}, + {-4.127295, 52.504209}, + {121.635818, 25.059128}, + {-73.088607788086, 40.747604370117}, + {-112.279933, 33.590356}, + {-0.960622, 51.275062}, + {18.075027, 59.307632}, + {-85.620804, 42.275848}, + {15.628807, 47.211848}, + {100.809173, 13.689995}, + {38.125992, 56.301695}, + {2.181931, 48.82164}, + {-113.532705, 53.703237}, + {-90.38932800293, 38.68766784668}, + {22.114791870117, -29.53742980957}, + {2.9505157470703, 50.633926391602}, + {-104.047623, 52.848129}, + {-79.30549621582, 43.17008972168}, + {-113.06922912598, 52.858657836914}, + {-72.579491, 41.99768}, + {-122.816849, 49.282608}, + {-79.25267, 43.903519}, + {-89.580458, 37.245713}, + {-101.85356140137, 50.654525756836}, + {-80.344619, 40.764542}, + {-86.130752563477, 39.762954711914}, + {-87.263395, 41.604668}, + {-84.071798, 34.129716}, + {-79.540328979492, 43.591690063477}, + {-81.683693, 30.878449}, + {-117.58598327637, 33.651809692383}, + {-82.988662719727, 42.508163452148}, + {-84.692916870117, 33.940200805664}, + {-94.257889, 39.027214}, + {-118.124313, 34.06105}, + {-118.52668762207, 34.170913696289}, + {-79.657821, 44.370591}, + {-82.852064, 42.571628}, + {-104.870682, 39.67424}, + {-97.468905, 35.330873}, + {-79.709994, 44.334018}, + {-82.016372680664, 26.591720581055}, + {13.436965942383, 45.985336303711}, + {-95.603713989258, 29.753036499023}, + {-80.292282, 26.170883}, + {-84.649658, 39.003799}, + {-79.876785, 43.524399}, + {-79.464797973633, 43.760604858398}, + {-79.612427, 43.771591}, + {-118.252716, 34.151688}, + {-84.222794, 34.048233}, + {-80.090175, 42.049485}, + {-118.206253, 33.93013}, + {-121.41334533691, 38.713760375977}, + {-73.490524, 45.526199}, + {-82.226486206055, 38.790664672852}, + {-80.706253, 35.311661}, + {-121.972525, 37.232167}, + {-74.312210083008, 40.014266967773}, + {-77.029742, 38.88046}, + {-96.718826293945, 33.003616333008}, + {-82.063065, 26.904556}, + {-96.357193, 42.472}, + {-81.300888, 28.433304}, + {-84.103363, 39.864578}, + {-122.860963, 49.092408}, + {-76.133652, 36.805801}, + {-75.84342956543, 45.398941040039}, + {-80.298622, 44.519348}, + {-81.528856, 41.074449}, + {-78.866575, 43.879555}, + {-79.129206, 43.115362}, + {-73.326187, 45.580902}, + {-82.977324, 42.259406}, + {-77.177288, 39.125159}, + {-78.203875, 44.469314}, + {-106.58866882324, 52.11296081543}, + {-117.000961, 46.728439}, + {-123.04481506348, 49.340286254883}, + {-87.599488, 41.706162}, + {-117.965698, 33.789139}, + {-108.2984161377, 52.773513793945}, + {-118.43811, 34.030151}, + {-76.76118, 39.976207}, + {-86.359403, 39.539796}, + {-113.51097, 53.52989}, + {-80.679703, 35.308457}, + {-123.038635, 49.223557}, + {-93.236677, 37.020796}, + {-77.40193, 39.052017}, + {-73.761520385742, 45.569229125977}, + {-85.00833, 41.268083}, + {-80.69664, 28.013077}, + {-86.025284, 39.937912}, + {-71.07914, 41.809845}, + {-94.327926635742, 39.08317565918}, + {-123.1175994873, 49.20295715332}, + {-94.17162, 30.02356}, + {-69.513245, 44.038696}, + {-82.922059, 40.000305}, + {-124.959099, 49.706183}, + {-72.786483764648, 41.548233032227}, + {-122.768783, 53.882103}, + {28.231659, -25.963669}, + {-79.099731, 43.125}, + {-79.632445, 44.11428}, + {-123.327713, 48.431511}, + {-82.65495300293, 46.391830444336}, + {-114.13078308105, 51.787490844727}, + {121.54655456543, 25.079727172852}, + {-86.763099, 40.812255}, + {-89.623033, 36.855011}, + {-117.420426, 47.651131}, + {-75.612717, 39.712143}, + {-79.031387, 42.881424}, + {-75.859909057617, 45.294570922852}, + {-122.47627258301, 48.711318969727}, + {-86.243133, 41.808014}, + {120.594169, 22.365889}, + {-114.42741394043, 51.271133422852}, + {-117.864418, 33.766136}, + {-118.676376, 34.558182}, + {-75.897475, 45.315106}, + {-82.376174926758, 32.446060180664}, + {-93.75114440918, 51.055526733398}, + {-95.466384887695, 29.600601196289}, + {114.23240661621, 22.282333374023}, + {120.422516, 23.470917}, + {-76.487562, 44.229523}, + {-75.190951, 40.670286}, + {-76.556167602539, 37.156448364258}, + {-75.056533813477, 39.85221862793}, + {-85.694733, 38.027115}, + {114.03190612793, 22.444381713867}, + {-84.500091, 42.714319}, + {-75.973376, 45.297152}, + {-94.542389, 39.09256}, + {-74.405319, 40.452622}, + {-80.832596, 35.22377}, + {-75.663528442383, 45.324783325195}, + {-113.496623, 53.513254}, + {-113.60206604004, 53.549423217773}, + {-83.767318725586, 39.911270141602}, + {-92.945022583008, 39.069442749023}, + {-95.686569, 38.985214}, + {-122.689134, 49.111407}, + {19.954329, 50.086258}, + {-74.198914, 39.784241}, + {14.410477, 50.036392}, + {-80.251905, 43.186464}, + {120.422745, 22.553329}, + {-85.781807, 42.222914}, + {-74.007601, 40.705294}, + {-97.632064819336, 35.608749389648}, + {-79.279861, 43.824692}, + {-80.702133178711, 35.354690551758}, + {-79.551773, 43.793106}, + {121.525955, 25.059586}, + {120.892868, 24.672203}, + {-82.297897338867, 41.342239379883}, + {-79.751815795898, 43.440628051758}, + {121.41471862793, 25.061874389648}, + {-114.21043395996, 51.133804321289}, + {18.085556030273, 59.273300170898}, + {-83.61557, 42.243805}, + {-118.040543, 33.982086}, + {-72.566757, 41.994004}, + {-117.894287, 34.121475}, + {-79.821167, 35.79586}, + {-102.34245300293, 31.861038208008}, + {-84.5327, 33.962173}, + {-74.147415161133, 40.42350769043}, + {-73.687362, 42.572708}, + {-73.982637, 40.653534}, + {-78.848190307617, 42.829513549805}, + {-76.571274, 39.380493}, + {-79.724974, 43.659106}, + {-79.410208, 43.655892}, + {-79.841079711914, 43.355484008789}, + {-122.849121, 49.188881}, + {-93.304824829102, 37.23747253418}, + {-75.24055480957, 39.890670776367}, + {-72.661514, 41.791763}, + {-113.58558654785, 53.644180297852}, + {113.41529846191, 23.172225952148}, + {-74.264832, 40.464363}, + {-97.78450012207, 30.534439086914}, + {-79.803932, 43.728745}, + {-114.271718, 48.228212}, + {-87.83088684082, 42.384567260742}, + {-65.593874, 43.566976}, + {-121.79649353027, 38.496780395508}, + {-83.597717, 32.612229}, + {120.287933, 23.302689}, + {-117.485839, 34.12232}, + {-75.151575, 40.049186}, + {-97.673263549805, 30.383377075195}, + {-85.619612, 44.789887}, + {-118.254776, 34.07959}, + {-78.83792, 43.919943}, + {-97.127822, 49.910437}, + {-83.294907, 42.677422}, + {-81.326294, 34.144135}, + {-96.707153, 40.814896}, + {-96.834183, 46.84021}, + {-117.865677, 33.753891}, + {-74.745483, 40.237427}, + {-89.408798217773, 31.292495727539}, + {-74.307265, 40.110029}, + {-90.97297668457, 30.094985961914}, + {-84.979539, 41.09446}, + {-87.388683, 41.447366}, + {-118.083235, 52.873167}, + {77.014846801758, 28.986740112305}, + {-123.00224304199, 49.240036010742}, + {-114.124832, 51.055985}, + {46.645889282227, 24.740524291992}, + {25.508511, -33.971259}, + {-91.732406616211, 29.92057800293}, + {-87.830886, 42.556621}, + {-80.053087, 43.952275}, + {-73.158646, 44.501495}, + {-79.696809, 43.443973}, + {-91.512680053711, 44.819412231445}, + {-73.937301635742, 40.585556030273}, + {-96.342266, 45.513051}, + {-80.909761, 34.160208}, + {-99.741439819336, 32.373275756836}, + {-80.334091, 25.760468}, + {-87.987785, 42.175827}, + {-118.541651, 34.222354}, + {-97.170639038086, 30.038681030273}, + {-77.8022, 38.852463}, + {-105.488368, 41.273724}, + {-71.783421, 42.290244}, + {104.85832214355, 15.227737426758}, + {-77.148056030273, 39.041976928711}, + {-86.115646, 39.921913}, + {28.058395385742, -26.04377746582}, + {-71.064976, 42.480704}, + {-76.841812133789, 39.187545776367}, + {-117.761023, 33.761017}, + {-82.707138061523, 27.760391235352}, + {-74.460526, 40.808716}, + {-84.559707641602, 33.731460571289}, + {81.778793334961, 17.008895874023}, + {-99.480514526367, 27.521438598633}, + {-104.53010559082, 50.441665649414}, + {-102.89451599121, 40.788803100586}, + {-101.269726, 50.75539}, + {-79.51286315918, 40.276565551758}, + {-95.116195678711, 29.662399291992}, + {-75.19551, 39.833542}, + {-104.7388458252, 43.700180053711}, + {-88.231888, 40.100327}, + {-80.27504, 25.941467}, + {-104.82398986816, 38.895034790039}, + {-123.175003, 49.171921}, + {-83.443082, 42.308569}, + {-113.963516, 50.931931}, + {9.334659, 48.627491}, + {-97.029665, 49.892552}, + {-120.90385437012, 37.751083374023}, + {-81.445771, 41.252518}, + {-79.424698, 43.853714}, + {-73.858337, 40.673447}, + {-90.492325, 41.491928}, + {-88.053017, 30.680351}, + {120.42778, 23.04039}, + {-80.194702, 25.764313}, + {-122.826462, 49.02958}, + {-83.988418579102, 34.407119750977}, + {-80.211411, 25.924301}, + {-116.864319, 32.443314}, + {-80.956879, 34.022598}, + {-73.539243, 45.593752}, + {-75.847, 45.279739}, + {-88.190689086914, 41.892929077148}, + {-80.25993347168, 36.108627319336}, + {77.35954284668, 11.095504760742}, + {-116.963882, 32.805176}, + {120.365353, 23.370323}, + {-87.624188, 45.107933}, + {-108.419464, 36.750561}, + {-76.405098, 44.311331}, + {-83.046340942383, 39.882431030273}, + {-90.144685, 35.145657}, + {-76.043930053711, 44.386825561523}, + {-118.30696105957, 33.779525756836}, + {-74.978256225586, 40.317764282227}, + {-98.162155151367, 26.28547668457}, + {-68.424911499023, 46.005935668945}, + {-79.786148071289, 34.218978881836}, + {-79.717539, 43.746709}, + {-77.734832, 36.244373}, + {-81.219863891602, 33.996505737305}, + {-117.68623352051, 33.522720336914}, + {-104.65644836426, 50.488357543945}, + {-79.271506, 43.730908}, + {-73.873444, 40.708466}, + {-93.699416, 32.55867}, + {-117.855835, 33.702621}, + {-113.648566, 37.171188}, + {100.05592346191, 7.6100921630859}, + {-79.424329, 44.016309}, + {-92.370986938477, 38.955459594727}, + {-81.585159301758, 44.267349243164}, + {-84.371566772461, 33.798751831055}, + {-78.44856262207, 35.773544311523}, + {-84.487381, 33.834457}, + {-80.617447, 34.249649}, + {-82.383924, 42.979104}, + {-86.369695, 43.496938}, + {-77.499069, 37.6371}, + {-79.341888, 43.672714}, + {-81.372299194336, 41.263961791992}, + {-73.068008, 40.806809}, + {14.27449, 53.903183}, + {-84.311829, 34.043884}, + {-112.232071, 33.578957}, + {-79.685261, 43.627495}, + {-73.584365844727, 45.48957824707}, + {-73.700638, 45.565568}, + {-122.335608, 49.073672}, + {-84.210157, 39.746242}, + {-88.192062, 30.711594}, + {-74.07600402832, 40.786056518555}, + {-118.40446472168, 34.066543579102}, + {-113.931656, 51.10412}, + {-72.358016, 41.964345}, + {-73.337173461914, 45.569229125977}, + {-83.855209350586, 34.353561401367}, + {-79.126968383789, 43.240127563477}, + {-97.139501, 35.492589}, + {-73.863428, 45.45168}, + {121.4476776123, 25.182723999023}, + {-73.436050415039, 45.683212280273}, + {-113.446336, 53.566453}, + {-79.343262, 43.773651}, + {-117.70683288574, 33.466415405273}, + {-81.244589, 43.002323}, + {-79.888951, 44.280494}, + {-75.517278, 39.751283}, + {-85.406341, 40.206757}, + {-79.318282, 43.859863}, + {-73.931122, 40.67894}, + {-90.513382, 38.781967}, + {-73.983993530273, 40.747604370117}, + {-73.587112426758, 45.482711791992}, + {-73.822632, 45.462799}, + {-76.05966, 36.913626}, + {-92.743148803711, 35.17204284668}, + {-111.911355, 40.754944}, + {-79.28352355957, 43.127517700195}, + {-75.173263549805, 40.315017700195}, + {-73.401897, 45.511223}, + {144.959335, -37.712631}, + {-117.192535, 34.514923}, + {-81.829163, 28.104988}, + {-87.816126, 41.98941}, + {77.09735, 11.000008}, + {-81.348589, 28.555505}, + {-96.846542358398, 32.85530090332}, + {-73.550034, 40.756531}, + {-83.629603, 42.237658}, + {-82.365875, 29.617081}, + {-73.67981, 45.612488}, + {-88.772964477539, 33.482894897461}, + {121.530075, 25.135483}, + {-106.157766, 37.581022}, + {-83.786544799805, 41.660842895508}, + {-79.718628, 43.709335}, + {-87.727890014648, 41.527633666992}, + {-90.37971496582, 38.496780395508}, + {-106.577408, 35.083054}, + {-74.666519165039, 41.35871887207}, + {-70.795211791992, 43.122024536133}, + {-83.077926635742, 42.355728149414}, + {-87.910996, 42.348634}, + {-118.293915, 33.800812}, + {-73.637924, 40.738449}, + {-79.561271, 43.828583}, + {-113.610964, 53.330283}, + {-73.773880004883, 45.479965209961}, + {-100.44868469238, 31.473770141602}, + {-119.765397, 39.475252}, + {-84.69635, 33.560486}, + {-79.413986, 43.634491}, + {-121.957168, 37.497712}, + {-83.246592, 42.649363}, + {-79.034958, 43.838196}, + {-80.424949, 43.342258}, + {-89.945755004883, 38.575057983398}, + {-73.635332, 45.423966}, + {-78.614426, 35.860214}, + {-113.990599, 51.042551}, + {-76.494369506836, 44.230270385742}, + {-75.16227722168, 39.981307983398}, + {-90.436019897461, 38.671188354492}, + {-73.553238, 45.485687}, + {-79.714737, 43.611834}, + {-79.372238, 43.791916}, + {-85.918578, 43.135071}, + {-79.471904, 43.640028}, + {-88.108291625977, 43.317031860352}, + {-80.287125, 26.194016}, + {-116.96800231934, 32.838821411133}, + {-79.832291, 43.260452}, + {-84.313339, 39.112015}, + {-117.190705, 33.581086}, + {-77.324849, 39.892298}, + {-94.952774047852, 29.75715637207}, + {-88.146229, 34.447804}, + {77.580642700195, 13.070297241211}, + {-84.384232, 39.397354}, + {121.54243469238, 24.975357055664}, + {-73.605194, 40.672989}, + {-90.349502563477, 38.462448120117}, + {-113.956375, 51.097412}, + {-80.881449, 43.061866}, + {-90.267105102539, 38.613510131836}, + {-96.540298, 33.184204}, + {-90.282211303711, 29.979629516602}, + {-79.413528, 43.640671}, + {-79.037829, 42.977145}, + {-122.42958068848, 37.731857299805}, + {-121.30485534668, 38.579177856445}, + {-122.88963317871, 49.145278930664}, + {-117.77961730957, 33.893508911133}, + {-116.358261, 33.751373}, + {-76.673447, 39.977188}, + {-119.712287, 36.361771}, + {-73.580933, 45.496788}, + {-122.785721, 49.036789}, + {-75.475619, 45.490954}, + {99.506607055664, 16.477432250977}, + {-122.91572570801, 45.510177612305}, + {-86.038722, 39.841311}, + {-75.874423, 45.224535}, + {120.141764, 23.286552}, + {-71.121659, 42.768265}, + {-86.379318237305, 34.696884155273}, + {-122.75917053223, 45.490951538086}, + {58.451386, 51.25351}, + {-79.766464, 43.196274}, + {-114.029433, 50.970383}, + {-85.104904, 42.29599}, + {-80.420924, 33.956447}, + {-75.737343, 45.397739}, + {-119.155425, 50.605545}, + {120.55503845215, 24.09782409668}, + {-87.822373, 42.208237}, + {-78.722763, 42.965012}, + {-123.272234, 49.014957}, + {-85.389371, 38.769281}, + {-123.122582, 49.753192}, + {-71.99821472168, 42.234878540039}, + {-96.181869506836, 38.419876098633}, + {-93.762130737305, 41.593551635742}, + {-104.518685, 33.408502}, + {-123.006528, 49.228006}, + {-80.091018676758, 26.757888793945}, + {-95.488358, 29.641113}, + {-75.383377075195, 40.092544555664}, + {-106.58042907715, 35.059432983398}, + {-75.787486, 45.277537}, + {-75.493238, 44.706803}, + {-122.89100646973, 49.171371459961}, + {-63.170702, 45.418856}, + {16.367111, 48.229752}, + {-80.197906, 26.280213}, + {-88.120994, 41.705132}, + {-86.270944, 39.753325}, + {-122.902908, 49.215317}, + {-75.899734, 45.330448}, + {-102.252502, 21.896439}, + {113.403244, 23.132629}, + {120.46714782715, 23.825912475586}, + {-80.318985, 25.712814}, + {-79.514236450195, 44.10530090332}, + {-117.59971618652, 33.529586791992}, + {137.21305847168, 36.703262329102}, + {-80.314865112305, 43.374710083008}, + {-71.477737426758, 41.836624145508}, + {-97.504623, 35.636215}, + {-76.525955200195, 44.226150512695}, + {-115.27610778809, 36.017990112305}, + {35.218048, 31.791687}, + {-87.738876, 41.910095}, + {-98.918155, 19.239128}, + {-86.121965, 40.464981}, + {-83.870315551758, 34.317855834961}, + {-122.274399, 49.044685}, + {-90.477562, 31.243744}, + {-83.920802, 40.875328}, + {-86.171961, 34.300008}, + {-80.493924, 43.446963}, + {-113.265315, 53.548835}, + {-76.296615600586, 37.076797485352}, + {-122.440911, 47.219925}, + {-104.705887, 38.687325}, + {-83.903617, 42.589188}, + {-82.36930847168, 27.927932739258}, + {-89.647751, 44.987412}, + {-95.360641479492, 29.799728393555}, + {-118.220444, 33.823929}, + {-73.750534057617, 45.571975708008}, + {-81.423110961914, 28.309707641602}, + {-76.131889, 45.12695}, + {-110.775822, 54.27728}, + {-74.623947143555, 40.604782104492}, + {-88.237381, 41.273575}, + {-84.343185, 34.036331}, + {-79.422913, 43.632202}, + {-121.33506774902, 37.98454284668}, + {-117.236247, 33.082017}, + {-75.70198059082, 45.481338500977}, + {-80.142517, 25.950394}, + {-86.069638, 43.482515}, + {-122.296371, 49.139328}, + {-117.798019, 33.861374}, + {120.29136657715, 22.631149291992}, + {-81.396826, 29.044224}, + {-96.871605, 33.021469}, + {-95.583802, 29.6521}, + {99.15596, 18.733292}, + {-79.331679, 43.783329}, + {-123.103861, 49.262011}, + {-76.84455871582, 39.173812866211}, + {-72.105813, 42.111414}, + {-118.085861, 34.005775}, + {-80.697098, 40.8918}, + {120.719833, 23.275909}, + {-80.25238, 26.1866}, + {-80.37838, 25.569306}, + {-105.86357116699, 53.090744018555}, + {-88.033584, 41.72786}, + {-77.452927, 37.659348}, + {-122.958984, 49.209824}, + {-82.046585, 36.585159}, + {-79.914551, 43.230515}, + {-79.703751, 43.675461}, + {-123.029938, 49.287186}, + {-117.91007995605, 33.839950561523}, + {-79.864545, 43.249773}, + {-90.07209777832, 38.603897094727}, + {-73.598785, 45.393448}, + {-117.956085, 33.699875}, + {-75.697754, 45.412093}, + {-72.639541625977, 45.471725463867}, + {-117.301025, 33.662109}, + {-80.552543, 43.41689}, + {-98.711471557617, 29.78874206543}, + {-82.118454, 41.399002}, + {-113.523788, 53.556976}, + {-84.209518432617, 39.172439575195}, + {28.818657, 47.003699}, + {-79.719432, 43.666246}, + {-79.079086, 43.845331}, + {-79.368864, 43.858697}, + {-80.349884, 25.791092}, + {-118.179703, 34.088516}, + {-79.437944, 44.076771}, + {-64.632913, 44.184952}, + {-75.687617, 45.400815}, + {-107.34397888184, 52.438430786133}, + {-97.732315063477, 30.28450012207}, + {-93.088629, 34.488929}, + {-88.012161, 42.321396}, + {-81.306381, 28.436737}, + {-87.692184448242, 41.93962097168}, + {-84.40315246582, 33.754806518555}, + {-87.004165649414, 34.278030395508}, + {120.35179138184, 22.541885375977}, + {-84.772567749023, 43.641128540039}, + {-80.100631713867, 26.393966674805}, + {-123.014326, 49.227128}, + {-113.810806, 52.250633}, + {19.416048, 47.433472}, + {-73.75026, 40.613022}, + {-90.075755, 29.929307}, + {-70.66246, 41.943283}, + {-104.71824645996, 40.380935668945}, + {-97.226943969727, 32.71110534668}, + {-2.660751, 54.64325}, + {-2.757569, 53.88279}, + {-77.43782043457, 38.959579467773}, + {-92.421112, 35.092278}, + {-98.500442, 29.357986}, + {-112.30842590332, 33.45817565918}, + {-95.363388061523, 29.75715637207}, + {-95.930557250977, 46.842269897461}, + {-63.547656, 45.407872}, + {-95.128212, 29.52507}, + {-85.898863, 37.734604}, + {-116.003504, 35.292935}, + {-75.464401245117, 40.213394165039}, + {-84.190292358398, 34.017105102539}, + {-90.779342651367, 29.684371948242}, + {-82.466812133789, 38.410263061523}, + {-0.823169, 52.132251}, + {-70.91194152832, 42.512283325195}, + {-77.001113891602, 38.893661499023}, + {-96.856155395508, 32.885513305664}, + {-94.676742553711, 39.07356262207}, + {-95.517196655273, 29.704971313477}, + {-79.389542, 43.6436}, + {-96.735305786133, 33.006362915039}, + {-94.793929, 39.048843}, + {-96.295852661133, 30.616836547852}, + {-101.93458557129, 35.173416137695}, + {-80.206834, 26.23421}, + {-86.41804, 39.740983}, + {-74.329148, 45.655747}, + {-80.099042, 26.448122}, + {-81.513748168945, 43.143997192383}, + {-73.92699, 40.755065}, + {-97.336807250977, 33.239822387695}, + {-90.831527709961, 38.478927612305}, + {-79.557722, 43.878708}, + {-122.804146, 49.190941}, + {-79.562301635742, 43.794937133789}, + {-70.815811157227, 43.109664916992}, + {-98.510971069336, 29.350662231445}, + {-79.710265, 43.76906}, + {-88.040726, 41.909683}, + {74.444732, 14.269867}, + {-117.938232, 33.674469}, + {-87.887191772461, 42.348861694336}, + {-83.685837, 41.674805}, + {-88.253517, 42.033005}, + {-122.858562, 49.240894}, + {-80.243453979492, 25.793838500977}, + {-80.577164, 36.504822}, + {-83.635311, 32.837105}, + {-84.377059936523, 33.842697143555}, + {-123.364277, 48.433056}, + {113.880157, 22.937393}, + {-92.959785, 44.924812}, + {-79.0757, 43.837967}, + {-88.069839477539, 41.773452758789}, + {-86.719552, 30.414621}, + {-73.816452026367, 40.685806274414}, + {-79.562817, 43.699665}, + {-82.661819458008, 35.009994506836}, + {-73.619248, 45.529953}, + {-86.91188, 40.023056}, + {-110.852238, 32.248306}, + {-74.556655883789, 40.324630737305}, + {-83.204258, 42.553757}, + {-118.4854888916, 34.207992553711}, + {-82.43522644043, 38.396530151367}, + {-77.572402954102, 43.045120239258}, + {-113.535682, 53.43083}, + {-122.828749, 49.163132}, + {-74.026565551758, 40.768203735352}, + {-122.43232727051, 37.473678588867}, + {-80.122604370117, 32.598495483398}, + {-119.69673156738, 36.711502075195}, + {-79.548912, 43.684044}, + {-117.301025, 33.214417}, + {-74.428954, 45.62009}, + {-90.336458, 38.812638}, + {-117.237363, 32.945742}, + {-63.632688, 44.652399}, + {-122.079963, 37.667485}, + {-97.805099487305, 30.421829223633}, + {-122.06840515137, 37.884292602539}, + {-79.038391, 42.974396}, + {-73.876876831055, 41.307907104492}, + {-99.318466, 38.886108}, + {-86.073074, 39.905777}, + {-122.636261, 45.53009}, + {-147.844257, 64.843644}, + {-85.965957641602, 37.069931030273}, + {-117.859579, 51.154787}, + {-80.485689, 43.38926}, + {-71.332168579102, 46.682968139648}, + {-94.73030090332, 32.543563842773}, + {-75.638809204102, 39.625625610352}, + {-74.000473022461, 40.74348449707}, + {-76.072769165039, 36.910629272461}, + {-79.610369, 43.643876}, + {-103.65119934082, 41.870956420898}, + {135.50605773926, 34.74494934082}, + {-88.37883, 41.978073}, + {-75.455475, 39.82338}, + {-82.844464, 42.226186}, + {-98.457412719727, 29.439926147461}, + {-87.631759643555, 41.809158325195}, + {-106.64909362793, 52.129440307617}, + {-78.290634155273, 39.313888549805}, + {-121.97282, 37.761034}, + {-77.24006652832, 39.216384887695}, + {-94.605331420898, 39.079055786133}, + {113.94105, 22.254569}, + {-111.926651, 33.456116}, + {-72.118782, 41.465736}, + {-117.1753692627, 32.715225219727}, + {-80.934219360352, 46.43440246582}, + {-111.970596, 40.788345}, + {-75.654602, 45.418167}, + {-90.40155, 38.342148}, + {-89.901809692383, 35.003128051758}, + {-66.701119, 48.017479}, + {-113.482246, 53.45192}, + {-96.769638061523, 33.094253540039}, + {-96.787949, 32.81456}, + {-77.560866, 44.136516}, + {-122.966628, 46.879936}, + {-89.827651977539, 30.309219360352}, + {-90.633773803711, 41.542739868164}, + {-90.33576965332, 38.478927612305}, + {-73.206711, 41.202164}, + {-112.26860046387, 33.62434387207}, + {-81.82492, 30.567498}, + {-113.854752, 52.318758}, + {-84.133987426758, 36.90788269043}, + {-71.107564, 42.243125}, + {-122.22633361816, 38.142471313477}, + {-89.754867553711, 35.211868286133}, + {-81.465682983398, 28.311080932617}, + {-81.465682983398, 28.311080932617}, + {-94.184106, 45.566982}, + {-84.368941, 38.873197}, + {-88.156356811523, 30.619583129883}, + {-112.23838806152, 33.493881225586}, + {-84.590746, 39.254563}, + {-123.001322, 49.220242}, + {-75.486374, 41.403351}, + {-113.54850769043, 53.570022583008}, + {-80.2141, 43.544483}, + {-96.659774780273, 32.772903442383}, + {-79.646896, 44.337662}, + {-79.72023, 43.79837}, + {-96.909713745117, 33.004989624023}, + {-73.425632, 45.449514}, + {-113.830488, 52.294236}, + {-70.975112915039, 41.989059448242}, + {-72.548904418945, 46.339645385742}, + {-118.14765930176, 33.782272338867}, + {-79.915237, 43.230515}, + {-93.447647, 45.094757}, + {-115.16212463379, 36.134719848633}, + {-95.37712097168, 29.742050170898}, + {32.518158, 15.58754}, + {-86.322451, 41.485341}, + {-80.286026000977, 25.924301147461}, + {-79.630051, 43.625793}, + {-123.125839, 49.249649}, + {-85.37819, 35.016518}, + {-74.688518, 40.559495}, + {-80.163803, 26.001205}, + {-84.558336, 39.365387}, + {-80.288772583008, 25.766372680664}, + {-74.059067, 41.122513}, + {-74.249038696289, 39.738235473633}, + {-73.506088256836, 45.320663452148}, + {-90.309677124023, 38.64372253418}, + {-113.878987, 52.280794}, + {-77.179193, 38.858926}, + {-95.150527954102, 30.060653686523}, + {-117.80708312988, 33.661422729492}, + {-113.201065, 53.708725}, + {-81.691177, 41.499619}, + {-115.15251159668, 36.16081237793}, + {-76.2955, 40.032291}, + {-113.844452, 52.287369}, + {-73.817825317383, 40.717391967773}, + {-87.622146606445, 41.859970092773}, + {-117.574997, 34.105911}, + {-85.468859, 44.222052}, + {-108.554547, 37.383731}, + {-81.394272, 30.305099}, + {-85.545056, 38.16651}, + {-80.33734, 43.654113}, + {-108.588867, 39.094162}, + {-73.356398, 46.0009}, + {-90.177841186523, 38.322372436523}, + {-81.494516, 41.262132}, + {-118.51432800293, 35.195388793945}, + {-86.15272, 39.91678}, + {-73.650874, 45.623227}, + {-88.1039, 41.931727}, + {-96.83075, 33.053741}, + {-76.442184448242, 40.79704284668}, + {-79.387893676758, 43.790817260742}, + {-73.513641, 45.611801}, + {-77.086309, 38.884363}, + {-97.562026977539, 33.059921264648}, + {-76.825332641602, 39.445724487305}, + {-114.065964, 50.969009}, + {-100.100647, 20.460796}, + {-79.612427, 43.613892}, + {-77.271665, 38.682184}, + {-84.067244, 39.719835}, + {-111.968708, 33.341961}, + {14.067306518555, 48.190841674805}, + {-96.822277, 33.059921}, + {-108.835373, 35.507401}, + {-87.39624, 41.54686}, + {-73.995667, 40.899353}, + {-74.161148071289, 40.794296264648}, + {-81.180038452148, 42.778701782227}, + {-85.551908, 43.137818}, + {-96.666641235352, 32.90885925293}, + {-83.895034790039, 34.21760559082}, + {-118.046036, 34.087144}, + {-117.69172668457, 34.02946472168}, + {-106.648407, 35.256844}, + {-120.856888, 56.245468}, + {-79.344637, 43.740006}, + {-76.639252, 39.360581}, + {-74.908905, 40.090256}, + {-122.12882995605, 37.678298950195}, + {-111.88819885254, 40.878067016602}, + {-118.051529, 34.13475}, + {-87.934226, 41.691399}, + {-78.577651977539, 35.606002807617}, + {-84.449844360352, 38.042221069336}, + {-78.506240844727, 40.045852661133}, + {-95.187222, 29.664468}, + {-78.918309, 43.891148}, + {-80.897827, 40.088425}, + {-115.204611, 36.274881}, + {-106.677932, 35.211869}, + {-76.845932, 39.181709}, + {-112.26448059082, 33.537826538086}, + {-93.341903686523, 44.952621459961}, + {-86.167831420898, 39.765701293945}, + {-79.627585, 43.597214}, + {-83.249588012695, 42.263717651367}, + {-80.766953, 41.170853}, + {-71.503829956055, 42.81852722168}, + {-118.138046, 33.854058}, + {-87.89543, 41.962967}, + {-97.09098815918, 47.890090942383}, + {-86.48231, 36.999896}, + {-80.131538, 26.229173}, + {-80.162539, 43.676465}, + {-81.64215, 30.169144}, + {-95.183486938477, 29.621200561523}, + {-80.844955444336, 28.664016723633}, + {-94.798965454102, 39.79866027832}, + {-114.006501, 51.072006}, + {-85.210023, 33.688764}, + {-88.002548217773, 42.911911010742}, + {-79.753064, 43.770842}, + {-73.530808, 40.667267}, + {-118.40171813965, 55.228958129883}, + {-83.63410949707, 41.386184692383}, + {-113.38645935059, 53.596115112305}, + {-85.949478149414, 39.66682434082}, + {-93.275985717773, 43.911666870117}, + {-98.044052, 26.201019}, + {-73.425064086914, 41.099166870117}, + {-77.593002319336, 44.121780395508}, + {-94.856138, 35.434419}, + {-73.623483, 45.531467}, + {-80.119857788086, 26.363754272461}, + {-114.070084, 51.004715}, + {-79.495010375977, 43.761978149414}, + {-86.886067, 40.360355}, + {-87.870712280273, 41.993179321289}, + {-79.744525, 43.407792}, + {-95.688858032227, 29.707717895508}, + {-86.780319213867, 39.286422729492}, + {-81.744461, 41.468925}, + {-85.183181762695, 42.328262329102}, + {-81.66481, 28.805467}, + {-88.211992, 35.229545}, + {-81.182442, 42.93663}, + {-116.936274, 32.538734}, + {-84.463577270508, 39.289169311523}, + {-98.441382, 34.578325}, + {-86.254593, 41.615082}, + {-73.493354, 45.511925}, + {-102.237517, 31.90668}, + {-80.876541137695, 35.185775756836}, + {-82.429733276367, 42.889938354492}, + {-76.495742797852, 44.230270385742}, + {-79.597092, 43.58345}, + {-87.273331, 33.846817}, + {-98.038558959961, 30.195236206055}, + {-79.120789, 43.0616}, + {-46.799973, -23.639694}, + {77.05192565918, 28.79997253418}, + {-80.429001, 43.395615}, + {-118.208771, 34.054871}, + {-122.05467224121, 37.543716430664}, + {-81.067488, 43.010512}, + {-73.97575378418, 40.764083862305}, + {-97.139053344727, 37.678298950195}, + {-3.586153, 50.437742}, + {-93.59733581543, 41.626510620117}, + {-88.087921, 41.806183}, + {114.09233093262, 22.356491088867}, + {-79.464523, 43.881454}, + {-84.935991, 42.990875}, + {-83.649902, 42.433148}, + {-118.373724, 33.994232}, + {-118.28636169434, 33.857803344727}, + {-85.640487670898, 38.239974975586}, + {-73.769172, 41.157041}, + {-117.951965, 33.675156}, + {-82.432479858398, 34.970169067383}, + {-117.14241027832, 32.93083190918}, + {-82.334976196289, 31.205978393555}, + {-96.917953491211, 32.903366088867}, + {-84.287967, 30.411873}, + {-86.237869262695, 39.839859008789}, + {-78.687515258789, 43.911666870117}, + {-71.387100219727, 42.307662963867}, + {-80.533073, 43.462601}, + {-81.259689331055, 28.776626586914}, + {-118.00895690918, 34.133834838867}, + {-90.019913, 35.029907}, + {-123.139965, 49.326161}, + {-83.347091674805, 42.380447387695}, + {-75.753525, 45.373215}, + {-117.407455, 47.776108}, + {-122.537913, 47.917492}, + {-117.94853210449, 34.017105102539}, + {-78.996505737305, 39.992294311523}, + {-80.503434, 43.508349}, + {-78.009729, 44.017713}, + {-76.552047729492, 38.980178833008}, + {-117.979431, 33.800812}, + {-81.73524, 41.384615}, + {-83.10676574707, 40.606155395508}, + {-110.968202, 32.269262}, + {-87.845438, 41.753408}, + {-81.080475, 42.969589}, + {-81.892777, 41.476136}, + {-122.849992, 49.244685}, + {-72.759017944336, 40.810775756836}, + {11.686807, 58.484838}, + {-75.485001, 45.494385}, + {-77.012797, 38.927995}, + {-117.190868, 34.086879}, + {136.67747497559, 36.560440063477}, + {-82.880173, 42.754669}, + {-118.36875915527, 33.837203979492}, + {-117.852402, 33.731461}, + {-79.589767, 43.577271}, + {-115.041275, 36.079788}, + {-77.119011, 39.059692}, + {-123.397444, 48.473435}, + {-88.886947631836, 30.454788208008}, + {-84.25895690918, 33.893508911133}, + {-93.249435, 44.759903}, + {-80.027298, 43.476334}, + {-87.947616577148, 42.973709106445}, + {-117.859268, 33.867416}, + {-79.456558227539, 43.664474487305}, + {-76.661911010742, 39.408645629883}, + {-95.466614, 30.146942}, + {-117.0435333252, 32.809982299805}, + {-122.559167, 45.66524}, + {-81.966019, 33.472366}, + {-87.660598754883, 41.721267700195}, + {-117.061848, 32.68685}, + {-79.230013, 43.743913}, + {-76.530075073242, 44.23713684082}, + {-84.231491088867, 33.752059936523}, + {-75.330506, 40.062332}, + {-111.91259, 33.404312}, + {-87.835006713867, 41.934127807617}, + {-86.193923950195, 41.923141479492}, + {-84.50065612793, 33.852310180664}, + {-83.257356, 42.541042}, + {-80.36979675293, 25.585098266602}, + {-85.472946166992, 43.240127563477}, + {-94.029922485352, 37.078170776367}, + {-97.263946, 32.731137}, + {-66.676736, 48.003772}, + {-81.30534, 43.149492}, + {-116.938672, 54.454065}, + {-77.266159, 39.181137}, + {-117.73704528809, 33.631210327148}, + {-74.225693, 40.762711}, + {-79.258804, 42.941666}, + {-77.932205200195, 34.192886352539}, + {-81.28631, 42.910538}, + {-79.245071411133, 43.196182250977}, + {-117.800933, 34.121714}, + {-75.634, 44.681056}, + {-111.64444, 40.120697}, + {-83.428803, 39.533615}, + {-71.49284362793, 42.863845825195}, + {-122.52983093262, 47.211685180664}, + {-79.236833, 43.824692}, + {-81.736221313477, 38.418502807617}, + {-70.267868041992, 43.63151550293}, + {-90.305557250977, 29.442672729492}, + {-75.778198, 39.60022}, + {-122.035446, 37.957077}, + {-82.341232, 40.902786}, + {-81.89826965332, 40.971450805664}, + {-86.210403, 42.530136}, + {-106.732864, 52.107468}, + {-112.817011, 51.845469}, + {-79.592514038086, 43.788070678711}, + {-79.062423706055, 35.888900756836}, + {-87.709694, 41.793022}, + {-79.722061, 43.615036}, + {-85.825195, 33.65799}, + {-117.11494445801, 32.796249389648}, + {-71.104202270508, 42.343368530273}, + {-97.23518371582, 32.760543823242}, + {-98.578262329102, 29.490737915039}, + {-75.993118286133, 40.343856811523}, + {2.3627471923828, 48.840408325195}, + {-97.145919799805, 32.385635375977}, + {103.778372, 1.292219}, + {-118.084488, 33.791885}, + {-77.303582, 37.282448}, + {-120.86265563965, 38.701400756836}, + {-102.10350036621, 31.953048706055}, + {-79.315387, 44.010617}, + {15.222931, 48.598709}, + {-118.45527648926, 34.404373168945}, + {-114.567031, 35.151901}, + {-104.558258, 50.446472}, + {-81.169327, 35.281082}, + {-84.595413208008, 33.789138793945}, + {-84.44709777832, 39.03923034668}, + {-87.648239, 41.918335}, + {-76.420211791992, 39.452590942383}, + {-84.885177612305, 39.142227172852}, + {23.317794799805, 42.697677612305}, + {-80.806503295898, 28.573379516602}, + {-117.15476989746, 32.764663696289}, + {-80.926666, 41.763842}, + {-75.302353, 40.104904}, + {-117.747116, 34.095383}, + {-83.851089477539, 41.989059448242}, + {-106.720848, 52.121887}, + {-75.514526, 40.571136}, + {-112.10289, 33.558884}, + {-96.81770324707, 32.936325073242}, + {-118.071543, 33.9999}, + {-79.003372, 33.710175}, + {-75.531006, 40.233994}, + {-76.689376831055, 37.308883666992}, + {-79.478531, 43.94989}, + {-76.926956176758, 38.620376586914}, + {-81.489028930664, 41.474075317383}, + {-80.231094, 43.509293}, + {-91.01326, 38.553543}, + {-79.778366, 43.571548}, + {-80.803756713867, 35.213241577148}, + {-123.00636291504, 49.14665222168}, + {-89.749374389648, 35.167922973633}, + {-79.438313, 46.275885}, + {138.58909606934, 35.659561157227}, + {-81.352558, 48.499832}, + {-79.076156616211, 33.50212097168}, + {-93.56987, 42.347946}, + {-84.285049438477, 33.882522583008}, + {2.286114, 49.62085}, + {-86.236838, 41.673546}, + {-81.354446411133, 34.194259643555}, + {-104.63310241699, 50.452651977539}, + {-76.677017211914, 40.196914672852}, + {-78.136825561523, 35.593643188477}, + {-117.19596862793, 32.827835083008}, + {-79.376907, 43.647537}, + {-86.126022, 39.791641}, + {-71.181106567383, 42.661972045898}, + {-87.899895, 42.243805}, + {-81.178665161133, 43.85124206543}, + {-101.92497253418, 33.566665649414}, + {-86.733627319336, 30.424575805664}, + {-117.69721984863, 33.607864379883}, + {-78.055801391602, 39.345474243164}, + {113.978348, 22.383194}, + {-85.668869, 42.883072}, + {-114.06211853027, 51.003341674805}, + {-81.485596, 31.287689}, + {-79.246444702148, 43.755111694336}, + {-76.523208618164, 44.227523803711}, + {-117.44453430176, 51.339797973633}, + {-96.91761, 32.737541}, + {-86.751480102539, 36.184158325195}, + {-81.500015258789, 27.741165161133}, + {-79.513452, 43.855558}, + {-113.978897, 50.990707}, + {-114.05662536621, 35.19401550293}, + {14.249954223633, 48.384475708008}, + {-149.20463562012, 61.62712097168}, + {-79.496383666992, 43.664474487305}, + {-75.486373901367, 40.558090209961}, + {-123.554018, 48.517109}, + {-93.295212, 37.169495}, + {-113.621292, 53.589249}, + {-105.084794, 39.843605}, + {-111.676712, 40.239487}, + {-84.49104309082, 39.133987426758}, + {-74.416580200195, 40.434494018555}, + {-117.969818, 33.664169}, + {-82.869186, 42.303715}, + {-83.845596, 39.446411}, + {-78.755494, 38.549652}, + {-87.849426, 41.503601}, + {-83.973312, 33.916855}, + {-83.348465, 37.813568}, + {-82.001267, 34.98024}, + {-75.191116333008, 39.955215454102}, + {-81.836472, 30.804978}, + {-84.57893371582, 38.22624206543}, + {-90.357056, 41.294174}, + {-119.70085144043, 46.207809448242}, + {-83.619003295898, 41.436996459961}, + {-82.370224, 28.128433}, + {-84.497909545898, 38.049087524414}, + {-122.5806427002, 45.622787475586}, + {-97.75016784668, 30.30647277832}, + {-79.223785, 43.171463}, + {-99.548721, 18.337784}, + {-76.871002, 40.273481}, + {-81.630477905273, 41.410903930664}, + {-83.439102172852, 42.759475708008}, + {-75.739059448242, 39.687423706055}, + {-87.638626098633, 41.892929077148}, + {-88.164139, 41.580277}, + {-86.068954467773, 40.069198608398}, + {-94.715194702148, 39.294662475586}, + {-79.887575, 43.204618}, + {-77.455216, 38.37822}, + {-88.807297, 42.995682}, + {-73.636182, 40.630837}, + {-96.948165893555, 32.812728881836}, + {-77.894669, 43.995895}, + {-92.759171, 44.990616}, + {-92.147561, 34.188562}, + {-87.547302, 41.748734}, + {-80.25032, 26.266937}, + {-96.884994506836, 32.823715209961}, + {-97.780380249023, 30.818710327148}, + {-75.563736, 38.393326}, + {-72.64183, 45.310593}, + {-122.47489929199, 37.781295776367}, + {-71.453018, 42.927361}, + {-97.145979, 49.789951}, + {-1.472626, 52.747192}, + {-73.769073, 40.786057}, + {-74.043045043945, 40.415267944336}, + {-80.134963989258, 25.791091918945}, + {-90.404434204102, 38.595657348633}, + {-80.155563354492, 43.16047668457}, + {-79.679465, 44.338761}, + {-121.05079650879, 37.696151733398}, + {-74.07600402832, 40.634994506836}, + {106.827896, -6.253075}, + {-79.083023071289, 43.859481811523}, + {-95.39909362793, 29.939804077148}, + {-117.990417, 33.75824}, + {-80.899612, 44.453018}, + {-0.244843, 52.52531}, + {-80.111651, 26.308459}, + {-63.148727416992, 46.26823425293}, + {-79.743576049805, 43.759231567383}, + {-73.510666, 45.503311}, + {-84.53498840332, 39.155960083008}, + {-84.27681, 42.227325}, + {-106.64772, 52.066956}, + {-78.271408, 43.968658}, + {-79.273224, 43.694687}, + {-79.942772, 43.230515}, + {-77.473526000977, 37.591781616211}, + {-118.175125, 34.086686}, + {-78.691575, 43.916621}, + {-117.321625, 34.508057}, + {-73.587112426758, 45.611801147461}, + {-114.337307, 48.41119}, + {-79.781396, 43.701298}, + {-80.228348, 26.010132}, + {145.005136, -37.26015}, + {121.74156188965, 25.138778686523}, + {-105.092303, 40.584567}, + {-96.171864, 31.715469}, + {-117.22206115723, 33.772659301758}, + {-82.392654418945, 28.102340698242}, + {-75.5056, 39.913331}, + {-99.810096, 16.853411}, + {100.657425, 13.858566}, + {-86.685562133789, 34.699630737305}, + {-85.449600219727, 32.62321472168}, + {-74.242272, 40.703667}, + {-71.494216918945, 42.767715454102}, + {-112.67509460449, 38.083419799805}, + {-76.597366333008, 39.138107299805}, + {-77.481423, 37.614098}, + {14.487533569336, 40.95085144043}, + {-122.781693, 53.903732}, + {-79.720847, 44.444316}, + {-79.289016723633, 43.871841430664}, + {-73.194351196289, 41.16096496582}, + {100.55717468262, 13.831100463867}, + {-122.93769836426, 49.150772094727}, + {27.893600463867, 39.659957885742}, + {101.42784118652, 12.621231079102}, + {-79.963302612305, 40.492172241211}, + {-80.192642211914, 26.168746948242}, + {120.617866, 24.390679}, + {-74.836807, 40.24498}, + {100.620346, 13.797455}, + {-84.379806518555, 34.032211303711}, + {-80.630722, 41.024551}, + {-82.414627075195, 28.037796020508}, + {-79.040451, 43.890381}, + {-117.24815368652, 33.10661315918}, + {-75.719147, 45.352249}, + {-83.104019165039, 39.911270141602}, + {-92.078475952148, 30.414962768555}, + {-79.891248, 44.121211}, + {-97.413711547852, 32.840194702148}, + {-96.832613, 39.014904}, + {-88.19427, 30.712362}, + {100.68152, 14.02382}, + {-84.916763305664, 41.533126831055}, + {58.322754, 51.195603}, + {46.850509, 51.735993}, + {-79.431838989258, 36.114120483398}, + {-75.681381225586, 39.628372192383}, + {-103.714371, 35.16037}, + {28.223877, -26.147461}, + {-75.734939575195, 39.838485717773}, + {-73.653030395508, 45.576095581055}, + {-79.602127075195, 43.57795715332}, + {-95.643082, 29.786682}, + {99.89219, 12.380828}, + {54.441375, 51.856158}, + {-96.32194519043, 30.618209838867}, + {121.65916442871, 25.067367553711}, + {-89.969788, 34.799881}, + {-73.992233276367, 40.632247924805}, + {-73.291854858398, 40.823135375977}, + {-110.312582, 49.921646}, + {-75.444489, 40.612335}, + {-112.04063415527, 41.133499145508}, + {-81.12922668457, 34.006118774414}, + {-113.91105651855, 53.538436889648}, + {-80.221481323242, 25.764999389648}, + {-117.26600646973, 33.25080871582}, + {-99.636138, 19.897965}, + {-73.575866, 45.494997}, + {-84.028244018555, 39.780807495117}, + {121.555679, 24.003337}, + {-95.245972, 29.674072}, + {-79.26155090332, 43.696060180664}, + {121.766805, 24.678003}, + {-82.617193, 42.031765}, + {121.75941467285, 24.762496948242}, + {-79.298172, 43.824692}, + {-114.040146, 51.166077}, + {-123.124123, 49.277459}, + {-97.309341430664, 32.788009643555}, + {-71.225864, 42.05292}, + {-76.433944702148, 37.811508178711}, + {-113.537521, 53.497925}, + {-71.550521850586, 41.703414916992}, + {-71.072616577148, 42.37907409668}, + {-92.792587280273, 38.598403930664}, + {-74.636993, 45.309677}, + {-118.58024597168, 34.257431030273}, + {-121.873398, 37.294464}, + {-74.363021850586, 40.868453979492}, + {-87.597427368164, 37.981796264648}, + {-87.849198, 41.637039}, + {120.69236755371, 23.952255249023}, + {-87.455978393555, 33.171157836914}, + {-85.15022277832, 35.04020690918}, + {-117.8524017334, 33.779525756836}, + {-80.038833618164, 35.883407592773}, + {-90.394233, 38.7683}, + {-78.652747, 35.457694}, + {-70.189591, 44.067536}, + {-84.635238647461, 31.996994018555}, + {-79.980125, 43.200989}, + {-79.364548, 42.901611}, + {-83.454774, 39.107132}, + {-117.101506, 33.10475}, + {-81.721311, 35.723224}, + {-74.135055541992, 45.944137573242}, + {-95.535049438477, 30.009841918945}, + {90.418403, 24.208825}, + {-90.405807495117, 38.660202026367}, + {-90.795914, 30.475571}, + {90.965012, 24.072968}, + {90.234146118164, 23.913803100586}, + {-72.256346, 42.906039}, + {89.919671, 23.0182}, + {-73.839386, 45.458738}, + {90.416793823242, 23.839645385742}, + {90.165482, 23.158493}, + {89.166069, 23.887367}, + {90.40168762207, 23.798446655273}, + {-73.596038, 45.460739}, + {-121.548843, 39.496536}, + {-78.897285, 43.944626}, + {-77.925338745117, 34.320602416992}, + {-86.628571, 30.398483}, + {-74.995422, 39.91333}, + {-80.419235229492, 25.747146606445}, + {-78.420181, 33.892593}, + {-82.919998168945, 41.294174194336}, + {-78.557052612305, 35.783157348633}, + {-121.221542, 38.79158}, + {-78.509263, 44.542557}, + {-79.251087, 42.979137}, + {-97.059403, 32.785263}, + {-89.995193481445, 35.049819946289}, + {-75.776138305664, 45.381088256836}, + {-89.359359741211, 41.38069152832}, + {-80.85319519043, 42.75260925293}, + {-80.55746, 43.5773}, + {-84.579184, 37.987914}, + {121.581465, 25.074404}, + {-92.123795, 30.107346}, + {-92.81433, 38.180182}, + {-87.952423, 41.852417}, + {-79.60537, 43.68269}, + {-96.834182739258, 32.51335144043}, + {-122.741318, 47.06131}, + {-79.088199, 43.824093}, + {-77.049179, 38.909454}, + {-81.20475769043, 42.792434692383}, + {-78.82209777832, 42.771835327148}, + {10.721969604492, 47.600326538086}, + {-97.513275, 35.49408}, + {120.6388092041, 22.743759155273}, + {-79.299322, 43.868413}, + {-93.056946, 41.678009}, + {100.88676452637, 14.384536743164}, + {-123.128586, 49.187164}, + {-81.228473, 42.977858}, + {-87.845993041992, 42.811660766602}, + {-75.242616, 45.097161}, + {-90.212173461914, 32.275772094727}, + {-52.714462280273, 47.596206665039}, + {-117.084732, 32.976151}, + {-75.235061645508, 40.659713745117}, + {-122.1947479248, 47.971115112305}, + {103.79814147949, 1.3025665283203}, + {-79.329872, 43.673744}, + {-89.852853, 31.032694}, + {-119.32456970215, 36.310501098633}, + {-82.324446, 42.511826}, + {-90.565067, 38.166917}, + {-87.99430847168, 42.976455688477}, + {-75.810470581055, 45.437393188477}, + {-77.609481811523, 37.505264282227}, + {-80.846328735352, 35.54557800293}, + {86.064835, 20.966721}, + {-114.489087, 51.192856}, + {-96.273880004883, 32.549057006836}, + {32.514724731445, 39.784927368164}, + {-97.345007, 18.320399}, + {-121.922684, 36.603012}, + {-96.915665, 18.861465}, + {-97.287368774414, 32.753677368164}, + {-87.957863, 42.225054}, + {-82.185287475586, 28.029556274414}, + {-81.074299, 42.974872}, + {-96.617202758789, 32.95280456543}, + {-85.995621, 40.000534}, + {-122.300496, 49.088824}, + {-117.28797912598, 33.131332397461}, + {-87.715530395508, 41.545486450195}, + {-84.136047, 33.96286}, + {-118.35090637207, 33.903121948242}, + {-54.878768920898, 48.996963500977}, + {-80.442581, 36.322403}, + {-96.684494018555, 33.237075805664}, + {-122.629074, 49.21669}, + {-78.746566772461, 43.915786743164}, + {-97.198792, 32.859421}, + {-79.661178588867, 35.73371887207}, + {121.493777, 25.066573}, + {-120.357001, 50.663204}, + {-91.130905, 30.44014}, + {-95.752029418945, 29.81071472168}, + {-113.605665, 53.505775}, + {-87.961349487305, 42.098922729492}, + {-74.637680053711, 45.311050415039}, + {-101.870728, 33.58984}, + {-75.459595, 40.184555}, + {-73.794479370117, 40.757217407227}, + {-71.918709, 41.330386}, + {-70.876235961914, 42.811660766602}, + {-81.734848022461, 30.313339233398}, + {24.87854, 60.200272}, + {70.866623, 22.81517}, + {-119.763107, 36.872177}, + {-81.278458, 28.649368}, + {-121.2279510498, 38.667068481445}, + {-123.32084655762, 43.479080200195}, + {119.62120056152, 23.54850769043}, + {-79.921074, 43.665848}, + {-97.833557, 30.064011}, + {120.519675, 23.827287}, + {-77.258711, 39.025219}, + {-122.106453, 37.66351}, + {99.344684, 9.158353}, + {-96.677398, 32.957612}, + {-76.550674438477, 44.227523803711}, + {-98.337936401367, 35.526351928711}, + {-90.294570922852, 38.558578491211}, + {-1.459465, 55.042534}, + {86.003036499023, 23.38508605957}, + {-87.795181274414, 41.65397644043}, + {-117.32780456543, 33.180770874023}, + {-79.627189, 44.107705}, + {-75.504225, 45.361497}, + {-122.764652, 49.062885}, + {-80.241002, 25.82717}, + {-80.170669555664, 26.182479858398}, + {100.09437561035, 17.613143920898}, + {-96.156833, 19.201866}, + {-113.577004, 53.574486}, + {-84.541855, 39.111843}, + {-84.360580444336, 39.502029418945}, + {-80.603261, 44.544207}, + {150.288849, -28.532181}, + {-97.676010131836, 30.318832397461}, + {-113.221207, 53.398361}, + {120.682182, 24.172096}, + {-96.838302612305, 32.823715209961}, + {-86.726760864258, 36.134719848633}, + {-74.088363647461, 40.689926147461}, + {-71.427012, 48.506324}, + {-70.887676, 48.445221}, + {-74.762906, 45.042658}, + {-95.388107299805, 29.740676879883}, + {-74.514083862305, 39.322128295898}, + {-80.10612487793, 26.814193725586}, + {-75.551605, 44.877091}, + {-86.616898, 34.747696}, + {-88.227767944336, 41.409530639648}, + {-82.49153137207, 27.267379760742}, + {-122.84568786621, 49.189224243164}, + {-112.033333, 46.591941}, + {-105.241655, 23.83302}, + {-86.87370300293, 36.096267700195}, + {-80.242996, 40.166702}, + {-123.114853, 49.263971}, + {120.61546325684, 23.770980834961}, + {-122.34306335449, 47.645645141602}, + {-123.00498962402, 49.169998168945}, + {-96.811386, 32.83635}, + {121.143951, 24.90406}, + {-79.577407836914, 40.305404663086}, + {-80.770798, 35.110931}, + {-76.302566, 37.055283}, + {-73.739547729492, 40.978317260742}, + {-71.690292, 42.191849}, + {-96.683807, 32.897873}, + {-96.618576049805, 33.068161010742}, + {-76.133194, 36.870117}, + {-73.732681274414, 41.027755737305}, + {-93.284256, 30.94527}, + {-73.17512512207, 44.013290405273}, + {-81.621825, 44.181165}, + {-94.893036, 38.809433}, + {-97.275009155273, 32.845687866211}, + {-122.1411895752, 47.767868041992}, + {-73.931351, 40.651932}, + {-84.236822, 39.609644}, + {-85.764389, 38.382021}, + {120.924453, 24.71489}, + {-80.763931, 35.183716}, + {-71.28547668457, 42.37907409668}, + {-79.374160766602, 43.796310424805}, + {-117.983215, 51.095544}, + {-118.45802307129, 34.221725463867}, + {114.31205749512, 30.375137329102}, + {-112.888645, 54.284216}, + {-73.753280639648, 40.696792602539}, + {-74.791488647461, 42.520523071289}, + {-71.424179077148, 42.96272277832}, + {104.84046936035, 15.234603881836}, + {-103.609617, 44.454995}, + {-82.312255, 28.059144}, + {100.89363098145, 12.683029174805}, + {-79.473037719727, 43.781204223633}, + {-87.707438, 41.486323}, + {99.727432, 16.084671}, + {-88.549118, 39.107895}, + {-110.266343, 24.157794}, + {-84.952469, 32.513351}, + {-97.747421264648, 30.412216186523}, + {-98.990249, 35.502319}, + {-114.171707, 51.017349}, + {-2.1540069580078, 52.64030456543}, + {-75.483627319336, 40.628128051758}, + {-80.85319519043, 34.098129272461}, + {-94.255142211914, 44.822158813477}, + {-88.08219909668, 42.130508422852}, + {-106.55159, 35.088272}, + {120.819779, 24.324418}, + {-73.420944213867, 40.724258422852}, + {-89.62028503418, 44.866104125977}, + {-81.307754516602, 43.421401977539}, + {-80.91911315918, 35.183029174805}, + {-79.459303, 44.089509}, + {-81.321376, 28.390394}, + {-80.36018371582, 25.876235961914}, + {-99.790878295898, 16.849594116211}, + {109.98207092285, 27.554397583008}, + {-79.298629760742, 43.669967651367}, + {-74.161148071289, 40.901412963867}, + {-0.260296, 52.738536}, + {-82.068685, 28.163405}, + {-46.627811, -23.597429}, + {121.589813, 25.076981}, + {-82.711256, 27.662889}, + {-80.6723, 43.039954}, + {-86.885555, 35.680404}, + {-70.067367553711, 41.777572631836}, + {-123.1436920166, 49.267501831055}, + {-84.197699, 33.946887}, + {-122.25242614746, 38.154830932617}, + {-114.042987, 51.09779}, + {-73.38295, 46.288834}, + {-111.83738708496, 33.275527954102}, + {-104.915314, 39.687424}, + {-1.923294, 52.617645}, + {-71.480858, 42.88549}, + {-0.128547, 51.371384}, + {-81.19157, 44.524705}, + {-89.866104125977, 35.045700073242}, + {-114.925748, 53.927084}, + {-81.263809, 28.660584}, + {3.876343, 43.615799}, + {-88.285446, 41.80275}, + {-113.999405, 51.265411}, + {-0.91117858886719, 52.233810424805}, + {0.065245, 51.800883}, + {-122.484055, 49.104538}, + {-78.789139, 35.71106}, + {-83.134231567383, 42.704544067383}, + {-81.991653442383, 41.465835571289}, + {-96.998977661133, 32.999496459961}, + {-76.965614, 40.207352}, + {-77.325304, 37.292674}, + {117.17811584473, 34.272537231445}, + {-110.950699, 31.36528}, + {-79.220421, 43.113785}, + {-84.64238, 34.027542}, + {-79.378280639648, 43.652114868164}, + {-79.002342, 34.633369}, + {-118.493978, 34.16238}, + {-84.147720336914, 33.817977905273}, + {-80.487899780273, 41.313400268555}, + {100.24406433105, 16.279678344727}, + {19.056833, 47.498598}, + {-75.666275024414, 36.023483276367}, + {121.450768, 24.98497}, + {13.056784, 47.836972}, + {8.949228, 48.802321}, + {-71.572494506836, 41.696548461914}, + {-81.362686157227, 29.915084838867}, + {-88.288192749023, 34.492263793945}, + {-81.513748168945, 28.537673950195}, + {8.640178, 49.522267}, + {18.426173, 47.571487}, + {-97.727371, 35.393967}, + {-112.083893, 33.485641}, + {-73.889236450195, 40.672073364258}, + {-69.821548461914, 18.465957641602}, + {106.06544494629, 12.493515014648}, + {-82.707138061523, 42.28157043457}, + {-73.784866333008, 40.711898803711}, + {-93.448855, 38.975785}, + {-73.092727661133, 41.222763061523}, + {119.58824157715, 23.551254272461}, + {-79.064358, 43.092384}, + {-79.153453, 43.169305}, + {-88.286819458008, 41.875076293945}, + {-85.63362121582, 41.905288696289}, + {-73.610458374023, 45.517044067383}, + {-88.712265, 32.408981}, + {8.495894, 50.026098}, + {-82.348709106445, 28.171005249023}, + {13.782349, 45.556011}, + {-73.566513061523, 45.501937866211}, + {10.260638, 60.897349}, + {10.859299, 59.926987}, + {-78.71452, 42.958604}, + {12.709917, 47.616066}, + {-71.094589233398, 42.574081420898}, + {-97.830135, 30.556095}, + {-87.474747, 41.490555}, + {-87.43537902832, 37.998275756836}, + {13.024521, 47.826462}, + {-119.6019744873, 49.500961303711}, + {5.980131, 59.9687}, + {-78.945693969727, 36.000137329102}, + {-117.17124938965, 32.764663696289}, + {15.635022, 46.546638}, + {-122.3169708252, 37.818374633789}, + {-85.054092407227, 35.989151000977}, + {-79.831845, 43.247074}, + {8.1058502197266, 48.907699584961}, + {8.951687, 50.22357}, + {-118.425064, 34.260178}, + {5.73143, 51.262476}, + {5.594922, 50.645212}, + {5.911433, 49.549077}, + {4.829805, 51.668149}, + {8.348689, 49.016671}, + {-77.08625793457, 38.899154663086}, + {-3.103067, 56.460087}, + {-3.263098, 51.440048}, + {0.07988, 50.971298}, + {-1.41884, 50.887071}, + {0.14350891113281, 52.747421264648}, + {26.108913, 44.365737}, + {15.490036010742, 45.946884155273}, + {4.3004608154297, 50.778121948242}, + {-82.184601, 42.383423}, + {-122.687943, 45.530777}, + {5.455945, 51.462174}, + {-122.746353, 49.132005}, + {-0.54266, 53.267536}, + {-113.426286, 53.505478}, + {-82.065811157227, 27.971878051758}, + {5.5899810791016, 50.639419555664}, + {11.978530883789, 43.85124206543}, + {4.74572, 51.049134}, + {8.48144, 49.316942}, + {11.535187, 48.144035}, + {98.291244506836, 8.3145904541016}, + {-2.425675, 53.583704}, + {-117.84965515137, 33.852310180664}, + {-122.404469, 45.517044}, + {10.928286, 48.350172}, + {6.433182, 50.484924}, + {-1.9342803955078, 50.80696105957}, + {-88.21403503418, 41.777572631836}, + {-92.354851, 34.742203}, + {-122.2469329834, 38.108139038086}, + {-3.044968, 53.440018}, + {-81.830978393555, 26.52717590332}, + {-123.07695, 49.28096}, + {-87.916030883789, 43.175582885742}, + {-0.113846, 51.393082}, + {-73.195038, 41.174698}, + {-113.54713439941, 53.601608276367}, + {-73.81233215332, 40.591049194336}, + {-2.804425, 53.544205}, + {5.682654, 49.968276}, + {-98.911988, 19.904312}, + {11.141224, 60.138917}, + {-82.941970825195, 42.337875366211}, + {-113.586934, 50.904239}, + {8.580716, 50.207017}, + {11.312485, 49.69017}, + {-79.683151, 44.338074}, + {-83.033981323242, 42.52326965332}, + {-78.839279, 44.116638}, + {14.531026, 48.098878}, + {7.4315643310547, 49.385604858398}, + {6.64094, 48.01899}, + {-74.742050170898, 40.872573852539}, + {-81.204529, 43.003235}, + {-80.35675, 25.782166}, + {8.903183, 52.21074}, + {6.859588, 49.917618}, + {7.589089, 47.903985}, + {-97.140205, 49.804909}, + {-82.400551, 42.987442}, + {-79.758453, 43.714829}, + {-79.763718, 43.620987}, + {-117.29393, 49.491806}, + {-99.156472, 19.612575}, + {-110.99555969238, 32.292251586914}, + {-77.796593, 42.811661}, + {-111.38969421387, 56.736831665039}, + {-73.996353149414, 40.66520690918}, + {-75.966437, 39.097521}, + {0.539429, 51.659363}, + {0.348132, 51.376191}, + {-80.118484, 26.655579}, + {7.258892, 50.553119}, + {-80.321731567383, 25.918807983398}, + {-119.59098815918, 49.494094848633}, + {-80.555191040039, 43.473587036133}, + {-79.351059, 43.934097}, + {-73.933868, 40.641861}, + {-79.492264, 44.620056}, + {-81.378822, 43.179703}, + {-80.395203, 25.528793}, + {-80.486526489258, 25.659255981445}, + {-78.2735, 44.190456}, + {-79.516296, 43.830986}, + {-117.08335876465, 33.739700317383}, + {-74.132766, 40.63729}, + {100.50856, 13.793747}, + {-84.404535, 37.990257}, + {-71.175402, 42.360852}, + {-85.640144, 44.600258}, + {-93.748398, 37.127609}, + {27.493287, 47.152977}, + {-79.281028, 43.865085}, + {-122.91847229004, 49.208450317383}, + {-85.895631, 38.929728}, + {-74.294357, 40.528564}, + {-88.84162902832, 42.374954223633}, + {5.081318, 60.224992}, + {3.572845, 50.959625}, + {5.407973, 52.188846}, + {5.60289, 50.561142}, + {8.34515, 49.666873}, + {-79.09538269043, 43.091812133789}, + {-123.19368, 49.269425}, + {5.759579, 59.855233}, + {4.753805, 50.932665}, + {-80.286026, 39.265137}, + {-107.381745, 24.808159}, + {-112.827255, 49.709702}, + {17.620727, 52.307296}, + {-75.089492797852, 40.235366821289}, + {-93.233413696289, 45.22590637207}, + {-80.305252075195, 26.047897338867}, + {-73.563766479492, 45.515670776367}, + {-84.044272, 33.950732}, + {-81.553574, 30.356598}, + {121.560345, 25.046825}, + {121.56440734863, 25.034408569336}, + {-87.607040405273, 31.043930053711}, + {-79.949569702148, 40.339736938477}, + {-121.824413, 37.999695}, + {-76.648178100586, 37.031478881836}, + {99.960136, 8.437843}, + {12.140986, 47.463206}, + {9.127982, 48.861977}, + {7.586132, 49.514745}, + {9.230732, 48.468357}, + {10.64059, 49.99092}, + {-118.555514, 34.245761}, + {-63.514023, 44.88533}, + {17.180338, 48.127964}, + {14.480896, 48.732147}, + {8.576678, 58.880716}, + {8.322375, 49.406665}, + {20.433384, 49.031993}, + {-96.672509, 32.86791}, + {15.642471, 46.547699}, + {-2.1375274658203, 52.261276245117}, + {6.232853, 51.208821}, + {-118.536301, 34.256058}, + {-83.859329223633, 36.09489440918}, + {17.158619, 48.127267}, + {172.574506, -43.545778}, + {-79.516983, 43.189365}, + {-2.095642, 57.157059}, + {-84.144973754883, 33.716354370117}, + {-84.529567, 44.114485}, + {8.913296, 58.52693}, + {19.088194, 49.841943}, + {-79.93515, 43.249054}, + {12.089798, 47.544803}, + {21.710229, 48.697459}, + {-75.605850219727, 45.376968383789}, + {-79.662551879883, 43.899307250977}, + {-102.775648, 20.360648}, + {-76.578686, 44.280536}, + {-83.106079, 42.537003}, + {11.734085, 47.760315}, + {18.842021, 50.340593}, + {4.621505, 52.300186}, + {4.518941, 50.712113}, + {-100.091966, 25.673312}, + {-79.474411010742, 47.355880737305}, + {-73.491669, 45.455933}, + {14.316493, 50.038731}, + {11.756882, 48.144699}, + {12.045873, 57.676036}, + {-80.987667, 32.459336}, + {-79.801876, 43.349688}, + {107.080307, 27.726748}, + {5.039473, 50.800887}, + {9.140213, 48.75499}, + {5.854045, 51.019036}, + {-71.096237, 42.073105}, + {-82.630234, 28.275375}, + {106.83311462402, -6.1351776123047}, + {3.661794, 50.65506}, + {11.45393371582, 48.698959350586}, + {-1.597572, 53.808575}, + {12.950207, 48.836552}, + {13.072575, 58.450701}, + {16.603292, 49.176902}, + {-91.107559204102, 29.87663269043}, + {-85.976943969727, 39.894790649414}, + {9.664307, 53.957521}, + {8.027828, 49.629193}, + {-0.201246, 51.654691}, + {-1.941696, 48.056387}, + {9.937816, 49.705582}, + {77.18392, 28.565034}, + {-100.206642, 25.702515}, + {-122.88963317871, 49.259262084961}, + {-73.387985229492, 45.415420532227}, + {-79.253311, 43.770905}, + {-118.12568664551, 34.033584594727}, + {99.87190246582, 20.112533569336}, + {-80.707168, 35.399094}, + {120.395316, 22.636013}, + {-75.671511, 41.384039}, + {-103.487243, 19.441806}, + {-79.685211, 43.752365}, + {-72.533798217773, 41.781692504883}, + {176.190517, -37.65539}, + {19.451228, 50.065813}, + {15.830837, 57.359848}, + {18.623666, 48.748645}, + {5.598221, 50.646678}, + {0.641051, 52.474136}, + {12.218848, 48.523596}, + {6.791162, 47.079946}, + {5.723704, 51.23766}, + {-122.361947, 49.049149}, + {12.2529, 57.757187}, + {-83.621063, 39.93187}, + {-117.84965515137, 34.096755981445}, + {174.769477, -36.922989}, + {30.620956420898, 36.855697631836}, + {-70.598382, 41.541826}, + {-81.559525, 42.646866}, + {-79.807663, 43.251572}, + {176.251013, -38.141589}, + {7.385599, 46.884775}, + {10.098489, 56.424409}, + {-77.603989, 43.15876}, + {-97.637557983398, 32.735824584961}, + {-122.573227, 49.192795}, + {18.609055, 54.348633}, + {8.633006, 48.038334}, + {-103.21449279785, 44.050369262695}, + {-95.210952758789, 29.585494995117}, + {-79.350128, 43.69194}, + {-80.113678, 26.678925}, + {6.8946075439453, 49.24690246582}, + {100.884018, 14.376984}, + {13.676282, 45.538729}, + {-73.387985229492, 45.381088256836}, + {-95.47737121582, 30.188369750977}, + {-73.86589050293, 40.705032348633}, + {-73.801345825195, 40.705032348633}, + {-114.22691345215, 51.131057739258}, + {7.733096, 51.524616}, + {15.694983, 47.375761}, + {-76.026077270508, 44.908676147461}, + {15.051564, 48.819417}, + {-2.105026, 57.149353}, + {13.545501, 50.33435}, + {-104.662394, 50.542834}, + {-94.57649230957, 39.286422729492}, + {-113.46199, 53.517838}, + {14.295959, 48.311462}, + {51.520665, 25.353098}, + {-75.587311, 39.669571}, + {-74.404907, 40.702972}, + {-73.933868, 40.741425}, + {13.959489, 48.060331}, + {5.230522, 51.326409}, + {-4.7097, 55.669785}, + {-77.288131713867, 38.73161315918}, + {21.012344, 52.221603}, + {-118.56376647949, 34.378280639648}, + {8.882194, 48.825447}, + {51.467155, 25.246431}, + {-79.719162, 43.87085}, + {-87.671585083008, 41.49055480957}, + {99.869328, 13.344612}, + {-122.17552185059, 47.416305541992}, + {9.84773, 53.375842}, + {1.109322, 52.317986}, + {100.268025, 13.593995}, + {-104.838181, 21.467285}, + {-101.93458557129, 33.522720336914}, + {120.44105529785, 23.492202758789}, + {-104.834633, 38.82843}, + {99.849044, 19.869688}, + {-101.419853, 20.596712}, + {-77.025833129883, 38.903274536133}, + {-89.01741027832, 42.219772338867}, + {-75.100675, 44.954798}, + {4.9706268310547, 52.368392944336}, + {8.56202, 47.405353}, + {51.428706, 25.262884}, + {16.623143, 48.817337}, + {-96.771011352539, 32.959671020508}, + {-85.499884, 39.355299}, + {-95.85090637207, 29.706344604492}, + {11.54271, 48.161964}, + {12.369096, 51.251641}, + {8.9408111572266, 48.646774291992}, + {5.709669, 50.467653}, + {-76.745681762695, 39.307022094727}, + {-80.284652, 43.348189}, + {3.601455, 50.372217}, + {8.132433, 49.748938}, + {-2.655944, 52.693532}, + {-86.044235229492, 39.782180786133}, + {-113.995285, 50.872879}, + {-79.26155090332, 43.759231567383}, + {5.206342, 51.361869}, + {6.980708, 50.877629}, + {7.767677, 50.647776}, + {105.834732, 21.029205}, + {-77.120590209961, 39.058456420898}, + {139.630325, 35.715592}, + {11.763382, 50.396805}, + {14.69293, 55.096883}, + {120.728531, 24.150467}, + {-82.65358, 46.384964}, + {-0.60081481933594, 52.737808227539}, + {-111.684952, 40.273132}, + {105.850623, 21.031658}, + {-87.63176, 41.913185}, + {-69.667739868164, 44.55436706543}, + {105.74272155762, 19.392929077148}, + {107.17012, 16.747971}, + {-95.472565, 29.826508}, + {-106.58592224121, 35.166549682617}, + {4.566193, 51.953385}, + {172.658143, -43.52919}, + {-1.6486358642578, 54.990005493164}, + {7.88269, 48.422241}, + {-79.177771, 43.195502}, + {-121.89811706543, 37.336349487305}, + {-78.863064, 35.690462}, + {12.726542, 49.165428}, + {4.388351, 50.913391}, + {-83.191321, 42.147969}, + {-86.125259399414, 39.850845336914}, + {13.11149597168, 48.17985534668}, + {15.670114, 47.604945}, + {108.21601867676, 16.087417602539}, + {-118.32893371582, 47.143020629883}, + {100.535751, 13.819016}, + {172.626959, -43.56359}, + {7.394232, 51.50378}, + {17.758761, 48.446886}, + {-0.415034, 51.602193}, + {-80.689316, 34.188309}, + {-97.571640014648, 30.475387573242}, + {174.768541, -36.808}, + {-3.6289215087891, 55.077896118164}, + {-75.313797, 45.317459}, + {-73.845291137695, 41.06071472168}, + {-97.733688354492, 30.486373901367}, + {-100.15667, 25.661382}, + {-84.096909, 37.095337}, + {-75.760715, 45.350348}, + {14.631307, 46.163569}, + {-63.971328735352, 44.666976928711}, + {13.072158, 48.252514}, + {8.246541, 49.858665}, + {33.299972, 34.949844}, + {-73.617324829102, 45.596694946289}, + {-79.392458, 43.668409}, + {-81.291275024414, 28.916702270508}, + {10.075716, 53.259721}, + {33.30334, 35.118798}, + {-94.570999, 39.092102}, + {-119.271927, 50.268631}, + {17.150346, 48.124239}, + {5.632185, 50.565959}, + {-82.267684936523, 36.329727172852}, + {19.224701, 42.453428}, + {-122.867661, 45.531464}, + {9.726553, 56.310485}, + {51.50951, 25.231321}, + {-74.507904, 39.400406}, + {-84.379806518555, 34.191513061523}, + {-114.039567, 51.00513}, + {-79.378281, 43.659668}, + {-117.167816, 46.732407}, + {-71.111069, 41.680069}, + {100.582581, 13.852386}, + {14.589157104492, 46.139144897461}, + {-88.081512, 41.990433}, + {-82.310839, 42.953102}, + {-83.691787719727, 33.61198425293}, + {-122.4584197998, 48.764877319336}, + {0.886166, 52.843771}, + {100.473145, 13.670703}, + {174.78355407715, -36.79801940918}, + {7.761154, 50.476315}, + {6.826286, 50.202026}, + {6.2422943115234, 51.58561706543}, + {-75.905365, 45.333298}, + {103.80644, 1.277117}, + {-75.618421, 45.3888}, + {-83.247528, 42.686691}, + {9.173279, 49.189224}, + {126.902788, 37.464591}, + {4.256515, 51.974258}, + {35.90387, 31.954285}, + {100.61897277832, 13.825607299805}, + {5.4389190673828, 51.332931518555}, + {99.104233, 19.822769}, + {7.9987335205078, 50.408706665039}, + {14.331373, 48.308751}, + {11.462024, 48.744368}, + {29.152908325195, 40.924758911133}, + {-88.225021, 30.693283}, + {100.85929870605, 14.064559936523}, + {-79.394564, 43.643543}, + {-74.007339477539, 40.744857788086}, + {-112.90580749512, 53.824081420898}, + {76.593246459961, 31.574020385742}, + {107.87818908691, 31.078262329102}, + {-79.735336303711, 43.624649047852}, + {-74.754409790039, 41.057968139648}, + {-117.89909362793, 33.662796020508}, + {-80.10612487793, 26.112442016602}, + {-81.465683, 43.324585}, + {-79.765548706055, 43.230514526367}, + {-73.208084106445, 40.724258422852}, + {-76.303482055664, 40.158462524414}, + {-80.066299438477, 48.138656616211}, + {120.182778, 23.008706}, + {-82.836227416992, 38.371810913086}, + {-115.23078918457, 36.23908996582}, + {-84.452590942383, 39.256210327148}, + {-75.040054321289, 40.034866333008}, + {-87.623519897461, 41.883316040039}, + {-122.45155334473, 37.649459838867}, + {-76.059036254883, 36.835098266602}, + {-81.24733, 42.983322}, + {121.241091, 24.976231}, + {-106.66694641113, 52.128067016602}, + {65.566149, 57.170963}, + {-114.12391662598, 51.084365844727}, + {-84.446705, 39.139873}, + {-80.003128051758, 43.93913269043}, + {-86.777572631836, 36.152572631836}, + {-106.65733337402, 35.195388793945}, + {17.675629, 52.287369}, + {-95.72731, 29.748917}, + {-102.041016, 19.388809}, + {-121.75666809082, 37.277297973633}, + {-122.1150970459, 37.701644897461}, + {-77.880707, 38.50605}, + {-106.545582, 52.36084}, + {-70.916061401367, 42.12776184082}, + {26.735916137695, 39.567947387695}, + {-123.360901, 48.436432}, + {-83.382797241211, 41.149978637695}, + {-82.799504, 42.171025}, + {-86.332855, 43.41053}, + {-74.721725, 45.019913}, + {-77.424088, 37.264938}, + {-114.042892, 50.983841}, + {14.46418762207, 46.051254272461}, + {-111.893692, 40.561523}, + {-85.755844116211, 38.311386108398}, + {-85.292486, 35.132}, + {-94.176864624023, 30.129318237305}, + {-77.078018188477, 38.74397277832}, + {-118.593088, 34.435}, + {-111.92527770996, 33.50212097168}, + {-76.947555, 38.967133}, + {-104.60014343262, 50.441665649414}, + {-80.727196, 41.077881}, + {-116.05613708496, 43.429641723633}, + {28.808212, 41.068954}, + {-77.106857299805, 38.868942260742}, + {-74.469453, 40.476103}, + {-91.944168, 30.116272}, + {-84.334028, 46.537078}, + {15.996192, 46.665704}, + {-89.69856262207, 35.086898803711}, + {-79.40506, 43.733826}, + {-83.158950805664, 38.310012817383}, + {-80.167922973633, 26.105575561523}, + {-76.995620727539, 38.996658325195}, + {14.970073, 46.140862}, + {-75.623909, 45.408485}, + {-79.546821, 43.83264}, + {-76.848678588867, 39.106521606445}, + {13.962937, 46.337585}, + {-79.391327, 43.761978}, + {-101.92046, 21.380081}, + {-64.671343, 45.995643}, + {-118.63655090332, 34.186019897461}, + {-79.221725463867, 42.964096069336}, + {120.358283, 22.580587}, + {-95.412826538086, 29.775009155273}, + {-106.66145324707, 35.198135375977}, + {-75.633316040039, 45.426406860352}, + {-103.721008, 19.260407}, + {-88.171463012695, 41.585311889648}, + {-87.422333, 41.552353}, + {15.13851, 46.38347}, + {28.208084106445, -25.718307495117}, + {-84.574813842773, 39.128494262695}, + {-82.915878295898, 39.948348999023}, + {120.733707, 24.157721}, + {-81.450398, 30.321639}, + {-123.400596, 48.435582}, + {-87.233505249023, 33.827590942383}, + {51.493819, 25.28313}, + {100.19050598145, 19.688186645508}, + {-80.353088, 43.396225}, + {121.235847, 25.065994}, + {-121.35154724121, 38.459701538086}, + {19.101588, 47.464146}, + {-75.383377075195, 40.659713745117}, + {-88.067093, 41.992264}, + {-79.675827, 43.21907}, + {-117.928619, 33.627777}, + {-81.690902709961, 28.026809692383}, + {-80.228348, 26.207886}, + {-88.03379, 42.048111}, + {-106.6381072998, 52.130813598633}, + {15.58082, 46.550152}, + {-80.675666, 41.140907}, + {72.640457, 23.031235}, + {-73.598098754883, 45.52116394043}, + {-83.848342895508, 34.209365844727}, + {-81.570053100586, 28.337173461914}, + {30.750453, -27.792854}, + {-84.112015, 33.959427}, + {19.758224487305, 45.930404663086}, + {-81.41487121582, 28.545913696289}, + {-87.513656616211, 41.612777709961}, + {-98.21214, 19.019945}, + {-79.302065, 33.327713}, + {-74.682998657227, 40.64323425293}, + {-87.586441, 41.793137}, + {14.401668, 46.293703}, + {-79.808120727539, 43.590316772461}, + {75.820083618164, 22.642135620117}, + {-86.789932250977, 33.537826538086}, + {-82.913818, 42.250671}, + {-8.848872, 53.533386}, + {-78.97934, 39.439545}, + {-1.029968, 37.615128}, + {-104.90089416504, 39.690170288086}, + {-48.779983520508, -27.690353393555}, + {13.311659, 41.627088}, + {102.069814, 17.323445}, + {-48.159714, -21.19194}, + {6.442794, 45.464172}, + {-91.800384, 40.081558}, + {-49.368538, -25.409121}, + {-43.221704, -22.964958}, + {2.140549, 41.425186}, + {-47.307137, -15.549585}, + {-118.177871, 33.799362}, + {11.139450073242, 46.39045715332}, + {10.148256, 53.593154}, + {-5.826742, 43.360924}, + {5.2054595947266, 50.909957885742}, + {-118.0638885498, 33.87565612793}, + {-90.566482543945, 14.685287475586}, + {-79.738082885742, 43.68782043457}, + {13.914485, 45.582147}, + {100.419271, 16.21509}, + {-92.008438110352, 30.213088989258}, + {32.934951782227, 24.508438110352}, + {7.089794, 51.605231}, + {-1.132965, 37.97699}, + {-97.312088012695, 32.796249389648}, + {-80.940812, -2.221703}, + {-75.684127807617, 4.8291778564453}, + {121.52320861816, 25.094833374023}, + {12.059798, 50.23879}, + {18.036118, 59.253387}, + {-70.620064, -33.439372}, + {72.665634155273, 22.940139770508}, + {-52.882082, -20.441909}, + {11.156463, 43.798371}, + {-78.845443725586, 35.718612670898}, + {-44.245376586914, -2.5412750244141}, + {-122.336746, 47.286667}, + {35.17204284668, 32.959671020508}, + {120.552313, 16.111632}, + {-77.044465, 38.903906}, + {-40.394886, -20.303638}, + {6.443505, 52.86278}, + {-121.9485, 37.323546}, + {-76.166152954102, -13.785781860352}, + {-99.137535, 19.444427}, + {9.1893768310547, 45.488204956055}, + {99.169693, 8.80806}, + {15.535354614258, 48.365249633789}, + {7.261614, 50.524622}, + {125.6485748291, 7.1404266357422}, + {9.736731, 52.382616}, + {-48.600082397461, -25.957260131836}, + {-66.934204, 10.512543}, + {-78.918228149414, 43.989944458008}, + {10.486785, 43.688594}, + {72.811203, 18.99559}, + {84.183426, 24.91539}, + {-72.804336547852, 41.294174194336}, + {-98.966045, 19.442883}, + {17.938613891602, 59.417495727539}, + {-66.946945, 10.48317}, + {-70.138975, -20.218081}, + {13.590578, 52.430485}, + {67.112045288086, 24.817428588867}, + {4.865799, 52.313004}, + {-95.528182983398, 29.673385620117}, + {7.151566, 51.467819}, + {-99.205856323242, 19.43962097168}, + {35.070591, 32.837448}, + {-115.17585754395, 36.099014282227}, + {75.866775512695, 30.373764038086}, + {14.516372680664, 40.939865112305}, + {-58.490524291992, -34.694137573242}, + {10.179691, 56.132412}, + {13.480911254883, 52.523574829102}, + {-2.728847, 54.340757}, + {-121.988754, 49.153519}, + {144.93644714355, -37.773056030273}, + {106.73011779785, 10.868911743164}, + {-90.317093, 35.148073}, + {120.708847, 24.098282}, + {18.496170043945, -33.886642456055}, + {9.125896, 39.216207}, + {-116.121467, 43.48981}, + {-100.161771, 25.765913}, + {-79.504623413086, 43.668594360352}, + {-90.52871, 19.829164}, + {-79.543075561523, 43.822402954102}, + {-38.494377, -12.994766}, + {6.174314, 51.771356}, + {-73.828811645508, 40.750350952148}, + {13.314743, -8.86734}, + {12.622604370117, 42.000045776367}, + {-46.782845, -23.531493}, + {-46.668411, -23.517746}, + {-99.300461, 19.609909}, + {139.531169, 35.670555}, + {-1.26091, 51.397476}, + {73.158645629883, 34.054183959961}, + {8.8584136962891, 49.104080200195}, + {-46.64176940918, -23.529281616211}, + {-48.281642, -15.722349}, + {-103.03047180176, 49.097213745117}, + {-122.983474, 46.751175}, + {4.2661285400391, 52.058029174805}, + {24.736748, -24.600449}, + {-106.568459, 31.867624}, + {-46.778985, -23.511429}, + {12.190018, 55.770645}, + {-7.6801300048828, 33.539199829102}, + {-80.431595, 43.174896}, + {-43.66584777832, -22.93327331543}, + {-109.942193, 27.570666}, + {3.098145, 51.07338}, + {-85.510335, 42.870121}, + {23.583801, 38.463822}, + {3.19313, 50.899887}, + {-96.750411, 33.222657}, + {-79.420852661133, 43.870468139648}, + {-56.095355, -15.669157}, + {85.251846313477, 25.576858520508}, + {15.255203, 50.643265}, + {-80.343018, 25.947647}, + {15.095901, 37.518173}, + {-83.751526, 34.232368}, + {-8.11615, 37.078171}, + {-79.07341003418, 35.921859741211}, + {-96.13472, 43.192291}, + {121.034866, 14.559494}, + {15.693793, 45.844791}, + {35.17685, 31.252672}, + {-52.58674621582, -27.119064331055}, + {7.677841, 43.782578}, + {-117.645721, 33.462982}, + {-34.963406, -8.048755}, + {-99.222132, 19.281031}, + {100.497952, 13.59026}, + {-1.597137, 47.206192}, + {17.954406, 40.641174}, + {-0.20942687988281, 51.530685424805}, + {35.351943969727, 38.711013793945}, + {-99.199295, 19.5121}, + {-46.193847, -23.504334}, + {4.9211883544922, 44.938888549805}, + {-3.759354, 40.385117}, + {101.693115, 3.137512}, + {22.362474, 60.541142}, + {-73.573379516602, 45.49919128418}, + {7.6059722900391, 45.062484741211}, + {-74.468765258789, 40.481185913086}, + {-106.656635, 52.140385}, + {-77.005233764648, 40.212020874023}, + {144.882889, -37.703018}, + {8.638687, 50.155335}, + {-57.612991333008, -25.288467407227}, + {-82.854081, 42.002335}, + {-77.138101, 38.761483}, + {-122.91709899902, 49.253768920898}, + {151.247872, -32.647688}, + {77.646560668945, 13.018112182617}, + {13.281784057617, 43.211288452148}, + {-49.054641723633, -28.319320678711}, + {-86.123886108398, 40.000534057617}, + {-79.892434, -2.246385}, + {27.77961730957, 59.394149780273}, + {172.541328, -43.51606}, + {153.272228, -27.573076}, + {5.489142, 52.189473}, + {-1.319561, 53.29279}, + {-73.600756, 45.42414}, + {-75.84137, 45.256119}, + {-79.981155395508, 32.792129516602}, + {-74.114456, 40.742111}, + {100.624466, 13.646393}, + {-50.142975, -15.943222}, + {77.100677, 28.46592}, + {107.13935852051, -6.8231964111328}, + {80.181655883789, 28.968887329102}, + {12.023261, 45.807593}, + {-73.726011, 45.488401}, + {10.995254516602, 59.964065551758}, + {-58.420486, -34.589767}, + {-1.408599, 50.921017}, + {-79.811325, 40.434494}, + {-6.359024, 32.335968}, + {20.486068725586, 54.751052856445}, + {72.515945, 23.019882}, + {28.320693969727, -28.21907043457}, + {-48.560867, -20.532761}, + {-77.024459838867, -12.095260620117}, + {-123.021011, 49.248734}, + {88.36409, 22.548294}, + {16.596716, 41.181761}, + {-70.727920532227, -33.474655151367}, + {-74.768142700195, 10.962295532227}, + {176.237068, -37.6857}, + {-80.784495, 35.389127}, + {101.41696, 3.013617}, + {6.883163, 51.099472}, + {23.224411010742, 46.111679077148}, + {9.9584197998047, 56.118850708008}, + {1.7571258544922, 41.504287719727}, + {-87.641647, 41.887711}, + {-81.175919, 42.992661}, + {-79.418106079102, 43.654861450195}, + {9.236069, 60.985794}, + {-0.017166137695312, 51.617202758789}, + {-57.608414, -25.33287}, + {-0.414067, 39.583199}, + {11.550613, 55.419983}, + {-65.190811157227, -26.804580688477}, + {103.90525817871, 1.3245391845703}, + {47.252823, 56.12571}, + {-113.44413757324, 53.605728149414}, + {-46.367413, -23.502855}, + {-79.603500366211, 43.624649047852}, + {16.59874, 59.886246}, + {20.895898, 41.808962}, + {139.6753692627, 35.676040649414}, + {20.775989, 54.842869}, + {11.880341, 45.417137}, + {-94.157638549805, 42.504043579102}, + {6.88179, 51.032651}, + {-81.451951, 41.627884}, + {-82.188034057617, 28.258895874023}, + {-38.492203, -12.991562}, + {32.618739, 0.34996}, + {15.441883, 41.653687}, + {31.199543, -25.499428}, + {-4.160026, 51.678942}, + {-93.96946, 29.960137}, + {-81.768495, 41.455536}, + {85.389862, 26.134415}, + {8.718681, 47.493896}, + {-38.408546, -3.846417}, + {18.825526, 47.484412}, + {79.135208129883, 18.434371948242}, + {-2.695422, 48.118848}, + {-58.601174, -34.699828}, + {-2.2515106201172, 53.447799682617}, + {-63.814087, 10.998116}, + {106.72874450684, -6.4125823974609}, + {12.416471, 55.693405}, + {-46.537743, -23.70472}, + {-43.34587097168, -22.784957885742}, + {-79.362717, 43.766098}, + {-117.759705, 33.5186}, + {153.28056335449, -27.535171508789}, + {5.775479, 45.213625}, + {-1.8834686279297, 53.942184448242}, + {-46.583467, -23.494325}, + {15.076675, 37.522136}, + {-81.57829284668, 28.481369018555}, + {18.452224731445, 53.402481079102}, + {-0.38887, 39.444168}, + {34.784431, 32.019653}, + {-58.577041625977, -34.599380493164}, + {-0.373192, 53.758163}, + {25.273819, 54.727249}, + {-1.168901, 52.901231}, + {110.362015, 1.52504}, + {75.86540222168, 22.687454223633}, + {-88.768158, 43.081512}, + {-91.739248, 35.20514}, + {-48.183975219727, -1.2984466552734}, + {6.796417, 44.950562}, + {-82.178764, 42.384224}, + {-48.24187, -18.945815}, + {120.31196594238, 22.87971496582}, + {-51.139959, -29.886449}, + {-86.476821899414, 35.952072143555}, + {-86.627883911133, 34.684524536133}, + {14.795837, 40.911026}, + {-69.284592, 10.062561}, + {16.854106, 41.129379}, + {121.00685119629, 14.471054077148}, + {17.251971, 40.955658}, + {-111.820358, 33.485367}, + {124.240048, 9.863216}, + {-79.882965, -2.187012}, + {16.174507, 58.647904}, + {-47.04895, -22.895737}, + {-46.533279418945, -23.549880981445}, + {-4.512634, 50.849533}, + {-84.071732, 9.903641}, + {-81.276993, 42.972061}, + {5.4485321044922, 51.468887329102}, + {-58.414519, -34.670851}, + {-71.339584, -29.96727}, + {6.910753, 52.393801}, + {11.911152, 44.301424}, + {135.68733215332, 34.916610717773}, + {26.214558, -29.126489}, + {-88.208541870117, 42.406539916992}, + {11.733999, 45.333796}, + {41.152725219727, 45.011672973633}, + {-101.180099, 20.137802}, + {-43.075528, -22.841026}, + {-123.13682556152, 49.204330444336}, + {121.61659240723, 25.044021606445}, + {4.645958, 52.401123}, + {1.0540008544922, 49.40071105957}, + {1.975662, 41.279892}, + {-0.443461, 51.489112}, + {-66.881332397461, 10.147933959961}, + {18.129697, 40.366811}, + {10.222092, 45.601796}, + {15.417251586914, 47.046890258789}, + {-3.040466, 53.592682}, + {-80.378036, 40.844421}, + {-79.397703, 44.012113}, + {-38.496780395508, -12.953567504883}, + {-82.053451538086, 36.186904907227}, + {12.067794799805, 47.814559936523}, + {-68.006821, 10.205917}, + {-48.192201, -21.788567}, + {27.974167, -25.56221}, + {-51.139412, -30.159218}, + {-1.6033172607422, 55.136947631836}, + {-80.411682, 27.327805}, + {-34.837834, -7.891617}, + {-58.173294, -26.167374}, + {100.63682556152, 13.712997436523}, + {-0.566482, 51.624413}, + {101.71348571777, 3.1125640869141}, + {12.01182, 51.445959}, + {8.941759, 53.073284}, + {-73.477249, 45.576782}, + {-99.129572, 19.463178}, + {28.014450073242, -26.080856323242}, + {-3.055561, 53.40237}, + {2.0688629150391, 42.575454711914}, + {-75.488571, 44.699844}, + {-4.8387908935547, 39.960708618164}, + {100.40199279785, 15.29914855957}, + {-79.55626, 44.46785}, + {18.162460327148, 40.293045043945}, + {138.459327, -35.23676}, + {-115.215771, 36.070101}, + {16.12174987793, 45.798568725586}, + {9.079971, 45.57518}, + {-119.738846, 36.715164}, + {-118.27262878418, 34.125595092773}, + {8.188248, 47.134781}, + {77.416946, 28.640671}, + {6.474969, 51.208354}, + {-121.3293, 38.631912}, + {108.99192810059, -7.7323150634766}, + {-80.805632, -2.246548}, + {-76.527328491211, 3.3844757080078}, + {-71.532944, -32.777298}, + {17.247299, 49.583359}, + {124.672395, 8.507312}, + {79.55680847168, 30.009841918945}, + {19.071579, 47.526627}, + {-52.959106, 47.51126}, + {-100.955086, 22.119942}, + {-98.44367980957, 34.62272644043}, + {10.462417602539, 63.443984985352}, + {-87.697677612305, 41.923141479492}, + {-84.342957, 10.050888}, + {4.797318, 52.797134}, + {2.300565, 41.592838}, + {9.664143, 45.691648}, + {-80.320358276367, 25.970993041992}, + {47.315369, 24.154129}, + {-48.542022, -25.542601}, + {-86.473122, 36.987387}, + {18.066559, 59.434662}, + {11.087099, 60.18453}, + {-49.251022338867, -16.772689819336}, + {-90.15998840332, 38.724746704102}, + {-124.09538269043, 49.319686889648}, + {-46.580582, -23.462982}, + {-86.772079467773, 33.411483764648}, + {105.783463, 21.032639}, + {20.985397, 52.239029}, + {79.950942993164, 7.1857452392578}, + {77.421341, 28.65872}, + {-77.614975, 37.523117}, + {79.981155, 6.926743}, + {13.181, 47.494965}, + {-99.136734, 19.34251}, + {71.371994018555, 42.902297973633}, + {10.679854, 43.866349}, + {10.691757202148, 59.918746948242}, + {-118.508996, 34.331643}, + {-79.560242, 43.192749}, + {-117.372437, 33.19931}, + {-118.04054260254, 34.072036743164}, + {174.633432, -36.886483}, + {77.245487, 28.622963}, + {-80.54111, 43.571607}, + {-47.183042, -1.19545}, + {-78.75206, 44.350022}, + {-104.93934631348, 39.679183959961}, + {-0.340653, 53.757096}, + {119.419447, -5.129225}, + {-79.463298, 43.6545}, + {37.519497, 55.545065}, + {14.241714, 40.944181}, + {-73.08852, 41.825725}, + {-74.689865, 45.034332}, + {-118.183723, 33.916974}, + {149.739096, -34.740207}, + {103.862294, 1.323109}, + {102.93983459473, 1.8573760986328}, + {-60.699738, -32.890457}, + {-4.559468, 36.585986}, + {-79.591827, 8.914719}, + {-43.209418, -22.818863}, + {10.852033, 48.284355}, + {-73.903427, 42.787399}, + {80.813369750977, 17.931747436523}, + {-46.531218, -23.634139}, + {-34.911118, -8.106194}, + {-98.151168823242, 19.258346557617}, + {-64.350381, -33.095011}, + {9.20414, 45.374738}, + {7.6142120361328, 47.475357055664}, + {-84.09553527832, 39.783554077148}, + {30.969772338867, -29.74479675293}, + {8.797226, 50.342865}, + {-66.886139, 10.496063}, + {-43.985057, -19.921009}, + {-43.467133, -22.756943}, + {-1.723022, 41.913986}, + {-80.312119, 26.007385}, + {-82.012252807617, 34.915237426758}, + {-0.574035, 39.544602}, + {-99.211349487305, 19.520645141602}, + {74.610214233398, 26.459884643555}, + {-122.29499816895, 37.867813110352}, + {-4.283981, 51.570053}, + {13.353882, 38.106079}, + {9.226044, 45.521301}, + {4.3141937255859, 52.067642211914}, + {-80.305252075195, 40.608901977539}, + {-123.732834, 48.90976}, + {77.450180053711, 28.650283813477}, + {7.550503, 45.074068}, + {76.299754, 9.967445}, + {-47.946234, -15.849515}, + {-1.601944, 6.679001}, + {-117.09434509277, 32.641067504883}, + {29.363021850586, 40.758590698242}, + {-52.272157, -15.887287}, + {14.121208, 48.036003}, + {33.83189, 27.092875}, + {20.913162, 52.211445}, + {-119.677208, 36.326771}, + {74.662203, 19.622661}, + {-43.431015, -22.807999}, + {-122.1411895752, 37.442092895508}, + {90.406219, 23.780457}, + {39.793167114258, 57.680282592773}, + {-66.969223022461, 10.502243041992}, + {-85.53974, 42.33181}, + {-2.1004486083984, 52.551040649414}, + {-0.361519, 39.453964}, + {-101.208939, 20.547043}, + {78.278504, 17.469865}, + {145.740017, -16.878826}, + {-46.198217, -23.518393}, + {72.829055786133, 19.121017456055}, + {74.38591, 31.465073}, + {29.15153503418, 40.264205932617}, + {88.255233764648, 27.05451965332}, + {-96.895522, 30.084687}, + {25.63591003418, 58.358688354492}, + {-43.382188, -23.001442}, + {-43.377457, -22.960052}, + {34.846295, 32.161188}, + {-97.364273071289, 31.43669128418}, + {120.80360412598, 23.512802124023}, + {-95.447881, 30.061178}, + {25.552139282227, -33.839950561523}, + {2.46419, 48.710081}, + {26.704502, 37.790222}, + {5.991051, 52.193436}, + {-1.321399, 52.028602}, + {-43.216033, -22.910926}, + {-112.41691589355, 46.107559204102}, + {-74.20062, 4.587212}, + {12.97554, 55.578918}, + {10.954055786133, 45.349502563477}, + {140.34965515137, 36.530227661133}, + {2.281163, 48.832995}, + {-35.230408, -5.826187}, + {115.900958, -32.012449}, + {-51.058845, -29.675235}, + {-74.187927, 40.693359}, + {15.66032409668, 40.997543334961}, + {10.280644, 45.419603}, + {30.766083, -29.768652}, + {-76.458674, 44.308558}, + {-76.203232, 43.123856}, + {-0.080088, 51.276002}, + {-84.963455200195, 41.209030151367}, + {11.070785522461, 43.88557434082}, + {138.580856, -34.956436}, + {0.88096618652344, 51.129684448242}, + {21.047744750977, 52.362899780273}, + {-100.262427, 25.695457}, + {-89.231019, 13.685407}, + {-43.567809, -22.916248}, + {-114.04151916504, 50.934677124023}, + {-0.008583, 51.492233}, + {2.8928375244141, 42.711410522461}, + {-79.186945, 44.036642}, + {-0.91392517089844, 51.000595092773}, + {-3.146411, 55.919904}, + {-123.17390441895, 49.165878295898}, + {47.953262, 29.287491}, + {100.10398864746, 6.6323089599609}, + {-4.4322967529297, 36.736221313477}, + {-0.965559, 53.595566}, + {-118.29734802246, 33.797378540039}, + {-71.46243, 41.763772}, + {-68.832092, -32.87796}, + {-63.167268, -17.761116}, + {-93.185348510742, 44.900436401367}, + {-78.935051, 43.911667}, + {-75.596237182617, 38.654708862305}, + {5.665512, 52.042236}, + {-46.647722, -23.530198}, + {-79.635087, 43.731308}, + {12.65831, 43.879807}, + {152.952005, -29.72155}, + {107.607651, -6.901932}, + {95.298843383789, 5.5542755126953}, + {-64.27619934082, -31.31721496582}, + {1.0608673095703, 51.856155395508}, + {-119.493586, 49.891342}, + {-117.969589, 34.051895}, + {-2.128258, 53.457241}, + {26.136664, 44.436575}, + {-46.332852, -23.937166}, + {-2.247195, 53.423277}, + {-3.479576, 50.578308}, + {31.585921, 30.820084}, + {-1.501919, 53.82393}, + {32.77702331543, 39.89616394043}, + {119.42481994629, -5.1862335205078}, + {-79.512886, 43.655545}, + {-88.376083, 42.039185}, + {30.451767, -22.973923}, + {1.813431, 41.237869}, + {-78.498184, -0.188095}, + {19.413376, -33.624954}, + {-1.317675, 53.484193}, + {84.76062, 25.215683}, + {-0.671402, 50.788284}, + {15.638351, 38.104019}, + {101.08726501465, 13.03596496582}, + {-123.114853, 49.17366}, + {7.952756, 51.348368}, + {-4.7742462158203, 37.87467956543}, + {-49.304764, -25.54866}, + {20.980911, 52.20726}, + {-76.506729125977, 43.27995300293}, + {-45.775344, -23.140235}, + {72.739791870117, 19.987564086914}, + {-0.220596, 5.575607}, + {-85.776098, 38.156548}, + {-54.555429, -21.795039}, + {15.938759, 29.085617}, + {-34.95212, -8.033262}, + {-43.186159, -22.585971}, + {-101.179916, 19.689468}, + {14.275703, 41.079254}, + {7.731086, 47.885248}, + {8.889065, 48.918009}, + {-46.306867, -23.46856}, + {13.496017, 52.506752}, + {-122.66716003418, 49.121932983398}, + {7.838752, 48.002319}, + {-72.726058959961, 41.936874389648}, + {-41.965713, -22.535172}, + {10.160294, 36.806946}, + {-35.213377, -7.028807}, + {5.274474, 60.386851}, + {-61.356582641602, -33.252182006836}, + {-119.371238, 49.912679}, + {19.491348, 51.801224}, + {-115.17860412598, 36.089401245117}, + {-83.013381958008, 30.489120483398}, + {8.071702, 49.978376}, + {26.116561889648, 44.45686340332}, + {-46.353378295898, -23.48258972168}, + {35.397262573242, 30.94367980957}, + {-86.154098510742, 40.75309753418}, + {76.931351, 8.537064}, + {-3.095383, 51.627732}, + {-113.554516, 53.250561}, + {-89.947129, 34.920142}, + {15.235977172852, 52.733688354492}, + {-43.307418823242, -22.886581420898}, + {6.795645, 51.498499}, + {5.8536529541016, 43.443374633789}, + {-114.031905, 51.094325}, + {114.158936, 22.285767}, + {120.64979553223, 24.156875610352}, + {12.003221, 53.841703}, + {54.045181274414, 17.017135620117}, + {-4.344995, 55.841119}, + {-46.714916, -23.729911}, + {-79.529343, -1.798325}, + {19.844838, 47.296765}, + {-80.795516967773, 35.059432983398}, + {-3.537644, 38.345123}, + {-3.887101, 40.362625}, + {14.545211791992, 36.780166625977}, + {-82.63298034668, 28.068008422852}, + {-115.15251159668, 36.247329711914}, + {-66.159549, -17.378549}, + {-74.071884155273, 40.893173217773}, + {-2.990199, 53.410721}, + {123.90174865723, 10.323715209961}, + {12.502098, 45.955124}, + {-54.602737426758, -20.46272277832}, + {-82.47139, 42.731552}, + {-99.218215942383, 20.48469543457}, + {-117.15888977051, 32.768783569336}, + {9.213181, 45.525284}, + {103.299953, 16.191737}, + {9.130874, 45.540665}, + {-46.853328, -23.683118}, + {9.47392, 46.845294}, + {-81.644211, 30.411758}, + {-46.548233, -23.667908}, + {-112.028046, 33.304367}, + {77.281265, 28.624191}, + {12.467422485352, 41.947860717773}, + {-95.131301879883, 30.067520141602}, + {2.132549, 41.489439}, + {73.12912, 22.400436}, + {1.883743, 49.43422}, + {-96.54167175293, 17.006149291992}, + {51.592968, 25.171657}, + {3.0741119384766, 50.633926391602}, + {30.392990112305, 59.948959350586}, + {2.309895, 48.834638}, + {-0.162364, 53.540936}, + {8.6318206787109, 45.44563293457}, + {-1.490162, 53.434895}, + {-87.59880065918, 37.827987670898}, + {-87.177200317383, 14.067306518555}, + {174.694748, -36.799851}, + {-1.977539, 52.405472}, + {-4.345093, 55.8181}, + {9.26049, 49.133338}, + {11.587142944336, 52.148666381836}, + {-43.391572, -22.81284}, + {35.258560180664, 32.215347290039}, + {76.99836730957, 29.375381469727}, + {-81.655655, 41.486893}, + {7.638245, 45.121536}, + {14.650955200195, 50.903091430664}, + {-43.92951965332, -19.936752319336}, + {34.999008178711, 31.262283325195}, + {-40.231247, -20.188065}, + {-98.53295, 18.899386}, + {103.852383, 1.299931}, + {-3.023084, 43.220324}, + {16.360702514648, 57.975540161133}, + {0.49095153808594, 52.093734741211}, + {-65.390396, -24.823608}, + {8.327333, 49.65484}, + {85.336990356445, 27.73567199707}, + {75.865464, 30.913468}, + {-2.97266, 43.271713}, + {-2.986055, 43.2894}, + {-123.35929870605, 48.82942199707}, + {46.571731567383, 24.741897583008}, + {-84.19249, 30.493515}, + {-84.078598, 9.884262}, + {100.542068, 13.753281}, + {-4.500754, 36.687501}, + {-114.21146, 51.006432}, + {-85.956344604492, 39.809646606445}, + {-106.6641998291, 52.122573852539}, + {-47.030410766602, -23.595199584961}, + {-70.651016235352, -33.388137817383}, + {134.583206, 34.12262}, + {5.864869, 51.103821}, + {-105.5394744873, 50.416946411133}, + {-77.047806, -12.073975}, + {-110.94337463379, 29.040298461914}, + {-0.421257, 53.732786}, + {-100.458204, 20.629172}, + {12.412158, 42.979223}, + {148.173279, -23.571066}, + {28.455276489258, -26.189346313477}, + {2.131004, 41.373482}, + {-99.678955, 19.285812}, + {-76.50260925293, 44.223403930664}, + {-42.91361, -21.122108}, + {-75.21858215332, 2.9326629638672}, + {16.412887573242, 48.256759643555}, + {-89.17121887207, 38.403396606445}, + {-77.603988, 44.27202}, + {12.059669, 45.29274}, + {-86.212426, 39.807599}, + {-95.164260864258, 29.997482299805}, + {-80.255813, 42.041245}, + {-122.41035461426, 37.785415649414}, + {75.892181, 11.403122}, + {81.257629, 26.212006}, + {77.283859, 28.618088}, + {-79.761428833008, 43.789443969727}, + {15.636251, 38.209682}, + {-83.984947, 34.120793}, + {-69.292831420898, 10.195999145508}, + {-8.0165863037109, 31.631698608398}, + {13.93209, 50.475364}, + {16.850967, 40.893517}, + {-88.164596557617, 39.254837036133}, + {-79.49913, 44.042132}, + {-75.439685, 45.482026}, + {144.880486, -37.827301}, + {76.609211, 18.411927}, + {-75.8424, 39.714203}, + {-64.176498, 8.886154}, + {56.266937, 25.588532}, + {-79.299775, 43.820736}, + {-46.651208, -23.59976}, + {-80.083336, 43.465084}, + {-79.381713, 43.658295}, + {-68.725479, 10.324173}, + {-56.219101, -34.854813}, + {101.432648, 2.981415}, + {-99.560165, 27.510452}, + {-82.366897, 27.489515}, + {-6.7119598388672, 55.172653198242}, + {-74.555462, 40.905966}, + {36.786346, -1.297073}, + {35.300187, 32.699137}, + {-81.416244506836, 28.496475219727}, + {19.578097, 45.267335}, + {-96.749038696289, 32.932205200195}, + {-75.998542, 45.385553}, + {-79.4561, 43.997727}, + {74.036178588867, 15.490036010742}, + {31.016922, -17.774735}, + {111.7879486084, 29.531936645508}, + {-5.562877, 33.899291}, + {-67.88932800293, 10.219345092773}, + {-74.091895, 4.675762}, + {113.99757385254, 22.458114624023}, + {4.908828, 52.361527}, + {-99.069161, 19.348456}, + {145.208061, -38.081456}, + {28.238296508789, -26.178359985352}, + {85.212536, 52.537479}, + {-98.577347, 19.7715}, + {34.893154, 32.141717}, + {-87.519742, 37.952793}, + {-45.584335327148, -23.017044067383}, + {-103.69178, 50.51455}, + {12.041702, 44.207382}, + {-79.733963012695, 43.623275756836}, + {-86.162338256836, 39.76432800293}, + {77.069778442383, 28.456649780273}, + {-92.125643, 35.278264}, + {-77.552261, 44.113541}, + {-46.532118, -23.595834}, + {34.876785, -1.008511}, + {101.61186218262, 3.0741119384766}, + {4.182083, 52.026169}, + {10.629959106445, 59.823989868164}, + {-76.271209, 39.546661}, + {-73.635177612305, 45.501937866211}, + {-80.854566, 26.725008}, + {28.355025, 37.054825}, + {80.979537963867, 26.885604858398}, + {-117.843542, 33.977413}, + {73.849686, 20.283921}, + {15.437851, 46.334349}, + {4.497529, 52.079317}, + {21.437759399414, 42.031631469727}, + {-82.435226, 34.766579}, + {42.372207641602, 27.927932739258}, + {100.176086, 16.723251}, + {120.846176, 21.928024}, + {15.278549194336, 47.446517944336}, + {1.754379, 48.968399}, + {16.647720336914, 58.843460083008}, + {7.036515, 49.287873}, + {-49.313959, -25.493585}, + {-1.5717315673828, 53.020706176758}, + {-64.679947, 10.121841}, + {13.366756, 38.120155}, + {-87.736129760742, 38.506393432617}, + {27.123184204102, 38.45832824707}, + {-98.458786010742, 45.591201782227}, + {-75.60173034668, 6.2189483642578}, + {-6.407913, 38.683273}, + {9.232145, 39.281518}, + {-100.31547546387, 25.685348510742}, + {-73.345414, 45.596009}, + {8.8240814208984, 45.661239624023}, + {-74.856033325195, 40.032119750977}, + {-48.071595, -15.876462}, + {144.735947, -37.901459}, + {3.419397, 50.891713}, + {29.924697875977, 31.197738647461}, + {-61.838109, 17.109021}, + {-122.64930725098, 48.385848999023}, + {-73.996353149414, 40.737991333008}, + {-66.97883605957, 10.428085327148}, + {12.544326782227, 41.799545288086}, + {18.637619, -33.901291}, + {11.598772, 52.159565}, + {-103.387756, 20.589294}, + {-75.563278198242, 6.3150787353516}, + {31.975021362305, 36.553573608398}, + {106.620255, -6.238174}, + {-70.759506225586, -33.460922241211}, + {120.856476, 22.27478}, + {-0.234146, 51.562614}, + {-73.852157592773, 45.43327331543}, + {-85.272445678711, 34.941329956055}, + {-1.060452, 52.971172}, + {9.7689056396484, 55.583267211914}, + {-114.01817321777, 51.941299438477}, + {10.415683, 43.721362}, + {85.634995, 20.613785}, + {-74.802474975586, 45.11604309082}, + {-75.66764831543, 45.400314331055}, + {-0.777969, 51.807266}, + {-89.465103149414, 40.62126159668}, + {11.40776, 44.691012}, + {-84.069193, 9.965911}, + {39.20539855957, -6.1571502685547}, + {-71.100082397461, 42.318649291992}, + {34.908371, 31.975021}, + {-79.136842, 43.945857}, + {-2.06337, 52.490273}, + {120.240555, 23.038036}, + {102.660686, 2.676178}, + {-78.54641, 44.537544}, + {12.440149, 37.79692}, + {-80.299758911133, 43.393936157227}, + {78.513794, 17.452469}, + {-123.31398010254, 48.46549987793}, + {29.412460327148, 40.78742980957}, + {-98.4375, 19.300919}, + {20.693435668945, 43.723526000977}, + {28.94416809082, 40.213394165039}, + {-93.336410522461, 41.792678833008}, + {-75.625815, 40.030858}, + {-0.289078, 52.538681}, + {12.946089, 51.782303}, + {10.339508, 44.830399}, + {135.85075378418, 34.504623413086}, + {0.562706, 51.382713}, + {92.844772, 56.013451}, + {21.075242, 52.041362}, + {121.028366, 14.479523}, + {-87.501199, 41.541269}, + {-45.922833, -23.225487}, + {-117.18223571777, 32.739944458008}, + {27.824739, -26.804385}, + {77.096374, 28.458207}, + {1.115799, 52.079659}, + {13.247451782227, 46.059494018555}, + {-57.541122, -25.339737}, + {-74.184494018555, 40.956344604492}, + {-77.043649, 38.872145}, + {-43.308792114258, -23.012924194336}, + {28.124771, -25.993881}, + {14.81454, 52.834063}, + {14.972168, 51.165321}, + {-70.63282, -33.462639}, + {-79.519729614258, 43.78532409668}, + {-97.754288, 30.237122}, + {-102.97004699707, 49.131546020508}, + {-122.409065, 38.449465}, + {114.59907531738, -3.3570098876953}, + {-99.240188, 19.35997}, + {11.886520385742, 57.656936645508}, + {1.0636138916016, 49.446029663086}, + {-51.117372, -30.085556}, + {-98.113783, 19.43761}, + {-52.328224, -31.776924}, + {-81.78566, 41.156159}, + {72.554397583008, 23.02116394043}, + {-51.156739, -23.328369}, + {-100.270615, 25.66658}, + {12.971420288086, 46.18034362793}, + {-87.863845825195, 43.826522827148}, + {-43.497466, -22.743648}, + {15.935438, 46.571733}, + {-4.2221832275391, 55.87028503418}, + {-4.92445, 37.683964}, + {-101.664734, 21.111603}, + {101.591434, 3.056431}, + {-71.255951, -29.916458}, + {7.4590301513672, 46.954879760742}, + {-96.159896850586, 35.978164672852}, + {19.008407592773, 47.399826049805}, + {7.329661, 50.858865}, + {-2.5714874267578, 36.815872192383}, + {-102.44819641113, 51.209335327148}, + {14.36393737793, 49.982986450195}, + {3.25519, 6.581105}, + {-106.62574768066, 52.16926574707}, + {-84.068985, 9.899368}, + {112.004299, -7.813069}, + {15.58479309082, 46.397323608398}, + {13.362808227539, 43.590316772461}, + {-58.362808227539, -34.77653503418}, + {-99.76203918457, 16.747970581055}, + {5.6668853759766, 53.046798706055}, + {-79.831638, -6.756506}, + {-1.487961, 53.380165}, + {15.834732055664, 46.091079711914}, + {18.434371948242, 43.869094848633}, + {-74.054031, 4.748497}, + {5.559998, 51.755676}, + {-2.6964569091797, 53.733444213867}, + {-80.253067016602, 26.260757446289}, + {171.248016, -44.088822}, + {18.632125854492, 53.022079467773}, + {24.922644, 60.219181}, + {-58.910065, -34.466171}, + {7.208362, 46.080014}, + {-38.288040161133, -12.865676879883}, + {-58.096389770508, -15.680923461914}, + {17.07222, 48.142662}, + {-87.904651, 42.949128}, + {14.526672, -22.935333}, + {14.708633422852, 40.69953918457}, + {-0.35774230957031, 51.479873657227}, + {-97.53109, 35.389851}, + {106.7520904541, -6.2065887451172}, + {76.957168579102, 10.959548950195}, + {120.6031036377, 15.362319946289}, + {45.01652, 53.192125}, + {-46.660995, -23.554138}, + {5.249545, 52.255475}, + {-80.131175, 26.565178}, + {-77.054672241211, -12.005996704102}, + {100.909424, 12.936745}, + {4.711762, 52.010651}, + {34.93103, 31.964722}, + {18.065657, 59.334104}, + {-5.694563, 43.527885}, + {35.495453, 33.840294}, + {4.914493, 52.298441}, + {101.607938, 2.916968}, + {12.15705871582, 47.581100463867}, + {32.500991821289, 39.77668762207}, + {-58.382309, -34.613663}, + {-97.164845, 49.950182}, + {-93.002481, 17.971024}, + {-76.249923706055, 44.901809692383}, + {-113.447571, 53.423767}, + {13.56330871582, -12.353439331055}, + {19.13751, 50.79129}, + {-80.025100708008, 40.301284790039}, + {77.638664, 13.037338}, + {-3.6797332763672, 40.394668579102}, + {-76.389999, 39.539108}, + {-61.936111450195, -37.453079223633}, + {25.255234, 54.726608}, + {6.16642, 50.826015}, + {-3.811722, 40.344467}, + {14.233887, 40.868317}, + {-35.719665, -9.567994}, + {-80.331344604492, 25.781478881836}, + {-48.954391479492, -28.436050415039}, + {72.830887, 19.08577}, + {-8.4381866455078, 40.227127075195}, + {-48.180771, -18.680863}, + {-8.493887, 51.899167}, + {-67.586441, 10.269394}, + {-54.788895, -22.22908}, + {-46.564865112305, -23.67073059082}, + {4.9665069580078, 52.913589477539}, + {103.84895324707, 1.2957000732422}, + {13.942578, 46.284959}, + {12.53746, 45.848007}, + {-93.394088745117, 45.179214477539}, + {-92.835159, 17.58934}, + {-96.154403686523, 19.203414916992}, + {176.231689, -38.145447}, + {18.371200561523, 60.344467163086}, + {77.362289, 28.560333}, + {34.879532, 32.089554}, + {28.151779174805, -25.832290649414}, + {-58.384780883789, -34.816360473633}, + {-75.563278198242, 6.2271881103516}, + {32.57103, -25.96756}, + {14.505386352539, 46.055374145508}, + {14.365310668945, 40.78742980957}, + {-0.536935, 38.342559}, + {-86.14860534668, 38.135604858398}, + {-72.941665649414, 45.624160766602}, + {35.834792, 32.008255}, + {117.883301, -35.021667}, + {15.494155883789, 51.944046020508}, + {6.3082122802734, 49.650650024414}, + {-80.809006, 44.103244}, + {-73.063314, -41.138457}, + {-95.566635131836, 29.981002807617}, + {3.327027, 46.563263}, + {-43.395309448242, -22.783584594727}, + {-78.953246, 43.970032}, + {-48.486099, -22.175903}, + {-80.038451, -2.191611}, + {-105.150245, 39.600514}, + {121.480637, 13.039055}, + {100.534657, 13.876076}, + {5.765888, 45.173491}, + {-86.774826049805, 36.210250854492}, + {-93.10432434082, 16.763076782227}, + {-75.852631, 45.029076}, + {-49.246178, -25.548103}, + {54.373673, 24.473557}, + {-3.9900970458984, 40.592422485352}, + {43.940303, 56.315924}, + {-46.729438, -23.517153}, + {77.28401184082, 9.7386932373047}, + {121.075518, 24.761125}, + {12.476507, 55.753872}, + {-123.850905, 49.482402}, + {19.134135, 47.415845}, + {121.457977, 24.980164}, + {-43.176697, -22.912989}, + {-70.738564, -34.17057}, + {-0.899673, 37.7006}, + {4.2867279052734, 52.073135375977}, + {-71.517562866211, -16.37580871582}, + {174.26856994629, -39.57893371582}, + {-100.660125, 49.777072}, + {23.483276, 60.793533}, + {1.027908, 48.229294}, + {-97.102919, 18.848849}, + {-2.083505, 52.458163}, + {-50.270691, -22.089895}, + {-70.761337, -33.48793}, + {-55.006484985352, 5.3537750244141}, + {-71.663131713867, 10.656051635742}, + {-57.429886, -25.36171}, + {6.619717, 51.85246}, + {37.398722, 55.756611}, + {-80.330658, 25.939407}, + {-1.863334, 54.984515}, + {19.450607299805, 51.73942565918}, + {-80.266799926758, 25.784225463867}, + {86.692886, 21.278458}, + {55.285263061523, 25.256881713867}, + {-106.78642272949, 32.34992980957}, + {9.963456, 54.070816}, + {-35.196439, -5.776111}, + {-1.430086, 54.884851}, + {-0.094986, 51.512833}, + {-75.276841, 2.931448}, + {88.317406, 22.491323}, + {121.025162, 14.661026}, + {3.101578, 41.847748}, + {-76.538315, 44.237725}, + {-76.608352661133, 39.289169311523}, + {-75.649109, 45.443573}, + {-43.865283, -16.721504}, + {16.761017, 53.117867}, + {7.792384, 47.99289}, + {-77.451004, 18.048477}, + {25.130417, 60.443214}, + {32.820269, 39.866892}, + {115.84877, -32.046433}, + {136.188858, 36.059189}, + {-101.680586, 21.124888}, + {0.187311, 51.073307}, + {37.020073, 55.523501}, + {-122.548464, 45.573189}, + {-38.522838, -3.736514}, + {102.63359069824, 17.986679077148}, + {13.581946, 52.465635}, + {15.102081, 46.362305}, + {-2.84402, 48.638818}, + {80.265083, 13.044205}, + {2.899047, 42.672456}, + {-35.90332, -7.224026}, + {101.620208, 3.115311}, + {121.063843, 14.627838}, + {33.368225, 35.152473}, + {5.775375, 53.199921}, + {-47.888836, -22.013236}, + {76.893997, 12.526474}, + {-77.156845, 38.775558}, + {-75.894585, 8.754559}, + {-87.558701, 41.728821}, + {-58.579788208008, -34.422225952148}, + {76.416091918945, 29.799728393555}, + {82.199020385742, 25.92155456543}, + {39.202651977539, -6.8740081787109}, + {130.84510803223, 33.896255493164}, + {-114.000479, 51.271667}, + {7.341614, 47.105942}, + {-89.24674987793, 43.024520874023}, + {72.879867553711, 19.119644165039}, + {107.561796, -6.952705}, + {8.75267, 50.841568}, + {5.4856109619141, 51.424942016602}, + {-82.295150756836, 41.350479125977}, + {0.037079, 51.533432}, + {9.431076, 55.29213}, + {10.385513305664, 59.240341186523}, + {-87.94899, 15.603333}, + {12.479978, 41.84918}, + {77.192001, 28.496561}, + {-80.019607543945, 42.987442016602}, + {14.355064, 40.875955}, + {-57.387771606445, -25.380477905273}, + {-86.847610473633, 21.05598449707}, + {101.635489, 3.064031}, + {-64.07135, -30.829239}, + {-83.746262, 9.89296}, + {-45.98258972168, -23.298568725586}, + {35.516738891602, 33.861923217773}, + {12.455062866211, 55.699996948242}, + {-9.265402, 38.747928}, + {149.085012, -35.28579}, + {73.346786, 25.777359}, + {-1.820572, 37.183914}, + {81.671677, 21.249161}, + {-75.89973449707, 45.331649780273}, + {-83.115005493164, 42.475204467773}, + {101.691971, 3.089218}, + {-94.167251586914, 30.07438659668}, + {72.824935913086, 19.391555786133}, + {115.37086486816, 5.3043365478516}, + {-49.277114868164, -16.741104125977}, + {-61.507233, 10.668411}, + {-93.225173950195, 18.254470825195}, + {-123.433848, 48.49412}, + {14.161515, 49.314683}, + {14.725309, 45.155378}, + {-46.634902954102, -23.545761108398}, + {-73.265762329102, 45.31379699707}, + {-1.264801, 52.918739}, + {102.992808, 17.117307}, + {-113.39057922363, 53.46565246582}, + {0.429155, 52.076226}, + {17.716143, 59.168016}, + {-84.041585, 9.952142}, + {-84.507179, 33.941746}, + {31.314194, 30.102951}, + {-90.38932800293, 38.551712036133}, + {-82.008131, 29.010636}, + {12.450942993164, 41.831130981445}, + {0.062983, 51.231591}, + {-44.040756225586, -19.991683959961}, + {14.387554, 50.240295}, + {-44.073105, -20.01236}, + {-46.579131, -23.336869}, + {99.073513, 10.015932}, + {78.458764, 17.440109}, + {103.59764099121, -1.6211700439453}, + {-44.000647, -19.990841}, + {-0.137957, 51.864958}, + {-98.236312866211, 19.071578979492}, + {-120.66352844238, 35.277786254883}, + {-75.640182, 4.528427}, + {14.447708129883, 53.931198120117}, + {8.557373, 45.770342}, + {-48.847274780273, -26.308822631836}, + {13.385273, 52.442101}, + {-84.451338, 41.680421}, + {-87.865219116211, 41.965713500977}, + {-98.670966, 29.541554}, + {150.810149, -34.029355}, + {-79.499741, 9.00383}, + {35.90538, 33.83281}, + {145.187467, -37.963393}, + {18.021984, 45.15921}, + {-97.116297, 30.060026}, + {100.585327, 13.886204}, + {-0.030529, 51.528681}, + {14.255446, 40.838792}, + {35.750395, -1.155624}, + {7.293086, 50.365191}, + {-64.250106811523, -27.715072631836}, + {-89.672470092773, 40.779190063477}, + {-99.109725952148, 19.259719848633}, + {149.217052, -35.025023}, + {-75.858535766602, 45.231399536133}, + {-96.537802, 32.866912}, + {-47.82538, -21.21053}, + {2.278443, 43.522263}, + {-73.985366821289, 40.678939819336}, + {-40.339052, -20.433896}, + {-63.568954467773, 44.650497436523}, + {-79.524112, 9.000476}, + {-0.397569, 54.247056}, + {-105.42137145996, 51.015701293945}, + {37.523895, 55.368164}, + {-99.277115, 19.603882}, + {-73.257523, 45.590653}, + {19.123764, 47.549057}, + {11.621475219727, 45.805435180664}, + {-48.208847, -7.192764}, + {19.719772338867, 43.750991821289}, + {-94.490891, 18.146439}, + {-95.677597, 29.860153}, + {-58.511581, -34.648819}, + {-122.06016540527, 37.687911987305}, + {77.574545, 12.978616}, + {103.36280822754, 3.8527679443359}, + {-75.525104, 39.077545}, + {14.032201, 52.782244}, + {-94.551315, 17.9879}, + {-81.681287, 28.821947}, + {-78.447189331055, -1.4028167724609}, + {-46.39045715332, -23.518295288086}, + {30.387496948242, 40.711898803711}, + {75.892044, 22.713409}, + {113.997574, 22.266541}, + {-62.063799, -35.619641}, + {19.217376, -33.559113}, + {-79.43733215332, 43.638381958008}, + {-108.13636779785, 32.741317749023}, + {127.155075, 37.510483}, + {16.518631, 40.841675}, + {21.70143, 61.399155}, + {42.528076, 17.373505}, + {10.129785, 54.303057}, + {15.882568, 50.592728}, + {9.183197, 45.541077}, + {-56.118850708008, -34.872665405273}, + {77.65686, 12.898636}, + {11.732987, 44.383255}, + {109.363174, 33.527756}, + {-46.614095, -23.560891}, + {-105.60401916504, 53.243179321289}, + {17.934494, 50.673752}, + {-43.965225219727, -19.929885864258}, + {-0.391159, 51.53595}, + {79.887314, 6.887512}, + {4.52806, 51.034407}, + {7.453854, 51.602519}, + {-43.242845, -22.983051}, + {-49.264832, -16.689148}, + {19.951859, 50.115509}, + {-48.465811, -1.419598}, + {-79.236831665039, 43.724899291992}, + {-75.630569458008, 45.545883178711}, + {-103.091809, 20.57625}, + {16.524124145508, 59.611129760742}, + {-81.335220336914, 42.95036315918}, + {-79.927185, -2.207428}, + {11.303862, 44.494233}, + {7.2434234619141, 52.295608520508}, + {-77.095184, 38.834267}, + {105.87730407715, 10.260543823242}, + {138.58222961426, -34.972915649414}, + {7.601776, 47.502136}, + {114.22554016113, 22.312545776367}, + {23.294448852539, 42.671585083008}, + {-50.566214, -14.749925}, + {27.804336547852, -26.086349487305}, + {-46.437057, -23.526148}, + {-98.88771, 19.44191}, + {-0.030899047851562, 51.407089233398}, + {15.439224243164, 47.009811401367}, + {138.690262, -34.890289}, + {78.45817565918, 17.381057739258}, + {-113.59519958496, 53.326950073242}, + {-88.242645, 41.779823}, + {-98.350296020508, 29.59098815918}, + {25.134888, 35.339813}, + {16.362075805664, 48.185348510742}, + {35.218184, 31.789628}, + {27.624436, 53.962441}, + {44.820785522461, 26.312942504883}, + {-119.617418, 49.507183}, + {-5.455399, 36.147766}, + {-83.698654174805, 42.306289672852}, + {5.2246856689453, 52.688369750977}, + {5.626602, 51.465683}, + {-46.581345, -23.48774}, + {-75.972434, 40.375786}, + {-79.183888, -0.205513}, + {-79.805374145508, 0.88645935058594}, + {152.83934, -27.564736}, + {105.27030944824, -5.3853607177734}, + {8.5796356201172, 47.530288696289}, + {18.216782, 52.234726}, + {9.666694, 56.36928}, + {-98.196978, 19.04068}, + {-79.509686, 43.711658}, + {-2.314682, 53.450821}, + {4.3141937255859, 52.05940246582}, + {-46.705215, -23.544113}, + {4.4515228271484, 51.897354125977}, + {-5.07843, 50.411453}, + {-1.180069, 54.571976}, + {-63.095169067383, -17.750473022461}, + {4.3444061279297, 51.909713745117}, + {-99.128571, 19.285965}, + {-15.409862, 27.88608}, + {-34.937406, -8.11924}, + {-98.771896362305, 19.550857543945}, + {-90.569881, 14.63421}, + {14.048533, 41.313409}, + {101.66542053223, 3.0782318115234}, + {-38.438553, -12.138657}, + {12.749634, 57.682343}, + {18.918792, 64.163853}, + {-3.183288, 40.631561}, + {-47.779327, -21.123306}, + {-46.678848, -23.528824}, + {-95.40088, 18.013871}, + {8.604698, 39.889984}, + {30.634689331055, 50.440292358398}, + {114.12666320801, 22.356491088867}, + {18.965503, 46.213303}, + {9.640209, 45.495954}, + {-8.8130950927734, 38.989791870117}, + {-98.44367980957, 19.280319213867}, + {5.9621429443359, 51.880874633789}, + {-47.303783, -22.714396}, + {20.385818, 44.807739}, + {14.266432, 57.788773}, + {-89.216537, 13.719079}, + {-65.640563, -28.137703}, + {20.468784, 44.809657}, + {-15.452042, 28.117905}, + {-70.387957, -23.636686}, + {-40.255484, -20.192778}, + {-117.945786, 33.748283}, + {-49.221176, -16.403397}, + {15.73526, 45.872086}, + {-2.9491424560547, 43.366470336914}, + {-49.287263, -25.523951}, + {35.040756, 31.92009}, + {-80.122604370117, 25.93391418457}, + {-99.122017, 19.495308}, + {47.968025, 29.316158}, + {23.732529, 37.9816}, + {-79.574661254883, 43.705673217773}, + {-86.387557983398, 42.120895385742}, + {106.672897, 10.867081}, + {114.130783, 22.503433}, + {-1.330307, 38.469864}, + {-46.555389, -23.622391}, + {-73.949685, 41.087745}, + {12.196884155273, 57.477035522461}, + {23.655624, 37.958107}, + {-73.162307, 45.809503}, + {-76.133331, -13.416504}, + {-48.354727, -10.166731}, + {-86.398544311523, 36.980667114258}, + {34.82048034668, 31.999740600586}, + {145.146103, -37.948456}, + {-43.700885, -22.745258}, + {9.414859, 54.801582}, + {153.098894, -27.601287}, + {27.853383, -32.98596}, + {26.066208, 44.547958}, + {-87.881698608398, 42.011032104492}, + {-75.199334, 40.684939}, + {-80.84358215332, 34.407119750977}, + {-41.75422668457, -2.9038238525391}, + {26.868439, -25.271301}, + {23.62829, 37.946745}, + {-0.56648254394531, 48.326797485352}, + {-74.575881958008, 40.662460327148}, + {-1.798325, 51.089281}, + {-0.43327331542969, 51.449661254883}, + {-95.752029418945, 29.762649536133}, + {-76.918716430664, 38.581924438477}, + {-106.570991, 31.8445}, + {7.986031, 58.144455}, + {1.81029, 49.142555}, + {8.109402, 49.829699}, + {-90.518417, 14.620132}, + {7.0923614501953, 60.455703735352}, + {-4.498901, 36.637344}, + {-74.154281616211, 40.092544555664}, + {-0.276375, 51.546822}, + {4.417021, 51.823648}, + {21.232222, 52.336807}, + {-103.802189, 40.254232}, + {-122.84156799316, 49.27848815918}, + {-90.473702, 14.592205}, + {-112.314606, 40.633621}, + {6.426486, 43.149606}, + {-0.424576, 51.677811}, + {8.606256, 51.908235}, + {-81.339340209961, 29.732437133789}, + {8.6414337158203, 55.962295532227}, + {77.235946655273, 28.563766479492}, + {-122.817535, 49.023743}, + {-84.453964, 39.225311}, + {-121.337491, 38.02041}, + {23.695221, 37.957306}, + {108.4838104248, -6.7600250244141}, + {15.965194702148, 51.964645385742}, + {4.35505, 51.195259}, + {-76.680862, 39.314438}, + {-16.279678344727, 28.459396362305}, + {19.587936, 49.352222}, + {16.617251, 47.234819}, + {8.6634063720703, 45.539016723633}, + {77.256546020508, 28.643417358398}, + {-73.940323, 40.800888}, + {8.436223, 50.607812}, + {-95.903085, 32.232516}, + {153.05397033691, -26.679611206055}, + {-70.599518, -33.469849}, + {73.836545, 18.51901}, + {120.516199, 22.415286}, + {-52.011586, -24.030755}, + {10.412502, 53.252591}, + {-82.400894165039, 42.97233581543}, + {-118.115799, 34.072186}, + {34.917984008789, 32.549057006836}, + {-46.62721, -23.561262}, + {-48.317184, -5.719757}, + {-46.467757, -23.498536}, + {-81.213194, 42.918911}, + {-74.828568, 45.262299}, + {-47.226048, -23.106549}, + {-73.552322, 45.522995}, + {23.299942016602, 42.672958374023}, + {-99.110184, 19.468003}, + {-79.776161, 43.23776}, + {-112.27958679199, 33.636703491211}, + {106.9979095459, -6.1777496337891}, + {21.416702, 38.623581}, + {-5.666297, 43.525969}, + {-89.423904418945, 32.263412475586}, + {-117.692904, 34.062424}, + {-98.469315, 29.456863}, + {-98.005599975586, 29.82307434082}, + {-39.261034, -14.769248}, + {28.094100952148, -25.804824829102}, + {73.511581, 4.176178}, + {-95.107612, 29.553566}, + {-68.072128, -38.954849}, + {-120.89561462402, 38.694534301758}, + {28.875847, 41.018829}, + {142.509004, -38.381481}, + {11.955872, 51.448288}, + {13.428726196289, 43.282699584961}, + {-86.799545288086, 41.42463684082}, + {107.651089, -6.905109}, + {-1.235275, 51.326065}, + {-0.66947937011719, 38.275680541992}, + {-94.153988, 36.355608}, + {-114.041519, 51.0672}, + {121.320996, 24.969725}, + {-64.652481079102, 10.082015991211}, + {-34.872391, -7.132004}, + {-98.97102355957, 19.376449584961}, + {-46.578598, -23.59053}, + {-42.794495, -5.084953}, + {-49.27733, -25.398384}, + {-84.723473, 41.084061}, + {10.323029, 43.539505}, + {-80.197586, 43.552414}, + {-0.170791, 51.154895}, + {-46.66452, -23.54448}, + {78.54606628418, 17.376937866211}, + {21.993505, 38.304894}, + {6.0198211669922, 53.030319213867}, + {-4.707642, 41.64299}, + {17.714577, 40.690776}, + {77.463809, 28.662643}, + {-64.161093, -31.423208}, + {9.227829, 45.470009}, + {4.996143, 52.089909}, + {2.2377777099609, 41.52214050293}, + {26.229401, 43.983765}, + {100.629272, 13.668365}, + {-116.9913482666, 32.473526000977}, + {-97.547379, 35.578995}, + {24.806442260742, 60.192031860352}, + {-98.735275, 20.082387}, + {-43.218379, -22.979371}, + {-17.186737, 32.724152}, + {121.5168, 25.047226}, + {14.440383, 42.073333}, + {-64.881134, 10.06897}, + {-114.03190612793, 50.962142944336}, + {-99.169366, 19.402836}, + {-79.317984, -7.697986}, + {-118.609296, 34.257431}, + {28.14537, -26.348648}, + {-82.454452514648, 43.031387329102}, + {37.481918334961, 56.003494262695}, + {-120.634689, 40.412064}, + {-91.021957, 14.331894}, + {-47.82795, -21.206017}, + {149.069073, -35.380142}, + {-4.7907257080078, 41.550979614258}, + {34.889147, 32.084886}, + {-8.627358, 52.68425}, + {34.74106, 55.4003}, + {25.256424, 54.718094}, + {-90.374221801758, 38.606643676758}, + {4.5682525634766, 51.872634887695}, + {-79.033584594727, 43.891067504883}, + {-63.218765, -17.817001}, + {-95.419385, 29.813417}, + {16.00939, 46.943238}, + {-48.626765, -26.999886}, + {-74.144668579102, 4.5984649658203}, + {12.582778930664, 44.064102172852}, + {-3.0947113037109, 53.376388549805}, + {56.087343, 54.8003}, + {-66.679459, 45.951691}, + {11.813735961914, 43.701553344727}, + {-118.17924499512, 34.088516235352}, + {-84.062233, 9.934731}, + {9.255536, 47.409122}, + {11.240531, 43.794201}, + {18.560715, 52.999283}, + {0.56868, 7.262375}, + {-1.9562530517578, 50.739669799805}, + {15.434074, 47.05513}, + {14.18652, 40.820564}, + {23.79739, 38.031702}, + {35.851821899414, 31.981887817383}, + {145.07652282715, -37.788162231445}, + {-77.514725, 38.789291}, + {-48.552601, -27.588568}, + {-49.316940307617, -16.738357543945}, + {-1.5579986572266, 52.415084838867}, + {8.79901, 3.758076}, + {37.716751098633, 55.76042175293}, + {2.2652435302734, 41.539993286133}, + {34.967048, 32.194498}, + {9.140874, 45.917733}, + {-86.174697875977, 39.87419128418}, + {11.232834, 33.144379}, + {5.573959, 51.73027}, + {75.751419, 32.303581}, + {8.404151, 49.084531}, + {55.737762, 24.214211}, + {21.942565, 47.038731}, + {-79.059684, 44.240132}, + {7.586225, 43.814211}, + {-117.06825256348, 32.650680541992}, + {0.042489, 51.383579}, + {105.842285, 21.014099}, + {18.615646, -33.910263}, + {7.717168, 48.247672}, + {3.883296, 50.411848}, + {119.434282, -5.127278}, + {75.770645141602, 11.253433227539}, + {18.541488647461, -33.861923217773}, + {12.399673, 55.730209}, + {-1.675072, 42.531824}, + {-97.262421, 32.742519}, + {-119.21333312988, 34.264297485352}, + {-84.497386, 38.097588}, + {79.837164, 7.237394}, + {-38.394162, -12.952196}, + {16.247112, 39.320363}, + {-79.493637084961, 43.858108520508}, + {-3.2787322998047, 51.407089233398}, + {8.570435, 53.195801}, + {8.569434, 53.195899}, + {-105.23941, 20.64743}, + {6.611026, 46.553882}, + {-74.021417, 45.782433}, + {128.5572052002, 35.886154174805}, + {-122.23045349121, 37.812881469727}, + {13.030014, 55.591736}, + {-38.972814, -12.234459}, + {12.484112, 41.902129}, + {-83.78791809082, 10.202865600586}, + {11.528091430664, 44.647750854492}, + {-74.00322, 40.577379}, + {-98.614653, 29.635849}, + {31.004104614258, -29.827194213867}, + {9.382324, 45.601501}, + {12.434464, 41.787872}, + {-71.54601, -33.011268}, + {100.56541442871, 13.733596801758}, + {-58.361607, -34.662552}, + {-80.316582, 43.366814}, + {4.281284, 45.446706}, + {5.1917266845703, 52.215957641602}, + {13.825511, 51.004428}, + {-94.143906, 39.838486}, + {8.6986, 49.296155}, + {-75.810471, 45.525284}, + {-118.02268981934, 34.146194458008}, + {-47.8286, -15.627151}, + {1.960047, 41.409198}, + {-100.41847229004, 41.018142700195}, + {-6.156464, 53.283691}, + {-0.103915, 38.57323}, + {-99.361038208008, 19.626388549805}, + {90.35774230957, 23.776473999023}, + {17.997256, -32.905967}, + {14.442902, 50.077057}, + {-99.133071, 23.756218}, + {-87.280197143555, 33.846817016602}, + {-50.644913, -16.667633}, + {-103.286591, 20.632324}, + {77.602615356445, 12.97966003418}, + {-48.197999, -23.219534}, + {80.201569, 13.081512}, + {-63.865773, 11.144631}, + {-47.272109985352, -22.822036743164}, + {-84.143600463867, 9.9405670166016}, + {-82.446899, 27.387543}, + {80.024689, 13.025116}, + {113.96873474121, 4.3636322021484}, + {9.389882, 51.635331}, + {-83.952713012695, 9.9034881591797}, + {-3.575755, 54.522498}, + {-48.38996887207, -1.3396453857422}, + {-2.5920867919922, 53.376388549805}, + {-1.217594, 53.267956}, + {-49.21789, -25.363374}, + {34.846401, 32.075443}, + {11.553183, 44.823084}, + {-80.044326782227, 32.793502807617}, + {-80.860062, 35.597076}, + {-122.30186462402, 47.303695678711}, + {-120.93406677246, 37.492904663086}, + {-34.953689575195, -8.2994842529297}, + {5.477956, 51.44166}, + {8.448556, 47.41305}, + {-3.823445, 40.343444}, + {12.57453918457, 41.890182495117}, + {41.247617, 56.67366}, + {-102.71873474121, 19.982070922852}, + {-3.4586334228516, 43.393936157227}, + {34.930069, 31.948807}, + {16.575279, 49.216347}, + {19.350014, 51.661949}, + {-74.138214, 4.619339}, + {-97.857659, 22.246878}, + {29.120636, 41.003723}, + {7.091125, 49.275055}, + {-47.911148, -1.286087}, + {15.425491333008, 47.107315063477}, + {21.130513, 52.353745}, + {-52.36842, -24.043549}, + {-118.260292, 34.068282}, + {-6.250284, 53.343367}, + {149.071162, -35.421626}, + {14.968287, 41.073311}, + {-74.806816, 10.929187}, + {-84.550781, 39.27887}, + {-117.868971, 33.845406}, + {6.6281890869141, 46.516799926758}, + {-62.611771, -16.908646}, + {103.870479, 1.339796}, + {-47.086991, -22.895233}, + {80.066986, 6.70372}, + {-0.60293, 51.333496}, + {-91.823044, 18.659592}, + {-69.861373901367, 18.471450805664}, + {12.908523, 52.64415}, + {-79.458389, 43.798141}, + {-38.471805, -12.89917}, + {-46.756908, -23.496007}, + {-73.668823, 45.503998}, + {-46.168108, -22.763468}, + {-81.568673, 30.410036}, + {135.23139953613, 34.865798950195}, + {9.687882, 44.996567}, + {-52.049789, -23.457699}, + {-100.276943, 25.710633}, + {-79.875412, 43.624453}, + {152.797494, -27.636567}, + {21.23176574707, -28.441543579102}, + {103.961563, 1.348228}, + {11.242839, 46.813823}, + {9.5423126220703, 48.715438842773}, + {29.026565551758, 41.053848266602}, + {38.019182, 55.802971}, + {-61.563492, 10.185928}, + {28.18135, -25.674868}, + {83.091463, 54.862289}, + {-101.170349, 19.682694}, + {-118.49098205566, 34.048690795898}, + {-45.844809, -19.739245}, + {114.40269470215, -7.9232025146484}, + {-43.868194, -19.766746}, + {121.021957, 14.633789}, + {23.746163, 42.518592}, + {-75.57348, 6.19678}, + {2.3613739013672, 48.758010864258}, + {-71.146774291992, 8.5961151123047}, + {-40.405655, -20.37529}, + {16.774063110352, 40.453720092773}, + {-49.242209, -26.887036}, + {114.20906066895, 22.426528930664}, + {8.1305694580078, 48.650894165039}, + {89.197769, 23.351669}, + {-99.299519, 19.628817}, + {9.053421, 45.511551}, + {-48.340877, -18.958809}, + {-122.2290802002, 38.101272583008}, + {76.553421020508, 18.405532836914}, + {44.501038, 48.771744}, + {12.700882, 56.043898}, + {-46.780086, -23.582251}, + {-47.027541, -22.893269}, + {-60.029124, -3.111742}, + {-47.117233, -22.974288}, + {4.6327972412109, 52.424697875977}, + {114.19120788574, 22.329025268555}, + {-6.09914, 36.685643}, + {9.440162, 45.542774}, + {-90.555954, 14.530563}, + {-1.164208, 54.569262}, + {-90.213272, 36.786394}, + {12.555313110352, 41.855850219727}, + {13.39714050293, 52.49885559082}, + {-3.019867, 53.89048}, + {-74.068718, 4.67984}, + {15.598526, 46.533966}, + {75.853043, 25.13411}, + {13.665616, 53.866488}, + {79.914627, 6.970139}, + {100.38688659668, 7.2035980224609}, + {-70.56185, -33.407364}, + {7.0978546142578, 49.333419799805}, + {12.405273, 45.724028}, + {-90.216801, 36.798922}, + {2.888718, 51.210451}, + {0.175812, 38.788148}, + {10.866165, 48.056259}, + {110.3295135498, 1.5387725830078}, + {2.125168, 41.376572}, + {-77.469278, 37.503033}, + {-46.690476, -23.587107}, + {3.1729888916016, 6.4881134033203}, + {77.258377, 28.654861}, + {2.239573, 41.54031}, + {13.452808, 52.547559}, + {-79.893951, -2.158241}, + {-3.699771, 40.42382}, + {121.05903625488, 14.483413696289}, + {-74.073257446289, 4.5806121826172}, + {2.425919, 48.679733}, + {20.997993, 52.636498}, + {-49.787778, -27.37807}, + {-76.957626, -12.235336}, + {-51.70783996582, -17.815017700195}, + {27.838668823242, -26.818313598633}, + {-46.64922, -23.579705}, + {103.902283, 1.328354}, + {-0.526657, 51.900215}, + {2.163782, 41.38574}, + {101.579727, 3.023026}, + {-121.929359, 37.369308}, + {-2.070752, 52.470017}, + {35.024139, 32.812729}, + {-43.432388305664, -22.720413208008}, + {19.38675, 53.490715}, + {-97.222574, 49.94029}, + {116.101913, 5.994644}, + {146.395572, -41.200189}, + {77.251282, 28.664154}, + {35.092069, 32.833258}, + {-81.225586, 43.032761}, + {-9.199093, 38.867672}, + {-71.948072, 45.385948}, + {-76.991500854492, -12.173538208008}, + {-7.8078460693359, 37.146835327148}, + {-89.59831237793, 20.992813110352}, + {-77.02433, 44.247379}, + {46.826706, 24.741898}, + {8.576736, 50.232803}, + {21.189422, 44.636993}, + {-118.294601, 33.889561}, + {121.128387, 14.207382}, + {6.125908, 52.508469}, + {-122.98164367676, 49.251022338867}, + {2.638607, 39.580307}, + {-51.006088256836, -20.105667114258}, + {-3.4792327880859, 51.205215454102}, + {-0.319324, 51.393163}, + {0.556854, 51.420001}, + {-48.657761, -26.902542}, + {7.112372, 49.427294}, + {-0.011673, 52.965317}, + {-35.281906, -5.920944}, + {-96.468887329102, 32.179641723633}, + {-44.218924, -2.595527}, + {-7.5537872314453, 9.4997406005859}, + {-97.334598, 32.863541}, + {34.836274, 32.00798}, + {120.46165466309, 22.81379699707}, + {-99.182510375977, 19.489059448242}, + {6.84323, 51.24084}, + {73.828354, 18.514481}, + {44.173965454102, 52.504348754883}, + {47.986221313477, 45.716171264648}, + {-99.247604, 18.940842}, + {-91.120045, 14.83837}, + {-70.89592, -33.859699}, + {20.394273, 44.824724}, + {77.02652, 28.469009}, + {-81.274795532227, 42.998428344727}, + {-88.646621704102, 39.285049438477}, + {-95.033814, 29.465576}, + {-90.528946, 34.207993}, + {75.855789, 30.873642}, + {18.195294, 59.217495}, + {13.368301391602, 55.665664672852}, + {-0.157928, 51.512146}, + {-106.145488, 28.688344}, + {98.384171, 7.941513}, + {-45.222174, -22.836267}, + {4.846115, 47.007828}, + {18.132548, 53.219685}, + {13.783035, 45.638199}, + {145.20286560059, -37.825241088867}, + {34.795015, 32.105912}, + {-49.575119018555, -20.73600769043}, + {-6.7092132568359, 55.168533325195}, + {100.05592346191, 9.7689056396484}, + {5.219205, 52.347797}, + {20.420150756836, 44.827651977539}, + {-75.580444, 6.168137}, + {98.379135131836, 17.129745483398}, + {-46.572524, -23.517143}, + {-58.565673, -34.448719}, + {-43.553238, -22.896469}, + {100.56816101074, 5.3908538818359}, + {137.08671569824, 35.185775756836}, + {-75.73356628418, 45.442886352539}, + {106.78367614746, -6.5622711181641}, + {-74.123898, 4.649963}, + {-40.378494, -20.360031}, + {-71.477737, 41.682678}, + {101.71067, 3.038151}, + {10.788752, 43.858058}, + {-80.331038, 43.405242}, + {12.333729, 47.568855}, + {-77.023773, -12.043076}, + {-53.592086, -25.472563}, + {-96.167488, 33.059942}, + {46.700821, 24.680786}, + {-79.452438, 9.078415}, + {5.121689, 51.568451}, + {-63.878682, -8.741185}, + {44.425278, 33.411484}, + {-75.623703, 45.043411}, + {14.29801940918, 48.319931030273}, + {36.822738647461, -1.2737274169922}, + {-49.373245239258, -20.812911987305}, + {-2.9477691650391, 56.470413208008}, + {-122.743176, 45.426165}, + {-51.203169, -29.922678}, + {-96.813583374023, 32.788009643555}, + {101.778488, 3.010025}, + {27.131699, -25.376907}, + {-111.71241760254, 40.323257446289}, + {-104.632034, 24.043427}, + {-6.2876129150391, 53.359909057617}, + {-68.239029, 10.508925}, + {-87.245864868164, 30.523452758789}, + {-47.644034, -15.631505}, + {4.66805, 50.863238}, + {-63.120577, 46.232879}, + {-49.257888793945, -16.614761352539}, + {-3.92441, 55.67371}, + {9.168777, 45.514755}, + {-114.092437, 51.065457}, + {28.869736, 41.075546}, + {85.33561706543, 27.704086303711}, + {-6.114895, 53.245371}, + {4.846417, 52.718507}, + {-80.384902954102, 25.763626098633}, + {77.551889, 28.518963}, + {8.761102, 47.488795}, + {-2.9560089111328, 53.317337036133}, + {-51.232226, -21.015249}, + {-48.479252, -1.46679}, + {5.842863, 50.586254}, + {35.535728, 32.959144}, + {10.769117, 45.193356}, + {-66.831893920898, 10.463790893555}, + {-3.623291, 40.410828}, + {-63.877945, -8.763142}, + {-95.35514831543, 29.577255249023}, + {-75.736312866211, -14.063186645508}, + {-70.388717651367, -23.656997680664}, + {174.923458, -37.201424}, + {120.93269348145, 14.365310668945}, + {-2.502594, 50.953369}, + {27.38410949707, 53.91471862793}, + {-2.121048, 51.891736}, + {-52.583999633789, -1.5277862548828}, + {106.851921, -6.177322}, + {151.146245, -33.995642}, + {99.994125366211, 9.5697784423828}, + {28.102684, -26.052292}, + {11.517105102539, 45.661239624023}, + {-88.306045532227, 41.773452758789}, + {-74.784921, 10.869469}, + {-79.643325805664, 43.683700561523}, + {-93.610676, 41.653388}, + {77.247482, 28.672256}, + {4.535751, 51.586991}, + {-2.6222991943359, 51.416702270508}, + {-54.613723754883, -25.568618774414}, + {-122.686249, 45.518967}, + {-1.789877, 51.067033}, + {14.301109, 40.848541}, + {-46.294617, -23.979733}, + {19.134358, 47.487717}, + {9.94606, 53.581009}, + {-76.152420043945, 40.161209106445}, + {8.625126, 45.450611}, + {-103.32710266113, 20.686569213867}, + {-104.96955871582, 34.516983032227}, + {-48.480918, -1.296725}, + {-84.46907043457, 33.812484741211}, + {4.656581, 51.679046}, + {-2.656491, 53.494069}, + {-70.571365356445, -33.389511108398}, + {-9.361038, 38.831863}, + {-73.630142, 4.131088}, + {-80.167923, 26.122055}, + {31.205978393555, 30.005722045898}, + {-118.287392, 33.814201}, + {100.911484, 12.661858}, + {8.506165, 49.477615}, + {-46.927372, -23.604815}, + {-42.828787, -5.100605}, + {-79.486084, 9.011364}, + {-38.45568, -13.002908}, + {115.966733, -31.902737}, + {5.098844, 52.061366}, + {8.8130950927734, 53.090744018555}, + {-74.276147, 4.730282}, + {-90.495071, 14.674676}, + {4.948654, 52.298355}, + {14.814377, 46.29776}, + {12.348791, 55.616543}, + {-98.991622924805, 19.679946899414}, + {-71.550521850586, -33.024215698242}, + {102.54776, 5.833912}, + {27.991104, -26.654549}, + {80.155956, 12.962396}, + {-70.706511, -33.276224}, + {13.93776, 37.10495}, + {26.639785766602, 44.713668823242}, + {-54.630619, -20.505186}, + {139.54216, 35.513306}, + {9.1880035400391, 45.669479370117}, + {-78.828761, 43.866269}, + {6.151399, 46.201412}, + {10.610113, 43.66553}, + {-115.16761779785, 36.126480102539}, + {-47.263468, -22.818526}, + {-47.014514, -22.886183}, + {139.769211, 35.692978}, + {36.836471557617, -1.3053131103516}, + {140.38261413574, 38.245468139648}, + {-66.224899291992, 18.405532836914}, + {106.80647, -6.211515}, + {106.818924, -6.213913}, + {106.797303, -6.184616}, + {106.789365, -6.2266}, + {20.418091, 44.814606}, + {-56.048812866211, -15.547714233398}, + {-79.765548706055, 43.734512329102}, + {-95.635864, 29.045868}, + {79.542683, 18.012575}, + {-61.376472, 10.570245}, + {-1.850372, 50.754227}, + {-3.134079, 51.746292}, + {-0.262985, 51.620712}, + {-53.612831, -26.265693}, + {-38.493109, -12.987802}, + {44.212417602539, 15.329360961914}, + {30.641708, 50.398331}, + {-2.172547, 52.992125}, + {-80.522232055664, 43.459854125977}, + {28.042554, -26.201975}, + {106.823502, -6.223755}, + {-87.690811157227, 41.954727172852}, + {-74.011002, 40.633987}, + {9.981888, 57.018204}, + {2.862625, 42.692368}, + {15.247244, 50.732237}, + {24.235153198242, 43.296432495117}, + {16.393834, 61.341305}, + {23.991691, 49.803883}, + {12.938051, 48.022839}, + {14.715157, 52.064578}, + {18.875037, 45.448344}, + {13.38267, 52.552541}, + {14.028565, 48.235522}, + {6.260829, 51.321261}, + {2.772233, 41.903474}, + {9.011459, 44.394302}, + {15.486952, 48.591202}, + {10.424445, 53.282556}, + {5.594578, 47.967211}, + {-0.017736, 40.019329}, + {4.158044, 43.721026}, + {30.990371704102, 52.437057495117}, + {0.216121, 48.521477}, + {145.211415, -38.145777}, + {12.92610168457, 52.152786254883}, + {16.422729, 47.765579}, + {49.143175, 55.829242}, + {4.474885, 50.855408}, + {8.583201, 47.271872}, + {80.34951, 26.442906}, + {14.253618, 50.090562}, + {-2.379913, 53.496552}, + {12.412168, 48.242138}, + {-6.131882, 34.267044}, + {-96.897354125977, 32.715225219727}, + {-5.5309295654297, 33.899002075195}, + {28.127198, -26.219765}, + {10.774747, 35.631495}, + {80.006231, 15.129929}, + {79.634591, 21.174669}, + {5.9154510498047, 52.181625366211}, + {8.308357, 50.260367}, + {112.713583, -7.478581}, + {6.610565, 51.838388}, + {24.292489, 50.850221}, + {-46.691895, -23.562927}, + {2.6387786865234, 39.655838012695}, + {9.2827606201172, 45.40168762207}, + {-46.656189, -23.575287}, + {-74.076796, 4.690395}, + {-79.279403686523, 43.886947631836}, + {-75.905227661133, 45.30143737793}, + {12.577285766602, 41.884689331055}, + {11.09001159668, 49.982986450195}, + {-99.237442, 19.49161}, + {39.186172485352, 21.621780395508}, + {2.298127, 45.988927}, + {27.77207, -15.846018}, + {106.737671, 10.907822}, + {-2.1993255615234, 51.846542358398}, + {32.413788, 34.786148}, + {18.774948120117, 59.716873168945}, + {31.054916381836, -17.997665405273}, + {-38.489742, -3.775692}, + {-73.056703, -36.832087}, + {-38.564071655273, -6.8932342529297}, + {-40.350723266602, -3.6756134033203}, + {101.73683166504, 3.0809783935547}, + {-73.61457824707, 45.442886352539}, + {26.153984, -29.089737}, + {-35.871391, -7.215614}, + {-16.554336547852, 28.073501586914}, + {-38.609618, -3.880885}, + {14.469680786133, 46.09245300293}, + {-1.5085601806641, 53.335189819336}, + {-97.875279, 22.238151}, + {-63.192672729492, -17.771072387695}, + {0.550702, 51.387364}, + {-49.267159, -16.714325}, + {-58.56330871582, -34.442825317383}, + {23.78849, 37.97184}, + {16.896286010742, 48.538284301758}, + {-0.45112609863281, 51.573257446289}, + {5.0475311279297, 51.55403137207}, + {-122.82920837402, 49.165878295898}, + {-80.75569152832, 43.474960327148}, + {-46.65412902832, -23.559494018555}, + {139.897603, 36.50162}, + {-74.806791, 10.927963}, + {23.645094, 37.944718}, + {145.04768371582, -37.900772094727}, + {4.5819854736328, 7.5016021728516}, + {-4.2029571533203, 55.759048461914}, + {-74.140548706055, 4.6561431884766}, + {35.210494995117, 31.913223266602}, + {12.062301635742, 49.003829956055}, + {9.2058563232422, 45.429153442383}, + {-79.718856811523, 43.870468139648}, + {-74.791488647461, 10.932083129883}, + {-120.365982, 50.648117}, + {106.83174133301, -6.1859893798828}, + {-65.056228637695, -42.777328491211}, + {36.142959594727, 36.178665161133}, + {-77.336196899414, 37.361068725586}, + {24.724044799805, -28.751907348633}, + {13.320923, 52.486496}, + {14.415207, 46.016922}, + {-73.809585571289, 41.063461303711}, + {15.686416625977, 46.592330932617}, + {39.602279663086, 24.474105834961}, + {-80.281448, 43.348618}, + {39.272689819336, 24.232406616211}, + {-80.474166870117, 43.462600708008}, + {23.850631713867, 49.253768920898}, + {-122.6245880127, 45.517044067383}, + {120.48362731934, 22.897567749023}, + {16.135482788086, 46.623916625977}, + {18.256531, 52.795486}, + {-74.58137512207, 40.375442504883}, + {-46.622543334961, -23.521041870117}, + {-2.861866, 43.292385}, + {-58.023056, -31.395493}, + {-63.872451782227, -8.7567901611328}, + {-75.346298217773, 40.448226928711}, + {-0.39894104003906, 39.547348022461}, + {121.485835, 25.051773}, + {-76.498489379883, 44.235763549805}, + {-46.61018371582, -23.501815795898}, + {-1.7433929443359, 53.678512573242}, + {138.97636413574, -34.51286315918}, + {125.63758850098, 7.0937347412109}, + {103.72673034668, 1.3506317138672}, + {85.552597045898, 27.058639526367}, + {-47.798080444336, -15.869064331055}, + {75.399856567383, 29.989242553711}, + {116.783524, 33.977737}, + {-75.690994262695, 45.344009399414}, + {-65.232009887695, -26.825180053711}, + {-79.685897827148, 44.389572143555}, + {-46.643294, -23.350526}, + {5.8426666259766, 51.852035522461}, + {15.646133, 46.513596}, + {-56.128463745117, -15.617752075195}, + {-99.249801635742, 18.971328735352}, + {-122.98027038574, 49.260635375977}, + {57.591018676758, 51.402969360352}, + {-0.087204, 51.49498}, + {-79.492263793945, 43.774337768555}, + {1.3121795654297, 47.541275024414}, + {-46.630508, -23.502914}, + {5.7012176513672, 51.492233276367}, + {-3.8088226318359, 43.462600708008}, + {12.501754760742, 55.768661499023}, + {79.742203, 10.942612}, + {-5.862442, 43.364273}, + {138.5767364502, -34.983901977539}, + {28.981246948242, 40.224380493164}, + {-74.040573, 4.723434}, + {121.56715393066, 25.087966918945}, + {37.593154907227, 55.752182006836}, + {121.65504455566, 17.908401489258}, + {4.3128204345703, 51.904220581055}, + {-1.9329071044922, 52.708969116211}, + {-74.084243774414, 4.7728729248047}, + {35.611496, 33.174591}, + {-49.060364, -26.921768}, + {20.984181, 52.248132}, + {2.2954559326172, 48.885726928711}, + {-46.599197, -23.770294}, + {-46.941146850586, -23.140640258789}, + {-75.583877563477, 45.451126098633}, + {-46.710433959961, -23.54850769043}, + {-80.673294067383, 28.164138793945}, + {152.76420593262, -27.60383605957}, + {28.587112426758, -20.149612426758}, + {-46.762619018555, -23.666610717773}, + {-51.078872680664, -29.902725219727}, + {-38.354645, -12.920609}, + {174.72450256348, -36.895523071289}, + {-1.3286590576172, 51.096725463867}, + {-73.566513061523, 45.501937866211}, + {-70.778732299805, -33.537826538086}, + {-1.815083, 52.502154}, + {-74.110336, 4.67514}, + {-46.765709, -23.540611}, + {-106.81251525879, 28.444290161133}, + {101.700439, 3.099518}, + {-77.025833129883, -12.119979858398}, + {-58.430099487305, -34.588394165039}, + {101.665421, 3.083878}, + {-0.80955505371094, 52.009963989258}, + {-71.549148, -33.101807}, + {-60.918503, 2.445374}, + {12.478408813477, 41.903915405273}, + {-74.061813, 4.663315}, + {13.65119934082, 45.964736938477}, + {-87.839126586914, 42.484817504883}, + {29.257278442383, 40.876693725586}, + {28.709335327148, 41.005783081055}, + {-99.528922, 18.339615}, + {-106.70127868652, 52.128067016602}, + {-58.952866, -34.165421}, + {16.212387084961, 48.380355834961}, + {32.686386108398, 39.872817993164}, + {13.410873413086, 52.562026977539}, + {4.5957183837891, 8.4450531005859}, + {23.788833618164, 38.010635375977}, + {-46.928787231445, -23.543014526367}, + {29.970016479492, -26.534042358398}, + {151.18492126465, -33.900375366211}, + {15.435104370117, 46.330032348633}, + {-89.043307, 30.389066}, + {-79.238204956055, 43.794937133789}, + {-77.056045532227, -12.066421508789}, + {-47.114476, -22.896601}, + {-1.1611175537109, 52.967147827148}, + {29.040298461914, 40.983810424805}, + {8.7471771240234, 50.357894897461}, + {3.7483978271484, 51.051406860352}, + {6.7902374267578, 51.442794799805}, + {121.021957, 14.556541}, + {-47.770067, -22.200349}, + {34.823226928711, 31.892623901367}, + {-73.929061889648, 45.415420532227}, + {-0.24101257324219, 52.581253051758}, + {-79.746322631836, 43.639755249023}, + {150.91300964355, -34.49089050293}, + {130.4207611084, 33.330459594727}, + {70.129165649414, 23.025283813477}, + {-40.328750610352, -20.319900512695}, + {-0.387726, 51.537781}, + {-117.083664, 32.509537}, + {34.799880981445, 31.994247436523}, + {-3.6289215087891, 40.408401489258}, + {-58.56330871582, -34.676284790039}, + {15.639724731445, 46.556625366211}, + {-3.2306671142578, 55.938949584961}, + {-46.814804, -23.523788}, + {-84.232864379883, 10.010604858398}, + {77.650680541992, 13.026351928711}, + {5.9882354736328, 51.562271118164}, + {79.295883178711, 19.946365356445}, + {-76.748428344727, 40.229873657227}, + {-51.154403686523, -23.321914672852}, + {5.328369, 51.221695}, + {-70.505447387695, -33.405990600586}, + {-113.96598815918, 50.99235534668}, + {-3.6769866943359, 40.427627563477}, + {3.0342864990234, 42.196426391602}, + {-2.208481, 53.03215}, + {120.38063049316, 23.917922973633}, + {107.63236999512, -7.0003509521484}, + {-80.275039672852, 43.525772094727}, + {121.0782623291, 14.608383178711}, + {28.035049438477, -26.181106567383}, + {-38.497467, -3.734665}, + {-74.183120727539, 40.06233215332}, + {37.751083374023, 55.675277709961}, + {12.033462524414, 57.776412963867}, + {9.9776458740234, 53.306350708008}, + {-99.149551391602, 19.243240356445}, + {-0.14076232910156, 51.451034545898}, + {-40.297164916992, -20.269088745117}, + {-46.953506469727, -23.176345825195}, + {-46.610458, -23.587784}, + {-117.8963470459, 34.018478393555}, + {-100.187759, 25.472145}, + {14.27604675293, 51.43180847168}, + {5.2933502197266, 52.211837768555}, + {13.868179321289, 52.560653686523}, + {-94.845657348633, 39.01725769043}, + {-34.933090209961, -8.0042266845703}, + {-6.984558, 42.41684}, + {107.5691986084, -6.8726348876953}, + {-6.6625213623047, 55.150680541992}, + {-79.515609741211, 43.620529174805}, + {-76.528701782227, 3.3995819091797}, + {35.337296, 32.729874}, + {106.70127868652, 10.827713012695}, + {30.766525268555, -29.798355102539}, + {18.567581176758, 43.815536499023}, + {-1.4920806884766, 52.887496948242}, + {0.11741638183594, 51.545791625977}, + {-60.054702758789, -3.1084442138672}, + {-3.4256744384766, 43.40217590332}, + {-58.501510620117, -34.652938842773}, + {6.1241912841797, 46.194076538086}, + {-99.169601, 19.438797}, + {-122.2647857666, 49.002456665039}, + {-73.142166137695, -37.035598754883}, + {-77.034072875977, -11.919479370117}, + {116.84577941895, -1.2380218505859}, + {8.8982391357422, 47.736282348633}, + {102.93846130371, 2.1004486083984}, + {4.4762420654297, 51.922073364258}, + {-78.327713012695, 44.311294555664}, + {43.989944458008, 26.135787963867}, + {6.975632, 51.428375}, + {-75.682754516602, 44.61067199707}, + {27.094345092773, 38.459701538086}, + {-99.867782592773, 28.512954711914}, + {-123.03382873535, 49.343032836914}, + {13.675918579102, 41.550979614258}, + {-3.7181854248047, 40.439987182617}, + {10.164413452148, 51.648788452148}, + {-79.464797973633, 44.228897094727}, + {-48.466873168945, -8.0646514892578}, + {-79.168167114258, 43.152236938477}, + {-0.102997, 51.466141}, + {-46.84891, -23.595252}, + {24.712809, 57.109618}, + {-76.795120239258, 39.438858032227}, + {28.886489868164, 41.042861938477}, + {-80.262680053711, 43.420028686523}, + {32.062285, -14.039877}, + {28.202709, -15.799414}, + {101.74369812012, 3.1098175048828}, + {28.27773, -15.431181}, + {92.838074, 56.011881}, + {-47.468490600586, -5.4911041259766}, + {-69.24201965332, 10.018844604492}, + {-16.367568969727, 28.53630065918}, + {11.423721313477, 48.172988891602}, + {27.836525, -15.191946}, + {28.581619262695, 43.814163208008}, + {-57.603378295898, -25.355758666992}, + {16.419525, 48.26088}, + {-75.677261352539, 45.420913696289}, + {-95.250778198242, 31.936569213867}, + {-122.287935, 37.875268}, + {-73.515701293945, 45.607681274414}, + {-53.510971069336, -30.524826049805}, + {5.782516, 53.201981}, + {6.406214, 47.494459}, + {-3.6234283447266, 37.145462036133}, + {-69.250259399414, 10.03532409668}, + {90.751066, 54.904363}, + {-79.235458374023, 43.176956176758}, + {-106.14784240723, 28.74641418457}, + {-7.640533, 33.599625}, + {8.314868, 51.967421}, + {-1.3437652587891, 52.526321411133}, + {-79.654312133789, 43.503799438477}, + {-116.971925, 33.939956}, + {-36.153554, -6.485269}, + {28.912582397461, 41.003036499023}, + {-78.31672668457, 44.305801391602}, + {114.18251, 22.314835}, + {13.901138305664, 45.584335327148}, + {12.040233, 47.48034}, + {-73.591782, 7.123398}, + {120.988802, 14.691958}, + {-7.632614, 33.578751}, + {-79.496383666992, 8.9916229248047}, + {-0.164108, 38.532028}, + {15.178298950195, 45.799942016602}, + {31.102981567383, 29.985122680664}, + {-38.507766723633, -3.7525177001953}, + {-65.718154907227, 47.631912231445}, + {-72.949905395508, -41.457595825195}, + {-121.99287414551, 37.336349487305}, + {-46.611557, -23.516235}, + {-90.466232299805, 14.657821655273}, + {-76.644058227539, 2.4602508544922}, + {121.68113708496, 25.081100463867}, + {27.919692993164, 43.216781616211}, + {13.322982788086, 38.136978149414}, + {28.771133422852, 41.023635864258}, + {5.881668, 51.94899}, + {6.805344, 51.181412}, + {9.915553, 51.624167}, + {112.55149841309, 25.27473449707}, + {-47.958706, -15.821531}, + {29.99885559082, 31.26091003418}, + {-46.553646, -23.610737}, + {-43.348453, -22.958541}, + {-49.376897, -20.771928}, + {-46.318954, -23.540543}, + {-99.075393676758, 19.482192993164}, + {121.079002, 24.827464}, + {16.318817, 48.106041}, + {13.800426, 42.785117}, + {-90.256118774414, 38.616256713867}, + {-115.137838, 36.203392}, + {-48.301557, -18.927069}, + {-34.971706, -8.082184}, + {-74.110336303711, 4.5572662353516}, + {26.43653, -12.183716}, + {0.847656, 52.567866}, + {33.672409057617, 27.396469116211}, + {31.754837, -26.411819}, + {36.579666137695, 28.397598266602}, + {-75.550575, 6.239548}, + {-47.458075, -23.469708}, + {77.025833129883, 28.508834838867}, + {47.961617, 29.339561}, + {80.255813598633, 13.127975463867}, + {21.177752, 51.790696}, + {-49.273253, -25.429825}, + {-74.223404, -13.160934}, + {-1.433258, 54.348221}, + {-73.628311157227, 45.430526733398}, + {-106.7259979248, 52.143173217773}, + {-89.715042114258, 35.305252075195}, + {115.246225, -8.516519}, + {-9.16061, 38.722217}, + {-73.816624, 45.446663}, + {102.137833, 12.607498}, + {13.141708374023, 47.325668334961}, + {-54.858195, -29.184383}, + {31.258538, -9.344668}, + {65.527464, 44.834518}, + {25.855838, -17.931796}, + {-49.204649, -18.395699}, + {-47.211582, -22.483898}, + {99.87190246582, 8.2418060302734}, + {8.8762664794922, 49.244155883789}, + {-117.03117370605, 32.494125366211}, + {-37.048985, -10.921458}, + {109.31739807129, -0.036392211914062}, + {7.312263, 49.14227}, + {72.923381, 19.126027}, + {-81.258156, 42.955767}, + {-34.938185, -8.071066}, + {-58.755569458008, -34.55680847168}, + {120.586565, 24.288751}, + {23.55282, 46.76466}, + {-2.908293, 53.656546}, + {-49.377365112305, -20.833511352539}, + {-70.530852, -33.439637}, + {-0.291747, 52.500151}, + {-1.44539, 54.977646}, + {73.763809, 18.50441}, + {-94.182358, 30.161362}, + {-122.231422, 47.306557}, + {2.81662, 50.551015}, + {9.384507, 49.894597}, + {16.082713, 48.181639}, + {34.572483, 31.682368}, + {29.318662, -23.366548}, + {11.653053, 52.008388}, + {-87.948989868164, 42.723770141602}, + {-81.933975219727, 34.532089233398}, + {-44.282192, -2.499586}, + {140.87287902832, 38.26057434082}, + {2.365464, 51.005762}, + {-1.172654, 53.520722}, + {91.736526489258, 26.164627075195}, + {10.603866577148, 43.838882446289}, + {-74.115829, 4.61174}, + {-35.304557, -8.131479}, + {4.813614, 52.31163}, + {37.561569213867, 55.78239440918}, + {-54.079513549805, -31.336441040039}, + {5.004272, 52.324448}, + {-48.957138061523, -16.326370239258}, + {-75.582733, 6.253052}, + {4.6863555908203, 51.791610717773}, + {-49.73019, -24.25623}, + {23.558696, 46.770951}, + {-81.707902, 30.090153}, + {39.165804, 51.697508}, + {27.954772, -25.768625}, + {77.303925, 28.676033}, + {-87.696304321289, 41.718521118164}, + {-79.416733, 9.037628}, + {-7.316019, 33.72656}, + {34.947585, 32.677384}, + {16.797958, 48.645126}, + {7.200083, 51.274322}, + {-80.503866, 25.65136}, + {30.605065, 50.52112}, + {-79.537239, 8.959351}, + {-88.796742, 43.45346}, + {120.40432, 22.482834}, + {76.406478881836, 9.5436859130859}, + {56.201935, 58.011246}, + {-92.482393, 31.308289}, + {13.701445, 42.191257}, + {-51.395814, -22.135641}, + {-59.976425, -3.02536}, + {112.726593, -7.316208}, + {29.033432006836, 41.152725219727}, + {-35.715866, -9.65065}, + {-79.188766479492, 43.223648071289}, + {10.934608, 33.76947}, + {-78.903121948242, 33.688888549805}, + {-4.4940948486328, 36.629104614258}, + {-35.705257, -9.662013}, + {-93.163376, 16.750168}, + {138.76350402832, 35.155563354492}, + {79.96467590332, 7.2269439697266}, + {-85.147476196289, 10.403366088867}, + {-1.429081, 37.844467}, + {18.663712, 50.223656}, + {-6.311165, 33.893372}, + {-38.473434448242, -12.832717895508}, + {-7.7130889892578, 40.400161743164}, + {-95.783615112305, 29.545669555664}, + {114.19258117676, 4.5833587646484}, + {-69.728164672852, 9.0438079833984}, + {106.12381, -6.071663}, + {115.2298, -8.599631}, + {-8.489857, 40.188332}, + {77.915802, 16.051788}, + {-6.9618988037109, 38.882675170898}, + {56.897506713867, 24.155502319336}, + {58.41465, 23.59726}, + {57.533340454102, 22.904434204102}, + {-38.993998, -12.263843}, + {-89.716415405273, 13.723983764648}, + {10.866225, 48.397883}, + {-40.110328, -2.887384}, + {76.21536, 19.939226}, + {8.649459, 52.122634}, + {-2.5838470458984, 36.826858520508}, + {27.902406, -25.728513}, + {-88.304672241211, 41.884689331055}, + {13.102957, 48.832496}, + {9.931329, 53.589374}, + {100.64094543457, 13.778915405273}, + {-46.811908, -23.535807}, + {10.014235, 53.549514}, + {-46.964669, -23.179892}, + {-98.190994262695, 19.06608581543}, + {121.713935, 25.096745}, + {-67.426528930664, 8.9339447021484}, + {-47.453384, -23.471146}, + {-35.294988, -5.755027}, + {-74.08561706543, 4.6300506591797}, + {103.936386, 1.320419}, + {101.721725, 3.12767}, + {40.502503, 49.954088}, + {-80.882034301758, 34.16130065918}, + {-77.923508, 18.470306}, + {-121.16752624512, 47.230911254883}, + {28.443741, -26.231644}, + {-0.446418, 51.741388}, + {-92.499202, 31.296491}, + {-47.370454, -22.185675}, + {36.089229, 54.563764}, + {13.26805, 47.979355}, + {8.404147, 49.558289}, + {1.819608, 50.110016}, + {13.075416, 38.046591}, + {-9.498826, 52.05986}, + {-2.443772, 36.847}, + {5.807282, 50.697117}, + {4.8140716552734, 52.453536987305}, + {-36.605758666992, -10.290756225586}, + {-99.076766967773, 19.436874389648}, + {7.268284, 53.154701}, + {51.523011, 25.274331}, + {10.084736, 48.396226}, + {59.482174, 36.3309}, + {-46.863717, -23.493655}, + {28.090474, -26.236863}, + {5.260444, 51.825592}, + {8.498235, 53.04779}, + {39.195668, 51.697065}, + {-35.741609, -9.657844}, + {-123.004874, 49.194765}, + {19.104537963867, 47.500076293945}, + {4.631726, 52.261419}, + {121.09886169434, 14.267807006836}, + {6.815652, 51.235271}, + {8.9861297607422, 44.393692016602}, + {108.561094, -6.724465}, + {-81.873550415039, 26.524429321289}, + {101.3207244873, 13.424606323242}, + {8.045623, 48.902403}, + {-74.152908, 4.672165}, + {6.901616, 51.28422}, + {76.237814, 10.958051}, + {121.288376, 24.986343}, + {-82.66731262207, 34.54719543457}, + {9.602727, 45.169458}, + {120.677761, 24.243393}, + {-57.528562, -25.09208}, + {-89.878464, 39.293633}, + {-99.183883666992, 19.516525268555}, + {-46.541196, -23.671999}, + {107.542112, -6.863922}, + {6.931006, 52.838754}, + {12.467766, 56.952095}, + {5.897026, 52.98214}, + {-73.139419555664, 40.865707397461}, + {-48.469619750977, -1.4673614501953}, + {-111.939136, 40.667583}, + {114.185028, 22.653809}, + {115.631789, 36.857622}, + {9.599776, 53.504009}, + {-80.973282, -2.204361}, + {6.840068, 51.245237}, + {-49.087131, -26.800792}, + {31.090621948242, -17.744979858398}, + {121.548332, 25.053837}, + {-0.552235, 44.7789}, + {4.378052, 52.061462}, + {-90.007553100586, 29.865646362305}, + {-89.234390258789, 13.669052124023}, + {2.316287, 48.88395}, + {-88.3358, 18.515854}, + {6.271111, 51.844127}, + {-79.940403, -2.095707}, + {32.873778, 39.903155}, + {-79.68956, 44.352493}, + {103.3683013916, 3.8459014892578}, + {5.387012, 51.445818}, + {-38.507767, -3.91849}, + {-121.75082, 36.887217}, + {-59.404912, -34.463482}, + {4.346652, 50.844126}, + {86.166972, 23.755361}, + {-51.721858, -21.947844}, + {-76.80061340332, 38.091659545898}, + {11.425094, 44.532395}, + {13.806193, 47.410092}, + {-85.95543, 37.725923}, + {5.9127044677734, 51.135177612305}, + {5.220387, 50.521124}, + {-77.012100219727, -12.198257446289}, + {116.254242, -32.136049}, + {18.093299, 59.980362}, + {6.6556549072266, 51.195602416992}, + {-86.824631, 21.18132}, + {-47.861251831055, -15.808639526367}, + {28.180499, -26.060966}, + {27.77844, -26.092137}, + {28.06292, -26.196733}, + {31.059723, -17.819138}, + {-72.579491, -38.739931}, + {-79.885025024414, -2.2762298583984}, + {8.718745, 50.115636}, + {8.492189, 49.044726}, + {27.935849, -26.253972}, + {5.681305, 53.204727}, + {16.1541, 51.269302}, + {9.19899, 49.142876}, + {-84.092178, 9.92602}, + {45.175922, 53.192109}, + {11.478125, 51.02287}, + {9.322924, 49.03936}, + {123.344076, 0.902851}, + {106.85508728027, -6.2244415283203}, + {-58.0266, -32.394228}, + {38.720078, 8.96608}, + {23.350621, 42.689927}, + {14.184723, 42.39624}, + {15.273777, 51.049721}, + {-0.786697, 51.461401}, + {26.562787, 52.313302}, + {106.73973083496, -6.2807464599609}, + {0.299606, 52.251377}, + {-6.132259, 53.293819}, + {102.27516174316, 6.0980987548828}, + {-90.484085, 14.604092}, + {-90.532307, 14.606107}, + {-90.682297, 14.616296}, + {16.304499, 50.869321}, + {9.213392, 49.233205}, + {9.402303, 48.715054}, + {16.080236, 50.808604}, + {9.165773, 48.705912}, + {10.140853, 48.011348}, + {69.61065, 40.295596}, + {18.968064, 50.339373}, + {16.792068, 50.872116}, + {9.436415, 48.941194}, + {9.199276, 49.140551}, + {37.646713256836, 55.75080871582}, + {8.2514190673828, 48.891220092773}, + {-46.773441, -23.613678}, + {-46.79372, -23.514337}, + {77.369211, 28.628366}, + {-43.224747, -22.972549}, + {103.311661, 1.834711}, + {19.82637, 50.02941}, + {8.727969, 48.899891}, + {-121.30935, 38.706894}, + {98.659744, 3.580399}, + {17.557027, 50.319847}, + {15.816697, 51.115951}, + {15.769383, 50.868173}, + {18.913136, 47.44154}, + {9.319733, 48.882318}, + {15.724546, 50.906525}, + {4.945335, 52.312832}, + {135.098099, 48.390701}, + {76.674959, 66.105965}, + {-46.67610168457, -23.720169067383}, + {-66.994553, 10.589066}, + {-16.491165161133, 16.025619506836}, + {-73.132553100586, 7.1170806884766}, + {18.143733, 46.938588}, + {106.819382, -6.220093}, + {106.852831, -6.302915}, + {-89.660464, 13.743076}, + {18.796920776367, 46.560745239258}, + {33.235889, 69.049224}, + {33.07261, 68.970767}, + {110.6632232666, -6.5897369384766}, + {12.811086, 41.59249}, + {-98.206100463867, 19.075698852539}, + {2.100504, 41.380966}, + {-46.947756, -22.369326}, + {27.941551, -16.012933}, + {5.559346, 51.438252}, + {112.58720397949, -7.2681427001953}, + {8.108997, 49.199753}, + {112.694389, -7.432251}, + {-3.197583, 55.953681}, + {-3.212723, 55.95195}, + {7.989245, 49.09996}, + {-75.463012, 40.482762}, + {-2.285352, 53.469184}, + {-70.129864, -20.254163}, + {-3.240166, 55.945473}, + {-3.2114410400391, 55.959548950195}, + {-3.6865997314453, 40.477066040039}, + {-1.74408, 52.507782}, + {-98.240471, 19.040222}, + {-82.512134, 42.647324}, + {39.117737, 45.037766}, + {88.268967, 24.100845}, + {18.481459, -33.857313}, + {-99.23548, 19.315534}, + {28.061829, -26.103516}, + {28.901596069336, 41.089553833008}, + {25.558662, 56.34407}, + {15.955582, 45.781059}, + {77.219467163086, 28.528060913086}, + {18.243612, 59.374393}, + {4.320717, 51.917095}, + {27.237167358398, -25.793838500977}, + {-70.590591430664, -33.579025268555}, + {-39.537629, -8.091696}, + {77.615662, 12.972794}, + {-48.785139, -22.241906}, + {-93.254013, 44.934769}, + {-72.482068, -37.091462}, + {-43.394399, -22.883405}, + {-79.526596069336, 43.805923461914}, + {28.107413, -26.137849}, + {-87.453231811523, 41.550979614258}, + {-49.911575, -20.08667}, + {110.80192565918, -7.5551605224609}, + {-43.321348, -23.011551}, + {-89.15419, 13.714865}, + {-79.687271118164, 43.693313598633}, + {10.046061, 53.547925}, + {-40.780811, -14.804925}, + {8.411219, 49.530377}, + {90.353691, 22.68203}, + {-46.643143, -23.578033}, + {-87.723427, 41.935846}, + {9.931681, 52.235668}, + {11.772537231445, 51.684494018555}, + {2.009125, 41.398794}, + {11.416854858398, 45.470352172852}, + {65.554161, 57.13131}, + {2.330018, 48.841931}, + {8.7952423095703, 48.461380004883}, + {4.241583, 51.889633}, + {-52.412529, -25.408679}, + {-2.161791, 53.904648}, + {28.104537, -25.893601}, + {30.468521118164, 59.951705932617}, + {27.874374, -26.488201}, + {18.094624, 50.469506}, + {-46.924793, -22.621335}, + {27.855148, -26.210632}, + {8.6167144775391, 44.910049438477}, + {28.971732, -24.108369}, + {-80.287225, 27.193339}, + {10.343064, 52.176919}, + {37.7965, 55.800443}, + {37.79789, 55.800247}, + {107.667781, -6.938553}, + {28.425751, -26.216126}, + {28.097672, -26.051743}, + {31.296444, 30.064602}, + {-51.144619, -29.765838}, + {25.252488, -17.799912}, + {21.014686, 52.231735}, + {5.751343, 49.518814}, + {15.658095, 48.414875}, + {-47.648391723633, -15.608139038086}, + {4.843599, 51.662797}, + {-47.185592651367, -22.940139770508}, + {-49.992293, -25.389485}, + {-1.2627410888672, 51.40983581543}, + {101.389264, 14.659944}, + {-81.351837, 31.912811}, + {28.215551, -26.114502}, + {30.983373, -29.777527}, + {-35.836168, -9.578606}, + {12.269335, 48.176619}, + {8.646407, 48.827546}, + {38.000748, 55.880676}, + {-35.737863, -9.616303}, + {-51.448008, -22.220605}, + {-99.083633422852, 19.471206665039}, + {27.930522, -26.667597}, + {16.382217, 47.869197}, + {14.698814, 51.051422}, + {13.487148, 45.843312}, + {9.185944, 48.769902}, + {-1.375776, 50.917578}, + {-7.609062, 33.585548}, + {16.576478, 49.260291}, + {7.114333, 52.718583}, + {7.671432, 45.089264}, + {4.72786, 52.63905}, + {175.376686, -40.498067}, + {7.006364, 51.027976}, + {7.882005, 50.66389}, + {12.864635, 48.177022}, + {7.72118, 51.608117}, + {6.2368011474609, 51.595230102539}, + {16.111719, 47.944426}, + {14.936416, 55.208692}, + {-35.737152, -9.066467}, + {4.670095, 50.869679}, + {9.971849, 53.470538}, + {15.455776, 47.04689}, + {-123.152696, 49.255119}, + {4.370437, 52.060501}, + {3.715423, 50.997794}, + {10.909819, 59.936662}, + {9.917419, 53.486644}, + {6.977692, 50.815887}, + {-0.721127, 51.02147}, + {11.67968, 48.323066}, + {18.909191, 49.731677}, + {5.811541, 52.960741}, + {-79.566269, 43.200302}, + {9.990665, 53.461478}, + {-15.461197, 28.041916}, + {8.766098, 58.492508}, + {6.743104, 50.112089}, + {106.76582336426, -6.2203216552734}, + {174.744086, -36.802968}, + {10.059698, 49.988137}, + {7.1912384033203, 51.584243774414}, + {12.068481, 52.234498}, + {15.140558, 48.133624}, + {7.745347, 51.897288}, + {7.835542, 49.087373}, + {6.1186981201172, 50.981369018555}, + {8.6290740966797, 56.374282836914}, + {-52.000697, -23.129051}, + {14.822843, 46.761374}, + {20.286942, 52.904761}, + {5.003682, 52.781517}, + {9.753799, 53.717148}, + {4.503016, 52.155555}, + {4.419383, 52.190502}, + {7.247086, 52.380753}, + {12.232623, 58.95813}, + {-68.028030395508, 10.171279907227}, + {9.938985, 61.337185}, + {5.801464, 50.695063}, + {-98.790467, 20.121647}, + {14.737425, 51.135342}, + {10.47478, 52.958425}, + {4.797659, 51.882297}, + {3.977826, 51.645134}, + {17.019882, 48.2341}, + {174.739548, -36.841599}, + {6.8094635009766, 51.231307983398}, + {13.516616821289, 47.93815612793}, + {5.9882354736328, 51.669387817383}, + {-7.9959869384766, 31.630325317383}, + {175.237493, -37.696651}, + {6.718826, 51.438218}, + {-76.76857, -12.39006}, + {-96.844345, 32.643814}, + {-96.890487670898, 32.737197875977}, + {11.791763305664, 48.784103393555}, + {12.961142, 48.812235}, + {12.9804, 48.803752}, + {18.974893, 49.817378}, + {-3.012205, 53.765579}, + {11.514358, 49.735107}, + {11.344069, 49.583359}, + {3.8074493408203, 51.019821166992}, + {3.2759857177734, 50.767135620117}, + {7.878792, 52.260378}, + {7.884946, 52.265201}, + {20.944027, 52.282642}, + {4.207168, 50.841582}, + {9.030762, 48.797836}, + {14.444826, 56.906973}, + {9.804908, 49.176281}, + {8.6139678955078, 52.789993286133}, + {7.658263, 47.534514}, + {10.039443969727, 53.565902709961}, + {6.99227, 50.804674}, + {7.597042, 50.343476}, + {11.418222, 63.942947}, + {13.335999, 51.042505}, + {6.716766, 50.903092}, + {11.858233, 55.262193}, + {-149.90913391113, 61.191787719727}, + {14.116082, 46.721941}, + {5.0296783447266, 51.085739135742}, + {5.475845, 50.688308}, + {10.285864, 49.227333}, + {174.752998, -36.788406}, + {5.098069, 52.037682}, + {8.32283, 48.135773}, + {9.874649, 49.746094}, + {14.007356, 48.516482}, + {27.950455, -25.957535}, + {16.166346, 48.178916}, + {4.2194366455078, 51.265640258789}, + {14.434315, 48.094862}, + {27.263243, 44.420264}, + {-2.391423, 51.98333}, + {28.790306, -31.591641}, + {4.422635, 52.088634}, + {7.290459, 50.538483}, + {7.78108, 48.273654}, + {5.782999, 53.121523}, + {6.16446, 49.86762}, + {5.664335, 50.683993}, + {28.248204, 44.207653}, + {12.02903, 48.851753}, + {22.517665, 39.846601}, + {9.959063, 51.691503}, + {10.396042, 49.247818}, + {6.792795, 51.42259}, + {173.015021, -42.952249}, + {8.3255767822266, 49.623184204102}, + {4.301408, 51.3717}, + {7.848358, 47.324295}, + {-2.243957, 53.049545}, + {4.373442, 51.889703}, + {150.989914, -33.865128}, + {17.932023, 52.832343}, + {28.290343, -26.190171}, + {-2.866058, 53.452606}, + {9.056048, 48.718006}, + {18.681463, -33.153814}, + {35.301624, 32.561438}, + {6.701472, 53.329702}, + {7.1239471435547, 51.473007202148}, + {33.395691, 35.153503}, + {121.53244, 25.014763}, + {16.427993774414, 48.251266479492}, + {4.42845, 45.470902}, + {27.718506, -32.918473}, + {-1.681594, 51.52485}, + {-76.259537, 44.908218}, + {15.863571166992, 47.011184692383}, + {26.938214, 45.22517}, + {-0.83839416503906, 52.28874206543}, + {16.44172668457, 48.183975219727}, + {6.224441, 51.944733}, + {9.9048614501953, 49.803085327148}, + {12.490768432617, 51.379623413086}, + {14.499784, 50.026822}, + {-94.403637, 18.150399}, + {5.3688812255859, 51.390609741211}, + {112.49519348145, 32.978897094727}, + {16.623001098633, 48.947525024414}, + {11.468854, 48.833168}, + {28.220673, -26.111183}, + {-2.473153, 53.671276}, + {-2.5769805908203, 50.712203979492}, + {10.994881, 49.515318}, + {11.738204956055, 47.979354858398}, + {9.230903, 50.729633}, + {27.964278, -26.038195}, + {16.407914, 49.21343}, + {11.294631958008, 55.675277709961}, + {-2.1018218994141, 51.714706420898}, + {12.497635, 54.249115}, + {-0.563736, 53.739624}, + {4.517006, 51.195151}, + {25.313898, 44.717421}, + {-1.356059, 53.453341}, + {100.132192, 18.095927}, + {4.927826, 51.134033}, + {12.124746, 49.053672}, + {8.5782623291016, 49.12467956543}, + {12.122996, 51.282121}, + {19.040568, 47.518012}, + {12.129592895508, 51.284866333008}, + {4.406891, 51.29036}, + {37.635726928711, 55.765914916992}, + {-3.866498, 40.496293}, + {7.894363, 49.862726}, + {8.237538, 48.764914}, + {27.242660522461, -25.668869018555}, + {9.086185, 48.829812}, + {10.57949, 35.90435}, + {9.780344, 59.641606}, + {-1.664281, 51.003097}, + {-3.465677, 50.722526}, + {8.326263, 51.852997}, + {7.507753, 47.208984}, + {13.781067, 52.404295}, + {8.1951141357422, 47.398452758789}, + {37.72087097168, 55.797500610352}, + {6.657538, 51.171915}, + {17.813738, 48.2068}, + {6.635056, 51.642609}, + {7.919361, 49.923939}, + {10.992599, 49.545822}, + {4.8305511474609, 45.644760131836}, + {-2.5124359130859, 51.507339477539}, + {17.581833, 52.53566}, + {11.611394, 48.372368}, + {7.6197052001953, 52.522201538086}, + {10.635703, 35.760686}, + {4.68812, 51.095135}, + {150.854008, -33.899816}, + {11.67366, 48.332291}, + {7.393792, 51.503366}, + {10.924873, 48.406105}, + {9.159, 49.188511}, + {4.180284, 51.175919}, + {-48.302765, -10.304489}, + {8.615063, 49.552598}, + {4.874497, 52.224198}, + {99.424209, 18.22316}, + {15.511597, 52.866233}, + {7.235699, 50.945321}, + {-79.081649780273, 43.244247436523}, + {9.2173, 49.638748}, + {16.337356567383, 48.204574584961}, + {8.895035, 44.44725}, + {4.665747, 51.806036}, + {8.9119720458984, 48.801956176758}, + {10.187966, 53.350841}, + {11.989975, 47.89238}, + {7.116393, 51.453446}, + {1.0128021240234, 49.37873840332}, + {175.86982727051, -38.934860229492}, + {-117.788406, 33.69548}, + {4.3155670166016, 51.446914672852}, + {11.474533081055, 47.077102661133}, + {16.629148, 48.666785}, + {-3.6989593505859, 40.022506713867}, + {9.916534, 53.513718}, + {20.997308, 52.268268}, + {-9.156227, 38.821793}, + {35.247412, 32.837367}, + {-108.95210266113, 50.050277709961}, + {13.086579, 57.9983}, + {7.936077, 47.301636}, + {8.3654022216797, 50.620193481445}, + {8.349197, 51.8611}, + {9.476269, 53.935796}, + {18.746109, 50.671693}, + {145.000483, -37.808736}, + {7.3491668701172, 51.562271118164}, + {13.83038, 47.908319}, + {19.426026, 54.149552}, + {8.018303, 48.397007}, + {76.332321, 26.900253}, + {121.57402038574, 31.196365356445}, + {7.304535, 51.560211}, + {13.620987, 47.686157}, + {1.229112, 49.53953}, + {7.293411, 45.727982}, + {20.926895141602, 52.272262573242}, + {6.489103, 52.36481}, + {16.917404, 52.360585}, + {5.819957, 51.209758}, + {8.81563, 50.592553}, + {5.273992, 50.095109}, + {-86.84761, 33.358612}, + {127.503891, 50.260391}, + {18.707562, 47.744241}, + {15.460678, 48.566973}, + {9.5821380615234, 52.766647338867}, + {9.5052337646484, 51.856155395508}, + {15.597613, 48.407814}, + {7.004486, 50.79941}, + {73.269575, 54.771025}, + {41.028442, 44.89357}, + {57.140808, 50.311203}, + {37.750473, 55.658299}, + {44.046144, 56.299307}, + {18.324051, 47.652512}, + {49.454631, 53.55629}, + {50.130208, 53.199082}, + {30.369574, 60.035593}, + {46.13639831543, 43.334884643555}, + {61.895109, 56.41813}, + {-47.761001586914, -21.028518676758}, + {65.564477, 57.154705}, + {20.897894, 54.681892}, + {-80.79963684082, 35.612869262695}, + {30.228424, 59.958115}, + {12.978286743164, 48.96125793457}, + {20.834884643555, 47.896957397461}, + {6.8643951416016, 51.426315307617}, + {34.718315, 48.459734}, + {73.10920715332, 49.820938110352}, + {10.230473, 48.797996}, + {38.918381, 45.037594}, + {-3.0233001708984, 53.005599975586}, + {-0.598513, 51.691327}, + {24.128572, 56.993166}, + {56.035385, 54.788437}, + {30.784334, 59.696052}, + {76.565323, 60.948257}, + {43.848839, 40.807686}, + {30.501307, 56.341854}, + {37.551407, 51.28157}, + {-9.094032, 38.769771}, + {-9.172403, 38.757994}, + {-79.893082, -2.171951}, + {7.520829, 50.567322}, + {6.985244, 51.203022}, + {-1.9617462158203, 52.509841918945}, + {173.719228, -42.335133}, + {7.0346832275391, 50.958023071289}, + {34.831695, 31.777267}, + {11.641845, 48.039895}, + {40.658340454102, 55.616226196289}, + {5.927186, 51.142338}, + {20.105224, 46.70786}, + {-49.323043, -16.628509}, + {20.501175, 44.78508}, + {28.145373, -26.327592}, + {30.353165, 59.919205}, + {58.397415, 37.933731}, + {-0.73539733886719, 45.679092407227}, + {3.867874, 51.268387}, + {77.00798034668, 43.347244262695}, + {30.367584, 50.467268}, + {47.58165, 55.077072}, + {11.297378540039, 53.516464233398}, + {-60.644989, -33.004303}, + {30.417737, 59.66516}, + {47.426899, 55.776117}, + {-95.783625, 34.935716}, + {-1.3272857666016, 50.934677124023}, + {172.5643157959, -43.544998168945}, + {101.79313659668, 2.9711151123047}, + {37.642593383789, 55.783767700195}, + {37.672805786133, 55.776901245117}, + {2.386741, 48.865115}, + {73.400345, 54.975243}, + {106.997555, -6.244558}, + {107.56782531738, -6.8891143798828}, + {106.826771, -6.596276}, + {37.516250610352, 55.881271362305}, + {19.303665, 49.192363}, + {-3.379277, 51.455352}, + {80.61712, 16.512484}, + {6.971512, 50.879746}, + {15.446548, 47.127915}, + {50.264822, 53.276398}, + {28.10920715332, -26.028671264648}, + {6.117668, 51.302376}, + {8.088544, 50.805164}, + {30.291515, 59.904754}, + {7.9341888427734, 47.545394897461}, + {37.669373, 55.376175}, + {-122.36503601074, 47.104568481445}, + {9.5574188232422, 48.686599731445}, + {36.285193, 54.548983}, + {9.7826385498047, 48.797836303711}, + {30.043144, 52.90535}, + {26.808014, 51.89255}, + {72.965811, 50.054559}, + {30.200729370117, 52.861404418945}, + {12.133026, 47.559128}, + {8.217094, 52.093738}, + {8.2157135009766, 48.58772277832}, + {28.205123, -25.680403}, + {1.2888336181641, 45.821914672852}, + {14.453347, 48.353006}, + {16.764450073242, 48.542404174805}, + {5.561866, 51.47704}, + {6.786823, 51.117328}, + {-0.25036, 51.654636}, + {73.227997, 54.996872}, + {-44.173965, -19.917755}, + {58.401260375977, 37.902145385742}, + {37.665115, 55.735977}, + {8.780411, 50.842255}, + {-65.78476, -28.474159}, + {11.821802, 48.009952}, + {28.108749, -26.099625}, + {9.234009, 48.695526}, + {8.5933685302734, 50.018692016602}, + {7.189472, 50.140327}, + {113.465129, 52.051752}, + {6.991076, 46.867127}, + {6.166077, 46.19957}, + {10.0456, 49.759839}, + {24.165115, 56.961329}, + {23.599064, 51.658903}, + {-86.313400268555, 41.436996459961}, + {4.930115, 51.133118}, + {-2.410507, 51.985477}, + {74.570389, 16.817551}, + {4.436142, 51.536179}, + {25.940014, 43.819963}, + {26.860885620117, 41.733627319336}, + {-82.34733581543, 38.411636352539}, + {12.524083, 47.847694}, + {60.560761, 56.852188}, + {-54.800491, -34.898071}, + {19.622268676758, 45.002059936523}, + {6.0294342041016, 50.366134643555}, + {101.736374, 3.213959}, + {1.969706, 49.811889}, + {70.813549, 22.29332}, + {9.063609, 51.898181}, + {73.084487915039, 49.808578491211}, + {-110.996933, 29.149246}, + {37.722244262695, 55.67253112793}, + {15.883273, 49.911294}, + {1.417871, 43.622447}, + {102.572479, 2.049637}, + {43.312911987305, 43.60954284668}, + {12.238778, 50.797429}, + {0.127663, 45.634408}, + {12.023786, 57.677536}, + {8.749008, 49.022599}, + {4.620644, 52.123293}, + {106.194144, -6.12161}, + {17.043113, 48.131646}, + {15.779800415039, 50.03791809082}, + {48.06633, 46.371918}, + {6.089398, 51.587456}, + {10.099081, 48.880041}, + {43.456345, 45.41893}, + {10.745607, 47.898216}, + {-97.875137, 22.367821}, + {40.34884, 56.117616}, + {-36.684036254883, -9.7400665283203}, + {30.501538, 56.341902}, + {39.303959, 48.545415}, + {120.480881, 22.679901}, + {12.71928, 48.054411}, + {9.279546, 49.109575}, + {60.571060180664, 56.852188110352}, + {76.934891, 43.237839}, + {6.9547, 52.739378}, + {0.728993, 51.213915}, + {7.616959, 45.241013}, + {77.594807, 13.00124}, + {17.927465, 48.312097}, + {121.210556, 31.372604}, + {37.151704, 55.986266}, + {-8.556519, 41.16806}, + {9.621428, 53.538286}, + {11.698723, 48.142262}, + {-0.53627014160156, 51.57600402832}, + {10.901870727539, 51.470260620117}, + {20.996933, 52.243561}, + {11.09223, 48.419547}, + {68.415298461914, 40.776443481445}, + {7.859756, 49.92627}, + {30.558815, 59.71447}, + {8.9888763427734, 50.256271362305}, + {44.050369262695, 56.227340698242}, + {9.89662, 52.431908}, + {13.281784057617, 52.50846862793}, + {8.8460540771484, 48.425674438477}, + {59.940376, 57.87838}, + {27.681091, -28.315049}, + {11.015604, 49.466629}, + {-80.99556, 43.810045}, + {40.639114379883, 55.612106323242}, + {-43.202618, -22.959685}, + {89.597627, 22.777406}, + {42.161603, 55.362658}, + {26.204452514648, -29.110336303711}, + {28.259138, -25.710715}, + {34.329529, 61.802387}, + {9.625191, 55.604234}, + {9.4722747802734, 51.276626586914}, + {69.561996, 42.314431}, + {-0.102703, 51.630739}, + {101.819687, 3.351059}, + {11.797286, 47.870199}, + {30.99723815918, 52.446670532227}, + {37.495651245117, 55.705490112305}, + {-1.213852, 53.576797}, + {6.54031, 51.437343}, + {49.60807800293, 58.608627319336}, + {10.220882, 50.036341}, + {75.331257, 51.722161}, + {10.649575, 52.265035}, + {-2.962326, 43.280502}, + {-75.603165, 45.366015}, + {13.231083, 52.513984}, + {30.298233032227, 50.319442749023}, + {37.407223, 55.803949}, + {24.233832, 49.791299}, + {-46.660377, -23.622796}, + {-0.627251, 51.508713}, + {30.043488, 52.906723}, + {49.776992797852, 40.429000854492}, + {158.379593, 53.197861}, + {28.091354, -26.231285}, + {60.456391, 50.43068}, + {-46.696146, -23.520393}, + {102.218857, 4.979553}, + {-0.139978, 51.13557}, + {33.260971, 68.143387}, + {-79.893461, -2.200633}, + {8.400421, 47.69577}, + {30.469209, 59.946901}, + {38.835983276367, 55.730209350586}, + {14.820776, 50.322827}, + {8.963699, 48.386307}, + {71.770248413086, 40.389175415039}, + {12.825165, 48.113251}, + {27.212457, 54.077867}, + {30.625763, 50.46587}, + {9.039231, 54.230118}, + {4.9623870849609, 52.375259399414}, + {20.639093, 50.88877}, + {9.5121, 47.176323}, + {12.38912, 47.457265}, + {13.646724, 50.514589}, + {-80.377272, -2.411917}, + {8.23494, 49.02649}, + {-9.415421, 38.991165}, + {-113.946177, 53.569289}, + {-84.145145, 9.922199}, + {100.735703, 13.94783}, + {8.3242034912109, 51.854782104492}, + {37.981796264648, 44.580459594727}, + {8.7183380126953, 49.579238891602}, + {4.6369171142578, 51.990737915039}, + {131.919537, 43.125114}, + {34.815986, 32.110353}, + {76.953049, 43.227743}, + {6.4579010009766, 46.494827270508}, + {37.502716, 55.816334}, + {18.614333, -34.037167}, + {26.212234, -29.120483}, + {6.799936, 52.250805}, + {18.609563, -33.894704}, + {-0.631027, 53.840012}, + {5.793228, 50.158768}, + {26.06209, 49.538968}, + {18.988907, -32.588608}, + {6.943636, 52.324761}, + {76.954422, 43.297806}, + {5.640788, 58.783895}, + {-88.387527, 41.702499}, + {-2.281265, 53.462448}, + {30.640526, 46.306686}, + {12.491612, 51.96583}, + {103.793825, 1.288834}, + {4.5627593994141, 51.205215454102}, + {9.7524261474609, 54.845809936523}, + {-3.761945, 40.221634}, + {14.165261, 51.594837}, + {-1.599285, 54.967634}, + {11.882043, 50.88793}, + {-1.617964, 54.359207}, + {-1.658249, 53.880043}, + {99.507294, 18.29567}, + {20.618279, 50.87213}, + {77.613727, 12.932687}, + {6.4373016357422, 52.36701965332}, + {9.330486, 48.627966}, + {8.2047271728516, 49.069747924805}, + {12.695359, 50.811022}, + {61.29158, 55.17952}, + {-43.67546081543, -22.414169311523}, + {56.052932739258, 54.792251586914}, + {5.4265594482422, 50.624313354492}, + {68.779526, 38.536301}, + {12.184296, 47.656631}, + {-80.232467651367, 26.155014038086}, + {10.747375, 49.297714}, + {-1.246605, 48.841095}, + {4.41925, 51.262894}, + {8.250046, 47.572174}, + {13.4897, 52.509018}, + {7.0140838623047, 51.011581420898}, + {30.436543, 59.911554}, + {7.0346832275391, 50.598220825195}, + {37.580795288086, 55.524215698242}, + {11.077651977539, 48.858261108398}, + {36.50276184082, 48.863754272461}, + {30.41746, 60.032364}, + {5.645256, 52.569351}, + {8.486479, 49.03862}, + {-73.976812, 40.752961}, + {6.766205, 51.249161}, + {-117.568817, 33.952364}, + {11.055678, 49.659827}, + {39.713241, 47.244095}, + {30.287954, 54.525162}, + {9.625396, 53.334504}, + {6.8218231201172, 51.238174438477}, + {28.147096, -26.145467}, + {7.5606536865234, 47.064743041992}, + {37.466016, 54.959071}, + {7.6444244384766, 47.880477905273}, + {101.793445, 3.425893}, + {-76.677915, 39.338502}, + {28.655776977539, -13.009872436523}, + {-96.637802124023, 32.809982299805}, + {30.641555786133, 60.012130737305}, + {1.700067, 41.213431}, + {-57.913284, -31.383133}, + {-8.540085, 37.124863}, + {4.873398, 52.378006}, + {43.143997192383, 44.208297729492}, + {9.7455596923828, 47.482223510742}, + {16.372461, 48.202}, + {-0.293884, 39.619789}, + {75.963593, 13.608627}, + {14.456698, 50.116516}, + {92.96012878418, 56.055679321289}, + {7.5675201416016, 50.42106628418}, + {8.3228302001953, 48.977737426758}, + {16.334628, 48.177463}, + {7.208748, 51.551971}, + {13.557815551758, 59.401016235352}, + {4.8429107666016, 46.692581176758}, + {-97.857971, 22.217102}, + {-75.277634, 2.910004}, + {7.562615, 50.159552}, + {-45.783004, -22.403915}, + {-73.145187, -40.570725}, + {91.508560180664, 53.70735168457}, + {12.200737, 50.887646}, + {-78.482894897461, -0.11604309082031}, + {29.770202, 59.899693}, + {29.057808, 41.014366}, + {29.558029, 40.774521}, + {11.002928, 44.47884}, + {32.392777, 40.444107}, + {14.478686, 50.053101}, + {18.754807, 53.468399}, + {28.080007, -26.062715}, + {127.55882263184, 50.254898071289}, + {-0.756621, 52.042923}, + {52.86003112793, 43.341751098633}, + {8.2184600830078, 51.828689575195}, + {113.494675, 52.032211}, + {7.6938629150391, 45.062484741211}, + {9.277494, 49.066315}, + {-77.04277, -12.078781}, + {-1.0910797119141, 53.954544067383}, + {74.565353, 42.851028}, + {37.798462, 55.673904}, + {69.297638, 41.308594}, + {121.53282165527, 24.95475769043}, + {20.19726, 54.911087}, + {16.915512084961, 47.788467407227}, + {23.821107, 53.694306}, + {52.427444458008, 55.761795043945}, + {6.7449188232422, 51.161270141602}, + {8.10111, 48.23699}, + {4.264676, 51.261571}, + {-81.663436889648, 28.349533081055}, + {-88.078079223633, 41.789932250977}, + {-78.478775024414, -0.18196105957031}, + {12.412204, 48.986942}, + {174.268575, -39.003532}, + {37.389907836914, 55.903244018555}, + {38.984299, 45.100937}, + {14.257919, 53.906365}, + {8.717349, 53.862039}, + {37.637100219727, 55.664291381836}, + {114.1431427002, 22.335891723633}, + {-4.611443, 56.017433}, + {14.018207, 52.361496}, + {7.265244, 50.950241}, + {18.951855, 50.059245}, + {-9.000998, 38.735966}, + {77.34993, 28.600159}, + {8.5013580322266, 50.029678344727}, + {61.321335, 55.204239}, + {-76.613317, 39.306204}, + {16.624244, 51.08032}, + {71.49169, 43.065145}, + {18.916626, 50.295315}, + {4.681598, 51.795584}, + {100.450058, 13.80043}, + {-78.492508, -0.128746}, + {9.2346954345703, 48.45588684082}, + {-74.135971, 4.641495}, + {-0.087891, 51.436615}, + {100.289383, 14.133224}, + {3.2347869873047, 49.845657348633}, + {39.895477, 57.624664}, + {56.23558, 58.00383}, + {9.876342, 52.957154}, + {29.206466674805, 40.90690612793}, + {5.554452, 43.275904}, + {-77.200497, 38.947872}, + {-88.042831, 42.195969}, + {52.136306762695, 54.064407348633}, + {9.047077, 47.9625}, + {11.613161, 48.188148}, + {-76.870175, 38.962616}, + {37.998275756836, 55.667037963867}, + {49.157639, 55.785828}, + {2.456305, 48.815912}, + {43.114128, 44.124184}, + {-47.503226, -23.479207}, + {5.5226898193359, 50.908584594727}, + {-46.647368, -23.555269}, + {4.6630096435547, 51.857528686523}, + {102.40013122559, 2.8118133544922}, + {9.660024, 53.472127}, + {11.090927, 50.981369}, + {63.593673706055, 39.026870727539}, + {9.215927, 45.461426}, + {39.1241, 21.669846}, + {71.457596, 51.168823}, + {100.343109, 13.704922}, + {-1.2215423583984, 52.883377075195}, + {13.060455, 43.801629}, + {37.66079, 55.613617}, + {9.949493, 48.458633}, + {-77.456874, 38.812569}, + {9.998556, 45.301638}, + {10.871362, 48.439192}, + {4.432983, 50.905984}, + {4.510025, 50.764114}, + {7.601505, 50.532211}, + {172.401472, -43.679503}, + {102.63084411621, 3.7552642822266}, + {30.379388, 50.437854}, + {-99.207229614258, 19.394302368164}, + {24.610831, 48.509818}, + {7.1294403076172, 53.000106811523}, + {104.29768, 52.309301}, + {10.523809, 53.654205}, + {30.999985, -29.814377}, + {8.115463, 51.545105}, + {8.515091, 51.965332}, + {45.017166137695, 53.192367553711}, + {7.2859954833984, 51.500473022461}, + {-0.625636, 39.477555}, + {34.765686, 32.05513}, + {10.096804, 53.537226}, + {7.0442962646484, 50.140914916992}, + {6.944963, 50.887987}, + {7.157822, 4.717941}, + {-48.453827, -1.384964}, + {4.596489, 50.863316}, + {-1.0916, 53.986377}, + {10.149307250977, 54.259414672852}, + {-101.185112, 19.702778}, + {-43.5193, -22.888433}, + {60.907516479492, 41.86408996582}, + {-87.2379, 14.036087}, + {80.232706, 13.037099}, + {11.598129, 48.103141}, + {53.030319213867, 51.161270141602}, + {5.85331, 51.839676}, + {30.752792, 46.469421}, + {-57.607498168945, -25.343399047852}, + {73.459054, 55.096093}, + {39.727936, 43.592377}, + {68.543014526367, 58.066177368164}, + {8.019885, 50.375749}, + {43.49419, 44.131853}, + {37.907364, 59.150254}, + {9.02711, 48.787483}, + {-75.849609, 6.599236}, + {-79.466171264648, 9.0163421630859}, + {10.087392, 53.571063}, + {11.255084, 50.967285}, + {8.480865, 50.597204}, + {16.125284, 47.616272}, + {14.942092895508, 55.06965637207}, + {8.6167144775391, 53.574142456055}, + {9.060631, 48.850322}, + {-1.122322, 52.947693}, + {5.9278106689453, 51.00471496582}, + {-82.724206, 38.514633}, + {-0.826028, 38.559953}, + {37.830391, 55.7127}, + {7.860718, 48.03566}, + {102.154305, 12.601063}, + {37.713369, 55.777304}, + {10.414453, 53.80667}, + {41.855762, 53.438099}, + {-0.32341003417969, 51.743545532227}, + {-1.687088, 54.933014}, + {-46.698324, -23.730157}, + {-91.152877807617, 30.53581237793}, + {-118.246536, 34.024658}, + {8.9037322998047, 53.041305541992}, + {-61.371689, 15.302239}, + {-63.027877807617, -9.8993682861328}, + {103.790779, 1.56977}, + {11.772537231445, 45.102310180664}, + {57.132339477539, 50.307083129883}, + {19.173188, 50.067587}, + {72.353462, 40.758073}, + {37.674179, 55.572281}, + {131.39579772949, 42.866592407227}, + {-8.744897, 38.55722}, + {55.304489, 25.24413}, + {19.326075, 51.732355}, + {45.708275, 43.302612}, + {-2.106566, 51.89236}, + {14.439926, 46.639938}, + {-74.045792, 4.740306}, + {-99.04655456543, 19.564590454102}, + {6.960816, 51.67579}, + {37.378937, 55.92399}, + {9.446308, 54.796053}, + {8.453223, 49.975655}, + {-79.783401489258, 43.25798034668}, + {12.027969360352, 55.966415405273}, + {-75.903061, 40.38111}, + {17.981752, 59.668404}, + {2.783575, 48.399754}, + {5.197906, 51.608963}, + {174.810104, -41.219559}, + {13.57398, 49.470796}, + {76.914597, 43.232231}, + {39.858633, 44.78119}, + {87.270584106445, 53.515090942383}, + {9.4297027587891, 53.254165649414}, + {-37.36288, -5.137631}, + {30.752146, 46.45064}, + {9.367552, 49.137353}, + {49.312999, 55.798163}, + {37.223634, 55.703483}, + {10.165765, 48.885606}, + {106.818971, -6.159737}, + {8.771407, 47.851453}, + {12.878037, 49.490891}, + {7.519004, 51.359387}, + {7.8806304931641, 47.436904907227}, + {13.270232, 52.536823}, + {30.302216, 59.885788}, + {77.615747, 12.935114}, + {16.412892, 48.177567}, + {2.686551, 50.450833}, + {86.086807, 55.354614}, + {128.16444396973, 51.346664428711}, + {57.151566, 65.13382}, + {6.9701385498047, 51.139297485352}, + {7.027822, 50.771256}, + {7.6416778564453, 51.335678100586}, + {37.480373, 55.683002}, + {10.149307250977, 54.263534545898}, + {13.573093, 48.18449}, + {38.149337768555, 55.745315551758}, + {37.559634, 55.565477}, + {50.076183, 53.116373}, + {-77.106857299805, 40.780563354492}, + {-47.420268, -22.540288}, + {-1.5483856201172, 50.767135620117}, + {6.084963, 51.394727}, + {-108.31489562988, 53.041305541992}, + {72.849655151367, 40.547103881836}, + {69.263992, 41.322556}, + {35.020196, 48.43568}, + {45.563736, 43.141884}, + {41.769332885742, 57.121353149414}, + {12.330978, 53.766193}, + {12.489395141602, 41.884689331055}, + {8.2569122314453, 52.676010131836}, + {28.296431, -25.798646}, + {10.36491394043, 55.393753051758}, + {-73.827438354492, 40.714645385742}, + {37.660337, 55.640726}, + {-2.133961, 57.132889}, + {41.299018, 56.343596}, + {9.7112274169922, 53.745803833008}, + {-1.4577484130859, 54.90348815918}, + {14.284286499023, 53.456039428711}, + {-125.30250549316, 49.742660522461}, + {5.075218, 52.112834}, + {35.064926, 32.844281}, + {-80.330429, 43.408846}, + {-43.239214, -22.927067}, + {27.538391, 53.888805}, + {-1.721478, 53.793811}, + {-98.228741, 19.01675}, + {35.013455, 32.800574}, + {20.808243, 52.16185}, + {39.824752807617, 59.197769165039}, + {16.031112670898, 47.377853393555}, + {19.195633, 50.115738}, + {-79.73877, 8.898926}, + {-76.522219, 39.433928}, + {36.127167, 52.980194}, + {37.735917, 55.81398}, + {104.300043, 52.279057}, + {-34.925194, -8.198547}, + {37.247953, 55.961242}, + {139.686718, 35.574599}, + {36.541416, 50.689253}, + {7.836685, 48.009339}, + {108.54148864746, 35.07453918457}, + {17.170944213867, 47.92854309082}, + {50.621566772461, 56.525344848633}, + {8.0962371826172, 53.578262329102}, + {8.990249, 45.528031}, + {30.539031, 50.428448}, + {83.002395629883, 54.983139038086}, + {9.299054, 49.15751}, + {-88.134384155273, 41.934127807617}, + {8.635927, 47.420109}, + {-83.179168, 43.015968}, + {31.006851196289, 52.441177368164}, + {127.02461242676, 37.602767944336}, + {3.870519, 43.606949}, + {80.238647, 7.627258}, + {-45.265357, -21.677211}, + {2.352627, 48.883973}, + {20.392411, 47.884323}, + {68.24526, 43.300552}, + {34.771594, 31.810183}, + {83.86344909668, 55.17951965332}, + {4.365768, 51.178513}, + {-120.822636, 38.707287}, + {8.324661, 49.441452}, + {24.136115, 45.788552}, + {7.45167, 51.27957}, + {-73.590409, 45.465408}, + {46.864242553711, 43.351364135742}, + {31.232072, 59.894486}, + {1.407821, 43.58551}, + {7.23638, 50.745811}, + {10.118122, 53.578883}, + {-89.309235, 48.363876}, + {-75.305775, 40.136774}, + {12.51621, 51.074052}, + {9.12941, 45.487747}, + {30.298982, 59.922992}, + {-77.089691, 38.802109}, + {11.54182434082, 45.545883178711}, + {12.219543, 51.838532}, + {10.33186, 53.320093}, + {27.51195, 53.838064}, + {-69.287796, 10.081218}, + {43.222274780273, 50.073623657227}, + {-86.873703, 21.040878}, + {-56.117164, -15.589735}, + {43.994064331055, 56.306991577148}, + {18.82438659668, -34.084396362305}, + {85.066631, 56.518419}, + {13.713551, 51.411601}, + {13.238754, -8.823624}, + {15.608507, 48.287606}, + {28.425064086914, -28.290481567383}, + {-2.075043, 51.900787}, + {83.728657, 53.269078}, + {56.081771850586, 56.51985168457}, + {38.373184, 56.006824}, + {-46.529451, -23.540358}, + {9.297742, 45.556121}, + {-47.223129, -22.878342}, + {0.334671, 51.422745}, + {19.073332, 47.513072}, + {129.7533416748, 62.041854858398}, + {0.564194, 51.556778}, + {27.496994, 53.935593}, + {80.2565, 12.97348}, + {39.103906, 45.009057}, + {100.227127, 13.766556}, + {-84.576187133789, 33.951187133789}, + {61.449966, 55.17128}, + {2.362682, 48.840278}, + {11.603178, 48.083361}, + {-96.35627746582, 42.434005737305}, + {34.384944, 51.331253}, + {28.272993, -25.770232}, + {15.220758, 45.268311}, + {-58.393020629883, -34.604873657227}, + {55.263632, 25.229416}, + {8.4203338623047, 45.794448852539}, + {-50.679921, -21.807177}, + {8.419595, 49.985201}, + {7.669373, 47.529144}, + {75.86579, 31.581927}, + {40.627668, 64.598008}, + {78.504868, 17.43576}, + {86.950607299805, 55.005111694336}, + {27.523703, -32.881803}, + {-80.819552, 42.808229}, + {1.703568, 41.350937}, + {-57.634964, -25.285378}, + {37.768936157227, 44.695816040039}, + {24.047287, 49.795456}, + {-117.891669, 33.744493}, + {76.955795, 52.296524}, + {-7.47345, 40.082932}, + {48.177108764648, 42.109909057617}, + {30.195751, 49.760342}, + {44.765853881836, 43.223648071289}, + {18.456737, 48.353479}, + {-118.13804626465, 33.804244995117}, + {-104.980368, 40.228545}, + {-118.054374, 34.117406}, + {-46.886215209961, -22.963485717773}, + {-74.183120727539, 40.68717956543}, + {36.641464233398, 55.180892944336}, + {36.60026550293, 55.11360168457}, + {2.421241, 48.940551}, + {90.404434204102, 23.717422485352}, + {16.031358, 45.798814}, + {47.504196166992, 42.966842651367}, + {14.195904, 50.500901}, + {-9.037726, 38.576039}, + {-3.894017, 40.497119}, + {-77.026307, -12.091141}, + {16.179428, 47.835159}, + {35.046043, 32.040939}, + {-46.523042, -23.665862}, + {92.931976, 56.073826}, + {60.001422, 56.885079}, + {12.365798950195, 58.295516967773}, + {144.966455, -37.807495}, + {37.565613, 55.727692}, + {120.61408996582, 24.232406616211}, + {-76.463241, 39.369278}, + {61.331815, 55.173402}, + {6.564331, 53.215714}, + {106.927048, -6.216202}, + {27.44321, 53.859542}, + {9.021378, 55.884018}, + {-92.964248657227, 18.021011352539}, + {106.758413, -6.176545}, + {28.801071, 47.066666}, + {42.943349, 17.236354}, + {34.849236, 32.288132}, + {4.6437835693359, 51.83967590332}, + {-85.736618041992, 41.772079467773}, + {37.174301, 55.979462}, + {92.83335, 56.024526}, + {16.128616, 58.599701}, + {26.102487, 44.425492}, + {-99.005903, 19.61405}, + {-74.41520690918, 40.15983581543}, + {-51.20246887207, -29.917831420898}, + {76.374893188477, 31.384506225586}, + {39.03511, 45.10849}, + {42.734756469727, 43.930892944336}, + {9.857486, 50.503464}, + {41.973953, 44.079208}, + {49.950714, 40.412521}, + {30.318832397461, -24.04426574707}, + {37.613879, 55.767663}, + {-66.160812, 45.244309}, + {-0.521622, 47.50145}, + {8.3118438720703, 47.060623168945}, + {-76.595078, 38.779221}, + {18.625211, 54.252661}, + {-106.741104, 52.122116}, + {24.219589, 56.944427}, + {19.87241, 50.046138}, + {53.16492, 56.780571}, + {9.377792, 54.893875}, + {37.609863, 55.742111}, + {24.480588, 60.121173}, + {5.4045867919922, 43.284072875977}, + {37.435226, 55.859756}, + {30.686421, 46.427537}, + {47.513809, 42.960663}, + {-48.5399, -6.415652}, + {-43.211288452148, -22.898941040039}, + {30.549545288086, 50.419692993164}, + {123.30217, 9.330551}, + {151.13273620605, -33.857803344727}, + {17.28630065918, 60.733108520508}, + {16.346249, 48.191457}, + {18.598844, 53.014244}, + {25.378529, 47.344636}, + {37.568435668945, 55.753555297852}, + {110.49293518066, 1.4591217041016}, + {-75.831909, 45.314484}, + {0.148659, 52.258916}, + {135.113983, 48.487473}, + {71.414566040039, 51.176376342773}, + {32.032699584961, 54.782638549805}, + {63.801040649414, 56.747817993164}, + {28.376434, 47.938401}, + {26.205336, 47.688655}, + {30.520733, 56.311806}, + {69.641647338867, 40.287551879883}, + {135.11261, 48.394775}, + {13.551636, 46.606064}, + {-52.212387, -3.205673}, + {65.470962524414, 44.849624633789}, + {-79.894638061523, -2.2405242919922}, + {28.129022, -25.965108}, + {28.13117980957, -25.972366333008}, + {12.272127, 45.167484}, + {153.256272, -27.765149}, + {9.722814, 48.33046}, + {11.173239, 49.199513}, + {69.633407592773, 40.284805297852}, + {7.5249481201172, 52.292861938477}, + {-3.606119, 37.172676}, + {2.883788, 49.034045}, + {66.547622680664, 56.506118774414}, + {-56.157385, -34.859822}, + {29.985417, -22.22387}, + {52.412338256836, 55.76042175293}, + {-49.286728, -25.396957}, + {15.244896, 38.253748}, + {-109.835419, 32.269801}, + {49.289474487305, 53.499984741211}, + {39.846725, 57.607498}, + {22.784957885742, 47.314682006836}, + {18.092497, 59.318539}, + {16.348342895508, 48.23616027832}, + {16.349716186523, 48.189468383789}, + {13.397249, 49.744243}, + {23.805313110352, 53.70735168457}, + {-79.626984, -1.061417}, + {27.624965, 53.87479}, + {80.636215209961, 7.3107147216797}, + {121.450902, 25.159975}, + {65.590782, 57.107792}, + {17.947803, 59.356506}, + {77.185134887695, 28.64616394043}, + {-8.9685, 38.722736}, + {106.854511, -6.302556}, + {87.300577, 51.785087}, + {-79.662551879883, 43.036880493164}, + {39.054336547852, 44.944381713867}, + {106.164009, -6.103242}, + {-112.030712, 33.428916}, + {24.770369, 60.197382}, + {16.93219, 51.042259}, + {74.194578, 32.128908}, + {63.630066, 53.226013}, + {7.614213, 50.591355}, + {28.647194, 53.34137}, + {15.628703, 50.834164}, + {33.367538452148, 35.191268920898}, + {-79.555438, 8.995241}, + {-3.634415, 40.449257}, + {-74.074477, 40.913004}, + {106.158537, -6.123473}, + {100.586472, 13.858109}, + {100.66017150879, 13.820114135742}, + {-77.005233764648, -12.187271118164}, + {34.125137, 44.976426}, + {2.813873, 41.96331}, + {2.745041, 41.828496}, + {-3.6865997314453, 40.422134399414}, + {27.460465, 53.896042}, + {-0.30281066894531, 49.169998168945}, + {138.794305, 35.146539}, + {104.825502, -3.405493}, + {-76.525955200195, 39.355087280273}, + {-70.605697631836, -33.421096801758}, + {-122.570245, 47.153811}, + {51.512832641602, 25.285720825195}, + {33.82099, 27.258122}, + {38.053207, 55.951996}, + {50.212326049805, 53.24592590332}, + {24.976147, 60.244805}, + {100.62721252441, 13.898391723633}, + {135.505433, 34.741828}, + {-2.5041961669922, 53.20198059082}, + {-89.658737182617, 20.952987670898}, + {3.174996, 48.167284}, + {39.714889526367, 47.228164672852}, + {37.76481628418, 55.441818237305}, + {35.755823, 52.53497}, + {15.105972, 37.515335}, + {-100.392838, 20.541916}, + {37.658161, 55.746218}, + {-46.772548, -23.663573}, + {34.33364, 53.287879}, + {5.978966, 52.388993}, + {37.337269, 56.192555}, + {37.499771, 47.598038}, + {-0.348254, 51.569575}, + {33.835830688477, 27.227554321289}, + {-76.536942, 3.265549}, + {44.556015, 40.217514}, + {16.77512, 47.772081}, + {16.835882, 39.217083}, + {153.046987, -27.427991}, + {4.76766, 50.88923}, + {-46.658004, -23.560759}, + {131.983429, 43.104446}, + {91.288833618164, 53.815841674805}, + {-47.479999, -5.50923}, + {-84.296035766602, 35.869674682617}, + {-83.183670043945, 35.824356079102}, + {44.520035, 40.175629}, + {8.553543, 47.414246}, + {7.5991058349609, 47.578353881836}, + {19.030533, 47.546265}, + {11.190948, 43.766098}, + {6.09109, 53.23363}, + {5.9153, 53.331322}, + {8.64624, 50.121002}, + {37.611237, 55.856552}, + {1.129256, 52.574387}, + {5.908851, 52.534571}, + {72.741165161133, 61.139602661133}, + {-3.572617, 40.409775}, + {8.6537933349609, 50.605087280273}, + {-122.295685, 49.113693}, + {56.831589, 59.415436}, + {74.606094360352, 42.861099243164}, + {5.745585, 52.685272}, + {10.927963, 49.452504}, + {5.0131988525391, 43.406295776367}, + {69.269485473633, 41.233749389648}, + {10.951309204102, 50.893478393555}, + {100.661587, 13.591572}, + {19.039993286133, 47.501449584961}, + {18.704084, 52.120806}, + {10.774154663086, 55.33332824707}, + {-49.487503, -19.532834}, + {60.577926635742, 56.821975708008}, + {-70.210189819336, 11.69563293457}, + {55.241776, 25.185699}, + {4.131546, 47.571542}, + {8.534323, 49.698374}, + {8.199235, 52.110214}, + {121.571549, 25.039078}, + {20.861132, 46.592551}, + {40.582809448242, 44.899063110352}, + {9.6961212158203, 52.217330932617}, + {16.287709, 48.120711}, + {17.100907, 50.938797}, + {12.96835, 52.534238}, + {9.915848, 51.657715}, + {5.456686, 51.478872}, + {-46.439324, -23.671353}, + {14.771378, 53.427003}, + {37.154155, 56.000133}, + {-49.866473, -22.226687}, + {-75.217014, 4.430992}, + {16.07966, 48.263471}, + {7.267222, 51.340714}, + {15.471369, 48.665318}, + {10.205612182617, 52.117080688477}, + {4.6437835693359, 52.041549682617}, + {37.972906, 55.937576}, + {18.776663, 44.862902}, + {101.42784118652, 3.0617523193359}, + {12.262816, 51.418904}, + {35.993122, 49.988027}, + {120.505085, 22.66634}, + {-44.126823, -19.926833}, + {2.076336, 48.82519}, + {-43.53401184082, -22.723159790039}, + {-1.412405, 53.406881}, + {35.012741088867, 31.77864074707}, + {139.71656799316, 35.562057495117}, + {19.450139, 51.783206}, + {19.445114135742, 51.917953491211}, + {6.987991, 51.098099}, + {15.539407, 60.081448}, + {24.879913, 44.866104}, + {-74.088033, 4.597951}, + {27.487417, -11.672821}, + {39.735603, 47.31514}, + {-3.099523, 38.566135}, + {27.256393432617, 38.628616333008}, + {-79.691325, 43.546379}, + {8.347552, 49.039536}, + {1.349087, 47.605305}, + {9.00238, 54.381866}, + {-3.319576, 38.968537}, + {88.122937, 21.938555}, + {-49.09094, -25.542314}, + {22.86735534668, 49.89372253418}, + {12.219724, 51.391405}, + {10.608921, 60.306475}, + {15.707472, 48.234056}, + {-0.45516, 51.751015}, + {38.984298706055, 45.047378540039}, + {151.222, -33.889114}, + {12.941321, 47.821005}, + {72.647781, 23.21188}, + {115.1717376709, -8.7032318115234}, + {37.67692565918, 55.893630981445}, + {4.7509002685547, 52.839431762695}, + {16.401186, 47.962561}, + {-48.1748, -15.730187}, + {-58.480405, -34.530065}, + {6.8616485595703, 51.538925170898}, + {16.340103149414, 48.064498901367}, + {92.761918, 55.988999}, + {33.095626831055, 68.948135375977}, + {23.390579223633, 46.938400268555}, + {26.110676, 44.388199}, + {23.786087, 46.522751}, + {17.089371, -22.57457}, + {153.157556, -27.650332}, + {7.128901, 46.815196}, + {-0.760188, 51.505122}, + {22.279586791992, 60.282669067383}, + {-76.487549, 3.010574}, + {8.714711, 50.455856}, + {-3.071365, 53.184128}, + {8.955423, 48.657388}, + {8.135447, 49.193101}, + {-99.219964, 19.311967}, + {16.884925, 52.358031}, + {25.903942, 48.325265}, + {62.302388, 37.335957}, + {13.299506, 52.504349}, + {9.701579, 45.686275}, + {-60.328547, -36.896182}, + {-97.871017456055, 30.019454956055}, + {-71.208572, 42.483444}, + {-2.090247, 52.512589}, + {-61.35745, 16.333799}, + {37.648086547852, 55.765914916992}, + {-40.260113, -20.174024}, + {-16.293411254883, 28.467636108398}, + {-115.44776916504, 32.636947631836}, + {-47.808295, -21.215158}, + {-42.663692, -21.506992}, + {-1.108316, 52.96837}, + {-74.055404663086, 4.6863555908203}, + {39.519882202148, 24.463119506836}, + {7.3834991455078, 51.308212280273}, + {41.027755737305, 56.964797973633}, + {-46.640396118164, -23.540267944336}, + {138.697754, -34.808938}, + {80.651321411133, 16.50764465332}, + {-42.793996, -5.059836}, + {1.276016, 49.33342}, + {-46.777035, -23.551667}, + {11.706494, 47.982226}, + {-116.91307067871, 32.510604858398}, + {121.00685119629, 14.453201293945}, + {-68.117294311523, 10.478897094727}, + {3.1565093994141, 36.71012878418}, + {72.814407, 18.967209}, + {-70.028915405273, 12.527847290039}, + {63.589553833008, 53.200607299805}, + {-3.666, 40.493362}, + {-87.859725952148, 41.835250854492}, + {-14.009628295898, 28.261642456055}, + {1.9068145751953, 48.796463012695}, + {37.771622, 55.427365}, + {30.26252746582, 59.936599731445}, + {17.062454223633, 61.672439575195}, + {37.432479858398, 37.094650268555}, + {35.069118, 32.922125}, + {37.840967, 55.73346}, + {2.2913360595703, 41.925888061523}, + {4.816341, 45.743643}, + {10.338821411133, 48.863754272461}, + {37.437973022461, 55.797500610352}, + {-96.271133422852, 19.258346557617}, + {-81.551514, 41.524887}, + {135.05012512207, 48.534164428711}, + {-43.031771, -22.967809}, + {-47.445322, -21.997036}, + {34.646759, 53.328552}, + {8.8954925537109, 47.545394897461}, + {22.952281, 45.879606}, + {13.016395, 51.810837}, + {-122.953491, 49.258575}, + {-0.73162, 51.945935}, + {-91.816153, 38.821699}, + {-84.304275512695, 33.767166137695}, + {2.0084381103516, 41.568832397461}, + {172.62474060059, -43.524398803711}, + {37.650833129883, 55.778274536133}, + {40.694067, 57.050218}, + {-47.896957397461, -22.017288208008}, + {37.541234, 55.633666}, + {38.771576, 55.394165}, + {115.995873, -32.012279}, + {9.1825103759766, 47.66487121582}, + {46.652756, 24.700012}, + {77.450180053711, 28.703842163086}, + {-47.780227661133, -15.591659545898}, + {69.350509643555, 41.339492797852}, + {-46.604690551758, -23.566360473633}, + {36.288528442383, 54.509353637695}, + {-81.328742, 43.01212}, + {131.89842224121, 43.030014038086}, + {5.5858612060547, 50.628433227539}, + {150.909313, -33.736906}, + {34.286270141602, 53.298110961914}, + {-3.811913, 40.268669}, + {151.057966, -34.033546}, + {-1.891132, 52.480471}, + {43.615494, 56.467667}, + {-71.539535522461, -32.970657348633}, + {32.82096862793, 61.576309204102}, + {73.295974731445, 55.032577514648}, + {16.579055786133, 38.94172668457}, + {8.765717, 52.196732}, + {-3.607866, 37.374344}, + {-41.99592590332, -22.839889526367}, + {-118.98948669434, 35.368423461914}, + {12.431168, 51.37825}, + {23.04313659668, 62.095413208008}, + {30.251541137695, 53.909225463867}, + {55.739822387695, 24.250259399414}, + {12.559432983398, 55.697250366211}, + {-3.253941, 51.422918}, + {-76.972274780273, 38.984298706055}, + {4.6987152099609, 50.878372192383}, + {4.8387908935547, 43.92951965332}, + {50.20133972168, 53.193740844727}, + {-0.54450988769531, 51.507339477539}, + {135.053599, 48.478273}, + {123.68202209473, -17.370071411133}, + {-5.83992, 43.367233}, + {38.849716186523, 55.852432250977}, + {73.216323852539, 49.978866577148}, + {79.418106079102, 13.63883972168}, + {151.199361, -33.884289}, + {5.681207, 45.154103}, + {5.8069610595703, 50.600967407227}, + {37.575302124023, 55.798873901367}, + {-117.012583, 32.798208}, + {-74.113083, 4.700775}, + {13.557225, 48.728533}, + {14.287033081055, 48.266372680664}, + {102.32048034668, 15.444717407227}, + {38.981552124023, 45.021286010742}, + {5.5666351318359, 45.404434204102}, + {-46.666765, -23.5953}, + {-99.203109741211, 19.313278198242}, + {79.516983032227, 13.653945922852}, + {92.870864868164, 56.011734008789}, + {9.544435, 51.155777}, + {22.974472045898, 40.630874633789}, + {174.78355407715, -41.313400268555}, + {4.105715, 50.491104}, + {-43.925399780273, -19.850234985352}, + {37.781122, 55.929251}, + {-73.053541, -36.84903}, + {169.994888, -43.459397}, + {72.871627807617, 21.169967651367}, + {6.065287, 50.776749}, + {145.020965, -37.727051}, + {11.439349, 48.796614}, + {-121.84730529785, 37.344589233398}, + {-2.758331, 54.272108}, + {56.249313354492, 57.990646362305}, + {6.8959808349609, 51.451034545898}, + {-0.492861, 51.473198}, + {-84.326248168945, 34.022598266602}, + {-3.861694, 40.354843}, + {6.535492, 51.598663}, + {55.908737182617, 54.786758422852}, + {12.1643, 55.448685}, + {76.93244934082, 43.268966674805}, + {51.31233215332, 43.757858276367}, + {-0.97742, 43.645491}, + {-4.4171905517578, 36.725234985352}, + {39.184113, 21.62384}, + {174.756294, -36.857128}, + {-56.452560424805, -34.746322631836}, + {94.396591186523, 51.720199584961}, + {-73.114698, 46.32454}, + {21.112289, 52.206001}, + {-0.121994, 51.612778}, + {150.74409484863, -33.783645629883}, + {40.143356323242, 44.542007446289}, + {-68.757882, -38.358818}, + {-58.399887084961, -34.599380493164}, + {107.61177062988, -6.9481658935547}, + {7.562027, 50.962418}, + {-49.275742, -16.659393}, + {-3.7593841552734, 40.290298461914}, + {15.785293579102, 50.629806518555}, + {28.769417, 55.47821}, + {19.93537902832, 50.043411254883}, + {-1.470795, 52.105408}, + {-35.725479125977, -9.6096038818359}, + {28.811413, 40.995949}, + {-46.369857788086, -23.50456237793}, + {30.352249, 59.991531}, + {-89.228897, 13.723297}, + {-61.495743, 10.645065}, + {27.598342895508, 53.928451538086}, + {28.974380493164, 41.023635864258}, + {-87.60093, 41.72384}, + {35.000381469727, 56.98127746582}, + {2.4190521240234, 48.793716430664}, + {-73.503341674805, 42.318649291992}, + {0.501938, 51.354904}, + {17.547225952148, 53.14567565918}, + {3.4325408935547, 50.589981079102}, + {-2.172316, 53.377305}, + {-6.137925, 53.370899}, + {44.040756225586, 9.5560455322266}, + {-0.085213, 51.500272}, + {-49.329211, -25.439599}, + {8.9682769775391, 50.287857055664}, + {36.071548461914, 52.983627319336}, + {30.410842895508, 50.447158813477}, + {-7.422988, 39.861152}, + {-48.786849975586, -28.401718139648}, + {-92.23503112793, 38.671188354492}, + {-6.115951, 41.136704}, + {105.62324523926, 21.325149536133}, + {37.554702758789, 55.774154663086}, + {7.1253204345703, 51.264266967773}, + {-68.115626, -16.513242}, + {44.522928, 48.711089}, + {-70.668869018555, -33.42658996582}, + {30.184779, 46.271499}, + {75.905227661133, 10.845565795898}, + {-115.06462097168, 36.159439086914}, + {-2.259407, 53.491402}, + {37.796401977539, 55.723342895508}, + {30.265274047852, 59.942092895508}, + {17.173690795898, 48.142776489258}, + {47.323296, 43.006044}, + {12.490083, 47.500764}, + {-66.914291381836, 10.495376586914}, + {-99.225082397461, 18.952102661133}, + {6.9261932373047, 51.213455200195}, + {37.985916, 55.553055}, + {10.95726, 44.151993}, + {-3.635045, 50.72763}, + {-8.638229, 41.045151}, + {10.018844604492, 53.373641967773}, + {8.1140899658203, 52.204971313477}, + {24.122543334961, 56.955184936523}, + {72.654647827148, 23.07746887207}, + {-77.11776, 38.85212}, + {-73.007583618164, -41.14860534668}, + {5.7492828369141, 49.517440795898}, + {-115.483475, 32.630768}, + {-74.08561706543, 40.402908325195}, + {25.896886, 62.202078}, + {0.25474548339844, 51.427688598633}, + {152.97157287598, -27.462387084961}, + {7.102661, 51.642265}, + {37.590408325195, 55.77278137207}, + {17.052841186523, 51.144790649414}, + {27.606033, 53.927078}, + {106.6820526123, 10.779647827148}, + {77.341003, 28.635407}, + {25.895462036133, 48.285598754883}, + {18.33137512207, 47.130661010742}, + {-111.72065734863, 33.300247192383}, + {-1.8807220458984, 39.009017944336}, + {-72.081985473633, -35.031967163086}, + {9.5464324951172, 56.33171081543}, + {18.041610717773, 59.333724975586}, + {35.34782409668, 52.34504699707}, + {8.6290740966797, 45.663986206055}, + {-84.168319702148, 33.708114624023}, + {1.1199188232422, 51.372756958008}, + {-103.209094, 20.503891}, + {-0.87409973144531, 41.652603149414}, + {10.862474, 49.69346}, + {-76.959915161133, -12.076034545898}, + {22.552412, 51.255293}, + {12.122269, 51.057129}, + {20.322559, 49.034684}, + {11.362031, 48.225177}, + {-74.138145, 4.560699}, + {7.454228, 51.448979}, + {13.417034, 52.647558}, + {13.371361, 50.895709}, + {-0.625076, 51.479874}, + {28.066924, -26.104781}, + {12.645054, 51.051509}, + {-86.950607299805, 20.495681762695}, + {4.903566, 52.420322}, + {8.042221, 52.266312}, + {-50.747389, -22.072974}, + {32.773361, 56.221848}, + {27.631301, -26.045151}, + {27.033234, 38.538666}, + {12.57225, 50.84404}, + {37.779922485352, 55.668411254883}, + {106.81663513184, -6.6089630126953}, + {140.171929, 39.663162}, + {9.872366, 53.822918}, + {-0.369169, 51.540387}, + {10.717849731445, 48.595962524414}, + {-0.378507, 51.490331}, + {17.967143, 59.397915}, + {13.121109008789, 56.210861206055}, + {8.823266, 52.216086}, + {34.10774230957, 44.921035766602}, + {19.107699, 51.966904}, + {-77.035995, -12.050491}, + {-80.526077, 8.4077}, + {120.867737, 24.637802}, + {8.6318206787109, 49.373245239258}, + {7.245484, 50.548783}, + {29.120636, 36.547394}, + {13.119361, 41.821104}, + {4.743176, 44.314384}, + {34.909744262695, 32.285385131836}, + {30.315811, 59.995926}, + {40.525955, 64.555939}, + {-1.829099, 52.49118}, + {26.414566040039, 40.144729614258}, + {-70.726547, -33.475342}, + {11.990358, 47.901093}, + {152.923021, -31.434706}, + {12.394442, 42.892489}, + {32.847967, 26.302882}, + {46.019898, 51.536865}, + {27.336289, 54.396825}, + {-1.567351, 54.801159}, + {-47.688323, -23.29635}, + {43.901138, 56.299668}, + {18.051265, 53.131216}, + {-1.7845916748047, 53.723831176758}, + {5.8138275146484, 51.854782104492}, + {-95.392275, 29.739825}, + {11.503372192383, 52.166519165039}, + {-63.01889, -38.850551}, + {33.347001, 47.84068}, + {49.280701, 53.556519}, + {13.188705, 41.699295}, + {5.76296, 52.91771}, + {1.1583709716797, 49.039535522461}, + {28.099578, -26.045104}, + {16.112137, 47.528572}, + {151.160889, -33.856087}, + {3.253277, 6.571099}, + {101.51023864746, 3.0699920654297}, + {15.660324, 48.194111}, + {10.760927, 59.920523}, + {9.634768, 47.225991}, + {39.296494, 45.719376}, + {15.548813, 38.186142}, + {66.459057, 44.32778}, + {10.523664, 50.927114}, + {16.340314, 48.213976}, + {28.223977, -25.753427}, + {6.152344, 50.840263}, + {-96.478500366211, 32.426834106445}, + {-62.103652954102, -31.171646118164}, + {65.504296, 57.16405}, + {-79.530715942383, 8.9723968505859}, + {15.217622, 52.312339}, + {-117.701622, 38.080016}, + {-79.527969360352, 9.0245819091797}, + {101.052475, 13.072128}, + {19.030228, 49.848404}, + {13.660947, 53.543055}, + {77.531656, 28.388855}, + {11.282597, 49.341284}, + {11.220474243164, 49.435043334961}, + {13.174667358398, 51.007461547852}, + {5.817009, 51.148912}, + {51.916580200195, 47.092208862305}, + {7.542801, 45.081162}, + {8.958009, 53.073103}, + {60.598103, 56.903}, + {121.468277, 30.904541}, + {4.6602630615234, 52.351913452148}, + {7.634479, 49.206258}, + {114.25987243652, 22.311172485352}, + {2.4492645263672, 6.3919830322266}, + {-77.507888, 38.742673}, + {6.686325, 43.342209}, + {-76.879031, 38.937211}, + {-98.30798, 19.061253}, + {101.734772, 56.307678}, + {70.890429, 40.534745}, + {38.044967651367, 55.71647644043}, + {39.709396362305, 47.22541809082}, + {26.222305297852, -29.080123901367}, + {9.307109, 54.069154}, + {-46.91798, -23.599499}, + {7.759393, 47.553539}, + {-43.38981628418, -23.000564575195}, + {1.430818, 47.499703}, + {6.260445, 49.639786}, + {-91.378915, 38.093463}, + {16.1975, 51.385293}, + {113.111975, 23.040216}, + {10.077896118164, 53.611221313477}, + {126.861371, 36.98534}, + {38.93898, 45.017853}, + {30.270767211914, 60.006637573242}, + {15.201853, 51.213663}, + {37.838722, 56.05518}, + {38.043594, 54.089127}, + {-58.505042, -34.84363}, + {16.395206, 50.634613}, + {7.107228, 43.612014}, + {10.678734, 51.098683}, + {110.50145, -7.009277}, + {-38.496092, -12.940522}, + {30.855004, 59.452613}, + {-46.673355102539, -23.640518188477}, + {40.945358276367, 57.762680053711}, + {106.82762145996, -6.2244415283203}, + {76.087865, 51.983191}, + {7.407188, 46.949387}, + {17.121821, 47.070001}, + {28.916597, 48.92587}, + {12.535668, 50.842105}, + {16.416733, 47.873886}, + {76.259472, 10.455028}, + {24.017974, 49.79344}, + {76.849358, 43.185198}, + {16.321066, 51.793084}, + {34.715286, 50.819183}, + {6.431808, 49.142189}, + {2.773152, 39.50602}, + {132.4600982666, 34.392013549805}, + {115.018616, 38.470688}, + {5.7891082763672, 50.966262817383}, + {88.382949829102, 26.693344116211}, + {69.608345, 40.299912}, + {2.351057, 48.866224}, + {131.91902160645, 43.818283081055}, + {66.57096862793, 39.076309204102}, + {131.919996, 43.112412}, + {139.48036193848, 35.560684204102}, + {55.119469, 51.762896}, + {37.542987, 55.420024}, + {4.20536, 45.499364}, + {4.8909759521484, 52.343673706055}, + {12.228175, 51.811033}, + {14.637919, 47.176036}, + {2.807005, 50.394289}, + {13.699722, 51.051865}, + {100.427953, 13.655072}, + {100.330484, 13.787253}, + {100.548571, 13.751828}, + {81.174545288086, 51.185989379883}, + {10.353783, 50.981333}, + {120.400681, 22.595535}, + {-86.921977, 40.461064}, + {43.46809387207, 44.150619506836}, + {16.380442, 48.235843}, + {9.163873, 45.434647}, + {16.845646, 40.989991}, + {6.97232, 43.549441}, + {14.574601, 50.262314}, + {17.130825, 49.472809}, + {-42.753296, -5.140572}, + {55.389633178711, 25.28434753418}, + {2.209811, 48.897721}, + {71.414154, 51.146851}, + {13.07579, 50.96283}, + {73.322067, 54.880142}, + {16.430153, 48.217173}, + {106.81572, -6.224442}, + {11.790522, 50.436586}, + {145.185089, -37.820792}, + {80.013746, 12.777802}, + {9.198747, 49.132336}, + {12.55256652832, 55.748062133789}, + {28.190231323242, -26.358261108398}, + {27.031173706055, 49.362258911133}, + {-79.879532, -2.160998}, + {-0.222816, 51.492577}, + {10.85719, 49.915598}, + {34.276657104492, 56.253433227539}, + {46.634163, 61.248726}, + {8.6386871337891, 49.643783569336}, + {-70.385284, -23.620605}, + {40.111770629883, 44.607925415039}, + {66.921157836914, 39.692916870117}, + {65.361092, 44.897691}, + {53.194016, 56.86647}, + {2.667814, 39.64015}, + {7.8270721435547, 47.33528137207}, + {8.72618, 50.591474}, + {37.615128, 55.682145}, + {81.08528137207, 20.48469543457}, + {-76.664383, 39.399307}, + {48.67561340332, 40.637741088867}, + {22.596029, -33.995582}, + {-101.368332, 20.654984}, + {19.291306, 49.084854}, + {30.277386, 60.011664}, + {-0.521328, 39.147416}, + {37.615768, 55.622935}, + {-101.38266, 20.674896}, + {37.704953, 55.73177}, + {110.735077, -7.562708}, + {88.099031, 22.284974}, + {34.43733215332, 47.495956420898}, + {1.152289, 52.035076}, + {37.514877319336, 56.339950561523}, + {3.258686, 49.82208}, + {38.854282, 44.843219}, + {44.51683, 48.764877}, + {-8.690871, 39.522767}, + {-47.458877563477, -23.424911499023}, + {7.804429, 48.054745}, + {18.933412, 50.253659}, + {-34.922103881836, -8.1882476806641}, + {39.664077758789, 47.217178344727}, + {19.630235, 48.801408}, + {9.460102, 48.806326}, + {-74.118576049805, 4.4927215576172}, + {61.307831, 55.192566}, + {18.910446, 49.07753}, + {60.593032836914, 41.55647277832}, + {137.9532623291, 36.153945922852}, + {140.67100524902, 40.824508666992}, + {34.290393, 53.254166}, + {29.107315, 40.997543}, + {-9.2800140380859, 38.717880249023}, + {99.054172, 18.748818}, + {15.292323, 48.817563}, + {60.87593, 56.693867}, + {32.211227416992, 58.846206665039}, + {26.280899, 50.630264}, + {37.620621, 55.696564}, + {-58.71727, -34.54216}, + {-38.481053, -13.000967}, + {22.878771, 62.771673}, + {-4.952518, 36.504473}, + {138.865128, 35.124899}, + {8.776474, 53.06694}, + {10.455551147461, 52.312088012695}, + {30.23259, 50.447708}, + {-80.014521, -2.071762}, + {15.800142, 51.669388}, + {76.397324, 10.977859}, + {74.836735, 12.88465}, + {75.344924926758, 63.115768432617}, + {16.408767700195, 48.186721801758}, + {-0.133524, 38.918295}, + {42.328262329102, 44.146499633789}, + {-71.629314, 10.682659}, + {19.074106, 50.295543}, + {113.096695, 23.036811}, + {7.113022, 43.572358}, + {78.385591, 29.632473}, + {-9.085178, 38.853664}, + {173.601645, -41.708684}, + {14.287948, 40.934372}, + {6.030807, 51.191857}, + {10.952683, 50.272293}, + {10.109481811523, 52.638931274414}, + {16.341993, 48.176984}, + {-51.673338, -22.741655}, + {-106.090851, 28.672256}, + {10.025031, 53.447925}, + {37.926391, 55.823498}, + {23.82311, 54.932536}, + {12.799075, 55.962811}, + {17.794621, 68.665413}, + {14.377487, 68.123626}, + {-99.23801, 19.329}, + {11.075144, 49.730776}, + {-8.880386, 38.821793}, + {-2.525245, 53.411745}, + {2.435532, 48.88092}, + {30.826950073242, 50.572128295898}, + {-7.4947357177734, 54.84992980957}, + {56.055679321289, 54.902114868164}, + {13.251716, 52.741061}, + {13.791964, 52.599106}, + {37.968063354492, 59.116744995117}, + {77.593887, 13.067411}, + {30.17974, 49.622143}, + {60.60759, 56.83873}, + {-43.21403503418, -22.909927368164}, + {4.4199371337891, 50.460891723633}, + {9.981081, 53.41014}, + {121.448794, 24.987023}, + {6.83281, 50.769196}, + {50.105834, 53.134689}, + {15.974633, 51.225821}, + {7.4040985107422, 51.468887329102}, + {146.94007873535, -36.031723022461}, + {90.405807495117, 23.78059387207}, + {88.218154907227, 69.343643188477}, + {121.51496887207, 25.048141479492}, + {8.515418, 47.378573}, + {-46.692611, -23.65467}, + {40.34797668457, 56.106491088867}, + {69.570923, 42.298737}, + {35.088272094727, 32.83332824707}, + {113.07931, 22.960209}, + {25.169935, 45.375123}, + {114.21180725098, 22.377090454102}, + {8.919367, 48.770582}, + {-7.996445, 31.681366}, + {26.062637, 44.453751}, + {4.834475, 52.370355}, + {9.610464, 48.851953}, + {61.402588, 55.187759}, + {12.171066, 51.32579}, + {37.826943, 56.034569}, + {12.085646, 54.023209}, + {103.637924, 52.756729}, + {113.820969, 22.675919}, + {101.607742, 3.058319}, + {18.437844, 53.424042}, + {-52.556461, -25.971717}, + {-43.211311, -22.893498}, + {121.44081115723, 24.969863891602}, + {-3.707047, 40.467453}, + {8.6428070068359, 44.392318725586}, + {6.813229, 51.552126}, + {7.084604, 50.722922}, + {45.085830688477, 54.09049987793}, + {9.481484, 51.343598}, + {37.716751098633, 55.649185180664}, + {10.300573, 44.849065}, + {6.506653, 53.213654}, + {47.486343, 42.976456}, + {-3.621027, 48.252299}, + {7.035113, 43.624872}, + {2.333221, 48.87323}, + {2.3860931396484, 48.855514526367}, + {-99.093246459961, 19.399795532227}, + {24.737091, 59.444275}, + {30.354537963867, 53.939437866211}, + {12.292803, 51.383215}, + {17.900436, 40.65477}, + {9.074021, 49.210053}, + {13.384780883789, 52.452163696289}, + {-2.785562, 48.18842}, + {10.989597, 49.563865}, + {-79.823226928711, -2.1800994873047}, + {-99.079513549805, 19.410781860352}, + {7.088068, 50.736194}, + {6.3040924072266, 4.9294281005859}, + {152.976865, -27.281023}, + {-118.365991, 34.095903}, + {139.716293, 35.569968}, + {-21.251596, 64.219682}, + {-117.28523254395, 33.117599487305}, + {-77.020294, -12.081528}, + {-7.956162, 12.679596}, + {103.8516998291, 1.2902069091797}, + {2.445145, 41.55613}, + {27.843021, -26.593094}, + {12.531967163086, 41.571578979492}, + {-47.720627, -23.106583}, + {17.939901, 50.589449}, + {5.878162, 51.940091}, + {14.629621, 50.136294}, + {9.327069, 56.44889}, + {85.151596069336, 25.596084594727}, + {9.208658, 49.14017}, + {29.710941, 60.200272}, + {8.311809, 49.506102}, + {153.013639, -27.311614}, + {139.572961, 35.593839}, + {50.143184, 53.213845}, + {2.062118, 48.89126}, + {3.896023, 43.592749}, + {28.273367, -26.235678}, + {26.096735, 44.456263}, + {-0.068667, 38.658535}, + {3.990896, 43.653745}, + {37.795259, 55.441469}, + {19.13269, 50.300217}, + {38.562948, 55.422592}, + {28.218821, -25.748395}, + {8.874435, 48.517914}, + {0.33851623535156, 46.577224731445}, + {18.859997, 50.360078}, + {38.696365, 55.521469}, + {3.344376, 50.377396}, + {13.361435, 49.738693}, + {82.961196899414, 55.040817260742}, + {26.032791137695, -15.739974975586}, + {7.547201, 50.388376}, + {-49.001599, -26.475507}, + {14.569786, 50.117786}, + {2.163435, 48.880302}, + {9.57081, 49.793129}, + {127.00813293457, 37.528610229492}, + {11.877365, 47.221756}, + {11.157852, 43.774063}, + {6.953242, 50.936661}, + {-82.547836303711, 35.559310913086}, + {-77.486573, 18.473511}, + {-80.394163, 27.42293}, + {-88.18994, 17.497663}, + {7.2969818115234, 48.075485229492}, + {104.783063, 16.600564}, + {-91.511306762695, 14.873428344727}, + {24.125289916992, 56.952438354492}, + {37.720521, 55.606539}, + {23.373376, 42.736177}, + {105.27031, 16.21376}, + {114.2227935791, 22.312545776367}, + {28.47167, -26.246638}, + {1.176756, 45.152045}, + {103.746429, 1.396742}, + {9.492542, 47.655812}, + {-103.404361, 20.631416}, + {105.309928, 16.169867}, + {11.136703491211, 42.703170776367}, + {28.581619262695, -20.15510559082}, + {7.0552825927734, 52.232437133789}, + {9.325965, 47.115373}, + {8.962009, 53.075511}, + {77.032242, 28.609085}, + {7.339096, 47.761459}, + {26.083014, 44.401169}, + {18.890311, 51.342602}, + {38.277969, 37.761154}, + {6.642603, 51.112311}, + {13.18633, 55.692177}, + {-106.00502, 28.646622}, + {-60.002243, -3.114487}, + {17.93849, 59.359069}, + {-87.67618, 41.926003}, + {140.400231, 36.55078}, + {19.099328, 50.777376}, + {11.676406860352, 53.884506225586}, + {8.961386, 55.110174}, + {10.60112, 60.630112}, + {7.287743, 47.353009}, + {8.617818, 48.187662}, + {14.283289, 46.532416}, + {7.382179, 47.283405}, + {-7.432846, 41.946671}, + {12.201004, 52.572329}, + {2.331778, 48.880182}, + {12.397384643555, 48.996963500977}, + {16.38354, 48.207277}, + {67.105037, 36.699615}, + {4.99878, 47.1698}, + {8.179338, 51.821389}, + {-0.16273498535156, 51.405715942383}, + {-5.462721, 37.177963}, + {78.870223, 17.258}, + {5.455275, 43.304298}, + {8.287786, 47.06398}, + {7.14559, 43.647792}, + {122.94456481934, 10.653305053711}, + {5.404587, 51.471854}, + {8.104306, 51.392499}, + {20.96986, 52.31817}, + {9.128807, 51.980619}, + {-3.715314, 40.467203}, + {21.325967, 45.821692}, + {125.602815, 7.059648}, + {26.26145, 47.676777}, + {7.082061, 51.028748}, + {20.46859, 52.111837}, + {-3.700848, 40.418186}, + {-63.565075, 8.08829}, + {37.579422, 55.653763}, + {-97.302239, 37.678652}, + {28.09756, -14.699348}, + {6.090638, 49.61816}, + {25.286751, 54.678612}, + {9.897308, 45.618462}, + {12.5457, 41.861755}, + {39.687881, 47.250137}, + {16.712311, 51.927727}, + {-2.207794, 53.01178}, + {21.222152709961, 45.769729614258}, + {32.807236, 39.961395}, + {9.75208, 52.560139}, + {-34.953919, -8.136169}, + {17.919387817383, 59.390029907227}, + {26.081021, 44.404129}, + {-46.563653, -23.608043}, + {26.739575, 47.148871}, + {-1.7173004150391, 48.155136108398}, + {19.769372, 50.37599}, + {-6.318532, 53.368502}, + {10.623676, 44.679176}, + {72.646408081055, 23.032150268555}, + {-46.240082, -23.31871}, + {100.443535, 13.687592}, + {100.59902, 13.787688}, + {-35.762558, -9.666105}, + {-6.017913, 35.415852}, + {7.257843, 43.717346}, + {25.423638, 36.434097}, + {8.778379, 52.141124}, + {106.738014, -6.160927}, + {-0.198441, 51.471176}, + {55.687637329102, 54.567031860352}, + {-61.413468, 10.550314}, + {-97.613188, 51.098786}, + {9.1097259521484, 53.064651489258}, + {28.09957, -26.349249}, + {26.782655, -28.148252}, + {4.434769, 51.265091}, + {9.4393157958984, 54.782638549805}, + {10.020544, 49.183781}, + {9.5642852783203, 53.313217163086}, + {-2.037157, 52.59003}, + {8.9270782470703, 45.970230102539}, + {8.620149, 50.378494}, + {-98.994369506836, 19.267959594727}, + {20.814035, 52.094952}, + {17.998581, 59.365768}, + {10.10994, 53.579636}, + {9.256404, 48.795957}, + {28.073364, -26.002304}, + {39.303999, 45.060013}, + {47.808116, 56.255581}, + {40.87532043457, 45.486831665039}, + {21.008606, 52.251663}, + {-72.479946, -37.926865}, + {-99.175643920898, 19.368209838867}, + {104.040625, 1.148562}, + {16.04934, 45.835398}, + {44.59831237793, 43.078079223633}, + {-35.007298, -8.038978}, + {13.257064819336, 52.516708374023}, + {2.657318, 49.014816}, + {-77.595748901367, -11.091384887695}, + {12.41249, 55.75383}, + {10.097352, 36.93203}, + {73.34477, 54.973097}, + {30.377492, 60.050452}, + {78.643989, 53.029635}, + {14.187677, 57.641703}, + {12.969851, 56.163286}, + {49.32312, 53.532257}, + {135.09462, 48.49379}, + {27.842728, -26.667629}, + {1.574936, 41.189346}, + {120.343277, 14.835526}, + {121.62757873535, 25.05500793457}, + {12.131594, 49.283357}, + {11.532106, 48.175736}, + {37.816177, 55.743668}, + {7.599452, 50.588615}, + {120.45341491699, 23.496322631836}, + {2.526855, 39.502946}, + {-61.550257, 10.704803}, + {-97.09098815918, 33.217849731445}, + {21.017984, 52.227941}, + {69.567406, 42.332564}, + {47.369613647461, 52.038803100586}, + {49.262008666992, 55.753555297852}, + {72.826538, 18.944092}, + {139.700854, 35.585129}, + {-1.1666107177734, 52.622451782227}, + {54.350357, 24.473953}, + {39.071617, 45.027924}, + {42.683702, 39.795187}, + {69.614182, 40.296478}, + {27.434857, 61.721012}, + {-0.147818, 51.535858}, + {30.327072143555, 60.053329467773}, + {20.481211, 54.682857}, + {100.769531, 13.703842}, + {28.044662475586, -26.130294799805}, + {17.154012, 51.15948}, + {-88.348901, 39.499184}, + {22.99528, 40.614924}, + {3.781357, 50.995789}, + {5.867576, 52.571222}, + {21.638355, 67.681191}, + {11.642074584961, 52.198104858398}, + {22.928346, 40.705315}, + {9.164283, 47.655633}, + {16.412234, 48.189954}, + {11.07038, 49.343142}, + {69.758651, 42.283768}, + {7.858661, 48.559571}, + {101.72996520996, 3.2059478759766}, + {-96.794357299805, 33.01872253418}, + {104.205093, 52.344589}, + {6.596947, 49.77356}, + {45.571975708008, 43.378829956055}, + {47.553634643555, 42.957229614258}, + {28.441544, -26.223679}, + {69.405098, 53.287125}, + {9.160641, 47.638232}, + {13.072044, 55.586805}, + {67.716513, 47.787035}, + {-122.063866, 37.338371}, + {65.499802, 44.850655}, + {108.079376, -2.691135}, + {30.59198, 59.742828}, + {27.579575, 53.91304}, + {52.415085, 55.760971}, + {30.333814, 60.043342}, + {12.504158, 41.899796}, + {16.600672, 50.775615}, + {77.182388305664, 31.076889038086}, + {18.711139, 50.259361}, + {18.81477355957, 50.316696166992}, + {-42.747116088867, -5.0667572021484}, + {34.437272, 53.86016}, + {10.942814, 51.575535}, + {40.75253, 56.115488}, + {40.005341, 43.415222}, + {14.318344, 51.783371}, + {67.247172, 37.261468}, + {-3.1990814208984, 42.615280151367}, + {9.50386, 48.593412}, + {-122.027973, 37.398148}, + {-111.801888, 33.065906}, + {119.523013, -5.123355}, + {80.186462, 13.099136}, + {1.478693, 48.47992}, + {101.487579, 3.072739}, + {37.681242, 54.213508}, + {10.520507, 49.996542}, + {18.877699, 50.184191}, + {11.164169, 45.415878}, + {13.033678, 45.830409}, + {-93.003617, 18.245316}, + {38.971939086914, 45.051498413086}, + {49.193344, 55.758133}, + {-16.074715, 14.160004}, + {175.475143, -37.885117}, + {-72.573623657227, 7.9286956787109}, + {77.297696, 28.545007}, + {30.259781, 55.172653}, + {39.688074, 64.485894}, + {15.72206, 45.662488}, + {27.4823, 53.86116}, + {-70.586815, -33.500061}, + {39.886555, 44.769977}, + {-4.8154449462891, 36.500015258789}, + {6.930345, 46.340987}, + {77.231116, 43.387496}, + {0.695572, 47.366524}, + {35.188522, 47.817917}, + {34.760725, 50.913024}, + {-68.557262, -31.511707}, + {7.97515, 51.699482}, + {121.297504, 24.98497}, + {78.320846557617, 25.87760925293}, + {18.556074, 50.268667}, + {51.556298, 53.446643}, + {60.553625, 56.856081}, + {13.558044, 52.40696}, + {5.722565, 52.245422}, + {15.560898, 58.422138}, + {44.525527954102, 48.715438842773}, + {16.463992, 48.154639}, + {4.6918487548828, 50.969009399414}, + {14.412827, 46.64438}, + {6.803444, 51.193954}, + {16.709862, 48.058662}, + {37.565002, 55.570908}, + {26.216131, 44.853577}, + {99.036942, 18.738899}, + {11.844383, 52.62305}, + {26.333541870117, 44.889450073242}, + {121.532447, 25.03341}, + {113.119248, 23.031985}, + {16.069248, 48.361553}, + {49.148026, 55.772782}, + {-2.1869659423828, 53.493118286133}, + {-3.292698, 55.987652}, + {96.249160766602, 56.216354370117}, + {121.6674041748, 25.07698059082}, + {106.310577, 9.917908}, + {-122.393136, 37.611113}, + {114.212081, 23.172226}, + {114.254629, 23.189829}, + {16.410141, 48.182144}, + {28.24482, -25.974426}, + {7.5441741943359, 45.058364868164}, + {9.067408, 45.512907}, + {-0.434378, 51.742646}, + {38.380806, 55.613549}, + {37.642365, 55.678024}, + {-68.082962036133, -16.53923034668}, + {-37.330856323242, -5.2191925048828}, + {34.94270324707, 29.552536010742}, + {18.667794, 50.294467}, + {9.9323272705078, 53.521957397461}, + {113.241405, 23.169136}, + {-68.64776, -32.999629}, + {11.768417, 55.217286}, + {30.292739868164, 59.959945678711}, + {7.7487945556641, 44.853744506836}, + {3.1839752197266, 50.176620483398}, + {69.343643, 42.375643}, + {2.681157, 51.085549}, + {8.607077, 52.973569}, + {9.999311, 52.426649}, + {12.170289, 50.253292}, + {-45.943004, -22.234873}, + {121.528217, 25.046687}, + {121.543808, 25.072174}, + {36.579666137695, 50.606460571289}, + {11.301309, 52.827098}, + {121.658225, 25.065416}, + {30.714038, -27.994736}, + {18.40009, 52.049869}, + {63.696670532227, 58.056564331055}, + {1.870041, 50.966263}, + {9.9295806884766, 53.528823852539}, + {11.575183, 48.111679}, + {38.239974975586, 55.570907592773}, + {127.08791, 37.588339}, + {19.674785, 49.702221}, + {120.984151, 24.918083}, + {37.305405, 55.830277}, + {-0.10917663574219, 38.535232543945}, + {4.471828, 51.185254}, + {100.568161, 13.773422}, + {76.903610229492, 43.318405151367}, + {70.061874389648, 53.447799682617}, + {114.223667, 22.313326}, + {38.157985, 54.372828}, + {47.555923, 42.95723}, + {8.981635, 48.367996}, + {21.259231567383, 45.735397338867}, + {-48.991745, -25.852879}, + {37.663192749023, 55.849685668945}, + {38.914261, 45.03221}, + {2.229339, 48.712004}, + {51.170883, 43.642044}, + {1.608986, 50.685113}, + {99.070685, 1.859632}, + {27.317371, 63.4525}, + {100.77140808105, 13.561935424805}, + {100.541382, 13.734283}, + {-0.095732, 51.537716}, + {-71.093543, 42.350884}, + {-39.297409057617, -6.4386749267578}, + {38.820877075195, 47.197952270508}, + {44.997711, 53.21022}, + {27.430801391602, 54.02458190918}, + {5.390396, 43.279953}, + {11.947767, 47.877876}, + {9.720797, 49.795539}, + {7.1060943603516, 50.720443725586}, + {26.872559, 51.884308}, + {24.296951293945, 35.181655883789}, + {4.788632, 46.630117}, + {55.086136, 51.800537}, + {49.069002, 55.840112}, + {4.448776, 51.171432}, + {9.190755, 47.757568}, + {37.31987, 44.881668}, + {9.040567, 47.144845}, + {16.492113, 48.240176}, + {37.903061, 56.066666}, + {103.90251159668, 52.582626342773}, + {9.6727752685547, 47.417678833008}, + {46.26823425293, 55.603866577148}, + {44.967727661133, 41.692428588867}, + {75.756088, 11.384445}, + {25.687472, 62.582458}, + {12.895167, 52.214928}, + {20.49651, 54.711256}, + {69.604568, 42.317276}, + {39.710312, 47.244644}, + {3.8884735107422, 43.605422973633}, + {-103.420468, 20.615194}, + {38.378677368164, 46.655502319336}, + {6.322702, 51.467686}, + {11.046863, 49.46087}, + {-6.364517, 39.502716}, + {28.382242, 57.757}, + {58.601760864258, 53.340682983398}, + {18.260617, 52.210804}, + {31.315402, 30.107126}, + {27.605896, 53.87764}, + {18.898723, 50.350611}, + {36.789094, 56.099625}, + {45.702438354492, 43.326644897461}, + {103.55369567871, -1.6225433349609}, + {-72.351624, -37.47267}, + {-76.269346, 36.285978}, + {9.290956, 48.822777}, + {-82.779922, 42.869341}, + {37.655411, 55.781937}, + {-61.538238, 10.668373}, + {44.906479, 53.224777}, + {-0.611629, 52.795658}, + {-66.903992, 10.50499}, + {38.99528503418, 45.044631958008}, + {37.530583, 55.549365}, + {24.230763, 56.913667}, + {-79.874447, -3.771076}, + {9.091706, 48.991665}, + {-40.260893, -20.162692}, + {2.147877, 48.810139}, + {16.395324, 48.24255}, + {113.143099, 23.057785}, + {9.8114776611328, 45.044631958008}, + {37.914505004883, 55.933456420898}, + {24.882294, 60.205627}, + {-74.055404663086, 4.7577667236328}, + {11.537594, 48.151888}, + {6.381683, 49.670563}, + {5.706848, 49.932449}, + {9.204483, 48.807914}, + {5.410766, 50.618134}, + {6.1132049560547, 49.531173706055}, + {3.794808, 51.139016}, + {-121.995621, 37.364731}, + {-34.878845, -7.949381}, + {61.99324, 46.239396}, + {138.768999, -34.708421}, + {-103.32847595215, 20.760726928711}, + {37.534671, 55.799008}, + {14.95079, 51.42952}, + {13.328648, 52.465897}, + {13.444457, 52.511}, + {13.40429, 52.504826}, + {13.33754, 52.526047}, + {9.567947, 55.785599}, + {-80.724792, 43.104172}, + {11.379781, 45.426569}, + {10.027084, 53.563431}, + {149.18443, -35.287558}, + {-93.099915, 16.751982}, + {5.482864, 51.469803}, + {22.551498, 40.1017}, + {37.431381, 55.824417}, + {78.443527, 17.419968}, + {117.33192443848, 49.64241027832}, + {-35.247231, -7.669487}, + {39.826126098633, 21.41716003418}, + {45.702438, 43.321381}, + {6.09932, 50.76149}, + {37.302498, 44.888969}, + {38.053971, 44.583664}, + {55.114288, 51.765175}, + {33.440322875977, 47.993087768555}, + {-59.976698, -2.997907}, + {10.423965454102, 52.099227905273}, + {43.980311, 53.167664}, + {40.100784301758, 44.59831237793}, + {37.778535, 44.710673}, + {104.108964, 52.193527}, + {-46.96724, -23.100128}, + {-74.156418, 4.615097}, + {65.624313, 57.11586}, + {24.080965, 56.947657}, + {5.7547760009766, 52.020950317383}, + {-88.031821, 41.93605}, + {9.9694061279297, 53.550796508789}, + {57.163925170898, 50.283737182617}, + {40.099411010742, 44.590072631836}, + {14.512252807617, 46.022415161133}, + {-80.561371, 43.572464}, + {112.879715, 22.878342}, + {18.510372, 50.394265}, + {19.962165, 49.761201}, + {2.420424, 46.960373}, + {7.654509, 51.187583}, + {18.659133, 50.294953}, + {-87.451587, 37.977383}, + {-115.875396, 30.497203}, + {-88.536404, 44.2051}, + {121.483383, 25.027542}, + {37.858553, 56.011255}, + {19.030691, 47.389522}, + {28.950364, 41.049863}, + {55.621558, -21.151677}, + {16.685257, 48.034287}, + {101.89613342285, 56.282272338867}, + {-2.0812225341797, 53.494491577148}, + {37.296524047852, 45.004806518555}, + {-122.379755, 47.859451}, + {-46.582718, -23.535233}, + {16.453985, 48.232312}, + {38.650838, 55.325532}, + {88.374916, 22.519715}, + {158.31504821777, 53.186874389648}, + {39.001073, 45.021973}, + {11.566793, 48.284787}, + {-79.330978, 44.863358}, + {95.715637, 56.215668}, + {6.7806243896484, 50.963516235352}, + {100.649054, 14.073454}, + {60.777512, 56.80687}, + {2.3888397216797, 48.826675415039}, + {37.709884643555, 55.78239440918}, + {-81.149828, 42.797276}, + {113.141951, 23.034772}, + {27.998428, -26.574326}, + {16.277755, 50.773123}, + {60.523338, 56.887207}, + {20.653323, 49.800053}, + {-45.917165, -20.764574}, + {-71.192778, 42.433319}, + {7.81929, 52.434311}, + {15.543594360352, 43.888320922852}, + {15.582986, 48.388538}, + {-98.907852, 19.291306}, + {87.166214, 53.757614}, + {50.151901, 53.194656}, + {15.874917, 50.876518}, + {69.626541, 42.305191}, + {88.549118041992, 23.140640258789}, + {-9.091263, 38.634567}, + {-79.044570922852, -8.1168365478516}, + {-82.448959350586, 8.4272003173828}, + {-99.052048, 19.287369}, + {103.845291, 2.323608}, + {13.333582, 52.505383}, + {-2.7074432373047, 53.69499206543}, + {37.332238, 44.938894}, + {113.077011, 23.029404}, + {13.26011, 52.381947}, + {114.27085876465, 22.316665649414}, + {0.32890319824219, 46.574478149414}, + {-63.898544311523, -8.7142181396484}, + {28.433303833008, -26.159133911133}, + {-109.602357, 40.381623}, + {72.834548950195, 19.191055297852}, + {24.511581, 46.865293}, + {9.5972442626953, 47.597579956055}, + {8.0619049072266, 45.55549621582}, + {113.11317443848, 23.028030395508}, + {28.258553, -26.118279}, + {12.110563, 51.396104}, + {33.432846, 51.86348}, + {35.091043, 48.54472}, + {16.244757, 39.338412}, + {14.094569, 50.234145}, + {15.451283, 49.926482}, + {12.5579, 50.190407}, + {13.311486, 49.547184}, + {15.467726, 49.901275}, + {16.486751, 48.143059}, + {16.65596, 48.733635}, + {14.540704, 50.077143}, + {17.283554, 49.595444}, + {13.290023803711, 49.396591186523}, + {14.569839, 49.003576}, + {14.485526, 50.083765}, + {20.996737, 48.654725}, + {14.964283, 50.472797}, + {17.144852, 48.17482}, + {17.454989, 48.57811}, + {16.981430053711, 48.804702758789}, + {12.522354, 50.101318}, + {13.74115, 50.52269}, + {15.414733, 49.674454}, + {14.450454711914, 50.177993774414}, + {17.148971557617, 49.635543823242}, + {17.456589, 49.43985}, + {13.860626, 50.459518}, + {13.671249, 49.777542}, + {16.401267, 48.193706}, + {7.36267, 47.259293}, + {17.121505737305, 48.100204467773}, + {4.823685, 50.50415}, + {113.05481, 23.67485}, + {8.6043548583984, 49.222183227539}, + {13.288238, 52.44223}, + {120.44105529785, 23.814926147461}, + {13.629398, 52.468987}, + {11.884479, 50.334789}, + {16.394424, 48.156204}, + {11.986770629883, 54.951553344727}, + {6.7943572998047, 52.732315063477}, + {-2.1938323974609, 51.010208129883}, + {-1.994855, 51.470264}, + {-0.114229, 51.002419}, + {136.192016, 35.149613}, + {37.71125793457, 55.603866577148}, + {13.236465454102, 48.67561340332}, + {10.206105, 52.623935}, + {-49.211805, -25.388248}, + {9.522873, 52.560563}, + {8.3406829833984, 49.760513305664}, + {-46.674888, -23.584022}, + {43.866043, 56.327286}, + {16.270981, 48.193131}, + {28.4284, -15.499827}, + {121.534882, 25.026855}, + {101.59950256348, 3.1029510498047}, + {120.683212, 24.377975}, + {113.294547, 23.106014}, + {98.968716, 18.803287}, + {-67.112732, -17.969513}, + {8.32913, 51.942172}, + {-46.58821105957, -23.67073059082}, + {-61.344581, 10.610017}, + {37.585615, 55.877782}, + {139.42543029785, 35.725479125977}, + {103.994522, 1.110306}, + {31.03624, -29.846146}, + {107.55271911621, -6.8492889404297}, + {39.756088, 57.802006}, + {-114.17060852051, 50.092849731445}, + {29.925878, 59.873313}, + {-117.789779, 33.998429}, + {126.923577, 37.492905}, + {43.843002319336, 40.812149047852}, + {101.147669, 13.53859}, + {5.4430389404297, 51.360397338867}, + {19.168847, 47.391055}, + {9.295295, 49.092042}, + {30.45845, 59.878464}, + {99.999647, 16.160292}, + {8.772143, 45.976815}, + {-93.103867, 16.750259}, + {46.124955, 42.94487}, + {28.196411, 59.383163}, + {65.543746948242, 44.813919067383}, + {34.659119, 31.79718}, + {72.355270385742, 40.801162719727}, + {34.857559, 32.090378}, + {8.676538, 49.40466}, + {61.705723, 57.582214}, + {70.424423217773, 48.571243286133}, + {55.954055786133, 54.726333618164}, + {28.13427, -26.39946}, + {52.31071472168, 55.884017944336}, + {-45.274265, -22.878931}, + {4.769253, 52.967894}, + {28.102894, -26.244096}, + {47.369339, 56.125168}, + {8.22015, 53.139021}, + {9.63521, 52.388553}, + {11.848721, 50.333064}, + {-1.310806, 52.567978}, + {-48.098957, -15.892785}, + {12.20018, 48.998887}, + {4.9129486083984, 46.288833618164}, + {-58.520737, -34.521446}, + {34.420853, 53.866196}, + {-45.960937, -22.405058}, + {48.648147583008, 40.626754760742}, + {39.723129272461, 47.20344543457}, + {-3.681597, 40.361612}, + {28.174095, -25.886652}, + {63.583374, 39.085236}, + {39.372940063477, 52.746047973633}, + {2.5453948974609, 48.848648071289}, + {-71.44889831543, 42.931137084961}, + {30.354996, 59.926071}, + {5.300217, 51.686897}, + {12.700193, 45.868493}, + {29.10758972168, 37.913131713867}, + {109.10453796387, 11.804122924805}, + {109.137497, 11.914902}, + {-79.867453, -6.767927}, + {2.085068, 49.067551}, + {14.482498, 35.849075}, + {19.028183, 47.491417}, + {34.735336303711, 31.834945678711}, + {103.882141, 1.111565}, + {37.401924, 55.641975}, + {21.785202026367, 50.686111450195}, + {98.70488, 3.538284}, + {-72.52034, 7.908096}, + {13.292482, 49.733967}, + {-63.088514, 18.037702}, + {23.687967, 56.981675}, + {14.934175, 51.050402}, + {44.595565795898, 43.506546020508}, + {48.370954, 55.856552}, + {120.846519, 24.67083}, + {77.3806, 16.221165}, + {-99.199092, 19.334488}, + {116.567688, 39.934616}, + {107.4634552002, -6.5746307373047}, + {30.870158, -30.065713}, + {27.581471, 53.916288}, + {-80.904203, -2.227184}, + {-85.407028198242, 32.617721557617}, + {58.521192, 55.018159}, + {107.07344055176, 16.936111450195}, + {60.562134, 56.816483}, + {26.742782592773, -26.851272583008}, + {-3.825447, 40.446709}, + {106.55982971191, 17.534866333008}, + {26.630597, -26.869109}, + {18.203652, 47.002537}, + {30.463027954102, 59.911880493164}, + {37.368965, 55.769863}, + {25.053844, 59.450831}, + {8.736291, 47.600851}, + {13.809022, 51.013483}, + {46.065674, 40.834122}, + {7.687726, 51.659129}, + {121.25679016113, 24.935531616211}, + {11.073595, 49.451523}, + {106.794205, -6.153946}, + {48.993529, 55.905077}, + {77.584763, 12.939442}, + {13.066177368164, 47.785720825195}, + {-58.452857, -34.565244}, + {-117.698834, 33.552682}, + {-79.043782, -8.137377}, + {-39.852325, -10.69072}, + {-60.672737, -33.009321}, + {-84.037607, 9.960168}, + {8.561867, 47.951395}, + {29.354638, 40.786057}, + {77.014389, 43.296432}, + {6.205903, 52.63052}, + {21.950455, 47.053757}, + {7.337415, 51.562276}, + {12.400131225586, 57.008743286133}, + {-1.357497, 50.942231}, + {-75.655288696289, 40.549850463867}, + {107.62413, -6.950455}, + {23.114744, 49.955129}, + {19.697006, 51.526568}, + {-122.105483, 37.392655}, + {18.626175, -34.054184}, + {69.642915, 42.325727}, + {-45.795689, -12.071686}, + {76.935195922852, 43.295059204102}, + {10.432205200195, 44.058609008789}, + {18.119187, 59.732682}, + {28.466262817383, -26.296463012695}, + {110.513535, -7.402039}, + {-88.073473, 41.811124}, + {96.154404, 16.822521}, + {38.17131, 54.983826}, + {16.244683, 47.841086}, + {-35.814859, -9.717435}, + {-75.479507, 10.373978}, + {71.269273, 51.217576}, + {39.787117, 54.622186}, + {110.470335, -7.768631}, + {13.152695, 38.179092}, + {39.667511, 47.28653}, + {30.306827, 59.886815}, + {11.507671, 55.942234}, + {-111.412697, 40.485306}, + {69.529637, 42.31924}, + {12.315489, 50.877008}, + {17.812099, 59.235277}, + {9.294362, 49.156229}, + {50.330429077148, 26.182479858398}, + {-0.547943, 51.49086}, + {4.345563, 47.149795}, + {-74.086905, 40.835366}, + {60.295028686523, 41.711654663086}, + {37.405798, 55.857926}, + {14.037781, 50.506897}, + {37.818242, 55.28032}, + {4.433325, 51.142998}, + {44.521133, 40.187302}, + {28.297212, -25.747669}, + {-60.81781, 11.158133}, + {-73.539577, 45.588667}, + {23.654251, 61.448593}, + {17.208023071289, 50.874252319336}, + {113.562515, 22.160934}, + {-43.048691, -22.965958}, + {-80.1849, 26.547265}, + {30.333862, 59.796982}, + {-87.197799682617, 14.070053100586}, + {82.84309387207, 54.96940612793}, + {26.233978, 50.62088}, + {-92.08201, 41.471395}, + {74.610214233398, 19.34211730957}, + {37.910385131836, 59.092025756836}, + {-8.5074, 41.538437}, + {-2.123271, 41.260692}, + {38.966445922852, 58.04557800293}, + {-67.582398, 10.146561}, + {-88.445356, 33.507432}, + {8.387375, 49.006577}, + {38.108138, 55.106737}, + {40.120406, 53.974969}, + {37.900314, 55.974198}, + {12.464556, 41.903557}, + {-78.40174, -0.214299}, + {99.167187, 3.354263}, + {50.191879, 26.296515}, + {6.834869, 52.031937}, + {128.080285, 37.943924}, + {114.188657, 22.383761}, + {78.52819, 54.791584}, + {-92.648391723633, 30.809097290039}, + {-79.352188110352, 44.635391235352}, + {51.188736, 35.733817}, + {-0.39207458496094, 39.467697143555}, + {-73.957901, 40.789719}, + {-35.283465, -5.921557}, + {55.917435, 54.578476}, + {-100.907364, 25.576401}, + {113.541704, 22.184455}, + {17.025214, 51.13538}, + {-3.336113, 40.545194}, + {16.914507, 51.108016}, + {37.366284, 55.949094}, + {8.153817, 45.331748}, + {51.41011, 35.761459}, + {13.899111, 50.995428}, + {53.256456, 56.870957}, + {-43.188459, -22.882378}, + {-64.87907409668, 46.129531860352}, + {36.571426391602, 50.566635131836}, + {-76.306228637695, 40.376815795898}, + {49.247185, 55.887593}, + {-46.87523, -23.597329}, + {21.905441, 55.080338}, + {-106.7603302002, 52.239303588867}, + {43.191057, 50.051619}, + {12.380399, 41.851578}, + {73.797775, 18.477768}, + {30.293467, 59.974406}, + {10.857925415039, 44.779586791992}, + {101.697534, 3.099888}, + {106.780849, -6.302477}, + {113.03077697754, 23.006057739258}, + {12.615967, 42.123184}, + {-121.556572, 37.031679}, + {-111.670813, 32.81341}, + {55.002365112305, 51.157150268555}, + {10.923843383789, 44.672470092773}, + {-0.272049, 51.40036}, + {30.321579, 59.963608}, + {37.319869995117, 44.897689819336}, + {-80.96685, 43.965529}, + {12.360134, 55.86977}, + {12.184525, 55.502243}, + {39.664764, 47.151947}, + {28.600806, 55.785706}, + {45.368271, 50.089645}, + {33.747940063477, -16.12174987793}, + {12.525759, 55.664536}, + {-117.872314, 33.661423}, + {79.883652, 6.868973}, + {-75.123364, 39.951146}, + {14.332084, 48.2663}, + {-73.386895, 45.757249}, + {5.6710052490234, 50.853652954102}, + {-58.42848, -34.580324}, + {76.939316, 43.248867}, + {140.56526184082, 39.320755004883}, + {76.823959, 8.686066}, + {23.993179, 60.178299}, + {16.354327, 48.192236}, + {65.66872, 57.057496}, + {12.507247924805, 53.093490600586}, + {69.496764, 41.967773}, + {0.007553, 51.529175}, + {92.856445, 55.988388}, + {-0.019587, 51.504827}, + {-3.0274200439453, 51.823196411133}, + {-1.624603, 42.847137}, + {-112.116577, 33.481522}, + {-43.666534, -15.350647}, + {8.150918, 49.064699}, + {60.524709, 56.866404}, + {-92.197447, 34.826554}, + {37.998597, 55.592208}, + {-111.782881, 33.338676}, + {77.351985, 28.662648}, + {101.740952, 3.092651}, + {48.230667114258, 54.321212768555}, + {27.972151, -25.902894}, + {-6.669388, 62.105026}, + {85.820663, 20.321136}, + {38.111801, 55.60112}, + {13.371109, 52.452779}, + {100.388781, 13.647648}, + {-75.290614, 41.967973}, + {-0.516281, 39.173965}, + {-77.018966674805, -12.126846313477}, + {-99.207229614258, 19.436874389648}, + {79.003372, 21.154175}, + {9.250145, 48.95628}, + {104.225235, 52.265396}, + {16.422500610352, 48.212814331055}, + {9.083976, 45.819855}, + {101.73523, 3.183517}, + {14.452086, 50.134048}, + {-90.532837, 14.544525}, + {49.205704, 55.806152}, + {9.959793, 51.532059}, + {14.495771, 50.121003}, + {-112.214035, 33.569962}, + {13.631651, 45.773823}, + {40.585904, 64.524423}, + {103.766774, 1.367329}, + {24.413681, 60.986481}, + {25.638444, 60.932188}, + {25.307205, 63.735398}, + {24.937057, 60.198465}, + {23.048779, 61.440792}, + {25.837784, 64.392537}, + {26.005651, 65.171922}, + {25.720196, 66.503163}, + {25.054938, 60.346827}, + {30.101063, 62.351427}, + {27.627267, 62.862855}, + {22.135612, 60.506959}, + {23.945226, 61.552452}, + {22.952128, 61.505901}, + {24.137878, 60.274887}, + {24.684894, 60.319937}, + {21.465913, 62.274971}, + {21.816316, 61.481347}, + {29.33074, 64.433105}, + {25.075505, 60.200572}, + {27.168503, 62.316666}, + {21.847946, 60.636531}, + {26.558804, 61.980948}, + {23.282292, 61.770364}, + {24.445853, 64.662094}, + {29.293439, 66.371799}, + {24.805554, 62.799655}, + {10.407266, 57.655978}, + {23.656306, 60.813104}, + {22.459487915039, 60.13298034668}, + {27.90708, 63.943132}, + {25.075355, 60.288527}, + {23.64418, 61.460495}, + {23.574196, 61.554296}, + {-74.340363, 5.009766}, + {24.528214, 64.079819}, + {22.389450073242, 62.740859985352}, + {-71.318435668945, 41.968460083008}, + {28.471093, 37.015189}, + {22.719039, 60.950433}, + {29.752408, -25.833384}, + {31.173383, -29.552807}, + {-99.278091, 19.384634}, + {30.979616, -29.910352}, + {24.467926, 61.191788}, + {25.039903, 60.22316}, + {77.254526, 28.569664}, + {0.063171, 46.741676}, + {20.601203, 49.912328}, + {-76.789627075195, 39.22737121582}, + {-2.753703, 55.603191}, + {12.836991, 38.057938}, + {44.513293, 48.70645}, + {-123.12858581543, 49.229049682617}, + {131.893387, 43.113327}, + {115.688292, -32.251053}, + {115.758982, -32.48279}, + {37.527236938477, 55.833206176758}, + {-3.017415, 53.632802}, + {5.649716, 50.655956}, + {6.017354, 50.82866}, + {7.000141, 49.704697}, + {9.5258331298828, 53.881759643555}, + {28.326487, -26.438984}, + {10.7968, 54.10767}, + {48.582229614258, 54.374771118164}, + {9.7016143798828, 53.460159301758}, + {3.726425, 36.743774}, + {19.313698, 50.295359}, + {104.29664611816, 52.272262573242}, + {9.81081, 51.306479}, + {-2.607193, 50.943309}, + {22.898083, 40.679455}, + {10.533828, 47.138214}, + {8.265152, 47.623673}, + {8.7306976318359, 51.746292114258}, + {21.706924438477, 47.946395874023}, + {9.785948, 53.43755}, + {10.375900268555, 53.813095092773}, + {30.432358, 39.818344}, + {11.826599, 51.638273}, + {34.832382, 32.169571}, + {-1.286617, 54.559322}, + {-2.759735, 53.850469}, + {106.697843, -6.099353}, + {6.244336, 51.371744}, + {7.13974, 50.443382}, + {37.735487, 55.653796}, + {100.583572, 13.853378}, + {112.665138, -7.266083}, + {19.237747, 54.0802}, + {13.422775, 58.375168}, + {-66.904953, 10.465164}, + {-82.600708, 32.473526}, + {5.4087066650391, 51.416702270508}, + {139.7110748291, 35.730972290039}, + {77.008667, 43.345871}, + {8.118723, 52.599117}, + {15.619125366211, 48.17985534668}, + {27.684402, 53.995285}, + {34.768545, 41.470954}, + {121.241684, 24.951668}, + {4.865569, 45.784493}, + {87.254301, 53.785041}, + {2.4684906005859, 48.96125793457}, + {16.049652, 38.584671}, + {8.409348, 50.254901}, + {-82.377548217773, 42.980575561523}, + {42.909164428711, 45.712051391602}, + {5.070878, 52.631378}, + {68.277969360352, 58.230972290039}, + {-79.750576, 43.608416}, + {-73.977642, 40.711959}, + {36.324652, 50.001914}, + {51.602096557617, 51.203842163086}, + {-0.097885, 51.257604}, + {46.475601196289, 56.048812866211}, + {5.593029, 50.594691}, + {19.028401, 49.855425}, + {-1.328944, 43.75481}, + {121.150497, 25.008865}, + {54.038314819336, 46.968612670898}, + {11.250485, 52.68645}, + {8.75679, 51.714535}, + {-77.025146, -12.095947}, + {6.694598, 50.894361}, + {-96.781997680664, 33.055801391602}, + {-74.176093, 4.697423}, + {-54.585674, -25.464467}, + {44.515914916992, 40.165328979492}, + {30.277634, 60.373306}, + {121.030884, 14.559631}, + {37.2926, 55.604063}, + {30.423438, 59.909375}, + {28.916702270508, 46.387710571289}, + {-74.0997, 4.731948}, + {12.01368, 51.358381}, + {-0.44117, 52.017861}, + {-113.70094299316, 53.554916381836}, + {13.375854, 49.727746}, + {37.676373, 55.89571}, + {-93.293381, 44.460983}, + {102.16529846191, 14.744338989258}, + {-64.78981, -23.797531}, + {72.988357543945, 21.701431274414}, + {75.218582, 14.988785}, + {13.23066, 52.653858}, + {8.913193, 50.133591}, + {65.731779, 38.931477}, + {10.225949, 43.892792}, + {-78.519275, 44.503558}, + {102.738307, 2.241028}, + {37.475248, 56.024486}, + {-57.84377, -34.471599}, + {23.408485, 38.820402}, + {-101.797268, 21.060114}, + {116.006149, -32.0327}, + {43.950577, 56.296005}, + {30.714385, 46.461868}, + {14.287033081055, 41.717147827148}, + {30.460758, 50.451573}, + {113.27507, 23.063889}, + {69.173355102539, 41.299667358398}, + {46.040267944336, 43.21403503418}, + {16.233262, 49.578368}, + {11.144257, 47.293396}, + {17.794607, 47.712049}, + {0.530671, 43.647678}, + {107.578223, 51.850466}, + {21.206875, 52.224197}, + {32.752304077148, 48.124923706055}, + {45.014763, 53.182068}, + {-79.977035, 39.580806}, + {123.432426, 7.823982}, + {30.559844, 50.396118}, + {10.257547, 50.330117}, + {19.798175, 50.084454}, + {12.137058, 47.838929}, + {-2.684097, 53.337937}, + {8.030316, 52.036057}, + {11.23420715332, 47.283096313477}, + {50.161514282227, 53.10173034668}, + {-47.94571, -1.999138}, + {76.99836730957, 43.356857299805}, + {25.45568, -33.945882}, + {29.222031, 53.194199}, + {37.357224, 55.8181}, + {-35.207226, -5.792294}, + {82.926865, 55.037613}, + {100.611245, 5.484991}, + {-79.525466, 43.639889}, + {14.414749145508, 50.076370239258}, + {38.987233, 51.729178}, + {122.369328, 11.706448}, + {121.210327, 24.962997}, + {-78.81592, 36.127396}, + {-80.347824, 25.86937}, + {36.062965, 56.01963}, + {32.900848, 24.106407}, + {9.159351, 48.832749}, + {19.877524, 49.888665}, + {7.4700164794922, 44.997940063477}, + {14.525985717773, 46.066360473633}, + {-70.137775, 8.764878}, + {6.986105, 50.814}, + {8.752668, 51.719651}, + {153.225489, -29.282134}, + {35.175098, 32.261818}, + {30.831346, -29.785173}, + {16.412231, 48.230794}, + {23.991047, 38.099213}, + {8.4876251220703, 44.308547973633}, + {-120.255898, 36.524253}, + {14.501266479492, 48.460006713867}, + {-46.60844, -23.598329}, + {34.765548706055, 31.609725952148}, + {11.385269165039, 44.476089477539}, + {-77.041969, -12.060242}, + {9.36729, 53.22768}, + {-1.1803436279297, 52.65266418457}, + {-2.096144, 57.137648}, + {26.803047, 45.171349}, + {0.848466, 51.17363}, + {14.774498, 48.998447}, + {9.969438, 53.541649}, + {5.3524017333984, 47.405319213867}, + {6.506925, 48.494396}, + {5.4869842529297, 50.660018920898}, + {26.873364, 46.209528}, + {84.271318, 49.722748}, + {8.522644, 50.478058}, + {37.880787, 55.711762}, + {58.29963684082, 55.787887573242}, + {100.58018, 14.41681}, + {-116.949806, 53.543243}, + {-64.300232, -33.112793}, + {121.065216, 14.644873}, + {-122.837266, 45.487663}, + {30.304413, 59.88533}, + {78.350283, 45.01233}, + {-80.270919799805, 25.771865844727}, + {-75.708847, 4.819059}, + {16.009236, 48.096106}, + {6.577377, 49.705925}, + {100.278625, 5.46524}, + {22.846129, 42.988965}, + {29.11108, -13.755627}, + {80.641708374023, 7.3546600341797}, + {60.622533, 56.839066}, + {53.297653, 56.897049}, + {103.904483, 1.29966}, + {31.296287, 30.103088}, + {15.974808, 47.088089}, + {-79.894638061523, -2.2460174560547}, + {-4.227333, 38.005142}, + {-78.687419, 42.949909}, + {-34.958176, -8.035751}, + {40.243982, 54.29562}, + {98.971024, 18.759842}, + {17.408516, 51.685868}, + {106.65321350098, -6.1324310302734}, + {38.665731, 55.849288}, + {15.905593, 51.1176}, + {77.229233, 28.58345}, + {113.130173, 22.970624}, + {28.904343, 41.072388}, + {76.896744, 43.2621}, + {39.631118774414, 43.668594360352}, + {-84.036484, 9.958776}, + {-87.671017, 41.854099}, + {12.207386, 56.064181}, + {101.61598205566, 3.1551361083984}, + {37.593154907227, 55.88264465332}, + {-121.819839, 37.350082}, + {58.980103, 53.397184}, + {-40.507578, -9.393626}, + {10.127603, 44.011033}, + {-58.430575, -34.600494}, + {103.855418, 1.311175}, + {9.193771, 45.458542}, + {-60.941404, 10.805188}, + {-123.204876, 49.264838}, + {-98.87562, 19.307624}, + {-84.294662475586, 43.634262084961}, + {55.176773, 51.775955}, + {-79.552688598633, 8.9778900146484}, + {18.812374, -32.186984}, + {19.628921, 51.394631}, + {1.194667, 52.691215}, + {37.709656, 55.785141}, + {11.269912719727, 43.77571105957}, + {9.534202, 45.209678}, + {-6.0445404052734, 36.752700805664}, + {10.003957, 57.567538}, + {9.189511, 48.890299}, + {-0.478349, 51.478936}, + {22.203158, 52.699592}, + {34.812240600586, 31.96403503418}, + {21.115952, 52.238388}, + {-43.396683, -22.854996}, + {-78.607177, 35.81543}, + {49.614942, 56.013795}, + {14.518924, 50.686981}, + {14.496424, 48.95805}, + {8.15254, 47.392962}, + {8.8034820556641, 51.938552856445}, + {30.324325561523, 59.796524047852}, + {14.907904, 48.112594}, + {-81.969680786133, 28.934555053711}, + {-94.900589, 30.994496}, + {101.760864, 3.038551}, + {101.657181, 2.98027}, + {32.290878, 46.119919}, + {-88.709317, 30.37451}, + {18.041611, 59.41864}, + {15.619223, 48.051861}, + {34.075911, 45.186566}, + {16.594898, 49.200452}, + {-62.757538, 8.272778}, + {-72.546157836914, 10.061416625977}, + {-118.399618, 37.364542}, + {71.414762, 51.170687}, + {60.613134, 56.835665}, + {46.617050170898, 50.454025268555}, + {0.046005, 51.519699}, + {106.813889, -6.137314}, + {11.378173, 53.851547}, + {6.024628, 43.131638}, + {-46.574708, -23.624548}, + {9.265814, 50.059444}, + {-78.984146, 35.917053}, + {-96.406401, 18.603287}, + {15.949733, 48.506573}, + {-97.371826, 37.638474}, + {-67.971588, -46.79654}, + {13.390274047852, 52.487869262695}, + {-5.002899, 34.061737}, + {101.707053, 3.171182}, + {103.84208679199, 1.3808441162109}, + {-80.293575, 26.331475}, + {60.760116, 56.785355}, + {-44.563615, -20.056498}, + {-0.109175, 38.548279}, + {8.134045, 49.352833}, + {27.968582, -26.127548}, + {-58.455963, -34.564247}, + {12.578909, 55.700621}, + {-86.891152, 21.138059}, + {-4.7509, 37.886124}, + {-43.472014, -22.885105}, + {14.507446, 48.986447}, + {7.204187, 50.824781}, + {-99.181824, 19.424171}, + {-3.816452, 40.438156}, + {16.22164, 47.843384}, + {30.320198, 59.865647}, + {16.205088, 47.964626}, + {82.97905, 53.316879}, + {12.312118, 45.381848}, + {-46.676839, -23.660778}, + {-76.973534, -12.193565}, + {-0.448754, 38.380051}, + {13.598465, 52.456833}, + {9.41617, 42.663151}, + {-46.627541, -23.550094}, + {15.882477, 49.205529}, + {106.823953, -6.191759}, + {13.040781, 47.843982}, + {91.422002, 53.742248}, + {-87.331845, 38.043536}, + {8.600923, 47.521021}, + {4.940877, 52.298151}, + {0.000844, 51.479398}, + {58.464157, 23.611679}, + {28.001466, -26.18248}, + {-81.164426, 35.553384}, + {-79.41101, 44.035492}, + {77.256938, 28.532181}, + {37.709884643555, 55.726089477539}, + {-3.649146, 40.44548}, + {104.0796661377, 52.154159545898}, + {26.999817, 49.410095}, + {37.663192749023, 55.845565795898}, + {39.691663, 47.261818}, + {37.643166, 55.735302}, + {35.129243, 31.800498}, + {31.910305, 36.570053}, + {-34.900124, -8.125391}, + {20.714511, 64.726639}, + {20.934787, 49.9181}, + {38.12807, 44.499097}, + {-83.315505981445, 42.484817504883}, + {14.369431, 40.624924}, + {-111.992151, 40.549499}, + {107.818222, -6.966476}, + {84.964828, 56.477737}, + {-104.708633, 38.917694}, + {13.24333190918, 51.100845336914}, + {39.760208, 47.27623}, + {25.280685, 54.70253}, + {30.756516, 50.388979}, + {-6.296267, 53.382676}, + {13.449464, 52.478003}, + {-5.987374, 54.524633}, + {-63.209718, -17.810252}, + {-82.908555, 40.047684}, + {101.827469, 2.883911}, + {16.163533, 50.302932}, + {26.198959, -29.10759}, + {-3.594495, 40.568508}, + {-89.030324, 13.467944}, + {-88.252213, 13.350723}, + {44.157486, 43.475418}, + {-104.97695, 39.688837}, + {11.647227, 45.486214}, + {100.86067199707, 14.553451538086}, + {-89.115742, 13.695427}, + {-104.869308, 39.719696}, + {120.700951, 24.450073}, + {-84.352961, 33.816483}, + {113.177719, 23.443451}, + {7.719851, 48.003104}, + {12.585525512695, 45.625534057617}, + {-87.322769165039, 30.530319213867}, + {-89.246479, 13.678594}, + {-82.382217, 42.965744}, + {7.656784, 47.598267}, + {17.623035, 49.795622}, + {-69.905777, 18.480835}, + {4.613406, 45.529372}, + {49.18602, 55.795212}, + {8.281027, 52.082748}, + {9.2044830322266, 49.71794128418}, + {27.447556, 53.884781}, + {10.162275, 53.790538}, + {28.605046, 44.092473}, + {101.68876647949, 3.1111907958984}, + {73.198471069336, 22.260360717773}, + {151.20552062988, -33.870162963867}, + {35.066025, 47.8274}, + {26.420746, -12.171478}, + {14.530621, 50.013984}, + {44.498978, 48.694839}, + {37.608667, 54.200301}, + {37.856826782227, 55.654678344727}, + {30.341492, 59.897461}, + {41.001663208008, 57.757186889648}, + {45.245956, 54.19899}, + {103.65821, 1.327213}, + {15.16731262207, 59.431228637695}, + {30.379257202148, -29.599227905273}, + {37.724304, 55.905991}, + {-70.376358032227, 19.686813354492}, + {101.670914, 3.056534}, + {106.4328, 18.047104}, + {23.240432, 50.722355}, + {37.623529, 54.18865}, + {5.473938, 52.165146}, + {-46.604619, -23.697239}, + {-46.588669, -23.592932}, + {9.958793, 53.650417}, + {100.578211, 13.732272}, + {172.677269, -43.553753}, + {15.351333618164, 47.33528137207}, + {37.529787, 55.838896}, + {113.25050354004, 23.150253295898}, + {-1.316284, 51.39581}, + {11.511611938477, 48.181228637695}, + {-71.23644, 8.545261}, + {114.203568, 22.292805}, + {2.338715, 48.861694}, + {14.406823, 50.100559}, + {-1.405431, 48.604129}, + {46.61979675293, 53.111343383789}, + {4.717865, 51.179657}, + {-99.195201, 19.349696}, + {-104.8006439209, 38.840103149414}, + {-99.231962, 18.858033}, + {87.313843, 53.609161}, + {102.27308, 2.742398}, + {22.313095, 60.461197}, + {101.705933, 3.069031}, + {-58.525543, -34.624816}, + {113.28733, 22.863705}, + {113.382168, 22.596817}, + {61.031799, 56.735459}, + {132.090683, 43.298492}, + {-74.914809, 40.316941}, + {-60.293854, -38.36161}, + {-84.085922241211, 9.9103546142578}, + {28.589859008789, 59.396896362305}, + {-118.232117, 34.019165}, + {-55.864792, -27.465883}, + {103.893982, 1.392254}, + {13.490593, 52.413666}, + {37.506637573242, 55.808486938477}, + {12.133018, 50.436538}, + {8.799591, 45.674057}, + {-0.359116, 39.450943}, + {11.350479, 44.528503}, + {-82.324399, 34.828659}, + {57.179547, 50.297643}, + {39.163513, 44.89769}, + {29.229813, -25.923752}, + {11.95573, 36.822574}, + {47.38437, 55.982209}, + {158.661555, 53.053665}, + {-0.338766, 39.468446}, + {39.749221801758, 47.148513793945}, + {69.211807250977, 41.338119506836}, + {31.719051, -28.971927}, + {13.030366, 47.831145}, + {31.619346, -29.063682}, + {170.395235, -45.901208}, + {14.421191, 48.054154}, + {5.797839, 50.647244}, + {11.603428, 52.055284}, + {37.81602, 44.724656}, + {8.602091, 47.402975}, + {10.498261, 47.775014}, + {47.260182, 56.13074}, + {-2.305027, 53.600693}, + {36.638031, 53.290789}, + {11.374548, 54.831391}, + {7.5469207763672, 51.424942016602}, + {13.020706, 47.825851}, + {-122.337513, 47.611855}, + {-121.152929, 44.633716}, + {30.801429, -30.206109}, + {7.775917, 51.681404}, + {8.6586, 52.132187}, + {19.154438, 47.575608}, + {14.264658, 48.267933}, + {8.349915, 47.581884}, + {12.094674, 51.256617}, + {11.580037, 50.879003}, + {11.340637, 44.506302}, + {9.5780181884766, 50.833053588867}, + {8.123978, 50.785538}, + {14.773905, 48.14435}, + {15.111319, 52.0538}, + {38.697281, 50.589523}, + {8.122489, 53.192065}, + {7.633338, 48.097558}, + {124.8397064209, 1.4742279052734}, + {-43.12974, -22.887233}, + {12.366486, 41.784439}, + {-89.1717, 13.806862}, + {5.8783721923828, 51.933059692383}, + {15.984189, 48.290455}, + {5.728038, 45.154495}, + {-43.27033996582, -22.907180786133}, + {28.836158, 47.024916}, + {5.363772, 51.010432}, + {-3.924866, 38.983383}, + {50.209579467773, 26.352767944336}, + {8.52403, 47.308865}, + {46.890308, 47.492543}, + {9.537964, 51.129776}, + {2.490367, 48.851616}, + {99.9543, 12.575569}, + {99.927551, 12.386697}, + {-0.21698, 51.48262}, + {18.708206, -33.939652}, + {-48.650643, -26.884742}, + {18.097572, 54.818344}, + {-70.007248, 18.481369}, + {-1.482672, 51.777386}, + {72.840958, 21.189194}, + {100.318103, 1.750259}, + {19.865616, 50.064011}, + {-46.652739, -23.565501}, + {13.665557, 45.910287}, + {-99.250129, 19.770933}, + {8.194081, 49.351685}, + {22.668897, 60.923292}, + {113.225784, 23.104248}, + {63.135681, 52.975388}, + {0.441515, 51.309586}, + {28.268969, 36.800537}, + {32.068511, 49.437156}, + {-122.107731, 38.025192}, + {40.426251, 43.348962}, + {-103.657064, 19.282227}, + {15.615005, 48.15714}, + {101.680446, 2.771019}, + {37.609291, 55.620689}, + {24.570078, 58.081748}, + {132.1524810791, 43.34587097168}, + {34.109115600586, 64.224014282227}, + {-118.8452911377, 34.191513061523}, + {-38.952722, -15.674875}, + {-46.600570678711, -23.496322631836}, + {6.6927337646484, 50.584487915039}, + {105.25245666504, -5.3798675537109}, + {35.136638, 32.19413}, + {21.438446, 50.297127}, + {129.732742, 62.041168}, + {-4.767559, 41.616181}, + {39.643569, 54.650685}, + {8.92237, 46.024377}, + {10.478044, 52.297316}, + {12.510578, 50.71404}, + {-78.45817565918, 38.947219848633}, + {9.652053, 47.387761}, + {50.131827, 53.202394}, + {5.74999, 50.95665}, + {8.43744, 47.167463}, + {-118.05290222168, 34.017105102539}, + {5.8028411865234, 49.984359741211}, + {11.492385864258, 48.167495727539}, + {8.945753, 48.962906}, + {11.672287, 51.766891}, + {7.320327, 51.561174}, + {11.702499389648, 50.105209350586}, + {49.502334594727, 56.286392211914}, + {-1.741894, 53.776885}, + {11.217042, 50.213702}, + {-47.89421081543, -15.801773071289}, + {2.873259, 50.193286}, + {11.091386, 50.224}, + {-79.91127, -2.126694}, + {-58.283157, -33.999469}, + {106.782784, -6.311165}, + {5.73658, 45.189171}, + {6.062025, 58.985195}, + {100.325089, 13.908691}, + {26.718063354492, 58.37516784668}, + {22.786936, 47.36906}, + {101.73381, 3.010941}, + {37.65152, 55.64438}, + {-38.67805480957, -3.6756134033203}, + {18.024445, -33.146439}, + {-46.201858, -23.527908}, + {-122.05426, 37.330582}, + {101.09413146973, 6.5224456787109}, + {-99.260787963867, 18.965835571289}, + {-87.942466, 20.627518}, + {37.609634399414, 55.761795043945}, + {14.296357, 48.248331}, + {1.390226, 49.056264}, + {-66.901588, 10.47924}, + {28.085587, -25.980881}, + {23.968592, 49.789837}, + {49.639206, 58.623734}, + {-122.660861, 47.017111}, + {6.898727, 51.089401}, + {-47.94423, -16.096293}, + {106.798113, -6.217542}, + {101.73820495605, 2.9999542236328}, + {23.802691, 37.992907}, + {48.113688, -14.067806}, + {43.981704711914, 56.312484741211}, + {122.49412536621, -3.9818572998047}, + {16.355209350586, 48.234786987305}, + {30.972061, 30.000916}, + {13.85195, 48.226714}, + {19.81689, 45.209889}, + {8.479042, 47.189884}, + {-46.671981811523, -23.62678527832}, + {-76.950989, 38.918381}, + {30.318832397461, 59.958572387695}, + {24.760437, 46.248805}, + {39.23698425293, 51.666641235352}, + {-122.512021, 47.239044}, + {150.895499, -33.729402}, + {-46.675201, -23.591222}, + {10.844192, 45.891719}, + {13.541611, 52.521378}, + {32.627683, 54.206544}, + {13.516502, 52.493935}, + {-85.452079, 30.512765}, + {3.861834, 43.585352}, + {-86.201687, 32.450003}, + {56.205243, 58.006377}, + {72.886734008789, 20.277328491211}, + {72.837295532227, 21.134262084961}, + {72.83317565918, 21.171340942383}, + {70.070114135742, 22.485580444336}, + {70.482102, 22.520599}, + {70.918807983398, 22.756118774414}, + {70.799331665039, 22.283706665039}, + {72.650527954102, 22.99919128418}, + {72.650527954102, 23.012924194336}, + {72.191851, 22.60025}, + {71.892471313477, 22.193069458008}, + {72.651901245117, 23.05549621582}, + {73.182678, 22.128525}, + {72.596969604492, 23.022537231445}, + {-5.503127, 39.912646}, + {25.493363, -33.967118}, + {15.224990844727, 37.770309448242}, + {114.267807, 22.388077}, + {82.836015, 54.950321}, + {-90.066604614258, 32.21809387207}, + {4.649964, 50.973816}, + {60.784927, 54.357742}, + {11.493202, 46.988653}, + {-74.046478, 4.755936}, + {7.044862, 50.733288}, + {30.570969, 50.490463}, + {34.862366, 32.101364}, + {10.494924, 51.328814}, + {16.232554, 54.158715}, + {14.026222, 51.143483}, + {-81.482908, 31.152114}, + {-58.429642, -34.58107}, + {23.589563, 46.615591}, + {11.277852, 42.955699}, + {18.434418, -33.922981}, + {12.454376, 55.718536}, + {77.224960327148, 43.385696411133}, + {6.416617, 49.505632}, + {44.62028503418, 33.750686645508}, + {62.753219604492, 57.566299438477}, + {37.510414, 55.843506}, + {28.496838, -26.21682}, + {-3.6646270751953, 40.396041870117}, + {-2.450638, 52.695923}, + {8.768325, 47.427841}, + {81.826858520508, 25.329666137695}, + {34.927826, 32.177811}, + {-49.172287, -25.616634}, + {12.597885, 55.674029}, + {30.262985, 59.850998}, + {6.91109, 49.204331}, + {4.074206, 45.98138}, + {10.800401, 43.524825}, + {11.757431030273, 48.351516723633}, + {132.121582, 43.337631}, + {12.958809, 48.85596}, + {2.676942, 39.596931}, + {15.509752, 47.035414}, + {131.866379, 43.101425}, + {37.775317, 44.684643}, + {-35.762676, -9.582138}, + {-65.238876, -26.778488}, + {-85.792007, 10.336075}, + {108.219194, -7.325349}, + {37.503890991211, 55.835952758789}, + {37.63298034668, 55.673904418945}, + {37.564315795898, 55.801620483398}, + {37.738723754883, 55.653305053711}, + {-17.271194, 14.719162}, + {153.275463, -28.812136}, + {81.22418, 8.583167}, + {-9.210565, 38.739853}, + {40.140605, 44.614794}, + {7.924575, 47.897415}, + {-74.798801, 40.442765}, + {12.759247, 46.833206}, + {16.595535, 49.200995}, + {150.868088, -34.461687}, + {48.042068, 29.266434}, + {10.113789, 52.610675}, + {10.546188354492, 46.972732543945}, + {-88.012161254883, 15.501022338867}, + {153.329946, -27.926462}, + {3.535538, 48.080464}, + {-2.376682, 53.485748}, + {16.944351196289, 49.275741577148}, + {31.030823, -29.893889}, + {106.855483, -6.259732}, + {174.674117, -36.931702}, + {101.747655, 3.126428}, + {-35.058059692383, -8.2953643798828}, + {39.53271, 50.2224}, + {-79.872665405273, 43.635635375977}, + {4.701536, 44.300197}, + {-46.71354, -23.483972}, + {87.29599, 53.782883}, + {-99.158812, 19.392744}, + {-99.08336, 19.641221}, + {-117.533049, 34.105245}, + {113.55419, 22.157867}, + {105.82045, 21.003799}, + {23.749008178711, 52.08137512207}, + {82.894363, 55.084305}, + {8.350333, 47.290467}, + {8.54364, 39.305886}, + {-99.494248, 27.548905}, + {38.398007, 55.830346}, + {31.355667114258, 30.103225708008}, + {44.478012, 48.747025}, + {56.469039916992, 60.419998168945}, + {9.173692, 50.189478}, + {82.982483, 55.033951}, + {49.803085327148, 53.631820678711}, + {110.444183, -7.246857}, + {37.516892, 55.484374}, + {124.67491149902, 8.4546661376953}, + {-76.624146, 2.449951}, + {121.02333068848, 14.427108764648}, + {28.70246887207, 49.330673217773}, + {103.95469665527, 1.4701080322266}, + {-75.624763, 44.654639}, + {-46.737418, -23.596038}, + {26.755426, 58.303762}, + {140.22193908691, 39.61051940918}, + {13.577043, 52.246171}, + {35.860404, 54.467125}, + {103.890495, 1.39904}, + {-75.083846, 6.005743}, + {43.892440795898, 43.190689086914}, + {18.0653, 59.261627}, + {-118.17237854004, 33.87565612793}, + {13.550816, 52.429039}, + {-74.064743, 4.649002}, + {5.476587, 43.51302}, + {-87.892684936523, 42.033004760742}, + {61.894054, 56.422176}, + {15.215573, 48.187354}, + {120.52894592285, 23.971481323242}, + {9.229203, 45.383249}, + {-40.581774, -4.137877}, + {9.9172210693359, 49.521560668945}, + {15.643844604492, 57.946701049805}, + {15.57243347168, 58.404006958008}, + {30.311965942383, 60.025863647461}, + {25.413657, 35.304813}, + {-88.835121, 13.670425}, + {9.929399, 44.46317}, + {52.30110168457, 55.673904418945}, + {77.019799, 29.204637}, + {11.968613, 57.713089}, + {35.026474, 48.396835}, + {1.359216, 47.295914}, + {1.331597, 49.117781}, + {121.287306, 25.058721}, + {4.164604, 50.417942}, + {-118.12431335449, 33.806991577148}, + {-75.283928, 39.955444}, + {-46.774978637695, -23.615798950195}, + {-122.283954, 37.441312}, + {131.93687438965, 43.076705932617}, + {10.993881, 49.45015}, + {-46.426162719727, -23.533401489258}, + {13.918267, 50.96439}, + {12.799752, 42.217029}, + {121.569077, 25.07753}, + {69.074478149414, 61.017379760742}, + {-116.29371643066, 43.594436645508}, + {41.139679, 49.792786}, + {16.979027, 52.380066}, + {10.730393, 51.488077}, + {-38.478241, -12.972107}, + {-103.639643, 19.29268}, + {-94.943753, 29.753829}, + {49.423233, 53.50795}, + {22.469951, 45.963721}, + {37.77717590332, 55.554428100586}, + {78.234846, 44.908124}, + {18.936661, 47.355195}, + {72.808456420898, 60.749588012695}, + {23.590147, 46.773657}, + {37.58903503418, 55.752182006836}, + {83.662949, 53.340683}, + {53.068427, 24.211464}, + {-43.244532, -22.477826}, + {106.696472, 10.768661}, + {14.388453, 53.336371}, + {-89.942894, 35.183686}, + {-79.853439, 43.247975}, + {7.881459, 48.420751}, + {103.722153, 1.335526}, + {37.784042358398, 55.929336547852}, + {-123.225289, 49.339496}, + {113.30941, 22.983579}, + {114.05799865723, 22.629776000977}, + {113.537264, 23.141928}, + {-43.568396, -22.924166}, + {-97.746052, 30.400723}, + {4.3801116943359, 43.884201049805}, + {9.5217132568359, 45.578842163086}, + {-3.962631, 5.376778}, + {-121.049648, 36.154622}, + {-3.6866, 40.473633}, + {44.452286, 40.174942}, + {12.178528, 51.352831}, + {40.524751, 45.036398}, + {-81.058501, 43.198415}, + {-43.304672241211, -22.710800170898}, + {98.377304, 7.899857}, + {-2.3668670654297, 51.370010375977}, + {-98.539810180664, 29.336929321289}, + {-76.958904, -12.192469}, + {34.785088, 31.897183}, + {10.574322, 34.568464}, + {123.429337, 41.783981}, + {45.692825317383, 43.352737426758}, + {-80.089786, 26.407107}, + {-3.577079, 41.000309}, + {4.920365, 45.683762}, + {9.14321, 48.754689}, + {2.288108, 48.902822}, + {-65.202713, -26.821175}, + {23.919393, 46.504135}, + {-99.467125, 19.181442}, + {12.398071, 48.205261}, + {8.872199, 53.107936}, + {36.739275, 56.336813}, + {121.327281, 24.167866}, + {32.55367, 0.347151}, + {103.86249, 1.325716}, + {-2.811813, 48.543778}, + {-86.907008, 37.465401}, + {7.839236, 48.054395}, + {87.156993, 53.821727}, + {22.203866, 53.46945}, + {76.831512, 29.970704}, + {-37.498161, -11.508222}, + {17.06004, 50.976448}, + {10.217971801758, 56.151809692383}, + {-3.7071990966797, 40.33561706543}, + {3.410335, 49.084137}, + {2.243729, 48.947948}, + {6.192981, 50.458517}, + {5.038376, 52.638474}, + {-1.182919, 37.950211}, + {37.965775, 55.8181}, + {-69.627914428711, 9.9364471435547}, + {56.197541, 58.011039}, + {24.417556, 60.279301}, + {13.241272, 52.162056}, + {113.126907, 23.014297}, + {47.432785, 42.97554}, + {22.389764, 47.6356}, + {7.765149, 45.048627}, + {7.633163, 45.036667}, + {7.680327, 45.03757}, + {9.214706, 45.46992}, + {9.174728, 45.480423}, + {7.6663970947266, 45.032272338867}, + {9.163284, 45.457535}, + {9.202423, 45.441513}, + {9.2044830322266, 45.503311157227}, + {9.2086029052734, 45.478591918945}, + {7.6663970947266, 45.025405883789}, + {132.08793640137, 34.099502563477}, + {12.24463, 41.7828}, + {-3.0878448486328, 40.069198608398}, + {19.381117, 51.861328}, + {12.141491, 45.582513}, + {-46.482923, -23.5422}, + {-119.687008, 34.416926}, + {37.779922485352, 55.67253112793}, + {98.393692, 8.003403}, + {72.840042114258, 19.079818725586}, + {37.708511352539, 55.789260864258}, + {18.224602, 46.066762}, + {77.723072, 11.203603}, + {-49.764438, -20.490777}, + {62.037734985352, 56.769790649414}, + {101.660408, 2.944336}, + {8.093077, 51.547448}, + {-99.163285, 19.391487}, + {-2.882135, 53.423268}, + {-121.530664, 38.618022}, + {8.899887, 47.552262}, + {40.597915649414, 44.910049438477}, + {103.83978, 1.327946}, + {-78.169785, 43.981155}, + {-43.401965, -22.83989}, + {-71.258010864258, -29.965896606445}, + {17.654648, 59.172745}, + {-78.410533, 0.167172}, + {-7.34047, 55.004654}, + {82.73529, 54.977646}, + {55.995941, 54.748306}, + {51.41258, 25.172288}, + {91.83403, 22.341385}, + {-54.122627, -31.318605}, + {56.200562, 58.005066}, + {6.48468, 50.74173}, + {-74.112823, 4.559609}, + {40.264628, 48.325635}, + {39.365779, 43.882926}, + {26.972122192383, 49.426803588867}, + {-73.097639, -36.845779}, + {28.17512512207, 59.369430541992}, + {114.107643, 22.736343}, + {15.469224, 48.048811}, + {129.00764465332, 35.222854614258}, + {105.261765, -5.431213}, + {12.411477, 51.230042}, + {-78.889022, 36.086405}, + {51.501846, 25.274734}, + {113.232108, 23.072678}, + {-46.647949, -23.583527}, + {5.862482, 51.872831}, + {29.825133, 38.313447}, + {-73.683602, 45.531236}, + {72.524184, 23.035584}, + {21.868281, 37.739152}, + {30.365868, 59.875832}, + {72.851028442383, 21.245498657227}, + {9.803992, 53.119858}, + {13.985929, 53.432659}, + {6.564282, 50.969108}, + {-80.783158, 46.634903}, + {44.51042175293, 40.151596069336}, + {-118.5376739502, 34.389266967773}, + {6.710037, 46.540146}, + {144.94442, -37.73334}, + {-70.667496, 19.437561}, + {26.283753, 47.675087}, + {16.358414, 48.289261}, + {15.408325, 47.087515}, + {8.5741424560547, 51.153030395508}, + {103.238182, 5.149155}, + {-1.373683, 54.277343}, + {-1.0828399658203, 52.711715698242}, + {8.480072, 49.470749}, + {15.350619, 47.298825}, + {9.802322, 52.431564}, + {18.079064, 49.74637}, + {10.016098022461, 50.448532104492}, + {6.284864, 51.084248}, + {10.244064331055, 49.779739379883}, + {8.6441802978516, 50.568008422852}, + {5.838068, 51.001287}, + {-2.311289, 53.594823}, + {174.90303039551, -37.199020385742}, + {9.1179656982422, 51.155776977539}, + {13.258604, 46.899801}, + {30.726318, 46.490479}, + {-79.913864135742, -2.1416473388672}, + {44.743881225586, 48.80744934082}, + {30.269394, 59.971619}, + {10.934677, 44.61937}, + {-6.9179534912109, 32.882766723633}, + {-103.74733, 19.196073}, + {-74.500636, 40.774915}, + {149.452732, -35.245123}, + {113.54686, 22.127014}, + {8.41268, 49.151705}, + {28.264135, -15.539393}, + {-1.254501, 51.762085}, + {-80.134259, 40.968207}, + {-0.494279, 38.382903}, + {80.713119506836, 16.456832885742}, + {-97.20085144043, 49.826431274414}, + {37.812881469727, 48.001327514648}, + {20.590898, 49.992829}, + {65.316055, 55.447312}, + {39.47762, 47.281942}, + {15.429496, 47.07472}, + {-119.747975, 36.768085}, + {9.20137, 45.477951}, + {21.963729858398, 60.711135864258}, + {-80.980864, 43.369093}, + {83.776108, 53.349472}, + {28.25507, -25.828269}, + {10.216421, 50.319594}, + {10.717936, 45.551883}, + {-3.666, 40.427628}, + {24.664974, 52.952888}, + {41.449631, 52.71199}, + {-46.711807250977, -23.57048034668}, + {16.368942260742, 48.196334838867}, + {51.37001, 51.226501}, + {17.393258, 50.114235}, + {8.447725, 47.405653}, + {16.523026, 47.835983}, + {48.979110717773, 55.771408081055}, + {3.964691, 43.628082}, + {44.754867553711, 43.056106567383}, + {2.360317, 48.492754}, + {16.067622, 47.747546}, + {8.496437, 47.393121}, + {37.656669, 47.120018}, + {37.619591, 54.213409}, + {76.218567, 10.497665}, + {77.315254, 28.636322}, + {121.179886, 24.78653}, + {30.13659, 59.847117}, + {-1.410424, 48.607161}, + {11.603622436523, 49.903335571289}, + {-81.083558, 33.917413}, + {24.748764038086, 42.122268676758}, + {30.051908, -27.71662}, + {53.163528442383, 56.79313659668}, + {32.036133, 46.959686}, + {-111.08070373535, 34.323348999023}, + {60.676803588867, 57.055435180664}, + {-51.188942, -29.028077}, + {-121.913534, 37.251257}, + {37.882005, 55.416185}, + {-94.538040161133, 39.099655151367}, + {18.557968139648, 49.988479614258}, + {18.794174194336, 49.722061157227}, + {39.948348999023, 53.225326538086}, + {121.073457, 22.769166}, + {-81.19514465332, 43.020401000977}, + {12.620169, 56.032272}, + {5.030594, 48.590012}, + {9.037599, 47.570901}, + {6.7723846435547, 52.242050170898}, + {11.455327, 47.264056}, + {20.97556, 51.303568}, + {14.288045, 48.285069}, + {-82.744538, 35.229662}, + {13.007125854492, 47.756881713867}, + {24.034392, 46.800739}, + {22.888517, 45.003551}, + {4.965137, 50.40825}, + {102.602609, 16.087462}, + {-1.519986, 52.469817}, + {37.814712, 44.695818}, + {5.047477, 47.285851}, + {37.487573, 55.734733}, + {31.032943725586, 52.470016479492}, + {16.874316, 52.258531}, + {-77.09211, -12.074304}, + {53.242264, 56.846237}, + {20.128078, 63.788821}, + {11.073189, 50.161172}, + {44.511452, 40.213051}, + {72.471672, 22.971891}, + {30.364838, 60.046463}, + {-77.007392, 18.109098}, + {-0.860443, 37.771988}, + {-157.861089, 21.310078}, + {-103.32572937012, 20.611038208008}, + {27.843819, -26.12875}, + {128.18779, -3.686966}, + {10.193937, 59.579545}, + {129.40315246582, 50.239791870117}, + {12.389985, 48.987633}, + {-15.5929, 27.74595}, + {30.306598, 59.876175}, + {2.016877, 49.07364}, + {-34.966049194336, -8.0179595947266}, + {-99.268502, 19.378786}, + {-3.9406585693359, 37.179794311523}, + {-99.272461, 19.402542}, + {71.389846801758, 42.903671264648}, + {140.08598327637, 39.727249145508}, + {103.854303, 1.294898}, + {12.006912, 57.807083}, + {30.261999, 60.013293}, + {7.184209, 51.436305}, + {56.193501, 58.003576}, + {31.028137, 52.391052}, + {-103.430975, 19.527062}, + {-56.616669, -34.646072}, + {-54.160565, -34.642518}, + {-54.931638, -34.813614}, + {37.613669, 55.658627}, + {52.324995, 55.678849}, + {37.53588, 55.691756}, + {10.254512, 49.780588}, + {27.536544799805, 42.563095092773}, + {106.649432, -6.23987}, + {105.836105, 21.04414}, + {-81.229476928711, 28.885116577148}, + {103.910202, 1.30806}, + {36.370432, 50.909584}, + {-73.038995, 41.230586}, + {78.537826538086, 25.42854309082}, + {4.930115, 45.723038}, + {140.247343, 49.074555}, + {-82.421999, 35.298458}, + {36.012496948242, 52.923202514648}, + {9.291762, 48.821829}, + {10.711816, 35.834367}, + {22.976074, 37.977905}, + {-78.940200805664, 33.651809692383}, + {-91.925011, 38.971939}, + {24.732229, 57.186329}, + {-123.715667, 49.442175}, + {52.434310913086, 55.709609985352}, + {23.729782104492, 38.057327270508}, + {-64.366837, 9.297867}, + {8.499069, 55.593338}, + {18.679504, 50.287857}, + {6.405797, 51.19633}, + {106.498489, 29.556656}, + {39.911261, 46.122669}, + {16.048965454102, 48.718185424805}, + {-79.891434, -2.140961}, + {-106.674108, 35.095729}, + {41.513351, 46.473131}, + {-0.056991577148438, 51.584243774414}, + {3.343938, 45.921322}, + {107.367923, 16.579249}, + {12.317314, 55.952263}, + {5.764215, 50.682958}, + {24.026412963867, 46.79557800293}, + {27.813928, -26.174012}, + {9.1619110107422, 47.662124633789}, + {28.010496, -26.032842}, + {16.384353, 48.432513}, + {48.26774597168, 28.806838989258}, + {5.934505, 52.192612}, + {14.70463, 47.433189}, + {47.410813, 56.009675}, + {28.009415, 45.452959}, + {11.77116394043, 42.120895385742}, + {10.509274, 44.942844}, + {-8.791885, 39.732742}, + {5.379918, 51.487717}, + {4.676849, 52.381652}, + {-64.414515, -33.16843}, + {14.588241, 50.078659}, + {13.256742, 46.395183}, + {14.486669, 50.105921}, + {10.70961, 50.958023}, + {11.411361694336, 44.496688842773}, + {28.846115, 46.994156}, + {19.244613647461, 42.425765991211}, + {-105.242894, 39.865082}, + {9.180919, 48.808479}, + {1.452255, 38.927307}, + {-34.844822, -7.99622}, + {-68.819046020508, -32.910232543945}, + {36.68815612793, 56.317977905273}, + {126.636429, 36.479416}, + {-0.2648, 43.72594}, + {16.760081, 45.479323}, + {33.298873901367, 58.037338256836}, + {34.989068, 48.461118}, + {49.515869, 25.694373}, + {69.268112182617, 42.579574584961}, + {139.8983, 35.732803}, + {44.642258, 43.034134}, + {39.794875, 47.234663}, + {37.659216, 54.191262}, + {21.208683, 46.200996}, + {26.907664, 45.099243}, + {18.385283, 47.59648}, + {11.775283813477, 48.858261108398}, + {28.170328, -28.23418}, + {-2.233588, 53.253325}, + {51.186555, 35.756823}, + {-0.30143737792969, 49.16862487793}, + {14.345535, 46.643967}, + {-1.714407, 48.102953}, + {13.163691, 55.544232}, + {6.670761, 50.982056}, + {25.298422, 47.800828}, + {4.182104, 51.750662}, + {-79.563684, 40.281146}, + {-74.121322631836, 4.7000885009766}, + {19.461091, 51.898312}, + {17.217086, 52.815125}, + {11.281061, 44.519954}, + {12.28889465332, 57.110366821289}, + {-97.061877, 32.779619}, + {45.955811, 51.591797}, + {30.429898, 50.459788}, + {9.0850067138672, 45.319290161133}, + {-106.628494, 35.042267}, + {26.079483032227, 44.493942260742}, + {-49.374906, -18.027713}, + {-78.52066, -0.24527}, + {119.25590515137, 51.077499389648}, + {106.827164, -6.387405}, + {145.409547, -37.661933}, + {112.88246154785, 23.172225952148}, + {112.774711, 23.102928}, + {85.001907348633, 56.501998901367}, + {14.404444, 50.073086}, + {-46.695327758789, -23.481216430664}, + {-122.20612, 37.717417}, + {4.744879, 52.302686}, + {-98.771439, 20.080032}, + {-0.33245, 51.301721}, + {-99.075485, 19.636459}, + {-77.026422, -9.582825}, + {23.920068, -13.778603}, + {92.522048950195, 58.191146850586}, + {55.208981, 25.145667}, + {10.447159, 63.444748}, + {49.242783, 55.750809}, + {26.120681762695, 44.441757202148}, + {14.201706, 40.966599}, + {2.460885, 48.820179}, + {10.005113, 49.024432}, + {-9.144813, 38.733273}, + {84.806900024414, 26.720809936523}, + {35.046387, 48.527641}, + {19.46022, 51.727524}, + {17.216622, 52.309594}, + {58.399887, 37.96463}, + {76.942978, 52.296524}, + {-51.133377, -30.033709}, + {8.350983, 49.235916}, + {37.627029, 45.209427}, + {8.398939, 49.987034}, + {-58.435276, -34.586176}, + {33.532333, 44.548416}, + {37.720618, 55.793851}, + {-1.208038, 54.687882}, + {10.13557434082, 48.046646118164}, + {5.5460357666016, 50.610580444336}, + {28.076935, -26.118851}, + {27.444989, -32.574997}, + {-0.415813, 51.573061}, + {61.312637, 55.341568}, + {12.087168, 48.539189}, + {12.323562, 49.001947}, + {53.250374, 56.882439}, + {12.060585, 47.485886}, + {1.260223, 36.120987}, + {-87.393722, 41.39122}, + {-75.2845, 2.959442}, + {33.003676, 58.014691}, + {-110.769491, 32.132566}, + {125.163116, 6.124191}, + {39.783554077148, 47.302322387695}, + {120.431442, 24.032364}, + {-79.658432006836, 43.601303100586}, + {11.689823, 48.05309}, + {50.298647, 53.250831}, + {2.2666168212891, 48.834915161133}, + {19.036154, 47.55944}, + {19.782022, 41.323233}, + {38.98567199707, 45.106430053711}, + {37.271118, 55.397995}, + {-82.999845, 35.474049}, + {139.6314239502, 35.886154174805}, + {1.343079, 36.172829}, + {-6.349408, 53.312531}, + {10.208069, 59.743853}, + {2.495728, 48.839722}, + {53.249835, 56.876802}, + {106.797409, -6.192907}, + {15.253246, 46.68846}, + {1.351478, 49.174611}, + {-73.683242797852, 40.794296264648}, + {2.4506378173828, 48.815689086914}, + {-86.180191040039, 42.747116088867}, + {-84.296079, 33.897532}, + {138.606304, -34.924822}, + {5.7080841064453, 52.22282409668}, + {30.26252746582, 60.073928833008}, + {8.588425, 50.051376}, + {19.046159, 47.427942}, + {105.85395812988, 21.036758422852}, + {-103.48915100098, 43.432388305664}, + {77.151863, 28.807876}, + {-104.954169, 39.631839}, + {2.148527, 48.63673}, + {-82.403641, 34.871292}, + {65.59455871582, 57.196884155273}, + {105.23048400879, 15.251083374023}, + {174.030579, -39.071228}, + {12.474014, 41.838821}, + {6.706231, 52.262414}, + {14.645005, 51.072464}, + {78.56514, 17.442245}, + {-0.770313, 51.63097}, + {-77.326583862305, 37.234725952148}, + {10.506482, 43.844555}, + {11.887207, 45.342808}, + {0.30693054199219, 49.524307250977}, + {-83.82509, 34.255237}, + {12.773341, 46.83174}, + {134.444426, 57.689876}, + {7.590873, 52.92441}, + {8.652967, 49.867578}, + {121.520462, 25.071945}, + {100.988469, 14.522669}, + {3.083091, 50.709246}, + {13.017665, 55.48035}, + {7.8256988525391, 51.039047241211}, + {-41.344986, -21.77353}, + {-87.164169, 14.080215}, + {-66.590195, 46.131248}, + {109.347382, -0.066833}, + {-70.97862, 42.524051}, + {-63.222885, -17.822342}, + {69.148178, 54.866409}, + {27.500839, 53.921127}, + {11.252403, 43.770218}, + {8.602995, 53.588515}, + {8.584822, 53.584493}, + {8.3654022216797, 49.00520324707}, + {-55.858045, -27.333357}, + {13.054462, 47.809347}, + {7.8685, 49.057353}, + {51.324692, 35.668488}, + {68.353500366211, 51.806716918945}, + {4.423225, 51.21891}, + {9.068527, 48.669571}, + {37.626801, 55.661545}, + {20.909042358398, 48.995590209961}, + {18.646343, 50.308903}, + {13.848058, 46.583985}, + {23.162151, 66.919074}, + {75.706787, 31.260223}, + {21.630933, 46.091996}, + {7.431107, 49.248276}, + {112.60437, -7.924576}, + {13.103669, 48.097113}, + {116.28684997559, 39.832992553711}, + {-90.42778, 38.746033}, + {-66.855927, 10.246124}, + {-3.74754, 40.460587}, + {-3.789596, 40.400848}, + {-3.88867, 40.415268}, + {127.1688079834, 37.45719909668}, + {37.522552, 55.627172}, + {55.853805541992, 53.622207641602}, + {36.168464, 51.731578}, + {-51.714706, -17.864456}, + {-76.898804, 17.942047}, + {8.775519, 47.753288}, + {11.347504, 48.14621}, + {11.08039855957, 49.430923461914}, + {14.876806, 47.385263}, + {14.305612, 48.013768}, + {28.020544, -26.273375}, + {14.017868041992, 48.183975219727}, + {2.608566, 48.731232}, + {-114.06349182129, 51.043167114258}, + {-43.182808, -22.948064}, + {32.021713256836, 46.87385559082}, + {9.6892547607422, 53.045425415039}, + {53.211823, 56.860428}, + {142.75016784668, 46.926040649414}, + {142.74742126465, 46.921920776367}, + {7.268677, 51.608124}, + {-0.953197, 51.459459}, + {-79.387263, 43.900047}, + {6.953887, 36.800308}, + {6.199722, 46.199226}, + {23.350656, 53.31471}, + {22.794767, 53.981226}, + {-87.947617, 43.015594}, + {-110.836846, 32.242617}, + {39.61414, 47.246142}, + {10.931492, 44.65457}, + {120.731997, 24.174728}, + {90.357939, 56.27776}, + {29.140424, 37.861821}, + {139.71794128418, 35.748825073242}, + {-58.492486, -34.513844}, + {4.177691, 50.842531}, + {19.057012, 47.509355}, + {121.48407, 25.004883}, + {-156.442524, 20.808072}, + {130.394865, 33.591385}, + {72.871955, 19.252564}, + {-117.9402923584, 33.916854858398}, + {30.483267, 59.968796}, + {121.602331, 25.074551}, + {103.910437, 1.305549}, + {153.122899, -27.389713}, + {77.495498657227, 43.365097045898}, + {38.676682, 55.322342}, + {4.961009, 50.668947}, + {113.240694, 23.177523}, + {113.200378, 23.371353}, + {112.877518, 26.142654}, + {113.008804, 28.194351}, + {7.4040985107422, 53.050918579102}, + {19.057751, 47.477999}, + {14.414749145508, 35.898513793945}, + {120.491549, 22.911829}, + {38.241987, 55.569223}, + {12.60173, 56.038376}, + {104.284973, 52.277756}, + {40.968704, 56.979218}, + {-0.751877, 51.387863}, + {21.025584, 48.098151}, + {23.792642, 44.30878}, + {-118.12156677246, 33.949813842773}, + {11.763284, 45.464107}, + {17.041168, 51.06926}, + {13.29506, 52.504044}, + {36.846849, 37.584024}, + {27.88675, 39.668214}, + {31.731863, 1.714468}, + {77.549744, 13.029099}, + {73.364639282227, 54.990005493164}, + {30.317459106445, 59.841842651367}, + {41.575698852539, 44.287948608398}, + {12.755116, 50.950799}, + {33.992448, 38.382985}, + {28.841171, 41.015808}, + {26.972029, 38.801776}, + {13.317609, 52.511991}, + {7.390265, 51.520771}, + {64.300918579102, 57.106246948242}, + {18.893291, 47.376439}, + {18.751402, 47.139341}, + {-45.772084, -12.089375}, + {31.128281, -25.040057}, + {71.415939, 51.185989}, + {23.621113, 55.198482}, + {47.884598, 56.624327}, + {23.56572, 46.077713}, + {-84.182936, 33.4326}, + {-48.059692, -15.841599}, + {27.757025, 39.57255}, + {-101.208801, 20.575087}, + {-101.74496, 20.404154}, + {4.318658, 51.819935}, + {19.33079, 48.545861}, + {5.492721, 51.968179}, + {3.600906, 51.482346}, + {3.337782, 50.835572}, + {18.871765, 50.270691}, + {-2.1485137939453, 53.542556762695}, + {-73.913132, 40.817642}, + {10.557449, 52.961929}, + {18.459793, 46.029776}, + {16.116035, 48.061221}, + {12.92610168457, 51.15852355957}, + {11.934125, 55.729294}, + {18.934425, 47.37088}, + {30.013504, 40.768204}, + {55.399933, 25.361252}, + {9.913047, 53.579785}, + {113.418732, 29.493484}, + {19.077283, 47.483914}, + {-61.04935, 14.61297}, + {-99.454766, 27.583237}, + {-100.446611, 20.635615}, + {-67.567337, 10.241562}, + {-81.405628, 28.414764}, + {10.840528, 51.29667}, + {-3.707886, 40.619077}, + {31.790596, 41.455738}, + {121.05491638184, 14.281539916992}, + {7.382823, 48.699437}, + {6.794153, 51.216105}, + {-46.402313, -23.43122}, + {27.60965, 41.279923}, + {30.491215, 37.321822}, + {10.071599, 54.353637}, + {16.37825, 48.028572}, + {26.716049, 41.310562}, + {28.344037, -26.416173}, + {112.90855407715, 28.209457397461}, + {17.847658, 62.684506}, + {16.235698, 53.147477}, + {100.40885925293, 13.73908996582}, + {-99.552917, 27.40857}, + {29.945707, 40.768517}, + {-46.914046, -23.777297}, + {100.39711, 6.148436}, + {-118.458906, 34.045356}, + {32.066532, 40.995671}, + {-71.090469360352, 42.317276000977}, + {10.472030639648, 51.640548706055}, + {8.72697, 50.102855}, + {-2.236176, 53.468399}, + {-118.22731018066, 34.197006225586}, + {-78.656479, 33.841324}, + {120.671494, 15.089584}, + {-1.371871, 53.951384}, + {10.14518737793, 48.683853149414}, + {27.488978, -26.363594}, + {-76.523976, 3.458512}, + {113.563202, 22.138412}, + {11.074219, 49.400024}, + {121.039581, 14.767456}, + {19.085682, 47.502211}, + {-84.540481567383, 42.660598754883}, + {-101.186858, 20.577423}, + {-57.546485, -38.027311}, + {128.646194, 35.860062}, + {10.662059, 47.551577}, + {6.978653, 51.126129}, + {85.935745239258, 20.30891418457}, + {-88.465347, 13.484482}, + {7.206873, 43.684757}, + {-104.745255, 38.89824}, + {-70.325775, -27.36248}, + {28.905991, 41.013474}, + {-101.350001, 20.663411}, + {-73.827993, 40.727264}, + {-120.640227, 35.447164}, + {75.838394, 30.897446}, + {26.983109, 38.818817}, + {12.627769, 56.038597}, + {74.872512817383, 12.953567504883}, + {27.888107299805, 41.482315063477}, + {24.812077, 54.287686}, + {14.394149780273, 53.217086791992}, + {6.898375, 46.397061}, + {12.566004, 55.822072}, + {-100.388014, 20.552736}, + {34.797134399414, 32.006607055664}, + {12.387381, 55.743492}, + {-122.648263, 45.528673}, + {7.712402, 47.596207}, + {-73.914127, 40.826054}, + {105.232112, -5.367203}, + {9.062095, 45.420892}, + {19.568983, 47.448038}, + {13.273544311523, 52.331314086914}, + {16.512059, 45.502387}, + {27.878389, -26.724085}, + {-75.862656, 8.77533}, + {7.584521, 50.975185}, + {23.962631, 54.899521}, + {-77.62619, 38.793869}, + {-103.016798, 23.836541}, + {-74.088821, 4.701614}, + {9.295578, 47.405777}, + {17.768608, 49.269276}, + {28.126373, -25.998459}, + {10.96648, 48.398078}, + {37.298584, 40.396042}, + {19.065404, 50.474684}, + {114.105377, 22.375717}, + {-79.863739, 43.263474}, + {7.045807, 51.511322}, + {11.269259, 44.488841}, + {-70.615082, -33.396149}, + {29.13588, 41.017593}, + {-75.544052124023, 39.883804321289}, + {15.744982, 49.370941}, + {13.216553, 52.404099}, + {-49.258049, -16.627526}, + {103.751046, 1.397728}, + {18.162646, 59.485287}, + {-73.566513061523, 44.629898071289}, + {6.126522, 46.229782}, + {-34.849491, -7.975044}, + {120.21034240723, 22.99919128418}, + {50.196762, 26.193009}, + {-103.286638, 20.706056}, + {-116.29508972168, 43.588943481445}, + {7.40639, 50.759357}, + {15.397339, 47.056503}, + {2.32651, 48.674477}, + {30.87708, -24.918366}, + {7.273779, 48.617646}, + {11.7148, 48.176302}, + {-6.061378, 36.759571}, + {39.21972, 21.513094}, + {-86.776886, 33.208237}, + {-46.513962, -23.490921}, + {4.29856, 51.395998}, + {100.618595, 13.971622}, + {121.431198, 25.056839}, + {103.852574, 1.362825}, + {7.759879, 48.570294}, + {37.497024, 55.735704}, + {-99.124094, 19.491173}, + {30.006819, 69.692894}, + {77.253199, 28.547287}, + {-118.09272766113, 34.103622436523}, + {106.788371, -6.23142}, + {-121.516342, 38.623123}, + {26.281356811523, 50.628433227539}, + {13.993149, 48.147812}, + {-73.901596, 40.915695}, + {12.038395, 51.505785}, + {73.829439, 18.520501}, + {29.530106, 40.786972}, + {35.181106, 32.111801}, + {-101.168961, 19.717148}, + {51.475143, 35.761032}, + {4.1809844970703, 51.238174438477}, + {-79.916366, 43.526233}, + {12.514669, 55.758995}, + {6.133679, 46.211929}, + {28.015517, -26.261304}, + {28.165068, -25.8406}, + {18.44582, -34.076094}, + {31.441513, -29.169006}, + {-34.971542, -8.081406}, + {-82.486038208008, 35.55793762207}, + {-117.346097, 33.647086}, + {27.475021, 53.938614}, + {35.281906, 37.052902}, + {103.956345, 1.3564}, + {7.066269, 46.897006}, + {-4.882173, 41.551327}, + {19.409077, 51.914743}, + {-70.635223, -33.433113}, + {-79.850005, 43.531265}, + {-1.190591, 52.8988}, + {8.548561, 51.542532}, + {7.609615, 47.564024}, + {-3.2306671142578, 55.945816040039}, + {100.510483, 13.72879}, + {100.491774, 13.724271}, + {103.873672, 1.369171}, + {9.220276, 49.182358}, + {8.473434, 50.074081}, + {-79.808120727539, 43.406295776367}, + {-84.410018920898, 34.39338684082}, + {27.184982299805, 38.381423950195}, + {120.670591, 24.170805}, + {-118.192291, 33.879547}, + {5.0214385986328, 51.652908325195}, + {0.183334, 51.47644}, + {-102.509308, 22.82856}, + {76.322365, 9.942112}, + {27.598026, 53.948628}, + {-2.977498, 34.403486}, + {-6.246414, 42.603379}, + {-78.437577, 40.333655}, + {7.4109649658203, 53.236312866211}, + {-76.083352, 36.868946}, + {13.489838, 52.680136}, + {46.824417114258, 24.70344543457}, + {103.870427, 1.321668}, + {-89.561233520508, 20.950241088867}, + {103.692202, 1.323166}, + {-3.569558, 54.53039}, + {-76.997818, -12.084274}, + {-2.499527, 53.191544}, + {-5.866823, 42.490277}, + {16.296616, 48.251266}, + {28.798485, 41.010361}, + {-43.186643, -22.948384}, + {9.018284, 53.980442}, + {27.962516, -26.123143}, + {-46.651108, -23.476273}, + {8.673019, 48.394285}, + {-43.226023, -22.923686}, + {101.85081481934, 0.38795471191406}, + {14.493318, 50.136629}, + {-55.204211, 5.820984}, + {-95.276164, 29.664165}, + {-69.952011108398, 18.438491821289}, + {-79.482650756836, 44.043502807617}, + {28.327558, -15.409935}, + {104.85282897949, 11.561050415039}, + {28.198471069336, -26.030044555664}, + {2.750015, 39.499969}, + {27.892227, -26.178189}, + {16.00348, 48.358484}, + {10.705585, 43.8314}, + {106.688017, 10.759794}, + {-85.236053, 38.217316}, + {9.357613, 55.068009}, + {73.876526, 18.579238}, + {4.883852, 46.783093}, + {25.575485229492, -33.949813842773}, + {13.458938598633, 53.244552612305}, + {-89.927902, 14.920811}, + {39.737473, 47.151871}, + {6.6172027587891, 49.436416625977}, + {102.81623840332, 16.40739440918}, + {9.51585, 51.26223}, + {29.235305786133, 40.922012329102}, + {-95.413904, 29.91971}, + {-75.11879, 39.996414}, + {-110.85136413574, 55.656051635742}, + {106.655071, 10.798308}, + {127.73323059082, 26.237411499023}, + {-50.025559, -29.762924}, + {2.1485137939453, 41.376571655273}, + {-115.52673, 32.958642}, + {-92.126149, 34.867172}, + {15.442375, 47.067262}, + {4.839625, 46.744117}, + {10.129569, 55.271431}, + {37.49626, 55.696818}, + {13.94211, 58.17166}, + {-1.4481353759766, 54.977645874023}, + {14.820409, 48.125443}, + {20.634613, 50.854569}, + {26.914706, 46.574292}, + {5.713324, 52.278806}, + {-73.258209, 10.47821}, + {12.096802, 55.507362}, + {5.7904815673828, 52.325820922852}, + {13.630599975586, 55.885391235352}, + {19.520621, 51.756605}, + {4.4528961181641, 50.416946411133}, + {13.711835, 46.799135}, + {16.278305053711, 47.987594604492}, + {9.627693, 54.0597}, + {30.452042, -29.483872}, + {121.53831481934, 25.072860717773}, + {121.018867, 24.824295}, + {9.89172, 53.57019}, + {-84.362643, 33.898916}, + {2.359765, 48.922613}, + {-87.820664, 42.099686}, + {-85.959147, 37.823937}, + {36.150378, 36.245683}, + {-99.218903, 18.916397}, + {112.69432067871, -7.6526641845703}, + {10.288864, 48.548075}, + {8.556765, 53.590889}, + {119.44404602051, -5.1779937744141}, + {26.619868, -17.035709}, + {6.752394, 49.364118}, + {6.3411712646484, 52.106094360352}, + {7.4768829345703, 48.488845825195}, + {2.247488, 48.910737}, + {31.484545, 30.062597}, + {1.442074, 48.45243}, + {-103.482035, 25.590591}, + {-95.238162, 29.773575}, + {0.44700622558594, 51.309585571289}, + {16.963577270508, 52.758407592773}, + {1.062224, 49.742971}, + {-0.431214, 52.004013}, + {-2.127229, 52.041001}, + {-3.494991, 50.68116}, + {152.9386, -25.328643}, + {25.855808, -17.904282}, + {-34.888916, -8.048859}, + {1.8121, 42.075706}, + {-73.151845, 41.237761}, + {30.522624, 39.242146}, + {3.8816070556641, 43.610916137695}, + {153.068158, -26.726358}, + {107.01301574707, -6.1544036865234}, + {-101.046524, 17.319717}, + {-81.135869, 33.817691}, + {35.086212, 32.963104}, + {75.803871, 11.300863}, + {-1.891708, 52.487183}, + {3.082077, 50.622562}, + {5.073077, 52.092899}, + {106.649015, 10.788852}, + {23.488082885742, -27.400588989258}, + {9.737664, 56.143584}, + {8.482756, 50.093224}, + {-5.990947, 42.381083}, + {4.187851, 51.915207}, + {104.131845, 49.04984}, + {-43.383716, -22.775983}, + {18.859177, -34.162674}, + {-34.819322, -7.142416}, + {-76.470925, 39.329191}, + {-117.999892, 33.726127}, + {31.138687, -23.933945}, + {10.724324, 53.821727}, + {-68.889082, -33.011856}, + {10.85141, 59.912888}, + {-54.606857299805, -25.56037902832}, + {-63.125381469727, -17.817764282227}, + {-98.860598, 19.657974}, + {27.991104, -26.09816}, + {16.586609, 49.167938}, + {-75.495986938477, 10.375900268555}, + {-44.017813, -20.008094}, + {106.696981, 10.780716}, + {101.689453, 2.81044}, + {28.101751, -25.82307}, + {28.713112, 41.184242}, + {114.001236, 22.368851}, + {-0.783736, 52.028642}, + {103.865433, 1.321106}, + {120.19455, -5.544662}, + {51.352458, 35.714664}, + {4.632822, 52.423834}, + {30.447246, -22.996262}, + {10.856847, 49.694469}, + {-43.288467, -22.791099}, + {76.198425, 10.226212}, + {-0.77796936035156, 49.293594360352}, + {25.863574, -17.842979}, + {23.348007202148, 42.688064575195}, + {73.931808, 18.523178}, + {-38.495997, -3.742904}, + {8.407974, 49.005668}, + {9.425123, 56.479569}, + {20.276321, 67.849608}, + {79.861374, 13.103561}, + {8.945326, 47.747815}, + {120.603104, -1.369831}, + {13.656581, 50.915834}, + {-38.508532, -3.745396}, + {-100.969206, 22.132091}, + {11.696453, 55.368904}, + {9.948642, 51.858218}, + {-120.714498, 37.798438}, + {12.117241, 50.206301}, + {10.022964477539, 53.528823852539}, + {-1.156539, 49.191971}, + {11.579408, 55.28879}, + {18.293837, 48.216935}, + {13.932037, 42.764969}, + {7.481655, 50.896919}, + {38.767318725586, 8.9861297607422}, + {104.698535, -2.920193}, + {77.583389, 12.877579}, + {-50.539169, -20.269318}, + {5.535796, 52.526946}, + {9.812851, 52.325592}, + {-88.172836303711, 41.762466430664}, + {-47.962622, -15.84239}, + {16.451797, 50.416947}, + {-77.32795715332, 38.667068481445}, + {-51.054584, 0.036049}, + {-123.074074, 49.279848}, + {-87.563095, 20.88158}, + {9.892509, 56.793596}, + {22.384101, 60.421877}, + {35.253067, 37.035599}, + {-122.21809387207, 47.324295043945}, + {11.580639, 44.507349}, + {-74.11686, 4.677799}, + {43.561895, 56.660723}, + {12.938883, 48.815609}, + {-1.419047, 53.343055}, + {-97.026361, 32.995817}, + {-97.037601, 47.919102}, + {-97.248836, 37.673129}, + {2.992403, 39.423448}, + {2.275406, 50.733078}, + {4.961268, 52.109528}, + {2.765671, 39.572068}, + {0.076217651367188, 51.591110229492}, + {5.292043, 51.703662}, + {14.419065, 50.077302}, + {28.146834, -12.73549}, + {-47.693139, -23.286558}, + {37.621852, 55.775132}, + {0.911439, 51.124053}, + {13.423529, 52.546752}, + {11.56868, 55.733033}, + {-52.349625, -31.759415}, + {16.81173, 41.094262}, + {7.5304412841797, 47.171859741211}, + {-97.149696, 49.869003}, + {-95.31074, 29.773712}, + {-84.199905395508, 39.893417358398}, + {-122.234574, 37.856269}, + {4.833196, 52.339147}, + {26.721312, 58.371429}, + {-0.438767, 51.496697}, + {-46.731059, -23.661721}, + {27.95872, -26.196043}, + {-35.890274047852, -7.2173309326172}, + {23.704239, 38.001297}, + {9.350052, 45.089951}, + {6.418881, 50.951583}, + {8.227388, 44.895631}, + {-48.170635, -1.29311}, + {-87.160720825195, 40.110397338867}, + {107.624993, -6.939746}, + {73.856094, 18.501205}, + {121.350937, 24.955521}, + {100.18564, 6.417939}, + {1.4096832275391, 43.523025512695}, + {34.790214, 32.076872}, + {-81.482162, 41.062775}, + {6.573257, 36.252136}, + {30.327072143555, 40.942611694336}, + {-87.851486206055, 42.935256958008}, + {10.100445, 56.150148}, + {-0.391784, 51.708563}, + {103.656555, 16.05748}, + {8.495785, 49.779302}, + {30.485744, 59.902582}, + {-48.012314, -15.883484}, + {37.04835, 40.875909}, + {-96.418076, 32.883225}, + {127.04109191895, 37.598648071289}, + {103.891381, 1.347162}, + {19.400839, 51.854501}, + {5.617159, 58.730036}, + {14.295498, 57.855824}, + {6.586304, 43.226395}, + {-91.710433959961, 30.116958618164}, + {-51.068073, -21.681903}, + {2.174218, 41.380602}, + {-99.63295, 19.281921}, + {10.165786743164, 56.158676147461}, + {100.02571105957, 9.5134735107422}, + {16.267513, 45.537455}, + {116.49559020996, 39.787673950195}, + {-0.775528, 53.04982}, + {13.437145, 41.560779}, + {10.276763, 59.2422}, + {3.955192, 44.03718}, + {-79.119262, 43.819125}, + {-98.597939, 22.933888}, + {127.678017, 26.214878}, + {-106.423874, 31.697028}, + {37.59264, 54.202766}, + {-93.293891, 45.107837}, + {26.164701, 50.674418}, + {6.584244, 36.375504}, + {5.414802, 43.24491}, + {138.578346, -34.874412}, + {115.750815, -31.728244}, + {8.701752, 50.127198}, + {42.178573608398, 19.164962768555}, + {28.913956, 41.041489}, + {20.996949, 50.17564}, + {-50.105668, -29.76952}, + {13.238754, 43.517532}, + {19.895554, 50.09079}, + {-96.781448, 32.605637}, + {9.916878, 53.5897}, + {-72.617569, -38.732987}, + {116.288223, 39.760345}, + {-111.837915, 41.836163}, + {80.251465, 13.073196}, + {12.440582, 51.325544}, + {12.026586, 47.234259}, + {-5.839815, 43.360079}, + {28.007171, -26.67294}, + {5.8797454833984, 49.557266235352}, + {6.2052154541016, 51.372756958008}, + {28.247051, -15.506516}, + {-114.085464, 51.055069}, + {-95.431594, 30.41771}, + {11.996933, 50.901444}, + {12.813943, 55.9471}, + {-75.042115, 44.993134}, + {5.712204, 45.758537}, + {13.017154, 47.809547}, + {12.425028, 55.631883}, + {-0.66092, 51.597977}, + {11.975779, 50.894856}, + {-122.21122741699, 38.105392456055}, + {9.391938, 49.989069}, + {12.754358, 55.987737}, + {14.495373, 40.865816}, + {101.740402, 3.102951}, + {21.568649, 50.578652}, + {104.645521, 14.640224}, + {-46.773087, -23.679805}, + {12.915705, 52.561631}, + {-5.737399, 37.591834}, + {-77.126083374023, -12.05680847168}, + {-43.428268432617, -22.765731811523}, + {-157.83714294434, 21.513290405273}, + {99.075394, 2.965622}, + {24.880309, 59.443219}, + {-90.280838012695, 38.745346069336}, + {113.303032, 23.222351}, + {-70.98374, 42.247549}, + {4.144723, 44.406583}, + {18.434404, -34.174665}, + {-118.1421661377, 33.850936889648}, + {10.059357, 56.261673}, + {55.812215, 58.104695}, + {38.903412, 37.160568}, + {-74.771153, 10.973361}, + {13.48716, 52.423531}, + {8.6071014404297, 53.51921081543}, + {-2.574234, 36.813583}, + {58.962675, 53.372356}, + {-51.844594, -21.86889}, + {-96.71745300293, 17.070693969727}, + {-82.310428, 38.422624}, + {104.863815, 15.199585}, + {106.669865, 10.787601}, + {75.890808, 30.882568}, + {4.85784, 45.757896}, + {120.905914, 14.431915}, + {7.411207, 48.771845}, + {8.7032318115234, 52.75016784668}, + {-0.092697143554688, 51.618576049805}, + {-45.127579, -23.503738}, + {15.799942, 50.166092}, + {-49.39419, -25.579606}, + {151.257809, -23.831008}, + {119.453688, 25.996969}, + {14.450914, 41.241228}, + {103.840027, 1.389771}, + {136.77085876465, 35.401382446289}, + {-122.362289, 37.924805}, + {10.363822, 59.824566}, + {50.179367, 53.212051}, + {4.5023345947266, 12.305374145508}, + {80.400009155273, 23.823165893555}, + {9.869843, 44.852028}, + {1.931002, 41.485291}, + {49.081879, 55.84156}, + {17.04226, 45.299879}, + {-66.123962, -17.454529}, + {-75.587082, 6.21666}, + {1.213992, 44.869326}, + {-61.033888, 14.622218}, + {-43.227044, -22.910269}, + {112.72590637207, -7.4727630615234}, + {-40.263092, -20.166467}, + {95.29289, 5.518896}, + {86.110153, 25.160752}, + {13.568245, 52.53733}, + {14.762801, 41.049424}, + {16.313454, 48.260888}, + {103.86085, 1.376848}, + {-81.738187, 28.020024}, + {-84.082814, 9.95589}, + {28.282136, -25.767218}, + {27.196427, 45.713426}, + {12.528265, 55.785798}, + {8.5865020751953, 50.134048461914}, + {8.473108, 52.186883}, + {11.405392, 47.27944}, + {138.535672, -34.938026}, + {7.520329, 47.215056}, + {20.432510375977, 44.763107299805}, + {24.130284, 56.957932}, + {103.655319, 1.522418}, + {1.91185, 47.899246}, + {-95.513763, 30.009842}, + {2.623459, 48.802804}, + {-88.021363, 15.488721}, + {8.516663, 47.375445}, + {19.073409, 51.603166}, + {19.251598, 51.616747}, + {56.076966, 58.004037}, + {-73.974304, 8.993078}, + {3.193588, 49.486405}, + {3.037258, 51.0179}, + {4.765457, 52.643051}, + {44.88533, 41.684649}, + {-0.762311, 46.948426}, + {-6.763112, 33.997545}, + {13.043518, 50.909271}, + {4.077005, 51.526682}, + {-89.072341918945, 42.292556762695}, + {4.43141, 50.84424}, + {-0.199421, 50.983919}, + {-55.199352, 5.784988}, + {4.4199371337891, 45.451126098633}, + {-100.946276, 20.493853}, + {8.108749, 52.29805}, + {19.812647, 49.986394}, + {4.798352, 51.668641}, + {31.841812133789, -28.784866333008}, + {-88.035507202148, 44.495315551758}, + {-43.123859, -22.892885}, + {26.175919, 56.337204}, + {2.214717, 48.803542}, + {-64.445877, -31.426926}, + {5.549057, 51.421097}, + {7.602569, 51.808866}, + {-118.205044, 33.91965}, + {31.352371, 30.060379}, + {-9.209524, 38.65334}, + {-0.379028, 50.833054}, + {-99.108353, 19.483566}, + {103.770676, 1.389771}, + {0.274325, 49.452328}, + {-4.511028, 37.057114}, + {-3.0123138427734, 43.348617553711}, + {9.7016143798828, 52.439804077148}, + {5.62107, 45.288817}, + {-2.018051, 52.604795}, + {29.101753, 41.0075}, + {3.36731, 6.488113}, + {121.12632751465, 24.972610473633}, + {-2.6277923583984, 53.653793334961}, + {-43.264388, -22.875177}, + {-2.512828, 53.792005}, + {10.653823, 63.403393}, + {-95.485062, 30.03566}, + {-16.680171, 28.098933}, + {-98.21846, 19.035874}, + {37.246941, 55.603457}, + {29.161697, 40.898117}, + {10.154067, 49.783387}, + {37.975848, 48.418808}, + {-7.575828, 52.11682}, + {35.295717, 36.991806}, + {-8.653403, 52.248688}, + {1.4398956298828, 47.69645690918}, + {4.949039, 50.479459}, + {1.084556, 49.357864}, + {8.453625, 47.398724}, + {-46.667863, -23.511429}, + {27.64778137207, 46.200942993164}, + {-57.563552856445, -38.025741577148}, + {12.766799926758, 50.809707641602}, + {35.751572, 36.98822}, + {9.742074, 49.653409}, + {6.1022186279297, 51.291732788086}, + {0.135485, 51.745781}, + {51.583572, 25.167374}, + {107.560616, -6.906624}, + {152.939301, -27.083015}, + {44.813919, 41.782608}, + {-3.75087, 51.572067}, + {12.827225, 47.414834}, + {79.555043, 18.014439}, + {35.754318, -1.159156}, + {2.35913, 42.563827}, + {3.126007, 50.949485}, + {-74.124069213867, 40.849227905273}, + {34.79229, 31.939331}, + {-99.260424, 19.457586}, + {74.323196, 31.524857}, + {121.168223, 24.922491}, + {-115.222549, 36.178209}, + {18.320914, 49.54538}, + {5.217132, 59.2939}, + {17.033615, 51.100388}, + {9.545693, 48.836183}, + {77.281265258789, 28.650283813477}, + {16.219391, 48.082214}, + {4.33261, 50.836588}, + {103.92036437988, 1.3245391845703}, + {13.632143, 50.952045}, + {153.443906, -28.071252}, + {12.591544, 42.56762}, + {32.629385, 39.951948}, + {19.702655, 52.556202}, + {103.851185, 1.304958}, + {0.641327, 47.340088}, + {-4.05523, 40.50414}, + {4.759827, 52.6714}, + {9.19281, 48.480606}, + {15.935184, 45.801932}, + {115.896416, -33.727085}, + {-6.165197, 36.659809}, + {3.783108, 50.402445}, + {34.843115, 32.072331}, + {33.643299, 0.792534}, + {12.943983, 58.129395}, + {9.595009, 47.239817}, + {17.513815, 47.694434}, + {-3.361244, 51.387863}, + {-90.521975, 14.625666}, + {-115.262383, 36.111873}, + {24.118154, 56.951932}, + {-80.241869, 25.846235}, + {-96.987992, 32.917099}, + {-99.169945, 19.388809}, + {9.07559, 45.807495}, + {20.507742, 51.990944}, + {121.3158416748, 24.980850219727}, + {104.8706817627, 15.246963500977}, + {26.109695, 44.426651}, + {-111.049692, 32.328844}, + {33.091572, 34.69695}, + {10.038929, 44.050112}, + {9.543687, 45.277863}, + {9.673025, 49.613566}, + {10.100784, 45.591463}, + {7.49305, 44.891385}, + {-121.396041, 44.194259}, + {34.807147, 32.004039}, + {0.165725, 51.7814}, + {102.215938, 15.9957}, + {8.995759, 40.67327}, + {31.174805, 30.073014}, + {-99.086380004883, 19.445114135742}, + {3.8637542724609, 43.527145385742}, + {-8.5425567626953, 42.866592407227}, + {-99.177102, 19.61121}, + {-114.00847, 50.877644}, + {46.743393, 24.746704}, + {77.706985473633, 29.439926147461}, + {114.178274, 22.308402}, + {34.871005, 31.99457}, + {47.154922, 31.83815}, + {11.703873, 48.573303}, + {8.350059, 56.305424}, + {-46.674924, -23.515345}, + {32.611542, 37.972183}, + {12.873303, 56.735634}, + {11.519683, 48.640361}, + {5.400407, 51.516833}, + {9.006211, 50.197023}, + {0.439143, 52.329583}, + {27.471653, 38.007485}, + {9.488954, 48.809757}, + {4.600831, 50.724106}, + {10.849882, 45.477415}, + {46.275946, 36.245006}, + {-71.50673, 42.294617}, + {16.465683, 48.167038}, + {8.385487, 49.009151}, + {-97.695923, 30.244675}, + {6.101466, 49.798626}, + {12.347259, 51.857529}, + {4.447404, 52.168717}, + {6.217482, 52.119863}, + {27.536568, 47.229423}, + {15.470887, 47.03196}, + {-3.3171844482422, 55.084762573242}, + {26.146774, 44.410172}, + {101.720719, 2.804261}, + {-51.191711, -29.923783}, + {3.542882, 45.859481}, + {33.817462, 27.248327}, + {-57.523041, -25.22873}, + {-73.778343, 40.706406}, + {11.615396, 52.165359}, + {-57.943268, -34.924164}, + {109.00291442871, 21.94450378418}, + {121.046677, 14.565125}, + {-46.640083, -23.073485}, + {-62.603363, -31.80937}, + {9.735758, 47.567691}, + {9.4338226318359, 48.402328491211}, + {-3.872544, 40.075791}, + {-51.14799, -29.994736}, + {3.242871, 50.479244}, + {-79.987091, -2.182939}, + {4.398504, 50.850686}, + {-68.133545, -16.496658}, + {8.9215850830078, 48.44352722168}, + {-112.0777130127, 33.447189331055}, + {5.815433, 51.215546}, + {2.813187, 42.083817}, + {12.693863, 41.86409}, + {-79.620011, -6.809618}, + {5.924942, 52.013396}, + {-73.572484, 40.816687}, + {35.102813, 32.812002}, + {16.941855, 41.047905}, + {19.917019, 47.72838}, + {2.31308, 48.870621}, + {-105.252102, 40.021778}, + {6.126412, 49.339745}, + {104.89402770996, 11.57341003418}, + {-99.226456, 18.852768}, + {33.649169, 40.902866}, + {33.650321, 27.401092}, + {5.426975, 51.405449}, + {10.809278, 43.780666}, + {28.275861, -26.149207}, + {-58.38752746582, -34.595260620117}, + {31.116626, 50.887254}, + {-95.091333, 29.467163}, + {29.768906, 40.772629}, + {-79.890858, -2.139942}, + {-71.542122, -32.945696}, + {-80.419445, 25.555326}, + {-79.898757, -2.144674}, + {7.769165, 45.1371}, + {109.135757, -6.852127}, + {0.266001, 51.477324}, + {175.61164855957, -40.350723266602}, + {7.071371, 46.592331}, + {-74.067764282227, 4.6616363525391}, + {23.190362, 47.087571}, + {23.768578, 61.499405}, + {5.4444122314453, 43.557357788086}, + {-97.57052, 35.39628}, + {-117.273612, 33.013282}, + {16.414205, 48.192678}, + {8.551331, 48.178423}, + {72.829056, 19.013626}, + {22.182083129883, 65.61653137207}, + {29.030685, 41.109695}, + {-38.521042, -3.755722}, + {0.219231, 51.944046}, + {-3.765831, 37.21904}, + {77.213795, 28.56705}, + {-79.950942993164, 39.628372192383}, + {9.435433, 55.501235}, + {135.675741, 34.884888}, + {100.621699, 13.620295}, + {18.051224, 59.369888}, + {4.609025, 51.67816}, + {12.579816, 41.908903}, + {-51.214435, -30.037438}, + {19.667961, 46.076347}, + {-73.598098754883, 45.640640258789}, + {-58.375854, -34.602299}, + {11.087723, 49.341488}, + {11.784457, 50.369001}, + {-38.643156, -3.757057}, + {32.84294128418, 39.897537231445}, + {4.4226837158203, 52.089614868164}, + {0.863937, 51.150009}, + {3.82473, 51.487047}, + {5.729336, 50.871682}, + {12.083449, 55.474228}, + {4.822597, 51.55632}, + {22.820321, 47.227311}, + {15.439499, 47.081909}, + {153.116411, -27.842119}, + {4.692804, 50.867625}, + {12.54699, 44.016081}, + {12.527676, 55.835217}, + {21.903576, 42.538376}, + {6.318383, 51.86368}, + {-46.708955, -23.557593}, + {12.565426, 55.668536}, + {-4.908834, 37.036427}, + {-78.482208, -0.22522}, + {15.636368, 50.841675}, + {10.985769, 45.406031}, + {-7.581596, 33.593445}, + {6.916678, 51.116761}, + {-57.553592, -25.414186}, + {14.00623, 48.176064}, + {11.161838, 43.804084}, + {121.5699005127, 25.037155151367}, + {-4.398622, 55.879612}, + {-64.196994, -31.426373}, + {100.039647, 19.606538}, + {32.811012, 39.77922}, + {5.96701, 51.339686}, + {2.305235, 48.764742}, + {-117.214996, 32.868644}, + {8.977746, 45.917989}, + {8.660231, 49.286642}, + {153.414452, -27.971146}, + {-49.205017, -25.516129}, + {-49.271622, -25.434036}, + {6.1434173583984, 51.792984008789}, + {18.614634, 51.890561}, + {24.647267, 49.232795}, + {-6.3727569580078, 53.298110961914}, + {13.239212036133, -8.8062286376953}, + {13.333969116211, -8.8254547119141}, + {13.295516967773, -8.9119720458984}, + {13.443146, -8.698425}, + {13.395767, -8.773727}, + {13.346329, -8.810349}, + {13.496017456055, -8.8185882568359}, + {13.39714050293, -12.588272094727}, + {13.414993286133, -12.60612487793}, + {13.498764, -14.897461}, + {15.027236938477, -14.736099243164}, + {13.461685180664, -14.926986694336}, + {13.493270874023, -14.918746948242}, + {18.042984008789, -9.1413116455078}, + {20.363845825195, -15.79216003418}, + {19.983444213867, -11.576156616211}, + {16.303024291992, -9.5285797119141}, + {11.144695, 53.755172}, + {5.968722, 51.998292}, + {-70.682602, -32.862167}, + {-78.986892700195, 38.161697387695}, + {11.554809, 51.774632}, + {12.09938, 45.584793}, + {8.1511688232422, 47.693710327148}, + {13.658363, 51.276208}, + {9.746901, 52.505181}, + {21.078427, 52.235335}, + {5.860285, 51.000429}, + {-82.665939, 28.204651}, + {12.40346, 41.967253}, + {2.018051, 41.408157}, + {46.724167, 22.285423}, + {28.890609741211, 41.176071166992}, + {5.72113, 45.159988}, + {118.043518, 5.858871}, + {17.026749, 40.906387}, + {101.701915, 2.753761}, + {101.755371, 2.651138}, + {-99.171982, 19.459305}, + {10.555939, 45.44313}, + {-96.462020874023, 43.30192565918}, + {-94.411697387695, 39.243850708008}, + {61.327868, 55.189133}, + {76.528702, 9.02881}, + {16.631851, 47.725449}, + {6.186504, 43.282249}, + {75.105972290039, 12.317733764648}, + {39.171251, 21.51162}, + {13.26530456543, 52.575759887695}, + {28.823318481445, 41.009902954102}, + {76.561268, 8.909029}, + {-99.121522, 19.275177}, + {-71.519184, -16.396656}, + {-40.616455, -20.823212}, + {11.172411, 52.841263}, + {-1.918213, 52.486267}, + {-43.049240112305, -22.904434204102}, + {-71.3687, 46.894181}, + {6.002426, 51.202927}, + {1.398697, 51.383057}, + {116.863889, 39.801206}, + {-3.182053, 40.627304}, + {128.708588, 35.949646}, + {129.265137, 35.575333}, + {128.62586975098, 35.890274047852}, + {129.03566, 35.213242}, + {14.387207, 50.103607}, + {12.312755, 55.91217}, + {12.348719, 55.607214}, + {4.7673797607422, 45.312423706055}, + {3.3226776123047, 51.120071411133}, + {4.830551, 45.768082}, + {-118.387985, 45.981216}, + {-79.405298, 43.938724}, + {-0.066604614257812, 49.231796264648}, + {4.318942, 51.440966}, + {-121.687454, 38.168289}, + {-122.00523376465, 37.95295715332}, + {10.32962, 55.411285}, + {13.053131, 47.79808}, + {16.326370239258, 48.194961547852}, + {10.283558, 55.4263}, + {-87.201919555664, 14.116744995117}, + {3.531025, 50.114628}, + {-2.391129, 51.385574}, + {4.476684, 50.407962}, + {-0.642513, 47.490214}, + {8.593728, 50.028188}, + {4.340836, 50.89595}, + {19.895004, 50.070053}, + {11.057243, 49.674229}, + {-51.179122924805, -30.092239379883}, + {-86.090796, 42.467684}, + {30.377838, 50.458666}, + {8.1017303466797, 49.194717407227}, + {4.484183, 51.911879}, + {21.017532348633, 52.154159545898}, + {24.044285, 49.850459}, + {-43.07571, -22.911825}, + {110.630264, -7.762527}, + {7.045326, 50.95283}, + {-60.677567, -32.955093}, + {116.897507, -1.261368}, + {3.269568, 50.81953}, + {24.880371, 60.158615}, + {-76.027450561523, 42.129135131836}, + {4.530534, 51.879704}, + {15.894471, 50.57127}, + {-43.406631, -13.253504}, + {-43.171892, -22.909758}, + {28.687363, 41.014297}, + {-80.300054, 26.153105}, + {139.586105, 35.750046}, + {-50.854444, -29.637464}, + {113.97422790527, 22.399063110352}, + {21.021652, 52.228661}, + {41.134872436523, 37.895278930664}, + {-82.428359985352, 27.742538452148}, + {5.09024, 51.554993}, + {72.82402, 19.147568}, + {38.292552, 38.350427}, + {32.744066, 26.135789}, + {103.722885, 1.334564}, + {113.115321, 22.974337}, + {75.42594909668, 30.523452758789}, + {6.961349, 51.644119}, + {-73.022003, -36.815615}, + {-78.455429077148, 35.769424438477}, + {12.686894, 50.56664}, + {90.36449, 23.774444}, + {72.550866, 23.011691}, + {4.328908, 48.146513}, + {28.056253, -26.153427}, + {-99.383326, 19.300464}, + {-35.734568, -9.64611}, + {23.889665, 54.929691}, + {-1.176224, 52.651978}, + {37.993126, 55.623436}, + {-101.56517028809, 20.363845825195}, + {6.141873, 49.589555}, + {16.295388, 52.111709}, + {26.801682, 50.60173}, + {100.715089, 14.01555}, + {11.585358, 48.181091}, + {34.839363, 32.093124}, + {-71.060462, -33.466107}, + {-0.132415, 47.573314}, + {23.050266, 48.669794}, + {-121.86378, 37.702537}, + {-93.585931, 44.773318}, + {28.821259, 47.032127}, + {139.721005, 35.562057}, + {106.613731, 10.801964}, + {12.190933, 45.469894}, + {-58.440337, -34.621728}, + {5.787735, 50.970383}, + {11.192256, 50.413516}, + {23.622285, 49.107195}, + {5.145035, 52.085495}, + {55.989151, 54.697952}, + {-58.738541, -34.533737}, + {-103.449326, 20.704375}, + {4.540796, 51.872475}, + {10.044388, 51.184616}, + {8.714218, 48.198411}, + {8.958162, 47.739096}, + {4.8470306396484, 51.824569702148}, + {6.545193, 49.795454}, + {11.654434204102, 48.034286499023}, + {8.577871, 48.120363}, + {6.701429, 61.897303}, + {-0.440826, 53.786316}, + {2.960661, 50.634205}, + {-50.944595, -17.795792}, + {0.58468, 41.173669}, + {-114.99320983887, 53.222579956055}, + {2.445145, 48.703938}, + {20.893936157227, 52.196731567383}, + {-4.206958, 38.008547}, + {-104.864845, 39.403839}, + {-78.298051, 44.340134}, + {100.689398, 13.541477}, + {6.128785, 52.24097}, + {7.722016, 45.35843}, + {13.396298, 52.455362}, + {36.873684, -1.232763}, + {73.043151, 33.597571}, + {2.447174, 48.948909}, + {-122.29362487793, 49.104080200195}, + {103.758774, 1.305542}, + {-73.938674926758, 40.830001831055}, + {-3.247833, 51.39473}, + {13.971176147461, 41.404037475586}, + {31.027822, -29.834884}, + {113.165359, 22.947693}, + {-77.507401, 38.797989}, + {106.872763, -6.239607}, + {-73.799569, -42.639515}, + {5.283149, 52.396681}, + {14.171676635742, 42.454605102539}, + {151.225433, -33.804245}, + {32.964821, 39.271317}, + {-44.156796, -19.959414}, + {19.012897, 47.574947}, + {13.009795, 52.302799}, + {-0.101226, 50.842522}, + {4.543991, 51.854553}, + {-37.334976196289, -5.2054595947266}, + {37.500458, 55.859985}, + {10.987641, 49.579342}, + {12.529215, 49.358725}, + {11.46721, 49.32093}, + {11.112723, 51.080234}, + {4.693254, 52.264337}, + {10.75249, 47.14882}, + {14.246607, 48.313912}, + {10.010604858398, 56.474533081055}, + {30.9984, -29.777333}, + {-79.435499, -1.089056}, + {-3.741793, 40.313775}, + {-77.744064, 39.654465}, + {34.364547729492, 40.157089233398}, + {16.499009, 49.164944}, + {28.299408, -25.794525}, + {14.102725, 57.761882}, + {151.018377, -33.761659}, + {88.34404, 22.758408}, + {14.289357, 48.320685}, + {80.220108032227, 13.029098510742}, + {-113.507652, 53.460846}, + {30.795364379883, -27.772750854492}, + {-99.203364, 19.627731}, + {-2.160285, 53.577085}, + {8.805954, 45.644242}, + {77.731705, 12.986441}, + {12.680941, 42.158696}, + {21.13956, 51.459863}, + {-48.460693, -1.403847}, + {13.451088, 52.501206}, + {9.710541, 45.411129}, + {85.207901000977, 25.608444213867}, + {99.918594360352, 15.509262084961}, + {37.133102416992, 55.995254516602}, + {17.067947387695, 51.000595092773}, + {-121.99562072754, 37.536849975586}, + {-52.107467651367, -32.093124389648}, + {30.151290893555, 59.858322143555}, + {55.537513, -20.89819}, + {30.266647338867, 59.932479858398}, + {11.89888, 42.526932}, + {-0.86174011230469, 52.404098510742}, + {83.305892944336, 17.714767456055}, + {-35.724105834961, -9.6645355224609}, + {-44.256298, -2.529554}, + {-75.574264526367, 6.2010955810547}, + {-47.054442, -22.92106}, + {-47.308846, -23.168458}, + {-34.977664, -8.152039}, + {73.124902, 19.236962}, + {1.1652374267578, 49.018936157227}, + {-3.8211822509766, 40.295791625977}, + {78.500747680664, 17.435989379883}, + {-122.765609, 45.496602}, + {30.405349731445, 59.942092895508}, + {-2.375568, 53.483074}, + {-74.621200561523, 40.365829467773}, + {-79.411239624023, 44.047622680664}, + {3.425086, 6.438675}, + {37.578048706055, 55.720596313477}, + {-98.225326538086, 19.067459106445}, + {-76.789129, 17.973796}, + {43.694686889648, 48.670120239258}, + {-46.528376, -22.594285}, + {40.286179, 53.258972}, + {12.46865, 41.917664}, + {40.43586730957, 56.055679321289}, + {-8.988082, 53.282989}, + {-121.150587, 38.685118}, + {2.3201751708984, 48.869247436523}, + {8.7911224365234, 45.823287963867}, + {37.654266, 55.777588}, + {101.60636901855, 3.1002044677734}, + {34.912499, 32.067866}, + {38.582611, 55.573654}, + {8.7073516845703, 45.331649780273}, + {-80.206375, 25.962296}, + {-0.23002624511719, 51.441421508789}, + {-54.297614, -15.555018}, + {-46.636276245117, -23.549880981445}, + {39.20539855957, 51.670761108398}, + {-2.1649932861328, 53.653793334961}, + {76.560287475586, 60.939102172852}, + {-77.176895141602, 38.785171508789}, + {5.074016, 43.626807}, + {151.109848, -33.977737}, + {14.189529, 40.83395}, + {45.961990356445, 57.492141723633}, + {39.434738, 55.935516}, + {31.234817504883, 58.538589477539}, + {16.239852905273, 39.437484741211}, + {101.74919128418, 3.0356597900391}, + {0.15724182128906, 51.604843139648}, + {-67.589950561523, 10.274276733398}, + {20.584945678711, 63.812026977539}, + {29.202346801758, 52.034683227539}, + {12.065244, 55.632804}, + {-34.89884, -8.076855}, + {-76.526852, 39.297138}, + {50.12580871582, 53.133316040039}, + {0.47447204589844, 51.376876831055}, + {17.620873, 52.19024}, + {2.713242, 39.557114}, + {69.475479125977, 42.387313842773}, + {-43.285097, -22.646346}, + {37.772598, 44.721451}, + {10.995254516602, 45.437393188477}, + {3.7429046630859, 51.460647583008}, + {-74.045791625977, 4.6918487548828}, + {-100.15892028809, 25.67985534668}, + {37.626113891602, 55.741195678711}, + {-121.8431854248, 38.002395629883}, + {50.594100952148, 26.230545043945}, + {41.821517944336, 44.669723510742}, + {5.5199432373047, 45.563735961914}, + {-79.515021, 9.03341}, + {47.287414, 56.114331}, + {-0.15037536621094, 51.411209106445}, + {-98.869400024414, 19.193801879883}, + {4.5064544677734, 51.262893676758}, + {-73.628311157227, 45.603561401367}, + {16.453347, 48.227268}, + {-63.949805, 45.332681}, + {-100.344315, 25.739594}, + {-121.76628112793, 37.306137084961}, + {20.528183, 48.953476}, + {56.066665649414, 57.986526489258}, + {-2.5838470458984, 53.612594604492}, + {14.401016235352, 37.03010559082}, + {-3.624344, 40.554886}, + {107.604218, 51.82457}, + {76.84455871582, 43.312911987305}, + {-62.261581420898, -38.728866577148}, + {-17.445602416992, 14.677047729492}, + {1.790771, 47.897644}, + {50.754776000977, 56.125717163086}, + {-117.326775, 34.548912}, + {9.2745208740234, 45.536270141602}, + {11.346817, 49.509544}, + {38.996658325195, 45.022659301758}, + {49.139785766602, 55.797500610352}, + {6.9605255126953, 51.441421508789}, + {20.849990844727, 52.445297241211}, + {-53.581924, -25.309982}, + {115.92430114746, -32.010726928711}, + {121.00135803223, 14.58366394043}, + {-122.733769, 48.1263}, + {-84.106521606445, 9.9323272705078}, + {-59.939839, -3.028005}, + {-70.624923706055, -33.393630981445}, + {37.361068725586, 55.793380737305}, + {104.83497619629, 15.238723754883}, + {-69.959564, 18.483124}, + {27.601089477539, 53.911972045898}, + {-96.142044067383, 15.77018737793}, + {37.49153137207, 54.182510375977}, + {28.967514, 40.242577}, + {36.523952, 55.555511}, + {-42.603839, -22.702899}, + {-100.674248, 18.353348}, + {4.756288, 52.669091}, + {1.2599945068359, 45.831527709961}, + {-118.347949, 34.046472}, + {-0.072098, 39.990234}, + {16.246033, 39.307709}, + {-70.295333862305, -18.476943969727}, + {29.298477, 41.115646}, + {-122.23457336426, 37.881546020508}, + {9.2841339111328, 52.336807250977}, + {-70.905075073242, 47.078475952148}, + {23.118668, 60.383606}, + {-73.33854675293, 45.831527709961}, + {77.032699584961, 52.295608520508}, + {39.841232299805, 54.756546020508}, + {55.385513305664, 25.339279174805}, + {11.319351196289, 51.797103881836}, + {7.6567840576172, 51.714706420898}, + {104.27604675293, 52.283248901367}, + {33.372345, 35.144234}, + {-60.112253, -33.51344}, + {41.393051147461, 56.874160766602}, + {0.308249, 49.32323}, + {-6.176833, 36.352463}, + {-63.16631, -17.767086}, + {73.720321655273, 18.663711547852}, + {12.747573852539, 46.831283569336}, + {-7.3876190185547, 41.426010131836}, + {-73.567755, 45.497569}, + {14.538345336914, 40.739364624023}, + {22.599563598633, 51.242294311523}, + {30.517273, 50.465012}, + {40.19416809082, 50.324935913086}, + {26.384353637695, 54.484634399414}, + {34.385147094727, 53.499984741211}, + {175.267639, -37.729111}, + {-74.124069213867, 4.6231842041016}, + {31.27326965332, 30.05241394043}, + {-67.592011, 10.264664}, + {-7.414569, 53.192473}, + {-70.674362182617, -33.466415405273}, + {2.1141815185547, 41.406784057617}, + {89.506301879883, 24.54963684082}, + {30.225448608398, 55.21110534668}, + {-51.654281616211, -23.255996704102}, + {-2.490009, 41.762027}, + {-0.286061, 44.821979}, + {-0.101056, 49.255978}, + {49.750900268555, 40.51139831543}, + {-75.82489, 4.33548}, + {100.26191711426, 16.819381713867}, + {-51.17569, -30.103912}, + {35.320358276367, 37.009506225586}, + {47.976608276367, 29.319076538086}, + {-3.047858, 53.146212}, + {14.548326, 53.441863}, + {31.905696, 0.163857}, + {15.987688, 54.00598}, + {21.467971801758, 41.987686157227}, + {15.489073, 54.160128}, + {14.641342163086, 53.379135131836}, + {15.535354614258, 53.436813354492}, + {14.450454711914, 53.932571411133}, + {16.60514831543, 54.475021362305}, + {15.921249389648, 54.236068725586}, + {15.006637573242, 54.074020385742}, + {16.206893920898, 54.211349487305}, + {14.569051, 53.415598}, + {14.514999389648, 53.471145629883}, + {14.608383178711, 53.402481079102}, + {14.903931, 54.045192}, + {14.326858520508, 53.033065795898}, + {14.510879516602, 53.451919555664}, + {14.524612426758, 53.432693481445}, + {15.855331420898, 54.20036315918}, + {19.587936401367, 49.834671020508}, + {18.546981811523, 54.505233764648}, + {16.212387084961, 51.198348999023}, + {17.098159790039, 51.10221862793}, + {17.00065612793, 51.117324829102}, + {20.936508178711, 51.072006225586}, + {17.03498840332, 51.302719116211}, + {23.166732788086, 53.148422241211}, + {20.942001342773, 49.978866577148}, + {18.217391967773, 50.348281860352}, + {17.470321655273, 51.684494018555}, + {19.115524291992, 49.602584838867}, + {21.017532348633, 52.119827270508}, + {21.294937133789, 52.247543334961}, + {17.114639282227, 51.14616394043}, + {16.499404907227, 50.837173461914}, + {16.156769, 51.196039}, + {15.773932, 50.898847}, + {16.285171508789, 50.757522583008}, + {15.338973999023, 50.920944213867}, + {17.030868530273, 51.111831665039}, + {16.812515258789, 50.591354370117}, + {15.683670043945, 50.859146118164}, + {17.014389038086, 51.125564575195}, + {17.043228149414, 51.104965209961}, + {16.944351196289, 51.140670776367}, + {16.955337524414, 51.045913696289}, + {16.162948608398, 51.213455200195}, + {16.506252, 50.612048}, + {16.057205200195, 51.665267944336}, + {16.228867, 50.747223}, + {15.987167358398, 51.67350769043}, + {16.041165, 51.573601}, + {16.195907592773, 51.379623413086}, + {16.977310180664, 51.117324829102}, + {16.989669799805, 51.055526733398}, + {16.633987426758, 50.418319702148}, + {17.382431030273, 51.21208190918}, + {16.176681518555, 51.169509887695}, + {16.142349243164, 51.199722290039}, + {17.028121948242, 51.100845336914}, + {15.720748901367, 50.903091430664}, + {15.735855102539, 50.903091430664}, + {16.706771850586, 50.415573120117}, + {15.87043762207, 51.187362670898}, + {17.029495239258, 51.111831665039}, + {16.469192504883, 50.852279663086}, + {114.04953, 22.624741}, + {0.479622, 51.568847}, + {19.645614624023, 50.138168334961}, + {18.545608520508, 50.11344909668}, + {18.520889282227, 50.017318725586}, + {18.518142700195, 50.099716186523}, + {18.59504699707, 49.955520629883}, + {18.217391967773, 50.094223022461}, + {19.447860717773, 50.488357543945}, + {17.076187133789, 52.336807250977}, + {20.952987670898, 52.327194213867}, + {19.208908081055, 50.330429077148}, + {9.764497, 54.487145}, + {16.396408081055, 51.507339477539}, + {20.749740600586, 51.122817993164}, + {18.77082824707, 50.302963256836}, + {14.49577331543, 53.401107788086}, + {21.029891967773, 52.240676879883}, + {18.729629516602, 50.293350219727}, + {18.695297241211, 50.278244018555}, + {21.804428100586, 49.881362915039}, + {20.90217590332, 52.229690551758}, + {20.984573364258, 52.22282409668}, + {18.659591674805, 50.322189331055}, + {21.388320922852, 50.93879699707}, + {18.641738891602, 50.338668823242}, + {17.902908325195, 50.720443725586}, + {16.340103149414, 51.94953918457}, + {19.578323364258, 50.271377563477}, + {18.610153198242, 50.578994750977}, + {18.96858215332, 50.280990600586}, + {18.91227722168, 50.171127319336}, + {18.545608520508, 50.095596313477}, + {18.669204711914, 50.158767700195}, + {20.668716430664, 49.627304077148}, + {16.390914916992, 50.407333374023}, + {19.522018432617, 51.758651733398}, + {19.468460083008, 51.702346801758}, + {19.997177124023, 50.074996948242}, + {19.95735168457, 50.072250366211}, + {19.968338012695, 50.074996948242}, + {19.903793334961, 50.085983276367}, + {19.977951049805, 50.028305053711}, + {20.027389526367, 50.090103149414}, + {21.18782043457, 52.185745239258}, + {19.865341186523, 50.050277709961}, + {20.019149780273, 50.085983276367}, + {20.019149780273, 50.085983276367}, + {20.049362182617, 49.989852905273}, + {15.385665893555, 51.890487670898}, + {20.061721801758, 49.984359741211}, + {15.24284362793, 52.757034301758}, + {17.846603393555, 51.637802124023}, + {16.356582641602, 51.271133422852}, + {20.984573364258, 52.24479675293}, + {19.353103637695, 50.43342590332}, + {20.705795288086, 52.13493347168}, + {19.696426391602, 50.778121948242}, + {19.384689331055, 50.426559448242}, + {22.356079, 53.791489}, + {20.906295776367, 52.22282409668}, + {21.040878295898, 52.250289916992}, + {21.013412475586, 52.236557006836}, + {20.984573364258, 52.316207885742}, + {19.90104675293, 50.050277709961}, + {21.035385131836, 52.233810424805}, + {19.892807006836, 50.079116821289}, + {19.973144, 50.081863}, + {18.459776, 50.196877}, + {19.961471557617, 50.011825561523}, + {19.899673461914, 50.109329223633}, + {21.028518676758, 52.307968139648}, + {20.019149780273, 50.085983276367}, + {18.831253051758, 50.134048461914}, + {18.195419, 50.0084}, + {20.028076, 50.090103}, + {18.839492797852, 50.149154663086}, + {20.958480834961, 52.184371948242}, + {18.522262573242, 50.068130493164}, + {18.553394, 50.121994}, + {19.844741821289, 49.992599487305}, + {19.390182495117, 51.09260559082}, + {18.257217407227, 50.300216674805}, + {21.174087524414, 52.206344604492}, + {18.24348449707, 50.312576293945}, + {20.19905090332, 49.908828735352}, + {21.001052856445, 49.57649230957}, + {21.068344116211, 52.21321105957}, + {16.227493286133, 51.911087036133}, + {19.946365356445, 50.051651000977}, + {20.04524230957, 50.03791809082}, + {19.916152954102, 50.092849731445}, + {22.964859008789, 50.692977905273}, + {21.213912963867, 52.162399291992}, + {20.22102355957, 49.477615356445}, + {21.952743530273, 51.419448852539}, + {15.227737426758, 52.729568481445}, + {72.482834, 30.475235}, + {113.105545, 23.079605}, + {114.29472, 23.198319}, + {-45.919759, -21.677559}, + {20.149809, 46.261368}, + {15.365753, 46.953506}, + {11.573215, 50.872291}, + {-109.546127, 31.320419}, + {-45.047185, -22.710218}, + {76.068924, 10.650833}, + {5.916307, 45.566419}, + {114.381409, 23.081589}, + {-3.427734, 55.024612}, + {-8.600118, 52.650003}, + {4.89813, 52.370557}, + {3.286862, 50.88237}, + {13.248138, 38.199463}, + {-74.272096, 40.551648}, + {8.174089, 51.82094}, + {24.079571, 49.783459}, + {24.699326, 49.006062}, + {135.214135, 34.836371}, + {9.670029, 45.688248}, + {10.885613, 59.948734}, + {-49.316984, -16.715929}, + {19.188941, 47.455}, + {101.997089, 2.660594}, + {-94.44465637207, 39.241104125977}, + {145.3615, -37.787924}, + {16.014633, 45.805264}, + {121.04187, 14.374237}, + {6.8534088134766, 50.628433227539}, + {37.647981, 55.712673}, + {-2.887802, 51.308837}, + {24.725442, 60.163819}, + {-52.442001, -29.714172}, + {28.658752, 41.058197}, + {-71.173668, 8.581696}, + {-70.239105, 8.610471}, + {106.848591, -6.304092}, + {29.358389, -25.865851}, + {-2.695195, 54.601258}, + {123.916855, 10.313187}, + {4.830057, 52.176021}, + {9.07678, 48.823946}, + {28.393126, -15.39518}, + {-46.674118, -23.581772}, + {-1.50238, 53.681946}, + {-49.955024, -28.262077}, + {-2.225829, 51.880011}, + {-35.767359, -9.594259}, + {29.086075, 41.028671}, + {19.057582, 47.497809}, + {4.804177, 52.654935}, + {29.292297, 40.921669}, + {-76.751174926758, 39.352340698242}, + {-76.545181274414, 3.4284210205078}, + {8.114654, 49.84912}, + {12.103842, 50.017319}, + {4.427305, 51.926442}, + {-67.037328, 10.595373}, + {2.250137, 41.460571}, + {-121.984863, 37.297745}, + {78.464699, 17.434246}, + {17.968826293945, 50.493850708008}, + {20.998306274414, 52.233810424805}, + {17.213516235352, 52.811965942383}, + {18.130874633789, 51.757278442383}, + {17.466201782227, 50.853652954102}, + {17.933120727539, 50.658645629883}, + {17.302780151367, 50.929183959961}, + {16.911392211914, 51.302719116211}, + {14.672927856445, 52.616958618164}, + {15.503768920898, 51.957778930664}, + {21.075210571289, 51.960525512695}, + {20.817031860352, 52.291488647461}, + {20.983200073242, 52.220077514648}, + {21.014785766602, 52.174758911133}, + {21.01203918457, 52.242050170898}, + {21.050491333008, 52.159652709961}, + {23.495014, 53.407238}, + {22.756118774414, 49.797592163086}, + {18.936996459961, 51.610336303711}, + {15.566940307617, 51.262893676758}, + {17.489547729492, 51.346664428711}, + {18.709030151367, 50.54328918457}, + {15.131607055664, 52.437057495117}, + {19.609909057617, 51.231307983398}, + {21.016159057617, 52.225570678711}, + {18.741989, 50.968323}, + {17.163805, 51.017349}, + {18.6232, 50.255585}, + {16.888046264648, 52.360153198242}, + {16.916885375977, 52.382125854492}, + {16.993789672852, 52.378005981445}, + {20.749740600586, 51.12419128418}, + {19.067459106445, 49.764633178711}, + {18.51676940918, 54.374771118164}, + {17.963333129883, 52.272262573242}, + {18.24348449707, 52.229690551758}, + {17.852096557617, 52.909469604492}, + {19.892807006836, 50.072250366211}, + {18.796920776367, 53.10173034668}, + {18.691177368164, 49.726181030273}, + {22.485580444336, 51.122817993164}, + {18.584060668945, 53.039932250977}, + {17.497787475586, 51.961898803711}, + {19.880447387695, 50.492477416992}, + {20.24299621582, 49.513320922852}, + {15.51887512207, 54.163284301758}, + {20.686569213867, 53.679885864258}, + {15.278549194336, 52.757034301758}, + {17.403030395508, 54.163284301758}, + {22.475967407227, 50.065383911133}, + {17.389297485352, 50.318069458008}, + {16.362075805664, 54.198989868164}, + {20.041122436523, 52.494735717773}, + {22.371597290039, 53.024826049805}, + {16.246719360352, 54.185256958008}, + {22.003555297852, 50.040664672852}, + {18.731003, 50.292664}, + {19.997862, 49.328614}, + {17.489547729492, 53.361282348633}, + {17.578811645508, 54.418716430664}, + {21.196060180664, 51.401596069336}, + {17.389298, 50.680962}, + {19.494552612305, 51.75178527832}, + {16.842727661133, 52.394485473633}, + {16.530990600586, 51.166763305664}, + {17.142105102539, 51.14616394043}, + {20.050735473633, 49.406204223633}, + {20.420150756836, 49.785232543945}, + {19.218522, 49.977494}, + {18.192673, 54.41803}, + {20.729141235352, 50.004959106445}, + {17.626876831055, 50.846786499023}, + {16.631240844727, 50.833053588867}, + {16.496658325195, 50.853652954102}, + {20.806045, 52.440491}, + {21.947250366211, 51.32194519043}, + {20.060348510742, 50.096969604492}, + {22.469100952148, 51.359024047852}, + {19.142990112305, 50.270004272461}, + {21.970596313477, 51.416702270508}, + {21.07795715332, 52.173385620117}, + {21.149368286133, 51.390609741211}, + {18.563461303711, 51.229934692383}, + {21.027832, 52.277756}, + {20.26496887207, 50.940170288086}, + {22.23014831543, 51.165390014648}, + {23.581467, 52.753601}, + {23.346633911133, 53.65104675293}, + {19.150543, 50.286484}, + {19.458847045898, 51.758651733398}, + {18.413772583008, 54.675521850586}, + {21.013412475586, 53.565902709961}, + {21.001052856445, 52.202224731445}, + {18.147183, 50.338154}, + {21.84700012207, 53.627700805664}, + {19.129257202148, 50.249404907227}, + {19.140244, 50.288315}, + {19.402542114258, 51.727066040039}, + {19.432754516602, 51.736679077148}, + {21.014786, 50.015259}, + {16.443099975586, 53.261032104492}, + {19.592481, 51.787309}, + {19.51789855957, 51.61994934082}, + {20.86784362793, 49.52018737793}, + {20.907669067383, 52.298355102539}, + {20.39680480957, 49.728927612305}, + {20.979080200195, 52.180252075195}, + {21.082077026367, 52.248916625977}, + {21.146621704102, 52.225570678711}, + {19.986586, 50.061181}, + {20.609664916992, 52.229690551758}, + {19.881537, 49.991622}, + {21.279830932617, 49.65202331543}, + {21.120529174805, 52.313461303711}, + {20.319900512695, 49.452896118164}, + {18.481063842773, 54.553298950195}, + {20.981826782227, 52.22282409668}, + {20.915908813477, 52.207717895508}, + {20.05485534668, 49.47624206543}, + {14.472427368164, 53.548049926758}, + {19.888687133789, 49.557266235352}, + {20.307540893555, 49.421310424805}, + {22.415542602539, 49.163131713867}, + {16.940231323242, 51.13655090332}, + {21.81266784668, 49.756393432617}, + {16.838607788086, 52.413711547852}, + {21.782455444336, 49.701461791992}, + {19.38606262207, 51.73942565918}, + {16.120376586914, 52.118453979492}, + {19.300918579102, 51.747665405273}, + {19.024887084961, 50.261764526367}, + {19.431381225586, 51.788864135742}, + {19.379196166992, 53.26789855957}, + {17.646102905273, 50.680618286133}, + {18.768081665039, 53.022079467773}, + {17.933120727539, 50.074996948242}, + {15.018997192383, 51.14616394043}, + {17.827377319336, 50.198593139648}, + {20.981826782227, 52.199478149414}, + {22.256240844727, 52.16926574707}, + {19.016647338867, 50.256271362305}, + {18.271378, 50.265895}, + {17.525462, 50.725126}, + {19.030380249023, 50.268630981445}, + {19.064712524414, 50.22331237793}, + {19.092178344727, 50.254898071289}, + {21.819534301758, 51.470260620117}, + {23.264236450195, 51.062393188477}, + {19.079818725586, 50.290603637695}, + {18.975448608398, 50.234298706055}, + {22.606430053711, 51.771011352539}, + {20.17707824707, 53.23356628418}, + {20.969467163086, 52.236557006836}, + {20.998306274414, 52.254409790039}, + {19.758224487305, 52.537307739258}, + {20.940628051758, 52.041549682617}, + {14.694900512695, 54.008102416992}, + {19.129257202148, 50.287857055664}, + {19.015274047852, 50.319442749023}, + {20.697555541992, 52.192611694336}, + {17.061080932617, 51.085739135742}, + {21.215286254883, 52.162399291992}, + {18.97819519043, 50.320816040039}, + {15.553207397461, 51.571884155273}, + {18.920516967773, 50.290603637695}, + {18.915023803711, 50.294723510742}, + {19.180068969727, 50.268630981445}, + {15.576553344727, 52.154159545898}, + {18.893051147461, 51.547164916992}, + {19.15397644043, 50.320816040039}, + {18.923263549805, 50.331802368164}, + {19.21028137207, 50.272750854492}, + {17.024002075195, 51.111831665039}, + {23.221664428711, 50.557022094727}, + {20.832138061523, 52.588119506836}, + {23.867111206055, 50.811080932617}, + {22.199935913086, 51.398849487305}, + {18.514022827148, 54.475021362305}, + {18.614273071289, 54.378890991211}, + {16.502151489258, 50.581741333008}, + {18.755722045898, 54.091873168945}, + {19.142598, 50.305906}, + {16.747970581055, 50.511703491211}, + {18.487930297852, 54.431076049805}, + {16.172561645508, 51.405715942383}, + {16.201400756836, 51.397476196289}, + {21.79069519043, 50.043411254883}, + {23.183212280273, 53.134689331055}, + {18.610701, 50.222489}, + {22.003555297852, 50.040664672852}, + {18.728256, 50.28511}, + {18.916397094727, 50.283737182617}, + {16.113510131836, 53.762283325195}, + {18.72688293457, 54.373397827148}, + {20.99967956543, 52.232437133789}, + {21.196060180664, 51.008834838867}, + {20.73600769043, 50.868759155273}, + {14.432601928711, 52.963027954102}, + {20.630264282227, 50.853652954102}, + {16.312637329102, 50.811080932617}, + {18.156967163086, 53.155288696289}, + {20.64811706543, 50.890731811523}, + {20.61653137207, 50.849533081055}, + {20.203170776367, 50.557022094727}, + {17.004776000977, 51.111831665039}, + {16.281051635742, 50.764389038086}, + {21.391067504883, 50.949783325195}, + {18.607406616211, 52.989120483398}, + {15.713882446289, 50.887985229492}, + {21.895065307617, 52.788619995117}, + {21.50505065918, 53.086624145508}, + {21.465225219727, 53.239059448242}, + {17.771072387695, 54.09049987793}, + {23.067855834961, 53.008346557617}, + {19.522018432617, 54.321212768555}, + {19.502792358398, 53.90510559082}, + {20.719528198242, 49.984359741211}, + {17.02262878418, 51.117324829102}, + {21.051864624023, 50.084609985352}, + {20.906295776367, 50.110702514648}, + {21.426773071289, 50.93879699707}, + {18.471450805664, 54.556045532227}, + {18.687057495117, 54.348678588867}, + {16.918258666992, 52.387619018555}, + {15.822372436523, 52.239303588867}, + {14.607009887695, 52.321701049805}, + {19.081192016602, 49.838790893555}, + {19.026260375977, 49.841537475586}, + {19.090805053711, 49.84977722168}, + {21.930770874023, 52.299728393555}, + {15.480422973633, 51.953659057617}, + {20.991439819336, 52.214584350586}, + {19.082565307617, 49.80583190918}, + {19.225387573242, 49.786605834961}, + {16.747970581055, 53.096237182617}, + {19.195175170898, 49.786605834961}, + {19.002914428711, 49.726181030273}, + {22.202682495117, 52.833938598633}, + {16.75895690918, 53.153915405273}, + {23.34114074707, 53.125076293945}, + {14.483413696289, 53.429946899414}, + {19.200668334961, 49.691848754883}, + {19.196548461914, 49.660263061523}, + {23.401565551758, 53.743057250977}, + {19.218521118164, 50.673751831055}, + {18.205032348633, 50.085983276367}, + {17.305526733398, 50.933303833008}, + {18.763961791992, 50.176620483398}, + {18.222885131836, 50.080490112305}, + {18.901290893555, 50.172500610352}, + {18.839492797852, 50.149154663086}, + {19.335250854492, 50.74104309082}, + {15.642471313477, 50.85090637207}, + {15.50651550293, 51.938552856445}, + {18.801040649414, 50.298843383789}, + {18.735122680664, 50.302963256836}, + {21.050491333008, 52.001724243164}, + {19.40803527832, 50.143661499023}, + {18.67057800293, 50.298843383789}, + {18.63644, 50.325062}, + {19.578323364258, 50.271377563477}, + {20.84587097168, 49.617691040039}, + {18.985061645508, 50.271377563477}, + {18.483810424805, 50.043411254883}, + {18.960342407227, 50.217819213867}, + {18.699417114258, 50.239791870117}, + {19.865341186523, 50.064010620117}, + {19.994430541992, 50.092849731445}, + {19.997177124023, 50.065383911133}, + {20.02326965332, 50.099716186523}, + {17.024002075195, 52.581253051758}, + {21.157608032227, 52.21321105957}, + {20.061721801758, 49.984359741211}, + {15.230484008789, 52.724075317383}, + {19.953231811523, 49.934921264648}, + {19.384689331055, 50.426559448242}, + {17.030868530273, 51.072006225586}, + {19.95803, 50.066237}, + {23.500442504883, 53.414840698242}, + {19.935837, 50.028763}, + {18.430948, 50.763016}, + {20.000839, 50.048447}, + {18.717269897461, 50.173873901367}, + {19.898913, 50.088508}, + {19.91066, 50.008049}, + {20.937881469727, 52.085494995117}, + {18.606308, 49.946732}, + {20.144119262695, 51.972885131836}, + {19.714279174805, 50.002212524414}, + {20.065841674805, 49.879989624023}, + {18.445358276367, 50.007705688477}, + {20.904922485352, 52.185745239258}, + {20.958480834961, 52.275009155273}, + {22.59407043457, 51.23405456543}, + {16.86117, 51.146695}, + {20.937195, 52.240677}, + {17.532768, 50.316655}, + {21.35124206543, 49.812698364258}, + {20.786349, 52.079709}, + {22.199935913086, 49.561386108398}, + {20.113906860352, 52.781753540039}, + {22.079499, 49.564339}, + {21.474158, 50.615294}, + {23.567733764648, 53.115463256836}, + {22.527657, 51.255876}, + {21.303176879883, 51.21208190918}, + {20.28694152832, 51.393356323242}, + {21.196060180664, 51.401596069336}, + {21.428146362305, 51.272506713867}, + {20.981826782227, 52.23518371582}, + {18.981766, 50.271927}, + {19.005661010742, 50.278244018555}, + {19.114151000977, 50.278244018555}, + {19.094467, 50.263596}, + {15.228317, 53.929852}, + {17.070007, 51.113205}, + {17.942733764648, 50.676498413086}, + {15.33073425293, 51.613082885742}, + {18.950729370117, 50.297470092773}, + {18.954176, 50.348284}, + {16.234817, 51.217575}, + {18.940103, 50.343788}, + {18.904037475586, 50.340042114258}, + {19.057847, 50.351715}, + {19.972457885742, 50.057144165039}, + {18.887557983398, 50.33317565918}, + {17.080307006836, 51.063766479492}, + {18.504409790039, 54.560165405273}, + {21.949996948242, 50.202713012695}, + {21.612167358398, 50.053024291992}, + {21.034869, 52.095795}, + {21.976089477539, 50.040664672852}, + {18.618392944336, 54.370651245117}, + {20.539627, 50.824127}, + {19.581069946289, 53.420333862305}, + {20.605888, 50.894232}, + {20.343704, 50.461349}, + {20.830764770508, 51.099472045898}, + {18.766708374023, 54.069900512695}, + {22.897567749023, 53.828201293945}, + {20.44075012207, 49.969253540039}, + {20.589897, 49.928932}, + {23.238143920898, 50.735549926758}, + {21.477584, 50.089074}, + {20.668704, 49.857357}, + {19.054568, 49.847177}, + {16.73698425293, 53.144302368164}, + {19.098358, 49.798965}, + {17.017135620117, 51.88362121582}, + {18.634186, 49.749527}, + {18.641739, 49.751129}, + {19.055784, 49.56173}, + {16.853713989258, 52.457656860352}, + {19.615208, 49.859195}, + {19.066389, 49.75124}, + {16.91649, 51.03992}, + {20.948502, 51.985336}, + {18.711776733398, 49.988479614258}, + {20.671463, 52.117081}, + {19.205696, 50.326246}, + {18.949748, 50.393601}, + {16.078152, 51.653596}, + {18.93013, 50.42656}, + {18.864212036133, 50.397720336914}, + {18.722287, 50.299329}, + {18.671951293945, 50.275497436523}, + {15.804978, 50.811081}, + {19.453353881836, 50.268630981445}, + {19.347952, 50.148039}, + {18.659591674805, 50.28923034668}, + {18.641741, 50.377808}, + {21.037445, 52.091675}, + {19.439965, 50.068474}, + {16.903841, 51.019823}, + {17.059707641602, 51.12419128418}, + {17.059707641602, 51.107711791992}, + {17.038422, 51.109772}, + {17.03498840332, 51.106338500977}, + {19.449359, 51.790737}, + {20.958481, 52.245483}, + {15.050582885742, 51.247787475586}, + {19.256973266602, 50.215072631836}, + {17.076187, 51.082306}, + {19.990311, 50.065384}, + {21.006088, 52.221451}, + {18.905999, 50.180544}, + {21.801681518555, 49.881362915039}, + {20.948867797852, 52.33268737793}, + {21.007919311523, 52.229690551758}, + {21.225585, 51.423574}, + {21.540756225586, 52.173385620117}, + {20.938568, 52.332393}, + {22.242976, 50.921839}, + {19.702855, 51.398412}, + {21.007919, 49.959984}, + {21.082764, 52.207031}, + {21.019137, 52.24359}, + {19.960785, 50.08873}, + {18.544235229492, 50.092849731445}, + {18.805160522461, 49.836044311523}, + {19.101791, 50.822067}, + {18.961715698242, 50.779495239258}, + {19.123764, 50.824814}, + {18.62526, 49.748841}, + {17.93586730957, 50.664138793945}, + {18.437118530273, 50.014572143555}, + {18.250351, 50.357209}, + {19.932289, 50.066414}, + {18.323135, 50.519943}, + {19.912033, 50.07019}, + {19.939498901367, 49.992599487305}, + {19.031753540039, 50.309829711914}, + {22.003555297852, 50.033798217773}, + {18.896484, 50.342789}, + {19.129257, 50.235672}, + {17.133865, 51.102906}, + {15.493469, 51.961212}, + {15.477676391602, 51.939926147461}, + {17.295574, 50.936874}, + {17.816390991211, 51.659774780273}, + {16.918258666992, 52.460403442383}, + {16.911392211914, 52.43293762207}, + {15.22087097168, 52.743301391602}, + {16.597595, 51.16333}, + {20.690689086914, 53.828201293945}, + {18.634872436523, 54.402236938477}, + {18.544235229492, 54.447555541992}, + {20.965752, 52.328487}, + {19.144488, 50.827186}, + {22.185159, 50.520037}, + {19.079819, 50.310516}, + {20.70442199707, 49.73991394043}, + {19.843368530273, 50.156021118164}, + {21.051854, 50.2652}, + {15.038742, 51.767581}, + {19.202041625977, 50.043411254883}, + {19.938806, 49.998782}, + {19.114151000977, 50.242538452148}, + {15.407638549805, 54.159164428711}, + {20.983200073242, 51.372756958008}, + {17.455215, 50.869446}, + {18.958969116211, 50.769882202148}, + {20.464096069336, 50.686111450195}, + {22.015915, 50.019379}, + {16.713638305664, 50.791854858398}, + {20.203170776367, 49.908828735352}, + {16.020126342773, 51.376876831055}, + {19.884567260742, 49.297714233398}, + {18.534622192383, 54.545059204102}, + {22.404556274414, 50.248031616211}, + {19.324264526367, 51.803970336914}, + {18.975448608398, 50.276870727539}, + {19.892807006836, 50.020065307617}, + {17.03498840332, 51.302719116211}, + {17.033615112305, 51.113204956055}, + {17.076187133789, 51.153030395508}, + {18.081436157227, 51.781997680664}, + {17.073440551758, 51.118698120117}, + {20.436630249023, 52.052536010742}, + {19.623641967773, 51.088485717773}, + {19.936752319336, 50.090103149414}, + {19.973831176758, 50.046157836914}, + {19.92301940918, 50.043411254883}, + {17.00065612793, 51.063766479492}, + {18.093795776367, 50.532302856445}, + {18.257217407227, 50.462265014648}, + {17.646102905273, 50.598220825195}, + {20.70442199707, 49.628677368164}, + {18.665085, 50.318756}, + {19.203414916992, 50.208206176758}, + {19.111404418945, 50.316696166992}, + {18.66096496582, 50.234298706055}, + {21.452865600586, 52.592239379883}, + {19.67170715332, 49.860763549805}, + {19.934005737305, 50.38948059082}, + {19.163589477539, 50.753402709961}, + {18.599166870117, 50.78498840332}, + {18.882064819336, 50.10383605957}, + {-103.447625, 20.658384}, + {77.658235, 12.877007}, + {9.515057, 55.509322}, + {12.165402, 49.521606}, + {9.125293, 48.932356}, + {-66.064224243164, 18.426132202148}, + {-5.989822, 37.369672}, + {-67.448652, 10.171526}, + {5.225235, 46.62996}, + {17.145939, 52.267237}, + {-99.143372, 19.440994}, + {75.414617, 11.921198}, + {-74.988782, 39.685136}, + {100.733675, 13.597593}, + {14.544692, 52.340793}, + {24.872544, 49.856763}, + {18.467135, -33.9814}, + {22.878341674805, 47.601699829102}, + {0.656261, 51.802426}, + {17.134415, 48.85524}, + {7.732347, 58.860534}, + {13.294603, 57.806629}, + {-74.974307, 40.639288}, + {6.200228, 52.263152}, + {8.671131, 47.423687}, + {15.02449, 47.32933}, + {13.060684204102, 47.817306518555}, + {27.38926, 44.599686}, + {10.114974975586, 48.46549987793}, + {6.450282, 52.301114}, + {-1.439062, 53.38662}, + {-0.936928, 52.220249}, + {8.471077, 50.023155}, + {9.898289, 56.020368}, + {2.254185, 48.823098}, + {-43.51593, -22.882462}, + {113.97656, 22.522496}, + {28.016161, 40.16681}, + {6.108857, 49.355393}, + {4.773043, 52.286886}, + {-58.599014282227, -34.641952514648}, + {25.624924, 42.466965}, + {15.728439, 50.695725}, + {4.244327, 51.716024}, + {10.297125, 56.232507}, + {-1.823959, 52.508011}, + {3.280105, 49.386368}, + {10.044071, 40.351465}, + {-122.78663635254, 49.274368286133}, + {13.021367, 52.533685}, + {73.076874, 33.678052}, + {-58.439026, -34.576721}, + {55.146904, 25.084396}, + {2.678058, 39.556122}, + {0.084916, 46.736532}, + {11.372909545898, 44.463729858398}, + {-86.497421264648, 35.972671508789}, + {-76.847431, -12.005398}, + {-122.467615, 37.640308}, + {13.522436, 52.403034}, + {106.82815, -6.246097}, + {25.433055, 65.056999}, + {115.885375, -31.947473}, + {-1.304167, 53.708955}, + {-122.434491, 48.865042}, + {7.640574, 44.989945}, + {0.215744, 46.719315}, + {-59.642024, -29.14427}, + {18.831975, 47.376119}, + {-4.864197, 36.509628}, + {43.286819458008, 39.673690795898}, + {-81.348679, 35.710098}, + {106.898784, -6.320012}, + {-0.414468, 39.518531}, + {17.166659, 44.751546}, + {24.93278503418, 60.165939331055}, + {-58.118381, -33.402463}, + {44.130398, 56.128773}, + {12.836943, 47.427078}, + {-99.157831, 19.346078}, + {27.003707885742, 39.065322875977}, + {114.01886, 22.561111}, + {2.182659, 48.797275}, + {14.658278, 48.145966}, + {35.258560180664, 37.057571411133}, + {16.568049, 52.921841}, + {9.14374, 50.198994}, + {-122.27439880371, 37.826614379883}, + {-56.244507, -34.871636}, + {-79.20726, 35.899241}, + {115.869462, -31.919426}, + {4.715191, 52.020951}, + {-83.808665, 46.297743}, + {7.777634, 47.638092}, + {2.192384, 50.163357}, + {39.889984, 52.49611}, + {-0.46932, 51.323001}, + {8.087463, 49.756927}, + {88.383591, 22.533463}, + {88.356857, 22.566605}, + {88.338914, 22.505707}, + {88.341908, 22.591185}, + {4.417876, 52.048417}, + {-96.902389, 33.629837}, + {-8.6194610595703, 41.173324584961}, + {120.331646, 22.719473}, + {-76.936569, -12.030945}, + {28.86077, 46.987126}, + {19.042188, 47.496171}, + {2.358362, 48.858025}, + {113.705635, 22.827301}, + {114.188461, 22.381554}, + {2.243271, 48.930359}, + {11.785228, 50.057012}, + {11.089828, 49.447495}, + {55.996627807617, 54.719467163086}, + {112.361984, 27.008743}, + {6.561826, 49.945704}, + {13.540733, 52.520956}, + {-73.129806518555, 7.1500396728516}, + {-46.905441, -23.183899}, + {-109.454177, 27.119889}, + {152.782783, -27.611106}, + {13.934355, 42.788744}, + {10.991135, 45.44838}, + {34.835587, 31.923065}, + {18.093796, 51.332932}, + {4.91373, 52.335559}, + {-2.98218, 53.405228}, + {13.614209, 43.460873}, + {6.226343, 52.636185}, + {-99.596525, 18.964658}, + {103.815994, 1.31424}, + {-122.509256, 48.770373}, + {25.540351, 45.375506}, + {31.7062, 59.130478}, + {102.090194, 14.957842}, + {18.823013305664, 50.577621459961}, + {116.457138, 39.991804}, + {18.995932, 47.51138}, + {5.786087, 51.295853}, + {88.394623, 22.513504}, + {88.368226, 22.500973}, + {88.307877, 22.50618}, + {88.451041, 22.62243}, + {88.402863, 22.608833}, + {88.391592, 22.515132}, + {88.368791, 22.540383}, + {88.190689, 22.193266}, + {88.282805, 22.516744}, + {88.38812, 22.527183}, + {88.361483, 22.501626}, + {88.364552, 22.534155}, + {88.359738, 22.54912}, + {88.364602, 22.541928}, + {88.36725, 22.602422}, + {88.396683, 22.524878}, + {88.298722, 22.679468}, + {88.304558, 22.640591}, + {88.437629, 22.588241}, + {88.439712, 22.624283}, + {88.285172, 22.585281}, + {88.307236, 22.578003}, + {88.35848, 22.57962}, + {88.366470336914, 22.57209777832}, + {88.35486, 22.485955}, + {88.343124, 22.529709}, + {88.354676, 22.529445}, + {88.412189, 22.602253}, + {88.366759, 22.761612}, + {88.317375, 22.59613}, + {88.334885, 22.653122}, + {40.40657, 56.13533}, + {11.998215, 44.286804}, + {5.623577, 48.69435}, + {3.07926, 50.38147}, + {-9.249555, 52.589016}, + {8.641209, 49.090972}, + {19.25749, 47.488909}, + {-9.152917, 38.757344}, + {11.03302, 51.000252}, + {-122.506509, 49.028633}, + {121.15242004395, 24.892959594727}, + {100.136948, 17.573593}, + {14.55961, 48.248903}, + {7.16102, 53.166964}, + {18.321666, 47.659425}, + {-80.299758911133, 25.795211791992}, + {18.076115, 59.319906}, + {-52.40961, -26.873902}, + {-99.099655, 19.636917}, + {88.347244, 22.643166}, + {38.027507, 55.740411}, + {-3.124414, 47.664416}, + {114.160995, 22.310486}, + {114.137525, 22.360736}, + {9.1962432861328, 45.451126098633}, + {8.596115, 53.213654}, + {23.94785, 40.781994}, + {-75.63606262207, 4.8580169677734}, + {9.6384429931641, 50.539169311523}, + {77.784119, 28.249512}, + {7.929485, 47.355495}, + {100.667823, 13.518625}, + {12.538765, 55.756371}, + {-84.143143, 9.922714}, + {39.162827, 51.692276}, + {-0.646477, 51.509057}, + {-85.207525, 42.603689}, + {-2.011595, 50.710419}, + {-72.741165161133, 41.791305541992}, + {16.398166, 48.206886}, + {7.340657, 51.324624}, + {9.150009, 45.489121}, + {-90.529938, 14.619293}, + {70.785324, 22.291397}, + {14.527751, 35.880661}, + {-96.403896, 19.468651}, + {-97.68837, 30.557098}, + {-3.69429, 40.435867}, + {-58.657673, -34.648819}, + {120.808992, 24.196807}, + {3.9598846435547, 36.73210144043}, + {11.609989, 46.791408}, + {16.250838, 39.300614}, + {-79.743118, 44.439011}, + {-58.400929, -34.599239}, + {-108.953476, 25.800019}, + {11.23764, 45.2314}, + {100.832977, 13.684158}, + {100.248184, 13.73291}, + {0.104076, 52.229494}, + {103.861485, 1.307201}, + {25.863876, -17.923965}, + {35.830672, 31.990677}, + {-1.883469, 52.499542}, + {-6.1887359619141, 54.713973999023}, + {-86.735402, 36.068898}, + {-83.219376, 42.322998}, + {96.132088, 16.838036}, + {73.907954, 18.579585}, + {21.613895, 47.540711}, + {19.034574, 47.500393}, + {6.125807, 43.113488}, + {-78.503087, -0.304998}, + {-79.342575073242, 43.652114868164}, + {39.118881225586, -6.8039703369141}, + {16.29097, 48.119583}, + {13.724721, 51.020269}, + {-47.215401, -22.864568}, + {115.189247, -8.692474}, + {21.623497, 47.552512}, + {5.953721, 52.509957}, + {4.556351, 50.068588}, + {114.140788, 22.2892}, + {8.7197113037109, 45.46760559082}, + {16.350747, 41.291526}, + {76.3396, 10.005386}, + {16.207049, 54.19727}, + {-70.574248, -33.463937}, + {-79.494477, 9.027183}, + {-86.403645, 35.857315}, + {27.926559448242, -26.093215942383}, + {11.773033, 52.767066}, + {4.146186, 51.934496}, + {99.196793, 19.918076}, + {100.53245544434, 13.780288696289}, + {100.584412, 13.877449}, + {100.322342, 13.681623}, + {100.538073, 13.792336}, + {100.615959, 13.97442}, + {100.505614, 13.909004}, + {11.224254, 44.032097}, + {12.960281, 45.967791}, + {12.121923, 42.727617}, + {2.483597, 43.480453}, + {28.125974, -26.279537}, + {11.051556, 45.411306}, + {-46.799657, -23.54172}, + {10.201548, 45.451132}, + {5.078568, 51.533295}, + {34.959624, 32.796437}, + {120.380174, 22.62497}, + {107.115831, -6.804342}, + {10.234108, 45.512238}, + {-72.319564819336, 18.53874206543}, + {4.403963, 51.722247}, + {5.326886, 52.062873}, + {-49.362103, -20.79124}, + {-1.143695, 50.786679}, + {12.286835, 55.650558}, + {12.423174, 55.657442}, + {12.577285766602, 55.671157836914}, + {12.518331, 55.753127}, + {1.291122, 51.142502}, + {-43.182678, -22.964859}, + {44.521256, 40.19249}, + {10.852085, 45.603905}, + {43.754012, 56.20784}, + {16.402588, 48.720245}, + {35.873795, 32.55661}, + {15.488663, 47.068863}, + {35.507469, 33.897629}, + {29.939332, -27.724986}, + {2.363319, 48.843727}, + {-58.320236, -34.692764}, + {-76.782761, 17.999725}, + {88.384568, 22.466956}, + {8.446127, 49.025653}, + {19.025576, 47.478796}, + {-3.993571, 5.390373}, + {10.463790893555, 44.756240844727}, + {-0.010194, 51.495483}, + {112.772611, -7.402726}, + {76.347427368164, 21.827774047852}, + {-0.68694, 51.368049}, + {19.200736, 47.398944}, + {-1.659738, 51.518808}, + {14.541928, 52.347435}, + {-3.951774, 5.317075}, + {83.167190551758, 26.777114868164}, + {9.2305755615234, 49.281234741211}, + {19.090605, 47.55393}, + {19.109416, 47.500663}, + {-2.759743, 54.660692}, + {44.172592, 40.151596}, + {9.24703, 45.511147}, + {-1.619716, 54.96876}, + {-73.999711, 40.681918}, + {9.352291, 59.311241}, + {5.253313, 52.25043}, + {-1.09363, 45.411497}, + {-80.031968, 32.820969}, + {19.031167, 47.467881}, + {19.867913, 46.729918}, + {19.113655, 47.555979}, + {19.051432, 47.511131}, + {-3.677835, 40.445024}, + {23.770619, 46.577427}, + {5.574875, 50.18486}, + {8.2376861572266, 47.430038452148}, + {-2.619298, 47.705642}, + {21.655425, 48.630755}, + {19.116959, 47.496547}, + {19.171515, 47.537651}, + {87.299129, 23.540562}, + {87.632448, 23.370896}, + {100.366281, 5.35246}, + {9.212117, 48.797618}, + {19.035956, 47.43344}, + {7.124238, 61.255564}, + {8.6592864990234, 50.002212524414}, + {19.152007, 47.457486}, + {19.057757, 47.50342}, + {19.070823, 47.51853}, + {-3.279419, 56.125031}, + {22.230147, 52.177506}, + {44.182026, 56.147332}, + {19.141999, 47.437071}, + {-66.156509, -17.406052}, + {6.656111, 50.84816}, + {88.40962, 22.589299}, + {88.384957, 22.583925}, + {-157.863085, 21.319825}, + {8.099634, 53.19288}, + {104.955826, 12.01355}, + {-9.212615, 38.727211}, + {101.60903, 3.009567}, + {-1.984877, 52.563664}, + {9.336548, 56.688995}, + {-57.530594, -25.309982}, + {19.35128, 47.595937}, + {88.359952, 22.56202}, + {9.787773, 52.559678}, + {35.496245, 33.831711}, + {17.951562, 59.378063}, + {-88.039398, 15.526314}, + {-106.711807, 52.141342}, + {88.382041, 22.54086}, + {10.480192, 48.885051}, + {4.316572, 52.06159}, + {88.36528, 22.537491}, + {9.9597930908203, 52.189865112305}, + {4.968025, 43.866876}, + {33.381192, 35.08054}, + {23.593509, 46.747498}, + {30.374084, 60.044768}, + {88.378829956055, 22.631149291992}, + {26.898299, 46.86802}, + {88.349585, 22.572763}, + {21.778793, 47.951497}, + {-1.297768, 53.740313}, + {19.10426, 47.51008}, + {2.925106, 49.398333}, + {14.504929, 35.890045}, + {8.165864, 56.274019}, + {77.699132, 12.969124}, + {4.340286, 50.891909}, + {10.17144, 48.694222}, + {19.090045, 47.4892}, + {11.462841, 47.270848}, + {13.138092, 52.313075}, + {18.94671, 47.531288}, + {55.252991, 25.183411}, + {7.504321, 50.446076}, + {18.478756, 52.14335}, + {1.963806, 47.616806}, + {88.318344, 22.565262}, + {-0.222041, 51.606878}, + {5.921734, 49.706639}, + {-1.410713, 51.590424}, + {14.12223815918, 56.533584594727}, + {-103.40812683105, 20.605545043945}, + {16.00189, 47.165643}, + {9.6700286865234, 49.204330444336}, + {-1.8065643310547, 51.854782104492}, + {126.915573, 37.522044}, + {11.745071, 48.835602}, + {35.825729370117, 51.640548706055}, + {0.142593, 51.044998}, + {73.896602, 18.529254}, + {12.450216, 41.978679}, + {19.066625, 47.492238}, + {4.750831, 50.148189}, + {88.389383, 22.61757}, + {20.185318, 47.186508}, + {17.233994, 50.949064}, + {9.2374420166016, 50.419692993164}, + {-4.267364, 34.190277}, + {31.2204, 30.058913}, + {21.722703, 47.968327}, + {-86.805038452148, 36.155319213867}, + {-83.554733, 45.308304}, + {88.290939, 22.514511}, + {88.363151, 22.489262}, + {85.106277, 25.591965}, + {121.505013, 14.2939}, + {19.009733, 47.481186}, + {75.681443, 22.628686}, + {2.429749, 49.109935}, + {16.537857055664, 68.799819946289}, + {-9.222669, 39.028028}, + {106.802902, 10.83046}, + {88.358231, 22.547379}, + {-80.261459, 27.21199}, + {37.955857, 55.015214}, + {16.217194, 47.887573}, + {-46.696472, -23.733215}, + {-43.198846, -22.498198}, + {116.013852, -31.150607}, + {121.608078, 23.967773}, + {114.182281, 22.267914}, + {8.643951, 47.694626}, + {78.400497436523, 17.493667602539}, + {37.591919, 55.671639}, + {19.414449, 47.134119}, + {9.179603, 52.29553}, + {19.078882, 47.408244}, + {-73.919102, 40.811484}, + {-72.672500610352, 41.65397644043}, + {2.634221, 51.108587}, + {19.026547, 47.471274}, + {113.20381164551, 29.368515014648}, + {73.940659, 18.563156}, + {-72.107824, -36.610695}, + {19.050768, 47.514619}, + {37.490158081055, 55.683517456055}, + {8.962195, 48.474721}, + {28.66784, -16.45134}, + {-51.207258, -30.057564}, + {-100.315475, 25.715218}, + {100.65735, 13.719602}, + {11.61223, 50.031394}, + {20.84095, 52.108757}, + {73.215099, 18.876126}, + {19.186473, 47.533332}, + {19.126707, 47.501646}, + {37.55114, 55.724801}, + {39.00531, 55.800247}, + {5.797448, 51.009235}, + {10.574342, 55.071717}, + {-53.801103, -29.688899}, + {-53.165776, -18.4708}, + {-96.900532, 33.171708}, + {129.00352478027, 35.152816772461}, + {10.805740356445, 59.896774291992}, + {16.587295532227, 49.49821472168}, + {73.829155, 18.515739}, + {-91.822029, 18.659913}, + {8.473206, 50.550842}, + {-13.633846, 29.003844}, + {-84.234787, 9.869431}, + {-76.32035, 3.714954}, + {19.053937, 47.484336}, + {-99.167404, 19.425201}, + {135.73539733887, 34.555435180664}, + {-6.820161, 34.0325}, + {90.409927, 23.734177}, + {19.164903, 47.44007}, + {24.774856567383, 61.734237670898}, + {2.75116, 51.133118}, + {22.049423, 60.488938}, + {-79.72918, 43.554754}, + {13.127335, 55.480728}, + {5.683056, 52.653327}, + {18.946781, 46.240905}, + {-46.691666, -23.590164}, + {14.657089, 51.725104}, + {18.976848, 47.317381}, + {-77.726211547852, 38.28254699707}, + {7.535195, 45.062908}, + {-81.51237487793, 41.371078491211}, + {-9.385203, 38.950518}, + {-6.821627, 34.017105}, + {4.9651336669922, 52.356033325195}, + {-74.052658081055, 40.746231079102}, + {12.670794, 55.628399}, + {12.518158, 55.890961}, + {21.218644, 52.108421}, + {21.688384, 52.531357}, + {4.453659, 51.914139}, + {68.772354, 38.630676}, + {76.557541, 9.668999}, + {44.87114, 41.690598}, + {16.405722, 48.312989}, + {28.25758, -25.811837}, + {24.756546, 59.439011}, + {30.894791, 29.908218}, + {8.458287, 49.501586}, + {20.724565, 48.097611}, + {18.446045, 50.020065}, + {77.56073, 19.744492}, + {100.60249328613, 13.825607299805}, + {135.3865814209, 34.714736938477}, + {74.091829, 55.070769}, + {52.102107, 27.802862}, + {21.326065, 43.568802}, + {9.036255, 48.752786}, + {14.693253, 47.070786}, + {-35.784988, -9.568405}, + {18.577657, 47.226509}, + {6.98525, 50.901585}, + {-69.93227, 18.551428}, + {-50.180674, -25.065441}, + {69.278614, 41.296113}, + {77.15217590332, 28.69010925293}, + {151.086731, -33.825531}, + {19.841673, 50.029679}, + {9.050538, 49.061529}, + {8.928852, 49.019623}, + {13.242645, 41.289368}, + {23.151931, 47.751392}, + {-9.164446, 38.835349}, + {-74.135055541992, 4.6039581298828}, + {151.11351, -33.704976}, + {15.603883, 46.548522}, + {19.057313, 47.601552}, + {27.850684, 43.08318}, + {-101.345855, 22.391854}, + {37.600702, 55.604399}, + {-87.282944, 14.139061}, + {-88.016057, 14.985195}, + {-79.532776, 8.98613}, + {57.45231628418, 50.386734008789}, + {-101.703623, 21.152614}, + {113.366203, 23.190422}, + {19.069848, 47.508097}, + {-1.402814, 53.799363}, + {28.247833, -25.825078}, + {21.215286254883, 51.975631713867}, + {2.460251, 48.975677}, + {13.326187, 52.486038}, + {34.807915, 32.051707}, + {28.675003, 40.991192}, + {22.594682, 51.224444}, + {21.080018, 52.037431}, + {68.48258972168, 43.203048706055}, + {-0.11148, 51.552348}, + {12.151108, 48.534851}, + {70.121427, 42.533175}, + {-73.987397, 40.758372}, + {66.593193, 44.270121}, + {2.592349, 36.629546}, + {-1.332769, 53.074958}, + {8.6634063720703, 50.24528503418}, + {22.359409, 53.818932}, + {-9.172869, 38.787618}, + {-3.076086, 47.584019}, + {-9.190407, 38.8377}, + {-90.525436, 14.629288}, + {18.362781, -34.054271}, + {9.807087, 52.324442}, + {-46.615129, -23.707196}, + {42.380434, 41.895197}, + {28.633063, 44.18116}, + {-47.986221313477, -15.807266235352}, + {-99.195193, 19.443499}, + {7.854538, 48.402328}, + {-109.590957, 38.60439}, + {2.862422, 49.465405}, + {55.134412, 25.083319}, + {115.768004, -32.368339}, + {8.5549163818359, 51.816329956055}, + {55.208306, 25.160329}, + {-43.226491, -22.911354}, + {8.282853, 47.548033}, + {19.080625, 47.108227}, + {-2.6634979248047, 42.835006713867}, + {9.858223, 50.298409}, + {9.992987, 48.408842}, + {22.777035, 49.79305}, + {18.999312, 47.319955}, + {30.105491, 51.074373}, + {30.427322387695, 50.458145141602}, + {21.568826, 51.960251}, + {20.186966, 52.068741}, + {30.432011, 50.635158}, + {-49.260399, -16.6327}, + {-114.064865, 50.9095}, + {38.960661, 44.998315}, + {37.584457, 55.752182}, + {17.342123, 49.245}, + {17.63786315918, 47.619552612305}, + {18.989376, 47.473592}, + {25.055596, 43.840256}, + {15.505507, 46.989226}, + {120.63056945801, 14.087905883789}, + {74.470596, 19.771791}, + {7.779911, 49.441802}, + {114.01268005371, 22.447128295898}, + {-78.567032, -0.289352}, + {17.303344, 47.524417}, + {-46.312468, -23.973608}, + {28.13118, -25.956573}, + {-2.035646, 52.480368}, + {-44.238134, -19.469155}, + {-99.201022, 19.377602}, + {146.995239, -6.727753}, + {12.483444, 41.873245}, + {114.091782, 22.345093}, + {151.138573, -33.873825}, + {88.480234, 22.69119}, + {-42.728133, -5.108805}, + {-118.356187, 34.024673}, + {-80.163055, 25.896179}, + {13.353129, 52.507431}, + {33.582582, 45.108694}, + {-79.883423, 36.173401}, + {18.252833, 50.53447}, + {10.392303, 45.419312}, + {2.486424, 48.802602}, + {139.721229, 35.891731}, + {139.861594, 36.488517}, + {139.660034, 36.374588}, + {123.062759, 13.500137}, + {43.71366, 56.402496}, + {19.052939, 47.475891}, + {24.503631, 58.382721}, + {27.067795, 40.412563}, + {-100.358276, 25.651016}, + {11.513619, 44.457075}, + {50.083237, 26.439285}, + {-37.667399, -10.917433}, + {20.778637, 52.169155}, + {44.438274, 40.872607}, + {97.820205688477, 0.56785583496094}, + {8.838501, 45.323753}, + {13.597544, 52.447219}, + {15.028812, 53.340941}, + {24.794082641602, 42.133255004883}, + {2.243859, 48.782926}, + {-84.071846, 10.451088}, + {-75.580881, 6.197225}, + {50.039291381836, 58.557815551758}, + {19.817645, 47.761801}, + {12.420072, 48.899461}, + {5.626323, 52.325915}, + {34.808120727539, 31.961288452148}, + {-1.525841, 53.370094}, + {-2.646283, 53.748234}, + {19.003628, 47.493594}, + {19.06608581543, 47.421798706055}, + {19.016848, 47.561652}, + {20.873674, 47.88329}, + {19.027883, 47.475107}, + {19.093909, 47.59711}, + {18.995823, 47.461849}, + {19.150421, 47.515745}, + {19.091721, 47.516556}, + {19.053497, 47.49321}, + {-43.207969, -22.640719}, + {19.069884, 52.65683}, + {19.118463, 47.410429}, + {72.857762, 19.112733}, + {-95.594100952148, 30.002975463867}, + {115.715024, -32.251215}, + {114.107895, 22.37114}, + {87.206039, 23.313675}, + {72.935486, 20.483322}, + {18.931503295898, 47.327041625977}, + {-38.152858, -4.535036}, + {24.170196, 56.872088}, + {-57.522812, -25.324173}, + {6.848271, 52.206788}, + {-58.419843, -34.59805}, + {-58.829727172852, -34.607620239258}, + {4.393097, 45.42546}, + {-80.070461, 26.677847}, + {-69.236526489258, -51.626815795898}, + {-1.766438, 48.137641}, + {13.814209, 52.839157}, + {13.34219, 52.523612}, + {75.982132, 30.848821}, + {52.809219360352, 23.831405639648}, + {16.306965, 48.19838}, + {14.040649, 46.622543}, + {27.694784, 53.887305}, + {4.838612, 46.72024}, + {7.169609, 50.796776}, + {15.030386, 48.19631}, + {7.3464202880859, 51.592483520508}, + {51.386489868164, 25.677108764648}, + {8.8845062255859, 47.619552612305}, + {22.732846, 47.214395}, + {9.9611663818359, 53.549423217773}, + {5.804341, 51.861294}, + {16.264605, 47.131672}, + {91.717987, 26.342468}, + {10.325432, 53.310588}, + {12.752342, 50.492984}, + {9.954042, 56.106673}, + {9.998245, 53.505478}, + {7.705012, 50.483139}, + {18.096085, 49.763718}, + {75.053123, 15.419018}, + {12.898223, 56.249314}, + {74.235535, 17.049637}, + {12.978228, 49.04578}, + {3.8005828857422, 51.33430480957}, + {27.896805, -26.291885}, + {13.232292, 52.790614}, + {8.588519, 50.562804}, + {13.25453, 52.560097}, + {9.431079, 55.479859}, + {10.979462, 54.362412}, + {11.253929, 50.952188}, + {73.133068, 18.996048}, + {77.647333, 14.510107}, + {7.5579071044922, 51.51008605957}, + {9.3665313720703, 47.568740844727}, + {74.614335, 18.366623}, + {28.245209, -25.946736}, + {74.983749, 27.398075}, + {10.190747, 48.956645}, + {-8.723185, 42.222034}, + {16.267222, 47.773369}, + {18.747165, 46.332486}, + {7.223314, 53.344073}, + {113.309555, 23.134323}, + {73.241387, 22.346981}, + {2.253296, 48.917313}, + {19.274342, 47.483385}, + {28.850784301758, 40.224380493164}, + {21.023025512695, 50.541915893555}, + {7.6142120361328, 50.875625610352}, + {19.215774536133, 50.338668823242}, + {19.160842895508, 50.805587768555}, + {37.546005, 55.777817}, + {37.509899, 55.740108}, + {37.622386, 55.676651}, + {38.145217895508, 55.874404907227}, + {36.625809, 55.604691}, + {19.082565307617, 51.538925170898}, + {19.398422241211, 51.75178527832}, + {37.199020385742, 56.78352355957}, + {37.648298, 55.821797}, + {38.032851, 55.994177}, + {39.132614135742, 55.502243041992}, + {36.956986, 55.478752}, + {37.513161, 55.874062}, + {37.652264, 55.784969}, + {37.753829956055, 55.673904418945}, + {36.738281, 55.662232}, + {37.652206420898, 55.629959106445}, + {37.516250610352, 55.537948608398}, + {37.600021, 55.862045}, + {37.125321, 56.736832}, + {37.514419, 55.644608}, + {16.249465942383, 50.447158813477}, + {20.491561889648, 50.26725769043}, + {22.228775024414, 52.141799926758}, + {21.009292602539, 52.247543334961}, + {21.172714233398, 52.161026000977}, + {21.028518676758, 52.108840942383}, + {20.586318969727, 52.210464477539}, + {21.820907592773, 52.062149047852}, + {22.622909545898, 51.225814819336}, + {22.602310180664, 51.240921020508}, + {23.49494934082, 51.148910522461}, + {18.586807250977, 54.403610229492}, + {17.640609741211, 54.286880493164}, + {18.134994506836, 53.153915405273}, + {18.222885131836, 53.51921081543}, + {19.050979614258, 52.660903930664}, + {19.049606323242, 54.025955200195}, + {16.908645629883, 52.424697875977}, + {23.216312, 53.137105}, + {15.266189575195, 52.761154174805}, + {15.56488, 51.895981}, + {16.774063110352, 52.03742980957}, + {18.957595825195, 50.227432250977}, + {21.694564819336, 49.419937133789}, + {18.798294067383, 50.475997924805}, + {19.14436340332, 51.139297485352}, + {21.877212524414, 49.944534301758}, + {17.57194519043, 50.318069458008}, + {20.965347290039, 49.415817260742}, + {18.525009155273, 50.094223022461}, + {17.03498840332, 51.125564575195}, + {22.085269, 53.898926}, + {21.083450317383, 52.261276245117}, + {19.001541137695, 50.315322875977}, + {18.861465454102, 50.651779174805}, + {21.433639526367, 50.057144165039}, + {16.076431274414, 51.662521362305}, + {16.221699, 52.019392}, + {22.429275512695, 49.370498657227}, + {23.177719116211, 52.776260375977}, + {22.658615112305, 52.397232055664}, + {20.541000366211, 50.812454223633}, + {20.369338989258, 51.194229125977}, + {15.124074, 51.633604}, + {19.186935424805, 49.678115844727}, + {19.434127807617, 49.98161315918}, + {19.941147, 50.065384}, + {19.934555, 50.064011}, + {16.842727661133, 50.793228149414}, + {20.811538696289, 52.402725219727}, + {20.966720581055, 52.202224731445}, + {19.9487, 50.055771}, + {20.019149780273, 50.085983276367}, + {23.277969360352, 53.182754516602}, + {19.230880737305, 49.973373413086}, + {18.621139526367, 49.755020141602}, + {19.149856567383, 50.286483764648}, + {20.049362182617, 50.062637329102}, + {20.052108764648, 51.60758972168}, + {19.256973266602, 50.10383605957}, + {19.005661010742, 50.296096801758}, + {18.916397094727, 50.35514831543}, + {20.590438842773, 49.969253540039}, + {19.977951049805, 49.540786743164}, + {16.838607788086, 52.413711547852}, + {16.753463745117, 53.14567565918}, + {18.794174194336, 50.224685668945}, + {21.435012817383, 50.298843383789}, + {18.888931274414, 50.337295532227}, + {19.406661987305, 50.503463745117}, + {19.870834350586, 50.128555297852}, + {18.654098510742, 50.368881225586}, + {21.024398803711, 52.217330932617}, + {19.115524291992, 50.230178833008}, + {14.516372680664, 53.40934753418}, + {22.605056762695, 51.479873657227}, + {21.127395629883, 51.511459350586}, + {20.97770690918, 52.25715637207}, + {21.097183227539, 52.118453979492}, + {20.84587097168, 51.853408813477}, + {21.028518676758, 52.085494995117}, + {18.563461303711, 54.431076049805}, + {18.537368774414, 54.582138061523}, + {18.816146850586, 53.49723815918}, + {18.459091186523, 54.267654418945}, + {18.632125854492, 52.994613647461}, + {20.789566040039, 49.967880249023}, + {19.05304, 49.826431}, + {15.273056030273, 52.676010131836}, + {14.512252807617, 53.424453735352}, + {16.069564819336, 51.654281616211}, + {18.14323425293, 51.29997253418}, + {22.009048461914, 50.040664672852}, + {22.676467895508, 50.01594543457}, + {18.456344604492, 49.998092651367}, + {18.743362426758, 50.24528503418}, + {14.694900512695, 54.008102416992}, + {20.788192749023, 49.966506958008}, + {20.622024536133, 49.977493286133}, + {18.931503295898, 50.348281860352}, + {21.024398803711, 52.217330932617}, + {20.913162231445, 52.23518371582}, + {21.03401184082, 52.224197387695}, + {22.929153442383, 54.126205444336}, + {18.575820922852, 54.425582885742}, + {18.210525512695, 54.61784362793}, + {16.911392211914, 52.404098510742}, + {16.977310180664, 52.42057800293}, + {18.920516967773, 50.221939086914}, + {19.406661987305, 51.73942565918}, + {19.498672485352, 51.648788452148}, + {18.144607543945, 53.149795532227}, + {14.58366394043, 53.479385375977}, + {15.89241027832, 52.594985961914}, + {20.962600708008, 50.014572143555}, + {17.827377319336, 50.198593139648}, + {20.720901489258, 50.467758178711}, + {19.020767211914, 50.253524780273}, + {20.983200073242, 52.199478149414}, + {21.002426147461, 52.16926574707}, + {18.503036499023, 49.989852905273}, + {19.149856567383, 50.286483764648}, + {16.905899047852, 52.459030151367}, + {18.927383422852, 50.32356262207}, + {19.119644165039, 50.334548950195}, + {17.139358520508, 50.496597290039}, + {19.685440063477, 51.40983581543}, + {14.958572387695, 50.901718139648}, + {14.494400024414, 53.395614624023}, + {20.027389526367, 49.478988647461}, + {14.532852172852, 53.406600952148}, + {20.931015014648, 52.163772583008}, + {15.863571166992, 52.368392944336}, + {16.617257, 50.74404}, + {22.052993774414, 52.888870239258}, + {20.986633, 50.012512}, + {20.593185424805, 50.874252319336}, + {17.045974731445, 51.084365844727}, + {22.496566772461, 52.914962768555}, + {19.214401245117, 50.046157836914}, + {19.274826049805, 49.728927612305}, + {19.707412719727, 49.772872924805}, + {21.881332397461, 52.795486450195}, + {19.516525268555, 49.628677368164}, + {19.973831176758, 50.046157836914}, + {19.903793334961, 50.085983276367}, + {20.112533569336, 49.808578491211}, + {20.031509399414, 50.076370239258}, + {19.971084594727, 50.080490112305}, + {19.89143371582, 50.072250366211}, + {19.954605102539, 50.05989074707}, + {19.92301940918, 49.99397277832}, + {19.961471557617, 50.011825561523}, + {19.968338012695, 49.614944458008}, + {20.965347290039, 52.211837768555}, + {17.008895874023, 51.072006225586}, + {19.679946899414, 49.874496459961}, + {19.266586303711, 50.342788696289}, + {19.456100463867, 50.362014770508}, + {19.203414916992, 50.24528503418}, + {19.031753540039, 49.81819152832}, + {19.943618774414, 49.84016418457}, + {18.930130004883, 50.360641479492}, + {18.818893432617, 50.300216674805}, + {18.483810424805, 50.043411254883}, + {19.92301940918, 49.99397277832}, + {23.158493041992, 53.142929077148}, + {18.986434936523, 50.112075805664}, + {18.915023803711, 50.294723510742}, + {19.074325561523, 49.575119018555}, + {6.178435, 49.303207}, + {73.469354, 21.85215}, + {7.446107, 53.353865}, + {24.408687, 61.007267}, + {115.82362, -32.065885}, + {2.396706, 48.831847}, + {19.106749, 47.535911}, + {12.576335, 41.879724}, + {-68.719788, 44.857077}, + {6.240006, 43.130722}, + {-47.226791381836, -22.79182434082}, + {2.294235, 48.82843}, + {76.256331, 17.816623}, + {12.168287, 50.451751}, + {4.2304229736328, 50.883865356445}, + {120.809097, 24.264908}, + {6.123039, 43.116142}, + {10.448353, 36.602539}, + {19.101791381836, 47.513809204102}, + {-90.315170288086, 37.560195922852}, + {8.6991119384766, 45.779342651367}, + {-1.0608673095703, 52.648544311523}, + {-119.0306854248, 35.351943969727}, + {19.060346, 47.50383}, + {39.107895, 55.688553}, + {-9.272977, 38.822594}, + {72.509354, 22.989029}, + {5.389652, 43.242359}, + {27.03392, -28.441544}, + {75.845489, 22.83577}, + {88.364792, 22.650528}, + {-73.986740112305, 40.68717956543}, + {88.372717, 22.539947}, + {14.237595, 48.227234}, + {-9.093874, 38.7734}, + {13.267509, 50.714025}, + {76.102524, 29.878464}, + {21.30289, 47.607339}, + {106.851216, -6.396896}, + {-3.25906, 55.938762}, + {15.067269, 48.706794}, + {13.038765, 47.764196}, + {12.100239, 47.742513}, + {21.392441, 46.278076}, + {40.565581, 64.527886}, + {78.543425, 17.426905}, + {6.3933563232422, 43.403549194336}, + {19.091606, 47.469463}, + {6.867915, 51.539583}, + {1.420756, 43.604652}, + {72.618942260742, 23.022537231445}, + {4.56911, 52.225649}, + {76.787212, 9.913101}, + {39.757465, 54.616472}, + {16.212845, 45.76973}, + {-84.495162963867, 38.079299926758}, + {-80.450820922852, -1.0581207275391}, + {86.112587, 55.778549}, + {14.26506, 46.603317}, + {33.399698, 34.832202}, + {14.461513, 50.097198}, + {9.704362, 51.753671}, + {5.4375457763672, 51.368637084961}, + {23.232650756836, 42.68669128418}, + {9.070587, 49.99205}, + {8.0152130126953, 48.623428344727}, + {-0.599579, 53.229446}, + {54.985882, 36.391801}, + {8.194599, 44.054489}, + {18.441927, 54.536133}, + {14.660568237305, 50.953903198242}, + {82.167435, 22.058487}, + {-1.6088104248047, 53.854293823242}, + {1.077196, 41.163563}, + {14.326109, 41.032625}, + {11.979299, 51.470747}, + {101.717655, 3.130564}, + {73.254401, 19.400545}, + {7.3065948486328, 51.483993530273}, + {-2.788925, 47.525711}, + {3.84847, 43.565598}, + {3.8802337646484, 43.62190246582}, + {1.028764, 49.491864}, + {0.07614, 49.252982}, + {-0.92497, 48.717484}, + {3.259507, 47.753449}, + {4.916382, 48.063126}, + {2.5103, 48.953476}, + {2.3572540283203, 48.819808959961}, + {6.4386749267578, 48.196334838867}, + {7.686173, 48.577286}, + {2.365369, 48.909697}, + {2.338165, 49.878729}, + {10.680256, 53.85807}, + {112.984834, 22.945258}, + {40.591049194336, 64.46159362793}, + {-2.837906, 53.358994}, + {77.798996, 27.279053}, + {2.1883392333984, 41.404037475586}, + {18.978969, 47.516985}, + {18.387947, -34.121399}, + {-51.146398, -23.310961}, + {153.022633, -27.473369}, + {103.853213, 1.279545}, + {34.405746459961, 53.269271850586}, + {139.58562, 36.048364}, + {89.764196, 26.307023}, + {139.521455, 35.998025}, + {2.377755, 48.756779}, + {12.761767, 56.042863}, + {-4.074268, 48.497601}, + {37.26903, 55.8282}, + {139.653593, 36.06017}, + {-58.68007, -34.561729}, + {75.209656, 12.589646}, + {35.392799, 55.512543}, + {-99.627456665039, 19.29817199707}, + {4.862039, 45.530287}, + {10.101242, 35.671005}, + {19.00947, -34.163654}, + {-79.982528686523, 32.860794067383}, + {-1.551474, 53.736878}, + {-64.196548, -31.411697}, + {7.949295, 48.5495}, + {19.043427, 47.557984}, + {-1.300507, 52.853851}, + {21.465421, 42.000046}, + {87.859102, 22.409425}, + {90.416245, 23.736099}, + {10.665204, 50.834633}, + {5.265898, 43.744818}, + {103.899266, 1.315301}, + {12.103055, 50.011501}, + {36.73844, 51.045245}, + {8.527451, 47.379138}, + {13.434363, 48.309489}, + {-73.681673, 42.684632}, + {-90.013046264648, 29.916458129883}, + {12.861846, 48.789804}, + {150.974121, -34.054184}, + {10.409803, 53.260517}, + {14.306259155273, 48.315811157227}, + {7.792573, 49.951368}, + {21.442338, 48.124981}, + {-66.719284057617, 18.049850463867}, + {-2.8433990478516, 47.531661987305}, + {115.838219, -31.892666}, + {74.327165, 33.346049}, + {14.890031, 41.864092}, + {6.553348, 36.279602}, + {11.790102, 50.438319}, + {14.474105, 50.012694}, + {14.362564086914, 40.80940246582}, + {4.783401, 52.356949}, + {73.501484, 19.698204}, + {5.467093, 51.49262}, + {115.824851, -32.157698}, + {-3.189471, 40.619203}, + {113.18192, 23.310686}, + {14.358327, 48.279965}, + {9.483949, 47.24808}, + {-3.634415, 40.537491}, + {13.107777, 53.334298}, + {4.6492767333984, 51.699600219727}, + {12.88482, 47.976934}, + {-49.414902, -25.575943}, + {75.075759887695, 23.53889465332}, + {76.117814, 10.644791}, + {105.25657653809, -4.2427825927734}, + {76.309662, 10.022436}, + {6.108096, 49.085437}, + {-76.792846, 39.037378}, + {-107.672704, 24.761234}, + {15.909086, 45.797196}, + {-1.4659881591797, 53.310470581055}, + {-73.690114, 40.954974}, + {-42.784661, -5.107336}, + {56.756057739258, 21.406173706055}, + {76.930252, 28.336075}, + {87.91508, 24.732285}, + {15.951435, 45.785298}, + {17.048035, 51.103592}, + {9.084091, 45.535355}, + {113.32191467285, 23.118667602539}, + {37.497936, 54.870213}, + {76.368714, 14.948273}, + {12.16667175293, 52.108840942383}, + {-122.103928, 37.347611}, + {19.804344, 46.712474}, + {9.4242095947266, 48.947525024414}, + {105.919182, 20.39518}, + {20.514316, 44.699937}, + {13.943917, 52.697322}, + {20.793465, 48.077319}, + {-3.495026, 40.460659}, + {78.896255, 20.566545}, + {76.340561, 26.806641}, + {26.115875, 44.412918}, + {9.831434, 54.237155}, + {74.477921, 19.732285}, + {88.560196, 26.563614}, + {-61.373367, 10.568657}, + {49.97699, 34.138966}, + {24.889, 46.952271}, + {113.15506, 23.04039}, + {41.638870239258, 37.137222290039}, + {6.9934844970703, 51.700973510742}, + {77.617525, 12.928848}, + {8.577061, 47.457504}, + {13.200932, 52.614212}, + {83.352584838867, 26.803207397461}, + {19.919766, 60.124024}, + {76.563719, 9.651318}, + {16.997166, 47.58514}, + {90.131149291992, 26.200332641602}, + {-91.518235, 40.384383}, + {19.063419, 47.495789}, + {79.033584, 20.993271}, + {-90.508714, 14.653954}, + {37.788162231445, 37.659072875977}, + {-74.7789, 10.984268}, + {-5.189804, 35.243729}, + {13.786806, 52.408449}, + {15.302333, 58.431015}, + {-0.492935, 51.921565}, + {-1.846363, 47.343772}, + {8.305664, 47.458191}, + {-1.446848, 52.416459}, + {78.365135, 10.963669}, + {-90.234577, 38.599577}, + {19.216874, 47.54943}, + {17.871324, 59.372864}, + {75.158501, 19.755821}, + {116.446609, 39.9543}, + {87.475977, 25.755129}, + {73.918075, 18.913101}, + {19.050929, 47.47969}, + {-47.835159, -21.222153}, + {73.50471496582, 1.8354034423828}, + {21.888198852539, 47.094955444336}, + {9.382233, 48.893326}, + {-47.366506, -22.75407}, + {116.08222961426, -8.5919952392578}, + {-106.53099060059, 31.84455871582}, + {-3.744278, 40.177689}, + {10.842819213867, 51.394729614258}, + {79.559899, 13.426323}, + {40.512085, 64.58313}, + {100.70411682129, 13.603134155273}, + {-3.662155, 40.428726}, + {-3.926235, 40.499728}, + {21.644522, 49.144207}, + {-3.614731, 40.465927}, + {2.0729827880859, 41.291427612305}, + {-50.321685, -27.679968}, + {6.5911102294922, 52.00309753418}, + {77.531021, 12.984238}, + {88.547864, 22.760657}, + {103.911953, 1.314411}, + {96.104965209961, 19.730758666992}, + {0.009834, 45.206225}, + {8.887939, 40.148849}, + {12.358539, 51.629162}, + {30.499371, 50.409001}, + {77.66304, 8.524017}, + {21.157144, 51.416645}, + {1.9933319091797, 48.767623901367}, + {100.60523986816, 13.578414916992}, + {7.658942, 44.975183}, + {16.593905, 49.197622}, + {77.981186, 27.209244}, + {-76.90516, -12.016596}, + {23.954315, 54.916534}, + {16.861953735352, 52.34504699707}, + {-70.653763, -33.423843}, + {73.863143920898, 28.926315307617}, + {74.99174, 22.65874}, + {7.742386, 48.585892}, + {14.732383, 38.142294}, + {16.306894, 48.18822}, + {81.615371704102, 16.782302856445}, + {-5.4595184326172, 36.136093139648}, + {39.753616, 47.283646}, + {77.179641723633, 19.800796508789}, + {19.163791, 47.488525}, + {12.864892, 49.976512}, + {15.910255, 46.752752}, + {9.997839, 53.519705}, + {9.941941, 53.708038}, + {80.894393920898, 17.19841003418}, + {16.290665, 48.194962}, + {13.181533813477, 52.397232055664}, + {5.34682, 50.259062}, + {8.522646, 49.904709}, + {7.792722, 51.413312}, + {25.979232788086, 43.944625854492}, + {13.384780883789, 52.449417114258}, + {-2.84561, 53.208066}, + {78.822098, 29.019012}, + {74.604037, 22.782215}, + {7.8723907470703, 52.224197387695}, + {75.203474, 22.611258}, + {7.286641, 46.473728}, + {8.712845, 47.647018}, + {-110.958481, 29.069595}, + {-85.80597, 37.738038}, + {15.270238, 47.407377}, + {13.041797, 48.203201}, + {17.091617, 48.074126}, + {96.166763305664, 17.063827514648}, + {116.48460388184, 39.912643432617}, + {101.6722869873, 3.1317901611328}, + {14.273758, 48.305054}, + {20.474832, 46.870164}, + {21.31207, 46.71734}, + {-75.246735, 45.307617}, + {-90.484085083008, 14.59602355957}, + {12.494888305664, 50.774002075195}, + {75.832443237305, 16.60514831543}, + {-9.376854, 39.114421}, + {-116.225828, 43.633725}, + {2.327957, 48.838577}, + {-9.106255, 38.756636}, + {-8.677139, 42.17205}, + {-77.831954956055, 18.411026000977}, + {100.665468, 13.62236}, + {13.375088, 50.251119}, + {19.111142, 47.519191}, + {8.203784, 49.42454}, + {-5.046381, 50.265699}, + {-81.26106262207, 35.454940795898}, + {9.908432, 44.159879}, + {117.886586, -27.361108}, + {39.741669, 47.160873}, + {88.497196, 22.336125}, + {20.210315, 47.714801}, + {29.817581176758, 53.984756469727}, + {16.57863, 49.259994}, + {88.161849975586, 25.29670715332}, + {-1.3066864013672, 54.558792114258}, + {-116.352515, 43.631032}, + {6.761913, 7.97168}, + {7.574845, 46.785965}, + {-90.811713, 14.284581}, + {9.550565, 55.562994}, + {88.410521, 22.556041}, + {43.356687, 54.929239}, + {74.73381, 19.084625}, + {72.878838, 19.411125}, + {36.053695678711, 32.04231262207}, + {35.988291, 31.934634}, + {36.112747192383, 31.347427368164}, + {35.972671508789, 32.516098022461}, + {36.055068969727, 31.987380981445}, + {36.049575805664, 31.977767944336}, + {36.093796, 32.085434}, + {35.62385559082, 31.899490356445}, + {35.877914428711, 31.94206237793}, + {35.87516784668, 31.939315795898}, + {35.940094, 31.881132}, + {16.486089, 48.206911}, + {20.801338, 47.86549}, + {-58.519575, -34.467228}, + {46.732668, 24.671327}, + {10.239423, 52.095903}, + {-73.18473815918, 45.592575073242}, + {77.623367, 13.025131}, + {20.188065, 46.23848}, + {19.074325, 47.481537}, + {8.162384, 49.551125}, + {34.73599, 49.100549}, + {28.276371, -25.703056}, + {-8.676141, 39.522442}, + {-93.329544067383, 37.319869995117}, + {11.616907, 52.473223}, + {25.675125, 60.977097}, + {-2.946286, 43.263474}, + {-77.030776, -12.129304}, + {2.943767, 42.648013}, + {16.349946, 46.138574}, + {78.791216, 28.831415}, + {106.731491, -6.428238}, + {11.823767, 47.405579}, + {100.724324, 13.626676}, + {1.74705, 47.882311}, + {-104.901733, 39.706268}, + {77.774278, 22.578966}, + {19.078445, 47.48497}, + {12.86087, 50.811424}, + {47.987366, 29.371857}, + {13.739914, 51.97316}, + {9.281387, 45.561676}, + {24.675355, 45.151707}, + {11.018509, 49.461594}, + {-9.077063, 38.756472}, + {9.25805, 45.578845}, + {76.348839, 9.93983}, + {24.76593, 42.211533}, + {100.454178, 13.927689}, + {101.817315, 12.767381}, + {101.287271, 12.6944}, + {121.05896, 14.586563}, + {2.065258, 41.345329}, + {31.038618, -29.722011}, + {9.584272, 50.427481}, + {9.728868, 51.975985}, + {14.561897, 48.112976}, + {-2.610626, 50.720444}, + {7.143116, 52.220773}, + {6.7806243896484, 51.192855834961}, + {11.99913, 51.28212}, + {4.4652557373047, 52.064895629883}, + {88.329391479492, 23.654251098633}, + {7.523195, 51.438688}, + {-1.727752, 53.79295}, + {10.234451293945, 53.560409545898}, + {31.021408, -25.240952}, + {15.935231, 46.752363}, + {9.986229, 53.552284}, + {7.714502, 50.788454}, + {13.046202, 47.735783}, + {-77.362289428711, 38.664321899414}, + {10.283472, 53.950858}, + {151.206889, -33.888259}, + {8.917695, 52.676225}, + {9.4750213623047, 55.476150512695}, + {-82.425889, 36.148728}, + {21.528274, 48.613419}, + {14.650955200195, 51.175003051758}, + {7.7048492431641, 45.065231323242}, + {11.457464, 46.954387}, + {19.042739868164, 47.545394897461}, + {11.713878, 48.307768}, + {14.498603, 52.340231}, + {14.972181, 51.165765}, + {3.799667, 51.045914}, + {9.095008, 48.826516}, + {27.453323, 53.955093}, + {4.468252, 50.821193}, + {-0.545401, 43.910496}, + {116.129978, -31.820246}, + {13.330817, 52.59981}, + {35.812772, 56.846635}, + {-80.621281, 28.058224}, + {18.83597, 48.124267}, + {84.450531, 21.051178}, + {9.1481781005859, 49.025802612305}, + {26.837546, 54.780582}, + {22.490989, 47.902641}, + {7.109299, 50.857315}, + {48.041349, 29.28239}, + {13.923111, 48.227921}, + {36.867967, 55.116212}, + {6.193667, 48.682979}, + {10.189743, 53.539928}, + {10.223269, 50.035172}, + {-122.014572, 37.291031}, + {150.670701, -33.770854}, + {-78.487024, -0.181791}, + {115.035776, -30.230027}, + {-117.157486, 32.72003}, + {73.280697, 19.105911}, + {12.974656, 47.170331}, + {119.45137, -5.150528}, + {76.797866821289, 17.096786499023}, + {-78.474688, -0.183114}, + {118.41819763184, 32.463912963867}, + {13.280027, 50.682837}, + {28.054871, -26.206055}, + {-0.543084, 51.580533}, + {8.782638, 47.296625}, + {25.871617, -24.605567}, + {9.427073, 54.798712}, + {-122.483762, 48.792103}, + {-117.31132507324, 33.127212524414}, + {49.404831, -18.12767}, + {7.38312, 46.930009}, + {2.104053, 41.364212}, + {7.3752593994141, 46.924667358398}, + {75.141952, 15.328262}, + {7.090218, 46.696847}, + {7.602427, 46.779588}, + {13.727303, 51.237259}, + {100.61142, 14.189987}, + {28.077621, -26.07296}, + {87.537002563477, 25.888595581055}, + {28.205566, -25.830803}, + {24.711061, 48.922931}, + {9.959304, 48.090137}, + {100.72196960449, 13.730850219727}, + {-3.680607, 40.441111}, + {28.301086, -25.246735}, + {19.293754, 46.628486}, + {44.515228, 40.203781}, + {-0.482556, 51.909558}, + {2.3641204833984, 48.804702758789}, + {25.603355, 58.968833}, + {14.324111938477, 51.736679077148}, + {-1.996765, 52.524262}, + {34.363491, 61.796247}, + {100.679398, 13.647766}, + {27.397839, -28.457025}, + {39.735765, 47.227406}, + {37.612773, 55.873914}, + {29.666519165039, 41.118392944336}, + {-90.473, 14.613909}, + {-8.9202117919922, 38.706893920898}, + {-43.11918, -22.885662}, + {-122.28813171387, 47.434158325195}, + {100.616226, 13.758316}, + {-117.26875305176, 32.96516418457}, + {14.951981, 56.188385}, + {10.466368, 61.212052}, + {19.149993, 47.523866}, + {-95.815544, 31.631355}, + {-6.786116, 40.590365}, + {13.966359, 55.592883}, + {9.249802, 52.910843}, + {8.668625, 49.272336}, + {-0.407501, 51.499175}, + {16.311901, 48.198624}, + {12.162551879883, 50.661392211914}, + {-1.9631195068359, 52.573013305664}, + {-93.420639, 41.676407}, + {6.4427947998047, 48.344650268555}, + {13.338834, 58.127544}, + {25.933609, 44.58931}, + {9.9858856201172, 53.56315612793}, + {29.115829, -26.580734}, + {13.567058, 45.797864}, + {113.297757, 22.806743}, + {11.349671, 49.042214}, + {13.131903, 54.320275}, + {12.313509, 50.539302}, + {17.880248, 46.956248}, + {28.209457397461, -25.747146606445}, + {10.68176, 53.884769}, + {10.18136, 54.297015}, + {10.508661, 53.993368}, + {8.726548, 53.828655}, + {9.169442, 45.517731}, + {103.72673034668, 12.634963989258}, + {15.912093, 45.799365}, + {73.238296508789, 34.234085083008}, + {120.6566619873, 24.115676879883}, + {-2.769928, 36.77124}, + {12.230336, 49.544743}, + {-88.045120239258, 42.12776184082}, + {11.785585, 42.114373}, + {12.580908, 53.7694}, + {8.9778900146484, 52.356033325195}, + {5.560925, 51.435309}, + {30.342375, 59.949548}, + {-9.013896, 38.923788}, + {8.884609, 47.551057}, + {100.622896, 13.736866}, + {9.201575, 48.49302}, + {7.910106, 47.623211}, + {8.703335, 49.411155}, + {8.933678, 47.774436}, + {100.52558898926, 13.762435913086}, + {25.08191, 60.266467}, + {11.823134, 55.444907}, + {14.236221313477, 51.424942016602}, + {12.571106, 41.853104}, + {-71.569883, 42.844895}, + {-9.1619110107422, 38.719253540039}, + {27.531027, 53.84111}, + {28.864615, -16.043718}, + {19.134903, 47.644882}, + {12.844303, 52.395944}, + {118.61320495605, 35.79963684082}, + {-75.61203, 45.43396}, + {115.940061, -31.932188}, + {-73.591232299805, 45.490951538086}, + {100.513229, 13.868133}, + {71.378860473633, 42.902297973633}, + {8.001701, 49.112288}, + {114.71163, 22.841208}, + {8.410802, 48.992359}, + {100.341176, 13.767537}, + {-78.493391, -0.130659}, + {-122.81959533691, 49.160385131836}, + {-5.263517, 36.366657}, + {9.158478, 45.406494}, + {8.688383, 47.605464}, + {-7.610162, 42.951144}, + {72.910036, 19.086818}, + {38.349609, 55.72113}, + {-99.16471, 19.273189}, + {5.013708, 45.752301}, + {18.071136, 49.741287}, + {10.193557, 59.621048}, + {106.854154, -6.269631}, + {13.847951, 46.614841}, + {28.276431, -15.413515}, + {14.135847, 45.094555}, + {13.850326538086, 46.608810424805}, + {-69.944929, 18.433678}, + {4.962845, 45.687332}, + {10.685806, 59.918747}, + {8.616989, 49.274643}, + {15.068435668945, 48.140029907227}, + {27.406689, 47.151414}, + {79.84972, 7.227974}, + {9.9652862548828, 54.767532348633}, + {4.44603, 50.438147}, + {11.11089, 47.31069}, + {8.596248, 50.52768}, + {100.554033, 13.803017}, + {-48.444674, -1.279437}, + {0.80977, 44.074773}, + {-96.696853637695, 42.473831176758}, + {-98.722659, 20.098352}, + {35.17116, 32.264688}, + {-9.2415618896484, 39.06120300293}, + {101.44706726074, 13.32160949707}, + {2.826233, 41.98494}, + {11.39763, 48.237878}, + {153.552996, -28.867753}, + {14.306259, 40.988617}, + {28.289488, -15.41443}, + {11.71063, 51.132818}, + {13.736824, 51.22034}, + {13.583903, 50.830126}, + {-8.191537, 37.523642}, + {-9.2127227783203, 38.959579467773}, + {28.258895874023, -25.865249633789}, + {12.55562, 51.550904}, + {5.69724, 49.694311}, + {100.91972351074, 13.174667358398}, + {9.146926, 50.679546}, + {6.753423, 43.487596}, + {79.100453, 13.332173}, + {-78.260289, 40.653696}, + {47.896957397461, 29.302597045898}, + {27.47921, 53.937996}, + {37.327194, 54.507523}, + {12.578659057617, 55.683517456055}, + {12.525042, 55.773395}, + {34.418106, 53.214798}, + {1.020127, 41.41269}, + {-101.164365, 20.2891}, + {7.051558, 50.533664}, + {13.002688, 47.83003}, + {101.380069, 14.135498}, + {100.568966, 13.943735}, + {100.50086975098, 13.767929077148}, + {13.373845, 52.524486}, + {50.119531, 53.208528}, + {8.199394, 50.01019}, + {10.599006, 52.448301}, + {8.648692, 51.414938}, + {48.028107, 29.350433}, + {33.435891, 38.242222}, + {10.648343, 42.988395}, + {10.064082, 53.634244}, + {13.443832397461, 45.742263793945}, + {-58.504262, -34.803316}, + {35.032148, 48.525419}, + {18.473001, 47.175742}, + {28.052314, -26.189216}, + {-92.938565, 17.991854}, + {-0.474443, 51.672667}, + {28.036697, -26.034576}, + {27.951278686523, -26.072616577148}, + {-51.212625, -30.071947}, + {10.439758, 53.266525}, + {28.260269165039, -25.821304321289}, + {12.408598, 47.517702}, + {8.690872, 50.107956}, + {13.715757, 52.000812}, + {9.557711, 48.632342}, + {0.87821960449219, 51.917953491211}, + {-2.8214263916016, 53.170394897461}, + {9.025769, 58.754495}, + {9.100113, 45.531235}, + {48.023300170898, 29.334182739258}, + {12.100998, 50.067219}, + {-77.086574, -11.97112}, + {127.729455, 37.898369}, + {2.250595, 48.607009}, + {7.564634, 51.359671}, + {9.405019, 54.17749}, + {10.874002, 53.515006}, + {-58.454056, -34.637222}, + {113.12965393066, 22.995071411133}, + {8.5672760009766, 50.002212524414}, + {-91.330673, 14.830308}, + {9.7290802001953, 49.407577514648}, + {-58.440674, -34.571228}, + {75.002975, 12.513428}, + {-77.028275, 38.915634}, + {-0.201223, 51.459236}, + {19.225616, 50.301247}, + {19.327833, 51.01279}, + {27.807746, -26.536236}, + {-97.615585327148, 30.133438110352}, + {26.220932, -29.106903}, + {-73.590748, 40.703578}, + {-110.554097, 45.669386}, + {-79.131334, 43.806941}, + {9.8883819580078, 48.321304321289}, + {106.935905, 10.966347}, + {88.369217, 22.605972}, + {-79.775161743164, 36.12922668457}, + {-76.897503, 39.185887}, + {72.81601, 18.963776}, + {5.46793, 43.615551}, + {9.6920013427734, 49.803085327148}, + {39.005426, 54.229308}, + {27.915948, -26.133915}, + {8.189223, 44.853551}, + {7.373278, 50.97386}, + {9.028021, 48.780564}, + {-3.69906, 40.435325}, + {10.544643, 52.9529}, + {-51.60758972168, -22.831649780273}, + {12.255631, 45.482254}, + {-99.118947, 19.379098}, + {108.2544708252, -6.7160797119141}, + {28.670177, -13.005281}, + {14.55207824707, 56.776657104492}, + {6.573257, 46.680908}, + {9.149277, 49.187851}, + {6.122284, 52.513028}, + {-1.352215, 52.79117}, + {6.7641448974609, 51.500473022461}, + {5.860519, 49.960274}, + {9.518051, 47.472611}, + {15.895156860352, 47.403945922852}, + {13.388823, 46.626209}, + {-0.78346252441406, 51.217575073242}, + {8.56987, 47.445755}, + {-9.170151, 38.722687}, + {9.687309, 47.55352}, + {28.82222, 41.031876}, + {28.651865, 56.713007}, + {9.08844, 48.831997}, + {11.410057, 47.966701}, + {10.109557, 52.382374}, + {8.4780120849609, 51.972885131836}, + {113.474349, 52.044298}, + {15.661305, 49.84811}, + {-4.7138214111328, 36.663436889648}, + {17.477953, 51.27624}, + {17.118759155273, 52.456283569336}, + {18.03167, 53.017671}, + {2.304611, 48.890305}, + {37.532751, 55.255892}, + {25.983659, 42.434137}, + {103.710055, 1.346316}, + {14.52636, 53.434042}, + {55.31918, 25.087993}, + {14.280441, 62.689499}, + {37.360595, 55.967208}, + {-91.791361, 34.801665}, + {6.901779, 51.660691}, + {121.541061, 25.064278}, + {69.855880737305, 42.15934753418}, + {9.657325, 47.351075}, + {17.309112, 48.678884}, + {106.861458, -6.243629}, + {-70.221569, 41.654565}, + {18.617706, 54.41597}, + {2.252487, 49.126996}, + {12.225719, 51.269172}, + {-122.76466369629, 47.045516967773}, + {29.915533, -25.797372}, + {18.228378295898, 54.605484008789}, + {16.375872, 48.210985}, + {120.383377, 17.568649}, + {30.63991, 50.484652}, + {16.536026, 51.175461}, + {-58.410089, -34.565833}, + {7.619406, 51.594092}, + {79.01008, 26.79098}, + {-87.724601, 41.645051}, + {28.192977905273, -25.866622924805}, + {-99.032135, 19.338684}, + {-0.645905, 44.848938}, + {115.842728, -31.946182}, + {115.763626, -31.956482}, + {9.471902, 48.617334}, + {9.971359, 53.787641}, + {18.723572, 47.149677}, + {29.49811, -25.820878}, + {76.614304, 27.192657}, + {16.924853, 46.268111}, + {7.2269439697266, 51.467514038086}, + {138.610243, -34.92952}, + {10.058264, 53.579872}, + {18.522263, 54.37169}, + {24.327621, 46.154378}, + {103.81874084473, 1.4481353759766}, + {4.157851, 51.423915}, + {16.286546, 45.750962}, + {120.656662, 23.899796}, + {-58.826053, -34.43624}, + {28.319320678711, -15.403518676758}, + {9.538659, 51.280162}, + {60.752334594727, 55.900497436523}, + {9.154701, 52.289085}, + {103.940311, 1.371048}, + {-0.702749, 53.077338}, + {27.446938, 38.655739}, + {14.572961, 40.827527}, + {27.198715, -17.357025}, + {73.231155, 18.901448}, + {11.621391, 48.192961}, + {12.177658081055, 48.567123413086}, + {12.628374, 47.958375}, + {12.155302, 47.863219}, + {11.173638, 43.800394}, + {-117.111388, 32.768173}, + {12.599029, 41.776084}, + {10.458057, 43.770139}, + {-117.151063, 32.748411}, + {8.336531, 40.74071}, + {-94.662215, 39.263438}, + {12.637796, 41.451588}, + {7.6581573486328, 45.048751831055}, + {8.544017, 39.085028}, + {42.989488, 36.853245}, + {10.765253, 43.468129}, + {-115.207113, 36.032992}, + {10.529803, 46.603318}, + {3.757496, 51.080838}, + {10.466423, 47.650529}, + {-102.486951, 35.262391}, + {10.317008, 45.484304}, + {-93.441338, 35.437813}, + {121.34056091309, 23.050003051758}, + {-7.060104, 55.16785}, + {30.476276, 50.449582}, + {19.407258, 51.8518}, + {13.025409, 47.64406}, + {16.74523, 51.698701}, + {7.963944, 51.445542}, + {103.736468, 1.339645}, + {105.752792, 31.413345}, + {121.532822, 25.06647}, + {-1.572563, 53.778794}, + {114.25025939941, 22.326278686523}, + {11.210287, 46.566104}, + {36.818369, 53.936317}, + {-73.336029, 5.580139}, + {2.176895, 41.395889}, + {2.212181, 48.691082}, + {11.19199, 54.428223}, + {-0.485118, 43.895021}, + {14.579548, 53.361832}, + {0.420913, 51.289445}, + {-36.217496, -9.892407}, + {-2.235032, 51.814499}, + {9.7922515869141, 52.534561157227}, + {11.175155639648, 49.367752075195}, + {-83.32649230957, 43.043746948242}, + {20.546493530273, 46.239395141602}, + {16.380392, 48.134539}, + {14.015937, 48.635164}, + {9.2264556884766, 49.176864624023}, + {-4.254868, 55.879074}, + {11.418228149414, 59.108505249023}, + {9.03557, 47.573548}, + {20.255012, 44.959768}, + {26.504173, 42.483101}, + {9.982224, 54.08226}, + {-79.737227, 43.700377}, + {15.007856, 54.079049}, + {120.254562, 23.474442}, + {100.51734924316, 13.659439086914}, + {37.60988, 55.798771}, + {87.281656, 26.482029}, + {0.270539, 51.500244}, + {8.655709, 50.206154}, + {15.072296, 54.017782}, + {9.952004, 53.733099}, + {14.177697, 48.173881}, + {3.12822, 50.701767}, + {6.4043426513672, 51.177749633789}, + {19.637375, 41.801743}, + {-0.405518, 51.739546}, + {25.015182495117, 60.171432495117}, + {29.767857, 50.556473}, + {10.611308, 43.618707}, + {-0.863058, 49.123485}, + {-76.741561889648, 39.129867553711}, + {10.81714, 54.143852}, + {39.519882202148, 57.908248901367}, + {37.50416, 55.811212}, + {5.701158, 51.809404}, + {2.1114349365234, 48.612442016602}, + {12.323055, 46.138458}, + {14.681537, 54.001923}, + {-123.143635, 49.337425}, + {2.240369, 43.209193}, + {106.799084, -6.253727}, + {-47.171114, -23.416803}, + {30.490298, 59.838115}, + {88.521103, 69.475479}, + {12.408682, 48.212418}, + {61.405569, 56.771644}, + {-122.450115, 45.527311}, + {5.663711, 43.437961}, + {-97.622499, 35.458208}, + {42.220459, 47.52095}, + {-0.571976, 44.828829}, + {-1.445113, 48.745322}, + {24.177628, 56.45607}, + {10.6124, 45.696734}, + {23.328906, 42.695181}, + {35.071373, 48.463478}, + {8.8158416748047, 47.771987915039}, + {8.8817596435547, 49.241409301758}, + {9.929604, 53.003364}, + {121.189928, 24.905233}, + {4.8236846923828, 52.309341430664}, + {18.533407, -34.006119}, + {3.931928, 43.606404}, + {10.724261, 49.963914}, + {4.610236, 51.876363}, + {-74.144363, 4.748928}, + {-94.335617, 37.082291}, + {13.382997, 54.110765}, + {-2.373074, 53.500589}, + {-1.725638, 53.641777}, + {13.874628, 51.737089}, + {14.982033, 50.047875}, + {-1.337897, 45.945886}, + {6.6089630126953, 49.386978149414}, + {24.703789, 43.425694}, + {11.227162, 49.489359}, + {-84.57893371582, 39.030990600586}, + {-43.272694, -22.839693}, + {-2.137043, 53.592318}, + {-0.833691, 51.290222}, + {-57.615088, -25.29172}, + {86.575552, 26.40636}, + {15.436249, 52.316895}, + {-1.026184, 44.978727}, + {11.913062, 48.451311}, + {11.415285, 53.622894}, + {15.559416, 52.432962}, + {16.440067, 48.218651}, + {31.456427, 50.065901}, + {-0.569343, 51.256256}, + {14.698258, 53.173599}, + {113.061676, 23.003769}, + {-0.063934, 51.529312}, + {19.822311, 51.748123}, + {-0.62394, 51.235571}, + {23.223886, 56.71889}, + {37.852715, 55.709253}, + {27.535171508789, 53.844680786133}, + {-122.672837, 45.494156}, + {3.327893, 43.278583}, + {15.410476, 54.158615}, + {13.679433, 52.301196}, + {101.405313, 13.078897}, + {28.180651, -26.150997}, + {13.474044799805, 51.059646606445}, + {27.503586, -26.702271}, + {2.13131, 41.396897}, + {18.293792, 49.854065}, + {34.185383, 44.50588}, + {30.532694, 50.470762}, + {14.711426, 40.770264}, + {-123.056546, 45.185146}, + {10.665963, 50.922029}, + {72.848282, 19.135125}, + {26.645966, -26.865006}, + {10.851059, 46.222572}, + {-118.446516, 34.275119}, + {9.608619, 47.796886}, + {-1.752319, 53.789749}, + {-1.541438, 53.77335}, + {37.394492, 55.859206}, + {-78.480909, -0.168826}, + {9.236506, 45.650501}, + {7.176132, 50.794601}, + {30.205678, 50.015339}, + {10.127334594727, 53.79524230957}, + {7.203319, 51.583537}, + {2.155188, 48.940562}, + {-1.892702, 54.297999}, + {-0.037766, 51.493263}, + {-0.565142, 44.87761}, + {-78.134778, 0.361004}, + {128.160778, 37.482837}, + {38.513476, 54.491538}, + {27.228241, -25.659943}, + {36.825038, 55.913119}, + {32.637863, 0.564651}, + {27.247467, -25.396957}, + {15.684669, 47.23603}, + {23.833794, 56.979224}, + {-61.349442, 15.593308}, + {-1.744922, 52.500318}, + {36.813805, 55.913016}, + {-49.35386, -16.65561}, + {37.321758, 55.801792}, + {8.014526, 58.153418}, + {38.313788, 55.434952}, + {12.078232, 54.113022}, + {-1.915964, 53.705146}, + {-58.066366, -34.873917}, + {37.686393, 55.791451}, + {8.657012, 47.371057}, + {9.0067291259766, 56.24382019043}, + {72.90501, 19.121543}, + {18.182979, 46.683665}, + {13.390274047852, 51.32194519043}, + {-0.580982, 44.818722}, + {-2.823141, 54.755173}, + {6.505374, 49.720396}, + {13.249741, 52.620163}, + {0.109961, 51.754924}, + {-1.023366, 53.317337}, + {-9.404818, 39.04098}, + {72.846909, 19.09414}, + {-8.5260772705078, 42.924270629883}, + {-8.696365, 42.176285}, + {-6.90292, 42.456268}, + {3.287911, 44.783779}, + {20.452728, 45.306168}, + {-113.50593566895, 53.539810180664}, + {21.702479, 42.24142}, + {15.411987, 47.031784}, + {17.22995, 50.455449}, + {21.709988, 42.164418}, + {-0.087329, 51.536636}, + {-0.077063, 51.49836}, + {-0.099014, 51.530411}, + {-58.506415, -34.671184}, + {16.430433, 48.244756}, + {-61.264315, 10.628071}, + {13.74681, 51.055977}, + {-86.15616, 37.511199}, + {25.094833, 60.294571}, + {23.563889, 46.770309}, + {37.563748, 55.909921}, + {-3.234626, 43.360775}, + {-122.197151, 47.301224}, + {9.941095, 53.540867}, + {38.274307250977, 37.768936157227}, + {-1.347816, 53.725548}, + {5.146224, 51.485391}, + {9.8934, 53.473021}, + {9.950352, 53.596973}, + {9.435908, 53.594386}, + {6.1118316650391, 49.067001342773}, + {3.05334, 50.541058}, + {25.692155, 47.572911}, + {13.351135, 53.933945}, + {0.50880432128906, 51.51969909668}, + {120.583878, 30.008705}, + {16.362593, 48.211781}, + {27.806228, 46.415176}, + {23.091201782227, 44.028396606445}, + {12.11174, 50.717719}, + {11.656958, 50.082562}, + {4.893722, 47.046204}, + {51.505051, 25.67482}, + {-110.767593, 32.138427}, + {8.699444, 52.196744}, + {-118.330212, 34.163666}, + {9.922156, 51.67821}, + {12.176835, 48.992965}, + {-101.876449, 33.548126}, + {-1.15773, 53.958298}, + {-79.646895, 39.659081}, + {19.05913, 47.494374}, + {13.421984, 52.369347}, + {28.050155639648, -26.102828979492}, + {10.052764, 53.593258}, + {52.120174, 54.887278}, + {28.229599, -26.130753}, + {-1.504345, 39.541585}, + {-42.641735, -21.527235}, + {-1.540973, 53.778048}, + {9.869356, 47.782191}, + {9.950181, 46.164364}, + {25.305957, 60.629568}, + {6.64439, 51.121465}, + {-1.706521, 53.582039}, + {10.924041, 44.156702}, + {-71.797943, 42.258453}, + {1.878921, 41.768058}, + {4.824745, 45.639169}, + {-13.657689, 9.571421}, + {35.257186889648, 48.628921508789}, + {-0.335673, 51.079239}, + {9.964699, 53.815681}, + {92.84285, 56.012284}, + {37.885631, 56.04195}, + {39.310175, 57.081794}, + {14.796799, 41.138443}, + {10.983496, 45.397568}, + {-117.742197, 49.168655}, + {-74.118576, 4.559326}, + {-2.724988, 54.245964}, + {-2.769516, 54.050491}, + {-3.792, 56.14975}, + {-111.792888, 33.415877}, + {115.945119, -31.936022}, + {14.731979370117, 40.900039672852}, + {10.702543, 45.432529}, + {-44.029615, -20.021022}, + {-2.955697, 56.481712}, + {11.261303, 46.313028}, + {6.339101, 51.273499}, + {10.514965, 45.450401}, + {11.564346, 52.094193}, + {103.969303, 1.321668}, + {27.163016, 41.523057}, + {18.513267, 46.987799}, + {-1.25976, 53.759537}, + {24.312381, 57.094291}, + {11.184867, 48.89122}, + {121.547114, 25.030104}, + {22.789073, 49.792686}, + {-97.000717, 32.707443}, + {22.644882202148, 49.90608215332}, + {19.417046, 51.843091}, + {13.368301391602, 52.541427612305}, + {17.309026, 47.622956}, + {16.33253, 48.241846}, + {0.158038, 45.712625}, + {3.082754, 50.632159}, + {37.696686, 55.615158}, + {4.370499, 50.469819}, + {100.709267, 13.936157}, + {100.194198, 13.754413}, + {10.58751, 43.031041}, + {9.04625, 45.768206}, + {-79.84245300293, 9.3679046630859}, + {38.026325, 55.535987}, + {100.71513, 14.06157}, + {24.70234, 59.440105}, + {16.210049, 59.005853}, + {21.63208, 41.927376}, + {25.743026733398, 48.615188598633}, + {-1.871491, 52.447465}, + {-0.167265, 50.837419}, + {31.138, -25.169678}, + {100.567786, 13.751574}, + {113.45375061035, -7.0758819580078}, + {-67.448502, 45.96254}, + {9.153397, 45.716279}, + {57.448196, -20.173351}, + {10.085802, 53.509201}, + {12.423031, 50.70101}, + {26.144714, 44.494629}, + {28.002659, -25.483854}, + {16.101475, 52.217838}, + {-57.585869, -25.316963}, + {-75.241928100586, 4.4419097900391}, + {-57.629995, -25.287233}, + {-3.703002, 56.026001}, + {28.33292, -15.388761}, + {10.956344, 44.522324}, + {-60.642014, -32.976608}, + {-13.680301, 9.543639}, + {-58.556328, -34.64035}, + {21.422383, 42.002983}, + {17.042767, 51.158067}, + {37.389295, 36.999904}, + {8.310471, 50.037232}, + {82.948213, 54.926585}, + {10.860059, 45.097526}, + {-77.042902, -12.11108}, + {-76.518445, 3.453013}, + {8.9627838134766, 52.121200561523}, + {7.540741, 49.981613}, + {-1.622806, 51.127919}, + {24.693718, 59.400978}, + {-79.939956665039, 40.424880981445}, + {-78.633682, -1.254227}, + {-121.982697, 37.798268}, + {39.740219, 52.068558}, + {99.158249, 9.138565}, + {116.04789733887, -32.226333618164}, + {5.664898, 45.232464}, + {-4.010498, 48.692263}, + {9.4022369384766, 49.047775268555}, + {20.112385, 46.266119}, + {26.208433, 50.633231}, + {34.781029, 31.244555}, + {9.174126, 53.50201}, + {17.037179, 51.125598}, + {73.200975, 33.490812}, + {-74.374008, 40.523071}, + {19.137496948242, 47.472610473633}, + {34.860649, 32.290878}, + {-3.997175, 5.325887}, + {29.312703, 40.493634}, + {14.794877, 46.572968}, + {13.828353881836, 50.625686645508}, + {13.544082641602, 52.627944946289}, + {8.3887481689453, 52.380752563477}, + {8.016413, 49.506283}, + {10.650166, 53.83049}, + {13.779104, 55.441289}, + {11.260285, 51.362219}, + {12.451577, 51.363778}, + {28.206864, -32.29126}, + {-1.7461395263672, 53.715591430664}, + {-0.527235, 51.269508}, + {8.017294, 52.49133}, + {-46.56395, -23.51738}, + {-0.276883, 51.740085}, + {-80.299972, 26.111744}, + {18.763256, 50.504091}, + {18.908982, -33.934433}, + {103.964163, 1.350478}, + {18.749542, -33.831711}, + {18.490042, -33.948531}, + {-3.700607, 42.212938}, + {32.711716, 0.46669}, + {18.534073, -33.885819}, + {9.737269, 47.548385}, + {2.37236, 48.93219}, + {1.281547, 51.102725}, + {-122.611586, 47.356689}, + {-107.18625, 50.409265}, + {18.619143, -33.608999}, + {21.376062, 42.005884}, + {46.643304, 53.103993}, + {-8.533932, 40.08848}, + {11.180648803711, 49.38835144043}, + {9.78165, 45.682828}, + {9.259002, 50.738534}, + {9.7441864013672, 48.786849975586}, + {-1.584593, 47.253807}, + {18.534988, -33.914658}, + {9.656983, 47.453385}, + {18.408279, -33.905869}, + {-78.542953, -0.318008}, + {19.075356, 47.378172}, + {13.37105, 51.424942}, + {61.364824, 55.171624}, + {-91.038438, 34.94737}, + {114.18296813965, 22.283706665039}, + {-70.659699, -33.439463}, + {-2.212674, 56.969687}, + {9.549407, 39.284685}, + {17.023424, 51.085114}, + {18.855629, -33.924751}, + {18.858915, -34.066053}, + {18.60466, -33.949966}, + {17.011491, 51.070515}, + {4.298588, 45.70264}, + {116.165314, -31.814346}, + {-9.332199, 38.684415}, + {-122.512302, 48.457894}, + {113.141681, 22.986332}, + {13.554337, 52.755153}, + {-0.343093, 38.899156}, + {-43.216446, -22.909845}, + {4.4405364990234, 52.154159545898}, + {23.98201, 49.806976}, + {11.012077, 46.07769}, + {107.46620178223, -6.4167022705078}, + {13.227597, 52.523501}, + {39.188919, 53.236345}, + {-0.165399, 48.473294}, + {14.677098, 51.966329}, + {7.636203, 44.991738}, + {121.162491, 14.62532}, + {10.323712, 53.423081}, + {10.119094848633, 49.621810913086}, + {7.947652, 50.876568}, + {9.09676, 45.452176}, + {1.821671, 50.882149}, + {-46.422905, -23.543}, + {13.662185668945, 43.426895141602}, + {2.3668670654297, 48.906326293945}, + {17.055588, -22.584915}, + {16.579432, 49.260823}, + {13.746022, 45.543406}, + {30.353266, 59.917313}, + {-0.181436, 51.548789}, + {-70.578232, -33.476715}, + {-66.299057, 18.40622}, + {19.019931, 47.50545}, + {37.585825, 55.872746}, + {7.316208, 51.459155}, + {7.9593, 50.97259}, + {12.384656, 51.337496}, + {-89.049584, 42.301185}, + {-0.97572326660156, 53.620834350586}, + {-43.123464, -22.894709}, + {-13.633576, 9.5681}, + {-118.14491271973, 47.237777709961}, + {120.718186, 15.026688}, + {-13.644266, 9.55906}, + {102.118757, 6.211073}, + {12.591705, 44.040756}, + {-43.112131, -22.903736}, + {-64.156265, -31.449051}, + {-48.9836, -21.14377}, + {-2.824516, 53.396645}, + {14.639064, 53.379462}, + {9.943147, 53.789136}, + {10.06296, 56.172621}, + {13.757402, 43.241501}, + {39.813766, 54.655838}, + {28.274002075195, -25.784225463867}, + {20.570517, 44.729464}, + {7.548688, 45.218648}, + {101.691026, 3.168426}, + {74.2798, 31.664383}, + {-2.651825, 53.450546}, + {115.897522, -32.062225}, + {140.839126, 38.401003}, + {57.459182739258, -20.24299621582}, + {-74.09797668457, 4.6918487548828}, + {42.703948, 17.062795}, + {-98.994369, 22.755923}, + {120.585526, 16.425247}, + {28.031195, -26.18407}, + {-49.319846, -16.814299}, + {-56.074905395508, -15.871810913086}, + {-1.525979, 53.787581}, + {-75.946992, 44.398862}, + {-95.407686, 33.119818}, + {-35.968673, -8.295908}, + {106.823593, -6.240097}, + {106.862727, -6.242999}, + {106.85371398926, -6.2697601318359}, + {13.905166, 45.886826}, + {14.571882, 53.507318}, + {19.817954, 45.308376}, + {78.373032, 28.208771}, + {10.051803588867, 53.552169799805}, + {26.105006, 44.45735}, + {-2.743612, 53.305894}, + {11.010360717773, 49.823684692383}, + {9.951255, 53.650091}, + {11.408615, 53.617172}, + {12.790145874023, 53.730697631836}, + {11.782150268555, 51.478500366211}, + {7.369211, 58.393611}, + {15.819625854492, 49.881362915039}, + {7.034683, 50.917927}, + {25.564499, 46.73275}, + {27.497116, -26.356237}, + {-3.366552, 57.410973}, + {28.00518, -26.533014}, + {5.754089, 50.958023}, + {7.9492950439453, 48.82942199707}, + {11.257553100586, 50.966262817383}, + {6.235105, 50.824572}, + {7.582332, 50.413415}, + {13.337435, 52.604447}, + {37.486544, 55.822485}, + {-51.039047241211, -30.078506469727}, + {11.570663, 48.136215}, + {115.882004, -31.934372}, + {8.453262, 47.910234}, + {18.154749, 48.253979}, + {-74.147072, 4.686699}, + {2.289001, 48.906807}, + {27.526932, 53.87455}, + {15.095905, 37.679217}, + {-111.694491, 33.477903}, + {121.01234436035, 14.520492553711}, + {-6.8698883056641, 33.959426879883}, + {7.057686, 51.219807}, + {7.612381, 51.587448}, + {9.381236, 49.406355}, + {8.4340667724609, 47.390213012695}, + {21.931916, 36.895294}, + {9.147572, 45.463771}, + {8.301545, 49.571686}, + {-0.622238, 35.213242}, + {37.634799, 55.794494}, + {13.217068, 53.560658}, + {8.7238311767578, 49.452896118164}, + {-4.312759, 47.898192}, + {27.45964050293, 64.121017456055}, + {23.770785, 37.844271}, + {113.96873474121, 22.385330200195}, + {-103.845278, 32.584765}, + {-73.304568, 45.583982}, + {2.429738, 48.847361}, + {8.780136, 53.067741}, + {8.837811, 48.336594}, + {13.327103, 52.428556}, + {30.700333, 50.380325}, + {151.171674, -33.77604}, + {87.845306, 25.939407}, + {21.448721, 41.997274}, + {17.968597, 59.399414}, + {9.868438, 53.627721}, + {8.387343, 47.423885}, + {-53.214985, -17.324546}, + {2.282799, 48.927715}, + {-66.841782, 10.493591}, + {-99.155731, 19.437389}, + {7.755949, 47.924645}, + {30.289399, 59.972491}, + {14.321368, 45.799945}, + {107.547676, -6.858085}, + {-103.333969, 20.683594}, + {39.202377, -6.784744}, + {-74.080784, 4.661743}, + {23.725261, 38.023746}, + {37.619247, 55.64827}, + {22.401466, 38.531113}, + {22.9796, 37.965502}, + {22.794717, 38.851884}, + {22.678846, 39.896626}, + {22.118672, 38.266288}, + {9.130431, 49.347619}, + {-57.993164, -34.912491}, + {-81.706008911133, 41.472702026367}, + {122.625961, 10.78569}, + {5.143962, 52.328181}, + {-79.846229, 38.917008}, + {92.821839, 56.033157}, + {-43.37497, -22.93419}, + {30.538167, 39.792382}, + {-1.099664, 52.284112}, + {-68.966675, 18.421326}, + {150.855498, -33.794048}, + {6.771698, 51.409424}, + {114.237556, 22.318039}, + {13.562642, 52.447723}, + {5.86495, 47.279959}, + {-113.309558, 53.518525}, + {-1.5373992919922, 53.590621948242}, + {29.849166870117, 40.759963989258}, + {10.509057, 43.308917}, + {17.052546, 51.113198}, + {9.326235, 45.7085}, + {-16.247225, 28.466335}, + {-77.347483, 38.855858}, + {37.393112, 55.866165}, + {-86.923573, 34.856539}, + {91.008682250977, 29.530563354492}, + {16.857342, 45.20616}, + {113.088129, 22.968094}, + {21.969223022461, 47.594833374023}, + {7.412064, 9.103958}, + {16.777819, 53.129625}, + {9.4132232666016, 52.795486450195}, + {-6.865768, 33.955994}, + {27.777903, 64.40529}, + {2.27948, 48.967346}, + {-87.211838, 14.040756}, + {-121.7872, 37.978449}, + {-58.693549, -34.62796}, + {9.279877, 45.564652}, + {-81.233435, 28.460083}, + {100.550995, 13.740807}, + {100.583038, 13.789902}, + {100.566913, 13.796768}, + {101.063576, 14.203262}, + {10.991205, 49.586651}, + {109.706726, 21.123276}, + {100.567703, 13.844833}, + {9.711914, 56.934586}, + {100.228867, 16.8647}, + {-118.445389, 34.047318}, + {-7.588332, 33.365637}, + {-93.14826965332, 44.753494262695}, + {-117.238312, 47.658949}, + {-80.229721069336, 25.813064575195}, + {-81.640090942383, 40.710525512695}, + {-75.445175170898, 40.575942993164}, + {-98.657913, 29.4207}, + {-117.973302, 33.922732}, + {-96.80809, 32.772217}, + {-76.444931030273, 42.328262329102}, + {-122.388007, 40.553346}, + {-77.65754699707, 39.517135620117}, + {-121.506424, 38.682175}, + {-83.973656, 33.686314}, + {20.432511, 44.740448}, + {-80.071792602539, 40.472946166992}, + {-117.04765319824, 33.146438598633}, + {-118.47312927246, 34.392013549805}, + {-104.6166229248, 38.288040161133}, + {-97.787246704102, 26.468124389648}, + {-8.552171, 38.929153}, + {-93.218307495117, 44.925155639648}, + {-0.162935, 50.930583}, + {9.895251, 51.422883}, + {-110.916343, 31.355776}, + {-122.71110534668, 38.439102172852}, + {-118.252602, 34.012871}, + {-105.07942199707, 40.615768432617}, + {-122.76878356934, 53.913345336914}, + {-79.933090209961, 43.256607055664}, + {-84.963455, 35.147324}, + {-118.60084533691, 34.184646606445}, + {-69.203567504883, 9.5532989501953}, + {-82.446212768555, 27.959518432617}, + {-76.608352661133, 39.19303894043}, + {-81.017532, 34.049606}, + {-78.140571, 42.742248}, + {11.044999, 52.705629}, + {6.782684, 47.479804}, + {-95.418319702148, 30.848922729492}, + {-77.348556518555, 35.560684204102}, + {103.910614, 1.370819}, + {27.50164, 53.92971}, + {13.80144, 51.545814}, + {20.587296, 49.994026}, + {37.473335, 55.813637}, + {-43.39065, -22.736229}, + {-82.727737426758, 27.829055786133}, + {-76.966781616211, 38.967819213867}, + {-76.73624, 37.319698}, + {-117.096741, 32.707946}, + {-80.534591674805, 43.501052856445}, + {-77.094497680664, 38.977432250977}, + {-76.756516, 40.120506}, + {-95.897598266602, 36.130599975586}, + {16.950037, 51.036833}, + {-77.893753051758, 34.198379516602}, + {6.832856, 51.36191}, + {9.775404, 52.270794}, + {9.148146, 54.07955}, + {8.181838, 51.83922}, + {103.751538, 1.348893}, + {-87.732009887695, 41.880569458008}, + {-88.093185424805, 36.060562133789}, + {-46.998301, -22.981304}, + {13.560562133789, 42.85285949707}, + {-78.763046264648, 35.904006958008}, + {-46.758275, -23.66296}, + {-80.376663208008, 44.183578491211}, + {-48.186721801758, -21.801681518555}, + {147.577972, -34.882278}, + {-118.52531433105, 34.234085083008}, + {-79.126968, 43.089752}, + {-79.343948364258, 43.735885620117}, + {-97.792739868164, 38.878555297852}, + {-123.32359313965, 43.481826782227}, + {-88.966598510742, 40.739364624023}, + {-73.829505, 45.592456}, + {-96.707153, 32.794877}, + {-82.359695, 28.130264}, + {-80.109266, 26.380202}, + {-87.520523071289, 41.564712524414}, + {-119.809341, 39.510956}, + {-0.138183, 50.957108}, + {-1.29467, 52.379379}, + {-3.940899, 51.625258}, + {-1.075287, 51.268387}, + {-1.948654, 52.66182}, + {-0.751534, 51.08574}, + {0.611622, 51.807314}, + {-1.7996978759766, 50.736923217773}, + {15.023117, 37.612381}, + {-38.515942, -12.993182}, + {-100.870113, 20.216904}, + {23.916856, 46.495824}, + {10.011978, 53.523331}, + {5.560396, 51.407761}, + {-0.994148, 51.098213}, + {-81.352386, 28.646851}, + {16.274109, 48.005464}, + {11.349563598633, 49.592971801758}, + {-0.724594, 52.255968}, + {-2.6264190673828, 53.69499206543}, + {25.014297, 60.232855}, + {6.223755, 50.864811}, + {6.482506, 51.097985}, + {23.137042, 54.076254}, + {10.395757, 52.337153}, + {6.929626, 50.592499}, + {8.1319427490234, 59.53010559082}, + {9.0959930419922, 48.291091918945}, + {12.762936, 47.671567}, + {13.60725402832, 51.041793823242}, + {13.041583, 47.709566}, + {4.345289, 52.083239}, + {14.620056, 52.170639}, + {18.711227, -33.969589}, + {5.067471, 52.663711}, + {11.047427, 49.687731}, + {113.064285, 25.783035}, + {113.265438, 28.718376}, + {13.609943, 47.022343}, + {-9.179509, 38.618631}, + {28.275375, -25.63385}, + {18.119064, 47.672424}, + {-83.01933, 42.548447}, + {8.784703, 52.686438}, + {-113.579407, 53.53775}, + {30.076546, -2.054738}, + {8.643689, 49.857201}, + {7.931112, 51.067795}, + {110.806242, -7.545547}, + {-70.695562, 19.778989}, + {30.302353, 59.95697}, + {-73.999636, 40.739042}, + {-83.970565795898, 37.696151733398}, + {-81.267929077148, 42.867965698242}, + {-98.068771362305, 40.202407836914}, + {-115.10307312012, 36.184158325195}, + {-82.998275756836, 39.339981079102}, + {-95.798721313477, 36.005630493164}, + {-83.337822, 42.304573}, + {11.800751, 50.440995}, + {-66.058731079102, 18.33137512207}, + {96.144333, 16.800679}, + {147.314946, -42.901589}, + {30.677261352539, -23.04313659668}, + {7.069348, 51.559825}, + {30.472640991211, -23.755874633789}, + {-1.35142, 50.920488}, + {-38.545944, -6.891037}, + {-0.162574, 50.87551}, + {-4.258091, 55.858074}, + {-2.540322, 51.504362}, + {0.245329, 51.559525}, + {-0.138733, 51.544783}, + {-2.819465, 52.519455}, + {0.370999, 51.180048}, + {-0.477415, 52.124928}, + {-0.953816, 50.878177}, + {-0.173052, 51.174045}, + {-0.308925, 51.391157}, + {-0.588798, 51.510773}, + {-0.57106, 51.602249}, + {-3.173488, 51.476503}, + {-3.747808, 51.551154}, + {0.786209, 51.534171}, + {-1.888846, 52.476457}, + {-0.168914, 51.108399}, + {1.076797, 51.284592}, + {0.968233, 51.227339}, + {0.618136, 51.166852}, + {-0.225906, 51.549912}, + {-1.829484, 52.452272}, + {-68.618269, 18.546751}, + {-46.92048, -23.17031}, + {11.639583, 52.126842}, + {29.139862, -25.874863}, + {-98.896866, 19.461594}, + {16.185073, 51.410206}, + {-82.509384155273, 27.605209350586}, + {11.626328, 44.796616}, + {10.054158, 53.559821}, + {12.186725, 55.509021}, + {21.012469, 64.767107}, + {17.010561, 58.768112}, + {7.141342, 51.101761}, + {15.569816, 53.120897}, + {9.830559, 45.637351}, + {-43.532363, -22.891795}, + {113.101057, 23.067937}, + {112.16423, 25.296364}, + {9.213023, 45.48382}, + {-97.105125, 18.832223}, + {111.470947, 26.725159}, + {-39.426953, -12.766599}, + {-8.8886260986328, 42.644119262695}, + {-112.113807, 33.429792}, + {111.038569, -6.751965}, + {-46.637246, -23.080539}, + {14.830856323242, 50.907211303711}, + {-47.713431, -23.097674}, + {12.473946, 41.830101}, + {11.882400512695, 45.427780151367}, + {-54.843063354492, -22.24250793457}, + {100.666351, 13.557472}, + {25.803277, 65.260163}, + {-46.758254, -23.434216}, + {16.133105, 50.916129}, + {113.015671, 27.929993}, + {116.413193, 28.281967}, + {114.003067, 27.672157}, + {1.997322, 43.765591}, + {5.395451, 43.448694}, + {0.849245, 51.302005}, + {-3.701427, 40.474357}, + {-111.896667, 33.367081}, + {19.230880737305, 50.760269165039}, + {116.566658, 28.188858}, + {-43.228407, -22.818962}, + {-2.265413, 53.556252}, + {7.446144, 46.969825}, + {-49.298123, -16.610513}, + {-117.959518, 36.081162}, + {-79.692316, 43.774123}, + {79.00914, 26.76194}, + {78.122462, 27.230109}, + {7.178183, 49.322027}, + {120.72464, 24.235153}, + {115.945587, 28.826065}, + {115.96756, 28.81319}, + {14.540647, 52.336171}, + {3.083049, 50.630931}, + {-121.734062, 36.905032}, + {10.03975, 53.554004}, + {-87.183151, 14.056778}, + {26.0812, 44.44725}, + {-48.849493, -18.861573}, + {4.829488, 45.743558}, + {115.863464, 28.702744}, + {13.574295, 42.854919}, + {5.25921, 52.31307}, + {-122.201251, 38.160614}, + {9.470774, 40.929285}, + {-43.446072, -22.757763}, + {-98.313551, 29.551112}, + {7.594666, 50.121292}, + {11.811539, 42.094529}, + {7.742299, 48.026806}, + {-118.148971, 34.149436}, + {114.968491, 27.20362}, + {114.786758, 25.716934}, + {113.917408, 24.986343}, + {113.24913, 23.098984}, + {2.3270416259766, 48.850021362305}, + {-70.148837, -20.210108}, + {-1.197178, 60.434329}, + {-57.370005, -25.320139}, + {27.55455, 46.193619}, + {10.010604858398, 53.718338012695}, + {-1.57675, 50.963395}, + {5.7698822021484, 50.91682434082}, + {76.395493, 9.772339}, + {13.737128, 51.208747}, + {9.893417, 49.799881}, + {7.494735, 51.502762}, + {5.9772491455078, 46.759872436523}, + {0.081119, 51.643872}, + {28.216311, -15.459754}, + {-97.356812, 37.73279}, + {9.1275787353516, 48.88298034668}, + {17.013802, 51.878963}, + {-6.144104, 36.508942}, + {101.56105041504, 3.0466461181641}, + {13.412454, 48.687566}, + {7.412339, 51.587677}, + {12.622948, 51.359311}, + {28.202591, -25.875549}, + {28.133926391602, -26.183853149414}, + {29.14192199707, 40.931625366211}, + {28.02269, -26.056726}, + {28.030243, -26.198616}, + {28.161392211914, -25.902328491211}, + {37.522659, 41.024094}, + {-79.181327, -0.239986}, + {-45.188156, -22.818439}, + {12.78190612793, 50.811080932617}, + {14.831557, 51.047578}, + {7.803485, 53.694185}, + {30.348465, 59.947184}, + {-47.376480102539, -22.194442749023}, + {54.404835, 24.463447}, + {51.546135, 25.277481}, + {-1.162733, 52.953657}, + {4.360297, 52.113942}, + {-2.796485, 47.600108}, + {101.584004, 3.160825}, + {-79.069290161133, 34.856185913086}, + {6.6268157958984, 51.709213256836}, + {28.910522, 41.061745}, + {9.671808, 45.688081}, + {36.837433, -1.260269}, + {-48.43057, -20.908867}, + {-99.153187, 19.436295}, + {-2.153233, 39.388882}, + {-42.322878, -22.817235}, + {-84.271018, 33.552422}, + {6.008233, 52.167259}, + {-101.039903, 25.460698}, + {18.754348754883, 46.389083862305}, + {30.289868, 59.987911}, + {19.085311889648, 47.539901733398}, + {19.109735, 49.737602}, + {-70.574701, -33.459843}, + {-73.891058, 40.649555}, + {13.375717, 52.523026}, + {21.485824584961, 41.997299194336}, + {23.810369, 38.102708}, + {1.4604949951172, 51.118698120117}, + {-46.309328, -23.537001}, + {12.244949, 55.947413}, + {14.187507, 57.763498}, + {36.811323, -1.234417}, + {30.340256, 59.972855}, + {77.282638549805, 28.633804321289}, + {-101.94694519043, 33.548812866211}, + {-60.100571, -12.760757}, + {-48.006649, -15.814415}, + {-48.163472, -19.161518}, + {-92.296829223633, 34.725723266602}, + {13.786291, 48.600821}, + {106.82565, -6.179007}, + {-69.923102, 18.470277}, + {114.132156, 22.362671}, + {19.633942, 45.810242}, + {-84.186635, 40.439647}, + {11.847377, 48.889161}, + {27.61883, 53.878414}, + {79.432755, 16.469193}, + {-7.409592, 33.705826}, + {2.098016, 48.728505}, + {9.942557, 48.821321}, + {-48.483352661133, -1.3932037353516}, + {17.065642, 51.077843}, + {-58.054504, -34.865112}, + {-7.577133, 33.550186}, + {-84.622467, 39.102745}, + {-58.382034301758, -34.628219604492}, + {8.8529205322266, 48.836288452148}, + {27.25424, -25.681035}, + {106.812515, -6.219807}, + {4.8950958251953, 51.558151245117}, + {8.499298, 47.370987}, + {10.277939, 53.467026}, + {9.071686, 48.971146}, + {19.664583, 46.099176}, + {4.0038299560547, 49.255142211914}, + {-1.900864, 43.312912}, + {15.626677, 46.706315}, + {10.07309, 53.609848}, + {11.383895874023, 53.857040405273}, + {27.636795043945, 54.047927856445}, + {9.528632, 49.505098}, + {60.177839, 55.200577}, + {-1.573448, 55.007858}, + {-100.293285, 25.659114}, + {-65.280441, -24.207197}, + {-76.991501, -11.952438}, + {28.021808, -25.618583}, + {12.744823, 50.761992}, + {23.889377, 54.912742}, + {13.129387, 51.005073}, + {-16.301308, 28.448754}, + {5.000496, 50.952702}, + {-42.560636, -19.450012}, + {28.890609741211, 41.078567504883}, + {3.417223, 48.177267}, + {9.636843, 45.144584}, + {6.1379241943359, 46.200942993164}, + {20.908356, 44.018097}, + {8.794435, 53.446265}, + {-78.593216, -9.07402}, + {13.531217, 59.387175}, + {9.455311, 47.203769}, + {2.889175, 41.816026}, + {-72.517201, 7.906245}, + {106.648852, -6.256495}, + {-1.960403, 43.29924}, + {114.136276, 22.365417}, + {10.783767700195, 51.181869506836}, + {12.488495, 50.692345}, + {35.26379, 33.001818}, + {-2.674701, 54.538454}, + {-3.693906, 37.721792}, + {65.484008789062, 57.219543457031}, + {5.6188201904297, 52.666397094727}, + {-47.040023803711, -22.934646606445}, + {12.378437, 45.877318}, + {2.183642, 41.374606}, + {24.716843, 60.221574}, + {-57.264001, -31.313613}, + {11.697855, 48.140399}, + {28.208656, 61.064644}, + {-39.30158, -7.230029}, + {-118.35457, 34.02953}, + {100.629394, 13.703865}, + {6.9948577880859, 50.937423706055}, + {73.060455, 33.69072}, + {-47.938657, -19.762094}, + {-109.951172, 27.467537}, + {-122.759805, 45.493223}, + {18.27919, 59.506073}, + {-77.062955, -12.065778}, + {103.891648, 1.398803}, + {9.740698, 53.377099}, + {17.411615, 49.079362}, + {103.790139, 1.424979}, + {10.551886, 52.271194}, + {74.175053, 32.143936}, + {8.1305694580078, 47.270736694336}, + {80.69938659668, 7.2983551025391}, + {-74.778311, 10.855867}, + {-39.542147, -17.046615}, + {-34.933548, -8.079758}, + {-42.24914, -22.916388}, + {-2.301225, 53.583757}, + {19.678952, 41.52876}, + {9.976273, 49.823685}, + {-3.466712, 56.416209}, + {18.349227905273, 46.172103881836}, + {14.718902, 50.097706}, + {-58.586655, -34.504349}, + {-46.949525, -19.569425}, + {-43.11197, -22.912333}, + {-52.610087, -28.549206}, + {44.794006, 48.773117}, + {24.726791, 42.133942}, + {14.40709, 45.339376}, + {103.826981, 1.447525}, + {12.660335, 48.68429}, + {13.093872, 47.851639}, + {9.578198, 45.605285}, + {-48.282485, -18.883734}, + {-0.85350036621094, 50.761642456055}, + {-36.490739, -8.896432}, + {115.745263, -31.827966}, + {106.734443, -6.240551}, + {112.615585, -7.934189}, + {103.767807, 1.327377}, + {24.865837, 60.222931}, + {10.695648, 50.63942}, + {-97.077255249023, 15.874557495117}, + {-2.646011, 53.394882}, + {16.709518432617, 50.760269165039}, + {-75.390225, 9.313499}, + {59.562084, 36.349149}, + {12.573165893555, 48.836288452148}, + {103.778945, 1.303791}, + {-76.402359, 17.882996}, + {14.472609, 46.23164}, + {4.760648, 44.465172}, + {3.899277, 50.463959}, + {20.977086, 48.705282}, + {-70.647583, -33.427963}, + {-117.162655, 32.790712}, + {83.292756, 55.218808}, + {-93.048294, 17.972946}, + {-1.498323, 52.429817}, + {-47.916488, -15.881742}, + {18.587396, 47.18677}, + {4.931259, 52.316208}, + {-118.14197, 33.734994}, + {77.382447, 28.665586}, + {10.499268, 43.839111}, + {7.454453, 46.974564}, + {2.485886, 48.712646}, + {56.07872, 54.820633}, + {-75.508957, 8.813095}, + {13.309126, 48.620059}, + {11.6079, 44.813619}, + {1.077758, 49.372702}, + {-48.901023, -21.187628}, + {76.631012, 12.290611}, + {4.852823, 45.75768}, + {10.999792, 45.445872}, + {-46.29158, -23.176622}, + {-66.745834, 18.451767}, + {19.041283, 50.190217}, + {11.162796, 52.84996}, + {28.119782, -26.018858}, + {9.7194671630859, 55.53108215332}, + {12.366142, 51.316795}, + {-8.368606, 40.852436}, + {77.715385, 29.158298}, + {10.550308227539, 59.894027709961}, + {5.702744, 50.86937}, + {1.711119, 52.623139}, + {103.857984, 1.343646}, + {8.6455535888672, 49.462509155273}, + {24.073448, 60.251083}, + {106.987139, -6.24801}, + {8.663664, 49.417491}, + {151.563081, -27.220882}, + {30.508721, 50.507209}, + {30.472576, 59.916851}, + {-73.728075, 40.692742}, + {-46.516113, -23.602103}, + {-100.311515, 25.670196}, + {138.610039, -34.953303}, + {12.972337, 47.64061}, + {16.069204, 50.486478}, + {-0.12918, 51.506228}, + {-76.50260925293, 3.4311676025391}, + {2.077232, 48.729258}, + {-84.080086, 9.950294}, + {4.939041, 49.701462}, + {-58.378231, -34.599116}, + {98.643619, 3.591678}, + {-1.9837188720703, 43.290939331055}, + {-13.65058, 9.601635}, + {15.089681, 48.313394}, + {9.856013, 53.314547}, + {-117.968788, 33.934021}, + {-1.575577, 52.320877}, + {44.769745, 48.78891}, + {4.305569, 50.829895}, + {-93.089218139648, 35.283279418945}, + {27.95488, -25.997786}, + {10.956388, 49.137706}, + {116.840439, -1.276474}, + {16.811593, 49.341535}, + {-89.574966, 21.026535}, + {10.794329, 50.877995}, + {-2.788863, 53.391273}, + {-64.177322387695, 10.966415405273}, + {23.264422, 54.550365}, + {-99.184914, 19.287529}, + {27.919692993164, -25.935287475586}, + {13.239899, -8.838501}, + {12.563552856445, 55.715103149414}, + {-122.79762268066, 49.105453491211}, + {62.140883, 34.203415}, + {20.439376831055, 53.770523071289}, + {-46.519239, -23.663462}, + {117.152023, -0.97496}, + {19.451709, 51.77782}, + {-13.653945922852, 9.5505523681641}, + {12.875588, 50.789341}, + {24.106063842773, 56.952438354492}, + {18.122635, 59.234333}, + {9.329453, 40.32365}, + {26.289596557617, 47.781600952148}, + {6.08519, 53.099036}, + {9.213868, 51.702576}, + {6.992106, 50.805596}, + {18.653412, -33.86055}, + {1.26588, 52.651585}, + {20.324177, 51.824475}, + {1.39871, 49.075704}, + {8.927532, 50.633471}, + {11.334458, 48.797836}, + {0.012589, 51.59523}, + {-83.573989, 35.813203}, + {8.148622, 52.635064}, + {2.717257, 48.266371}, + {2.53637, 48.80431}, + {18.599716, -33.947067}, + {39.274978, 51.68012}, + {-95.378233, 29.779173}, + {20.050434, 47.979578}, + {19.842425, 48.159943}, + {11.521516, 49.212055}, + {18.610268, -33.884926}, + {18.460464477539, -33.962173461914}, + {18.475570678711, -34.254684448242}, + {18.399647, -33.906849}, + {103.432847, 12.825853}, + {-79.472758, 43.753862}, + {30.294702, 59.795691}, + {110.45036315918, 29.136428833008}, + {106.794319, -6.177775}, + {106.629506, -6.239359}, + {-0.221443, 51.459274}, + {113.488083, 22.803497}, + {30.890427, -29.833908}, + {7.57576, 51.684917}, + {-5.010762, 34.019719}, + {37.41655, 55.729385}, + {-79.841767, 34.170041}, + {106.818361, -6.186597}, + {6.288751, 51.929001}, + {11.473348, 51.781596}, + {14.622803, 42.192307}, + {11.45867, 47.112288}, + {107.437191, -6.734447}, + {106.802475, -6.168156}, + {106.839911, -6.252768}, + {12.8902, 41.46819}, + {138.511531, -35.107201}, + {10.008809, 53.631187}, + {100.44044494629, 13.662185668945}, + {23.894234, 61.498032}, + {109.370956, -6.871948}, + {50.794303, 61.660213}, + {-8.046344, 31.630785}, + {-4.749527, 37.894363}, + {-50.172466, -29.883514}, + {-86.199969, 12.151863}, + {18.861023, 50.4417}, + {27.587609, 47.159363}, + {-23.511233, 14.920316}, + {34.741859, 32.024288}, + {-73.77388, 45.449295}, + {103.71487, 1.339146}, + {-46.696014, -23.612366}, + {23.502566, 49.034195}, + {10.131131, 54.286881}, + {9.359055, 45.517197}, + {10.461044311523, 61.119003295898}, + {1.073383, 49.659689}, + {5.835673, 51.854315}, + {21.066325, 52.301255}, + {19.386258, 51.854274}, + {116.989975, -0.384521}, + {9.694568, 47.48614}, + {-84.131516, 10.037247}, + {5.050965, 51.573944}, + {-7.956619, 31.614761}, + {6.173263, 49.645249}, + {3.247845, 51.300438}, + {16.29466, 48.116684}, + {11.111874, 45.989767}, + {106.81102, -6.203014}, + {108.256836, -6.717072}, + {50.80844, 61.679623}, + {11.101165, 49.431677}, + {12.504596, 41.893974}, + {28.13324, -26.378174}, + {15.179672241211, 52.32307434082}, + {11.523285, 48.115311}, + {9.7277069091797, 52.909469604492}, + {10.458097, 44.790909}, + {29.60037, -16.618195}, + {10.719673, 50.932149}, + {106.823502, -6.197891}, + {39.331741, 46.294327}, + {11.05156, 45.44323}, + {13.372551, 52.55908}, + {11.008169, 46.968634}, + {11.949034, 45.612637}, + {-47.757867, -20.024644}, + {-41.950709, -22.514348}, + {-43.186569, -22.952042}, + {-43.959868, -19.847857}, + {-48.437271, -16.113205}, + {-43.360954, -22.830963}, + {37.424615, 55.720596}, + {-101.237346, 20.603191}, + {-96.915205, 19.565965}, + {-98.327637, 19.066772}, + {10.520095825195, 52.140426635742}, + {104.702988, 17.54158}, + {13.33122253418, 38.152084350586}, + {-87.198486, 14.048996}, + {9.088003, 49.986857}, + {-2.977981, 43.280297}, + {2.074966, 48.886185}, + {42.008285522461, 40.026626586914}, + {8.665466, 49.868134}, + {17.02742, 51.097727}, + {-2.569427, 47.594834}, + {5.929275, 51.376543}, + {24.146285, 41.102311}, + {9.5505523681641, 47.776107788086}, + {10.050125, 45.653}, + {-117.23535, 33.073974}, + {127.318494, 38.168564}, + {37.629318, 55.764084}, + {116.429476, 39.908524}, + {47.640921, 42.885618}, + {12.485381, 41.903915}, + {28.44841003418, -14.44221496582}, + {115.771412, -32.295457}, + {145.320859, -37.958565}, + {0.101699, 43.287888}, + {30.649803, -21.476557}, + {7.5867462158203, 47.064743041992}, + {-96.26838684082, 44.710922241211}, + {8.7128448486328, 50.112075805664}, + {-104.906843, 21.498872}, + {8.846299, 53.100357}, + {11.705284, 44.377355}, + {10.693059, 44.715535}, + {10.883812, 45.283653}, + {4.884796, 50.499344}, + {5.171728, 50.085125}, + {92.716827, 56.155014}, + {7.013705, 51.00731}, + {3.762131, 43.523821}, + {-0.451812, 39.370194}, + {9.563896, 49.813394}, + {114.02504, 22.74971}, + {55.142441, 25.071547}, + {-84.210434, 9.998449}, + {-84.095374, 9.999215}, + {103.845291, 1.290894}, + {9.237786, 45.55687}, + {12.761006, 47.953162}, + {12.38494, 51.315545}, + {9.424057, 51.218186}, + {-46.704698, -23.532899}, + {51.276626586914, 25.354385375977}, + {8.534387, 51.390086}, + {6.9110870361328, 51.129684448242}, + {10.598373413086, 49.24690246582}, + {11.12434387207, 50.974502563477}, + {8.4958648681641, 51.996231079102}, + {100.6299, 13.680826}, + {15.408795, 47.279064}, + {13.084366, 47.876569}, + {-2.839285, 51.422501}, + {6.818838, 50.988295}, + {-94.647098, 29.4476}, + {106.81771, -6.153793}, + {8.349608, 51.970825}, + {12.695388793945, 56.922225952148}, + {27.8371, -26.29525}, + {14.425053, 46.638768}, + {10.163051, 51.650508}, + {-79.427719, 9.054794}, + {-4.057586, 43.322133}, + {7.22459, 50.497774}, + {11.775558, 45.167404}, + {-4.931502, 41.554981}, + {106.814982, -6.141945}, + {35.333398, 33.317011}, + {112.77397155762, 22.730026245117}, + {112.827072, 22.889328}, + {13.428268, 46.094284}, + {17.045028, 51.14427}, + {138.489486, -34.801579}, + {106.845744, -6.327539}, + {-98.537396, 29.510752}, + {-6.3095855712891, 53.405227661133}, + {7.703545, 50.511361}, + {113.144608, 23.250198}, + {106.831995, -6.129729}, + {120.53718566895, 31.395492553711}, + {-46.640802, -23.571632}, + {11.186573, 43.892437}, + {21.471312, 48.635046}, + {-46.519448, -23.554197}, + {-46.657454, -23.560506}, + {106.899339, -6.167589}, + {12.521882, 55.777145}, + {120.625338, 31.324539}, + {12.211135, 44.200606}, + {7.028243, 51.922558}, + {12.276819, 55.591222}, + {30.958188, -25.460027}, + {10.681489, 59.919389}, + {-5.861797, 43.361228}, + {120.03593444824, 31.812973022461}, + {120.392647, 31.556854}, + {37.500137, 55.808009}, + {12.609215, 45.973663}, + {9.310168, 53.542441}, + {7.871647, 52.223356}, + {-3.68772, 41.726183}, + {9.1605377197266, 49.962387084961}, + {26.809387, 45.161362}, + {6.198624, 52.235184}, + {119.988556, 31.794434}, + {106.850877, -6.129144}, + {14.90364074707, 50.390853881836}, + {113.213843, 23.234024}, + {9.12421, 48.758721}, + {-95.603787, 30.0107}, + {110.355214, -6.983675}, + {112.326622, -7.780724}, + {109.584778, -6.889938}, + {112.611099, -7.944351}, + {106.87156677246, -6.2546539306641}, + {6.547361, 50.858087}, + {26.67532, 60.856361}, + {106.898752, -6.178914}, + {25.313186645508, -17.779312133789}, + {-0.361437, 53.745467}, + {-77.0121, 39.294319}, + {-92.427883, 35.522632}, + {106.740875, -6.111363}, + {13.417739868164, 52.537307739258}, + {27.023483, 38.697281}, + {106.75056, -6.270497}, + {106.784134, -6.245499}, + {13.772879, 45.651823}, + {-17.490194, 14.746278}, + {-17.466216, 14.746793}, + {-17.454529, 14.687347}, + {107.088608, -6.275968}, + {23.732091, 37.994677}, + {23.695679, 37.996674}, + {12.611546, 54.282656}, + {8.9408111572266, 50.028305053711}, + {36.419029, 55.542374}, + {24.910812, 42.597427}, + {36.016304, 55.601664}, + {106.631452, -6.168348}, + {25.99983215332, 43.849868774414}, + {18.156309, 48.313603}, + {10.751216, 59.914979}, + {8.424484, 50.156452}, + {77.148972, 31.888275}, + {-7.660824, 52.914233}, + {17.303073, 50.811089}, + {10.914307, 45.303474}, + {-111.929398, 33.362699}, + {4.317117, 52.080322}, + {36.422722, 55.544125}, + {76.337814331055, 29.309463500977}, + {6.524734, 49.961166}, + {11.7984, 45.75428}, + {12.208679, 50.949975}, + {100.885084, 12.943718}, + {8.524074, 49.903893}, + {106.831585, -6.177001}, + {39.799188, 21.378037}, + {24.710083, 48.914185}, + {77.53532409668, 12.97004699707}, + {32.78904, 39.908867}, + {11.043795, 49.670656}, + {-121.931582, 36.627876}, + {107.66807556152, -6.9110870361328}, + {4.910254, 43.947424}, + {30.366897583008, 60.018997192383}, + {39.112058, 21.595731}, + {7.653615, 47.104991}, + {113.2820892334, 22.639389038086}, + {39.255981, 21.507568}, + {113.12690734863, 22.938766479492}, + {4.869801, 48.645884}, + {43.459167, 42.311096}, + {-81.28521, 27.80571}, + {106.791285, -6.159674}, + {18.700619, 50.045128}, + {8.6400604248047, 49.506454467773}, + {-3.594356, 55.061334}, + {12.429818, 41.794315}, + {19.079086, 47.52446}, + {-81.726443, 28.031699}, + {144.850279, -37.725837}, + {100.562392, 13.948105}, + {4.332561, 51.353531}, + {7.075864, 52.775347}, + {73.017197, 19.096276}, + {35.249928, 32.588098}, + {106.851621, -6.197041}, + {7.988806, 47.962305}, + {10.805739, 44.566042}, + {46.676788, 24.66362}, + {10.452461, 51.218948}, + {144.95686, -37.691279}, + {106.907124, -6.173966}, + {0.766666, 45.857568}, + {18.204799, 52.208979}, + {7.7982330322266, 47.656631469727}, + {8.445053, 48.424301}, + {9.585091, 48.704659}, + {0.77738, 45.87652}, + {15.516521, 46.886804}, + {144.881411, -37.817846}, + {26.176895, 50.708565}, + {36.218032, 55.503617}, + {9.000357, 49.672225}, + {-43.171806, -22.525406}, + {-41.337444, -21.686615}, + {-44.200026, -23.037009}, + {-61.552948, 16.24078}, + {0.914627, 52.334271}, + {106.863933, -6.332369}, + {13.467625, 52.498738}, + {12.550645, 55.87413}, + {36.018677, 55.502129}, + {-89.866174, 42.289027}, + {101.646606, 3.076584}, + {7.2530364990234, 51.317825317383}, + {19.105911, 47.484283}, + {107.005231, -6.194046}, + {-42.001498, -22.619335}, + {-49.151115, -14.504989}, + {-43.826337, -22.472814}, + {-42.872501, -22.369014}, + {-42.657852, -22.474594}, + {7.24833, 47.137129}, + {142.432654, -37.576097}, + {17.178299, 40.845044}, + {36.959503, 56.182222}, + {16.976295, 40.927519}, + {-8.016692, 31.645537}, + {36.726608, 9.047012}, + {-84.107894897461, 9.9309539794922}, + {9.937428, 56.052344}, + {-120.072129, 47.254958}, + {-2.116012, 52.681961}, + {10.386761, 55.340882}, + {30.443801879883, 50.449905395508}, + {105.950706, -6.031829}, + {18.280133, 40.318279}, + {-76.759419, 18.016894}, + {17.860037, 47.684423}, + {12.912753, 51.259818}, + {11.887206, 51.46843}, + {6.841354, 51.237259}, + {-121.034212, 47.20695}, + {-118.210167, 34.027997}, + {-99.170201, 19.365863}, + {-99.091908, 19.321518}, + {-99.164453, 19.306153}, + {105.796555, 11.083008}, + {-1.45832, 51.222725}, + {106.864804, -6.177427}, + {113.35075378418, 23.184585571289}, + {-80.328598022461, 27.430801391602}, + {-50.794523, -29.536761}, + {106.797229, -6.261168}, + {121.569704, 31.211177}, + {6.967037, 50.958639}, + {110.349085, -7.796732}, + {-95.468038, 29.784332}, + {-97.66227722168, 32.749557495117}, + {-84.381498, 33.607548}, + {4.770517, 52.149844}, + {2.98063, 42.613907}, + {-43.068828, -22.881233}, + {37.398262, 55.831833}, + {10.308609008789, 57.336959838867}, + {-122.392076, 37.666258}, + {-117.309222, 34.022512}, + {8.196167, 53.123245}, + {-16.380478, 28.316986}, + {115.877315, -31.812614}, + {166.527969, -22.355484}, + {120.36834, 30.220642}, + {-92.787119, 31.271912}, + {74.69123840332, 20.855484008789}, + {27.365266, 42.579964}, + {15.56603, 50.042031}, + {-98.598498, 29.591958}, + {-118.730983, 47.06858}, + {112.742104, -7.315208}, + {12.518919, 49.213267}, + {23.109721, 47.233384}, + {2.167339, 41.42458}, + {121.535568, 24.99321}, + {100.602248, 13.580205}, + {116.846695, -1.21582}, + {-46.92237, -23.140883}, + {-1.277832, 54.577589}, + {106.812927, -6.131575}, + {135.514755, 34.575577}, + {15.321852, 50.014163}, + {4.894263, 45.708078}, + {2.155075, 49.056015}, + {-49.907646, -23.052761}, + {8.645141, 44.639786}, + {60.399398803711, 25.36262512207}, + {9.881516, 46.86058}, + {36.03392, 32.037781}, + {100.426957, 13.892923}, + {4.082619, 44.146409}, + {-121.266575, 37.994671}, + {-47.221985, -22.800064}, + {19.412818, 53.066593}, + {13.599014282227, 52.505722045898}, + {105.537643, 18.691635}, + {88.637707, 25.638062}, + {34.997506, 32.816872}, + {22.068894, 51.388107}, + {3.888768, 43.626415}, + {107.530766, -6.88691}, + {115.773385, -32.273316}, + {6.866633, 50.74354}, + {14.023532, 50.654011}, + {4.498978, 51.865158}, + {-0.75874328613281, 44.701309204102}, + {27.862701, -26.076737}, + {30.49186706543, 39.791793823242}, + {-63.869135, -8.76473}, + {-80.467223, 25.394711}, + {2.289476, 48.942498}, + {-0.065689, 51.521759}, + {23.779704, 38.057417}, + {19.436874, 51.763458}, + {-96.644662, 32.301189}, + {15.560417, 46.773777}, + {10.092979, 45.559521}, + {100.658651, 13.656545}, + {30.480769, 50.418988}, + {9.113846, 49.98024}, + {38.332901, 38.358078}, + {106.826486, -6.224331}, + {31.139833, -27.755174}, + {10.895003, 49.680863}, + {11.141921, 45.084459}, + {-2.36108, 43.275932}, + {-2.775727, 42.821218}, + {5.300368, 52.411884}, + {12.65007019043, 57.479782104492}, + {19.163311, 54.197434}, + {6.70205, 52.946498}, + {11.36055, 44.517975}, + {28.043619, -26.036197}, + {-6.201285, 54.683348}, + {7.11914, 51.571885}, + {7.5153350830078, 51.548538208008}, + {-0.910359, 51.908374}, + {7.246857, 51.49498}, + {26.234348, -29.129774}, + {12.582779, 50.841751}, + {8.481217, 52.004929}, + {5.786362, 50.96022}, + {12.821731567383, 50.875625610352}, + {9.726308, 47.475645}, + {1.715272, 48.984866}, + {13.260316, 52.613963}, + {12.00775, 57.695212}, + {-111.898235, 40.762507}, + {7.279991, 46.667601}, + {5.854569, 48.327255}, + {37.790908813477, 44.73014831543}, + {145.360107, -36.390495}, + {25.428725, 69.536365}, + {25.795919, 45.05266}, + {-0.45112609863281, 51.757278442383}, + {11.956558, 51.569138}, + {8.245102, 51.724055}, + {16.318413, 48.183942}, + {-4.2633819580078, 55.856552124023}, + {6.370991, 46.47462}, + {6.685823, 46.557068}, + {2.1237945556641, 48.896713256836}, + {31.441498, 31.201173}, + {10.890884399414, 44.62028503418}, + {-93.59866, 44.943404}, + {104.03434753418, 1.1336517333984}, + {4.390274, 50.361465}, + {115.771139, -31.76612}, + {-43.410024, -22.83718}, + {128.593163, 35.575274}, + {80.229721069336, 13.166427612305}, + {106.817744, -6.208015}, + {-55.164901, 5.823313}, + {20.403835, 44.80811}, + {5.763007, 51.053702}, + {36.716995239258, -3.4696197509766}, + {29.751317, -16.892854}, + {-47.469721, -5.547456}, + {11.329443, 48.317368}, + {15.17692565918, 59.274673461914}, + {12.590113, 55.689846}, + {-68.201142, -54.83981}, + {128.221552, 35.576691}, + {17.445145, 54.099655}, + {18.016075, 59.345342}, + {9.139647, 45.525159}, + {-76.526718, 3.435287}, + {-69.81330871582, 18.49479675293}, + {13.65119934082, 43.429641723633}, + {10.427399, 50.572128}, + {151.499294, -33.048513}, + {26.000512, 44.939667}, + {7.6045989990234, 46.746139526367}, + {6.820999, 49.265664}, + {-4.7248077392578, 41.656723022461}, + {-2.847632, 42.753303}, + {-40.705967, -19.324536}, + {9.000502, 48.670402}, + {6.904103, 50.807243}, + {18.476521, -33.929479}, + {-79.966752, 43.496522}, + {50.812798, 61.692696}, + {4.354551, 50.840046}, + {4.364583, 50.846998}, + {10.984268188477, 45.014419555664}, + {30.510248, 50.44383}, + {-49.329129, -16.599384}, + {49.539871, 27.158432}, + {1.656875, 41.210953}, + {121.825405, 24.858916}, + {9.1330718994141, 55.730209350586}, + {20.578666, 52.227247}, + {128.044719, 37.684404}, + {14.168072, 42.395554}, + {11.216562, 51.298655}, + {121.75365, 24.754393}, + {113.008804, 23.13707}, + {0.300088, 52.298621}, + {9.543228, 51.365891}, + {9.656196, 48.704596}, + {10.138467, 52.670185}, + {9.9144744873047, 53.579635620117}, + {8.8707733154297, 49.982986450195}, + {7.286225, 51.322861}, + {-1.492526, 51.641238}, + {-78.940222, 43.914248}, + {-78.339043, 18.27816}, + {11.153142, 50.331418}, + {10.650428, 51.455464}, + {37.592312, 55.716086}, + {48.388596, 54.327271}, + {101.737747, 3.192215}, + {10.356269, 51.42387}, + {28.880108, 41.078729}, + {-0.64476, 44.781497}, + {15.733546, 37.933606}, + {-79.533463, 9.004326}, + {106.958286, -6.258439}, + {14.064317, 51.560466}, + {15.656989, 38.096074}, + {78.178596, 29.964523}, + {2.273378, 41.718521}, + {23.773721, 37.994676}, + {106.932337, -6.219528}, + {-82.029149, 33.512179}, + {55.245361, 25.063362}, + {-112.00802, 41.233235}, + {129.682617, 33.161201}, + {82.953232, 55.037247}, + {77.887386, 29.850353}, + {2.251609, 48.874888}, + {18.178179, 43.993651}, + {175.248871, -37.778549}, + {28.18106, -26.061526}, + {110.406647, -7.748795}, + {9.402924, 54.701614}, + {145.157089, -37.858353}, + {11.86785, 51.139863}, + {9.155613, 54.155304}, + {4.9582672119141, 50.41145324707}, + {28.271255493164, -26.208572387695}, + {12.01085, 50.40037}, + {7.07738, 51.380497}, + {10.511461, 59.894609}, + {11.739482, 51.783953}, + {13.485143, 51.168153}, + {11.277672, 45.220298}, + {37.36928, 55.75922}, + {-89.580709, 20.973837}, + {8.136811, 50.015862}, + {-51.225503, -30.051142}, + {80.757064819336, 16.433486938477}, + {-81.515182, 30.140213}, + {76.047365, 10.532456}, + {150.909164, -33.914383}, + {9.992982, 56.471558}, + {14.097518920898, 41.78581237793}, + {-79.57564, 43.57761}, + {11.970628, 51.475911}, + {-54.471588, -16.608582}, + {24.743146, 60.22574}, + {113.080387, 23.012409}, + {32.017936, -0.025027}, + {32.328479, 0.775587}, + {144.54072, -36.818255}, + {9.132919, 45.479813}, + {-77.623342, 43.098039}, + {7.5235748291016, 50.544662475586}, + {-1.942324, 43.304476}, + {18.148228, 59.499323}, + {10.384552, 55.35173}, + {16.386503, 47.766692}, + {-8.434891, 40.206253}, + {-121.828927, 36.582817}, + {36.243209, 37.304077}, + {24.715805053711, 60.652084350586}, + {-72.86750793457, 41.24885559082}, + {144.284469, -36.751519}, + {56.127647, 57.995945}, + {31.157913208008, 30.007095336914}, + {50.037367, 53.109972}, + {6.928253, 51.652832}, + {18.006931, 50.657274}, + {19.655227661133, 50.77262878418}, + {28.419570922852, -13.141708374023}, + {0.984736, 51.339973}, + {-77.563179, 43.18248}, + {5.051543, 47.322523}, + {17.922203, 50.667641}, + {19.897385, 50.053253}, + {-47.4837, -5.485957}, + {24.993036, 60.255067}, + {-99.188003540039, 19.431381225586}, + {7.692327, 48.530046}, + {106.80918, -6.224442}, + {73.35973, 54.970313}, + {-74.047164916992, 4.7495269775391}, + {100.555971, 13.566902}, + {56.202443, 58.005575}, + {23.881577, 46.525613}, + {-1.229972, 53.895241}, + {-43.284348, -22.903538}, + {14.48948, 40.939576}, + {106.794867, -6.361838}, + {7.821661, 51.028996}, + {-87.750775, 31.838066}, + {50.528526, 26.096306}, + {131.69758, 33.665577}, + {130.885405, 34.014514}, + {-1.021716, 46.062936}, + {11.810269, 49.730165}, + {-94.472716, 30.131424}, + {5.7286834716797, 50.78498840332}, + {9.34994, 45.586138}, + {11.356101, 50.566381}, + {16.649469, 48.627085}, + {149.056289, -35.320964}, + {7.6828765869141, 51.022567749023}, + {-0.215836, 51.820908}, + {26.142861, 45.98177}, + {7.673721, 50.024185}, + {12.028884, 48.993761}, + {1.25533, 52.038818}, + {5.5680084228516, 51.338424682617}, + {3.053656, 50.988597}, + {22.894823, 43.571779}, + {7.5853729248047, 51.505966186523}, + {28.339827, -24.8884}, + {18.023049, 50.657272}, + {17.041855, 51.096954}, + {8.54599, 49.482422}, + {13.890151977539, 48.094711303711}, + {12.544207, 51.354748}, + {-1.494675, 52.232133}, + {103.82922, 1.319892}, + {7.400321, 47.766152}, + {24.736519, 60.709419}, + {-92.902450561523, 16.80290222168}, + {2.294248, 48.844083}, + {106.852311, -6.164183}, + {30.455132, 50.368881}, + {27.689156, 50.581391}, + {2.312393, 48.863754}, + {4.8284, 45.759536}, + {12.379485, 51.346363}, + {2.302666, 48.90732}, + {-8.628388, 52.667084}, + {73.270674, 54.994759}, + {26.892471313477, 40.890426635742}, + {27.905608, -26.151722}, + {56.361562, 58.063503}, + {12.744433, 50.89132}, + {16.290664672852, 38.980178833008}, + {-98.204727172852, 19.005661010742}, + {46.822009, 24.66024}, + {13.553009, 47.956696}, + {9.452188, 49.714852}, + {7.413406, 50.691911}, + {32.081489, -18.296591}, + {100.924015, 13.336201}, + {37.451375, 55.88351}, + {29.770889282227, -16.919631958008}, + {-13.544003, 9.693779}, + {15.598678, 56.162492}, + {111.544876, 24.367905}, + {-0.904312, 41.654526}, + {14.071666, 51.154599}, + {-51.079048, -29.933182}, + {17.79167175293, 51.630935668945}, + {18.574398, 47.222808}, + {2.549194, 48.986744}, + {12.564697, 55.667152}, + {3.120809, 45.774244}, + {-3.759384, 42.018173}, + {6.261522, 49.132097}, + {2.712661, 50.440567}, + {112.545515, 23.42223}, + {19.484264, 53.035819}, + {18.861958, 47.397621}, + {103.906479, 1.316045}, + {2.414646, 48.865599}, + {2.327291, 48.828174}, + {2.395706, 48.840237}, + {2.358799, 48.83131}, + {2.412762, 48.879302}, + {24.169098, 49.848267}, + {-3.834014, 53.29112}, + {2.389497, 48.822974}, + {107.626985, -6.957935}, + {2.443085, 48.861179}, + {2.2968292236328, 48.876113891602}, + {2.349289, 48.896896}, + {2.39502, 48.818436}, + {2.42581, 48.825631}, + {2.38673, 48.85977}, + {2.344894, 48.892136}, + {2.4739837646484, 48.884353637695}, + {2.250137, 48.900833}, + {2.2913360595703, 48.86100769043}, + {2.2899627685547, 48.871994018555}, + {2.4478912353516, 48.955764770508}, + {144.992942, -37.858327}, + {13.088875, 54.308601}, + {16.959005, 52.393255}, + {18.106842, 59.350891}, + {-93.604844, 41.633103}, + {0.393806, 51.305378}, + {127.792904, 37.968263}, + {-1.177199, 53.818264}, + {2.644255, 51.061114}, + {8.563451, 49.525846}, + {18.956375, 49.984093}, + {19.436874389648, 51.812210083008}, + {-0.18379, 52.570817}, + {33.020179, 50.037883}, + {9.13623, 51.500646}, + {2.436481, 48.785277}, + {100.61976, 13.627359}, + {120.7061, 24.216385}, + {12.161487, 48.541911}, + {121.556388, 23.934379}, + {30.351192, 50.424567}, + {15.253136, 51.219751}, + {15.576553344727, 51.549911499023}, + {9.238987, 48.623171}, + {37.431806, 55.902807}, + {106.85229, -6.155758}, + {145.219512, -36.884377}, + {9.671496, 60.169339}, + {6.0994720458984, 49.198837280273}, + {6.959196, 49.284941}, + {-1.320918, 51.033469}, + {6.624756, 50.950928}, + {11.150346, 47.565326}, + {-3.845441, 56.056466}, + {12.340639, 51.372539}, + {100.915786, 14.460497}, + {4.432781, 45.439009}, + {13.689651, 43.361115}, + {-48.10172, -15.865549}, + {-77.424867, 38.947665}, + {172.624741, -43.515884}, + {12.652642, 41.756356}, + {-8.710087, 52.630356}, + {30.641998, 50.417094}, + {7.5180816650391, 51.533432006836}, + {31.292495727539, 30.05241394043}, + {46.602631, 24.597702}, + {113.00331115723, 23.084335327148}, + {-76.874771, 39.218258}, + {-122.467672, 48.780996}, + {-115.09877, 36.020828}, + {15.927331, 47.085539}, + {34.931924, 32.439342}, + {120.603333, 23.723145}, + {151.160065, -33.808502}, + {43.201675, 51.535492}, + {6.7449188232422, 51.527938842773}, + {4.801377, 45.758227}, + {8.267603, 53.125401}, + {113.103561, 22.996445}, + {6.750727, 51.201411}, + {8.447823, 51.483397}, + {8.519554, 52.192956}, + {-73.870697, 40.751724}, + {-84.105447, 9.924}, + {10.191958, 53.416036}, + {8.875923, 53.035984}, + {9.679642, 54.31572}, + {-13.607496, 9.643532}, + {9.263205, 45.401688}, + {30.380878, 40.724515}, + {-76.523483, 3.411942}, + {-77.00798034668, -12.12272644043}, + {9.671768, 4.612015}, + {9.690552, 45.049159}, + {120.693741, 23.979034}, + {7.137797, 50.569233}, + {17.028467, 51.098793}, + {106.863871, -6.378781}, + {104.771305, -2.997929}, + {7.616959, 48.525238}, + {3.752975, 43.510209}, + {-73.694411, 45.912131}, + {9.4063568115234, 49.090347290039}, + {15.572216, 46.489769}, + {37.580768, 55.846234}, + {-78.487701, -0.109863}, + {4.803356, 44.545251}, + {6.435028, 53.325841}, + {23.295565, 42.709179}, + {-84.519602, 39.073729}, + {-78.489761352539, -0.11466979980469}, + {106.976732, -6.311145}, + {-84.100172, 9.940159}, + {12.208558, 51.902161}, + {12.305784, 41.817949}, + {116.124085, -8.577347}, + {15.508851, 47.163071}, + {110.403671, -6.995607}, + {110.413961, -7.014773}, + {50.069962, 26.404495}, + {10.925014, 53.85675}, + {-76.102981567383, 4.3292999267578}, + {-81.651193, 30.312341}, + {106.794398, -6.208081}, + {11.034155, 51.014058}, + {119.420643, -5.160885}, + {151.214218, -33.863754}, + {55.397873, 25.179291}, + {12.184524536133, 50.875625610352}, + {15.62411, 48.820393}, + {7.526779, 50.648117}, + {9.983147, 50.092808}, + {73.33992, 54.975684}, + {30.448903, 50.438527}, + {15.083541870117, 48.172988891602}, + {-99.687881469727, 25.258255004883}, + {12.406428, 47.682832}, + {14.200168, 50.929646}, + {20.463409, 44.88327}, + {19.041408, 47.515551}, + {12.010119, 51.202058}, + {-74.422823, 4.63467}, + {11.436615, 48.232422}, + {3.048372, 43.014321}, + {-3.9159393310547, 56.076278686523}, + {-58.445206, -34.607071}, + {-1.897565, 52.643617}, + {-100.71647644043, 23.674850463867}, + {-76.104518, -5.897958}, + {35.488912, 33.377658}, + {33.488388, 0.711567}, + {32.588479, 0.317755}, + {34.115611, 0.637496}, + {77.585449, 13.021545}, + {-0.575701, 44.838913}, + {-74.234128, 11.001925}, + {7.098885, 4.753647}, + {-42.559567, -19.455074}, + {10.191878, 59.580918}, + {5.11774, 52.121201}, + {9.586553, 50.410502}, + {2.322646, 48.87985}, + {13.340324, 48.885157}, + {9.360756, 51.395021}, + {7.447196, 46.946478}, + {76.840302, 30.697449}, + {-6.260712, 53.342498}, + {11.459182, 50.112076}, + {17.900174, 47.695309}, + {10.975425, 51.405629}, + {-44.001664, -19.935924}, + {144.902842, -37.737754}, + {100.668411, 13.58757}, + {26.371997, 47.067491}, + {-76.891250610352, -12.032089233398}, + {13.755197, 43.264531}, + {25.070436, 60.25914}, + {55.76088, 24.181137}, + {4.187303, 51.952699}, + {145.251599, -38.019159}, + {32.982559, 2.022605}, + {-112.512096, 33.458689}, + {10.337449, 56.311702}, + {7.567062, 44.384537}, + {-90.60973, 14.636315}, + {37.553329, 55.861359}, + {-1.263199, 53.055191}, + {9.297398, 45.359694}, + {13.869552612305, 42.96272277832}, + {5.131746, 52.055515}, + {10.961746, 44.601334}, + {12.219704, 51.688335}, + {-52.347636, -31.770934}, + {104.798813, -2.965851}, + {84.804301, 25.566657}, + {12.281344, 49.597093}, + {28.902969360352, 41.052474975586}, + {-68.866287, -32.905838}, + {8.4587860107422, 50.232925415039}, + {8.692553, 50.121038}, + {-86.876637, 41.710594}, + {-70.724487, -33.489075}, + {104.3529510498, 14.193649291992}, + {113.269979, 23.108306}, + {5.259155, 52.118042}, + {-46.67373, -23.628199}, + {19.401817, 51.845507}, + {12.460555, 44.072346}, + {-16.279933, 28.457565}, + {-89.750747680664, 30.36003112793}, + {12.151565551758, 47.59895324707}, + {19.039993286133, 47.53303527832}, + {10.958788, 49.306181}, + {-43.919611, -19.786735}, + {-0.754624, 45.571976}, + {55.957177, 25.126669}, + {8.248509, 47.093009}, + {7.463151, 49.409786}, + {-1.838585, 52.649711}, + {31.499862670898, -24.796829223633}, + {100.39649963379, 13.615493774414}, + {-76.156567, -13.520506}, + {8.4120941162109, 49.511947631836}, + {7.907052, 47.352148}, + {-9.165936, 38.748507}, + {-121.2664, 38.070374}, + {7.024829, 50.964561}, + {18.36296081543, 48.623428344727}, + {32.500983, -18.869707}, + {19.976577758789, 45.404434204102}, + {151.098404, -33.94661}, + {-105.758144, 53.327795}, + {45.279703, -12.794588}, + {27.832706, -26.130341}, + {30.377883911133, 50.392227172852}, + {3.75199, 45.846528}, + {14.970252, 48.8308}, + {-0.466982, 51.362894}, + {146.659096, -36.500842}, + {-68.825324, -32.925731}, + {18.725856, 47.547729}, + {0.603845, 47.486672}, + {4.540728, 50.821085}, + {18.997421264648, 49.878616333008}, + {5.163803, 7.286453}, + {7.988777, 51.414471}, + {-71.653518676758, 10.675277709961}, + {-71.657638549805, 10.624465942383}, + {-70.187393, 11.695633}, + {-71.405702, 10.31683}, + {-64.23225402832, 8.8776397705078}, + {-71.311569, 10.191536}, + {-65.117904, 9.972529}, + {-64.436335, 9.438232}, + {-63.254852, 10.664672}, + {-71.240158081055, 8.5535430908203}, + {-71.33903503418, 8.9023590087891}, + {-72.206955, 7.762699}, + {-72.231674194336, 7.7611541748047}, + {-72.231117, 7.764241}, + {-72.198406, 7.852909}, + {-62.684168, 8.33843}, + {-62.785152, 8.256581}, + {-67.285079956055, 10.22346496582}, + {-63.175267, 9.745643}, + {-66.25373840332, 10.336074829102}, + {-63.327942, -17.891922}, + {-63.17019, -17.731676}, + {-63.174099, -17.80691}, + {-79.912490844727, -2.1718597412109}, + {-78.628463745117, -0.88508605957031}, + {-79.866486, -2.150574}, + {-79.632339477539, -2.2899627685547}, + {-80.439834594727, -1.6884613037109}, + {-79.198379516602, -3.9997100830078}, + {-78.476028442383, -0.24513244628906}, + {-78.495254516602, -0.26161193847656}, + {-78.466415405273, -0.19844055175781}, + {-78.507614135742, -0.22178649902344}, + {-78.493743, -0.193197}, + {-78.647689819336, -1.3794708251953}, + {-78.496628, -0.19899}, + {-77.698698, 0.817653}, + {-78.625717163086, -1.2380218505859}, + {-78.49250793457, -0.12977600097656}, + {-78.356552124023, -0.070724487304688}, + {-78.415603637695, -0.20256042480469}, + {-78.499374389648, -0.12565612792969}, + {20.983641, 51.619596}, + {20.395431518555, 51.537551879883}, + {19.486784, 51.757707}, + {19.832382, 52.501602}, + {21.544724, 52.833939}, + {3.0562591552734, 36.765060424805}, + {3.0233001708984, 36.811752319336}, + {3.6701202392578, 32.490005493164}, + {5.2370452880859, 35.478286743164}, + {5.382271, 35.389984}, + {6.5636444091797, 36.023483276367}, + {5.410493, 36.222639}, + {6.615372, 36.328812}, + {5.9717559814453, 34.713363647461}, + {-1.364365, 34.943047}, + {1.3382720947266, 36.145706176758}, + {-0.204681, 35.586353}, + {-0.67222595214844, 35.713119506836}, + {-0.11192321777344, 35.78727722168}, + {2.6827239990234, 36.645584106445}, + {2.6181793212891, 36.646957397461}, + {-5.003586, 34.043747}, + {-5.0241851806641, 34.037704467773}, + {-6.9948577880859, 33.892135620117}, + {-8.017273, 31.635818}, + {-7.0346832275391, 33.855056762695}, + {-5.0310516357422, 34.017105102539}, + {-5.0351715087891, 34.04182434082}, + {-5.5899810791016, 33.654556274414}, + {85.214767456055, 27.688980102539}, + {84.861832, 27.034607}, + {84.862518, 27.003021}, + {85.188674926758, 27.668380737305}, + {81.675796508789, 28.252029418945}, + {80.243453979492, 28.951034545898}, + {52.850113, 36.403351}, + {49.848403930664, 37.354202270508}, + {49.632797241211, 37.03971862793}, + {50.072250366211, 37.200393676758}, + {54.11247253418, 36.791152954102}, + {55.136947631836, 37.071304321289}, + {49.300735, 37.326736}, + {54.448471, 36.843338}, + {51.400444, 36.66295}, + {51.37825012207, 35.695266723633}, + {50.72868347168, 34.514236450195}, + {50.863658, 34.640775}, + {50.944290161133, 35.824356079102}, + {51.144790649414, 35.577163696289}, + {51.018447875977, 35.52360534668}, + {51.698325, 32.641068}, + {55.399646, 36.486194}, + {51.626472, 32.630081}, + {-95.212326049805, 29.770889282227}, + {-95.449905395508, 29.67887878418}, + {-97.80647277832, 30.25016784668}, + {-96.79573059082, 32.925338745117}, + {-96.823196411133, 32.941818237305}, + {-96.46614074707, 32.884140014648}, + {-97.09098815918, 32.678146362305}, + {-94.48860168457, 39.090042114258}, + {-83.739852905273, 32.848434448242}, + {-86.401290893555, 30.726699829102}, + {-95.335922241211, 29.728317260742}, + {-95.562515258789, 29.796981811523}, + {-95.351028442383, 28.98811340332}, + {-95.353775024414, 29.718704223633}, + {-95.740494, 30.023575}, + {-81.54670715332, 30.173263549805}, + {-81.570053100586, 30.508346557617}, + {-118.2740020752, 34.033584594727}, + {-117.9759979248, 33.864669799805}, + {-94.337539672852, 39.757461547852}, + {-94.575119018555, 39.311141967773}, + {-80.196762084961, 25.795211791992}, + {-80.108871459961, 26.20719909668}, + {-80.251693725586, 25.940780639648}, + {-80.450820922852, 25.49446105957}, + {21.443833, 41.9743}, + {20.800552368164, 41.487808227539}, + {21.921157836914, 41.784439086914}, + {21.50505065918, 41.998672485352}, + {21.404800415039, 42.009658813477}, + {19.26383972168, 42.440872192383}, + {18.846358, 42.291184}, + {19.57145690918, 42.959976196289}, + {18.75846862793, 42.431259155273}, + {18.718447, 42.416153}, + {-105.879364, 53.211594}, + {19.099044799805, 42.097549438477}, + {-106.582489, 52.111588}, + {-106.66557312012, 52.173385620117}, + {-107.808151, 50.287308}, + {-102.27516174316, 49.437789916992}, + {-106.530251, 52.294353}, + {-108.41102600098, 51.986618041992}, + {6.1008453369141, 50.75065612793}, + {4.0436553955078, 43.855361938477}, + {3.2045745849609, 50.602340698242}, + {2.303053, 48.891038}, + {1.5291595458984, 44.233016967773}, + {2.389631, 48.878299}, + {23.753128051758, 56.658554077148}, + {24.074478149414, 56.922225952148}, + {23.926162719727, 56.953811645508}, + {23.909805, 56.957609}, + {21.757736206055, 57.110366821289}, + {27.06413269043, 57.357559204102}, + {27.539291381836, 57.032089233398}, + {26.368955, 56.989826}, + {25.244522094727, 57.224349975586}, + {27.16438293457, 55.896377563477}, + {24.134572, 56.972048}, + {24.068984985352, 57.001876831055}, + {24.224167, 56.9561}, + {24.811249, 56.818543}, + {24.272232055664, 56.828842163086}, + {25.892715454102, 56.065292358398}, + {24.051132202148, 56.934585571289}, + {24.215927124023, 56.948318481445}, + {8.8076019287109, 45.801315307617}, + {9.6768951416016, 45.69694519043}, + {9.1866302490234, 45.464859008789}, + {9.1838836669922, 45.471725463867}, + {9.1316986083984, 45.486831665039}, + {9.1385650634766, 45.490951538086}, + {9.3061065673828, 45.390701293945}, + {9.283774, 45.793321}, + {9.68898, 45.355545}, + {9.8348236083984, 45.622787475586}, + {10.414352416992, 45.55549621582}, + {9.218689, 45.722137}, + {9.0822601318359, 45.431900024414}, + {8.8515472412109, 45.330276489258}, + {9.1715240478516, 45.707931518555}, + {9.318258, 45.628316}, + {9.263535, 45.638409}, + {9.2443084716797, 45.567855834961}, + {9.3500518798828, 45.639266967773}, + {12.614364624023, 43.518905639648}, + {13.129348754883, 43.750991821289}, + {13.287106, 43.670568}, + {12.601391, 42.909835}, + {11.201671, 44.251253}, + {10.798873901367, 44.631271362305}, + {11.030984, 44.571037}, + {10.479812, 44.682541}, + {9.9872589111328, 45.10368347168}, + {9.8883819580078, 45.019912719727}, + {11.005554, 44.675217}, + {13.469924926758, 42.803421020508}, + {13.509064, 43.122483}, + {12.216110229492, 44.705429077148}, + {11.333084106445, 44.53239440918}, + {9.4983673095703, 44.638137817383}, + {10.868911743164, 44.65461730957}, + {9.685265, 45.060647}, + {9.7218, 45.043318}, + {12.131424, 44.444504}, + {18.453598022461, -34.012985229492}, + {18.829194, -34.277344}, + {18.405533, -33.939743}, + {18.492050170898, -33.915481567383}, + {18.421902, -33.922056}, + {27.997970581055, -26.161880493164}, + {25.655507, -25.858311}, + {27.748031616211, -26.444778442383}, + {27.824935913086, -26.319808959961}, + {27.84553527832, -26.304702758789}, + {26.631546020508, -26.867752075195}, + {27.856521606445, -26.26350402832}, + {27.929306030273, -26.259384155273}, + {28.044662475586, -26.270370483398}, + {27.962265014648, -26.641159057617}, + {28.046035766602, -26.281356811523}, + {28.107834, -26.25032}, + {28.098679, -26.203079}, + {27.997970581055, -26.242904663086}, + {18.711776733398, -33.881149291992}, + {18.656991, -33.853977}, + {18.665084838867, -33.877029418945}, + {18.452224731445, -33.654556274414}, + {-17.868576049805, 28.503341674805}, + {-17.305527, 28.141823}, + {-16.680679321289, 28.20671081543}, + {-4.0615081787109, 43.337631225586}, + {-3.9269256591797, 43.271713256836}, + {-3.840225, 43.445572}, + {-4.302109, 41.283051}, + {-4.5092010498047, 40.729751586914}, + {-5.9896087646484, 37.389907836914}, + {-5.971413, 37.369308}, + {-5.9937286376953, 37.378921508789}, + {-5.9799957275391, 37.422866821289}, + {-5.9662628173828, 37.387161254883}, + {-5.437316, 37.361755}, + {-5.7918548583984, 37.179794311523}, + {-5.9442901611328, 36.987533569336}, + {-5.8344268798828, 37.336349487305}, + {-4.7344207763672, 37.426986694336}, + {-5.8563995361328, 37.354202270508}, + {0.52253723144531, 40.795669555664}, + {-2.481766, 41.771164}, + {-73.513003, 40.807427}, + {-78.912734985352, 33.665542602539}, + {-77.850724, 34.246216}, + {-76.627578735352, 39.287796020508}, + {-73.990173, 40.632935}, + {-73.976669, 40.67894}, + {-73.94989, 40.695419}, + {-73.881958, 40.657379}, + {-73.895828, 40.617485}, + {-73.769783, 40.714995}, + {-74.009171, 40.70858}, + {-73.97438, 40.759375}, + {-73.97575378418, 40.769577026367}, + {-73.902283, 40.753098}, + {-73.927688598633, 40.816268920898}, + {-73.98811340332, 40.717391967773}, + {-73.867947, 41.068614}, + {-73.928633, 41.092243}, + {-73.893357, 41.313629}, + {-74.076462, 41.159134}, + {-73.938645, 40.849228}, + {-73.872757, 40.865688}, + {-73.857650756836, 40.927505493164}, + {-73.861770629883, 40.828628540039}, + {-99.170150756836, 19.390182495117}, + {-99.192123413086, 19.431381225586}, + {-99.138565063477, 19.434127807617}, + {-99.128952026367, 19.434127807617}, + {-99.031448364258, 19.542617797852}, + {-99.078827, 19.370956}, + {-103.34907531738, 20.689315795898}, + {-103.407269, 20.710602}, + {-103.425592, 20.652449}, + {-100.15892028809, 25.741653442383}, + {-100.364786, 25.725768}, + {-100.23719787598, 25.578231811523}, + {-99.164184, 19.343491}, + {-99.138565063477, 19.469833374023}, + {-99.198989868164, 19.596176147461}, + {-99.887008666992, 19.792556762695}, + {-108.9933013916, 25.799331665039}, + {-99.104677, 19.466182}, + {-98.468399047852, 19.291305541992}, + {-98.922409, 19.310394}, + {16.91276550293, 48.862380981445}, + {17.111435, 49.549255}, + {16.843777, 49.870216}, + {14.405479, 50.080318}, + {14.810944, 49.745407}, + {14.482040405273, 48.753890991211}, + {13.6361, 49.60396}, + {13.575793, 49.751899}, + {-112.1134185791, 56.801376342773}, + {-112.78358459473, 49.682235717773}, + {-110.723436, 50.012456}, + {-113.90419006348, 50.746536254883}, + {-113.829002, 52.23793}, + {-113.53202819824, 52.52082824707}, + {-113.99070739746, 51.051406860352}, + {-114.05113220215, 51.052780151367}, + {-113.81355285645, 51.301345825195}, + {-114.06807, 51.120987}, + {-100.354615, 49.819565}, + {-75.68962097168, 45.434646606445}, + {-75.692367553711, 45.354995727539}, + {-1.7543792724609, 53.784255981445}, + {-2.6181793212891, 54.337692260742}, + {-4.1947174072266, 55.871658325195}, + {-3.055294, 53.812537}, + {-2.266463, 53.46404}, + {-2.5879669189453, 53.296737670898}, + {-2.1306610107422, 53.383255004883}, + {-2.4602508544922, 53.499984741211}, + {-2.0180511474609, 53.36540222168}, + {-3.002243, 53.468399}, + {-2.6607513427734, 53.39973449707}, + {-2.0125579833984, 52.556533813477}, + {-2.125168, 52.427444}, + {-1.7269134521484, 52.540054321289}, + {-1.6815948486328, 52.578506469727}, + {-2.19429, 52.474136}, + {-2.641303, 53.746796}, + {-3.0452728271484, 53.530197143555}, + {-2.672813, 53.654858}, + {-0.83290100097656, 51.214828491211}, + {-119.397486, 36.324814}, + {-122.07664489746, 37.53547668457}, + {-122.113885, 37.65922}, + {-122.476361, 37.848322}, + {-122.45567321777, 37.76481628418}, + {-122.41035461426, 37.80876159668}, + {-121.94343566895, 37.36930847168}, + {-119.791019, 36.872599}, + {-121.970901, 37.314252}, + {-122.256429, 37.822377}, + {-122.304157, 37.869772}, + {-122.242389, 37.825124}, + {-121.87889099121, 37.339096069336}, + {-121.855919, 37.705105}, + {-122.261033, 37.517874}, + {-122.191758, 37.785062}, + {-121.97090148926, 37.40364074707}, + {-120.34767150879, 39.339981079102}, + {-120.33668518066, 39.342727661133}, + {-119.92881774902, 39.238357543945}, + {37.760696411133, 55.70686340332}, + {37.94059753418, 55.698623657227}, + {37.866439819336, 55.693130493164}, + {37.429733276367, 55.741195678711}, + {37.594528198242, 55.544815063477}, + {37.384414672852, 55.71647644043}, + {37.55744934082, 55.844192504883}, + {37.411880493164, 55.87028503418}, + {37.63298034668, 55.741195678711}, + {60.625991821289, 56.84944152832}, + {60.632858276367, 56.841201782227}, + {60.55046081543, 56.863174438477}, + {53.266525268555, 56.870040893555}, + {61.371688842773, 55.158920288086}, + {49.70832824707, 52.98225402832}, + {92.814559936523, 56.013107299805}, + {45.019912719727, 53.16764831543}, + {46.76399230957, 53.098983764648}, + {33.525925, 44.617538}, + {33.5186, 44.579675}, + {34.085083, 44.964981}, + {34.949569702148, 44.841384887695}, + {34.187835, 44.48571}, + {49.08073425293, 55.853805541992}, + {-60.718002, -32.942276}, + {-60.733109, -31.607895}, + {-60.939102172852, -31.947555541992}, + {-58.964309692383, -27.509078979492}, + {-54.602737, -26.41341}, + {-58.07167, -31.009598}, + {-58.09227, -31.348114}, + {-56.98127746582, -37.269058227539}, + {-57.615737915039, -37.970809936523}, + {-57.55089, -37.999086}, + {-59.142837524414, -37.358322143555}, + {-62.083053588867, -35.860061645508}, + {-68.718795776367, -32.862167358398}, + {-68.862854, -32.95816}, + {-68.672103881836, -32.984390258789}, + {-68.824539, -32.921906}, + {-68.883590698242, -32.901992797852}, + {-68.694076538086, -32.897872924805}, + {-65.459976196289, -33.683395385742}, + {-58.557815551758, -34.629592895508}, + {-58.650856, -34.619293}, + {-78.872261, 35.744326}, + {-78.813827, 35.594274}, + {-78.949813842773, 35.905380249023}, + {-79.103946, 36.003934}, + {-78.788452, 35.976105}, + {-79.953297, 36.397411}, + {-71.333541870117, 41.914901733398}, + {-71.436538696289, 41.880569458008}, + {-80.213241577148, 26.274490356445}, + {-77.186508, 38.850815}, + {-72.851905, 44.116884}, + {-73.11882019043, 44.013290405273}, + {-72.899141, 43.17359}, + {-87.043844, 38.350121}, + {-87.329635620117, 38.400650024414}, + {-86.291825, 37.464383}, + {-86.412867, 37.010004}, + {-88.675232, 37.131729}, + {-87.9142, 37.94838}, + {-85.701367, 37.715731}, + {121.16340637207, 30.170516967773}, + {121.00685119629, 30.081253051758}, + {120.65254211426, 27.966384887695}, + {121.01234436035, 28.154525756836}, + {114.38484191895, 30.443801879883}, + {114.33265686035, 30.528945922852}, + {114.28733825684, 30.583877563477}, + {114.22828674316, 30.607223510742}, + {111.54350280762, 30.546798706055}, + {113.2381439209, 31.299362182617}, + {114.30107116699, 30.597610473633}, + {114.26948547363, 30.620956420898}, + {114.34501647949, 30.51383972168}, + {114.93690490723, 30.156784057617}, + {113.81355285645, 29.246292114258}, + {112.25074768066, 30.309219360352}, + {109.59617614746, 27.954025268555}, + {112.83302307129, 28.22868347168}, + {112.6146697998, 25.634536743164}, + {112.228775, 26.844406}, + {110.44486999512, 19.972457885742}, + {109.49592590332, 18.222885131836}, + {110.32676696777, 25.418930053711}, + {108.2544708252, 22.730026245117}, + {115.82405090332, 28.699722290039}, + {29.147415, 40.917206}, + {29.130935668945, 40.872573852539}, + {29.325248, 40.871781}, + {29.313583374023, 40.84098815918}, + {10.391148, 52.148925}, + {-66.921157836914, 10.492630004883}, + {115.189314, -8.784342}, + {-99.188003540039, 19.370956420898}, + {0.492783, 51.743546}, + {17.332993, 40.759689}, + {10.428085327148, 59.086532592773}, + {11.127605, 46.043015}, + {-74.823624, 11.003494}, + {-46.791458129883, -22.894821166992}, + {72.859268188477, 19.236373901367}, + {11.955184936523, 57.698135375977}, + {9.2182159423828, 49.141159057617}, + {1.787338, 43.970032}, + {-45.778401, -23.144492}, + {19.559097, 50.281972}, + {-85.564613, 40.202408}, + {-35.233489, -8.364401}, + {-46.350466, -23.46401}, + {11.339915, 50.849216}, + {-46.139144897461, -23.617172241211}, + {-123.877945, 49.043655}, + {-119.833306, 39.53297}, + {17.067947387695, 52.406845092773}, + {-117.847638, 33.848963}, + {22.273262, 50.592758}, + {-116.769028, 47.947159}, + {103.7459564209, 1.3520050048828}, + {2.25151, 42.535629}, + {6.1173248291016, 50.771255493164}, + {-78.566665649414, -9.0932464599609}, + {-77.030262, -12.121368}, + {34.050064086914, 37.508010864258}, + {152.815933, -31.379929}, + {101.5843963623, 3.1977081298828}, + {39.285049438477, 51.733932495117}, + {20.443496704102, 53.788375854492}, + {-75.24172, 4.430098}, + {23.025283813477, 62.966079711914}, + {4.788839, 52.30606}, + {73.203964, 19.295425}, + {-47.164291, -1.199616}, + {4.886946, 52.373321}, + {17.62825012207, 52.215957641602}, + {-3.779475, 38.097633}, + {151.091344, -33.803029}, + {-83.1083, 42.476562}, + {2.2501373291016, 48.91731262207}, + {8.593369, 50.024872}, + {-60.940475463867, -32.392501831055}, + {15.548499, 52.276677}, + {28.177597, -25.751541}, + {23.423538, 46.736069}, + {103.860455, 1.303425}, + {-0.950087, 51.446001}, + {145.291388, -37.750662}, + {24.718551635742, 43.139877319336}, + {20.250549, 49.147339}, + {-43.013441, -22.813974}, + {-95.485610961914, 30.384750366211}, + {11.46354675293, 53.304977416992}, + {-79.835613, 43.303761}, + {20.216217, 47.831726}, + {7.2516632080078, 53.55354309082}, + {96.624985, 20.651321}, + {34.795761108398, 31.270523071289}, + {11.585968, 48.174958}, + {21.948623657227, 47.031784057617}, + {16.506272, 50.610809}, + {13.314052, 52.465078}, + {115.26374816895, -8.6908721923828}, + {11.345932, 46.490243}, + {19.993057, 49.327621}, + {19.955978393555, 50.072250366211}, + {-99.634323, 19.308334}, + {101.49375915527, 3.0699920654297}, + {5.4402923583984, 43.513412475586}, + {0.35774230957031, 51.23405456543}, + {-79.961929321289, 45.300064086914}, + {30.710220336914, 36.887283325195}, + {-117.71644592285, 33.849563598633}, + {-1.2297821044922, 43.566970825195}, + {120.39299, 36.11618}, + {14.703140258789, 50.925064086914}, + {31.313095092773, 29.880752563477}, + {7.5359344482422, 51.580123901367}, + {-117.126617, 32.689819}, + {17.769012, 51.612396}, + {21.757737, 40.285149}, + {106.39228820801, 17.614517211914}, + {7.36702, 49.251022}, + {-14.118805, 28.192978}, + {16.322250366211, 48.164749145508}, + {27.012627, 50.558401}, + {37.646439, 55.765091}, + {-60.691006, -32.898993}, + {15.689163208008, 52.298355102539}, + {27.700241, 42.674332}, + {106.79740905762, -6.2216949462891}, + {19.050678, 47.503713}, + {9.7551727294922, 48.667373657227}, + {-81.79801940918, 28.647537231445}, + {-76.244430541992, 40.41389465332}, + {-0.71067810058594, 51.338424682617}, + {7.1678924560547, 49.404830932617}, + {20.661163, 40.9021}, + {15.172805786133, 51.390609741211}, + {24.675979614258, 40.586929321289}, + {24.19807434082, 37.565689086914}, + {51.313021, 35.716518}, + {33.508987426758, 39.841232299805}, + {6.6913604736328, 43.422775268555}, + {-43.871841430664, -22.611923217773}, + {25.175171, 60.222244}, + {21.392441, 50.949097}, + {18.056716918945, 53.126449584961}, + {40.934437, 57.760798}, + {56.263046264648, 58.011245727539}, + {29.320449829102, 40.869827270508}, + {28.813705444336, 41.014022827148}, + {28.802368, 41.023964}, + {29.26139831543, 40.878067016602}, + {28.862987, 40.986418}, + {29.027938842773, 41.05110168457}, + {29.033432006836, 41.079940795898}, + {29.04167175293, 41.085433959961}, + {29.065017700195, 41.040115356445}, + {29.020484, 41.023243}, + {29.021072387695, 41.07307434082}, + {29.003219604492, 41.044235229492}, + {29.029312133789, 40.992050170898}, + {29.066390991211, 40.96321105957}, + {29.052658081055, 40.970077514648}, + {29.59098815918, 41.152725219727}, + {29.235305786133, 41.01676940918}, + {28.915328979492, 41.033248901367}, + {79.891891, 6.964645}, + {79.858932495117, 6.9138336181641}, + {79.890518188477, 6.9083404541016}, + {81.342086791992, 6.9083404541016}, + {80.695266723633, 8.0701446533203}, + {80.195388793945, 6.1626434326172}, + {80.009994506836, 6.8534088134766}, + {81.127853393555, 6.6185760498047}, + {79.894638061523, 6.9316864013672}, + {80.108871459961, 6.1241912841797}, + {80.382156, 7.257156}, + {96.20246887207, 16.888046264648}, + {96.133804321289, 16.807022094727}, + {96.11457824707, 19.787063598633}, + {96.346664428711, 18.821640014648}, + {97.232437133789, 17.205276489258}, + {96.132431030273, 16.930618286133}, + {96.131058, 16.826248}, + {96.889114379883, 20.742874145508}, + {35.276412963867, 33.368911743164}, + {35.723821, 34.321065}, + {35.741959, 33.970413}, + {35.690951, 33.957171}, + {11.622848, 48.145523}, + {10.919998, 49.890839}, + {12.614879, 48.908558}, + {11.020248, 49.431033}, + {11.091384887695, 49.470748901367}, + {10.559921264648, 49.26887512207}, + {8.5768890380859, 49.127426147461}, + {7.770761, 48.407822}, + {9.967648, 48.806351}, + {9.2264556884766, 48.887100219727}, + {9.356003, 48.964005}, + {8.672104, 48.889999}, + {9.23996, 48.736496}, + {110.36933898926, -7.7968597412109}, + {115.22392272949, -8.6496734619141}, + {115.22117614746, -8.6537933349609}, + {115.25825500488, -8.6757659912109}, + {115.114568, -8.095505}, + {115.2074432373, -8.7979888916016}, + {115.14427185059, -8.5453033447266}, + {98.601608276367, 3.4558868408203}, + {98.682632446289, 3.5726165771484}, + {103.97117614746, 1.0485076904297}, + {104.03984069824, 1.1281585693359}, + {101.38389587402, 0.45661926269531}, + {107.871174, -7.204627}, + {108.223704, -7.343541}, + {107.569464, -6.926808}, + {107.992721, -7.056657}, + {107.50602722168, -6.8616485595703}, + {107.32612609863, -6.7407989501953}, + {108.51127624512, -7.3793792724609}, + {107.743076, -6.703435}, + {107.40715026855, -6.5210723876953}, + {107.602793, -6.89515}, + {107.573424, -6.872167}, + {2.3215484619141, 48.888473510742}, + {2.3627471923828, 48.86100769043}, + {0.315857, 49.75914}, + {2.8488922119141, 48.488845825195}, + {1.2723541259766, 49.988479614258}, + {2.0949554443359, 48.777236938477}, + {1.940804, 49.044685}, + {1.9123077392578, 48.980484008789}, + {-1.400986, 46.975021}, + {-1.384552, 46.629547}, + {1.2847137451172, 43.388442993164}, + {2.1004486083984, 49.555892944336}, + {6.303472, 43.399429}, + {5.6243133544922, 43.30192565918}, + {4.678802, 43.987198}, + {6.335678, 43.542709}, + {1.246948, 45.791016}, + {6.419174, 48.191391}, + {2.4575042724609, 48.582229614258}, + {10.205612182617, 56.15592956543}, + {10.233774, 57.222551}, + {9.071275, 56.13327}, + {16.166444, 54.208603}, + {21.610794067383, 53.749923706055}, + {17.02262878418, 53.803482055664}, + {16.746597290039, 53.65104675293}, + {21.358556, 54.082857}, + {20.268406, 54.072647}, + {17.626876831055, 53.719711303711}, + {18.019638061523, 53.11408996582}, + {17.736740112305, 53.928451538086}, + {18.055573, 53.197403}, + {18.28742980957, 53.162155151367}, + {18.272323608398, 52.843551635742}, + {18.597793579102, 53.038558959961}, + {18.030626, 52.776948}, + {20.085067749023, 53.306350708008}, + {19.014584, 52.59018}, + {18.571701, 52.668457}, + {19.01547, 52.567913}, + {19.682007, 53.505478}, + {14.812741, 51.657404}, + {15.81871, 53.295365}, + {74.001846313477, 18.584060668945}, + {79.092636108398, 21.128768920898}, + {79.058303833008, 21.069717407227}, + {72.754898071289, 19.464340209961}, + {76.563034057617, 18.395919799805}, + {77.432327270508, 23.251876831055}, + {75.829696655273, 22.680587768555}, + {81.322860717773, 24.552383422852}, + {76.417465209961, 30.895614624023}, + {74.504470825195, 30.182876586914}, + {79.456558, 28.393021}, + {78.073654174805, 27.922439575195}, + {86.831130981445, 23.739395141602}, + {87.858352661133, 22.414169311523}, + {88.120651, 22.060776}, + {88.194809, 22.736206}, + {87.234878540039, 23.54850769043}, + {85.332870483398, 23.371353149414}, + {86.115646362305, 23.641891479492}, + {87.403793334961, 23.398818969727}, + {84.198532104492, 24.90119934082}, + {84.529495239258, 25.269241333008}, + {85.890426635742, 24.162368774414}, + {86.176758, 22.813797}, + {-45.339889526367, -23.595199584961}, + {-43.303298950195, -22.904434204102}, + {-43.34587097168, -22.859115600586}, + {-46.523666381836, -23.481216430664}, + {-46.652755737305, -23.57048034668}, + {-46.757125854492, -23.647384643555}, + {-43.311538696289, -22.789077758789}, + {-46.678848266602, -23.47297668457}, + {-46.262741088867, -23.441390991211}, + {-46.660995483398, -23.527908325195}, + {-46.713180541992, -23.508682250977}, + {-43.53401184082, -22.860488891602}, + {-46.640396118164, -23.624038696289}, + {-46.56623840332, -23.501815795898}, + {-46.746139526367, -23.597946166992}, + {-46.659622192383, -23.537521362305}, + {-46.468734741211, -23.448257446289}, + {-46.710433959961, -23.529281616211}, + {-46.650009155273, -23.575973510742}, + {12.49815, 55.879211}, + {12.16667175293, 56.033706665039}, + {12.560806274414, 55.708236694336}, + {12.462845, 55.715103}, + {12.602005004883, 55.664291381836}, + {12.586898803711, 55.693130493164}, + {12.504501342773, 55.682144165039}, + {12.61848449707, 55.635452270508}, + {12.341079711914, 55.61897277832}, + {12.434463500977, 55.691757202148}, + {10.300369262695, 57.339706420898}, + {12.575912475586, 55.678024291992}, + {10.511856079102, 57.424850463867}, + {10.029830932617, 56.458053588867}, + {12.17903137207, 55.50910949707}, + {12.593765258789, 55.679397583008}, + {-46.781845092773, -23.547134399414}, + {-46.370816, -23.965319}, + {-49.319572, -25.414672}, + {-46.358773, -23.4502}, + {-46.563782, -23.54909}, + {-47.382954, -22.342268}, + {-45.938778, -23.262027}, + {-46.492084, -23.611429}, + {-46.553656, -23.657454}, + {-48.828298, -26.340974}, + {-46.304216, -23.573838}, + {-46.576164, -23.520944}, + {-38.931634, -12.274585}, + {-34.90837097168, -8.0220794677734}, + {-38.562508, -3.742001}, + {-37.063324, -10.989287}, + {-35.26301, -5.925861}, + {-38.458461, -3.733642}, + {-38.373184204102, -3.8994598388672}, + {-43.18029, -22.95608}, + {-93.183975219727, 44.892196655273}, + {-86.751480102539, 40.339736938477}, + {-111.70967102051, 40.265579223633}, + {-157.87147521973, 21.315536499023}, + {-118.169632, 34.692342}, + {-118.2740020752, 34.131088256836}, + {-118.23554992676, 33.892135620117}, + {-117.6326751709, 34.083023071289}, + {-117.11769104004, 33.183517456055}, + {-88.230514526367, 43.310165405273}, + {-95.096969604492, 29.475631713867}, + {-88.13850402832, 42.206039428711}, + {-81.95182800293, 40.564956665039}, + {-71.028671264648, 42.402420043945}, + {-120.016027, 38.87787}, + {-122.0011138916, 37.361068725586}, + {-122.43919372559, 40.471572875977}, + {-122.56416320801, 37.987289428711}, + {-118.63105773926, 34.122848510742}, + {-118.3536529541, 34.055557250977}, + {-111.9815826416, 40.560836791992}, + {-105.315285, 40.061302}, + {-104.73335266113, 40.004653930664}, + {-83.047714233398, 38.147964477539}, + {-87.122268676758, 35.406875610352}, + {-87.668838500977, 34.221725463867}, + {-81.980667114258, 37.991409301758}, + {-81.505508422852, 38.32649230957}, + {-73.703842163086, 41.987686157227}, + {-72.061386108398, 42.086563110352}, + {-72.851028442383, 44.989700317383}, + {-74.040298461914, 40.711898803711}, + {-74.529190063477, 40.416641235352}, + {-73.885116577148, 41.318893432617}, + {-76.14418, 41.583252}, + {-98.291244506836, 29.629440307617}, + {-78.588638305664, 40.166702270508}, + {-86.946487426758, 40.460586547852}, + {-83.259201049805, 42.350234985352}, + {-97.814712524414, 30.17463684082}, + {-97.968521118164, 29.842300415039}, + {-97.741928100586, 30.254287719727}, + {-97.741811, 30.306773}, + {-97.744674682617, 30.344924926758}, + {-97.218704223633, 27.584609985352}, + {-98.662033081055, 29.672012329102}, + {-98.478012084961, 29.463272094727}, + {-98.137435913086, 26.415939331055}, + {-97.496796, 25.931854}, + {-98.394241333008, 29.522323608398}, + {-98.504104614258, 29.544296264648}, + {-98.494271, 29.425037}, + {-95.305709838867, 29.695358276367}, + {-92.127914428711, 30.011215209961}, + {-95.335922, 29.808655}, + {-95.436172485352, 29.729690551758}, + {-95.554275512695, 29.615707397461}, + {-95.374374389648, 29.555282592773}, + {100.316849, 5.42038}, + {100.28251647949, 5.3263092041016}, + {101.087573, 4.595092}, + {101.04469299316, 4.6808624267578}, + {100.63957214355, 4.4913482666016}, + {100.436719, 5.532816}, + {102.0142364502, 2.7294158935547}, + {102.94685, 1.85897}, + {101.828092, 2.836836}, + {102.24082946777, 2.2858428955078}, + {102.564644, 2.035003}, + {103.81736755371, 1.5552520751953}, + {102.74894714355, 2.1334075927734}, + {103.192978, 2.195663}, + {102.0059967041, 2.3682403564453}, + {103.64570617676, 1.6005706787109}, + {103.641243, 1.591644}, + {103.68827819824, 1.5071868896484}, + {103.72905, 1.520609}, + {103.640502, 1.459665}, + {103.597945, 1.39044}, + {101.866968, 2.429725}, + {102.242744, 2.192175}, + {102.260609, 2.227738}, + {-60.725863, 2.844343}, + {-43.202285, -22.976665}, + {-43.219528198242, -22.982711791992}, + {-41.129492, -20.331082}, + {-43.201675, -22.795029}, + {-43.285446166992, -22.838516235352}, + {-41.733627319336, -22.116165161133}, + {-51.057186, 0.074102}, + {-41.322096, -21.765149}, + {-42.500661, -22.924988}, + {-41.783065795898, -22.256240844727}, + {-41.313400268555, -21.741256713867}, + {-40.637014, -20.810425}, + {-44.338074, -22.916794}, + {-43.123823, -22.343463}, + {-43.185645, -22.506708}, + {-43.492813110352, -22.470474243164}, + {-42.948989868164, -22.776718139648}, + {13.252258, 52.360153}, + {13.744583, 52.037201}, + {12.51823425293, 51.320571899414}, + {12.273102, 51.261692}, + {14.360847, 51.765747}, + {8.3242034912109, 49.963760375977}, + {8.291931, 49.64447}, + {9.290358, 48.966759}, + {8.9174652099609, 48.950271606445}, + {8.5247039794922, 52.023696899414}, + {9.8966217041016, 52.37663269043}, + {9.9611663818359, 52.159652709961}, + {10.803041, 52.421951}, + {13.593806, 51.05007}, + {7.4027252197266, 51.411209106445}, + {18.933943, 52.667163}, + {17.918825, 53.100351}, + {18.029251098633, 53.112716674805}, + {18.813400268555, 54.299240112305}, + {18.614273071289, 53.011093139648}, + {17.629623413086, 52.537307739258}, + {15.67268371582, 52.093734741211}, + {19.927139282227, 50.068130493164}, + {20.964405, 52.226118}, + {21.168341, 52.225769}, + {21.012726, 52.230377}, + {21.000366, 52.203598}, + {20.99967956543, 52.217330932617}, + {20.83625793457, 50.083236694336}, + {15.558700561523, 51.95915222168}, + {18.279877, 50.121689}, + {15.671310424805, 51.836929321289}, + {16.73698425293, 53.15803527832}, + {16.886672973633, 52.990493774414}, + {17.350159, 53.666153}, + {16.97868347168, 51.11457824707}, + {-71.04377746582, 42.07145690918}, + {-70.954513549805, 42.267837524414}, + {-70.997417, 42.261729}, + {-71.220932006836, 42.712783813477}, + {-71.160507, 42.508621}, + {-71.035537719727, 42.528762817383}, + {-70.88996887207, 42.869338989258}, + {-71.10878, 42.564926}, + {-70.895462036133, 42.524642944336}, + {-71.578486, 42.445496}, + {-71.65901184082, 42.260971069336}, + {-71.366500854492, 42.119522094727}, + {-71.306076049805, 42.656478881836}, + {-70.524673461914, 41.756973266602}, + {-71.453018188477, 42.988815307617}, + {-71.770935, 42.271271}, + {-71.859512329102, 42.233505249023}, + {-71.615753, 42.230759}, + {-71.773867, 42.434725}, + {-76.258163452148, 36.95182800293}, + {-76.210008, 36.890508}, + {-5.3029632568359, 35.888900756836}, + {2.4451446533203, 41.758346557617}, + {-0.61454772949219, 39.474563598633}, + {-2.6319122314453, 43.163223266602}, + {-3.6234283447266, 43.404922485352}, + {-3.5259246826172, 40.444107055664}, + {-3.6920928955078, 40.459213256836}, + {-3.6577606201172, 40.40153503418}, + {-3.7525177001953, 40.372695922852}, + {-3.8074493408203, 40.367202758789}, + {-3.9337921142578, 40.575942993164}, + {-4.3087005615234, 40.000534057617}, + {2.1581268310547, 41.388931274414}, + {2.1581268310547, 41.386184692383}, + {1.8724822998047, 41.53450012207}, + {-0.37559509277344, 39.467697143555}, + {-0.31654357910156, 39.194412231445}, + {-0.021286010742188, 38.726119995117}, + {-0.40168762207031, 39.503402709961}, + {-0.40580749511719, 39.405899047852}, + {-0.47584533691406, 39.364700317383}, + {-1.4316558837891, 41.482315063477}, + {-6.3741302490234, 39.464950561523}, + {-6.5457916259766, 37.690658569336}, + {24.097824, 56.727905}, + {24.124046, 56.912298}, + {27.216567993164, 56.252059936523}, + {24.253817, 56.971054}, + {23.751754760742, 56.941452026367}, + {25.571365356445, 58.301010131836}, + {25.555076, 58.111281}, + {24.505417, 58.383408}, + {24.765181, 59.481718}, + {25.598831176758, 58.368301391602}, + {24.717178344727, 59.229354858398}, + {24.484545, 58.646444}, + {22.433395385742, 58.333969116211}, + {24.882034, 59.350315}, + {64.041293, 67.498732}, + {44.660663, 43.057902}, + {52.206344604492, 56.444320678711}, + {47.193832397461, 56.14631652832}, + {39.123982, 44.945755}, + {83.67805480957, 53.35578918457}, + {39.672318, 43.661728}, + {5.9168243408203, 50.649032592773}, + {5.442696, 50.599937}, + {3.152768, 50.878731}, + {2.9999542236328, 50.973129272461}, + {3.228966, 51.207508}, + {4.4185638427734, 50.410079956055}, + {4.462797, 50.612626}, + {4.611511, 50.489731}, + {4.5380401611328, 50.432052612305}, + {4.3498992919922, 50.182113647461}, + {4.2949676513672, 50.341415405273}, + {4.3553924560547, 50.826187133789}, + {4.3952178955078, 50.859146118164}, + {4.405975, 50.918427}, + {4.4158172607422, 50.835800170898}, + {4.3567657470703, 50.808334350586}, + {4.304868, 50.826236}, + {4.392093, 50.745692}, + {4.30584, 50.624542}, + {4.3567657470703, 51.185989379883}, + {9.4832611083984, 47.280349731445}, + {12.541707, 47.475849}, + {15.814988, 48.826738}, + {106.79878234863, -6.6638946533203}, + {106.621864, -6.167277}, + {106.628673, -6.172615}, + {106.612987, -6.168337}, + {106.709457, -6.219102}, + {106.683779, -6.215983}, + {106.702995, -6.207619}, + {106.78230285645, -6.2024688720703}, + {106.696404, -6.207872}, + {106.73561096191, -6.1914825439453}, + {106.77131652832, -6.1887359619141}, + {106.75346374512, -6.1557769775391}, + {106.721289, -6.158175}, + {106.838432, -6.16102}, + {106.776352, -6.109543}, + {106.823, -6.186188}, + {106.842041, -6.166077}, + {106.837734, -6.187363}, + {106.7163848877, -6.2395477294922}, + {106.76719665527, -6.2725067138672}, + {31.499862670898, 31.438064575195}, + {3.1002044677734, 33.776779174805}, + {1.1075592041016, 36.421737670898}, + {6.237076, 35.508224}, + {6.1406707763672, 35.685653686523}, + {-2.2460174560547, 31.586380004883}, + {-2.2226715087891, 31.639938354492}, + {8.1099700927734, 35.402755737305}, + {3.0837249755859, 36.657943725586}, + {2.8845977783203, 36.747207641602}, + {3.0699920654297, 36.715621948242}, + {3.1537628173828, 36.696395874023}, + {3.2375335693359, 36.765060424805}, + {5.415386, 36.195145}, + {5.6984710693359, 36.159439086914}, + {5.3002166748047, 35.921859741211}, + {6.8836212158203, 36.894149780273}, + {7.751714, 36.858754}, + {2.7046966552734, 36.086654663086}, + {0.10025, 35.950012}, + {5.3414154052734, 31.951675415039}, + {5.3290557861328, 31.965408325195}, + {8.4821319580078, 26.501083374023}, + {90.44563293457, 23.700942993164}, + {90.184707641602, 23.911056518555}, + {90.371475219727, 23.775100708008}, + {90.322036743164, 24.011306762695}, + {90.419540405273, 23.710556030273}, + {90.376282, 23.758621}, + {90.38932800293, 23.729782104492}, + {89.03938293457, 24.070358276367}, + {89.173965454102, 23.564987182617}, + {90.426406860352, 23.727035522461}, + {90.500564575195, 23.695449829102}, + {91.810684204102, 22.345504760742}, + {90.356369018555, 23.876724243164}, + {91.865615844727, 24.892959594727}, + {88.613662719727, 24.375228881836}, + {90.371475219727, 23.794326782227}, + {90.382461547852, 23.950881958008}, + {90.378341674805, 23.797073364258}, + {89.938888549805, 24.247512817383}, + {90.364608764648, 23.762741088867}, + {90.372848510742, 23.753128051758}, + {90.38932800293, 23.761367797852}, + {90.414047241211, 23.740768432617}, + {90.430526733398, 23.72428894043}, + {-1.006622, 53.553886}, + {-1.708321, 54.521047}, + {-1.236992, 53.623924}, + {-1.6170501708984, 53.734817504883}, + {-1.811515, 53.644908}, + {-2.167741, 52.349854}, + {-5.93811, 54.571152}, + {-5.929036, 54.605925}, + {-5.6339263916016, 54.654922485352}, + {-5.801436, 54.291596}, + {-6.0569000244141, 54.514846801758}, + {-6.180725, 54.391479}, + {-1.1954498291016, 53.366775512695}, + {-0.626711, 54.467959}, + {-1.4701080322266, 54.843063354492}, + {-1.4673614501953, 54.538192749023}, + {-0.85624694824219, 51.537551879883}, + {-0.72166442871094, 51.647415161133}, + {-2.2954559326172, 51.57600402832}, + {0.224762, 51.589279}, + {0.127487, 51.705093}, + {-4.65889, 55.632831}, + {-3.8404083251953, 55.737075805664}, + {-3.645744, 40.321884}, + {-3.7154388427734, 40.328750610352}, + {-3.668747, 40.448685}, + {-3.659477, 40.502815}, + {-3.534439, 40.446854}, + {-3.6124420166016, 40.455093383789}, + {-3.7113189697266, 40.412521362305}, + {-3.712888, 40.418799}, + {-3.057833, 40.721945}, + {-3.181915, 40.632935}, + {-2.872925, 41.199417}, + {-3.6934661865234, 40.426254272461}, + {-3.804245, 40.373611}, + {-3.7964630126953, 40.367202758789}, + {-3.714066, 40.45166}, + {-3.6797332763672, 40.459213256836}, + {-3.8198089599609, 40.356216430664}, + {-3.6632537841797, 40.456466674805}, + {-3.658447, 40.483246}, + {-3.6934661865234, 40.396041870117}, + {-3.8500213623047, 40.442733764648}, + {-2.1361541748047, 40.073318481445}, + {12.308120727539, 41.901168823242}, + {12.97554, 41.85791}, + {13.226852416992, 41.794052124023}, + {12.383377, 41.903091}, + {12.439956665039, 41.972579956055}, + {8.589935, 40.672073}, + {8.5686492919922, 40.742111206055}, + {8.819026, 40.92889}, + {9.5189666748047, 40.908279418945}, + {9.4942474365234, 40.917892456055}, + {9.5066070556641, 41.13899230957}, + {9.136505, 39.296036}, + {9.115286, 39.230704}, + {9.0808868408203, 39.252090454102}, + {11.061172485352, 43.878707885742}, + {10.853805541992, 44.010543823242}, + {11.460515, 43.776906}, + {11.24279, 43.788757}, + {11.115417, 43.769531}, + {10.454178, 43.68721}, + {109.32518, -0.026321}, + {116.94465637207, -1.0553741455078}, + {117.12730407715, -0.49919128417969}, + {117.18360900879, -0.50605773925781}, + {117.4925994873, 0.17646789550781}, + {115.26237487793, -8.5507965087891}, + {116.081543, -8.619461}, + {119.5662689209, -4.8538970947266}, + {119.63974, -4.294968}, + {125.005852, 1.402638}, + {106.64497375488, -6.2628936767578}, + {106.691093, -6.346449}, + {106.723649, -6.355374}, + {125.63209533691, 7.3326873779297}, + {120.96015930176, 14.710006713867}, + {121.037979, 14.700394}, + {121.10847473145, 14.707260131836}, + {121.02882385254, 14.648208618164}, + {120.97526550293, 14.598770141602}, + {121.004399, 14.58386}, + {121.056878, 14.570716}, + {121.167526, 14.573364}, + {120.41770935059, 16.787796020508}, + {120.505829, 16.219711}, + {121.10710144043, 16.386795043945}, + {120.88188171387, 14.828109741211}, + {120.962448, 13.639297}, + {121.139079, 14.105366}, + {123.19828, 13.630257}, + {121.092869, 14.265747}, + {120.913467, 14.444504}, + {120.96565246582, 14.424362182617}, + {120.939423, 14.376846}, + {122.51747131348, 10.963668823242}, + {122.756424, 11.560364}, + {123.90998840332, 9.6823883056641}, + {123.437569, 10.064853}, + {123.991262, 10.306487}, + {125.5345916748, 7.0813751220703}, + {123.962173, 10.342026}, + {125.6746673584, 7.2859954833984}, + {125.708313, 6.206589}, + {125.02784729004, 7.8353118896484}, + {123.908615, 10.332916}, + {123.917198, 10.303803}, + {100.66017150879, 13.773422241211}, + {100.58876037598, 13.80500793457}, + {100.69862365723, 13.798141479492}, + {100.68077087402, 13.780288696289}, + {100.65467834473, 13.772048950195}, + {100.631334, 13.820651}, + {100.541303, 13.861207}, + {100.62446594238, 13.740463256836}, + {100.54756164551, 13.846206665039}, + {100.87440490723, 14.40788269043}, + {100.90049743652, 13.095016479492}, + {101.048813, 12.715302}, + {102.11860656738, 12.612991333008}, + {101.96479797363, 14.931106567383}, + {100.98289489746, 13.513870239258}, + {103.02223205566, 15.544967651367}, + {102.7709197998, 14.990158081055}, + {99.105606079102, 18.796920776367}, + {99.159164428711, 18.791427612305}, + {99.09049987793, 18.733749389648}, + {98.806228637695, 18.877944946289}, + {100.15892028809, 20.09880065918}, + {100.266369, 15.407338}, + {-0.972633, 52.625198}, + {-2.0839691162109, 52.524948120117}, + {0.32615661621094, 52.589492797852}, + {1.653957, 52.679958}, + {1.500549, 52.772598}, + {0.973282, 52.685623}, + {-1.962433, 52.542801}, + {-1.204239, 51.94487}, + {-1.554075, 52.171424}, + {-1.319046, 51.952972}, + {-1.383133, 52.097168}, + {-0.046005249023438, 51.683120727539}, + {-2.4616241455078, 55.550308227539}, + {-1.693512, 55.170712}, + {-1.541069, 55.183451}, + {-2.979356, 54.949494}, + {0.63597, 51.799855}, + {0.627567, 51.798951}, + {0.71067810058594, 51.463394165039}, + {0.634951, 51.612102}, + {-3.980141, 43.413506}, + {-3.403706, 38.92827}, + {-2.046891, 39.041979}, + {-1.59288, 38.917007}, + {-4.9912261962891, 39.934616088867}, + {-4.4789886474609, 40.026626586914}, + {-3.468246, 38.634109}, + {-4.527054, 42.008743}, + {-4.753647, 42.917748}, + {-4.1466522216797, 41.533126831055}, + {-4.913635, 40.552597}, + {-4.790217, 41.587398}, + {-2.9491424560547, 41.93962097168}, + {-5.4320526123047, 39.84260559082}, + {-8.400781, 43.361043}, + {-9.276065, 43.088723}, + {-7.767371, 43.0171}, + {-7.9904937744141, 42.152481079102}, + {-1.250487, 37.945174}, + {-1.058808, 38.001023}, + {136.95350646973, 35.137710571289}, + {136.97410583496, 35.159683227539}, + {136.89720153809, 35.170669555664}, + {136.97547912598, 35.195388793945}, + {136.66923522949, 34.51286315918}, + {136.671982, 34.525909}, + {137.04689025879, 35.015487670898}, + {137.098389, 34.909744}, + {136.95625305176, 35.102005004883}, + {136.95625305176, 35.044326782227}, + {137.181902, 34.952145}, + {137.11280822754, 35.111618041992}, + {136.775273, 35.165471}, + {136.9164276123, 35.102005004883}, + {136.89308166504, 35.132217407227}, + {136.94526672363, 35.139083862305}, + {136.91093444824, 35.066299438477}, + {136.85600280762, 35.18440246582}, + {136.8628692627, 35.181655883789}, + {136.5209197998, 34.879531860352}, + {136.47560119629, 34.878158569336}, + {136.67747497559, 35.053939819336}, + {136.66511535645, 35.014114379883}, + {136.62803649902, 34.968795776367}, + {6.9481658935547, 50.942916870117}, + {7.4878692626953, 51.501846313477}, + {7.000809, 51.508255}, + {7.2956085205078, 51.462020874023}, + {7.223339, 51.444168}, + {11.709365844727, 52.956161499023}, + {11.817855834961, 53.112716674805}, + {10.134201049805, 54.369277954102}, + {10.586013793945, 51.73942565918}, + {7.4315643310547, 52.416458129883}, + {13.36555480957, 51.36589050293}, + {10.851019, 51.846704}, + {11.878281, 50.976563}, + {-0.564148, 50.812454}, + {-2.020042, 52.604959}, + {-3.179854, 55.028973}, + {-2.745895, 53.337936}, + {-2.288933, 53.481789}, + {-2.122828, 53.320048}, + {-2.992172, 53.401006}, + {-2.469177, 53.577576}, + {-1.900014, 52.476517}, + {-2.120972, 53.543472}, + {-3.425949, 51.707565}, + {-2.0249176025391, 51.922073364258}, + {-0.610511, 51.238025}, + {-2.192882, 51.983555}, + {-0.76148986816406, 50.842666625977}, + {0.070726, 50.886154}, + {0.87272644042969, 51.269760131836}, + {-1.147782, 52.627689}, + {-0.77095, 53.065109}, + {-1.463471, 52.944489}, + {-0.139389, 51.891556}, + {-0.797882, 52.005158}, + {-80.042604, 32.999406}, + {-79.85503, 32.84735}, + {-80.706253051758, 32.643814086914}, + {-78.817597, 33.779224}, + {-79.002988, 33.665323}, + {-80.20637512207, 33.89762878418}, + {-79.87678527832, 34.567794799805}, + {-87.784144, 35.787177}, + {-86.490784, 36.366348}, + {-86.708908081055, 36.236343383789}, + {-86.785936, 36.02032}, + {-86.769333, 36.164169}, + {-86.762466430664, 36.093521118164}, + {-85.87532043457, 35.243453979492}, + {-85.152145, 34.903152}, + {-85.097842, 35.025787}, + {-83.525963, 35.734062}, + {-83.874435, 36.042709}, + {-82.420539, 36.372349}, + {-83.375931, 35.940566}, + {-83.925247, 35.952415}, + {-86.789932250977, 33.495254516602}, + {-86.968093, 34.612139}, + {-85.970077514648, 32.932205200195}, + {-89.812545776367, 43.58757019043}, + {-87.941438, 42.567444}, + {-88.587828, 42.98574}, + {-87.968215942383, 43.230514526367}, + {-89.269194, 43.10301}, + {-82.133102416992, 39.838485717773}, + {-91.902199, 44.887335}, + {-89.995193, 46.139755}, + {-95.35025, 48.904301}, + {-93.321186, 44.82622}, + {-93.083815, 44.901577}, + {-94.108200073242, 43.547744750977}, + {-92.926007, 44.903607}, + {-93.350442, 44.853376}, + {-92.070236206055, 46.814804077148}, + {-92.55500793457, 46.802444458008}, + {-93.216894, 44.998251}, + {-92.586925, 44.35792}, + {-94.232954, 45.768661}, + {-90.563863, 41.561771}, + {-90.190613, 41.622528}, + {-93.593197, 41.640835}, + {5.29747, 60.342064}, + {10.764541625977, 59.948959350586}, + {10.629959106445, 59.914627075195}, + {10.484390258789, 59.410629272461}, + {10.903244018555, 59.939346313477}, + {10.766602, 59.92424}, + {10.83869934082, 59.872055053711}, + {8.3763885498047, 58.250198364258}, + {7.4068450927734, 58.046951293945}, + {7.8504180908203, 58.298263549805}, + {8.0962371826172, 58.200759887695}, + {8.5590362548828, 62.673568725586}, + {5.7671356201172, 58.975296020508}, + {5.635273, 58.858572}, + {11.241513, 60.772938}, + {10.05729675293, 60.851211547852}, + {10.510482788086, 59.70588684082}, + {10.22985, 59.74335}, + {14.732437, 67.303848}, + {12.225723266602, 44.153366088867}, + {12.107620239258, 44.314041137695}, + {12.40837097168, 44.197311401367}, + {12.206497192383, 44.41291809082}, + {12.258682250977, 44.481582641602}, + {11.879653930664, 45.57746887207}, + {11.843948364258, 45.371475219727}, + {11.824722, 45.393105}, + {11.715546, 45.740891}, + {11.714858, 45.626908}, + {11.975784301758, 45.309677124023}, + {11.642074584961, 45.685958862305}, + {12.049029, 45.205994}, + {11.908493041992, 45.346755981445}, + {11.515731811523, 45.554122924805}, + {11.334183, 45.529953}, + {12.339706420898, 45.375595092773}, + {12.227554, 45.478592}, + {12.00325012207, 45.858993530273}, + {12.538833618164, 45.654373168945}, + {6.5073394775391, 58.483657836914}, + {11.040573120117, 59.953079223633}, + {10.92659, 59.977646}, + {10.463790893555, 59.387283325195}, + {10.726089477539, 59.450454711914}, + {11.385269165039, 59.13459777832}, + {10.055237, 62.868576}, + {10.065536499023, 63.244857788086}, + {10.406112670898, 63.400039672852}, + {10.73844909668, 63.431625366211}, + {4.757309, 61.000443}, + {7.054752, 60.468572}, + {10.737075805664, 59.921493530273}, + {10.726089477539, 59.922866821289}, + {10.710983276367, 59.921493530273}, + {11.057052612305, 59.976425170898}, + {5.346588, 60.390928}, + {-76.961838, 18.007553}, + {-77.127456665039, 18.415145874023}, + {-76.78825378418, 18.005905151367}, + {-77.928085327148, 18.461837768555}, + {-77.871780395508, 18.519515991211}, + {-61.051712, 14.594994}, + {-61.694412231445, 16.330490112305}, + {-61.565323, 16.105728}, + {-61.490479, 16.262512}, + {-61.783676, 16.215945}, + {-61.521063, 16.26091}, + {-61.057205200195, 14.616622924805}, + {-61.083478, 14.611062}, + {-59.58366394043, 13.085403442383}, + {-59.637222290039, 13.208999633789}, + {-59.596372, 13.091544}, + {12.972794, 55.600662}, + {13.005935, 55.614853}, + {18.069076538086, 59.504013061523}, + {18.117233, 59.350662}, + {18.103408813477, 59.302139282227}, + {11.978530883789, 57.688522338867}, + {12.023849487305, 57.736587524414}, + {15.567398, 56.209335}, + {17.975692749023, 59.391403198242}, + {18.006267, 59.343536}, + {11.892013549805, 57.722854614258}, + {12.210369, 57.315308}, + {13.17654, 55.69725}, + {13.151446, 55.689742}, + {13.163431, 55.639572}, + {13.128433, 55.791206}, + {13.129623, 55.772644}, + {18.114917, 59.261616}, + {13.003005981445, 55.463790893555}, + {1.935893, 49.001319}, + {1.960373, 48.988724}, + {2.1842193603516, 49.047775268555}, + {1.7543792724609, 48.977737426758}, + {2.311478, 48.979111}, + {1.7090606689453, 48.990097045898}, + {4.32827, 43.725929}, + {4.0395355224609, 44.10530090332}, + {2.8502655029297, 42.694931030273}, + {2.8104400634766, 43.27995300293}, + {2.8392791748047, 42.678451538086}, + {3.415793, 43.61901}, + {4.1905975341797, 43.991317749023}, + {3.7703704833984, 43.528518676758}, + {3.1386566162109, 43.237380981445}, + {3.4490203857422, 43.547744750977}, + {0.094070434570312, 46.746139526367}, + {1.583679, 45.302948}, + {1.406874, 45.970105}, + {1.469462, 45.245456}, + {-72.457176, 41.537247}, + {-72.436294555664, 41.307907104492}, + {-73.651657104492, 41.020889282227}, + {-71.070557, 41.85004}, + {-71.993408, 42.312475}, + {-72.622081, 42.423608}, + {-71.063003540039, 42.079696655273}, + {-71.10969543457, 42.35710144043}, + {-71.165258, 42.350489}, + {-71.144027709961, 42.326889038086}, + {-71.098432, 42.340372}, + {-70.676718, 42.577024}, + {-71.068496704102, 42.373580932617}, + {-71.201705932617, 42.53288269043}, + {-71.366043, 42.05864}, + {-71.622208, 42.251358}, + {-71.979538, 42.604019}, + {-71.569747924805, 42.280197143555}, + {-71.23436, 42.205277}, + {-71.305389, 42.299423}, + {26.980116, 38.792204}, + {27.995223999023, 38.255081176758}, + {27.031173706055, 38.514633178711}, + {27.160263061523, 38.39241027832}, + {27.039413452148, 38.396530151367}, + {27.146530151367, 38.290786743164}, + {27.089869, 38.467126}, + {27.12043762207, 38.32649230957}, + {27.113207, 38.471574}, + {27.044906616211, 38.520126342773}, + {27.142413, 38.432198}, + {27.397842407227, 38.459701538086}, + {27.195086, 38.448878}, + {27.107264, 38.401342}, + {27.259140014648, 38.433609008789}, + {27.231674194336, 38.426742553711}, + {35.452194213867, 38.726119995117}, + {34.262924194336, 39.087295532227}, + {29.408340454102, 40.825881958008}, + {29.425735, 40.834122}, + {29.946670532227, 40.722885131836}, + {30.055847, 40.764771}, + {32.499618530273, 37.866439819336}, + {31.937942504883, 38.285293579102}, + {121.67427062988, 25.085220336914}, + {121.52458190918, 23.889083862305}, + {121.78413391113, 24.728164672852}, + {121.59187316895, 23.974227905273}, + {121.613159, 24.104004}, + {120.69511413574, 24.291458129883}, + {120.666593, 23.954927}, + {120.70610046387, 24.218673706055}, + {120.77339172363, 24.274978637695}, + {120.598297, 24.280472}, + {120.609283, 24.156876}, + {120.69786071777, 24.189834594727}, + {120.90814, 23.97622}, + {120.73905944824, 24.36149597168}, + {120.80909729004, 24.621047973633}, + {120.40672302246, 23.625411987305}, + {120.38887023926, 23.733901977539}, + {120.88600158691, 24.688339233398}, + {120.4712677002, 23.735275268555}, + {120.672768, 24.170214}, + {120.7006072998, 24.117050170898}, + {120.57838439941, 24.103317260742}, + {120.475388, 24.051132}, + {120.45890808105, 23.124160766602}, + {77.2435, 28.503342}, + {77.110825, 28.688126}, + {77.076988, 28.587112}, + {77.50373840332, 28.456649780273}, + {77.163162231445, 28.653030395508}, + {77.312850952148, 28.603591918945}, + {77.151932, 28.628311}, + {77.35954284668, 28.632431030273}, + {77.29749, 28.51254}, + {77.198867797852, 28.552780151367}, + {77.143936157227, 28.577499389648}, + {77.128643, 28.737488}, + {77.247718, 28.542186}, + {77.164535522461, 28.650283813477}, + {77.199185, 28.602324}, + {77.32933, 28.699036}, + {77.362289428711, 28.606338500977}, + {77.354895, 28.57338}, + {77.067031860352, 28.312454223633}, + {77.164535522461, 28.436050415039}, + {77.155609, 28.705804}, + {77.494125366211, 28.453903198242}, + {139.96238708496, 36.848831176758}, + {139.844971, 36.625671}, + {139.907455, 36.499329}, + {139.53941345215, 36.369552612305}, + {139.9129486084, 36.435470581055}, + {139.18785095215, 36.328353881836}, + {139.40757751465, 36.251449584961}, + {138.99971008301, 36.401138305664}, + {139.05464172363, 36.302261352539}, + {139.00108337402, 36.329727172852}, + {138.55201721191, 36.579666137695}, + {138.98597717285, 36.501388549805}, + {139.13841247559, 36.431350708008}, + {138.22380065918, 37.079544067383}, + {137.722549, 35.451164}, + {140.394058, 36.379623}, + {140.623627, 36.370926}, + {140.39085388184, 36.438217163086}, + {140.07637023926, 36.95182800293}, + {139.94728088379, 36.79801940918}, + {139.95964050293, 36.733474731445}, + {138.337784, 36.391631}, + {138.42567443848, 35.772171020508}, + {138.622971, 35.590897}, + {82.982254, 54.90303}, + {104.263457, 52.263086}, + {97.897109985352, 56.00212097168}, + {49.458389282227, 53.510971069336}, + {60.209884643555, 57.42073059082}, + {55.652603, 55.477526}, + {58.210372924805, 52.604598999023}, + {103.65669250488, 50.432052612305}, + {104.24034118652, 50.448532104492}, + {30.699234008789, 61.697158813477}, + {30.151290893555, 61.50764465332}, + {34.109716, 62.767736}, + {45.170974731445, 54.193496704102}, + {129.8494720459, 62.072067260742}, + {50.64079284668, 55.322341918945}, + {48.805931, 55.80128}, + {52.291488647461, 54.895248413086}, + {51.931686401367, 55.049057006836}, + {-3.0329132080078, 51.571884155273}, + {-2.19548, 52.027817}, + {-0.780716, 50.74585}, + {-0.17784118652344, 50.830307006836}, + {-0.18608093261719, 51.456527709961}, + {-0.341263, 51.036575}, + {-0.164403, 51.134393}, + {-0.637207, 51.327095}, + {-0.686545, 51.360912}, + {-0.34538269042969, 51.390609741211}, + {-0.82878112792969, 51.29997253418}, + {-4.2812347412109, 55.830459594727}, + {-2.9271697998047, 55.925216674805}, + {-3.6316680908203, 55.429458618164}, + {-3.076309, 55.860672}, + {-2.805405, 55.615311}, + {-4.3828582763672, 55.881271362305}, + {-2.4822235107422, 55.976028442383}, + {-3.413315, 55.971222}, + {-2.9875946044922, 56.452560424805}, + {-1.08696, 51.749039}, + {18.629228, 51.028999}, + {17.970458, 54.208678}, + {22.452621, 54.027329}, + {21.897811889648, 54.170150756836}, + {20.082321166992, 53.23356628418}, + {15.241470336914, 52.729568481445}, + {16.560517, 51.92894}, + {16.89079284668, 52.386245727539}, + {17.323379516602, 52.312088012695}, + {17.332992553711, 51.147537231445}, + {37.553329467773, 55.915603637695}, + {37.584487, 55.75753}, + {37.660789, 55.728836}, + {37.607907, 55.773141}, + {37.654461, 55.756791}, + {37.621307, 55.728836}, + {37.643966674805, 55.754928588867}, + {37.223968, 55.990334}, + {60.72096, 56.732403}, + {60.637727, 56.83858}, + {60.612259, 56.867752}, + {60.586166381836, 56.824722290039}, + {60.785293579102, 56.934585571289}, + {60.588912963867, 56.821975708008}, + {60.608139038086, 56.751937866211}, + {60.960388, 56.771164}, + {60.638004, 56.814177}, + {60.65181, 56.784622}, + {53.241806030273, 56.92497253418}, + {53.337936401367, 56.609115600586}, + {45.096817016602, 32.881393432617}, + {44.327088, 32.007294}, + {44.040756, 32.609024}, + {44.629898071289, 34.885025024414}, + {44.437637329102, 33.362045288086}, + {44.447250366211, 33.39225769043}, + {44.365638, 33.378525}, + {44.365768, 33.104324}, + {44.212418, 33.25922}, + {44.409828, 33.395004}, + {44.395068, 33.17116}, + {45.820541381836, 32.485885620117}, + {44.337387084961, 31.988754272461}, + {44.337387084961, 32.028579711914}, + {45.35774230957, 31.258163452148}, + {46.528473, 30.668335}, + {44.401932, 32.410355}, + {44.415664672852, 32.727584838867}, + {44.025650024414, 36.158065795898}, + {45.441513061523, 35.556564331055}, + {42.961599, 36.866809}, + {44.075088500977, 36.265182495117}, + {44.006423950195, 36.175918579102}, + {44.529828, 36.652349}, + {-5.5817413330078, 54.34455871582}, + {-4.303412, 56.143913}, + {-4.820439, 55.961734}, + {-0.328731, 53.012123}, + {-1.3286590576172, 53.055038452148}, + {0.496025, 52.914581}, + {-0.969086, 51.980057}, + {-2.0345306396484, 52.820205688477}, + {-2.4108123779297, 53.642807006836}, + {-2.0977020263672, 57.148818969727}, + {-1.3314056396484, 53.589248657227}, + {-0.096817016601562, 51.628189086914}, + {-0.15724182128906, 51.626815795898}, + {-0.135394, 51.514248}, + {-0.11604309082031, 51.688613891602}, + {0.78758239746094, 51.755905151367}, + {-0.71342468261719, 51.994857788086}, + {40.578689575195, 21.208419799805}, + {39.271188, 22.178511}, + {40.42350769043, 21.256484985352}, + {40.430374145508, 21.272964477539}, + {40.437240600586, 21.257858276367}, + {40.422134399414, 21.327896118164}, + {39.827499389648, 21.424026489258}, + {39.875564575195, 21.406173706055}, + {39.687423706055, 21.367721557617}, + {39.804153442383, 21.367721557617}, + {39.795913696289, 21.413040161133}, + {39.812393188477, 21.411666870117}, + {40.411148071289, 21.201553344727}, + {36.044962, 26.980703}, + {36.579666137695, 28.389358520508}, + {37.737350463867, 28.687362670898}, + {37.807388305664, 24.972610473633}, + {50.084609985352, 26.433792114258}, + {44.813919067383, 20.457229614258}, + {50.065383911133, 26.367874145508}, + {46.162490844727, 25.148391723633}, + {46.574478149414, 24.80094909668}, + {39.16145324707, 21.565475463867}, + {45.96061706543, 28.425064086914}, + {46.733779907227, 24.592208862305}, + {6.641922, 46.549072}, + {7.014359, 46.346512}, + {6.60553, 46.554337}, + {6.603356, 46.65802}, + {6.9907379150391, 47.011184692383}, + {6.2326812744141, 46.595077514648}, + {8.8089752197266, 47.531661987305}, + {9.3679046630859, 47.42317199707}, + {8.901672, 47.555695}, + {8.723831, 47.300263}, + {8.5974884033203, 47.349014282227}, + {8.4656524658203, 47.222671508789}, + {8.4285736083984, 47.412185668945}, + {7.578964, 47.207565}, + {7.472763, 46.922608}, + {7.4562835693359, 47.01530456543}, + {7.739868, 47.291336}, + {7.627659, 47.527943}, + {8.189621, 47.295456}, + {8.3063507080078, 47.046890258789}, + {-69.158248901367, 10.097122192383}, + {-68.32878112793, 10.800247192383}, + {-67.978591918945, 10.272903442383}, + {-66.715164, 10.260544}, + {-66.713790893555, 10.260543823242}, + {-66.824338, 10.480235}, + {-66.99851, 10.345092}, + {-66.825714, 10.495377}, + {-66.83464050293, 10.494003295898}, + {-66.85661315918, 10.492630004883}, + {-66.861899, 10.4338}, + {-71.627426147461, 10.598373413086}, + {-66.879959106445, 10.503616333008}, + {-66.882705688477, 10.495376586914}, + {-66.892624, 10.515366}, + {-66.874465942383, 10.495376586914}, + {-66.908388, 10.484264}, + {-66.807174682617, 10.481643676758}, + {-67.017288208008, 10.605239868164}, + {9.364243, 48.684769}, + {7.7323150634766, 48.09196472168}, + {8.714218, 48.095535}, + {8.7883758544922, 48.881607055664}, + {8.847084, 48.558197}, + {9.1193389892578, 48.818435668945}, + {9.0987396240234, 48.687973022461}, + {9.156761, 48.775864}, + {9.162362, 48.779915}, + {9.557419, 48.803673}, + {9.6686553955078, 52.415084838867}, + {9.761124, 52.339783}, + {9.735947, 52.44976}, + {101.04331970215, 15.741348266602}, + {100.17402648926, 14.023361206055}, + {98.33726, 8.026385}, + {98.302656, 7.912183}, + {98.33381652832, 8.0316925048828}, + {100.63545227051, 6.9866180419922}, + {102.1378326416, 13.796768188477}, + {102.552471, 13.65893}, + {100.70274353027, 13.619613647461}, + {100.618408, 13.620446}, + {100.67665100098, 13.610000610352}, + {100.63682556152, 13.678665161133}, + {100.65605163574, 13.522109985352}, + {100.53932189941, 13.67317199707}, + {102.14744567871, 16.698532104492}, + {98.994369506836, 18.784561157227}, + {102.5154876709, 17.677688598633}, + {99.359598, 18.007054}, + {99.318466186523, 17.861709594727}, + {99.363784790039, 18.317642211914}, + {98.340682983398, 7.8202056884766}, + {98.392326, 7.87603}, + {98.388176, 7.900748}, + {98.427200317383, 7.8820037841797}, + {-89.500749, 43.047837}, + {-89.402232, 43.075762}, + {-88.442001342773, 42.637252807617}, + {-88.582077026367, 43.98307800293}, + {-88.483778, 43.78469}, + {-88.452072, 43.525772}, + {-88.286514, 42.876205}, + {-88.122024, 42.905241}, + {-88.073175, 43.147332}, + {-88.020401, 43.13324}, + {-87.908766, 42.564823}, + {-97.416458, 35.690735}, + {-98.175888, 34.843826}, + {-91.525236, 40.143553}, + {-92.11555480957, 38.542098999023}, + {-92.564621, 39.737778}, + {-92.192116, 38.958206}, + {-71.469497680664, 43.56559753418}, + {-83.930283, 36.039734}, + {-72.44545, 43.204575}, + {-79.206603, 37.07955}, + {-122.149429, 42.433319}, + {-123.809395, 43.665504}, + {-80.012741088867, 38.965072631836}, + {-80.104451, 39.686967}, + {8.8323211669922, 47.826919555664}, + {31.468335, 30.031343}, + {31.39274597168, 30.049667358398}, + {31.28288269043, 30.067520141602}, + {31.315841674805, 30.094985961914}, + {32.808609008789, 25.947647094727}, + {31.328201293945, 29.983749389648}, + {31.530075073242, 30.171890258789}, + {31.237564086914, 29.972763061523}, + {30.950546264648, 30.045547485352}, + {31.203231811523, 30.015335083008}, + {31.10710144043, 29.997482299805}, + {31.23893737793, 30.055160522461}, + {31.212844848633, 30.107345581055}, + {29.817581176758, 31.065902709961}, + {30.005722045898, 31.263656616211}, + {29.916973, 31.196672}, + {29.018325805664, 30.826950073242}, + {28.949661254883, 30.778884887695}, + {30.009841918945, 31.166152954102}, + {29.912338256836, 31.148300170898}, + {28.533554077148, 31.021957397461}, + {33.911361694336, 27.005081176758}, + {31.00959777832, 27.938919067383}, + {-74.924697875977, 10.638198852539}, + {-74.839553833008, 11.013107299805}, + {-75.912094116211, 8.7499237060547}, + {-74.063644, 4.729614}, + {-74.209142, 11.192992}, + {-74.798355, 10.953598}, + {-75.185623168945, 10.792007446289}, + {-74.785995483398, 10.951309204102}, + {-75.538558959961, 10.434951782227}, + {-75.537491, 10.417709}, + {-72.499465942383, 7.8874969482422}, + {-75.561562, 6.301174}, + {-75.587357, 6.170277}, + {-75.593353, 6.245865}, + {-75.583191, 6.213455}, + {-75.663528, 4.553146}, + {-77.636947631836, 0.82603454589844}, + {-78.754806518555, 1.8175506591797}, + {-73.787612915039, 5.3290557861328}, + {-74.024397, 4.673562}, + {-74.108505, 4.678116}, + {-74.126633, 4.576859}, + {-74.109787, 4.590775}, + {76.30485534668, 9.8705291748047}, + {76.582260131836, 9.3679046630859}, + {76.130447387695, 11.165542602539}, + {76.946732, 8.488998}, + {76.644058227539, 9.2552947998047}, + {76.049423217773, 10.526962280273}, + {75.905227661133, 10.943069458008}, + {76.615219116211, 9.3871307373047}, + {76.543807983398, 9.4297027587891}, + {76.473770141602, 9.2580413818359}, + {75.776596, 11.443863}, + {76.078262, 11.685333}, + {76.460037231445, 10.116348266602}, + {76.63444519043, 10.055923461914}, + {76.400985717773, 9.9433135986328}, + {76.291122436523, 10.153427124023}, + {76.404648, 10.044022}, + {76.534194946289, 9.2017364501953}, + {76.589126586914, 9.9941253662109}, + {76.617965698242, 8.9202117919922}, + {76.655044555664, 9.2786407470703}, + {101.09413146973, 16.374435424805}, + {99.95979309082, 17.269821166992}, + {99.538192749023, 18.349227905273}, + {100.26054382324, 16.962203979492}, + {99.926834106445, 19.030380249023}, + {99.209976196289, 16.888046264648}, + {99.779891967773, 16.186294555664}, + {99.841690063477, 16.491165161133}, + {99.501113891602, 16.474685668945}, + {100.96641540527, 14.370803833008}, + {100.88401794434, 14.379043579102}, + {100.87852478027, 14.365310668945}, + {100.61897277832, 14.126358032227}, + {100.5997467041, 14.170303344727}, + {100.52833557129, 14.277420043945}, + {100.72746276855, 14.565811157227}, + {100.535889, 14.671555}, + {99.720840454102, 13.511123657227}, + {99.966578, 12.766183}, + {99.856796264648, 13.84895324707}, + {100.03532409668, 13.421859741211}, + {99.924087524414, 13.114242553711}, + {102.13371276855, 13.592147827148}, + {102.17353820801, 13.516616821289}, + {100.30860900879, 5.4402923583984}, + {100.46946, 5.622641}, + {100.522142, 5.665737}, + {100.39924621582, 5.4004669189453}, + {100.47752380371, 5.5364227294922}, + {100.42121887207, 5.4801177978516}, + {100.45967102051, 5.4032135009766}, + {100.30723571777, 5.3372955322266}, + {100.31135559082, 5.3798675537109}, + {100.420524, 6.255736}, + {100.29899597168, 6.3961029052734}, + {100.21797180176, 6.4249420166016}, + {101.03370666504, 4.0120697021484}, + {101.15592956543, 4.3045806884766}, + {101.319874, 3.989946}, + {100.298996, 5.464325}, + {100.308552, 5.34379}, + {100.31272888184, 5.4306793212891}, + {100.39871, 5.400944}, + {101.95381164551, 4.8690032958984}, + {102.04032897949, 3.4105682373047}, + {102.55393981934, 3.5630035400391}, + {102.55393981934, 5.6847381591797}, + {103.12385559082, 5.3331756591797}, + {7.079819, 43.574936}, + {2.583115, 44.370346}, + {5.183487, 43.356269}, + {0.57746887207031, 45.158615112305}, + {1.3314056396484, 45.162734985352}, + {1.431656, 48.441742}, + {4.4680023193359, 44.21516418457}, + {-1.7131805419922, 48.166122436523}, + {-1.7406463623047, 48.100204467773}, + {5.4155731201172, 45.691452026367}, + {-1.534507, 43.465391}, + {-1.068372, 43.720651}, + {4.148257, 45.809098}, + {5.3716278076172, 49.216690063477}, + {6.108313, 49.318571}, + {1.8862152099609, 50.971755981445}, + {120.591921, 16.408572}, + {120.600357, 15.926056}, + {125.12397766113, 6.2230682373047}, + {124.636429, 8.489521}, + {126.186218, 9.079514}, + {123.26728820801, 9.2910003662109}, + {121.04530334473, 14.472427368164}, + {125.70350646973, 7.3038482666016}, + {121.07276916504, 14.668807983398}, + {121.16340637207, 14.623489379883}, + {121.147614, 14.557571}, + {121.007675, 14.637222}, + {121.039352, 14.580917}, + {120.995767, 14.553452}, + {121.029053, 14.569931}, + {121.02058410645, 14.556198120117}, + {121.04805, 14.544296}, + {121.101608, 14.615642}, + {120.93406677246, 14.620742797852}, + {121.085129, 15.467377}, + {120.666273, 15.56694}, + {120.34767150879, 15.948715209961}, + {120.577009, 15.231859}, + {-63.302439, 45.373108}, + {-97.275, 49.878632}, + {-97.217054, 49.89503}, + {-71.299553, 46.847763}, + {-71.95538, 45.343846}, + {-69.115153, 47.688244}, + {-66.632174, 45.934922}, + {-72.675245, 46.639513}, + {-71.94345, 46.319883}, + {-72.08092, 45.60413}, + {-73.881311, 45.559731}, + {-73.834486, 45.461631}, + {-73.556851, 45.372898}, + {-73.806838989258, 45.604934692383}, + {-73.26519, 45.215149}, + {-73.592358, 45.485025}, + {-73.489495, 45.649888}, + {-73.535354, 45.512005}, + {-73.654017, 45.463558}, + {-76.204161, 45.423622}, + {-79.950942993164, 46.483840942383}, + {18.505783081055, -33.889389038086}, + {28.090005, -26.377166}, + {27.851028442383, -26.694717407227}, + {30.395157, -29.59581}, + {30.384750366211, -29.593734741211}, + {28.057022094727, -26.137161254883}, + {28.084487915039, -26.123428344727}, + {28.141537, -26.023323}, + {28.161392211914, -26.127548217773}, + {28.222065, -26.152586}, + {28.249526, -26.254203}, + {30.994491577148, -29.812088012695}, + {31.034676, -29.845769}, + {18.853225708008, -34.08576965332}, + {18.574447631836, -33.632583618164}, + {18.679504, -33.927155}, + {18.423118, -33.938894}, + {27.868881225586, -26.093215942383}, + {27.90287, -26.259728}, + {28.00895690918, -26.248397827148}, + {27.960631, -25.947855}, + {28.263435, -25.741677}, + {28.041915893555, -25.666122436523}, + {-58.424606323242, -34.628219604492}, + {-58.446578979492, -34.563674926758}, + {-58.555068969727, -34.761428833008}, + {-58.675918579102, -34.875411987305}, + {-58.37581, -34.662312}, + {-58.358296, -34.638617}, + {-58.517990112305, -34.516983032227}, + {-58.391451, -34.583882}, + {-58.820114135742, -34.602127075195}, + {-58.526229858398, -34.852066040039}, + {-57.942843, -34.908039}, + {-58.546829223633, -34.676284790039}, + {-58.444692, -34.752645}, + {-58.472671508789, -34.537582397461}, + {-58.429413, -34.636459}, + {-58.378067, -34.615707}, + {-58.240585327148, -34.79850769043}, + {-58.730850219727, -34.453811645508}, + {101.20399475098, 17.24235534668}, + {103.07716369629, 18.02375793457}, + {103.097763, 15.68985}, + {103.425977, 15.875204}, + {104.08790588379, 17.190170288086}, + {104.24995422363, 17.808151245117}, + {98.894119262695, 18.817520141602}, + {98.964157104492, 18.805160522461}, + {99.037338, 18.793645}, + {98.993786, 18.784652}, + {99.09049987793, 18.747482299805}, + {99.02092, 18.761215}, + {98.994492, 18.798152}, + {99.00260925293, 18.810653686523}, + {99.057540893555, 18.546981811523}, + {99.049301147461, 18.55110168457}, + {99.042434692383, 18.581314086914}, + {100.088982, 17.613372}, + {100.114818, 18.054671}, + {99.904861450195, 19.164962768555}, + {99.840408, 19.865658}, + {100.09574890137, 15.634231567383}, + {100.05592346191, 15.730361938477}, + {99.378204, 16.610641}, + {100.2742767334, 16.813888549805}, + {4.71611, 44.006424}, + {2.935635, 43.434832}, + {6.5746307373047, 49.198837280273}, + {-1.400144, 47.521312}, + {2.3572540283203, 47.316055297852}, + {-0.717545, 44.893227}, + {2.402287, 48.929059}, + {2.287216, 48.979111}, + {106.21650695801, 20.937881469727}, + {107.04322814941, 11.096878051758}, + {106.756554, 10.850029}, + {106.808395, 10.840759}, + {106.617966, 10.79567}, + {105.926056, 10.16098}, + {105.34034729004, 10.470657348633}, + {104.9242401123, 10.18913269043}, + {106.65596008301, 10.601119995117}, + {108.24417, 16.091538}, + {108.13499450684, 16.149215698242}, + {108.79692077637, 15.126113891602}, + {105.04508972168, 21.492691040039}, + {103.97666931152, 22.477340698242}, + {107.48954772949, 10.857925415039}, + {107.1036529541, 10.370407104492}, + {105.28541564941, 9.7757720947266}, + {106.67381286621, 10.779647827148}, + {105.96794128418, 10.256423950195}, + {106.784461, 10.868127}, + {106.6902923584, 10.987014770508}, + {105.83885192871, 9.2813873291016}, + {-8.012466, 31.630783}, + {-5.537109, 33.871536}, + {-5.7630157470703, 35.77766418457}, + {-3.9859771728516, 5.2974700927734}, + {9.3981170654297, 0.49232482910156}, + {36.75407409668, -1.2531280517578}, + {36.760940551758, -1.2888336181641}, + {28.334426879883, -15.407638549805}, + {31.043930053711, -17.834243774414}, + {17.082443, -22.568972}, + {18.427505493164, -33.918228149414}, + {28.054275512695, -26.123428344727}, + {28.073501586914, -26.168746948242}, + {27.94303894043, -26.080856323242}, + {27.694473266602, -26.220932006836}, + {27.822189331055, -26.248397827148}, + {28.041915893555, -26.203079223633}, + {28.149032592773, -26.278610229492}, + {28.243789672852, -25.932540893555}, + {28.019943237305, -25.880355834961}, + {28.186111450195, -25.755386352539}, + {44.793882, 41.7051}, + {44.379959106445, 35.434341430664}, + {44.385452270508, 35.445327758789}, + {45.876846313477, 35.496139526367}, + {44.374465942383, 33.28239440918}, + {44.353866577148, 33.322219848633}, + {46.244888305664, 31.034317016602}, + {44.26872253418, 33.353805541992}, + {47.965621948242, 29.302597045898}, + {48.003044, 29.277191}, + {48.002700805664, 29.294357299805}, + {47.988968, 29.300537}, + {48.248519897461, 28.84391784668}, + {47.907943725586, 29.268264770508}, + {48.083724975586, 29.334182739258}, + {40.297164916992, 21.362228393555}, + {46.600570678711, 24.582595825195}, + {46.890335083008, 24.531784057617}, + {46.967239, 24.472275}, + {46.737899780273, 24.590835571289}, + {46.801073, 24.898458}, + {113.70506286621, -8.1745147705078}, + {113.22175, -8.136063}, + {112.652227, -7.945237}, + {112.578016, -7.902586}, + {108.99192810059, 0.90019226074219}, + {109.259499, 0.027357}, + {116.74140930176, -1.2957000732422}, + {117.21244812012, -0.86311340332031}, + {117.131744, -0.48288}, + {114.8641204834, -3.4284210205078}, + {115.23078918457, -8.8007354736328}, + {115.0316619873, -8.1539154052734}, + {115.190025, -8.645272}, + {115.21018981934, -8.6894989013672}, + {115.249462, -8.650126}, + {115.186413, -8.636686}, + {115.170421, -8.686652}, + {119.563016, -5.051675}, + {119.5044708252, -5.1354217529297}, + {119.499271, -5.126117}, + {119.550808, -4.830135}, + {124.834102, 1.485113}, + {106.54472351074, -6.2532806396484}, + {-97.681503295898, 30.445175170898}, + {-97.789993286133, 30.192489624023}, + {-73.687362670898, 40.83137512207}, + {-73.71208190918, 40.77507019043}, + {-76.61247253418, 39.352340698242}, + {-73.905715942383, 40.59928894043}, + {-74.05037, 40.664749}, + {-73.974380493164, 40.761337280273}, + {-73.957901000977, 40.773696899414}, + {-73.982620239258, 40.72151184082}, + {-73.81233215332, 41.23649597168}, + {-73.889236450195, 40.834121704102}, + {-76.448361, 37.078516}, + {-88.10417175293, 42.189559936523}, + {-87.524642944336, 41.695175170898}, + {-88.109664916992, 41.655349731445}, + {-87.685317993164, 42.019271850586}, + {-88.260726928711, 42.064590454102}, + {-87.652359008789, 41.704788208008}, + {-72.693099975586, 41.769332885742}, + {-74.121322631836, 40.847854614258}, + {-73.964767456055, 40.814895629883}, + {-75.16571, 39.953842}, + {-78.614914, 35.838089}, + {-78.714981079102, 35.773544311523}, + {-4.4460296630859, 55.862045288086}, + {-4.4899749755859, 55.603866577148}, + {-1.9603729248047, 52.615585327148}, + {-1.8848419189453, 52.36701965332}, + {-2.3394012451172, 53.358535766602}, + {-2.241338, 53.468976}, + {-1.86951, 52.477748}, + {-2.7651214599609, 51.462020874023}, + {-2.152176, 53.60405}, + {-2.4341583251953, 53.762283325195}, + {-2.894977, 53.468399}, + {-2.530468, 53.557036}, + {-4.048973, 55.782853}, + {-2.3709869384766, 53.184127807617}, + {-2.751748, 53.324304}, + {-0.187351, 51.523592}, + {-2.4327850341797, 53.542556762695}, + {-0.15174865722656, 51.536178588867}, + {0.303266, 51.501805}, + {-0.221838, 51.578841}, + {0.010275, 51.545979}, + {11.807508, 53.3478}, + {12.229552, 54.102926}, + {14.018555, 53.637314}, + {13.487091, 52.453537}, + {13.038711547852, 50.863265991211}, + {12.358932495117, 51.335678100586}, + {9.2305755615234, 49.113693237305}, + {6.7147064208984, 51.239547729492}, + {6.585068, 51.337051}, + {7.3148345947266, 49.70832824707}, + {9.170609, 48.808823}, + {11.743698120117, 48.378982543945}, + {13.405380249023, 52.526321411133}, + {8.49305, 50.0476}, + {8.6029815673828, 50.132675170898}, + {13.371391, 52.465897}, + {8.4477996826172, 48.072738647461}, + {106.91413879395, 27.734298706055}, + {106.70951843262, 26.577987670898}, + {106.78642272949, 26.557388305664}, + {102.742424, 25.060501}, + {102.690353, 25.016098}, + {103.3765411377, 24.412307739258}, + {100.233736, 25.838808}, + {100.214539, 25.635223}, + {103.3861541748, 24.011306762695}, + {100.231916, 26.875886}, + {100.242691, 26.878052}, + {102.85194396973, 25.138778686523}, + {102.888186, 24.93399}, + {102.72010803223, 25.060501098633}, + {109.32838439941, 34.467544555664}, + {109.03587341309, 34.345321655273}, + {109.02900695801, 34.316482543945}, + {109.03038024902, 34.317855834961}, + {109.06883239746, 34.30549621582}, + {108.02238464355, 37.512130737305}, + {108.941803, 34.234772}, + {108.98918151855, 34.256057739258}, + {108.95347595215, 34.253311157227}, + {108.93974304199, 34.240951538086}, + {77.264454, 28.625517}, + {77.238693237305, 28.577499389648}, + {77.37291, 28.66674}, + {77.270278930664, 28.367385864258}, + {77.021027, 28.429184}, + {73.177871704102, 22.313919067383}, + {72.576370239258, 23.026657104492}, + {71.631546020508, 24.386215209961}, + {72.558517456055, 23.158493041992}, + {73.064575, 20.860977}, + {73.209457397461, 22.250747680664}, + {73.167278, 22.320786}, + {76.984634399414, 29.376754760742}, + {75.44792175293, 29.514083862305}, + {77.525711, 12.943954}, + {77.723661, 12.990646}, + {77.605911, 12.900009}, + {77.618408, 12.859497}, + {77.521591186523, 13.012619018555}, + {77.525711, 12.97142}, + {77.551117, 12.999573}, + {77.200241088867, 17.71614074707}, + {76.307602, 9.993027}, + {76.81022644043, 8.7293243408203}, + {76.58088684082, 9.4049835205078}, + {78.296554, 17.517783}, + {78.318099975586, 17.434616088867}, + {78.504867553711, 17.360458374023}, + {78.579025268555, 17.437362670898}, + {78.521347045898, 17.419509887695}, + {78.451309, 17.406954}, + {78.526978, 17.395203}, + {78.556137, 17.381744}, + {79.846572875977, 18.398666381836}, + {79.431152, 18.096542}, + {79.477157592773, 18.998794555664}, + {79.324036, 18.522949}, + {79.662551879883, 17.79167175293}, + {78.055801, 15.78392}, + {78.038635, 15.823746}, + {77.951431274414, 16.318130493164}, + {83.313103, 17.761459}, + {77.061538696289, 14.086532592773}, + {83.353958, 17.801971}, + {79.612427, 17.155838}, + {79.294509887695, 17.124252319336}, + {78.95393371582, 13.641586303711}, + {78.059922, 17.323724}, + {3.13385, 39.840546}, + {3.16887, 39.760667}, + {3.1125640869141, 39.620132446289}, + {-0.48545837402344, 38.396530151367}, + {-0.76148986816406, 38.628616333008}, + {-0.381775, 39.498596}, + {-0.39482116699219, 39.493789672852}, + {-0.34950256347656, 39.463577270508}, + {-0.522079, 39.433365}, + {-0.70381164550781, 38.26057434082}, + {-0.791977, 37.84584}, + {-0.810013, 41.011734}, + {-1.411057, 40.747606}, + {-3.005029, 43.350874}, + {-2.970086, 43.272976}, + {-2.937043, 43.262743}, + {-3.1208038330078, 43.340377807617}, + {-3.817886, 43.339554}, + {-1.7255401611328, 43.253860473633}, + {-1.983719, 43.259525}, + {-1.6706085205078, 42.508163452148}, + {-73.96614074707, 40.584182739258}, + {-73.958073, 40.617721}, + {-73.71208190918, 40.684432983398}, + {-73.96246, 40.71061}, + {-73.815537, 41.230087}, + {-73.926315307617, 40.766830444336}, + {-73.716201782227, 41.044235229492}, + {-74.608272, 41.437066}, + {-73.85627746582, 40.83137512207}, + {-74.040985, 41.067581}, + {-73.996353149414, 40.968704223633}, + {-73.951034545898, 40.802536010742}, + {-73.926315307617, 40.828628540039}, + {-73.983993530273, 40.76545715332}, + {-74.007004, 40.753979}, + {-73.983993530273, 40.76545715332}, + {-73.973007202148, 40.759963989258}, + {-73.971633911133, 40.751724243164}, + {-73.999099731445, 40.720138549805}, + {-80.335464477539, 35.76530456543}, + {-80.178909301758, 35.813369750977}, + {18.939743041992, 49.977493286133}, + {18.384771, 51.652093}, + {17.37728, 51.566735}, + {18.749925, 52.102562}, + {17.278060913086, 51.51969909668}, + {17.791719, 51.671178}, + {17.363182, 52.247738}, + {16.892715, 52.417007}, + {16.972732, 51.077957}, + {16.984177, 51.094666}, + {17.098159, 51.142594}, + {17.076187, 51.119385}, + {-43.185195922852, -22.798690795898}, + {-43.134041, -22.903748}, + {-40.382718, -20.329322}, + {-52.505519, -0.824859}, + {-42.029694, -22.892725}, + {-41.321182, -21.769638}, + {-44.719162, -23.346806}, + {-44.262955, -2.496231}, + {-44.283829, -2.656357}, + {-44.336397, -2.548064}, + {-44.035263061523, -10.719223022461}, + {-38.610763549805, -3.7429046630859}, + {-48.454307, -1.378868}, + {-97.912519, 30.303769}, + {-97.721328735352, 30.292739868164}, + {-97.621078491211, 30.434188842773}, + {-97.71858215332, 30.456161499023}, + {-97.062149047852, 27.83317565918}, + {-97.187809, 27.924863}, + {-95.075925, 29.51198}, + {-95.10383605957, 29.486618041992}, + {-95.43742, 29.209069}, + {-93.998634, 30.905602}, + {-95.923737, 31.017697}, + {-94.894187, 30.30598}, + {-95.699135, 29.537149}, + {-95.595169, 30.173713}, + {-95.725868, 29.933006}, + {-95.975367, 30.356882}, + {-95.160534, 29.537048}, + {-95.165566, 29.49096}, + {-95.391541, 29.549103}, + {-95.431372, 30.050283}, + {-95.565257, 29.831109}, + {-95.581373, 29.998399}, + {135.192918, 34.692764}, + {135.31791687012, 34.729843139648}, + {135.31929016113, 34.751815795898}, + {135.271225, 34.71199}, + {135.25611877441, 34.724349975586}, + {135.3687286377, 34.720230102539}, + {135.16136169434, 34.698257446289}, + {135.385723, 34.775162}, + {134.73152160645, 34.891891479492}, + {134.69169616699, 34.825973510742}, + {135.183678, 34.8246}, + {134.974594, 34.920273}, + {134.635391, 34.818764}, + {135.134411, 34.729328}, + {135.235519, 34.951973}, + {134.983521, 34.665298}, + {134.99244689941, 34.650192260742}, + {135.67085266113, 34.880905151367}, + {135.77796936035, 34.989395141602}, + {135.7120513916, 34.93034362793}, + {135.74144, 34.999008}, + {135.694232, 34.908438}, + {135.16548156738, 35.286026000977}, + {-43.154983520508, -22.871475219727}, + {-43.250764, -22.881472}, + {-40.305101, -20.126511}, + {-43.193713, -22.905764}, + {-43.175623, -22.907631}, + {-43.462988, -22.757954}, + {-43.403783, -22.677698}, + {-43.301193, -22.822096}, + {-40.855428, -19.774194}, + {-44.087448120117, -22.61604309082}, + {-43.800888, -22.451706}, + {-43.236007, -22.897911}, + {-43.213926, -22.917021}, + {-49.912606, -6.079845}, + {-49.404830932617, -6.1049652099609}, + {-40.307315, -20.364587}, + {-43.163223266602, -22.951126098633}, + {-43.171463012695, -22.91130065918}, + {72.840729, 19.014931}, + {72.890853881836, 19.273452758789}, + {72.844849, 19.272766}, + {75.88028, 22.739182}, + {75.850296, 22.824097}, + {77.43576, 23.302689}, + {74.849166870117, 24.463119506836}, + {77.532577514648, 23.133773803711}, + {76.972274780273, 11.006240844727}, + {76.951263, 11.026205}, + {78.447647, 9.684677}, + {77.351303100586, 10.006484985352}, + {78.081722, 9.882889}, + {78.130234, 11.677231}, + {78.274154663086, 11.665420532227}, + {77.671279907227, 11.407241821289}, + {77.726212, 11.328278}, + {79.077529907227, 10.724716186523}, + {78.776779, 11.033707}, + {79.51561, 11.99707}, + {79.762802124023, 12.202377319336}, + {79.510116577148, 11.93733215332}, + {77.428207397461, 8.1868743896484}, + {1.407021, 38.889396}, + {2.6277923583984, 39.620132446289}, + {2.494309, 39.564652}, + {3.015518, 39.529495}, + {2.8708648681641, 39.750595092773}, + {-15.44059753418, 28.100967407227}, + {-16.717758178711, 28.051528930664}, + {-13.894959, 28.412361}, + {-16.306286, 28.42103}, + {-16.298904418945, 28.442916870117}, + {-13.620987, 28.933044}, + {-16.831169, 28.301926}, + {-17.753906, 28.622131}, + {-4.492035, 43.39119}, + {-4.0464019775391, 39.865951538086}, + {-2.1306610107422, 40.077438354492}, + {-1.349945, 39.347534}, + {-3.592873, 40.371323}, + {-3.2897186279297, 39.382553100586}, + {-4.889603, 39.965515}, + {-4.5984649658203, 39.925003051758}, + {5.9209442138672, 52.00309753418}, + {5.8811187744141, 51.957778930664}, + {5.842226, 51.972236}, + {5.947388, 52.006295}, + {5.4087066650391, 52.080001831055}, + {6.968044, 52.827697}, + {5.5089569091797, 52.482376098633}, + {6.6254425048828, 53.171768188477}, + {5.6270599365234, 52.449417114258}, + {6.2010955810547, 52.670516967773}, + {5.503869, 52.48132}, + {5.922318, 52.367325}, + {6.5389251708984, 53.234939575195}, + {6.605906, 53.234074}, + {6.128037, 53.309097}, + {6.0747528076172, 53.357162475586}, + {6.0816192626953, 53.086624145508}, + {5.925513, 52.977785}, + {5.7849884033203, 52.24479675293}, + {5.6270599365234, 52.314834594727}, + {5.208893, 52.370224}, + {5.167966, 52.274985}, + {131.70890808105, 34.083023071289}, + {132.67295837402, 35.345077514648}, + {133.94325256348, 34.521102905273}, + {134.38545227051, 34.24919128418}, + {133.31703186035, 33.573532104492}, + {132.76222229004, 33.850936889648}, + {132.670977, 33.67302}, + {130.36445617676, 33.569412231445}, + {130.365143, 33.587265}, + {130.38780212402, 33.551559448242}, + {130.54710388184, 33.750686645508}, + {130.18180847168, 33.227462768555}, + {130.17631530762, 33.022842407227}, + {129.71076965332, 33.334579467773}, + {130.65147399902, 32.380142211914}, + {131.27769470215, 33.51448059082}, + {131.01402282715, 33.308486938477}, + {130.92887878418, 33.340072631836}, + {130.52787780762, 31.579513549805}, + {127.758225, 26.156937}, + {130.78880310059, 31.711349487305}, + {127.97904968262, 26.650772094727}, + {139.33204650879, 35.659561157227}, + {139.970627, 35.862122}, + {150.7852935791, -33.701248168945}, + {150.91438293457, -33.848190307617}, + {150.813907, -34.046324}, + {150.933609, -33.940811}, + {151.022716, -33.954374}, + {150.846542, -33.951736}, + {150.68504333496, -33.761672973633}, + {151.004465, -33.753876}, + {150.90476989746, -33.846817016602}, + {150.8731842041, -33.860549926758}, + {152.962343, -29.710986}, + {141.263809, -37.921371}, + {144.352376, -38.125675}, + {144.495371, -37.992789}, + {144.779137, -37.813622}, + {144.185715, -38.410263}, + {144.181291, -37.584474}, + {144.87327575684, -37.792282104492}, + {144.995504, -37.616364}, + {145.01609802246, -37.621994018555}, + {144.930954, -37.780609}, + {45.918511, 25.545279}, + {46.809310913086, 24.809188842773}, + {46.663742, 24.778152}, + {46.626663208008, 24.707565307617}, + {46.754379272461, 24.732284545898}, + {46.824843, 24.658204}, + {46.715927, 24.645767}, + {46.714553833008, 24.531784057617}, + {39.212285, 21.472093}, + {39.261703491211, 21.47346496582}, + {39.298782348633, 21.511917114258}, + {39.859085083008, 21.389694213867}, + {39.133644, 21.631737}, + {41.04767, 19.531632}, + {39.229202, 21.438675}, + {39.75471496582, 21.384201049805}, + {39.953842163086, 21.487197875977}, + {39.863204956055, 21.408920288086}, + {50.219193, 26.337204}, + {50.20546, 26.319122}, + {50.109329, 26.447525}, + {49.910202, 26.528549}, + {49.494094848633, 24.88883972168}, + {48.758011, 27.69516}, + {-122.16590881348, 37.41325378418}, + {-122.131119, 37.686539}, + {-122.41035461426, 37.806015014648}, + {-122.40348815918, 37.752456665039}, + {-122.40348815918, 37.788162231445}, + {-82.584915161133, 27.443161010742}, + {-122.386185, 37.79393}, + {-117.993851, 33.835007}, + {-82.130357, 28.029564}, + {-81.665497, 28.220444}, + {-82.499771118164, 28.495101928711}, + {-82.730484008789, 27.960891723633}, + {-122.63008117676, 47.484970092773}, + {-122.53257751465, 47.638778686523}, + {-122.29637145996, 47.571487426758}, + {-122.26753234863, 47.452011108398}, + {-122.27851867676, 47.473983764648}, + {-122.31971740723, 47.556381225586}, + {-122.28813171387, 47.419052124023}, + {-122.32933044434, 47.623672485352}, + {-122.27989196777, 47.662124633789}, + {-67.158737182617, 18.412399291992}, + {-66.314621, 18.212815}, + {-67.074966430664, 18.371200561523}, + {-102.278173, 21.879594}, + {-117.05451965332, 32.52571105957}, + {-115.52055358887, 32.660293579102}, + {-109.744025, 23.118781}, + {-100.86092, 25.538883}, + {-104.366684, 19.13475}, + {-92.638779, 16.740605}, + {-99.182510375977, 19.512405395508}, + {-99.141311645508, 19.369583129883}, + {-99.089126586914, 19.431381225586}, + {-99.172211, 19.491806}, + {-99.08088684082, 19.388809204102}, + {-99.29512, 19.380112}, + {-99.315719604492, 19.331130981445}, + {-99.135818481445, 19.409408569336}, + {-99.18251, 19.412842}, + {-99.138565063477, 19.434127807617}, + {-66.850326, -29.41745}, + {-65.29335, -26.801834}, + {-58.408126831055, -34.595260620117}, + {-58.448426, -34.622257}, + {-58.502648, -34.627437}, + {-58.579788208008, -34.445571899414}, + {-58.531832, -34.59534}, + {-58.412246704102, -34.570541381836}, + {-58.05591, -34.880835}, + {-64.111137, -31.42211}, + {-64.142532, -31.432571}, + {-57.652816772461, -30.22819519043}, + {-58.83975, -27.475981}, + {-65.41008, -24.767075}, + {-58.499336, -34.805145}, + {-58.395767211914, -34.835586547852}, + {-58.447952270508, -34.624099731445}, + {-58.633346557617, -34.571914672852}, + {-58.518677, -34.569855}, + {-58.411857, -34.61082}, + {-58.465879, -34.649312}, + {-59.051743, -34.138412}, + {22.838516235352, 47.824172973633}, + {23.945077, 47.166081}, + {24.496765, 47.143021}, + {24.164429, 46.249008}, + {23.804512, 46.423073}, + {25.638656616211, 45.751876831055}, + {25.770492553711, 46.36848449707}, + {25.013809204102, 45.827407836914}, + {24.671859741211, 45.158615112305}, + {26.897964477539, 46.570358276367}, + {26.902084350586, 46.600570678711}, + {24.063491821289, 45.809555053711}, + {26.089096069336, 44.433517456055}, + {6.2738800048828, 46.43440246582}, + {28.047429, -26.193612}, + {28.038392, -26.196856}, + {27.815323, -26.17321}, + {27.756271, -26.048584}, + {27.926559448242, -25.99983215332}, + {28.02131652832, -26.200332641602}, + {28.004186, -26.231069}, + {27.840879, -26.526732}, + {28.073501586914, -26.231918334961}, + {28.437423706055, -26.159133911133}, + {28.347486, -26.171571}, + {28.213577270508, -25.986099243164}, + {28.166885375977, -26.16325378418}, + {28.171005249023, -25.608444213867}, + {31.192245483398, -29.530563354492}, + {18.593673706055, -34.074783325195}, + {18.041610717773, -32.915725708008}, + {28.195722, -25.783023}, + {29.444046020508, -23.911056518555}, + {28.195528, -25.774416}, + {28.276405, -25.763969}, + {28.019943237305, -26.148147583008}, + {91.812057495117, 22.331771850586}, + {91.117172241211, 23.229904174805}, + {91.089706420898, 23.251876831055}, + {90.260238647461, 22.812423706055}, + {91.779098510742, 22.366104125977}, + {89.381332397461, 23.788833618164}, + {90.470352172852, 22.827529907227}, + {90.155868530273, 21.92253112793}, + {90.106430053711, 22.514419555664}, + {88.969344, 23.426972}, + {89.99382019043, 22.519912719727}, + {89.916915893555, 23.412551879883}, + {88.474960327148, 25.980606079102}, + {89.038009643555, 26.149520874023}, + {88.974838256836, 25.806198120117}, + {88.800430297852, 24.211807250977}, + {88.602676391602, 24.368362426758}, + {88.649368286133, 24.556503295898}, + {89.399185180664, 24.376602172852}, + {88.996810913086, 24.853134155273}, + {88.943252563477, 24.77897644043}, + {89.440383911133, 24.384841918945}, + {90.983963012695, 24.854507446289}, + {90.407180786133, 25.056381225586}, + {11.297378540039, 44.509048461914}, + {12.798385620117, 45.563735961914}, + {11.35368347168, 44.493942260742}, + {11.228713989258, 44.54475402832}, + {10.940322875977, 44.443130493164}, + {11.022720336914, 44.831771850586}, + {11.279525756836, 45.186080932617}, + {10.937576293945, 45.430526733398}, + {10.884018, 45.917358}, + {11.543572, 45.965736}, + {11.03714, 45.905685}, + {10.348434448242, 46.673355102539}, + {11.002994, 45.853725}, + {12.213089, 46.731033}, + {11.308364868164, 46.862869262695}, + {11.099624633789, 44.966354370117}, + {120.78575134277, 23.94401550293}, + {120.75004577637, 23.750381469727}, + {120.69923400879, 23.909683227539}, + {120.69786071777, 24.155502319336}, + {120.67176818848, 24.170608520508}, + {120.67176818848, 24.191207885742}, + {120.63743591309, 24.155502319336}, + {120.620499, 24.195328}, + {120.619583, 24.123688}, + {120.8145904541, 24.004440307617}, + {120.64018249512, 24.167861938477}, + {120.870895, 23.86528}, + {120.63194274902, 24.169235229492}, + {120.604869, 24.182576}, + {120.56739807129, 24.265365600586}, + {120.546112, 24.24614}, + {120.60035705566, 24.284591674805}, + {120.73631286621, 24.59358215332}, + {120.66902160645, 24.084091186523}, + {120.87501525879, 24.684219360352}, + {120.72052, 24.46106}, + {120.81596374512, 24.608688354492}, + {120.96153259277, 24.469985961914}, + {-46.777726, -23.522415}, + {-46.653214, -23.53569}, + {-46.595078, -23.528595}, + {-46.650009155273, -23.544387817383}, + {-46.611557006836, -23.493576049805}, + {-46.65412902832, -23.567733764648}, + {-46.570358276367, -23.602066040039}, + {-46.593073, -23.599349}, + {-46.526805, -23.662491}, + {-46.701164, -23.530998}, + {-46.680221557617, -23.573226928711}, + {-46.696701049805, -23.037643432617}, + {-46.528005, -22.979665}, + {-46.481257, -23.553914}, + {-46.831284, -23.436996}, + {-46.487328, -23.50411}, + {-46.575148, -23.57511}, + {-51.121515, -27.001771}, + {-48.477659, -1.43724}, + {-43.233261, -22.872162}, + {-43.244887, -22.931732}, + {-43.023147583008, -6.7627716064453}, + {21.886826, 53.452606}, + {17.907715, 53.118896}, + {19.151688, 54.192123}, + {16.212387084961, 52.895736694336}, + {17.688341, 51.603129}, + {16.926827, 52.399825}, + {17.592809, 52.538734}, + {16.59996, 52.325058}, + {-80.22805, 26.256407}, + {-80.117719, 26.016102}, + {-80.151443481445, 26.04377746582}, + {-80.354791, 25.796808}, + {-80.132217407227, 25.813064575195}, + {-80.183904, 25.832019}, + {-80.091018676758, 26.735916137695}, + {-80.080032348633, 26.709823608398}, + {-80.177536010742, 25.784225463867}, + {-80.207202, 26.05366}, + {-92.739028930664, 32.087631225586}, + {-92.691669, 32.537889}, + {-93.752517700195, 32.494125366211}, + {-93.659133911133, 32.555923461914}, + {-93.476486206055, 30.840682983398}, + {-93.72917175293, 32.045059204102}, + {-92.149887084961, 30.233688354492}, + {-92.058378, 30.160958}, + {-92.239385, 29.760825}, + {-91.972663, 30.273808}, + {-95.426559448242, 29.939804077148}, + {-95.364147, 29.75196}, + {-95.430391, 29.712186}, + {-95.410832, 29.684923}, + {-95.389243, 29.986906}, + {-95.728197, 29.788179}, + {-95.408706665039, 29.818954467773}, + {-99.120455, 29.349289}, + {-98.688125610352, 29.494857788086}, + {-100.307923, 30.051384}, + {-99.480301, 27.50153}, + {-98.714218139648, 29.795608520508}, + {-98.586886, 29.554452}, + {-98.417587280273, 29.523696899414}, + {-98.273391723633, 26.205825805664}, + {-98.230819702148, 26.256637573242}, + {-98.388185, 26.254228}, + {-98.342778, 29.380212}, + {-98.519986, 29.380354}, + {-98.574142456055, 29.530563354492}, + {-97.728322, 28.026725}, + {46.361618, 38.07312}, + {45.08171081543, 37.582168579102}, + {57.129016, 36.236355}, + {51.492233276367, 35.739212036133}, + {51.836929321289, 35.732345581055}, + {55.682144165039, 29.439926147461}, + {54.361725, 31.829453}, + {52.275009155273, 33.445816040039}, + {48.098831, 34.738541}, + {52.545547, 36.60988}, + {48.512878, 34.757309}, + {46.41449, 33.64563}, + {53.266525268555, 36.653823852539}, + {51.386489868164, 35.776290893555}, + {48.411255, 30.358658}, + {59.601654, 36.261475}, + {52.516708374023, 29.492111206055}, + {51.304092407227, 35.74333190918}, + {54.858627, 36.925278}, + {50.567093, 36.976318}, + {51.466246, 35.729493}, + {51.376876831055, 35.630722045898}, + {49.911575317383, 36.237716674805}, + {48.812217, 31.17001}, + {53.359909057617, 35.574417114258}, + {106.6024017334, 10.69450378418}, + {114.217987, 22.334518}, + {114.22416687012, 22.311172485352}, + {114.22691345215, 22.312545776367}, + {114.15962219238, 22.238388061523}, + {114.15412902832, 22.24250793457}, + {114.167992, 22.279215}, + {114.18159484863, 22.278213500977}, + {114.152069, 22.341385}, + {114.19532775879, 22.291946411133}, + {114.2488861084, 22.263107299805}, + {114.21730041504, 22.287826538086}, + {114.37385559082, 22.367477416992}, + {114.06349182129, 22.421035766602}, + {113.976288, 22.39769}, + {113.97010803223, 22.372970581055}, + {113.97010803223, 22.404556274414}, + {113.94538879395, 22.258987426758}, + {114.12391662598, 22.355117797852}, + {114.10194396973, 22.37434387207}, + {114.1527557373, 22.338638305664}, + {114.19395446777, 22.466354370117}, + {114.16786193848, 22.326278686523}, + {-0.042263, 51.525679}, + {-2.22456, 53.509598}, + {-2.186548, 53.598647}, + {-2.210312, 53.53363}, + {-2.9862213134766, 53.402481079102}, + {-2.956009, 53.432419}, + {-3.0287933349609, 53.390121459961}, + {1.129739, 51.069001}, + {-0.20118713378906, 51.413955688477}, + {-0.11467, 51.344604}, + {-0.199814, 51.361084}, + {-0.075531, 51.356964}, + {-0.046692, 51.38031}, + {-1.712736, 52.489679}, + {-1.73378, 52.467957}, + {-1.8683624267578, 52.41096496582}, + {-3.1139373779297, 53.357162475586}, + {-3.1784820556641, 53.20198059082}, + {-2.6717376708984, 53.526077270508}, + {-2.592773, 53.42926}, + {100.4500579834, 13.928604125977}, + {100.64781188965, 13.957443237305}, + {100.41847229004, 13.647079467773}, + {100.36354064941, 13.707504272461}, + {100.38139343262, 13.644332885742}, + {100.54756164551, 13.725357055664}, + {100.44456481934, 13.77067565918}, + {100.521828, 13.707319}, + {100.50636291504, 13.721237182617}, + {100.52146911621, 13.69514465332}, + {100.521732, 13.719444}, + {100.45692443848, 13.725357055664}, + {100.539322, 13.697891}, + {100.53932189941, 13.659439086914}, + {100.50498962402, 13.674545288086}, + {100.27702331543, 13.881912231445}, + {100.993668, 13.004374}, + {101.09550476074, 12.854690551758}, + {100.99113464355, 13.27766418457}, + {100.99113464355, 13.336715698242}, + {100.91285705566, 13.313369750977}, + {102.83683776855, 16.423873901367}, + {100.94581604004, 13.296890258789}, + {121.449051, 25.176315}, + {121.442413, 25.211563}, + {121.468735, 25.021984}, + {121.480637, 25.003372}, + {121.5177154541, 25.001449584961}, + {121.468277, 24.980164}, + {121.782681, 24.734038}, + {121.306175, 24.996661}, + {121.355209, 25.051346}, + {121.15516662598, 25.001449584961}, + {121.29112243652, 24.840774536133}, + {121.20323181152, 24.939651489258}, + {120.970263, 24.773581}, + {121.203668, 24.859028}, + {121.049661, 24.911894}, + {120.93727, 24.808275}, + {121.45454406738, 23.761367797852}, + {121.38313293457, 23.580093383789}, + {120.697991, 24.150636}, + {120.69606, 24.174006}, + {120.70232, 24.142306}, + {120.64292907715, 24.147262573242}, + {120.711594, 24.084778}, + {27.756958, 42.242775}, + {24.27269, 43.323898}, + {24.975357055664, 43.03825378418}, + {25.98747253418, 43.866348266602}, + {27.464035, 42.441971}, + {25.365371704102, 41.33674621582}, + {24.715805053711, 42.134628295898}, + {26.741409301758, 42.549362182617}, + {23.367233276367, 42.671585083008}, + {33.367538452148, 35.19401550293}, + {33.299561, 35.338898}, + {29.439926147461, 40.806655883789}, + {32.708358764648, 39.783554077148}, + {32.838821411133, 39.99641418457}, + {30.512466430664, 39.778060913086}, + {27.069625854492, 38.384170532227}, + {32.900619506836, 40.034866333008}, + {27.404708862305, 37.054824829102}, + {61.823501586914, 37.60139465332}, + {106.69075, 10.775986}, + {105.84983825684, 21.024398803711}, + {105.82786560059, 21.014785766602}, + {105.74272155762, 21.242752075195}, + {105.70152282715, 18.666458129883}, + {105.63148498535, 19.147109985352}, + {104.59327697754, 20.818405151367}, + {106.706543, 10.765686}, + {106.662827, 10.752869}, + {106.79466247559, 10.770034790039}, + {106.62162780762, 10.802993774414}, + {106.702652, 10.785206}, + {106.64909362793, 10.873031616211}, + {106.5941619873, 10.844192504883}, + {108.245544, 16.076431}, + {109.1951751709, 12.236709594727}, + {106.48979187012, 17.92350769043}, + {105.44746398926, 10.367660522461}, + {105.90339660645, 10.117721557617}, + {106.31401062012, 10.425338745117}, + {106.24397277832, 20.115280151367}, + {107.17094421387, 11.083145141602}, + {108.18717956543, 10.949935913086}, + {108.14598083496, 12.05680847168}, + {-3.6357879638672, 40.422134399414}, + {-3.9365386962891, 40.485305786133}, + {2.2089385986328, 41.450729370117}, + {-7.0182037353516, 37.240219116211}, + {-6.5911102294922, 43.31428527832}, + {20.645391, 48.248528}, + {-42.79655456543, -5.1313018798828}, + {-40.350292, -3.694357}, + {-48.44352722168, -1.3822174072266}, + {-44.131393432617, -2.5522613525391}, + {-49.510771, -22.284884}, + {-47.853699, -21.145248}, + {-47.820878, -21.227097}, + {-49.598895, -20.742957}, + {-49.353923, -20.800745}, + {-48.37760925293, -20.444869995117}, + {-42.315946, -21.374624}, + {-47.910308, -19.753421}, + {-52.162399291992, -32.181015014648}, + {-50.890139, -29.390804}, + {-48.28911, -15.787496}, + {-56.037826538086, -15.568313598633}, + {-38.433609008789, -12.964553833008}, + {-34.948196411133, -8.0426788330078}, + {-34.882965, -8.061905}, + {0.438766, 52.748764}, + {0.84938049316406, 52.811965942383}, + {-1.974423, 52.662277}, + {-2.3819732666016, 52.202224731445}, + {-1.3231658935547, 51.939926147461}, + {-1.69616, 52.165738}, + {-3.451949, 52.283395}, + {-0.340347, 51.614456}, + {0.89881896972656, 51.909713745117}, + {0.95100402832031, 51.788864135742}, + {0.56098937988281, 51.62956237793}, + {0.499232, 51.593553}, + {0.013242, 51.626816}, + {-0.099638, 51.572159}, + {-0.076217651367188, 51.545791625977}, + {-1.752777, 52.479172}, + {-6.6501617431641, 54.829330444336}, + {-2.5769805908203, 51.467514038086}, + {0.070724487304688, 51.630935668945}, + {10.852432250977, 45.503311157227}, + {11.706619262695, 46.81755065918}, + {12.78138, 41.814311}, + {12.709808, 41.835938}, + {12.577011, 42.054153}, + {12.381347, 42.046591}, + {12.89704, 42.387498}, + {12.516861, 41.929321}, + {12.507247924805, 41.914901733398}, + {12.515487670898, 41.914901733398}, + {12.483215, 41.829758}, + {12.45231628418, 41.869583129883}, + {13.321608, 41.314774}, + {12.903088, 41.463989}, + {12.475576, 41.890097}, + {12.549819946289, 41.862716674805}, + {12.542953491211, 41.975326538086}, + {12.520980834961, 41.876449584961}, + {12.372665405273, 41.78581237793}, + {12.357559, 41.794739}, + {9.518968, 40.288239}, + {12.734115, 41.833603}, + {12.68440246582, 41.814651489258}, + {12.459182739258, 41.827011108398}, + {12.382896, 42.050514}, + {12.786026000977, 41.853103637695}, + {9.3219, 40.080185}, + {13.801586, 41.161309}, + {13.301010131836, 42.384567260742}, + {12.294387, 43.102801}, + {12.904129, 43.923569}, + {13.029098510742, 43.844375610352}, + {11.242446899414, 43.781204223633}, + {12.159805297852, 42.990188598633}, + {10.399933, 43.985138}, + {11.244507, 43.81073}, + {11.085891723633, 43.892440795898}, + {13.761063, 43.235458}, + {-43.92951965332, -19.918899536133}, + {-44.011336, -19.974591}, + {-43.787713, -20.677139}, + {-43.646278, -20.71747}, + {-42.602716, -19.525302}, + {-43.153610229492, -19.604415893555}, + {-43.681869, -19.782944}, + {-43.957836, -19.81725}, + {-43.943252563477, -19.887313842773}, + {-44.009684, -19.788498}, + {-44.042816, -19.877014}, + {-44.01417, -19.934297}, + {-43.967909, -19.849217}, + {-44.112444, -19.958673}, + {-44.161605834961, -19.961471557617}, + {-44.080581665039, -21.039505004883}, + {-42.945869, -21.120975}, + {-43.341751098633, -21.756362915039}, + {-41.762468, -20.270962}, + {-47.14261, -18.9113}, + {101.68464660645, 19.321517944336}, + {105.87043762207, 14.998397827148}, + {102.58140563965, 17.968826293945}, + {102.601239, 17.9672}, + {102.650856, 17.922821}, + {102.751279, 18.063599}, + {102.521993, 18.849498}, + {102.5511932373, 20.600051879883}, + {102.445793, 18.91983}, + {113.30543518066, 23.13102722168}, + {104.48066711426, 29.714584350586}, + {116.29371643066, 39.988174438477}, + {113.2559967041, 23.089828491211}, + {113.93989562988, 22.541885375977}, + {113.77372741699, 22.77946472168}, + {113.02116394043, 22.617416381836}, + {121.35429382324, 31.178512573242}, + {117.21519470215, 39.135360717773}, + {119.19410705566, 34.60075378418}, + {123.36479187012, 41.869583129883}, + {120.14167785645, 30.269393920898}, + {120.1114654541, 30.281753540039}, + {113.11729431152, 28.21907043457}, + {114.6004486084, 28.166885375977}, + {116.60133361816, 34.375534057617}, + {117.25364685059, 31.936569213867}, + {117.27836608887, 31.909103393555}, + {120.20347595215, 30.251541137695}, + {122.04917907715, 30.029067993164}, + {121.96815490723, 30.097732543945}, + {120.333252, 30.318832}, + {119.85191345215, 30.351791381836}, + {120.80772399902, 30.737686157227}, + {120.3394317627, 30.303726196289}, + {121.43669128418, 29.915084838867}, + {120.60447692871, 27.967758178711}, + {118.12156677246, 26.509323120117}, + {119.28199768066, 26.06575012207}, + {118.08586120605, 24.567489624023}, + {120.30921936035, 31.605606079102}, + {116.96388244629, 36.651077270508}, + {122.19062805176, 37.363815307617}, + {120.16777038574, 35.976791381836}, + {120.98213195801, 37.700271606445}, + {119.15702819824, 36.719741821289}, + {121.34742736816, 29.927444458008}, + {120.04692077637, 28.320693969727}, + {121.48612976074, 29.872512817383}, + {121.41471862793, 29.316329956055}, + {-84.893692, 33.790983}, + {-85.141234, 34.24014}, + {-83.925895, 34.042105}, + {-84.137238, 34.271713}, + {-85.040367, 33.591503}, + {-85.074691772461, 34.207992553711}, + {-85.125503540039, 34.21760559082}, + {-84.114761352539, 33.912734985352}, + {-84.156487, 33.93386}, + {-84.41276550293, 33.973159790039}, + {-84.385299682617, 33.790512084961}, + {-84.356460571289, 33.948440551758}, + {-83.987131, 33.954644}, + {-84.45671081543, 33.893508911133}, + {-84.186172485352, 33.702621459961}, + {-84.388046264648, 33.89762878418}, + {-84.125747680664, 33.955307006836}, + {-85.00602722168, 33.007736206055}, + {-85.193034, 32.842396}, + {-82.696151733398, 33.496627807617}, + {-82.075424194336, 33.526840209961}, + {-84.251835, 33.699017}, + {-84.296184, 33.446016}, + {-84.119018, 33.643112}, + {58.411217, 37.929611}, + {139.6410369873, 35.846328735352}, + {139.75090026855, 35.670547485352}, + {139.70420837402, 35.676040649414}, + {139.711075, 35.681076}, + {139.61631774902, 35.707626342773}, + {139.77149963379, 35.700759887695}, + {139.31144714355, 35.656814575195}, + {139.45701599121, 35.695266723633}, + {139.44602966309, 35.588150024414}, + {139.56413269043, 35.732345581055}, + {139.53117370605, 35.763931274414}, + {139.58061218262, 35.704879760742}, + {139.55177307129, 35.715866088867}, + {139.79072570801, 35.63346862793}, + {139.79209899902, 35.651321411133}, + {139.63279724121, 35.625228881836}, + {140.38536071777, 35.762557983398}, + {139.71244812012, 35.73371887207}, + {139.70970153809, 35.757064819336}, + {139.812011, 35.730286}, + {139.70283508301, 35.660934448242}, + {139.79347229004, 35.72135925293}, + {37.275924682617, 55.678024291992}, + {37.50114440918, 55.771408081055}, + {37.269058227539, 55.682144165039}, + {36.815872192383, 55.583267211914}, + {36.662063598633, 55.92658996582}, + {36.858444213867, 55.918350219727}, + {36.680605, 55.589791}, + {37.508010864258, 56.260299682617}, + {36.37092590332, 55.757675170898}, + {37.164688110352, 55.329208374023}, + {37.336349487305, 55.515975952148}, + {73.393946, 54.949794}, + {73.31657409668, 55.017471313477}, + {73.420944213867, 54.951553344727}, + {35.934219360352, 56.905746459961}, + {35.797779, 56.838455}, + {34.577407836914, 57.603378295898}, + {30.252519, 59.85811}, + {30.166397094727, 59.818496704102}, + {57.551193237305, 65.994186401367}, + {9.1330718994141, 45.661239624023}, + {7.8421783447266, 45.856246948242}, + {7.6416778564453, 45.07209777832}, + {7.6828765869141, 45.095443725586}, + {7.6773834228516, 45.041885375977}, + {7.8092193603516, 45.172348022461}, + {7.729037, 45.109974}, + {7.34024, 44.313354}, + {7.2832489013672, 44.314041137695}, + {7.7529144287109, 45.114669799805}, + {7.6265716552734, 45.080337524414}, + {7.5208282470703, 45.058364868164}, + {7.8847503662109, 45.195693969727}, + {7.7515411376953, 45.100936889648}, + {7.7378082275391, 45.118789672852}, + {6.8767547607422, 45.065231323242}, + {7.0415496826172, 45.135269165039}, + {7.6306915283203, 45.387954711914}, + {7.956762, 44.946013}, + {8.4107208251953, 44.701309204102}, + {8.7677764892578, 44.772720336914}, + {8.794556, 44.761734}, + {7.851105, 44.912109}, + {-4.4460296630859, 41.431503295898}, + {-1.0471343994141, 39.480056762695}, + {-1.1899566650391, 39.552841186523}, + {-0.39756774902344, 39.602279663086}, + {0.21492004394531, 40.235366821289}, + {0.43327331542969, 40.429000854492}, + {-0.31379699707031, 39.18342590332}, + {-0.70106506347656, 38.259201049805}, + {-8.3654022216797, 43.25798034668}, + {-3.9337921142578, 37.917251586914}, + {-3.861008, 43.439255}, + {-4.0354156494141, 39.871444702148}, + {-6.0445404052734, 37.355575561523}, + {-6.0321807861328, 37.388534545898}, + {-4.4638824462891, 36.681289672852}, + {-4.6204376220703, 36.548080444336}, + {-4.3993377685547, 36.72248840332}, + {-4.5545196533203, 36.72248840332}, + {-6.3356781005859, 36.637344360352}, + {-4.7893524169922, 37.884292602539}, + {-3.6275482177734, 38.087539672852}, + {-5.7946014404297, 43.447494506836}, + {-3.712693, 42.332383}, + {-46.649521, -23.625213}, + {-46.61979675293, -23.503189086914}, + {-46.689834594727, -23.552627563477}, + {-46.345138549805, -23.86848449707}, + {-49.090347290039, -22.400436401367}, + {-49.11506652832, -22.254867553711}, + {-47.443543, -23.491805}, + {-47.567711, -23.328094}, + {-51.396102905273, -22.158737182617}, + {-46.975479, -23.028717}, + {-46.996275, -22.996076}, + {-46.959105, -22.418614}, + {-47.369511, -22.713496}, + {-43.175582885742, -22.904434204102}, + {-43.197555541992, -22.907180786133}, + {-43.194808959961, -22.91130065918}, + {-43.180358, -22.895346}, + {-43.227414, -22.895599}, + {-43.189317, -22.888642}, + {-43.238298, -22.91309}, + {-2.54631, 53.240433}, + {-2.1897125244141, 53.530197143555}, + {-2.976581, 52.994574}, + {-1.6733551025391, 53.64143371582}, + {-2.074748, 53.46781}, + {-3.3748626708984, 55.99250793457}, + {-3.900146, 55.992508}, + {-3.47969, 56.515504}, + {-1.689224, 50.874435}, + {-2.222672, 50.887985}, + {-1.943893, 50.774277}, + {-1.155968, 52.965775}, + {-1.4302825927734, 53.436813354492}, + {-1.411677, 53.411384}, + {-1.160847, 53.314931}, + {-2.1842193603516, 53.006973266602}, + {-2.121512, 52.818895}, + {-1.3918304443359, 52.732315063477}, + {-1.296401, 52.591553}, + {28.258896, -15.387211}, + {47.534408569336, -18.897171020508}, + {44.46647644043, -22.898941040039}, + {55.473403930664, -20.885696411133}, + {55.511856079102, -20.892562866211}, + {55.445938110352, -20.892562866211}, + {55.451431274414, -20.88981628418}, + {55.492630004883, -21.347122192383}, + {55.543441772461, -21.278457641602}, + {55.259170532227, -21.049118041992}, + {55.428085327148, -21.281204223633}, + {55.333481, -20.96431}, + {55.26704, -21.097078}, + {55.492226, -20.90153}, + {55.456924438477, -20.877456665039}, + {55.448685, -20.882607}, + {31.049423217773, -17.839736938477}, + {31.001358032227, -17.795791625977}, + {28.530807495117, -20.20866394043}, + {31.479263305664, -18.281936645508}, + {31.076889038086, -18.018264770508}, + {10.00373840332, 53.55354309082}, + {9.9927520751953, 53.564529418945}, + {9.0506744384766, 54.42008972168}, + {8.9517974853516, 54.113845825195}, + {9.5519256591797, 51.288986206055}, + {9.929593, 52.232441}, + {9.7414398193359, 52.362899780273}, + {9.879799, 52.429848}, + {10.261917114258, 52.419204711914}, + {9.8691558837891, 52.360153198242}, + {10.675964, 52.309341}, + {7.3011016845703, 53.354415893555}, + {9.7428131103516, 52.357406616211}, + {9.428329, 53.259659}, + {8.6016082763672, 53.20198059082}, + {-73.618865, 45.728501}, + {-73.54033, 45.54832}, + {-74.637680053711, 45.554122924805}, + {-106.660275, 52.19789}, + {-106.614602, 52.116183}, + {-123.103757, 49.271736}, + {-123.062076, 49.282147}, + {-123.07228088379, 49.040908813477}, + {-122.918247, 49.213478}, + {-123.019738, 49.21017}, + {-122.65205383301, 49.079360961914}, + {-122.49961853027, 49.220809936523}, + {-122.711405, 49.146055}, + {-123.716496, 48.814274}, + {-119.245546, 50.238444}, + {-120.15953063965, 51.194229125977}, + {-125.241053, 50.055854}, + {-111.367721, 56.702499}, + {-112.797538, 49.667264}, + {-110.85411071777, 51.997604370117}, + {135.50743103027, 34.641952514648}, + {135.491982, 34.681778}, + {135.416519, 34.638245}, + {135.5005645752, 34.63508605957}, + {135.346069, 34.371414}, + {135.47309875488, 34.595260620117}, + {135.35636901855, 34.42497253418}, + {135.57609558105, 34.595260620117}, + {135.590286, 34.60762}, + {135.54725646973, 34.628219604492}, + {135.646591, 34.864059}, + {135.5541229248, 34.761428833008}, + {135.57060241699, 34.762802124023}, + {135.565341, 34.735059}, + {135.56373596191, 34.746322631836}, + {135.49507141113, 34.775161743164}, + {135.508461, 34.727097}, + {135.518265, 34.708939}, + {135.52940368652, 34.690017700195}, + {135.66398620605, 34.522476196289}, + {135.61180114746, 34.500503540039}, + {135.58296203613, 34.566421508789}, + {135.5005645752, 34.662551879883}, + {107.00614929199, -6.2079620361328}, + {107.019636, -6.23261}, + {106.80702209473, -6.2148284912109}, + {106.878948, -6.2253}, + {106.81526184082, -6.2271881103516}, + {106.8660736084, -6.2436676025391}, + {106.87156677246, -6.2450408935547}, + {106.789045, -6.176292}, + {106.83311462402, -6.2216949462891}, + {106.804962, -6.168823}, + {106.81017, -6.167269}, + {106.81800842285, -6.1516571044922}, + {106.80976867676, -6.1640167236328}, + {106.75483703613, -6.1873626708984}, + {106.6820526123, -6.1159515380859}, + {30.305099487305, 59.975051879883}, + {30.30647277832, 60.01350402832}, + {30.318395, 59.92836}, + {76.884384155273, 60.955581665039}, + {69.409561157227, 61.01188659668}, + {30.366897583008, 59.932479858398}, + {77.189254760742, 64.723892211914}, + {37.709884643555, 55.657424926758}, + {39.905776977539, 43.46809387207}, + {39.607772827148, 52.575759887695}, + {52.298355102539, 54.895248413086}, + {131.70753479004, 42.981948852539}, + {43.974838256836, 56.264419555664}, + {44.054489135742, 56.319351196289}, + {43.966598510742, 56.007614135742}, + {43.965225219727, 56.245193481445}, + {44.088821411133, 56.269912719727}, + {93.744277954102, 52.226943969727}, + {51.614456176758, 52.781753540039}, + {47.192459106445, 56.13395690918}, + {45.025405883789, 53.126449584961}, + {-71.678362, -33.367876}, + {-71.609038, -33.604625}, + {-71.076736, -34.435043}, + {-72.610702, -38.779678}, + {-71.468811, -35.010681}, + {-72.67936706543, -37.814254760742}, + {-71.983108520508, -37.773056030273}, + {-72.057266235352, -37.639846801758}, + {-72.472687, -40.728378}, + {-70.885848999023, -53.120956420898}, + {-70.708008, -33.793945}, + {-70.74028, -33.754807}, + {-70.715560913086, -33.330459594727}, + {-70.74234, -33.32634}, + {-70.638551, -33.455602}, + {-70.609818, -33.457921}, + {-71.322555541992, -29.96452331543}, + {-71.245651245117, -29.950790405273}, + {-70.603982, -33.39638}, + {-71.241081, -29.875772}, + {-70.552521, -33.330307}, + {-70.543115, -33.397555}, + {-123.15605163574, 49.264755249023}, + {-121.95747, 49.137904}, + {-123.123798, 49.289409}, + {-123.145006, 49.266656}, + {-123.095859, 49.180344}, + {-122.925546, 49.237332}, + {-122.946406, 49.199153}, + {-123.0379486084, 49.240036010742}, + {-123.025589, 49.237747}, + {-79.423599243164, 43.641128540039}, + {-104.622788, 50.441384}, + {-104.602757, 50.474092}, + {-106.66471, 52.121005}, + {-80.373916625977, 25.675735473633}, + {-75.279006958008, 40.076065063477}, + {-71.543655395508, 41.991806030273}, + {-76.911849975586, 39.065322875977}, + {-72.897720336914, 41.318893432617}, + {-82.454452514648, 28.059768676758}, + {-104.77867126465, 39.885177612305}, + {-104.86518859863, 39.116134643555}, + {-101.87004089355, 33.584518432617}, + {5.1381683349609, 52.066268920898}, + {120.2515411377, 23.088455200195}, + {120.212349, 22.99956}, + {120.273056, 22.976303}, + {120.346674, 22.56671}, + {101.64344787598, 3.1455230712891}, + {100.41435241699, 5.7382965087891}, + {101.73271179199, 3.2059478759766}, + {101.66130065918, 3.0754852294922}, + {101.67366027832, 3.2444000244141}, + {101.52534484863, 3.1345367431641}, + {101.75468444824, 3.1304168701172}, + {101.727356, 3.122177}, + {101.73271179199, 3.1441497802734}, + {101.76622, 3.014786}, + {101.73957824707, 3.0933380126953}, + {101.72172546387, 3.0892181396484}, + {101.59538269043, 3.0507659912109}, + {101.533127, 3.048019}, + {101.494675, 3.088531}, + {101.648483, 3.069992}, + {101.964798, 2.680097}, + {101.67366, 3.106461}, + {101.37565612793, 3.1359100341797}, + {-74.058172, 4.690788}, + {-74.078750610352, 4.6781158447266}, + {-74.144669, 4.667645}, + {-74.113082885742, 4.5998382568359}, + {-74.121322631836, 4.6327972412109}, + {-74.110336303711, 4.5970916748047}, + {-74.108505, 4.729385}, + {-74.133682250977, 4.7550201416016}, + {-73.542828, 5.004782}, + {-74.413834, 4.335578}, + {-74.066652, 4.729141}, + {-74.053757, 4.70723}, + {-74.049911499023, 4.7261810302734}, + {-74.075546, 4.619064}, + {-74.070510864258, 4.6053314208984}, + {-72.39372253418, 5.3455352783203}, + {-74.080123901367, 4.6849822998047}, + {-74.125442504883, 4.5806121826172}, + {-117.70820617676, 34.081649780273}, + {-117.524185, 34.069977}, + {-117.55027770996, 34.003372192383}, + {-117.582612, 34.067917}, + {-118.42643737793, 34.253311157227}, + {-118.72993469238, 34.633712768555}, + {-118.142738, 34.033585}, + {-118.10096740723, 33.791885375977}, + {-118.311011, 33.895127}, + {-118.142445, 33.791079}, + {-118.27949523926, 33.947067260742}, + {-118.342426, 34.059314}, + {-118.36051940918, 34.056930541992}, + {-118.32069396973, 34.01985168457}, + {-117.38548278809, 34.021224975586}, + {-117.197819, 33.900119}, + {-117.284176, 33.93513}, + {-118.44017028809, 33.940200805664}, + {-118.89060974121, 34.181900024414}, + {-118.62693786621, 34.026718139648}, + {-118.604652, 34.243291}, + {-119.01235, 34.244647}, + {15.127945, 37.66594}, + {15.094345, 37.54628}, + {15.108261, 37.52916}, + {15.831985473633, 40.23811340332}, + {14.03434753418, 37.484664916992}, + {15.224990844727, 37.122116088867}, + {14.094772338867, 37.746963500977}, + {13.346328735352, 38.132858276367}, + {16.769943237305, 41.108779907227}, + {13.33122253418, 38.132858276367}, + {13.546829223633, 38.05046081543}, + {14.70588684082, 36.780166625977}, + {13.348617, 38.104249}, + {17.951077, 40.616438}, + {15.639708, 41.357962}, + {15.130233764648, 37.270431518555}, + {17.32235, 40.918121}, + {15.552956, 38.19967}, + {15.127487182617, 37.648086547852}, + {16.364136, 40.781937}, + {15.17692565918, 37.715377807617}, + {-79.950354, 37.20314}, + {-76.129074, 36.789322}, + {-77.286758422852, 38.642349243164}, + {-77.532577514648, 37.400894165039}, + {-76.429001, 37.125412}, + {-77.49137878418, 37.292404174805}, + {-84.508895874023, 33.929214477539}, + {-76.431198120117, 36.993026733398}, + {-84.23698425293, 33.905868530273}, + {-85.315644, 34.84923}, + {-84.168319702148, 33.643569946289}, + {-84.547348022461, 34.092636108398}, + {-119.88075256348, 38.20426940918}, + {-121.44493103027, 38.592910766602}, + {-118.32069396973, 34.062423706055}, + {-121.74156188965, 38.544845581055}, + {-121.22520446777, 38.647842407227}, + {-121.429689, 38.427711}, + {-121.5259552002, 38.64372253418}, + {-121.36940002441, 38.579177856445}, + {-119.97688293457, 38.937606811523}, + {-83.562698364258, 42.648239135742}, + {-82.929611206055, 42.556228637695}, + {-83.375930786133, 42.738876342773}, + {-83.459055, 42.859968}, + {-83.208389282227, 42.607040405273}, + {-82.999649, 42.438126}, + {-122.339895, 47.89291}, + {-80.648526, 34.994187}, + {-87.473453, 37.999648}, + {-80.945206, 26.754227}, + {-81.649703979492, 26.71257019043}, + {-82.016373, 26.936188}, + {-80.268173, 27.16507}, + {-80.182571, 26.978989}, + {-119.79491, 36.787642}, + {-119.764481, 36.802597}, + {-119.818203, 36.839491}, + {-82.135848999023, 29.901351928711}, + {-82.385788, 29.656219}, + {-79.736709594727, 36.141586303711}, + {113.36448669434, 22.95524597168}, + {113.60343933105, 23.287582397461}, + {113.37959289551, 22.94563293457}, + {113.268356, 23.142929}, + {113.28483581543, 23.122787475586}, + {113.37272644043, 23.025283813477}, + {113.42491149902, 23.111801147461}, + {113.5814666748, 23.103561401367}, + {113.30406188965, 23.13102722168}, + {113.439331, 22.62085}, + {116.59858703613, 23.26286315918}, + {112.97172546387, 23.234024047852}, + {113.79981994629, 23.052749633789}, + {113.781967, 23.064423}, + {113.54164123535, 22.234268188477}, + {113.3438873291, 22.926406860352}, + {113.44825744629, 23.69270324707}, + {113.32328796387, 23.207931518555}, + {114.04426574707, 22.565231323242}, + {114.44801330566, 22.599563598633}, + {114.26948547363, 22.589950561523}, + {113.7915802002, 22.738265991211}, + {113.79707336426, 22.74787902832}, + {51.385336, 35.525308}, + {51.42219543457, 35.592269897461}, + {51.353909, 35.766918}, + {51.490859985352, 35.807876586914}, + {51.649878, 35.505611}, + {50.856399536133, 35.784530639648}, + {51.350905, 35.72719}, + {51.030328, 35.47455}, + {50.132675, 36.28624}, + {50.998993, 35.824356}, + {51.473007202148, 35.669174194336}, + {51.489486694336, 35.651321411133}, + {50.988235473633, 35.817489624023}, + {59.680484, 34.937211}, + {50.664138793945, 36.90788269043}, + {58.798141479492, 36.218490600586}, + {49.509201, 36.019363}, + {50.91682434082, 35.846328735352}, + {51.179122924805, 35.659561157227}, + {59.513626098633, 36.310501098633}, + {51.043167114258, 35.73371887207}, + {50.88249206543, 32.312850952148}, + {46.253128051758, 38.047714233398}, + {47.600326538086, 33.525466918945}, + {-87.687672, 41.586125}, + {-87.850112915039, 41.252975463867}, + {-87.966025, 41.553603}, + {-88.293685913086, 42.079696655273}, + {-88.454862, 42.133334}, + {-88.041000366211, 42.076950073242}, + {-87.929141, 42.351428}, + {-88.008336, 41.858989}, + {-87.948761, 41.848469}, + {-88.153351, 41.90832}, + {-88.051986, 42.054291}, + {-87.630386352539, 41.879196166992}, + {-87.631073, 41.881714}, + {-87.648239135742, 41.971206665039}, + {-87.761934, 42.139701}, + {-87.799005, 41.971397}, + {-87.780824, 41.821518}, + {-87.616653442383, 41.648483276367}, + {-87.545883, 41.719894}, + {-89.072341918945, 42.199172973633}, + {-88.984451293945, 42.412033081055}, + {-89.048057, 42.347085}, + {-89.503555297852, 40.882186889648}, + {-89.524154, 40.575943}, + {-89.571669, 40.708054}, + {49.654769897461, 27.011947631836}, + {41.049728393555, 30.978012084961}, + {39.863204956055, 29.813461303711}, + {46.733779907227, 24.68147277832}, + {46.800385, 24.717178}, + {46.747512817383, 24.700698852539}, + {46.704940795898, 24.765243530273}, + {46.77851, 24.725026}, + {46.794204711914, 24.950637817383}, + {43.610916137695, 26.160507202148}, + {43.980331420898, 26.32942199707}, + {43.957201, 26.421795}, + {46.667861938477, 24.758377075195}, + {46.670608520508, 24.763870239258}, + {46.798324584961, 24.86686706543}, + {39.701156616211, 24.513931274414}, + {39.629745483398, 24.435653686523}, + {37.913131713867, 26.628799438477}, + {36.564559936523, 28.393478393555}, + {41.700668334961, 27.518692016602}, + {40.461959838867, 20.307540893555}, + {39.199905395508, 21.546249389648}, + {41.081314086914, 19.140243530273}, + {37.569808959961, 55.783767700195}, + {30.317459106445, 59.920120239258}, + {30.232315063477, 59.94758605957}, + {30.222702026367, 59.955825805664}, + {30.31929, 59.978256}, + {30.296859741211, 59.959945678711}, + {30.307846069336, 59.928359985352}, + {30.336685180664, 59.921493530273}, + {30.527573, 59.837723}, + {30.409813, 59.965439}, + {30.476760864258, 59.994277954102}, + {30.386123657227, 59.96955871582}, + {30.486373901367, 59.939346313477}, + {30.333939, 59.912796}, + {30.32844543457, 59.877548217773}, + {30.349044799805, 59.911880493164}, + {30.303726196289, 60.028610229492}, + {30.357284545898, 59.997024536133}, + {-3.1716156005859, 55.941696166992}, + {-5.928264, 54.596614}, + {-6.355165, 54.202628}, + {-5.919572, 54.596558}, + {-1.4426422119141, 53.348922729492}, + {-2.018738, 53.960724}, + {-3.5039520263672, 55.900497436523}, + {-1.803303, 53.832836}, + {0.622787, 51.187516}, + {0.43739318847656, 51.298599243164}, + {0.506432, 51.355903}, + {0.625956, 51.7127}, + {1.166611, 52.056198}, + {1.1281585693359, 52.070388793945}, + {-0.20805358886719, 52.020950317383}, + {-1.153792, 53.491288}, + {-0.43052673339844, 53.722457885742}, + {-1.4879608154297, 54.52033996582}, + {-6.3617706298828, 54.189376831055}, + {-3.417984, 56.080399}, + {-3.166954, 56.065567}, + {-1.437836, 52.91153}, + {9.7743988037109, 52.373886108398}, + {7.6306915283203, 51.492233276367}, + {7.467728, 51.999893}, + {8.0770111083984, 52.27912902832}, + {9.562225, 51.363144}, + {7.111588, 51.669532}, + {6.9248199462891, 51.700973510742}, + {8.4230804443359, 51.589736938477}, + {8.8707733154297, 51.955032348633}, + {-73.377222, 45.552713}, + {-73.478861, 45.576394}, + {-75.744553, 45.37975}, + {-75.90934753418, 45.328903198242}, + {-73.510208129883, 45.70930480957}, + {-71.224777, 46.642319}, + {-71.1866, 46.785965}, + {-79.413986, 43.675804}, + {-79.384052, 43.649826}, + {-79.386878, 43.65239}, + {-79.14152, 43.801873}, + {-79.123764, 43.790421}, + {-79.623832, 43.801391}, + {-79.202499389648, 43.877334594727}, + {-79.394304, 43.799667}, + {-79.376907, 43.724899}, + {-79.236851, 43.727967}, + {-79.294316, 43.745268}, + {-79.567645, 43.634259}, + {-79.651565551758, 43.628768920898}, + {-79.825046, 43.500565}, + {-79.792681, 43.336043}, + {55.462417602539, 25.008316040039}, + {56.107864379883, 24.905319213867}, + {55.461044311523, 25.203323364258}, + {55.370407, 25.183411}, + {55.213852, 25.153542}, + {55.193252563477, 25.08659362793}, + {55.20149230957, 25.082473754883}, + {55.209045, 25.137405}, + {55.163236, 25.094833}, + {55.12321472168, 25.126419067383}, + {55.260543823242, 25.229415893555}, + {55.270156860352, 25.171737670898}, + {56.018600463867, 25.414810180664}, + {56.033363, 25.881386}, + {55.969161987305, 25.769119262695}, + {56.352310180664, 25.561752319336}, + {55.45280456543, 25.412063598633}, + {55.739822387695, 25.425796508789}, + {55.732498, 25.538406}, + {55.520095825195, 25.396957397461}, + {55.47477722168, 25.271987915039}, + {55.461107, 25.328788}, + {55.433578491211, 25.351638793945}, + {55.408859, 25.348892}, + {55.38826, 25.363541}, + {18.386306762695, -33.952560424805}, + {27.264633178711, -25.705947875977}, + {28.235549926758, -26.10969543457}, + {28.048782348633, -26.198959350586}, + {27.893600463867, -26.124801635742}, + {27.967758178711, -26.127548217773}, + {28.199844360352, -25.773239135742}, + {28.168258666992, -25.87760925293}, + {28.220443725586, -25.71418762207}, + {28.088607788086, -26.076736450195}, + {27.127304077148, -25.589218139648}, + {18.501663208008, -34.047317504883}, + {18.437118530273, -34.144821166992}, + {27.870256, -26.732571}, + {28.339621, -26.466753}, + {18.471450805664, -33.91960144043}, + {27.683487, -26.246338}, + {27.975997924805, -26.150894165039}, + {28.048782348633, -26.13166809082}, + {28.058395385742, -26.039657592773}, + {27.938919067383, -26.07536315918}, + {27.945785522461, -26.091842651367}, + {28.078994750977, -26.082229614258}, + {-90.171661, 35.14595}, + {-88.711853, 34.210053}, + {-80.183417, 25.773158}, + {-81.947518, 26.56236}, + {-81.795432, 26.531092}, + {-80.156514, 26.106421}, + {-80.156999, 25.691275}, + {-80.480839, 27.643282}, + {-80.132887, 26.847791}, + {-80.259687, 26.023974}, + {-80.191224, 26.541824}, + {-80.414623, 25.779161}, + {-80.300404, 25.797094}, + {-80.087489, 26.616314}, + {-80.210494995117, 25.910568237305}, + {-88.898666, 30.449936}, + {-88.174919, 30.581676}, + {-88.582072, 30.605852}, + {-90.005438, 29.898543}, + {-80.677282, 41.091346}, + {-81.659317016602, 40.834121704102}, + {-82.509788, 40.695628}, + {-81.208423, 41.354142}, + {-104.984076, 39.563828}, + {-104.90364074707, 39.607772827148}, + {-104.720993, 38.799362}, + {-104.663243, 38.297942}, + {-104.985796, 39.728622}, + {-104.997001, 39.861993}, + {-105.05744934082, 39.537734985352}, + {-105.132265, 39.937344}, + {-104.846845, 39.925199}, + {-105.26756286621, 40.045852661133}, + {-87.663345336914, 41.721267700195}, + {-88.502155, 41.672083}, + {-87.431451, 41.6462}, + {-87.634888, 41.437525}, + {-88.189315795898, 41.725387573242}, + {-87.881012, 41.921997}, + {-87.629866, 41.895665}, + {-87.615649, 41.850921}, + {37.668685913086, 55.853805541992}, + {37.624740600586, 55.857925415039}, + {37.647171, 55.813065}, + {37.674179077148, 55.889511108398}, + {37.957077026367, 55.844192504883}, + {37.774593, 55.908102}, + {37.309572, 56.28296}, + {37.230148, 56.253891}, + {37.752456665039, 55.932083129883}, + {36.593399047852, 50.595474243164}, + {36.174545288086, 51.788864135742}, + {36.195161, 51.699611}, + {40.735931, 56.955185}, + {36.077041625977, 52.958908081055}, + {39.650344848633, 52.573013305664}, + {39.242477416992, 51.586990356445}, + {39.009017944336, 51.639175415039}, + {38.927993774414, 51.636428833008}, + {6.1516571044922, 46.242141723633}, + {8.346176, 47.326584}, + {6.330185, 46.666031}, + {7.5263214111328, 47.21305847168}, + {8.5961151123047, 47.383346557617}, + {8.631821, 47.719955}, + {8.1758880615234, 47.464370727539}, + {8.0495452880859, 47.375106811523}, + {8.5823822021484, 47.656631469727}, + {8.47023, 47.117844}, + {8.936005, 47.236404}, + {8.5082244873047, 47.475357055664}, + {9.082375, 47.331161}, + {9.2621612548828, 47.553634643555}, + {8.980362, 47.488404}, + {7.6801300048828, 46.680221557617}, + {7.6691436767578, 46.665115356445}, + {145.01564, -37.860947}, + {144.99961853027, -37.859573364258}, + {144.97023, -37.85051}, + {145.09574890137, -38.190536499023}, + {145.24269104004, -38.06282043457}, + {145.014725, -37.965317}, + {145.10124206543, -38.264694213867}, + {145.02433776855, -37.922744750977}, + {145.1602935791, -37.796401977539}, + {145.385277, -37.784598}, + {145.136261, -37.74456}, + {146.79588317871, -19.291305541992}, + {145.583463, -16.675186}, + {153.431316, -28.005359}, + {153.42887878418, -28.022689819336}, + {151.66306, -27.402239}, + {152.89878845215, -27.623062133789}, + {153.13842, -27.682453}, + {153.035678, -27.472971}, + {153.03337097168, -27.513198852539}, + {153.01689147949, -27.461013793945}, + {153.194672, -27.522815}, + {153.016891, -27.364099}, + {145.418482, -37.626461}, + {152.922592, -27.101212}, + {151.557083, -24.430847}, + {115.767746, -32.348557}, + {151.434959, -32.748896}, + {151.11625671387, -33.771286010742}, + {151.341019, -33.423386}, + {150.54039, -33.688431}, + {145.00785827637, -37.712631225586}, + {151.64841, -27.457924}, + {115.86644, -31.957169}, + {115.82954406738, -32.235946655273}, + {115.92567443848, -31.972274780273}, + {144.95429992676, -37.817001342773}, + {144.49150085449, -37.394027709961}, + {152.70240783691, -25.531539916992}, + {106.809692, -6.149597}, + {106.86882, -6.658859}, + {107.026062, -6.236458}, + {10.868912, 44.496346}, + {10.880356, 44.512711}, + {11.574783325195, 44.926528930664}, + {11.290512084961, 44.834518432617}, + {10.730209350586, 44.307174682617}, + {10.837326049805, 44.349746704102}, + {12.23877, 44.149246}, + {11.524964, 45.069943}, + {12.336502, 44.143753}, + {12.325973510742, 46.097946166992}, + {12.22297668457, 46.435775756836}, + {13.77067565918, 41.721267700195}, + {12.960433959961, 40.895919799805}, + {13.010853, 41.737551}, + {13.187027, 41.669769}, + {13.47147, 41.545315}, + {11.729107, 42.254448}, + {12.082901000977, 42.449111938477}, + {12.487335, 41.85173}, + {12.389144897461, 41.910781860352}, + {9.6865081787109, 40.630874633789}, + {9.2484283447266, 39.687423706055}, + {-0.535165, 45.947612}, + {-4.192466, 48.073563}, + {-4.672635, 48.363639}, + {-2.832823, 48.586335}, + {-2.1004486083984, 47.945022583008}, + {5.224021, 45.169394}, + {5.9662628173828, 43.115158081055}, + {1.452605, 43.688958}, + {1.333153, 43.461227}, + {-50.062637329102, -21.727523803711}, + {-47.114181518555, -23.713302612305}, + {-47.715264, -23.811873}, + {-47.935409545898, -21.194686889648}, + {-49.505556, -20.822341}, + {-49.912577, -20.075337}, + {-50.458625, -21.21274}, + {-50.859272, -21.779813}, + {-46.982345581055, -22.756118774414}, + {-46.64176940918, -23.533401489258}, + {-46.662368774414, -23.532028198242}, + {-46.592330932617, -23.488082885742}, + {-46.600570678711, -23.508682250977}, + {-45.603561401367, -22.986831665039}, + {-46.034774780273, -23.808059692383}, + {-47.755508422852, -21.164474487305}, + {-47.892838, -20.898571}, + {-47.170486450195, -22.576217651367}, + {106.91688537598, -6.1832427978516}, + {106.908646, -6.181183}, + {106.84547424316, -6.2752532958984}, + {106.86470031738, -6.2436676025391}, + {106.83149, -6.23243}, + {106.80839538574, -6.2450408935547}, + {106.840518, -6.257162}, + {106.838104, -6.241901}, + {106.54609680176, -6.1653900146484}, + {106.72484, -6.342331}, + {106.783638, -6.322727}, + {106.24054, -6.127625}, + {106.71775817871, -6.3535308837891}, + {106.77543640137, -6.5567779541016}, + {106.809281, -6.462654}, + {107.84660339355, -6.9646453857422}, + {107.668785, -6.975628}, + {107.647133, -6.935806}, + {107.61177062988, -6.9014739990234}, + {107.568741, -6.408463}, + {107.63511657715, -6.6638946533203}, + {107.674751, -6.519904}, + {-122.966537, 45.510635}, + {-122.38151550293, 45.658493041992}, + {-122.504904, 45.596571}, + {-122.490234, 45.631027}, + {-122.746639, 45.597038}, + {-122.68226623535, 45.522537231445}, + {-71.144027709961, 42.052230834961}, + {-71.347274780273, 42.273330688477}, + {-71.112442016602, 42.320022583008}, + {-71.230754, 42.117522}, + {-71.529064, 42.184582}, + {-71.247024536133, 42.348861694336}, + {-71.134892, 42.363346}, + {-71.534042358398, 41.869583129883}, + {-71.039824, 42.407098}, + {-71.510696, 41.842804}, + {-71.085314, 42.35807}, + {-71.023178100586, 42.255477905273}, + {-71.650772, 41.587372}, + {-71.226425170898, 41.762466430664}, + {-118.757651, 34.141345}, + {-119.1886138916, 34.284896850586}, + {-120.52345275879, 35.516738891602}, + {-119.2064666748, 34.19563293457}, + {-119.08424377441, 34.413986206055}, + {-119.89585876465, 34.431838989258}, + {-118.460307, 34.026543}, + {-118.479814, 34.010201}, + {-118.509103, 34.029482}, + {-118.404746, 34.313595}, + {-117.729823, 33.734485}, + {-118.28910827637, 34.014358520508}, + {-118.352737, 34.215775}, + {-118.182335, 34.199753}, + {-118.43193054199, 34.194259643555}, + {-118.860854, 34.963303}, + {-118.7574005127, 34.661178588867}, + {-118.236216, 34.110741}, + {-118.19160461426, 34.625473022461}, + {-118.274002, 34.029922}, + {137.01942443848, 35.298385620117}, + {136.9425201416, 35.155563354492}, + {137.12242126465, 35.056686401367}, + {137.07298278809, 35.023727416992}, + {136.97685241699, 35.029220581055}, + {136.86698913574, 35.189895629883}, + {137.33253479004, 34.797134399414}, + {136.49345397949, 35.365676879883}, + {137.43827819824, 34.725723266602}, + {137.37785339355, 34.850692749023}, + {137.36000061035, 34.863052368164}, + {137.34764099121, 34.868545532227}, + {138.50120544434, 35.045700073242}, + {137.96699523926, 34.736709594727}, + {138.26362609863, 34.868545532227}, + {138.98872375488, 34.74494934082}, + {138.93516540527, 34.999008178711}, + {138.8939666748, 35.229721069336}, + {138.99696350098, 35.358810424805}, + {138.90357971191, 35.185775756836}, + {132.35847473145, 34.365921020508}, + {132.12089538574, 34.383773803711}, + {-3.42819, 38.701477}, + {-5.3757476806641, 38.28254699707}, + {-8.409691, 43.367844}, + {-8.744431, 42.948532}, + {3.106047, 42.03188}, + {-3.431683, 36.709957}, + {-1.6692352294922, 40.773696899414}, + {3.1510162353516, 42.365341186523}, + {-7.197201, 37.264071}, + {-3.728882, 38.077655}, + {-2.4478912353516, 38.208389282227}, + {-7.24411, 42.909851}, + {-3.8239288330078, 40.31364440918}, + {-7.8820037841797, 43.025894165039}, + {-3.623717, 40.376816}, + {-4.142532, 40.178375}, + {-3.724777, 40.429276}, + {100.44319152832, 13.734970092773}, + {100.419979, 13.567671}, + {100.58464050293, 13.670425415039}, + {100.79063415527, 13.577041625977}, + {100.787888, 13.568344}, + {100.482533, 13.728047}, + {100.50498962402, 13.703384399414}, + {100.50910949707, 13.740463256836}, + {100.61210632324, 13.862686157227}, + {100.490917, 13.717182}, + {99.150924682617, 18.717269897461}, + {99.071273803711, 18.74885559082}, + {99.494247436523, 19.136123657227}, + {98.917079, 18.735509}, + {98.967361, 18.801956}, + {98.974403, 18.557254}, + {99.023208618164, 18.842239379883}, + {100.55168151855, 20.174331665039}, + {99.84992980957, 19.951858520508}, + {100.20835876465, 19.678573608398}, + {101.190948, 16.737671}, + {100.197716, 16.749001}, + {-0.170386, 51.511656}, + {-0.306826, 51.509948}, + {-0.249534, 50.829028}, + {-0.776253, 51.787148}, + {-0.680924, 51.907196}, + {1.720461, 52.549942}, + {-0.14076232910156, 51.435928344727}, + {0.030899047851562, 51.463394165039}, + {-0.27809143066406, 51.499099731445}, + {-0.10231, 51.521759}, + {0.022792, 51.468577}, + {-0.260239, 51.276707}, + {-0.14076232910156, 51.485366821289}, + {-0.054244995117188, 51.499099731445}, + {-0.13801574707031, 51.496353149414}, + {-1.821007, 51.604065}, + {-0.838806, 51.26976}, + {-3.253368, 51.464767}, + {-3.1304168701172, 51.527938842773}, + {-2.668413, 51.573547}, + {-1.811929, 51.070762}, + {-2.89238, 51.633225}, + {17.321611, 59.738263}, + {17.998742, 59.390124}, + {15.641098, 59.736374}, + {11.241073608398, 59.075546264648}, + {15.235483, 59.602835}, + {17.477188110352, 60.38703918457}, + {-122.423058, 37.760696}, + {-122.64106750488, 38.253707885742}, + {-122.724958, 38.295287}, + {-120.206223, 39.296722}, + {-121.952705, 36.972771}, + {-122.058363, 37.405557}, + {-121.50858, 39.508938}, + {-122.013474, 37.308472}, + {-121.310084, 37.94294}, + {-106.73835754395, 34.727096557617}, + {-106.653214, 35.065384}, + {-106.637126, 35.071596}, + {-69.19807434082, 44.769973754883}, + {-76.536942, 40.21843}, + {-76.663475, 40.380108}, + {-75.93178, 40.334702}, + {-76.874521, 41.051726}, + {-76.801986694336, 40.553970336914}, + {-76.82258605957, 41.237869262695}, + {6.2574005126953, 46.409683227539}, + {6.3823699951172, 46.47834777832}, + {6.063919, 46.230545}, + {6.145772, 46.203886}, + {6.14886, 46.213122}, + {6.538582, 46.514568}, + {6.1379241943359, 46.19270324707}, + {6.1434173583984, 46.200942993164}, + {8.526077, 47.354279}, + {8.626928, 47.678814}, + {8.7416839599609, 47.493209838867}, + {7.243478, 47.135771}, + {7.447525, 46.985504}, + {7.2090911865234, 47.138900756836}, + {8.437598, 47.562267}, + {7.6197052001953, 47.541275024414}, + {8.9023590087891, 46.001815795898}, + {9.2319488525391, 46.404190063477}, + {9.0218353271484, 46.194076538086}, + {79.050751, 21.115036}, + {79.029463, 20.990067}, + {73.684616088867, 19.973831176758}, + {73.747787475586, 18.596420288086}, + {73.905715942383, 18.577194213867}, + {74.498977661133, 20.065841674805}, + {73.835678100586, 18.53874206543}, + {72.93663, 19.119415}, + {72.830429077148, 19.067459106445}, + {72.945785522461, 19.164962768555}, + {72.83317565918, 19.067459106445}, + {72.839012, 18.998795}, + {72.859268188477, 19.114151000977}, + {72.831802368164, 19.009780883789}, + {76.635475, 30.755882}, + {72.878494262695, 19.024887084961}, + {72.838668823242, 18.960342407227}, + {76.70036315918, 30.419082641602}, + {75.922394, 30.882568}, + {76.358413, 26.908952}, + {75.85578918457, 26.782608032227}, + {75.789528, 26.91925}, + {75.280380249023, 25.622177124023}, + {73.68599, 24.587403}, + {75.386123657227, 28.633804321289}, + {-1.7749786376953, 52.428817749023}, + {-0.14488220214844, 51.508712768555}, + {-1.0979461669922, 52.390365600586}, + {-0.13252258300781, 51.494979858398}, + {-0.94368, 52.255783}, + {-0.86174, 52.238388}, + {-2.2034454345703, 52.98225402832}, + {-5.698471, 54.580765}, + {-5.7891082763672, 54.594497680664}, + {-0.21080017089844, 51.516952514648}, + {0.188484, 52.556877}, + {-1.4591217041016, 53.381881713867}, + {-1.4467620849609, 53.332443237305}, + {-2.2638702392578, 53.416213989258}, + {-1.5991973876953, 55.134201049805}, + {-1.5470123291016, 55.042190551758}, + {-1.5799713134766, 55.086135864258}, + {-0.11878967285156, 51.571884155273}, + {-0.11329650878906, 51.589736938477}, + {-0.07576, 51.615829}, + {107.58018493652, -6.8822479248047}, + {110.483986, -7.308178}, + {107.0858001709, -6.2848663330078}, + {110.41191101074, -7.7611541748047}, + {107.08030700684, -6.2848663330078}, + {112.73551940918, -7.3628997802734}, + {112.23426818848, -7.5249481201172}, + {112.656555, -7.156906}, + {112.69157409668, -7.2599029541016}, + {112.73551940918, -7.2873687744141}, + {112.70805358887, -7.2585296630859}, + {112.63114929199, -7.9506683349609}, + {106.80290222168, -6.1324310302734}, + {107.61863708496, -6.8849945068359}, + {103.623767, -1.61843}, + {106.87156677246, -6.3082122802734}, + {105.252054, -5.429423}, + {114.62928771973, -3.3570098876953}, + {116.899902, -1.224916}, + {115.07972717285, -3.1455230712891}, + {117.11357116699, -0.52391052246094}, + {119.459926, -5.18541}, + {109.41352844238, -7.4246978759766}, + {124.314306, 0.572335}, + {-57.570669, -25.300952}, + {-57.535858, -25.221176}, + {-57.573165893555, -25.35026550293}, + {-57.604751586914, -25.289840698242}, + {-57.427597045898, -25.361251831055}, + {-57.59651184082, -25.326919555664}, + {-57.610244750977, -25.287094116211}, + {-57.556686401367, -25.300827026367}, + {-57.548446655273, -25.261001586914}, + {-57.571792602539, -25.285720825195}, + {-57.155685424805, -25.385971069336}, + {-55.743372, -22.511576}, + {-57.542782, -25.394554}, + {-57.407051, -25.375309}, + {-57.650454, -25.281966}, + {14.382248, 67.282791}, + {8.1401824951172, 59.723739624023}, + {10.244064331055, 59.212875366211}, + {16.535110473633, 68.79020690918}, + {6.0266876220703, 58.40950012207}, + {14.42024230957, 67.289199829102}, + {9.0685272216797, 59.413375854492}, + {10.064163, 60.496445}, + {10.394211, 60.238724}, + {11.010360717773, 59.251327514648}, + {10.406112670898, 59.293899536133}, + {6.416702, 59.874802}, + {6.397883, 61.941889}, + {11.114730834961, 63.259963989258}, + {7.687268, 62.905599}, + {14.778671264648, 67.342758178711}, + {10.97053527832, 63.456344604492}, + {5.567692, 60.235956}, + {5.4759979248047, 60.406265258789}, + {4.9527740478516, 60.566940307617}, + {5.724564, 58.906288}, + {-6.8149566650391, 34.037704467773}, + {-4.015274, 31.111908}, + {-6.6666412353516, 32.514724731445}, + {-7.9808807373047, 31.569900512695}, + {10.217285, 36.738968}, + {10.31218, 36.870529}, + {10.319595336914, 36.891403198242}, + {9.203568, 36.713791}, + {10.672074, 35.78682}, + {10.590133666992, 36.397018432617}, + {10.819473266602, 32.87727355957}, + {9.968487, 35.331373}, + {9.2498016357422, 36.730728149414}, + {10.186386108398, 36.874923706055}, + {10.071716, 36.728668}, + {10.130081176758, 36.806259155273}, + {9.0135955810547, 33.485641479492}, + {10.17951965332, 36.881790161133}, + {10.18913269043, 36.865310668945}, + {10.189778, 36.801465}, + {10.232391, 36.833038}, + {9.8993682861328, 37.244338989258}, + {-79.187455, 43.811229}, + {-79.411307, 43.767469}, + {-82.976549, 42.326672}, + {-82.961884, 42.267838}, + {-79.622243, 43.583491}, + {-79.362392, 44.071823}, + {-79.66601, 43.535361}, + {-81.737595, 46.153564}, + {-79.484422, 44.044741}, + {-80.944111, 46.497537}, + {-79.73382, 43.666929}, + {-79.690017700195, 43.698806762695}, + {-79.301997, 43.847863}, + {-79.390673, 43.706262}, + {-79.397114, 43.701424}, + {-79.324842, 43.69629}, + {-79.291763305664, 43.724899291992}, + {-79.294509887695, 43.669967651367}, + {-79.45930480957, 43.646621704102}, + {-79.42497253418, 43.660354614258}, + {-79.470291137695, 43.667221069336}, + {-84.54460144043, 42.660598754883}, + {-86.315117, 41.807785}, + {-122.7921295166, 47.026290893555}, + {-122.38384, 47.671843}, + {-123.055572, 46.808167}, + {-122.26066589355, 47.898330688477}, + {-122.14393615723, 47.968368530273}, + {-122.56828308105, 47.214431762695}, + {-122.336916, 47.578354}, + {-122.310301, 47.39139}, + {-122.3705291748, 47.523422241211}, + {-122.24418640137, 47.372360229492}, + {-157.842636, 21.304339}, + {-157.859961, 21.337404}, + {-156.647693, 20.849036}, + {-118.388476, 34.187393}, + {-118.561821, 34.239235}, + {-118.470383, 34.146847}, + {-118.066085, 34.723801}, + {-118.487549, 34.045944}, + {-118.481506, 34.014084}, + {-118.49922180176, 34.014358520508}, + {-118.34266662598, 34.118728637695}, + {-118.29734802246, 33.720474243164}, + {115.442963, -20.828705}, + {118.611922, -20.409702}, + {131.18019104004, -12.589645385742}, + {130.908279, -12.404251}, + {138.484457, -34.873083}, + {138.677322, -34.818593}, + {138.695526, -34.676285}, + {138.612022, -34.461676}, + {138.00270080566, -33.189010620117}, + {149.899192, -32.330198}, + {149.826895, -32.294478}, + {151.496662, -33.275188}, + {151.560576, -32.876521}, + {153.61813, -28.642725}, + {152.5908, -31.696666}, + {150.933085, -31.07772}, + {143.08525085449, -30.854415893555}, + {144.4654083252, -37.716751098633}, + {-80.247573852539, 26.301956176758}, + {-80.207748413086, 26.27311706543}, + {-80.29426574707, 26.10969543457}, + {-80.181655883789, 26.811447143555}, + {-80.058059692383, 26.803207397461}, + {-80.158309936523, 25.719680786133}, + {-80.529098510742, 25.403823852539}, + {-80.361557006836, 25.586471557617}, + {-80.10612487793, 26.138534545898}, + {-81.835098266602, 26.598587036133}, + {-80.248947, 26.017685}, + {-81.686661, 26.075001}, + {-81.667556762695, 26.61506652832}, + {-81.694363, 26.153737}, + {-87.935257, 42.950089}, + {-87.892685, 43.019791}, + {-88.035507202148, 43.043746948242}, + {-88.271146, 43.065698}, + {-93.002701, 45.295029}, + {-88.042373657227, 43.002548217773}, + {-87.858353, 43.748246}, + {-84.036483764648, 9.8870086669922}, + {-84.637985229492, 9.6617889404297}, + {-83.653337, 9.908984}, + {-84.150925, 9.992523}, + {-84.639358520508, 9.6933746337891}, + {-85.235366821289, 10.616226196289}, + {-79.530716, 8.917007}, + {-78.305740356445, 8.1868743896484}, + {-82.873306274414, 8.1250762939453}, + {-79.309616088867, 9.0836334228516}, + {-79.838333, 8.837814}, + {-80.268173217773, 7.9259490966797}, + {-79.716110229492, 8.9147186279297}, + {-82.442092895508, 8.4299468994141}, + {-76.9998, -12.011237}, + {-76.936961, -12.054715}, + {31.403732299805, 30.026321411133}, + {30.146463, 31.229662}, + {31.336441040039, 30.090866088867}, + {31.681137084961, 31.447677612305}, + {31.63444519043, 31.223831176758}, + {31.48407, 31.443558}, + {32.496871948242, 30.009841918945}, + {32.540817260742, 29.968643188477}, + {31.013717651367, 30.041427612305}, + {31.001358032227, 30.03044128418}, + {30.999984741211, 30.796737670898}, + {31.343307, 30.045672}, + {31.373519897461, 30.13069152832}, + {31.274642944336, 29.979629516602}, + {31.343307495117, 30.147171020508}, + {31.2982, 30.090323}, + {31.343307495117, 30.101852416992}, + {31.333694458008, 29.843673706055}, + {31.47102355957, 30.00846862793}, + {31.247177124023, 30.114212036133}, + {31.175765991211, 29.972763061523}, + {31.236190795898, 29.693984985352}, + {31.258163452148, 30.778884887695}, + {30.999984741211, 30.788497924805}, + {-76.620516, 39.291981}, + {-76.626205, 39.088161}, + {-76.685257, 39.372391}, + {-76.869247, 39.174027}, + {-76.725078, 39.161494}, + {-76.262979, 39.479388}, + {-70.806198120117, 41.987686157227}, + {-70.526733, 41.583252}, + {-71.10208, 42.139123}, + {-71.355789, 42.170334}, + {-71.903457641602, 42.201919555664}, + {-71.881943, 42.534714}, + {-71.83136, 42.282944}, + {-70.961380004883, 42.098922729492}, + {-71.053085, 42.354202}, + {-72.346115, 42.481155}, + {-71.160507202148, 42.418899536133}, + {-72.42805480957, 42.318649291992}, + {-71.086693, 42.39418}, + {-71.024551, 42.457352}, + {-71.357574, 42.636108}, + {-70.97731, 42.383194}, + {-70.894328, 42.86086}, + {-72.232459, 42.18083}, + {72.841244, 19.222813}, + {72.81958, 18.957596}, + {72.857895, 19.17693}, + {72.841415405273, 19.011154174805}, + {72.831802368164, 18.957595825195}, + {72.832947, 18.968353}, + {72.938919067383, 19.180068969727}, + {72.975998, 19.234829}, + {72.954712, 19.198608}, + {72.87408, 19.210134}, + {72.983551, 19.205475}, + {72.841415405273, 19.116897583008}, + {73.871383666992, 15.929489135742}, + {73.804092407227, 18.577194213867}, + {73.83430480957, 18.503036499023}, + {73.069381713867, 19.295425415039}, + {75.383377075195, 19.895553588867}, + {74.477005004883, 19.578323364258}, + {75.914840698242, 17.666702270508}, + {73.771133422852, 18.608779907227}, + {-1.40831, 53.060074}, + {-1.3272857666016, 53.219833374023}, + {-1.3066864013672, 52.927322387695}, + {-3.2842254638672, 52.645797729492}, + {-2.2570037841797, 52.781753540039}, + {-2.411911, 52.67189}, + {-0.269577, 52.662003}, + {-0.91529846191406, 52.493362426758}, + {-0.487432, 52.647429}, + {-1.3932037353516, 53.090744018555}, + {-1.567841, 52.86438}, + {-2.1169281005859, 52.691116333008}, + {-0.82328796386719, 53.116836547852}, + {-3.180052, 55.925217}, + {-3.164968, 55.898613}, + {0.003433, 51.445999}, + {-3.0892181396484, 55.923843383789}, + {-1.6335296630859, 53.347549438477}, + {-1.0965728759766, 53.961410522461}, + {78.397750854492, 17.363204956055}, + {78.455429077148, 17.511520385742}, + {78.432083129883, 17.360458374023}, + {78.526840209961, 17.485427856445}, + {78.540573, 17.511978}, + {78.504867553711, 17.422256469727}, + {78.440322875977, 17.44010925293}, + {78.427963256836, 17.449722290039}, + {78.44856262207, 17.425003051758}, + {83.290786743164, 17.724380493164}, + {82.921371459961, 17.651596069336}, + {82.978706, 17.673569}, + {80.651321411133, 16.496658325195}, + {78.542976, 14.632759}, + {80.91568, 16.256332}, + {81.729354858398, 16.423873901367}, + {81.008377075195, 16.42936706543}, + {79.607620239258, 18.63899230957}, + {79.505996704102, 13.636093139648}, + {78.662796020508, 17.779312133789}, + {77.582016, 14.673958}, + {78.011856079102, 15.822372436523}, + {78.471908569336, 15.483169555664}, + {8.8419342041016, 44.897689819336}, + {8.7142181396484, 45.618667602539}, + {10.123925, 45.25534}, + {9.1907501220703, 45.418167114258}, + {9.0891265869141, 45.569229125977}, + {9.0177154541016, 45.570602416992}, + {8.2816314697266, 44.345626831055}, + {9.031448, 45.625992}, + {8.8982391357422, 44.46647644043}, + {9.7112274169922, 45.500564575195}, + {10.055923461914, 45.80680847168}, + {9.4489288330078, 46.150131225586}, + {9.814377, 45.771255}, + {9.76387, 45.746841}, + {9.6288299560547, 45.78483581543}, + {9.606857, 45.519104}, + {9.5409393310547, 45.611801147461}, + {9.3926239013672, 45.574722290039}, + {8.7746429443359, 45.688705444336}, + {9.1179656982422, 45.757369995117}, + {139.61082458496, 35.581283569336}, + {139.52568054199, 35.595016479492}, + {139.33616638184, 35.596389770508}, + {139.58061218262, 35.614242553711}, + {139.39659118652, 35.56755065918}, + {139.34577941895, 35.584030151367}, + {139.50370788574, 35.546951293945}, + {139.481618, 35.507346}, + {139.63005065918, 35.367050170898}, + {139.55658, 35.342331}, + {139.534607, 35.400009}, + {139.61906433105, 35.449447631836}, + {139.61357116699, 35.450820922852}, + {138.38584899902, 35.860061645508}, + {137.96699523926, 36.211624145508}, + {139.6231842041, 35.438461303711}, + {138.8843536377, 37.68928527832}, + {139.45152282715, 35.408248901367}, + {138.86650085449, 37.466812133789}, + {139.37461853027, 35.371170043945}, + {139.77149963379, 35.67741394043}, + {139.77973937988, 35.68977355957}, + {139.74128723145, 35.670547485352}, + {139.77699279785, 35.687026977539}, + {-58.443832397461, -34.633712768555}, + {-58.36555480957, -34.757308959961}, + {-58.393478, -34.674912}, + {-58.368301391602, -34.637832641602}, + {-58.442802, -34.685898}, + {-58.478164672852, -34.510116577148}, + {-58.50700378418, -34.655685424805}, + {-58.43147277832, -34.668045043945}, + {-58.534469604492, -34.451065063477}, + {-58.457565307617, -34.672164916992}, + {-58.583908081055, -34.695510864258}, + {-58.417739868164, -34.573287963867}, + {-58.57292175293, -34.681777954102}, + {-58.920364379883, -34.474411010742}, + {-58.383865, -34.591828}, + {-58.38752746582, -34.585647583008}, + {-58.709984, -34.494764}, + {-58.40950012207, -34.588394165039}, + {-58.386154174805, -34.608993530273}, + {121.568748, 25.053188}, + {121.61109924316, 25.067367553711}, + {121.55754089355, 25.045394897461}, + {121.78688049316, 25.136032104492}, + {121.563721, 25.079727}, + {121.61247253418, 25.056381225586}, + {121.31446838379, 24.991836547852}, + {121.32133483887, 24.98908996582}, + {121.620712, 25.053291}, + {121.31446838379, 24.991836547852}, + {121.20735168457, 24.960250854492}, + {121.23069763184, 24.94514465332}, + {121.349716, 25.019302}, + {121.33232116699, 25.044021606445}, + {121.25267028809, 24.880599975586}, + {121.30348205566, 25.041275024414}, + {121.04942321777, 24.773483276367}, + {121.0425567627, 25.017929077148}, + {121.22383117676, 24.919052124023}, + {121.03843688965, 25.002822875977}, + {121.01371765137, 24.792709350586}, + {120.92582702637, 24.746017456055}, + {121.0164642334, 24.789962768555}, + {76.222458, 31.527329}, + {75.940933, 32.53624}, + {93.920059204102, 24.799575805664}, + {77.41584777832, 23.243637084961}, + {77.421684, 23.266296}, + {76.880271, 23.320202}, + {82.723617553711, 22.024154663086}, + {77.389755249023, 23.302688598633}, + {75.501938, 23.575058}, + {75.681381225586, 22.676467895508}, + {75.832443237305, 22.710800170898}, + {80.005874633789, 23.198318481445}, + {79.343948364258, 24.173355102539}, + {78.153305053711, 23.006057739258}, + {75.903854370117, 22.749252319336}, + {81.891405, 21.706925}, + {74.95491027832, 24.342269897461}, + {78.165664672852, 24.159622192383}, + {79.298629760742, 22.050247192383}, + {72.842788696289, 19.005661010742}, + {77.435073852539, 23.217544555664}, + {79.100875854492, 23.759994506836}, + {-46.817207, -23.560181}, + {-46.845016479492, -23.505935668945}, + {-43.231887817383, -22.876968383789}, + {-35.25032043457, -5.6490325927734}, + {-40.402908325195, -20.343246459961}, + {-41.772079467773, -22.160110473633}, + {-42.821805, -22.72215}, + {-38.469691, -12.860963}, + {-39.278182983398, -14.785537719727}, + {-39.261914, -12.96515}, + {-38.95133972168, -12.25456237793}, + {-41.921768188477, -11.241073608398}, + {-37.032612, -10.904087}, + {-37.068557739258, -10.905990600586}, + {-35.740585327148, -9.6617889404297}, + {-35.181885, -5.885215}, + {-35.2577, -5.825763}, + {-42.834549, -5.048447}, + {-76.973337, -12.110099}, + {-76.983112, -12.085033}, + {-76.990693, -12.101935}, + {-77.124710083008, -12.060928344727}, + {-77.103533, -12.026763}, + {-76.936393, -12.223038}, + {-76.982396, -12.194453}, + {-79.045944213867, -8.0866241455078}, + {-78.31183, -8.004693}, + {-71.53475, -16.40343}, + {-71.870498657227, -16.721878051758}, + {-71.539328, -16.403377}, + {-71.499710083008, -16.488418579102}, + {-75.214789, -12.062296}, + {-80.316057, -3.512576}, + {-75.703353881836, -11.414108276367}, + {-72.682113647461, -13.54133605957}, + {-71.55876159668, -16.379928588867}, + {-80.631846, -3.66109}, + {-77.010726928711, -12.074661254883}, + {-77.057418823242, -11.971664428711}, + {-77.054672241211, -12.074661254883}, + {-77.032699584961, -12.066421508789}, + {14.079666137695, 50.526809692383}, + {14.416763, 50.073624}, + {14.920120239258, 50.43342590332}, + {14.493223, 50.049885}, + {14.487076, 50.054855}, + {14.388657, 50.088558}, + {14.457564, 50.077744}, + {14.47380065918, 50.014572143555}, + {15.805892944336, 49.926681518555}, + {12.713241577148, 49.716567993164}, + {13.53035, 49.234543}, + {15.037398, 50.45897}, + {15.23941, 50.077744}, + {14.252701, 50.160828}, + {14.126358, 50.128967}, + {16.314010620117, 49.023056030273}, + {15.579299926758, 49.95002746582}, + {14.488906860352, 48.977737426758}, + {15.984077, 50.30365}, + {-42.828140258789, -5.1107025146484}, + {-41.414633, -7.061752}, + {-43.292266, -22.686288}, + {-42.926972, -22.384704}, + {-43.221213, -22.963778}, + {-43.185878, -22.949422}, + {-43.369217, -22.973785}, + {-35.05324, -8.421558}, + {-48.45996, -1.303371}, + {-46.41415, -23.558486}, + {-46.543469, -23.475417}, + {-51.38786315918, -22.121658325195}, + {-46.573104858398, -23.396072387695}, + {-49.869003295898, -21.137008666992}, + {-34.942472, -8.068949}, + {-34.846572875977, -7.9698944091797}, + {-46.552505493164, -23.299942016602}, + {-42.987442016602, -22.886581420898}, + {-46.660995483398, -23.488082885742}, + {-35.29426574707, -8.1140899658203}, + {-46.696701049805, -23.503189086914}, + {-35.29662, -8.118489}, + {2.708817, 48.423259}, + {2.799083, 48.650894}, + {2.5261688232422, 48.67561340332}, + {0.948257, 48.215561}, + {2.453247, 48.921295}, + {2.4575042724609, 48.937911987305}, + {2.141098, 48.870896}, + {2.2295379638672, 48.764877319336}, + {2.341667, 48.784721}, + {2.264385, 48.801956}, + {2.307387, 48.765663}, + {2.3902130126953, 48.760757446289}, + {2.432098, 48.724594}, + {2.5247955322266, 48.701705932617}, + {2.377812, 48.869275}, + {2.369499, 48.873711}, + {2.3902130126953, 48.869247436523}, + {2.368521, 48.860912}, + {2.4671173095703, 48.887100219727}, + {2.3435211181641, 48.847274780273}, + {2.3819732666016, 48.865127563477}, + {2.3517608642578, 48.843154907227}, + {101.436996, 1.676102}, + {106.87294006348, -6.2615203857422}, + {104.762662, -2.970928}, + {102.86567687988, -3.2855987548828}, + {102.28340148926, -3.7593841552734}, + {102.273535, -3.815369}, + {105.24284362793, -5.3592681884766}, + {105.20576477051, -5.0186920166016}, + {106.79740905762, -6.1846160888672}, + {106.98829650879, -6.2052154541016}, + {106.99104309082, -6.2807464599609}, + {106.83586120605, -6.4400482177734}, + {106.68617248535, -6.1598968505859}, + {106.634916, -6.169284}, + {106.772073, -6.212851}, + {106.713638, -6.154633}, + {106.77955627441, -6.2450408935547}, + {106.729993, -6.180371}, + {106.962891, -6.107712}, + {106.7699432373, -6.2065887451172}, + {106.77406311035, -6.2148284912109}, + {106.874153, -6.160483}, + {106.75895690918, -6.2450408935547}, + {86.114273071289, 21.113662719727}, + {86.046197, 20.601818}, + {85.256514, 19.790086}, + {86.247482, 20.924835}, + {85.198287963867, 20.844497680664}, + {84.769821166992, 19.321517944336}, + {84.13948059082, 18.803787231445}, + {82.527236938477, 19.299545288086}, + {86.09504699707, 22.359237670898}, + {83.761825561523, 21.266098022461}, + {82.981796, 25.340927}, + {79.905624389648, 27.894973754883}, + {79.889832, 27.965698}, + {81.891403198242, 27.141036987305}, + {80.890274047852, 26.774368286133}, + {83.142929, 25.290298}, + {83.870315551758, 26.914443969727}, + {83.857955932617, 25.858383178711}, + {79.489517211914, 25.995712280273}, + {81.808548, 26.373367}, + {80.929642, 26.8293}, + {82.717438, 26.802864}, + {80.320358276367, 26.437911987305}, + {81.233988, 25.69353}, + {9.5793914794922, 45.47721862793}, + {9.0740203857422, 45.550003051758}, + {9.0369415283203, 45.541763305664}, + {9.0740203857422, 45.488204956055}, + {8.9586639404297, 45.449752807617}, + {9.525038, 45.603055}, + {9.273653, 45.718195}, + {9.218765, 45.707382}, + {9.137148, 45.697591}, + {9.198658, 45.651766}, + {11.33693, 45.511551}, + {11.517105102539, 45.69694519043}, + {10.79263, 45.489976}, + {12.370704, 46.424201}, + {12.057724, 46.79924}, + {11.95158, 45.889034}, + {12.273788452148, 45.685958862305}, + {12.670669555664, 45.512924194336}, + {12.253647, 45.851212}, + {12.027283, 45.270538}, + {15.454330444336, 47.070236206055}, + {16.310368, 48.234459}, + {12.011489868164, 47.701950073242}, + {14.869877, 47.555717}, + {-4.0724945068359, 47.946395874023}, + {0.64888000488281, 45.51155090332}, + {-0.054244995117188, 43.095932006836}, + {4.620506, 44.810966}, + {5.109163, 43.6281}, + {6.510084, 44.821703}, + {2.120988, 48.86259}, + {2.504419, 48.811951}, + {5.35334, 49.444642}, + {12.180404663086, -5.5625152587891}, + {13.255005, -8.824081}, + {13.254318237305, -8.8268280029297}, + {13.235092163086, -8.8199615478516}, + {13.245392, -8.905106}, + {13.479537963867, -10.094375610352}, + {32.533858, 15.584665}, + {55.502243041992, -4.6671295166016}, + {36.403884887695, 15.457077026367}, + {32.529830932617, 15.598526000977}, + {32.505474, 15.656713}, + {32.572376, 15.541202}, + {32.566909790039, 15.620498657227}, + {22.541722, 13.455798}, + {32.581558, 15.723038}, + {32.505111694336, 15.558700561523}, + {30.098125, -1.931534}, + {29.739303588867, -2.6154327392578}, + {30.13069152832, -1.9576263427734}, + {30.060653686523, -1.9480133056641}, + {38.729172, 9.044334}, + {42.109909057617, 9.3115997314453}, + {38.804397583008, 9.0122222900391}, + {-2.593117, 53.517494}, + {-3.000831, 53.462424}, + {-1.919518, 53.754387}, + {-1.657219, 53.831205}, + {-2.705585, 53.408217}, + {-2.746239, 53.337936}, + {-1.4975738525391, 52.443923950195}, + {-1.677927, 52.510301}, + {-2.8639984130859, 53.24592590332}, + {-1.3684844970703, 52.798233032227}, + {-1.244064, 52.538956}, + {-1.1652374267578, 52.923202514648}, + {-1.495285, 52.765274}, + {-1.568985, 52.859116}, + {-0.60630798339844, 51.679000854492}, + {-0.66535949707031, 51.511459350586}, + {-0.617142, 51.712875}, + {-0.645238, 51.657984}, + {-0.89332580566406, 51.46614074707}, + {-1.295471, 51.601868}, + {7.217331, 43.692856}, + {7.25734, 43.713455}, + {7.161205, 43.660214}, + {6.758102, 43.426895}, + {6.6625213623047, 43.463973999023}, + {7.204335, 43.819955}, + {2.2364044189453, 48.887100219727}, + {2.286758, 48.859634}, + {2.3023223876953, 48.854141235352}, + {2.2638702392578, 48.841781616211}, + {2.294235, 48.918381}, + {2.330427, 48.847778}, + {2.325519, 48.846011}, + {2.2830963134766, 48.931045532227}, + {2.31429, 48.828343}, + {2.3627471923828, 48.915939331055}, + {1.696243, 49.203415}, + {1.9576263427734, 48.579483032227}, + {1.1858367919922, 49.511947631836}, + {-1.9823455810547, 48.634414672852}, + {-84.367446899414, 33.688888549805}, + {-84.77668762207, 33.900375366211}, + {-84.328994750977, 33.661422729492}, + {-83.779678344727, 34.27116394043}, + {-83.619003295898, 34.128341674805}, + {-84.342728, 33.839951}, + {-84.314346, 33.807907}, + {-84.305344, 33.798065}, + {-84.478683, 33.778283}, + {-84.496859, 33.78001}, + {-84.025032, 33.808412}, + {-84.274063110352, 33.903121948242}, + {-84.56614, 34.007715}, + {-84.681702, 33.657074}, + {-84.566162, 33.653458}, + {-84.916153, 33.915329}, + {-84.163513, 33.578854}, + {-84.204997, 33.450505}, + {-83.663421, 33.95462}, + {-84.40123, 34.081925}, + {-84.357895, 34.064826}, + {-84.29732, 34.006074}, + {-83.417857, 33.545662}, + {-83.801866, 34.096872}, + {-83.842392, 34.120255}, + {47.088088989258, 34.33708190918}, + {51.423568725586, 35.654067993164}, + {51.445267, 35.693893}, + {51.459274291992, 35.67741394043}, + {51.157150268555, 35.503005981445}, + {51.448287963867, 35.610122680664}, + {51.413955688477, 35.644454956055}, + {51.437301635742, 35.627975463867}, + {51.473007202148, 35.632095336914}, + {51.483993530273, 35.625228881836}, + {51.6436, 32.62825}, + {51.633682250977, 32.636947631836}, + {59.487533569336, 36.31462097168}, + {52.513961791992, 29.639053344727}, + {56.0495, 27.127647}, + {51.62956237793, 35.736465454102}, + {51.430435180664, 35.719985961914}, + {51.475204, 35.726303}, + {51.469505, 35.752876}, + {51.908340454102, 32.978897094727}, + {52.515335083008, 29.604721069336}, + {51.406746, 35.716209}, + {51.40022277832, 35.722732543945}, + {51.240921020508, 35.715866088867}, + {105.290032, -5.401391}, + {105.2579498291, -5.4141998291016}, + {105.26344299316, -5.3894805908203}, + {105.18379211426, -5.1505279541016}, + {122.53532409668, -3.9667510986328}, + {122.984127, 0.63569}, + {106.90727233887, -6.1585235595703}, + {106.71913146973, -6.2313079833984}, + {106.80507, -6.367081}, + {106.821205, -6.315776}, + {106.75346374512, -6.2299346923828}, + {106.86882019043, -6.2162017822266}, + {106.893809, -6.226595}, + {106.911799, -6.235162}, + {106.744662, -6.314442}, + {106.773576, -6.288547}, + {106.687313, -6.295973}, + {106.79740905762, -6.1887359619141}, + {106.814031, -6.277129}, + {106.89151, -6.150954}, + {106.89765930176, -6.4070892333984}, + {10.575607, 45.523044}, + {10.417099, 45.219727}, + {9.8224639892578, 45.574722290039}, + {10.31135559082, 45.485458374023}, + {8.967949, 45.402133}, + {9.5464324951172, 45.420913696289}, + {9.3061065673828, 45.573348999023}, + {9.229202, 45.365982}, + {9.281845, 45.460739}, + {9.1756439208984, 45.474472045898}, + {9.2154693603516, 45.484085083008}, + {9.172697, 45.456619}, + {10.308609, 45.488892}, + {9.150925, 45.493469}, + {10.272114, 45.728304}, + {9.921684, 46.169357}, + {9.654999, 45.699081}, + {9.9213409423828, 45.615921020508}, + {9.8169708251953, 45.77522277832}, + {9.4132232666016, 45.639266967773}, + {27.819442749023, 41.14860534668}, + {40.394668579102, 37.991409301758}, + {38.305892944336, 38.334732055664}, + {31.637191772461, 40.673446655273}, + {32.749557495117, 40.011520385742}, + {32.830581665039, 39.945602416992}, + {32.807235717773, 39.963455200195}, + {37.284164428711, 41.125259399414}, + {29.12956237793, 41.012649536133}, + {29.183120727539, 41.02912902832}, + {29.187240600586, 41.174697875977}, + {29.242172241211, 41.000289916992}, + {29.967269897461, 40.764083862305}, + {26.200332641602, 40.066452026367}, + {29.078064, 40.175629}, + {27.43766784668, 38.616256713867}, + {29.995651, 39.92363}, + {35.582656860352, 36.97380065918}, + {32.511978149414, 37.917251586914}, + {32.693252563477, 41.24885559082}, + {30.659408569336, 36.874923706055}, + {33.366159, 35.208103}, + {33.333206176758, 35.213241577148}, + {29.615707397461, 40.788803100586}, + {28.852157592773, 41.004409790039}, + {-52.802176, -28.319149}, + {-46.419434, -23.931656}, + {-48.70719909668, -21.06559753418}, + {-51.053446, -21.160505}, + {-47.524795532227, -19.310531616211}, + {-49.252336, -16.642604}, + {-48.865, -26.291164}, + {-45.436935, -23.669357}, + {-42.408751, -22.811388}, + {-51.475658, -25.363293}, + {-47.538528442383, -21.246871948242}, + {-38.356532, -11.813361}, + {-46.878992, -23.207183}, + {-40.627824, -15.241541}, + {-47.024863, -22.867499}, + {-55.728774, -22.539465}, + {-76.571273803711, 39.404525756836}, + {-76.705856323242, 39.088668823242}, + {-76.812973022461, 38.989791870117}, + {-76.731491, 39.248276}, + {-76.933822631836, 39.046096801758}, + {-77.301668, 38.945847}, + {-77.14325, 38.985672}, + {-77.702865600586, 39.143600463867}, + {-77.135667, 39.08108}, + {-77.728958129883, 39.142227172852}, + {-77.16165, 39.115412}, + {-81.400455, 30.312129}, + {-80.288772583008, 26.22917175293}, + {-80.387649536133, 25.872116088867}, + {-80.341415, 25.866165}, + {-80.192642, 25.887909}, + {-80.148696899414, 26.720809936523}, + {-80.166549682617, 25.972366333008}, + {-80.308456, 25.815125}, + {135.42572, 34.810181}, + {135.44563293457, 34.795761108398}, + {135.555496, 34.813222}, + {135.74089050293, 35.049819946289}, + {135.59394836426, 34.836959838867}, + {135.730911, 35.033432}, + {140.878568, 40.114713}, + {140.937228, 39.64132}, + {141.032181, 40.920124}, + {141.129837, 40.927506}, + {140.770226, 40.825882}, + {139.8429107666, 39.919509887695}, + {140.139885, 39.715405}, + {133.213348, 34.41124}, + {133.815537, 35.489273}, + {132.505692, 34.378555}, + {133.901367, 34.680405}, + {132.44499206543, 34.41535949707}, + {133.27857971191, 34.887771606445}, + {134.299622, 34.781342}, + {131.26945495605, 33.945693969727}, + {132.464905, 34.442139}, + {131.19667053223, 34.006118774414}, + {141.34254455566, 43.045120239258}, + {141.36863708496, 43.10417175293}, + {109.57969665527, -7.7515411376953}, + {109.375791, -0.034648}, + {115.38185119629, -2.1663665771484}, + {109.154485, 0.181445}, + {99.713973999023, 2.9958343505859}, + {99.65217590332, 2.5893402099609}, + {100.902557, 0.632401}, + {105.32661437988, -5.3496551513672}, + {110.34462, -7.891617}, + {110.368261, -7.809264}, + {110.440417, -7.055196}, + {110.3295135498, -7.1472930908203}, + {106.782303, -6.20018}, + {106.769415, -6.121867}, + {107.218259, -6.351134}, + {107.20390319824, -6.0926055908203}, + {106.834488, -6.185074}, + {106.817459, -6.190384}, + {106.835404, -6.174088}, + {107.399597, -6.433868}, + {106.809937, -6.253276}, + {106.813889, -6.211395}, + {106.847384, -6.24297}, + {-8.386512, 43.361134}, + {-8.62358, 42.816958}, + {-8.547917, 42.881142}, + {-7.449876, 43.363725}, + {-8.9929962158203, 42.560348510742}, + {-8.607101, 42.202606}, + {-5.6558990478516, 43.539505004883}, + {-5.8220672607422, 43.024520874023}, + {-5.4320526123047, 41.868209838867}, + {-5.572586, 42.564468}, + {-5.604401, 41.97258}, + {-3.723679, 40.394246}, + {-3.703384, 40.419388}, + {-3.69381, 40.414581}, + {-3.955917, 40.593643}, + {-3.7758636474609, 40.360336303711}, + {-3.6879730224609, 40.459213256836}, + {-3.589439, 40.484619}, + {-3.504641, 40.422822}, + {-35.104889, -6.225843}, + {-38.570938110352, -3.7841033935547}, + {-59.970245, -3.112564}, + {-44.239883422852, -2.4890899658203}, + {-35.255037, -5.940679}, + {-38.531113, -3.78479}, + {-43.009414672852, -22.815170288086}, + {-34.910946, -8.095379}, + {-34.927482, -8.056477}, + {-34.911117553711, -8.0248260498047}, + {-38.363571166992, -4.1274261474609}, + {-49.892494, -6.053038}, + {-48.471873, -1.406201}, + {-42.540235, -15.614692}, + {-46.873921, -17.219319}, + {-43.96171, -19.909086}, + {-44.064102172852, -19.964218139648}, + {-44.039461, -19.9765}, + {-43.487319946289, -23.032150268555}, + {-34.942194, -7.138795}, + {30.343552, -29.678192}, + {30.949172973633, -29.913711547852}, + {18.453598022461, -33.977279663086}, + {18.505783081055, -34.000625610352}, + {18.936996459961, -34.135208129883}, + {18.671951293945, -33.88801574707}, + {25.840530395508, -33.021469116211}, + {26.50589, -33.30986}, + {27.524185180664, -32.881393432617}, + {28.445663452148, -26.303329467773}, + {24.49333190918, -32.264785766602}, + {29.792861938477, -25.550765991211}, + {79.992141723633, 12.954940795898}, + {78.723220825195, 10.705490112305}, + {79.998322, 12.878036}, + {79.788895, 12.62352}, + {76.937943, 10.945129}, + {79.100875854492, 11.540451049805}, + {79.831467, 11.950378}, + {78.160171508789, 12.580032348633}, + {77.748184204102, 12.400131225586}, + {77.803115844727, 9.0863800048828}, + {76.299362182617, 9.9680328369141}, + {77.428207397461, 8.6483001708984}, + {76.807479858398, 10.613479614258}, + {76.50260925293, 9.7551727294922}, + {75.802230834961, 11.249313354492}, + {75.747299194336, 11.56379699707}, + {75.66764831543, 11.982650756836}, + {75.761032104492, 11.350936889648}, + {75.741806030273, 11.33171081543}, + {76.547927856445, 10.877151489258}, + {76.196365356445, 10.537948608398}, + {76.341248, 9.979294}, + {114.099426, 22.371597}, + {114.06898498535, 22.367477416992}, + {113.93577575684, 22.313919067383}, + {113.96186828613, 22.37434387207}, + {114.141573, 22.340404}, + {114.180222, 22.369863}, + {114.171982, 22.303963}, + {114.176298, 22.278312}, + {114.15550231934, 22.283706665039}, + {113.621293, 22.194454}, + {114.110733, 22.342209}, + {114.261999, 22.343201}, + {114.22004699707, 22.285079956055}, + {114.250264, 22.351763}, + {114.22142028809, 22.33039855957}, + {114.177628, 22.302933}, + {113.55812072754, 22.158737182617}, + {113.53889465332, 22.193069458008}, + {103.22959899902, 13.044204711914}, + {104.905014, 11.629028}, + {104.886807, 11.565215}, + {105.42686462402, 11.598129272461}, + {104.943192, 11.102921}, + {-46.691727, -23.584945}, + {-46.702194213867, -23.567733764648}, + {-46.696701049805, -23.555374145508}, + {-46.698617, -23.5485}, + {-46.55091, -23.097642}, + {-46.66374206543, -23.559494018555}, + {-46.650009155273, -23.541641235352}, + {-46.519566, -23.441055}, + {-46.691207885742, -23.691329956055}, + {-46.693622, -23.702412}, + {-46.785811, -23.820277}, + {-46.492232, -23.449789}, + {-46.456449, -23.506601}, + {-46.511306762695, -23.475723266602}, + {-46.540145874023, -23.624038696289}, + {-46.417922973633, -23.721542358398}, + {-46.656976, -23.569754}, + {-46.679535, -23.571854}, + {-74.128189086914, 4.5998382568359}, + {-74.254532, 4.71904}, + {-74.073257446289, 4.6218109130859}, + {-74.066390991211, 4.6135711669922}, + {-74.102096557617, 4.5503997802734}, + {-74.07600402832, 4.5696258544922}, + {-74.012146, 4.666958}, + {-75.173263549805, 4.4377899169922}, + {-72.730178833008, 5.0022125244141}, + {-75.564651489258, 6.1928558349609}, + {-75.528945922852, 6.1598968505859}, + {-75.564651489258, 6.2395477294922}, + {-75.568771362305, 6.2519073486328}, + {-75.599109, 6.17313}, + {-75.551624, 6.305615}, + {-75.566025, 6.304779}, + {-75.279334, 6.129423}, + {-75.432815551758, 7.1829986572266}, + {-75.631942749023, 6.1186981201172}, + {-74.83268737793, 11.007614135742}, + {-74.820327758789, 11.011734008789}, + {12.141952514648, 51.260147094727}, + {11.043319702148, 51.434555053711}, + {9.881974, 54.20723}, + {10.682144165039, 52.72819519043}, + {9.9597930908203, 51.271133422852}, + {10.048411, 50.039302}, + {10.163040161133, 49.55451965332}, + {12.538833618164, 47.82829284668}, + {11.349563, 48.006821}, + {11.290512084961, 47.761001586914}, + {11.7076, 48.037229}, + {11.845321655273, 48.160629272461}, + {11.575584, 48.122177}, + {11.567916870117, 48.149642944336}, + {-93.236847, 37.193527}, + {-100.86067199707, 38.756332397461}, + {-94.681446, 39.038445}, + {-94.275406, 39.539497}, + {-95.659365, 38.989981}, + {-93.706686, 36.947021}, + {-94.947098, 39.293077}, + {-97.553424, 37.722551}, + {-93.249893188477, 38.702774047852}, + {-92.734909057617, 38.962326049805}, + {-89.144559, 37.446197}, + {-90.40578, 38.653433}, + {-90.339077, 38.787888}, + {-90.469131, 38.660903}, + {-90.098237, 38.79288}, + {-92.76631, 37.976447}, + {-90.269682, 38.702691}, + {-90.399308, 38.524301}, + {-90.580077, 38.60957}, + {-89.668148, 37.377601}, + {-92.384445, 39.327896}, + {30.677261, 46.482124}, + {30.638397, 46.469833}, + {30.73356628418, 46.483840942383}, + {28.449783325195, 49.197463989258}, + {37.774429321289, 47.939529418945}, + {28.63678, 50.280418}, + {37.192703, 48.279556}, + {37.509384155273, 47.110061645508}, + {36.22673034668, 50.021438598633}, + {36.351699829102, 50.009078979492}, + {36.245956420898, 49.99397277832}, + {36.166305541992, 49.974746704102}, + {33.576278686523, 49.039535522461}, + {38.451461791992, 48.958511352539}, + {28.648910522461, 50.264511108398}, + {33.421783, 47.947083}, + {34.599698, 48.602329}, + {35.026473999023, 48.446273803711}, + {32.259292602539, 48.502578735352}, + {-59.261627, -29.141235}, + {-58.807754516602, -27.47200012207}, + {-61.088790893555, -27.092971801758}, + {-57.614364624023, -27.748031616211}, + {-55.907363891602, -27.392349243164}, + {-55.889511108398, -27.379989624023}, + {-65.411911, -24.802048}, + {-59.894486, -25.1754}, + {-66.061477661133, -33.112106323242}, + {-71.264191, -41.153412}, + {-68.354874, -34.608307}, + {-68.814926147461, -32.972030639648}, + {-68.861618041992, -32.888259887695}, + {-59.819869995117, -34.102249145508}, + {-57.582778930664, -38.020248413086}, + {-58.948998, -34.17049}, + {-58.714771, -34.428268}, + {-58.858566, -34.439529}, + {-58.493270874023, -34.489517211914}, + {-58.538589477539, -34.55680847168}, + {-58.438065, -34.544449}, + {21.203694, 52.167266}, + {21.062850952148, 52.250289916992}, + {21.136335, 52.181486}, + {21.044998168945, 52.152786254883}, + {20.932388305664, 52.167892456055}, + {21.058702, 52.192073}, + {21.244125, 51.872978}, + {21.699712, 52.190898}, + {21.70280456543, 52.203598022461}, + {21.02248, 52.215594}, + {21.01903, 52.223714}, + {21.0185, 52.230126}, + {21.029891967773, 52.206344604492}, + {20.976333618164, 52.268142700195}, + {20.984573364258, 52.229690551758}, + {20.840378, 52.179794}, + {20.964446, 52.146011}, + {21.003177, 52.17587}, + {20.869216918945, 52.187118530273}, + {21.19159, 52.013232}, + {21.032638549805, 52.092361450195}, + {21.079330444336, 52.078628540039}, + {35.089645385742, 32.17414855957}, + {34.887771606445, 32.226333618164}, + {34.945449829102, 31.826705932617}, + {34.677658, 31.503983}, + {34.909744262695, 31.973648071289}, + {34.984589, 31.745682}, + {35.14045715332, 31.653671264648}, + {35.011367797852, 31.918716430664}, + {34.784774780273, 32.061538696289}, + {34.891891479492, 31.933822631836}, + {35.03059387207, 32.109603881836}, + {35.231094360352, 31.829452514648}, + {35.221481323242, 31.781387329102}, + {35.210494995117, 31.848678588867}, + {34.809083, 32.082233}, + {35.222854614258, 31.76628112793}, + {35.233116, 31.77775}, + {34.762802124023, 32.05192565918}, + {35.226686, 31.799538}, + {-1.434732, 49.06755}, + {1.174373, 49.05286}, + {1.3835906982422, 43.610916137695}, + {1.068978, 49.473624}, + {-0.557825, 47.479457}, + {0.467873, 49.459964}, + {1.0718536376953, 49.468002319336}, + {-2.172369, 47.305513}, + {-1.473987, 47.27177}, + {-1.8505096435547, 47.132034301758}, + {1.9988250732422, 47.920303344727}, + {-1.6939544677734, 47.997207641602}, + {1.307244, 48.11316}, + {-3.192228, 48.735531}, + {-1.206093, 44.617367}, + {-0.24321, 44.543655}, + {-0.643681, 45.130266}, + {-0.69252, 44.874619}, + {-0.617037, 44.865332}, + {1.839371, 42.719345}, + {1.399616, 43.717428}, + {-124.375534, 43.123202}, + {-121.30760192871, 44.057235717773}, + {-157.7465057373, 21.37321472168}, + {-158.024769, 21.476898}, + {-157.85362243652, 21.330642700195}, + {-81.364059448242, 40.045852661133}, + {-150.002171, 61.178113}, + {-155.934026, 19.544331}, + {-114.176227, 46.037896}, + {-114.324417, 48.275681}, + {-105.465577, 44.259018}, + {-108.572479, 45.776505}, + {-116.269216, 43.643469}, + {-116.290183, 43.61294}, + {-114.25300598145, 43.43376159668}, + {-116.19209289551, 43.613662719727}, + {-111.60530090332, 43.900680541992}, + {-111.95823669434, 40.694046020508}, + {-122.14393615723, 47.782974243164}, + {-111.928353, 40.772955}, + {-73.993606567383, 41.972579956055}, + {-111.817543, 40.586958}, + {-113.59915, 37.04615}, + {121.5438079834, 25.030288696289}, + {-112.164182, 41.850996}, + {121.5438079834, 25.016555786133}, + {-112.244348, 41.559818}, + {121.29524230957, 24.975357055664}, + {121.31446838379, 24.98908996582}, + {121.515312, 25.030289}, + {121.25129699707, 24.939651489258}, + {121.2100982666, 24.865493774414}, + {120.9642791748, 24.811935424805}, + {121.46278381348, 24.994583129883}, + {121.00685119629, 24.79133605957}, + {121.411285, 25.022049}, + {121.353607, 24.941711}, + {121.52458190918, 24.990463256836}, + {121.43257141113, 25.035781860352}, + {121.464844, 24.984283}, + {121.765916, 24.694896}, + {120.68824768066, 24.085464477539}, + {121.706796, 24.686127}, + {121.17988586426, 24.026412963867}, + {120.64018249512, 24.162368774414}, + {120.6566619873, 24.170608520508}, + {120.801544, 24.498825}, + {120.68138122559, 24.104690551758}, + {120.65116882324, 24.160995483398}, + {120.65528869629, 24.165115356445}, + {113.20793151855, 22.91130065918}, + {113.85200500488, 23.368606567383}, + {113.19557189941, 23.184585571289}, + {113.03352355957, 23.128280639648}, + {113.58009338379, 22.254867553711}, + {113.52653503418, 22.849502563477}, + {113.34114074707, 22.986831665039}, + {112.89756774902, 35.508499145508}, + {116.7716217041, 39.577560424805}, + {115.44364929199, 38.881301879883}, + {113.67210388184, 34.761428833008}, + {123.37440490723, 41.854476928711}, + {123.3455657959, 41.791305541992}, + {121.51634216309, 38.852462768555}, + {126.61811828613, 45.749130249023}, + {126.65794372559, 45.786209106445}, + {126.52885437012, 45.940017700195}, + {120.61820983887, 31.358413696289}, + {120.30235290527, 31.501235961914}, + {121.13456726074, 31.293869018555}, + {118.809586, 32.028923}, + {3.775177, 51.040421}, + {3.78891, 51.043167}, + {119.4962310791, 32.78938293457}, + {2.919617, 51.229935}, + {2.966308, 51.251908}, + {3.030817, 51.262501}, + {5.7630157470703, 49.678115844727}, + {5.4114532470703, 50.639419555664}, + {5.790503, 49.673289}, + {6.034561, 50.633469}, + {5.461922, 50.596504}, + {5.560913, 50.634727}, + {3.229246, 51.202782}, + {3.215763, 51.193577}, + {4.323159, 50.859579}, + {4.242108, 51.016708}, + {4.376556, 50.896662}, + {4.437115, 50.858111}, + {3.992726, 50.927385}, + {4.1548919677734, 51.23405456543}, + {4.3814849853516, 51.22444152832}, + {4.715704, 50.848818}, + {5.038277, 50.914548}, + {22.773148, 40.961288}, + {23.146286, 40.482559}, + {20.735305, 39.557332}, + {22.024841, 37.290344}, + {22.834925, 40.44078}, + {22.376404, 37.225114}, + {22.919737, 37.920391}, + {-4.932171, 51.721421}, + {-2.19203, 51.289754}, + {-0.289104, 51.465872}, + {-0.36147, 51.44303}, + {-0.162735, 51.435547}, + {-1.383518, 54.907897}, + {-1.400452, 54.921372}, + {-1.51062, 54.974899}, + {-2.6634979248047, 53.505477905273}, + {-2.55379, 53.528398}, + {-3.024508, 53.494058}, + {0.350878, 50.843494}, + {-0.00629, 51.543308}, + {-3.555702, 54.660052}, + {0.29601, 51.137924}, + {-0.15333, 51.499909}, + {-0.011133, 51.428821}, + {-2.409765, 51.385565}, + {-0.39756774902344, 51.324691772461}, + {0.15861511230469, 51.396102905273}, + {-81.866683959961, 34.457931518555}, + {-80.247573852539, 36.149826049805}, + {-78.588891, 35.871971}, + {-78.661422729492, 35.698013305664}, + {-78.783645629883, 35.976791381836}, + {-158.181055, 21.459929}, + {-157.813797, 21.280746}, + {-158.017056, 21.469254}, + {-157.73139953613, 21.282577514648}, + {-157.66548156738, 21.315536499023}, + {-95.692977905273, 29.785995483398}, + {-95.563888549805, 29.784622192383}, + {-93.955764770508, 29.983749389648}, + {-95.463638, 29.729004}, + {-95.242017, 29.639272}, + {-95.358792, 29.850461}, + {-95.27961730957, 29.687118530273}, + {-95.504837036133, 29.619827270508}, + {-95.603713989258, 29.617080688477}, + {-86.130752563477, 41.733627319336}, + {-91.821670532227, 30.119705200195}, + {-81.858565, 28.682879}, + {-81.479548, 28.546577}, + {-81.624484, 28.255355}, + {-82.030277, 29.221916}, + {-81.331965, 28.802973}, + {-80.980911254883, 29.001846313477}, + {-81.346817, 28.770523}, + {-82.734741, 28.033539}, + {-82.796401977539, 27.981491088867}, + {-81.647533, 28.092722}, + {-81.848875, 28.010535}, + {-81.82872, 27.901841}, + {-82.466812133789, 28.044662475586}, + {-87.83088684082, 42.197799682617}, + {-82.456949, 27.549841}, + {-97.66821, 30.43891}, + {-80.983279, 41.317071}, + {-81.314145, 41.665244}, + {-81.565148, 41.195101}, + {139.38835144043, 36.288528442383}, + {-81.555928, 41.280834}, + {139.56962585449, 36.214370727539}, + {138.55613708496, 36.63459777832}, + {139.03816223145, 36.552200317383}, + {139.88556, 36.227818}, + {139.11094665527, 36.59065246582}, + {139.02168273926, 36.535720825195}, + {139.99122619629, 36.620864868164}, + {138.83628845215, 37.464065551758}, + {140.10795593262, 37.065811157227}, + {140.25077819824, 36.495895385742}, + {138.91593933105, 37.612380981445}, + {138.00132751465, 36.199264526367}, + {138.165436, 36.633225}, + {139.03678894043, 35.621109008789}, + {141.37550354004, 43.054733276367}, + {141.35215759277, 43.079452514648}, + {137.9271697998, 35.772171020508}, + {141.36589050293, 43.13850402832}, + {142.77900695801, 42.961349487305}, + {141.56364440918, 43.113784790039}, + {141.11320495605, 43.154983520508}, + {141.74354553223, 43.370590209961}, + {140.72731018066, 41.833877563477}, + {-118.03916931152, 34.026718139648}, + {-118.45802307129, 33.982772827148}, + {-118.30009460449, 33.859176635742}, + {-117.82081604004, 34.006118774414}, + {-118.363266, 33.95256}, + {-118.284302, 34.07753}, + {-115.1538848877, 36.159439086914}, + {-115.30494689941, 36.130599975586}, + {-118.33030700684, 33.995132446289}, + {-117.70820617676, 33.868789672852}, + {-117.85926818848, 33.99787902832}, + {-117.351149, 34.092637}, + {-117.97462463379, 33.767166137695}, + {-74.438552856445, 40.485305786133}, + {-117.27012634277, 33.015975952148}, + {-117.29759216309, 33.947067260742}, + {-117.46376037598, 34.011611938477}, + {-117.565387, 33.880463}, + {-97.85041809082, 30.544052124023}, + {-76.47102355957, 39.276809692383}, + {-84.313202, 33.682022}, + {-97.697982788086, 30.342178344727}, + {-76.621857, 39.279556}, + {-87.845478, 41.932669}, + {-87.631548, 41.891661}, + {-100.44868469238, 20.61653137207}, + {-100.401535, 20.593185}, + {-100.71922302246, 20.535507202148}, + {-100.373306, 20.595932}, + {-100.74256896973, 20.523147583008}, + {-101.37428283691, 20.68244934082}, + {-101.70249938965, 21.123275756836}, + {-101.67091369629, 21.163101196289}, + {-101.59950256348, 21.126022338867}, + {-101.2589263916, 21.020278930664}, + {-101.62284851074, 21.091690063477}, + {-101.59950256348, 21.108169555664}, + {-101.35231018066, 20.707168579102}, + {-101.34269714355, 20.729141235352}, + {-100.32646179199, 25.612564086914}, + {-88.463973999023, 18.556594848633}, + {-86.783065795898, 21.042251586914}, + {-86.777572631836, 21.14387512207}, + {-117.047653, 32.399918}, + {-116.99272155762, 32.301864624023}, + {-115.47248840332, 32.599868774414}, + {-47.590713500977, -23.63639831543}, + {-49.975087, -20.812572}, + {-49.822311401367, -20.476455688477}, + {-51.906967163086, -21.499557495117}, + {-47.210311889648, -22.966232299805}, + {-47.153004, -22.874259}, + {-46.751633, -23.503876}, + {-46.979598999023, -22.98957824707}, + {-47.20344543457, -22.903060913086}, + {-46.636276245117, -23.527908325195}, + {-46.719498, -23.558121}, + {-46.520557, -24.044295}, + {-46.347976, -23.867668}, + {-46.72978, -24.148445}, + {-46.347106, -23.868828}, + {-46.485395, -24.024858}, + {-7.9259490966797, 33.423843383789}, + {-6.9165802001953, 32.875900268555}, + {-9.5326995849609, 30.268020629883}, + {-9.5313262939453, 30.397109985352}, + {-9.5766448974609, 30.421829223633}, + {-9.690628, 30.527229}, + {-7.5345611572266, 33.570785522461}, + {-7.52512, 33.592758}, + {-7.696152, 33.583145}, + {-7.6389312744141, 33.584518432617}, + {-7.5798797607422, 33.366165161133}, + {-7.5620269775391, 33.566665649414}, + {-7.6389312744141, 33.587265014648}, + {-9.7208404541016, 31.49299621582}, + {-9.4956207275391, 30.333938598633}, + {-7.9328155517578, 31.660537719727}, + {-9.4956207275391, 30.331192016602}, + {-8.0028533935547, 31.635818481445}, + {-8.1072235107422, 31.664657592773}, + {-8.0275726318359, 31.674270629883}, + {-8.0138397216797, 31.622085571289}, + {-94.591598510742, 29.838180541992}, + {-88.510494, 44.048824}, + {-111.39106750488, 42.123641967773}, + {-106.40739440918, 42.80891418457}, + {-116.56019, 43.569388}, + {135.74226379395, 35.051193237305}, + {135.69557189941, 35.014114379883}, + {135.75874328613, 35.00862121582}, + {135.77796936035, 35.000381469727}, + {135.896931, 34.970169}, + {135.738929, 35.041188}, + {135.96611022949, 34.989395141602}, + {135.972192, 35.022158}, + {135.93864440918, 35.00862121582}, + {136.284714, 35.204806}, + {136.14326477051, 35.221481323242}, + {132.42027282715, 34.375534057617}, + {136.236763, 35.098801}, + {132.4617, 34.393616}, + {132.649612, 34.453354}, + {132.609983, 34.234477}, + {132.88307189941, 34.326095581055}, + {132.45872497559, 34.434585571289}, + {132.68119812012, 34.444198608398}, + {132.38868713379, 34.474411010742}, + {132.302513, 34.300003}, + {133.347244, 34.54543}, + {133.4090423584, 34.507369995117}, + {55.38688659668, 25.355758666992}, + {55.389633178711, 25.322799682617}, + {55.397872924805, 25.29670715332}, + {54.811231, 24.727322}, + {55.40885925293, 25.336532592773}, + {55.514602661133, 25.313186645508}, + {55.400619506836, 25.344772338867}, + {55.445938110352, 25.336532592773}, + {56.350936889648, 25.162124633789}, + {55.940322875977, 25.78971862793}, + {55.404739379883, 25.348892211914}, + {56.106148, 25.521927}, + {55.468826, 25.382309}, + {55.440444946289, 25.307693481445}, + {55.48713684082, 25.361251831055}, + {55.44319152832, 25.30632019043}, + {55.323395, 25.23305}, + {55.158920288086, 25.078353881836}, + {55.48713684082, 25.295333862305}, + {55.323715209961, 25.271987915039}, + {55.312728881836, 25.276107788086}, + {55.349807739258, 25.278854370117}, + {28.201217651367, 36.34895324707}, + {26.121828, 38.483048}, + {26.144028, 38.316193}, + {22.499313354492, 39.672317504883}, + {23.80256652832, 38.193283081055}, + {22.951126098633, 39.357833862305}, + {23.791580200195, 37.990036010742}, + {23.729782104492, 38.044967651367}, + {23.823165893555, 38.075180053711}, + {23.884277, 38.005142}, + {23.738021850586, 37.957077026367}, + {23.758996, 37.842303}, + {23.890065, 37.948249}, + {23.736649, 37.96312}, + {23.738293, 37.95214}, + {23.719024, 37.951202}, + {23.706453, 37.915132}, + {23.639946, 37.942257}, + {23.734818, 37.909012}, + {23.721542, 37.97802}, + {23.756045, 37.988401}, + {24.11018371582, 38.051834106445}, + {121.01921081543, 14.556198120117}, + {121.024017, 14.554825}, + {121.01921081543, 14.557571411133}, + {121.01921081543, 14.51774597168}, + {121.03981018066, 14.528732299805}, + {121.02470397949, 14.550704956055}, + {121.038437, 14.398956}, + {121.045303, 14.447983}, + {121.06452941895, 14.497146606445}, + {121.07139587402, 14.710006713867}, + {121.05354309082, 14.756698608398}, + {121.07139587402, 14.656448364258}, + {121.05491638184, 14.523239135742}, + {121.04667663574, 14.546585083008}, + {121.0961151123, 14.594650268555}, + {121.08284, 14.686661}, + {121.0961151123, 14.56169128418}, + {120.9903717041, 14.580917358398}, + {121.08512878418, 14.560317993164}, + {123.91410827637, 10.35530090332}, + {123.84956359863, 10.274276733398}, + {20.68244934082, 46.56623840332}, + {19.185525, 47.417789}, + {18.004531860352, 47.104568481445}, + {17.835089, 47.732692}, + {21.082588, 48.107619}, + {22.115778, 47.944766}, + {20.127639770508, 46.345138549805}, + {17.317701, 46.652702}, + {21.562729, 48.167496}, + {21.086196899414, 46.673355102539}, + {18.228516, 46.053177}, + {19.13475, 47.686844}, + {19.123764038086, 47.53303527832}, + {-46.408944, -22.883518}, + {-46.538772583008, -22.883834838867}, + {-46.696701049805, -22.806930541992}, + {-45.224257, -22.832985}, + {-46.635099, -23.368411}, + {-46.661224, -23.604126}, + {-46.714553833008, -23.574600219727}, + {-46.753006, -23.586044}, + {-46.682693, -23.602066}, + {-46.759872436523, -23.32878112793}, + {-47.185502, -23.54761}, + {-46.294567, -23.609845}, + {-46.437149047852, -23.677597045898}, + {-46.514053344727, -23.54850769043}, + {-46.601943969727, -23.574600219727}, + {-46.54426574707, -23.661117553711}, + {-97.467593, 34.810544}, + {-97.484848, 35.492294}, + {-97.4482, 35.455158}, + {-97.607345581055, 35.423355102539}, + {-97.437114, 35.194412}, + {-97.448714, 35.211414}, + {-97.54453, 35.586573}, + {-98.426321, 34.614809}, + {-98.332901, 34.171829}, + {-95.597584, 37.05851}, + {-96.38786315918, 35.564804077148}, + {-95.820445, 36.103691}, + {-95.809741, 36.106516}, + {-94.679198, 38.834945}, + {-96.011581420898, 36.024856567383}, + {-95.988968, 36.748086}, + {-94.987731, 39.442229}, + {-96.788864135742, 39.828872680664}, + {-94.377115, 39.043689}, + {-97.28383, 37.663553}, + {-91.937372, 37.339884}, + {-73.136672973633, 7.1074676513672}, + {-73.122238, 7.103067}, + {-73.110580444336, 7.1115875244141}, + {-75.960159301758, 1.9081878662109}, + {-75.288619995117, 9.3253326416016}, + {-68.000565, 10.130081}, + {-66.955490112305, 10.37727355957}, + {-66.948623657227, 10.432205200195}, + {-67.993694, 10.1886}, + {-66.874924, 10.4702}, + {-66.904678344727, 10.502243041992}, + {-66.94450378418, 10.524215698242}, + {-66.807174682617, 10.499496459961}, + {-66.849746704102, 10.513229370117}, + {-66.837273, 10.510483}, + {-66.879959106445, 10.483016967773}, + {-71.664505004883, 10.635452270508}, + {-67.63869, 10.239127}, + {-67.613296508789, 10.257797241211}, + {-69.340134, 10.059738}, + {-72.290725708008, 7.7625274658203}, + {-68.000564575195, 10.241317749023}, + {-63.825759887695, 10.991134643555}, + {-85.860214233398, 12.937088012695}, + {-86.004409790039, 13.092269897461}, + {-86.213150024414, 12.044448852539}, + {-86.193923950195, 12.147445678711}, + {-86.231002807617, 12.124099731445}, + {-86.215896606445, 12.141952514648}, + {-86.284561157227, 12.108993530273}, + {-85.802536010742, 11.45393371582}, + {-86.052474975586, 11.414108276367}, + {-86.266708374023, 12.11311340332}, + {-86.044235229492, 11.977157592773}, + {-86.317520141602, 12.067794799805}, + {-86.268081665039, 12.104873657227}, + {-86.218643188477, 12.15705871582}, + {-86.283187866211, 12.150192260742}, + {-83.228988647461, 8.7746429443359}, + {-85.643959, 10.519325}, + {-83.476181030273, 8.8584136962891}, + {-83.935072, 10.291707}, + {-83.978119, 9.752426}, + {-84.442782, 10.340391}, + {-84.121627807617, 9.9597930908203}, + {79.867859, 6.900787}, + {79.860305786133, 6.8987274169922}, + {79.858932495117, 6.8973541259766}, + {79.90837097168, 6.7092132568359}, + {35.528755, 33.890762}, + {35.498886108398, 33.883895874023}, + {35.653725, 34.104996}, + {35.94108581543, 32.614974975586}, + {35.840149, 31.97158}, + {36.090628, 32.046217}, + {48.024673461914, 29.335556030273}, + {47.985306, 29.301682}, + {47.990624, 29.377678}, + {48.076858520508, 29.287490844727}, + {48.065872192383, 28.79035949707}, + {48.134536743164, 29.081497192383}, + {47.885971069336, 29.297103881836}, + {47.704696655273, 29.299850463867}, + {48.03923, 29.342148}, + {47.946572, 29.353531}, + {48.089218139648, 29.157028198242}, + {26.433792114258, 53.336563110352}, + {28.484115600586, 54.194869995117}, + {31.379013061523, 53.885879516602}, + {27.62580871582, 53.953170776367}, + {27.682113647461, 53.944931030273}, + {31.008911, 52.467957}, + {26.608200073242, 52.855911254883}, + {27.923812866211, 55.81672668457}, + {23.661488, 53.52071}, + {25.992961, 54.698868}, + {-83.830261, 43.545685}, + {-83.748092651367, 42.266464233398}, + {-83.959242, 43.418322}, + {-85.626754760742, 44.794692993164}, + {-84.609562, 45.409345}, + {-85.534103, 43.780289}, + {-83.430229, 45.064228}, + {-86.11701965332, 42.782821655273}, + {-85.288613, 42.878465}, + {-86.19606, 43.181953}, + {-85.70915222168, 42.888565063477}, + {-85.209274291992, 42.943496704102}, + {-86.220941, 41.800655}, + {-86.156346, 39.766013}, + {-84.472497, 42.726399}, + {-86.161032, 39.758835}, + {-86.17877, 39.856915}, + {-86.144485473633, 39.735488891602}, + {-85.932999, 40.00485}, + {-86.352368, 39.857969}, + {-85.773756, 39.530043}, + {-85.392789, 40.193469}, + {-85.757218, 39.798203}, + {23.149567, 53.184814}, + {22.920913696289, 53.163528442383}, + {23.017044067383, 53.82682800293}, + {17.702407836914, 53.164901733398}, + {22.094192504883, 50.182113647461}, + {18.83674621582, 50.438919067383}, + {19.500045776367, 51.736679077148}, + {15.12371, 37.615471}, + {15.172119, 37.724991}, + {15.136185, 37.620163}, + {12.536281, 37.99486}, + {12.683304, 38.047165}, + {12.526015, 38.015671}, + {15.956954956055, 38.389663696289}, + {16.183547973633, 39.069442749023}, + {15.972404, 38.490601}, + {16.563949584961, 38.866195678711}, + {15.505142, 38.104706}, + {15.491409301758, 38.076553344727}, + {14.273300170898, 42.428512573242}, + {76.925582885742, 28.706588745117}, + {77.616348266602, 12.943954467773}, + {77.621155, 13.049355}, + {77.682266235352, 12.828598022461}, + {77.67951965332, 12.850570678711}, + {77.643814086914, 12.964553833008}, + {77.598495483398, 12.928848266602}, + {77.566909790039, 12.893142700195}, + {76.629868, 12.30011}, + {75.962905883789, 12.455062866211}, + {77.549057006836, 12.960433959961}, + {77.551803588867, 13.279037475586}, + {77.606735229492, 12.971420288086}, + {77.539443969727, 13.28727722168}, + {75.144424438477, 15.345840454102}, + {76.328201, 9.496994}, + {76.970901489258, 8.5123443603516}, + {76.958541870117, 8.5013580322266}, + {73.870010375977, 18.523635864258}, + {73.421402, 18.758164}, + {73.805465698242, 18.652725219727}, + {73.81233215332, 18.619766235352}, + {73.857650756836, 18.468704223633}, + {73.812332, 18.470764}, + {73.063888549805, 22.452621459961}, + {72.721939086914, 22.936019897461}, + {71.067123413086, 20.974960327148}, + {70.884475708008, 22.894821166992}, + {72.660140991211, 23.067855834961}, + {73.1956, 22.295068}, + {71.619186401367, 23.827285766602}, + {72.791976928711, 21.196060180664}, + {73.188171, 22.343445}, + {72.521438598633, 23.012924194336}, + {69.737775, 23.944702}, + {72.500839233398, 23.054122924805}, + {72.587631, 23.099442}, + {69.792709, 23.93074}, + {73.315887, 22.087326}, + {73.190231323242, 20.392684936523}, + {70.071487426758, 22.470474243164}, + {73.622817993164, 22.250747680664}, + {77.631912, 15.087204}, + {79.989395141602, 14.907760620117}, + {73.452988, 20.755234}, + {79.963646, 16.131023}, + {104.90776062012, 11.52946472168}, + {104.72785949707, 11.622848510742}, + {104.922409, 11.564713}, + {104.88166809082, 11.552810668945}, + {104.912796, 11.566544}, + {105.61637878418, 11.578903198242}, + {104.902954, 11.543198}, + {105.469437, 11.979218}, + {104.08241271973, 14.226608276367}, + {104.39002990723, 10.463790893555}, + {104.52186584473, 11.459426879883}, + {103.89839172363, 13.362808227539}, + {103.85444641113, 13.360061645508}, + {104.86930847168, 11.556930541992}, + {104.89265441895, 12.699508666992}, + {104.88578796387, 12.722854614258}, + {102.95219421387, 13.586654663086}, + {104.93797302246, 11.508865356445}, + {104.85145568848, 11.658554077148}, + {104.92698669434, 11.57341003418}, + {104.52186584473, 11.462173461914}, + {105.87455749512, 11.798629760742}, + {102.52372741699, 12.932968139648}, + {121.561146, 25.031662}, + {121.565269, 25.040441}, + {121.534653, 25.015182}, + {121.49711608887, 25.02067565918}, + {121.44218444824, 25.175857543945}, + {121.48887634277, 25.06462097168}, + {121.450121, 25.173051}, + {121.464157, 25.137013}, + {121.426163, 25.024796}, + {121.4476776123, 25.039901733398}, + {121.451673, 25.101325}, + {121.378098, 25.073318}, + {121.472855, 25.040817}, + {121.48407, 25.027542}, + {121.48475646973, 25.004196166992}, + {121.50535583496, 24.997329711914}, + {121.51496887207, 24.97673034668}, + {121.517715, 25.010147}, + {121.49024963379, 24.986343383789}, + {121.4298248291, 25.000076293945}, + {121.75666809082, 25.129165649414}, + {121.72370910645, 25.145645141602}, + {2.4794769287109, 48.921432495117}, + {2.3339080810547, 48.891220092773}, + {2.3448944091797, 48.933792114258}, + {2.3860931396484, 48.950271606445}, + {2.214154, 48.902458}, + {2.242587, 48.894686}, + {2.2487640380859, 48.914566040039}, + {2.292234, 48.962606}, + {2.4139, 48.865488}, + {2.5879669189453, 48.888473510742}, + {2.44133, 48.854752}, + {2.6483917236328, 48.840408325195}, + {2.5495147705078, 48.834915161133}, + {2.475009, 48.966983}, + {2.262659, 48.824414}, + {2.2130584716797, 48.712692260742}, + {2.5165557861328, 48.767623901367}, + {2.333894, 48.637246}, + {2.782163, 50.430367}, + {5.030371, 47.34524}, + {4.8030853271484, 45.878219604492}, + {4.9390411376953, 45.810928344727}, + {76.616592407227, 28.893356323242}, + {76.652297973633, 28.870010375977}, + {86.449356079102, 23.666610717773}, + {86.450729370117, 23.819046020508}, + {74.827194213867, 32.771530151367}, + {80.287399291992, 13.078536987305}, + {80.255813598633, 13.029098510742}, + {80.239334106445, 13.056564331055}, + {80.264053344727, 13.040084838867}, + {80.029220581055, 13.114242553711}, + {80.121231079102, 13.130722045898}, + {80.163803100586, 13.108749389648}, + {80.117111206055, 12.923355102539}, + {80.051193237305, 12.884902954102}, + {80.291519165039, 13.099136352539}, + {80.292892456055, 13.125228881836}, + {80.205001831055, 13.104629516602}, + {80.226974487305, 13.10188293457}, + {80.226974487305, 12.809371948242}, + {80.220108032227, 12.983779907227}, + {80.248947143555, 12.997512817383}, + {80.18440246582, 13.042831420898}, + {25.053331, 60.323336}, + {24.734322, 60.222421}, + {25.725173950195, 62.602157592773}, + {25.594431, 60.97961}, + {22.245254516602, 60.461196899414}, + {27.620315551758, 62.878189086914}, + {24.939779, 60.171971}, + {25.105876, 60.234153}, + {25.476608276367, 65.05485534668}, + {24.941997, 60.197059}, + {25.957260131836, 60.491409301758}, + {23.917922973633, 61.51725769043}, + {24.843521118164, 60.181045532227}, + {24.194916, 60.074753}, + {24.827036, 60.627968}, + {23.566938, 61.48381}, + {22.349768, 60.550398}, + {26.352767944336, 60.889663696289}, + {25.052999, 60.244389}, + {25.385481, 64.931554}, + {25.23056, 61.868362}, + {25.641779, 60.969327}, + {25.722427, 62.243072}, + {-118.19133, 33.943497}, + {-118.160908, 34.175034}, + {-118.145382, 34.151688}, + {-118.18885803223, 34.059677124023}, + {-118.167073, 34.059615}, + {-118.0281829834, 33.914108276367}, + {-118.28498840332, 34.052810668945}, + {-118.16963195801, 33.96354675293}, + {-118.413162, 33.901749}, + {-118.106638, 33.794898}, + {-118.01479, 33.758929}, + {-118.160019, 33.808268}, + {-115.18135070801, 36.203384399414}, + {-115.19268, 36.157036}, + {-115.252901, 36.24325}, + {-115.120754, 35.999451}, + {-119.185867, 34.161301}, + {-118.859173, 34.203761}, + {-115.29424, 36.134557}, + {-117.780762, 33.773575}, + {-117.83328, 33.772452}, + {-117.689972, 33.605118}, + {5.9072113037109, 51.98112487793}, + {-117.645035, 33.455329}, + {6.4098358154297, 52.32307434082}, + {6.035843, 50.849991}, + {6.061131, 50.896659}, + {5.8577728271484, 50.855026245117}, + {5.766449, 50.963516}, + {5.945663, 50.916824}, + {5.876541, 51.018448}, + {5.898972, 51.004715}, + {6.0102081298828, 51.482620239258}, + {6.1241912841797, 51.385116577148}, + {5.509415, 51.613312}, + {5.6037139892578, 51.670761108398}, + {5.5625152587891, 51.714706420898}, + {5.4059600830078, 51.415328979492}, + {5.345364, 51.596603}, + {5.3743743896484, 51.490859985352}, + {5.2590179443359, 51.806716918945}, + {5.08461, 51.714363}, + {4.953582, 51.877684}, + {-111.61224, 33.211798}, + {-111.98295593262, 33.768539428711}, + {-111.999419, 33.451392}, + {-112.094091, 33.438523}, + {-111.668915, 35.163952}, + {-111.940384, 33.610336}, + {-111.88957214355, 33.566665649414}, + {-111.9019317627, 33.642196655273}, + {-149.870715, 61.130953}, + {-149.896926, 61.21802}, + {-149.873433, 61.224916}, + {-134.418869, 58.289108}, + {-149.124949, 63.318781}, + {-157.842178, 21.311874}, + {-157.84950256348, 21.290817260742}, + {-159.67460632324, 22.020034790039}, + {-159.35050964355, 22.035140991211}, + {-155.40367126465, 19.722518920898}, + {-66.071090698242, 18.382186889648}, + {-66.242752075195, 18.325881958008}, + {-85.658340454102, 30.145797729492}, + {-66.506423950195, 18.042984008789}, + {-48.481744, -1.29791}, + {-48.46983, -1.347848}, + {-35.03011, -8.003863}, + {-38.478927612305, -12.993392944336}, + {-38.562698364258, -3.7442779541016}, + {-38.540725708008, -3.7470245361328}, + {-34.90531, -8.132326}, + {-34.910328, -8.113478}, + {-44.048309, -19.973831}, + {-38.333358764648, -12.695388793945}, + {-38.476841, -3.795665}, + {-38.586044311523, -3.8225555419922}, + {-38.29216003418, -12.739334106445}, + {-38.472061157227, -12.938461303711}, + {-42.913284301758, -22.38395690918}, + {-43.332138061523, -22.665481567383}, + {-42.553924, -19.476491}, + {-41.301006, -21.778033}, + {-48.359881, -1.365187}, + {8.3228302001953, 36.765060424805}, + {4.207074, 32.392503}, + {-0.267105, 33.546753}, + {2.3943328857422, 36.564559936523}, + {7.4178314208984, 36.476669311523}, + {-1.2970733642578, 34.905624389648}, + {3.089971, 36.746076}, + {-1.338437, 34.882993}, + {6.685524, 36.288872}, + {6.5650177001953, 36.98616027832}, + {0.11329650878906, 35.93147277832}, + {5.679245, 36.153603}, + {3.2581329345703, 36.76643371582}, + {1.0196685791016, 33.684768676758}, + {3.2842254638672, 36.715621948242}, + {1.9109344482422, 36.256942749023}, + {3.4435272216797, 36.752700805664}, + {2.049633, 36.575095}, + {3.3391571044922, 36.642837524414}, + {2.530632, 36.511345}, + {4.044723, 36.715159}, + {5.29747, 36.565247}, + {4.6176910400391, 36.592025756836}, + {3.0301666259766, 36.76643371582}, + {-121.872479, 37.648118}, + {-122.25929260254, 37.822494506836}, + {-122.21122741699, 37.826614379883}, + {-122.126751, 37.386068}, + {-122.27851867676, 37.871932983398}, + {-121.94755554199, 37.286911010742}, + {-122.14530944824, 37.420120239258}, + {-122.40211486816, 37.804641723633}, + {-122.42546081543, 37.796401977539}, + {-122.34443664551, 37.819747924805}, + {-122.44331359863, 37.782669067383}, + {-122.42683410645, 37.781295776367}, + {-122.47077941895, 37.693405151367}, + {-122.710876, 37.908325}, + {-122.530722, 37.992609}, + {-122.242126, 37.586975}, + {-122.085159, 37.660904}, + {-122.112171, 37.396953}, + {-122.06428527832, 37.366561889648}, + {-121.83494567871, 37.282791137695}, + {76.944808959961, 43.271713256836}, + {76.968154907227, 43.310165405273}, + {76.851425170898, 43.219528198242}, + {76.929016, 43.26313}, + {76.870651245117, 43.233261108398}, + {76.883010864258, 43.242874145508}, + {76.883010864258, 43.229141235352}, + {76.902236938477, 43.220901489258}, + {76.994247436523, 43.387069702148}, + {76.987380981445, 43.356857299805}, + {76.939315795898, 43.307418823242}, + {77.023086547852, 43.421401977539}, + {76.917343139648, 43.348617553711}, + {78.454055786133, 17.446975708008}, + {89.658737182617, 27.448654174805}, + {78.548812866211, 17.445602416992}, + {76.977767944336, 29.731063842773}, + {76.968154907227, 29.395980834961}, + {76.719589233398, 28.810958862305}, + {76.784133911133, 28.447036743164}, + {77.270278930664, 30.177383422852}, + {77.005233764648, 29.688491821289}, + {71.06575012207, 20.962600708008}, + {70.019302368164, 21.21940612793}, + {72.870712, 21.190567}, + {72.418442, 23.462334}, + {77.22770690918, 28.699722290039}, + {77.207107543945, 28.692855834961}, + {77.244186401367, 28.642044067383}, + {77.220840454102, 28.635177612305}, + {77.208480834961, 28.68049621582}, + {77.19612121582, 28.728561401367}, + {78.411483764648, 17.416763305664}, + {78.467788696289, 17.407150268555}, + {78.375778198242, 17.435989379883}, + {-47.912708, -15.74146}, + {-48.015060424805, -15.882797241211}, + {-47.932662963867, -15.785293579102}, + {-49.271213, -18.013679}, + {-61.923751831055, -10.888137817383}, + {-52.239325, -13.562437}, + {-49.164505, -28.689423}, + {-50.15739440918, -25.105819702148}, + {-50.692661, -15.80589}, + {-52.327845, -31.736012}, + {-49.249189, -16.658011}, + {-54.708481, -20.574417}, + {-43.936859, -19.920443}, + {-44.308812, -19.290538}, + {-43.859333, -19.984973}, + {-45.446895, -21.57013}, + {-43.373247, -19.513529}, + {-43.924026489258, -19.789810180664}, + {14.970932006836, 51.194229125977}, + {12.226653, 49.933077}, + {9.004769, 48.70823}, + {12.022476196289, 50.285110473633}, + {8.6002349853516, 49.21257019043}, + {7.4137115478516, 52.603225708008}, + {8.2816314697266, 50.724563598633}, + {10.697250366211, 53.862533569336}, + {10.42121887207, 53.579635620117}, + {9.9694061279297, 53.513717651367}, + {10.034661, 53.665468}, + {9.741439, 53.690186}, + {10.13734, 53.607167}, + {10.022964477539, 53.473892211914}, + {10.005111694336, 53.454666137695}, + {13.911634, 40.748978}, + {16.352964, 39.315642}, + {14.541092, 41.505386}, + {11.087952, 45.591203}, + {12.392071, 45.820432}, + {12.890985, 45.605719}, + {14.657821655273, 41.975326538086}, + {14.366683959961, 42.380447387695}, + {13.112869262695, 41.894302368164}, + {12.256034, 42.25901}, + {12.496262, 41.92543}, + {12.410843, 41.912704}, + {11.04606628418, 43.461227416992}, + {9.11218, 45.452657}, + {9.2758941650391, 45.98258972168}, + {106.50489807129, 29.615707397461}, + {106.46369934082, 29.538803100586}, + {106.44035339355, 29.571762084961}, + {100.09574890137, 26.047897338867}, + {99.922714233398, 26.862258911133}, + {126.56181335449, 43.859481811523}, + {104.60014343262, 35.621109008789}, + {126.56181335449, 43.862228393555}, + {113.25050354004, 23.162612915039}, + {37.804641723633, 55.800247192383}, + {38.432235717773, 55.812606811523}, + {37.684891, 55.799423}, + {37.793655395508, 55.801620483398}, + {38.639602661133, 55.752182006836}, + {38.427701, 55.814076}, + {37.663192749023, 55.764541625977}, + {37.689089, 55.761207}, + {37.72087097168, 55.705490112305}, + {37.911758422852, 55.829086303711}, + {37.650833129883, 55.708236694336}, + {37.443466186523, 55.632705688477}, + {37.873306274414, 55.382766723633}, + {37.442092895508, 55.884017944336}, + {37.255325317383, 55.995254516602}, + {37.748336791992, 55.634078979492}, + {37.738723754883, 55.678024291992}, + {37.715377807617, 55.756301879883}, + {37.820431, 55.761796}, + {37.783552, 55.756989}, + {51.418075561523, 35.715866088867}, + {51.446914672852, 35.703506469727}, + {51.479873657227, 35.638961791992}, + {51.437301635742, 35.707626342773}, + {51.429061889648, 35.688400268555}, + {51.363143920898, 35.754318237305}, + {51.371383666992, 35.735092163086}, + {51.196975708008, 35.722732543945}, + {51.375503540039, 35.702133178711}, + {51.335678100586, 35.66780090332}, + {51.662521362305, 32.730331420898}, + {51.515579223633, 32.698745727539}, + {51.368637084961, 35.659561157227}, + {56.338577270508, 27.19596862793}, + {52.553787231445, 29.60334777832}, + {47.122421264648, 34.37141418457}, + {47.053299, 34.294052}, + {50.839920043945, 34.610366821289}, + {46.207809448242, 36.527481079102}, + {45.088577270508, 37.540969848633}, + {50.65315246582, 36.914749145508}, + {50.875625610352, 36.81037902832}, + {59.553451538086, 36.307754516602}, + {50.937423706055, 35.825729370117}, + {54.461288452148, 36.844711303711}, + {-3.64374, 40.387883}, + {-3.695797, 40.424881}, + {-3.7813568115234, 40.452346801758}, + {-4.0326690673828, 40.266952514648}, + {-3.3679962158203, 40.485305786133}, + {-4.4405364990234, 36.715621948242}, + {-5.026016, 36.46637}, + {-4.363976, 36.729012}, + {-1.1487579345703, 38.039474487305}, + {-4.509545, 36.686741}, + {-5.66246, 43.544998}, + {-5.9484100341797, 43.362350463867}, + {-8.723355, 42.225322}, + {-16.303024, 28.417511}, + {-3.831737, 43.445113}, + {-3.897208, 43.312912}, + {-6.122543, 37.589676}, + {-4.358597, 40.076523}, + {-0.36186218261719, 39.596786499023}, + {-0.40443420410156, 39.489669799805}, + {76.532821655273, 9.0781402587891}, + {76.227951049805, 10.963668823242}, + {76.255416870117, 11.290512084961}, + {76.791106, 9.266598}, + {76.611099243164, 9.7551727294922}, + {75.780258178711, 11.27815246582}, + {75.75553894043, 11.346817016602}, + {72.82356262207, 18.936996459961}, + {72.870254516602, 19.104537963867}, + {72.856521606445, 19.048233032227}, + {72.92106628418, 19.278945922852}, + {72.869339, 19.175949}, + {72.830429077148, 19.009780883789}, + {72.879867553711, 19.17594909668}, + {72.978744506836, 19.199295043945}, + {72.900948, 19.067459}, + {72.897720336914, 19.064712524414}, + {72.863388061523, 19.229507446289}, + {72.868538, 19.230881}, + {72.802963256836, 18.964462280273}, + {72.827682495117, 18.938369750977}, + {25.006214, 48.547441}, + {25.927047729492, 48.085098266602}, + {23.514175, 49.042282}, + {36.212997436523, 49.998092651367}, + {23.669357299805, 49.982986450195}, + {23.04432, 49.81149}, + {35.384902954102, 48.878860473633}, + {28.655776977539, 50.27961730957}, + {25.914001, 48.980484}, + {25.572738647461, 49.549026489258}, + {26.955642700195, 49.418563842773}, + {29.471423, 48.806823}, + {28.547606, 49.223965}, + {28.403091430664, 50.606460571289}, + {30.337601, 50.384674}, + {30.592376, 50.416832}, + {70.381851196289, 22.215042114258}, + {71.907577514648, 22.223281860352}, + {72.222061157227, 21.43913269043}, + {70.800704956055, 22.301559448242}, + {71.711196899414, 23.591079711914}, + {73.18473815918, 20.55061340332}, + {73.039169311523, 20.900802612305}, + {85.120010375977, 25.608444213867}, + {85.448226928711, 26.171493530273}, + {85.343856811523, 26.156387329102}, + {73.769760131836, 19.997177124023}, + {73.88786315918, 17.950973510742}, + {77.687759399414, 19.578323364258}, + {76.021957397461, 19.207534790039}, + {74.577942, 16.86779}, + {73.816452026367, 19.90104675293}, + {73.549118, 19.691849}, + {74.743423461914, 19.090805053711}, + {74.763107, 19.077988}, + {75.353164672852, 19.855728149414}, + {-58.43147277832, -34.64469909668}, + {-58.467178344727, -34.628219604492}, + {-58.46305847168, -34.646072387695}, + {-58.393021, -34.629044}, + {-58.384780883789, -34.60075378418}, + {-58.371047973633, -34.608993530273}, + {-58.443832397461, -34.633712768555}, + {-58.424606323242, -34.636459350586}, + {-58.434219360352, -34.619979858398}, + {-58.436966, -34.584078}, + {-58.430786, -34.602127}, + {-58.46305847168, -34.587020874023}, + {-58.405380249023, -34.606246948242}, + {-58.465805053711, -34.57878112793}, + {-58.467865, -34.536209}, + {-58.408126831055, -34.567794799805}, + {-58.431198, -34.552322}, + {-58.404006958008, -34.589767456055}, + {-58.46305847168, -34.549942016602}, + {-58.582534790039, -34.422225952148}, + {-58.51936340332, -34.470291137695}, + {-58.549575805664, -34.429092407227}, + {-84.094162, 9.927864}, + {-84.108573, 9.925934}, + {-84.079055786133, 9.9199676513672}, + {-84.091415405273, 9.9268341064453}, + {-84.606399536133, 9.8911285400391}, + {-84.001693, 9.934616}, + {-84.780808, 10.002022}, + {-84.044724, 9.941254}, + {-84.552841186523, 10.024337768555}, + {-84.043350219727, 9.9501800537109}, + {-83.860702514648, 9.6700286865234}, + {-84.060353, 9.902529}, + {-84.068069458008, 9.9350738525391}, + {-84.040603637695, 9.9213409423828}, + {-84.001072, 9.907412}, + {-84.066696166992, 9.9309539794922}, + {-84.081802368164, 9.8883819580078}, + {-84.068069458008, 9.9309539794922}, + {-84.112701, 10.004425}, + {-84.155960083008, 9.9817657470703}, + {-84.090042, 9.892502}, + {139.78797912598, 35.725479125977}, + {139.78523254395, 35.737838745117}, + {139.76875305176, 35.741958618164}, + {139.59846496582, 35.356063842773}, + {139.576492, 35.26062}, + {139.679832, 35.277786}, + {139.680862, 35.24025}, + {139.670932, 35.448286}, + {139.583359, 35.389175}, + {139.6231842041, 35.465927124023}, + {139.623184, 35.466614}, + {139.66026306152, 35.503005981445}, + {139.71244812012, 35.51399230957}, + {139.31419372559, 35.658187866211}, + {139.511948, 35.663681}, + {139.453995, 35.676109}, + {139.43229675293, 35.634841918945}, + {139.474869, 35.610809}, + {139.44465637207, 35.541458129883}, + {139.43641662598, 35.531845092773}, + {139.49546813965, 35.531845092773}, + {136.884842, 35.158859}, + {136.88484191895, 35.16242980957}, + {136.91917419434, 35.159683227539}, + {136.937027, 35.107956}, + {44.666976928711, 39.870071411133}, + {44.540634155273, 40.22575378418}, + {46.137771606445, 39.53498840332}, + {44.810257, 40.508652}, + {44.274215698242, 40.092544555664}, + {44.580459594727, 39.966201782227}, + {44.308547973633, 40.176315307617}, + {44.195938110352, 40.155715942383}, + {44.486389, 40.153656}, + {44.565353393555, 40.198287963867}, + {23.290328979492, 42.725143432617}, + {23.207931518555, 42.810287475586}, + {23.323287963867, 42.696304321289}, + {23.301315307617, 42.705917358398}, + {23.358993530273, 42.675704956055}, + {23.368606567383, 42.67707824707}, + {23.361740112305, 42.700424194336}, + {23.390579223633, 42.703170776367}, + {23.309555053711, 42.679824829102}, + {23.345718, 42.654648}, + {13.084888, 55.61541}, + {11.94694519043, 57.685775756836}, + {13.386154174805, 56.043319702148}, + {11.970445, 57.705975}, + {11.827469, 57.694016}, + {12.928641, 57.707615}, + {13.498269, 58.546843}, + {12.286147, 58.259812}, + {13.077164, 59.544296}, + {13.615258, 59.402302}, + {12.885982, 56.685497}, + {16.660079956055, 64.636001586914}, + {16.834487915039, 64.579696655273}, + {18.07731628418, 59.34196472168}, + {17.893295288086, 59.642715454102}, + {17.924880981445, 59.292526245117}, + {17.793437, 59.253486}, + {18.190269, 59.300766}, + {18.081436, 59.461166}, + {101.42921447754, 3.0246734619141}, + {101.47178649902, 2.9395294189453}, + {101.65580749512, 3.1345367431641}, + {101.75605773926, 3.1949615478516}, + {101.63932800293, 3.2320404052734}, + {101.69014, 3.208008}, + {101.731497, 3.159198}, + {101.68602, 3.134811}, + {101.745933, 3.172956}, + {101.76292419434, 2.9985809326172}, + {101.5926361084, 3.0713653564453}, + {101.58027648926, 3.0150604248047}, + {101.711782, 3.112142}, + {101.599503, 2.979813}, + {101.710356, 3.06544}, + {101.676145, 2.972508}, + {102.252303, 2.190065}, + {102.6473236084, 2.3448944091797}, + {102.1900177002, 2.4259185791016}, + {103.61824035645, 1.6527557373047}, + {102.615051, 2.080536}, + {103.725892, 1.497535}, + {103.76243591309, 1.5456390380859}, + {76.943578, 8.525509}, + {77.055702, 8.417244}, + {76.328476, 9.670029}, + {76.398803, 9.870676}, + {76.395836, 10.202179}, + {76.950989, 8.480072}, + {76.961288452148, 8.4299468994141}, + {76.657791137695, 10.021591186523}, + {76.789627, 9.535904}, + {76.056289672852, 11.107864379883}, + {75.739059448242, 11.872787475586}, + {76.589126586914, 9.1619110107422}, + {76.534195, 9.667969}, + {75.674514770508, 11.625595092773}, + {75.618209838867, 11.51985168457}, + {76.354568, 9.466782}, + {76.340560913086, 10.331954956055}, + {75.862655639648, 11.206741333008}, + {75.375137329102, 11.85905456543}, + {77.96516418457, 16.235733032227}, + {77.654800415039, 16.238479614258}, + {78.717727661133, 16.42936706543}, + {87.778702, 22.884521}, + {86.840744018555, 22.488327026367}, + {87.867965698242, 22.105178833008}, + {87.723770141602, 23.541641235352}, + {87.086563110352, 23.050003051758}, + {88.768844604492, 22.004928588867}, + {87.329635620117, 22.55973815918}, + {88.149490356445, 25.005569458008}, + {85.353469848633, 26.242904663086}, + {85.196914672852, 25.694961547852}, + {86.213837, 22.794571}, + {86.214981, 22.787247}, + {85.429000854492, 25.409317016602}, + {74.871139526367, 32.742691040039}, + {74.853286743164, 34.091262817383}, + {91.774978637695, 26.181106567383}, + {91.439895629883, 26.444778442383}, + {86.260757, 24.929582}, + {76.944808959961, 28.403091430664}, + {85.84098815918, 25.466995239258}, + {85.228500366211, 25.69221496582}, + {84.701156616211, 26.33903503418}, + {2.5220489501953, 46.986465454102}, + {2.628736, 47.680321}, + {0.16136169433594, 49.524307250977}, + {0.17921447753906, 49.505081176758}, + {1.924667, 47.887344}, + {1.6994476318359, 49.998092651367}, + {2.1183013916016, 47.905197143555}, + {2.255288, 49.931145}, + {2.4904632568359, 49.25651550293}, + {2.1251678466797, 49.178237915039}, + {2.449036, 49.016419}, + {2.318459, 49.079018}, + {2.5297, 48.935754}, + {3.5726165771484, 49.653396606445}, + {2.3586273193359, 48.913192749023}, + {2.611313, 50.002213}, + {2.653434, 49.997327}, + {7.3464202880859, 48.249893188477}, + {3.3473968505859, 49.728927612305}, + {6.4716339111328, 48.650894165039}, + {-60.985794067383, 14.021987915039}, + {-63.057218, 18.028419}, + {-77.365952, 25.045395}, + {-77.291977, 25.07341}, + {-77.399368286133, 25.067367553711}, + {-75.839309692383, 21.116409301758}, + {-69.911154, 18.476074}, + {-69.939651489258, 18.468704223633}, + {-69.931412, 18.472137}, + {-69.903945922852, 18.504409790039}, + {-70.695748, 19.46452}, + {-70.733413696289, 19.494552612305}, + {-69.725761, 18.463727}, + {-69.708564, 18.460714}, + {-70.024795532227, 18.416519165039}, + {-69.984970092773, 18.567581176758}, + {-69.775543, 18.465271}, + {-69.787667, 18.49339}, + {-69.996826, 18.48912}, + {-122.397537, 41.025925}, + {-121.778468, 38.669759}, + {-121.72233581543, 38.673934936523}, + {-121.37763977051, 38.55583190918}, + {-121.30897521973, 38.57780456543}, + {-121.270431, 38.62696}, + {-121.330032, 38.535843}, + {-123.015737, 44.973993}, + {-120.56739807129, 40.46745300293}, + {-122.05604553223, 42.616653442383}, + {-121.512909, 45.712051}, + {-123.047057, 45.07918}, + {-122.643671, 45.573347}, + {-122.561215, 45.634079}, + {-122.341311, 45.291187}, + {-124.24617, 43.393387}, + {-124.01573181152, 44.000930786133}, + {-117.158661, 46.736069}, + {-122.626084, 47.632376}, + {-116.7826, 47.678912}, + {77.573776245117, 12.952194213867}, + {77.65754699707, 12.864303588867}, + {75.597610473633, 12.472915649414}, + {75.795364379883, 14.006881713867}, + {76.465530395508, 14.637222290039}, + {77.555923461914, 12.985153198242}, + {77.572402954102, 13.031845092773}, + {77.627334594727, 13.016738891602}, + {76.679077, 11.797256}, + {77.678146362305, 12.960433959961}, + {75.471267700195, 13.993148803711}, + {74.965553, 15.432358}, + {75.570831, 13.916245}, + {76.620712280273, 12.316360473633}, + {76.232070922852, 16.154708862305}, + {77.664413452148, 12.769546508789}, + {77.610855102539, 12.931594848633}, + {77.632827758789, 12.898635864258}, + {77.639694213867, 12.890396118164}, + {77.571029663086, 12.971420288086}, + {77.617721557617, 13.136215209961}, + {77.311477661133, 16.477432250977}, + {77.08625793457, 17.977066040039}, + {-96.699600219727, 32.917098999023}, + {-106.50352478027, 35.089645385742}, + {-104.09477233887, 32.812728881836}, + {-116.1606, 43.547837}, + {-122.54672, 47.528643}, + {-122.275276, 47.834238}, + {-122.747455, 47.047038}, + {-122.43409, 47.229042}, + {-122.212601, 47.251205}, + {-122.014002, 47.703323}, + {-122.134326, 47.597583}, + {-122.132768, 47.50325}, + {-122.03014, 47.488424}, + {-111.967697, 41.596334}, + {-111.88737, 40.577408}, + {-106.39673, 31.903942}, + {-116.863507, 33.031394}, + {-115.539665, 32.769143}, + {26.693344116211, 58.357315063477}, + {25.43381, 58.550035}, + {27.205582, 57.942581}, + {24.743270874023, 59.406509399414}, + {24.643020629883, 59.395523071289}, + {24.833908, 59.46785}, + {24.824295043945, 59.392776489258}, + {23.821792602539, 59.032974243164}, + {28.186111450195, 59.379043579102}, + {42.030258178711, 47.681350708008}, + {40.144729614258, 47.756881713867}, + {39.759717, 47.251065}, + {40.34111, 48.484039}, + {40.359118, 48.656278}, + {39.793167114258, 47.199325561523}, + {40.631157, 47.409846}, + {39.779892, 47.309647}, + {39.67643737793, 47.274856567383}, + {30.300979614258, 59.983291625977}, + {30.336685180664, 59.933853149414}, + {30.219751, 50.44572}, + {30.494614, 50.408157}, + {30.52619934082, 50.451278686523}, + {30.506287, 50.440979}, + {30.490374, 50.452427}, + {30.478134155273, 50.356521606445}, + {30.397109985352, 50.366134643555}, + {30.493927, 50.457459}, + {30.554581, 50.387192}, + {30.472275, 50.563889}, + {30.600357055664, 50.46501159668}, + {30.529861, 50.297012}, + {30.531692504883, 50.401840209961}, + {36.211624145508, 49.987106323242}, + {30.116501, 50.563431}, + {36.278915, 49.98642}, + {36.272048950195, 49.991226196289}, + {34.541702270508, 49.592971801758}, + {34.530715942383, 49.617691040039}, + {32.259292602539, 48.501205444336}, + {30.752792358398, 46.455001831055}, + {32.304611206055, 48.523178100586}, + {30.737686157227, 46.47834777832}, + {0.000329, 43.868917}, + {1.4962005615234, 43.57795715332}, + {1.4632415771484, 43.620529174805}, + {1.4261627197266, 43.602676391602}, + {1.195793, 43.467751}, + {1.447351, 43.626807}, + {1.561432, 43.47496}, + {1.510409, 43.568238}, + {1.254089, 43.535385}, + {1.483498, 43.657608}, + {1.4934539794922, 43.562850952148}, + {1.414261, 43.646927}, + {7.4013519287109, 48.275985717773}, + {6.279373, 48.980827}, + {7.2942352294922, 47.986221313477}, + {6.0555267333984, 49.025802612305}, + {6.156464, 49.097214}, + {1.1130523681641, 49.430923461914}, + {1.4289093017578, 48.950271606445}, + {1.127472, 49.329506}, + {-66.910171508789, 10.502243041992}, + {-71.634292602539, 10.702743530273}, + {-63.202285766602, 9.7153472900391}, + {-68.129379, -16.49968}, + {-63.193865, -17.775175}, + {-66.155675, -17.402575}, + {-79.05143737793, -2.9216766357422}, + {-78.48014831543, -0.16822814941406}, + {-78.476456, -0.170975}, + {-78.483547, -0.155142}, + {-78.532333374023, -0.24925231933594}, + {-78.628463745117, -1.2407684326172}, + {-79.882755, -2.134747}, + {-79.920731, -2.193486}, + {-78.48968, -0.162483}, + {-80.465927, -1.057663}, + {-56.044725, -34.87591}, + {-57.960433959961, -31.39274597168}, + {-56.165967, -34.84007}, + {79.409866333008, 13.152694702148}, + {-56.197349, -34.797036}, + {78.920974731445, 12.898635864258}, + {78.28569, 12.534164}, + {78.129959106445, 12.168045043945}, + {79.516296, 12.897263}, + {79.116806, 12.925827}, + {77.282913, 10.993881}, + {78.204803, 9.868469}, + {79.783401489258, 11.831588745117}, + {77.428207397461, 11.088638305664}, + {78.107986450195, 9.8719024658203}, + {77.605361938477, 12.906875610352}, + {77.587509155273, 12.942581176758}, + {77.593002319336, 12.982406616211}, + {77.568283081055, 12.94807434082}, + {77.593002319336, 12.961807250977}, + {77.588882446289, 12.985153198242}, + {77.62321472168, 12.968673706055}, + {77.647933959961, 12.920608520508}, + {77.739944458008, 12.787399291992}, + {77.627334594727, 12.950820922852}, + {77.65754699707, 12.864303588867}, + {-0.211624, 46.83046}, + {4.0065765380859, 49.251022338867}, + {4.071579, 48.266144}, + {3.956451, 49.043655}, + {-2.084478, 48.632219}, + {-1.6815948486328, 48.151016235352}, + {-1.6376495361328, 48.065872192383}, + {-4.6176910400391, 48.343276977539}, + {-2.2995758056641, 48.604202270508}, + {-4.7701263427734, 48.347396850586}, + {1.0306549072266, 49.511947631836}, + {-4.4103240966797, 48.569869995117}, + {1.2297821044922, 49.20295715332}, + {0.772477, 49.485169}, + {0.179764, 48.631668}, + {-0.46211242675781, 48.991470336914}, + {-0.38520812988281, 49.165878295898}, + {-0.490266, 48.348084}, + {-0.42984, 49.184418}, + {5.753403, 49.501354}, + {5.945145, 49.259177}, + {1.5044403076172, 43.569717407227}, + {104.1236114502, 30.653915405273}, + {104.11262512207, 30.662155151367}, + {103.88740539551, 30.785751342773}, + {104.07417297363, 30.666275024414}, + {103.96156311035, 30.983505249023}, + {104.09477233887, 30.708847045898}, + {104.39414978027, 31.148300170898}, + {104.016495, 30.545883}, + {102.64869689941, 29.347915649414}, + {102.65007, 29.462585}, + {104.04396057129, 30.710220336914}, + {103.6580657959, 30.979385375977}, + {104.04808044434, 30.666275024414}, + {104.07486, 30.706787}, + {104.0357208252, 30.684127807617}, + {104.8184967041, 29.441299438477}, + {107.09541320801, 29.152908325195}, + {104.05494689941, 30.681381225586}, + {103.30238342285, 30.165023803711}, + {102.95082092285, 29.968643188477}, + {105.24421691895, 29.938430786133}, + {104.17099, 30.761719}, + {104.59739685059, 32.391128540039}, + {104.026566, 30.58342}, + {30.749359, 46.458435}, + {30.728073120117, 46.402816772461}, + {104.06867980957, 30.59211730957}, + {30.744236, 46.453629}, + {31.988754272461, 46.967239379883}, + {30.633316040039, 46.445388793945}, + {32.001113891602, 46.954879760742}, + {30.699983, 46.460495}, + {24.401321411133, 48.340530395508}, + {24.704818725586, 48.929672241211}, + {26.217499, 50.566635}, + {25.909653, 48.319931}, + {25.944900512695, 48.252639770508}, + {26.255264282227, 50.63117980957}, + {24.162368774414, 50.730056762695}, + {30.495986938477, 50.456771850586}, + {28.449783325195, 49.218063354492}, + {26.994095, 49.42543}, + {30.272827, 50.234299}, + {30.220985, 50.562515}, + {30.398483276367, 50.485610961914}, + {30.483627319336, 50.429306030273}, + {45.292239, 56.059141}, + {30.485000610352, 50.460891723633}, + {31.345137, 58.646927}, + {44.020158, 56.382523}, + {82.968063, 55.178146}, + {73.28064, 55.016327}, + {82.963943481445, 54.957046508789}, + {83.352584838867, 54.145431518555}, + {55.326461791992, 51.567764282227}, + {52.512588500977, 52.597732543945}, + {45.281525, 52.965775}, + {43.252487182617, 52.387619018555}, + {56.353225, 58.063431}, + {56.19987487793, 57.968673706055}, + {39.831165, 47.198411}, + {42.190933227539, 47.517929077148}, + {39.543228149414, 47.08122253418}, + {39.769135, 47.254257}, + {39.847755, 47.260094}, + {-4.9211883544922, 56.89338684082}, + {-101.590395, 30.731615}, + {-104.0714263916, 32.267532348633}, + {-102.113957, 32.865523}, + {-105.73997497559, 31.200485229492}, + {-102.499733, 35.254581}, + {-100.822914, 36.182577}, + {-106.549368, 31.803864}, + {-106.504971, 31.766891}, + {-106.40739440918, 31.896743774414}, + {-99.839401, 32.46666}, + {-102.088622, 32.15767}, + {-97.912216186523, 30.39436340332}, + {-97.42057800293, 27.684860229492}, + {-97.805099487305, 30.512466430664}, + {-97.362899780273, 27.695846557617}, + {-97.732315063477, 30.247421264648}, + {-97.669143676758, 30.364151000977}, + {-97.767563, 30.199356}, + {-97.938995, 30.228882}, + {-97.685012, 30.511068}, + {-97.531814575195, 26.02180480957}, + {2.3545074462891, 48.856887817383}, + {2.3929595947266, 48.825302124023}, + {2.257004, 48.843613}, + {2.2913360595703, 48.830795288086}, + {2.2982025146484, 48.833541870117}, + {2.2693634033203, 48.834915161133}, + {2.304039, 48.821182}, + {3.235474, 50.484925}, + {2.748644, 50.62294}, + {2.955212, 50.536644}, + {3.2869720458984, 50.34553527832}, + {3.027764, 50.657959}, + {3.142777, 50.411454}, + {3.119588, 50.764236}, + {3.142037, 50.643962}, + {3.156357, 50.647659}, + {2.2927093505859, 48.579483032227}, + {2.324639, 48.30098}, + {2.653885, 49.00946}, + {2.8859710693359, 49.029922485352}, + {2.551712, 48.962631}, + {-74.143948, 40.773047}, + {-74.152227, 40.738075}, + {-74.055616, 40.716019}, + {-74.589663, 40.37696}, + {-74.651203, 40.652593}, + {-74.0594, 40.14473}, + {-74.008639, 40.202445}, + {-74.277319, 40.332886}, + {-74.054393, 40.103965}, + {-74.007368, 40.446274}, + {-74.190262, 41.01265}, + {-74.698849, 41.098835}, + {-74.347839, 40.67627}, + {-74.343795776367, 40.762710571289}, + {-74.321274, 40.711899}, + {-74.235065, 40.880162}, + {-76.433945, 41.025356}, + {-75.979342, 41.214008}, + {-75.735141, 41.387524}, + {-75.15672, 40.998237}, + {-76.894302, 40.244917}, + {-77.449631, 41.139267}, + {-76.582260131836, 40.135116577148}, + {-76.12345, 40.152511}, + {-76.243986, 40.027263}, + {-77.528801, -9.530296}, + {-75.732193, -14.078979}, + {-71.545049, -16.386577}, + {-80.689941, -4.895782}, + {-76.517715454102, -10.491256713867}, + {-72.028057, -13.50093}, + {-79.859848, -6.781998}, + {-76.990127563477, -12.184524536133}, + {-77.113723754883, -12.041702270508}, + {-77.080765, -12.06871}, + {-76.958542, -12.068253}, + {-77.00798034668, -12.139205932617}, + {-77.005233764648, -12.093887329102}, + {-77.031326293945, -12.09114074707}, + {-80.618362426758, -5.1807403564453}, + {-70.061188, -15.721779}, + {-78.212356567383, -6.9330596923828}, + {-71.913070678711, -13.535842895508}, + {-71.948776245117, -13.530349731445}, + {-76.975021362305, -12.152938842773}, + {-76.983261108398, -12.155685424805}, + {-77.060165405273, -11.995010375977}, + {18.037490844727, 59.432601928711}, + {15.653457641602, 60.602645874023}, + {15.652084350586, 58.384780883789}, + {12.004623413086, 57.717361450195}, + {15.973434448242, 58.203506469727}, + {11.949691772461, 57.71598815918}, + {18.15559387207, 59.372177124023}, + {18.277816772461, 59.36393737793}, + {18.173446655273, 59.373550415039}, + {13.016738891602, 55.592880249023}, + {13.099136352539, 55.683517456055}, + {16.103897094727, 56.572036743164}, + {16.458206176758, 57.264175415039}, + {12.729721069336, 58.994522094727}, + {16.452713012695, 59.60563659668}, + {16.569442749023, 59.642715454102}, + {57.222519, 50.274582}, + {71.4077, 51.193542}, + {71.418685913086, 51.191482543945}, + {76.749115, 43.227768}, + {71.442031860352, 51.15852355957}, + {76.928329467773, 43.218154907227}, + {76.792535, 43.248206}, + {76.769027709961, 43.23600769043}, + {73.105774, 49.786606}, + {82.512130737305, 49.93766784668}, + {51.323318481445, 43.696060180664}, + {69.170608520508, 54.858169555664}, + {69.370422, 53.268585}, + {71.469497680664, 51.164016723633}, + {71.366500854492, 50.990982055664}, + {71.453934, 51.152573}, + {68.23127746582, 51.788864135742}, + {80.258560180664, 50.41145324707}, + {71.366500854492, 42.903671264648}, + {69.827041625977, 42.418899536133}, + {71.554641723633, 42.966842651367}, + {-117.107391, 32.67025}, + {-117.04490661621, 32.706985473633}, + {-97.761154174805, 30.430068969727}, + {-117.20970153809, 33.042068481445}, + {-117.34703063965, 33.187637329102}, + {-117.55577087402, 33.371658325195}, + {-117.309952, 33.102036}, + {-117.23030090332, 32.914352416992}, + {-117.11494445801, 32.852554321289}, + {-117.159405, 32.884483}, + {-117.20420837402, 32.881393432617}, + {-117.11769104004, 32.831954956055}, + {-117.1932220459, 33.34831237793}, + {-117.158473, 33.141983}, + {-117.06001281738, 33.109359741211}, + {-117.136917, 33.458176}, + {-122.03269958496, 37.274551391602}, + {-121.809352, 36.692401}, + {39.101028442383, 22.316665649414}, + {39.196472, 21.717911}, + {39.823537, 21.413645}, + {40.306777954102, 21.634140014648}, + {39.782180786133, 21.422653198242}, + {42.671585083008, 18.280563354492}, + {39.659271, 21.6362}, + {43.117904663086, 17.272567749023}, + {44.208297729492, 17.529373168945}, + {54.062347, 17.019196}, + {54.105606079102, 17.002029418945}, + {59.45182800293, 22.580337524414}, + {58.548202514648, 23.610305786133}, + {58.156124, 22.657244}, + {58.552322387695, 23.596572875977}, + {58.432846069336, 23.586959838867}, + {59.013748168945, 23.148880004883}, + {58.132095336914, 23.65837097168}, + {56.664047241211, 24.401321411133}, + {-47.694626, -15.745468}, + {-48.803073, -15.916032}, + {-50.612641, -15.106545}, + {-51.600723266602, -30.717086791992}, + {-47.629165649414, -1.1281585693359}, + {-51.173498, -30.053642}, + {-46.754379272461, -23.052749633789}, + {-47.259917, -0.922164}, + {-36.653318, -9.757052}, + {-41.445236206055, -4.4419097900391}, + {-36.68815612793, -5.1587677001953}, + {-46.915746, -23.569202}, + {-35.21044, -6.253172}, + {-35.700168, -9.656305}, + {-43.649413, -22.976735}, + {-34.89658, -8.055145}, + {50.057144165039, 26.473617553711}, + {49.9257, 26.16849}, + {46.757125854492, 24.605941772461}, + {49.131546020508, 26.472244262695}, + {46.748886108398, 24.600448608398}, + {46.783305, 24.694639}, + {46.740189, 24.836655}, + {46.645889282227, 24.796829223633}, + {46.709060668945, 24.870986938477}, + {46.625289916992, 24.787216186523}, + {46.648635864258, 24.741897583008}, + {46.533279418945, 24.568862915039}, + {46.599655, 24.583511}, + {46.669235229492, 24.54963684082}, + {46.828536987305, 24.608688354492}, + {46.651964, 24.723316}, + {46.555252075195, 24.629287719727}, + {46.387710571289, 24.928665161133}, + {46.565365, 24.623042}, + {47.285842895508, 24.122543334961}, + {46.851469, 24.624673}, + {47.272109985352, 24.209060668945}, + {46.805191040039, 24.688339233398}, + {46.799697875977, 24.887466430664}, + {46.845703, 24.87648}, + {7.35054, 53.58114}, + {8.174515, 53.128166}, + {8.180694, 53.192368}, + {9.123459, 53.474579}, + {8.739815, 52.888379}, + {9.4228363037109, 53.594741821289}, + {9.9021148681641, 52.68424987793}, + {10.31135559082, 53.825454711914}, + {9.857998, 53.598919}, + {10.01335144043, 53.55354309082}, + {0.09304, 50.946236}, + {-0.11424, 51.015787}, + {0.55000305175781, 50.885238647461}, + {-0.571227, 50.834177}, + {0.954609, 50.933819}, + {0.78208923339844, 51.183242797852}, + {0.553837, 50.903378}, + {1.314302, 51.120945}, + {0.575729, 51.332016}, + {0.73265075683594, 51.327438354492}, + {0.917015, 51.298599}, + {-1.485717, 52.461777}, + {-1.204706, 52.617009}, + {-1.55915, 52.407126}, + {-1.29438, 52.503639}, + {-1.150246, 52.629204}, + {-1.1226654052734, 52.63069152832}, + {-1.167526, 52.920456}, + {-1.288913, 52.813905}, + {-1.173477, 53.00972}, + {-1.136398, 52.932358}, + {0.776141, 51.54176}, + {-3.6852264404297, 40.461959838867}, + {-3.713608, 40.441971}, + {-3.353336, 40.438065}, + {-3.2993316650391, 40.190048217773}, + {-3.8719940185547, 40.339736938477}, + {-3.485475, 40.302533}, + {-2.896483, 39.964337}, + {-3.8280487060547, 40.338363647461}, + {-3.856201, 40.314851}, + {-3.6426544189453, 40.416641235352}, + {-3.644545, 40.447847}, + {-3.6646270751953, 40.431747436523}, + {-3.5053253173828, 40.766830444336}, + {-3.6330413818359, 40.923385620117}, + {-3.513977, 40.444107}, + {-3.6714935302734, 40.549850463867}, + {-3.632698, 40.544357}, + {-3.6550140380859, 40.547103881836}, + {13.961563110352, 51.688613891602}, + {13.679914, 51.161145}, + {13.98469, 51.870282}, + {14.822616577148, 50.898971557617}, + {14.816397, 50.883735}, + {14.01599, 51.518718}, + {9.218903, 52.655067}, + {9.6164703369141, 54.514846801758}, + {12.383651733398, 51.34391784668}, + {12.258682250977, 51.261520385742}, + {10.723342895508, 50.712203979492}, + {10.981521606445, 50.801467895508}, + {7.2667694091797, 51.31233215332}, + {7.4988555908203, 50.797348022461}, + {-104.85832214355, 38.812637329102}, + {-104.925065, 39.75499}, + {-104.85187, 38.830848}, + {-105.188026, 40.033493}, + {-105.136203, 38.439338}, + {-104.937979, 39.587869}, + {-104.857789, 39.410873}, + {-104.816437, 39.734116}, + {-104.646471, 38.83764}, + {-104.677837, 39.845982}, + {-104.968529, 39.887581}, + {-104.77317810059, 39.805526733398}, + {-104.768485, 39.762362}, + {-104.825865, 39.712854}, + {-106.39366149902, 39.642105102539}, + {-105.181322, 39.810366}, + {-105.00847, 40.402159}, + {-104.94071960449, 39.695663452148}, + {-104.785536, 38.779844}, + {-104.993591, 39.749908}, + {-105.06980895996, 38.864822387695}, + {12.084274291992, 49.020309448242}, + {10.805056, 49.319001}, + {10.555561, 49.299397}, + {8.3654022216797, 49.477615356445}, + {8.3544158935547, 49.544906616211}, + {8.4587860107422, 48.981857299805}, + {8.458786, 48.990555}, + {8.9641571044922, 48.777236938477}, + {8.966217, 48.841095}, + {9.5299530029297, 48.806076049805}, + {8.272934, 48.7397}, + {9.216843, 49.139175}, + {9.7139739990234, 49.108200073242}, + {-87.959976196289, 42.126388549805}, + {-88.024520874023, 41.97395324707}, + {-88.984451293945, 40.51139831543}, + {-87.902297973633, 41.87370300293}, + {-87.736129760742, 42.026138305664}, + {-87.602005, 41.780777}, + {-87.696169, 42.009959}, + {-87.645561, 41.959004}, + {-87.631759643555, 41.825637817383}, + {-87.716903686523, 41.837997436523}, + {-88.093185424805, 41.51252746582}, + {-87.852861, 41.610032}, + {-87.671585, 41.918564}, + {-87.629354, 41.900062}, + {-87.630386, 41.859627}, + {-88.13095, 39.451905}, + {-86.899651, 41.67089}, + {-88.303986, 42.051544}, + {-88.154983520508, 42.168960571289}, + {-73.498305, 41.460342}, + {-88.308792114258, 41.924514770508}, + {-72.919069, 41.294798}, + {-72.810135, 41.840668}, + {-73.073747, 41.930008}, + {-72.882614135742, 41.892929077148}, + {-72.370682, 41.73851}, + {-72.257728, 41.291447}, + {-71.985512, 41.497765}, + {-73.474502563477, 41.140365600586}, + {-72.754898071289, 41.664962768555}, + {-72.323684692383, 43.639755249023}, + {-70.447769165039, 43.847122192383}, + {-69.914932250977, 43.906173706055}, + {-71.39533996582, 43.008041381836}, + {-71.610946655273, 42.854232788086}, + {-72.615339, 44.048815}, + {-73.378008, 44.559031}, + {-73.853346, 40.695049}, + {-73.788549, 40.66732}, + {-73.964767456055, 40.632247924805}, + {-73.920155, 40.661698}, + {-74.026749, 40.61677}, + {-74.023801, 40.621219}, + {9.0122222900391, 45.187454223633}, + {9.1440582275391, 45.479965209961}, + {9.2717742919922, 45.592575073242}, + {9.2594146728516, 45.56510925293}, + {9.0163421630859, 45.519790649414}, + {13.358688354492, 38.124618530273}, + {13.350448608398, 38.110885620117}, + {13.10188293457, 38.145217895508}, + {14.226608276367, 37.374801635742}, + {15.080795288086, 37.512130737305}, + {15.218124, 37.223053}, + {13.790974, 45.65747}, + {13.809586, 45.598984}, + {11.825066, 45.412674}, + {11.945571899414, 45.40168762207}, + {11.870316, 45.397018}, + {11.702499389648, 45.614547729492}, + {12.254219, 45.51075}, + {10.836182, 45.460739}, + {11.013565, 45.268021}, + {12.194192, 44.131284}, + {12.637710571289, 43.991317749023}, + {17.073440551758, 54.469528198242}, + {17.569885, 53.694992}, + {18.06770324707, 53.100357055664}, + {16.214938, 51.201488}, + {18.086701, 51.766352}, + {16.942291, 52.410965}, + {16.937484741211, 52.427444458008}, + {16.89079284668, 52.415084838867}, + {17.038646, 51.183733}, + {17.041854858398, 51.118698120117}, + {17.376937866211, 51.199722290039}, + {20.950584, 52.345047}, + {21.112289428711, 52.277755737305}, + {21.039162, 52.257156}, + {21.012039, 52.180023}, + {21.09992980957, 52.239303588867}, + {21.007919, 52.17802}, + {22.569351, 51.240234}, + {19.476376, 51.761641}, + {19.417786, 51.792984}, + {19.362259, 51.804886}, + {-1.2078094482422, 53.829574584961}, + {-2.778168, 52.57782}, + {-2.434151, 52.668935}, + {-2.4904632568359, 53.762283325195}, + {-2.719248, 53.770974}, + {-0.13995, 53.595803}, + {-2.9917144775391, 53.836441040039}, + {-0.66099, 53.221352}, + {0.33474, 53.137951}, + {-2.976429, 51.602892}, + {-2.99429, 51.600715}, + {-2.1952056884766, 52.114334106445}, + {-1.8875885009766, 52.404098510742}, + {-2.1196746826172, 52.019577026367}, + {-2.775905, 51.395384}, + {-2.8626251220703, 51.390609741211}, + {-3.4709930419922, 51.836929321289}, + {-2.772675, 51.485024}, + {-4.0230560302734, 51.540298461914}, + {-5.995789, 36.859131}, + {-1.108932, 40.351575}, + {-0.89057922363281, 41.677322387695}, + {-0.81842, 41.669815}, + {2.72922, 39.590705}, + {2.644207, 39.569739}, + {-15.424656, 28.119066}, + {-15.392084, 27.982953}, + {-15.415535, 28.137016}, + {-3.702391, 38.884736}, + {-1.8711090087891, 38.996658325195}, + {-3.167152, 40.647697}, + {-6.97104, 38.890443}, + {-4.686136, 41.721899}, + {-7.498175, 42.976727}, + {-5.350571, 40.148392}, + {-8.999863, 43.143016}, + {-0.73951721191406, 37.745590209961}, + {-1.2325286865234, 38.083419799805}, + {-1.024809, 38.017988}, + {-2.995258, 43.3297}, + {-2.9683685302734, 43.315658569336}, + {37.814254760742, 55.944442749023}, + {36.550827026367, 55.555801391602}, + {37.043691, 55.607692}, + {37.539596557617, 55.907363891602}, + {38.316879272461, 55.434951782227}, + {37.521743774414, 55.503616333008}, + {37.815628051758, 56.316604614258}, + {37.838973999023, 56.43196105957}, + {37.211929, 55.752182}, + {37.898025512695, 55.698623657227}, + {37.576675415039, 55.439071655273}, + {36.27067565918, 55.778274536133}, + {37.120742797852, 55.657424926758}, + {38.904647827148, 55.049057006836}, + {37.171726, 55.723343}, + {37.130355834961, 55.657424926758}, + {38.130798, 56.23558}, + {38.058700561523, 55.614852905273}, + {37.941970825195, 55.658798217773}, + {38.04039, 55.61348}, + {-6.1997222900391, 53.274765014648}, + {-6.1145782470703, 53.269271850586}, + {19.853668, 41.282501}, + {14.473618, 35.924789}, + {14.526574, 35.854961}, + {33.369141, 35.128326}, + {33.338582, 35.159644}, + {33.625029, 34.900475}, + {41.779221, 41.839371}, + {41.618271, 41.634064}, + {23.380934, 42.636774}, + {23.300285, 42.705917}, + {24.763607, 42.146406}, + {14.276623, 45.93969}, + {23.315197, 42.654314}, + {15.566202, 46.37618}, + {15.969314575195, 46.437149047852}, + {15.835209, 46.570332}, + {13.798076, 45.579821}, + {21.413040161133, 42.001419067383}, + {-104.661494, 50.436791}, + {-4.540533, 42.034231}, + {-15.441970825195, 28.133926391602}, + {-15.419998168945, 28.113327026367}, + {-15.446090698242, 28.127059936523}, + {-15.586166381836, 27.74528503418}, + {-15.543594360352, 27.778244018555}, + {-15.598651, 27.735672}, + {-15.510361, 27.787582}, + {-13.557129, 28.956528}, + {-8.60102, 42.253908}, + {-8.7155914306641, 42.236251831055}, + {-8.709183, 42.23671}, + {-8.637314, 42.43428}, + {-8.596802, 42.578888}, + {-8.814468, 42.51297}, + {-5.454208, 40.626305}, + {-5.5446624755859, 40.846481323242}, + {-5.664825, 40.982437}, + {-16.721878051758, 28.051528930664}, + {-16.254959106445, 28.471755981445}, + {-71.28547668457, 42.337875366211}, + {-70.944900512695, 42.837753295898}, + {-71.105575561523, 42.420272827148}, + {-71.04377746582, 42.260971069336}, + {-71.74690246582, 41.47819519043}, + {-70.561066, 41.456223}, + {-106.56669616699, 39.636611938477}, + {-76.314468383789, 39.484176635742}, + {-76.523208618164, 39.489669799805}, + {-77.709732055664, 39.581680297852}, + {-76.633071899414, 39.197158813477}, + {-76.471709, 39.650346}, + {-76.663284301758, 39.511642456055}, + {-76.004104614258, 39.018630981445}, + {-76.832624, 39.293999}, + {-76.509476, 38.953995}, + {-76.523209, 39.05571}, + {-76.695183, 39.345453}, + {-76.523208618164, 39.32487487793}, + {-77.046432495117, 38.903274536133}, + {-76.753134, 39.098985}, + {8.395437, 46.917801}, + {14.44221496582, 50.074996948242}, + {12.925644, 50.069962}, + {78.552246, 17.353592}, + {78.682022, 17.312393}, + {78.650437, 17.40818}, + {78.363419, 17.453646}, + {81.697769165039, 16.756210327148}, + {78.823471069336, 14.47380065918}, + {79.596634, 17.151033}, + {77.024459838867, 28.620071411133}, + {77.086945, 28.685989}, + {77.181015014648, 28.729934692383}, + {77.257919311523, 28.52668762207}, + {77.027298, 28.617783}, + {4.3856048583984, 43.821029663086}, + {4.33754, 43.809128}, + {2.2940826416016, 48.876113891602}, + {2.225761, 48.848763}, + {2.4327850341797, 48.847274780273}, + {2.4835968017578, 48.852767944336}, + {6.050034, 49.180328}, + {7.0168304443359, 49.042282104492}, + {1.0732269287109, 45.761489868164}, + {2.5316619873047, 49.045028686523}, + {2.2446441650391, 48.994216918945}, + {2.3682403564453, 48.96125793457}, + {2.1800994873047, 48.980484008789}, + {2.0400238037109, 48.92692565918}, + {0.27534484863281, 45.571975708008}, + {-0.46897888183594, 46.30256652832}, + {1.9892120361328, 46.582717895508}, + {2.4149322509766, 48.775863647461}, + {2.3091888427734, 48.591842651367}, + {2.1677398681641, 48.887100219727}, + {2.621613, 48.830795}, + {6.0074615478516, 45.539016723633}, + {5.8563995361328, 45.593948364258}, + {5.2027130126953, 45.434646606445}, + {1.5154266357422, 43.852615356445}, + {-81.447668, 28.481279}, + {-75.360031, 40.084207}, + {-78.491134643555, 35.798263549805}, + {-75.351916, 39.861957}, + {-98.578262329102, 29.567642211914}, + {-90.30143737793, 38.645095825195}, + {-90.518712, 38.732202}, + {-71.074864, 42.348862}, + {-71.188065, 42.179489}, + {-82.660012, 27.785616}, + {-96.755905151367, 32.923965454102}, + {-96.755905151367, 32.790756225586}, + {-97.062149047852, 33.153305053711}, + {-82.49153137207, 27.956771850586}, + {-80.269546508789, 26.139907836914}, + {-121.06178283691, 39.157333374023}, + {-66.051864624023, 18.240737915039}, + {-66.261978149414, 18.14323425293}, + {-66.113662719727, 18.427505493164}, + {-65.880741, 18.177567}, + {-66.081979, 18.453304}, + {-99.14680480957, 19.39567565918}, + {76.39274597168, 10.05729675293}, + {76.579513549805, 9.3926239013672}, + {76.659164428711, 9.1687774658203}, + {76.583633, 9.5858}, + {76.439438, 9.591064}, + {76.525612, 9.572182}, + {76.595078, 9.860916}, + {76.759414672852, 9.1426849365234}, + {76.703109741211, 9.1042327880859}, + {76.769714, 8.924332}, + {76.102981567383, 11.798629760742}, + {76.214218139648, 11.076278686523}, + {76.129074, 11.122971}, + {75.932693481445, 10.885391235352}, + {75.483627319336, 11.922225952148}, + {76.986008, 29.653244}, + {76.028823852539, 10.841445922852}, + {76.946182250977, 29.805221557617}, + {75.026321411133, 29.531936645508}, + {76.840782, 30.318832}, + {77.099990844727, 28.870010375977}, + {76.723251, 28.582535}, + {76.777267456055, 28.655776977539}, + {76.659164, 28.534927}, + {72.808456420898, 21.18782043457}, + {73.176498413086, 22.323532104492}, + {72.875159, 21.072464}, + {73.166885375977, 22.322158813477}, + {73.467636108398, 23.221664428711}, + {69.868240356445, 22.393569946289}, + {72.717819213867, 23.440017700195}, + {70.80207824707, 22.29606628418}, + {72.131423950195, 21.686325073242}, + {72.929306030273, 20.611038208008}, + {73.052216, 22.81311}, + {72.93342590332, 20.951614379883}, + {72.411575, 24.158936}, + {73.129806518555, 22.316665649414}, + {78.422470092773, 17.39616394043}, + {72.926559, 22.609863}, + {78.451309204102, 17.405776977539}, + {78.429336547852, 17.422256469727}, + {78.500747680664, 17.390670776367}, + {78.465042114258, 17.41813659668}, + {78.478775024414, 17.407150268555}, + {78.495255, 17.482338}, + {78.557052612305, 17.372817993164}, + {72.904037, 19.05455}, + {72.85514831543, 19.141616821289}, + {72.839355, 19.204788}, + {72.883987426758, 19.129257202148}, + {72.84553527832, 19.200668334961}, + {73.146286010742, 19.250106811523}, + {72.959518432617, 19.221267700195}, + {78.688888549805, 10.818099975586}, + {76.943435668945, 10.940322875977}, + {72.860641479492, 19.072952270508}, + {77.347183227539, 11.091384887695}, + {77.021713, 10.995255}, + {76.563034057617, 8.9023590087891}, + {80.191268920898, 13.031845092773}, + {85.836868286133, 20.479202270508}, + {76.659164428711, 10.529708862305}, + {67.043380737305, 24.876480102539}, + {77.686386108398, 28.442916870117}, + {73.10538, 33.709672}, + {74.40477, 31.536942}, + {73.085861206055, 31.417465209961}, + {67.079086303711, 24.869613647461}, + {67.16423, 24.889755}, + {71.484603881836, 30.197982788086}, + {-43.058853149414, -22.815170288086}, + {-44.441438, -19.987192}, + {-48.339864, -10.343734}, + {-48.300668, -10.348973}, + {-39.084338, -16.480918}, + {-39.075278, -16.502333}, + {-48.632802, -17.745192}, + {-49.261682, -25.43142}, + {-48.332977, -25.553513}, + {-63.026186, -7.480968}, + {-46.444879, -23.418801}, + {-43.244246, -22.677134}, + {-52.193398, -29.211835}, + {-52.715835571289, -28.348159790039}, + {-48.949661, -16.32692}, + {-46.114269, -23.822356}, + {-46.542892456055, -23.63639831543}, + {-46.26579, -23.544068}, + {-46.654301, -23.621292}, + {-46.547012329102, -23.577346801758}, + {-46.42204284668, -23.400192260742}, + {9.2813873291016, 45.815048217773}, + {9.3061065673828, 45.798568725586}, + {9.339157, 45.573761}, + {9.306965, 45.468807}, + {9.238468, 45.552121}, + {9.154495, 45.571976}, + {9.2154693603516, 45.56510925293}, + {9.1550445556641, 45.473098754883}, + {9.128265, 45.511551}, + {8.902359, 45.907059}, + {8.8639068603516, 45.867233276367}, + {8.8611602783203, 45.684585571289}, + {9.105606, 45.68779}, + {8.976527, 44.999317}, + {9.142303, 45.168076}, + {8.9531707763672, 45.59944152832}, + {9.1069793701172, 45.518417358398}, + {9.7785186767578, 45.749130249023}, + {8.985381, 45.55275}, + {80.632553, 16.5168}, + {9.6329498291016, 45.66535949707}, + {78.502579, 15.457535}, + {79.974631, 17.01027}, + {78.047561645508, 15.833358764648}, + {88.513412475586, 22.569351196289}, + {86.338119506836, 23.34114074707}, + {80.437088012695, 16.305770874023}, + {85.290298461914, 25.682601928711}, + {85.900039672852, 26.183853149414}, + {92.743607, 11.66954}, + {85.891799926758, 26.145401000977}, + {85.166702270508, 25.60432434082}, + {86.158611, 23.64915}, + {86.7453, 25.244522}, + {85.131855, 25.5966}, + {82.208633422852, 19.103164672852}, + {84.697036743164, 19.751358032227}, + {84.797287, 19.322205}, + {83.151321, 19.890366}, + {84.050216674805, 22.109298706055}, + {85.841331, 20.292778}, + {86.072388, 20.790939}, + {85.878067, 20.475082}, + {85.842361, 20.133133}, + {86.636025, 20.30813}, + {15.853942, 40.504565}, + {14.832916, 40.936432}, + {9.117508, 39.240189}, + {14.205322, 40.969391}, + {12.565384, 37.974014}, + {15.094095, 37.509456}, + {15.174179077148, 37.624740600586}, + {12.56218, 45.860367}, + {7.311401, 44.824905}, + {13.32756, 38.144302}, + {13.333969116211, 38.104019165039}, + {13.055191040039, 45.823287963867}, + {11.008987426758, 44.938888549805}, + {11.606369018555, 44.88395690918}, + {10.948562, 44.535828}, + {12.755825, 43.977592}, + {105.85945129395, 20.935134887695}, + {105.92948913574, 20.973587036133}, + {105.83885192871, 21.032638549805}, + {105.91026306152, 21.002426147461}, + {105.81962585449, 21.161727905273}, + {105.84022521973, 21.023025512695}, + {105.8814239502, 21.046371459961}, + {105.77980041504, 21.208419799805}, + {105.83610534668, 21.01203918457}, + {105.75782775879, 20.957107543945}, + {105.86357116699, 21.01203918457}, + {105.7234954834, 21.018905639648}, + {105.8113861084, 21.025772094727}, + {106.66557312012, 21.051864624023}, + {106.4266204834, 20.899429321289}, + {105.60539245605, 21.314163208008}, + {107.14622497559, 20.959854125977}, + {106.70539855957, 21.020278930664}, + {105.69877624512, 20.34049987793}, + {106.67381286621, 20.885696411133}, + {106.35520935059, 20.556106567383}, + {105.94871520996, 20.920028686523}, + {105.08079528809, 20.663223266602}, + {105.0821685791, 20.66047668457}, + {106.1547088623, 22.73551940918}, + {32.847748, 39.93187}, + {38.50227355957, 39.923629760742}, + {34.030838012695, 36.513748168945}, + {36.026229858398, 36.114120483398}, + {35.376663208008, 37.006759643555}, + {31.757973, 36.95408}, + {28.916702270508, 37.624740600586}, + {27.204208, 38.467941}, + {29.194107055664, 36.730728149414}, + {30.522767, 37.758637}, + {30.509719848633, 37.605514526367}, + {28.347776, 37.217547}, + {30.585250854492, 36.579666137695}, + {30.310755, 36.368147}, + {32.788009643555, 39.966201782227}, + {32.727603, 39.969406}, + {32.814102, 39.900284}, + {30.714340209961, 36.874923706055}, + {30.53581237793, 36.528854370117}, + {18.585433959961, 50.010452270508}, + {16.971817016602, 51.047286987305}, + {17.310745, 50.952255}, + {16.997221, 51.139298}, + {16.958084106445, 52.416458129883}, + {16.871566772461, 52.421951293945}, + {18.427505493164, 54.557418823242}, + {18.16520690918, 54.766159057617}, + {18.387680053711, 54.571151733398}, + {18.633499145508, 54.36653137207}, + {19.420394897461, 54.160537719727}, + {18.018264770508, 53.12370300293}, + {17.373371, 51.174845}, + {17.126998901367, 51.207962036133}, + {22.015914916992, 49.711074829102}, + {16.910018920898, 51.483993530273}, + {16.984176635742, 54.472274780273}, + {18.126754760742, 52.17887878418}, + {4.9297, 52.37373}, + {4.972879, 52.381689}, + {4.8140716552734, 52.438430786133}, + {4.8456573486328, 52.37663269043}, + {4.972595, 52.358238}, + {4.9527740478516, 52.305221557617}, + {4.752788, 52.26986}, + {4.8140716552734, 52.643051147461}, + {4.8484039306641, 52.475509643555}, + {4.9823, 52.47551}, + {4.741013, 52.949844}, + {4.7124481201172, 52.512588500977}, + {4.9568939208984, 52.272262573242}, + {4.699574, 52.630177}, + {4.71186, 52.292862}, + {4.641724, 52.387619}, + {4.6987152099609, 52.268142700195}, + {5.413342, 51.900101}, + {5.8591461181641, 51.886367797852}, + {5.63497, 51.7759}, + {6.057059, 51.853525}, + {5.8715057373047, 51.865768432617}, + {-4.625473, 55.551682}, + {-4.5655059814453, 55.503616333008}, + {-0.69557189941406, 52.373886108398}, + {-0.15998840332031, 51.155776977539}, + {-0.69969177246094, 52.386245727539}, + {0.082397, 52.737122}, + {0.13114929199219, 52.202224731445}, + {0.045417, 52.239402}, + {1.324932, 52.641678}, + {-1.0979461669922, 53.295364379883}, + {-0.099563598632812, 51.485366821289}, + {-1.8271636962891, 57.507247924805}, + {-2.076733, 51.907495}, + {-2.153183, 51.910208}, + {-4.2084503173828, 55.761795043945}, + {-2.2281646728516, 51.847915649414}, + {-2.1443939208984, 51.924819946289}, + {-2.6236724853516, 51.45378112793}, + {-2.6264190673828, 51.418075561523}, + {15.472183227539, 46.90544128418}, + {13.772048950195, 47.929916381836}, + {15.168685913086, 48.606948852539}, + {14.298019, 48.507156}, + {15.610886, 48.449936}, + {15.625991821289, 48.20182800293}, + {14.698334, 48.122864}, + {16.349716186523, 48.159255981445}, + {15.625991821289, 48.194961547852}, + {16.340103149414, 48.155136108398}, + {16.411514282227, 48.189468383789}, + {16.36344909668, 48.194961547852}, + {16.35704, 48.15239}, + {16.265488, 48.165207}, + {16.406021118164, 48.196334838867}, + {16.373062133789, 48.229293823242}, + {-1.276932, 48.123862}, + {-1.6046905517578, 48.118057250977}, + {-1.630783, 47.255443}, + {-1.4000701904297, 47.328414916992}, + {-1.2229156494141, 47.358627319336}, + {-4.409981, 48.399582}, + {1.693096, 50.892963}, + {2.348623, 50.6353}, + {1.691238, 50.448273}, + {-1.50383, 48.983079}, + {-0.086705, 49.256016}, + {-3.327975, 47.916183}, + {-1.5416, 48.863835}, + {-1.349261, 48.695355}, + {-1.562118, 48.617935}, + {6.952205, 43.56584}, + {7.1198272705078, 43.58757019043}, + {6.9605255126953, 43.546371459961}, + {7.478256, 43.763077}, + {7.2777557373047, 43.69743347168}, + {-47.93285, -15.802901}, + {-49.226303100586, -25.423049926758}, + {-49.065628051758, -26.48323059082}, + {-49.325180053711, -25.777359008789}, + {-48.808684, -26.448698}, + {-51.606216430664, -30.718460083008}, + {-49.182459, -25.51487}, + {-48.477523, -27.650371}, + {-48.506574, -27.662763}, + {-51.143417, -29.630127}, + {-49.117832, -25.528628}, + {-49.253769, -25.419388}, + {-54.578803, -25.546254}, + {-49.152762, -25.678416}, + {-48.851232, -25.124354}, + {-42.042617797852, -20.266342163086}, + {-46.54426574707, -23.534774780273}, + {-38.66569519043, -3.7085723876953}, + {-51.273880004883, -29.991989135742}, + {-1.6912078857422, 50.875625610352}, + {-4.188309, 50.375748}, + {-2.3448944091797, 52.099227905273}, + {-3.2402801513672, 51.482620239258}, + {-2.714691, 52.690888}, + {-2.43089, 52.750275}, + {-5.812454, 54.652519}, + {-2.2528839111328, 53.55354309082}, + {-2.599141, 53.265651}, + {-2.0317840576172, 52.814712524414}, + {-1.908951, 52.590002}, + {-2.4533843994141, 52.678756713867}, + {1.3039398193359, 51.350784301758}, + {-0.245525, 52.572817}, + {-0.014419555664062, 51.499099731445}, + {0.15174865722656, 51.54167175293}, + {55.204238891602, 25.115432739258}, + {55.200119018555, 25.125045776367}, + {55.212478637695, 25.079727172852}, + {55.156403, 25.098495}, + {55.257797241211, 25.212936401367}, + {55.300369262695, 25.244522094727}, + {55.110168, 25.017929}, + {55.331954956055, 25.256881713867}, + {55.748062133789, 25.619430541992}, + {55.457764, 25.390015}, + {55.573654174805, 25.585098266602}, + {55.369583, 25.324448}, + {54.723587036133, 24.629287719727}, + {54.788131713867, 24.704818725586}, + {54.393997, 24.450073}, + {54.34455871582, 24.478225708008}, + {54.374771118164, 24.497451782227}, + {54.561538696289, 24.25163269043}, + {54.551239, 24.324417}, + {54.631184, 24.333442}, + {52.807846069336, 24.062118530273}, + {54.523087, 24.423294}, + {54.876234, 24.820598}, + {54.354446, 24.484543}, + {54.532699584961, 24.338150024414}, + {106.69166564941, 10.802993774414}, + {106.673355, 10.797501}, + {106.73286437988, 10.792007446289}, + {106.71775817871, 10.82633972168}, + {106.653229, 10.767925}, + {106.62300109863, 10.768661499023}, + {106.67793273926, 10.73844909668}, + {106.6202545166, 10.779647827148}, + {106.688919, 10.739548}, + {107.19841003418, 10.927963256836}, + {106.68617248535, 10.761795043945}, + {107.138598, 10.501884}, + {106.705536, 10.768936}, + {106.302567, 10.401535}, + {108.63899230957, 11.839828491211}, + {106.077118, 10.415726}, + {109.29817199707, 13.081283569336}, + {108.04023742676, 12.667922973633}, + {108.18718, 15.931549}, + {105.79490661621, 20.994186401367}, + {108.21876525879, 16.075057983398}, + {109.14573669434, 12.505874633789}, + {105.84571838379, 21.029891967773}, + {105.77774, 21.027969}, + {7.0113372802734, 43.606796264648}, + {7.122182, 43.671733}, + {7.187462, 43.819313}, + {7.10355, 43.714802}, + {1.530533, 44.782791}, + {0.414047, 43.594894}, + {1.807251, 43.530235}, + {-0.206223, 44.488449}, + {-0.74913024902344, 43.847122192383}, + {-1.2435150146484, 44.204177856445}, + {0.720487, 45.136839}, + {0.259552, 44.319534}, + {2.747269, 44.514084}, + {0.030677, 44.662681}, + {2.282639, 44.425278}, + {-0.57197570800781, 44.850997924805}, + {-0.591888, 44.817352}, + {-0.573421, 44.835458}, + {-0.64613342285156, 44.837265014648}, + {-0.652948, 44.844853}, + {-0.966511, 43.526859}, + {2.351303, 48.856888}, + {2.3696136474609, 48.843154907227}, + {2.4561309814453, 48.878860473633}, + {4.4474029541016, 45.422286987305}, + {0.35774230957031, 44.831771850586}, + {4.7975921630859, 45.591201782227}, + {-0.83839416503906, 44.645004272461}, + {3.4380340576172, 45.968856811523}, + {3.4586334228516, 46.084213256836}, + {3.0864715576172, 45.941390991211}, + {4.0134429931641, 47.847518920898}, + {2.3641204833984, 48.909072875977}, + {7.0484161376953, 48.168869018555}, + {2.2432708740234, 49.038162231445}, + {4.9102020263672, 43.788070678711}, + {-3.064957, 48.784103}, + {-3.9351654052734, 47.946395874023}, + {-2.017705, 48.468591}, + {-4.4721221923828, 48.24577331543}, + {6.8918609619141, 45.462112426758}, + {0.055618286132812, 43.209915161133}, + {6.5457916259766, 43.457107543945}, + {7.3299407958984, 47.781600952148}, + {1.7969512939453, 48.964004516602}, + {5.8206939697266, 47.252883911133}, + {-80.264053344727, 25.770492553711}, + {-80.310745239258, 25.689468383789}, + {-80.38765, 25.740829}, + {-80.280532836914, 26.047897338867}, + {-80.071792602539, 26.496963500977}, + {-80.097885131836, 26.516189575195}, + {-80.169296264648, 26.112442016602}, + {-80.108871459961, 26.183853149414}, + {-80.145444, 26.200622}, + {-96.946792602539, 32.995376586914}, + {-96.887741088867, 32.880020141602}, + {-97.040176391602, 32.945938110352}, + {-96.917329, 32.839446}, + {-96.533432006836, 32.735824584961}, + {-102.087021, 33.482895}, + {-97.219391, 32.903366}, + {-98.178634643555, 33.771286010742}, + {-98.679337, 33.966293}, + {-96.828689575195, 32.925338745117}, + {-66.114807, 18.383789}, + {-77.866287231445, 34.191513061523}, + {-66.068344116211, 18.390426635742}, + {35.033798, 47.875076}, + {35.11385, 47.854385}, + {35.160344, 47.821477}, + {23.492202758789, 49.962387084961}, + {23.672294, 49.734039}, + {24.001374, 49.832655}, + {25.346538, 50.779495}, + {33.146438598633, 46.283340454102}, + {23.879470825195, 49.039535522461}, + {28.655776977539, 50.280990600586}, + {32.233200073242, 48.950271606445}, + {33.198623657227, 45.716171264648}, + {33.519973754883, 45.77522277832}, + {23.852005004883, 49.257888793945}, + {-122.62321472168, 45.409927368164}, + {-122.709046, 45.517044}, + {-119.307221, 42.122773}, + {-123.05168151855, 44.894943237305}, + {-123.02421569824, 44.952621459961}, + {-122.65342712402, 45.519790649414}, + {-122.768784, 45.292168}, + {-122.25586, 45.498276}, + {-122.66441345215, 45.685958862305}, + {-92.88459777832, 37.262191772461}, + {-122.68363952637, 45.506057739258}, + {-94.676742553711, 38.873062133789}, + {-94.827019, 37.172979}, + {-94.65004, 36.851976}, + {-94.548283, 37.083977}, + {-94.436416625977, 39.154586791992}, + {-92.598267, 37.54509}, + {-94.655647, 38.989857}, + {-94.193344116211, 38.539352416992}, + {-93.225173950195, 37.186660766602}, + {8.5604095458984, 11.93733215332}, + {4.5709991455078, 7.5057220458984}, + {5.689545, 5.887299}, + {13.250198364258, 10.246810913086}, + {3.870277, 7.360153}, + {4.577185, 8.478322}, + {7.5167083740234, 6.4469146728516}, + {3.928986, 7.437744}, + {7.4452972412109, 10.463790893555}, + {3.3528900146484, 6.5595245361328}, + {3.356552, 6.629105}, + {5.9978485107422, 9.0671539306641}, + {3.6096954345703, 6.5636444091797}, + {3.399925, 6.459274}, + {3.2732391357422, 6.6103363037109}, + {3.284225, 6.608047}, + {3.3487701416016, 6.5320587158203}, + {3.345337, 6.559525}, + {3.3254241943359, 6.5196990966797}, + {3.338013, 6.449661}, + {3.4696197509766, 6.6446685791016}, + {3.3927154541016, 6.5952301025391}, + {3.3748626708984, 7.1212005615234}, + {3.35701, 7.145233}, + {3.2320404052734, 6.5430450439453}, + {-72.791976928711, 43.45573425293}, + {-96.75499, 46.83403}, + {-122.26890563965, 47.482223510742}, + {-122.397098, 47.593065}, + {-122.333205, 47.602312}, + {-122.174952, 47.550888}, + {-122.6685333252, 47.528915405273}, + {-122.14256286621, 47.659378051758}, + {-122.305439, 47.399361}, + {-122.390671, 47.524796}, + {-122.23671, 47.421914}, + {-122.868661, 47.169613}, + {-122.53944396973, 47.178726196289}, + {-117.171408, 33.955221}, + {-116.931818, 33.768603}, + {-117.708995, 34.08169}, + {-115.835037, 34.124222}, + {-117.61756896973, 34.148941040039}, + {-117.323914, 34.110146}, + {-117.040506, 34.010332}, + {-117.456519, 34.104808}, + {-117.08335876465, 33.942947387695}, + {-117.87300109863, 33.661422729492}, + {-117.67387390137, 34.111862182617}, + {-115.55763244629, 34.74494934082}, + {-117.77275085449, 33.695755004883}, + {-117.86302, 33.62766}, + {-117.863388, 33.775818}, + {-117.72331237793, 33.72184753418}, + {-117.892269, 33.780899}, + {-118.117587, 34.153061}, + {-118.011075, 33.877178}, + {-118.105445, 33.900805}, + {-117.74803161621, 34.120101928711}, + {-117.88063, 33.867213}, + {-117.965698, 33.919678}, + {-117.962767, 33.922797}, + {5.784988, 46.899948}, + {6.012979, 47.2755}, + {4.7330474853516, 44.373092651367}, + {1.467207, 49.019377}, + {-3.606486, 48.282396}, + {-4.3897247314453, 48.406448364258}, + {4.355642, 43.825555}, + {4.272926, 43.567109}, + {-0.56785583496094, 44.838638305664}, + {1.1872100830078, 43.554611206055}, + {-0.455704, 44.77684}, + {4.0505218505859, 43.53401184082}, + {-1.685782, 47.885815}, + {5.676891, 45.234146}, + {0.657669, 47.394333}, + {-1.6225433349609, 48.131790161133}, + {5.9786224365234, 45.344009399414}, + {-0.703536, 45.412125}, + {7.530926, 49.981209}, + {6.730727, 51.560452}, + {8.479538, 48.173874}, + {6.944733, 51.940271}, + {9.1632843017578, 47.706069946289}, + {6.7435455322266, 50.86051940918}, + {8.781326, 48.002884}, + {8.6167144775391, 49.009323120117}, + {7.501602, 50.297813}, + {8.2926177978516, 48.834915161133}, + {6.793696, 50.658529}, + {7.216232, 51.224716}, + {6.6927337646484, 51.370010375977}, + {7.2626495361328, 51.188735961914}, + {37.907638549805, 55.695877075195}, + {38.014755249023, 55.665664672852}, + {37.9319, 55.633621}, + {37.866439819336, 55.671157836914}, + {37.827765, 55.687024}, + {38.232193, 55.825882}, + {38.009949, 55.743942}, + {37.841720581055, 55.786514282227}, + {37.915878295898, 55.756301879883}, + {37.700271606445, 55.748062133789}, + {37.752456665039, 55.601119995117}, + {37.551826, 55.306635}, + {37.614147, 55.435344}, + {37.619247436523, 55.656051635742}, + {37.690658569336, 55.642318725586}, + {37.659072875977, 55.583267211914}, + {37.660446166992, 55.60661315918}, + {37.745590209961, 55.59700012207}, + {37.714004516602, 55.680770874023}, + {-4.8456573486328, 38.789291381836}, + {-0.069351196289062, 39.865951538086}, + {-3.432541, 39.25415}, + {-4.797592, 37.879143}, + {-3.55201, 38.985904}, + {-4.5243072509766, 37.682418823242}, + {-4.7371673583984, 37.124862670898}, + {-4.6396636962891, 37.54508972168}, + {-8.7087249755859, 43.286819458008}, + {-8.375931, 43.335342}, + {-8.7087249755859, 43.289566040039}, + {-9.1866302490234, 42.953109741211}, + {-8.5439300537109, 42.876205444336}, + {-8.9559173583984, 42.744369506836}, + {-2.544598, 39.801764}, + {-2.1265411376953, 40.078811645508}, + {-2.2034454345703, 39.360580444336}, + {2.8090667724609, 41.976699829102}, + {3.119583, 42.129135}, + {2.8200531005859, 41.975326538086}, + {2.816549, 41.973286}, + {2.7349090576172, 41.816024780273}, + {13.360164, 52.539227}, + {13.46434, 52.515335}, + {7.144363, 51.471359}, + {13.269621, 52.508469}, + {7.5441741943359, 51.426315307617}, + {7.326141, 51.652908}, + {7.218704, 51.544876}, + {7.108841, 51.542702}, + {7.156448, 51.536179}, + {7.4755096435547, 51.589736938477}, + {7.6622772216797, 51.54167175293}, + {7.4040985107422, 51.584243774414}, + {8.032883, 51.762177}, + {8.004672, 51.743549}, + {8.129962, 51.388493}, + {7.3436737060547, 51.306838989258}, + {7.621765, 51.256027}, + {24.19807434082, 45.760116577148}, + {26.371994, 46.924667}, + {23.902512, 47.050552}, + {24.937592, 45.832214}, + {22.029647827148, 46.746139526367}, + {26.035537719727, 44.42253112793}, + {26.063003540039, 44.399185180664}, + {26.061630249023, 44.429397583008}, + {26.030731, 44.349747}, + {26.447525, 44.674759}, + {26.086349487305, 44.451370239258}, + {25.964126586914, 44.473342895508}, + {26.085693, 44.730447}, + {26.144027709961, 44.367599487305}, + {26.139907836914, 44.415664672852}, + {26.094589233398, 44.432144165039}, + {21.917037963867, 45.29182434082}, + {24.219663, 45.771501}, + {26.074186, 44.650792}, + {21.248245239258, 46.20231628418}, + {24.365615844727, 46.174850463867}, + {27.658767700195, 54.012222290039}, + {26.847152709961, 54.303359985352}, + {27.529678344727, 53.843307495117}, + {27.468796, 53.841934}, + {27.70133972168, 53.84880065918}, + {27.47818, 53.931198}, + {27.573623657227, 53.91471862793}, + {27.540064, 53.91446}, + {27.58461, 53.838844}, + {27.601089477539, 53.933944702148}, + {27.590103149414, 53.918838500977}, + {27.583236694336, 53.90510559082}, + {27.507019, 53.889999}, + {27.573623657227, 53.928451538086}, + {23.719864, 52.074203}, + {25.948563, 53.121414}, + {23.68515, 52.093735}, + {23.83415222168, 53.678512573242}, + {-80.264053344727, 25.883102416992}, + {-93.080978393555, 44.921035766602}, + {-90.190200805664, 38.625869750977}, + {-90.237049, 38.647898}, + {-89.985123, 38.599777}, + {-90.11604309082, 29.989242553711}, + {-90.528717, 30.761032}, + {-90.07209777832, 29.941177368164}, + {-81.364059, 28.455734}, + {-81.177291870117, 29.455032348633}, + {-80.63346862793, 27.99934387207}, + {-81.432723999023, 28.68049621582}, + {-73.983993530273, 40.732498168945}, + {-74.189987182617, 40.776443481445}, + {-73.918075561523, 40.816268920898}, + {-112.12989807129, 33.478775024414}, + {-111.97746276855, 33.43620300293}, + {-112.0076751709, 33.390884399414}, + {-111.93626403809, 33.49250793457}, + {-73.95378112793, 40.63362121582}, + {-73.990859985352, 40.636367797852}, + {-73.982620239258, 40.596542358398}, + {-75.123825073242, 40.052719116211}, + {-75.19660949707, 39.934616088867}, + {-81.686782836914, 26.116561889648}, + {30.340805, 59.983749}, + {30.375137329102, 59.826736450195}, + {30.347671508789, 59.939346313477}, + {32.348556518555, 59.858322143555}, + {30.343551635742, 59.865188598633}, + {30.38200378418, 59.811630249023}, + {30.347026, 59.830563}, + {30.318832397461, 59.917373657227}, + {30.397109985352, 59.961318969727}, + {30.374997, 60.044495}, + {30.358657836914, 59.933853149414}, + {30.25016784668, 59.939346313477}, + {30.281753540039, 59.959945678711}, + {30.258407592773, 59.942092895508}, + {30.302352905273, 59.959945678711}, + {30.594863891602, 59.694900512695}, + {30.420455932617, 59.931106567383}, + {29.827107, 59.869016}, + {30.527572631836, 59.89128112793}, + {30.462385, 60.017102}, + {27.149276733398, 38.408889770508}, + {27.080612182617, 38.388290405273}, + {30.38200378418, 59.972305297852}, + {28.815078735352, 41.062088012695}, + {29.128189086914, 36.619491577148}, + {30.189743041992, 38.202896118164}, + {29.122695922852, 36.652450561523}, + {30.603103637695, 36.851577758789}, + {35.319865, 37.001957}, + {26.69059753418, 39.316635131836}, + {29.136428833008, 40.938491821289}, + {28.879623413086, 41.056594848633}, + {35.283553, 37.041688}, + {35.251693725586, 36.993026733398}, + {29.777755737305, 37.851333618164}, + {35.312119, 37.029556}, + {30.553661, 38.743302}, + {32.853086, 39.922082}, + {32.854139, 39.899}, + {32.891006469727, 39.335861206055}, + {32.884140014648, 39.942855834961}, + {32.749557495117, 39.828872680664}, + {32.141189575195, 39.574813842773}, + {32.519557, 40.004943}, + {32.871086, 39.937935}, + {32.856947, 39.996512}, + {-2.4478912353516, 53.508224487305}, + {0.013046264648438, 51.556777954102}, + {-2.9505157470703, 51.588363647461}, + {-0.36460876464844, 53.752670288086}, + {-4.1823577880859, 50.373001098633}, + {-0.084457397460938, 51.106338500977}, + {-0.39070129394531, 54.020462036133}, + {-0.15998840332031, 51.10221862793}, + {-1.8134307861328, 53.649673461914}, + {-4.0395355224609, 50.313949584961}, + {-2.0798492431641, 51.846542358398}, + {-3.4380340576172, 56.39762878418}, + {-1.8106842041016, 51.621322631836}, + {-0.13389587402344, 51.51008605957}, + {-4.7440338134766, 51.794357299805}, + {-4.7165679931641, 50.348281860352}, + {-1.0842132568359, 53.964157104492}, + {-2.3737335205078, 51.500473022461}, + {-2.5193023681641, 51.473007202148}, + {-3.8239288330078, 50.690231323242}, + {-4.1013336181641, 50.405960083008}, + {-4.141918, 50.417466}, + {-86.353683, 41.744843}, + {-86.127267, 39.790843}, + {-86.007156, 39.884491}, + {-85.190323, 41.095871}, + {-90.00617980957, 35.143203735352}, + {-86.247025, 41.839371}, + {-89.826278686523, 35.155563354492}, + {-89.848251342773, 35.170669555664}, + {-81.645505, 30.183132}, + {-81.707608, 30.096966}, + {-81.420708, 29.713554}, + {-77.806157, 40.115214}, + {-94.341659545898, 38.930740356445}, + {-94.690475463867, 38.958206176758}, + {-94.590225219727, 39.011764526367}, + {-94.384231567383, 39.350967407227}, + {-94.595718383789, 39.24934387207}, + {-95.268630981445, 38.954086303711}, + {-94.698486, 38.912888}, + {-94.778194, 38.867569}, + {-93.431167602539, 40.113143920898}, + {-94.525797, 37.08697}, + {85.777816772461, 20.270462036133}, + {88.328018188477, 22.499313354492}, + {88.369216918945, 22.473220825195}, + {88.101425170898, 22.47184753418}, + {88.430623, 22.578964}, + {88.284073, 22.686669}, + {88.231887817383, 22.834396362305}, + {88.352737426758, 22.481460571289}, + {88.407669067383, 22.827529907227}, + {88.298264, 22.494507}, + {88.378705, 22.471098}, + {12.317733764648, 45.161361694336}, + {12.227096557617, 45.21354675293}, + {11.952438354492, 45.430526733398}, + {12.288208, 46.728973}, + {11.599503, 46.404814}, + {11.00441, 46.077347}, + {11.15917, 46.689193}, + {11.734229, 45.776441}, + {10.815353393555, 46.622543334961}, + {12.194595, 45.676346}, + {12.262802124023, 45.864486694336}, + {12.045822143555, 45.750503540039}, + {12.026596069336, 46.452255249023}, + {11.77965, 45.808033}, + {11.103744506836, 45.755996704102}, + {13.758527, 45.671803}, + {10.908956, 45.436667}, + {12.673666, 45.934899}, + {10.926502, 45.707098}, + {88.437881469727, 22.624282836914}, + {88.44612121582, 22.675094604492}, + {88.332138061523, 22.580337524414}, + {88.509292602539, 22.599563598633}, + {88.344497680664, 22.670974731445}, + {72.856521606445, 19.029006958008}, + {72.837906, 18.938828}, + {72.856521606445, 19.075698852539}, + {72.824936, 19.054413}, + {72.815323, 18.955765}, + {73.022003, 19.0242}, + {73.040542602539, 18.936996459961}, + {73.039169311523, 18.960342407227}, + {72.84553527832, 19.162216186523}, + {72.852401733398, 19.141616821289}, + {73.091354370117, 19.074325561523}, + {72.846222, 18.979568}, + {72.844711, 19.008408}, + {72.958145141602, 19.202041625977}, + {72.827682, 19.19878}, + {14.590530395508, 59.318618774414}, + {20.957748, 52.229187}, + {102.143326, 19.889374}, + {-67.090072631836, 18.379440307617}, + {16.051536, 49.617178}, + {-79.896011352539, -2.1498870849609}, + {36.340898, 56.667834}, + {82.924118041992, 17.933120727539}, + {16.881391, 52.353939}, + {18.142025, 59.154551}, + {75.376510620117, 32.013473510742}, + {106.9896697998, 11.832962036133}, + {103.761978, 1.479721}, + {-2.6415252685547, 53.740310668945}, + {16.020058, 45.749438}, + {13.024978637695, 49.49821472168}, + {-90.445633, 31.297302}, + {-121.888478, 37.329464}, + {29.915084838867, 59.16618347168}, + {15.935258, 53.996366}, + {11.207047, 44.847946}, + {68.465424, 56.434708}, + {77.676399, 12.965178}, + {3.252607, 43.347627}, + {48.784336, 56.828486}, + {48.00407409668, 29.297103881836}, + {14.070053, 42.591248}, + {116.66038513184, 40.324630737305}, + {60.119247436523, 55.029830932617}, + {128.176822, 51.713063}, + {18.133308, 59.268439}, + {16.804724, 48.602812}, + {25.236287, 36.973344}, + {55.74202, 24.223343}, + {138.4984588623, 34.988021850586}, + {-111.84837341309, 33.422470092773}, + {-4.491488, 48.390967}, + {11.581649780273, 55.522842407227}, + {23.590446, 46.754062}, + {140.1148223877, 36.070175170898}, + {-1.694654, 51.444175}, + {75.585250854492, 31.31721496582}, + {56.055679, 58.043812}, + {25.45189, 35.285202}, + {-73.664016723633, 41.388931274414}, + {13.244705200195, -8.8213348388672}, + {-77.392501831055, 35.417861938477}, + {-3.7044525146484, 40.496292114258}, + {0.408554, 49.482422}, + {0.368269, 42.946243}, + {28.515701, 54.220963}, + {39.164173, 21.576186}, + {92.875259, 56.031509}, + {20.418355, 44.833779}, + {152.57606506348, -26.127548217773}, + {30.344238, -29.579315}, + {-103.62785339355, 38.014755249023}, + {24.159279, 56.926346}, + {50.021438598633, 26.554641723633}, + {-85.738084, 30.770555}, + {14.591903686523, 45.025405883789}, + {67.912674, 40.076631}, + {21.174087524414, 40.02799987793}, + {0.58296203613281, 46.450881958008}, + {1.5065, 46.557312}, + {-97.32307434082, 37.670059204102}, + {5.646982, 50.624451}, + {1.650519, 49.97094}, + {-0.316544, 38.901902}, + {12.217483520508, 53.799362182617}, + {25.14289855957, 37.01774597168}, + {20.67008972168, 39.900283813477}, + {-100.790513, 46.788085}, + {9.6123504638672, 47.458877563477}, + {-0.32341003417969, 39.680557250977}, + {39.025497436523, 45.067977905273}, + {-1.6197967529297, 54.523086547852}, + {137.37373352051, 34.812240600586}, + {18.095169067383, 59.315872192383}, + {5.7685089111328, 53.203353881836}, + {8.0728912353516, 52.173385620117}, + {-82.462692260742, 27.50358581543}, + {-35.328255, -7.656097}, + {6.146191, 43.230722}, + {12.787399291992, 56.389389038086}, + {14.096145629883, 57.677536010742}, + {14.278793334961, 57.790145874023}, + {16.504898071289, 61.215133666992}, + {11.874160766602, 57.742080688477}, + {11.690139770508, 57.703628540039}, + {13.559188842773, 59.406509399414}, + {14.146957397461, 56.047439575195}, + {14.153823852539, 56.030960083008}, + {18.040237426758, 59.324111938477}, + {18.071823120117, 59.324111938477}, + {18.063583374023, 59.335098266602}, + {13.214492797852, 55.717849731445}, + {13.325729370117, 55.842819213867}, + {12.015609741211, 57.71598815918}, + {18.016891479492, 59.291152954102}, + {18.073196411133, 59.173049926758}, + {114.138851, 22.49265}, + {129.21363830566, 35.573043823242}, + {129.40864562988, 35.476913452148}, + {114.011307, 22.304144}, + {114.01268005371, 22.324905395508}, + {114.176102, 22.337494}, + {113.998489, 22.372169}, + {114.15687561035, 22.333145141602}, + {114.15962219238, 22.333145141602}, + {114.254379, 22.346054}, + {114.18846130371, 22.433395385742}, + {114.26261901855, 22.31803894043}, + {114.182281, 22.27684}, + {114.17335510254, 22.28645324707}, + {114.196687, 22.381842}, + {114.141695, 22.28682}, + {114.25025939941, 22.265853881836}, + {114.186859, 22.279587}, + {114.183311, 22.27272}, + {114.06349182129, 22.41828918457}, + {114.05250549316, 22.458114624023}, + {114.03602600098, 22.437515258789}, + {113.97422790527, 22.370223999023}, + {114.126816, 22.378311}, + {14.509943, 50.056758}, + {14.450454711914, 50.04753112793}, + {14.458694458008, 50.018692016602}, + {14.578170776367, 50.143661499023}, + {14.493894, 50.022523}, + {14.461441040039, 50.16975402832}, + {14.120864868164, 50.557022094727}, + {120.20347595215, 30.186996459961}, + {120.38887023926, 30.211715698242}, + {120.64155578613, 28.017196655273}, + {120.2611541748, 30.207595825195}, + {119.77226257324, 30.343551635742}, + {120.1293182373, 30.295486450195}, + {121.01921081543, 30.850296020508}, + {120.16914367676, 30.21858215332}, + {120.38887023926, 30.435562133789}, + {121.54655456543, 29.868392944336}, + {121.49711608887, 28.775253295898}, + {120.09635925293, 30.241928100586}, + {120.083542, 30.261154}, + {120.16639709473, 30.237808227539}, + {121.4476776123, 29.790115356445}, + {121.55342102051, 29.846420288086}, + {118.07899475098, 24.479598999023}, + {118.11058044434, 24.607315063477}, + {119.2325592041, 26.101455688477}, + {119.62669372559, 26.598587036133}, + {118.59672546387, 24.897079467773}, + {117.67112731934, 24.516677856445}, + {118.12431335449, 24.49333190918}, + {117.67112731934, 24.516677856445}, + {21.953058, 40.369135}, + {22.802810668945, 39.699783325195}, + {23.798446, 38.364944}, + {23.693161, 38.02597}, + {23.718338, 37.968674}, + {19.98968, 39.537321}, + {20.482638, 38.098215}, + {23.68034362793, 37.856826782227}, + {23.994827270508, 35.486526489258}, + {25.442276000977, 35.283279418945}, + {22.482833862305, 41.079940795898}, + {26.107771, 38.384995}, + {23.656997680664, 37.943344116211}, + {23.651504516602, 37.946090698242}, + {23.547295, 38.571714}, + {25.078769, 37.486979}, + {27.285232543945, 36.905136108398}, + {23.688582, 38.045311}, + {23.714264, 37.977951}, + {23.718795776367, 37.961196899414}, + {23.590463, 38.039969}, + {-3.3666229248047, 38.783798217773}, + {-3.0068206787109, 39.16145324707}, + {-3.65062, 40.453445}, + {-3.664207, 40.494149}, + {-3.7374114990234, 40.334243774414}, + {-3.691635, 40.276566}, + {-3.3171844482422, 40.246353149414}, + {-3.690033, 40.243549}, + {-3.4860992431641, 40.312271118164}, + {1.585051, 42.386628}, + {-3.4284210205078, 40.34797668457}, + {2.1375274658203, 41.415023803711}, + {2.1718597412109, 41.387557983398}, + {2.17853, 41.393051}, + {2.178268, 41.399002}, + {2.6744842529297, 41.77619934082}, + {3.140717, 42.103729}, + {2.710559, 41.756276}, + {1.188583, 41.931839}, + {2.8186798095703, 41.978073120117}, + {0.625534, 41.622734}, + {0.685959, 41.65947}, + {29.038925, 41.022034}, + {28.99772644043, 41.055221557617}, + {27.301712036133, 38.513259887695}, + {27.138290405273, 38.42399597168}, + {27.141036987305, 38.437728881836}, + {27.146530151367, 38.439102172852}, + {27.20832824707, 38.45832824707}, + {28.999099731445, 41.090927124023}, + {29.014205932617, 41.068954467773}, + {29.073257446289, 40.989303588867}, + {29.055404663086, 41.005783081055}, + {29.08287, 40.967674}, + {29.080123901367, 40.996170043945}, + {29.024506, 40.98793}, + {37.367935180664, 37.085037231445}, + {37.465438842773, 37.087783813477}, + {37.414627075195, 37.065811157227}, + {30.66764831543, 36.887283325195}, + {30.772018432617, 36.848831176758}, + {30.697860717773, 36.910629272461}, + {32.922592163086, 39.935989379883}, + {32.877274, 39.958649}, + {29.065017700195, 40.978317260742}, + {29.115829467773, 40.964584350586}, + {10.553915, 36.374503}, + {10.746688842773, 34.75456237793}, + {13.176040649414, 32.814102172852}, + {13.104629516602, 32.862167358398}, + {13.214492797852, 32.84294128418}, + {12.211991, 32.784806}, + {13.225479125977, 32.860794067383}, + {21.866143, 32.805696}, + {13.193893432617, 32.891006469727}, + {13.21106, 32.877274}, + {13.070526, 26.528549}, + {20.12867, 32.130547}, + {14.574051, 32.480392}, + {15.100193, 32.346411}, + {-17.41333, 14.736099}, + {-16.711578, 13.447266}, + {-17.439657, 14.732206}, + {-17.437745, 14.741978}, + {-17.45246887207, 14.677047729492}, + {-17.372435, 14.752063}, + {-16.073684692383, 15.417251586914}, + {77.164535522461, 28.760147094727}, + {77.098617553711, 28.727188110352}, + {77.159042358398, 28.732681274414}, + {77.234573364258, 28.640670776367}, + {77.145309448242, 28.582992553711}, + {77.278518676758, 28.699722290039}, + {77.148056030273, 28.659896850586}, + {77.119216918945, 28.479995727539}, + {76.96403503418, 28.370132446289}, + {76.863784790039, 28.291854858398}, + {77.340839, 28.544073}, + {77.209854125977, 28.696975708008}, + {77.213973999023, 28.695602416992}, + {77.307357788086, 28.458023071289}, + {77.093124389648, 28.44841003418}, + {77.093124389648, 28.471755981445}, + {77.02033996582, 28.44841003418}, + {77.319717407227, 28.577499389648}, + {77.321090698242, 28.596725463867}, + {77.314224243164, 28.588485717773}, + {77.079391479492, 28.496475219727}, + {77.063255, 28.559303}, + {31.410598754883, 31.291122436523}, + {31.811599731445, 31.505355834961}, + {33.896255493164, 27.005081176758}, + {31.008224487305, 30.784378051758}, + {29.927623, 31.219518}, + {30.960159301758, 30.793991088867}, + {30.712051, 30.573807}, + {31.188125610352, 30.012588500977}, + {31.422958374023, 30.159530639648}, + {31.189498901367, 30.012588500977}, + {31.343307495117, 30.197982788086}, + {5.9085845947266, 35.603256225586}, + {5.904121, 35.38456}, + {5.071564, 36.753387}, + {5.5117034912109, 22.800064086914}, + {7.7433013916016, 35.397262573242}, + {2.839966, 36.486969}, + {4.40938, 36.679921}, + {1.0471343994141, 35.063552856445}, + {4.482161, 36.736281}, + {6.585042, 36.934582}, + {0.11741638183594, 34.821853637695}, + {0.14488220214844, 34.830093383789}, + {-0.254059, 51.624069}, + {-0.958173, 51.452954}, + {-1.0855865478516, 51.545791625977}, + {-0.576094, 51.575318}, + {-0.73814392089844, 51.404342651367}, + {-0.768738, 51.329117}, + {-0.697975, 51.322632}, + {0.261612, 50.85846}, + {-0.005805, 50.884864}, + {0.383375, 50.885239}, + {0.067291, 50.912933}, + {0.189652, 50.854614}, + {-2.2666168212891, 53.412094116211}, + {-3.0287933349609, 53.916091918945}, + {-2.5742340087891, 54.215469360352}, + {-0.080337524414062, 51.614456176758}, + {-2.314349, 53.501308}, + {-0.019912719726562, 51.571884155273}, + {-0.116962, 51.469783}, + {-47.811281, -21.182329}, + {-50.429545, -21.224387}, + {-47.074356079102, -22.914047241211}, + {-47.211652, -22.800941}, + {-45.113862, -22.741953}, + {-47.394332885742, -22.38395690918}, + {-47.364120483398, -21.94450378418}, + {-47.062774, -22.848738}, + {-47.062648, -22.844977}, + {-47.006149, -22.65358}, + {-45.929516, -22.935481}, + {-47.128331, -22.868185}, + {-46.782303, -23.603897}, + {-46.636276245117, -23.608932495117}, + {-46.68571472168, -23.676223754883}, + {-46.592330932617, -23.713302612305}, + {-46.493453979492, -23.47297668457}, + {-46.673355102539, -23.514175415039}, + {-46.750259399414, -23.525161743164}, + {-46.672588, -23.528652}, + {-46.672994, -23.52563}, + {-121.256104, 38.711014}, + {-121.341476, 38.603439}, + {-120.990718, 37.618391}, + {-121.340722, 38.360259}, + {-86.809158325195, 30.409469604492}, + {-110.828018, 32.229309}, + {-111.0326385498, 32.296371459961}, + {-93.756088, 41.351029}, + {-94.904845, 42.419175}, + {114.16786193848, 22.341384887695}, + {114.22966, 22.320511}, + {114.060745, 22.352715}, + {114.206507, 22.335289}, + {114.180317, 22.286085}, + {114.161622, 22.278202}, + {114.18434143066, 22.279586791992}, + {114.129094, 22.358055}, + {114.182035, 22.302959}, + {114.049533, 22.447564}, + {114.130591, 22.370626}, + {114.187113, 22.380825}, + {114.18846130371, 22.312545776367}, + {114.158013, 22.276554}, + {114.173355, 22.278076}, + {114.26536560059, 22.422409057617}, + {114.17747497559, 22.276840209961}, + {114.00032043457, 22.455368041992}, + {113.97285461426, 22.400436401367}, + {114.07173156738, 22.441635131836}, + {114.01268005371, 22.437515258789}, + {114.03053283691, 22.209548950195}, + {114.11293, 22.527695}, + {106.842165, -6.504014}, + {106.939501, -6.445488}, + {106.867391, -6.499404}, + {106.77680969238, -6.2546539306641}, + {106.776155, -6.221777}, + {107.12699890137, -6.2779998779297}, + {106.695904, -6.317107}, + {106.679503, -6.252542}, + {106.617655, -6.223726}, + {106.680813, -6.317127}, + {106.913376, -6.245019}, + {106.85920715332, -6.2258148193359}, + {106.899033, -6.222839}, + {106.795136, -6.573231}, + {106.806565, -6.569125}, + {106.905686, -6.193991}, + {106.790568, -6.249766}, + {106.782849, -6.174684}, + {106.776495, -6.290947}, + {106.77386, -6.189978}, + {113.130231, -7.122373}, + {112.05436706543, -7.1569061279297}, + {73.77413, 18.649979}, + {74.857406616211, 18.220138549805}, + {73.98811340332, 18.461837768555}, + {74.762649536133, 20.90217590332}, + {73.171005, 18.940506}, + {73.952408, 19.021454}, + {75.265274, 19.839935}, + {77.148056030273, 19.318771362305}, + {73.405838012695, 17.706527709961}, + {73.462142944336, 18.093795776367}, + {75.251541137695, 18.003158569336}, + {72.73567199707, 20.020523071289}, + {72.91626, 18.509903}, + {77.484512, 23.250504}, + {73.16276550293, 19.206161499023}, + {77.491894, 23.24501}, + {76.269149780273, 22.986831665039}, + {75.627822875977, 22.624282836914}, + {78.333206176758, 25.880355834961}, + {79.92073059082, 23.172225952148}, + {79.926223754883, 23.173599243164}, + {81.548080444336, 20.694808959961}, + {72.826309204102, 18.980941772461}, + {81.608963, 21.227254}, + {72.822189331055, 18.996047973633}, + {114.15412902832, 22.282333374023}, + {114.153442, 22.28302}, + {114.15962219238, 22.279586791992}, + {114.22142028809, 22.28645324707}, + {114.213181, 22.414856}, + {114.277247, 22.398346}, + {113.906936, 22.223283}, + {114.10743713379, 22.35237121582}, + {114.09782409668, 22.366104125977}, + {114.16923522949, 22.34001159668}, + {114.23652648926, 22.426528930664}, + {114.00856018066, 22.455368041992}, + {114.16511535645, 22.33039855957}, + {114.16374206543, 22.280960083008}, + {114.17472839355, 22.279586791992}, + {113.99757385254, 22.425155639648}, + {114.17198181152, 22.323532104492}, + {114.15962219238, 22.342758178711}, + {114.1788482666, 22.452621459961}, + {114.11018371582, 22.344131469727}, + {114.12940979004, 22.261734008789}, + {114.14588928223, 22.289199829102}, + {114.16648864746, 22.276840209961}, + {114.14726257324, 22.28645324707}, + {48.94889831543, 57.56217956543}, + {22.021408081055, 54.406356811523}, + {20.468435, 54.719613}, + {37.822494506836, 51.287612915039}, + {73.41682434082, 54.935073852539}, + {40.356216430664, 56.118850708008}, + {34.335194, 53.231163}, + {39.901657104492, 59.207382202148}, + {37.832107543945, 54.050674438477}, + {35.897827, 56.868668}, + {41.629944, 52.709656}, + {82.902145, 55.029144}, + {82.913131713867, 55.020217895508}, + {82.96257019043, 55.042190551758}, + {82.898694, 54.972139}, + {30.439682006836, 59.932479858398}, + {30.319061, 59.882584}, + {28.319320678711, 57.577285766602}, + {30.427322387695, 59.920120239258}, + {30.471267700195, 59.851455688477}, + {30.31929, 59.949875}, + {30.303726, 59.975052}, + {30.301895, 59.879837}, + {1.7186737060547, 48.424301147461}, + {30.340462, 59.93969}, + {-0.54588317871094, 47.452011108398}, + {-1.439209, 48.244057}, + {1.0457611083984, 48.494338989258}, + {-3.3103179931641, 48.560256958008}, + {1.9232940673828, 47.936782836914}, + {1.9782257080078, 47.907943725586}, + {-1.435089, 47.070236}, + {-1.0347747802734, 47.37922668457}, + {1.8683624267578, 50.925064086914}, + {7.1060943603516, 43.610916137695}, + {-1.6197967529297, 47.252883911133}, + {7.0058441162109, 43.550491333008}, + {7.1376800537109, 43.992691040039}, + {7.1967315673828, 43.760604858398}, + {2.3352813720703, 48.830795288086}, + {-82.644095, 34.868624}, + {-81.034492, 34.71004}, + {-78.282091, 35.853464}, + {-78.825148, 36.046353}, + {-81.675567, 34.801648}, + {-80.286026000977, 32.560043334961}, + {-79.544907, 35.74173}, + {-80.436731, 32.926361}, + {-80.99968, 34.94133}, + {-97.276039, 32.714539}, + {-96.86, 32.503738}, + {-97.755661010742, 32.739944458008}, + {-96.952039, 32.645727}, + {-98.764348, 32.407417}, + {-95.249588, 31.955597}, + {-99.719467, 33.140809}, + {-96.977368, 32.868894}, + {-97.07501, 33.056406}, + {-96.913697, 32.98497}, + {-96.891860961914, 32.89924621582}, + {-96.632281, 32.798587}, + {-0.20942687988281, 51.503219604492}, + {-0.125602, 51.532597}, + {-0.45249938964844, 51.474380493164}, + {-1.3272857666016, 50.989608764648}, + {-0.45112609863281, 51.744918823242}, + {-3.739778, 58.573762}, + {-2.914248, 56.533897}, + {-4.629801, 57.210055}, + {-1.3533782958984, 53.855667114258}, + {0.81092834472656, 52.28874206543}, + {-0.51841735839844, 51.27799987793}, + {-0.32135, 51.644669}, + {-0.78758239746094, 51.231307983398}, + {-0.31929016113281, 51.172256469727}, + {-0.158546, 51.386147}, + {0.48408508300781, 51.273880004883}, + {-0.074844360351562, 51.397476196289}, + {0.512521, 51.394083}, + {-2.062806, 57.134294}, + {0.732651, 51.343002}, + {-0.14022, 51.51712}, + {-3.051505, 53.382029}, + {-3.034416, 53.408471}, + {-3.053688, 53.413833}, + {-2.090839, 53.486014}, + {-2.553575, 53.205328}, + {-3.059061, 52.859961}, + {-2.17951, 50.899756}, + {-1.103609, 52.631221}, + {-1.430356, 53.369322}, + {-1.982517, 52.460575}, + {-1.712754, 52.163734}, + {-1.989306, 52.584082}, + {-1.905723, 52.55469}, + {-0.0048065185546875, 51.610336303711}, + {-0.058489, 51.580651}, + {0.428816, 51.640878}, + {114.12940979004, 22.503433227539}, + {114.191208, 22.29126}, + {114.01679992676, 22.294692993164}, + {114.178848, 22.328339}, + {114.01542663574, 22.366104125977}, + {114.22554016113, 22.316665649414}, + {114.15550231934, 22.279586791992}, + {114.15000915527, 22.28645324707}, + {114.22416687012, 22.333145141602}, + {114.19944763184, 22.397689819336}, + {114.20356750488, 22.460861206055}, + {114.1788482666, 22.37434387207}, + {114.18983459473, 22.397689819336}, + {114.16374206543, 22.307052612305}, + {114.1609954834, 22.331771850586}, + {114.28184509277, 22.401809692383}, + {113.945389, 22.50412}, + {114.18571472168, 22.278213500977}, + {114.15550231934, 22.28645324707}, + {113.97560119629, 22.39631652832}, + {25.835037231445, 62.538986206055}, + {27.881240844727, 62.245101928711}, + {22.180709838867, 60.461196899414}, + {29.412460327148, 64.245986938477}, + {24.47135925293, 60.998153686523}, + {27.667007446289, 62.90153503418}, + {28.032302856445, 62.761459350586}, + {24.128954, 45.775224}, + {26.083602905273, 44.46647644043}, + {24.831161499023, 44.866104125977}, + {23.201065063477, 46.821670532227}, + {26.480484, 46.726913}, + {27.450051, 44.67316}, + {23.602066040039, 46.754379272461}, + {23.586959838867, 46.770858764648}, + {26.081406, 44.417038}, + {26.154098, 44.418869}, + {27.949905395508, 45.284957885742}, + {27.167129516602, 45.66535949707}, + {23.578034, 46.070137}, + {23.547546, 46.761658}, + {24.512557983398, 56.879653930664}, + {23.81217956543, 56.978530883789}, + {25.609543, 57.306473}, + {27.099837, 59.404679}, + {27.020868, 58.922426}, + {24.656752, 58.431473}, + {24.751510620117, 59.428482055664}, + {24.79586, 59.425735}, + {25.002136, 59.458694}, + {24.699325561523, 59.403762817383}, + {24.524917602539, 59.27604675293}, + {25.481414, 59.420929}, + {24.685592651367, 59.399642944336}, + {24.886093139648, 58.644332885742}, + {24.648513793945, 59.421615600586}, + {24.844993, 59.440842}, + {24.83345, 59.388657}, + {24.962998, 59.294724}, + {23.803939819336, 38.055953979492}, + {23.803939819336, 38.071060180664}, + {20.759353637695, 39.041976928711}, + {24.81330871582, 35.051193237305}, + {22.842636108398, 38.318252563477}, + {24.158248901367, 38.461074829102}, + {23.229903, 41.222076}, + {20.67008972168, 39.088668823242}, + {22.496566772461, 40.271072387695}, + {22.963142, 40.621948}, + {19.903793334961, 39.621505737305}, + {22.426987, 37.069702}, + {23.13652, 37.695465}, + {23.754501342773, 38.042221069336}, + {23.75862121582, 37.869186401367}, + {22.706406, 37.784317}, + {23.762741088867, 37.936477661133}, + {23.754501342773, 37.980422973633}, + {23.813552856445, 38.044967651367}, + {23.867111206055, 38.010635375977}, + {-61.722565, 15.990429}, + {-60.95311, 14.758072}, + {-61.058273, 14.598999}, + {-68.871689, 12.077133}, + {-68.953628540039, 12.15705871582}, + {-62.701034545898, 17.284927368164}, + {-83.713074, 22.617416}, + {-78.692518, 26.518838}, + {-76.394119, 20.868531}, + {-78.451309, 22.537003}, + {-70.051517, 18.391393}, + {-69.888067, 18.501178}, + {-69.79133605957, 18.939743041992}, + {-70.114059448242, 18.411026000977}, + {-70.317306518555, 19.125137329102}, + {-68.410492, 18.674011}, + {-74.806595, 40.255508}, + {-75.362777709961, 39.911270141602}, + {-75.205399, 39.946426}, + {-75.375137329102, 40.538864135742}, + {-76.871109, 40.209732}, + {-74.012832641602, 40.858840942383}, + {-74.005722, 40.872387}, + {-74.122284, 40.823135}, + {-74.172762, 40.157307}, + {-74.300537, 40.218887}, + {-74.222946166992, 39.838485717773}, + {-74.181748, 40.031662}, + {-74.336929321289, 40.540237426758}, + {-74.301223754883, 40.482559204102}, + {-74.709091186523, 40.891799926758}, + {-74.188613891602, 40.869827270508}, + {-74.456405639648, 40.876693725586}, + {-74.856033325195, 40.644607543945}, + {-74.205446, 40.88862}, + {-74.033432006836, 40.728378295898}, + {34.915237426758, 31.723709106445}, + {35.226008, 31.759561}, + {35.336494, 32.620811}, + {35.209808, 31.748428}, + {35.361557006836, 31.815719604492}, + {35.245819, 32.837524}, + {35.300674, 32.705612}, + {35.383529663086, 32.687759399414}, + {35.578931, 33.1286}, + {35.342330932617, 32.639694213867}, + {35.064926147461, 32.823715209961}, + {35.21598815918, 31.781387329102}, + {35.220108032227, 31.762161254883}, + {35.220108032227, 32.911605834961}, + {34.831466674805, 32.014846801758}, + {34.883651733398, 32.413101196289}, + {34.85481262207, 32.192001342773}, + {34.706497192383, 31.777267456055}, + {34.791641235352, 32.07389831543}, + {34.872665405273, 31.994247436523}, + {-102.79289245605, 46.88346862793}, + {-94.39628, 45.579433}, + {-94.220225, 45.525236}, + {-98.705978393555, 46.920547485352}, + {-93.010941, 46.66878}, + {-94.862215, 45.686399}, + {-95.876312, 46.776352}, + {-96.177428, 42.811731}, + {-103.483696, 44.379108}, + {-98.50257, 44.587488}, + {-98.438186645508, 43.527145385742}, + {-96.170325, 41.220941}, + {-95.953903198242, 41.217269897461}, + {-96.80951, 40.8918}, + {-96.560897827148, 40.893173217773}, + {-93.592072, 41.026612}, + {-99.46941, 40.757286}, + {-96.998193, 42.236252}, + {-88.498675, 41.624574}, + {-96.603082, 40.292757}, + {-87.342253, 41.303315}, + {-86.875076293945, 41.699295043945}, + {-87.223696, 41.60493}, + {-88.189315795898, 41.722640991211}, + {6.175964, 49.150635}, + {2.7170562744141, 48.82942199707}, + {2.2693634033203, 48.863754272461}, + {2.7362823486328, 48.82942199707}, + {2.3105621337891, 48.976364135742}, + {2.879466, 48.944634}, + {2.346268, 48.799896}, + {2.277436, 48.814798}, + {2.3709869384766, 48.921432495117}, + {2.4094390869141, 48.784103393555}, + {2.3998260498047, 49.050521850586}, + {3.0535125732422, 48.35563659668}, + {2.335648, 48.944778}, + {2.3490142822266, 48.836288452148}, + {2.2171783447266, 48.896713256836}, + {2.3531341552734, 48.866500854492}, + {2.396393, 48.930531}, + {2.331161, 48.82805}, + {2.351172, 48.821484}, + {2.391528, 48.858962}, + {2.244541, 48.848378}, + {105.90888977051, 21.032638549805}, + {105.909348, 20.265427}, + {105.7056427002, 20.922775268555}, + {105.81550598145, 21.010665893555}, + {105.86082458496, 20.281448364258}, + {105.712509, 21.231079}, + {106.69303894043, 10.775527954102}, + {105.52436828613, 21.279830932617}, + {106.69441223145, 10.767288208008}, + {106.68342590332, 10.776901245117}, + {106.70539855957, 10.757675170898}, + {106.63948059082, 10.741195678711}, + {106.815596, 10.856217}, + {106.769949, 10.810893}, + {106.65321350098, 10.770034790039}, + {106.79878234863, 10.859298706055}, + {106.67793273926, 10.815353393555}, + {106.59278869629, 10.752182006836}, + {106.69578552246, 10.798873901367}, + {106.67793273926, 10.819473266602}, + {106.55982971191, 10.805740356445}, + {106.59828186035, 10.742568969727}, + {106.68067932129, 10.789260864258}, + {107.571945, -6.801224}, + {108.558426, -6.724777}, + {107.597957, -6.876512}, + {107.85347, -6.995888}, + {108.500633, -6.710587}, + {108.69941711426, -7.3944854736328}, + {107.733994, -6.434555}, + {108.224109, -7.336747}, + {112.5267791748, -7.8655242919922}, + {111.83876, -8.166962}, + {112.747181, -7.305782}, + {112.781035, -7.321616}, + {112.515793, -7.1521}, + {111.73988342285, -8.2981109619141}, + {112.602114, -7.932914}, + {112.34687805176, -8.0165863037109}, + {111.99119567871, -7.8105926513672}, + {112.604467, -7.942599}, + {112.449017, -7.131672}, + {114.353256, -8.21228}, + {117.20146179199, -0.85212707519531}, + {112.655834, -7.158568}, + {112.12944, -6.907425}, + {115.68809509277, -0.0020599365234375}, + {14.726486206055, 53.406600952148}, + {20.946458, 52.276732}, + {21.046463, 52.18141}, + {19.446508, 51.975625}, + {20.991643, 52.189136}, + {20.735986, 52.422711}, + {19.999424, 50.072001}, + {22.516891, 51.246414}, + {20.045242, 50.038652}, + {17.947277, 50.66594}, + {20.039126, 50.357406}, + {19.002914428711, 50.322189331055}, + {16.710618, 51.259872}, + {16.577706, 51.04759}, + {16.737328, 52.419996}, + {18.780768, 53.02464}, + {18.581314086914, 53.008346557617}, + {20.510707, 53.772785}, + {12.241663, 53.27971}, + {14.506073, 53.27591}, + {14.547958374023, 53.587875366211}, + {14.534225463867, 53.427200317383}, + {15.097697, 53.690344}, + {17.042795, 51.116233}, + {14.788971, 53.106537}, + {17.033567, 51.112616}, + {15.612258911133, 50.77262878418}, + {17.086984, 51.111709}, + {16.578282, 51.164701}, + {17.287673950195, 51.220321655273}, + {17.51315, 51.242941}, + {17.010127, 51.083366}, + {20.950241088867, 52.224197387695}, + {20.913162231445, 52.218704223633}, + {20.881576538086, 52.317581176758}, + {101.70249938965, 3.1276702880859}, + {101.80549621582, 3.0040740966797}, + {101.61598205566, 3.0384063720703}, + {101.72172546387, 2.9038238525391}, + {101.734543, 2.987709}, + {101.614609, 3.066559}, + {101.66404724121, 3.0782318115234}, + {103.7816619873, 1.4975738525391}, + {103.7638092041, 1.5222930908203}, + {101.65031433105, 3.0603790283203}, + {103.82698059082, 1.7310333251953}, + {103.9217376709, 1.5154266357422}, + {103.603134, 1.533966}, + {103.50700378418, 1.3561248779297}, + {103.82286071777, 1.4948272705078}, + {103.71865, 1.504012}, + {103.063263, 2.001305}, + {103.670047, 1.52826}, + {103.657143, 1.481816}, + {100.37178039551, 6.0541534423828}, + {100.39375305176, 5.7231903076172}, + {100.87001, 4.766006}, + {99.724960327148, 6.3137054443359}, + {7.018753, 49.241485}, + {7.801126, 49.455817}, + {6.840739, 50.197127}, + {8.6153411865234, 49.785232543945}, + {8.309493, 49.510771}, + {9.0836334228516, 48.852767944336}, + {7.6691436767578, 48.052139282227}, + {9.1481781005859, 47.688217163086}, + {9.2292022705078, 48.586349487305}, + {9.318466, 48.757324}, + {9.224394, 48.630295}, + {15.248337, 50.276184}, + {16.993789672852, 49.95002746582}, + {18.37236, 49.902971}, + {17.136611938477, 49.47624206543}, + {14.201889038086, 50.771255493164}, + {14.600143432617, 50.077743530273}, + {14.42985534668, 50.073623657227}, + {17.214889526367, 49.663009643555}, + {5.830307, 50.989914}, + {5.776757, 50.937512}, + {5.977237, 51.513823}, + {6.025198, 51.225342}, + {5.994074, 51.378288}, + {5.444095, 51.476071}, + {4.666819, 51.474794}, + {4.564902, 51.682469}, + {4.836502, 51.558151}, + {3.931884, 51.639358}, + {4.3334197998047, 51.357650756836}, + {4.358826, 51.904907}, + {4.260223, 51.879089}, + {4.335312, 52.037683}, + {4.129834, 51.935201}, + {4.25994, 52.046928}, + {4.737167, 52.075367}, + {4.700777, 52.02919}, + {5.072415, 52.086676}, + {115.01106262207, -8.2459259033203}, + {115.2417755127, -8.5480499267578}, + {115.185711, -8.722799}, + {115.228319, -8.700688}, + {114.97673034668, -8.2376861572266}, + {115.21705627441, -8.6551666259766}, + {115.18889, -8.368525}, + {115.18272399902, -8.7458038330078}, + {116.1385345459, -8.6016082763672}, + {116.06437683105, -8.5205841064453}, + {106.79328918457, -6.1544036865234}, + {106.81526184082, -6.1447906494141}, + {98.675292, 3.579151}, + {95.304336547852, 5.5391693115234}, + {95.23567199707, 5.4993438720703}, + {100.27976989746, -0.56510925292969}, + {99.794998, 2.969055}, + {100.3943, -0.966218}, + {99.115476, 3.561919}, + {101.460114, 0.510178}, + {104.067307, 1.110992}, + {102.71873474121, 1.0155487060547}, + {104.52186584473, 0.97572326660156}, + {-73.97355, 40.717457}, + {-73.957901000977, 40.674819946289}, + {-72.935486, 40.829315}, + {-73.622131, 40.713272}, + {-73.88786315918, 40.887680053711}, + {-73.793959, 41.011523}, + {-73.802592, 41.072996}, + {-74.139175415039, 41.537246704102}, + {-74.192733764648, 41.35871887207}, + {-74.025433, 40.705969}, + {-73.732681274414, 40.946731567383}, + {-73.978775, 40.77095}, + {-74.000473022461, 40.707778930664}, + {-74.001846313477, 40.714645385742}, + {-73.300094604492, 40.803909301758}, + {-73.982620239258, 40.750350952148}, + {-73.419570922852, 40.79704284668}, + {-73.893356, 40.82549}, + {-73.893356323242, 40.817642211914}, + {-73.717575073242, 40.766830444336}, + {-73.805465698242, 40.663833618164}, + {-104.594433, 50.463541}, + {-123.093951, 49.239705}, + {-63.615646362305, 44.612045288086}, + {-123.139773, 49.225131}, + {-122.97567, 49.242603}, + {-123.20274353027, 49.211196899414}, + {-122.913859, 49.10073}, + {-122.90617, 49.253027}, + {-122.9257, 49.258815}, + {-122.692139, 49.034879}, + {-122.56087, 49.033284}, + {-123.356494, 48.415274}, + {-120.78575134277, 50.084609985352}, + {-120.373806, 50.698084}, + {-119.275776, 50.268327}, + {-113.240899, 53.44473}, + {-111.24816, 56.650099}, + {-114.02366638184, 50.923690795898}, + {-113.971862, 50.708042}, + {-114.112589, 50.954945}, + {-114.05799865723, 51.037673950195}, + {73.081741, 31.421193}, + {74.196854, 32.166595}, + {73.709174, 32.075272}, + {71.446151733398, 30.204849243164}, + {73.149032592773, 34.056930541992}, + {67.002182006836, 30.210342407227}, + {68.63639831543, 27.958145141602}, + {74.091110229492, 31.31721496582}, + {72.554397583008, 29.695358276367}, + {69.274978637695, 34.54719543457}, + {69.217300415039, 34.56916809082}, + {79.894638061523, 6.8795013427734}, + {62.249221801758, 33.77815246582}, + {80.869674682617, 6.0926055908203}, + {80.83122253418, 6.0596466064453}, + {81.127853393555, 6.1365509033203}, + {80.133590698242, 8.2308197021484}, + {79.890518188477, 7.0690155029297}, + {106.69853210449, 10.774154663086}, + {106.63398742676, 10.818099975586}, + {106.687916, 10.783768}, + {106.63673400879, 10.802993774414}, + {106.63673400879, 10.805740356445}, + {106.65733337402, 10.75080871582}, + {106.65733337402, 10.748062133789}, + {105.92262268066, 10.149307250977}, + {105.7495880127, 9.9968719482422}, + {104.85145568848, 9.9721527099609}, + {105.97755432129, 10.429458618164}, + {106.33460998535, 10.422592163086}, + {108.25584411621, 15.82649230957}, + {108.33686828613, 15.88005065918}, + {106.73698425293, 16.638107299805}, + {107.69691467285, 16.526870727539}, + {108.01689147949, 12.644577026367}, + {108.10340881348, 13.513870239258}, + {107.92900085449, 11.547317504883}, + {109.14710998535, 13.795394897461}, + {109.20478820801, 12.218856811523}, + {109.22264099121, 12.141952514648}, + {105.77568054199, 19.773330688477}, + {108.22425842285, 16.069564819336}, + {106.7342376709, 10.83869934082}, + {13.715744018555, 52.781753540039}, + {-117.738095, 33.857319}, + {-118.45527648926, 34.201126098633}, + {-118.320214, 34.180881}, + {-118.35777282715, 34.197006225586}, + {-118.353653, 34.036659}, + {-118.274789, 34.037438}, + {-118.224564, 34.154448}, + {-118.16825866699, 34.115982055664}, + {-118.1353, 34.724899}, + {-118.210747, 34.085686}, + {-116.916487, 32.810317}, + {-116.69609069824, 32.838821411133}, + {-117.077553, 33.034807}, + {-116.932068, 33.09185}, + {-117.269825, 33.192031}, + {-117.13829040527, 32.917098999023}, + {-71.076164, 42.338676}, + {-71.104202270508, 42.33512878418}, + {-71.15419, 42.373581}, + {-71.069263, 42.358363}, + {-71.079658, 42.349624}, + {-70.916061401367, 42.163467407227}, + {-71.00944519043, 41.633377075195}, + {-71.252249, 42.128777}, + {37.832107543945, 55.702743530273}, + {37.784042358398, 55.764541625977}, + {37.620620727539, 55.859298706055}, + {37.531356811523, 55.753555297852}, + {37.534103393555, 55.745315551758}, + {37.573928833008, 55.790634155273}, + {37.579256, 55.774858}, + {37.429733276367, 55.82633972168}, + {37.631607055664, 55.573654174805}, + {37.613754272461, 55.767288208008}, + {37.615127563477, 55.757675170898}, + {37.488784790039, 55.665664672852}, + {37.534103393555, 55.635452270508}, + {37.483291625977, 55.719223022461}, + {37.497024536133, 55.660171508789}, + {37.565689086914, 55.580520629883}, + {37.648086547852, 55.737075805664}, + {37.810134887695, 55.749435424805}, + {37.885665893555, 55.792007446289}, + {37.56706237793, 55.75080871582}, + {37.494277954102, 55.732955932617}, + {37.490158081055, 55.726089477539}, + {-98.570022583008, 19.648361206055}, + {-98.450546264648, 19.283065795898}, + {-104.68940734863, 24.048385620117}, + {-102.03346252441, 19.060592651367}, + {-103.38066101074, 25.601577758789}, + {-104.84046936035, 21.489944458008}, + {-104.7924041748, 21.410293579102}, + {-104.85145568848, 21.485824584961}, + {-98.218460083008, 18.976821899414}, + {-98.458786010742, 18.93424987793}, + {-106.43486022949, 31.697616577148}, + {-106.44035339355, 31.696243286133}, + {-93.469619750977, 18.247604370117}, + {-86.806412, 21.185074}, + {-86.821231, 21.150328}, + {-86.825637817383, 21.191940307617}, + {-86.820145, 21.184937}, + {-96.047286987305, 19.055099487305}, + {-123.13545227051, 49.201583862305}, + {-113.24295, 53.691559}, + {-79.349851, 43.687995}, + {-123.1079864502, 49.244155883789}, + {-79.567795, 43.653946}, + {-79.409866333008, 43.660354614258}, + {-79.497412, 43.990131}, + {-79.468787, 43.887393}, + {-79.648134, 43.73898}, + {-79.386520385742, 43.940505981445}, + {-79.762802124023, 43.617782592773}, + {-79.407119750977, 43.745498657227}, + {-79.515819, 43.746829}, + {-79.260918, 43.815243}, + {-79.788081, 43.60527}, + {-79.88639831543, 43.260726928711}, + {-79.693542, 43.507235}, + {-79.58159, 43.585167}, + {-79.835586547852, 43.59992980957}, + {-79.841079711914, 43.68782043457}, + {-79.510927, 43.605588}, + {-118.28773498535, 34.014358520508}, + {-118.245053, 34.22133}, + {-117.28385925293, 33.642196655273}, + {-117.621325, 33.882452}, + {-117.358317, 33.703492}, + {-121.952248, 37.742353}, + {-117.89803, 35.899651}, + {-122.684622, 38.349292}, + {-122.29976, 37.971274}, + {-122.273941, 38.113496}, + {-122.16041564941, 37.724990844727}, + {-122.49412536621, 37.735977172852}, + {-122.272568, 37.547836}, + {-121.98600769043, 37.289657592773}, + {-121.85005187988, 37.340469360352}, + {-121.77177429199, 37.230606079102}, + {-122.41035461426, 37.587661743164}, + {-120.12245178223, 37.69889831543}, + {-121.0425567627, 37.057571411133}, + {-120.519185, 37.481111}, + {39.750137, 47.244186}, + {60.631484985352, 56.835708618164}, + {38.620376586914, 46.845016479492}, + {39.050216674805, 45.035018920898}, + {37.619247436523, 55.771408081055}, + {37.609634399414, 55.778274536133}, + {30.354537963867, 59.898147583008}, + {37.606887817383, 55.793380737305}, + {37.672805786133, 55.789260864258}, + {37.53685, 55.763855}, + {37.601303, 55.703934}, + {37.550583, 55.703921}, + {37.668685913086, 55.753555297852}, + {37.77786, 55.807116}, + {37.522385, 55.948296}, + {37.505722, 55.738907}, + {37.749906, 55.764934}, + {37.716751, 55.756302}, + {37.484665, 55.869598}, + {37.499466, 55.894458}, + {37.420611, 55.734329}, + {37.452278, 55.732155}, + {37.35969543457, 55.786514282227}, + {-3.2073211669922, 51.529312133789}, + {-2.626317, 51.468851}, + {-3.555213, 50.456225}, + {-2.0729827880859, 52.117080688477}, + {-1.246647, 53.023765}, + {-2.188836, 53.44232}, + {-2.24543, 53.373217}, + {-1.6568756103516, 53.697738647461}, + {-1.6623687744141, 53.802108764648}, + {-3.0246734619141, 53.877639770508}, + {-1.564847, 54.015267}, + {-3.230567, 55.93693}, + {-1.2187957763672, 54.55192565918}, + {-4.382609, 55.84257}, + {-2.998117, 53.902361}, + {-4.569515, 56.002154}, + {-0.101647, 51.50232}, + {-1.289177, 51.757965}, + {-0.620038, 51.517842}, + {-82.506637573242, 36.530227661133}, + {-81.780396, 36.773872}, + {-85.776443481445, 35.700759887695}, + {-86.767959594727, 36.033096313477}, + {-86.625809, 36.091812}, + {-86.655349731445, 36.170425415039}, + {-87.605667114258, 35.916366577148}, + {-86.864847, 35.80417}, + {-86.268081665039, 36.41487121582}, + {-86.574325561523, 35.989151000977}, + {-90.111976, 29.965844}, + {-90.07925, 29.943752}, + {-90.047653, 29.97139}, + {-90.089950561523, 29.967269897461}, + {-95.996475219727, 36.158065795898}, + {-91.117172, 30.403976}, + {-96.15852355957, 34.396133422852}, + {-97.509841918945, 35.437088012695}, + {-95.927429, 36.158142}, + {-96.386489868164, 36.038589477539}, + {-97.531815, 35.419785}, + {-81.365077, 28.750905}, + {-81.292091, 28.408807}, + {-81.640091, 28.825607}, + {-81.457774, 28.114735}, + {10.577774047852, 44.661483764648}, + {11.347894, 44.526419}, + {13.195266723633, 46.022415161133}, + {13.799514770508, 45.637893676758}, + {11.768417358398, 45.118789672852}, + {12.238082885742, 45.500564575195}, + {12.177486, 45.459366}, + {12.479782104492, 41.903915405273}, + {12.412490844727, 41.892929077148}, + {13.093643188477, 41.22688293457}, + {13.301010131836, 41.607284545898}, + {13.003005981445, 43.836135864258}, + {13.28727722168, 43.66584777832}, + {11.308364868164, 43.337631225586}, + {14.324111938477, 40.922012329102}, + {14.076919555664, 40.895919799805}, + {14.070053100586, 40.868453979492}, + {15.072805, 37.521369}, + {15.174179077148, 37.16194152832}, + {14.736099243164, 40.902786254883}, + {7.5922393798828, 45.077590942383}, + {8.0605316162109, 45.192947387695}, + {9.092462, 45.507922}, + {19.206161499023, 50.42106628418}, + {18.698043823242, 50.230178833008}, + {18.679428, 50.251236}, + {18.71452331543, 50.291976928711}, + {18.873825073242, 50.283737182617}, + {18.79482, 50.287292}, + {18.726883, 50.253525}, + {18.596420288086, 49.951400756836}, + {18.596420288086, 49.95002746582}, + {19.136128, 49.899675}, + {18.951239, 50.884142}, + {19.146423, 50.789108}, + {19.412155151367, 50.480117797852}, + {19.371444, 50.486526}, + {18.199814, 50.332626}, + {17.968826293945, 50.515823364258}, + {17.922134399414, 50.544662475586}, + {17.849959, 50.768509}, + {18.270067, 50.503468}, + {18.309174, 49.988709}, + {15.08903503418, 48.510818481445}, + {15.611572, 48.178482}, + {16.213760375977, 47.196578979492}, + {15.96794128418, 46.891708374023}, + {16.097488, 47.113266}, + {16.458206176758, 47.843399047852}, + {16.370315551758, 47.80632019043}, + {15.664444, 46.93222}, + {14.083786010742, 46.718673706055}, + {14.860422, 46.934408}, + {13.697891235352, 47.096328735352}, + {14.431228637695, 47.060623168945}, + {13.344955444336, 48.200454711914}, + {13.784684, 47.841202}, + {13.018112182617, 48.24577331543}, + {13.719863891602, 48.063125610352}, + {13.14582824707, 47.320175170898}, + {12.428970336914, 47.276229858398}, + {12.136459350586, 47.658004760742}, + {12.153625, 47.48497}, + {9.9460601806641, 47.038650512695}, + {127.12760925293, 37.39128112793}, + {127.07679748535, 37.39128112793}, + {127.12898254395, 37.417373657227}, + {127.11387634277, 37.39128112793}, + {127.07817077637, 37.43522644043}, + {127.10289001465, 37.34733581543}, + {127.09190368652, 37.492904663086}, + {127.107868, 37.466469}, + {127.03559875488, 37.466812133789}, + {127.13859558105, 37.518997192383}, + {126.94496154785, 37.398147583008}, + {126.92848205566, 37.389907836914}, + {127.05070495605, 37.461318969727}, + {126.9751739502, 37.394027709961}, + {126.89552307129, 37.300643920898}, + {127.10289001465, 37.266311645508}, + {127.10426330566, 37.27180480957}, + {127.0630645752, 37.155075073242}, + {127.2127532959, 37.245712280273}, + {127.13996887207, 37.288284301758}, + {127.09465026855, 37.204513549805}, + {127.06031799316, 37.200393676758}, + {128.62037658691, 35.25032043457}, + {128.664047, 35.20665}, + {129.11433, 35.561839}, + {-121.998367, 37.56871}, + {-122.002573, 38.344345}, + {-122.07695, 37.583542}, + {-122.209472, 38.063412}, + {-122.395902, 37.798495}, + {-122.206192, 37.760696}, + {-122.43232727051, 37.795028686523}, + {-122.164192, 37.687912}, + {-122.399174, 37.786135}, + {-121.720646, 37.716064}, + {-122.01828, 37.413254}, + {-121.964035, 37.3168}, + {-121.8953704834, 37.292404174805}, + {-121.80473327637, 37.23747253418}, + {-121.86103820801, 37.340469360352}, + {-121.83219909668, 37.244338989258}, + {-121.5795135498, 36.862564086914}, + {-83.600349, 41.655693}, + {-83.706104, 41.622906}, + {-121.697848, 39.117511}, + {-121.532059, 38.576431}, + {-120.99174499512, 39.006271362305}, + {-121.269608, 37.951813}, + {-121.531152, 37.881858}, + {120.4891204834, 24.140396118164}, + {120.41358947754, 23.687210083008}, + {120.43418884277, 23.79020690918}, + {121.52732849121, 25.035781860352}, + {121.52732849121, 25.044021606445}, + {121.54106140137, 25.053634643555}, + {121.51908874512, 25.085220336914}, + {121.507645, 25.047684}, + {121.50260925293, 25.039901733398}, + {121.50535583496, 25.078353881836}, + {121.5438079834, 25.001449584961}, + {121.57814025879, 24.987716674805}, + {121.553421, 25.019695}, + {121.54930114746, 25.022048950195}, + {121.4645, 25.116806}, + {121.53419494629, 25.118179321289}, + {121.528702, 25.144272}, + {121.53007507324, 25.046768188477}, + {121.53968811035, 25.050888061523}, + {121.54106140137, 25.052261352539}, + {22.990494, 48.546524}, + {24.660873413086, 48.906326293945}, + {25.030975, 50.773316}, + {23.839645385742, 51.195602416992}, + {36.262435913086, 50.031051635742}, + {27.039413452148, 49.462509155273}, + {23.794326782227, 50.033798217773}, + {38.635482788086, 48.671493530273}, + {38.553085327148, 48.723678588867}, + {39.659957885742, 48.050765991211}, + {39.511634, 48.280794}, + {37.273178100586, 48.159255981445}, + {37.554334, 48.625036}, + {38.395406, 48.934416}, + {38.009262084961, 48.30207824707}, + {30.111465, 49.365463}, + {38.581924, 49.08989}, + {24.706919, 48.986543}, + {4.985342, 52.335694}, + {4.9500274658203, 52.31071472168}, + {4.73162, 52.296944}, + {4.537371, 52.228797}, + {4.6204376220703, 52.231063842773}, + {4.5613861083984, 52.166519165039}, + {4.271038, 52.046463}, + {4.358139, 52.074051}, + {4.358061, 52.080409}, + {4.4226837158203, 51.858901977539}, + {4.8003387451172, 51.569137573242}, + {4.8305511474609, 51.632308959961}, + {4.855789, 51.638801}, + {4.95809, 52.0598}, + {5.061947, 52.103592}, + {5.08848, 52.058031}, + {5.07687, 51.570511}, + {5.089455, 51.553518}, + {5.383989, 51.708364}, + {6.098135, 51.278747}, + {5.39483, 51.521468}, + {-0.35362243652344, 35.19401550293}, + {5.2988433837891, 31.969528198242}, + {151.326828, -33.450525}, + {0.13389587402344, 35.400009155273}, + {-0.585365, 35.711403}, + {3.442841, 36.747551}, + {4.7440338134766, 36.055068969727}, + {6.864853, 33.381271}, + {6.021881, 36.12957}, + {2.9505157470703, 36.674423217773}, + {-1.3684844970703, 35.299758911133}, + {3.084412, 36.743431}, + {5.099717, 36.793216}, + {2.8653717041016, 36.521987915039}, + {4.681924, 36.540883}, + {2.8557586669922, 36.494522094727}, + {5.709801, 36.157379}, + {4.1150665283203, 36.668930053711}, + {5.385017, 36.158066}, + {4.1933441162109, 36.645584106445}, + {6.573257, 36.2603}, + {6.571884, 36.409378}, + {7.7597808837891, 36.906509399414}, + {-100.89500427246, 29.192733764648}, + {-98.574142456055, 26.259384155273}, + {-103.50425720215, 18.599166870117}, + {-103.34907531738, 20.738754272461}, + {-101.97166442871, 19.416275024414}, + {-98.73893737793, 17.777938842773}, + {-99.15641784668, 17.595291137695}, + {-97.76252746582, 18.865585327148}, + {-97.780380249023, 17.810897827148}, + {-96.93717956543, 18.891677856445}, + {78.292007446289, 30.13069152832}, + {73.009987, 21.661263}, + {72.686233520508, 23.345260620117}, + {72.664260864258, 24.416427612305}, + {72.135544, 21.773117}, + {72.507706, 23.05481}, + {72.627182006836, 22.964859008789}, + {72.698135, 22.949295}, + {72.389602661133, 23.602066040039}, + {72.358016967773, 23.234024047852}, + {72.905960083008, 20.970840454102}, + {70.793838500977, 22.063980102539}, + {70.261001586914, 21.74674987793}, + {73.15315246582, 20.707168579102}, + {72.124557495117, 23.85612487793}, + {73.609085083008, 22.778091430664}, + {73.175468, 22.322502}, + {73.150406, 22.321472}, + {72.731552124023, 22.719039916992}, + {72.896347045898, 22.690200805664}, + {73.00209, 21.627617}, + {70.387344360352, 20.90217590332}, + {70.623550415039, 21.754989624023}, + {72.526539, 23.063147}, + {105.30464172363, 18.818893432617}, + {106.3648223877, 18.047103881836}, + {105.76194763184, 19.800796508789}, + {105.77293395996, 19.833755493164}, + {106.69441223145, 11.051559448242}, + {107.14622497559, 10.971908569336}, + {106.7960357666, 11.291885375977}, + {106.88667297363, 10.966415405273}, + {107.43461608887, 11.269912719727}, + {107.09815979004, 10.338821411133}, + {106.9278717041, 10.841445922852}, + {107.05558776855, 10.61897277832}, + {106.704197, 10.804281}, + {106.67518615723, 10.76042175293}, + {106.386108, 10.544815}, + {106.642914, 10.752182}, + {106.68479919434, 10.77278137207}, + {106.65321350098, 10.764541625977}, + {106.76857, 10.853119}, + {106.59553527832, 10.693130493164}, + {106.61476135254, 10.834579467773}, + {106.70127868652, 10.786514282227}, + {106.69441223145, 10.77278137207}, + {106.715698, 10.771408}, + {7.397607, 52.702852}, + {8.031047, 52.838953}, + {8.628278, 50.739552}, + {7.4617767333984, 51.357650756836}, + {7.052994, 50.703964}, + {6.258535, 51.582333}, + {13.449325561523, 52.468643188477}, + {6.341171, 51.186676}, + {6.6817474365234, 51.117324829102}, + {6.9673919677734, 50.846786499023}, + {6.9467926025391, 50.945663452148}, + {6.949658, 50.933527}, + {6.8767547607422, 50.990982055664}, + {6.750412, 50.923004}, + {6.2422943115234, 50.760269165039}, + {6.9783782958984, 50.988235473633}, + {6.473452, 50.805264}, + {12.625350952148, 57.854690551758}, + {12.976227, 57.704315}, + {11.920168, 57.896576}, + {13.63883972168, 58.217239379883}, + {18.114853, 59.279709}, + {12.893142700195, 57.717361450195}, + {18.071823120117, 59.28840637207}, + {12.036209106445, 57.623977661133}, + {17.801284790039, 59.703140258789}, + {12.463577, 56.906021}, + {12.924919, 56.586809}, + {11.356430053711, 58.427352905273}, + {16.379036, 58.453926}, + {14.685287475586, 58.382034301758}, + {13.104629516602, 59.973678588867}, + {15.587539672852, 56.458053588867}, + {14.829483, 56.88446}, + {16.312637329102, 61.97868347168}, + {13.272629, 57.815628}, + {13.255233, 56.71532}, + {21.480331420898, 65.08918762207}, + {-97.639191, 26.15386}, + {-97.917709350586, 29.542922973633}, + {-97.465896606445, 27.783737182617}, + {-97.527301, 25.96187}, + {-111.633982, 33.318079}, + {-111.882706, 33.672801}, + {-111.992115, 33.432135}, + {-111.66297912598, 33.445816040039}, + {-110.972571, 32.221768}, + {-112.03651428223, 34.518356323242}, + {-111.893696, 33.355435}, + {-110.949554, 31.366653}, + {-111.968613, 33.604404}, + {-112.197668, 33.598553}, + {-108.689404, 35.514366}, + {-106.65870666504, 35.240707397461}, + {-114.651106, 34.862484}, + {-106.69972, 35.28109}, + {-117.00716, 32.675765}, + {-117.11357116699, 32.93083190918}, + {-116.9913482666, 32.730331420898}, + {-66.987075805664, 10.594253540039}, + {-66.837387084961, 10.467910766602}, + {-68.542549, 11.001209}, + {-68.546677, 10.977402}, + {-68.26767, 10.469284}, + {-70.711441040039, 11.015853881836}, + {-71.654891967773, 10.686264038086}, + {-63.857345581055, 11.040573120117}, + {-66.98844909668, 10.437698364258}, + {-66.803428, 10.46426}, + {-63.533248901367, 9.6865081787109}, + {-66.874123, 10.352554}, + {-66.923355, 10.493729}, + {-66.857362, 10.485764}, + {-70.815811157227, 9.7496795654297}, + {-69.193954467773, 9.5574188232422}, + {-63.181686401367, 9.7332000732422}, + {-64.195175170898, 8.8913726806641}, + {-64.258347, 8.886566}, + {139.73442077637, 35.766677856445}, + {139.71382141113, 35.763931274414}, + {139.72068786621, 35.779037475586}, + {139.66987609863, 35.740585327148}, + {139.67948913574, 35.761184692383}, + {139.68086242676, 35.76530456543}, + {139.74128723145, 35.706253051758}, + {139.6671295166, 35.744705200195}, + {139.72618103027, 35.696640014648}, + {139.61219787598, 35.671920776367}, + {139.67399597168, 35.66780090332}, + {139.6671295166, 35.702133178711}, + {139.03266906738, 35.527725219727}, + {138.45588684082, 35.696640014648}, + {138.697586, 35.689316}, + {138.656976, 35.671725}, + {138.60282897949, 35.61149597168}, + {138.53828430176, 35.590896606445}, + {138.440094, 35.929413}, + {138.00819396973, 36.56867980957}, + {138.197708, 36.563873}, + {138.47785949707, 36.082534790039}, + {137.9711151123, 36.027603149414}, + {138.215754, 35.978361}, + {77.256546020508, 28.664016723633}, + {77.516098022461, 28.485488891602}, + {77.516373, 28.433304}, + {77.044373, 28.591232}, + {77.264785766602, 28.530807495117}, + {77.187881469727, 28.523941040039}, + {77.07389831543, 28.598098754883}, + {77.109603881836, 28.857650756836}, + {72.367630004883, 23.591079711914}, + {77.12883, 28.689651}, + {72.397499, 23.607903}, + {77.18486, 28.496475}, + {72.481613, 23.282776}, + {72.622375, 23.022537}, + {72.983551, 21.266098}, + {71.509323, 22.716293}, + {69.670212, 23.241989}, + {69.66259, 23.25016}, + {71.812134, 21.139755}, + {70.405197143555, 20.887069702148}, + {70.962753295898, 22.39631652832}, + {71.689224243164, 24.343643188477}, + {73.15315246582, 22.309799194336}, + {92.71431, 23.742142}, + {91.81755065918, 25.499954223633}, + {88.604049682617, 22.467727661133}, + {88.70979309082, 26.551895141602}, + {88.190689086914, 22.86735534668}, + {77.149429321289, 31.880264282227}, + {87.957229614258, 25.762252807617}, + {88.586196899414, 27.114944458008}, + {76.506729125977, 9.1989898681641}, + {76.284255981445, 9.9776458740234}, + {76.188125610352, 10.526962280273}, + {76.1689, 10.476151}, + {76.729042, 9.157039}, + {76.236190795898, 10.973281860352}, + {76.074142456055, 11.778030395508}, + {76.244430541992, 9.9680328369141}, + {76.377639770508, 9.5217132568359}, + {76.791000366211, 9.9240875244141}, + {76.07551574707, 11.069412231445}, + {76.345367, 10.28389}, + {76.313095092773, 9.7139739990234}, + {76.963577, 8.531113}, + {76.152420043945, 10.809860229492}, + {-70.607070922852, 41.729507446289}, + {-71.183834, 42.645531}, + {-71.19758605957, 42.700424194336}, + {-71.124488, 42.481942}, + {-71.432055, 42.0971}, + {-70.902328491211, 42.498550415039}, + {-71.534754, 42.426232}, + {-71.80584, 41.385269}, + {-71.092477, 41.787186}, + {-71.523702, 41.714644}, + {-71.403579711914, 41.726760864258}, + {-71.457138061523, 42.979202270508}, + {-71.234365, 42.767397}, + {-71.112442, 43.200817}, + {-68.786505, 44.812373}, + {-69.662684, 44.274216}, + {-70.925674438477, 44.401931762695}, + {-70.633163452148, 42.99430847168}, + {-72.193223, 41.522338}, + {-73.009246, 41.627306}, + {-72.956771850586, 41.281814575195}, + {-68.970108032227, 44.35661315918}, + {-73.638243, 41.017098}, + {-77.595337, 43.216095}, + {-77.587509155273, 43.23600769043}, + {-77.596397, 43.056818}, + {-78.064041137695, 43.079452514648}, + {-77.455673217773, 43.032760620117}, + {-73.877426, 42.343826}, + {-73.93180847168, 41.703414916992}, + {-73.825718, 42.394224}, + {-73.783562, 40.918215}, + {-73.918522, 41.003706}, + {-73.713455200195, 41.12663269043}, + {-73.609085083008, 41.379318237305}, + {-74.198226928711, 41.151351928711}, + {-73.963394165039, 40.792922973633}, + {-73.95289, 40.822801}, + {-73.861770629883, 40.850601196289}, + {-73.859024047852, 40.825881958008}, + {-73.904755, 40.821762}, + {-73.98811340332, 40.758590698242}, + {-73.977127075195, 40.75309753418}, + {-73.991347, 40.750351}, + {-73.970113, 40.76683}, + {-73.983659, 40.77095}, + {-73.982620239258, 40.773696899414}, + {90.16960144043, 24.095077514648}, + {90.249252319336, 23.917922973633}, + {91.868362426758, 22.27409362793}, + {91.469285, 22.967606}, + {91.809310913086, 22.360610961914}, + {92.099762, 21.443253}, + {89.234390258789, 23.236770629883}, + {89.379959106445, 25.090713500977}, + {88.60954284668, 24.366989135742}, + {91.095199584961, 23.968734741211}, + {88.782577514648, 24.526290893555}, + {90.258865356445, 23.852005004883}, + {90.360488891602, 23.788833618164}, + {90.370101928711, 23.801193237305}, + {90.396194458008, 23.717422485352}, + {90.404434204102, 23.713302612305}, + {90.385208, 24.437714}, + {90.490265, 23.694077}, + {90.378341674805, 24.376602172852}, + {90.383834838867, 24.00993347168}, + {90.415420532227, 23.781967163086}, + {90.434646606445, 23.722915649414}, + {90.395279, 23.790207}, + {90.874099731445, 23.994827270508}, + {91.805191040039, 22.315292358398}, + {3.0301666259766, 42.585067749023}, + {3.115927, 45.778501}, + {2.2212982177734, 48.844528198242}, + {1.974302, 49.001672}, + {1.947264, 48.810446}, + {6.073269, 43.238636}, + {5.5831146240234, 43.225021362305}, + {5.798018, 43.139597}, + {-1.6870880126953, 48.122177124023}, + {-2.0125579833984, 48.615188598633}, + {-1.9589996337891, 48.679733276367}, + {6.1502838134766, 49.148025512695}, + {1.926583, 43.757144}, + {7.413536, 47.766898}, + {5.9003448486328, 48.725051879883}, + {6.209146, 48.69733}, + {6.1392974853516, 48.655014038086}, + {1.8669891357422, 47.90657043457}, + {-3.3666229248047, 47.758255004883}, + {1.237335, 45.816422}, + {2.4410247802734, 48.59733581543}, + {5.712526, 45.156618}, + {144.70729, -37.610519}, + {145.374298, -37.957993}, + {145.294696, -38.153007}, + {145.274277, -37.909012}, + {145.012354, -37.687435}, + {145.354423, -38.043529}, + {144.322586, -37.700272}, + {145.19187927246, -37.922744750977}, + {143.406554, -37.959898}, + {147.50450134277, -42.839126586914}, + {148.511824, -37.701747}, + {153.085238, -27.233859}, + {146.337097, -41.171408}, + {145.92891, -41.064337}, + {152.992994, -27.358144}, + {153.02238464355, -27.47200012207}, + {152.661195, -27.69761}, + {152.911302, -27.494242}, + {152.62138366699, -27.620315551758}, + {152.74772644043, -27.599716186523}, + {10.561934, 50.51833}, + {12.92610168457, 50.78498840332}, + {12.13414, 51.034581}, + {6.91711, 50.931504}, + {7.4384307861328, 50.981369018555}, + {7.106784, 50.742417}, + {7.030066, 50.715232}, + {6.443668, 51.188042}, + {6.8932342529297, 51.104965209961}, + {7.137805, 51.253281}, + {6.922405, 50.952983}, + {7.509842, 50.963058}, + {7.3615264892578, 51.499099731445}, + {6.863022, 51.295578}, + {7.014639, 51.452032}, + {7.377319, 52.239304}, + {-122.403563, 37.787048}, + {-122.390925, 37.786789}, + {-122.41996765137, 37.76481628418}, + {-117.0435333252, 32.809982299805}, + {-117.163422, 32.708359}, + {-117.046355, 32.743989}, + {-117.072716, 32.617722}, + {-117.121955, 32.694228}, + {-117.167358, 32.761917}, + {-118.65165710449, 34.177780151367}, + {-118.48411560059, 34.308242797852}, + {-119.222126, 34.173543}, + {-118.9688873291, 34.203872680664}, + {-118.31054, 33.831711}, + {-117.91969299316, 33.69026184082}, + {-118.44429, 34.062322}, + {-118.16551208496, 33.813858032227}, + {-117.49345, 34.019247}, + {-117.990352, 33.652823}, + {-118.253028, 33.926218}, + {-118.43742370605, 33.969039916992}, + {-117.33741760254, 33.98551940918}, + {-117.424393, 34.00383}, + {-117.37174987793, 33.974533081055}, + {107.60902404785, 34.323348999023}, + {109.07981872559, 34.308242797852}, + {108.68293762207, 34.136581420898}, + {101.40586853027, 36.668930053711}, + {113.07472229004, 28.249282836914}, + {109.16496276855, 34.370040893555}, + {103.65669250488, 36.075668334961}, + {103.85032653809, 36.038589477539}, + {113.17909240723, 28.22868347168}, + {113.01292419434, 28.198471069336}, + {113.05274963379, 28.194351196289}, + {116.33766174316, 39.905776977539}, + {116.59446716309, 39.903030395508}, + {116.41181945801, 40.025253295898}, + {116.45027160645, 39.970321655273}, + {116.32975, 39.997585}, + {116.25389099121, 40.157089233398}, + {116.55601501465, 39.787673950195}, + {116.48048400879, 39.985427856445}, + {116.34452819824, 39.944229125977}, + {116.28410339355, 39.853591918945}, + {116.4818572998, 39.871444702148}, + {116.4379119873, 39.94010925293}, + {116.6658782959, 40.114517211914}, + {116.43379211426, 39.948348999023}, + {116.4379119873, 39.901657104492}, + {116.49284362793, 40.206527709961}, + {116.52030944824, 40.019760131836}, + {116.46263122559, 39.890670776367}, + {116.843033, 40.36171}, + {116.32118225098, 40.01838684082}, + {116.31568908691, 39.850845336914}, + {121.48612976074, 31.278762817383}, + {116.2964630127, 40.04997253418}, + {116.49559020996, 40.11589050293}, + {121.01097106934, 30.873641967773}, + {121.38862609863, 31.189498901367}, + {121.1400604248, 31.177139282227}, + {121.40235900879, 31.204605102539}, + {121.40647888184, 31.227951049805}, + {121.414261, 31.133652}, + {121.42570495605, 31.22932434082}, + {121.46141052246, 31.237564086914}, + {121.47651672363, 31.234817504883}, + {121.47651672363, 31.225204467773}, + {121.53694152832, 31.267776489258}, + {121.65184, 31.194992}, + {17.896041870117, 58.99040222168}, + {17.929001, 59.644547}, + {17.817764282227, 60.186538696289}, + {16.982892, 61.495793}, + {18.031997680664, 59.33235168457}, + {18.034744262695, 59.34196472168}, + {12.001876831055, 57.66242980957}, + {17.500534057617, 60.186538696289}, + {18.010025024414, 59.330978393555}, + {17.97981262207, 59.361190795898}, + {18.105469, 59.306946}, + {17.831497192383, 59.730606079102}, + {14.215621948242, 57.776412963867}, + {16.853713989258, 62.669448852539}, + {12.56217956543, 56.173782348633}, + {16.228866577148, 60.14533996582}, + {15.654830932617, 58.416366577148}, + {11.93733215332, 57.699508666992}, + {13.007125854492, 55.598373413086}, + {18.475570678711, 59.421615600586}, + {11.971664428711, 57.713241577148}, + {-46.537147, -23.532836}, + {-46.559371948242, -23.501815795898}, + {-46.656875610352, -23.562240600586}, + {-46.643891, -23.627809}, + {-46.823049, -23.528566}, + {-45.841166, -23.247856}, + {-47.666244506836, -22.724533081055}, + {-48.206863, -21.798019}, + {-43.17755, -22.870193}, + {-43.075537, -22.91148}, + {-43.038941, -22.808371}, + {-43.931551, -19.908152}, + {-43.933639526367, -19.809036254883}, + {-38.434982299805, -12.967300415039}, + {-34.911117553711, -8.0962371826172}, + {-38.456955, -12.965584}, + {-37.055935, -10.929278}, + {-34.837721, -7.102352}, + {-40.082931518555, -3.2265472412109}, + {-34.941329956055, -8.0358123779297}, + {-38.525956, -3.815484}, + {-43.233261108398, -22.864608764648}, + {-43.425521850586, -22.802810668945}, + {90.35774230957, 23.779220581055}, + {90.390701293945, 23.750381469727}, + {90.430526733398, 23.761367797852}, + {90.386581420898, 23.749008178711}, + {90.385208129883, 23.761367797852}, + {90.419540405273, 23.732528686523}, + {90.287704467773, 23.731155395508}, + {90.404434204102, 23.725662231445}, + {90.398941040039, 23.729782104492}, + {90.412673950195, 23.710556030273}, + {90.415420532227, 23.709182739258}, + {90.405807495117, 23.861618041992}, + {90.398941040039, 23.864364624023}, + {90.393447875977, 23.919296264648}, + {89.892196655273, 24.236526489258}, + {90.44563293457, 24.09782409668}, + {90.400314331055, 24.762496948242}, + {88.531265258789, 26.328048706055}, + {90.617294311523, 23.939895629883}, + {90.779342651367, 24.051132202148}, + {88.268966674805, 24.599075317383}, + {89.411544799805, 24.865493774414}, + {89.540634155273, 25.329666137695}, + {89.763107299805, 24.398574829102}, + {72.959518432617, 19.221267700195}, + {72.927932739258, 19.05647277832}, + {72.840887, 19.226338}, + {72.826702, 19.232254}, + {72.91145324707, 19.085311889648}, + {73.06526184082, 19.046859741211}, + {72.84553527832, 19.17594909668}, + {72.881240844727, 19.11003112793}, + {77.428207397461, 23.246383666992}, + {82.66731262207, 21.797561645508}, + {81.642837524414, 21.316909790039}, + {82.168807983398, 19.10041809082}, + {77.588882446289, 23.139266967773}, + {77.35199, 22.419663}, + {75.925827026367, 21.124649047852}, + {74.573135375977, 20.282821655273}, + {79.927597045898, 23.188705444336}, + {79.445571899414, 23.836898803711}, + {77.962417602539, 23.836898803711}, + {75.848922729492, 22.760238647461}, + {76.093368530273, 22.966232299805}, + {76.048049926758, 22.938766479492}, + {81.640091, 21.258545}, + {81.675796508789, 21.248245239258}, + {-0.663986, 38.102435}, + {-2.587158, 36.822785}, + {-2.6346588134766, 36.760940551758}, + {-1.691208, 37.383728}, + {-2.9546356201172, 36.758193969727}, + {-5.5515289306641, 38.289413452148}, + {-6.3919830322266, 38.706893920898}, + {2.65567, 39.601181}, + {-6.2958526611328, 39.087295532227}, + {2.6731109619141, 39.576187133789}, + {3.259753, 39.573052}, + {3.4531402587891, 39.675064086914}, + {3.006691, 39.858593}, + {1.4096832275391, 38.904647827148}, + {2.446518, 39.536877}, + {4.2263031005859, 39.86457824707}, + {4.2153167724609, 39.934616088867}, + {1.4632415771484, 38.917007446289}, + {2.3833465576172, 41.887435913086}, + {2.2748565673828, 42.059097290039}, + {2.232285, 41.940994}, + {-112.16148376465, 33.377151489258}, + {-111.713981, 33.452018}, + {-122.682642, 45.52479}, + {-111.81953430176, 33.43620300293}, + {-122.753969, 45.384048}, + {-122.848264, 45.494515}, + {-122.81272888184, 45.495071411133}, + {-117.887192, 34.03038}, + {-117.806053, 34.063405}, + {-117.08473205566, 33.651809692383}, + {-116.157608, 34.725422}, + {-117.868538, 34.060395}, + {-117.277336, 33.797035}, + {-117.41706848145, 34.418106079102}, + {-117.674073, 34.094148}, + {-122.403091, 37.759606}, + {-117.397543, 34.077708}, + {-122.505445, 38.356116}, + {-122.38975524902, 37.778549194336}, + {-122.415255, 37.60217}, + {138.55613708496, 35.108871459961}, + {138.66325378418, 35.202255249023}, + {138.62480163574, 35.163803100586}, + {138.92555236816, 35.284652709961}, + {138.8060760498, 35.257186889648}, + {136.72416687012, 36.677169799805}, + {138.88160705566, 35.155563354492}, + {137.00569152832, 37.196273803711}, + {136.29020690918, 36.274795532227}, + {136.677303, 36.549625}, + {136.74751281738, 37.021865844727}, + {136.3712310791, 36.295394897461}, + {137.2501373291, 36.67854309082}, + {137.23915100098, 36.681289672852}, + {137.339172, 36.695023}, + {136.18309, 35.960312}, + {136.17073059082, 35.913619995117}, + {136.23664855957, 36.115493774414}, + {136.22291564941, 36.061935424805}, + {136.47148132324, 36.077041625977}, + {135.453186, 34.682465}, + {135.50468444824, 34.677658081055}, + {135.468292, 34.635086}, + {135.503311, 34.678345}, + {120.896007, 14.316068}, + {120.85578918457, 14.351577758789}, + {124.11186218262, 9.7208404541016}, + {125.07316589355, 7.1253204345703}, + {124.60624694824, 11.004867553711}, + {124.9275970459, 6.4112091064453}, + {121.01509094238, 14.557571411133}, + {121.01371765137, 14.422988891602}, + {121.05835, 14.593277}, + {120.993118, 14.524063}, + {123.877716, 10.291443}, + {121.01234436035, 14.69352722168}, + {120.83106994629, 14.898147583008}, + {100.51460266113, 13.862686157227}, + {100.5640411377, 13.820114135742}, + {100.54893493652, 13.84895324707}, + {100.66291809082, 14.032974243164}, + {100.89500427246, 14.016494750977}, + {18.272323608398, 49.800338745117}, + {17.919387817383, 49.932174682617}, + {16.594849, 49.190598}, + {16.633987426758, 49.215316772461}, + {18.332071, 49.812054}, + {16.257093, 49.524847}, + {16.676559448242, 49.16862487793}, + {16.61575, 49.189829}, + {14.092025756836, 50.028305053711}, + {14.006881713867, 49.683609008789}, + {14.186782836914, 50.731430053711}, + {17.361374, 49.023056}, + {14.159317016602, 49.500961303711}, + {17.885055541992, 49.926681518555}, + {15.601272583008, 50.629806518555}, + {13.91487121582, 49.27848815918}, + {14.107131958008, 49.327926635742}, + {55.15754699707, 51.831436157227}, + {55.171279907227, 51.786117553711}, + {55.148601, 51.831017}, + {45.007782, 53.17131}, + {44.925156, 53.21846}, + {28.319321, 57.814865}, + {54.146609, 56.756842}, + {54.147589, 56.760178}, + {39.747161, 47.138901}, + {39.815139770508, 47.265243530273}, + {40.165328979492, 46.872482299805}, + {40.258712768555, 48.335037231445}, + {39.507522583008, 47.277603149414}, + {39.570693969727, 47.239151000977}, + {39.847089, 47.238353}, + {40.836868286133, 47.517929077148}, + {39.635238647461, 47.237777709961}, + {40.407028198242, 47.284469604492}, + {39.73274230957, 47.232284545898}, + {10.055923461914, 53.546676635742}, + {9.8416900634766, 53.836441040039}, + {-90.873875, 30.535567}, + {-91.227035522461, 30.35041809082}, + {-90.914968, 30.243933}, + {-91.18034362793, 30.445175170898}, + {-91.17579, 30.436863}, + {-91.00456237793, 29.87663269043}, + {-90.117416381836, 29.945297241211}, + {-90.164976, 30.014533}, + {-89.763594, 30.263784}, + {-89.975967407227, 29.921951293945}, + {-90.536270141602, 30.110092163086}, + {-90.249983, 31.403306}, + {-88.51674, 34.960289}, + {-88.67546081543, 32.363662719727}, + {-88.711823, 32.411296}, + {-90.200012, 32.438036}, + {-90.85075378418, 32.939071655273}, + {-90.412076, 33.618707}, + {-89.494753, 31.804329}, + {-90.305557250977, 32.275772094727}, + {-86.850357055664, 33.642196655273}, + {-87.153278, 33.81873}, + {88.352737426758, 22.546005249023}, + {88.36784362793, 22.577590942383}, + {91.87531, 25.568053}, + {76.834945678711, 30.344924926758}, + {77.005233764648, 29.680252075195}, + {75.458908081055, 29.390487670898}, + {76.081008911133, 28.072128295898}, + {77.08625793457, 28.249282836914}, + {76.465530395508, 28.010330200195}, + {76.865158081055, 30.336685180664}, + {76.749801635742, 30.751419067383}, + {77.010726928711, 30.881881713867}, + {85.154342651367, 25.594711303711}, + {86.549606323242, 22.507553100586}, + {85.39192199707, 23.989334106445}, + {86.084060668945, 23.65837097168}, + {75.147171020508, 32.527084350586}, + {74.92057800293, 32.947311401367}, + {-75.182876586914, 42.637252807617}, + {-78.793258666992, 42.112655639648}, + {-80.266799926758, 36.089401245117}, + {-78.385391235352, 36.291275024414}, + {-78.824844360352, 35.879287719727}, + {-78.581313, 34.131546}, + {-155.95161437988, 19.763717651367}, + {-116.263504, 43.792877}, + {-84.670944213867, 38.20426940918}, + {-83.851089477539, 38.42399597168}, + {-89.576597, 36.052106}, + {-86.851044, 36.131973}, + {-84.164199829102, 35.876541137695}, + {-85.803909301758, 35.218734741211}, + {-81.905136108398, 41.441116333008}, + {-84.227919, 39.088672}, + {-81.751327514648, 39.543228149414}, + {-94.812149, 41.497422}, + {-0.181618, 5.601311}, + {-0.16822814941406, 5.6778717041016}, + {-0.40580749511719, 5.5323028564453}, + {-0.18058776855469, 5.6421661376953}, + {-1.7296600341797, 6.7311859130859}, + {-0.25749206542969, 5.5309295654297}, + {-0.447006, 6.038246}, + {-0.182998, 5.674658}, + {-0.78483581542969, 6.5595245361328}, + {3.3295440673828, 6.6405487060547}, + {3.3542633056641, 6.5773773193359}, + {3.4915924072266, 6.6254425048828}, + {3.394089, 6.451721}, + {3.4476470947266, 6.4482879638672}, + {3.3652496337891, 6.5512847900391}, + {3.2965850830078, 6.5279388427734}, + {3.341863, 6.428719}, + {3.277187, 6.467171}, + {3.3048248291016, 6.6144561767578}, + {3.320389, 6.62384}, + {3.3254241943359, 6.6446685791016}, + {7.3889923095703, 9.2333221435547}, + {7.4109649658203, 9.0026092529297}, + {4.5984649658203, 8.4848785400391}, + {7.796172, 44.465103}, + {8.010196, 43.878977}, + {8.926163, 44.410324}, + {9.834824, 44.105644}, + {11.708227, 45.953508}, + {11.830215454102, 45.381088256836}, + {13.082656860352, 46.067733764648}, + {12.83821105957, 45.799942016602}, + {12.365113, 46.008682}, + {12.140579223633, 45.823287963867}, + {12.126846, 45.400772}, + {11.894760131836, 44.189071655273}, + {11.138076782227, 44.662857055664}, + {11.306991577148, 45.195693969727}, + {35.305252075195, 36.977920532227}, + {28.291396, 37.90352}, + {31.770401000977, 36.620864868164}, + {32.032699584961, 36.543960571289}, + {28.926241, 40.261622}, + {27.369003295898, 37.889785766602}, + {37.373428344727, 37.067184448242}, + {28.775253295898, 41.034622192383}, + {34.608993530273, 36.781539916992}, + {28.754426, 41.061667}, + {34.573287963867, 36.77604675293}, + {29.410263, 40.853073}, + {29.467391967773, 40.801162719727}, + {29.401473999023, 40.78742980957}, + {33.004989624023, 41.899795532227}, + {27.775199, 37.285551}, + {27.594223022461, 37.167434692383}, + {32.69188, 41.261215}, + {32.631454, 41.20285}, + {30.237809, 38.051148}, + {29.689865112305, 37.134475708008}, + {30.521393, 38.788605}, + {37.249832, 37.072678}, + {3.5204315185547, 6.4524078369141}, + {3.370409, 6.575959}, + {3.336558, 6.542609}, + {3.4256744384766, 6.6954803466797}, + {3.3460235595703, 6.6117095947266}, + {3.34671, 6.625443}, + {3.294983, 6.647186}, + {3.311234, 6.624069}, + {3.5547637939453, 6.6268157958984}, + {3.3158111572266, 6.6199493408203}, + {6.8534088134766, 6.1612701416016}, + {7.004814, 4.804802}, + {8.332092, 5.008383}, + {3.413132, 6.449112}, + {3.420698, 6.430348}, + {3.405762, 6.445541}, + {5.6270599365234, 6.3178253173828}, + {5.6133270263672, 6.3507843017578}, + {3.102951, 6.666641}, + {7.4906158447266, 9.0795135498047}, + {7.3738861083984, 8.9833831787109}, + {5.755234, 5.540543}, + {7.5070953369141, 8.9723968505859}, + {7.473573, 8.977949}, + {135.49617, 34.824875}, + {135.48545837402, 34.658432006836}, + {135.45799255371, 34.813613891602}, + {135.47309875488, 34.76692199707}, + {135.493698, 34.813156}, + {135.4662322998, 34.777908325195}, + {135.49507141113, 34.75456237793}, + {135.4923248291, 34.751815795898}, + {135.640525, 34.730972}, + {135.6241607666, 34.707870483398}, + {135.48820495605, 34.681777954102}, + {135.794174, 34.581528}, + {135.81514, 34.649734}, + {135.81092834473, 34.680404663086}, + {135.822029, 34.684525}, + {135.81512, 34.646723}, + {135.89332580566, 33.671035766602}, + {135.19569396973, 34.687271118164}, + {135.19432067871, 34.694137573242}, + {135.081024, 34.678345}, + {135.0968170166, 34.663925170898}, + {135.14488220215, 34.65705871582}, + {30.756985, 46.446762}, + {30.757041, 46.446719}, + {30.715713500977, 46.431655883789}, + {30.741806030273, 46.464614868164}, + {30.743179321289, 46.467361450195}, + {30.756912231445, 46.475601196289}, + {36.399435, 49.926826}, + {36.221237, 50.033707}, + {34.985275268555, 48.440780639648}, + {34.957809448242, 48.464126586914}, + {23.979721069336, 49.822311401367}, + {24.059371948242, 49.873123168945}, + {35.022354125977, 48.453140258789}, + {30.510578, 50.446301}, + {30.450668334961, 50.416946411133}, + {30.448265, 50.504837}, + {30.450668334961, 50.437545776367}, + {30.566024780273, 50.43342590332}, + {30.364151000977, 50.529556274414}, + {30.519332885742, 50.441665649414}, + {30.696487426758, 46.468734741211}, + {32.024459838867, 46.94938659668}, + {36.357192993164, 49.989852905273}, + {2.893906, 42.690964}, + {-0.624822, 43.36528}, + {7.7693939208984, 48.591842651367}, + {6.991719, 47.698092}, + {7.7268218994141, 48.571243286133}, + {4.827739, 45.748411}, + {4.894529, 45.75431}, + {4.9404144287109, 45.710678100586}, + {4.868546, 45.790329}, + {4.939469, 45.684471}, + {5.1944732666016, 46.177597045898}, + {5.2150726318359, 45.890579223633}, + {4.888775, 46.424516}, + {6.468887, 46.354752}, + {5.9264373779297, 45.724411010742}, + {2.3805999755859, 48.858261108398}, + {2.3366546630859, 48.85139465332}, + {2.3641204833984, 48.858261108398}, + {2.29248, 48.829422}, + {2.3091888427734, 48.814315795898}, + {2.2776031494141, 48.884353637695}, + {13.052444458008, 49.14665222168}, + {7.0964813232422, 50.86051940918}, + {8.6826324462891, 49.369125366211}, + {-91.496200561523, 32.527084350586}, + {-93.079253, 31.737185}, + {-93.095371, 31.712918}, + {-92.677231, 32.099991}, + {-91.218795776367, 32.829208374023}, + {-90.067977905273, 29.952163696289}, + {-90.03776550293, 29.967269897461}, + {-89.972305, 29.925156}, + {-90.158615, 30.005722}, + {-90.080337524414, 29.956283569336}, + {-90.175094604492, 30.42594909668}, + {-86.060961, 40.474406}, + {-86.651229858398, 40.054092407227}, + {-86.374172, 40.427973}, + {-86.256409, 39.308395}, + {-85.74348449707, 40.032119750977}, + {-86.506453, 39.142911}, + {-86.074447631836, 39.621505737305}, + {-86.40266418457, 39.760208129883}, + {-86.203536987305, 39.729995727539}, + {87.881698608398, 24.641647338867}, + {85.982437133789, 24.068984985352}, + {85.843735, 20.264282}, + {85.121383666992, 25.618057250977}, + {86.783065795898, 21.86897277832}, + {85.636367797852, 25.454635620117}, + {80.945205688477, 26.859512329102}, + {80.996017456055, 26.867752075195}, + {80.96305847168, 26.877365112305}, + {81.843338012695, 25.471115112305}, + {74.78874206543, 34.039077758789}, + {91.750259399414, 26.172866821289}, + {95.024185180664, 27.050399780273}, + {95.326309204102, 27.491226196289}, + {91.67610168457, 26.156387329102}, + {88.33625793457, 26.582107543945}, + {88.470840454102, 27.068252563477}, + {87.488023, 23.906481}, + {88.108291625977, 25.000076293945}, + {88.157730102539, 24.98908996582}, + {72.841415405273, 19.170455932617}, + {78.405990600586, 17.41813659668}, + {79.606246948242, 17.982559204102}, + {100.68486, 14.029035}, + {100.55389, 13.611724}, + {100.607209, 13.867237}, + {100.26329040527, 19.667587280273}, + {99.166219, 18.829211}, + {99.130325317383, 18.79280090332}, + {99.81751, 19.625392}, + {100.567576, 14.373877}, + {100.74806213379, 14.168930053711}, + {100.025934, 15.021025}, + {100.906983, 13.297534}, + {101.09275817871, 13.420486450195}, + {101.27265930176, 13.567428588867}, + {101.213276, 12.748702}, + {102.79975891113, 17.41813659668}, + {104.86518859863, 15.197525024414}, + {104.626025, 15.866087}, + {100.56266784668, 13.798141479492}, + {100.52284240723, 13.754196166992}, + {100.52421569824, 13.76106262207}, + {100.42121887207, 13.916244506836}, + {100.414037, 13.805671}, + {100.571646, 13.771028}, + {100.61210632324, 13.857192993164}, + {9.458352, 0.398509}, + {8.781509, -0.712444}, + {9.503235, 0.307056}, + {9.4036102294922, 0.50331115722656}, + {11.875534057617, -4.7852325439453}, + {15.200615, -4.310074}, + {15.276378, -4.225264}, + {15.289536, -4.272308}, + {15.338516, -4.384232}, + {11.878280639648, -4.8126983642578}, + {29.491425, 0.500565}, + {29.237464, -1.696112}, + {29.19342, -5.94841}, + {25.499954223633, -10.70686340332}, + {13.45344543457, -12.536087036133}, + {13.405380249023, -12.570419311523}, + {28.853530883789, -2.5096893310547}, + {13.273544311523, -8.9929962158203}, + {13.266677856445, -8.9916229248047}, + {13.175125, -8.934402}, + {13.283157348633, -8.8899993896484}, + {13.486404418945, -8.8803863525391}, + {13.405380249023, -9.0410614013672}, + {121.56715393066, 25.08659362793}, + {121.536942, 25.055237}, + {16.951196, 50.633255}, + {15.861496, 50.786601}, + {15.773443, 51.13749}, + {19.435952, 51.107712}, + {19.415341, 51.054465}, + {19.50553894043, 51.771011352539}, + {15.367813110352, 52.22282409668}, + {16.075974, 51.640091}, + {15.415878295898, 52.52082824707}, + {16.56120300293, 52.369766235352}, + {19.52751159668, 51.085739135742}, + {151.199958, -33.88426}, + {151.251019, -33.891412}, + {150.656653, -33.761048}, + {151.1368560791, -33.88801574707}, + {150.501073, -35.114527}, + {150.71937561035, -33.76579284668}, + {149.24858093262, -34.896011352539}, + {149.557821, -34.664004}, + {146.62827, -34.815746}, + {144.95429992676, -37.818374633789}, + {147.174646, -41.065589}, + {144.94331359863, -37.836227416992}, + {144.33082580566, -37.665939331055}, + {144.64805603027, -37.877426147461}, + {145.010605, -37.810822}, + {144.826139, -37.849863}, + {144.978798, -37.757629}, + {145.014297, -37.81972}, + {153.34098815918, -27.954025268555}, + {151.2425994873, -33.882522583008}, + {151.228974, -33.932048}, + {151.122028, -33.821376}, + {151.248281, -33.728396}, + {151.01600646973, -33.830337524414}, + {151.209126, -33.872107}, + {151.207041, -33.867135}, + {151.172218, -33.870163}, + {149.148774, -35.217421}, + {149.108312, -35.415778}, + {149.110558, -33.028336}, + {151.718717, -32.990646}, + {149.283493, -35.124905}, + {151.13903, -33.756522}, + {151.105516, -34.010912}, + {151.027679, -34.059368}, + {150.854322, -33.918679}, + {150.88417053223, -33.86604309082}, + {151.087695, -33.733179}, + {9.20517, 48.483353}, + {8.317334, 49.614487}, + {8.3118438720703, 49.509201049805}, + {8.4491729736328, 49.469375610352}, + {8.537607, 49.458682}, + {7.880631, 48.339581}, + {8.6331939697266, 49.531173706055}, + {8.9215850830078, 48.753890991211}, + {8.338329, 49.257889}, + {9.183521, 48.226065}, + {9.9048614501953, 48.354263305664}, + {9.799979, 48.08609}, + {9.5656585693359, 48.852767944336}, + {9.163847, 49.221127}, + {-0.080795, 51.471634}, + {-0.269852, 51.470261}, + {-0.019912719726562, 51.501846313477}, + {-0.019912719726562, 51.549911499023}, + {0.67497253417969, 52.226943969727}, + {-0.059738159179688, 51.548538208008}, + {0.096817016601562, 51.522445678711}, + {-0.041885375976562, 51.483993530273}, + {-1.4714813232422, 51.776504516602}, + {-0.52940368652344, 51.32194519043}, + {-2.0702362060547, 50.717697143555}, + {1.207598, 52.657841}, + {-1.74539, 52.624699}, + {-1.029644, 53.292699}, + {1.0622406005859, 51.288986206055}, + {-0.534897, 53.239975}, + {0.135197, 52.151991}, + {-0.42228698730469, 51.876754760742}, + {-0.539932, 53.224869}, + {0.053293, 50.962026}, + {-0.186866, 52.648544}, + {1.3355255126953, 52.663650512695}, + {0.38246, 50.841294}, + {-3.841438, 40.121727}, + {-5.87059, 37.360153}, + {-4.733597, 41.646423}, + {-5.8014678955078, 43.377456665039}, + {-2.9175567626953, 43.260726928711}, + {-0.11741638183594, 38.539352416992}, + {-6.3494110107422, 38.943099975586}, + {-2.422883, 36.863793}, + {-2.474899, 36.848831}, + {2.201438, 41.40784}, + {2.1471405029297, 41.39030456543}, + {2.148514, 41.393572}, + {2.621613, 41.600418}, + {2.7500152587891, 41.647109985352}, + {-3.938697, 38.971939}, + {-3.625135, 37.142341}, + {-8.543587, 42.891312}, + {-3.236027, 40.632236}, + {-8.2047271728516, 43.344497680664}, + {-6.955307, 37.206711}, + {13.39714050293, 52.467269897461}, + {8.306975, 49.472746}, + {6.9715118408203, 51.790237426758}, + {7.266083, 51.59729}, + {13.339436, 52.520487}, + {8.649124, 50.090927}, + {8.7032318115234, 50.112075805664}, + {8.698634, 50.126979}, + {13.335342407227, 52.49885559082}, + {13.309937, 52.470016}, + {10.168533325195, 50.151901245117}, + {6.9385528564453, 51.267013549805}, + {6.753159, 51.412604}, + {6.636841, 51.428787}, + {27.914886, -32.961388}, + {30.266647338867, -25.431289672852}, + {30.11833190918, -25.395584106445}, + {28.687362670898, -23.894577026367}, + {18.434371948242, -33.937454223633}, + {26.443405151367, -28.739547729492}, + {27.509755, -28.267139}, + {28.054275512695, -26.167373657227}, + {112.63114929199, -7.9712677001953}, + {112.63074, -7.972133}, + {112.781237, -7.333591}, + {112.777142, -7.220902}, + {113.104975, -7.755852}, + {112.69432067871, -7.4054718017578}, + {112.461652, -6.90858}, + {112.70668029785, -7.5565338134766}, + {112.892692, -7.642321}, + {117.18086242676, -0.46211242675781}, + {116.90208435059, -1.2517547607422}, + {117.47886657715, 0.19294738769531}, + {115.70320129395, -0.22453308105469}, + {116.82243347168, -1.2339019775391}, + {117.15202331543, -0.47996520996094}, + {117.17674255371, -0.50743103027344}, + {117.16575622559, -0.51017761230469}, + {117.46650695801, 0.13938903808594}, + {117.58460998535, 3.3061981201172}, + {117.4047088623, 2.8310394287109}, + {117.10945129395, -0.56236267089844}, + {116.85813903809, -1.2133026123047}, + {116.61643981934, 3.5602569580078}, + {116.97486877441, -0.41679382324219}, + {102.76954650879, 17.420883178711}, + {103.67042541504, 16.032485961914}, + {101.00898742676, 13.395767211914}, + {101.03370666504, 15.121994018555}, + {101.0131072998, 15.745468139648}, + {102.00462341309, 12.681655883789}, + {100.62721252441, 13.627853393555}, + {98.968276977539, 19.248733520508}, + {100.06278991699, 13.81462097168}, + {99.142684936523, 18.825759887695}, + {100.67939758301, 13.725357055664}, + {100.10398864746, 13.592147827148}, + {99.226455688477, 18.913650512695}, + {99.025955200195, 18.607406616211}, + {98.987503051758, 18.795547485352}, + {98.347549438477, 7.9259490966797}, + {100.56266784668, 13.846206665039}, + {100.50224304199, 13.71711730957}, + {100.540899, 13.747204}, + {100.58326721191, 13.785781860352}, + {100.31684875488, 13.77067565918}, + {100.49263000488, 13.725357055664}, + {100.33882141113, 13.840713500977}, + {77.75574, 22.646256}, + {72.915573120117, 20.972213745117}, + {73.882369995117, 22.804183959961}, + {78.043441772461, 23.957748413086}, + {76.396865844727, 21.830520629883}, + {75.125198364258, 23.228530883789}, + {80.36979675293, 23.808059692383}, + {79.907341, 23.104935}, + {77.003174, 22.28302}, + {81.950454711914, 21.838760375977}, + {73.464889526367, 25.445022583008}, + {81.348816, 21.202103}, + {82.284164428711, 23.245010375977}, + {74.629440307617, 25.749893188477}, + {73.135299682617, 25.95588684082}, + {74.62532043457, 24.902572631836}, + {73.714828, 24.636841}, + {76.059036254883, 26.825180053711}, + {74.28337097168, 26.034164428711}, + {76.190872192383, 26.443405151367}, + {74.494857788086, 28.473129272461}, + {76.293869, 27.891541}, + {72.838668823242, 24.552383422852}, + {75.739059448242, 26.895217895508}, + {37.068557739258, 45.056991577148}, + {37.67692565918, 45.20393371582}, + {39.876937866211, 43.506546020508}, + {40.206527709961, 43.676834106445}, + {37.808762, 44.664917}, + {39.529495239258, 44.426651000977}, + {39.871445, 43.505173}, + {38.082046508789, 44.559860229492}, + {37.389907836914, 44.916915893555}, + {44.368286, 48.69278}, + {42.289803, 48.421559}, + {43.140583, 50.073628}, + {37.576675415039, 55.779647827148}, + {37.436599731445, 55.66291809082}, + {37.414627075195, 55.717849731445}, + {37.437286, 55.657425}, + {37.465438842773, 55.820846557617}, + {37.580795288086, 55.778274536133}, + {37.437286, 55.805742}, + {127.170362, 37.622501}, + {126.999388, 37.56551}, + {127.093142, 37.573392}, + {127.030798, 37.502088}, + {126.895448, 37.469577}, + {127.07817077637, 37.499771118164}, + {126.921255, 37.494911}, + {127.18391418457, 37.406387329102}, + {127.10838317871, 37.51350402832}, + {126.994011, 37.506294}, + {127.047432, 37.483072}, + {127.23609924316, 37.39128112793}, + {126.977949, 37.281769}, + {126.78016662598, 37.336349487305}, + {126.987453, 37.306269}, + {126.8872833252, 37.410507202148}, + {127.102536, 37.255915}, + {127.16609, 36.998796}, + {127.21000671387, 37.223739624023}, + {127.442639, 37.083839}, + {126.91200256348, 37.085037231445}, + {127.065316, 37.272983}, + {126.98616027832, 37.498397827148}, + {127.47093200684, 37.253952026367}, + {127.133654, 37.05769}, + {-7.2447967529297, 37.234725952148}, + {-8.5205841064453, 42.869338989258}, + {-8.7334442138672, 42.211532592773}, + {-8.4079742431641, 43.366470336914}, + {-8.1717681884766, 43.450241088867}, + {-8.7581634521484, 42.226638793945}, + {-5.0173187255859, 43.34587097168}, + {-4.1960906982422, 40.73112487793}, + {34.75456237793, 32.045059204102}, + {34.804000854492, 32.06428527832}, + {34.761428833008, 32.049179077148}, + {34.774573, 32.096067}, + {34.967422485352, 32.794876098633}, + {34.835914, 32.10063}, + {34.776063, 32.083539}, + {34.789342, 31.240509}, + {34.779493, 32.071776}, + {35.215926, 31.745682}, + {35.188848, 31.785519}, + {50.622423, 26.256138}, + {50.495224, 26.204178}, + {50.58909, 26.240826}, + {50.561475, 26.201604}, + {51.43037, 25.199923}, + {51.427688598633, 25.197830200195}, + {51.53205871582, 25.265121459961}, + {51.541946, 25.373062}, + {51.552525, 25.273365}, + {51.496353, 25.274391}, + {16.91817, 52.35342}, + {16.254959, 52.511902}, + {16.244431, 52.514877}, + {16.462326049805, 52.676010131836}, + {17.216262817383, 51.183242797852}, + {21.094436645508, 52.371139526367}, + {20.917282104492, 52.275009155273}, + {20.972213745117, 52.272262573242}, + {21.002426, 52.235733}, + {21.166534, 52.139741}, + {21.031663, 52.077646}, + {21.131332, 52.232437}, + {21.587791, 51.905594}, + {19.41764831543, 51.845169067383}, + {21.437759399414, 51.481246948242}, + {19.664959, 51.409371}, + {22.791138, 53.975143}, + {20.600051, 52.865411}, + {22.607881, 51.253646}, + {19.427433, 51.778449}, + {22.444042, 51.221406}, + {120.28312683105, 22.621536254883}, + {120.30098, 22.623596}, + {120.64430236816, 22.297439575195}, + {119.5484161377, 23.602066040039}, + {118.40858459473, 24.437026977539}, + {91.178970336914, 24.042892456055}, + {89.385452270508, 24.802322387695}, + {91.639022827148, 25.067367553711}, + {91.834030151367, 22.363357543945}, + {91.805191040039, 22.36198425293}, + {91.816177368164, 22.331771850586}, + {90.41130065918, 23.795700073242}, + {90.426406860352, 23.784713745117}, + {90.419540405273, 23.828659057617}, + {90.373535, 23.79364}, + {90.365982055664, 23.775100708008}, + {90.378342, 23.751068}, + {127.164187, 37.57095}, + {127.14165, 37.647043}, + {127.186203, 37.649918}, + {126.55769348145, 36.809005737305}, + {126.55906677246, 36.35856628418}, + {126.371208, 36.559638}, + {129.06463, 35.210355}, + {129.1641998291, 35.161056518555}, + {127.720549, 35.016803}, + {129.0845489502, 35.257186889648}, + {129.10514831543, 35.183029174805}, + {127.490157, 34.930327}, + {127.50672, 34.906251}, + {127.572398, 34.881101}, + {128.47618103027, 35.758438110352}, + {128.240979, 35.671946}, + {128.49952697754, 35.803756713867}, + {128.49128723145, 35.866928100586}, + {127.69157, 37.664292}, + {128.2674407959, 37.792282104492}, + {128.062012, 37.814005}, + {128.5668182373, 38.24821472168}, + {128.798516, 37.842185}, + {128.91014099121, 37.735977172852}, + {127.14546203613, 37.443466186523}, + {35.631703, 33.978653}, + {35.380034, 33.548688}, + {35.511245727539, 33.886642456055}, + {35.447211, 30.326209}, + {35.864181518555, 32.568283081055}, + {35.978851, 32.235947}, + {35.883408, 31.940964}, + {35.83534, 32.03682}, + {35.459060668945, 30.322952270508}, + {37.126235961914, 36.200637817383}, + {35.854568481445, 32.014846801758}, + {35.595474, 31.806107}, + {35.798263549805, 35.52360534668}, + {36.737594604492, 35.132217407227}, + {35.904006958008, 35.073165893555}, + {36.29264831543, 33.521347045898}, + {36.217804, 33.524094}, + {36.548080444336, 32.687759399414}, + {36.317367553711, 33.530960083008}, + {36.302719, 33.524094}, + {36.817245, -3.371658}, + {37.679672241211, -6.8039703369141}, + {36.826858520508, -3.3762359619141}, + {39.217587, -6.214828}, + {35.969924926758, -3.7387847900391}, + {39.285049438477, -6.8218231201172}, + {39.25895690918, -6.8273162841797}, + {39.1539, -6.884308}, + {39.219131469727, -6.7943572998047}, + {32.621841430664, 0.33027648925781}, + {32.650680541992, 0.37422180175781}, + {32.56965637207, 0.28770446777344}, + {32.576273, 0.424534}, + {32.734451293945, 0.93040466308594}, + {32.573776245117, 0.31517028808594}, + {33.208236694336, 0.42778015136719}, + {32.647933959961, 0.30006408691406}, + {32.647933959961, 0.30006408691406}, + {32.674026489258, 0.36872863769531}, + {32.727584838867, 0.37147521972656}, + {31.091995239258, 2.4794769287109}, + {20.410537719727, 47.85026550293}, + {20.993499, 46.705112}, + {19.147109985352, 47.434158325195}, + {19.129257202148, 47.502822875977}, + {19.050979614258, 47.497329711914}, + {18.728943, 47.293396}, + {20.149612426758, 47.136154174805}, + {51.648012, 32.715046}, + {57.056243, 30.272504}, + {51.658901, 32.632828}, + {57.069443, 30.293839}, + {57.066421508789, 30.298233032227}, + {54.381441, 31.890956}, + {54.377517700195, 31.872024536133}, + {50.79460144043, 32.226333618164}, + {50.886917, 32.308731}, + {46.208725, 38.051987}, + {46.351122, 38.023485}, + {45.417995, 36.965046}, + {45.075989, 37.548752}, + {45.044043, 37.538223}, + {59.482956, 36.359482}, + {59.612961, 36.287613}, + {58.611373901367, 36.265182495117}, + {60.62873840332, 25.310440063477}, + {59.087905883789, 37.455825805664}, + {58.789901733398, 36.211624145508}, + {48.686599731445, 31.321334838867}, + {48.710861, 31.298676}, + {48.705237, 31.312899}, + {49.96994, 30.755882}, + {49.862829, 33.316729}, + {14.269180297852, 49.745407104492}, + {15.77681, 50.627805}, + {14.532683, 50.774518}, + {14.683751, 49.8331}, + {14.424362182617, 50.080490112305}, + {16.093825, 49.410305}, + {16.197280883789, 49.499588012695}, + {-46.662368774414, -23.530654907227}, + {-46.452255249023, -23.48258972168}, + {-46.579971313477, -23.585586547852}, + {-46.781845092773, -23.534774780273}, + {-46.689834594727, -23.596572875977}, + {-50.372177, -23.120865}, + {-47.980728149414, -15.841598510742}, + {-46.648635864258, -23.567733764648}, + {-48.328170776367, -10.227584838867}, + {-47.932662963867, -15.799026489258}, + {-48.444900512695, -27.451400756836}, + {-47.873611450195, -15.778427124023}, + {-48.524551391602, -27.577743530273}, + {-47.869491577148, -15.781173706055}, + {-48.858261108398, -26.367874145508}, + {-48.633041381836, -27.607955932617}, + {-47.927169799805, -15.812759399414}, + {-49.231796264648, -25.468368530273}, + {-49.923934936523, -22.228775024414}, + {-49.397964477539, -20.818405151367}, + {-49.355392456055, -20.766220092773}, + {-48.041152954102, -15.932235717773}, + {-47.325668334961, -22.732772827148}, + {-46.59782409668, -23.78059387207}, + {-51.173629760742, -29.828567504883}, + {30.13069152832, 59.38591003418}, + {29.916458129883, 59.101638793945}, + {29.972763061523, 60.061569213867}, + {30.299606323242, 59.995651245117}, + {29.887619018555, 61.14372253418}, + {29.384994506836, 59.961318969727}, + {30.097733, 59.679337}, + {30.088119506836, 59.708633422852}, + {30.461654, 60.091782}, + {31.050339, 59.44725}, + {38.331985473633, 55.432205200195}, + {38.68766784668, 55.56266784668}, + {30.362778, 60.156326}, + {37.844467163086, 55.967788696289}, + {37.477728, 56.305161}, + {38.349838256836, 55.466537475586}, + {37.840347290039, 56.015853881836}, + {38.426742553711, 55.812606811523}, + {38.198776245117, 55.842819213867}, + {23.750878, 37.989231}, + {22.508926391602, 40.271072387695}, + {22.41828918457, 40.692672729492}, + {22.489700317383, 39.782180786133}, + {22.423194, 39.632296}, + {23.127267, 40.306447}, + {23.325928, 40.688342}, + {22.90535, 40.647812}, + {23.457870483398, 40.514144897461}, + {24.085464477539, 40.869827270508}, + {22.208176, 40.533371}, + {23.676911, 38.296967}, + {20.700302124023, 38.500900268555}, + {20.520401000977, 38.120498657227}, + {20.9729, 39.173813}, + {21.172714, 38.881531}, + {22.017018, 36.874543}, + {23.795700073242, 38.033981323242}, + {22.427902, 36.688843}, + {24.202194213867, 35.31623840332}, + {23.078842163086, 36.50276184082}, + {139.75227355957, 35.702133178711}, + {139.73991394043, 35.673294067383}, + {139.743759, 35.705704}, + {139.76600646973, 35.704879760742}, + {139.70970153809, 35.698013305664}, + {140.591698, 36.490402}, + {140.4759979248, 36.372299194336}, + {140.3702545166, 36.814498901367}, + {139.87999, 36.523361}, + {139.837876, 36.306839}, + {139.902992, 36.604385}, + {134.60929870605, 34.868545532227}, + {139.830551, 36.966934}, + {135.177841, 34.94545}, + {135.38520812988, 34.809494018555}, + {130.608451, 32.984394}, + {135.354996, 34.808807}, + {130.67893981934, 32.764663696289}, + {130.594484, 32.806549}, + {130.51689147949, 33.48014831543}, + {139.73579406738, 35.586776733398}, + {130.534744, 33.280334}, + {139.77012634277, 35.581283569336}, + {139.7110748291, 35.592269897461}, + {139.73167419434, 35.593643188477}, + {77.750930786133, 20.926895141602}, + {72.72331237793, 19.793930053711}, + {76.764907836914, 20.734634399414}, + {72.762202, 19.724493}, + {79.052811, 21.207733}, + {73.856277, 18.464859}, + {79.341202, 19.859161}, + {79.094009, 21.156921}, + {73.576126098633, 19.951858520508}, + {73.797225952148, 19.971084594727}, + {73.813705444336, 18.470077514648}, + {74.294357299805, 16.853713989258}, + {74.43717956543, 19.843368530273}, + {74.538803100586, 20.773086547852}, + {73.79035949707, 18.586807250977}, + {73.353652954102, 18.415145874023}, + {75.018081665039, 21.502304077148}, + {86.417770385742, 20.503921508789}, + {85.87738, 20.419464}, + {84.03168, 21.481705}, + {84.797286987305, 22.237014770508}, + {85.856094360352, 20.285568237305}, + {85.781936645508, 20.271835327148}, + {17.206649780273, 48.13591003418}, + {20.235363, 49.064381}, + {21.687698364258, 48.564376831055}, + {17.744979858398, 48.394088745117}, + {18.147354125977, 48.210067749023}, + {17.582016, 48.370743}, + {17.750921, 48.25599}, + {17.181028, 48.003897}, + {18.760529, 49.21257}, + {15.615941, 48.212239}, + {15.715341, 48.436353}, + {15.62367, 48.419826}, + {14.245929, 48.267827}, + {14.287046, 48.290747}, + {14.282379, 48.27034}, + {15.26634, 47.408238}, + {9.933966, 47.13761}, + {9.717463, 47.190187}, + {15.154561, 47.052187}, + {16.351089477539, 48.194961547852}, + {-42.071383, -22.840644}, + {-43.474960327148, -23.02116394043}, + {-43.307418823242, -22.831649780273}, + {-43.361804, -22.832766}, + {-43.335061, -22.791051}, + {-43.333511352539, -22.802810668945}, + {-35.969063, -8.266829}, + {-42.97233581543, -22.423782348633}, + {-43.593762, -22.99399}, + {-43.284072875977, -22.657241821289}, + {-35.225054, -8.363074}, + {-46.504440307617, -23.615798950195}, + {-43.266303, -22.912536}, + {-46.318136, -23.939714}, + {-46.754335, -24.1621}, + {-46.298307, -23.985963}, + {-46.650009155273, -23.611679077148}, + {-46.636276245117, -23.600692749023}, + {-46.599197387695, -23.581466674805}, + {-46.702438, -23.658455}, + {-46.854629516602, -23.63639831543}, + {-0.625536, 44.917071}, + {7.7597808837891, 48.556137084961}, + {5.9113311767578, 45.562362670898}, + {5.8879852294922, 45.607681274414}, + {7.39859, 48.165441}, + {1.503442, 46.603442}, + {2.253342, 49.145279}, + {0.312424, 47.555313}, + {2.3242950439453, 48.998336791992}, + {2.366867, 48.96524}, + {2.4918365478516, 48.947525024414}, + {2.4808502197266, 48.953018188477}, + {2.320862, 48.902893}, + {2.2679901123047, 48.899459838867}, + {2.2652435302734, 48.89533996582}, + {2.214432, 48.910024}, + {2.287216, 48.897629}, + {5.3551483154297, 43.492813110352}, + {5.8948516845703, 43.930892944336}, + {4.8209381103516, 43.952865600586}, + {8.624956, 42.330781}, + {-74.297103881836, 40.562210083008}, + {-73.955154418945, 40.996170043945}, + {-74.05403137207, 41.067581176758}, + {-74.155654907227, 41.025009155273}, + {-74.21472, 40.783311}, + {-74.246292114258, 40.724258422852}, + {-74.218872, 41.020678}, + {-74.376754760742, 40.691299438477}, + {-73.985366821289, 40.75309753418}, + {-73.872756958008, 40.856094360352}, + {-73.967423, 40.759134}, + {-73.861770629883, 40.839614868164}, + {-73.831558227539, 40.861587524414}, + {-73.860397338867, 40.851974487305}, + {-73.956528, 40.767517}, + {-73.956335, 40.761255}, + {-73.85627746582, 40.865707397461}, + {-73.886489868164, 40.871200561523}, + {-73.890609741211, 40.867080688477}, + {7.846063, 48.000221}, + {12.555011, 48.263942}, + {11.631088, 48.147812}, + {12.11984, 47.889992}, + {11.587967, 48.156784}, + {10.978215, 49.598217}, + {10.310304, 47.709117}, + {11.247556, 47.480258}, + {12.838791, 48.788415}, + {13.376946, 52.462083}, + {13.589401, 52.417145}, + {13.369972, 52.54859}, + {13.271713, 52.651749}, + {13.410858, 52.583984}, + {13.218448, 52.271473}, + {-1.6019439697266, 47.156753540039}, + {-1.6294097900391, 48.189468383789}, + {-1.5003204345703, 47.258377075195}, + {4.859685, 45.774672}, + {5.427246, 43.269825}, + {5.451901, 43.530946}, + {7.280524, 43.708021}, + {6.098649, 43.082475}, + {6.05233, 43.12508}, + {0.044574, 44.581616}, + {-0.756065, 44.89218}, + {1.4591217041016, 43.56559753418}, + {1.429193, 43.603801}, + {46.608810424805, 24.572982788086}, + {46.722793579102, 24.599075317383}, + {46.714966, 24.944321}, + {46.812057495117, 24.828414916992}, + {39.209518432617, 21.573715209961}, + {39.22737121582, 21.590194702148}, + {39.154816, 21.622696}, + {39.297493, 21.410754}, + {39.114761352539, 22.155990600586}, + {39.5755, 24.467239}, + {39.213638305664, 21.564102172852}, + {42.201919555664, 18.915023803711}, + {40.372695922852, 21.266098022461}, + {39.838486, 21.369781}, + {39.875564575195, 21.380081176758}, + {42.571334838867, 16.888046264648}, + {43.952865600586, 26.348648071289}, + {40.412521362305, 21.272964477539}, + {49.643783569336, 25.565872192383}, + {49.544449, 27.114944}, + {50.090408, 26.374435}, + {43.932266235352, 26.343154907227}, + {43.998184204102, 26.06575012207}, + {-100.397415, 25.747147}, + {-101.235123, 19.686356}, + {-101.270634, 19.694553}, + {-105.42549133301, 20.746994018555}, + {-103.426247, 20.6799}, + {-101.57203674316, 19.898300170898}, + {-116.926652, 32.461867}, + {-99.899368, 16.872253}, + {-101.20948791504, 20.67008972168}, + {-117.004471, 32.470856}, + {-107.35084533691, 24.787216186523}, + {-98.137435913086, 19.067459106445}, + {-107.39204406738, 24.809188842773}, + {-99.537782, 27.420927}, + {-99.554672, 27.326662}, + {-94.55452, 18.007965}, + {-100.55305480957, 28.707962036133}, + {-97.998733520508, 19.039993286133}, + {-117.047653, 32.317429}, + {-96.894359, 19.552204}, + {-103.46580505371, 20.564346313477}, + {-61.430054, 10.642319}, + {-61.382675170898, 10.64094543457}, + {-61.44172668457, 10.205612182617}, + {49.992599487305, 40.442733764648}, + {48.580856323242, 41.395797729492}, + {46.639022827148, 41.630630493164}, + {45.614547729492, 40.992050170898}, + {49.267501831055, 39.837112426758}, + {49.844284057617, 40.412521362305}, + {49.844284057617, 40.434494018555}, + {49.814072, 40.354843}, + {48.002700805664, 39.761581420898}, + {49.926681518555, 40.41389465332}, + {49.955520629883, 40.409774780273}, + {48.797836303711, 41.460342407227}, + {46.373977661133, 40.707778930664}, + {48.951644897461, 39.647598266602}, + {49.858016967773, 40.387802124023}, + {49.84977722168, 40.372695922852}, + {49.969253540039, 40.372695922852}, + {49.835358, 40.370636}, + {49.954147338867, 40.39192199707}, + {31.034317016602, -29.851913452148}, + {31.012344360352, -29.861526489258}, + {27.949905, -27.241287}, + {28.387985229492, -27.916946411133}, + {32.13981628418, -28.495101928711}, + {28.160018920898, -26.19758605957}, + {27.918319702148, -26.352767944336}, + {27.90231, -26.144695}, + {28.183221, -25.822425}, + {28.004837036133, -26.242904663086}, + {28.180618286133, -25.740280151367}, + {28.507461547852, -25.800704956055}, + {18.929444, -33.789826}, + {18.985061645508, -33.422470092773}, + {28.089915, -25.643958}, + {28.088607788086, -26.08772277832}, + {28.257522583008, -26.174240112305}, + {28.059769, -26.07193}, + {28.138046264648, -26.106948852539}, + {107.06932067871, -6.2958526611328}, + {106.80976867676, -6.3809967041016}, + {106.729431, -6.471634}, + {106.84135437012, -6.5677642822266}, + {107.48159, -6.427475}, + {107.15034484863, -6.2985992431641}, + {108.32011, -6.704601}, + {107.08854675293, -6.8753814697266}, + {108.42475891113, -6.4249420166016}, + {108.196884, -7.307895}, + {107.881302, -7.180119}, + {108.327255, -7.329941}, + {110.854796, -6.802746}, + {110.46272277832, -6.9824981689453}, + {110.74562072754, -6.7435455322266}, + {110.44624328613, -6.9509124755859}, + {109.057041, -6.96693}, + {111.14524841309, -7.0841217041016}, + {110.421822, -7.018734}, + {110.233383, -7.535019}, + {109.24461364746, -7.4288177490234}, + {109.753985, -6.92014}, + {110.188424, -7.265115}, + {111.15211486816, -6.7174530029297}, + {28.751907348633, -25.401077270508}, + {30.781142, -25.102242}, + {28.201217651367, -25.640029907227}, + {28.181991577148, -25.671615600586}, + {18.695297241211, -33.856430053711}, + {31.027794, -29.797668}, + {28.238296508789, -26.31706237793}, + {31.017837524414, -29.692611694336}, + {30.392487, -30.822873}, + {31.056289672852, -29.732437133789}, + {28.04328918457, -26.521682739258}, + {30.783004760742, -29.764022827148}, + {22.139511108398, -34.180526733398}, + {23.052749633789, -34.036331176758}, + {28.01445, -26.195526}, + {27.780497, -25.674934}, + {28.136673, -25.867996}, + {28.09684753418, -25.909194946289}, + {28.217697, -25.811691}, + {32.063599, -28.771133}, + {31.035690307617, -29.759902954102}, + {30.99723815918, -29.784622192383}, + {27.006454467773, -26.75651550293}, + {-40.35758972168, -20.34049987793}, + {-41.890424, -21.205201}, + {-41.876667, -21.214852}, + {-37.069931030273, -10.978775024414}, + {-40.815707, -14.881351}, + {-44.992057, -12.143816}, + {-35.539627, -9.436569}, + {-35.815602, -9.502852}, + {-38.672723, -3.75091}, + {-38.59977722168, -3.7786102294922}, + {-38.315226, -12.625135}, + {-38.427429, -12.871857}, + {-37.972576, -12.498027}, + {-37.450955, -11.31053}, + {-37.432479858398, -10.683517456055}, + {-37.388534545898, -10.759048461914}, + {-38.506393432617, -3.7291717529297}, + {-37.925997, -11.49623}, + {-38.37646, -12.910765}, + {-37.080917358398, -10.852432250977}, + {-98.776016235352, 19.733505249023}, + {-99.200363, 19.596863}, + {-99.131698608398, 19.402542114258}, + {-98.247299194336, 19.149856567383}, + {-99.627456665039, 19.406661987305}, + {-99.598617553711, 19.314651489258}, + {-103.741899, 19.259158}, + {-100.284576, 25.770493}, + {-100.34156799316, 25.649642944336}, + {-100.26878356934, 25.607070922852}, + {-100.381197, 25.669261}, + {-99.11247253418, 19.423141479492}, + {-89.590072631836, 20.965347290039}, + {-100.504298, 25.692919}, + {-91.670608520508, 18.713150024414}, + {-99.183883666992, 19.38606262207}, + {-99.157791137695, 19.39567565918}, + {-99.205856323242, 19.43000793457}, + {-99.158478, 19.434128}, + {-99.177017211914, 19.372329711914}, + {-99.139938354492, 19.41764831543}, + {-76.848678588867, 18.027877807617}, + {-76.776875, 18.012379}, + {-6.1585235595703, 35.195388793945}, + {-6.690445, 32.500076}, + {-7.4233245849609, 33.635330200195}, + {-7.5304412841797, 33.595504760742}, + {-7.6493, 33.58326}, + {-6.8671417236328, 33.948440551758}, + {-8.5274505615234, 33.23844909668}, + {-7.9753875732422, 31.554794311523}, + {-8.6331939697266, 33.099746704102}, + {-8.0138397216797, 31.649551391602}, + {-5.7932281494141, 35.801010131836}, + {-6.8973541259766, 32.889633178711}, + {-6.8149566650391, 33.973159790039}, + {-7.701165, 33.546838}, + {-7.6773834228516, 33.552932739258}, + {-7.3821258544922, 33.701248168945}, + {-4.8305511474609, 33.820724487305}, + {10.219345092773, 36.846084594727}, + {10.170593, 36.841965}, + {10.226211547852, 36.762313842773}, + {10.16716003418, 36.887283325195}, + {9.8650360107422, 37.299270629883}, + {-75.235405, 4.442596}, + {-73.520138, 7.629012}, + {-74.069137573242, 4.6396636962891}, + {-72.526931762695, 7.9232025146484}, + {-74.087677, 4.742661}, + {-73.110151, 7.094765}, + {-74.138926, 4.620063}, + {-75.292053, 3.067246}, + {-74.676132202148, 4.4391632080078}, + {-75.199356079102, 7.9946136474609}, + {-75.357284, 6.178436}, + {-75.651844, 6.155624}, + {-75.574951, 6.243668}, + {-75.563278198242, 6.3027191162109}, + {-75.585937, 6.293793}, + {-76.525861, 3.366676}, + {-75.708847, 4.588165}, + {-77.126083374023, 1.5923309326172}, + {-74.789566, 10.991135}, + {-74.798355, 10.982895}, + {-81.574007, 41.553652}, + {-82.99690246582, 41.515274047852}, + {-81.281661987305, 41.014022827148}, + {-81.652754, 41.383705}, + {-84.681930541992, 40.923385620117}, + {-84.628029, 40.867767}, + {-84.475936889648, 40.869827270508}, + {-82.858200073242, 41.523513793945}, + {-82.009201, 41.380056}, + {-82.718396, 41.447423}, + {-82.275467, 40.784683}, + {-82.563923, 40.630482}, + {-84.438858032227, 39.135360717773}, + {-84.239730834961, 39.353713989258}, + {-84.279556274414, 39.363327026367}, + {-84.631119, 39.048157}, + {-84.516803, 39.061993}, + {-84.071503, 39.434738}, + {-83.586044, 39.313614}, + {139.31419372559, 35.862808227539}, + {139.4652557373, 35.88752746582}, + {139.4116973877, 35.824356079102}, + {139.31419372559, 35.936965942383}, + {139.504776, 35.802383}, + {139.45976257324, 35.810623168945}, + {139.4474029541, 35.811996459961}, + {139.51332092285, 35.872421264648}, + {139.61769104004, 35.838088989258}, + {139.77973937988, 35.917739868164}, + {139.6849822998, 35.813369750977}, + {139.7371673584, 35.805130004883}, + {139.66163635254, 35.832595825195}, + {139.53254699707, 36.048202514648}, + {139.53392028809, 36.045455932617}, + {139.499588, 36.078415}, + {139.64515686035, 36.033096313477}, + {139.677172, 36.104422}, + {139.58610534668, 36.181411743164}, + {139.6314239502, 35.898513793945}, + {139.66575622559, 35.935592651367}, + {139.16175842285, 36.219863891602}, + {139.62730407715, 35.908126831055}, + {139.63005065918, 35.916366577148}, + {139.52568054199, 35.891647338867}, + {61.307144165039, 55.208358764648}, + {61.418380737305, 55.234451293945}, + {61.374435424805, 54.902114868164}, + {58.99040222168, 53.434066772461}, + {55.134201049805, 51.771011352539}, + {87.118148803711, 53.754043579102}, + {86.835250854492, 53.994369506836}, + {45.997696, 51.535492}, + {46.02653503418, 51.714706420898}, + {45.864486694336, 51.489486694336}, + {49.099960327148, 55.829086303711}, + {49.130172729492, 55.823593139648}, + {82.939224243164, 55.021591186523}, + {131.96434020996, 43.168716430664}, + {56.240616, 58.005753}, + {56.19987487793, 57.99201965332}, + {56.180648803711, 57.919235229492}, + {30.333938598633, 59.922866821289}, + {30.376510620117, 59.992904663086}, + {30.405349731445, 59.94758605957}, + {30.30647277832, 59.961318969727}, + {30.327072143555, 59.961318969727}, + {30.255661010742, 60.028610229492}, + {37.737350463867, 55.768661499023}, + {73.028182983398, 20.729141235352}, + {73.199844360352, 22.298812866211}, + {73.793106079102, 18.55110168457}, + {86.209030151367, 22.820663452148}, + {71.215438842773, 22.03239440918}, + {73.735427856445, 18.584060668945}, + {73.815078735352, 18.490676879883}, + {73.923568725586, 18.51676940918}, + {73.841171264648, 18.525009155273}, + {73.875503540039, 18.53874206543}, + {73.323440551758, 18.774948120117}, + {73.915787, 18.557968}, + {73.039169311523, 18.706283569336}, + {73.918075561523, 18.566207885742}, + {73.876877, 18.482241}, + {73.92219543457, 18.593673706055}, + {73.79036, 18.708572}, + {73.809585571289, 18.442611694336}, + {73.85627746582, 18.486557006836}, + {73.830185, 18.508424}, + {76.59049987793, 20.716781616211}, + {73.848037719727, 18.515396118164}, + {73.740715, 18.593262}, + {79.056930541992, 21.224899291992}, + {-2.1965789794922, 53.48762512207}, + {-2.4369049072266, 53.535690307617}, + {-2.3847198486328, 53.49723815918}, + {-1.2545013427734, 53.417587280273}, + {-0.43739318847656, 53.741683959961}, + {-1.1116790771484, 53.743057250977}, + {-4.6067047119141, 55.521469116211}, + {-0.568771, 51.238449}, + {1.1267852783203, 51.295852661133}, + {-0.48902, 51.905122}, + {-2.8585052490234, 53.258285522461}, + {-0.59257507324219, 51.935806274414}, + {-0.42503356933594, 51.90559387207}, + {-0.203678, 51.798318}, + {-0.155354, 51.504822}, + {-0.068436, 51.522446}, + {-1.7365264892578, 54.884262084961}, + {-2.0853424072266, 52.594985961914}, + {-2.0413970947266, 52.516708374023}, + {0.13252258300781, 52.298355102539}, + {83.047714233398, 25.310440063477}, + {80.938339, 26.909637}, + {75.854415893555, 30.913467407227}, + {75.587997436523, 30.94367980957}, + {78.006362915039, 27.228927612305}, + {75.942306518555, 30.902481079102}, + {77.728958129883, 28.949661254883}, + {76.028823852539, 30.802230834961}, + {79.445571899414, 28.381118774414}, + {78.489761352539, 17.441482543945}, + {77.608108520508, 14.675674438477}, + {83.68766784668, 18.19953918457}, + {78.515853881836, 17.393417358398}, + {81.523361, 16.816635}, + {78.266258, 17.733307}, + {78.569412231445, 17.407150268555}, + {80.659561157227, 16.71501159668}, + {78.095626831055, 18.676071166992}, + {78.451309204102, 17.493667602539}, + {80.614242553711, 16.52961730957}, + {78.411483764648, 17.559585571289}, + {80.468673706055, 16.296157836914}, + {78.487701, 17.388954}, + {78.467102, 17.366638}, + {24.921798706055, 60.186538696289}, + {24.924545, 60.173983}, + {23.767548, 61.488419}, + {24.916306, 60.188828}, + {24.869613647461, 60.22087097168}, + {24.810562133789, 60.174179077148}, + {24.134902954102, 65.844497680664}, + {22.292496, 60.456345}, + {22.108907, 60.552054}, + {29.518203735352, 64.119644165039}, + {26.471901, 60.764351}, + {24.811935424805, 60.226364135742}, + {25.048404, 60.176687}, + {24.950176, 60.193724}, + {25.037271, 60.124657}, + {23.808059692383, 61.324996948242}, + {22.935825, 62.781863}, + {23.040390014648, 60.856704711914}, + {24.167861938477, 65.856857299805}, + {132.54936218262, 43.229141235352}, + {133.382965, 45.451807}, + {135.0528717041, 48.484725952148}, + {42.018585, 45.001373}, + {135.09269714355, 48.501205444336}, + {136.955927, 50.553211}, + {135.32615661621, 48.409194946289}, + {48.045272827148, 46.367111206055}, + {36.67854309082, 50.644912719727}, + {37.82112121582, 51.288986206055}, + {39.405899047852, 55.933456420898}, + {40.172195, 56.072983}, + {39.929122924805, 56.006240844727}, + {40.45783996582, 56.175155639648}, + {42.103042602539, 56.23420715332}, + {44.526901245117, 48.823928833008}, + {44.594192504883, 48.784103393555}, + {44.778213500977, 48.792343139648}, + {44.106931, 50.333863}, + {42.67707824707, 49.890975952148}, + {44.602432250977, 48.884353637695}, + {75.54817199707, 30.314712524414}, + {76.112595, 31.134567}, + {74.029312133789, 30.41633605957}, + {75.189743041992, 31.54655456543}, + {76.764907836914, 30.730819702148}, + {75.347671508789, 31.49299621582}, + {75.653915405273, 31.834945678711}, + {75.604476928711, 32.35954284668}, + {79.31510925293, 26.236038208008}, + {80.676040649414, 25.399703979492}, + {79.102249145508, 25.858383178711}, + {83.104019165039, 25.270614624023}, + {81.52473449707, 27.399215698242}, + {83.761825561523, 26.494216918945}, + {82.789535522461, 25.727920532227}, + {83.010635375977, 25.313186645508}, + {81.839218139648, 25.387344360352}, + {80.949325561523, 26.892471313477}, + {84.144973754883, 25.760879516602}, + {82.995529174805, 25.78971862793}, + {83.025741577148, 25.332412719727}, + {80.318984985352, 26.425552368164}, + {82.07405090332, 25.228042602539}, + {73.681869506836, 18.579940795898}, + {35.029220581055, 36.984786987305}, + {29.147415161133, 41.037368774414}, + {34.853439331055, 37.170181274414}, + {29.118576049805, 41.005783081055}, + {27.127762, 38.485794}, + {27.430801391602, 37.041091918945}, + {27.506593, 37.104642}, + {27.971878051758, 41.291427612305}, + {27.842999, 41.206488}, + {32.685012817383, 41.24885559082}, + {32.822463, 39.849077}, + {27.791976928711, 41.185684204102}, + {31.11946105957, 41.088180541992}, + {27.282485961914, 37.356948852539}, + {30.746642, 36.856941}, + {28.032302856445, 39.778060913086}, + {30.845901, 36.861191}, + {26.686477661133, 38.301773071289}, + {29.104843139648, 41.040115356445}, + {26.63703918457, 38.374557495117}, + {29.128189086914, 41.022262573242}, + {37.570267, 41.025009}, + {32.849808, 39.890671}, + {12.224604, 44.412496}, + {12.356645, 44.133683}, + {10.445939, 44.402619}, + {10.542069, 44.693985}, + {11.005554, 45.398941}, + {12.362595, 43.295975}, + {12.438585, 43.181763}, + {10.951309204102, 43.761978149414}, + {10.995254516602, 44.097061157227}, + {13.490524291992, 42.248611450195}, + {11.169662475586, 42.72102355957}, + {12.467422485352, 41.902542114258}, + {12.529220581055, 41.946487426758}, + {12.496376, 41.898308}, + {9.570007, 40.290756}, + {12.416954, 41.807957}, + {-82.137222290039, 29.205093383789}, + {-82.054824829102, 29.074630737305}, + {-95.973129272461, 36.211624145508}, + {-95.901718139648, 36.141586303711}, + {-97.626571655273, 35.397262573242}, + {-96.015152, 36.108627}, + {-97.270286, 35.538255}, + {-97.367294, 35.458237}, + {-97.195358276367, 37.678298950195}, + {-81.113664, 28.712998}, + {-81.276169, 28.80043}, + {-81.291275, 28.972321}, + {-81.290726, 28.753281}, + {-81.403198, 28.341293}, + {-81.366806030273, 28.745040893555}, + {-81.302261, 28.412018}, + {-75.453414916992, 39.705276489258}, + {-74.890365600586, 39.510269165039}, + {-75.170125, 39.95757}, + {-75.581130981445, 39.968948364258}, + {-75.477104, 39.987488}, + {31.389999389648, 31.034317016602}, + {31.240310668945, 30.126571655273}, + {32.264785766602, 30.603103637695}, + {31.333351, 30.011215}, + {31.244431, 29.993362}, + {31.280136108398, 30.015335083008}, + {31.210098266602, 29.98649597168}, + {32.288934, 29.643214}, + {32.65728, 28.918901}, + {31.706314, 30.539932}, + {31.477890014648, 30.590744018555}, + {29.698104858398, 31.039810180664}, + {31.331463, 30.069408}, + {31.354293823242, 30.101852416992}, + {31.318588256836, 30.075759887695}, + {33.816604614258, 27.117691040039}, + {31.35704, 30.120392}, + {31.296272, 30.127945}, + {31.460037, 30.119019}, + {31.093368530273, 30.062026977539}, + {31.236649, 30.051498}, + {31.027450561523, 30.031814575195}, + {31.19499206543, 30.051040649414}, + {-43.290939331055, -22.815170288086}, + {-43.229141235352, -22.883834838867}, + {-43.176956176758, -22.82341003418}, + {-42.235041, -22.823852}, + {-42.18365, -22.478891}, + {-40.299225, -20.269775}, + {-47.962875, -15.898819}, + {-46.536977, -23.460958}, + {-34.821854, -7.134247}, + {-46.523666381836, -23.562240600586}, + {-46.515426635742, -23.470230102539}, + {-46.579033, -23.537823}, + {-46.496200561523, -23.534774780273}, + {-46.493453979492, -23.47297668457}, + {-46.389083862305, -23.707809448242}, + {-46.394577026367, -23.441390991211}, + {-44.086074829102, -22.973098754883}, + {-43.043465, -22.818906}, + {-43.124771118164, -22.897567749023}, + {72.834548950195, 18.953475952148}, + {72.873276, 19.072128}, + {72.846507, 19.080699}, + {72.888107299805, 19.111404418945}, + {72.856522, 19.27803}, + {72.938919067383, 19.114151000977}, + {73.095016, 19.191055}, + {72.82356262207, 19.196548461914}, + {73.102340698242, 19.215774536133}, + {73.11882, 19.2453}, + {72.968433, 19.262373}, + {72.959518432617, 19.171829223633}, + {72.834548950195, 19.063339233398}, + {72.819442749023, 19.133377075195}, + {72.954483, 19.221268}, + {73.02131652832, 19.112777709961}, + {72.831802368164, 19.072952270508}, + {77.089004516602, 28.481369018555}, + {77.314499, 28.647812}, + {77.12986, 28.554153}, + {77.155609, 28.734741}, + {77.226791, 28.562393}, + {77.330703735352, 28.366012573242}, + {77.241439819336, 28.63655090332}, + {77.477097, 28.451706}, + {21.158193, 52.252054}, + {21.051864624023, 52.236557006836}, + {22.253494262695, 52.141799926758}, + {21.638469, 51.55846}, + {21.382718, 51.854256}, + {23.066482543945, 51.709213256836}, + {23.479843, 51.341858}, + {23.825912475586, 50.727310180664}, + {22.554244995117, 51.242294311523}, + {21.805801391602, 51.577377319336}, + {22.629501, 51.414505}, + {22.386703491211, 51.32194519043}, + {21.914291381836, 51.435928344727}, + {21.65885925293, 51.061019897461}, + {20.544845, 51.523544}, + {21.185073852539, 51.880874633789}, + {19.339891, 51.248131}, + {19.48356628418, 51.489486694336}, + {19.628452, 51.392083}, + {18.618505, 51.400351}, + {18.394704, 51.458226}, + {-55.290756225586, -27.596969604492}, + {-57.545013, -38.012009}, + {-57.538187, -38.058262}, + {-68.709388, -32.913962}, + {-68.545761108398, -31.503982543945}, + {-58.232002, -34.795418}, + {-58.408126831055, -34.743576049805}, + {-58.420486, -34.61689}, + {-58.443832397461, -34.633712768555}, + {-58.56330871582, -34.626846313477}, + {-58.432847, -34.773789}, + {-68.518968, -54.845136}, + {-68.155715, -38.794504}, + {-36.181412, -9.65149}, + {-60.670354, 2.830444}, + {-47.954635620117, -19.767837524414}, + {-39.810152, -7.031608}, + {-93.490219116211, 44.903182983398}, + {-93.357009, 45.36644}, + {-93.728672, 46.162746}, + {-86.155471801758, 32.365036010742}, + {-86.013473, 31.864059}, + {-80.50163269043, 36.373672485352}, + {-77.784478, 36.097052}, + {-81.406106, 26.154048}, + {-81.68815612793, 26.715316772461}, + {-86.850082, 36.48793}, + {-86.863539, 35.805131}, + {-86.460342407227, 35.483779907227}, + {-73.376998901367, 41.244735717773}, + {-72.712326049805, 41.766586303711}, + {-72.732925415039, 41.805038452148}, + {-72.081985473633, 41.343612670898}, + {-74.031441, 40.604645}, + {-73.949661254883, 40.591049194336}, + {-73.415451049805, 40.784683227539}, + {-73.740921020508, 40.957717895508}, + {-73.679122924805, 40.964584350586}, + {-73.391647, 40.851975}, + {108.2283782959, -7.3217010498047}, + {108.6156463623, -7.4878692626953}, + {108.26683, -7.355347}, + {108.395576, -7.330627}, + {107.559169, -6.873431}, + {107.541641, -6.897737}, + {110.88432312012, -6.8053436279297}, + {110.42839050293, -7.6251983642578}, + {110.281659, -7.581597}, + {110.47370910645, -6.9893646240234}, + {110.43113708496, -6.9673919677734}, + {110.37895202637, -6.9783782958984}, + {110.42839050293, -6.9989776611328}, + {111.03126525879, -7.4082183837891}, + {110.88569641113, -7.6114654541016}, + {110.16609191895, -7.8668975830078}, + {110.39131164551, -7.8696441650391}, + {110.47645568848, -7.7625274658203}, + {110.36933898926, -7.7954864501953}, + {110.39817810059, -7.7515411376953}, + {110.90873, -7.073979}, + {110.999868, -7.102056}, + {110.33912658691, -7.0003509521484}, + {-114.041519, 51.044541}, + {-114.095638, 50.999578}, + {-114.070836, 51.052271}, + {-114.02641296387, 51.283493041992}, + {-114.0524, 51.125719}, + {-111.265385, 53.326896}, + {-119.247346, 55.185613}, + {-118.787414, 55.162397}, + {-113.47297668457, 53.438186645508}, + {-113.476485, 53.507804}, + {-113.471587, 53.486426}, + {-113.545054, 53.574338}, + {-113.534593, 53.64458}, + {-97.19014, 49.882919}, + {-75.674973, 45.418625}, + {-75.677261352539, 45.42366027832}, + {-73.848038, 45.485764}, + {-73.736801147461, 45.448379516602}, + {-73.707962036133, 45.473098754883}, + {-70.902328, 47.074356}, + {-68.258744, 48.57556}, + {-68.488083, 48.494339}, + {-1.83677, 52.54849}, + {-1.804734, 52.648544}, + {-1.915559, 52.475372}, + {-2.1334075927734, 53.390121459961}, + {-4.2537689208984, 55.864791870117}, + {-4.3691253662109, 55.742568969727}, + {-2.105255, 53.380508}, + {-4.271164, 55.802078}, + {-2.6937103271484, 53.590621948242}, + {-2.6154327392578, 53.552169799805}, + {-2.309226, 53.557139}, + {-2.292021, 51.372529}, + {-4.0203094482422, 55.786514282227}, + {-4.328843, 55.937577}, + {-4.332824, 55.91871}, + {-2.8310394287109, 53.423080444336}, + {-3.0301666259766, 53.203353881836}, + {-2.8351593017578, 53.427200317383}, + {-2.940432, 53.480888}, + {-1.701198, 50.739793}, + {-2.7362823486328, 53.262405395508}, + {-2.6538848876953, 53.214340209961}, + {-35.802383422852, -9.5711517333984}, + {-38.518753051758, -3.7387847900391}, + {-37.121842, -10.838699}, + {-35.086898803711, -8.3887481689453}, + {-36.055068969727, -7.9932403564453}, + {-37.0601, -10.901916}, + {-36.931312, -10.611584}, + {-38.509140014648, -3.8005828857422}, + {-38.449971, -12.973029}, + {-43.181076, -22.909241}, + {-48.488159, -1.392174}, + {-52.24205, -3.218994}, + {-38.77748, -13.107651}, + {-39.997536, -18.265065}, + {-35.688400268555, -9.0369415283203}, + {-35.747451782227, -6.5375518798828}, + {-35.836715698242, -9.3555450439453}, + {-40.479162, -20.526727}, + {-100.49949645996, 28.692855834961}, + {-98.835067749023, 29.353408813477}, + {-98.681259155273, 28.88786315918}, + {-98.310470581055, 30.49186706543}, + {-98.753616, 29.781943}, + {-98.165817, 29.718247}, + {-117.24403381348, 33.94157409668}, + {-117.301853, 34.144888}, + {-117.708715, 34.032182}, + {-116.261453, 34.270974}, + {-116.94602966309, 33.926467895508}, + {-117.77137756348, 34.067916870117}, + {-117.644029, 34.027278}, + {-117.85514831543, 33.999252319336}, + {-118.3179473877, 33.834457397461}, + {-118.245392, 33.700491}, + {-116.056137, 33.695908}, + {-118.334104, 34.105088}, + {-118.51844787598, 34.17366027832}, + {7.578964, 51.143112}, + {7.6650238037109, 51.380996704102}, + {11.422568, 49.271567}, + {8.905449, 50.626373}, + {10.502243041992, 53.568649291992}, + {10.116348266602, 53.358535766602}, + {9.9007415771484, 51.813583374023}, + {9.0094757080078, 51.728439331055}, + {9.8375701904297, 51.830062866211}, + {8.051376, 50.765305}, + {8.0248260498047, 48.144149780273}, + {9.1852569580078, 47.690963745117}, + {7.848015, 50.452652}, + {12.185211, 45.485458}, + {10.571367, 46.669465}, + {10.943986, 45.379257}, + {11.187515258789, 45.420913696289}, + {11.436629, 45.262711}, + {10.670059, 45.441513}, + {10.685577, 45.603561}, + {11.865097, 45.816422}, + {11.695634, 45.633316}, + {12.00016, 45.559273}, + {11.953811645508, 45.46760559082}, + {11.767044067383, 45.387954711914}, + {11.974411010742, 45.338516235352}, + {12.22297668457, 44.922409057617}, + {11.63932800293, 45.334396362305}, + {12.299880981445, 45.195693969727}, + {12.360305786133, 45.425033569336}, + {11.351537, 44.493774}, + {11.333084, 44.500122}, + {11.620101928711, 44.838638305664}, + {10.893965, 44.658786}, + {11.558418, 44.82296}, + {11.379776, 44.672127}, + {-46.890335083008, -22.710800170898}, + {-46.547603, -22.560174}, + {-46.571731567383, -23.466110229492}, + {-46.411852, -23.469683}, + {-46.559675, -23.47113}, + {-46.474227905273, -23.545761108398}, + {-45.017166137695, -23.398818969727}, + {-47.850423, -24.511576}, + {-47.814711, -21.183084}, + {-47.756655, -21.307831}, + {-49.568551, -22.942978}, + {-51.37825012207, -20.898056030273}, + {-47.544021606445, -22.372970581055}, + {-46.658248901367, -23.665237426758}, + {-46.821749, -23.83559}, + {-46.693954, -23.773727}, + {-46.645889282227, -23.695449829102}, + {13.689651489258, 51.007461547852}, + {13.747329711914, 51.040420532227}, + {13.443832397461, 51.408462524414}, + {13.813248, 51.013644}, + {13.914679, 50.974779}, + {11.31648, 50.962268}, + {10.991451, 50.939959}, + {10.539322, 51.507683}, + {10.079613, 50.945663}, + {12.23258972168, 50.337295532227}, + {12.04335, 51.140671}, + {11.604784, 50.881647}, + {12.982406616211, 50.879745483398}, + {0.665212, 51.562672}, + {-0.096639, 51.588256}, + {0.12290954589844, 51.676254272461}, + {-0.15724182128906, 51.551284790039}, + {-5.9676361083984, 54.767532348633}, + {-5.803528, 54.645309}, + {-5.788422, 54.63913}, + {-0.45524597167969, 51.624069213867}, + {-6.9220733642578, 55.06965637207}, + {-0.581421, 51.566278}, + {-6.551286, 55.07515}, + {-0.72578430175781, 52.086868286133}, + {-0.432052, 52.083878}, + {-0.21492004394531, 52.029190063477}, + {-0.909119, 52.193985}, + {-1.543992, 53.796724}, + {-2.1169281005859, 53.482131958008}, + {-2.9766082763672, 53.45329284668}, + {-2.9312896728516, 53.451919555664}, + {-2.6525115966797, 53.516464233398}, + {-118.2479095459, 34.055557250977}, + {-120.439789, 34.893481}, + {-120.625409, 35.130121}, + {-118.2479095459, 34.065170288086}, + {-117.845547, 33.745517}, + {-118.37396, 34.02045}, + {-118.372879, 34.025574}, + {-118.1339263916, 34.15168762207}, + {-117.59422302246, 33.964920043945}, + {-118.255391, 33.735177}, + {-117.839127, 34.045715}, + {-118.931419, 35.34387}, + {-117.894282, 34.089181}, + {-119.063936, 34.260125}, + {-118.37013244629, 33.947067260742}, + {-118.371449, 33.968377}, + {-118.533773, 34.166411}, + {-118.33992004395, 34.102249145508}, + {-118.384679, 33.88984}, + {-117.51457214355, 34.120101928711}, + {-117.391213, 34.027955}, + {7.374573, 9.065094}, + {12.557029, 9.482574}, + {11.098251, 10.289383}, + {7.4439239501953, 10.456924438477}, + {3.8651275634766, 7.3519134521484}, + {13.10188293457, 11.867294311523}, + {3.2540130615234, 6.7462921142578}, + {4.4048309326172, 7.1308135986328}, + {7.5853729248047, 9.0177154541016}, + {8.5041046142578, 12.00325012207}, + {3.58223, 6.474289}, + {7.311573, 9.141655}, + {3.42865, 6.771011}, + {3.367233, 6.632614}, + {7.3972320556641, 10.514602661133}, + {3.370743, 6.524253}, + {5.596847, 6.368637}, + {7.2077178955078, 8.8776397705078}, + {7.432085, 9.116072}, + {7.24205, 9.026413}, + {6.9701385498047, 4.8168182373047}, + {7.8256988525391, 11.772537231445}, + {3.8788604736328, 7.4246978759766}, + {3.880234, 7.374344}, + {-1.6953277587891, 48.10432434082}, + {-1.6692352294922, 48.107070922852}, + {-1.693062, 48.094711}, + {-1.578598, 48.136002}, + {-0.13252258300781, 47.837905883789}, + {2.8652, 50.512648}, + {2.837906, 50.502434}, + {-0.481636, 49.23814}, + {-0.302615, 49.328124}, + {-2.3091888427734, 47.398452758789}, + {-2.214429, 47.230225}, + {-2.345663, 47.293643}, + {-2.501344, 47.284153}, + {-1.7681121826172, 47.266616821289}, + {-0.92079162597656, 47.697830200195}, + {-0.69722, 47.450913}, + {-0.504439, 47.436611}, + {0.90156555175781, 48.573989868164}, + {1.1981964111328, 48.91731262207}, + {-0.091419, 47.69802}, + {43.926773071289, 56.305618286133}, + {44.022903442383, 56.379776000977}, + {43.92951965332, 56.286392211914}, + {43.827896118164, 56.220474243164}, + {43.828169, 56.221299}, + {43.181076049805, 55.962295532227}, + {43.830642700195, 56.36604309082}, + {43.880081176758, 56.339950561523}, + {44.035263061523, 55.599746704102}, + {44.013977, 55.778275}, + {43.941879272461, 55.550308227539}, + {41.474849, 52.701481}, + {40.417328, 52.878571}, + {40.08430480957, 52.855911254883}, + {37.608032, 54.177017}, + {37.965316772461, 54.02458190918}, + {37.584915161133, 54.15641784668}, + {45.986709594727, 51.578750610352}, + {45.971146, 51.582413}, + {45.898228, 51.671175}, + {46.00456237793, 51.53205871582}, + {21.172018, 50.410072}, + {21.947250366211, 53.169021606445}, + {21.873092651367, 51.500473022461}, + {21.95686340332, 50.867385864258}, + {18.923092, 50.210781}, + {19.41764831543, 50.190353393555}, + {18.969955444336, 50.338668823242}, + {18.301162719727, 50.953903198242}, + {20.915908813477, 49.982986450195}, + {20.941315, 49.435043}, + {22.066504, 50.565869}, + {18.557866, 50.297566}, + {11.512222, 60.171526}, + {10.353709, 63.353342}, + {10.606613, 59.302139}, + {10.401992797852, 63.41926574707}, + {10.615926, 62.154995}, + {9.7689056396484, 63.196792602539}, + {5.334684, 60.378013}, + {5.37139, 60.30665}, + {10.472114, 59.860682}, + {10.53833, 59.909134}, + {10.815432, 59.916416}, + {10.815501, 59.92763}, + {6.175552, 62.470322}, + {8.01634, 58.159744}, + {5.730885, 58.875462}, + {5.744786, 58.940797}, + {8.25684, 61.888046}, + {10.715561, 60.907059}, + {4.7179412841797, 44.25910949707}, + {6.102987, 44.034559}, + {3.4229278564453, 45.705184936523}, + {9.3926239013672, 41.931381225586}, + {-1.148758, 45.676895}, + {-4.2894744873047, 47.839279174805}, + {-3.719735, 48.322014}, + {5.1038360595703, 45.02815246582}, + {-99.127578735352, 19.68132019043}, + {-98.533942, 19.64574}, + {-98.169021606445, 18.960342407227}, + {-98.25553894043, 19.118270874023}, + {-98.262405395508, 19.077072143555}, + {-99.576644897461, 19.259719848633}, + {-101.013107, 22.201309}, + {-99.529953, 19.281967}, + {-100.28663635254, 25.640029907227}, + {-100.253674, 25.769958}, + {-100.28526306152, 25.754013061523}, + {-92.648391723633, 16.73698425293}, + {-89.682907, 20.998306}, + {-106.39091491699, 31.627578735352}, + {-99.19075012207, 19.45198059082}, + {-99.203109741211, 19.454727172852}, + {-96.133804321289, 19.200668334961}, + {-99.138565063477, 19.403915405273}, + {-99.172897, 19.403}, + {-99.197617, 19.429092}, + {-99.130325317383, 19.443740844727}, + {-99.17839050293, 19.434127807617}, + {-99.131012, 19.412155}, + {-99.113845825195, 19.30778503418}, + {-0.15998840332031, 51.10221862793}, + {-2.8955841064453, 53.200607299805}, + {-1.6445159912109, 52.582626342773}, + {-2.1869659423828, 52.161026000977}, + {-2.4808502197266, 51.592483520508}, + {-3.0562591552734, 50.909957885742}, + {-2.3188018798828, 53.410720825195}, + {-4.3128204345703, 50.392227172852}, + {-1.6664886474609, 53.791122436523}, + {-3.6811065673828, 50.688858032227}, + {-1.5785980224609, 52.758407592773}, + {-4.7110748291016, 56.202621459961}, + {-0.92079162597656, 52.685623168945}, + {-2.3805999755859, 52.923202514648}, + {-4.7110748291016, 56.202621459961}, + {-0.041885375976562, 51.46614074707}, + {1.0608673095703, 51.792984008789}, + {-0.15586853027344, 51.456527709961}, + {-1.2572479248047, 51.721572875977}, + {-0.92353820800781, 52.242050170898}, + {-1.9246673583984, 52.600479125977}, + {-2.8296661376953, 51.438674926758}, + {-1.7269134521484, 52.52082824707}, + {-3.5286712646484, 50.460891723633}, + {-86.51207, 39.167404}, + {-85.996542, 40.039591}, + {-86.137738, 39.966202}, + {-86.59478, 39.202652}, + {-86.497421, 40.059828}, + {-76.815994, 41.038467}, + {-76.5802, 41.30928}, + {-76.032944, 41.637497}, + {-76.564407348633, 40.025253295898}, + {-121.225204, 38.6449}, + {-121.72370910645, 39.647598266602}, + {-84.28624, 39.794449}, + {-82.98454284668, 39.967575073242}, + {-82.969436645508, 39.378433227539}, + {-82.524490356445, 40.038986206055}, + {-82.738599, 39.818505}, + {-82.942734, 39.836655}, + {-83.189163208008, 39.812393188477}, + {-83.08479309082, 39.97444152832}, + {-82.994843, 39.959793}, + {-91.014175415039, 30.329818725586}, + {-90.927505, 30.288467}, + {-90.992202758789, 30.329818725586}, + {-91.22428894043, 30.60173034668}, + {-93.271341, 31.137629}, + {-93.15476, 30.24286}, + {-92.033157348633, 30.214462280273}, + {-92.010189, 30.244597}, + {-92.634658813477, 31.291122436523}, + {-92.000198364258, 32.726211547852}, + {100.599873, 13.915552}, + {100.465177, 13.782613}, + {100.255989, 13.793943}, + {100.5736541748, 13.633346557617}, + {100.3539276123, 13.74870300293}, + {101.209243, 14.179194}, + {101.18614196777, 14.33235168457}, + {100.456009, 14.70314}, + {100.53382873535, 13.862686157227}, + {100.08888244629, 14.785537719727}, + {100.514647, 13.730901}, + {100.72196960449, 13.730850219727}, + {100.85517883301, 13.80500793457}, + {100.724705, 13.819085}, + {100.499471, 13.678296}, + {100.59288024902, 13.714370727539}, + {100.529175, 13.793408}, + {100.645513, 13.668537}, + {100.649559, 13.686154}, + {101.15180969238, 13.29963684082}, + {101.42329, 12.624192}, + {101.43882751465, 12.626724243164}, + {101.58783, 13.900452}, + {101.370173, 13.729209}, + {100.970832, 12.706852}, + {101.20674133301, 12.960433959961}, + {100.885992, 12.935742}, + {100.926865, 12.76841}, + {100.638953, 13.668285}, + {100.617912, 13.649776}, + {101.413803, 12.636885}, + {100.59837341309, 13.692398071289}, + {100.54756164551, 13.741836547852}, + {100.62171936035, 13.740463256836}, + {100.500739, 13.680035}, + {100.61622619629, 13.741836547852}, + {100.49537658691, 13.708877563477}, + {98.944931030273, 18.943862915039}, + {98.972396850586, 18.794174194336}, + {100.25917053223, 16.828994750977}, + {98.967247, 18.790054}, + {98.991622924805, 18.785934448242}, + {98.997116088867, 18.781814575195}, + {100.23582458496, 16.842727661133}, + {99.017715454102, 18.809280395508}, + {100.34706115723, 17.304153442383}, + {-81.936537, 42.453354}, + {-80.398178, 44.406967}, + {-81.275621, 42.976074}, + {-81.262623, 42.903763}, + {-81.126148, 42.958185}, + {-79.069138, 43.116531}, + {-79.142048, 43.141577}, + {-77.392078, 44.166164}, + {-79.216232299805, 43.168716430664}, + {-79.880824, 44.172188}, + {-79.567642, 44.106674}, + {-80.387227, 44.177135}, + {-72.522022, 46.284715}, + {-71.852645874023, 46.380844116211}, + {-74.821149, 45.125107}, + {-72.304458618164, 45.48957824707}, + {-76.41426, 45.401255}, + {-74.666519165039, 45.637893676758}, + {-66.042839, 45.27358}, + {-65.701675415039, 47.653884887695}, + {-53.283594, 47.561286}, + {16.351089477539, 47.435531616211}, + {16.449966430664, 47.149887084961}, + {15.36506652832, 46.976852416992}, + {15.431442, 47.074356}, + {16.320877075195, 47.070236206055}, + {15.424118041992, 47.07160949707}, + {15.410385131836, 47.066116333008}, + {13.91487121582, 46.612930297852}, + {14.355697631836, 46.768112182617}, + {14.742965698242, 47.207565307617}, + {15.266189575195, 46.838150024414}, + {10.468597, 47.299576}, + {9.69017, 47.368698}, + {16.252212524414, 47.976608276367}, + {16.359329223633, 48.19221496582}, + {16.005020141602, 48.264999389648}, + {16.222961, 48.214462}, + {16.337356567383, 48.208694458008}, + {17.68180847168, 60.109634399414}, + {17.434616088867, 60.535354614258}, + {16.513138, 59.386597}, + {21.805801391602, 65.71403503418}, + {16.392288, 59.404548}, + {13.191146850586, 61.15608215332}, + {16.417694, 60.566254}, + {18.042984008789, 59.377670288086}, + {13.593521118164, 60.017623901367}, + {11.839828491211, 59.447708129883}, + {11.96926, 57.698907}, + {15.591208, 58.422415}, + {11.984903, 57.727383}, + {12.978286743164, 55.609359741211}, + {18.316268920898, 57.645950317383}, + {17.32235, 58.912467}, + {14.578171, 58.979691}, + {18.031998, 59.318771}, + {16.390914916992, 59.587783813477}, + {14.133225, 57.792893}, + {14.314498901367, 57.921981811523}, + {11.83473, 57.717637}, + {14.076571, 59.30648}, + {111.138779, -7.66334}, + {110.402353, -7.824115}, + {110.402259, -7.821958}, + {110.7154083252, -7.5771331787109}, + {110.35148620605, -7.9218292236328}, + {110.374388, -7.777297}, + {110.15922546387, -7.8572845458984}, + {112.711483, -7.448936}, + {112.73963928223, -7.3752593994141}, + {110.408203, -7.761424}, + {112.67921447754, -7.4384307861328}, + {112.66410827637, -7.3656463623047}, + {112.69844055176, -7.2818756103516}, + {112.73414611816, -7.2708892822266}, + {112.7808380127, -7.2489166259766}, + {112.759781, -7.258987}, + {112.69432067871, -7.5579071044922}, + {112.64213562012, -7.1582794189453}, + {112.900025, -7.659414}, + {112.697067, -7.439117}, + {112.647963, -7.20997}, + {111.863477, -7.568238}, + {112.239797, -7.553922}, + {112.50755310059, -7.4150848388672}, + {127.06031799316, 37.572555541992}, + {127.059631, 37.636414}, + {126.83921813965, 37.488784790039}, + {126.84471130371, 37.462692260742}, + {126.88591003418, 37.429733276367}, + {126.91612243652, 37.498397827148}, + {126.88865661621, 37.465438842773}, + {126.84883117676, 37.24983215332}, + {126.95045471191, 37.22785949707}, + {126.90101623535, 37.451705932617}, + {126.86943054199, 37.006759643555}, + {126.95869445801, 37.47917175293}, + {127.01225280762, 37.495651245117}, + {127.45994567871, 35.456314086914}, + {127.00401306152, 37.488784790039}, + {127.62062072754, 35.465927124023}, + {126.806568, 33.517301}, + {127.339457, 35.336889}, + {126.857186, 35.565119}, + {126.67991638184, 33.540573120117}, + {126.519254, 33.48255}, + {127.05894470215, 37.542343139648}, + {127.1070098877, 37.528610229492}, + {127.0548248291, 37.525863647461}, + {127.127151, 37.550583}, + {-89.877090454102, 34.963302612305}, + {-90.019128, 35.163535}, + {-89.975841, 34.975772}, + {-90.118789672852, 34.875411987305}, + {-86.9635, 35.227611}, + {-86.928247, 35.097651}, + {-87.411179, 36.582835}, + {-86.914901733398, 36.59065246582}, + {-86.395797729492, 35.816116333008}, + {-87.501445, 36.828217}, + {-86.703747, 36.255813}, + {-86.647109985352, 36.149826049805}, + {-82.803571, 36.480097}, + {-84.319469, 35.867558}, + {-84.084302, 36.027363}, + {-85.394668579102, 34.906997680664}, + {-83.796945, 35.942658}, + {-83.995599, 35.799209}, + {-83.225946, 35.800625}, + {-80.861104, 35.537162}, + {-82.446707, 35.616281}, + {-80.364555, 36.273103}, + {12.00531, 58.571548}, + {11.238327026367, 59.015121459961}, + {12.696419, 57.986526}, + {11.164169311523, 58.802261352539}, + {12.472915649414, 57.853317260742}, + {12.857437133789, 56.676406860352}, + {11.80549621582, 58.351821899414}, + {12.97966003418, 56.772537231445}, + {14.085159301758, 55.635452270508}, + {13.583447, 55.472949}, + {13.423061, 55.487309}, + {15.240097045898, 56.411361694336}, + {13.539345, 55.934938}, + {14.170761, 55.556717}, + {12.883987, 56.260757}, + {14.636611, 56.0746}, + {13.027274, 55.886745}, + {14.657516, 56.043931}, + {12.73796081543, 56.028213500977}, + {14.325485229492, 55.929336547852}, + {13.359897, 56.032359}, + {-46.812058, -23.591766}, + {-46.715927124023, -23.547134399414}, + {-46.743392944336, -23.611679077148}, + {-46.750259399414, -23.490829467773}, + {-46.497573852539, -23.625411987305}, + {-46.530004, -23.579147}, + {-46.530532836914, -23.666610717773}, + {-46.54071, -23.693753}, + {-46.593363, -23.710742}, + {-46.713180541992, -23.68034362793}, + {-46.942520141602, -23.518295288086}, + {-46.879794, -23.187509}, + {-46.581344604492, -23.315048217773}, + {-46.762619018555, -23.420791625977}, + {-46.669235229492, -23.515548706055}, + {-46.646576, -23.525848}, + {-46.604690551758, -23.558120727539}, + {-46.55387878418, -23.508682250977}, + {-46.578598022461, -23.563613891602}, + {-46.84227, -23.373923}, + {-46.629868, -23.611679}, + {-46.566555, -23.574041}, + {-74.980133, 39.385644}, + {-75.533127, 40.309226}, + {-75.530992, 39.744637}, + {-75.191309, 39.96341}, + {-96.650161743164, 32.863540649414}, + {-122.05055236816, 37.372055053711}, + {-71.567001342773, 42.307662963867}, + {-73.348144, 42.307346}, + {-71.188062, 42.738108}, + {-71.042542, 42.390541}, + {-71.183853149414, 42.36946105957}, + {-71.219809, 42.257086}, + {-71.76887512207, 41.439743041992}, + {-71.496665, 41.773692}, + {-71.292495, 42.040426}, + {-70.661693, 41.930707}, + {-71.035969, 42.34022}, + {-71.473093, 41.39924}, + {-72.60909, 42.219861}, + {-69.977734, 41.839635}, + {-72.438011, 42.058754}, + {-71.452335, 41.826895}, + {72.971878051758, 19.19792175293}, + {72.871627807617, 19.258346557617}, + {72.838668823242, 19.08805847168}, + {72.841415405273, 19.079818725586}, + {74.64729309082, 19.370956420898}, + {73.04328918457, 19.284439086914}, + {73.905715942383, 18.542861938477}, + {75.141677856445, 18.04573059082}, + {75.053787231445, 17.87956237793}, + {73.642044067383, 19.961471557617}, + {74.27375793457, 16.958084106445}, + {79.087142944336, 21.147994995117}, + {76.376266479492, 18.747482299805}, + {73.940048217773, 15.32112121582}, + {75.844802856445, 17.414016723633}, + {73.734055, 18.679733}, + {73.860397, 18.437805}, + {74.016952514648, 18.540115356445}, + {72.875747680664, 18.659591674805}, + {77.054672241211, 21.08757019043}, + {73.740921020508, 18.633499145508}, + {73.783493041992, 18.456344604492}, + {73.654403686523, 18.515396118164}, + {73.77799987793, 18.588180541992}, + {-76.068649291992, 38.79753112793}, + {-76.487503, 38.946533}, + {-76.991272, 38.706055}, + {-88.445429, 41.522144}, + {-87.570419, 41.498795}, + {-87.694931, 41.174698}, + {-87.848739624023, 42.260971069336}, + {-87.745742797852, 41.97395324707}, + {-87.971512, 42.070633}, + {-88.317719, 42.023392}, + {-87.85286, 42.429199}, + {-81.739311, 41.186714}, + {-83.731064, 43.328018}, + {-81.594498, 41.266022}, + {-84.188919067383, 42.998428344727}, + {-84.010091, 43.564138}, + {-83.776932, 42.975892}, + {-83.154830932617, 42.716903686523}, + {-83.689464, 42.256872}, + {-85.365045, 43.075136}, + {-82.269058, 40.780106}, + {-85.505979, 42.866444}, + {-82.961196899414, 39.916763305664}, + {-84.681015, 42.512283}, + {-83.034668, 40.037613}, + {8.913651, 45.998306}, + {7.5922393798828, 47.553634643555}, + {7.800701, 47.464774}, + {8.55884, 47.379227}, + {6.098442, 46.218452}, + {9.041885, 47.455032}, + {6.950798, 46.253128}, + {6.882559, 46.430428}, + {8.381277, 47.088089}, + {6.997606, 46.998139}, + {6.814957, 46.948929}, + {8.173976, 46.734038}, + {8.247616, 46.894822}, + {8.3846282958984, 46.816177368164}, + {8.79689, 46.155624}, + {7.3162078857422, 46.660995483398}, + {116.883545, -1.241455}, + {117.422345, 2.045767}, + {107.660312, -6.916966}, + {107.591043, -6.960288}, + {107.782775, -6.947188}, + {107.605689, -6.904221}, + {106.55561, -6.984393}, + {107.619829, -6.923885}, + {107.676907, -6.54103}, + {108.084053, -6.331455}, + {106.75621032715, -6.3686370849609}, + {110.63575744629, -7.6869964599609}, + {110.415203, -7.021794}, + {110.355606, -7.818832}, + {110.462715, -7.246171}, + {110.837631, -6.81839}, + {109.965139, -7.535091}, + {109.013815, -6.986195}, + {109.651244, -6.891138}, + {109.90654, -7.36702}, + {110.76255, -7.615615}, + {111.00654602051, -7.4301910400391}, + {111.39793395996, -6.6762542724609}, + {112.690238, -7.442974}, + {-47.88459777832, -15.800399780273}, + {-48.340530395508, -23.166732788086}, + {-50.394973754883, -23.13102722168}, + {-48.535537719727, -27.612075805664}, + {-47.136154174805, -22.853622436523}, + {-43.246994018555, -22.831649780273}, + {-46.595077514648, -23.81217956543}, + {-70.300827026367, -27.400588989258}, + {-71.231918334961, -33.039321899414}, + {-71.214752, -32.714767}, + {-70.670491, -33.47478}, + {-70.585098, -33.462296}, + {12.422496, 44.173573}, + {12.153854, 44.425163}, + {10.341567993164, 44.802932739258}, + {9.7373199462891, 45.052871704102}, + {10.322341918945, 44.879837036133}, + {12.558574, 41.985471}, + {12.527847290039, 41.914901733398}, + {12.51304, 41.88617}, + {12.242069, 41.775365}, + {11.918106079102, 42.043991088867}, + {12.396011352539, 42.075576782227}, + {12.674789, 41.601105}, + {13.06755065918, 41.505661010742}, + {12.894515991211, 41.457595825195}, + {13.171920776367, 41.307907104492}, + {13.342667, 41.729507}, + {12.542953491211, 41.936874389648}, + {11.986770629883, 42.64274597168}, + {12.510681, 41.96846}, + {12.514114379883, 41.879196166992}, + {77.760543823242, 20.88020324707}, + {79.048690795898, 20.13313293457}, + {73.985366821289, 17.02262878418}, + {73.978500366211, 16.985549926758}, + {74.556655883789, 16.730117797852}, + {72.894973754883, 19.37370300293}, + {75.378571, 19.872894}, + {74.96452331543, 17.828750610352}, + {73.080917, 18.632401}, + {73.64376, 16.56498}, + {75.490493774414, 19.866714477539}, + {74.926071, 18.231125}, + {74.352035522461, 18.264083862305}, + {77.241439819336, 19.288558959961}, + {77.110977172852, 18.651351928711}, + {76.205978393555, 17.519760131836}, + {73.267136, 18.820095}, + {73.437881, 18.090592}, + {77.565536499023, 18.799667358398}, + {73.823318481445, 15.575180053711}, + {74.461898803711, 18.42887878418}, + {73.852157592773, 18.526382446289}, + {88.377456665039, 22.915420532227}, + {106.040039, -6.007462}, + {106.05171203613, -6.0376739501953}, + {106.84547424316, -6.1228179931641}, + {107.3909, -6.38649}, + {106.95808410645, -6.3343048095703}, + {106.833801, -6.189423}, + {106.81800842285, -6.2271881103516}, + {106.77680969238, -6.2216949462891}, + {106.58592224121, -6.5650177001953}, + {106.794662, -6.28006}, + {106.5763092041, -6.1653900146484}, + {106.765823, -6.295166}, + {106.82487487793, -6.2189483642578}, + {106.964264, -6.166077}, + {106.978764, -6.268443}, + {106.130905, -6.089477}, + {107.74085998535, -7.0484161376953}, + {107.76969909668, -6.9344329833984}, + {107.56507873535, -6.8616485595703}, + {107.54997253418, -6.8932342529297}, + {108.32450866699, -6.5045928955078}, + {-17.442855834961, 14.670181274414}, + {-17.462321, 14.709419}, + {-17.429122924805, 14.77180480957}, + {-17.471694946289, 14.719619750977}, + {-17.162704467773, 14.730606079102}, + {-17.420883178711, 14.763565063477}, + {-16.294784545898, 12.564926147461}, + {-8.010818, 12.625351}, + {-6.2162017822266, 13.424606323242}, + {-13.741836547852, 13.774795532227}, + {-4.0793609619141, 14.547958374023}, + {-8.0138397216797, 12.62809753418}, + {-7.937851, 12.63588}, + {-8.0426788330078, 12.626724243164}, + {-8.0522918701172, 12.699508666992}, + {-8.0564117431641, 12.62809753418}, + {-4.0972137451172, 5.3290557861328}, + {-6.2670135498047, 13.43147277832}, + {-13.662185668945, 9.5766448974609}, + {-3.973159, 5.337642}, + {-4.0285491943359, 5.3647613525391}, + {-3.945834, 5.367629}, + {50.558395385742, 26.222305297852}, + {50.570755004883, 26.215438842773}, + {51.500473022461, 25.667495727539}, + {51.483993530273, 25.282974243164}, + {51.477127075195, 25.219802856445}, + {51.42219543457, 25.173110961914}, + {51.536865, 25.85289}, + {51.422195, 25.132256}, + {51.610336303711, 25.028915405273}, + {87.542495727539, 26.660385131836}, + {85.04997253418, 27.178115844727}, + {86.668396, 26.634979}, + {85.377274, 27.68074}, + {85.305404663086, 27.704086303711}, + {85.310555, 27.69207}, + {85.320510864258, 27.73567199707}, + {85.304855, 27.662613}, + {84.887924194336, 27.029800415039}, + {85.343105, 27.747214}, + {-8.2308197021484, 41.623764038086}, + {-6.5869903564453, 41.58805847168}, + {-9.068801, 38.603074}, + {-8.8913726806641, 38.57780456543}, + {-9.0726470947266, 38.597030639648}, + {-8.388061, 41.045609}, + {-8.5315704345703, 41.066207885742}, + {-8.561783, 41.167831}, + {-8.097839, 40.530624}, + {-7.961311, 40.625381}, + {-8.586166, 37.134537}, + {-8.3640289306641, 37.101516723633}, + {-7.439118, 37.186661}, + {-8.002853, 37.147522}, + {-8.017273, 39.259644}, + {-9.1234588623047, 38.778305053711}, + {-9.0918731689453, 38.768692016602}, + {-9.1481781005859, 38.724746704102}, + {-9.214406, 38.748012}, + {-9.1577911376953, 38.767318725586}, + {-9.1385650634766, 38.713760375977}, + {-84.33363, 33.885456}, + {-84.334487915039, 34.159927368164}, + {-84.266171, 33.73036}, + {-84.521255493164, 34.061050415039}, + {-84.514389038086, 32.587509155273}, + {-83.616248, 31.682412}, + {-97.914505, 26.144485}, + {-98.126574, 29.708841}, + {-97.848553, 30.511981}, + {-98.612594604492, 29.472885131836}, + {-98.56144, 29.503098}, + {-97.295151, 27.623978}, + {-100.385513, 28.693543}, + {-97.776181, 30.214029}, + {-97.93830871582, 30.229568481445}, + {-97.964401245117, 29.685745239258}, + {-98.072758, 30.723868}, + {-65.948224, 18.364132}, + {-65.852737, 18.024445}, + {-66.036083, 18.393928}, + {15.825119018555, 60.52848815918}, + {17.960586547852, 59.355697631836}, + {18.058090209961, 59.344711303711}, + {18.006593, 59.341278}, + {17.933120727539, 59.40788269043}, + {17.908401489258, 59.355697631836}, + {17.952346801758, 59.425735473633}, + {18.12126159668, 59.369430541992}, + {18.023758, 59.312439}, + {17.956466674805, 59.296646118164}, + {18.019638061523, 59.28840637207}, + {17.890548706055, 59.260940551758}, + {17.629623413086, 59.20051574707}, + {16.34697, 58.961563}, + {16.18766784668, 58.570175170898}, + {14.961318969727, 58.905258178711}, + {16.53923034668, 59.624862670898}, + {14.249954223633, 57.787399291992}, + {14.453201293945, 56.787643432617}, + {11.897049, 58.358688}, + {-45.24697, -21.701221}, + {-45.910212, -22.278305}, + {-44.607101, -19.868088}, + {-43.955379, -19.803567}, + {-39.198532104492, -12.807998657227}, + {-38.470353, -12.9337}, + {-44.190964, -2.565378}, + {-38.38417, -12.936335}, + {-38.948593139648, -12.249069213867}, + {-40.512629, -12.306423}, + {-37.423491, -10.210356}, + {-46.746139526367, -23.65837097168}, + {-38.175774, -7.950668}, + {-41.008529663086, -8.5109710693359}, + {-34.900131225586, -8.0522918701172}, + {-34.95231628418, -7.6389312744141}, + {-43.175582885742, -22.510299682617}, + {76.43669128418, 12.747573852539}, + {76.917343, 12.538376}, + {78.482894897461, 13.19938659668}, + {74.740677, 15.651398}, + {74.903183, 15.912553}, + {75.774765, 12.937775}, + {75.965103, 12.45314}, + {74.700851, 13.583221}, + {74.742050170898, 13.354568481445}, + {74.743423, 13.412933}, + {77.160415649414, 9.7084808349609}, + {76.263656616211, 11.077651977539}, + {76.123580932617, 11.029586791992}, + {75.339431762695, 12.161178588867}, + {75.380630493164, 11.857681274414}, + {77.057075, 10.082703}, + {76.26503, 10.054207}, + {76.962661743164, 9.9089813232422}, + {76.567154, 10.656176}, + {76.705856323242, 9.1591644287109}, + {76.595535, 9.413681}, + {76.21696472168, 10.632705688477}, + {141.036987, 38.39653}, + {141.29997253418, 38.422622680664}, + {139.70420837402, 37.503890991211}, + {139.78385925293, 38.72200012207}, + {140.76026916504, 37.112503051758}, + {141.437302, 40.405655}, + {140.21366, 37.160575}, + {141.58699035645, 40.470199584961}, + {140.652436, 40.777834}, + {141.261488, 39.52057}, + {141.882187, 39.753373}, + {141.7325592041, 40.231246948242}, + {141.30821228027, 40.174942016602}, + {136.3094329834, 36.020736694336}, + {135.5005645752, 34.674911499023}, + {136.01280212402, 36.046829223633}, + {135.56785583496, 34.677658081055}, + {135.524826, 34.675369}, + {135.58433532715, 34.749069213867}, + {135.30555725098, 34.405746459961}, + {135.23963928223, 34.429092407227}, + {135.49507141113, 34.698257446289}, + {135.59257507324, 34.841079711914}, + {135.43190002441, 34.890518188477}, + {151.390046, -33.433652}, + {151.208584, -33.886631}, + {150.98442077637, -33.749313354492}, + {151.010216, -33.798463}, + {151.021113, -33.836955}, + {151.018951, -33.930799}, + {151.287884, -33.752844}, + {151.146265, -33.748622}, + {151.18629455566, -33.82209777832}, + {151.06544494629, -33.838577270508}, + {151.13459, -33.805412}, + {149.140152, -35.284546}, + {144.611141, -37.690808}, + {145.033719, -37.770447}, + {145.042648, -37.703476}, + {145.321308, -37.905409}, + {144.925136, -37.804671}, + {144.984131, -37.853888}, + {144.957301, -37.842677}, + {140.30056, 36.328354}, + {140.34965515137, 36.011123657227}, + {140.46913146973, 35.974044799805}, + {139.7289276123, 36.390151977539}, + {139.50096130371, 36.288528442383}, + {139.631424, 36.299858}, + {139.03678894043, 36.320114135742}, + {139.31968688965, 36.342086791992}, + {138.89533996582, 36.23908996582}, + {141.43592834473, 43.105545043945}, + {141.36726379395, 43.091812133789}, + {141.41532897949, 43.090438842773}, + {141.6007232666, 42.646865844727}, + {141.50459289551, 42.616653442383}, + {141.35215759277, 43.062973022461}, + {141.36726379395, 43.021774291992}, + {141.35765075684, 42.942123413086}, + {141.38511657715, 43.067092895508}, + {141.48948669434, 43.067092895508}, + {141.96464538574, 43.597183227539}, + {141.7147064209, 42.95036315918}, + {141.66801452637, 42.848739624023}, + {143.18550109863, 42.935256958008}, + {143.20610046387, 42.91877746582}, + {142.90397644043, 42.977828979492}, + {51.499099731445, 25.353012084961}, + {51.464767456055, 25.35026550293}, + {51.522445678711, 25.248641967773}, + {51.494293, 25.280228}, + {51.314587, 25.300279}, + {51.449661254883, 25.266494750977}, + {51.44416809082, 25.259628295898}, + {51.603469848633, 25.15251159668}, + {51.49772644043, 25.278854370117}, + {51.420822143555, 25.273361206055}, + {103.8077545166, 47.364120483398}, + {106.88804626465, 47.901077270508}, + {106.988787, 47.932137}, + {106.91963195801, 47.993087768555}, + {85.31364440918, 27.698593139648}, + {85.382308959961, 27.708206176758}, + {85.304375, 27.672844}, + {83.053207397461, 27.546157836914}, + {83.458328, 27.684946}, + {83.461075, 27.688293}, + {83.983546, 28.239272}, + {84.009018, 27.609329}, + {9.4750213623047, 45.701065063477}, + {6.7119598388672, 45.084457397461}, + {8.3214569091797, 45.077590942383}, + {7.9589080810547, 44.856491088867}, + {9.88591, 44.079209}, + {9.931867, 44.101458}, + {8.4903717041016, 45.188827514648}, + {8.383529, 45.214097}, + {9.134897, 44.998864}, + {8.642351, 45.726702}, + {7.638245, 45.121307}, + {11.047439575195, 44.227523803711}, + {11.422348022461, 44.364852905273}, + {11.29097, 44.513626}, + {11.274032592773, 44.487075805664}, + {27.56950378418, 46.350631713867}, + {26.026474, 44.424454}, + {25.630416870117, 44.908676147461}, + {26.111893, 44.386826}, + {26.206741, 44.455948}, + {26.023865, 44.515457}, + {26.167374, 44.398842}, + {24.90546, 44.847131}, + {26.080856323242, 44.439010620117}, + {21.296311, 45.255435}, + {27.377243041992, 44.428024291992}, + {25.976424, 44.433892}, + {25.797032, 45.009385}, + {25.633163452148, 44.693069458008}, + {22.923409, 45.814134}, + {-16.035232543945, 64.130630493164}, + {-21.958236694336, 64.574203491211}, + {-21.858687, 64.114682}, + {-20.656356811523, 63.923263549805}, + {-21.941482, 64.137497}, + {20.314407348633, 42.050857543945}, + {-23.172913, 66.059418}, + {19.714279174805, 41.420516967773}, + {-20.99556, 64.701234}, + {20.396118, 41.791992}, + {19.873580932617, 41.276321411133}, + {19.440994262695, 41.310653686523}, + {54.567031860352, 24.432907104492}, + {54.524933, 24.491522}, + {54.626083374023, 24.479598999023}, + {54.407387, 24.508438}, + {54.574291, 24.503926}, + {54.355545043945, 24.487838745117}, + {54.355545043945, 24.486465454102}, + {54.367092, 24.475476}, + {54.339065551758, 24.452133178711}, + {54.346619, 24.46106}, + {54.455795288086, 24.423294067383}, + {54.37614440918, 24.464492797852}, + {54.584884643555, 24.431533813477}, + {54.442081, 24.419531}, + {54.560165405273, 24.40544128418}, + {54.576644897461, 24.399948120117}, + {54.796371459961, 24.424667358398}, + {55.016098022461, 24.862747192383}, + {54.491500854492, 24.349136352539}, + {54.674835, 24.529896}, + {54.528579711914, 24.309310913086}, + {53.697738647461, 23.663864135742}, + {54.512100219727, 24.37385559082}, + {54.597244262695, 24.25163269043}, + {54.605484008789, 24.310684204102}, + {-7.7021026611328, 52.362899780273}, + {-7.736435, 52.351227}, + {-6.4743804931641, 52.997360229492}, + {-7.001724, 52.977448}, + {-6.5279388427734, 53.350296020508}, + {-6.2148284912109, 53.587875366211}, + {-6.5966033935547, 53.324203491211}, + {-8.7100982666016, 52.676010131836}, + {-8.876564, 53.584171}, + {-8.4189605712891, 52.39860534668}, + {-9.5738983154297, 52.071762084961}, + {-8.5631561279297, 51.894607543945}, + {-9.5368194580078, 52.126693725586}, + {-8.2569122314453, 54.314346313477}, + {-6.880664, 52.862883}, + {-7.640991, 54.961166}, + {-6.974785, 53.009998}, + {-6.2642669677734, 53.337936401367}, + {-6.2464141845703, 53.322830200195}, + {-6.2244415283203, 53.336563110352}, + {-6.2505340576172, 53.335189819336}, + {-6.2834930419922, 53.29948425293}, + {37.822691, 55.771624}, + {37.657052, 55.828102}, + {37.683792114258, 55.68489074707}, + {37.74559, 55.648773}, + {37.894689, 55.419795}, + {37.536941, 55.451523}, + {56.359176635742, 58.127975463867}, + {38.410263061523, 55.852432250977}, + {49.797592163086, 62.124252319336}, + {133.12477111816, 44.195938110352}, + {108.62937927246, 58.077163696289}, + {105.43510437012, 53.000106811523}, + {36.666183, 50.52681}, + {36.08528137207, 52.96989440918}, + {64.204788208008, 55.36491394043}, + {28.626937866211, 44.198684692383}, + {28.025436401367, 45.447006225586}, + {27.981491088867, 45.456619262695}, + {26.130393, 44.445779}, + {26.057510375977, 44.447250366211}, + {26.108047, 44.432144}, + {26.144027709961, 44.433517456055}, + {26.144785, 44.415749}, + {26.130295, 44.457962}, + {27.105266, 44.428024}, + {26.127548, 44.454575}, + {26.093215942383, 44.411544799805}, + {27.047653198242, 45.062484741211}, + {28.478966, 44.141006}, + {27.967758178711, 45.275344848633}, + {28.201217651367, 45.175094604492}, + {28.60221862793, 44.160232543945}, + {27.940979, 45.237579}, + {27.98698425293, 45.317916870117}, + {21.238632202148, 45.754623413086}, + {21.224774, 45.751692}, + {22.385330200195, 46.81755065918}, + {21.312789916992, 46.163864135742}, + {-2.3517608642578, 51.350784301758}, + {-2.479019, 51.462479}, + {-5.287353, 50.053222}, + {-2.286907, 51.089722}, + {-3.380203, 51.683121}, + {-4.343491, 50.635243}, + {-0.14350891113281, 51.40022277832}, + {-0.18058776855469, 51.518325805664}, + {-0.50468444824219, 51.183242797852}, + {-0.10368347167969, 51.48811340332}, + {-0.222702, 51.37413}, + {-0.344696, 51.298599}, + {-0.35636901855469, 51.331558227539}, + {-0.0020599365234375, 51.407089233398}, + {0.26435852050781, 51.29997253418}, + {0.328341, 51.426315}, + {0.36323547363281, 51.308212280273}, + {-2.2171783447266, 57.202377319336}, + {-2.1347808837891, 57.12272644043}, + {-2.0977020263672, 57.10075378418}, + {37.849960327148, 55.69450378418}, + {37.413322, 55.771271}, + {37.597274780273, 55.704116821289}, + {37.55744934082, 55.746688842773}, + {37.707138061523, 55.613479614258}, + {37.621994018555, 55.715103149414}, + {37.469309, 55.692381}, + {37.602767944336, 55.770034790039}, + {37.623215, 55.785141}, + {37.75383, 55.741196}, + {37.595901489258, 55.812606811523}, + {37.510757, 55.726089}, + {37.64533996582, 55.81672668457}, + {37.723617553711, 55.682144165039}, + {37.707138061523, 55.654678344727}, + {37.738723754883, 55.675277709961}, + {37.587661743164, 55.895004272461}, + {37.491226, 55.852127}, + {37.838974, 55.71988}, + {-104.858694, 39.531032}, + {-104.78965759277, 39.584426879883}, + {-104.98565, 39.744992}, + {-107.985563, 38.623673}, + {-104.86381530762, 38.912887573242}, + {-106.855605, 40.499355}, + {-114.66499328613, 42.753982543945}, + {-108.4741973877, 45.808181762695}, + {-106.02699279785, 43.707046508789}, + {-111.914878, 40.70869}, + {-109.50828552246, 38.537979125977}, + {-112.693065, 38.074547}, + {-111.894126, 40.766146}, + {-111.938524, 40.665807}, + {-66.147994995117, 18.45085144043}, + {-118.86863708496, 36.464309692383}, + {-102.97691345215, 41.13899230957}, + {-103.96293640137, 41.189804077148}, + {-81.453323364258, 39.418258666992}, + {-73.050218, 40.907651}, + {-72.485733032227, 41.009902954102}, + {-73.626937866211, 40.816268920898}, + {-73.710708618164, 40.769577026367}, + {-73.830184936523, 40.74348449707}, + {-73.753280639648, 40.711898803711}, + {-73.76152, 40.697708}, + {-73.451859, 40.745882}, + {-73.813553, 40.694962}, + {-73.518447875977, 40.695419311523}, + {-73.805465698242, 40.591049194336}, + {-73.985366821289, 40.667953491211}, + {-73.98811340332, 40.607528686523}, + {-73.991547, 40.637741}, + {-73.9888, 40.595169}, + {-73.929061889648, 40.746231079102}, + {-73.930349, 40.736618}, + {-73.951847, 40.710274}, + {-73.90983581543, 40.684432983398}, + {61.381301879883, 55.147933959961}, + {61.484298706055, 55.172653198242}, + {58.984909057617, 53.403854370117}, + {61.480178833008, 55.102615356445}, + {61.342849731445, 55.341567993164}, + {37.960854, 55.629272}, + {37.620620727539, 55.701370239258}, + {31.278139, 58.543655}, + {33.127213, 68.992767}, + {33.075122, 68.956527}, + {30.211715698242, 69.408187866211}, + {41.769333, 63.451538}, + {34.560928344727, 55.325088500977}, + {38.716506958008, 56.378402709961}, + {39.237089, 55.934724}, + {39.198532104492, 51.784744262695}, + {39.206771850586, 51.683120727539}, + {134.28245544434, 46.872482299805}, + {37.518311, 55.365601}, + {7.5949859619141, 52.382125854492}, + {22.397689819336, 54.961166381836}, + {106.810455, -6.137753}, + {106.79740905762, -6.1530303955078}, + {107.01850891113, -6.1447906494141}, + {106.97868347168, -6.0706329345703}, + {107.055768, -6.205593}, + {106.99104309082, -6.2546539306641}, + {106.617165, -6.178436}, + {106.71501159668, -6.3246917724609}, + {106.80290222168, -6.2038421630859}, + {106.78504943848, -6.2326812744141}, + {106.75346374512, -6.1447906494141}, + {106.750717, -6.307526}, + {106.750717, -6.144333}, + {106.05033874512, -6.0157012939453}, + {106.670517, -6.164841}, + {106.92100524902, -6.3603973388672}, + {106.653728, -6.128139}, + {106.9278717041, -6.4318084716797}, + {106.77131652832, -6.4894866943359}, + {107.41401672363, -6.4125823974609}, + {106.876991, -6.281584}, + {106.83311462402, -6.2876129150391}, + {106.81526184082, -6.2656402587891}, + {11.640976, 52.109665}, + {11.640285, 52.028566}, + {8.6414337158203, 50.102462768555}, + {8.5919952392578, 50.022811889648}, + {10.867931, 53.964615}, + {12.908142, 52.431248}, + {13.366928100586, 52.449417114258}, + {12.411479, 51.370516}, + {7.597046, 50.352402}, + {12.517548, 51.342201}, + {9.0094757080078, 48.652267456055}, + {9.2319488525391, 48.648147583008}, + {8.9270782470703, 48.808822631836}, + {7.4384307861328, 51.904220581055}, + {-63.207778930664, -17.790298461914}, + {-67.107502, -17.967928}, + {-63.181686401367, -17.84797668457}, + {-68.133773803711, -16.500778198242}, + {-68.136972, -16.503161}, + {-68.114626, -16.521609}, + {-68.176345825195, -16.574935913086}, + {-68.463363647461, -16.559829711914}, + {-67.112045288086, -17.950973510742}, + {-66.158981323242, -17.40852355957}, + {-66.179580688477, -17.337112426758}, + {-66.183700561523, -17.348098754883}, + {-63.166580200195, -17.727127075195}, + {-63.188552856445, -17.766952514648}, + {-63.169326782227, -17.772445678711}, + {-63.195419311523, -17.797164916992}, + {-63.207778930664, -17.793045043945}, + {-68.131124, -16.50491}, + {-68.131858, -16.499975}, + {-66.158066, -17.365494}, + {-63.368453979492, -17.994918823242}, + {78.392372, 17.269821}, + {80.015487670898, 15.645217895508}, + {79.153748, 17.72438}, + {78.45817565918, 17.442855834961}, + {92.739028930664, 11.666793823242}, + {86.198043823242, 22.724533081055}, + {85.844936, 20.317154}, + {84.00764465332, 21.783828735352}, + {82.045211791992, 21.826400756836}, + {83.900527954102, 21.498184204102}, + {81.809005737305, 21.299057006836}, + {77.441940307617, 23.245010375977}, + {75.19660949707, 23.137893676758}, + {78.161839, 26.201706}, + {78.157424926758, 26.200332641602}, + {78.270034790039, 25.964126586914}, + {77.906112670898, 21.906051635742}, + {77.37190246582, 23.166732788086}, + {75.879593, 22.72316}, + {81.309127807617, 21.211166381836}, + {75.854415893555, 22.683334350586}, + {81.256942749023, 20.82389831543}, + {81.299514770508, 21.224899291992}, + {82.069931, 21.977463}, + {18.614169, -33.94454}, + {19.075698852539, -34.179153442383}, + {18.435361, -34.082444}, + {20.869216918945, -34.387893676758}, + {31.234817504883, -29.505844116211}, + {29.983948, -27.748931}, + {30.957412719727, -29.953536987305}, + {29.983749389648, -29.176254272461}, + {28.896102905273, -31.049423217773}, + {29.968643188477, -30.949172973633}, + {29.073257446289, -26.278610229492}, + {29.997482299805, -25.741653442383}, + {31.15104675293, -24.350509643555}, + {28.262996, -25.817159}, + {28.218613, -25.76088}, + {28.277922, -25.786292}, + {28.323441, -25.793839}, + {28.31657409668, -25.778732299805}, + {29.45915222168, -26.093215942383}, + {27.665897, -26.112248}, + {24.11979675293, 61.12174987793}, + {27.641602, 62.898788}, + {25.607070922852, 60.947341918945}, + {25.520553588867, 60.98991394043}, + {27.26188659668, 63.227005004883}, + {25.874862670898, 62.335739135742}, + {25.854263305664, 63.092422485352}, + {21.73233, 61.493912}, + {25.048961, 60.26443}, + {27.26326, 61.633759}, + {25.245552, 60.277519}, + {19.925422, 60.07822}, + {24.093018, 67.527466}, + {21.775589, 63.026505}, + {27.348403930664, 65.742874145508}, + {25.31867980957, 54.81559753418}, + {24.026412963867, 54.928207397461}, + {25.344772338867, 54.951553344727}, + {24.664536, 54.790878}, + {23.869857788086, 54.812850952148}, + {23.864757, 54.946845}, + {121.433945, 31.197346}, + {121.57264709473, 31.328201293945}, + {121.578827, 31.235504}, + {121.25679016113, 31.37077331543}, + {121.56852722168, 31.193618774414}, + {121.59324645996, 31.28288269043}, + {121.33958, 31.172823}, + {121.40647888184, 31.144180297852}, + {121.48750305176, 31.189498901367}, + {121.42845153809, 31.153793334961}, + {117.23991394043, 39.079055786133}, + {117.18910217285, 39.033737182617}, + {117.20695495605, 38.970565795898}, + {116.914569, 39.213014}, + {115.1456451416, 38.033981323242}, + {115.53016662598, 38.826370239258}, + {114.15000915527, 38.077926635742}, + {118.13529968262, 39.826126098633}, + {116.63841247559, 39.580307006836}, + {114.68971252441, 38.285293579102}, + {126.55906677246, 43.843002319336}, + {113.03901672363, 36.130599975586}, + {113.6693572998, 34.768295288086}, + {113.70231628418, 34.784774780273}, + {5.7190704345703, 49.989852905273}, + {-7.908096, 52.89505}, + {-8.937607, 52.527237}, + {-9.042434, 52.9632}, + {-7.7927398681641, 52.864151000977}, + {-6.17568, 53.471834}, + {-6.207619, 53.4478}, + {-6.6968536376953, 54.052047729492}, + {-7.54509, 55.14473}, + {-6.472087, 53.302231}, + {-8.847429, 53.862534}, + {-8.4656524658203, 51.89323425293}, + {-6.753151, 52.41511}, + {-6.7655181884766, 53.151168823242}, + {-9.205847, 52.895055}, + {-6.236189, 53.445165}, + {-7.724075, 54.965973}, + {-63.565292, 44.702682}, + {-63.560715, 44.850213}, + {-122.88276672363, 49.208450317383}, + {-123.94432067871, 49.22492980957}, + {-123.108753, 49.263454}, + {-122.792475, 49.148712}, + {-122.84706115723, 49.249649047852}, + {-122.976406, 49.271847}, + {-122.6245880127, 49.101333618164}, + {-123.03382873535, 49.204330444336}, + {-122.98713684082, 49.169998168945}, + {-124.9193572998, 49.67399597168}, + {-107.85484313965, 25.195083618164}, + {-108.96034240723, 25.81169128418}, + {-106.34834289551, 31.66877746582}, + {-99.095993041992, 23.788833618164}, + {-96.151657104492, 19.208908081055}, + {-96.996231079102, 18.895797729492}, + {-99.072647094727, 19.445114135742}, + {-99.183883666992, 19.440994262695}, + {-99.204483032227, 19.443740844727}, + {-99.13444519043, 19.423141479492}, + {-99.139938354492, 19.403915405273}, + {-99.079513549805, 19.384689331055}, + {-99.16877746582, 19.372329711914}, + {-99.115219116211, 19.41764831543}, + {-102.39463806152, 22.576217651367}, + {-99.208602905273, 19.333877563477}, + {-99.09359, 19.302292}, + {-99.223877, 18.916242}, + {-99.230575561523, 19.478073120117}, + {-99.245681762695, 19.494552612305}, + {-99.141311645508, 19.472579956055}, + {-99.127578735352, 19.498672485352}, + {-99.220276, 19.370956}, + {-98.836441040039, 19.997177124023}, + {4.401576, 52.05339}, + {4.195175, 51.973572}, + {4.286379, 52.095697}, + {4.318229, 52.088247}, + {4.479611, 51.875454}, + {4.4652557373047, 51.928939819336}, + {4.344262, 51.950623}, + {4.10271, 51.852531}, + {3.5863494873047, 51.456527709961}, + {4.061051, 51.44148}, + {4.544776, 51.863966}, + {4.5613861083984, 51.890487670898}, + {4.63623, 51.7099}, + {4.80524, 51.529384}, + {4.700699, 51.801682}, + {4.758386, 51.824934}, + {5.137253, 52.108383}, + {5.1477813720703, 52.066268920898}, + {4.837594, 52.072502}, + {5.251465, 52.14386}, + {-6.243668, 53.399473}, + {-6.6996002197266, 53.401107788086}, + {-6.624069, 53.364716}, + {-6.14685, 53.296967}, + {-7.249741, 52.645798}, + {-6.5430450439453, 53.261032104492}, + {-8.726566, 53.272051}, + {-8.976256, 53.290256}, + {-8.638458, 52.138046}, + {-6.2601470947266, 53.39973449707}, + {-6.2354278564453, 53.380508422852}, + {-8.5494232177734, 51.89323425293}, + {-8.4752655029297, 51.898727416992}, + {-8.4532928466797, 51.894607543945}, + {-9.0328216552734, 53.283004760742}, + {-7.9410552978516, 53.425827026367}, + {-9.281387, 52.986832}, + {-6.248384, 53.374904}, + {-7.605286, 53.232193}, + {4.4982147216797, 52.15690612793}, + {4.6245574951172, 52.239303588867}, + {4.6176910400391, 52.255783081055}, + {4.6492767333984, 52.390365600586}, + {4.8786163330078, 52.465896606445}, + {4.6039581298828, 52.19123840332}, + {6.1942291259766, 52.246170043945}, + {6.5457916259766, 52.978134155273}, + {4.6575164794922, 51.699600219727}, + {4.8758697509766, 52.368392944336}, + {5.1766204833984, 52.093734741211}, + {33.682022, 67.615585}, + {135.110444, 48.479444}, + {30.289993286133, 59.795150756836}, + {29.792861938477, 59.867935180664}, + {30.057449, 60.13298}, + {27.910079956055, 58.472671508789}, + {39.845477, 64.571394}, + {39.230117797852, 57.954940795898}, + {36.70051574707, 55.577774047852}, + {48.06694, 46.376114}, + {48.035366, 46.362501}, + {56.830215454102, 59.412002563477}, + {37.557421, 55.778275}, + {37.322519, 55.793969}, + {37.575302, 55.821304}, + {46.718124, 24.700699}, + {46.724625, 24.70015}, + {46.73996, 24.735031}, + {46.850052, 24.81102}, + {46.825790405273, 24.780349731445}, + {45.798568725586, 24.33952331543}, + {43.019027709961, 16.694412231445}, + {42.490310668945, 18.214645385742}, + {40.387802124023, 21.296310424805}, + {42.37907409668, 21.091690063477}, + {41.332626342773, 20.310287475586}, + {40.400162, 21.264725}, + {39.87419128418, 21.454238891602}, + {39.824203, 21.41716}, + {39.802780151367, 21.414413452148}, + {42.526016235352, 18.20915222168}, + {39.586143, 24.483547}, + {39.611893, 24.471359}, + {39.538651, 24.439316}, + {41.592178344727, 27.425308227539}, + {43.650741577148, 25.310440063477}, + {37.262191772461, 24.920425415039}, + {41.355972290039, 27.929306030273}, + {-1.338821, 51.843796}, + {42.87483215332, 27.705459594727}, + {-0.603169, 51.575808}, + {-0.733832, 51.607002}, + {-0.034332, 51.641922}, + {-0.99906921386719, 51.602096557617}, + {-0.16273498535156, 51.876754760742}, + {-0.204964, 51.682434}, + {-0.34263610839844, 51.578750610352}, + {-0.88783264160156, 51.64192199707}, + {-0.26435852050781, 51.534805297852}, + {-0.078049, 51.598206}, + {-0.52803039550781, 51.504592895508}, + {-0.386581, 51.88179}, + {-0.523224, 51.886368}, + {-0.275345, 51.99852}, + {-1.0196685791016, 52.231063842773}, + {-0.757612, 51.993081}, + {78.381271362305, 17.475814819336}, + {77.587509155273, 12.927474975586}, + {77.711105, 12.973022}, + {77.756423950195, 13.004379272461}, + {77.572402954102, 12.976913452148}, + {77.553176879883, 12.998886108398}, + {80.914993286133, 26.801834106445}, + {81.005630493164, 26.889724731445}, + {74.348831, 31.461411}, + {72.55989074707, 23.029403686523}, + {74.345169067383, 31.461410522461}, + {74.380874633789, 31.561660766602}, + {74.200973510742, 31.270523071289}, + {73.05290222168, 33.620223999023}, + {73.069381713867, 33.557052612305}, + {74.184494018555, 32.137069702148}, + {67.083206176758, 24.873733520508}, + {67.029647827148, 24.88883972168}, + {67.353744506836, 24.869613647461}, + {66.98844909668, 24.952011108398}, + {71.436538696289, 30.189743041992}, + {66.998062133789, 30.169143676758}, + {70.645523071289, 28.655776977539}, + {67.07633972168, 24.81330871582}, + {1.043083, 49.526436}, + {1.095984, 49.446226}, + {1.867987, 50.166259}, + {2.3380279541016, 49.29084777832}, + {1.602967, 50.326828}, + {0.358858, 46.658335}, + {-1.4206695556641, 46.464614868164}, + {-1.593702, 46.295806}, + {-1.150448, 46.195978}, + {0.68321228027344, 47.364120483398}, + {0.650665, 47.376892}, + {0.65299987792969, 47.343521118164}, + {5.5556488037109, 46.674728393555}, + {1.0402679443359, 49.367752075195}, + {0.088577, 49.453926}, + {0.280492, 49.501992}, + {1.372013, 47.645211}, + {1.4948272705078, 47.32292175293}, + {4.074142, 48.275024}, + {-104.012775, 35.108929}, + {-77.032399, 38.914446}, + {-119.04304504395, 34.223098754883}, + {-121.49299621582, 38.496780395508}, + {-106.90452575684, 34.264297485352}, + {-106.49803161621, 35.143203735352}, + {-106.579419, 35.18349}, + {-106.55708312988, 35.205001831055}, + {-106.529923, 35.330582}, + {-84.187545776367, 33.833084106445}, + {-84.46907043457, 33.899002075195}, + {-84.249344, 33.869705}, + {-84.184509, 33.920262}, + {-84.090042, 33.945236}, + {-84.715347, 33.6866}, + {-84.637756, 33.777466}, + {-84.670944213867, 33.609237670898}, + {-83.978805541992, 33.565292358398}, + {-83.927993774414, 33.658676147461}, + {-83.374557495117, 33.974533081055}, + {30.697860717773, 36.890029907227}, + {27.893933, 40.362194}, + {40.228500366211, 37.91862487793}, + {31.494369506836, 39.444351196289}, + {30.509719848633, 39.782180786133}, + {36.576919555664, 36.267929077148}, + {29.088363647461, 40.956344604492}, + {27.088071, 38.38825}, + {27.12043762207, 38.363571166992}, + {29.817622, 40.715253}, + {28.7725, 36.925055}, + {28.848038, 36.771927}, + {28.271255493164, 36.86393737793}, + {35.078659057617, 39.482803344727}, + {32.84294128418, 39.933242797852}, + {32.823463, 39.921885}, + {26.102736, 39.840023}, + {29.045715, 40.190022}, + {29.025192260742, 41.136245727539}, + {29.059524536133, 41.114273071289}, + {29.275131225586, 40.696792602539}, + {32.766036987305, 39.898910522461}, + {32.689371, 39.879898}, + {77.479019165039, 10.014724731445}, + {76.937942504883, 11.106491088867}, + {77.988052, 11.051559}, + {77.955551147461, 9.5876312255859}, + {77.344436645508, 11.063919067383}, + {76.958541870117, 11.004867553711}, + {78.094253540039, 9.9199676513672}, + {77.289505004883, 8.3585357666016}, + {88.307418823242, 22.517166137695}, + {77.001113891602, 30.857162475586}, + {88.363723754883, 22.576217651367}, + {88.35823059082, 22.526779174805}, + {88.427582, 22.609177}, + {80.29426574707, 13.12385559082}, + {80.038147, 13.136902}, + {80.214614868164, 13.046951293945}, + {80.070419, 12.901154}, + {80.121231079102, 12.982406616211}, + {80.25032043457, 13.009872436523}, + {80.191269, 12.982864}, + {80.264053344727, 13.030471801758}, + {80.21965, 13.121567}, + {123.05030822754, -10.745315551758}, + {140.67512512207, -2.6085662841797}, + {128.17680358887, -3.6618804931641}, + {119.481326, -5.138528}, + {119.45777893066, -5.1395416259766}, + {119.62532043457, -4.0271759033203}, + {119.43580627441, -5.1546478271484}, + {119.441299, -5.291977}, + {119.5484161377, -5.3990936279297}, + {119.57450866699, -5.0118255615234}, + {119.54704284668, -4.8360443115234}, + {119.544965, -5.047517}, + {119.527817, -5.061951}, + {119.816757, -5.63475}, + {120.19111633301, -5.5583953857422}, + {119.40696716309, -5.1285552978516}, + {119.41383361816, -5.1326751708984}, + {119.42344665527, -5.1354217529297}, + {119.43717956543, -5.1532745361328}, + {118.96064758301, -3.5465240478516}, + {119.62120056152, -4.0161895751953}, + {119.87800598145, -4.3608856201172}, + {119.89585876465, -4.3636322021484}, + {120.20072937012, -3.0027008056641}, + {6.4565277099609, 48.847274780273}, + {6.129964, 45.042802}, + {2.672424, 46.487274}, + {2.2281646728516, 48.950271606445}, + {6.792435, 43.474686}, + {4.01148, 43.74236}, + {0.111923, 48.920746}, + {1.267841, 47.524796}, + {139.77149963379, 35.700759887695}, + {139.779053, 35.695267}, + {139.79347229004, 35.704879760742}, + {139.79072570801, 35.72135925293}, + {139.72480773926, 35.673294067383}, + {139.70420837402, 35.688400268555}, + {139.696884, 35.689774}, + {139.74128723145, 35.673294067383}, + {139.80033874512, 35.704879760742}, + {139.81544494629, 35.700759887695}, + {139.80445861816, 35.687026977539}, + {139.7728729248, 35.626602172852}, + {139.79347229004, 35.659561157227}, + {139.79759216309, 35.630722045898}, + {139.69871520996, 35.66780090332}, + {139.70146179199, 35.654067993164}, + {139.858933, 35.669632}, + {139.88273620605, 35.663681030273}, + {139.74266052246, 35.662307739258}, + {139.75227355957, 35.649948120117}, + {139.72206115723, 35.652694702148}, + {139.70695495605, 35.65544128418}, + {139.71244812012, 35.590896606445}, + {139.73167419434, 35.597763061523}, + {-75.222702026367, 4.9047088623047}, + {-74.099525, 4.701439}, + {-74.095304, 4.729895}, + {-74.063644, 4.862137}, + {-74.047852, 4.781799}, + {-74.062271, 4.715881}, + {-74.070510864258, 4.6973419189453}, + {-74.036178588867, 4.6836090087891}, + {-74.060898, 4.690647}, + {-74.033432006836, 4.7000885009766}, + {-74.03205871582, 4.7275543212891}, + {-74.047164916992, 4.7467803955078}, + {-74.050255, 4.652023}, + {-74.059524536133, 4.6520233154297}, + {-74.077377319336, 4.6575164794922}, + {-74.087677, 4.619064}, + {-74.065017700195, 4.5970916748047}, + {-74.078064, 4.622841}, + {-74.083521, 4.627056}, + {-74.0732, 4.627147}, + {-75.291366577148, 2.9189300537109}, + {-75.229111, 4.448318}, + {-72.908706665039, 11.543197631836}, + {28.070755004883, -26.039657592773}, + {27.982864379883, -26.025924682617}, + {27.839555, -26.130791}, + {27.922439575195, -26.187973022461}, + {28.201218, -26.332169}, + {28.269024, -26.172566}, + {31.027813, -29.842783}, + {31.200485229492, -29.534683227539}, + {27.916946, -33.008423}, + {18.392486, -33.899002}, + {18.470764, -33.954277}, + {27.77961730957, -26.167373657227}, + {28.129939, -26.104305}, + {28.283615112305, -26.200332641602}, + {28.187828, -26.142311}, + {28.252029418945, -25.984725952148}, + {28.313827514648, -26.259384155273}, + {28.07487487793, -26.212692260742}, + {28.051528930664, -26.205825805664}, + {28.051528930664, -26.203079223633}, + {27.981491088867, -26.244277954102}, + {27.870941, -26.117935}, + {-77.429580688477, 38.408889770508}, + {-77.203571, 38.725556}, + {-77.363937, 38.467667}, + {-76.314468383789, 36.833724975586}, + {-76.444931030273, 37.013626098633}, + {-76.194992, 36.81628}, + {-76.314344, 36.858819}, + {-76.505355834961, 37.218246459961}, + {-77.599525, 37.605858}, + {-77.519826, 37.56716}, + {-77.429405, 37.535493}, + {-76.973626, 37.479197}, + {-76.744305, 37.594989}, + {-77.451882, 37.388146}, + {-78.512192, 38.007054}, + {-78.01596, 36.78258}, + {-79.390297, 36.632881}, + {-77.854615, 38.10917}, + {-77.983291, 37.565874}, + {-80.433271, 37.236099}, + {-80.414658, 37.246628}, + {-78.814588, 38.386735}, + {-81.154939, 37.766803}, + {-77.741317749023, 39.320755004883}, + {54.641189575195, 52.158279418945}, + {49.660601, 58.618045}, + {43.376084, 43.801117}, + {60.414188, 56.886098}, + {60.674744, 56.938019}, + {37.623367, 55.75383}, + {37.886009, 55.750465}, + {38.722683, 55.669785}, + {38.13399, 55.512239}, + {37.894592, 55.674248}, + {37.259116, 55.992783}, + {37.498966, 56.343468}, + {37.75520324707, 55.92658996582}, + {36.988334, 55.958061}, + {38.136152, 56.287903}, + {37.5844, 55.841446}, + {50.540542602539, 36.046829223633}, + {51.423568725586, 35.542831420898}, + {51.647415, 32.183075}, + {51.384049, 32.493057}, + {56.614031, 30.798018}, + {53.964844, 32.321777}, + {46.391830444336, 38.06282043457}, + {46.346512, 38.067902}, + {47.688217, 38.40722}, + {46.104813, 36.954575}, + {46.115798950195, 36.965560913086}, + {58.786057, 36.228653}, + {47.943045, 31.76101}, + {48.086472, 31.632523}, + {48.655014038086, 31.324081420898}, + {48.395462036133, 32.141189575195}, + {49.86351, 31.830139}, + {52.414055, 29.793892}, + {51.389923, 28.650627}, + {51.260147094727, 29.34928894043}, + {52.944443, 27.497726}, + {48.471909, 34.832382}, + {47.60994, 34.788895}, + {52.716385, 36.671128}, + {46.172103881836, 35.52360534668}, + {-118.48496, 34.257144}, + {-118.44291687012, 34.043197631836}, + {-118.44291687012, 34.02946472168}, + {-118.436595, 34.084746}, + {-117.85178, 33.534413}, + {-117.80982971191, 33.632583618164}, + {-120.37788391113, 37.031478881836}, + {-120.52207946777, 36.586532592773}, + {-119.827823, 36.757354}, + {-121.354419, 38.665059}, + {-121.39823913574, 37.76481628418}, + {-121.149399, 38.738147}, + {-121.380386, 38.551712}, + {-119.825899, 39.531812}, + {-119.788742, 36.820679}, + {-121.29386901855, 38.759078979492}, + {-121.6577911377, 38.673934936523}, + {-121.48338317871, 38.63410949707}, + {-120.2611541748, 37.969436645508}, + {3.3968353271484, 6.4551544189453}, + {3.386307, 6.455612}, + {3.318558, 6.619949}, + {3.3213043212891, 6.4482879638672}, + {16.07780456543, 8.5741424560547}, + {16.073684692383, 8.5549163818359}, + {14.767684936523, 12.124099731445}, + {11.51985168457, 3.8843536376953}, + {11.512985229492, 3.8761138916016}, + {10.117721557617, 6.0143280029297}, + {9.9158477783203, 2.9546356201172}, + {10.670013, 3.877487}, + {9.7414398193359, 4.0093231201172}, + {9.740067, 4.093094}, + {9.9309539794922, 3.9694976806641}, + {9.724136, 4.035965}, + {11.500625610352, 3.8912200927734}, + {9.3129730224609, 4.0999603271484}, + {-83.864479, 42.563782}, + {-83.228302, 42.444305}, + {-85.676193237305, 42.883071899414}, + {-83.992908, 42.542173}, + {-83.373184204102, 41.905288696289}, + {-87.182693481445, 34.529342651367}, + {-106.4266204834, 31.929702758789}, + {-96.797104, 43.377457}, + {-80.567898, 33.950365}, + {-78.94157409668, 35.041580200195}, + {-82.51915, 35.576616}, + {-79.341709, 34.468789}, + {-82.362786, 29.641572}, + {-83.700029, 33.82622}, + {-84.521255493164, 34.066543579102}, + {-85.66983, 35.041177}, + {-77.241439819336, 34.71061706543}, + {-79.735336303711, 33.746566772461}, + {-80.507125854492, 35.855941772461}, + {-90.142246, 35.561219}, + {-77.39387512207, 40.198287963867}, + {17.051484, 52.965843}, + {16.474685668945, 53.274765014648}, + {16.886878, 51.789844}, + {18.395919799805, 51.662521362305}, + {17.472382, 52.009277}, + {17.977341, 51.290085}, + {16.094972, 51.657716}, + {15.025406, 51.142502}, + {15.726944, 50.741594}, + {16.92348, 52.40463}, + {20.66047668457, 50.878372192383}, + {16.916885375977, 52.415084838867}, + {16.923751831055, 52.387619018555}, + {17.031143, 52.412338}, + {17.14485168457, 52.461776733398}, + {16.891362, 52.448813}, + {16.984176635742, 52.449417114258}, + {17.010269165039, 52.428817749023}, + {102.4097442627, 20.350112915039}, + {113.98246765137, 22.536392211914}, + {116.3500213623, 39.916763305664}, + {116.3404083252, 40.029373168945}, + {116.34569, 39.966202}, + {116.366043, 39.933243}, + {116.23878479004, 40.163955688477}, + {116.246338, 39.896507}, + {116.422219, 39.947319}, + {116.667252, 40.536804}, + {116.39533996582, 39.900283813477}, + {116.472931, 39.995041}, + {116.430222, 39.988174}, + {116.537247, 40.056381}, + {116.59309387207, 39.91813659668}, + {116.5079498291, 40.010147094727}, + {116.48323059082, 39.971694946289}, + {116.45576477051, 39.901657104492}, + {116.38572692871, 39.91813659668}, + {116.42555236816, 39.988174438477}, + {116.22917175293, 39.931869506836}, + {116.50657653809, 39.868698120117}, + {116.40769958496, 39.861831665039}, + {9.7139739990234, 51.404342651367}, + {9.940567, 45.517502}, + {20.618609, 49.994144}, + {20.942397, 50.817475}, + {12.412033, 41.809158}, + {12.080154418945, 41.953353881836}, + {12.507247924805, 41.835250854492}, + {14.83772277832, 41.903915405273}, + {13.800888061523, 42.593307495117}, + {13.681411743164, 42.649612426758}, + {13.99498, 42.219315}, + {14.506759643555, 42.208786010742}, + {12.880783081055, 43.908920288086}, + {14.659194946289, 41.557846069336}, + {14.252338, 41.599889}, + {12.971077, 43.344498}, + {13.532684, 43.466652}, + {13.411557, 43.553244}, + {13.490254, 43.600832}, + {13.502379, 43.599866}, + {12.169418334961, 42.667465209961}, + {12.580032348633, 43.14811706543}, + {12.756442, 42.833122}, + {12.266325, 42.533266}, + {12.75844, 42.493367}, + {10.338821411133, 44.789199829102}, + {-111.94725036621, 40.770950317383}, + {-111.76597595215, 40.356216430664}, + {-85.827255249023, 39.992294311523}, + {-88.05061340332, 42.95036315918}, + {-93.30207824707, 45.110549926758}, + {-93.102951, 44.948502}, + {-93.203201293945, 44.980087280273}, + {-93.145523071289, 45.05973815918}, + {-88.529891967773, 43.825149536133}, + {-122.98988342285, 44.893569946289}, + {-77.643814086914, 43.152236938477}, + {-122.42134094238, 37.778549194336}, + {-122.20985412598, 37.756576538086}, + {-121.91459655762, 37.454452514648}, + {-120.83930969238, 38.70964050293}, + {-120.98625183105, 37.700271606445}, + {-96.700973510742, 40.814895629883}, + {-85.628128051758, 43.080825805664}, + {-120.4891204834, 37.299270629883}, + {-121.3062286377, 37.951583862305}, + {-118.18336486816, 34.113235473633}, + {-117.96089172363, 34.12971496582}, + {-118.17100524902, 34.004745483398}, + {-117.69996643066, 33.61198425293}, + {-118.0638885498, 33.820724487305}, + {-90.448641, 38.662452}, + {-90.35774230957, 38.591537475586}, + {-93.354263305664, 38.899154663086}, + {-89.982285, 36.803513}, + {-92.162235, 38.549875}, + {-89.160232543945, 37.181167602539}, + {-90.525506, 38.319509}, + {-90.046005249023, 38.591537475586}, + {-92.622299194336, 38.142471313477}, + {-92.605819702148, 38.219375610352}, + {-92.522736, 40.102158}, + {-91.908863, 38.163076}, + {-89.550247192383, 36.641464233398}, + {-90.44563293457, 38.705520629883}, + {-90.029525756836, 38.702774047852}, + {-90.294571, 38.520813}, + {-90.633773803711, 38.532485961914}, + {-94.028549194336, 34.584274291992}, + {-92.332638, 34.768295}, + {-0.46760559082031, 38.38005065918}, + {-0.80955505371094, 38.536605834961}, + {1.416275, 38.936508}, + {2.968369, 39.669846}, + {2.821004, 39.668462}, + {-0.462265, 39.824142}, + {-0.100937, 39.92981}, + {-0.54588317871094, 39.055709838867}, + {-0.99769592285156, 37.628860473633}, + {-1.6967010498047, 37.687911987305}, + {-1.7076873779297, 37.671432495117}, + {0.040512084960938, 40.025253295898}, + {-0.41954040527344, 39.374313354492}, + {-0.829468, 37.642593}, + {-0.46897888183594, 39.493789672852}, + {-0.52803039550781, 39.499282836914}, + {-0.76698303222656, 38.877182006836}, + {-1.7639923095703, 37.608261108398}, + {-0.36186218261719, 39.515762329102}, + {-0.348473, 39.547005}, + {2.654572, 39.5755}, + {2.712572, 39.549862}, + {-66.030852, 18.391613}, + {-66.062237, 18.407965}, + {-67.011108, 18.010025}, + {-66.94882, 18.330983}, + {-66.061821, 18.438148}, + {-96.705093383789, 32.763290405273}, + {-97.037709, 32.675308}, + {-96.887741, 32.622528}, + {-96.91520690918, 32.763290405273}, + {-96.819076538086, 32.809982299805}, + {-96.786117553711, 32.801742553711}, + {-96.694107055664, 32.624588012695}, + {-97.062149047852, 32.923965454102}, + {-96.80534362793, 33.121719360352}, + {-96.824569702148, 32.99674987793}, + {-96.71745300293, 32.870407104492}, + {-96.741798, 32.939072}, + {-96.94747, 32.910887}, + {-97.681503295898, 32.749557495117}, + {-98.990411, 31.688004}, + {-97.170639038086, 33.609237670898}, + {-0.31654357910156, 51.711959838867}, + {-0.90431213378906, 51.537551879883}, + {-1.099013, 51.606334}, + {-1.0402679443359, 51.464767456055}, + {-0.11329650878906, 51.512832641602}, + {0.23414611816406, 51.559524536133}, + {0.21492, 51.87597}, + {-0.10505676269531, 51.507339477539}, + {-0.069351196289062, 51.470260620117}, + {0.041885375976562, 51.515579223633}, + {-0.0020599365234375, 51.508712768555}, + {-0.055618286132812, 51.489486694336}, + {-2.144272, 53.407974}, + {-2.130661, 53.472977}, + {-1.5387725830078, 53.802108764648}, + {-1.3478851318359, 53.416213989258}, + {-1.768204, 53.780136}, + {-1.805715, 53.834994}, + {-1.327286, 54.571152}, + {-0.92903137207031, 43.507919311523}, + {3.211835, 48.892835}, + {3.19852, 43.288265}, + {-1.937022, 48.445363}, + {-1.311309, 48.162883}, + {6.569824, 47.658005}, + {5.3318023681641, 48.064498901367}, + {116.31294250488, 39.979934692383}, + {116.49833679199, 39.959335327148}, + {116.45164489746, 40.014266967773}, + {116.5161895752, 40.056838989258}, + {116.52305603027, 40.04035949707}, + {116.47087097168, 39.903030395508}, + {116.30332946777, 39.946975708008}, + {116.64527893066, 40.308151245117}, + {116.329422, 40.044479}, + {116.38984680176, 40.055465698242}, + {116.41868591309, 40.074691772461}, + {116.19895935059, 40.212020874023}, + {116.75788879395, 40.302658081055}, + {116.40357971191, 40.152969360352}, + {106.48979187012, 29.604721069336}, + {106.590729, 29.538116}, + {106.44584655762, 29.485244750977}, + {113.24775695801, 23.100814819336}, + {113.22715759277, 23.168106079102}, + {113.39195251465, 22.903060913086}, + {113.39744567871, 22.92366027832}, + {113.36311340332, 23.28483581543}, + {-100.07514953613, 21.915664672852}, + {-109.903336, 22.887497}, + {-89.323654174805, 21.327896118164}, + {-107.67356872559, 25.071487426758}, + {-102.98789978027, 25.576858520508}, + {-98.175888, 19.035187}, + {-106.351989, 31.6302}, + {-93.469619750977, 17.70378112793}, + {-86.824264526367, 21.156234741211}, + {-99.179763793945, 19.410781860352}, + {-99.12483215332, 19.40803527832}, + {-102.312135, 21.858092}, + {-93.053512573242, 16.169815063477}, + {-104.59739685059, 24.071731567383}, + {-75.791247, 39.418809}, + {-88.531265, 30.348429}, + {-89.246793, 31.580061}, + {-157.822495, 21.405945}, + {-93.078231811523, 30.247421264648}, + {-95.46501159668, 29.871139526367}, + {-86.589431762695, 34.716110229492}, + {-86.724014282227, 38.734359741211}, + {-85.473289, 41.748734}, + {-86.157303, 39.762039}, + {-85.747943, 40.845605}, + {-82.199020385742, 30.254287719727}, + {-81.710182, 30.085414}, + {-95.004959106445, 37.032852172852}, + {-94.406204223633, 38.92936706543}, + {-93.107175, 37.116689}, + {-94.127426147461, 36.321487426758}, + {-93.068619, 34.475098}, + {-95.463638305664, 39.00764465332}, + {-96.22444152832, 39.066696166992}, + {-82.781295776367, 36.180038452148}, + {29.042143, 41.032167}, + {29.034805297852, 41.155471801758}, + {28.579788, 41.106949}, + {28.681044, 41.033946}, + {29.15153503418, 40.926132202148}, + {29.248352, 40.87532}, + {29.07135, 41.085296}, + {28.962936, 41.099167}, + {28.973007, 41.10054}, + {29.135055541992, 40.983810424805}, + {29.088363647461, 40.97282409668}, + {29.132308959961, 40.974197387695}, + {29.104843139648, 41.027755737305}, + {29.102783, 41.023636}, + {28.879451, 41.000297}, + {28.875503540039, 41.031875610352}, + {28.784866333008, 41.015396118164}, + {28.781584, 40.989208}, + {28.688735961914, 41.049728393555}, + {29.119949, 40.99617}, + {29.074630737305, 40.992050170898}, + {29.081497192383, 40.97282409668}, + {28.999099731445, 41.055221557617}, + {29.001846313477, 41.046981811523}, + {-3.868932, 40.498605}, + {-3.996834, 40.649135}, + {-3.718387, 40.39978}, + {1.817853, 41.729507}, + {2.1292877197266, 41.416397094727}, + {2.134714, 41.364731}, + {2.0908355712891, 41.357345581055}, + {1.3863372802734, 41.152725219727}, + {2.276359, 41.600161}, + {2.1210479736328, 41.375198364258}, + {1.534277, 41.216894}, + {2.177846, 41.419699}, + {1.807079, 41.247053}, + {1.212101, 41.132275}, + {-5.931782, 37.400729}, + {-4.543809, 36.681089}, + {-3.612551, 37.177365}, + {-6.007143, 37.372578}, + {-6.052832, 37.350008}, + {-3.140945, 37.295609}, + {-5.7369232177734, 36.824111938477}, + {-117.84141540527, 33.993759155273}, + {-119.23942565918, 34.264297485352}, + {-119.14604187012, 34.225845336914}, + {-118.12019348145, 33.971786499023}, + {-116.3939666748, 33.723220825195}, + {-118.044957, 33.842991}, + {-117.68760681152, 33.541946411133}, + {-117.72605895996, 33.649063110352}, + {-117.63679504395, 33.544692993164}, + {-118.47862243652, 34.106369018555}, + {-118.36051940918, 34.153060913086}, + {-118.185396, 34.121517}, + {-118.096504, 34.113235}, + {-117.553711, 33.85231}, + {-118.40034484863, 34.011611938477}, + {-118.39485168457, 33.945693969727}, + {-118.34403991699, 33.933334350586}, + {34.960556030273, 31.181259155273}, + {35.036087036133, 32.794876098633}, + {35.170669555664, 32.75505065918}, + {34.740829467773, 31.733322143555}, + {35.092391967773, 32.951431274414}, + {34.857559204102, 32.279891967773}, + {34.953232, 32.103195}, + {35.233557, 31.778028}, + {34.81041, 32.005234}, + {35.28190612793, 31.72233581543}, + {34.926223754883, 32.089004516602}, + {34.45776, 31.508789}, + {35.196763, 31.953049}, + {34.473038, 31.536942}, + {35.242080688477, 31.792373657227}, + {34.298629760742, 31.351547241211}, + {35.246200561523, 32.229080200195}, + {35.148696899414, 32.200241088867}, + {35.192642211914, 31.865158081055}, + {50.615325, 26.191843}, + {50.611726, 26.210816}, + {50.581741333008, 26.135787963867}, + {115.239837, 5.372558}, + {118.60359191895, 4.4583892822266}, + {116.215995, 6.16256}, + {116.095043, 5.978804}, + {116.079689, 5.987259}, + {118.297348, 5.020523}, + {110.36247253418, 1.5525054931641}, + {110.46546936035, 1.6527557373047}, + {110.342436, 1.487796}, + {103.76106262207, 1.5552520751953}, + {103.66493225098, 1.6362762451172}, + {101.60087585449, 3.1757354736328}, + {101.728592, 3.185577}, + {101.778048, 3.349185}, + {101.6805267334, 3.1757354736328}, + {101.60774230957, 3.1661224365234}, + {101.57752990723, 3.1771087646484}, + {101.71485900879, 2.8076934814453}, + {101.89888000488, 2.7266693115234}, + {101.768875, 3.010941}, + {101.75880432129, 2.9120635986328}, + {101.740265, 2.813187}, + {101.51161193848, 3.0466461181641}, + {-89.043502807617, 42.42301940918}, + {-84.176559448242, 39.735488891602}, + {-84.237109, 39.365949}, + {-84.586591, 39.155586}, + {-84.603339, 39.019933}, + {-80.568923950195, 41.364212036133}, + {-81.81999206543, 41.445236206055}, + {-81.449203491211, 41.035995483398}, + {-82.166748, 41.390991}, + {-81.461563110352, 41.101913452148}, + {-81.711502075195, 41.410903930664}, + {-81.683212, 41.496048}, + {-81.353073120117, 41.268081665039}, + {-81.27067565918, 41.247482299805}, + {-81.4494, 41.593355}, + {-81.318740844727, 41.176071166992}, + {-80.961685180664, 34.128341674805}, + {-82.749710083008, 39.835739135742}, + {-82.863693237305, 40.004653930664}, + {-82.741470336914, 39.951095581055}, + {-83.021621704102, 40.114517211914}, + {-82.091903686523, 31.681137084961}, + {-85.097606, 33.329228}, + {-85.228500366211, 34.113235473633}, + {-82.131766, 33.484144}, + {-82.13996887207, 33.368911743164}, + {-84.944315, 34.54299}, + {-84.015541, 33.962173}, + {-84.411392, 33.75618}, + {-84.36017, 34.017478}, + {-84.125332, 33.835596}, + {-84.009017944336, 33.849563598633}, + {-84.500961, 33.631058}, + {-84.107894897461, 34.030838012695}, + {-84.076309204102, 33.900375366211}, + {-84.267526, 33.230068}, + {-84.267196655273, 33.53645324707}, + {-81.210250854492, 32.131576538086}, + {-81.467056274414, 31.186752319336}, + {-84.51301574707, 34.170913696289}, + {-83.426005, 33.925177}, + {6.201474, 52.592381}, + {5.863607, 52.782112}, + {6.8671417236328, 52.692489624023}, + {6.0417938232422, 52.85041809082}, + {6.7160797119141, 53.046798706055}, + {6.4125823974609, 53.361282348633}, + {6.083838, 53.127691}, + {6.5691375732422, 53.243179321289}, + {5.907604, 52.977742}, + {5.9346771240234, 52.958908081055}, + {5.7520294189453, 53.236312866211}, + {4.8635101318359, 51.61994934082}, + {18.079082, 59.49852}, + {17.990864, 59.358444}, + {17.959557, 59.412003}, + {17.621949, 59.865189}, + {15.642596, 58.393691}, + {17.648849487305, 59.145584106445}, + {17.882996, 59.753266}, + {16.458893, 59.425735}, + {15.068011, 59.138432}, + {16.065777, 59.144049}, + {12.990944, 55.707881}, + {13.84895324707, 55.425338745117}, + {11.946512, 57.643565}, + {11.991806, 57.700195}, + {11.801376, 57.737823}, + {12.989273, 57.733841}, + {13.86984, 58.305357}, + {12.145323, 58.083184}, + {-0.84938049316406, 53.445053100586}, + {-1.9438934326172, 52.107467651367}, + {-2.8983306884766, 51.14616394043}, + {-4.0738677978516, 52.408218383789}, + {1.1446380615234, 51.360397338867}, + {-0.110551, 52.452164}, + {-0.18608093261719, 53.933944702148}, + {-2.6744842529297, 53.708724975586}, + {-3.3254241943359, 55.933456420898}, + {-3.6138153076172, 55.868911743164}, + {-1.529503, 54.678612}, + {-1.1006927490234, 50.780868530273}, + {-2.7706146240234, 54.131698608398}, + {-4.066086, 52.404556}, + {-2.4478912353516, 53.075637817383}, + {-3.1359100341797, 51.12419128418}, + {-1.5579986572266, 55.13557434082}, + {-0.15998840332031, 51.992111206055}, + {-0.82328796386719, 52.446670532227}, + {-1.8175506591797, 52.177505493164}, + {-2.2006988525391, 52.180252075195}, + {-2.6607513427734, 53.604354858398}, + {2.1169281005859, 48.668746948242}, + {2.322407, 48.687887}, + {2.403946, 48.649063}, + {2.3146820068359, 48.635787963867}, + {6.0527801513672, 47.331161499023}, + {4.7673797607422, 46.776351928711}, + {2.5247955322266, 50.514450073242}, + {2.860979, 50.158768}, + {3.0644989013672, 50.37712097168}, + {3.00378, 50.382125}, + {6.182081, 46.161118}, + {5.974503, 45.858078}, + {1.633972, 50.626346}, + {5.4073333740234, 45.71891784668}, + {5.4801177978516, 45.71891784668}, + {4.782143, 45.890236}, + {4.885114, 45.745245}, + {4.882507, 45.790558}, + {4.2221832275391, 45.642013549805}, + {3.1043243408203, 45.780715942383}, + {3.125153, 45.772705}, + {-117.187729, 32.743607}, + {-117.06275939941, 32.643814086914}, + {-115.159654, 36.195969}, + {-119.80796813965, 39.514389038086}, + {-93.247146606445, 44.953994750977}, + {-93.170613, 44.804018}, + {-91.451706, 47.95903}, + {-123.31672668457, 42.999801635742}, + {-74.08561706543, 40.847854614258}, + {-94.63005065918, 39.070816040039}, + {-94.590225, 38.952026}, + {-94.90195, 38.993924}, + {-95.851593, 39.096909}, + {-73.981986, 40.682162}, + {-73.955154418945, 40.76545715332}, + {-74.408903, 41.480944}, + {-73.830184936523, 40.713272094727}, + {-73.562393188477, 40.689926147461}, + {-122.90473937988, 44.543380737305}, + {9.9117279052734, 49.018936157227}, + {13.215866088867, 52.531814575195}, + {75.68962097168, 11.447067260742}, + {76.16340637207, 10.183639526367}, + {76.591415, 8.889542}, + {76.27739, 10.838699}, + {75.922394, 10.901184}, + {76.203231811523, 10.16716003418}, + {76.316391, 10.029831}, + {76.922836303711, 9.6672821044922}, + {76.701279, 10.813065}, + {77.120590209961, 10.193252563477}, + {76.259536743164, 9.9419403076172}, + {76.005477905273, 10.87028503418}, + {73.150405883789, 18.97819519043}, + {73.133926391602, 19.243240356445}, + {72.881169, 19.107285}, + {73.000717163086, 19.060592651367}, + {73.130493, 19.24942}, + {73.03894, 19.143906}, + {72.856007, 19.109173}, + {73.042603, 19.011841}, + {72.864304, 19.287003}, + {72.856064, 19.289932}, + {-90.14095, 32.400544}, + {-90.21354675293, 32.417221069336}, + {-89.24469, 31.960603}, + {-90.804061889648, 30.001602172852}, + {-91.005537, 30.424842}, + {-93.803329467773, 30.619583129883}, + {-92.083913, 30.164631}, + {-92.012347, 30.124089}, + {-93.00407409668, 30.243301391602}, + {-94.009323120117, 29.959030151367}, + {-92.888717651367, 31.354293823242}, + {-90.071609, 30.010319}, + {-90.238265991211, 30.04280090332}, + {-90.504771, 30.511637}, + {-89.947128295898, 29.934310913086}, + {-90.439453, 31.03363}, + {-89.234827, 30.468183}, + {-88.115826, 30.653916}, + {-87.873458862305, 30.545425415039}, + {-87.723770141602, 30.362777709961}, + {-87.190025, 30.501324}, + {-86.861181, 30.401804}, + {-86.099166870117, 30.682754516602}, + {-98.512344360352, 33.958053588867}, + {36.609879, 55.122528}, + {88.514785766602, 56.113357543945}, + {50.450592, 58.441773}, + {36.200637817383, 51.75178527832}, + {35.100631713867, 51.62956237793}, + {30.392990112305, 59.863815307617}, + {29.709091186523, 58.505630493164}, + {30.457534790039, 60.406265258789}, + {30.112838745117, 61.048965454102}, + {29.773635864258, 59.914627075195}, + {30.901107788086, 59.850082397461}, + {29.799306, 60.175024}, + {30.290509, 60.369358}, + {30.341217, 60.067028}, + {39.58448, 52.499571}, + {37.447414, 55.570564}, + {35.632095336914, 56.371536254883}, + {38.007888793945, 55.040817260742}, + {7.2557830810547, 43.723526000977}, + {2.3394012451172, 48.844528198242}, + {2.2995758056641, 48.866500854492}, + {9.039436, 51.501303}, + {2.287412, 48.841978}, + {2.2789764404297, 48.826675415039}, + {1.314926, 43.648682}, + {1.833115, 43.786697}, + {1.329658, 43.490067}, + {2.3696136474609, 48.884353637695}, + {2.38266, 48.89534}, + {2.317625, 48.880234}, + {2.331505, 48.885727}, + {2.3943328857422, 48.865127563477}, + {3.032227, 50.657273}, + {3.1221771240234, 50.681991577148}, + {2.657318, 50.732803}, + {4.0848541259766, 43.726272583008}, + {3.4902191162109, 43.312911987305}, + {-0.58342, 44.793091}, + {-0.536118, 44.742661}, + {8.2253265380859, 50.06950378418}, + {8.2788848876953, 50.088729858398}, + {9.7098541259766, 50.558395385742}, + {4.496841, 51.269417}, + {12.412216, 51.28624}, + {12.195510864258, 51.526565551758}, + {12.765426635742, 51.359024047852}, + {12.973487, 51.62613}, + {11.540292, 51.77338}, + {11.915091, 51.477249}, + {11.925659, 51.466141}, + {9.1344451904297, 45.46760559082}, + {9.2855072021484, 45.383834838867}, + {9.7002410888672, 45.02815246582}, + {9.605942, 45.063858}, + {8.9147186279297, 45.002059936523}, + {8.9435577392578, 45.622787475586}, + {8.865808, 45.777969}, + {8.824459, 45.93782}, + {9.1371917724609, 45.626907348633}, + {9.1426849365234, 45.588455200195}, + {9.217565, 45.609413}, + {9.1783905029297, 45.563735961914}, + {9.3376922607422, 45.539016723633}, + {9.2401885986328, 45.558242797852}, + {9.5203399658203, 45.501937866211}, + {9.3115997314453, 45.453872680664}, + {9.2621612548828, 45.510177612305}, + {9.449656, 45.682001}, + {8.8707733154297, 45.382461547852}, + {9.1385650634766, 45.165481567383}, + {2.0894622802734, 41.658096313477}, + {2.023561, 41.572309}, + {2.0853424072266, 41.54411315918}, + {2.1059417724609, 41.548233032227}, + {2.232285, 41.45411}, + {2.174803, 41.412473}, + {2.129288, 41.409805}, + {2.1595001220703, 41.397171020508}, + {2.203271, 41.396803}, + {2.173233, 41.39415}, + {2.1457672119141, 41.398544311523}, + {2.152634, 41.406216}, + {2.1869659423828, 41.408157348633}, + {2.0935821533203, 41.371078491211}, + {2.042313, 41.333084}, + {2.0729827880859, 41.317520141602}, + {1.7378997802734, 41.508407592773}, + {2.1347808837891, 41.344985961914}, + {2.0084381103516, 41.303787231445}, + {10.033950805664, 45.13801574707}, + {9.1880035400391, 45.479965209961}, + {9.4516754150391, 45.315170288086}, + {10.380020141602, 46.232528686523}, + {9.214096, 45.623738}, + {8.9188385009766, 45.596694946289}, + {9.117966, 45.577927}, + {10.746688842773, 45.10368347168}, + {10.775527954102, 45.150375366211}, + {8.978086, 45.399138}, + {8.8254547119141, 45.633773803711}, + {8.852921, 45.648193}, + {19.993057250977, 50.01594543457}, + {19.673080444336, 51.405715942383}, + {22.890914, 49.920966}, + {21.487197, 50.406647}, + {22.087326, 49.637375}, + {21.637802, 50.573044}, + {21.310043, 49.885483}, + {-46.953781, -23.500717}, + {-46.129273, -23.477634}, + {-46.419983, -23.564107}, + {-46.417389, -23.564796}, + {-46.689103, -23.535869}, + {-46.683682, -23.530985}, + {-46.771853, -23.636517}, + {-46.751437, -23.661118}, + {-47.039104, -23.210884}, + {-46.976852416992, -23.135147094727}, + {-49.07112121582, -28.462142944336}, + {-51.504592895508, -29.264144897461}, + {-49.41052, -25.576369}, + {-53.492752, -24.957939}, + {-51.522446, -27.170105}, + {-49.197463989258, -16.59553527832}, + {-50.767135620117, -24.430160522461}, + {-51.758651733398, -22.644882202148}, + {-54.204483032227, -24.199447631836}, + {-53.681259155273, -24.69108581543}, + {67.01042175293, 24.912185668945}, + {67.139511, 24.930725}, + {66.997375, 24.853134}, + {67.008591, 30.218582}, + {73.122940063477, 33.591384887695}, + {71.480484008789, 34.01985168457}, + {73.102340698242, 34.01985168457}, + {74.281997680664, 31.569900512695}, + {74.290924, 31.438065}, + {73.078994750977, 31.472396850586}, + {73.205337524414, 31.475143432617}, + {72.53791809082, 33.925094604492}, + {72.73732, 32.755325}, + {73.084487915039, 33.66828918457}, + {73.085861206055, 33.53645324707}, + {74.31770324707, 31.444931030273}, + {74.409027, 31.47171}, + {74.200973510742, 31.66877746582}, + {74.235305786133, 31.444931030273}, + {73.127059936523, 31.422958374023}, + {66.987075805664, 24.898452758789}, + {67.256240844727, 24.919052124023}, + {67.017288208008, 24.843521118164}, + {67.143902, 24.847388}, + {68.364486694336, 25.379104614258}, + {174.75975, -36.851578}, + {174.826126, -36.878128}, + {174.79042053223, -36.903762817383}, + {174.78492736816, -36.912002563477}, + {174.672131, -36.786215}, + {174.90852355957, -36.939468383789}, + {174.61886, -36.935719}, + {174.77119445801, -36.921615600586}, + {174.90303, -36.864853}, + {174.94422912598, -37.167434692383}, + {174.754715, -41.292801}, + {174.72312927246, -41.298294067383}, + {174.34959411621, -35.846328735352}, + {175.315522, -37.907031}, + {176.27220153809, -38.215255737305}, + {176.79267883301, -39.695663452148}, + {175.838988, -40.337662}, + {173.28907, -41.265335}, + {170.503464, -45.875015}, + {172.576942, -43.541031}, + {-105.100466, 39.694735}, + {-104.926758, 39.847298}, + {-104.857217, 39.591796}, + {-104.772263, 39.521255}, + {-105.085602, 39.829216}, + {-105.041932, 40.183182}, + {-104.984837, 40.546761}, + {-104.702682, 40.423508}, + {-104.813845, 38.848121}, + {-104.72785949707, 38.818130493164}, + {-105.085456, 38.43594}, + {-104.88990783691, 40.450973510742}, + {-81.822739, 39.972382}, + {-83.021127, 40.001907}, + {-82.831077, 40.084648}, + {-82.640435, 39.678399}, + {-82.613505, 39.888923}, + {-83.111572, 40.090897}, + {-82.97905, 39.143875}, + {-121.96403503418, 37.365188598633}, + {-121.8775177002, 37.24983215332}, + {-96.339798, 46.659624}, + {-90.767857, 41.515649}, + {-83.107864, 42.611435}, + {-83.50227355957, 42.383193969727}, + {-1.256142, 49.620079}, + {0.729715, 47.397749}, + {5.583778, 43.249605}, + {5.399653, 43.297801}, + {9.427296, 42.931884}, + {6.469012, 46.367349}, + {6.027104, 47.234508}, + {2.218525, 42.934182}, + {-78.62109, 35.826367}, + {-78.874796, 35.66118}, + {-79.113635, 35.446345}, + {-78.986086, 36.355933}, + {-79.033584594727, 35.968551635742}, + {-77.900489, 34.055361}, + {-78.826401, 34.353012}, + {-77.050552368164, 35.538711547852}, + {-78.998222, 35.005646}, + {-77.778396606445, 35.670547485352}, + {-80.877914, 35.165551}, + {-80.457228, 34.888687}, + {-79.676284790039, 35.376663208008}, + {-80.720957, 35.396023}, + {-80.746222, 35.43748}, + {-80.852667, 35.235214}, + {-80.963665, 35.296987}, + {-80.974994, 34.937697}, + {-80.384346, 36.128964}, + {-79.780654907227, 35.497512817383}, + {-80.096904, 36.078219}, + {-79.83077, 36.078152}, + {-79.72435, 36.177292}, + {-80.388957, 35.717443}, + {-80.111618041992, 32.999496459961}, + {2.354507, 48.754283}, + {2.4231719970703, 48.753890991211}, + {2.7417755126953, 48.395462036133}, + {2.51152, 48.776321}, + {2.5083160400391, 48.797836303711}, + {2.445145, 48.761673}, + {2.307987, 48.609303}, + {2.6566314697266, 48.859634399414}, + {1.987381, 48.939743}, + {1.7996978759766, 48.801956176758}, + {2.4382781982422, 48.720932006836}, + {2.7733612060547, 48.856887817383}, + {2.541962, 48.899803}, + {2.599365, 48.868973}, + {2.5399017333984, 48.924179077148}, + {3.9104461669922, 49.072494506836}, + {2.845545, 48.886442}, + {3.2704925537109, 48.266372680664}, + {6.9097137451172, 45.541763305664}, + {-50.223821, -29.795616}, + {-52.223168, -15.848465}, + {-54.690634, -21.709676}, + {-53.820178, -22.020653}, + {-55.784625, -29.781182}, + {-49.12512, -25.533246}, + {-50.324935913086, -26.102828979492}, + {-53.162155, -27.750092}, + {-48.53966, -16.560308}, + {-55.126648, -30.71228}, + {-53.137163, -18.122086}, + {-54.536643, -19.462146}, + {-51.134018, -29.704361}, + {-55.694784, -12.535445}, + {-54.838901, -22.670124}, + {-57.651632, -19.013924}, + {-47.998580932617, -16.069564819336}, + {-51.997355, -22.577333}, + {-48.554043, -22.463827}, + {-70.659256, -33.54435}, + {-70.649642944336, -33.447189331055}, + {-70.590701, -33.456363}, + {-70.717198, -33.438905}, + {-71.60270690918, -33.039321899414}, + {-70.77383, -34.046275}, + {-70.651016235352, -33.466415405273}, + {-70.690841674805, -33.425216674805}, + {-70.649642944336, -33.418350219727}, + {-71.238784790039, -29.894485473633}, + {-71.291243, -32.986313}, + {-76.324081420898, 2.7129364013672}, + {-76.560287475586, 3.4339141845703}, + {-74.043869, 4.700089}, + {-74.034119, 4.708328}, + {-74.132308959961, 4.6039581298828}, + {-74.055404663086, 4.6973419189453}, + {0.87272644042969, 41.509780883789}, + {3.1468963623047, 41.964340209961}, + {0.742264, 42.400654}, + {1.189499, 41.252976}, + {1.133995, 41.143112}, + {1.144363, 41.080765}, + {0.92353820800781, 41.037368774414}, + {1.3904571533203, 41.159591674805}, + {1.565781, 41.391678}, + {2.2103118896484, 41.526260375977}, + {2.5659942626953, 41.594924926758}, + {1.814256, 41.772862}, + {1.877804, 42.018929}, + {0.77659606933594, 41.728134155273}, + {3.177305, 42.049288}, + {2.9999542236328, 41.809158325195}, + {3.077545, 42.146301}, + {-5.4045867919922, 37.168807983398}, + {-5.2603912353516, 37.701644897461}, + {-6.1241912841797, 37.593154907227}, + {-5.9827423095703, 37.392654418945}, + {-5.9580230712891, 37.355575561523}, + {119.87113952637, -0.91529846191406}, + {119.90409851074, -0.91804504394531}, + {122.78938293457, -0.95100402832031}, + {122.71797180176, -4.8305511474609}, + {122.51884460449, -3.9763641357422}, + {122.51197814941, -3.9777374267578}, + {121.60148620605, -4.1960906982422}, + {124.92073059082, 1.5305328369141}, + {123.0558013916, 0.58021545410156}, + {123.11622619629, 0.53764343261719}, + {124.83558654785, 1.4783477783203}, + {124.8349, 1.478348}, + {124.7875213623, 1.5909576416016}, + {124.88777160645, 1.4893341064453}, + {132.74024963379, -5.6531524658203}, + {127.37754821777, 0.78346252441406}, + {140.71495056152, -2.5385284423828}, + {140.39085388184, -8.4889984130859}, + {119.43717956543, -5.1766204833984}, + {131.259499, -0.87719}, + {95.93879699707, 5.0269317626953}, + {106.81938171387, -6.4057159423828}, + {101.23970031738, -1.7873382568359}, + {78.551102, 17.455215}, + {78.362045288086, 17.497787475586}, + {78.622696, 17.496414}, + {78.579025268555, 17.449722290039}, + {78.44856262207, 17.438735961914}, + {78.444442749023, 17.444229125977}, + {78.504867553711, 17.434616088867}, + {78.504279, 17.383412}, + {78.41629, 17.346039}, + {78.332232, 17.46851}, + {81.039962768555, 16.719131469727}, + {84.13948059082, 18.787307739258}, + {79.990768432617, 14.484786987305}, + {77.422714233398, 15.741348266602}, + {77.64518737793, 15.617752075195}, + {77.880020141602, 16.057205200195}, + {78.48341, 17.398396}, + {80.426788, 16.296415}, + {82.554703, 17.365265}, + {83.313446, 17.709274}, + {78.399124145508, 17.404403686523}, + {79.867172, 16.488876}, + {32.871927, 39.978706}, + {32.89924621582, 40.015640258789}, + {32.546310424805, 39.878311157227}, + {32.866287231445, 39.905776977539}, + {32.829934, 39.871398}, + {32.805862426758, 39.889297485352}, + {32.814102172852, 39.912643432617}, + {32.78938293457, 39.898910522461}, + {30.705596, 36.893134}, + {30.999984741211, 36.862564086914}, + {31.414096, 36.788209}, + {32.069103, 36.483801}, + {30.652542114258, 36.870803833008}, + {30.725326538086, 36.892776489258}, + {27.286605834961, 37.38166809082}, + {28.041915893555, 37.85270690918}, + {27.903776, 39.664891}, + {28.157786, 39.912168}, + {32.895126342773, 39.977188110352}, + {32.892379760742, 39.927749633789}, + {29.827194213867, 37.027359008789}, + {29.065682, 40.190518}, + {29.060897827148, 40.20378112793}, + {29.067764282227, 40.265579223633}, + {31.308975, 31.105453}, + {31.032943725586, 30.430068969727}, + {31.22932434082, 30.15266418457}, + {30.528945922852, 30.980758666992}, + {30.946426391602, 31.098861694336}, + {31.281509399414, 30.309219360352}, + {29.884872436523, 31.182632446289}, + {31.407166, 30.154037}, + {31.182632446289, 30.060653686523}, + {31.329746, 30.06752}, + {31.265029907227, 29.956283569336}, + {31.234406, 30.151291}, + {30.015335083008, 31.277389526367}, + {30.06477355957, 31.315841674805}, + {31.855545043945, 31.189498901367}, + {31.71272277832, 31.319961547852}, + {31.284256, 31.113968}, + {31.039810180664, 30.39436340332}, + {31.479229, 30.582032}, + {30.895614624023, 29.941177368164}, + {31.312472, 29.956898}, + {31.07071, 29.821358}, + {31.333694458008, 29.846420288086}, + {31.104354858398, 29.069137573242}, + {-79.480513, 36.13122}, + {-80.262964, 36.038064}, + {-80.468678, 35.584448}, + {-80.866195, 35.222821}, + {-79.926223754883, 36.120986938477}, + {-80.995207, 35.258566}, + {-81.710472, 36.225014}, + {-81.001510620117, 35.275039672852}, + {-80.080719, 34.915237}, + {-77.713607, 34.371989}, + {-77.636237, 35.308601}, + {-78.96354675293, 35.14045715332}, + {-78.904312, 35.809357}, + {-77.86793, 34.243351}, + {-78.67589, 35.914738}, + {-78.822098, 35.071716}, + {-78.672906, 35.834111}, + {-78.6613, 36.116837}, + {-77.053024, 35.548187}, + {-80.908126831055, 34.158554077148}, + {-78.554306, 35.171127}, + {-82.869186401367, 34.518356323242}, + {106.67381286621, -6.3095855712891}, + {106.72462463379, -6.2752532958984}, + {106.686339, -6.304966}, + {106.86470031738, -6.1708831787109}, + {121.059723, 14.597397}, + {121.06163, 14.627304}, + {121.05835, 14.615936}, + {121.0782623291, 14.638595581055}, + {121.080597, 14.604538}, + {121.09748840332, 14.616622924805}, + {121.10160827637, 14.619369506836}, + {121.041183, 14.547043}, + {121.00547790527, 14.564437866211}, + {121.02333068848, 14.553451538086}, + {121.01097106934, 14.509506225586}, + {121.00685119629, 14.513626098633}, + {121.0164642334, 14.541091918945}, + {121.07963562012, 14.672927856445}, + {120.98625183105, 14.623489379883}, + {120.9903717041, 14.601516723633}, + {16.153894, 50.409642}, + {17.43186, 49.369817}, + {13.648453, 50.503464}, + {17.365951538086, 48.925552368164}, + {13.35319519043, 49.757766723633}, + {14.436721801758, 50.065383911133}, + {14.435348510742, 50.079116821289}, + {14.475173950195, 50.161514282227}, + {16.580429077148, 49.086227416992}, + {13.78303527832, 49.062881469727}, + {16.979408, 49.967919}, + {16.602402, 49.21051}, + {16.574935913086, 49.186477661133}, + {16.635360717773, 49.229049682617}, + {16.594161987305, 49.197463989258}, + {17.450666, 49.040651}, + {15.888290405273, 49.213943481445}, + {15.755138, 60.338974}, + {13.725357055664, 59.604263305664}, + {18.07964, 59.337845}, + {18.059752, 59.340081}, + {18.122831, 59.444962}, + {18.027877807617, 59.299392700195}, + {18.097915649414, 59.289779663086}, + {18.042812, 59.314846}, + {18.669204711914, 59.296646118164}, + {17.627858, 59.213072}, + {12.314987, 57.669754}, + {12.982406616211, 55.594253540039}, + {13.265304, 55.812149}, + {12.807998657227, 55.583267211914}, + {17.598587, 59.873154}, + {17.301555, 59.055813}, + {15.054702758789, 57.059555053711}, + {13.041458129883, 56.140823364258}, + {12.957687, 56.764984}, + {12.286148071289, 58.284530639648}, + {12.358932495117, 58.559188842773}, + {16.571012, 59.6435}, + {82.999649047852, 25.29670715332}, + {80.257186889648, 26.499710083008}, + {80.954818725586, 26.858139038086}, + {77.730331420898, 28.933181762695}, + {77.542190551758, 29.938430786133}, + {77.664413, 28.708649}, + {77.646904, 27.526588}, + {87.965469360352, 22.463607788086}, + {87.84049987793, 24.26399230957}, + {88.135757446289, 23.805313110352}, + {87.32551574707, 23.761367797852}, + {88.676834106445, 26.858139038086}, + {86.914901733398, 23.162612915039}, + {87.528076, 23.902817}, + {87.43537902832, 23.817672729492}, + {87.955856323242, 26.024551391602}, + {88.102798461914, 23.067855834961}, + {88.65348815918, 27.110824584961}, + {87.872017, 23.246796}, + {87.861099243164, 22.368850708008}, + {88.266392, 27.04113}, + {88.45573425293, 26.723556518555}, + {87.635193, 22.561111}, + {88.377456665039, 26.737289428711}, + {-103.85719299316, 48.131790161133}, + {-108.65821838379, 45.861740112305}, + {-107.646106, 46.089708}, + {-112.148387, 47.760133}, + {-120.53993225098, 47.019424438477}, + {-122.354595, 47.625534}, + {-123.392576, 47.196937}, + {-122.25105285645, 47.502822875977}, + {-122.25517272949, 47.202072143555}, + {-122.29362487793, 47.572860717773}, + {-122.191658, 47.635345}, + {-122.323053, 47.59346}, + {-118.623, 46.862517}, + {-122.190628, 47.777481}, + {-122.25379943848, 48.510818481445}, + {-122.575836, 47.090836}, + {-122.350616, 47.327042}, + {-122.32933044434, 47.692337036133}, + {-122.314028, 47.663302}, + {-122.1851348877, 47.666244506836}, + {12.253532, 45.649295}, + {11.418915, 44.458237}, + {10.404739379883, 44.737014770508}, + {10.937576293945, 44.634017944336}, + {11.06575, 44.898605}, + {10.967788696289, 45.460739135742}, + {10.705488, 46.30623}, + {13.441772, 45.805435}, + {12.823104858398, 45.801315307617}, + {11.32457, 46.486478}, + {10.347061, 44.775238}, + {10.715603, 44.957116}, + {12.433914, 42.02103}, + {12.58461, 41.941223}, + {12.387899, 41.829554}, + {12.751693725586, 41.58805847168}, + {12.473118, 41.911386}, + {12.540894, 41.875076}, + {-3.693466, 40.378876}, + {-3.5959625244141, 40.534744262695}, + {-3.69182, 40.27017}, + {2.227478, 41.814652}, + {2.088674, 41.548474}, + {2.182354, 41.490312}, + {2.2267913818359, 41.485061645508}, + {2.184494, 41.393268}, + {2.154922, 41.370163}, + {2.112122, 41.404037}, + {1.785278, 41.249886}, + {0.69694519042969, 41.63200378418}, + {0.47721862792969, 41.962966918945}, + {1.6294097900391, 41.199417114258}, + {1.906914, 41.997323}, + {-3.6330413818359, 40.53337097168}, + {-5.8179473876953, 37.616500854492}, + {-5.1299285888672, 37.080917358398}, + {-5.9635162353516, 37.372055053711}, + {51.681747, 32.694351}, + {51.047286987305, 35.692520141602}, + {51.606216430664, 35.744705200195}, + {49.899215698242, 36.266555786133}, + {47.469863891602, 34.28352355957}, + {51.339797973633, 35.715866088867}, + {51.40022277832, 35.654067993164}, + {54.545059204102, 28.743667602539}, + {60.627365112305, 25.322799682617}, + {51.640548706055, 32.638320922852}, + {61.50764465332, 25.844650268555}, + {52.714462, 36.524048}, + {46.20231628418, 33.16291809082}, + {51.507339477539, 36.642837524414}, + {51.448287963867, 35.68977355957}, + {59.598427, 36.33934}, + {51.665267944336, 32.661666870117}, + {55.514602661133, 37.475051879883}, + {51.415328979492, 35.80924987793}, + {51.451819, 35.774918}, + {51.423568725586, 35.80924987793}, + {56.344659, 27.201854}, + {51.758651733398, 32.616348266602}, + {57.586213, 37.476082}, + {9.216314, 60.479952}, + {6.166764, 62.116699}, + {16.842122, 68.581881}, + {15.969314575195, 67.002182006836}, + {8.761312, 59.885368}, + {6.068499, 58.385525}, + {10.814667, 59.868622}, + {10.690383911133, 59.939346313477}, + {16.11213684082, 69.237899780273}, + {27.62580871582, 62.886428833008}, + {27.900466918945, 62.92350769043}, + {28.024063110352, 61.168441772461}, + {26.582107543945, 60.90202331543}, + {25.122299194336, 60.205764770508}, + {18.772659, 48.17482}, + {20.465469, 49.234543}, + {17.223129272461, 48.197708129883}, + {18.498917, 49.150772}, + {19.555125, 48.454835}, + {15.487289428711, 46.714553833008}, + {79.341201782227, 28.247909545898}, + {79.419479370117, 28.341293334961}, + {79.634399, 29.24286}, + {78.092880249023, 27.87712097168}, + {79.646072, 29.645233}, + {78.265914916992, 27.211074829102}, + {79.242324829102, 28.528060913086}, + {77.875900268555, 29.878005981445}, + {77.430953979492, 27.553024291992}, + {78.004989624023, 30.296859741211}, + {78.087387084961, 29.864273071289}, + {78.253555297852, 28.83430480957}, + {78.039321899414, 29.912338256836}, + {79.043197631836, 26.767501831055}, + {87.681198120117, 23.882217407227}, + {87.472457885742, 22.372970581055}, + {87.505416870117, 21.620407104492}, + {87.340621948242, 22.73551940918}, + {88.529892, 27.17308}, + {88.174897, 27.136232}, + {87.164840698242, 23.585586547852}, + {88.536758422852, 23.554000854492}, + {14.682540893555, 50.175247192383}, + {14.97917175293, 49.992599487305}, + {14.536972045898, 50.12580871582}, + {14.412002563477, 50.077743530273}, + {14.501266479492, 50.08186340332}, + {14.418869018555, 50.072250366211}, + {16.603775024414, 49.219436645508}, + {16.592788696289, 49.19059753418}, + {16.631240844727, 49.182357788086}, + {16.601028442383, 49.153518676758}, + {16.882467, 49.202528}, + {16.522750854492, 49.30046081543}, + {15.950088500977, 49.570999145508}, + {16.77131652832, 48.854141235352}, + {18.268204, 49.806519}, + {18.247604, 49.751587}, + {18.349227905273, 49.680862426758}, + {18.254471, 49.854878}, + {18.225631713867, 49.801712036133}, + {142.05528259277, 47.046890258789}, + {37.613411, 55.734673}, + {37.639846801758, 55.732955932617}, + {37.648207, 55.742194}, + {37.634353637695, 55.790634155273}, + {37.646881, 55.772287}, + {65.604996, 57.122726}, + {61.331025, 55.491785}, + {58.967056274414, 53.392868041992}, + {58.897018432617, 53.414840698242}, + {113.42353820801, 52.229690551758}, + {37.92984, 55.915833}, + {43.023344, 44.041345}, + {43.045513, 44.057236}, + {43.089066, 44.099121}, + {41.93000793457, 57.194137573242}, + {40.989303588867, 57.00325012207}, + {82.921371459961, 55.046310424805}, + {10.205612182617, 55.327835083008}, + {10.450745, 55.369034}, + {10.715103149414, 55.403366088867}, + {10.451431274414, 55.360794067383}, + {12.53059387207, 54.974899291992}, + {12.239456, 55.340652}, + {12.22847, 55.538979}, + {11.861801147461, 54.760665893555}, + {12.177924, 55.507091}, + {11.290962, 55.679803}, + {12.302438, 55.753218}, + {12.102814, 55.640945}, + {12.221603393555, 55.657424926758}, + {12.478408813477, 55.910110473633}, + {12.44270324707, 55.827713012695}, + {12.371292114258, 55.830459594727}, + {12.561035, 55.852203}, + {12.556686401367, 55.71647644043}, + {12.518692, 55.739822}, + {12.484249, 55.726568}, + {12.538833618164, 55.710983276367}, + {12.581405639648, 55.665664672852}, + {12.571792602539, 55.668411254883}, + {37.400894165039, 40.684432983398}, + {36.328353881836, 41.274948120117}, + {35.41374206543, 41.640243530273}, + {39.74478, 40.998353}, + {33.609237670898, 39.670944213867}, + {41.621017456055, 38.161697387695}, + {33.367538452148, 35.199508666992}, + {30.248794555664, 37.387161254883}, + {30.555038452148, 36.613998413086}, + {32.48176574707, 36.130599975586}, + {30.639645, 36.901465}, + {29.338302612305, 37.067184448242}, + {28.831558227539, 40.957717895508}, + {28.374939, 41.077194}, + {28.415451049805, 41.059341430664}, + {28.816177, 41.044235}, + {28.919448852539, 41.000289916992}, + {28.824691772461, 40.96321105957}, + {27.715773, 38.186427}, + {26.93229675293, 38.800277709961}, + {29.413833618164, 40.843734741211}, + {26.304702758789, 38.315505981445}, + {30.151290893555, -23.813552856445}, + {29.983749389648, -22.235641479492}, + {28.706588745117, -24.548263549805}, + {29.508590698242, -23.87809753418}, + {30.457534790039, -22.973098754883}, + {31.69281, -25.662689}, + {31.113624, -24.895706}, + {29.45915222168, -25.76774597168}, + {26.183853149414, -29.225692749023}, + {29.487991333008, -23.891830444336}, + {26.815567016602, -28.025436401367}, + {20.34049987793, -28.596725463867}, + {25.593338012695, -33.864669799805}, + {25.326919555664, -34.001998901367}, + {28.166885375977, -32.338943481445}, + {23.457870483398, -34.003372192383}, + {22.209548950195, -34.058303833008}, + {25.581208, -33.927384}, + {25.471115, -33.947068}, + {25.611190795898, -33.984146118164}, + {31.2075, -29.527364}, + {103.83522033691, 1.3932037353516}, + {103.8777923584, 1.3794708251953}, + {103.855231, 1.371035}, + {103.77479553223, 1.3451385498047}, + {103.7377166748, 1.3204193115234}, + {103.79539489746, 1.2984466552734}, + {103.69926452637, 1.3465118408203}, + {103.73497009277, 1.3410186767578}, + {103.62785339355, 1.3121795654297}, + {103.768403, 1.434989}, + {103.889743, 1.331624}, + {103.79814147949, 1.4330291748047}, + {103.865433, 1.322021}, + {103.97529602051, 1.3657379150391}, + {103.826981, 1.286774}, + {103.95332336426, 1.3396453857422}, + {103.88465881348, 1.3135528564453}, + {103.863235, 1.40007}, + {114.92866516113, 4.8992156982422}, + {50.070877, 26.342468}, + {42.675591, 17.108231}, + {50.168011, 26.328897}, + {46.589584350586, 24.601821899414}, + {46.704940795898, 24.673233032227}, + {46.664527, 24.676176}, + {46.728286743164, 24.666366577148}, + {46.703567504883, 24.92317199707}, + {46.693344, 24.572934}, + {39.124374, 21.677693}, + {39.124374389648, 21.68083190918}, + {39.227972, 21.567023}, + {39.221878051758, 21.418533325195}, + {39.234237670898, 21.520156860352}, + {50.088769, 26.420392}, + {50.036544799805, 26.465377807617}, + {49.564464, 25.334963}, + {36.649703979492, 28.422317504883}, + {39.519196, 24.454536}, + {49.908828735352, 26.205825805664}, + {50.096969604492, 26.435165405273}, + {49.601211, 27.05246}, + {50.14621, 26.344487}, + {100.48164367676, 6.9824981689453}, + {99.995498657227, 9.7180938720703}, + {100.4761505127, 7.0497894287109}, + {100.574353, 13.785794}, + {100.707393, 13.922458}, + {100.421097, 13.911442}, + {100.603973, 13.593357}, + {100.539334, 13.720484}, + {100.541295, 13.718952}, + {100.513639, 13.676965}, + {100.677844, 13.773869}, + {103.76518249512, 1.3039398193359}, + {103.83175, 1.42123}, + {103.959789, 1.3534}, + {103.961939, 1.342958}, + {103.71711730957, 1.2284088134766}, + {103.69789123535, 1.3890838623047}, + {103.801975, 1.343937}, + {103.94645690918, 1.3368988037109}, + {103.93821716309, 1.3492584228516}, + {103.828712, 1.292914}, + {7.4040985107422, 9.0767669677734}, + {7.4974822998047, 9.0602874755859}, + {3.447189, 6.798477}, + {7.0250701904297, 4.8401641845703}, + {7.0497894287109, 4.8278045654297}, + {6.6597747802734, 4.8964691162109}, + {8.5192108154297, 12.019729614258}, + {13.147202, 11.820602}, + {6.5416717529297, 9.6411895751953}, + {8.2569122314453, 4.8017120361328}, + {7.9959869384766, 5.1642608642578}, + {7.9190826416016, 5.0406646728516}, + {6.7325592041016, 6.1928558349609}, + {6.7504119873047, 6.1379241943359}, + {3.4929656982422, 6.4345550537109}, + {3.436208, 6.456437}, + {3.4270477294922, 6.4221954345703}, + {7.411079, 9.058914}, + {7.1665191650391, 9.2072296142578}, + {7.482719, 8.999691}, + {6.6570281982422, 7.8339385986328}, + {7.055283, 4.83728}, + {7.016144, 4.798965}, + {103.382893, 3.961903}, + {102.80662536621, 3.6261749267578}, + {101.678669, 3.148233}, + {101.718291, 3.123503}, + {101.70829, 3.154521}, + {103.164573, 5.214769}, + {102.488998, 5.726725}, + {103.416039, 4.757995}, + {101.48963928223, 3.0837249755859}, + {101.629817, 3.078858}, + {101.59950256348, 3.3652496337891}, + {101.722623, 3.226722}, + {101.69425964355, 3.2073211669922}, + {101.626139, 2.938975}, + {101.640988, 2.917058}, + {101.71760559082, 3.0988311767578}, + {101.53401, 3.194587}, + {101.69563293457, 3.0919647216797}, + {101.61460876465, 3.2004547119141}, + {101.5047454834, 3.0782318115234}, + {101.595344, 3.124062}, + {101.599915, 3.101578}, + {101.58576965332, 3.1084442138672}, + {100.92933654785, 14.524612426758}, + {100.92933654785, 14.521865844727}, + {99.847183227539, 12.917861938477}, + {101.04881286621, 13.545455932617}, + {99.160537719727, 9.1193389892578}, + {98.364028930664, 7.8586578369141}, + {102.80387878418, 17.762832641602}, + {103.643646, 18.368454}, + {104.85420227051, 15.259323120117}, + {100.56816101074, 13.758316040039}, + {100.56266784668, 13.744583129883}, + {100.645504, 13.989909}, + {100.613312, 13.781066}, + {100.543399, 13.747951}, + {100.364492, 13.781524}, + {100.436329, 13.691814}, + {100.538516, 13.636109}, + {100.6175994873, 13.984909057617}, + {101.142943, 12.682018}, + {100.501968, 13.722185}, + {100.60523986816, 14.067306518555}, + {100.844604, 13.820531}, + {-117.864914, 33.61702}, + {-118.040935, 33.691929}, + {-118.016129, 33.731461}, + {-117.682504, 33.754519}, + {-117.662777, 33.587172}, + {-118.31956, 33.934469}, + {-118.11744689941, 34.135208129883}, + {-118.380033, 33.815573}, + {-118.0542755127, 34.044570922852}, + {-118.43565, 34.148388}, + {-118.160942, 34.036922}, + {-118.39485168457, 33.988265991211}, + {-118.352554, 33.905319}, + {-119.067217, 34.355633}, + {-119.22157287598, 34.194259643555}, + {-120.665862, 35.294749}, + {-117.7027130127, 34.120101928711}, + {-116.85539245605, 33.883895874023}, + {-116.998901, 33.468132}, + {-116.361694, 33.754807}, + {-115.365308, 35.519657}, + {-117.046009, 33.861489}, + {-117.441374, 33.949923}, + {-58.493707, -34.879038}, + {-58.489151000977, -34.878158569336}, + {-58.399887084961, -34.626846313477}, + {-58.038711547852, -34.985275268555}, + {-58.84895324707, -34.324722290039}, + {-58.701324, -34.60762}, + {-58.435592651367, -34.60075378418}, + {-58.445205688477, -34.584274291992}, + {-58.509750366211, -34.565048217773}, + {-58.479539, -34.691391}, + {-58.732223510742, -34.596633911133}, + {-58.449325561523, -34.713363647461}, + {-58.490524291992, -34.655685424805}, + {-58.502883911133, -34.55680847168}, + {-58.623733520508, -34.555435180664}, + {-58.38752746582, -34.647445678711}, + {-58.371047973633, -34.655685424805}, + {100.59700012207, 13.592147827148}, + {100.84831237793, 13.615493774414}, + {101.73408508301, 12.780532836914}, + {100.943756, 12.865677}, + {102.04307556152, 14.758071899414}, + {99.017715454102, 18.806533813477}, + {100.323029, 13.782349}, + {100.118565, 13.479797}, + {99.663162231445, 8.1690216064453}, + {100.41098, 13.724979}, + {100.41160583496, 13.710250854492}, + {100.435261, 6.967341}, + {100.36079406738, 13.711624145508}, + {100.34980773926, 13.696517944336}, + {100.4061126709, 13.719863891602}, + {100.45829772949, 13.71711730957}, + {100.409901, 13.686929}, + {100.6258392334, 13.767929077148}, + {100.65467834473, 13.774795532227}, + {100.67802429199, 13.71711730957}, + {100.60386657715, 13.721237182617}, + {100.60523986816, 13.674545288086}, + {100.57228088379, 13.729476928711}, + {100.68077087402, 13.780288696289}, + {16.374414, 45.493423}, + {17.503884, 43.024401}, + {15.730987, 44.219704}, + {15.624618530273, 44.123153686523}, + {18.405532836914, 42.506790161133}, + {16.000900268555, 45.795822143555}, + {15.47492980957, 44.147872924805}, + {14.472427368164, 45.33576965332}, + {18.012771606445, 45.508804321289}, + {19.403915, 45.226593}, + {17.13749, 45.997692}, + {19.59342956543, 43.984451293945}, + {19.636636, 45.59869}, + {21.840152, 43.244263}, + {-76.915313, 38.802427}, + {-77.00798034668, 38.873062133789}, + {-76.991500854492, 38.882675170898}, + {-77.057365, 38.907637}, + {-77.023086547852, 38.890914916992}, + {-77.018966674805, 38.893661499023}, + {-76.510848999023, 39.320755004883}, + {-76.598739624023, 39.289169311523}, + {-76.652297973633, 39.437484741211}, + {-76.539044, 39.418044}, + {-76.181259155273, 39.521255493164}, + {-76.573824, 39.319578}, + {-75.717086791992, 38.09440612793}, + {-75.911503, 38.715005}, + {-75.57014465332, 38.400650024414}, + {-75.302068, 38.242674}, + {-76.949303, 38.638229}, + {-76.649551391602, 39.177932739258}, + {-76.912601, 38.626857}, + {-76.722389, 38.947361}, + {-76.693496704102, 39.224624633789}, + {-77.060251, 38.635998}, + {-76.426083, 38.37775}, + {-75.206503, -12.058271}, + {-78.509889, -7.157025}, + {-77.071151733398, -11.870040893555}, + {-76.936569213867, -12.071914672852}, + {-77.072062, -12.085982}, + {-77.032934, -12.029728}, + {-77.058942, -11.993606}, + {-77.03243, -12.113349}, + {-79.050778, -8.067413}, + {-79.856185913086, -6.7600250244141}, + {-77.049233, -12.060229}, + {-71.54784, -16.426015}, + {-77.097244262695, -12.016983032227}, + {-76.856918334961, -12.001876831055}, + {-76.783714, -12.37417}, + {-74.552536010742, -8.3846282958984}, + {-79.053367, -8.141547}, + {-69.2248, -51.627936}, + {-78.500526, -7.175077}, + {-56.686019897461, -36.607131958008}, + {-68.843765258789, -33.04069519043}, + {-64.170456, -31.463242}, + {10.120468139648, 57.098007202148}, + {10.541244, 57.721756}, + {9.2154693603516, 56.853561401367}, + {9.8966217041016, 57.049942016602}, + {9.4654083251953, 57.093887329102}, + {9.8966217041016, 57.055435180664}, + {8.6812591552734, 56.357803344727}, + {9.4008636474609, 56.440200805664}, + {9.357224, 56.120682}, + {9.962265, 56.224594}, + {10.065536499023, 56.444320678711}, + {9.86778, 56.213609}, + {10.212478637695, 56.15592956543}, + {9.9240875244141, 56.050186157227}, + {10.20149230957, 56.175155639648}, + {10.143126, 56.150436}, + {8.8666534423828, 55.006484985352}, + {9.2099761962891, 54.941940307617}, + {9.0699005126953, 55.488510131836}, + {9.757135, 55.861261}, + {9.566573, 55.672989}, + {9.449616, 55.448685}, + {9.782795, 55.579064}, + {-77.62321472168, 37.407760620117}, + {-77.348557, 37.266426}, + {-77.433243, 37.226944}, + {-81.188605, 34.117879}, + {-81.018071, 34.037704}, + {-80.682449, 34.158554}, + {-80.850448, 33.588638}, + {-82.788037, 34.689144}, + {-82.153641, 33.504929}, + {-81.982613, 33.510819}, + {-81.774673461914, 41.445236206055}, + {-72.837295532227, 41.285934448242}, + {-72.846505, 41.441682}, + {-73.161941, 41.388382}, + {-74.704668, 40.156345}, + {-73.414078, 41.547775}, + {-75.093956, 39.70768}, + {-74.58137512207, 39.411392211914}, + {-74.972305, 39.81514}, + {-75.041428, 39.739609}, + {-73.833724, 42.698945}, + {-73.780189, 42.630944}, + {-96.939926147461, 32.937698364258}, + {-97.062149047852, 32.697372436523}, + {13.729351, 54.130201}, + {14.203066, 53.928942}, + {13.055191040039, 54.329452514648}, + {11.653060913086, 51.974258422852}, + {11.659927368164, 52.088241577148}, + {11.964112, 52.146378}, + {12.528326, 52.411941}, + {11.796707, 51.845719}, + {13.19938659668, 52.677383422852}, + {13.293533, 52.629318}, + {7.2090911865234, 52.343673706055}, + {13.402928, 52.373788}, + {13.619056, 52.296334}, + {-96.047286987305, 41.155471801758}, + {-93.654481, 42.026962}, + {-102.715752, 44.10389}, + {-96.791203, 46.885094}, + {-96.078872680664, 41.255722045898}, + {-96.086644, 41.236009}, + {-83.101121, 42.310248}, + {-83.063229, 42.344203}, + {-83.747674, 42.354441}, + {-83.602523803711, 42.266464233398}, + {-83.283920288086, 42.473831176758}, + {-83.857437, 42.579551}, + {-83.749515, 42.288135}, + {-83.753042, 42.267022}, + {-83.749465942383, 42.263717651367}, + {-83.299744, 42.21457}, + {-83.873062133789, 42.352981567383}, + {-85.573196411133, 40.759963989258}, + {-86.194342, 39.587918}, + {-85.69953918457, 40.667953491211}, + {-84.941482543945, 40.858840942383}, + {32.712478637695, 39.90852355957}, + {29.174731, 40.196272}, + {29.651413, 40.2742}, + {29.109592, 40.17477}, + {32.603988647461, 39.95246887207}, + {29.144668579102, 41.01676940918}, + {27.360431, 41.400455}, + {29.100723266602, 40.97282409668}, + {26.893844604492, 41.564712524414}, + {32.625961303711, 39.968948364258}, + {29.110336, 40.958633}, + {30.38200378418, 37.03010559082}, + {29.073257446289, 40.986557006836}, + {28.901534, 41.054106}, + {28.798271, 41.058546}, + {28.839797973633, 41.063461303711}, + {26.303329467773, 38.320999145508}, + {26.940536499023, 38.79753112793}, + {26.913070678711, 38.867568969727}, + {27.106704711914, 38.610763549805}, + {28.798599243164, 41.001663208008}, + {31.763535, 36.795959}, + {32.652053833008, 39.951095581055}, + {32.65754699707, 39.946975708008}, + {4.42955, 50.252151}, + {4.390411, 50.871506}, + {-73.84391784668, 40.735244750977}, + {-73.882099, 40.753247}, + {-73.998637, 40.617687}, + {-73.985773, 40.621683}, + {-73.894929, 40.667765}, + {-73.749688, 40.743723}, + {-73.76152, 40.6884}, + {-73.451159, 40.799713}, + {-73.689915, 40.739683}, + {-73.420944213867, 40.733871459961}, + {-73.21907043457, 40.78742980957}, + {-73.908462524414, 40.595169067383}, + {-74.121322631836, 40.85334777832}, + {-74.204102, 40.653992}, + {-73.974380493164, 40.954971313477}, + {-74.210037, 40.707779}, + {-74.203442, 40.817873}, + {-74.192733764648, 40.993423461914}, + {-74.619737, 40.586146}, + {-74.202333, 40.737872}, + {-43.91657, -19.916038}, + {-42.789862, -5.089969}, + {-42.810024, -5.039965}, + {-42.759475708008, -5.0804901123047}, + {-42.788314819336, -5.0859832763672}, + {-42.744605, -5.044314}, + {-45.869979858398, -23.214797973633}, + {-47.05924987793, -22.852249145508}, + {-49.610824584961, -20.690689086914}, + {-47.339401245117, -22.773971557617}, + {-46.702194213867, -23.739395141602}, + {-47.177352905273, -24.294204711914}, + {-46.453628540039, -23.48258972168}, + {-46.299819946289, -23.989334106445}, + {-46.29020690918, -23.989334106445}, + {-46.853095, -24.208414}, + {-46.132559, -23.841757}, + {-47.399383, -20.5134}, + {90.20393371582, 22.88932800293}, + {89.831771850586, 23.574600219727}, + {91.100692749023, 23.477096557617}, + {90.974349975586, 23.383712768555}, + {91.102066040039, 23.968734741211}, + {89.366913, 23.963242}, + {89.006423950195, 24.409561157227}, + {91.544952, 24.371796}, + {90.42366027832, 23.766860961914}, + {90.390701293945, 23.757247924805}, + {89.231643676758, 25.748519897461}, + {90.42366027832, 24.015426635742}, + {91.821670532227, 22.342758178711}, + {90.36735534668, 23.81217956543}, + {90.833588, 23.528595}, + {90.34538269043, 23.828659057617}, + {91.825104, 22.357864}, + {90.746383666992, 23.762741088867}, + {92.040023803711, 24.807815551758}, + {90.801315307617, 23.76823425293}, + {90.364608764648, 22.692947387695}, + {90.406605, 23.721065}, + {90.37971496582, 23.871231079102}, + {90.392074584961, 23.720169067383}, + {17.679061889648, 51.573257446289}, + {16.908645629883, 52.390365600586}, + {19.015274, 54.037628}, + {15.612258911133, 52.064895629883}, + {22.694320678711, 53.863906860352}, + {14.499849, 53.427422}, + {19.404749, 53.525179}, + {17.489204, 54.164314}, + {18.81019, 53.017255}, + {18.688430786133, 53.020706176758}, + {19.40803527832, 51.775131225586}, + {20.935134887695, 52.20085144043}, + {19.917127, 49.512343}, + {19.478073120117, 52.199478149414}, + {19.946577, 50.061687}, + {19.134750366211, 50.256271362305}, + {19.249649, 50.027847}, + {19.048233032227, 49.826431274414}, + {17.929000854492, 50.603713989258}, + {19.151229858398, 50.80696105957}, + {19.142513, 50.822477}, + {17.92350769043, 50.673751831055}, + {-58.857192993164, -34.603500366211}, + {-58.504257202148, -34.559555053711}, + {-58.468551635742, -34.55680847168}, + {-58.458938598633, -34.703750610352}, + {-58.377914428711, -34.846572875977}, + {-63.364792, -32.217636}, + {-64.498672485352, -31.091995239258}, + {-60.641098, -32.944602}, + {-60.638885, -32.945633}, + {-60.562271, -33.14122}, + {-65.175704956055, -26.837539672852}, + {-67.486953735352, -29.147415161133}, + {-65.832138, -28.552094}, + {-63.570327758789, -29.439926147461}, + {127.08778381348, 36.993026733398}, + {126.927409, 36.995361}, + {127.102623, 37.199788}, + {126.73484802246, 37.576675415039}, + {126.91474914551, 37.323989868164}, + {126.70875549316, 37.486038208008}, + {126.78565979004, 37.531356811523}, + {127.126678, 37.411933}, + {127.142464, 37.417361}, + {127.128838, 37.389841}, + {127.09465, 37.315064}, + {127.43797302246, 36.325607299805}, + {127.610092, 36.293564}, + {127.60276794434, 36.27067565918}, + {127.29377746582, 36.61262512207}, + {127.744646, 37.042465}, + {127.283226, 36.755273}, + {127.12978, 36.779439}, + {127.10151672363, 36.075668334961}, + {127.282736, 36.763882}, + {127.173266, 36.83731}, + {127.740847, 36.203308}, + {127.223913, 35.177154}, + {127.66868591309, 34.762802124023}, + {-95.595474243164, 30.012588500977}, + {-82.173614, 38.288727}, + {-95.777664, 29.727402}, + {-94.873811, 30.050355}, + {-98.714218139648, 29.514083862305}, + {-98.54118347168, 28.908462524414}, + {-118.78898620605, 34.286270141602}, + {-118.382492, 33.802977}, + {-118.663279, 35.521493}, + {-97.717208862305, 42.37907409668}, + {-103.867836, 43.676834}, + {-92.914810180664, 31.164779663086}, + {-93.088188, 31.764221}, + {-93.850021362305, 31.431198120117}, + {-90.558758, 41.542568}, + {-91.19270324707, 41.486434936523}, + {-91.810684204102, 40.814895629883}, + {-90.961813, 42.392807}, + {-77.12059, 41.962051}, + {34.841079711914, 32.049179077148}, + {34.801254272461, 32.032699584961}, + {35.203173, 31.762484}, + {35.237908, 31.780236}, + {35.12809753418, 31.774520874023}, + {35.015487670898, 31.796493530273}, + {35.01503, 31.790085}, + {34.614486694336, 31.387252807617}, + {34.997635, 29.716187}, + {35.420608520508, 32.936325073242}, + {34.782944, 32.04689}, + {34.953689575195, 32.142562866211}, + {34.933090209961, 32.172775268555}, + {34.937210083008, 32.176895141602}, + {34.883278, 32.089832}, + {35.007247924805, 32.78938293457}, + {35.638961791992, 33.01872253418}, + {35.740585, 32.89032}, + {35.520487, 32.792062}, + {-1.0279083251953, 38.856582641602}, + {-3.1908416748047, 39.361953735352}, + {-2.898993, 39.329686}, + {-2.947769, 42.683258}, + {-3.932419, 41.228943}, + {-3.6714935302734, 42.351608276367}, + {-4.352234, 42.009247}, + {-4.691391, 41.472702}, + {-4.9678802490234, 41.505661010742}, + {-5.717011, 40.975742}, + {-2.529602, 41.796112}, + {-4.758625, 40.639973}, + {-6.463394, 42.610474}, + {-5.566527, 42.605459}, + {-6.451035, 42.620087}, + {-6.352177, 38.913934}, + {-7.011337, 38.892632}, + {-5.6050872802734, 38.650588989258}, + {-6.28578, 38.136063}, + {-6.3576507568359, 38.922500610352}, + {-8.656197, 42.204666}, + {-8.733902, 42.499695}, + {0.73539733886719, 52.239303588867}, + {0.803376, 52.107468}, + {0.405902, 52.099134}, + {-0.095443725585938, 51.504592895508}, + {-0.074844360351562, 51.523818969727}, + {-0.042648, 51.518173}, + {-2.5041961669922, 53.727951049805}, + {-0.89881896972656, 52.220077514648}, + {0.15998840332031, 52.669143676758}, + {-0.79170227050781, 52.295608520508}, + {-2.068039, 52.582626}, + {-2.200012, 52.609406}, + {-1.505831, 52.212743}, + {-1.585922, 52.34642}, + {-1.7378997802734, 52.49885559082}, + {-1.40831, 52.338965}, + {-1.674042, 52.339915}, + {-0.86174011230469, 52.273635864258}, + {-1.5895843505859, 52.467269897461}, + {100.465814, 5.58482}, + {100.548019, 5.373459}, + {100.68351745605, 5.2713775634766}, + {101.098911, 4.552193}, + {103.389564, 3.53209}, + {103.46855163574, 4.2798614501953}, + {102.10899353027, 6.1846160888672}, + {102.756087, 5.626067}, + {102.15293884277, 5.7836151123047}, + {102.570095, 5.836782}, + {103.7899017334, 1.5676116943359}, + {102.560659, 2.125241}, + {102.36854553223, 2.4616241455078}, + {103.421173, 1.52092}, + {103.78303527832, 2.5316619873047}, + {115.643443, 5.384036}, + {110.359039, 1.552505}, + {113.53202819824, 3.7415313720703}, + {111.967764, 2.737737}, + {150.91575622559, -33.801498413086}, + {37.834854125977, 55.823593139648}, + {37.779922485352, 55.792007446289}, + {37.775803, 55.793542}, + {37.812881469727, 55.748062133789}, + {37.768021, 55.70549}, + {37.888412475586, 55.661544799805}, + {37.825241088867, 55.701370239258}, + {37.71459, 55.751316}, + {37.652425, 55.851486}, + {37.65495300293, 55.72883605957}, + {37.537242, 55.61348}, + {37.634353637695, 55.67253112793}, + {37.617874145508, 55.62858581543}, + {37.685165405273, 55.64094543457}, + {37.675224, 55.589158}, + {37.572281, 55.58107}, + {37.745590209961, 55.67253112793}, + {37.78678894043, 55.678024291992}, + {100.371643, 6.125565}, + {100.3800201416, 5.3990936279297}, + {100.32096862793, 5.4279327392578}, + {102.281832, 6.099864}, + {116.11106872559, 5.9717559814453}, + {113.992081, 4.422684}, + {101.76429748535, 3.0535125732422}, + {151.236008, -33.878677}, + {151.20414733887, -33.871536254883}, + {151.17942810059, -33.893508911133}, + {151.195108, -33.915845}, + {150.679919, -33.778778}, + {151.052418, -33.821993}, + {151.048616, -33.845221}, + {151.117013, -33.77209}, + {151.12449645996, -33.871536254883}, + {151.160368, -33.795828}, + {151.15608215332, -33.813858032227}, + {150.98030090332, -33.82209777832}, + {-1.5291595458984, 53.784255981445}, + {-1.559705, 53.805721}, + {-1.4728546142578, 54.965286254883}, + {-1.564304, 54.991452}, + {-1.557541, 54.868698}, + {-1.591507, 54.972153}, + {-1.621246, 54.961113}, + {-4.5764923095703, 55.976028442383}, + {-3.1427764892578, 56.122970581055}, + {-3.286148, 55.918076}, + {-2.105941, 57.13234}, + {-2.1265411376953, 57.161178588867}, + {-2.180099, 57.148819}, + {-1.2874603271484, 53.874893188477}, + {-4.01619, 55.935173}, + {-3.702883, 55.992704}, + {-3.676861, 55.889387}, + {-3.818893, 56.010361}, + {-3.501208, 56.003221}, + {-7.6361846923828, 54.352798461914}, + {-5.8097076416016, 54.713973999023}, + {-3.074936, 55.944168}, + {-7.276383, 54.997788}, + {-2.934036, 56.497421}, + {-74.818535, 11.013905}, + {-75.530319, 10.411802}, + {-74.785995483398, 10.954055786133}, + {-74.122975, 4.62696}, + {-74.067764282227, 4.6492767333984}, + {-74.072377, 4.677034}, + {-74.045687, 4.755541}, + {-75.545425415039, 6.2065887451172}, + {-76.518402, 3.486099}, + {-76.532821655273, 3.3872222900391}, + {-72.488444, 7.884309}, + {-74.081701, 4.596936}, + {-74.058167, 4.642276}, + {-74.083803, 4.627827}, + {-76.608352661133, 2.4492645263672}, + {-76.547927856445, 3.4188079833984}, + {-76.503983, 3.431854}, + {-75.582369, 6.192186}, + {-75.589370727539, 6.1832427978516}, + {103.87504577637, 1.3465118408203}, + {103.84483337402, 1.3643646240234}, + {103.67866516113, 1.3108062744141}, + {103.860626, 1.28746}, + {103.83659362793, 1.3368988037109}, + {103.90937805176, 1.3355255126953}, + {103.96430969238, 1.3176727294922}, + {103.763351, 1.319962}, + {103.76243591309, 1.3204193115234}, + {103.845477, 1.284251}, + {103.871384, 1.309891}, + {103.86680603027, 1.3286590576172}, + {103.926315, 1.328201}, + {103.8956451416, 1.3739776611328}, + {103.75556945801, 1.4096832275391}, + {103.828354, 1.360562}, + {15.64433, 52.284691}, + {17.695541381836, 52.321701049805}, + {17.027709, 52.742082}, + {16.669692993164, 52.986373901367}, + {16.951217651367, 51.880874633789}, + {18.052597045898, 51.72981262207}, + {18.060836791992, 51.747665405273}, + {16.015222, 51.196976}, + {16.900406, 52.399155}, + {16.926498413086, 52.399978637695}, + {17.492294, 52.519455}, + {17.03044, 52.428176}, + {17.459335327148, 52.500228881836}, + {16.83723449707, 52.128067016602}, + {17.043686, 52.339554}, + {17.229995727539, 52.38899230957}, + {16.402617, 52.235904}, + {73.891983032227, 18.593673706055}, + {73.739547729492, 18.590927124023}, + {73.804092407227, 20.035629272461}, + {73.832931518555, 20.214157104492}, + {74.585494995117, 20.583572387695}, + {73.797225952148, 15.527114868164}, + {73.989944, 18.583145}, + {73.835678100586, 15.509262084961}, + {73.853531, 18.516083}, + {73.147659301758, 18.980941772461}, + {74.327316, 16.516571}, + {73.32893371582, 18.964462280273}, + {77.749557495117, 20.903549194336}, + {73.677749633789, 16.009140014648}, + {75.479233, 19.863968}, + {73.180618286133, 22.348251342773}, + {72.890853881836, 22.705307006836}, + {73.217697143555, 22.320785522461}, + {73.19709777832, 22.269973754883}, + {72.542037963867, 23.088455200195}, + {72.857894897461, 21.200180053711}, + {72.488479614258, 23.071975708008}, + {72.550964, 23.006058}, + {69.666366577148, 22.226028442383}, + {27.139663696289, 38.422622680664}, + {29.593734741211, 40.772323608398}, + {27.677993774414, 38.492660522461}, + {36.877670288086, 37.583541870117}, + {27.876721, 38.837975}, + {36.905136108398, 37.587661743164}, + {36.933975219727, 37.578048706055}, + {35.30387878418, 37.03971862793}, + {35.273666381836, 37.03010559082}, + {42.28157043457, 38.509140014648}, + {35.324478149414, 37.024612426758}, + {27.275416, 39.574783}, + {29.090628, 37.785558}, + {36.696395874023, 37.133102416992}, + {36.21711730957, 36.68815612793}, + {36.208877563477, 36.94221496582}, + {29.070510864258, 41.247482299805}, + {27.400588989258, 38.121871948242}, + {27.127866, 38.315189}, + {27.154769897461, 38.274307250977}, + {35.541458129883, 38.70002746582}, + {29.570388793945, 38.341598510742}, + {35.324478149414, 36.982040405273}, + {11.729965209961, 44.737014770508}, + {12.221603, 44.691422}, + {11.462173461914, 44.850997924805}, + {11.377029418945, 44.473342895508}, + {11.403121948242, 44.495315551758}, + {9.97062, 44.599475}, + {10.750809, 44.57222}, + {10.77095, 44.596939}, + {10.614852905273, 44.458236694336}, + {10.827713012695, 44.572219848633}, + {10.79475402832, 44.535140991211}, + {10.930709838867, 44.671096801758}, + {10.337448, 44.773819}, + {10.336074829102, 44.820785522461}, + {10.038070678711, 44.87434387207}, + {10.099998, 44.879892}, + {10.912857055664, 45.378341674805}, + {11.040573120117, 45.383834838867}, + {10.905990600586, 45.431900024414}, + {11.393966, 45.311051}, + {11.029587, 45.457306}, + {11.033706665039, 44.97184753418}, + {-6.244134, 53.389018}, + {-6.132593, 53.214179}, + {-6.427345, 53.290215}, + {-7.420262, 52.941215}, + {-7.424011, 52.735062}, + {-7.658644, 53.299462}, + {-6.248965, 53.364029}, + {-6.232681, 53.297974}, + {-6.268311, 53.353043}, + {-6.263007, 53.341001}, + {-6.7445, 53.131854}, + {-6.560745, 53.265152}, + {-6.689072, 53.285294}, + {-9.7716522216797, 51.473007202148}, + {-7.4233245849609, 52.735061645508}, + {-8.855673, 52.163773}, + {-8.859346, 52.877637}, + {-6.363144, 54.031448}, + {-8.4601593017578, 52.567520141602}, + {-6.254585, 53.318788}, + {-6.38443, 53.390465}, + {-6.2175750732422, 53.325576782227}, + {139.770655, 35.70076}, + {139.619658, 35.704351}, + {139.57511901855, 35.66780090332}, + {139.551773, 35.709457}, + {139.76600646973, 35.71174621582}, + {139.627441, 35.809387}, + {139.803314, 35.850677}, + {139.639664, 35.573466}, + {139.761887, 35.779724}, + {139.42852, 35.841522}, + {139.309943, 35.646678}, + {141.60758972168, 42.878952026367}, + {139.538956, 35.985947}, + {142.05253601074, 43.672714233398}, + {141.36039733887, 43.10417175293}, + {141.10496520996, 39.75471496582}, + {140.454025, 40.704346}, + {140.857086, 38.288727}, + {140.110016, 39.705277}, + {140.9497833252, 38.35807800293}, + {139.82368469238, 38.723373413086}, + {140.30777, 38.18985}, + {140.427383, 37.728836}, + {139.53254699707, 35.634841918945}, + {-2.0262908935547, 48.648147583008}, + {-1.4934539794922, 48.517684936523}, + {-2.83629, 48.338996}, + {-2.116422, 48.577231}, + {-3.859635, 48.512741}, + {-2.8255462646484, 48.646774291992}, + {-1.9562530517578, 48.690719604492}, + {-3.6371612548828, 47.958755493164}, + {-4.122296, 48.043329}, + {-4.255084, 47.971846}, + {2.3819732666016, 47.739028930664}, + {2.8433990478516, 48.17985534668}, + {2.755508, 47.998856}, + {1.3300323486328, 48.06037902832}, + {2.0249176025391, 47.892837524414}, + {1.425476, 48.318558}, + {-1.9411468505859, 48.043899536133}, + {-1.73172, 48.059006}, + {60.590286254883, 56.834335327148}, + {60.609563, 56.855652}, + {60.530205, 56.831245}, + {65.370255, 55.445938}, + {60.940475463867, 56.742324829102}, + {60.547714233398, 56.779403686523}, + {37.586151, 55.739685}, + {37.962566, 55.84488}, + {37.607353, 55.756142}, + {32.037811, 54.769002}, + {38.008919, 55.750351}, + {37.994843, 55.72506}, + {38.135604858398, 53.995742797852}, + {38.17268371582, 53.094863891602}, + {37.466812133789, 54.128952026367}, + {38.053207397461, 55.558547973633}, + {37.869186401367, 55.687637329102}, + {37.897339, 55.690384}, + {37.245369, 55.838562}, + {-88.240127, 42.955856}, + {-87.793807983398, 42.711410522461}, + {-93.130139, 44.79293}, + {-92.825958, 44.38559}, + {-92.919617, 44.977112}, + {-93.948375, 44.188614}, + {-93.350143432617, 44.881210327148}, + {-93.061502, 45.006319}, + {-94.150652, 45.555828}, + {-92.138368, 46.795073}, + {-92.919712, 45.356471}, + {-93.601078, 46.985736}, + {-87.419866, 36.621526}, + {-86.696778, 36.30027}, + {-85.974998, 35.375897}, + {-82.793655395508, 36.72248840332}, + {-97.565918, 35.47142}, + {-84.107824, 36.192231}, + {-83.289413452148, 36.296768188477}, + {-95.958023071289, 36.017990112305}, + {-95.885238647461, 36.114120483398}, + {75.776138305664, 26.829299926758}, + {73.736801147461, 24.604568481445}, + {73.710022, 24.586716}, + {74.342422485352, 26.095962524414}, + {73.066635131836, 24.842147827148}, + {73.615951538086, 25.727920532227}, + {73.019943237305, 26.274490356445}, + {73.076248168945, 26.281356811523}, + {74.618912, 24.935989}, + {74.67887878418, 24.655380249023}, + {75.825576782227, 26.801834106445}, + {75.776138305664, 26.902084350586}, + {73.339920043945, 25.749893188477}, + {72.782363891602, 25.37223815918}, + {76.010971069336, 26.855392456055}, + {76.530075073242, 15.43098449707}, + {76.823959350586, 28.17512512207}, + {77.551803588867, 13.034591674805}, + {76.10710144043, 14.374923706055}, + {77.597122, 12.943497}, + {77.562789916992, 13.096389770508}, + {77.505111694336, 12.945327758789}, + {78.20686340332, 13.138961791992}, + {-43.391342, -22.973099}, + {-43.125687, -22.895737}, + {-43.417282104492, -22.699813842773}, + {-43.328018188477, -22.887954711914}, + {-70.755563, -34.190962}, + {-71.634805, -35.431589}, + {-70.573086, -33.460527}, + {-70.683975219727, -33.477401733398}, + {-70.71683, -33.40855}, + {-68.949508666992, -22.518539428711}, + {-71.629039, -33.045995}, + {-71.677139, -35.441075}, + {-73.037468, -36.827097}, + {-73.050155639648, -36.826858520508}, + {-70.632202, -33.565292}, + {-70.498580932617, -33.397750854492}, + {-71.234986, -33.678075}, + {126.88453674316, 37.502517700195}, + {126.867493, 37.514592}, + {127.14958190918, 37.005386352539}, + {126.91474914551, 37.560195922852}, + {126.544682, 33.485621}, + {129.34394, 35.520043}, + {129.337057, 35.53969}, + {127.208316, 36.764157}, + {127.052493, 37.285093}, + {127.0108795166, 37.27180480957}, + {129.09965515137, 35.123977661133}, + {126.98616027832, 37.529983520508}, + {126.8872833252, 37.260818481445}, + {126.781057, 37.335855}, + {127.433432, 36.342279}, + {126.76231384277, 37.714004516602}, + {126.99714660645, 37.512130737305}, + {127.0191192627, 37.542343139648}, + {127.04246520996, 37.503890991211}, + {127.00126647949, 37.50114440918}, + {126.73210144043, 37.510757446289}, + {127.47093200684, 36.653823852539}, + {126.73347473145, 37.529983520508}, + {128.499012, 34.756866}, + {-48.92703, -16.352301}, + {-48.942301, -16.287035}, + {-51.231308, -30.032089}, + {-48.147583, -15.912323}, + {-48.036844, -15.830872}, + {-48.941531, -16.333246}, + {-48.962982, -16.341822}, + {-60.017623901367, -3.1098175048828}, + {-45.268274, -23.566252}, + {-45.407028, -23.619583}, + {-45.066605, -23.469053}, + {-60.050582885742, -3.0205535888672}, + {-51.039047241211, -29.91096496582}, + {-49.237289428711, -16.71501159668}, + {-49.314071, -16.607882}, + {-49.191634, -16.655096}, + {-49.215316772461, -16.643600463867}, + {-51.21208190918, -29.996109008789}, + {-51.203842163086, -29.949417114258}, + {-43.196131, -22.529469}, + {-43.155196, -22.198289}, + {-49.270248413086, -16.756210327148}, + {39.116592, 45.006638}, + {39.771194458008, 47.31330871582}, + {38.976058959961, 45.078964233398}, + {39.857711791992, 47.259750366211}, + {40.053668, 47.170507}, + {39.70797, 47.232285}, + {56.00212097168, 54.74967956543}, + {49.141159057617, 55.793380737305}, + {49.193344116211, 55.761795043945}, + {39.94011, 59.148331}, + {104.2032623291, 52.280502319336}, + {37.411880493164, 55.70686340332}, + {37.405151, 55.885391}, + {37.745590209961, 55.919723510742}, + {37.674179077148, 55.535202026367}, + {38.459015, 55.802994}, + {37.462692260742, 55.141067504883}, + {43.867508, 56.330429}, + {43.985824584961, 56.274032592773}, + {82.97492980957, 55.024337768555}, + {82.911758422852, 54.93782043457}, + {73.434677124023, 54.979019165039}, + {73.43879699707, 54.973526000977}, + {55.076522827148, 51.798477172852}, + {31.378326, 40.76683}, + {27.112197875977, 38.495407104492}, + {29.249038696289, 40.974197387695}, + {41.014024, 43.006655}, + {16.518630981445, 39.614639282227}, + {17.262096, 40.462818}, + {12.821731567383, 37.708511352539}, + {12.456436157227, 37.781295776367}, + {17.27668762207, 40.937118530273}, + {16.878983, 41.1129}, + {-0.36048889160156, 39.449844360352}, + {-0.736411, 37.934633}, + {-0.42915344238281, 39.464950561523}, + {-0.60905456542969, 38.824996948242}, + {-0.413863, 39.468289}, + {-0.40031433105469, 39.257583618164}, + {-0.695225, 38.277814}, + {-2.181473, 39.229294}, + {-0.55961608886719, 38.319625854492}, + {2.645782, 39.572067}, + {2.144704, 41.431282}, + {-3.639968, 42.348833}, + {-4.8690032958984, 37.838973999023}, + {-3.6302947998047, 37.112503051758}, + {-3.6824798583984, 40.433120727539}, + {-3.6742401123047, 40.44548034668}, + {-3.7511444091797, 40.336990356445}, + {-3.775059, 40.299885}, + {-3.3927154541016, 40.538864135742}, + {-4.371643, 36.729126}, + {-4.426117, 36.714935}, + {-90.256118774414, 38.638229370117}, + {-90.444534, 38.500488}, + {-90.177981, 38.586016}, + {-92.144393920898, 37.818374633789}, + {-92.159045, 38.536607}, + {-90.700516, 38.536332}, + {-90.960872, 38.392229}, + {-94.650650024414, 38.90739440918}, + {-94.648211, 39.1408}, + {-94.672623, 38.848303}, + {-94.590225219727, 39.041976928711}, + {-94.588851928711, 39.040603637695}, + {-94.012886, 40.295012}, + {-92.681584, 38.938315}, + {-94.173431, 39.752978}, + {-92.123794555664, 40.262832641602}, + {-94.58610534668, 39.14909362793}, + {-94.731674194336, 38.993911743164}, + {-93.60969543457, 40.076065063477}, + {-88.874588012695, 37.900772094727}, + {-89.504013, 37.643051}, + {-88.045120239258, 38.364944458008}, + {-93.228248, 37.03732}, + {-93.313064575195, 37.208633422852}, + {-93.116629, 37.193637}, + {9.1948699951172, 44.414291381836}, + {7.598724, 44.835739}, + {7.5565338134766, 44.91828918457}, + {8.8227081298828, 44.958114624023}, + {7.7075958251953, 45.76286315918}, + {8.5645294189453, 45.957870483398}, + {8.7705230712891, 45.440139770508}, + {8.4889984130859, 45.720291137695}, + {7.68013, 45.078049}, + {7.9575347900391, 44.966354370117}, + {7.562113, 44.44212}, + {7.5386810302734, 44.386825561523}, + {7.80098, 44.516602}, + {7.6705169677734, 45.096817016602}, + {8.440933, 45.32547}, + {7.648348, 44.867085}, + {7.7446746826172, 45.139389038086}, + {7.658587, 45.045199}, + {-77.08625793457, -11.989517211914}, + {-77.102737426758, -12.055435180664}, + {-78.588638305664, -9.0712738037109}, + {-68.048538, -38.92662}, + {-68.932669, -33.027387}, + {-68.696604, -35.094457}, + {-62.420425, -36.871719}, + {-62.264921, -38.695822}, + {-56.896024, -37.160315}, + {-64.47052, -31.223831}, + {-59.793605, -35.658016}, + {-60.670853, -32.945938}, + {-64.385868, -27.750584}, + {-65.189896, -26.87233}, + {-58.645432, -34.476883}, + {-58.475876, -34.553604}, + {-58.373794555664, -34.596633911133}, + {115.92567443848, -33.285140991211}, + {115.78010559082, -31.77864074707}, + {115.775528, -31.834946}, + {115.848992, -31.956093}, + {115.93391418457, -31.98600769043}, + {115.972839, -32.06698}, + {115.863263, -32.172635}, + {115.796242, -32.162476}, + {115.88310241699, -32.027206420898}, + {150.91575622559, -33.850936889648}, + {151.589841, -33.006788}, + {151.338598, -33.500471}, + {151.62712097168, -33.12858581543}, + {151.21376037598, -33.830337524414}, + {151.21238708496, -33.86604309082}, + {151.207809, -33.863297}, + {151.20552062988, -33.877029418945}, + {151.181824, -33.863348}, + {151.23573303223, -33.42658996582}, + {151.31126403809, -33.378524780273}, + {-122.196967, 37.740756}, + {-122.061333, 37.643761}, + {-122.25105285645, 37.871932983398}, + {-120.6827545166, 35.244827270508}, + {-120.292224, 36.324866}, + {-119.369888, 36.219864}, + {-119.55108, 36.513693}, + {-119.331023, 36.216993}, + {-119.076935, 35.295639}, + {-117.66968, 35.612934}, + {-121.490593, 38.601322}, + {-121.380333, 38.613461}, + {-121.380787, 38.411865}, + {-121.295088, 38.861341}, + {-121.297455, 38.841096}, + {-121.40785217285, 38.75358581543}, + {-121.567154, 39.525139}, + {-122.17414855957, 41.640243530273}, + {-124.175667, 40.764348}, + {-121.199112, 37.560654}, + {-121.101533, 37.939779}, + {-119.747602, 39.540467}, + {-115.75950622559, 40.834121704102}, + {-114.563095, 41.072868}, + {-51.148910522461, -29.725570678711}, + {-48.645078, -26.9185}, + {-48.848569, -26.297411}, + {-49.456633, -26.246241}, + {-48.792822, -26.28754}, + {-52.777383, -28.314331}, + {-51.107712, -30.037308}, + {-52.287697, -27.638962}, + {-50.94841003418, -28.51432800293}, + {-51.186413, -29.169419}, + {-52.510994, -29.550662}, + {-53.101119, -31.444084}, + {-54.925332, -30.255271}, + {-52.159526, -32.18205}, + {-53.83918762207, -27.737045288086}, + {-52.197608, -28.449437}, + {-49.738776, -29.347713}, + {-51.344604, -29.321823}, + {-50.043411254883, -29.55940246582}, + {-51.33487, -30.091233}, + {90.344009399414, 23.74626159668}, + {90.212173461914, 23.644638061523}, + {90.40168762207, 23.886337280273}, + {91.423416137695, 24.938278198242}, + {91.73223, 24.308016}, + {91.772232055664, 24.432907104492}, + {91.869736, 24.88472}, + {91.132278442383, 23.643264770508}, + {90.518417358398, 22.469100952148}, + {90.412673950195, 23.742141723633}, + {90.393447875977, 23.738021850586}, + {90.371475219727, 23.894577026367}, + {90.29182434082, 23.794326782227}, + {90.319290161133, 23.64875793457}, + {90.412673950195, 23.707809448242}, + {90.680465698242, 23.537521362305}, + {90.494728, 23.646355}, + {90.429153442383, 23.728408813477}, + {90.519790649414, 23.705062866211}, + {90.275541, 23.835722}, + {90.442886352539, 23.757247924805}, + {2.3256683349609, 48.874740600586}, + {1.4536285400391, 47.563247680664}, + {-1.630083, 49.582685}, + {-1.3726043701172, 48.678359985352}, + {1.0800933837891, 47.134780883789}, + {1.7749786376953, 46.996078491211}, + {4.3814849853516, 45.466232299805}, + {4.7563934326172, 45.926284790039}, + {6.4949798583984, 45.86311340332}, + {4.3787384033203, 47.380599975586}, + {2.3682403564453, 48.863754272461}, + {2.1663665771484, 48.830795288086}, + {2.3091888427734, 47.544021606445}, + {7.5222015380859, 43.903427124023}, + {3.2814788818359, 44.485702514648}, + {5.379469, 48.322869}, + {3.138411, 44.418012}, + {2.0853424072266, 42.824020385742}, + {-99.076767, 19.630966}, + {-99.128952026367, 19.667587280273}, + {-104.64095, 24.036615}, + {-101.676407, 21.110916}, + {-98.754043579102, 20.112533569336}, + {-103.29551696777, 20.697555541992}, + {-103.36006164551, 20.564346313477}, + {-105.275417, 20.704347}, + {-101.70936584473, 19.204788208008}, + {-99.190132, 18.959768}, + {-104.80278, 21.438675}, + {-100.447769, 25.688324}, + {-99.174270629883, 19.302291870117}, + {-97.38899230957, 18.460464477539}, + {-100.98976135254, 21.75910949707}, + {-100.91972351074, 22.125778198242}, + {36.322860717773, 33.525466918945}, + {35.877914428711, 34.889144897461}, + {35.96305847168, 35.185775756836}, + {36.320114135742, 33.500747680664}, + {36.757279, 35.144577}, + {45.426406860352, 35.55793762207}, + {45.437393188477, 35.581283569336}, + {45.438766479492, 35.581283569336}, + {47.785720825195, 30.465774536133}, + {44.351119995117, 35.424728393555}, + {44.142379760742, 35.419235229492}, + {46.684341430664, 32.479019165039}, + {46.240768432617, 31.096115112305}, + {47.152509, 31.857543}, + {44.342880249023, 33.371658325195}, + {44.412575, 32.472496}, + {44.341506958008, 33.374404907227}, + {44.363479614258, 33.279647827148}, + {44.470596, 32.945023}, + {44.298934936523, 33.407363891602}, + {44.397811889648, 33.257675170898}, + {44.414291381836, 33.327713012695}, + {44.48844909668, 33.31672668457}, + {44.798812866211, 33.94157409668}, + {76.460037231445, 10.776901245117}, + {76.400985717773, 10.778274536133}, + {76.262283325195, 11.037826538086}, + {76.527328491211, 9.5697784423828}, + {76.659164, 10.773677}, + {76.677017211914, 10.767288208008}, + {76.113967895508, 10.401992797852}, + {76.008224487305, 10.969161987305}, + {76.919403, 8.52951}, + {76.346054077148, 10.153427124023}, + {76.324081, 9.958076}, + {76.299362, 10.000305}, + {78.412857055664, 17.441482543945}, + {78.514557, 17.435989}, + {78.467102, 17.337799}, + {80.902632, 16.404648}, + {78.474655, 17.469406}, + {78.42658996582, 17.501907348633}, + {78.508072, 17.410202}, + {78.235702514648, 17.718887329102}, + {78.688202, 17.260895}, + {30.97526550293, 30.791244506836}, + {32.631454467773, 25.688095092773}, + {31.254043579102, 30.063400268555}, + {31.223831176758, 30.079879760742}, + {30.934066772461, 29.963150024414}, + {30.951919555664, 30.055160522461}, + {29.89860534668, 31.200485229492}, + {29.886266, 31.159933}, + {29.523696899414, 30.950546264648}, + {29.964483, 31.227103}, + {31.366653442383, 31.03157043457}, + {31.408539, 31.015091}, + {31.391372680664, 31.067276000977}, + {33.898573, 26.994438}, + {30.441055297852, 31.032943725586}, + {31.245803833008, 30.060653686523}, + {31.815719604492, 31.428451538086}, + {31.087875366211, 29.078750610352}, + {31.127243, 30.000687}, + {32.90885925293, 24.082717895508}, + {31.20735168457, 30.007095336914}, + {32.700119018555, 25.674362182617}, + {30.037308, 31.284714}, + {31.015090942383, 30.068893432617}, + {-93.120803833008, 37.277297973633}, + {-93.396835327148, 37.946090698242}, + {-92.535121, 37.762365}, + {-93.598709106445, 37.186660766602}, + {-97.994202, 38.012829}, + {-97.710982, 39.130523}, + {-100.857925, 38.000336}, + {-100.008296, 37.805102}, + {-97.234908, 37.664356}, + {-97.245925, 37.737694}, + {-100.89775085449, 37.060317993164}, + {-97.327194213867, 37.619247436523}, + {-83.365973, 42.367083}, + {-83.355789, 42.382364}, + {-83.019571, 42.623465}, + {-83.004454, 42.654107}, + {-83.251845, 42.640679}, + {-83.044726, 42.519777}, + {-82.558822631836, 43.122024536133}, + {-84.035048, 42.269835}, + {-83.239167, 42.101831}, + {-83.992218, 42.650184}, + {-83.266205, 42.766342}, + {-83.516006469727, 42.186813354492}, + {-82.557818, 42.876892}, + {40.750350952148, 6.9207000732422}, + {38.726578, 8.99025}, + {43.141250610352, 11.599502563477}, + {43.289566040039, 11.963424682617}, + {39.719009399414, -4.0285491943359}, + {37.023926, -0.374908}, + {39.86457824707, -3.6138153076172}, + {37.09602355957, -1.0443878173828}, + {36.971741, -1.135712}, + {36.664810180664, -1.3808441162109}, + {37.631607, -0.341263}, + {36.72248840332, -1.3574981689453}, + {36.802294, -1.265187}, + {36.910629272461, -1.2462615966797}, + {36.929267, -1.38104}, + {37.000809, -1.272812}, + {36.815872192383, -1.2957000732422}, + {36.811995, -1.294327}, + {35.273666381836, 0.51567077636719}, + {36.833724975586, -1.2860870361328}, + {35.862808227539, -1.0993194580078}, + {36.427230834961, -0.77934265136719}, + {-110.9886932373, 53.874893188477}, + {-114.3985748291, 54.005355834961}, + {-117.955855, 52.746632}, + {-114.13764953613, 53.45329284668}, + {-112.40043640137, 54.819717407227}, + {-113.16535949707, 51.339797973633}, + {-115.386251, 51.120621}, + {-113.80574, 52.288955}, + {-114.03327941895, 51.001968383789}, + {-114.00521, 50.976956}, + {-114.08271789551, 51.132431030273}, + {-114.225411, 51.093197}, + {-120.06477355957, 55.535202026367}, + {-99.248428344727, 49.901962280273}, + {-75.66764831543, 45.42366027832}, + {-75.672455, 45.485115}, + {5.057147, 49.022141}, + {0.26023864746094, 44.57633972168}, + {5.066071, 45.168228}, + {2.3297882080078, 45.219039916992}, + {-0.97297668457031, 44.031143188477}, + {-0.35363, 44.434548}, + {1.806564, 44.696274}, + {5.4389190673828, 47.954635620117}, + {6.3219451904297, 46.383590698242}, + {3.8417816162109, 49.340286254883}, + {6.1255645751953, 45.924911499023}, + {6.093636, 45.914783}, + {6.653607, 46.05126}, + {6.5087127685547, 43.483200073242}, + {2.933926, 43.181241}, + {3.039436, 42.850113}, + {3.078364, 43.123768}, + {2.3242950439453, 48.753890991211}, + {3.4091949462891, 48.085098266602}, + {0.17234802246094, 49.518814086914}, + {18.572507, -33.961408}, + {12.504501342773, 41.795425415039}, + {8.9353179931641, 44.406051635742}, + {16.257705688477, 38.967819213867}, + {15.124740600586, 37.562942504883}, + {27.480239868164, 44.108047485352}, + {28.62419128418, 44.146499633789}, + {27.279739379883, 44.099807739258}, + {26.75651550293, 45.745010375977}, + {28.628311157227, 44.160232543945}, + {-0.876782, 41.635566}, + {88.340377807617, 22.596817016602}, + {5.15, 52.305137}, + {17.53012, 50.810477}, + {15.595779418945, 50.856399536133}, + {-80.676041, 33.415604}, + {-80.66806, 33.413307}, + {-80.625963, 33.376442}, + {-79.990768, 32.825775}, + {-79.972915649414, 32.893753051758}, + {-80.03059387207, 32.859420776367}, + {-82.615127563477, 34.919357299805}, + {-82.863007, 34.815674}, + {-82.617874145508, 34.916610717773}, + {-79.037196, 33.940027}, + {-81.12817, 34.054184}, + {-80.95342, 34.012716}, + {-79.289295, 33.502947}, + {-78.563919067383, 38.367691040039}, + {-81.531600952148, 34.154434204102}, + {-81.000328, 34.346502}, + {-80.026178, 37.78854}, + {-80.766678, 37.047787}, + {-80.775564, 37.071708}, + {-77.406693, 37.219162}, + {-77.468032836914, 37.199020385742}, + {8.3997344970703, 49.517440795898}, + {8.092117, 49.754333}, + {8.179384, 49.343406}, + {8.677984, 49.382753}, + {8.6963653564453, 49.26887512207}, + {9.6041107177734, 47.791213989258}, + {10.155487, 48.726425}, + {8.840783, 48.265697}, + {10.300369262695, 50.800094604492}, + {9.9694061279297, 48.826675415039}, + {11.57847, 50.909018}, + {14.562378, 53.44883}, + {16.982803344727, 51.118698120117}, + {21.00861, 52.458688}, + {21.058044, 52.247543}, + {21.035385131836, 52.128067016602}, + {21.031265258789, 52.158279418945}, + {20.895309, 52.203598}, + {22.394943, 52.250977}, + {21.024105, 52.07186}, + {22.561626, 51.225926}, + {22.611237, 51.420822}, + {7.331539, 51.561464}, + {7.149124, 51.224533}, + {7.9396820068359, 51.766891479492}, + {7.496109, 51.461746}, + {7.2420501708984, 51.536178588867}, + {6.8891143798828, 51.433181762695}, + {7.034417, 51.51424}, + {6.96207, 51.424942}, + {6.59855, 51.110573}, + {6.383664, 51.272235}, + {6.471359, 51.109909}, + {6.1942291259766, 51.028060913086}, + {6.916752, 50.929012}, + {6.929574, 51.279917}, + {7.084301, 50.884823}, + {8.451645, 51.14534}, + {7.182011, 50.900886}, + {6.758768, 50.838822}, + {7.0607757568359, 50.633926391602}, + {112.026752, -7.84351}, + {111.79893493652, -7.5592803955078}, + {111.51054382324, -7.4219512939453}, + {112.012333, -7.803883}, + {110.788278, -7.533365}, + {112.182143, -8.132632}, + {107.76969909668, -6.2958526611328}, + {111.705551, -8.057442}, + {111.016882, -7.432263}, + {108.95347595215, -7.0017242431641}, + {110.8390045166, -7.5771331787109}, + {110.826431, -7.548685}, + {110.04524230957, -7.8668975830078}, + {109.792099, -6.949539}, + {110.141305, -7.588354}, + {109.67445373535, -6.8849945068359}, + {110.415893, -6.994707}, + {110.41603088379, -7.1720123291016}, + {110.408383, -6.987632}, + {110.166965, -7.545801}, + {110.21827697754, -7.4549102783203}, + {110.057064, -7.314076}, + {110.41877746582, -7.7666473388672}, + {110.35148620605, -7.9218292236328}, + {139.452898, 35.919801}, + {139.426948, 35.935376}, + {139.80308532715, 35.824356079102}, + {139.88822937012, 35.791397094727}, + {139.338364, 36.173447}, + {139.77424621582, 35.882034301758}, + {139.322768, 35.736799}, + {139.373703, 35.666428}, + {139.44053649902, 35.718612670898}, + {139.34577941895, 35.64582824707}, + {139.57786560059, 35.707626342773}, + {139.47258, 35.721359}, + {139.546738, 35.752945}, + {139.48860168457, 35.751571655273}, + {139.5531463623, 35.67741394043}, + {139.497329, 35.639715}, + {139.43641662598, 35.676040649414}, + {141.47438049316, 38.377304077148}, + {140.90309143066, 38.27018737793}, + {141.03080749512, 38.67805480957}, + {140.88661193848, 38.303146362305}, + {140.85914611816, 38.268814086914}, + {140.85639953613, 38.27018737793}, + {140.91133117676, 38.257827758789}, + {-85.622393, 40.551682}, + {-86.86408996582, 40.371322631836}, + {-86.912155151367, 40.356216430664}, + {-86.10466003418, 38.605270385742}, + {-84.936926, 39.485607}, + {-87.518463, 39.438858}, + {-87.159217, 37.7348}, + {-88.637397, 36.737508}, + {-85.455843, 38.298153}, + {-88.688775, 37.094192}, + {-85.772324, 38.508944}, + {-85.782136, 38.416023}, + {-84.072876, 37.909355}, + {-85.835494995117, 38.294906616211}, + {-84.919509887695, 38.708267211914}, + {-82.659073, 38.011665}, + {-85.613905, 37.695759}, + {-85.361161, 36.78154}, + {-79.098812, 41.849671}, + {-78.36647, 40.016107}, + {-78.945693969727, 40.21614074707}, + {-78.610577, 40.966593}, + {-79.32238, 39.74801}, + {-79.67118, 40.593085}, + {90.361862182617, 23.765487670898}, + {90.963363647461, 24.056625366211}, + {91.365737915039, 23.047256469727}, + {91.816177368164, 22.371597290039}, + {72.949905395508, 4.0065765380859}, + {72.753524780273, 4.2194366455078}, + {73.508834838867, 4.1699981689453}, + {101.55006408691, 3.3954620361328}, + {101.75743103027, 2.6840972900391}, + {103.76243591309, 1.5346527099609}, + {103.5083770752, 1.5895843505859}, + {101.95655822754, 2.7060699462891}, + {101.697208, 3.102045}, + {102.4097442627, 2.2844696044922}, + {102.6734161377, 2.7472686767578}, + {101.635895, 3.455887}, + {101.58302307129, 3.2045745849609}, + {101.654362, 3.248011}, + {101.63932800293, 3.2279205322266}, + {101.55830383301, 3.1290435791016}, + {101.53495788574, 3.0480194091797}, + {101.59675598145, 3.0768585205078}, + {-99.239505, 19.466303}, + {-99.227175, 19.494618}, + {-99.182510375977, 19.511032104492}, + {-99.082260131836, 19.40803527832}, + {-98.98063659668, 19.377822875977}, + {-99.157673, 18.879164}, + {-100.320969, 25.643692}, + {-99.230593, 18.944331}, + {-100.39649963379, 25.730667114258}, + {-100.268815, 25.716958}, + {-103.360611, 20.64537}, + {-103.29551696777, 20.534133911133}, + {-100.45271, 20.698967}, + {-103.35594177246, 20.707168579102}, + {-103.38890075684, 20.59455871582}, + {-100.953369, 22.102432}, + {-99.538782, 19.269726}, + {-99.219562, 19.32273}, + {-99.153671264648, 19.425888061523}, + {-99.189377, 19.408493}, + {-99.214096069336, 19.432754516602}, + {-99.09049987793, 19.43000793457}, + {-99.211349487305, 19.344863891602}, + {-99.09049987793, 19.375076293945}, + {-80.453567504883, 25.468368530273}, + {-81.079788208008, 24.700698852539}, + {-80.200881958008, 25.994338989258}, + {-80.141830444336, 25.863876342773}, + {-86.847610473633, 36.093521118164}, + {-87.006226, 35.770111}, + {-86.408157348633, 36.193771362305}, + {-72.873001098633, 41.597671508789}, + {-73.210830688477, 41.268081665039}, + {-73.036423, 41.535187}, + {-72.894287, 41.592178}, + {-73.662643432617, 40.998916625977}, + {-73.510206, 40.935746}, + {-72.699966430664, 41.744613647461}, + {-72.65739440918, 41.788558959961}, + {-90.154495239258, 30.450668334961}, + {-89.734268, 30.30765}, + {-90.246505737305, 30.022201538086}, + {-90.107346, 30.467606}, + {113.84239196777, 22.903060913086}, + {113.83689880371, 22.874221801758}, + {113.67622375488, 22.846755981445}, + {113.7036895752, 22.833023071289}, + {113.30131530762, 22.716293334961}, + {110.38581848145, 21.171340942383}, + {113.26560974121, 22.749252319336}, + {113.73252868652, 22.780838012695}, + {109.71839904785, 21.142501831055}, + {114.09645080566, 22.831649780273}, + {113.82591247559, 23.113174438477}, + {113.337021, 23.069916}, + {114.42054748535, 22.971725463867}, + {113.33290100098, 23.227157592773}, + {113.3617401123, 23.136520385742}, + {114.074936, 22.551498}, + {113.98658752441, 23.216171264648}, + {114.07722473145, 22.551498413086}, + {114.0470123291, 23.191452026367}, + {114.069534, 22.520737}, + {113.96873474121, 22.562484741211}, + {114.12666320801, 22.55012512207}, + {113.38508605957, 22.539138793945}, + {113.456955, 22.57164}, + {34.828720092773, 32.035446166992}, + {34.773788452148, 32.069778442383}, + {34.764175415039, 32.06428527832}, + {34.801254, 32.033958}, + {35.007247924805, 31.899490356445}, + {34.797134399414, 31.895370483398}, + {34.962341, 32.016083}, + {34.843826293945, 32.113723754883}, + {34.854228, 32.126802}, + {34.927597045898, 32.132949829102}, + {34.957809448242, 32.207107543945}, + {34.861679077148, 32.069778442383}, + {34.868545532227, 31.848678588867}, + {34.55680847168, 31.649551391602}, + {35.016860961914, 31.747055053711}, + {32.435073852539, 41.001663208008}, + {16.217880249023, 46.774978637695}, + {14.733353, 45.95787}, + {14.554824829102, 45.883712768555}, + {21.38193, 41.997563}, + {50.278244018555, 53.215713500977}, + {39.120254516602, 56.254806518555}, + {39.727707, 43.580704}, + {37.582169, 44.656448}, + {38.966445922852, 46.358871459961}, + {39.151449, 45.034431}, + {49.134292602539, 55.824966430664}, + {39.722214, 45.193634}, + {49.108200073242, 55.801620483398}, + {51.869888305664, 55.609359741211}, + {44.15885925293, 44.802932739258}, + {112.56797790527, 59.433975219727}, + {42.922897338867, 45.297317504883}, + {47.171859741211, 56.110610961914}, + {42.6043, 44.455496}, + {71.437911987305, 51.16813659668}, + {69.177474975586, 41.454849243164}, + {76.948928833008, 43.259353637695}, + {69.611434936523, 42.322769165039}, + {76.887130737305, 43.340377807617}, + {76.899490356445, 43.285446166992}, + {76.904983520508, 43.281326293945}, + {76.344680786133, 29.240798950195}, + {76.872024536133, 29.974136352539}, + {77.014846801758, 29.228439331055}, + {76.210098266602, 28.293228149414}, + {76.781387329102, 30.373764038086}, + {76.852798461914, 30.342178344727}, + {76.977767944336, 29.007339477539}, + {74.975509643555, 29.651412963867}, + {76.751174926758, 28.787612915039}, + {76.795120239258, 28.48274230957}, + {77.189254760742, 32.245559692383}, + {76.07551574707, 30.853042602539}, + {76.164779663086, 30.906600952148}, + {121.03019714355, 24.545516967773}, + {120.90934753418, 24.688339233398}, + {120.801369, 24.494936}, + {120.647336, 24.180376}, + {120.981204, 23.93998}, + {120.813492, 24.572159}, + {120.56739807129, 23.717422485352}, + {120.452042, 24.100571}, + {120.446548, 23.709641}, + {120.588455, 23.955002}, + {120.446791, 23.472977}, + {120.187607, 22.980423}, + {120.366211, 23.494606}, + {120.297605, 23.061173}, + {120.22407531738, 22.981338500977}, + {120.28175354004, 22.91130065918}, + {120.28038024902, 22.938766479492}, + {120.337143, 22.652206}, + {120.32844543457, 22.646255493164}, + {120.298233, 22.608261}, + {120.355637, 22.756119}, + {120.31059265137, 22.68196105957}, + {120.337143, 22.676926}, + {120.50285339355, 22.687454223633}, + {106.69853210449, 10.717849731445}, + {106.64085388184, 10.789260864258}, + {106.65870666504, 10.797500610352}, + {106.713506, 10.822036}, + {109.20341491699, 12.220230102539}, + {108.19816589355, 16.065444946289}, + {108.22151184082, 16.083297729492}, + {108.54011535645, 15.529861450195}, + {107.93998718262, 16.272811889648}, + {109.15809631348, 12.255935668945}, + {108.32176208496, 15.888290405273}, + {105.78666687012, 10.03532409668}, + {105.71662902832, 9.3335723876953}, + {105.43647766113, 10.384140014648}, + {105.45570373535, 9.2374420166016}, + {106.34284973145, 10.340194702148}, + {105.96656799316, 9.6109771728516}, + {106.60377502441, 20.88981628418}, + {106.37992858887, 10.239944458008}, + {105.93223571777, 20.744247436523}, + {106.375122, 21.09993}, + {106.03935241699, 21.201553344727}, + {106.60377502441, 11.121597290039}, + {107.20664978027, 10.720596313477}, + {32.400741577148, 34.81086730957}, + {33.324966, 35.16861}, + {33.401870727539, 35.143203735352}, + {33.354336, 35.154637}, + {33.320847, 35.147781}, + {32.422714233398, 34.758682250977}, + {44.809799194336, 41.695175170898}, + {42.729263305664, 42.188186645508}, + {41.638870239258, 41.596298217773}, + {41.735001, 41.710968}, + {44.761734008789, 41.792678833008}, + {44.791946411133, 41.718521118164}, + {44.775466918945, 41.76383972168}, + {44.779586791992, 41.740493774414}, + {44.760360717773, 41.71028137207}, + {44.767227172852, 41.708908081055}, + {44.763107299805, 41.721267700195}, + {44.731521606445, 41.724014282227}, + {41.686935424805, 42.153854370117}, + {42.718964, 42.238998}, + {44.768600463867, 41.773452758789}, + {44.631271362305, 39.883804321289}, + {20.839004516602, 43.60954284668}, + {19.197749, 45.049604}, + {19.811533, 45.25512}, + {19.843172, 45.258767}, + {20.442124, 44.757385}, + {20.383456, 44.84404}, + {20.084123, 45.14384}, + {20.546494, 44.717789}, + {19.916152954102, 45.16960144043}, + {20.919571, 44.000931}, + {21.187116, 44.157501}, + {20.293807983398, 43.897933959961}, + {20.411224, 44.844818}, + {19.833755493164, 44.624404907227}, + {21.333389282227, 43.962478637695}, + {21.712417602539, 42.340621948242}, + {7.6485443115234, 45.056991577148}, + {76.648178100586, 12.31086730957}, + {74.872512817383, 12.764053344727}, + {75.335999, 12.593765}, + {74.850540161133, 12.872543334961}, + {74.879379272461, 15.543594360352}, + {76.75666809082, 16.524124145508}, + {75.114212036133, 15.759201049805}, + {76.20735168457, 15.347213745117}, + {76.902236938477, 17.21076965332}, + {75.620956420898, 14.604263305664}, + {76.993217, 13.005753}, + {76.903610229492, 15.143966674805}, + {76.177139282227, 14.369430541992}, + {77.937698364258, 13.000259399414}, + {76.893997192383, 15.587539672852}, + {77.592647, 12.869063}, + {77.564163208008, 13.182907104492}, + {77.465286254883, 13.059310913086}, + {77.510604858398, 12.934341430664}, + {77.676773071289, 12.92610168457}, + {77.672653198242, 12.945327758789}, + {77.722091674805, 12.959060668945}, + {77.573776245117, 12.964553833008}, + {-16.362076, 14.679794}, + {-15.768127, 13.760376}, + {-17.315436, 14.772051}, + {-17.46208190918, 14.758071899414}, + {-16.25358581543, 15.60676574707}, + {-15.988540649414, 18.115768432617}, + {-5.9511566162109, 15.859451293945}, + {-17.030868530273, 14.57405090332}, + {-16.028366088867, 17.986679077148}, + {-7.99324, 12.561493}, + {-8.028259, 12.599258}, + {-7.7584075927734, 12.612991333008}, + {-9.072647, 12.9776}, + {-8.0550384521484, 12.599258422852}, + {-5.9676361083984, 14.26643371582}, + {-6.7943572998047, 12.482528686523}, + {-7.9328155517578, 12.529220581055}, + {-14.186782836914, 10.27702331543}, + {-4.021683, 5.318756}, + {-4.105179, 5.316147}, + {-3.930931, 5.369797}, + {46.574478149414, 24.654006958008}, + {46.692581176758, 24.710311889648}, + {46.651382446289, 24.74739074707}, + {46.842269897461, 24.574356079102}, + {46.645889282227, 24.765243530273}, + {46.753005981445, 24.636154174805}, + {46.677474975586, 24.622421264648}, + {46.716843, 24.794083}, + {46.633529663086, 24.604568481445}, + {46.715927124023, 24.784469604492}, + {46.647262573242, 24.579849243164}, + {43.947372436523, 26.362380981445}, + {46.724166870117, 24.671859741211}, + {43.951492, 26.349335}, + {43.974838256836, 26.428298950195}, + {46.809310913086, 24.692459106445}, + {46.67610168457, 24.836654663086}, + {46.644515991211, 24.820175170898}, + {46.72554, 24.642334}, + {46.813430786133, 24.936904907227}, + {46.772232055664, 24.670486450195}, + {46.709060668945, 24.645767211914}, + {46.736526489258, 24.640274047852}, + {31.081008911133, 46.612930297852}, + {34.810181, 46.167984}, + {33.477401733398, 47.888717651367}, + {30.248789, 48.170243}, + {35.286026000977, 48.06999206543}, + {35.195389, 48.619995}, + {35.839737, 48.530319}, + {35.871048, 48.535263}, + {34.959182739258, 48.162002563477}, + {33.3615, 47.88131}, + {33.505796, 49.059301}, + {33.172107, 51.229738}, + {33.443069458008, 51.106338500977}, + {36.283035, 50.050552}, + {36.214705, 50.001373}, + {36.208471, 49.987544}, + {36.241409, 50.009079}, + {25.960006713867, 48.343276977539}, + {-80.323104858398, 36.166305541992}, + {-80.23796081543, 35.986404418945}, + {-80.781784057617, 35.248947143555}, + {-80.829849243164, 35.236587524414}, + {-80.838804, 35.321112}, + {-79.725571, 35.368271}, + {-80.868301391602, 35.280532836914}, + {-81.087341, 35.739212}, + {-78.433456420898, 33.944320678711}, + {-82.548576, 35.910873}, + {-81.335348, 35.766339}, + {-77.895463, 34.039311}, + {-80.678101, 35.507126}, + {-82.534103393555, 35.438461303711}, + {-80.529098510742, 35.39176940918}, + {-78.97590637207, 35.143203735352}, + {-78.522720336914, 35.244827270508}, + {-78.653183, 35.776416}, + {-78.767166137695, 35.796890258789}, + {-1.023033, 50.799206}, + {-1.316528, 51.413727}, + {-0.979832, 51.514217}, + {-0.828094, 51.377563}, + {-2.552673, 51.404892}, + {-0.124748, 51.250282}, + {-1.1377716064453, 51.348037719727}, + {-1.0141754150391, 50.911331176758}, + {-1.2915802001953, 50.886611938477}, + {-0.999069, 50.914327}, + {-1.462595, 53.44263}, + {-1.3520050048828, 53.435440063477}, + {-1.330809, 53.452579}, + {-1.600375, 54.945668}, + {-3.2251739501953, 55.929336547852}, + {-3.217251, 55.940323}, + {-1.830583, 53.846281}, + {-1.5071868896484, 53.899612426758}, + {-1.526432, 53.939884}, + {-3.6632537841797, 55.871658325195}, + {-1.4110565185547, 53.381881713867}, + {-3.5163116455078, 55.905990600586}, + {7.120526, 50.715885}, + {12.868274, 47.633134}, + {9.8471832275391, 49.090347290039}, + {7.9218292236328, 50.506210327148}, + {9.167336, 48.813269}, + {9.09213, 48.958247}, + {10.244064331055, 53.671646118164}, + {9.4791412353516, 53.546676635742}, + {6.5361785888672, 49.962387084961}, + {6.92688, 49.415817}, + {7.82864, 45.13213}, + {8.352585, 45.11055}, + {9.275208, 45.054245}, + {9.721527, 45.729561}, + {8.8034820556641, 45.852127075195}, + {9.188003, 45.562524}, + {9.246998, 45.594632}, + {10.996627807617, 45.183334350586}, + {11.276003, 42.82814}, + {11.109807, 43.794745}, + {13.263561, 38.237922}, + {9.049988, 44.518662}, + {14.120547, 53.28982}, + {13.636444, 52.747933}, + {8.5713958740234, 50.051651000977}, + {11.41571, 53.625069}, + {13.269424, 52.505035}, + {13.442494, 52.466442}, + {13.443832397461, 52.383499145508}, + {9.546433, 52.312878}, + {7.355153, 52.515406}, + {10.816893, 52.425881}, + {10.792007446289, 51.46614074707}, + {8.801216, 51.804451}, + {9.353066, 52.096361}, + {9.966797, 52.387482}, + {148.98765563965, -35.217361450195}, + {149.72648620605, -34.771041870117}, + {145.06073, -37.770996}, + {145.130768, -37.74147}, + {145.18089294434, -37.75520324707}, + {145.43769836426, -38.430862426758}, + {145.0902557373, -37.73323059082}, + {153.01689147949, -27.300338745117}, + {152.98805236816, -27.502212524414}, + {115.86936950684, -31.955795288086}, + {138.58222961426, -34.849319458008}, + {115.85289001465, -31.958541870117}, + {138.61518859863, -34.985275268555}, + {151.069565, -33.866501}, + {151.135483, -33.77037}, + {151.2068939209, -33.868789672852}, + {151.2865447998, -33.791885375977}, + {151.08329772949, -33.914108276367}, + {151.21925354004, -33.874282836914}, + {151.65870666504, -32.90885925293}, + {150.99266052246, -33.984146118164}, + {151.115857, -33.741074}, + {151.047592, -33.782616}, + {144.86366271973, -37.74284362793}, + {150.76881408691, -33.783645629883}, + {-80.51609, 27.619095}, + {-81.756820678711, 28.559646606445}, + {-81.019062, 29.169471}, + {-80.84816, 28.877792}, + {-81.294021606445, 28.496475219727}, + {-81.298853, 28.863634}, + {-73.883743286133, 40.85334777832}, + {-73.990859985352, 40.757217407227}, + {-80.977249, 29.161148}, + {-112.342392, 33.515671}, + {-112.097397, 33.498459}, + {-112.159914, 33.46279}, + {-112.433577, 33.432227}, + {-112.28096008301, 33.672409057617}, + {-111.80717468262, 33.072280883789}, + {-111.972427, 33.360825}, + {-111.946168, 33.385391}, + {-111.926651, 33.403015}, + {-112.012746, 33.506558}, + {-111.913055, 33.616379}, + {-112.07748, 33.479967}, + {-66.059268, 18.404279}, + {-73.979873657227, 40.685806274414}, + {-66.092606, 18.360214}, + {-5.772171, 42.514114}, + {-5.4879, 40.870743}, + {-6.598434, 42.057267}, + {-5.658188, 40.551224}, + {-2.5577545166016, 41.45622253418}, + {-4.792099, 40.421677}, + {-3.485184, 42.980804}, + {-3.323708, 42.557259}, + {-4.496841, 42.865677}, + {-3.714066, 40.40657}, + {-3.775115, 40.358774}, + {-3.781357, 40.395737}, + {-3.820496, 40.34935}, + {-3.845307, 40.309085}, + {-3.840408, 40.34111}, + {-3.858291, 40.402922}, + {-3.902547, 40.381765}, + {-3.6920928955078, 40.459213256836}, + {-3.8253021240234, 40.386428833008}, + {-3.7030792236328, 40.45783996582}, + {-3.7003326416016, 40.468826293945}, + {77.505111694336, 12.945327758789}, + {76.972274780273, 29.382247924805}, + {77.325210571289, 12.75993347168}, + {77.646561, 12.948761}, + {77.624268, 12.936539}, + {77.734451293945, 13.678665161133}, + {77.926712036133, 13.020858764648}, + {77.511292, 12.904816}, + {77.485886, 12.909622}, + {77.595748901367, 13.015365600586}, + {77.621841, 12.966654}, + {77.613327, 12.971008}, + {77.599868774414, 12.916488647461}, + {77.554550170898, 13.004379272461}, + {76.373519897461, 15.270309448242}, + {76.606979, 12.318833}, + {77.614974975586, 12.835464477539}, + {77.65754699707, 12.834091186523}, + {77.612515, 13.066612}, + {74.840927124023, 12.865676879883}, + {77.598495483398, 12.963180541992}, + {77.606735229492, 12.960433959961}, + {75.009155, 15.453644}, + {77.698745727539, 12.994766235352}, + {-0.093121, 51.50076}, + {-0.343494, 51.508713}, + {-0.30830383300781, 51.499099731445}, + {0.20805358886719, 51.555404663086}, + {0.094070434570312, 51.647415161133}, + {-0.187583, 51.619781}, + {-0.22727966308594, 51.578750610352}, + {0.065231323242188, 51.424942016602}, + {-4.0258026123047, 55.819473266602}, + {-3.9571380615234, 55.72883605957}, + {-0.019912719726562, 51.787490844727}, + {-0.080338, 51.632996}, + {0.28015, 51.705094}, + {-0.272255, 51.49498}, + {0.134583, 51.348038}, + {-0.44700622558594, 51.694107055664}, + {-0.38246154785156, 51.589736938477}, + {-2.9683685302734, 53.737564086914}, + {-0.079769, 51.397552}, + {-0.15312194824219, 51.382369995117}, + {100.407486, -0.932465}, + {100.356949, -0.933975}, + {100.38414001465, -0.30555725097656}, + {101.353226, 0.83519}, + {101.95930480957, 0.17921447753906}, + {102.298508, -0.383148}, + {101.112198, 1.566392}, + {101.426468, 0.470901}, + {101.557389, 1.703873}, + {103.49052429199, 0.36460876464844}, + {103.962432, 1.050081}, + {104.75120544434, -2.9779815673828}, + {104.737593, -2.991033}, + {104.801846, -2.968884}, + {104.96131896973, -3.7470245361328}, + {104.98191833496, -4.9472808837891}, + {105.310514, -5.447708}, + {103.60862731934, -1.5991973876953}, + {104.91050720215, -4.8799896240234}, + {103.14445495605, -1.2146759033203}, + {103.60313415527, -1.6335296630859}, + {107.612855, -6.925881}, + {107.81227111816, -7.2750091552734}, + {107.605888, -6.937819}, + {11.193692, 48.189469}, + {12.669296264648, 48.694839477539}, + {6.883496, 51.463519}, + {6.899851, 51.493981}, + {6.8575286865234, 51.496353149414}, + {6.949387, 51.477534}, + {6.7174530029297, 51.525192260742}, + {9.7359466552734, 53.54118347168}, + {9.8870086669922, 53.598861694336}, + {10.968933, 54.373398}, + {7.0566558837891, 51.05827331543}, + {6.985701, 50.99968}, + {8.8625335693359, 50.199966430664}, + {6.367037, 51.208632}, + {6.1750030517578, 50.769882202148}, + {6.1489105224609, 50.83854675293}, + {76.990127563477, 28.405838012695}, + {77.204360961914, 28.644790649414}, + {77.148056030273, 28.654403686523}, + {77.44743347168, 28.679122924805}, + {77.082596, 28.592148}, + {77.178268432617, 28.574752807617}, + {77.094498, 28.634491}, + {77.13089, 28.644791}, + {77.256546020508, 28.577499389648}, + {77.316284, 28.618011}, + {77.311477661133, 28.596725463867}, + {77.326583862305, 28.582992553711}, + {77.126083, 28.743668}, + {77.207667, 28.544884}, + {77.255218, 28.52694}, + {77.057418823242, 28.455276489258}, + {77.366409301758, 28.650283813477}, + {77.477645874023, 28.670883178711}, + {77.414474, 28.626251}, + {77.170028686523, 28.695602416992}, + {77.094497680664, 28.507461547852}, + {77.060165405273, 28.556900024414}, + {77.307357788086, 28.458023071289}, + {20.259475708008, 43.981704711914}, + {21.918755, 43.306046}, + {22.617416381836, 44.61067199707}, + {19.858474731445, 43.833389282227}, + {19.774703979492, 45.004806518555}, + {20.472794, 44.806595}, + {20.455856323242, 44.807052612305}, + {20.411453, 44.766998}, + {19.844153, 45.126441}, + {20.432510375977, 44.807052612305}, + {20.491561889648, 44.829025268555}, + {20.429268, 44.809494}, + {21.340255737305, 43.561477661133}, + {22.069473, 42.72377}, + {21.920445, 43.319893}, + {20.421524047852, 44.83039855957}, + {21.793441772461, 43.410415649414}, + {20.322648, 44.835435}, + {20.406682, 44.829126}, + {17.585678100586, 51.118698120117}, + {21.102932, 52.305466}, + {21.003501, 52.156245}, + {21.047745, 52.226944}, + {21.739884, 52.549667}, + {20.93376159668, 52.166519165039}, + {22.583612, 51.098204}, + {21.264038, 51.402283}, + {20.75217, 51.375663}, + {21.040184, 51.203161}, + {19.502229, 51.732172}, + {20.518719, 51.756051}, + {22.284155, 53.542101}, + {23.562240600586, 53.418960571289}, + {21.003799, 52.206001}, + {-82.065678, 33.500748}, + {-82.196376, 33.456752}, + {-82.055511, 33.266602}, + {-84.399032592773, 33.638076782227}, + {-83.712387084961, 32.812728881836}, + {-81.097032, 32.07474}, + {-81.61633, 31.874684}, + {-82.680623, 32.179114}, + {-81.878582, 31.633677}, + {-81.992691, 31.432234}, + {-82.407608, 32.35527}, + {-81.762259, 32.413211}, + {-81.099014282227, 31.972274780273}, + {-84.962705, 32.568016}, + {-84.928836, 32.412881}, + {-84.997787475586, 32.502365112305}, + {-83.458545, 31.146927}, + {-83.583755, 30.779068}, + {-84.956588745117, 32.462539672852}, + {-84.926376342773, 32.411727905273}, + {-89.831771850586, 35.130844116211}, + {-88.310623, 36.26976}, + {-89.791946411133, 35.136337280273}, + {-90.041885375977, 35.145950317383}, + {-93.073668, 44.87823}, + {-93.162689, 44.829712}, + {-93.429794311523, 45.220413208008}, + {-94.32243347168, 46.629409790039}, + {-93.488603, 44.811254}, + {-93.416061401367, 44.893569946289}, + {-93.97087097168, 44.934768676758}, + {-92.240524291992, 44.081954956055}, + {-93.336410522461, 45.02815246582}, + {-93.25058, 44.948502}, + {-92.223716, 46.836059}, + {-91.548938, 46.269342}, + {-91.878115, 45.405012}, + {-93.94715, 46.906885}, + {-123.955766, 45.898133}, + {-122.72071838379, 45.452499389648}, + {-124.03907775879, 44.872970581055}, + {-122.60398864746, 45.150375366211}, + {-123.14094543457, 45.610427856445}, + {-122.67402648926, 45.547256469727}, + {-123.091507, 43.760605}, + {-35.045700073242, -8.2857513427734}, + {-35.213241577148, -5.8632659912109}, + {-35.334091186523, -5.7451629638672}, + {-36.082534790039, -8.0042266845703}, + {-37.056822, -8.425196}, + {-36.535720825195, -8.3585357666016}, + {-37.131729125977, -10.899124145508}, + {-40.673643, -3.859634}, + {-34.906997680664, -7.8559112548828}, + {-39.637206, -3.290054}, + {-35.037460327148, -8.0261993408203}, + {-40.283482, -20.317583}, + {-34.92498, -8.056025}, + {-34.88115, -7.146268}, + {-48.453827, -1.316299}, + {-48.403981, -1.386526}, + {-48.448259, -1.377581}, + {-40.641860961914, -20.381698608398}, + {-48.878118, -1.717574}, + {-47.208113, -0.995143}, + {-47.958755493164, -16.252212524414}, + {-47.990341186523, -15.974807739258}, + {36.583786010742, 7.8572845458984}, + {-47.86262512207, -15.777053833008}, + {-47.914810180664, -15.827865600586}, + {-47.897534, -15.820582}, + {-47.977981567383, -15.838851928711}, + {-47.836532592773, -15.680923461914}, + {-54.324943, -15.532174}, + {-47.993546, -15.799942}, + {-54.469902, -16.62174}, + {-48.008687, -15.799996}, + {-49.838790893555, -25.351638793945}, + {-49.286727905273, -25.421676635742}, + {-51.139297, -23.555832}, + {-49.984603, -23.16076}, + {-51.90881, -23.396253}, + {-53.206100463867, -24.605941772461}, + {-48.427047729492, -27.423934936523}, + {37.811851, 55.728493}, + {37.604141235352, 55.579147338867}, + {39.926376342773, 43.428268432617}, + {30.323868, 59.929733}, + {37.518629, 55.854166}, + {37.474713, 55.728745}, + {69.026217, 60.975985}, + {37.69889831543, 55.743942260742}, + {37.582633, 55.456927}, + {60.627365112305, 56.758804321289}, + {60.58479309082, 56.817855834961}, + {45.015335, 53.188133}, + {76.374893188477, 64.412155151367}, + {92.802887, 56.013107}, + {45.941390991211, 51.51969909668}, + {43.690567016602, 43.558731079102}, + {28.736801, 60.71434}, + {37.245516, 55.664782}, + {37.36824, 55.645828}, + {30.318832397461, 60.018997192383}, + {86.745986938477, 53.902359008789}, + {151.156769, -33.909988}, + {144.97627258301, -37.859573364258}, + {145.35118103027, -37.88703918457}, + {153.1665802002, -27.65739440918}, + {146.786727, -19.28032}, + {115.957604, -31.964722}, + {138.54652404785, -35.060806274414}, + {151.20277404785, -33.528213500977}, + {148.65531921387, -34.740829467773}, + {149.133774, -35.280258}, + {149.1584, -35.356706}, + {151.144987, -33.757097}, + {151.203725, -33.547017}, + {145.056, -37.799225}, + {147.10899353027, -41.38069152832}, + {15.259323120117, 49.944534301758}, + {-2.2075653076172, 53.358535766602}, + {-1.8587493896484, 53.710098266602}, + {-1.99539, 53.442465}, + {-2.0922088623047, 53.611221313477}, + {-3.869616, 56.098972}, + {-3.594045, 56.557312}, + {-3.6220550537109, 56.574783325195}, + {-1.9713592529297, 50.738296508789}, + {-1.075974, 52.975388}, + {-1.3025665283203, 53.086624145508}, + {-1.166382, 52.957535}, + {-1.245713, 53.362381}, + {-2.083433, 52.806918}, + {-2.1636199951172, 53.152542114258}, + {-2.170487, 53.01384}, + {-1.980057, 52.466812}, + {-1.978226, 52.444611}, + {-1.9287872314453, 52.518081665039}, + {1.2833404541016, 52.702102661133}, + {27.789479, 42.928619}, + {27.881636, 43.208584}, + {23.243147, 43.399226}, + {24.810562133789, 43.525772094727}, + {27.416379, 42.336504}, + {27.018127, 44.051743}, + {23.299942016602, 42.741622924805}, + {24.741897583008, 42.14973449707}, + {25.618973, 42.209702}, + {23.677597045898, 43.31428527832}, + {25.690841674805, 43.124771118164}, + {26.319808959961, 42.678451538086}, + {26.353226, 42.679367}, + {27.458267211914, 42.527389526367}, + {23.382698, 42.662595}, + {23.3156, 42.716611}, + {24.622423, 42.122956}, + {24.430160522461, 42.085189819336}, + {78.697128295898, 10.823593139648}, + {78.697128295898, 10.824966430664}, + {76.951675, 11.063232}, + {78.360214, 10.150223}, + {77.52571105957, 9.4338226318359}, + {78.466415405273, 9.7290802001953}, + {80.082778930664, 12.378158569336}, + {77.742691040039, 12.55256652832}, + {78.105239868164, 9.9227142333984}, + {76.394119262695, 11.558303833008}, + {78.186264038086, 11.750564575195}, + {79.580154418945, 11.219100952148}, + {77.007294, 10.938263}, + {78.491134643555, 9.8746490478516}, + {77.510605, 13.41362}, + {76.254043579102, 9.9515533447266}, + {79.831466674805, 10.461044311523}, + {77.609138, 12.996998}, + {75.953636, 12.455063}, + {77.573776, 12.998886}, + {77.572402954102, 13.02360534668}, + {77.63681, 12.894516}, + {77.608108520508, 12.930221557617}, + {-83.983422, 43.66037}, + {-83.321544, 44.57349}, + {-85.509493, 44.519797}, + {-85.878087, 41.545604}, + {-85.662460327148, 44.029769897461}, + {-88.092902, 46.510249}, + {-80.229721069336, 25.81169128418}, + {-80.434341430664, 25.760879516602}, + {-80.205688, 26.055794}, + {-80.13298, 26.710587}, + {-80.207062, 25.781479}, + {-80.165229, 25.991804}, + {-80.225601196289, 25.946273803711}, + {-80.231094360352, 25.958633422852}, + {-80.178909, 26.07399}, + {-80.274353, 25.660172}, + {-80.195389, 26.985855}, + {-80.147323608398, 25.950393676758}, + {-80.195388793945, 26.211318969727}, + {-66.853866577148, 10.238571166992}, + {-66.860733032227, 10.473403930664}, + {-67.990951538086, 10.271530151367}, + {-68.663864135742, 10.353927612305}, + {-66.004002, 9.214869}, + {-69.289166, 10.079398}, + {-69.614181518555, 10.00373840332}, + {-71.204452514648, 8.5123443603516}, + {-71.231293, 8.551131}, + {-63.162460327148, 9.7386932373047}, + {-68.234024047852, -16.51725769043}, + {-68.174286, -16.509018}, + {-68.159866333008, -16.574935913086}, + {-66.158981323242, -17.385177612305}, + {-63.186851, -17.792247}, + {-63.154220581055, -17.755966186523}, + {29.216805, 41.007599}, + {29.187927, 41.01059}, + {28.962020874023, 41.056594848633}, + {28.930435180664, 41.040115356445}, + {28.925473, 41.051757}, + {28.827363, 41.02227}, + {28.77799987793, 40.993423461914}, + {28.853530883789, 41.033248901367}, + {28.841171264648, 41.044235229492}, + {28.857758, 41.052525}, + {29.005214, 41.090514}, + {28.955154, 41.086807}, + {29.022445678711, 41.074447631836}, + {28.898454, 41.10196}, + {29.219694, 40.891052}, + {33.991145, 38.29858}, + {29.21745300293, 40.901412963867}, + {32.514681, 37.877136}, + {32.485134, 37.877321}, + {29.217662, 40.906725}, + {29.06364440918, 40.996170043945}, + {29.047202, 41.005828}, + {29.05403137207, 41.01676940918}, + {28.87001, 40.99823}, + {52.442906, 29.825037}, + {50.949783325195, 35.858688354492}, + {58.78303527832, 36.234970092773}, + {52.555160522461, 29.629440307617}, + {52.470016479492, 29.693984985352}, + {69.22966003418, 41.272201538086}, + {69.321670532227, 41.373825073242}, + {69.247512817383, 41.303787231445}, + {69.342269897461, 41.279067993164}, + {69.652633666992, 40.29167175293}, + {74.637680053711, 42.881698608398}, + {68.78952, 38.570938}, + {74.622573852539, 42.885818481445}, + {74.69123840332, 42.880325317383}, + {72.761764526367, 40.521011352539}, + {68.363113, 25.358505}, + {73.216323852539, 34.375534057617}, + {74.30534362793, 31.553421020508}, + {73.223190307617, 33.870162963867}, + {67.087326049805, 24.930038452148}, + {72.057266235352, 32.844314575195}, + {71.981735229492, 30.324325561523}, + {71.330795288086, 29.952163696289}, + {72.85514831543, 30.288619995117}, + {72.665634155273, 32.068405151367}, + {71.869125366211, 29.430313110352}, + {71.466751098633, 30.208969116211}, + {73.47038269043, 34.356307983398}, + {74.354782, 32.332077}, + {74.44953918457, 31.483383178711}, + {74.55940246582, 32.496871948242}, + {74.22981262207, 32.163162231445}, + {74.242172241211, 31.874771118164}, + {67.070846557617, 24.924545288086}, + {72.180862426758, 29.80110168457}, + {68.280715942383, 26.166000366211}, + {67.03239440918, 30.180130004883}, + {67.17658996582, 24.876480102539}, + {67.13264465332, 24.920425415039}, + {75.870895385742, 30.395736694336}, + {76.111221313477, 30.397109985352}, + {74.246292114258, 30.31608581543}, + {75.891494750977, 30.52619934082}, + {74.956283569336, 31.336441040039}, + {76.803359985352, 30.707473754883}, + {74.921951293945, 31.473770141602}, + {75.837936401367, 30.884628295898}, + {76.769027709961, 30.673141479492}, + {75.810470581055, 31.145553588867}, + {75.836563110352, 30.936813354492}, + {75.796737670898, 31.29524230957}, + {75.517959594727, 31.34880065918}, + {76.622085571289, 30.752792358398}, + {75.696487426758, 30.947799682617}, + {75.090866088867, 30.116958618164}, + {76.861038208008, 30.707473754883}, + {75.61408996582, 31.325454711914}, + {74.891738891602, 31.626205444336}, + {75.843773, 30.879478}, + {76.653214, 30.746384}, + {76.644058, 30.743866}, + {76.776718, 30.721619}, + {101.76429748535, 2.9381561279297}, + {101.67640686035, 3.1194305419922}, + {101.86592102051, 3.7992095947266}, + {101.662674, 3.065872}, + {101.641182, 3.063618}, + {101.706646, 3.189064}, + {101.67778015137, 2.9463958740234}, + {101.777229, 3.034547}, + {102.1996307373, 5.5281829833984}, + {101.83158874512, 3.0027008056641}, + {101.82746887207, 3.0068206787109}, + {101.762466, 2.974777}, + {100.80986022949, 4.7797393798828}, + {99.799856, 6.33169}, + {99.774398803711, 6.3246917724609}, + {101.25205993652, 4.0683746337891}, + {100.26191711426, 5.2974700927734}, + {86.121139526367, 25.454635620117}, + {100.26741027832, 5.3043365478516}, + {101.041723, 3.997941}, + {100.45555114746, 5.3372955322266}, + {101.2603, 4.062195}, + {-117.36351013184, 47.679977416992}, + {-90.238265991211, 38.586044311523}, + {-82.520370483398, 28.000717163086}, + {-93.31169128418, 44.890823364258}, + {-93.400955200195, 45.062484741211}, + {-93.210067749023, 44.81803894043}, + {-88.509292602539, 44.198684692383}, + {-77.080764770508, 39.08317565918}, + {-72.672500610352, 41.772079467773}, + {-77.477645874023, 38.752212524414}, + {-121.74293518066, 37.701644897461}, + {-122.41035461426, 38.156204223633}, + {-122.38014221191, 37.796401977539}, + {-122.29499816895, 37.87467956543}, + {-121.34880065918, 38.363571166992}, + {-121.43394470215, 38.605270385742}, + {-71.157760620117, 42.418899536133}, + {-121.51222229004, 38.628616333008}, + {-111.9115447998, 40.449600219727}, + {-111.90330505371, 40.628128051758}, + {-85.663833618164, 42.898178100586}, + {-118.53355407715, 34.273910522461}, + {-122.17414855957, 47.170486450195}, + {-122.48588562012, 47.184219360352}, + {-118.56376647949, 34.435958862305}, + {-4.726693, 56.006823}, + {-4.235946, 51.545112}, + {-2.5193023681641, 55.984268188477}, + {-2.6758575439453, 51.478500366211}, + {-1.4302825927734, 52.291488647461}, + {-3.185107, 58.495652}, + {0.19844055175781, 52.182998657227}, + {95.315322875977, 27.395095825195}, + {91.582717895508, 26.090469360352}, + {95.540542602539, 27.463760375977}, + {80.070419311523, 12.867050170898}, + {80.22834777832, 13.037338256836}, + {80.270919799805, 13.059310913086}, + {80.290145874023, 13.099136352539}, + {80.202255249023, 12.66242980957}, + {80.25993347168, 13.116989135742}, + {80.280533, 13.073044}, + {80.1956, 13.001421}, + {80.16413, 13.081611}, + {80.184059, 12.921181}, + {80.18401, 12.989077}, + {80.187898, 13.143581}, + {80.270233, 13.272858}, + {80.012741088867, 12.735214233398}, + {80.146866, 13.117905}, + {80.189895629883, 12.908248901367}, + {80.196762, 13.110809}, + {80.275726, 13.029099}, + {80.279159545898, 13.08952331543}, + {-77.006607055664, -12.027969360352}, + {-76.997716, -12.062081}, + {-76.991500854492, -12.154312133789}, + {-76.836319, -12.308807}, + {-76.883, -12.278834}, + {-76.985213, -12.111077}, + {-77.05192565918, -12.077407836914}, + {-77.00592, -12.089081}, + {-77.043686, -9.557762}, + {-77.087425, -12.081917}, + {-79.010139, -8.1138}, + {-78.545319, -9.09115}, + {-70.144271850586, -15.487289428711}, + {-71.557388305664, -16.384048461914}, + {-71.532375, -16.399189}, + {-71.58073425293, -16.393661499023}, + {-80.44807434082, -3.5849761962891}, + {-73.250329, -3.734578}, + {-73.257522583008, -3.7470245361328}, + {-79.84732, -6.786105}, + {-71.936416625977, -13.52897644043}, + {17.032241821289, 53.134689331055}, + {18.05534362793, 51.474380493164}, + {18.597107, 54.396744}, + {17.051468, 54.664879}, + {18.697585, 53.926915}, + {14.510879516602, 53.451919555664}, + {18.110496, 52.632274}, + {14.538071, 53.425369}, + {15.883018, 53.36034}, + {20.457229614258, 53.741683959961}, + {14.215621948242, 53.922958374023}, + {18.550039, 54.511421}, + {14.558944702148, 53.457412719727}, + {14.532852172852, 53.435440063477}, + {16.224314, 54.203994}, + {16.204629, 54.199028}, + {18.762588500977, 53.07014465332}, + {18.563461303711, 53.019332885742}, + {-48.340668, -18.941179}, + {-48.229569, -18.90845}, + {-48.230667114258, -18.741989135742}, + {-45.282211303711, -19.785690307617}, + {-34.825973510742, -7.1115875244141}, + {-48.186492, -18.63645}, + {-36.938095092773, -5.5995941162109}, + {-34.941329956055, -8.0687713623047}, + {-44.02702331543, -19.874954223633}, + {-43.384323120117, -22.92366027832}, + {-34.92073059082, -8.1195831298828}, + {-43.227767944336, -22.982711791992}, + {-38.547592163086, -3.7868499755859}, + {-43.93913269043, -19.927139282227}, + {-43.922653198242, -19.906539916992}, + {-46.660995483398, -23.523788452148}, + {-46.670608520508, -23.56086730957}, + {-46.612930297852, -23.56086730957}, + {-46.662368774414, -23.574600219727}, + {-46.622543334961, -23.536148071289}, + {-46.65412902832, -23.564987182617}, + {-46.660538, -23.512344}, + {-46.626663208008, -23.615798950195}, + {37.580795288086, 55.754928588867}, + {37.514534, 55.748405}, + {37.530706, 55.73975}, + {37.608948, 55.728836}, + {37.583541870117, 55.743942260742}, + {37.615598, 55.729228}, + {37.603455, 55.710983}, + {37.593154907227, 55.792007446289}, + {37.580795288086, 55.779647827148}, + {37.525863647461, 55.792007446289}, + {37.576447, 55.580521}, + {37.657699584961, 55.572280883789}, + {37.762999, 55.733992}, + {37.84309387207, 55.779647827148}, + {37.674179077148, 55.730209350586}, + {37.65495300293, 55.705490112305}, + {37.6576, 55.650728}, + {37.659602, 55.666773}, + {37.437973022461, 55.879898071289}, + {37.700271606445, 55.627212524414}, + {37.470932, 55.864792}, + {37.732707, 55.603867}, + {18.222686, 50.016698}, + {18.357467651367, 49.908828735352}, + {37.87467956543, 55.823593139648}, + {30.320205688477, 59.986038208008}, + {37.980422973633, 55.793380737305}, + {36.112747192383, 55.47477722168}, + {36.711502075195, 55.572280883789}, + {38.851089477539, 58.049697875977}, + {50.224685668945, 53.344802856445}, + {40.472946166992, 56.315231323242}, + {40.380935668945, 56.162796020508}, + {44.016036987305, 56.312484741211}, + {43.864974975586, 56.24382019043}, + {43.79768371582, 56.308364868164}, + {43.778457641602, 56.385269165039}, + {92.920303344727, 56.074905395508}, + {92.913436889648, 56.028213500977}, + {92.820053100586, 56.022720336914}, + {37.735977172852, 55.689010620117}, + {92.977981567383, 56.015853881836}, + {104.31037902832, 52.294235229492}, + {104.29527282715, 52.281875610352}, + {104.45869445801, 52.571640014648}, + {104.354324, 52.248917}, + {83.66933, 53.33678}, + {91.419022, 53.104843}, + {83.721527, 53.35508}, + {83.969193, 53.372269}, + {35.910873, 56.869217}, + {35.948243, 56.810586}, + {84.946975708008, 56.455307006836}, + {83.676681518555, 53.38737487793}, + {39.711273, 54.629401}, + {83.779678344727, 53.320083618164}, + {73.376449, 54.973389}, + {39.521255493164, 54.550552368164}, + {73.265762329102, 54.973526000977}, + {37.475395, 53.98613}, + {92.799911, 55.999832}, + {93.012313842773, 56.04606628418}, + {38.047028, 53.898926}, + {39.949722290039, 57.65007019043}, + {86.125946, 55.410233}, + {86.733627319336, 53.815841674805}, + {39.194412231445, 51.647415161133}, + {37.893906, 59.136658}, + {37.927551, 59.127731}, + {39.269943237305, 51.694107055664}, + {39.507522583008, 51.537551879883}, + {41.046981811523, 56.978530883789}, + {104.22386169434, 52.270889282227}, + {104.20875549316, 52.262649536133}, + {104.291977, 52.293686}, + {20.514907836914, 54.653549194336}, + {36.259689331055, 54.54231262207}, + {35.151441, 54.048712}, + {35.914993, 54.163971}, + {49.822311401367, 58.630599975586}, + {158.6693572998, 52.989120483398}, + {40.950488, 57.772768}, + {36.125106811523, 51.792984008789}, + {36.157999, 51.697409}, + {30.583436, 59.749391}, + {30.358657836914, 59.704513549805}, + {-76.689376831055, 40.264205932617}, + {-76.837225, 40.30933}, + {-76.833572387695, 40.312271118164}, + {-75.344924926758, 39.650344848633}, + {-75.969429, 39.869385}, + {-74.951363, 39.685784}, + {-75.036353, 39.421281}, + {-75.656661987305, 39.639358520508}, + {-75.520706176758, 39.76432800293}, + {-112.25761413574, 33.563919067383}, + {-111.983414, 33.625717}, + {-111.882877, 33.535938}, + {-111.990383, 33.64505}, + {-111.907425, 33.648376}, + {-111.81129455566, 33.581771850586}, + {-111.9115447998, 33.407363891602}, + {-111.90467834473, 33.349685668945}, + {-111.8058013916, 33.466415405273}, + {-111.96510314941, 33.456802368164}, + {101.139908, 13.867217}, + {101.04606628418, 13.438339233398}, + {101.05155944824, 12.736587524414}, + {100.99937438965, 13.423233032227}, + {100.99113464355, 13.368301391602}, + {100.88629, 12.706171}, + {101.30561828613, 13.383407592773}, + {100.624324, 13.715934}, + {100.564007, 13.751212}, + {104.35569763184, 17.735366821289}, + {101.83296203613, 14.911880493164}, + {102.844218, 16.395172}, + {102.39326477051, 15.248336791992}, + {104.60619, 15.86342}, + {102.589004, 15.713871}, + {99.72084, 16.141319}, + {99.720840454102, 17.019882202148}, + {99.005355834961, 18.809280395508}, + {98.985856, 18.789121}, + {98.982697, 18.775635}, + {98.990538, 18.785253}, + {99.114271, 19.822777}, + {100.1863861084, 16.750717163086}, + {100.710983, 19.345551}, + {-54.597244262695, -25.475234985352}, + {-56.193008, -34.863968}, + {-55.727463, -34.762802}, + {-55.550308227539, -30.938186645508}, + {-54.780122, -34.564133}, + {-54.826583862305, -32.858047485352}, + {23.802109, 38.032608}, + {23.660769, 37.924465}, + {23.723898, 37.96457}, + {22.988537, 40.529976}, + {22.742385864258, 39.860458374023}, + {22.91130065918, 40.66520690918}, + {26.957015991211, 36.96418762207}, + {21.733017, 38.221436}, + {25.431289672852, 36.418991088867}, + {23.744598, 37.874696}, + {22.959212, 40.538561}, + {23.798211, 38.036142}, + {13.369674682617, 52.546920776367}, + {13.399887084961, 52.518081665039}, + {14.458694458008, 51.173629760742}, + {13.438339233398, 52.533187866211}, + {13.47541809082, 52.479629516602}, + {13.274917602539, 52.459030151367}, + {13.371047973633, 52.45491027832}, + {13.296890258789, 52.446670532227}, + {13.336166, 52.468369}, + {13.318013, 52.512589}, + {11.610806, 52.095108}, + {11.69838, 52.090302}, + {8.3708953857422, 52.37663269043}, + {-88.348352, 42.175223}, + {-87.672958374023, 42.01789855957}, + {-87.67707824707, 42.053604125977}, + {-88.018377, 41.949588}, + {-88.146057, 41.905975}, + {-87.90641784668, 41.979446411133}, + {-87.858352661133, 41.90803527832}, + {-87.688064575195, 41.949234008789}, + {-87.697677612305, 41.924514770508}, + {-87.626266479492, 41.82975769043}, + {-87.859725952148, 41.79817199707}, + {-87.600174, 41.795425}, + {-87.667465209961, 41.964340209961}, + {-87.7668, 41.704788}, + {-88.334884643555, 42.107162475586}, + {-87.887191772461, 42.133255004883}, + {-88.22639465332, 41.51252746582}, + {-88.745976, 41.374149}, + {-88.135757446289, 41.453475952148}, + {6.236388, 52.439486}, + {5.8165740966797, 50.745162963867}, + {4.35456, 50.842492}, + {9.4928741455078, 44.23713684082}, + {8.9792633056641, 44.399185180664}, + {6.878677, 45.064682}, + {8.799088, 44.432144}, + {7.962224, 44.63215}, + {8.7966156005859, 44.425277709961}, + {7.9589080810547, 44.992446899414}, + {7.710342, 44.491653}, + {8.56959, 45.926719}, + {7.6403045654297, 45.187454223633}, + {8.071518, 45.531464}, + {7.6142120361328, 45.11604309082}, + {9.980392, 44.104614}, + {7.623138, 45.085487}, + {9.85817, 44.107361}, + {9.1179656982422, 45.452499389648}, + {9.2154693603516, 45.46760559082}, + {9.2484283447266, 45.456619262695}, + {9.2388153076172, 45.462112426758}, + {8.8350677490234, 45.747756958008}, + {8.799362, 45.831985}, + {-79.392013549805, 43.647994995117}, + {-79.40299987793, 43.68782043457}, + {-79.420852661133, 43.676834106445}, + {-79.345321655273, 43.674087524414}, + {-79.394760131836, 43.783950805664}, + {-79.224472045898, 43.761978149414}, + {-79.465091, 43.633998}, + {-79.684012, 43.673694}, + {-79.762802124023, 43.669967651367}, + {-79.789563, 43.673429}, + {-79.771957, 43.438797}, + {-79.832016, 43.198654}, + {-80.08363, 43.466035}, + {-81.256954, 43.002062}, + {-3.4325408935547, 40.165328979492}, + {-0.59944152832031, 38.980178833008}, + {-4.012905, 40.588647}, + {-3.661879, 40.437241}, + {2.138116, 41.376964}, + {0.764581, 41.644021}, + {2.2487640380859, 41.633377075195}, + {2.124137, 41.515961}, + {2.1718597412109, 41.371078491211}, + {2.0784759521484, 41.344985961914}, + {1.2448883056641, 41.122512817383}, + {-0.121999, 38.576129}, + {-0.83839416503906, 38.141098022461}, + {2.6250457763672, 39.657211303711}, + {-15.468063354492, 28.09684753418}, + {-3.3844757080078, 39.003524780273}, + {-2.155929, 40.07277}, + {2.0235443115234, 41.560592651367}, + {2.00717, 41.454215}, + {1.135405, 41.08746}, + {2.1375274658203, 41.362838745117}, + {2.1279144287109, 41.361465454102}, + {2.1389007568359, 41.376571655273}, + {-5.3249359130859, 35.890274047852}, + {-8.7100982666016, 42.234878540039}, + {-8.4203338623047, 43.312911987305}, + {-3.6742401123047, 40.434494018555}, + {-3.7058258056641, 40.39192199707}, + {-3.6646270751953, 40.374069213867}, + {-3.6206817626953, 40.455093383789}, + {-3.6248016357422, 40.416641235352}, + {-3.6440277099609, 40.350723266602}, + {-3.704256, 40.233602}, + {-3.45108, 40.463608}, + {-2.509231, 43.056107}, + {-0.23963928222656, 39.719009399414}, + {76.386337, 30.35408}, + {76.329574584961, 31.428451538086}, + {76.472396850586, 32.078018188477}, + {77.047805786133, 30.892868041992}, + {77.351303, 31.127014}, + {76.293869018555, 31.486129760742}, + {77.110977172852, 30.92170715332}, + {77.352676391602, 28.673629760742}, + {77.462539672852, 28.662643432617}, + {77.436938, 28.671472}, + {77.029037, 28.447037}, + {77.135696411133, 28.635177612305}, + {77.317886, 28.368759}, + {77.334823608398, 28.543167114258}, + {77.38151550293, 28.628311157227}, + {77.243729, 28.582535}, + {77.278518676758, 28.621444702148}, + {77.096558, 28.499908}, + {77.094497680664, 28.529434204102}, + {77.278518676758, 28.617324829102}, + {77.278518676758, 28.488235473633}, + {77.134323120117, 28.666763305664}, + {77.436447143555, 28.654403686523}, + {77.146682739258, 28.728561401367}, + {-1.8587493896484, 50.745162963867}, + {-2.0784759521484, 51.061019897461}, + {-1.285498, 50.76125}, + {-0.95649719238281, 51.462020874023}, + {-1.10321, 50.727768}, + {-0.86448669433594, 50.868759155273}, + {-1.1157989501953, 50.966262817383}, + {0.91529846191406, 51.142044067383}, + {-1.887589, 52.470566}, + {-1.785965, 52.582169}, + {-1.8972015380859, 52.386245727539}, + {1.3863372802734, 52.821578979492}, + {-2.2020721435547, 53.653793334961}, + {-2.449951, 53.723145}, + {-2.5975799560547, 53.71696472168}, + {-4.2111968994141, 55.830459594727}, + {-4.1686248779297, 55.840072631836}, + {-4.5215606689453, 55.93620300293}, + {-2.803536, 53.514833}, + {-83.530884, 41.659698}, + {-83.675308, 41.378403}, + {-84.639358520508, 39.013137817383}, + {-84.586411, 38.988419}, + {-81.009750366211, 40.547103881836}, + {-73.98811340332, 40.764083862305}, + {-73.816452, 41.137423}, + {-84.099067, 40.720923}, + {-74.077272, 41.10878}, + {-74.297103881836, 40.29167175293}, + {-74.743881, 40.617142}, + {-74.17350769043, 40.526504516602}, + {-74.104843, 40.17128}, + {-74.012832641602, 40.703659057617}, + {-73.075562, 40.948105}, + {-74.638465, 40.867081}, + {-73.980331, 40.735245}, + {-74.335556030273, 40.549850463867}, + {-93.256759643555, 45.040512084961}, + {-74.657364, 40.886154}, + {-73.254776000977, 40.850601196289}, + {-93.173456, 45.081711}, + {-93.273907, 45.053206}, + {-79.385147094727, 9.0808868408203}, + {-79.551315307617, 8.9984893798828}, + {-79.643325805664, 9.0177154541016}, + {-79.551315307617, 8.9463043212891}, + {-79.916610717773, 8.8433074951172}, + {-79.541702270508, 8.9627838134766}, + {-79.508743286133, 8.9875030517578}, + {-79.536209106445, 8.9627838134766}, + {-76.994247436523, -11.955184936523}, + {-77.562789916992, -11.203994750977}, + {-77.072525024414, -11.964797973633}, + {-79.729985, 8.908256}, + {-77.209854125977, -11.495132446289}, + {-77.056045532227, -12.099380493164}, + {-77.744064331055, -10.745315551758}, + {-77.065658569336, -12.102127075195}, + {-77.06428527832, -12.084274291992}, + {-77.109603881836, -12.06916809082}, + {-77.025833129883, -12.062301635742}, + {-76.95442199707, -12.03483581543}, + {-77.053298950195, -12.080154418945}, + {10.843919, 55.735157}, + {12.49626159668, 55.798873901367}, + {12.023849487305, 55.981521606445}, + {12.581405639648, 55.698623657227}, + {18.051551, 59.319804}, + {12.449061, 55.679041}, + {18.061905, 59.351648}, + {11.984024047852, 57.696762084961}, + {18.205033, 59.340592}, + {18.0549, 59.352925}, + {12.071914672852, 57.537460327148}, + {15.218173, 59.272883}, + {16.515884399414, 59.604263305664}, + {17.685664, 59.864328}, + {11.889266967773, 57.77229309082}, + {12.714614868164, 56.02409362793}, + {17.65983581543, 59.939346313477}, + {16.907272338867, 60.625991821289}, + {18.857358, 68.364949}, + {14.275972, 57.860256}, + {-54.615097045898, -20.44075012207}, + {-44.17426, -19.963885}, + {-39.294662475586, -7.2296905517578}, + {-53.824081420898, -29.682998657227}, + {-47.879104614258, -15.799026489258}, + {-43.188214, -22.971891}, + {-51.228233, -30.028174}, + {-51.170883178711, -29.165267944336}, + {-43.175495, -22.967578}, + {-51.214828491211, -30.046920776367}, + {-51.100845336914, -30.081253051758}, + {-51.239547729492, -30.068893432617}, + {-51.206588745117, -29.953536987305}, + {-38.487013, -3.742749}, + {-43.460652, -22.733386}, + {-34.890518188477, -8.0838775634766}, + {-35.17067, -5.885582}, + {-43.197437, -22.986212}, + {-46.625885, -23.477737}, + {-34.90222, -8.112207}, + {-43.17116, -22.82403}, + {-77.067031860352, -11.970291137695}, + {-77.027206420898, -12.104873657227}, + {-77.764663696289, -10.745315551758}, + {-77.081157, -12.087685}, + {-76.933822631836, -12.217483520508}, + {-77.016220092773, -11.989517211914}, + {-76.622635, -12.719009}, + {-77.064323, -12.072494}, + {-76.998367, -11.984196}, + {-77.058792114258, -12.080154418945}, + {-77.017593, -11.877594}, + {-76.965408325195, -12.12272644043}, + {-77.061538696289, -12.05680847168}, + {-77.067031860352, -11.955184936523}, + {-77.101364135742, -12.074661254883}, + {-77.090377807617, -11.948318481445}, + {-76.826705932617, -11.992263793945}, + {-76.973648071289, -12.04719543457}, + {-76.958541870117, -12.07878112793}, + {-77.039566040039, -12.065048217773}, + {-77.018966674805, -12.121353149414}, + {73.809585571289, 19.994430541992}, + {79.080276, 21.14415}, + {73.749160766602, 19.999923706055}, + {73.787612915039, 18.611526489258}, + {73.889236450195, 19.918899536133}, + {73.772506713867, 18.549728393555}, + {73.705215, 20.011597}, + {73.205337524414, 17.721633911133}, + {73.835928, 18.530502}, + {73.9991, 17.723351}, + {73.069381713867, 19.288558959961}, + {72.916946, 20.123863}, + {74.056777954102, 14.955825805664}, + {73.820571899414, 15.399398803711}, + {73.898849487305, 15.327987670898}, + {73.812332, 15.584335}, + {79.295883178711, 19.960098266602}, + {75.331192016602, 19.892807006836}, + {73.775253295898, 20.006790161133}, + {73.997726, 15.181389}, + {86.599044799805, 20.273208618164}, + {88.357544, 22.714233}, + {91.78596496582, 26.145401000977}, + {86.660842895508, 20.267715454102}, + {10.787887573242, 43.897933959961}, + {11.617355, 43.290115}, + {11.460645, 43.239366}, + {10.819473266602, 43.642501831055}, + {11.673361, 42.633487}, + {10.873031616211, 43.76335144043}, + {10.303475, 43.545941}, + {10.845016, 42.772934}, + {11.308594, 42.974167}, + {12.578399, 43.330396}, + {12.717362, 42.861522}, + {12.748947143555, 43.268966674805}, + {12.676849, 42.900101}, + {12.792892456055, 43.85124206543}, + {13.879166, 42.909851}, + {14.129791, 42.384567}, + {13.369674682617, 42.358474731445}, + {13.361434936523, 42.370834350586}, + {13.865433, 42.100296}, + {87.336502075195, 26.220932006836}, + {86.579818725586, 26.311569213867}, + {85.770950317383, 26.164627075195}, + {86.443862915039, 25.465621948242}, + {86.18293762207, 22.794570922852}, + {85.974197387695, 24.078598022461}, + {86.452102661133, 23.817672729492}, + {84.875564575195, 25.843276977539}, + {84.920883178711, 25.885848999023}, + {86.084060668945, 20.665969848633}, + {85.865707397461, 20.288314819336}, + {85.850601196289, 20.288314819336}, + {85.880813598633, 20.400924682617}, + {84.909896850586, 19.332504272461}, + {84.982681274414, 22.245254516602}, + {85.783309936523, 20.569839477539}, + {84.009933, 21.851578}, + {85.540237426758, 20.05485534668}, + {82.547836303711, 19.239120483398}, + {87.008972, 21.614914}, + {77.178268432617, 31.083755493164}, + {76.659164428711, 31.028823852539}, + {76.987185, 31.708995}, + {4.5476531982422, 51.985244750977}, + {4.739485, 52.072449}, + {4.5449066162109, 51.901473999023}, + {4.604721, 52.047348}, + {4.959641, 52.389336}, + {4.567795, 51.840591}, + {4.3663787841797, 51.946792602539}, + {5.610733, 52.657242}, + {4.7316741943359, 52.307968139648}, + {4.65477, 52.722702}, + {4.721237, 52.365372}, + {5.01564, 52.850876}, + {5.562668, 53.049698}, + {4.8415374755859, 52.052536010742}, + {5.419694, 51.396103}, + {4.4611358642578, 51.906967163086}, + {5.5611419677734, 51.87126159668}, + {-43.404922485352, -22.859115600586}, + {-46.726054, -23.62085}, + {-46.829096, -23.499426}, + {-46.564865112305, -23.523788452148}, + {-46.929425, -23.152292}, + {-47.976608276367, -15.811386108398}, + {-51.140084, -30.005048}, + {-51.13655090332, -29.702224731445}, + {-60.04754, -3.060037}, + {-60.009012, -3.034419}, + {-63.887492, -8.745802}, + {-54.616144, -20.544105}, + {-47.884977, -15.796373}, + {-49.38047, -20.802147}, + {-51.068341, 0.034553}, + {-49.370119, -20.786023}, + {-51.959956, -23.415674}, + {-46.303514, -23.988597}, + {-49.049411, -22.366486}, + {-47.038902, -22.932974}, + {-22.874221801758, 16.195907592773}, + {13.254318237305, -1.4989471435547}, + {-23.58283996582, 14.921493530273}, + {9.473648, 0.426407}, + {11.574783325195, 1.6115570068359}, + {10.418472290039, -0.89332580566406}, + {9.430618, 0.447693}, + {12.139205932617, -4.4213104248047}, + {12.06916809082, -4.5146942138672}, + {27.487106323242, -11.666793823242}, + {15.317001342773, -4.3045806884766}, + {23.361740112305, -6.2999725341797}, + {28.845291137695, -2.4849700927734}, + {29.233932495117, -1.6500091552734}, + {14.85969543457, -5.2631378173828}, + {13.240585327148, -8.8117218017578}, + {13.371047973633, -8.9037322998047}, + {13.23371887207, -9.6576690673828}, + {60.597152709961, 56.909866333008}, + {38.035354614258, 60.171432495117}, + {82.913681, 54.995636}, + {34.19563293457, 62.221755981445}, + {29.891052, 55.982895}, + {28.150587, 57.516027}, + {28.492357, 59.360733}, + {28.60221862793, 59.374923706055}, + {30.257034301758, 59.851455688477}, + {30.36984, 59.935357}, + {29.764594, 59.997643}, + {30.103225708008, 60.667190551758}, + {44.562606811523, 48.733291625977}, + {32.02995300293, 59.443588256836}, + {44.601058959961, 48.819808959961}, + {38.943082, 46.641097}, + {56.400375366211, 58.009872436523}, + {40.605469, 49.374619}, + {121.16752624512, 14.607009887695}, + {120.95878601074, 14.167556762695}, + {121.13182067871, 14.580917358398}, + {121.02607727051, 14.558944702148}, + {120.98075866699, 14.484786987305}, + {120.93132019043, 14.104385375977}, + {121.06590270996, 14.325485229492}, + {121.03569030762, 14.646835327148}, + {121.03569030762, 14.677047729492}, + {121.042557, 14.633789}, + {120.97663879395, 14.582290649414}, + {121.03019714355, 14.593276977539}, + {121.0343170166, 14.571304321289}, + {121.08100891113, 14.626235961914}, + {121.04667663574, 14.571304321289}, + {121.04667663574, 14.600143432617}, + {121.05079650879, 14.572677612305}, + {121.1661529541, 14.609756469727}, + {121.08375549316, 14.623489379883}, + {121.12770080566, 14.60563659668}, + {121.11122131348, 14.637222290039}, + {121.052936, 14.549955}, + {131.9066619873, 43.095932006836}, + {131.93824768066, 43.174209594727}, + {131.909134, 43.127792}, + {132.0824432373, 43.354110717773}, + {131.94786071777, 43.814163208008}, + {103.873672, 52.528381}, + {104.27742004395, 52.231063842773}, + {75.781631469727, 63.754348754883}, + {103.74183654785, 52.663650512695}, + {75.443801879883, 63.19953918457}, + {76.579513549805, 60.955581665039}, + {76.52458190918, 60.954208374023}, + {65.578079223633, 57.136459350586}, + {72.645034790039, 61.081924438477}, + {76.589126586914, 60.952835083008}, + {56.213607788086, 58.024978637695}, + {60.514755249023, 56.691513061523}, + {56.13395690918, 57.954940795898}, + {60.863571166992, 56.69563293457}, + {65.804672, 55.377274}, + {103.813248, 1.260452}, + {103.773422, 1.335678}, + {103.766098, 1.370316}, + {103.828354, 1.371994}, + {103.85032653809, 1.3657379150391}, + {103.991089, 1.315613}, + {114.88059997559, 4.8703765869141}, + {115.05912780762, 5.0200653076172}, + {175.847168, -37.004063}, + {174.881057, -37.008526}, + {172.544207, -43.522241}, + {172.635081, -43.535224}, + {172.584915, -43.516159}, + {176.087151, -37.689629}, + {178.42552185059, -18.13362121582}, + {166.475928, -22.131075}, + {-149.529831, -17.525253}, + {31.222457885742, 30.443801879883}, + {44.309921264648, 29.15153503418}, + {37.341842651367, 31.336441040039}, + {49.770126342773, 26.28547668457}, + {49.966506958008, 26.37336730957}, + {50.774918, 24.708939}, + {49.587478637695, 25.442276000977}, + {50.054397583008, 26.431045532227}, + {50.064697, 26.462631}, + {50.065383911133, 26.435165405273}, + {49.624557495117, 25.363998413086}, + {50.187606811523, 26.286849975586}, + {49.56413269043, 25.373611450195}, + {49.540591, 26.998999}, + {49.561386108398, 27.139663696289}, + {49.546279907227, 27.112197875977}, + {50.028305, 26.364441}, + {50.065383911133, 26.366500854492}, + {48.994492, 25.927322}, + {50.136267, 26.305374}, + {50.118354, 26.45655}, + {50.215072631836, 26.323928833008}, + {50.110016, 26.417999}, + {50.020064, 26.762696}, + {137.854729, 34.748955}, + {137.978668, 36.243896}, + {137.94502258301, 36.230850219727}, + {137.971802, 36.150513}, + {138.382187, 36.344376}, + {137.25425720215, 36.153945922852}, + {138.42979431152, 36.778793334961}, + {131.464737, 33.285416}, + {130.943985, 33.724594}, + {130.814896, 33.664169}, + {129.76570129395, 33.157424926758}, + {139.59571838379, 36.000137329102}, + {139.381142, 35.811653}, + {139.60807800293, 35.986404418945}, + {139.494736, 35.896683}, + {139.38011169434, 35.965805053711}, + {139.07661437988, 36.38053894043}, + {139.6053314209, 35.964431762695}, + {139.44877624512, 35.890274047852}, + {138.879089, 37.529297}, + {138.87886047363, 37.737350463867}, + {138.937847, 37.64946}, + {138.77998352051, 37.304763793945}, + {139.727726, 35.763931}, + {139.69596862793, 35.769424438477}, + {-5.9937286376953, 37.39128112793}, + {-5.965439, 37.370682}, + {-4.8827362060547, 36.508255004883}, + {-4.6025848388672, 36.564559936523}, + {-6.5361785888672, 36.993026733398}, + {-4.7920989990234, 37.878799438477}, + {-4.7893524169922, 37.880172729492}, + {-4.0518951416016, 37.197647094727}, + {-15.413132, 28.100357}, + {-2.504513, 36.83214}, + {-16.787493, 28.085255}, + {-16.726814, 28.079968}, + {-16.548502, 28.139421}, + {-3.8568878173828, 40.312271118164}, + {-4.0079498291016, 40.629501342773}, + {-3.7813568115234, 40.662460327148}, + {-3.4407806396484, 40.334243774414}, + {-3.6975860595703, 40.418014526367}, + {-3.48081, 40.464854}, + {-3.5932159423828, 40.453720092773}, + {-3.934676, 40.297935}, + {136.616364, 35.326538}, + {137.00706481934, 35.122604370117}, + {137.105942, 35.009995}, + {137.284277, 34.568649}, + {135.61317443848, 34.650192260742}, + {135.436707, 34.662209}, + {135.01167297363, 35.25993347168}, + {135.77247619629, 34.846572875977}, + {135.464859, 34.715424}, + {135.718918, 34.577751}, + {135.20805358887, 34.707870483398}, + {139.551773, 35.477066}, + {135.75874328613, 35.015487670898}, + {139.476242, 35.791054}, + {135.69969177246, 35.016860961914}, + {139.478302, 35.806503}, + {139.61769104004, 35.460433959961}, + {139.77149963379, 36.020736694336}, + {139.016863, 36.347381}, + {138.18809509277, 36.624984741211}, + {139.38148498535, 35.419235229492}, + {139.88410949707, 36.640090942383}, + {139.06288146973, 37.913131713867}, + {139.83329772949, 35.747451782227}, + {-4.972, 34.054871}, + {-6.798477, 34.062424}, + {-6.4482879638672, 32.106857299805}, + {-5.3249359130859, 33.548812866211}, + {-9.8856353759766, 29.622573852539}, + {-6.1653900146484, 32.477645874023}, + {-5.5968475341797, 33.944320678711}, + {-4.8291778564453, 34.16130065918}, + {-6.5375518798828, 32.809982299805}, + {-8.1072235107422, 30.956039428711}, + {-9.3706512451172, 31.54655456543}, + {-7.5263214111328, 33.613357543945}, + {-9.605484, 30.417709}, + {-9.5725250244141, 30.387496948242}, + {-7.7748870849609, 33.478775024414}, + {-7.6691436767578, 33.533706665039}, + {-9.4654083251953, 30.358657836914}, + {-6.1804962158203, 33.833084106445}, + {-6.6323089599609, 34.026718139648}, + {-6.477124, 33.96149}, + {21.234512329102, 45.772476196289}, + {28.03093, 44.666291}, + {21.698001, 46.54976}, + {21.917953, 47.040024}, + {25.969619750977, 43.902053833008}, + {21.223526000977, 45.757369995117}, + {24.873733520508, 44.89631652832}, + {25.975112915039, 44.932022094727}, + {20.622024536133, 46.067733764648}, + {25.62629699707, 45.650253295898}, + {23.578720092773, 46.067733764648}, + {23.647384643555, 46.784591674805}, + {23.777161, 46.879349}, + {22.037887573242, 46.655502319336}, + {26.049270629883, 44.45686340332}, + {26.085634, 44.465856}, + {26.15364074707, 44.463729858398}, + {26.061630249023, 44.296188354492}, + {26.152267456055, 44.443130493164}, + {26.08772277832, 44.451370239258}, + {24.261245727539, 44.557113647461}, + {23.287582397461, 45.052871704102}, + {-64.863561, 18.329595}, + {-66.120529174805, 18.398666381836}, + {-66.038681, 18.275208}, + {-65.995967, 18.39307}, + {-66.569595336914, 18.041610717773}, + {-66.727523803711, 18.16520690918}, + {-66.642379760742, 18.034744262695}, + {-88.225562, 40.111902}, + {-88.906173706055, 38.246841430664}, + {-88.888320922852, 39.831619262695}, + {-89.643630981445, 39.407272338867}, + {-89.668019, 39.759893}, + {-88.183479, 39.485035}, + {-87.280821, 41.51311}, + {-87.222519, 41.621704}, + {-87.015434, 41.458687}, + {-87.03987121582, 41.542739868164}, + {-87.557301, 41.651895}, + {-87.861099243164, 42.148361206055}, + {-89.054184, 42.36229}, + {-89.075088500977, 41.34635925293}, + {-88.13938, 41.568077}, + {27.259140014648, 37.00813293457}, + {32.77153, 39.955902}, + {32.784533, 39.95983}, + {30.056326, 39.902537}, + {33.436661, 39.848557}, + {32.775287, 39.970466}, + {30.019454956055, 40.444107055664}, + {27.413292, 38.611107}, + {27.50358581543, 37.990036010742}, + {30.273056, 40.69725}, + {30.384750366211, 40.784683227539}, + {30.550232, 40.716019}, + {35.406875610352, 37.03010559082}, + {29.065017700195, 40.47981262207}, + {30.472640991211, 36.418991088867}, + {29.08561706543, 37.782669067383}, + {29.263738, 40.214398}, + {39.442384, 39.739962}, + {29.023818969727, 41.077194213867}, + {29.044418334961, 41.07307434082}, + {27.074535, 38.394112}, + {27.12205, 38.407305}, + {3.097135, 48.05452}, + {14.353294, 45.345726}, + {13.513108, 45.470047}, + {9.919759, 52.255816}, + {20.265885, 44.755326}, + {20.427017211914, 44.791946411133}, + {20.420150756836, 44.767227172852}, + {20.457229614258, 44.815292358398}, + {20.463867, 44.816666}, + {21.205673217773, 44.728775024414}, + {21.147994995117, 44.62028503418}, + {20.69206237793, 44.94987487793}, + {19.449234008789, 45.035018920898}, + {20.26496887207, 44.956741333008}, + {20.069961547852, 45.054244995117}, + {20.332260131836, 45.120162963867}, + {21.377334594727, 43.947372436523}, + {19.675827, 46.131592}, + {4.2098236083984, 50.500717163086}, + {4.661419, 50.711954}, + {3.322673, 50.541919}, + {3.700333, 50.649033}, + {4.0546417236328, 50.936050415039}, + {4.102006, 51.043934}, + {3.3542633056641, 50.817947387695}, + {3.7483978271484, 51.030807495117}, + {3.2869720458984, 51.348037719727}, + {3.380815, 51.160677}, + {3.102951, 50.936737}, + {3.3309173583984, 50.833053588867}, + {2.9985809326172, 51.175003051758}, + {4.8387908935547, 50.463638305664}, + {3.050079, 51.238174}, + {5.710831, 49.993801}, + {5.5968475341797, 50.649032592773}, + {5.489927, 50.604106}, + {99.120712280273, 18.80241394043}, + {98.859786987305, 19.149856567383}, + {99.260787963867, 20.002670288086}, + {100.233078, 17.341919}, + {98.942184, 18.50441}, + {101.07490539551, 19.596176147461}, + {99.79362487793, 15.749588012695}, + {100.35667419434, 16.90315246582}, + {98.571395874023, 16.708145141602}, + {100.63059, 16.034566}, + {100.18501281738, 13.798141479492}, + {100.12596130371, 16.102523803711}, + {100.28251647949, 13.707504272461}, + {99.554672241211, 11.350936889648}, + {98.759536743164, 8.3502960205078}, + {100.04081726074, 9.4695281982422}, + {99.443435668945, 8.3077239990234}, + {100.0284576416, 9.4503021240234}, + {100.46241760254, 7.0030975341797}, + {100.435046, 13.661014}, + {100.4761505127, 7.0539093017578}, + {100.528772, 13.682832}, + {100.49812316895, 13.696517944336}, + {100.48027038574, 13.693771362305}, + {-47.428665161133, -20.491561889648}, + {-47.38472, -20.53688}, + {-47.322508, -20.984612}, + {-46.86149597168, -23.477096557617}, + {-46.559371948242, -23.09944152832}, + {-46.806564331055, -23.181838989258}, + {-49.30045, -16.703585}, + {-48.31078, -10.085065}, + {-54.598875, -20.501193}, + {-63.033021, -9.926589}, + {-48.247146606445, -15.915756225586}, + {-48.054885864258, -15.899276733398}, + {-55.511938, -11.881221}, + {-47.910690307617, -15.786666870117}, + {-55.711918, -12.546192}, + {-56.076278686523, -15.590286254883}, + {-56.065292358398, -15.634231567383}, + {-76.907528, 38.785869}, + {-77.149429321289, 39.014511108398}, + {-77.127456665039, 38.95133972168}, + {-77.046432495117, 38.874435424805}, + {-77.002487182617, 38.848342895508}, + {-77.119216918945, 38.870315551758}, + {-76.992874145508, 38.999404907227}, + {-77.068405151367, 38.960952758789}, + {-76.579513549805, 39.242477416992}, + {-76.951675415039, 39.025497436523}, + {-76.896743774414, 38.974685668945}, + {-77.454299926758, 39.400405883789}, + {-78.213802, 39.785879}, + {-77.10823059082, 38.702774047852}, + {-80.969924926758, 34.805374145508}, + {-76.644058227539, 39.38117980957}, + {-81.010535, 34.954082}, + {-78.926467895508, 33.703994750977}, + {-81.917495727539, 34.523849487305}, + {-78.882522583008, 33.710861206055}, + {135.48408508301, 34.663925170898}, + {135.73127746582, 34.99626159668}, + {135.23826599121, 34.718856811523}, + {135.62553405762, 34.830093383789}, + {136.03889465332, 35.07453918457}, + {136.87522888184, 35.180282592773}, + {137.14027404785, 34.960556030273}, + {136.81755065918, 35.225601196289}, + {138.72779846191, 35.152816772461}, + {138.68110656738, 35.145950317383}, + {126.592619, 36.344144}, + {127.265637, 36.495347}, + {127.23747253418, 37.406387329102}, + {128.54072570801, 35.890274047852}, + {126.99577331543, 37.44758605957}, + {128.411952, 36.182288}, + {127.05757141113, 37.21549987793}, + {127.03559875488, 37.490158081055}, + {128.12461853027, 36.674423217773}, + {128.025687, 37.433024}, + {139.77149963379, 35.728225708008}, + {139.83055114746, 35.758438110352}, + {139.53666687012, 35.652694702148}, + {139.53254699707, 35.663681030273}, + {139.5092010498, 35.64582824707}, + {139.28535461426, 35.73371887207}, + {139.18922424316, 35.726852416992}, + {139.54490661621, 35.626602172852}, + {139.64241027832, 35.666427612305}, + {139.60807800293, 35.687026977539}, + {139.42543029785, 35.497512817383}, + {139.714165, 35.528412}, + {139.424744, 35.490646}, + {139.67399597168, 35.205001831055}, + {139.50370788574, 35.336837768555}, + {139.4913482666, 35.309371948242}, + {139.20707702637, 35.63346862793}, + {139.321745, 35.415117}, + {139.3416595459, 35.371170043945}, + {139.15351867676, 35.25032043457}, + {139.29908752441, 35.351943969727}, + {139.70970153809, 35.651321411133}, + {80.202255249023, 13.082656860352}, + {80.218734741211, 13.04557800293}, + {80.16655, 12.981949}, + {80.218048, 12.974854}, + {80.132217407227, 13.049697875977}, + {80.227203, 12.978973}, + {76.953048706055, 10.99250793457}, + {79.827346801758, 11.94694519043}, + {80.092391967773, 12.930221557617}, + {76.996994018555, 11.018600463867}, + {77.297744750977, 11.13395690918}, + {76.915969848633, 10.558547973633}, + {77.514724731445, 10.757675170898}, + {78.121262, 11.63475}, + {79.16130065918, 11.252059936523}, + {79.972229, 12.703629}, + {77.870407104492, 12.714614868164}, + {78.013229370117, 9.3129730224609}, + {79.801712, 11.942825}, + {77.340316772461, 9.9652862548828}, + {78.745193481445, 10.929336547852}, + {79.080276489258, 12.919235229492}, + {77.521591186523, 10.005111694336}, + {78.819351196289, 11.069412231445}, + {-74.746170043945, 40.188674926758}, + {-75.305099487305, 39.999160766602}, + {-75.219955444336, 40.004653930664}, + {-74.869766235352, 40.154342651367}, + {-75.597523, 40.28037}, + {-75.166847, 40.094482}, + {-74.75029, 40.321884}, + {-75.074113, 39.948529}, + {-75.452041625977, 39.885177612305}, + {-75.051040649414, 39.71076965332}, + {-75.379257202148, 40.62126159668}, + {-75.590744018555, 40.553970336914}, + {-75.665742, 40.535063}, + {-75.23183, 41.07057}, + {-75.137557983398, 40.232620239258}, + {-76.673286, 39.957619}, + {-75.033187866211, 39.791793823242}, + {-76.694183, 39.973755}, + {-75.296173, 40.100784}, + {100.28938293457, 5.4663848876953}, + {150.842972, -33.720818}, + {150.80589294434, -33.974533081055}, + {151.004754, -33.750536}, + {151.158329, -33.552031}, + {151.10389709473, -33.813858032227}, + {151.009792, -33.953508}, + {151.20552062988, -33.741073608398}, + {151.08055114746, -33.879776000977}, + {151.127129, -33.94808}, + {78.32016, 15.231857}, + {78.3078, 15.231857}, + {78.514824, 17.352219}, + {80.890274, 17.670822}, + {78.351161, 17.384131}, + {78.488388061523, 17.385177612305}, + {80.761184692383, 16.16569519043}, + {80.239792, 16.823502}, + {81.391525268555, 16.547470092773}, + {81.074982, 16.701622}, + {80.091705, 16.195908}, + {79.949569702148, 14.536972045898}, + {79.77653503418, 14.582290649414}, + {81.740341186523, 16.61750793457}, + {83.798904418945, 18.364334106445}, + {81.641464233398, 16.591415405273}, + {81.524734, 16.809082}, + {80.148634, 17.229309}, + {80.14045715332, 14.33235168457}, + {80.15007019043, 17.451095581055}, + {83.30246, 17.7285}, + {79.896835, 13.980789}, + {78.094254, 18.666654}, + {78.016891, 18.605576}, + {-7.166161, 37.287912}, + {-17.112808, 28.094101}, + {-6.1159515380859, 37.308883666992}, + {-5.891418, 37.374802}, + {-5.9854888916016, 37.392654418945}, + {-5.9758758544922, 37.388534545898}, + {-6.1035919189453, 37.568435668945}, + {-5.1573944091797, 36.752700805664}, + {-3.703232, 37.758255}, + {-2.4616241455078, 36.868057250977}, + {-4.481461, 36.633499}, + {-4.8195648193359, 36.505508422852}, + {-3.5671234130859, 37.245712280273}, + {-3.6165618896484, 37.178421020508}, + {-4.695807, 36.558107}, + {-8.400323, 43.32743}, + {-8.215714, 43.274002}, + {-8.509935, 42.889269}, + {-8.6537933349609, 42.921524047852}, + {-9.0149688720703, 42.622146606445}, + {-8.5562896728516, 42.877578735352}, + {-8.052979, 43.655777}, + {32.472152709961, 37.869186401367}, + {32.120590209961, 38.261947631836}, + {38.31413269043, 38.351211547852}, + {27.605657, 39.184226}, + {36.623611450195, 37.859573364258}, + {28.120193481445, 38.528366088867}, + {27.389104, 38.6149}, + {38.075867, 40.963898}, + {29.112043, 36.622105}, + {28.265762329102, 36.874923706055}, + {27.246591, 37.052965}, + {36.331100463867, 41.303787231445}, + {36.247857, 41.345459}, + {28.002090454102, 41.092300415039}, + {30.202102661133, 40.698165893555}, + {36.337966918945, 41.288681030273}, + {39.322128295898, 37.753829956055}, + {27.66975402832, 40.718765258789}, + {39.669570922852, 40.996170043945}, + {38.816757202148, 37.166061401367}, + {28.871383666992, 41.055221557617}, + {28.841171264648, 40.992050170898}, + {33.973159790039, 38.342971801758}, + {28.85627746582, 41.052474975586}, + {9.1001129150391, 45.54313659668}, + {9.040604, 45.626564}, + {9.205685, 45.467606}, + {9.118494, 45.51877}, + {12.335586547852, 45.436019897461}, + {11.390762329102, 44.492568969727}, + {11.411073, 44.487437}, + {11.479202, 45.628555}, + {14.172801, 42.364842}, + {11.77391, 42.153099}, + {10.949935913086, 43.941879272461}, + {14.201845, 42.449378}, + {12.545700073242, 41.910781860352}, + {12.616013, 41.862717}, + {12.588272094727, 41.928634643555}, + {16.792166, 41.144236}, + {14.785537719727, 40.746231079102}, + {15.090408325195, 37.50114440918}, + {16.513137817383, 41.193923950195}, + {22.072848, 45.597071}, + {127.340309, 34.913138}, + {126.26792907715, 33.38264465332}, + {126.8872833252, 35.058059692383}, + {127.322617, 35.568237}, + {126.720481, 35.967403}, + {127.08778381348, 35.769424438477}, + {126.88316345215, 35.134963989258}, + {126.94358825684, 35.158309936523}, + {128.427741, 36.019114}, + {126.87355041504, 35.14045715332}, + {128.551573, 35.924709}, + {128.695194, 35.842112}, + {128.27156066895, 35.906753540039}, + {129.06944274902, 35.758438110352}, + {128.6011505127, 35.884780883789}, + {128.59016418457, 35.857315063477}, + {128.64372253418, 35.86555480957}, + {128.563433, 35.812822}, + {128.059731, 35.092392}, + {129.041744, 35.106892}, + {128.56407165527, 35.053939819336}, + {129.069338, 35.157068}, + {128.1616973877, 35.159683227539}, + {128.09303283691, 35.174789428711}, + {128.04496765137, 35.177536010742}, + {127.14134216309, 37.615127563477}, + {127.22648620605, 37.785415649414}, + {126.93809509277, 37.505264282227}, + {127.125834, 37.459275}, + {127.10426330566, 37.508010864258}, + {126.639369, 37.426039}, + {126.81037902832, 37.683792114258}, + {127.03422546387, 37.573928833008}, + {126.559577, 37.565826}, + {126.978064, 37.299617}, + {127.14820861816, 36.793899536133}, + {126.801471, 37.250884}, + {127.294656, 36.594214}, + {127.02323913574, 37.573928833008}, + {127.21000671387, 37.749710083008}, + {126.72386169434, 37.339096069336}, + {128.106964, 35.163823}, + {128.59153747559, 35.835342407227}, + {128.975408, 35.213242}, + {128.704083, 36.562447}, + {126.263471, 33.399606}, + {128.664992, 35.879543}, + {126.64421081543, 35.932846069336}, + {127.503147, 34.945696}, + {110.86235046387, -7.5634002685547}, + {110.67970275879, -7.6554107666016}, + {110.35423278809, -7.7817535400391}, + {110.3295135498, -7.8009796142578}, + {112.73963928223, -7.2791290283203}, + {112.70668029785, -7.2667694091797}, + {112.68882751465, -7.2612762451172}, + {112.71217346191, -7.2832489013672}, + {112.680725, -7.286111}, + {112.71629333496, -7.4645233154297}, + {112.698097, -7.294235}, + {112.96211242676, -7.6869964599609}, + {112.75611877441, -7.2722625732422}, + {112.76985168457, -7.3203277587891}, + {112.77534484863, -7.2475433349609}, + {112.76847839355, -7.3395538330078}, + {112.28645324707, -7.5977325439453}, + {112.23976135254, -7.6183319091797}, + {112.532314, -7.886193}, + {111.538749, -7.642734}, + {112.609194, -7.95733}, + {112.62840270996, -7.9767608642578}, + {113.26560974121, -7.7762603759766}, + {101.664047, 3.071823}, + {39.03923034668, 45.017166137695}, + {29.939804077148, 60.090408325195}, + {31.316254, 30.093201}, + {77.66571, 12.913818}, + {-56.203994750977, -34.90837097168}, + {16.090164, 51.238861}, + {77.527256, 28.445835}, + {101.66404724121, 2.9766082763672}, + {107.146179, -6.299432}, + {88.222276, 23.111802}, + {-3.2265472412109, 42.981948852539}, + {2.297009, 48.899555}, + {2.298903, 48.899044}, + {72.915074, 19.103539}, + {-8.382339, 43.366699}, + {-61.768112, 16.090164}, + {22.947006, 40.575943}, + {14.719485, 58.625287}, + {30.40397644043, 60.006637573242}, + {75.979843, 10.848312}, + {7.826157, 48.167038}, + {-1.022207, 54.239347}, + {44.179458618164, 13.87092590332}, + {-70.687375, 19.780586}, + {30.378571, 59.710007}, + {2.473434, 41.66359}, + {72.856522, 19.155121}, + {18.581093, 51.212372}, + {112.18620300293, 37.201766967773}, + {9.476788, 42.266555}, + {19.235687, 42.438126}, + {27.573166, 53.858871}, + {-82.551613, 37.364845}, + {44.831771850586, 41.805038452148}, + {4.348108, 50.877462}, + {34.287643432617, 31.337814331055}, + {-94.424057006836, 30.853042602539}, + {12.602005004883, 43.86360168457}, + {30.87776184082, -30.035934448242}, + {114.277039, 30.555038}, + {76.400985717773, 30.349044799805}, + {77.230453491211, 28.613204956055}, + {8.879259, 51.282085}, + {-66.849746704102, 10.513229370117}, + {6.100159, 46.205978}, + {21.412152, 48.122107}, + {31.289424, 58.564625}, + {-90.791702270508, 41.750106811523}, + {15.689163208008, 49.42268371582}, + {-55.886764526367, -27.381362915039}, + {81.780167, 17.014847}, + {-4.357448, 47.881851}, + {-1.856689, 38.996658}, + {15.801773071289, 40.624008178711}, + {-1.46447, 52.553787}, + {114.12528991699, 32.181015014648}, + {48.221054077148, 56.35368347168}, + {119.14741516113, 36.712875366211}, + {2.079506, 41.303787}, + {-82.516250610352, 28.070755004883}, + {77.734909, 29.496689}, + {80.335464477539, 25.476608276367}, + {-3.256485, 51.423706}, + {-75.544739, 39.744415}, + {-5.5817413330078, 37.255325317383}, + {144.958848, -37.823143}, + {-79.888396, -2.10332}, + {-87.594681, 32.44606}, + {10.005111694336, 45.614547729492}, + {-77.053298950195, 38.888168334961}, + {14.431228637695, 50.077743530273}, + {25.126419, 35.331345}, + {14.431228637695, 50.077743530273}, + {-81.447144, 28.478622}, + {7.408283, 43.743036}, + {-97.415084838867, 27.798843383789}, + {10.51964, 53.104477}, + {-3.4957122802734, 51.890487670898}, + {30.947853, 52.429742}, + {4.3238067626953, 49.702835083008}, + {-93.350143432617, 43.407669067383}, + {23.359435, 42.675246}, + {-2.986921, 53.077022}, + {7.818038, 61.310133}, + {-86.71989440918, 39.731369018555}, + {-80.427475, 35.672607}, + {-76.576766967773, 39.278182983398}, + {113.32878112793, 23.129653930664}, + {14.665832, 47.172346}, + {9.4365692138672, 53.594741821289}, + {13.329849243164, 47.912063598633}, + {-122.709961, 38.360596}, + {-4.997177, 43.103256}, + {-71.220932006836, 41.991806030273}, + {23.01155090332, 36.559066772461}, + {39.716262817383, 54.627456665039}, + {10.437698, 63.422562}, + {2.391168, 48.93226}, + {21.259231567383, 48.705825805664}, + {-122.85804748535, 48.564376831055}, + {4.2908477783203, 40.008773803711}, + {9.9639129638672, 53.556289672852}, + {131.41502380371, 34.341201782227}, + {-96.727066040039, 40.777816772461}, + {4.8937225341797, 47.180099487305}, + {-93.35083, 45.21286}, + {10.784824, 45.144618}, + {37.718124, 55.675964}, + {112.04063415527, 23.260116577148}, + {-1.014872, 45.973361}, + {-118.49235534668, 34.008865356445}, + {-95.624313354492, 32.506484985352}, + {-8.107223, 37.074738}, + {1.9095611572266, 41.803665161133}, + {11.503961, 45.521164}, + {7.0937347412109, 51.507339477539}, + {6.4908599853516, 51.441421508789}, + {7.8902435302734, 44.782333374023}, + {140.76026916504, 36.824111938477}, + {-1.9823455810547, 48.491592407227}, + {77.598285, 12.899154}, + {138.200492, -33.186456}, + {-1.241593, 52.88118}, + {16.995032, 49.157522}, + {3.078678, 51.19272}, + {10.589447, 35.833969}, + {116.005586, -32.093014}, + {120.865939, 24.024174}, + {139.71794128418, 35.518112182617}, + {-0.113918, 39.946521}, + {76.751174926758, 30.708847045898}, + {8.786898, 48.809927}, + {174.796656, -36.957698}, + {112.643089, -7.952756}, + {30.487747192383, 59.852828979492}, + {30.107345581055, 59.755325317383}, + {31.356353, 57.9879}, + {82.847815, 54.996014}, + {82.851333618164, 54.976272583008}, + {50.256569, 53.23153}, + {48.299789, 53.188705}, + {49.353333, 53.478699}, + {41.210403442383, 45.504684448242}, + {42.044742, 45.140587}, + {53.633881, 56.951065}, + {38.095779, 55.577774}, + {51.969304, 52.737745}, + {49.612889, 58.601879}, + {49.814071655273, 58.63883972168}, + {34.328773, 53.254234}, + {60.582046508789, 56.680526733398}, + {58.471014, 51.238174}, + {60.622559, 56.898193}, + {60.591659545898, 56.839828491211}, + {103.93547058105, 30.666275024414}, + {104.09202575684, 30.634689331055}, + {104.043274, 30.561905}, + {103.98902893066, 30.604476928711}, + {103.99314880371, 30.684127807617}, + {103.75144958496, 29.607467651367}, + {105.85395812988, 32.433700561523}, + {104.10163879395, 30.664901733398}, + {104.06867980957, 30.66764831543}, + {103.82148742676, 30.408096313477}, + {105.81550598145, 32.451553344727}, + {104.63584899902, 31.487503051758}, + {104.13597106934, 30.629196166992}, + {104.02061462402, 30.633316040039}, + {104.065109, 30.59761}, + {106.53373718262, 26.450271606445}, + {103.2447052002, 23.52653503418}, + {100.25230407715, 25.821304321289}, + {103.39714050293, 24.048385620117}, + {104.14558410645, 26.299209594727}, + {100.54893493652, 25.446395874023}, + {102.72148132324, 25.071487426758}, + {100.22758483887, 26.836166381836}, + {139.794453, 35.518112}, + {139.94453430176, 35.342330932617}, + {139.91569519043, 34.972915649414}, + {140.083237, 35.717239}, + {140.118942, 35.709763}, + {139.62181091309, 35.465927124023}, + {140.047989, 35.725937}, + {139.647903, 35.17067}, + {139.62593078613, 35.299758911133}, + {139.719315, 35.261765}, + {139.59434509277, 35.345077514648}, + {139.69047546387, 35.262680053711}, + {139.61906433105, 35.328598022461}, + {139.568081, 35.479488}, + {139.653168, 35.550842}, + {139.59434509277, 35.485153198242}, + {139.32518005371, 35.574417114258}, + {139.59434509277, 35.490646362305}, + {139.18785095215, 35.30387878418}, + {139.6314239502, 35.511245727539}, + {139.153126, 35.284064}, + {139.33753967285, 35.465927124023}, + {139.38835144043, 35.424728393555}, + {139.446716, 35.477943}, + {5.4965972900391, 46.662368774414}, + {5.490417, 45.297318}, + {5.59456, 46.703568}, + {5.7286834716797, 46.887588500977}, + {0.254943, 49.297638}, + {4.155806, 46.868824}, + {-0.56648254394531, 49.226303100586}, + {0.374222, 49.74472}, + {1.790785, 46.806575}, + {-0.67771911621094, 49.143905639648}, + {-1.6197967529297, 48.825302124023}, + {0.23963928222656, 47.966995239258}, + {3.0988311767578, 47.932662963867}, + {0.69282531738281, 49.266128540039}, + {1.070291, 49.434765}, + {0.63926696777344, 47.505569458008}, + {0.069351196289062, 47.821426391602}, + {0.212173, 47.919617}, + {0.861303, 47.302447}, + {1.8450164794922, 47.901077270508}, + {-124.57740783691, 49.848403930664}, + {-123.813927, 48.992903}, + {-119.26689147949, 50.243911743164}, + {-125.68428039551, 54.214096069336}, + {-119.58824157715, 49.535293579102}, + {-119.18586730957, 50.451278686523}, + {-113.548021, 53.303498}, + {-116.146774, 49.068604}, + {-113.501816, 53.525391}, + {-117.13279724121, 56.149063110352}, + {-114.2227935791, 53.613967895508}, + {-117.58323669434, 53.526077270508}, + {-118.06526184082, 57.321853637695}, + {-116.49421691895, 55.432205200195}, + {18.916478, 45.507189}, + {18.052597045898, 45.155868530273}, + {15.606043, 44.028056}, + {15.472183, 44.212418}, + {15.299149, 44.056778}, + {14.335098266602, 44.746627807617}, + {13.672943, 45.399399}, + {15.19684, 44.881211}, + {14.596024, 45.254288}, + {14.569842, 45.199033}, + {14.314957, 45.357056}, + {15.81413269043, 44.459609985352}, + {17.045974731445, 43.275833129883}, + {15.951461791992, 45.772476196289}, + {15.91438293457, 45.794448852539}, + {16.051712036133, 45.82878112793}, + {15.932235717773, 45.794448852539}, + {15.993141, 45.810388}, + {15.268936157227, 45.210800170898}, + {16.822128295898, 46.155624389648}, + {4.7467803955078, 45.782089233398}, + {4.7330474853516, 45.758743286133}, + {4.7907257080078, 45.692825317383}, + {4.32518, 47.627487}, + {3.294754, 46.615677}, + {4.481277, 46.978683}, + {4.96273, 43.60302}, + {5.2150726318359, 43.278579711914}, + {1.034431, 49.509201}, + {5.302277, 43.39325}, + {-0.87135314941406, 47.847518920898}, + {3.8088226318359, 43.568344116211}, + {-0.056991577148438, 44.705429077148}, + {0.944824, 46.441269}, + {-0.538406, 48.06572}, + {0.76835632324219, 46.078720092773}, + {0.048477, 44.991074}, + {1.7681121826172, 50.066757202148}, + {1.289293, 43.850327}, + {4.567642, 44.719315}, + {0.084986, 45.80321}, + {100.69450378418, 4.1837310791016}, + {101.082458, 4.599838}, + {100.929792, 4.501649}, + {103.061142, 2.009811}, + {100.71784973145, 4.7193145751953}, + {103.712979, 1.489841}, + {103.634033, 1.349945}, + {102.023163, 2.541962}, + {118.10646057129, 5.5556488037109}, + {111.845283, 2.317077}, + {100.43632507324, 6.2519073486328}, + {101.70524597168, 3.0754852294922}, + {102.402727, 2.877609}, + {102.41386413574, 2.6648712158203}, + {101.4786529541, 3.0068206787109}, + {101.73545837402, 2.7610015869141}, + {99.761005, 6.352595}, + {101.72309875488, 3.1015777587891}, + {100.316544, 5.417099}, + {-72.106705, -36.597977}, + {-73.143539428711, -36.972427368164}, + {-71.937789916992, -37.236099243164}, + {-72.876663, -39.54277}, + {-71.941353, -37.240769}, + {-72.885360717773, -40.37956237793}, + {-72.973939, -40.334244}, + {-72.778244018555, -38.408889770508}, + {-73.164138793945, -39.176559448242}, + {-70.7444, -33.445129}, + {-70.748957, -33.455667}, + {-70.740280151367, -33.422470092773}, + {-70.697517, -33.482039}, + {-70.718468, -33.513213}, + {-70.666122436523, -33.454055786133}, + {-70.65355, -33.434548}, + {-70.313186645508, -33.730087280273}, + {-70.678482055664, -33.465042114258}, + {-70.612748, -33.483725}, + {-70.58235168457, -33.454055786133}, + {-70.543899536133, -33.421096801758}, + {18.921890258789, 50.250778198242}, + {18.916397, 49.971313}, + {19.277572631836, 50.930557250977}, + {19.43000793457, 50.491104125977}, + {17.909774780273, 50.644912719727}, + {18.597793579102, 54.383010864258}, + {18.623886108398, 54.413223266602}, + {18.503036499023, 54.469528198242}, + {18.566207885742, 54.446182250977}, + {18.540115356445, 54.373397827148}, + {18.194046020508, 54.333572387695}, + {18.464584350586, 54.549179077148}, + {18.11164855957, 54.645309448242}, + {18.482437133789, 54.556045532227}, + {17.010269165039, 54.462661743164}, + {17.563705444336, 54.74967956543}, + {17.772445678711, 53.98063659668}, + {17.326126, 54.466324}, + {-3.6893463134766, 40.516891479492}, + {-3.7799835205078, 40.463333129883}, + {-3.3707427978516, 40.497665405273}, + {-3.653091, 40.529251}, + {-3.6316680908203, 40.525131225586}, + {-3.5204315185547, 40.409774780273}, + {-3.46446, 40.445663}, + {-3.628182, 40.449811}, + {-3.4476470947266, 40.30403137207}, + {-3.6220550537109, 40.416641235352}, + {-3.691788, 40.361252}, + {-3.688348, 40.38131}, + {-3.753891, 40.340286}, + {-3.710861, 40.297623}, + {-3.7456512451172, 40.26969909668}, + {-4.236867, 40.508863}, + {-3.876113, 40.296135}, + {-3.826675, 40.173111}, + {-3.4696197509766, 40.361709594727}, + {1.806172, 41.672418}, + {2.292392, 41.606017}, + {-57.569819, -25.316314}, + {-57.544326782227, -25.241775512695}, + {-57.587585, -25.272675}, + {-57.545700073242, -25.298080444336}, + {-54.63981628418, -25.476608276367}, + {-54.640238, -25.472971}, + {-57.566757, -25.259628}, + {-57.267829, -25.452317}, + {-57.592391967773, -25.293960571289}, + {-54.609603881836, -25.512313842773}, + {-57.531967163086, -25.329666137695}, + {-57.035523, -25.545273}, + {-55.216992, -25.44218}, + {-57.150192260742, -25.388717651367}, + {-55.139694213867, 5.8632659912109}, + {-55.196063, 5.832686}, + {-56.203823, -34.905624}, + {-55.912857, -34.808578}, + {-56.09001159668, -34.740829467773}, + {-93.993074, 45.097014}, + {-93.162002563477, 45.063858032227}, + {-93.342361, 45.035934}, + {-93.207321166992, 44.94026184082}, + {-93.216934204102, 44.988327026367}, + {-93.295211791992, 45.021286010742}, + {-93.826675415039, 44.90592956543}, + {-93.043899536133, 44.87434387207}, + {-93.291091918945, 44.890823364258}, + {-93.30207824707, 44.863357543945}, + {-93.156509399414, 44.451370239258}, + {-92.833786010742, 44.735641479492}, + {-93.349457, 44.478149}, + {-93.04801940918, 44.889450073242}, + {-93.048706, 44.898377}, + {-92.991714477539, 45.035018920898}, + {-88.223648071289, 30.59211730957}, + {-88.092993, 30.619774}, + {-88.203049, 30.645333}, + {-88.100051879883, 30.744552612305}, + {-86.244735717773, 32.326583862305}, + {-79.010898, 33.784539}, + {-70.532913208008, -33.471908569336}, + {-70.690841674805, -33.491134643555}, + {-70.569649, -33.451309}, + {-70.633163452148, -33.469161987305}, + {-70.690841674805, -33.375778198242}, + {-70.703201293945, -33.363418579102}, + {-70.523300170898, -33.333206176758}, + {-70.520554, -33.402557}, + {-70.519180297852, -33.36067199707}, + {-70.58235168457, -33.429336547852}, + {-70.591965, -33.439865}, + {-70.59196472168, -33.393630981445}, + {-70.724885, -33.3606}, + {-70.71418762207, -33.374404907227}, + {-70.718307495117, -33.425216674805}, + {-70.623093, -33.498917}, + {-70.61393737793, -33.485641479492}, + {-70.546646118164, -33.434829711914}, + {-70.540438, -33.422557}, + {-70.576858520508, -32.873153686523}, + {-71.363754272461, -30.105972290039}, + {-69.76936340332, -26.230545043945}, + {-71.249771118164, -32.881393432617}, + {20.450826, 44.805738}, + {20.501174926758, 44.815292358398}, + {20.182571411133, 44.677963256836}, + {20.41387, 44.747709}, + {19.695053100586, 44.750747680664}, + {20.683822631836, 44.452743530273}, + {19.71318, 43.734787}, + {19.526138305664, 45.019912719727}, + {19.84748840332, 43.858108520508}, + {19.568710327148, 46.03889465332}, + {21.924309, 43.327173}, + {19.833755493164, 45.254745483398}, + {13.130722045898, 46.389083862305}, + {8.3873748779297, 44.331893920898}, + {12.566986, 41.85585}, + {13.34358215332, 38.134231567383}, + {12.023849487305, 45.852127075195}, + {-3.909648, 56.083145}, + {-0.17234802246094, 51.232681274414}, + {-0.170556, 51.504258}, + {-1.06116, 52.748678}, + {-2.987734, 51.219756}, + {-2.152697, 53.869592}, + {-1.58796, 54.493604}, + {-1.68656, 54.64045}, + {12.541529, 55.656999}, + {12.175485, 55.647739}, + {12.086844, 55.637195}, + {12.516115, 55.708456}, + {12.358101, 55.764909}, + {11.980591, 56.003494}, + {12.497635, 55.955429}, + {12.449569702148, 56.083145141602}, + {12.432113, 55.690234}, + {11.748215, 55.285076}, + {0.93727111816406, 41.00715637207}, + {0.93727111816406, 41.261215209961}, + {1.6170501708984, 41.272201538086}, + {1.2393951416016, 41.301040649414}, + {1.057621, 41.135996}, + {1.1336517333984, 41.178817749023}, + {1.268921, 41.162338}, + {1.4151763916016, 41.163711547852}, + {-4.2098236083984, 40.130996704102}, + {-1.151779, 40.365829}, + {-3.8321685791016, 39.934616088867}, + {-3.4984588623047, 39.38117980957}, + {-3.912048, 40.110397}, + {-4.9843597412109, 39.931869506836}, + {-3.939968, 40.190736}, + {-4.0876007080078, 40.21614074707}, + {-0.62278747558594, 39.474563598633}, + {-0.44288635253906, 39.510269165039}, + {-0.40580749511719, 39.445724487305}, + {-0.42778015136719, 39.510269165039}, + {-0.488205, 38.857498}, + {-0.245132, 39.164886}, + {2.979466, 45.12461}, + {3.226021, 46.831235}, + {5.364445, 47.542324}, + {3.604699, 50.491648}, + {-1.439317, 46.805625}, + {6.637549, 44.870992}, + {35.33775, 46.336441}, + {35.216899, 47.423632}, + {35.455285, 46.811373}, + {35.797443, 46.739}, + {37.458572387695, 47.913436889648}, + {30.450668334961, 50.364761352539}, + {37.596115, 47.134552}, + {30.409469604492, 50.485610961914}, + {32.558670043945, 50.885238647461}, + {31.263656616211, 51.496353149414}, + {31.093368530273, 51.449661254883}, + {30.418879, 50.460714}, + {30.549545288086, 50.447158813477}, + {30.178146, 49.890366}, + {30.75911, 50.663315}, + {30.195388, 50.384751}, + {26.550516, 49.502345}, + {151.175145, -33.881054}, + {149.04808044434, -35.262680053711}, + {149.100087, -35.401263}, + {149.09202575684, -35.364303588867}, + {149.213287, -35.206238}, + {152.017609, -29.056318}, + {151.561793, -33.06399}, + {151.735226, -32.901124}, + {152.07618713379, -32.720718383789}, + {150.32249450684, -34.48127746582}, + {148.281289, -34.8684}, + {147.380531, -35.12041}, + {151.107471, -34.027787}, + {150.282544, -33.658302}, + {151.43074035645, -33.425216674805}, + {151.064888, -34.016831}, + {151.30165100098, -33.491134643555}, + {151.188367, -33.50099}, + {31.011658, -17.795792}, + {29.846420288086, -19.493179321289}, + {29.776382446289, -19.331130981445}, + {30.906600952148, -18.97819519043}, + {32.643814086914, -18.997421264648}, + {30.97091, -17.882416}, + {32.726211547852, -17.970199584961}, + {31.051853, -17.825898}, + {28.623505, -20.180511}, + {28.596726, -20.147324}, + {17.007982, -20.049821}, + {17.463455200195, -19.644241333008}, + {16.234359741211, -26.656265258789}, + {18.408994, -22.455389}, + {35.026473999023, -15.691909790039}, + {34.783723, -15.576238}, + {25.054322, -17.831499}, + {25.461502075195, -24.409561157227}, + {25.902328491211, -24.675979614258}, + {-2.3160552978516, 43.083572387695}, + {-2.018166, 43.30061}, + {-2.947769, 43.407277}, + {-2.833792, 42.781106}, + {-0.37147521972656, 39.488296508789}, + {-0.406494, 39.467697}, + {-0.358546, 39.463246}, + {-0.404636, 39.407805}, + {-0.220675, 39.651064}, + {-0.566483, 38.964729}, + {-0.41542053222656, 39.477310180664}, + {-0.431116, 39.337627}, + {-0.40992736816406, 39.377059936523}, + {-0.45799255371094, 39.503402709961}, + {-0.429153, 39.472013}, + {-0.427231, 39.25264}, + {0.055344, 38.659927}, + {-0.44151306152344, 39.506149291992}, + {0.065231, 38.642349}, + {-0.072737, 38.576287}, + {-0.81642150878906, 38.022994995117}, + {19.980697631836, 50.024185180664}, + {19.986190795898, 50.066757202148}, + {20.135879516602, 50.017318725586}, + {19.0448, 49.829521}, + {19.641589, 49.978969}, + {18.902038, 49.902337}, + {18.992844, 49.891891}, + {18.94133, 50.369358}, + {18.658218383789, 50.290603637695}, + {19.123091, 50.237325}, + {19.436188, 50.30983}, + {19.100246, 50.220566}, + {19.148483276367, 50.28923034668}, + {18.796920776367, 50.276870727539}, + {19.106986, 50.322222}, + {19.072952270508, 50.30158996582}, + {19.06608581543, 50.272750854492}, + {51.239547729492, 35.593643188477}, + {52.906723, 36.641922}, + {51.462097, 35.780945}, + {51.420822143555, 35.773544311523}, + {50.878372192383, 34.633712768555}, + {51.653993, 35.337705}, + {50.853652954102, 34.652938842773}, + {57.023457, 30.28038}, + {56.999741, 30.263901}, + {55.587158, 30.996552}, + {54.076624, 31.941345}, + {46.324539, 38.060303}, + {58.19394, 34.033585}, + {44.966354, 38.559265}, + {48.822555541992, 32.252426147461}, + {60.849564, 29.462036}, + {48.797149, 32.180329}, + {48.671494, 33.454514}, + {50.83992, 28.949661}, + {52.313778, 27.823774}, + {46.428909301758, 34.142074584961}, + {50.023727, 34.174957}, + {51.485367, 35.720291}, + {50.731332, 36.88179}, + {-0.307933, 51.549594}, + {-0.23277282714844, 51.494979858398}, + {-0.25062561035156, 51.537551879883}, + {-0.152664, 51.510086}, + {-3.607879, 50.61928}, + {-2.7101898193359, 51.029434204102}, + {-3.4297943115234, 51.397476196289}, + {-3.7817, 51.015358}, + {-4.618759, 55.524063}, + {-3.119966, 50.981134}, + {-4.715538, 55.696907}, + {-0.455676, 53.720464}, + {-0.333024, 53.65448}, + {-0.40031433105469, 53.803482055664}, + {-1.7131805419922, 54.910354614258}, + {-1.6829681396484, 54.641189575195}, + {-1.6829681396484, 53.850173950195}, + {-1.6747283935547, 53.87077331543}, + {-1.82991, 53.849258}, + {-1.882782, 53.830433}, + {-2.166824, 53.862534}, + {-117.533249, 33.837753}, + {-116.54444, 33.834752}, + {-118.04466247559, 34.571914672852}, + {-118.176155, 34.742889}, + {-117.70133972168, 33.870162963867}, + {-117.8084564209, 34.032211303711}, + {-118.080957, 33.775406}, + {-118.15535, 34.033859}, + {-119.021754, 35.35884}, + {-117.24733, 33.012131}, + {-115.2774810791, 36.277542114258}, + {-118.29254, 34.251938}, + {-121.834749, 37.701056}, + {-121.736343, 37.757401}, + {-122.11372375488, 37.980422973633}, + {-122.056502, 37.585428}, + {-41.756779, -21.642322}, + {-43.954926, -19.9086}, + {-38.463821411133, -12.978286743164}, + {-38.34846496582, -12.924728393555}, + {-38.32649230957, -12.901382446289}, + {-38.476181030273, -12.868423461914}, + {-38.432044, -12.929359}, + {-38.486953, -12.94022}, + {-44.033889770508, -19.929885864258}, + {-38.469319, -12.925377}, + {-44.208297729492, -19.995803833008}, + {-43.174209594727, -22.942886352539}, + {-44.168818, -19.936051}, + {-44.108047485352, -19.928512573242}, + {-43.25798034668, -22.57209777832}, + {-44.53561, -22.485334}, + {-44.237595, -22.845383}, + {-43.925743, -19.89315}, + {-43.945999145508, -19.92301940918}, + {-38.308619, -12.883719}, + {-78.463668823242, -0.26298522949219}, + {-78.476028442383, -0.33027648925781}, + {-78.488388061523, -0.26710510253906}, + {-79.890976, -2.22908}, + {-79.909744262695, -2.1210479736328}, + {-79.900131225586, -2.0812225341797}, + {-79.94545, -2.146454}, + {-78.881149291992, -2.7390289306641}, + {-80.441207885742, -1.0471343994141}, + {-79.014358520508, -2.8942108154297}, + {-78.471908569336, -0.15449523925781}, + {-78.488388061523, -0.20530700683594}, + {-79.40044, 0.022619}, + {-79.899935, -2.224437}, + {-79.904251098633, -2.2116851806641}, + {-79.883651733398, -2.1210479736328}, + {-79.935836791992, -2.1292877197266}, + {-79.905322, -2.11656}, + {0.04957, 51.792791}, + {-0.125866, 51.516279}, + {0.059738159179688, 51.514205932617}, + {0.30967712402344, 51.987991333008}, + {0.002668, 51.501459}, + {-0.026779, 51.491547}, + {-0.10368347167969, 51.492233276367}, + {-0.12565612792969, 51.500473022461}, + {-0.066604614257812, 51.46614074707}, + {-1.034775, 53.931885}, + {-0.341263, 51.49704}, + {-0.303934, 51.482371}, + {-1.1309051513672, 53.491744995117}, + {-1.6088104248047, 53.732070922852}, + {0.39344787597656, 51.560897827148}, + {0.21766662597656, 51.636428833008}, + {0.13664245605469, 51.689987182617}, + {-1.7255401611328, 52.507095336914}, + {-1.899804, 52.531887}, + {-2.586937, 51.453094}, + {14.153824, 40.828171}, + {14.282118, 40.876043}, + {14.351311, 40.803241}, + {14.449081420898, 40.759963989258}, + {14.351577758789, 40.821762084961}, + {14.446334838867, 40.869827270508}, + {15.217953, 41.086807}, + {14.326172, 40.957718}, + {14.973221, 40.881729}, + {18.049262, 40.011128}, + {17.999954, 40.052719}, + {14.127985, 41.006321}, + {14.361191, 41.043549}, + {14.234848022461, 40.992050170898}, + {18.159713745117, 40.302658081055}, + {13.328819, 38.172169}, + {12.995605, 38.050048}, + {13.535842895508, 37.917251586914}, + {15.094093, 37.502111}, + {14.490280151367, 37.253952026367}, + {13.633827, 37.271985}, + {14.260863, 37.07924}, + {130.9838104248, 33.742446899414}, + {130.85334777832, 33.899002075195}, + {130.46882629395, 33.281021118164}, + {130.53199768066, 33.322219848633}, + {130.276566, 33.319817}, + {129.97032165527, 33.293380737305}, + {130.29853820801, 33.261795043945}, + {129.86045837402, 32.779769897461}, + {129.865952, 32.761459}, + {129.85633850098, 32.794876098633}, + {130.70365905762, 32.797622680664}, + {130.72975158691, 32.859420776367}, + {130.90690612793, 32.838821411133}, + {130.49491882324, 32.285385131836}, + {131.07444763184, 32.928085327148}, + {131.2296295166, 33.574905395508}, + {131.68556213379, 33.239822387695}, + {131.44248962402, 31.907730102539}, + {131.52488708496, 33.379898071289}, + {131.44248962402, 31.987380981445}, + {130.65422058105, 31.254043579102}, + {130.64872741699, 31.240310668945}, + {130.57182312012, 31.759414672852}, + {-1.3547515869141, 53.693618774414}, + {-1.623775, 54.945965}, + {-1.618698, 54.973801}, + {-2.125043, 52.578007}, + {-1.887589, 52.511559}, + {-5.8660125732422, 54.690628051758}, + {-5.936874, 54.601364}, + {-5.5254364013672, 54.487380981445}, + {-2.068175, 51.806031}, + {-1.590369, 51.718434}, + {-1.566673, 51.543838}, + {-3.162117, 51.497726}, + {-4.945297, 51.715164}, + {-4.744587, 51.706334}, + {-1.297073, 51.0569}, + {-1.438522, 51.198807}, + {-1.7653656005859, 51.089859008789}, + {-4.067102, 55.912606}, + {-0.135269, 51.525159}, + {-0.146942, 51.54538}, + {5.869509, 43.450865}, + {3.6138153076172, 43.448867797852}, + {1.3011932373047, 43.760604858398}, + {-0.067977905273438, 43.08219909668}, + {73.293228149414, 16.996536254883}, + {73.817139, 18.50647}, + {73.909012, 18.530502}, + {73.54866027832, 17.223129272461}, + {73.306446, 18.816147}, + {73.771305, 18.55093}, + {75.16983, 20.02739}, + {75.13069152832, 20.203170776367}, + {76.807479858398, 20.72639465332}, + {72.997968, 18.915711}, + {74.111709594727, 20.285568237305}, + {73.915328979492, 15.281295776367}, + {75.901107788086, 19.840621948242}, + {74.157028198242, 18.81477355957}, + {73.780472, 18.649979}, + {78.683395385742, 20.661849975586}, + {76.528701782227, 19.36408996582}, + {73.786926, 18.60466}, + {86.093673706055, 55.32096862793}, + {86.102637, 55.362485}, + {87.723484, 53.731899}, + {85.136489868164, 52.509841918945}, + {54.84992980957, 55.494003295898}, + {45.912551879883, 51.46614074707}, + {44.766246, 48.773706}, + {48.318557739258, 54.293746948242}, + {46.121292114258, 51.486740112305}, + {47.759628295898, 51.942672729492}, + {49.253768920898, 55.879898071289}, + {49.623184204102, 55.697250366211}, + {43.463973999023, 54.657669067383}, + {55.940781, 54.727249}, + {55.823593139648, 54.734573364258}, + {47.207565307617, 56.12434387207}, + {47.453384399414, 55.875778198242}, + {49.020309, 54.982681}, + {52.31071472168, 55.69450378418}, + {43.786339, 55.382117}, + {-82.308067, 41.348357}, + {-81.679593, 40.616791}, + {-82.959085, 40.825811}, + {-81.850175, 41.381013}, + {-84.550817, 40.881961}, + {-81.846268, 41.070396}, + {-84.499282836914, 39.120254516602}, + {-84.400405883789, 38.956832885742}, + {-83.034203, 40.015965}, + {-82.189939, 39.756979}, + {-82.13688, 38.878184}, + {-84.161032, 40.384415}, + {-82.993009, 39.885831}, + {-84.399032592773, 39.173812866211}, + {-84.854965209961, 39.109268188477}, + {-82.898305, 40.053928}, + {-82.794082, 40.081272}, + {-79.966392, 39.652431}, + {-80.075912, 41.397171}, + {-79.872034, 40.778732}, + {-78.960800170898, 40.571823120117}, + {-79.92073059082, 40.453720092773}, + {30.683121, 36.908264}, + {30.639496, 36.861877}, + {30.594863891602, 36.828231811523}, + {30.506973266602, 39.779434204102}, + {28.780746459961, 41.001663208008}, + {28.907089233398, 41.059341430664}, + {31.450424194336, 36.787033081055}, + {31.54655456543, 36.727981567383}, + {32.852554321289, 39.926376342773}, + {32.830877, 39.909168}, + {31.070022583008, 36.847457885742}, + {34.961929321289, 40.566329956055}, + {28.657150268555, 41.008529663086}, + {28.672256469727, 40.982437133789}, + {28.630796, 41.005726}, + {28.677749633789, 41.014022827148}, + {28.647537231445, 41.045608520508}, + {28.089981079102, 41.06071472168}, + {28.645072, 41.011698}, + {28.983993530273, 41.05110168457}, + {28.999998, 41.04867}, + {33.183861, 39.946632}, + {32.890549, 40.01976}, + {28.977127075195, 41.03874206543}, + {139.69596862793, 35.600509643555}, + {139.71817, 35.577393}, + {139.728928, 35.567656}, + {139.704208, 35.572958}, + {139.623434, 35.533218}, + {139.6932220459, 35.534591674805}, + {139.61357116699, 35.666427612305}, + {139.579454, 35.670938}, + {139.61219787598, 35.626602172852}, + {139.62867736816, 35.577163696289}, + {139.57099914551, 35.520858764648}, + {139.893036, 35.698013}, + {139.836273, 35.698242}, + {139.79547, 35.656066}, + {139.786949, 35.687027}, + {139.89234924316, 35.776290893555}, + {139.80033874512, 35.735092163086}, + {139.769734, 35.758046}, + {139.6932220459, 35.242080688477}, + {139.666443, 35.255814}, + {139.640865, 35.47966}, + {139.595718, 35.427867}, + {139.789352, 35.515889}, + {139.408951, 35.669449}, + {139.450399, 35.666802}, + {-90.501937866211, 14.648208618164}, + {-89.526901245117, 14.939346313477}, + {-90.550003051758, 14.624862670898}, + {-90.553894, 14.59877}, + {-90.579529, 14.552593}, + {-90.554122924805, 14.62760925293}, + {-90.576095581055, 14.564437866211}, + {-90.418167114258, 13.868179321289}, + {-90.596694946289, 14.604263305664}, + {-91.600570678711, 14.85969543457}, + {-90.541763305664, 14.64958190918}, + {-88.593367, 15.715787}, + {-90.786209106445, 14.31999206543}, + {-90.294570922852, 14.263687133789}, + {-90.6427, 14.457321}, + {-90.571559, 14.521447}, + {-90.513011, 14.587054}, + {-90.514297485352, 14.601516723633}, + {-91.132086, 14.840653}, + {-90.476216, 14.420491}, + {-90.278885, 14.388811}, + {-90.540409, 14.520467}, + {-70.61393737793, -33.425216674805}, + {-70.609817504883, -33.429336547852}, + {-70.726547241211, -33.871536254883}, + {-70.653762817383, -33.484268188477}, + {-70.697013, -33.304367}, + {-70.712814331055, -33.837203979492}, + {-71.675491333008, -33.449935913086}, + {-70.901736, -33.60744}, + {-70.764999389648, -33.389511108398}, + {-70.621692, -33.446058}, + {-70.62561, -33.437576}, + {-71.208572387695, -33.003616333008}, + {-71.569336, -33.0569}, + {-71.59309387207, -33.035202026367}, + {-71.442031860352, -32.825088500977}, + {-70.673381, -32.902091}, + {-72.548904418945, -38.752212524414}, + {-72.927932739258, -41.469955444336}, + {-71.692657, -35.968552}, + {-71.363068, -34.640579}, + {103.584457, 1.467088}, + {103.489365, 1.673482}, + {100.32096862793, 5.4169464111328}, + {100.336663, 5.33396}, + {100.336075, 5.410767}, + {100.311297, 5.371416}, + {101.02409362793, 4.5064544677734}, + {100.54481506348, 4.2331695556641}, + {102.52392, 5.836661}, + {100.394912, 6.176738}, + {100.42873, 6.278754}, + {101.3028717041, 4.0944671630859}, + {103.128042, 5.264362}, + {103.419488, 4.719893}, + {103.23509216309, 3.7662506103516}, + {117.85514831543, 4.2908477783203}, + {-8.812515, 52.755042}, + {101.59126281738, 3.2196807861328}, + {101.62559509277, 3.1331634521484}, + {101.58988952637, 3.1551361083984}, + {101.64619445801, 3.1757354736328}, + {101.6283416748, 3.0974578857422}, + {101.69288635254, 3.0535125732422}, + {101.71211242676, 3.0892181396484}, + {-122.074841, 37.690496}, + {-122.32521057129, 37.961196899414}, + {-120.709674, 39.281788}, + {-121.58613, 39.147471}, + {-121.323006, 38.731201}, + {-121.365032, 38.682922}, + {-121.753871, 38.560644}, + {-121.44493103027, 38.642349243164}, + {-77.160324, 39.069809}, + {-77.586921, 38.700027}, + {-77.239437, 38.925762}, + {-77.058861, 39.330368}, + {-76.861726, 39.161454}, + {-76.609725952148, 39.267196655273}, + {-76.77864074707, 38.794784545898}, + {-77.302544, 38.844264}, + {-77.165908813477, 38.767318725586}, + {113.53065490723, -7.1857452392578}, + {108.058929, -6.963119}, + {108.35060119629, -6.4798736572266}, + {107.527313, -6.892548}, + {112.694321, -7.847672}, + {112.748795, -7.313461}, + {113.86573791504, -6.9907379150391}, + {112.717209, -7.343216}, + {112.73277282715, -7.4672698974609}, + {112.49244689941, -7.1363067626953}, + {108.687057, -6.878128}, + {108.90403747559, -7.4137115478516}, + {107.93312072754, -6.8479156494141}, + {115.51258, -8.498624}, + {115.347416, -8.327622}, + {116.63841247559, -8.5274505615234}, + {116.094589, -8.591309}, + {115.1717376709, -8.5439300537109}, + {115.03852844238, -8.5123443603516}, + {115.172653, -8.722916}, + {106.657791, -6.274338}, + {106.83174133301, -6.3631439208984}, + {98.780136, 1.738358}, + {98.620834350586, 3.5932159423828}, + {100.40592, -0.413804}, + {-2.175517, 39.235551}, + {-2.2611236572266, 38.407516479492}, + {-0.417892, 38.400375}, + {-0.732309, 37.933281}, + {-4.567566, 40.322571}, + {1.426709, 38.943501}, + {2.028135, 41.296058}, + {1.901772, 41.944658}, + {2.211889, 41.41304}, + {1.946559, 41.266708}, + {-2.9354095458984, 42.682571411133}, + {-5.355151, 40.13924}, + {-3.5204315185547, 40.41389465332}, + {-3.6179351806641, 40.023880004883}, + {72.748489, 19.4561}, + {72.827682495117, 19.379196166992}, + {73.753195, 18.592386}, + {73.806838989258, 18.633499145508}, + {73.688735961914, 20.008163452148}, + {73.90022277832, 18.527755737305}, + {73.830184936523, 18.540115356445}, + {73.853531, 15.3899}, + {73.517074584961, 17.530746459961}, + {88.363723754883, 22.98957824707}, + {88.374710083008, 22.971725463867}, + {88.317031860352, 22.596817016602}, + {88.340377807617, 22.646255493164}, + {72.844162, 18.98735}, + {72.848281860352, 19.053726196289}, + {72.824935913086, 18.972702026367}, + {72.83317565918, 18.94660949707}, + {72.82356262207, 18.972702026367}, + {72.860641479492, 19.16633605957}, + {72.844849, 19.088058}, + {72.844341, 19.087461}, + {72.831802368164, 19.079818725586}, + {72.835922241211, 19.060592651367}, + {112.764499, -7.258067}, + {116.858002, -1.273288}, + {124.839706, 1.463928}, + {106.869404, -6.157882}, + {106.72462463379, -6.2285614013672}, + {106.8578338623, -6.2216949462891}, + {106.52605, -6.205974}, + {115.184763, -8.716502}, + {107.6570892334, -6.8959808349609}, + {108.5277557373, -6.7490386962891}, + {107.58430480957, -6.9536590576172}, + {107.040756, -6.271133}, + {106.76239, -6.15921}, + {99.363784790039, 3.2938385009766}, + {104.75807189941, -2.9834747314453}, + {121.02518, 14.552487}, + {121.02831, 14.560749}, + {121.009794, 14.538345}, + {121.055041, 14.610793}, + {121.0343170166, 14.653701782227}, + {-74.084243774414, 45.970230102539}, + {-74.95285, 45.701752}, + {-74.574508666992, 45.512924194336}, + {-65.685371, 45.938009}, + {-65.074082, 46.024818}, + {-64.997177124023, 47.804946899414}, + {-63.105522, 46.268023}, + {-65.892562866211, 44.524154663086}, + {-64.115997, 44.992971}, + {-57.497188, 50.416032}, + {-52.695266, 47.600811}, + {-79.330215454102, 43.737258911133}, + {-62.661209106445, 45.620040893555}, + {-79.455184936523, 43.630142211914}, + {-113.41117858887, 53.517837524414}, + {-79.386677, 43.700255}, + {-79.338455200195, 43.767471313477}, + {-114.00856018066, 51.330184936523}, + {121.335068, 25.061417}, + {120.406036, 23.525162}, + {90.882339477539, 23.510055541992}, + {90.390701293945, 23.927536010742}, + {90.412673950195, 23.72428894043}, + {90.416793823242, 23.83415222168}, + {91.143264770508, 23.639144897461}, + {90.412673950195, 23.743515014648}, + {90.416793823242, 23.823165893555}, + {90.25749206543, 23.749008178711}, + {90.377426, 23.790054}, + {90.350875854492, 23.781967163086}, + {90.376968383789, 23.739395141602}, + {90.38932800293, 23.759994506836}, + {90.436019897461, 23.722915649414}, + {90.383834838867, 23.721542358398}, + {90.381088256836, 23.75862121582}, + {90.88508605957, 23.998947143555}, + {90.401138, 23.742691}, + {36.693954, -1.246872}, + {36.957321166992, -1.4797210693359}, + {36.814498901367, -1.2792205810547}, + {36.891403198242, -1.2201690673828}, + {36.823849, -1.318111}, + {36.752243, -1.396179}, + {36.769695, -1.291237}, + {34.801254272461, 1.0512542724609}, + {35.104751586914, -0.68458557128906}, + {36.802139, -1.261139}, + {35.241737, 0.55172}, + {35.343704223633, 0.52665710449219}, + {35.290145874023, 0.28358459472656}, + {35.871735, 0.178528}, + {35.284653, -0.371017}, + {34.096756, 0.468292}, + {35.00679, 1.01738}, + {34.420166, -0.019226}, + {36.903762817383, -1.2929534912109}, + {35.036087036133, 0.96611022949219}, + {34.653397, -0.085831}, + {35.248261, 0.546799}, + {37.56706237793, 0.33027648925781}, + {36.748123, -1.384048}, + {36.880142, -1.211655}, + {37.478256, -0.477676}, + {39.802780151367, 54.610977172852}, + {33.212357, 57.980347}, + {30.28450012207, 58.670425415039}, + {34.323348999023, 55.253677368164}, + {34.908371, 55.467453}, + {55.132828, 51.792297}, + {54.289627075195, 51.857528686523}, + {41.29280090332, 56.282272338867}, + {41.232376098633, 56.374282836914}, + {42.024765, 55.581207}, + {42.462502, 56.174469}, + {20.466842651367, 54.744186401367}, + {20.575332641602, 54.708480834961}, + {39.90509, 59.207039}, + {33.098373413086, 68.955001831055}, + {33.08464050293, 68.911056518555}, + {49.645156860352, 58.593521118164}, + {49.636917, 58.61981}, + {34.309616088867, 61.785049438477}, + {34.348068237305, 61.783676147461}, + {76.152420043945, 23.251876831055}, + {77.446060180664, 23.229904174805}, + {75.79948425293, 22.279586791992}, + {76.197738647461, 23.255996704102}, + {75.467147827148, 23.120040893555}, + {75.862655639648, 22.719039916992}, + {75.856476, 23.208618}, + {75.850983, 22.743759}, + {75.901107788086, 22.771224975586}, + {77.76844, 22.60952}, + {77.009353637695, 22.456741333008}, + {79.16130065918, 23.915176391602}, + {76.995621, 23.14888}, + {77.432327270508, 23.17497253418}, + {78.131332397461, 24.13215637207}, + {78.103866577148, 21.918411254883}, + {81.500015258789, 21.10954284668}, + {82.20588684082, 21.266098022461}, + {81.803512573242, 21.29768371582}, + {82.056198120117, 19.071578979492}, + {81.561813, 23.223038}, + {80.577163696289, 24.566116333008}, + {79.624099731445, 23.124160766602}, + {-1.8202972412109, 42.916030883789}, + {-0.95192, 41.64299}, + {-0.89332580566406, 41.656723022461}, + {-1.1267852783203, 41.769332885742}, + {-6.226501, 36.522335}, + {-6.2436676025391, 36.462936401367}, + {-6.9632720947266, 37.177047729492}, + {-6.8053436279297, 37.321243286133}, + {-4.590225, 36.650162}, + {-3.976021, 36.733475}, + {-4.502609, 36.732101}, + {-4.4844818115234, 36.848831176758}, + {-4.6300506591797, 36.641464233398}, + {-4.467316, 36.684723}, + {-5.8866119384766, 37.374801635742}, + {-6.1338043212891, 36.416244506836}, + {-6.0019683837891, 36.18278503418}, + {-6.3576507568359, 36.616744995117}, + {-5.2809906005859, 36.298141479492}, + {-5.6064605712891, 36.011123657227}, + {-4.976374, 36.484842}, + {-4.9060821533203, 36.515121459961}, + {-71.687850952148, -35.445327758789}, + {-71.656265258789, -35.423355102539}, + {-71.604080200195, -33.057174682617}, + {-72.419815063477, -35.340957641602}, + {-72.231674194336, -36.655197143555}, + {-73.08723449707, -36.800765991211}, + {-73.077621459961, -40.540237426758}, + {-73.12863, -40.584771}, + {-72.962265014648, -41.405410766602}, + {-70.908508, -53.157349}, + {-70.641403198242, -33.447189331055}, + {-70.654008, -33.43895}, + {-70.784027, -33.518659}, + {-70.769721, -33.533192}, + {-70.653762817383, -33.481521606445}, + {-70.632759, -33.460551}, + {-70.613074, -33.43751}, + {-70.679855, -33.42453}, + {-70.705947875977, -33.456802368164}, + {-70.705947875977, -33.540573120117}, + {-70.712358, -33.598481}, + {2.4259185791016, 48.887100219727}, + {2.5975799560547, 48.841781616211}, + {2.997796, 43.29761}, + {2.5289154052734, 48.884353637695}, + {6.4057159423828, 48.04801940918}, + {2.977393, 43.564028}, + {4.8250579833984, 44.515914916992}, + {6.114578, 49.335709}, + {5.9195709228516, 49.14665222168}, + {7.3834991455078, 49.104080200195}, + {6.5636444091797, 49.057388305664}, + {7.009201, 48.807144}, + {6.065528, 48.841782}, + {6.6996002197266, 49.13703918457}, + {5.889664, 48.672562}, + {5.61264, 49.126053}, + {6.204758, 48.236618}, + {6.959857, 48.291013}, + {-1.4563751220703, 47.358627319336}, + {2.414931, 48.300019}, + {46.671981811523, 24.652633666992}, + {46.46598815918, 24.849014282227}, + {39.150466918945, 21.551742553711}, + {39.175186157227, 21.542129516602}, + {39.199905395508, 21.569595336914}, + {39.221878051758, 21.477584838867}, + {39.180679321289, 21.478958129883}, + {39.22737121582, 21.470718383789}, + {39.191665649414, 21.459732055664}, + {39.219131469727, 21.496810913086}, + {39.230804, 21.548309}, + {39.18342590332, 21.535263061523}, + {39.231491088867, 21.554489135742}, + {39.206772, 21.537323}, + {39.234237670898, 21.565475463867}, + {39.383926391602, 21.419906616211}, + {39.350967407227, 21.529769897461}, + {39.493789672852, 21.411666870117}, + {39.109268188477, 21.739883422852}, + {42.992935180664, 16.606521606445}, + {41.44660949707, 20.113906860352}, + {41.438882, 20.062167}, + {41.317520141602, 18.974075317383}, + {42.52326965332, 18.124008178711}, + {33.095626831055, 68.96598815918}, + {30.487747192383, 67.563858032227}, + {32.355422973633, 67.166976928711}, + {43.954133, 56.322626}, + {43.996419, 56.323864}, + {44.056442, 56.298316}, + {43.974838256836, 56.242446899414}, + {43.440628051758, 56.574783325195}, + {44.407424926758, 55.043563842773}, + {30.920792, 58.326645}, + {44.103927612305, 55.195999145508}, + {82.898712, 54.946747}, + {31.256790161133, 58.556442260742}, + {82.941970825195, 55.017471313477}, + {83.022308, 55.029831}, + {82.96257019043, 54.974899291992}, + {83.121871948242, 55.160293579102}, + {73.342666625977, 54.988632202148}, + {73.332138, 54.955673}, + {55.103531, 51.763229}, + {34.782028198242, 31.510848999023}, + {35.005874633789, 31.780014038086}, + {35.26268, 32.864914}, + {34.847946166992, 32.176895141602}, + {34.762802124023, 32.023086547852}, + {34.806747436523, 31.973648071289}, + {34.804001, 31.920433}, + {34.782745, 31.955795}, + {35.354690551758, 31.836318969727}, + {34.869918823242, 32.084884643555}, + {34.883407, 31.990866}, + {34.918996, 31.903369}, + {35.570297241211, 33.210983276367}, + {34.71605, 31.792214}, + {34.865798950195, 31.384506225586}, + {35.232467651367, 32.588882446289}, + {34.960556030273, 32.584762573242}, + {-122.303249, 47.356606}, + {-122.300812, 47.058782}, + {-122.086758, 47.719778}, + {-122.366001, 47.780036}, + {-122.535892, 47.259401}, + {-122.246279, 47.469592}, + {-122.299456, 47.564328}, + {-121.98738098145, 47.246017456055}, + {-122.07389831543, 48.008193969727}, + {-122.39799499512, 47.678604125977}, + {-121.851974, 47.512436}, + {-122.312171, 47.610605}, + {-134.47166, 58.328066}, + {-149.691844, 61.219036}, + {-134.747997, 57.55188}, + {-104.78965759277, 38.734359741211}, + {-105.03684997559, 39.839859008789}, + {-104.24514, 40.17306}, + {-105.115134, 40.571323}, + {-105.105252, 39.76566}, + {-105.05744934082, 39.783554077148}, + {16.271284, 48.164293}, + {14.381813, 48.425222}, + {13.322983, 47.27005}, + {9.584885, 47.245331}, + {13.366928100586, 48.11393737793}, + {15.331421, 48.227921}, + {16.395034790039, 48.199081420898}, + {16.423873901367, 48.174362182617}, + {-74.762649536133, 41.003036499023}, + {-75.18424987793, 40.805282592773}, + {-74.14192199707, 41.055221557617}, + {-74.034805297852, 40.673446655273}, + {-73.846321, 40.724602}, + {-73.856023, 40.711543}, + {-73.968887, 40.673164}, + {-73.99772644043, 40.645980834961}, + {-73.971705, 40.75753}, + {-73.986877, 40.747604}, + {-73.955154418945, 40.795669555664}, + {-73.902969360352, 40.839614868164}, + {-73.868637084961, 40.67756652832}, + {-76.171646118164, 36.519241333008}, + {-73.203964233398, 40.791549682617}, + {-76.028824, 36.861877}, + {-76.274642944336, 36.660690307617}, + {-79.878571, 37.254364}, + {-77.450363, 37.192337}, + {-95.730056762695, 36.15119934082}, + {-97.328567504883, 36.317367553711}, + {-97.601602, 35.258351}, + {-122.37602233887, 47.57698059082}, + {-122.172318, 47.572861}, + {-122.171574, 47.600327}, + {-122.238007, 47.463684}, + {-122.192001, 47.494779}, + {-122.18650817871, 47.670364379883}, + {-122.17277526855, 47.684097290039}, + {-122.00386047363, 47.575607299805}, + {-122.317886, 47.685814}, + {-122.16316223145, 47.526168823242}, + {-122.158492, 47.976336}, + {-122.20848083496, 47.81867980957}, + {-122.33345031738, 48.363876342773}, + {-122.112579, 47.899933}, + {-122.29637145996, 47.327041625977}, + {-122.328323, 47.228922}, + {-122.05467224121, 47.299575805664}, + {-122.53395080566, 47.241897583008}, + {-114.053568, 46.822765}, + {-118.160019, 34.064255}, + {123.878475, 10.337448}, + {123.977966, 11.213608}, + {122.168556, 11.818592}, + {123.48838806152, 10.743942260742}, + {121.60011291504, 13.960189819336}, + {120.91621398926, 13.865432739258}, + {120.636063, 13.802948}, + {120.61820983887, 15.731735229492}, + {120.934067, 15.015564}, + {121.06315612793, 14.82536315918}, + {121.02607727051, 14.826736450195}, + {120.84892272949, 14.870681762695}, + {120.74592590332, 15.443344116211}, + {120.99311828613, 14.193649291992}, + {120.5770111084, 15.149459838867}, + {121.00959777832, 14.374923706055}, + {120.8846282959, 14.466934204102}, + {121.03843688965, 14.223861694336}, + {121.08100891113, 14.33235168457}, + {121.30210876465, 14.177169799805}, + {121.34330749512, 14.037094116211}, + {37.75520324707, 55.645065307617}, + {37.834854125977, 55.70686340332}, + {37.616500854492, 55.591506958008}, + {37.597274780273, 55.581893920898}, + {37.528610229492, 55.591506958008}, + {37.79914855957, 55.627212524414}, + {37.703018188477, 55.581893920898}, + {37.712631225586, 55.473403930664}, + {37.889469, 55.704434}, + {37.529983520508, 54.939193725586}, + {37.911758422852, 55.82633972168}, + {37.729110717773, 55.592880249023}, + {37.230606079102, 55.987014770508}, + {37.853737, 56.010361}, + {37.90901184082, 55.971908569336}, + {38.558578491211, 55.855178833008}, + {37.926864624023, 55.112228393555}, + {39.246597290039, 51.617202758789}, + {39.260330200195, 51.68586730957}, + {42.082443237305, 51.376876831055}, + {40.582809448242, 64.381942749023}, + {33.090133666992, 68.975601196289}, + {53.666152954102, 63.564834594727}, + {31.256790161133, 58.520736694336}, + {-84.985153, 39.858536}, + {-87.162323, 39.452591}, + {-86.20491, 41.00647}, + {-86.067581176758, 40.751724243164}, + {-89.484329223633, 30.872268676758}, + {-91.062240600586, 33.320846557617}, + {-89.854431, 33.156738}, + {-89.014663696289, 33.178024291992}, + {-89.138259887695, 31.74430847168}, + {-90.124282836914, 32.488632202148}, + {-90.190200805664, 32.299118041992}, + {-90.298690795898, 32.10823059082}, + {-90.356605, 32.343636}, + {-90.19249, 39.500656}, + {-90.242385864258, 39.73274230957}, + {-89.079429, 38.973057}, + {-88.862754, 39.117092}, + {-88.858109, 38.089371}, + {-88.546371, 38.069687}, + {73.439827, 18.741646}, + {73.797225952148, 19.995803833008}, + {73.877604, 18.501582}, + {74.276504516602, 16.765823364258}, + {74.287490844727, 16.922378540039}, + {75.793991088867, 21.032638549805}, + {75.308533, 19.855042}, + {75.522079467773, 20.17707824707}, + {74.056777954102, 19.821395874023}, + {74.979629516602, 20.862350463867}, + {73.926315, 18.511692}, + {75.967028, 19.909562}, + {73.697475, 18.735372}, + {74.412460327148, 16.241226196289}, + {73.154984, 19.225845}, + {73.246536254883, 19.147109985352}, + {73.729248, 18.687744}, + {74.312210083008, 20.057601928711}, + {73.788986206055, 18.59504699707}, + {73.93180847168, 18.482437133789}, + {73.859526, 18.532694}, + {73.754654, 20.011695}, + {73.414077758789, 19.958724975586}, + {11.297378540039, 43.781204223633}, + {12.460556030273, 41.902542114258}, + {12.512741088867, 41.919021606445}, + {10.355989, 43.788759}, + {9.6851348876953, 40.385055541992}, + {14.127731323242, 42.432632446289}, + {14.043283, 42.387336}, + {9.5107269287109, 40.909652709961}, + {10.106735229492, 44.081954956055}, + {11.807785, 43.504257}, + {11.107668, 43.869095}, + {11.316852, 44.003454}, + {11.120682, 43.967056}, + {14.279482, 41.070171}, + {16.147499, 39.352684}, + {15.94596862793, 38.544845581055}, + {15.950982, 38.692269}, + {18.185806274414, 40.353469848633}, + {17.63031, 40.408401}, + {100.3978729248, 13.935470581055}, + {100.65605163574, 13.715744018555}, + {100.60523986816, 14.168930053711}, + {100.617599, 14.072113}, + {98.336563, 8.035126}, + {99.166030883789, 9.1481781005859}, + {103.21723937988, 16.064071655273}, + {100.86753845215, 12.92610168457}, + {101.29737854004, 12.674789428711}, + {100.11497497559, 15.719375610352}, + {98.476638793945, 18.555221557617}, + {100.09437561035, 19.660720825195}, + {101.12571716309, 15.268936157227}, + {99.491500854492, 18.281936645508}, + {100.32096862793, 13.70475769043}, + {103.85307312012, 1.2984466552734}, + {103.854675, 1.29982}, + {103.850784, 1.280594}, + {-121.38176, 38.595657}, + {-122.212372, 39.543228}, + {-121.41736, 38.612137}, + {-121.3062286377, 38.661575317383}, + {-111.963734, 41.303106}, + {-111.981542, 41.079133}, + {-111.95076, 41.101913}, + {-111.99806213379, 40.547103881836}, + {-111.944847, 40.702629}, + {-111.509781, 40.661087}, + {-111.833267, 39.85405}, + {-98.087278, 40.821763}, + {-96.117325, 41.301727}, + {-95.889792, 41.288537}, + {-96.188462, 41.147232}, + {-85.869829, 42.153397}, + {-86.514244, 42.038956}, + {-86.052132, 41.906662}, + {-84.518174, 42.736112}, + {-85.570449829102, 42.998428344727}, + {-85.285492, 42.598114}, + {-85.948104858398, 43.46809387207}, + {-84.771659, 42.985157}, + {-85.948058, 42.968287}, + {-85.810775756836, 30.178756713867}, + {-81.312453, 29.81368}, + {-84.096909, 30.417984}, + {-82.224838, 30.07576}, + {-81.940841674805, 29.865646362305}, + {-84.308395385742, 30.435562133789}, + {-85.111779, 30.297327}, + {-81.6658, 30.187697}, + {-82.312489, 29.652786}, + {-82.330652, 29.634191}, + {-81.272048950195, 28.916702270508}, + {-81.349283, 28.81216}, + {-81.20475769043, 28.956527709961}, + {-80.673294067383, 28.116073608398}, + {-81.605331, 28.346149}, + {-81.559066772461, 28.355026245117}, + {-81.27367, 28.65001}, + {-81.416244506836, 28.581619262695}, + {-81.467056274414, 28.469009399414}, + {-80.718194, 28.339561}, + {-80.78727722168, 28.521194458008}, + {24.262619018555, 45.658493041992}, + {26.132584, 45.999985}, + {27.841415405273, 46.206436157227}, + {22.304306, 45.174408}, + {25.45051574707, 43.852615356445}, + {26.75651550293, 44.672470092773}, + {25.145645141602, 44.024276733398}, + {26.142429, 44.374585}, + {26.104202270508, 44.41291809082}, + {26.128886, 44.410703}, + {26.139221, 44.439011}, + {26.112442016602, 44.421157836914}, + {26.14769, 44.454575}, + {10.967331, 46.962967}, + {13.546829223633, 47.270736694336}, + {16.399154663086, 48.260879516602}, + {16.370315551758, 48.199081420898}, + {16.381301879883, 48.234786987305}, + {16.533737182617, 48.251266479492}, + {16.344625, 48.31772}, + {16.421127, 48.227921}, + {16.322388, 48.186035}, + {16.336441, 48.182144}, + {16.362534, 48.20755}, + {16.374435424805, 48.208694458008}, + {16.330490112305, 48.17024230957}, + {16.359329223633, 48.152389526367}, + {16.368942260742, 48.167495727539}, + {16.223373, 48.205261}, + {16.407394, 48.17482}, + {16.344086, 48.13179}, + {16.330490112305, 48.234786987305}, + {16.345596313477, 48.225173950195}, + {-38.581284, -3.765801}, + {-39.221831, -4.270422}, + {-39.302596, -7.316503}, + {-42.116364, -2.842221}, + {-47.46906, -5.540378}, + {-48.197708129883, -1.9617462158203}, + {-51.052248, 0.040422}, + {-49.111619, -5.365548}, + {-46.669693, -23.603439}, + {-46.388047, -23.174676}, + {-46.339274, -23.541693}, + {-46.667841, -23.511533}, + {-47.297927, -23.300766}, + {-46.461167, -23.597503}, + {-45.949832, -23.220864}, + {80.200195, 12.928848}, + {80.229721, 12.916272}, + {80.288772583008, 13.092269897461}, + {80.283279, 13.065834}, + {80.264397, 13.049355}, + {78.462295532227, 17.407150268555}, + {80.257186889648, 13.086776733398}, + {78.432083129883, 17.39616394043}, + {77.620793, 12.986433}, + {78.474655151367, 17.398910522461}, + {77.624588012695, 12.964553833008}, + {77.519531, 12.936401}, + {77.57515, 12.938952}, + {77.653427124023, 12.908248901367}, + {77.632827758789, 12.931594848633}, + {77.634201049805, 12.924728393555}, + {74.865646362305, 12.876663208008}, + {76.600112915039, 12.308120727539}, + {76.388626098633, 14.236221313477}, + {83.025741577148, 25.361251831055}, + {80.971298217773, 26.851272583008}, + {81.287155151367, 26.226425170898}, + {83.005142211914, 25.326919555664}, + {73.801345825195, 15.546340942383}, + {-0.146942, 51.622883}, + {-0.153113, 51.484125}, + {-1.303665, 52.041746}, + {-1.941147, 52.276775}, + {0.005081, 52.806198}, + {0.562914, 52.328313}, + {-2.092582, 51.447539}, + {-2.403345, 51.46245}, + {-2.349859, 51.712435}, + {-1.564672, 51.205581}, + {1.07105, 51.289522}, + {-2.824088, 54.096165}, + {-3.7209320068359, 56.065292358398}, + {-1.085127, 53.807602}, + {-1.547012, 55.101476}, + {-1.1405181884766, 50.975875854492}, + {-1.7214202880859, 54.906234741211}, + {-3.6234283447266, 51.742172241211}, + {-1.195586, 52.269516}, + {-2.166947, 51.581656}, + {-98.154144, 19.410324}, + {-103.42872619629, 20.622024536133}, + {-98.159409, 19.419022}, + {-102.06092834473, 20.053482055664}, + {-103.25569152832, 19.677200317383}, + {-99.299240112305, 19.372329711914}, + {-101.603203, 19.414297}, + {-99.15641784668, 19.431381225586}, + {-86.825637817383, 21.161727905273}, + {-103.39164733887, 20.742874145508}, + {-103.48915100098, 20.719528198242}, + {-86.953353881836, 20.502548217773}, + {-101.65168762207, 21.152114868164}, + {-100.3800201416, 25.733413696289}, + {-100.15068054199, 25.424423217773}, + {6.4441680908203, 9.5313262939453}, + {6.539612, 9.626083}, + {4.827805, 7.085152}, + {3.9351654052734, 6.8328094482422}, + {4.593796, 8.510696}, + {8.32901, 4.959641}, + {7.8916168212891, 4.9953460693359}, + {4.44191, 7.725449}, + {3.2567596435547, 6.5114593505859}, + {7.6416778564453, 6.4675140380859}, + {3.107986, 6.498642}, + {6.921158, 4.960556}, + {3.3638763427734, 6.4702606201172}, + {3.38528, 6.456386}, + {3.3707427978516, 6.4785003662109}, + {3.3336639404297, 6.5320587158203}, + {3.2471466064453, 6.5471649169922}, + {3.400039, 6.714249}, + {3.393402, 6.576433}, + {3.288116, 6.560669}, + {3.454514, 6.822853}, + {7.2557830810547, 5.6586456298828}, + {6.0143280029297, 5.4897308349609}, + {6.1873626708984, 7.5496673583984}, + {45.094071, 28.728562}, + {43.945999145508, 26.341781616211}, + {39.627609, 24.480896}, + {39.531212, 24.412651}, + {39.640731811523, 24.458999633789}, + {42.876205444336, 19.247360229492}, + {42.324142456055, 18.508529663086}, + {49.547653198242, 25.497207641602}, + {42.455978393555, 20.108413696289}, + {46.536026000977, 24.58122253418}, + {49.592972, 25.342712}, + {39.919509887695, 21.358108520508}, + {50.176620483398, 26.35139465332}, + {46.589584, 24.616928}, + {46.694984, 24.672203}, + {46.560745239258, 24.651260375977}, + {46.709976, 24.7538}, + {46.784591674805, 24.798202514648}, + {46.753693, 24.707565}, + {46.690521, 24.764557}, + {44.002304, 26.118622}, + {39.179306, 21.465454}, + {39.14909362793, 21.753616333008}, + {40.792922973633, 28.217697143555}, + {-2.743365, 54.038388}, + {-2.1375274658203, 49.222183227539}, + {-1.5442657470703, 53.990249633789}, + {-3.421574, 54.376184}, + {-1.822952, 54.920792}, + {-3.9186859130859, 55.770034790039}, + {-4.6204376220703, 56.390762329102}, + {-5.1244354248047, 50.188980102539}, + {-6.7723846435547, 54.578018188477}, + {-3.0136871337891, 56.50749206543}, + {-82.361755, 28.202596}, + {-75.156784057617, 39.957962036133}, + {-82.411880493164, 28.171005249023}, + {-77.617721557617, 37.514877319336}, + {-87.519149780273, 37.983169555664}, + {-98.159408569336, 29.714584350586}, + {-87.646865844727, 41.903915405273}, + {-98.427200317383, 29.482498168945}, + {-87.719650268555, 41.946487426758}, + {-88.084945678711, 41.743240356445}, + {-87.644119262695, 41.868209838867}, + {-88.017654418945, 42.101669311523}, + {-87.745742797852, 41.927261352539}, + {-87.679824829102, 41.825637817383}, + {-84.035110473633, 39.84260559082}, + {-104.84596252441, 39.675064086914}, + {-81.613998413086, 41.502914428711}, + {-104.9681854248, 39.563827514648}, + {-104.78004455566, 38.816757202148}, + {-84.410018920898, 42.271957397461}, + {-122.2208404541, 37.768936157227}, + {-84.030990600586, 41.906661987305}, + {-90.194320678711, 38.627243041992}, + {-90.224533081055, 38.647842407227}, + {-85.132369995117, 41.081314086914}, + {78.252182006836, 9.8293304443359}, + {80.195388793945, 13.009872436523}, + {80.207748413086, 12.965927124023}, + {79.420852661133, 13.114242553711}, + {76.980514526367, 11.032333374023}, + {77.015764, 10.982438}, + {76.933822631836, 11.026840209961}, + {77.341518, 10.007858}, + {83.012008666992, 25.313186645508}, + {80.327224731445, 26.453018188477}, + {80.328598, 26.410904}, + {79.589767456055, 27.390975952148}, + {80.947952270508, 26.86637878418}, + {83.77555847168, 26.507949829102}, + {78.021011, 27.175369}, + {79.126968383789, 28.03092956543}, + {77.714767, 28.996353}, + {80.339584350586, 16.326370239258}, + {77.838821411133, 16.624374389648}, + {78.447189331055, 17.434616088867}, + {82.236099243164, 16.96907043457}, + {79.867172241211, 17.191543579102}, + {79.551315307617, 17.999038696289}, + {78.306427, 17.498474}, + {-122.998999, 45.011398}, + {-123.059235, 44.88121}, + {-78.813858032227, 41.660842895508}, + {-122.78663635254, 45.471725463867}, + {-79.356307983398, 41.327133178711}, + {-80.394515991211, 40.076065063477}, + {-80.226116, 40.511055}, + {-80.670547, 41.396484}, + {-79.126968383789, 40.661087036133}, + {-80.58822, 40.633199}, + {-121.64268493652, 37.866439819336}, + {-121.626205, 37.116013}, + {-122.47352600098, 37.734603881836}, + {-122.13432312012, 37.455825805664}, + {-122.28813171387, 37.882919311523}, + {-122.44915, 37.792282}, + {-122.2647857666, 38.235855102539}, + {-0.192541, 54.09167}, + {-0.32341003417969, 50.819320678711}, + {-1.529846, 52.430878}, + {-3.266769, 55.962101}, + {-1.2943267822266, 53.292617797852}, + {-1.18721, 52.94184}, + {-1.4797210693359, 52.41096496582}, + {-1.2709808349609, 52.897109985352}, + {-1.2737274169922, 52.761154174805}, + {-1.0320281982422, 52.855911254883}, + {-1.648832, 54.938411}, + {-1.5621185302734, 54.878768920898}, + {-1.7543792724609, 53.785629272461}, + {-1.4824676513672, 53.376388549805}, + {-1.5978240966797, 54.954299926758}, + {0.30693054199219, 50.774002075195}, + {-1.492905, 54.957321}, + {-1.3973236083984, 53.439559936523}, + {-1.3588714599609, 53.425827026367}, + {-1.3011932373047, 53.450546264648}, + {-47.405319213867, -20.554733276367}, + {-46.526412963867, -23.555374145508}, + {-46.379408, -23.971419}, + {-46.312637, -23.960495}, + {-46.652223, -23.568286}, + {-46.592943, -23.543413}, + {-46.710359, -23.791482}, + {-46.68921, -23.539227}, + {-46.720413, -23.528183}, + {-46.648635864258, -23.544387817383}, + {-38.453567, -13.00209}, + {-41.307907104492, -21.733016967773}, + {-112.87802, 53.389769}, + {-113.556049, 52.29045}, + {-114.133862, 51.058133}, + {-104.679797, 50.477981}, + {-106.67106628418, 52.106094360352}, + {-101.169667, 53.921323}, + {-100.105201, 50.059991}, + {-89.3209, 48.469435}, + {-123.10935974121, 50.123062133789}, + {-122.959213, 50.117569}, + {-119.441806, 49.884669}, + {-123.09288024902, 49.360885620117}, + {-123.059921, 49.215317}, + {-121.66328430176, 49.303207397461}, + {-122.65480041504, 49.095840454102}, + {-123.1079864502, 49.282608032227}, + {36.063186, 48.4459}, + {33.067474, 48.66806}, + {31.581802, 48.549728}, + {35.018804, 47.887006}, + {35.959625, 47.95395}, + {30.321578979492, 47.140274047852}, + {32.494125366211, 46.715927124023}, + {30.736312866211, 46.482467651367}, + {30.729446, 46.480113}, + {32.75505065918, 46.856002807617}, + {30.730515, 46.40892}, + {32.597122192383, 46.724166870117}, + {32.687759399414, 46.567611694336}, + {32.536697387695, 46.519546508789}, + {24.019546508789, 49.863510131836}, + {23.861961, 49.90694}, + {23.660674, 49.139561}, + {22.948379516602, 48.299331665039}, + {-99.167404, 19.388809}, + {-103.44520568848, 20.659103393555}, + {-99.303477, 18.796045}, + {-99.245681762695, 18.954849243164}, + {-99.708480834961, 19.228134155273}, + {-99.038314819336, 19.421768188477}, + {-99.142684936523, 19.230880737305}, + {-98.774642944336, 22.004928588867}, + {-77.687759399414, 18.027877807617}, + {-76.762161254883, 17.983932495117}, + {-77.505111694336, 18.09928894043}, + {-78.340072631836, 18.28742980957}, + {-76.765766, 18.01981}, + {-76.877517700195, 17.988052368164}, + {-77.906112670898, 18.479690551758}, + {-60.847091674805, 14.468307495117}, + {-61.482389, 16.205763}, + {16.404647827148, 57.272415161133}, + {16.294785, 57.003937}, + {16.32122, 56.68499}, + {14.238052, 57.787399}, + {14.171676635742, 57.783279418945}, + {14.678421020508, 57.396011352539}, + {15.548172, 56.637039}, + {14.817123413086, 56.918106079102}, + {16.42936706543, 59.446334838867}, + {16.410898, 59.396619}, + {16.348342895508, 59.01237487793}, + {17.643356323242, 59.311752319336}, + {16.160202026367, 58.575668334961}, + {17.052318, 58.679581}, + {17.366867, 59.202805}, + {16.723251342773, 59.670181274414}, + {16.500778, 59.623489}, + {14.588699, 58.978043}, + {14.073715, 58.351822}, + {14.291152954102, 57.893142700195}, + {17.368698120117, 62.315139770508}, + {14.192276000977, 58.060684204102}, + {13.785781860352, 58.30924987793}, + {-97.48085, 20.567169}, + {-102.306117, 21.877978}, + {-102.87803649902, 23.188705444336}, + {-101.652031, 21.140751}, + {-102.528798, 22.755485}, + {-100.37178039551, 25.70182800293}, + {-100.19325256348, 25.747146606445}, + {-103.38635, 20.699517}, + {-100.178217, 25.646957}, + {-103.338089, 20.581512}, + {-103.31336975098, 20.727767944336}, + {-100.384964, 20.612961}, + {-93.116683959961, 16.735610961914}, + {-86.824264526367, 21.172714233398}, + {-99.174270629883, 19.427261352539}, + {-99.258041381836, 19.405288696289}, + {-99.142684936523, 19.296798706055}, + {-99.179764, 19.410095}, + {-99.201279, 19.438248}, + {-99.202449, 19.372434}, + {-99.223709106445, 19.377822875977}, + {-99.054642, 19.54767}, + {-99.240326, 19.552368}, + {-99.207229614258, 19.565963745117}, + {143.06053161621, -36.45881652832}, + {143.603482, -38.334939}, + {144.699206, -37.657946}, + {144.95793, -37.769151}, + {144.904878, -37.769897}, + {144.993889, -37.79982}, + {144.940242, -37.84249}, + {144.955102, -37.811538}, + {144.95658, -37.821171}, + {145.131946, -37.854979}, + {145.000458, -37.880486}, + {145.103989, -37.808304}, + {145.03086, -37.928114}, + {145.169843, -37.987254}, + {145.19629, -38.077537}, + {145.252414, -38.456934}, + {146.53770446777, -38.190536499023}, + {147.212366, -41.54824}, + {153.044752, -27.759946}, + {111.099463, -7.146663}, + {110.32127380371, -7.9534149169922}, + {107.51564025879, -6.3768768310547}, + {110.497879, -7.360703}, + {111.42402648926, -6.8190765380859}, + {110.823212, -7.681503}, + {110.837283, -6.765258}, + {111.032771, -7.429311}, + {110.426232, -6.992058}, + {110.19355773926, -6.9495391845703}, + {110.31303405762, -7.6540374755859}, + {110.107727, -6.970139}, + {109.663283, -7.69273}, + {109.837093, -6.911795}, + {110.224655, -7.489449}, + {110.709931, -7.691236}, + {109.713364, -6.904221}, + {116.09733581543, -8.5810089111328}, + {115.186346, -8.694622}, + {110.391312, -7.756485}, + {115.156372, -8.68612}, + {115.236264, -8.539886}, + {115.170122, -8.758193}, + {123.600998, -10.168533}, + {8.658325, 52.124222}, + {8.4175872802734, 51.702346801758}, + {7.2887420654297, 52.512588500977}, + {8.887308, 52.029575}, + {8.7787628173828, 52.192611694336}, + {9.5711517333984, 50.908584594727}, + {9.613723, 50.846788}, + {8.758163, 51.736679}, + {10.889325, 48.250626}, + {10.907089, 48.313339}, + {11.000824, 48.123169}, + {101.55418395996, 3.1345367431641}, + {101.59675598145, 3.1015777587891}, + {101.690369, 3.169327}, + {101.69288635254, 3.1716156005859}, + {101.713486, 3.166809}, + {101.81098937988, 2.9848480224609}, + {101.40449523926, 3.0631256103516}, + {101.41822814941, 2.9903411865234}, + {101.87141418457, 2.9999542236328}, + {101.76979064941, 3.0136871337891}, + {101.71485900879, 3.1262969970703}, + {101.69975280762, 3.1894683837891}, + {101.74095153809, 3.1935882568359}, + {101.44432067871, 3.1070709228516}, + {101.76567077637, 3.2128143310547}, + {101.64482116699, 3.1510162353516}, + {101.71348571777, 3.1853485107422}, + {101.69975280762, 3.2361602783203}, + {101.65168762207, 3.1606292724609}, + {101.62422180176, 3.0850982666016}, + {-111.9197845459, 33.695755004883}, + {-111.92802429199, 33.356552124023}, + {-112.182236, 33.504105}, + {-112.08320617676, 33.305740356445}, + {-78.871536, 42.979889}, + {-116.01768493652, 36.229476928711}, + {-115.312137, 36.163882}, + {-122.57652282715, 37.999649047852}, + {-115.08522, 36.035843}, + {81.919556, 17.10434}, + {80.154190063477, 16.072311401367}, + {80.593643, 16.533737}, + {83.520126342773, 18.601913452148}, + {80.924606323242, 16.625747680664}, + {79.788895, 13.818741}, + {80.629348754883, 16.311264038086}, + {80.83122253418, 16.018753051758}, + {76.604232788086, 31.072769165039}, + {78.810013, 13.767105}, + {76.75666809082, 30.729446411133}, + {76.667816, 30.689621}, + {76.771774291992, 30.756912231445}, + {75.595551, 31.311035}, + {75.658035, 31.291809}, + {75.361404418945, 31.490249633789}, + {75.831069946289, 30.886001586914}, + {75.641555786133, 31.538314819336}, + {74.887161, 31.612015}, + {75.835876, 30.94162}, + {75.630569458008, 31.380386352539}, + {76.355667114258, 30.317459106445}, + {75.84342956543, 30.928573608398}, + {-90.076217651367, 29.937057495117}, + {-80.419235229492, 27.257766723633}, + {-81.358111, 28.774338}, + {-112.18620300293, 33.585891723633}, + {-112.23838806152, 33.671035766602}, + {-111.879616, 33.385391}, + {-82.392654418945, 28.121566772461}, + {-111.892662, 33.432942}, + {-82.484664916992, 27.958145141602}, + {-121.48750305176, 38.57780456543}, + {-87.990188598633, 41.523513793945}, + {-121.15242004395, 38.682174682617}, + {-88.068466186523, 41.711654663086}, + {-84.160079956055, 40.364456176758}, + {-80.991897583008, 41.199417114258}, + {-122.37602233887, 47.56462097168}, + {-84.88655090332, 39.173812866211}, + {-122.12745666504, 47.681350708008}, + {-121.99562072754, 37.387161254883}, + {-122.25654602051, 47.265243530273}, + {-104.803516, 38.757581}, + {-122.00248718262, 37.409133911133}, + {-122.05879211426, 37.902145385742}, + {-91.64176940918, 41.729507446289}, + {-122.24830627441, 37.845840454102}, + {-7.538948, 42.996254}, + {-7.649812, 43.142307}, + {-7.5070953369141, 43.683700561523}, + {-8.8886260986328, 42.785568237305}, + {-8.787827, 42.260971}, + {-8.8872528076172, 42.782821655273}, + {-8.7677764892578, 42.200546264648}, + {-8.024139, 42.480011}, + {-5.6655120849609, 43.538131713867}, + {-5.855713, 43.437882}, + {-5.721817, 43.492813}, + {-5.9333038330078, 43.561477661133}, + {-5.98313, 43.541275}, + {-6.5059661865234, 43.161849975586}, + {-5.229492, 43.48114}, + {-4.7110748291016, 41.636123657227}, + {-5.6050872802734, 42.593307495117}, + {-4.1013336181641, 41.608657836914}, + {-123.95771, 46.187296}, + {-122.684669, 45.671196}, + {-79.936992, 40.335813}, + {-76.818464, 39.891359}, + {-75.178756713867, 41.02912902832}, + {-74.871141, 41.203537}, + {-98.703231811523, 36.855697631836}, + {-114.02778625488, 46.871109008789}, + {-151.517944, 59.650269}, + {-131.62239074707, 55.388259887695}, + {-66.260604858398, 18.26545715332}, + {-122.38426208496, 47.560501098633}, + {-122.31285095215, 47.361373901367}, + {-122.997437, 47.367554}, + {-94.702153, 32.437822}, + {-94.726181030273, 33.042068481445}, + {-96.54167175293, 31.564407348633}, + {-117.69035339355, 48.155136108398}, + {-119.26414489746, 46.330032348633}, + {-119.945297, 46.426849}, + {-2.557525, 51.51598}, + {-0.421188, 52.35466}, + {-2.0771026611328, 51.733932495117}, + {-2.20276, 51.431123}, + {-4.1191864013672, 50.357894897461}, + {-4.324875, 51.800613}, + {-2.275314, 50.702957}, + {0.10780334472656, 51.780624389648}, + {-0.477219, 54.346619}, + {-0.54176330566406, 53.162155151367}, + {-1.5607452392578, 52.386245727539}, + {9.221551, 49.249257}, + {8.9902496337891, 49.776992797852}, + {10.976028442383, 49.492721557617}, + {11.975327, 49.334793}, + {11.467392, 48.855789}, + {8.289528, 49.592628}, + {8.200882, 49.485306}, + {7.398148, 49.542084}, + {8.102565, 53.529053}, + {10.02571105957, 48.420181274414}, + {8.14986, 53.159818}, + {9.120163, 50.172226}, + {9.2910003662109, 50.237045288086}, + {7.384906, 51.111111}, + {-76.957169, 38.891373}, + {-76.925582885742, 38.908767700195}, + {-77.001792, 38.940243}, + {-77.045802, 38.343789}, + {-76.873451, 38.98414}, + {-77.362878, 39.454553}, + {-77.847722, 38.512048}, + {-72.761765, 41.751676}, + {-77.075684, 38.609802}, + {-77.794876098633, 39.647598266602}, + {-72.508814, 41.819395}, + {-73.622604, 41.021011}, + {-72.193222045898, 41.375198364258}, + {-73.515015, 41.049042}, + {-72.997943, 41.505006}, + {-71.919937133789, 41.857223510742}, + {-70.436782836914, 41.724014282227}, + {-71.465377807617, 41.770706176758}, + {-70.617142, 41.747589}, + {-72.558887, 42.11365}, + {-71.468124389648, 41.748733520508}, + {-3.0205535888672, 51.567764282227}, + {-3.2883453369141, 51.499099731445}, + {-1.5250396728516, 50.918197631836}, + {-1.4220428466797, 50.907211303711}, + {-3.2059478759766, 51.162643432617}, + {-1.4275360107422, 53.248672485352}, + {-1.4962005615234, 52.759780883789}, + {-1.4220428466797, 53.230819702148}, + {-3.0054473876953, 51.118698120117}, + {-1.8999481201172, 52.472763061523}, + {-1.943436, 52.325363}, + {-0.134681, 51.504593}, + {-1.7969512939453, 52.604598999023}, + {-0.14213562011719, 51.501846313477}, + {-0.967064, 51.996444}, + {-0.36323547363281, 51.95915222168}, + {-5.8934783935547, 54.556045532227}, + {-4.3224334716797, 55.87028503418}, + {-0.262059, 52.48985}, + {-0.177841, 52.568894}, + {-94.609451293945, 38.886795043945}, + {-94.713534, 38.915123}, + {-93.725051879883, 38.175430297852}, + {-97.170241, 38.945217}, + {-94.684982299805, 38.940353393555}, + {-94.263381958008, 38.64372253418}, + {-94.54677, 39.148407}, + {-94.668961, 39.108582}, + {-94.649872, 39.254837}, + {-97.33268737793, 37.580795288086}, + {-94.828999, 38.848522}, + {-94.343033, 38.435898}, + {-94.510986, 39.239044}, + {-94.676742553711, 38.91975402832}, + {-94.889328, 39.69429}, + {-93.969498, 29.86908}, + {-96.638852, 39.188919}, + {-97.659530639648, 37.686538696289}, + {-92.076736, 30.532059}, + {-93.868904, 29.983749}, + {-88.51203918457, 34.912490844727}, + {-93.376235961914, 30.207595825195}, + {-89.977340698242, 35.10612487793}, + {-89.866104, 35.057236}, + {-89.852371, 33.889847}, + {18.636245727539, 54.350051879883}, + {18.649978637695, 54.352798461914}, + {18.391799926758, 54.381637573242}, + {18.489303588867, 54.439315795898}, + {18.47282409668, 54.538192749023}, + {18.371200561523, 54.373397827148}, + {18.673324584961, 54.713973999023}, + {17.993545532227, 54.135818481445}, + {18.163833618164, 54.60823059082}, + {17.003402709961, 54.455795288086}, + {17.241669, 54.642563}, + {18.383560180664, 54.229202270508}, + {17.050094604492, 54.45442199707}, + {16.058578491211, 54.22233581543}, + {16.81526184082, 54.527206420898}, + {15.649337768555, 54.189376831055}, + {15.947341918945, 53.390121459961}, + {16.047592163086, 53.593368530273}, + {22.27409362793, 53.850173950195}, + {20.417404, 53.682632}, + {20.40838, 53.351866}, + {19.900589, 53.740311}, + {20.514908, 53.786316}, + {2.122696, 41.381241}, + {2.053121, 41.305712}, + {-3.5396575927734, 40.446853637695}, + {-0.34675598144531, 39.460830688477}, + {-3.547096, 40.348435}, + {-0.860367, 41.657181}, + {-3.596535, 40.4496}, + {-3.6907196044922, 40.433120727539}, + {-1.4344024658203, 37.793655395508}, + {2.8049468994141, 41.953353881836}, + {-3.6042022705078, 37.120742797852}, + {-3.6467742919922, 37.109756469727}, + {-3.591499, 36.735878}, + {-3.021333, 36.963224}, + {-3.202059, 40.615311}, + {-3.259621, 36.753846}, + {-3.276967, 40.561425}, + {-2.023458, 43.275185}, + {-1.978543, 43.318405}, + {-1.963943, 43.26622}, + {-7.205887, 37.256241}, + {-6.9083404541016, 37.321243286133}, + {-7.3217010498047, 37.196273803711}, + {-6.3755035400391, 37.781295776367}, + {-3.4023284912109, 38.022994995117}, + {0.516433, 41.709721}, + {-0.494522, 42.077774}, + {-2.8131866455078, 38.34846496582}, + {-79.920364, 40.475327}, + {-5.477765, 42.438026}, + {-80.115451, 40.425042}, + {-79.902877807617, 40.56770324707}, + {-79.935625, 40.424647}, + {-79.610296, 40.22411}, + {-80.49201965332, 41.317520141602}, + {-85.661399, 31.366979}, + {-94.085161, 33.556633}, + {-94.235077, 36.049728}, + {-90.698318481445, 35.825729370117}, + {-91.99232, 35.081508}, + {-91.504365, 33.909946}, + {-92.336654663086, 34.724349975586}, + {-94.426027, 35.37475}, + {-92.799453735352, 34.420852661133}, + {-92.656021, 36.12587}, + {-92.058798, 34.193897}, + {-94.159554, 36.113075}, + {-97.062836, 36.750984}, + {-90.864486694336, 35.979537963867}, + {-96.801223754883, 35.936965942383}, + {-96.69342, 33.997879}, + {-98.520584106445, 35.531845092773}, + {-99.052047729492, 19.550857543945}, + {-99.032821655273, 19.383316040039}, + {-99.258041381836, 19.554977416992}, + {-98.975143432617, 19.218521118164}, + {-99.255294799805, 19.696426391602}, + {-98.781509399414, 20.093307495117}, + {-99.171524047852, 19.524765014648}, + {-99.19075012207, 19.666213989258}, + {-98.272018432617, 18.980941772461}, + {-99.619216918945, 19.28581237793}, + {-97.463150024414, 18.833999633789}, + {-99.667282104492, 19.251480102539}, + {-103.27491760254, 20.609664916992}, + {-105.22361755371, 20.645370483398}, + {-103.406067, 20.556107}, + {-103.32572937012, 20.652236938477}, + {-101.23008728027, 19.673080444336}, + {-103.29277038574, 20.701675415039}, + {-103.55918884277, 19.376449584961}, + {-101.22871398926, 19.721145629883}, + {8.667619, 52.129585}, + {8.6551666259766, 51.644668579102}, + {10.014724731445, 53.618087768555}, + {8.10524, 52.838058}, + {8.684921, 52.712174}, + {8.589394, 53.037359}, + {10.751052, 53.433254}, + {8.96796, 53.057257}, + {7.187155, 52.214833}, + {7.6567840576172, 51.251907348633}, + {8.160275, 51.599065}, + {7.075882, 51.194504}, + {7.2956085205078, 51.636428833008}, + {-114.13078308105, 51.081619262695}, + {-114.367805, 51.182671}, + {-114.26399230957, 51.089859008789}, + {-113.67073059082, 54.152297973633}, + {-113.77597, 53.534415}, + {-113.515053, 53.547688}, + {-113.366067, 53.584253}, + {-115.267586, 51.052914}, + {-111.91841125488, 52.579879760742}, + {-113.48533630371, 53.581008911133}, + {-113.545014, 53.563208}, + {-113.421772, 53.543799}, + {-96.964634, 49.995204}, + {-73.774395, 45.448723}, + {-73.801934, 45.509001}, + {-73.846115, 45.47612}, + {-73.644166, 45.427094}, + {-73.735427856445, 45.640640258789}, + {-66.386947631836, 50.215072631836}, + {-66.562728881836, 50.198593139648}, + {-73.933921, 45.690269}, + {-117.31132507324, 33.657302856445}, + {-81.615371704102, 41.509780883789}, + {-117.21794128418, 32.801742553711}, + {-82.965316772461, 39.919509887695}, + {-76.959915161133, 40.497665405273}, + {-77.988510131836, 39.923629760742}, + {-118.047134, 33.903671}, + {-118.245163, 34.05098}, + {-77.96516418457, 39.153213500977}, + {-121.47377, 38.544221}, + {-117.94715881348, 33.77815246582}, + {-117.634125, 34.039955}, + {-117.942352, 33.691635}, + {-122.198868, 37.742996}, + {-122.12164, 37.680642}, + {-121.954765, 37.511444}, + {-98.01383972168, 43.352737426758}, + {-95.795288, 43.288193}, + {-85.017105, 41.676682}, + {13.623734, 37.391281}, + {12.691269, 38.049774}, + {12.546985, 38.021419}, + {14.021987915039, 38.036727905273}, + {13.364181518555, 38.109512329102}, + {13.095016, 38.063507}, + {14.001388549805, 38.029861450195}, + {13.301468, 38.049088}, + {8.6991119384766, 44.526901245117}, + {13.329849243164, 38.110885620117}, + {8.766632, 44.389458}, + {8.4958648681641, 45.45524597168}, + {7.697852, 45.14164}, + {7.67601, 45.089264}, + {7.66896, 45.104625}, + {8.4986114501953, 45.09407043457}, + {8.596458, 44.8946}, + {8.123541, 44.90181}, + {7.801438, 44.980087}, + {7.713547, 45.380173}, + {8.2953643798828, 46.124038696289}, + {28.279495239258, 49.447402954102}, + {36.30500793457, 49.985733032227}, + {36.20475769043, 49.989852905273}, + {36.223983764648, 50.02555847168}, + {36.399079, 49.915009}, + {36.211268, 49.987106}, + {33.470993, 49.07341}, + {34.571914672852, 49.601211547852}, + {36.655197143555, 49.536666870117}, + {34.913498, 49.441259}, + {32.985306, 50.016632}, + {34.318828, 49.333416}, + {32.579269, 51.884308}, + {32.104110717773, 49.424057006836}, + {34.10774230957, 44.96223449707}, + {33.877029418945, 45.504684448242}, + {33.476791, 48.018494}, + {34.974014, 48.374863}, + {35.242080688477, 48.66325378418}, + {-7.6073455810547, 43.671340942383}, + {-5.9250640869141, 43.557357788086}, + {-2.506485, 43.362808}, + {-5.919571, 43.55722}, + {-3.003845, 43.290482}, + {-4.645153, 41.526605}, + {-5.644651, 40.914384}, + {-3.692615, 42.350652}, + {-0.409149, 39.469917}, + {-0.446736, 39.498008}, + {-0.345676, 39.46859}, + {-0.502366, 38.997284}, + {-0.44975280761719, 38.890914916992}, + {-0.47996520996094, 38.345718383789}, + {0.10917663574219, 38.840103149414}, + {-0.159988, 38.540314}, + {-1.166723, 38.005647}, + {-0.223503, 39.747276}, + {2.523818, 39.508795}, + {-3.977625, 39.863268}, + {-4.879957, 40.009624}, + {0.162245, 51.66311}, + {-4.230422, 55.840761}, + {-4.3087005615234, 55.844192504883}, + {-4.2482757568359, 55.862045288086}, + {-4.296203, 55.829842}, + {-4.261813, 55.861229}, + {-4.351772, 55.862045}, + {-3.9406585693359, 56.210861206055}, + {-3.2842254638672, 55.911483764648}, + {-4.365692, 55.866165}, + {-3.269806, 55.987701}, + {-3.114281, 55.895348}, + {-2.893639, 56.363869}, + {-3.0287933349609, 56.47590637207}, + {-3.099006, 55.935948}, + {-3.5094451904297, 55.959548950195}, + {-1.180539, 54.568958}, + {-1.689148, 54.959793}, + {-1.4110565185547, 54.878768920898}, + {-1.39595, 54.75174}, + {-1.591012, 54.909254}, + {-43.131576, -22.874422}, + {-40.503602, -20.678258}, + {-44.327319, -3.134152}, + {-43.004442, -22.85895}, + {-43.102696, -22.903052}, + {-42.922098, -22.925236}, + {-36.690902709961, -8.9710235595703}, + {-42.201812, -22.843748}, + {-47.447543, -6.56364}, + {-47.408986, -5.456663}, + {-40.085362, -18.902271}, + {-49.226303100586, -25.454635620117}, + {-38.510513305664, -3.7374114990234}, + {-51.69548034668, -20.79231262207}, + {-51.179524, -23.283764}, + {-49.040908813477, -26.488723754883}, + {-51.167917, -23.285659}, + {-48.434211, -27.591429}, + {-50.254898071289, -29.937057495117}, + {-51.236801147461, -30.066146850586}, + {-4.0876007080078, 5.3263092041016}, + {-3.996515, 5.380664}, + {-4.0258026123047, 5.3633880615234}, + {-4.0889739990234, 5.3125762939453}, + {-4.0999603271484, 5.3578948974609}, + {-3.7346649169922, 5.1944732666016}, + {-3.978451, 5.279738}, + {-4.0258026123047, 5.3263092041016}, + {-3.937225, 5.321503}, + {-4.0505218505859, 5.4416656494141}, + {-5.151106, 9.96666}, + {-7.6169586181641, 7.7336883544922}, + {-4.0079498291016, 5.4334259033203}, + {-4.085953, 5.288544}, + {-3.937912, 5.375061}, + {-4.0532684326172, 5.3166961669922}, + {-5.2521514892578, 6.8053436279297}, + {-1.52092, 12.357755}, + {-3.1771087646484, 10.325088500977}, + {-4.222641, 5.483322}, + {-1.538944, 12.362022}, + {-1.5305328369141, 12.369918823242}, + {-1.5154266357422, 12.393264770508}, + {-1.058578, 43.708191}, + {-2.151885, 47.17985}, + {-2.057725, 47.23259}, + {-1.5456390380859, 47.228164672852}, + {-0.822006, 47.404358}, + {4.580002, 49.516068}, + {-0.413042, 47.519637}, + {-3.044357, 47.70195}, + {6.2560272216797, 48.308944702148}, + {6.1681365966797, 48.878860473633}, + {-2.3778533935547, 47.918930053711}, + {2.345043, 50.981546}, + {3.3762359619141, 46.107559204102}, + {7.2077178955078, 48.79508972168}, + {3.10524, 50.380325}, + {3.049518, 50.649033}, + {4.04211, 50.007706}, + {3.2897186279297, 50.237045288086}, + {3.8871002197266, 45.036392211914}, + {3.2485198974609, 45.571975708008}, + {-74.790802, 10.925217}, + {-74.223633, 11.13945}, + {-75.465088, 10.3759}, + {-75.35041809082, 10.558547973633}, + {-76.521835327148, 3.4696197509766}, + {-76.489078, 3.453104}, + {-76.544556, 3.432008}, + {-76.534194946289, 3.3693695068359}, + {-76.541511, 3.442159}, + {-76.552047729492, 3.4833526611328}, + {-75.579758, 6.185989}, + {-75.439366, 6.375824}, + {-77.628707885742, 0.82878112792969}, + {-75.582504, 6.232681}, + {-75.63606262207, 5.1944732666016}, + {-75.57209, 6.239548}, + {-75.945053100586, 4.2482757568359}, + {-73.098220825195, 7.0978546142578}, + {-73.110580444336, 7.0964813232422}, + {107.20115661621, -6.7668914794922}, + {107.758711, -6.340486}, + {107.460434, -6.279451}, + {108.58268737793, -7.3436737060547}, + {106.866074, -6.455841}, + {107.45109558105, -6.4029693603516}, + {110.387157, -7.014415}, + {107.03910827637, -6.7298126220703}, + {110.37071228027, -7.7378082275391}, + {110.593185, -7.967834}, + {110.42152404785, -7.6128387451172}, + {109.12239074707, -6.9770050048828}, + {110.1441192627, -7.3258209228516}, + {109.916534, -7.326507}, + {109.25148010254, -7.4301910400391}, + {110.8129119873, -6.8437957763672}, + {113.227964, -7.761256}, + {113.1241607666, -8.2376861572266}, + {112.735519, -7.38033}, + {112.737442, -7.267593}, + {112.63526916504, -7.1720123291016}, + {112.78358459473, -7.3889923095703}, + {112.730711, -7.69662}, + {112.770048, -7.344655}, + {-2.583237, 53.380051}, + {-2.5838470458984, 53.390121459961}, + {-2.239609, 53.581467}, + {-2.432638, 53.368737}, + {-2.506714, 53.434067}, + {-2.4423980712891, 53.590621948242}, + {-2.340775, 53.580322}, + {-2.977982, 53.416729}, + {-3.00087, 53.405342}, + {-3.00499, 53.455124}, + {-2.6525115966797, 53.516464233398}, + {-2.767752, 53.814183}, + {-2.1800994873047, 53.107223510742}, + {-1.4934539794922, 53.45329284668}, + {-1.5277862548828, 53.428573608398}, + {-1.5332794189453, 53.380508422852}, + {-1.7488861083984, 53.810348510742}, + {-1.4920806884766, 53.398361206055}, + {-1.4920806884766, 53.369522094727}, + {-1.491468, 53.680647}, + {-1.108109, 53.960312}, + {-1.5181732177734, 53.770523071289}, + {-1.5731048583984, 53.785629272461}, + {-1.545364, 53.796341}, + {-75.528945922852, 2.4176788330078}, + {-75.546798706055, 2.3874664306641}, + {-75.187912, 4.445572}, + {-75.167227, 4.444296}, + {-75.310592651367, 5.7080841064453}, + {-76.015090942383, 6.7421722412109}, + {-74.663772583008, 5.4650115966797}, + {-75.563278198242, 6.1997222900391}, + {-75.578384399414, 6.2601470947266}, + {-75.595963, 6.225266}, + {-75.589370727539, 6.2299346923828}, + {-75.57243, 6.245872}, + {-75.587997436523, 6.2313079833984}, + {-75.986251831055, 4.2345428466797}, + {-76.432571411133, 3.4119415283203}, + {-78.091506958008, 1.2476348876953}, + {-76.938629, 1.208496}, + {-76.50260925293, 3.4778594970703}, + {-77.009353637695, 3.8788604736328}, + {19.932976, -34.601784}, + {18.950729370117, -33.780899047852}, + {20.4375, -34.029735}, + {27.791634, -32.929459}, + {23.094406, -34.044113}, + {27.891312, -33.002701}, + {21.448555, -34.189064}, + {27.859268188477, -26.164627075195}, + {27.837295532227, -26.061630249023}, + {27.935486, -26.259041}, + {27.771377563477, -26.159133911133}, + {28.062123, -26.02769}, + {26.689224243164, -27.132797241211}, + {28.035049438477, -26.038284301758}, + {28.057022094727, -26.098709106445}, + {27.962728, -26.133946}, + {26.771621704102, -27.981491088867}, + {28.062515258789, -26.122055053711}, + {28.011017, -26.077423}, + {28.16276550293, -25.900955200195}, + {29.438095, -25.80574}, + {29.372177, -25.868454}, + {27.218681, -25.675735}, + {28.098220825195, -26.045150756836}, + {-118.07075500488, 34.067916870117}, + {-118.161392, 34.063454}, + {-117.16026306152, 34.122848510742}, + {-118.290981, 34.062549}, + {-119.0746307373, 35.383529663086}, + {-119.018784, 35.383759}, + {-117.90733337402, 33.697128295898}, + {-118.5115814209, 34.040451049805}, + {-118.42781066895, 34.067916870117}, + {-117.760735, 33.791542}, + {-117.891445, 33.685357}, + {-117.858949, 33.694647}, + {-117.84004211426, 34.010238647461}, + {-117.30171203613, 33.565292358398}, + {-117.227554, 33.585205}, + {-117.09938, 33.495712}, + {-118.1778717041, 33.893508911133}, + {-117.941666, 33.880692}, + {-66.968891, 10.431165}, + {-66.919784545898, 10.491256713867}, + {-69.54689, 9.983139}, + {-67.585830688477, 10.228958129883}, + {-68.00607, 10.20291}, + {-67.992324829102, 10.17951965332}, + {-67.957306, 10.277023}, + {-67.892074584961, 10.230331420898}, + {-67.609357, 10.234855}, + {-67.462247, 7.884236}, + {-68.182297, 10.49675}, + {-69.222793579102, 10.005111694336}, + {-69.315033, 10.068283}, + {-69.228777, 9.577616}, + {-69.315839, 10.080771}, + {-71.626052856445, 10.687637329102}, + {-71.631603, 10.684843}, + {-71.627426147461, 10.601119995117}, + {-79.104995727539, 43.027267456055}, + {-80.724497, 43.077546}, + {-79.520903, 44.129363}, + {-79.187393188477, 43.958358764648}, + {-92.629165649414, 49.75227355957}, + {-71.881484985352, 48.740158081055}, + {-70.663375854492, 48.293838500977}, + {-81.397205, 48.457752}, + {-72.823562, 45.39299}, + {-79.110488891602, 48.175735473633}, + {-71.98860168457, 46.049880981445}, + {-72.927932739258, 46.227035522461}, + {-72.054862, 45.338595}, + {-71.805938, 45.167419}, + {-72.837295532227, 45.348129272461}, + {-75.800171, 44.68689}, + {-99.091873168945, 19.43000793457}, + {-99.105606079102, 19.397048950195}, + {-99.153671264648, 19.47395324707}, + {-99.205856323242, 18.921890258789}, + {-99.223709106445, 18.957595825195}, + {-99.196243286133, 19.337997436523}, + {-99.201736450195, 19.335250854492}, + {-99.20036315918, 19.333877563477}, + {-99.241561889648, 19.283065795898}, + {-98.94905090332, 19.435501098633}, + {-98.953170776367, 19.43000793457}, + {-100.2564239502, 20.583572387695}, + {-103.5083770752, 20.468215942383}, + {-103.3861541748, 20.591812133789}, + {-103.355942, 20.640221}, + {-100.46516418457, 20.678329467773}, + {-103.38890075684, 20.678329467773}, + {-103.410873, 20.673935}, + {-103.40263366699, 20.679702758789}, + {96.165390014648, 16.805648803711}, + {96.213455200195, 16.85920715332}, + {96.184616088867, 16.811141967773}, + {96.201095581055, 16.889419555664}, + {96.232681274414, 17.105026245117}, + {96.137238, 16.901779}, + {96.464767456055, 17.311019897461}, + {96.091232299805, 19.751358032227}, + {35.376467, 33.555581}, + {95.984115600586, 21.819534301758}, + {35.636215209961, 34.018478393555}, + {35.660934448242, 34.050064086914}, + {35.888724, 34.350856}, + {35.644454956055, 34.069290161133}, + {35.48378, 33.891449}, + {35.546951293945, 33.834457397461}, + {35.519485473633, 33.89762878418}, + {35.508499145508, 33.881149291992}, + {35.529098510742, 33.892135620117}, + {35.964431762695, 33.870162963867}, + {35.527862, 33.892768}, + {35.424728393555, 33.684768676758}, + {35.529098510742, 33.892135620117}, + {37.878342, 55.673447}, + {38.484421, 55.890884}, + {38.093275, 55.811234}, + {37.572654, 55.500183}, + {36.720428, 56.320724}, + {37.02118, 55.737764}, + {37.067871, 55.63408}, + {38.42399597168, 56.070785522461}, + {37.172553, 55.723343}, + {38.860702514648, 55.727462768555}, + {38.61557, 55.559921}, + {31.148986, 67.594757}, + {32.415848, 67.156677}, + {43.976212, 56.318665}, + {44.07792, 56.230005}, + {13.744583129883, 51.085739135742}, + {11.588516235352, 53.395614624023}, + {12.400131, 51.375896}, + {12.302627563477, 51.884994506836}, + {10.913956, 51.471359}, + {13.811595, 51.034654}, + {13.865432739258, 51.012954711914}, + {12.04136, 50.923348}, + {11.35305, 50.960347}, + {10.862704, 50.718637}, + {11.374087, 53.900986}, + {13.389587, 52.399292}, + {13.410873413086, 52.360153198242}, + {13.277664, 52.453079}, + {10.50911, 45.507088}, + {10.223923, 45.542679}, + {10.211105, 45.548172}, + {9.1715240478516, 45.453872680664}, + {9.1591644287109, 45.457992553711}, + {9.2086029052734, 45.457992553711}, + {9.1728973388672, 45.474472045898}, + {9.292374, 45.351563}, + {9.2044830322266, 45.486831665039}, + {9.1701507568359, 45.453872680664}, + {9.197617, 45.472549}, + {10.379334, 46.468048}, + {10.515701, 46.257523}, + {10.781021118164, 45.127029418945}, + {9.4818878173828, 45.581588745117}, + {8.3187103271484, 45.528030395508}, + {8.6002349853516, 45.745010375977}, + {7.668698, 45.019759}, + {7.6966094970703, 45.063858032227}, + {7.6403045654297, 45.889205932617}, + {31.218338012695, 30.222702026367}, + {31.336441040039, 30.057907104492}, + {31.336562, 30.061031}, + {31.263656616211, 30.062026977539}, + {31.282687, 30.072621}, + {31.2019, 30.060569}, + {31.205292, 30.045547}, + {31.202545, 30.045547}, + {31.289291, 29.989701}, + {31.267776489258, 30.094985961914}, + {31.193618774414, 30.163650512695}, + {31.280457, 29.982479}, + {31.263656616211, 29.96452331543}, + {31.314468383789, 30.077133178711}, + {31.229325, 30.062027}, + {31.313095092773, 30.101852416992}, + {31.350424, 30.073868}, + {31.172543, 29.975755}, + {31.187439, 30.494614}, + {31.473770141602, 30.59211730957}, + {31.287002563477, 30.125198364258}, + {31.806107, 31.422501}, + {31.12793, 30.721664}, + {30.873641967773, 30.597610473633}, + {13.191146850586, 59.553451538086}, + {13.796768188477, 63.310775756836}, + {15.85807800293, 59.391403198242}, + {14.038467407227, 59.675674438477}, + {22.17658996582, 65.785446166992}, + {14.502639770508, 59.318618774414}, + {12.939834594727, 57.722854614258}, + {22.135391235352, 65.584945678711}, + {17.219009399414, 59.258193969727}, + {16.417007446289, 59.591903686523}, + {16.043472290039, 58.581161499023}, + {15.040969848633, 58.537216186523}, + {14.060440063477, 57.124099731445}, + {16.997595, 62.364055}, + {17.287673950195, 62.387924194336}, + {17.136611938477, 60.665817260742}, + {18.016891479492, 59.359817504883}, + {12.304276, 51.678177}, + {12.387365, 51.3618}, + {11.55961, 48.140671}, + {13.670118, 51.045272}, + {10.109481811523, 48.131790161133}, + {11.500508, 48.529977}, + {12.427723, 48.190292}, + {11.547684, 48.13267}, + {11.585167, 48.199933}, + {26.999588012695, 63.717269897461}, + {25.749893188477, 60.98991394043}, + {25.660629272461, 60.388412475586}, + {23.684463500977, 61.460952758789}, + {23.901443481445, 61.506271362305}, + {21.904678344727, 60.465316772461}, + {23.983840942383, 60.44059753418}, + {27.286605834961, 68.280715942383}, + {27.102584838867, 68.107681274414}, + {26.645278930664, 67.158737182617}, + {26.590347290039, 67.463607788086}, + {25.02336, 60.324056}, + {24.870986938477, 60.234603881836}, + {23.753128051758, 61.493911743164}, + {8.3022308349609, 50.16975402832}, + {-0.614908, 38.802369}, + {-0.476532, 38.358593}, + {-0.36598205566406, 39.383926391602}, + {-0.658493, 38.04863}, + {-3.78685, 43.397369}, + {-6.27231, 36.527286}, + {-4.6121978759766, 36.736221313477}, + {-5.843907, 37.328287}, + {-7.378006, 37.177048}, + {-6.0280609130859, 37.388534545898}, + {-5.7273101806641, 38.97331237793}, + {-15.429611206055, 28.004837036133}, + {-16.637344, 28.019638}, + {-15.430598, 28.135471}, + {-5.8756256103516, 37.546463012695}, + {121.56715393066, 31.197738647461}, + {121.42707824707, 31.277389526367}, + {116.94328308105, 38.842849731445}, + {117.1231842041, 39.245223999023}, + {117.16301, 39.078369}, + {117.18910217285, 39.114761352539}, + {117.34840393066, 39.142227172852}, + {117.153397, 39.118195}, + {117.17124938965, 39.112014770508}, + {109.90379333496, 21.224899291992}, + {113.86573791504, 22.98957824707}, + {114.39033508301, 23.13102722168}, + {114.53453063965, 22.745132446289}, + {113.04176330566, 22.530899047852}, + {114.113617, 22.535019}, + {113.86573791504, 22.583084106445}, + {114.05799865723, 22.566604614258}, + {113.91792297363, 22.489700317383}, + {114.07173156738, 22.716293334961}, + {113.90693664551, 22.709426879883}, + {113.28758239746, 22.670974731445}, + {113.21479797363, 23.092575073242}, + {113.19969177246, 23.335647583008}, + {37.35969543457, 55.610733032227}, + {37.83073425293, 55.058670043945}, + {37.324104, 55.749893}, + {36.328353881836, 55.525588989258}, + {73.278946, 55.028526}, + {73.072679, 55.07927}, + {33.392944, 56.261673}, + {30.21375, 59.818688}, + {37.669716, 55.849686}, + {37.944717407227, 51.331558227539}, + {36.068801879883, 51.661148071289}, + {36.140213012695, 53.001480102539}, + {39.204025, 53.015213}, + {-97.411652, 32.649307}, + {-97.810135, 32.750931}, + {-96.865311, 32.987137}, + {-96.552658081055, 32.892379760742}, + {-97.064895629883, 32.771530151367}, + {-97.399978637695, 32.788009643555}, + {-97.199478149414, 32.360916137695}, + {-84.471817016602, 37.994155883789}, + {-84.786159, 38.166102}, + {-81.706008911133, 30.339431762695}, + {-95.308628, 32.273712}, + {-94.86213684082, 32.404861450195}, + {-94.047971, 33.428159}, + {-93.767623901367, 32.533950805664}, + {-83.257827758789, 33.109359741211}, + {-83.811264038086, 31.924209594727}, + {-86.011276245117, 30.684127807617}, + {-85.869553, 30.21254}, + {-88.723526000977, 30.365524291992}, + {-95.38684, 29.623419}, + {-95.558259, 29.758194}, + {-95.363144, 29.814148}, + {-95.50238, 29.651919}, + {-95.577621, 29.65671}, + {-85.037612915039, 10.477523803711}, + {-84.771194458008, 9.9831390380859}, + {-84.366073608398, 10.154800415039}, + {-84.188919067383, 9.9625396728516}, + {-84.265823364258, 9.9639129638672}, + {-84.20539855957, 10.006484985352}, + {-83.95133972168, 9.8581695556641}, + {-83.017501831055, 9.9172210693359}, + {-83.054580688477, 10.009231567383}, + {-84.224624633789, 9.9982452392578}, + {-83.077926635742, 8.6798858642578}, + {-84.147720336914, 9.9309539794922}, + {-84.838485717773, 10.261917114258}, + {-84.582367, 10.335388}, + {-84.022750854492, 9.9762725830078}, + {-84.032073, 9.892901}, + {-84.090042114258, 9.9144744873047}, + {-84.018630981445, 9.9419403076172}, + {-84.065322875977, 9.9419403076172}, + {-84.13948059082, 9.9982452392578}, + {-84.377059936523, 10.094375610352}, + {-84.175358, 10.001507}, + {-84.186172, 10.143539}, + {8.8007354736328, 49.672622680664}, + {30.209427, 59.820328}, + {30.582504272461, 59.74983215332}, + {30.813217163086, 59.796524047852}, + {30.399033, 59.71962}, + {30.362777709961, 59.998397827148}, + {30.373764038086, 59.926986694336}, + {30.347671508789, 59.93522644043}, + {30.211715698242, 59.818496704102}, + {29.88899230957, 59.877548217773}, + {30.253602, 59.98295}, + {30.233345, 59.988441}, + {31.243973, 59.343796}, + {30.380630493164, 60.024490356445}, + {30.401229858398, 60.032730102539}, + {30.232315063477, 59.950332641602}, + {30.247421264648, 59.936599731445}, + {30.390243530273, 59.95719909668}, + {84.951095581055, 56.491012573242}, + {84.981307983398, 56.480026245117}, + {84.981307983398, 56.470413208008}, + {56.183395385742, 57.983779907227}, + {56.139450073242, 57.963180541992}, + {39.691543579102, 47.232284545898}, + {39.617385864258, 47.250137329102}, + {39.709396362305, 47.34489440918}, + {6.816788, 35.965347}, + {7.318446, 35.730387}, + {7.382584, 36.484909}, + {7.6746368408203, 36.751327514648}, + {7.137811, 35.415965}, + {-0.284683, 27.880692}, + {-0.171662, 28.282242}, + {-1.3629913330078, 34.88639831543}, + {-8.132038, 27.684813}, + {-0.442886, 35.558281}, + {-4.2839813232422, 31.439437866211}, + {-6.157841, 31.215593}, + {-9.5972442626953, 29.916458129883}, + {-9.623337, 30.425034}, + {-5.8220672607422, 35.770797729492}, + {-7.57576, 33.54744}, + {-5.2823638916016, 35.627975463867}, + {-7.4164581298828, 33.647689819336}, + {-7.603912, 33.556366}, + {-7.629318, 33.591385}, + {-9.216156, 32.295685}, + {5.3510284423828, 43.281326293945}, + {5.6174468994141, 43.35823059082}, + {2.397095, 48.848648}, + {2.7774810791016, 49.006576538086}, + {3.827976, 43.673099}, + {2.346236, 48.828304}, + {2.4080657958984, 48.869247436523}, + {2.4286651611328, 48.843154907227}, + {2.4011993408203, 48.859634399414}, + {4.8030853271484, 45.732650756836}, + {4.8470306396484, 45.751876831055}, + {4.8140716552734, 45.805435180664}, + {4.816173, 45.783975}, + {4.8319244384766, 45.751876831055}, + {4.8484039306641, 45.798568725586}, + {4.8415374755859, 45.745010375977}, + {4.8278045654297, 45.757369995117}, + {4.9156951904297, 45.812301635742}, + {4.8758697509766, 45.71891784668}, + {-1.6719818115234, 47.204818725586}, + {-1.5126800537109, 47.156753540039}, + {21.709671020508, 61.257705688477}, + {-1.5511322021484, 47.24739074707}, + {21.532516479492, 61.274185180664}, + {25.734786987305, 62.239608764648}, + {21.459732055664, 61.234359741211}, + {27.275619506836, 61.68342590332}, + {23.45100402832, 62.764205932617}, + {22.267227172852, 60.469436645508}, + {21.726150512695, 60.669937133789}, + {22.265853881836, 60.47492980957}, + {24.08287, 61.254044}, + {26.970748901367, 60.538101196289}, + {24.744644165039, 60.284042358398}, + {28.587112426758, 61.124496459961}, + {25.429916381836, 65.12077331543}, + {24.887466430664, 60.21125793457}, + {24.88883972168, 60.246963500977}, + {28.018569946289, 62.766952514648}, + {24.853134155273, 60.625991821289}, + {27.682113647461, 63.004531860352}, + {23.795700073242, 61.360702514648}, + {25.678482055664, 64.829635620117}, + {26.157761, 44.478149}, + {26.098709106445, 44.443130493164}, + {28.391556, 44.15062}, + {26.155014038086, 44.219284057617}, + {25.594817, 45.292458}, + {26.534042358398, 46.493453979492}, + {25.782852172852, 44.944381713867}, + {27.077042, 45.767258}, + {24.922829, 44.833832}, + {24.906418, 44.844131}, + {24.673233032227, 45.122909545898}, + {21.301803588867, 46.199569702148}, + {21.318283081055, 46.251754760742}, + {24.26399230957, 46.118545532227}, + {21.933517456055, 47.057876586914}, + {25.642433, 45.64888}, + {24.150009155273, 45.777969360352}, + {26.669998168945, 46.519546508789}, + {25.300827026367, 43.994064331055}, + {25.524673461914, 44.870223999023}, + {76.939315795898, 30.818710327148}, + {76.91047668457, 28.427810668945}, + {76.796493530273, 28.214950561523}, + {77.134323120117, 31.223831176758}, + {77.105484, 32.030411}, + {76.571273803711, 31.60285949707}, + {77.384636, 28.581391}, + {77.310104370117, 28.63655090332}, + {77.20573425293, 28.600845336914}, + {77.211227416992, 28.581619262695}, + {77.248306274414, 28.632431030273}, + {77.323837280273, 28.54866027832}, + {77.480118, 28.432205}, + {77.34992980957, 28.650283813477}, + {77.016220092773, 28.456649780273}, + {72.506332397461, 23.010177612305}, + {72.532424926758, 23.028030395508}, + {72.558517456055, 23.029403686523}, + {72.555770874023, 23.019790649414}, + {72.576370239258, 23.100814819336}, + {72.490311, 23.02803}, + {72.586136, 23.074722}, + {72.553711, 23.025284}, + {72.542037963867, 23.028030395508}, + {72.587356567383, 23.14338684082}, + {-99.15103, 19.361238}, + {-99.082260131836, 19.399795532227}, + {-99.085006713867, 19.406661987305}, + {-99.097366333008, 19.423141479492}, + {-99.814222, 25.645524}, + {-100.156174, 25.670242}, + {-100.127792, 25.637283}, + {-101.67640686035, 21.127395629883}, + {-101.633377, 21.115036}, + {-101.697998, 21.191334}, + {-100.419159, 20.641937}, + {-100.00099182129, 20.391311645508}, + {-101.0131072998, 22.146377563477}, + {-101.05155944824, 22.18620300293}, + {-116.62879943848, 31.862411499023}, + {-116.596527, 31.812286}, + {-99.144058227539, 19.651107788086}, + {-99.305493, 19.351666}, + {-99.336318969727, 19.534378051758}, + {65.628204, 57.11483}, + {65.525894, 57.13028}, + {65.551834, 57.132492}, + {67.722244, 57.768631}, + {65.551637, 57.148586}, + {65.461349487305, 57.187271118164}, + {37.565689086914, 55.719223022461}, + {58.207626342773, 54.755172729492}, + {61.134371, 55.181058}, + {82.94059753418, 55.11360168457}, + {37.657699584961, 55.761795043945}, + {50.118942260742, 53.196487426758}, + {50.208206176758, 53.217086791992}, + {50.230178833008, 53.314590454102}, + {49.281119, 53.537394}, + {44.557113647461, 48.770370483398}, + {44.491195678711, 48.740158081055}, + {44.520034790039, 48.718185424805}, + {43.572463989258, 48.672866821289}, + {44.536103, 48.748748}, + {44.161605834961, 49.018936157227}, + {-82.10563659668, 41.384811401367}, + {-81.530227661133, 41.585311889648}, + {-81.428604125977, 40.810775756836}, + {-81.264308, 40.946357}, + {-84.315221, 39.307305}, + {-83.66577, 39.240717}, + {-84.301891, 39.539849}, + {-84.355087, 39.496078}, + {-84.341679, 39.057993}, + {-84.603882, 39.16832}, + {-84.481430053711, 39.188919067383}, + {-84.460956, 39.32758}, + {-84.238712, 39.862905}, + {-84.176137, 39.669571}, + {-83.653907, 38.942414}, + {-84.227437, 39.61313}, + {-82.09877, 39.776688}, + {-83.629829, 39.479895}, + {-82.358871, 40.430923}, + {-82.961776, 39.553512}, + {-83.012197, 39.965488}, + {-82.667828, 40.043449}, + {-83.075180053711, 39.916763305664}, + {-82.947464, 40.057297}, + {23.790207, 52.107468}, + {24.899826049805, 52.869644165039}, + {26.145693, 53.18354}, + {30.468521118164, 52.615585327148}, + {31.01921081543, 52.450790405273}, + {30.981543, 52.471586}, + {29.342422485352, 52.145919799805}, + {30.368270874023, 53.944931030273}, + {30.204849243164, 55.208358764648}, + {30.876388549805, 53.568649291992}, + {28.501968383789, 54.766159057617}, + {30.283127, 54.358978}, + {27.676622, 54.94812}, + {27.569504, 53.840561}, + {30.820083618164, 52.453536987305}, + {27.601089477539, 53.884506225586}, + {27.444534301758, 53.825454711914}, + {30.40397644043, 53.888626098633}, + {30.25016784668, 53.92707824707}, + {27.299388, 53.839547}, + {27.62580871582, 53.962783813477}, + {114.16374206543, 22.452621459961}, + {114.15138244629, 22.455368041992}, + {114.27223205566, 22.382583618164}, + {113.55262756348, 22.153244018555}, + {114.16648864746, 22.33039855957}, + {113.531749, 22.181233}, + {114.17060852051, 22.302932739258}, + {113.56498718262, 22.117538452148}, + {113.54026794434, 22.191696166992}, + {113.57048034668, 22.153244018555}, + {104.91600036621, 11.587142944336}, + {103.52485656738, 10.607986450195}, + {104.908447, 11.590576}, + {104.92012, 11.571448}, + {103.19664001465, 13.106002807617}, + {104.92698669434, 11.562423706055}, + {104.90913391113, 11.51985168457}, + {104.93797302246, 11.486892700195}, + {104.91874694824, 11.548690795898}, + {104.93659973145, 11.532211303711}, + {1.419867, 43.524044}, + {2.484115, 43.905144}, + {4.029709, 50.290464}, + {2.189413, 48.95641}, + {-1.23327, 44.144779}, + {-0.162776, 43.406212}, + {0.267697, 47.908013}, + {-0.167516, 47.135278}, + {-9.123492, 38.77049}, + {-8.875992, 38.637955}, + {-9.432907, 38.705063}, + {-9.2498016357422, 38.754959106445}, + {-9.336662, 38.798904}, + {-9.193497, 39.06807}, + {-8.972946, 38.984299}, + {-8.6071014404297, 41.177444458008}, + {-7.8655242919922, 40.334243774414}, + {-8.6112213134766, 41.542739868164}, + {-8.570251, 41.116791}, + {-8.3324432373047, 41.58805847168}, + {-8.6194610595703, 41.132125854492}, + {-8.52562, 41.406784}, + {-8.6688995361328, 41.156845092773}, + {-8.609734, 41.146774}, + {-8.615439, 41.151352}, + {-8.626328, 41.230628}, + {-8.4024810791016, 40.207901000977}, + {-8.4519195556641, 40.003280639648}, + {27.671127319336, 62.894668579102}, + {28.287734985352, 63.058090209961}, + {25.446395874023, 65.07682800293}, + {22.234268188477, 60.480422973633}, + {22.300873, 60.432358}, + {22.356491, 60.371475}, + {23.100815, 60.395279}, + {23.107681274414, 60.179672241211}, + {21.78108215332, 61.484298706055}, + {23.12577, 60.394548}, + {23.777847290039, 61.48567199707}, + {25.006942749023, 61.073684692383}, + {23.621292114258, 61.610641479492}, + {24.557593, 60.898171}, + {24.51530456543, 61.374435424805}, + {25.753841, 60.992661}, + {25.859756469727, 60.956954956055}, + {27.164251, 60.564086}, + {26.723556518555, 60.730361938477}, + {27.226864, 60.584451}, + {100.687637, 13.571548}, + {100.75218200684, 13.691024780273}, + {100.78102111816, 13.732223510742}, + {100.8277130127, 13.69514465332}, + {100.89637756348, 13.807754516602}, + {100.540525, 14.588261}, + {100.72196960449, 13.813247680664}, + {100.64196, 14.808551}, + {100.94306945801, 12.923355102539}, + {100.89088439941, 12.931594848633}, + {100.874838, 12.922052}, + {100.88676452637, 12.921981811523}, + {100.888138, 12.900696}, + {101.77565, 14.014026}, + {100.06004333496, 15.669937133789}, + {101.81785583496, 14.07829284668}, + {98.986129760742, 18.805160522461}, + {100.33058166504, 13.697891235352}, + {99.804611206055, 12.453689575195}, + {100.07103, 13.828256}, + {99.957046508789, 12.571792602539}, + {100.86753845215, 13.803634643555}, + {100.75080871582, 13.692398071289}, + {100.721065, 13.668606}, + {-99.107349, 19.360559}, + {-99.230575561523, 19.531631469727}, + {-99.174270629883, 19.678573608398}, + {-99.085006713867, 19.368209838867}, + {-96.713768, 17.100279}, + {-96.67543, 17.069595}, + {-96.743545532227, 17.081680297852}, + {-98.93669128418, 19.050979614258}, + {-107.07962, 24.13559}, + {-107.41539001465, 24.761123657227}, + {-99.168391, 19.513983}, + {-92.917556762695, 17.990798950195}, + {-92.91618347168, 18.052597045898}, + {-92.936782836914, 17.975692749023}, + {-87.12583, 20.66555}, + {-87.107167, 20.655106}, + {-92.91618347168, 18.014144897461}, + {-99.175644, 18.893051}, + {-99.198989868164, 18.910903930664}, + {-98.91056, 18.917248}, + {-99.15641784668, 19.438247680664}, + {58.400574, 23.554001}, + {58.414993286133, 23.596572875977}, + {58.295517, 23.583527}, + {58.420486, 23.586411}, + {58.204879760742, 23.652877807617}, + {58.461685180664, 23.591079711914}, + {58.178787231445, 23.577346801758}, + {58.213119506836, 23.617172241211}, + {58.098221, 23.635483}, + {58.545455932617, 23.585586547852}, + {58.545456, 23.58902}, + {58.548414, 23.600481}, + {58.63883972168, 22.640762329102}, + {56.758804321289, 21.337509155273}, + {59.245834350586, 22.804183959961}, + {54.709854125977, 24.802322387695}, + {55.741195678711, 24.254379272461}, + {54.369277954102, 24.490585327148}, + {53.881759643555, 23.13102722168}, + {54.075393676758, 24.079971313477}, + {55.638198852539, 24.211807250977}, + {55.724716186523, 24.243392944336}, + {55.529708862305, 23.779220581055}, + {30.159530639648, 59.858322143555}, + {30.33308, 59.814205}, + {30.368270874023, 59.854202270508}, + {30.335312, 59.870682}, + {30.291366577148, 59.972305297852}, + {30.230941772461, 59.94758605957}, + {37.586288452148, 55.897750854492}, + {30.291366577148, 59.937973022461}, + {63.579940795898, 61.359329223633}, + {37.841720581055, 55.754928588867}, + {39.216384887695, 51.864395141602}, + {37.819747924805, 55.695877075195}, + {37.65495300293, 55.764541625977}, + {37.466812133789, 55.776901245117}, + {37.624740600586, 55.680770874023}, + {37.660446166992, 55.77278137207}, + {39.475936889648, 47.276229858398}, + {30.305099487305, 59.929733276367}, + {37.332229614258, 55.800247192383}, + {30.269393920898, 59.946212768555}, + {21.056766, 52.278759}, + {22.044755, 53.153915}, + {20.959854, 52.184078}, + {18.674697875977, 50.302963256836}, + {21.488571166992, 49.667129516602}, + {23.596115, 38.465927}, + {16.99688, 51.089859}, + {23.673477172852, 37.973556518555}, + {23.707809448242, 38.003768920898}, + {23.662490844727, 38.014755249023}, + {4.474724, 51.934115}, + {4.495269, 51.903882}, + {5.308746, 51.666326}, + {4.480362, 51.948624}, + {4.900372, 52.071987}, + {4.5009613037109, 52.176132202148}, + {5.21542, 52.101214}, + {4.891618, 52.333203}, + {5.585433, 52.106231}, + {4.773529, 52.483388}, + {4.971072, 52.338323}, + {4.5050811767578, 51.882247924805}, + {6.49713, 53.188078}, + {6.586792, 52.506772}, + {4.8250579833984, 52.346420288086}, + {5.5941009521484, 51.648788452148}, + {6.5032196044922, 52.651290893555}, + {4.9706268310547, 52.30110168457}, + {139.32243347168, 35.590896606445}, + {139.317398, 35.550613}, + {139.392516, 35.559337}, + {136.890335, 35.175476}, + {136.91230773926, 35.173416137695}, + {137.01118469238, 35.125350952148}, + {137.001572, 35.259038}, + {137.059937, 34.968281}, + {137.11280822754, 35.080032348633}, + {136.68983459473, 35.395889282227}, + {137.05101, 35.153366}, + {137.079849, 35.38559}, + {136.991272, 35.167923}, + {139.679489, 35.853653}, + {139.626617, 35.906067}, + {137.00843811035, 34.896011352539}, + {137.645645, 34.676971}, + {139.695969, 35.839188}, + {139.828491, 35.840149}, + {139.4734954834, 35.784530639648}, + {139.793472, 35.817247}, + {139.59297180176, 35.810623168945}, + {139.714279, 35.860748}, + {139.690018, 36.066513}, + {-64.251022, -31.367111}, + {-58.414993286133, -34.674911499023}, + {-60.62246, -32.968696}, + {-58.554039, -34.481277}, + {-58.465306, -34.578781}, + {-43.35751, -22.965784}, + {-43.242973, -22.917509}, + {-43.233369, -22.913075}, + {-43.28656, -22.892356}, + {-42.839066, -22.753743}, + {-43.3571, -22.770145}, + {-43.291031, -22.792055}, + {-43.943252563477, -19.975204467773}, + {-43.903427124023, -19.903793334961}, + {-44.046249389648, -19.881820678711}, + {-38.443222045898, -12.968673706055}, + {-35.983657836914, -8.2665252685547}, + {-34.982185, -8.034668}, + {-38.398371, -12.931039}, + {-34.861346, -7.121071}, + {-35.765544, -9.559259}, + {-35.752489, -9.662966}, + {23.827285766602, 38.038101196289}, + {23.673248, 37.952042}, + {28.213577270508, 36.420364379883}, + {25.190963745117, 37.190780639648}, + {27.842788696289, 36.620864868164}, + {23.781195, 38.006954}, + {22.985753, 40.538079}, + {23.700455, 37.958547}, + {23.785241, 38.002118}, + {22.273064, 38.171654}, + {23.738021850586, 38.009262084961}, + {23.770980834961, 37.999649047852}, + {23.722915649414, 38.02848815918}, + {25.09071, 39.901661}, + {25.877609, 40.846939}, + {23.741112, 37.999649}, + {23.852005004883, 37.95295715332}, + {23.721542358398, 38.005142211914}, + {22.366104125977, 40.89729309082}, + {23.729782104492, 38.021621704102}, + {30.519332885742, 59.895401000977}, + {30.42594909668, 59.814376831055}, + {37.823181, 55.812263}, + {37.899398803711, 56.05842590332}, + {37.693405151367, 55.763168334961}, + {37.716751098633, 55.753555297852}, + {37.549014, 54.83581}, + {39.097939, 54.926148}, + {37.592526, 55.57291}, + {36.948395, 55.351181}, + {124.25743103027, 8.3228302001953}, + {120.9546661377, 15.219497680664}, + {121.02882385254, 14.422988891602}, + {121.17713928223, 14.580917358398}, + {120.996323, 14.469681}, + {121.02195739746, 14.461441040039}, + {121.0521697998, 14.454574584961}, + {120.9986114502, 14.697647094727}, + {121.12770080566, 14.733352661133}, + {120.473444, 15.784494}, + {120.3490447998, 15.904769897461}, + {120.62644958496, 16.41975402832}, + {120.525157, 15.177807}, + {120.60733, 14.970588}, + {121.747251, 17.654343}, + {120.78712463379, 14.942092895508}, + {121.3501739502, 14.043960571289}, + {121.2540435791, 14.170303344727}, + {121.085815, 14.323769}, + {121.157521, 14.0985}, + {121.02058410645, 14.089279174805}, + {121.132507, 13.925034}, + {-69.490977, -24.39082}, + {-68.779220581055, -22.40592956543}, + {-70.298493, -27.394542}, + {-71.539535522461, -32.961044311523}, + {-71.495590209961, -33.035202026367}, + {-71.528549194336, -32.984390258789}, + {-71.355514526367, -33.04069519043}, + {-71.613693237305, -33.610610961914}, + {-84.221191, 39.599534}, + {-84.512132, 39.105869}, + {-84.189606, 39.177933}, + {-80.630722045898, 40.540237426758}, + {-81.385345, 41.255722}, + {-81.666527, 41.003723}, + {-81.230850219727, 33.959426879883}, + {-81.049575805664, 33.627090454102}, + {-84.371567, 33.821411}, + {-98.086624145508, 27.875747680664}, + {-98.612968, 27.895463}, + {-97.872391, 30.256348}, + {-96.991119, 33.01857}, + {-97.045311, 32.485543}, + {-96.816198, 33.077449}, + {-81.369552612305, 28.573379516602}, + {-81.339340209961, 28.604965209961}, + {-105.226708, 39.751968}, + {-93.076858520508, 41.684188842773}, + {-93.337783813477, 41.65397644043}, + {-104.82398986816, 38.820877075195}, + {-3.269119, 51.553345}, + {-83.477554, 42.655792}, + {-2.7802276611328, 51.115951538086}, + {-3.2100677490234, 51.47575378418}, + {-2.659378, 51.363144}, + {-2.294388, 51.217575}, + {1.7049407958984, 52.575759887695}, + {-2.940445, 53.033066}, + {-0.10643005371094, 51.530685424805}, + {-0.18882751464844, 51.474380493164}, + {-0.090697, 51.517322}, + {-0.070623, 51.521592}, + {-0.135699, 51.51929}, + {-0.12702941894531, 51.482620239258}, + {-0.451182, 51.456717}, + {-0.237122, 51.569595}, + {-0.139389, 51.544075}, + {-0.278091, 51.471176}, + {-0.43327331542969, 51.493606567383}, + {-0.19569396972656, 51.584243774414}, + {-0.026093, 51.481247}, + {-0.522811, 51.299973}, + {8.6688995361328, 52.13493347168}, + {14.238967895508, 50.996475219727}, + {26.689224243164, 58.360061645508}, + {26.70295715332, 59.35432434082}, + {24.641647338867, 59.387283325195}, + {24.627914428711, 59.436721801758}, + {40.746231079102, 48.189468383789}, + {39.614956, 47.254046}, + {38.910140991211, 47.24739074707}, + {39.733947, 47.195379}, + {30.343551635742, 59.94758605957}, + {30.355911254883, 59.84733581543}, + {30.359516, 60.057278}, + {30.348892, 59.88121}, + {30.483627319336, 59.844589233398}, + {30.366158, 59.938079}, + {30.347672, 59.971872}, + {130.348761, 33.593151}, + {131.64024353027, 32.430953979492}, + {129.64347839355, 33.231582641602}, + {130.291672, 33.276901}, + {129.72496, 33.171158}, + {139.1658782959, 36.171798706055}, + {139.46388244629, 35.836715698242}, + {139.43778991699, 35.877914428711}, + {139.056015, 37.882919}, + {139.01481628418, 36.454696655273}, + {139.48722839355, 35.964431762695}, + {138.81019592285, 37.708511352539}, + {139.68772888184, 35.728225708008}, + {138.245087, 37.146149}, + {139.729909, 35.759811}, + {139.706097, 35.759811}, + {139.57237243652, 35.748825073242}, + {139.602036, 35.744705}, + {139.6753692627, 35.72135925293}, + {135.510283, 34.681778}, + {135.436535, 34.666672}, + {135.485458, 34.681091}, + {135.49781799316, 34.707870483398}, + {135.514984, 34.646759}, + {135.51292419434, 34.691390991211}, + {135.5802154541, 34.57878112793}, + {18.409375, 45.987189}, + {20.166067, 46.247243}, + {18.932876586914, 47.609939575195}, + {18.931503295898, 47.681350708008}, + {17.984781, 45.855266}, + {20.793685913086, 48.10432434082}, + {20.382675, 47.907411}, + {77.988510131836, 27.176742553711}, + {79.040451049805, 28.809585571289}, + {77.976150512695, 27.12043762207}, + {77.575149536133, 28.129806518555}, + {77.797622680664, 28.425064086914}, + {78.517227172852, 29.742050170898}, + {77.477645874023, 28.769760131836}, + {78.010482788086, 29.161148071289}, + {78.167037963867, 28.772506713867}, + {77.981643676758, 30.332565307617}, + {77.849807739258, 30.41633605957}, + {77.722091674805, 30.428695678711}, + {78.816604614258, 29.28337097168}, + {78.767853, 28.831558}, + {77.573776, 28.135643}, + {70.792465209961, 22.160110473633}, + {72.533798217773, 23.207931518555}, + {72.531051635742, 22.992324829102}, + {69.736404418945, 23.228530883789}, + {77.06428527832, 28.433303833008}, + {77.230453491211, 28.640670776367}, + {72.827225, 21.175461}, + {77.094497680664, 28.681869506836}, + {5.2191925048828, 52.243423461914}, + {5.1670074462891, 52.229690551758}, + {5.135422, 52.18602}, + {4.884453, 52.36187}, + {4.8841094970703, 52.402725219727}, + {4.743541, 52.281613}, + {4.918816, 52.311932}, + {5.0543975830078, 52.243423461914}, + {4.849877, 52.36889}, + {4.922529, 52.382643}, + {4.5929718017578, 52.395858764648}, + {4.52774, 52.377319}, + {4.6451568603516, 52.386245727539}, + {4.794365, 52.88801}, + {4.670875, 52.548545}, + {4.8140716552734, 52.906723022461}, + {4.600379, 52.026527}, + {4.482808, 52.076875}, + {4.530716, 52.008591}, + {4.383447, 52.039292}, + {4.4927215576172, 52.158279418945}, + {2.9450225830078, 42.306289672852}, + {3.0397796630859, 42.17170715332}, + {-2.8900909423828, 39.50065612793}, + {-7.8614044189453, 42.33512878418}, + {-5.8934783935547, 43.54362487793}, + {-3.6783599853516, 40.42350769043}, + {-4.1370391845703, 42.997055053711}, + {-5.9374237060547, 37.340469360352}, + {-6.0060882568359, 37.410507202148}, + {-5.0928497314453, 37.231979370117}, + {-4.530258, 36.594772}, + {-6.2065887451172, 36.460189819336}, + {-5.566635, 42.60704}, + {-4.764633, 37.896652}, + {-1.6349029541016, 42.780075073242}, + {2.1704864501953, 41.435623168945}, + {-8.2239532470703, 42.692184448242}, + {2.1979522705078, 41.421890258789}, + {-3.7305450439453, 40.277938842773}, + {-0.38520812988281, 39.475936889648}, + {-0.779686, 37.979508}, + {-0.686646, 38.281862}, + {-70.719359, -33.511224}, + {-71.543655395508, -33.028335571289}, + {-70.309367, -18.484197}, + {-70.594711, -33.414132}, + {-70.646744, -33.445816}, + {-70.605697631836, -33.631210327148}, + {-70.790749, -33.396378}, + {-70.513687133789, -33.366165161133}, + {-70.56037902832, -33.407363891602}, + {-70.70911, -33.416679}, + {-74.16389465332, 4.5929718017578}, + {-74.059005, 4.749405}, + {-74.025192260742, 4.7248077392578}, + {-73.629684448242, 4.1480255126953}, + {-72.465133666992, 7.9135894775391}, + {-72.502212524414, 7.8888702392578}, + {-72.507705688477, 7.8957366943359}, + {-76.618885, 2.445578}, + {-76.602535, 2.451726}, + {-75.693740844727, 4.8126983642578}, + {7.1253204345703, 13.494644165039}, + {2.134781, 13.523026}, + {2.1443939208984, 13.526229858398}, + {1.2105560302734, 6.2010955810547}, + {1.2380218505859, 6.1736297607422}, + {2.458878, 6.366959}, + {0.011672973632812, 11.110610961914}, + {57.570474, -20.075729}, + {2.439712, 6.373499}, + {57.759933, -20.171585}, + {57.550736, -20.458374}, + {57.494571, -20.291273}, + {57.521896, -20.320816}, + {57.560577, -20.03334}, + {57.512741, -20.284489}, + {57.539062, -20.511017}, + {-10.687637329102, 6.2944793701172}, + {-10.708237, 6.26152}, + {-12.926101, 9.121399}, + {-13.276749, 8.472977}, + {-0.26298522949219, 5.6284332275391}, + {-1.2641143798828, 5.1230621337891}, + {10.202481, 43.955832}, + {13.357315063477, 38.125991821289}, + {13.307876586914, 38.164443969727}, + {13.303756713867, 38.167190551758}, + {15.046463012695, 37.575302124023}, + {15.295028686523, 37.054824829102}, + {15.098648071289, 37.562942504883}, + {16.865158, 41.116104}, + {16.02424621582, 41.261215209961}, + {16.97319, 41.089783}, + {14.778671264648, 40.695419311523}, + {14.753952, 40.67894}, + {15.26001, 40.205841}, + {15.79628, 40.650787}, + {14.58386, 40.81568}, + {16.603088, 40.02182}, + {16.636271, 40.624845}, + {17.533121, 40.619895}, + {16.417007, 41.279068}, + {16.921692, 40.650101}, + {106.671511, -6.12663}, + {106.670802, -6.125055}, + {106.107101, -6.329269}, + {106.20277404785, -6.1269378662109}, + {107.165476, -6.28208}, + {107.121127, -6.334764}, + {107.15858459473, -6.3823699951172}, + {107.14347839355, -6.3095855712891}, + {106.927038, -6.920118}, + {106.932678, -6.950912}, + {106.77955627441, -6.3864898681641}, + {106.803581, -6.397884}, + {106.71363830566, -6.2834930419922}, + {106.8138885498, -6.3933563232422}, + {106.72737121582, -6.3425445556641}, + {106.76719665527, -6.5251922607422}, + {106.81251525879, -6.4702606201172}, + {106.77131652832, -6.4894866943359}, + {106.83036804199, -6.5155792236328}, + {106.99474, -6.409104}, + {106.84135437012, -6.5650177001953}, + {106.877934, -6.276628}, + {-76.202629, 40.136111}, + {-76.049094, 40.15032}, + {-75.501766, 40.618632}, + {-76.845149, 39.871141}, + {-76.434497, 39.995912}, + {-75.153514, 41.385936}, + {-77.856674194336, 40.812149047852}, + {-77.882766723633, 40.803909301758}, + {-74.870988, 40.248434}, + {-75.154244, 40.14847}, + {-75.291905, 39.97431}, + {-74.844598, 40.053411}, + {-75.660978, 39.769821}, + {-75.188369750977, 38.705520629883}, + {-75.680534, 39.976461}, + {-75.906913, 39.985766}, + {-75.166397094727, 39.955215454102}, + {-75.143472, 39.938449}, + {-74.999021, 39.889594}, + {-75.124649, 39.739609}, + {-75.151309, 40.008508}, + {10.39924621582, 48.417434692383}, + {11.57341003418, 48.094711303711}, + {9.441987, 53.810361}, + {10.166708, 53.605369}, + {8.843187, 52.768439}, + {8.266273, 52.705516}, + {10.090828, 54.299011}, + {9.8114776611328, 52.325820922852}, + {9.688143, 52.416458}, + {12.406784, 51.313614}, + {12.588276, 51.86794}, + {11.982962, 51.441902}, + {13.80412, 51.028237}, + {14.306301, 51.275558}, + {130.62950134277, 30.285873413086}, + {139.70146179199, 35.687026977539}, + {139.77149963379, 35.69938659668}, + {139.48722839355, 35.700759887695}, + {139.8690032959, 35.725479125977}, + {140.39772033691, 35.871047973633}, + {139.7989654541, 35.710372924805}, + {139.57374572754, 35.637588500977}, + {139.7289276123, 35.660934448242}, + {139.70283508301, 35.577163696289}, + {139.68635559082, 35.574417114258}, + {139.65888977051, 35.669174194336}, + {139.74128723145, 35.540084838867}, + {139.12055969238, 35.541458129883}, + {139.10545349121, 35.233840942383}, + {139.72480773926, 35.614242553711}, + {139.66850280762, 35.607376098633}, + {139.73442077637, 35.551071166992}, + {139.71382141113, 35.556564331055}, + {139.90058898926, 35.446701049805}, + {139.52156066895, 35.818862915039}, + {139.79209899902, 35.713119506836}, + {139.77561950684, 35.714492797852}, + {140.80696105957, 35.736465454102}, + {139.90608215332, 36.598892211914}, + {-85.996517, 39.965753}, + {-86.450729370117, 38.84147644043}, + {-86.395797729492, 39.859085083008}, + {-86.126964, 40.329172}, + {-85.367202758789, 40.144729614258}, + {-85.562188, 42.929581}, + {-85.137682, 41.077053}, + {-84.397657, 42.563397}, + {-83.974685668945, 43.437881469727}, + {-86.352331, 41.825728}, + {-85.798299, 42.225744}, + {-84.389813, 42.250738}, + {-86.250228881836, 41.642990112305}, + {-86.226312, 41.714114}, + {-84.870071411133, 45.584335327148}, + {-86.335081, 41.175282}, + {-85.865104, 41.65643}, + {-84.754097, 43.621239}, + {-81.436123, 41.055142}, + {-81.64546, 41.13685}, + {-80.603425, 41.905416}, + {11.530838012695, 55.50910949707}, + {12.089767456055, 55.25505065918}, + {12.586898803711, 55.614852905273}, + {12.148132, 55.70343}, + {12.2015, 56.053667}, + {12.564011, 55.662689}, + {10.15313, 56.152288}, + {10.00213, 56.077354}, + {10.168533325195, 56.69563293457}, + {9.056167, 56.501999}, + {10.14518737793, 55.05729675293}, + {10.607986, 55.019531}, + {9.7743988037109, 56.205368041992}, + {10.301417, 55.916294}, + {8.864865, 55.273945}, + {9.9968719482422, 57.57453918457}, + {-1.239395, 53.490715}, + {-5.9717559814453, 54.572525024414}, + {-3.455234, 56.066418}, + {-3.7950897216797, 56.151809692383}, + {-0.3685, 53.730698}, + {-3.031646, 56.196072}, + {-4.473861, 55.929256}, + {-3.7099456787109, 51.521072387695}, + {-2.827327, 53.545812}, + {-2.569079, 53.425354}, + {-2.3984527587891, 53.478012084961}, + {-2.1883392333984, 52.607345581055}, + {-3.9585113525391, 55.846939086914}, + {-1.902779, 52.476933}, + {-1.949997, 52.540054}, + {-2.798802, 53.4205}, + {-4.399307, 55.90593}, + {-2.2405242919922, 53.482131958008}, + {-2.237503, 53.155563}, + {-2.2061920166016, 52.206344604492}, + {-2.365039, 53.756238}, + {-0.134556, 51.525875}, + {30.52619934082, 50.444412231445}, + {30.394363, 50.323906}, + {30.405349731445, 50.484237670898}, + {30.445175170898, 50.454025268555}, + {31.281509399414, 51.505966186523}, + {30.74592590332, 46.423416137695}, + {30.75553894043, 46.45637512207}, + {30.612716674805, 46.496200561523}, + {31.968154907227, 46.968612670898}, + {32.514724731445, 46.075973510742}, + {35.000381, 48.427963}, + {34.987198, 48.510818}, + {35.055313110352, 48.486099243164}, + {35.069046020508, 48.435287475586}, + {33.411483764648, 49.065628051758}, + {36.357192993164, 49.989852905273}, + {30.568771362305, 50.449905395508}, + {30.578384399414, 50.39909362793}, + {30.640182495117, 50.425186157227}, + {30.606308, 50.534592}, + {30.523452758789, 50.488357543945}, + {30.467834, 50.5056}, + {30.440597, 50.509415}, + {-100.32371520996, 25.791091918945}, + {-100.35118103027, 25.662002563477}, + {-97.104721069336, 18.850479125977}, + {-104.30351257324, 26.762008666992}, + {-98.88313293457, 19.513778686523}, + {-99.207229614258, 19.50553894043}, + {-86.825637817383, 21.145248413086}, + {-103.176727, 20.138626}, + {-88.152236938477, 21.142501831055}, + {-102.26326, 21.89003}, + {-99.198647, 19.432068}, + {-99.182510375977, 19.447860717773}, + {-98.788375854492, 19.302291870117}, + {-99.199676, 19.697113}, + {-99.295120239258, 19.353103637695}, + {-99.251174926758, 19.379196166992}, + {-99.289627075195, 19.625015258789}, + {-99.216156, 19.344864}, + {-99.219589233398, 19.45198059082}, + {-99.160537719727, 19.321517944336}, + {100.62858581543, -0.21217346191406}, + {100.355301, -0.958557}, + {100.35255432129, -0.89469909667969}, + {100.60249328613, -0.39894104003906}, + {100.34568786621, -0.76423645019531}, + {100.31806, -0.794637}, + {100.36079406738, -0.93727111816406}, + {101.97715759277, -0.52391052246094}, + {101.45393371582, 0.43876647949219}, + {101.43196105957, 0.56236267089844}, + {101.3907623291, 0.46348571777344}, + {101.39625549316, 0.47035217285156}, + {101.42234802246, 0.45387268066406}, + {101.42234802246, 0.53489685058594}, + {103.9217376709, 1.0938262939453}, + {101.160965, 1.33461}, + {104.003084, 1.154216}, + {104.10575866699, 1.1267852783203}, + {104.03846740723, 1.1267852783203}, + {104.447536, 0.918948}, + {104.510173, 0.918066}, + {112.72315979004, -7.2722625732422}, + {112.72315979004, -7.2722625732422}, + {121.30897521973, 24.98908996582}, + {121.22108459473, 24.957504272461}, + {121.22383117676, 24.971237182617}, + {120.916289, 24.772146}, + {120.97114562988, 24.803695678711}, + {120.97801208496, 24.802322387695}, + {121.24443054199, 24.958877563477}, + {120.911407, 24.76593}, + {121.24992370605, 24.925918579102}, + {121.43669128418, 25.004196166992}, + {121.05628967285, 24.781723022461}, + {121.46553039551, 25.028915405273}, + {121.3680267334, 24.93278503418}, + {121.460037, 25.044708}, + {121.4916229248, 25.068740844727}, + {121.50398254395, 25.004196166992}, + {121.45729064941, 25.06462097168}, + {121.37077331543, 24.947891235352}, + {121.399612, 25.138092}, + {121.53831481934, 24.957504272461}, + {121.758041, 24.765587}, + {121.73881530762, 25.133285522461}, + {121.74156188965, 24.792709350586}, + {149.118379, -36.237179}, + {150.836957, -32.045048}, + {145.95680236816, -30.068893432617}, + {144.985698, -37.796647}, + {144.95704650879, -37.814254760742}, + {145.856992, -38.148328}, + {145.023494, -37.6611}, + {144.791937, -37.797177}, + {144.938001, -37.812303}, + {145.4857635498, -38.152084350586}, + {145.26741027832, -37.803268432617}, + {146.215991, -38.802162}, + {147.31086730957, -42.847366333008}, + {145.392756, -37.882206}, + {144.359567, -38.097325}, + {153.027868, -27.479212}, + {130.960269, -12.447912}, + {147.12135314941, -41.597671508789}, + {153.026768, -27.483853}, + {-95.27317, 32.402156}, + {-96.628064, 32.79782}, + {-97.261048, 32.704178}, + {-97.322017, 32.691331}, + {-96.937694, 32.910636}, + {-96.834267, 32.810364}, + {-96.813583374023, 32.90885925293}, + {-96.736309, 32.806678}, + {-97.099697, 32.874288}, + {-96.749725, 32.910919}, + {-96.805801, 32.875748}, + {-97.007217407227, 33.022842407227}, + {-97.891779, 32.834648}, + {-96.673262, 32.993881}, + {-96.967699, 33.215256}, + {-96.845644, 33.009169}, + {-96.904220581055, 33.059921264648}, + {-96.594579, 33.119717}, + {-96.637942, 33.151259}, + {-97.197033, 32.901256}, + {-97.195358276367, 32.860794067383}, + {72.87712097168, 19.108657836914}, + {72.912826538086, 19.118270874023}, + {72.852402, 19.161758}, + {72.849655151367, 19.189682006836}, + {72.856521606445, 19.140243530273}, + {72.844161987305, 19.127883911133}, + {72.848281860352, 19.134750366211}, + {72.928848, 19.056473}, + {72.859268188477, 19.169082641602}, + {72.892227172852, 19.097671508789}, + {72.923126, 19.115524}, + {72.834548950195, 18.936996459961}, + {72.954025268555, 19.192428588867}, + {73.007584, 19.204102}, + {72.960943, 19.176661}, + {72.960891723633, 19.169082641602}, + {73.125686645508, 19.112777709961}, + {73.0345, 19.152878}, + {73.105087280273, 19.04411315918}, + {73.035049438477, 18.974075317383}, + {72.830429077148, 19.007034301758}, + {72.849655151367, 19.053726196289}, + {18.93219, 48.156509}, + {19.65176, 48.810014}, + {19.191513, 49.381944}, + {20.431137084961, 49.127426147461}, + {18.644485473633, 48.777236938477}, + {22.013175, 48.80196}, + {21.428146362305, 49.068374633789}, + {17.107086, 48.853455}, + {13.364181518555, 38.105392456055}, + {13.321597, 38.077852}, + {13.285081, 38.190811}, + {13.261335, 38.193412}, + {15.207138061523, 38.156204223633}, + {14.818496704102, 38.049087524414}, + {15.237961, 37.819138}, + {15.168936, 37.098895}, + {16.695785522461, 39.257583618164}, + {16.255417, 39.295578}, + {12.808857, 37.664223}, + {12.95954, 37.585158}, + {12.527161, 38.018875}, + {16.638107299805, 38.834609985352}, + {16.584548950195, 39.021377563477}, + {13.656006, 37.472306}, + {13.855819702148, 37.343215942383}, + {16.586125, 38.905611}, + {8.483047, 44.466934}, + {11.194381713867, 43.734512329102}, + {11.182022094727, 43.770217895508}, + {2.4259185791016, 48.622055053711}, + {4.1205596923828, 43.674087524414}, + {1.9081878662109, 47.910690307617}, + {4.7193145751953, 45.997695922852}, + {2.1649932861328, 48.935165405273}, + {2.552261, 48.67424}, + {2.4259185791016, 48.800582885742}, + {1.3451385498047, 43.584823608398}, + {4.8346710205078, 45.777969360352}, + {3.4709930419922, 43.382949829102}, + {0.36048889160156, 44.601058959961}, + {2.3435211181641, 48.891220092773}, + {5.3867340087891, 43.293685913086}, + {3.0068206787109, 43.186569213867}, + {4.8992156982422, 44.926528930664}, + {2.7582550048828, 49.101333618164}, + {2.3641204833984, 48.856887817383}, + {4.9472808837891, 43.903427124023}, + {2.7376556396484, 48.940658569336}, + {-4.2276763916016, 47.846145629883}, + {5.6229400634766, 45.27946472168}, + {-3.7236785888672, 48.556137084961}, + {-0.44975280761719, 49.154891967773}, + {-4.2743682861328, 48.457260131836}, + {31.039810180664, -17.842483520508}, + {31.01921081543, -17.817764282227}, + {31.042557, -17.827377}, + {31.017837524414, -17.846603393555}, + {28.615494, -20.15419}, + {31.04118347168, -17.863082885742}, + {31.045303344727, -17.819137573242}, + {17.084027, -22.563415}, + {17.08854675293, -22.573471069336}, + {17.095413208008, -22.618789672852}, + {19.788436889648, -17.920761108398}, + {35.071792602539, -15.750961303711}, + {33.783645629883, -13.956069946289}, + {34.303207, -14.381332}, + {25.905418, -24.65744}, + {25.928421, -24.614044}, + {26.443405151367, -24.601821899414}, + {26.82724, -23.106583}, + {26.169205, -24.355545}, + {27.525889, -21.1723}, + {31.497116088867, -26.509323120117}, + {29.714584350586, -23.90007019043}, + {1.770027, 43.462333}, + {0.914269, 43.511353}, + {1.318082, 43.460415}, + {1.3245391845703, 43.583450317383}, + {1.449312, 43.59326}, + {1.396931, 43.621902}, + {1.3204193115234, 43.849868774414}, + {1.365934, 43.609543}, + {1.424789, 43.672302}, + {2.4066925048828, 48.85139465332}, + {-4.70455, 48.516312}, + {-4.3251800537109, 48.39958190918}, + {6.6281890869141, 45.902938842773}, + {2.2281646728516, 47.141647338867}, + {4.5641326904297, 44.286575317383}, + {2.9958343505859, 43.189315795898}, + {5.3675079345703, 43.674087524414}, + {-0.67771911621094, 44.75212097168}, + {5.2233123779297, 46.629409790039}, + {7.4260711669922, 48.444900512695}, + {2.3558807373047, 48.876113891602}, + {2.7060699462891, 50.680618286133}, + {18.630752563477, 53.734817504883}, + {18.141174, 53.140182}, + {17.828064, 53.160782}, + {18.349227905273, 52.854537963867}, + {17.523880004883, 53.147048950195}, + {18.866958, 52.995987}, + {18.679504, 52.971954}, + {18.515048, 53.219837}, + {20.32608, 53.272705}, + {19.401168823242, 53.254165649414}, + {20.126266479492, 54.223709106445}, + {20.078201293945, 54.241561889648}, + {19.6978, 53.963985}, + {15.495858, 51.950091}, + {16.548843383789, 51.836929321289}, + {15.118562, 52.580852}, + {15.067749, 52.321014}, + {15.371933, 52.664108}, + {18.262654, 52.232085}, + {18.640365600586, 51.919326782227}, + {-9.2113494873047, 38.711013793945}, + {-9.2168426513672, 38.815383911133}, + {-9.073677, 38.916664}, + {-9.400406, 39.023209}, + {-9.1770172119141, 38.639602661133}, + {-8.771214, 38.391041}, + {118.77937316895, 32.038192749023}, + {118.8631439209, 31.925582885742}, + {119.729004, 32.7705}, + {118.94416809082, 34.665298461914}, + {119.458466, 32.783203}, + {120.30647277832, 31.642684936523}, + {120.480881, 31.473083}, + {119.95216369629, 31.683883666992}, + {121.16203308105, 32.292251586914}, + {120.66215515137, 31.332321166992}, + {120.6470489502, 31.336441040039}, + {120.38887023926, 31.52458190918}, + {119.981003, 36.407318}, + {117.0435333252, 36.664810180664}, + {120.35316467285, 36.321487426758}, + {117.8263092041, 36.791152954102}, + {116.792911, 36.741716}, + {119.22569274902, 36.682662963867}, + {116.5518951416, 35.421981811523}, + {118.30146789551, 35.053939819336}, + {116.98860168457, 35.566177368164}, + {117.89909362793, 37.330856323242}, + {120.39161682129, 36.299514770508}, + {118.82743835449, 35.590896606445}, + {120.38612365723, 36.079788208008}, + {174.726285, -36.729966}, + {170.11915, -44.239624}, + {174.940731, -41.202088}, + {176.187436, -37.643493}, + {172.530915, -43.519185}, + {-5.8426666259766, 35.774917602539}, + {-7.6375579833984, 33.585891723633}, + {-9.4969940185547, 30.379257202148}, + {-7.4988555908203, 33.605117797852}, + {-8.0042266845703, 31.645431518555}, + {-6.6872406005859, 32.496871948242}, + {-7.651749, 33.530045}, + {-7.5730133056641, 33.600997924805}, + {-7.620498, 33.592898}, + {-8.011575, 31.604851}, + {-6.927961, 33.949018}, + {-5.264706, 35.592074}, + {-7.611877, 33.508575}, + {-4.996719, 33.962173}, + {-4.999191, 33.971512}, + {-8.5013580322266, 33.226089477539}, + {-5.8536529541016, 35.750198364258}, + {-7.645289, 33.560766}, + {-2.570389, 51.523544}, + {-4.0161895751953, 50.724563598633}, + {-3.393059, 50.61058}, + {-1.837326, 51.548447}, + {-2.2515106201172, 51.328811645508}, + {-1.590565, 51.758652}, + {-3.1839752197266, 51.442794799805}, + {-4.688172, 51.654745}, + {-3.9434051513672, 51.624069213867}, + {-4.986649, 51.738968}, + {-1.4014434814453, 50.949783325195}, + {-1.345717, 50.916102}, + {-4.194031, 55.81398}, + {-4.1851043701172, 55.885391235352}, + {-1.6500091552734, 53.681259155273}, + {-1.589241, 53.578262}, + {-1.748889, 53.530656}, + {-1.528242, 53.67602}, + {-0.070724487304688, 51.536178588867}, + {13.84758, 57.292328}, + {13.767209, 56.161295}, + {15.008931, 57.447651}, + {15.945511, 56.733627}, + {16.778182983398, 56.834335327148}, + {18.095169067383, 59.31037902832}, + {18.047103881836, 59.260940551758}, + {17.881292, 59.402949}, + {17.827377319336, 59.236221313477}, + {18.158615, 59.21727}, + {18.004531860352, 59.38591003418}, + {18.005905151367, 59.366683959961}, + {17.975235, 59.365768}, + {16.838607, 58.760719}, + {15.303724, 58.55095}, + {15.223383, 59.296106}, + {17.04277, 61.174393}, + {14.28288, 58.292775}, + {16.166865, 61.711305}, + {11.019516, 59.93248}, + {11.998256, 60.193405}, + {-0.708965, 51.132432}, + {-0.796371, 50.837448}, + {-3.9379119873047, 55.745315551758}, + {-4.023056, 55.844021}, + {-2.237278, 53.45117}, + {-2.27417, 53.469772}, + {-2.310783, 53.367977}, + {-0.16325, 51.137581}, + {-0.261612, 51.271958}, + {-2.337529, 53.138591}, + {-2.0565032958984, 52.770767211914}, + {-2.088432, 52.596359}, + {-4.10614, 51.698227}, + {-1.9342803955078, 52.295608520508}, + {-2.528915, 51.503553}, + {-3.9214324951172, 51.672134399414}, + {-2.441759, 51.646749}, + {-2.622186, 51.453477}, + {-0.302149, 51.004035}, + {-0.74363708496094, 51.305465698242}, + {-0.619753, 51.288032}, + {-0.091324, 51.1306}, + {-0.197433, 51.106339}, + {-106.32362365723, 36.208877563477}, + {-110.23887634277, 36.716995239258}, + {-91.152877807617, 43.871841430664}, + {-149.897232, 61.217422}, + {-99.137191772461, 20.424270629883}, + {-122.48313903809, 47.26936340332}, + {-99.13884, 23.760544}, + {-110.32402038574, 24.236526489258}, + {-110.24208, 23.787918}, + {-90.52698, 19.840864}, + {-102.159119, 25.643463}, + {-92.265243530273, 14.916000366211}, + {-99.258041, 19.311905}, + {-99.141311645508, 19.311904907227}, + {-99.233322143555, 19.450607299805}, + {-3.9502716064453, 5.3125762939453}, + {-4.024349, 5.339041}, + {-3.9846038818359, 5.2988433837891}, + {-3.9955902099609, 5.4636383056641}, + {-4.080734, 5.391541}, + {-3.7319183349609, 5.2040863037109}, + {-4.885908, 6.06553}, + {-5.1807403564453, 7.5936126708984}, + {-6.5952301025391, 6.1434173583984}, + {-7.597733, 7.341614}, + {-4.0862274169922, 5.3647613525391}, + {-7.347794, 6.746292}, + {-3.9241790771484, 5.3537750244141}, + {-4.064825, 5.358454}, + {-4.00503, 5.309805}, + {-5.6764984130859, 5.8728790283203}, + {-4.987649, 6.353512}, + {-1.5593719482422, 12.349319458008}, + {-3.2636260986328, 10.888137817383}, + {-4.3279266357422, 11.30012512207}, + {-4.288788, 11.167603}, + {0.237722, 12.800714}, + {-2.5193023681641, 11.911239624023}, + {-1.448822, 12.397385}, + {-35.214614868164, -5.8179473876953}, + {-48.339275, -18.908499}, + {-35.832595825195, -5.8028411865234}, + {-34.897384643555, -8.0550384521484}, + {-34.882278, -8.060806}, + {-35.718612670898, -9.6123504638672}, + {-35.698013305664, -9.6288299560547}, + {-35.22834777832, -7.0758819580078}, + {-35.095825, -6.944733}, + {-35.182279, -5.809508}, + {-38.500571, -3.776015}, + {-38.531697, -3.756985}, + {-40.058749, -19.401684}, + {-44.12766, -4.125552}, + {-43.966662, -19.934915}, + {-43.351364135742, -21.770095825195}, + {-43.754987, -21.261753}, + {-35.671920776367, -7.8188323974609}, + {-35.824356079102, -9.5725250244141}, + {20.738754272461, 41.23649597168}, + {21.597061157227, 41.965713500977}, + {9.4145965576172, 46.994705200195}, + {18.718095, 42.480699}, + {19.221464, 42.333952}, + {-63.337554, 46.203906}, + {-63.666521, 44.626785}, + {-73.566448, 45.548389}, + {-73.461227, 45.053638}, + {-79.736709594727, 43.707046508789}, + {-79.81798, 43.340202}, + {-122.932663, 49.203415}, + {-87.953109741211, 42.12776184082}, + {-102.742232, 38.44046}, + {-91.255874633789, 36.237716674805}, + {-99.61906, 38.957778}, + {-102.37129211426, 41.077194213867}, + {-101.137885, 42.961265}, + {-99.196864, 41.176559}, + {-102.34245300293, 41.231002807617}, + {-99.266005, 40.45789}, + {-98.674721, 42.45647}, + {-93.288345336914, 31.112594604492}, + {-91.557998657227, 40.271072387695}, + {-92.333908081055, 43.065719604492}, + {-110.79231262207, 36.42448425293}, + {-109.05647277832, 35.69938659668}, + {-119.21196, 40.776444}, + {-149.412346, 61.429367}, + {-149.73335266113, 61.610641479492}, + {-147.604199, 64.940049}, + {-69.347763061523, 45.172348022461}, + {-65.79231262207, 18.183059692383}, + {-65.99913, 18.407181}, + {-66.6465, 17.995262}, + {77.6548, 12.884163}, + {77.584076, 13.012619}, + {74.742050170898, 13.376541137695}, + {77.573776245117, 12.993392944336}, + {77.718658, 12.956314}, + {77.661491, 12.857437}, + {78.299423, 17.504654}, + {78.362045288086, 17.448348999023}, + {78.454055786133, 17.435989379883}, + {78.481007, 17.404404}, + {78.429336547852, 17.382431030273}, + {78.501606, 17.442341}, + {78.42453, 17.447662}, + {83.303146362305, 17.724380493164}, + {80.656814575195, 16.500778198242}, + {80.441207885742, 16.303024291992}, + {79.972915649414, 14.42024230957}, + {77.626238, 13.037977}, + {79.09538269043, 21.178207397461}, + {73.81233215332, 18.599166870117}, + {73.767013549805, 20.015029907227}, + {72.844947, 18.975449}, + {72.820816, 19.013214}, + {116.43104553223, 37.612380981445}, + {114.58946228027, 36.412124633789}, + {114.43290710449, 36.501388549805}, + {114.52903747559, 37.803268432617}, + {116.26487731934, 38.61213684082}, + {114.56474304199, 37.388534545898}, + {106.561661, 29.626694}, + {106.579742, 29.6315}, + {107.03498840332, 29.166641235352}, + {106.612015, 29.470825}, + {106.6202545166, 29.710464477539}, + {106.50077819824, 29.586868286133}, + {111.35810852051, 35.898513793945}, + {112.564201, 37.829361}, + {112.53364562988, 37.869186401367}, + {113.56224060059, 37.856826782227}, + {110.95161437988, 35.075912475586}, + {110.84312438965, 34.912490844727}, + {116.30744934082, 34.059677124023}, + {113.65013122559, 34.729843139648}, + {115.32005310059, 36.048202514648}, + {114.12254333496, 32.156295776367}, + {114.03877258301, 33.385391235352}, + {114.22554016113, 32.413101196289}, + {114.6622467041, 34.821853637695}, + {3.118744, 50.651093}, + {3.085098, 50.600364}, + {2.2913360595703, 48.584976196289}, + {1.992947, 48.292095}, + {2.637406, 48.392258}, + {2.307031, 48.519058}, + {2.3545074462891, 48.624801635742}, + {6.4867401123047, 45.736770629883}, + {4.961132, 45.684873}, + {5.686798, 45.789642}, + {4.908829, 45.738383}, + {2.848206, 48.67218}, + {-43.222436, -22.905613}, + {-45.275603, -19.742676}, + {-44.602452, -19.838723}, + {-43.341814, -22.927718}, + {-42.610272, -22.706837}, + {-40.291249, -20.35178}, + {-41.950607299805, -18.860092163086}, + {-39.287796020508, -14.800643920898}, + {-39.276809692383, -14.800643920898}, + {-43.392131, -4.868639}, + {-40.260209, -20.232142}, + {-48.262889, -18.895829}, + {-45.876398, -22.238211}, + {-37.058349, -10.930858}, + {-37.034226, -10.952225}, + {-40.165328979492, -3.8005828857422}, + {-43.246994018555, -22.830276489258}, + {-45.427324, -21.561607}, + {-45.442661, -21.560483}, + {2.373553, 48.84972}, + {3.078799, 44.319075}, + {2.867669, 44.247153}, + {0.27397155761719, 46.585464477539}, + {3.449707, 49.046402}, + {1.823184, 49.396746}, + {-0.567202, 44.830529}, + {-1.110054, 44.747369}, + {4.855133, 45.75737}, + {-97.022323608398, 32.962417602539}, + {-96.074752807617, 33.375778198242}, + {-102.05268859863, 35.191268920898}, + {-96.824569702148, 32.698745727539}, + {-118.08723449707, 33.837203979492}, + {-77.081223, 38.79158}, + {-77.084885, 39.055023}, + {-76.988754272461, 38.767318725586}, + {-77.032699584961, 38.932113647461}, + {-76.979602, 38.960713}, + {-77.036573, 38.910748}, + {-77.02995300293, 38.925247192383}, + {-76.977767944336, 38.874435424805}, + {-77.109261, 38.832321}, + {-77.184571, 38.753444}, + {-76.571273803711, 39.370193481445}, + {-76.516342163086, 39.253463745117}, + {-76.53694152832, 38.811264038086}, + {-76.538314819336, 39.209518432617}, + {-94.830551147461, 39.116134643555}, + {-94.775963, 39.128494}, + {-94.587936, 39.03923}, + {-97.288284, 37.630234}, + {-94.989852905273, 39.970321655273}, + {-94.836044311523, 38.881301879883}, + {-97.284622192383, 37.708511352539}, + {-97.342712, 37.657593}, + {-94.781112670898, 37.339096069336}, + {-95.8759, 38.441391}, + {-81.606221, 38.812647}, + {-81.580734, 38.404083}, + {-82.155991, 38.281174}, + {-82.602081, 38.446312}, + {-115.3475189209, 36.034469604492}, + {-115.118179, 36.072235}, + {-114.980448, 39.285669}, + {-115.144237, 36.16847}, + {-114.3546295166, 34.493637084961}, + {-115.200123, 36.131167}, + {-71.36100769043, 43.285446166992}, + {-123.914775, 46.054254}, + {-122.711792, 45.574722}, + {-122.584419, 45.424347}, + {-122.62685, 45.286735}, + {-70.760661, 41.794591}, + {-71.461257, 41.469269}, + {-70.608444213867, 41.637496948242}, + {-69.331729, 44.799662}, + {-72.563553, 42.870483}, + {-71.387100219727, 41.696548461914}, + {-78.383705, 35.546628}, + {-71.685104370117, 41.524887084961}, + {-79.33708190918, 36.067428588867}, + {-79.21760559082, 35.423355102539}, + {-79.872665405273, 36.653823852539}, + {-77.187881469727, 43.234634399414}, + {-92.443771362305, 38.373184204102}, + {-83.893661, 31.537628}, + {-91.185013, 39.7267}, + {-90.414047241211, 38.393783569336}, + {54.692688, 24.382782}, + {55.244064331055, 25.207443237305}, + {55.260543823242, 25.24040222168}, + {55.249557495117, 25.079727172852}, + {55.158920288086, 25.041275024414}, + {55.282516479492, 25.02067565918}, + {55.147933959961, 25.079727172852}, + {55.286636352539, 25.023422241211}, + {55.300369262695, 25.270614624023}, + {55.088882446289, 25.009689331055}, + {55.33332824707, 25.244522094727}, + {55.304489135742, 25.273361206055}, + {55.339993, 25.255916}, + {55.274277, 25.202293}, + {55.279769897461, 25.189590454102}, + {55.272903442383, 25.18684387207}, + {55.294876098633, 25.256881713867}, + {55.303115844727, 25.24040222168}, + {55.288009643555, 25.263748168945}, + {55.384140014648, 25.276107788086}, + {55.279672, 25.218135}, + {55.42121887207, 25.278854370117}, + {55.423965454102, 25.259628295898}, + {106.829819, -6.270215}, + {106.80702209473, -6.2683868408203}, + {106.82075500488, -6.3040924072266}, + {106.788342, -6.263357}, + {106.833987, -6.31946}, + {106.76582336426, -6.3343048095703}, + {106.92924499512, -6.2903594970703}, + {106.912971, -6.279475}, + {106.89353942871, -6.1530303955078}, + {107.308519, -6.311653}, + {107.264258, -6.348203}, + {107.34627, -6.319907}, + {106.905441, -6.252136}, + {106.969577, -6.252911}, + {106.97599, -6.265286}, + {106.9803, -6.178662}, + {106.98417663574, -6.2491607666016}, + {107.026405, -6.291046}, + {19.476013, 51.761398}, + {19.445536, 51.779457}, + {19.457473754883, 51.762771606445}, + {19.486312866211, 51.714706420898}, + {19.403, 51.73439}, + {19.397873, 51.626816}, + {19.081192016602, 51.975631713867}, + {19.832382, 51.895981}, + {19.551295, 52.002036}, + {19.478073120117, 51.799850463867}, + {20.097427368164, 52.285995483398}, + {19.972458, 52.641678}, + {20.525894165039, 51.813583374023}, + {19.480217, 52.099572}, + {19.386289, 52.239405}, + {20.166097, 52.50023}, + {21.39518737793, 52.511215209961}, + {17.981873, 53.054352}, + {21.21348, 53.041483}, + {21.62727355957, 53.05778503418}, + {22.197189331055, 53.197860717773}, + {22.523348, 53.714218}, + {-113.996886, 50.976563}, + {-111.46934509277, 56.747817993164}, + {-120.22682189941, 55.753555297852}, + {-114.070426, 51.045526}, + {-114.075145, 51.047527}, + {-114.065686, 51.049646}, + {-113.689041, 53.579636}, + {-113.587172, 53.64849}, + {-113.489442, 53.554497}, + {-114.318916, 52.64397}, + {-113.756695, 52.282833}, + {-113.521002, 53.58891}, + {-104.473531, 50.447832}, + {-106.75483703613, 52.111587524414}, + {-104.533947, 50.431817}, + {-106.520089, 51.709621}, + {-123.49937438965, 48.45588684082}, + {-123.34968566895, 48.422927856445}, + {-123.10661315918, 49.222183227539}, + {-124.32334899902, 49.32243347168}, + {-123.064534, 49.325287}, + {127.01774597168, 37.542343139648}, + {126.915436, 37.604141}, + {127.00813293457, 37.595901489258}, + {127.0108795166, 37.571182250977}, + {127.00538635254, 37.561569213867}, + {126.777919, 37.52449}, + {126.85020446777, 37.528610229492}, + {126.69364929199, 37.642593383789}, + {126.76368713379, 37.58903503418}, + {126.75682067871, 37.499771118164}, + {126.76643371582, 37.549209594727}, + {126.74995422363, 37.506637573242}, + {127.49290466309, 36.618118286133}, + {127.4585723877, 36.618118286133}, + {126.72248840332, 37.539596557617}, + {127.4324798584, 36.624984741211}, + {128.454468, 34.876424}, + {126.31324768066, 34.604873657227}, + {126.8090057373, 34.981155395508}, + {126.88591003418, 37.546463012695}, + {127.08503723145, 37.532730102539}, + {128.655847, 34.874242}, + {127.00950622559, 37.605514526367}, + {127.02461242676, 37.54508972168}, + {127.033504, 37.586451}, + {-75.391106, 9.298493}, + {-74.419326782227, 4.3292999267578}, + {-74.060897827148, 4.6314239501953}, + {-74.070510864258, 4.6465301513672}, + {-74.10262, 4.653397}, + {-74.084243774414, 4.7728729248047}, + {-74.12297, 4.644312}, + {-74.166641235352, 4.6314239501953}, + {-74.126815795898, 4.6863555908203}, + {-74.125442504883, 4.7275543212891}, + {-74.058151245117, 4.6616363525391}, + {-74.055404663086, 4.6822357177734}, + {-74.12956237793, 4.7605133056641}, + {-74.040298461914, 4.7920989990234}, + {-74.732437133789, 4.4020843505859}, + {-74.434433, 4.76326}, + {-74.803704, 4.308777}, + {-74.307266, 4.975571}, + {-74.186272, 4.606535}, + {-2.95713, 50.880104}, + {-4.142026, 50.414209}, + {-1.083212, 53.956511}, + {-1.4989471435547, 53.413467407227}, + {-3.18723, 55.966653}, + {-1.737029, 53.758905}, + {-1.791849, 53.77896}, + {-1.754358, 53.792725}, + {-1.570008, 53.792528}, + {-5.842003, 54.592985}, + {-1.624505, 53.689008}, + {-3.543577, 55.871587}, + {-1.3561248779297, 53.394241333008}, + {-1.5593719482422, 53.68537902832}, + {-6.040515, 54.510395}, + {-0.452127, 53.727109}, + {-0.360027, 53.783552}, + {-6.2670135498047, 54.85954284668}, + {-4.338641, 55.806566}, + {-4.0285491943359, 55.841445922852}, + {-4.412613, 55.917892}, + {-79.460678100586, 9.0177154541016}, + {-79.551315307617, 8.9696502685547}, + {-79.505996704102, 9.0479278564453}, + {-79.626846313477, 9.2072296142578}, + {-79.495010375977, 9.0287017822266}, + {-80.066299438477, 8.4285736083984}, + {-80.185775756836, 8.3846282958984}, + {-79.41535949707, 9.0685272216797}, + {-79.53483581543, 9.0067291259766}, + {-79.540672, 8.973427}, + {-79.475784301758, 9.0108489990234}, + {-79.53483581543, 9.1028594970703}, + {-79.520627, 9.071168}, + {-79.505996704102, 9.0410614013672}, + {-80.982284545898, 8.1017303466797}, + {-79.522476, 9.02583}, + {-79.510116577148, 8.9902496337891}, + {-82.426986694336, 8.4368133544922}, + {-81.222610473633, 8.0303192138672}, + {-82.433853149414, 8.4368133544922}, + {-79.532089233398, 9.0081024169922}, + {-80.520858764648, 8.4107208251953}, + {120.39710998535, 36.186904907227}, + {120.406864, 36.176869}, + {119.525757, 36.606445}, + {120.396423, 36.251678}, + {121.26091003418, 37.518997192383}, + {116.6040802002, 35.408248901367}, + {119.09523010254, 36.699142456055}, + {119.06089782715, 36.726608276367}, + {117.25776672363, 36.630477905273}, + {117.000046, 36.657486}, + {120.40672302246, 36.067428588867}, + {117.65464782715, 32.531204223633}, + {117.82081604004, 30.92170715332}, + {119.49485778809, 30.892868041992}, + {116.93092346191, 31.597366333008}, + {117.2811126709, 31.862411499023}, + {117.26463317871, 31.839065551758}, + {120.25703430176, 30.033187866211}, + {120.35453796387, 30.318832397461}, + {120.226822, 30.307846}, + {120.20484924316, 30.236434936523}, + {120.72944641113, 30.747299194336}, + {120.87364196777, 30.016708374023}, + {120.01258850098, 29.299850463867}, + {120.18287658691, 30.258407592773}, + {-0.91392517089844, 37.812881469727}, + {-1.2586212158203, 38.127365112305}, + {-0.98121643066406, 37.62336730957}, + {-1.3245391845703, 38.19465637207}, + {-1.4110565185547, 38.244094848633}, + {-1.122322, 38.136978}, + {-1.1679840087891, 37.943344116211}, + {-1.146744, 38.021224}, + {-0.75736999511719, 37.818374633789}, + {-1.034778, 37.997819}, + {-1.5964508056641, 42.068710327148}, + {-1.6445159912109, 42.819900512695}, + {-1.666489, 42.806511}, + {-1.618423, 42.788773}, + {-7.8462982177734, 42.53288269043}, + {-7.3271942138672, 41.967086791992}, + {-5.9607696533203, 43.562850952148}, + {-5.690731, 43.541503}, + {-5.6902313232422, 43.535385131836}, + {-5.8110809326172, 43.398056030273}, + {-5.6613922119141, 43.539505004883}, + {-5.474625, 43.529205}, + {-5.290074, 43.492604}, + {-45.897445678711, -23.308181762695}, + {-45.648880004883, -23.073348999023}, + {-48.056253, -24.713002}, + {-48.47647, -22.948859}, + {-47.800211, -21.130206}, + {-47.697830200195, -20.240249633789}, + {-49.409485, -20.848871}, + {-49.405556, -20.856857}, + {-47.052536, -22.879826}, + {-47.477458, -22.745271}, + {-47.548347, -22.369046}, + {-43.284072875977, -22.65998840332}, + {-47.793267, -20.190495}, + {-48.392715454102, -18.983688354492}, + {-49.161836, -18.70858}, + {-35.20637512207, -5.8179473876953}, + {-38.30451965332, -6.1571502685547}, + {-43.290939331055, -22.84538269043}, + {-43.937759399414, -19.940872192383}, + {-46.496200561523, -23.445510864258}, + {-47.425918579102, -22.563858032227}, + {-46.586837768555, -23.596572875977}, + {-49.252395629883, -16.676559448242}, + {138.81568908691, 36.262435913086}, + {139.079361, 36.317642}, + {139.947968, 35.926666}, + {139.417877, 35.733032}, + {139.971019, 35.944617}, + {139.184893, 36.353073}, + {139.44809, 35.406876}, + {139.680862, 35.518678}, + {141.33567810059, 43.047866821289}, + {139.613228, 35.670547}, + {139.601212, 35.667458}, + {139.654312, 35.92186}, + {139.911575, 35.727539}, + {139.917123, 35.810623}, + {139.678391, 35.528824}, + {139.511261, 35.728226}, + {139.5435333252, 35.718612670898}, + {140.35102844238, 35.776290893555}, + {139.66163635254, 35.669174194336}, + {139.577179, 35.736465}, + {139.90745544434, 35.833969116211}, + {139.698715, 35.684006}, + {-80.304724, -0.981405}, + {-79.473037719727, -0.80268859863281}, + {-79.88639831543, -2.1581268310547}, + {-79.897384643555, -2.2350311279297}, + {-79.93034362793, -2.1196746826172}, + {-78.587265, -0.550627}, + {-78.506240844727, -0.23002624511719}, + {-78.701706, -1.653671}, + {-79.935836791992, -2.1402740478516}, + {-57.512741088867, -25.469741821289}, + {-56.426467895508, -24.261245727539}, + {-57.31086730957, -25.564498901367}, + {-55.896378, -24.533844}, + {-57.525659, -25.323529}, + {-57.589645, -25.288468}, + {-54.646682739258, -25.554885864258}, + {4.4309234619141, 51.214828491211}, + {4.455643, 51.227875}, + {4.408264, 51.331558}, + {4.379654, 51.088486}, + {5.408601, 51.246309}, + {4.7536468505859, 50.93879699707}, + {5.0035858154297, 51.14616394043}, + {5.2356719970703, 51.111831665039}, + {4.3608856201172, 50.857772827148}, + {4.308014, 50.872192}, + {4.388794, 50.874103}, + {4.416275, 50.825272}, + {4.279404, 50.699387}, + {4.4652557373047, 50.900344848633}, + {4.6959686279297, 50.863265991211}, + {3.846588, 50.416946}, + {3.264084, 50.706253}, + {4.3622589111328, 50.660018920898}, + {55.38208, 25.265808}, + {55.396499633789, 25.271987915039}, + {55.168533325195, 25.100326538086}, + {55.154800415039, 25.097579956055}, + {55.174026489258, 25.050888061523}, + {55.292129516602, 25.267868041992}, + {55.286636352539, 25.248641967773}, + {55.285263061523, 25.261001586914}, + {55.307235717773, 25.211563110352}, + {55.29899597168, 25.24040222168}, + {55.255051, 25.176888}, + {55.247726, 25.162125}, + {55.319258, 25.182908}, + {55.394493, 25.154976}, + {55.307235717773, 25.072860717773}, + {55.423965454102, 25.256881713867}, + {54.516809, 24.409561}, + {54.33219909668, 24.468612670898}, + {54.496994018555, 24.310684204102}, + {54.373397827148, 24.500198364258}, + {8.364403, 51.651554}, + {-80.096426, 26.244621}, + {-80.232925, 26.355108}, + {-80.309371948242, 26.012191772461}, + {-80.273125, 25.972366}, + {-80.248947, 25.844193}, + {-81.807632, 26.343801}, + {-81.438806, 26.400637}, + {-81.435814, 26.577301}, + {-82.636895, 35.559249}, + {-81.769821, 36.158249}, + {-81.443253, 35.821152}, + {-82.21756, 34.867172}, + {-82.187295, 35.029115}, + {-81.933975219727, 34.945449829102}, + {-82.040036, 34.994888}, + {-81.163451, 33.98888}, + {-81.028523, 33.857179}, + {-81.542709, 34.291482}, + {-80.906734, 34.780316}, + {-78.977966, 35.989838}, + {-78.888801, 35.888705}, + {-78.786225, 35.903538}, + {11.545944213867, 48.186721801758}, + {69.376602172852, 41.259841918945}, + {72.062759399414, 40.812149047852}, + {64.76921081543, 40.060958862305}, + {69.501571655273, 41.408157348633}, + {68.795700073242, 38.57780456543}, + {68.792953491211, 38.602523803711}, + {78.004989624023, 42.366714477539}, + {74.619827270508, 42.87483215332}, + {74.639053344727, 42.810287475586}, + {73.070755004883, 41.38069152832}, + {74.729690551758, 42.870712280273}, + {74.688491821289, 42.873458862305}, + {74.624634, 42.826767}, + {7.049194, 53.609274}, + {9.376601, 53.091202}, + {7.69249, 53.687668}, + {8.511429, 52.716293}, + {8.897896, 53.166533}, + {9.7400665283203, 54.63981628418}, + {8.0605316162109, 52.460403442383}, + {9.98895, 54.505868}, + {9.004089, 54.565025}, + {9.7867584228516, 52.372512817383}, + {9.391476, 52.456111}, + {9.734879, 52.373886}, + {2.4053192138672, 48.82942199707}, + {2.4039459228516, 48.870620727539}, + {2.413559, 48.865814}, + {2.3490142822266, 48.844528198242}, + {2.3064422607422, 48.843154907227}, + {2.302988, 48.86006}, + {2.3009490966797, 48.892593383789}, + {2.3091888427734, 48.858261108398}, + {2.2556304931641, 48.876113891602}, + {2.215552, 48.910117}, + {2.256361, 48.912737}, + {2.2927093505859, 48.900833129883}, + {2.2762298583984, 48.893966674805}, + {4.671941, 45.868953}, + {4.750462, 46.116325}, + {2.326492, 50.814102}, + {2.888031, 42.756043}, + {3.031815, 42.572433}, + {2.995835, 42.801101}, + {2.857793, 42.468796}, + {77.522141, 12.950272}, + {77.549057, 12.976456}, + {77.635574, 13.006851}, + {77.475586, 13.024292}, + {77.555008, 12.894516}, + {77.682266235352, 13.347702026367}, + {77.540817, 12.932968}, + {74.879379272461, 13.32160949707}, + {76.944809, 12.547073}, + {74.824447631836, 13.060684204102}, + {76.961292, 17.081681}, + {75.133438110352, 12.812118530273}, + {74.796981811523, 13.04557800293}, + {75.928573608398, 16.059951782227}, + {74.824447631836, 16.653213500977}, + {76.365280151367, 15.229110717773}, + {76.357040405273, 15.263442993164}, + {75.28450012207, 16.50764465332}, + {76.552734, 15.067064}, + {78.183517456055, 12.981033325195}, + {77.598495483398, 12.986526489258}, + {77.606735229492, 12.93571472168}, + {75.976638793945, 32.539443969727}, + {77.680892944336, 13.000259399414}, + {4.337082, 52.078629}, + {4.29944, 52.008253}, + {4.3045806884766, 52.096481323242}, + {4.3553924560547, 52.00309753418}, + {4.481486, 52.061899}, + {4.693448, 52.146105}, + {4.6492767333984, 52.13493347168}, + {4.515381, 52.182999}, + {5.074997, 52.082374}, + {5.0653839111328, 52.101974487305}, + {5.112861, 52.074509}, + {5.291523, 52.113801}, + {5.2013397216797, 52.092361450195}, + {5.2727508544922, 52.379379272461}, + {5.2315521240234, 52.295608520508}, + {5.1395416259766, 52.040176391602}, + {4.8964691162109, 52.356033325195}, + {4.872331, 52.351715}, + {4.9294281005859, 52.329940795898}, + {4.9362945556641, 52.361526489258}, + {4.7962188720703, 52.327194213867}, + {153.12785, -26.717426}, + {144.997942, -38.315324}, + {153.14899, -27.696291}, + {153.031078, -27.456359}, + {153.394213, -27.943054}, + {153.003143, -27.492424}, + {153.154281, -27.426526}, + {138.614973, -34.910465}, + {138.649864, -34.792053}, + {115.856735, -31.967606}, + {153.04298400879, -27.434921264648}, + {115.886676, -31.958442}, + {144.942627, -37.772369}, + {112.731102, -7.267345}, + {105.264597, -5.438392}, + {110.811467, -7.599534}, + {106.833612, -6.175121}, + {106.884058, -6.181867}, + {106.88523, -6.311851}, + {4.8511505126953, 45.75325012207}, + {4.84993, 45.761439}, + {4.9088287353516, 45.750503540039}, + {4.885025, 45.762863}, + {4.8085784912109, 45.727157592773}, + {4.57814, 45.6633}, + {5.066757, 45.574722}, + {5.309829, 45.532837}, + {4.936123, 45.703468}, + {4.704896, 45.864554}, + {4.873581, 45.820541}, + {4.819427, 45.903488}, + {5.048424, 45.846634}, + {4.4062042236328, 45.46760559082}, + {5.113057, 43.724997}, + {4.475784, 45.475388}, + {9.4599151611328, 42.736129760742}, + {5.199182, 43.584333}, + {5.4004669189453, 43.282699584961}, + {5.4979705810547, 43.491439819336}, + {23.549880981445, 46.769485473633}, + {21.941456, 47.044351}, + {26.032333, 44.441299}, + {26.004776, 44.414841}, + {25.478592, 44.914169}, + {27.363510131836, 44.562606811523}, + {7.21788, 46.807938}, + {6.525696, 46.525062}, + {7.603152, 47.543061}, + {7.6567840576172, 47.232284545898}, + {6.073968, 46.211733}, + {7.437194, 46.941473}, + {6.071157, 46.182928}, + {6.277334, 46.231239}, + {7.02119, 47.037574}, + {6.758849, 46.877387}, + {7.287452, 47.085213}, + {4.5174407958984, 51.956405639648}, + {4.4858551025391, 52.055282592773}, + {4.89161, 52.326349}, + {4.7399139404297, 52.373886108398}, + {4.894638, 52.353287}, + {5.0365447998047, 52.931442260742}, + {4.9047088623047, 52.358779907227}, + {5.1354217529297, 52.306594848633}, + {4.9706268310547, 52.321701049805}, + {6.892076, 52.202096}, + {6.2065887451172, 52.236557006836}, + {5.878401, 51.998872}, + {5.722992, 52.014494}, + {5.7163238525391, 51.814956665039}, + {5.631421, 52.582724}, + {6.529541, 52.658615}, + {5.882478, 53.221494}, + {5.972214, 53.331986}, + {5.155682, 52.227591}, + {5.2205657958984, 52.371139526367}, + {39.668197631836, 47.241897583008}, + {39.642105102539, 54.648056030273}, + {38.896408081055, 47.208938598633}, + {37.405014038086, 55.798873901367}, + {41.321640014648, 54.897994995117}, + {50.116195678711, 53.208847045898}, + {50.372086, 53.064194}, + {50.120315551758, 53.134689331055}, + {49.26887512207, 53.564529418945}, + {49.327926635742, 53.537063598633}, + {49.289474487305, 53.55354309082}, + {49.826425, 53.4684}, + {52.148666, 54.065781}, + {46.09245300293, 51.494979858398}, + {45.981216430664, 51.51969909668}, + {43.167343139648, 51.540298461914}, + {45.714797973633, 51.379623413086}, + {60.733108520508, 56.76155090332}, + {9.153156, 45.448723}, + {9.1674041748047, 45.452499389648}, + {9.1014862060547, 45.519790649414}, + {9.6755218505859, 45.821914672852}, + {9.258042, 44.767381}, + {10.464319, 45.737722}, + {9.4049835205078, 45.69694519043}, + {9.02643, 45.726035}, + {7.699506, 44.955778}, + {7.7075958251953, 45.088577270508}, + {7.6691436767578, 45.100936889648}, + {7.617707, 45.085082}, + {7.308192, 45.729209}, + {8.2884979248047, 45.999069213867}, + {7.1651458740234, 45.459365844727}, + {-123.138612, 49.254247}, + {-123.081255, 49.265807}, + {-123.050163, 49.087035}, + {-122.961731, 49.092408}, + {-122.898331, 49.161758}, + {-122.803026, 49.1043}, + {-122.905546, 49.256215}, + {-106.551189, 52.685968}, + {-104.58915710449, 52.788619995117}, + {-106.06407165527, 50.462265014648}, + {-106.556025, 52.165728}, + {-102.99339294434, 49.42268371582}, + {-107.8150177002, 50.300216674805}, + {-105.64384460449, 54.726333618164}, + {-105.587246, 51.975416}, + {-79.324722290039, 43.671340942383}, + {-71.234664916992, 48.006820678711}, + {-106.415634, 41.056137}, + {-105.42274475098, 44.265975952148}, + {-104.6145, 36.373298}, + {-107.600055, 43.142953}, + {7.7886199951172, 50.434799194336}, + {8.417244, 49.31591}, + {6.984901, 49.231453}, + {8.6771392822266, 50.600967407227}, + {8.4093475341797, 50.522689819336}, + {8.358536, 49.492133}, + {8.4052276611328, 49.602584838867}, + {8.5796356201172, 49.397964477539}, + {8.425827, 50.038605}, + {8.888283, 50.012512}, + {8.528823, 49.752275}, + {8.7595367431641, 50.098342895508}, + {8.837286, 50.085171}, + {19.007034301758, 47.405319213867}, + {18.81184, 47.395563}, + {19.145736694336, 47.565994262695}, + {18.128679, 47.026435}, + {17.920761108398, 47.096328735352}, + {18.051785, 46.26915}, + {18.967666, 46.503525}, + {21.09976, 46.987855}, + {19.55716, 46.448313}, + {42.126388549805, 18.535995483398}, + {42.916946, 16.731949}, + {42.048110961914, 18.546981811523}, + {42.666091918945, 17.159957885742}, + {42.487564086914, 17.361831665039}, + {42.476577758789, 18.225631713867}, + {42.686142, 18.297043}, + {42.69905090332, 18.312149047852}, + {42.491683959961, 18.025131225586}, + {42.521896362305, 18.27507019043}, + {41.308032, 18.97137}, + {41.435623168945, 19.755477905273}, + {42.856979370117, 16.756210327148}, + {42.075576782227, 19.296798706055}, + {38.101272583008, 25.052261352539}, + {45.095443725586, 19.079818725586}, + {39.55696105957, 24.500198364258}, + {39.032363891602, 22.797317504883}, + {40.547103881836, 26.090469360352}, + {39.611892700195, 24.446640014648}, + {39.572067260742, 24.524917602539}, + {39.572067260742, 24.465866088867}, + {38.209856, 24.023365}, + {39.861831665039, 21.425399780273}, + {-0.53489685058594, 51.890487670898}, + {-2.5728607177734, 51.457901000977}, + {-0.76423645019531, 52.026443481445}, + {-1.4701080322266, 50.925064086914}, + {-1.5442657470703, 52.884750366211}, + {-1.239264, 52.998668}, + {-1.228899, 53.037578}, + {-3.030167, 53.010635}, + {1.3314056396484, 51.140670776367}, + {-0.201874, 51.104965}, + {-0.084457397460938, 51.549911499023}, + {-0.67771911621094, 51.419448852539}, + {-0.46623229980469, 51.437301635742}, + {-0.672683, 51.362686}, + {-0.408783, 51.399307}, + {-1.255343, 51.121601}, + {-1.761246, 51.595293}, + {-4.1329193115234, 53.226699829102}, + {-1.363678, 50.95871}, + {113.40156555176, 22.591323852539}, + {113.45649719238, 22.694320678711}, + {113.75999450684, 23.743515014648}, + {113.19831848145, 25.36262512207}, + {113.24363708496, 23.111801147461}, + {113.90007019043, 22.577590942383}, + {121.61796569824, 31.226577758789}, + {121.6934967041, 31.201858520508}, + {121.49299621582, 31.376266479492}, + {121.49024963379, 31.369400024414}, + {121.45317077637, 31.262283325195}, + {121.43943786621, 31.267776489258}, + {121.5438079834, 31.200485229492}, + {121.52732849121, 31.226577758789}, + {121.26640319824, 31.024703979492}, + {121.31309509277, 31.138687133789}, + {121.42158508301, 31.193618774414}, + {121.47789001465, 31.199111938477}, + {121.4380645752, 31.234817504883}, + {121.51359558105, 31.203231811523}, + {121.3941192627, 31.328201293945}, + {121.50535583496, 31.23893737793}, + {121.49574279785, 31.15104675293}, + {14.197769165039, 48.039779663086}, + {14.619455, 48.123256}, + {14.027481079102, 48.156509399414}, + {13.612061, 47.975235}, + {13.758865, 47.902176}, + {13.232349, 48.225862}, + {14.15657043457, 47.831039428711}, + {14.06662, 48.017807}, + {13.065597, 47.797377}, + {13.056564331055, 47.785720825195}, + {13.330399, 47.573685}, + {13.329849243164, 47.854385375977}, + {14.564896, 47.478104}, + {13.064804077148, 47.145767211914}, + {12.807998657227, 47.493209838867}, + {11.405869, 47.276573}, + {11.583023071289, 47.292709350586}, + {11.201477, 47.316284}, + {11.636581420898, 47.325668334961}, + {12.42073059082, 47.504196166992}, + {9.6411895751953, 47.270736694336}, + {9.633408, 47.22908}, + {9.7057342529297, 47.490463256836}, + {-77.004547, -12.12822}, + {-71.512069702148, -16.415634155273}, + {-71.476364135742, -16.403274536133}, + {-77.030279, -12.116433}, + {-77.025833129883, -12.118606567383}, + {-77.001113891602, -12.133712768555}, + {-76.975708, -12.100754}, + {-77.045059204102, -12.06916809082}, + {-77.064972, -12.071915}, + {-77.003685, -12.050325}, + {-76.980514526367, -12.027969360352}, + {-76.962661743164, -12.058181762695}, + {-77.032699584961, -12.132339477539}, + {-76.59049987793, -12.77229309082}, + {-77.124710083008, -11.886520385742}, + {-76.561660766602, -12.792892456055}, + {-77.097244262695, -12.058181762695}, + {-77.047348, -12.084732}, + {-77.021713256836, -12.095260620117}, + {-77.102737426758, -12.021102905273}, + {-77.021713256836, -12.051315307617}, + {-71.529591, -16.413843}, + {-76.126327514648, -13.399887084961}, + {-70.243148803711, -18.02375793457}, + {103.154051, 5.320697}, + {102.3754119873, 3.5066986083984}, + {103.29963684082, 3.7882232666016}, + {103.29963684082, 3.7909698486328}, + {116.07261657715, 5.9648895263672}, + {101.70524597168, 3.0397796630859}, + {115.897674, 5.49923}, + {116.069852, 5.969257}, + {118.072948, 5.857355}, + {110.42701721191, 1.4673614501953}, + {110.575796, 1.152842}, + {103.70063781738, 1.4975738525391}, + {117.8881072998, 4.2427825927734}, + {113.96186828613, 4.3114471435547}, + {101.447979, 3.050216}, + {101.541724, 3.023032}, + {101.54467, 3.022725}, + {101.67091369629, 3.1853485107422}, + {101.672298, 3.212175}, + {101.53633117676, 3.4737396240234}, + {101.671499, 3.181052}, + {101.75880432129, 3.1153106689453}, + {101.56929016113, 2.9889678955078}, + {120.21858215332, 22.997817993164}, + {120.33393859863, 23.59245300293}, + {120.21446228027, 23.019790649414}, + {120.2515411377, 23.058242797852}, + {120.295212, 23.080215}, + {120.23643493652, 23.000564575195}, + {120.253086, 23.043137}, + {120.229568, 23.013611}, + {120.22682189941, 22.978591918945}, + {120.35453796387, 23.177719116211}, + {120.428009, 23.341827}, + {120.394363, 23.27754}, + {120.32020568848, 22.587203979492}, + {120.336685, 22.616501}, + {120.314394, 22.627469}, + {120.29823303223, 22.650375366211}, + {120.33805847168, 22.654495239258}, + {120.29960632324, 22.672348022461}, + {120.34217834473, 22.629776000977}, + {120.37056, 22.529526}, + {120.361404, 22.859802}, + {120.349045, 22.641449}, + {120.338058, 22.674408}, + {120.437622, 22.675782}, + {5.7300567626953, 45.197067260742}, + {3.2581329345703, 45.500564575195}, + {4.418564, 44.90284}, + {2.4465179443359, 44.92790222168}, + {3.5822296142578, 45.710678100586}, + {2.7610015869141, 45.582962036133}, + {3.121719, 46.096344}, + {3.0219268798828, 45.743637084961}, + {2.5920867919922, 46.349258422852}, + {2.9793548583984, 45.952377319336}, + {4.735402, 44.554563}, + {5.265884, 44.723969}, + {5.68851, 45.081025}, + {5.011037, 44.900917}, + {5.046158, 45.042038}, + {5.0543975830078, 47.31330871582}, + {5.0337982177734, 47.328414916992}, + {5.040158, 47.321397}, + {4.361044, 46.679007}, + {4.671455, 46.44558}, + {-99.15641784668, 19.390182495117}, + {-99.005355834961, 19.541244506836}, + {-99.024098, 19.538713}, + {-99.229195, 19.597021}, + {-98.990707, 19.409409}, + {-99.085006713867, 19.412155151367}, + {-98.995742797852, 19.67170715332}, + {-99.155044555664, 19.642868041992}, + {-99.19075012207, 19.61540222168}, + {-69.978103637695, 18.487930297852}, + {-69.335403442383, 19.204788208008}, + {-69.987716674805, 18.435745239258}, + {-69.814682006836, 18.52912902832}, + {-69.945488, 18.493338}, + {71.407699584961, 51.100845336914}, + {71.37336730957, 51.181869506836}, + {76.946182250977, 43.262100219727}, + {71.496963500977, 51.133804321289}, + {76.935195922852, 43.281326293945}, + {54.010848999023, 46.979598999023}, + {76.837692260742, 43.308792114258}, + {80.280532836914, 50.404586791992}, + {82.593154907227, 49.982986450195}, + {73.062515258789, 49.809951782227}, + {80.233498, 13.038712}, + {80.232468, 12.931124}, + {80.264053344727, 13.02360534668}, + {80.254349, 13.056381}, + {80.280532836914, 13.093643188477}, + {80.184402, 12.625351}, + {80.21836, 13.0879}, + {80.19401550293, 12.972793579102}, + {80.138397, 12.946701}, + {78.046188354492, 16.00227355957}, + {88.431015014648, 26.730422973633}, + {80.220108032227, 13.022232055664}, + {76.638565063477, 12.308120727539}, + {77.624588012695, 12.934341430664}, + {77.571029663086, 12.978286743164}, + {75.08674621582, 15.322494506836}, + {77.602615356445, 12.791519165039}, + {77.582946, 13.015941}, + {76.671524, 12.335587}, + {76.657791, 12.318077}, + {76.70208, 12.307777}, + {153.426054, -27.99908}, + {153.403711, -27.93809}, + {153.43226, -28.019741}, + {153.032154, -27.48755}, + {153.061875, -27.591235}, + {152.960478, -27.50731}, + {153.102627, -26.687722}, + {153.0265045166, -27.470626831055}, + {153.025232, -27.465202}, + {138.629889, -35.493748}, + {153.026958, -27.467587}, + {138.506283, -35.15626}, + {138.573329, -34.679654}, + {138.519733, -35.034052}, + {138.604174, -34.92311}, + {138.692642, -34.688919}, + {138.587925, -34.899137}, + {115.863951, -31.945742}, + {114.627145, -28.761963}, + {115.915834, -31.950609}, + {115.65925598145, -32.586135864258}, + {115.694978, -32.042493}, + {151.592248, -32.732618}, + {-111.96235656738, 33.476028442383}, + {-112.29881286621, 33.562545776367}, + {-112.11616516113, 33.614730834961}, + {-112.0433807373, 33.462295532227}, + {-111.81953430176, 33.176651000977}, + {-111.892021, 33.408474}, + {-111.947982, 33.385703}, + {-111.792235, 33.386162}, + {-80.048446655273, 40.365829467773}, + {-79.937210083008, 40.424880981445}, + {-79.935836791992, 40.534744262695}, + {-79.749069213867, 40.574569702148}, + {-80.200881958008, 40.718765258789}, + {-80.196762084961, 40.678939819336}, + {-79.935836791992, 40.453720092773}, + {-79.846572875977, 40.504531860352}, + {-71.07605, 42.363281}, + {-123.18077087402, 44.069595336914}, + {-122.67677307129, 45.422286987305}, + {65.561599731445, 57.140579223633}, + {84.964828491211, 56.467666625977}, + {-122.667618, 45.456619}, + {82.911758422852, 55.065536499023}, + {82.878799, 55.044937}, + {82.892532348633, 55.05729675293}, + {82.933352, 55.029174}, + {82.899398803711, 55.03532409668}, + {78.357925415039, 55.351181030273}, + {83.051834106445, 55.077896118164}, + {82.996968, 54.987128}, + {83.098869, 54.84478}, + {82.900772094727, 55.04768371582}, + {113.50593566895, 52.040176391602}, + {135.170059, 48.527298}, + {37.578048706055, 55.834579467773}, + {135.09956359863, 48.479232788086}, + {142.72682189941, 47.004318237305}, + {37.586288452148, 55.874404907227}, + {107.698288, 51.852722}, + {48.054885864258, 29.27375793457}, + {47.914810180664, 29.244918823242}, + {47.951889038086, 29.316329956055}, + {48.00407409668, 29.374008178711}, + {47.997207641602, 29.320449829102}, + {48.013687133789, 29.368515014648}, + {48.130416870117, 29.078750610352}, + {47.873611450195, 29.281997680664}, + {47.4985, 29.605951}, + {47.995834350586, 29.34928894043}, + {47.68684387207, 29.906845092773}, + {48.021926879883, 29.332809448242}, + {48.067245483398, 29.331436157227}, + {48.030166625977, 29.288864135742}, + {48.107414, 29.19857}, + {47.641525268555, 29.321823120117}, + {48.172768, 28.886856}, + {48.109817504883, 29.192733764648}, + {47.874984741211, 29.266891479492}, + {47.932662963867, 29.266891479492}, + {48.009567260742, 29.279251098633}, + {17.139084, 52.203323}, + {17.035446, 52.107468}, + {16.965981, 52.380753}, + {16.93817, 52.325962}, + {16.877599, 52.236967}, + {14.514999389648, 53.442306518555}, + {16.875686645508, 52.35466003418}, + {14.50813293457, 53.386001586914}, + {14.615936, 53.277512}, + {14.722366333008, 53.402481079102}, + {14.564737, 53.428191}, + {20.262222290039, 51.121444702148}, + {14.677047729492, 53.197860717773}, + {17.012387, 51.101273}, + {16.980056762695, 51.085739135742}, + {17.052841186523, 51.128311157227}, + {17.107772827148, 51.113204956055}, + {17.208023071289, 50.874252319336}, + {7.5853729248047, 6.4743804931641}, + {3.349136, 6.598801}, + {3.255043, 6.696167}, + {3.2993316650391, 6.5416717529297}, + {3.3501434326172, 6.4592742919922}, + {3.4709930419922, 6.6625213623047}, + {7.4466705322266, 9.0122222900391}, + {7.447128, 8.976059}, + {3.338413, 6.634998}, + {9.4928741455078, 9.3555450439453}, + {7.6485443115234, 11.150436401367}, + {7.370682, 10.614853}, + {7.410769, 9.041258}, + {5.3963470458984, 6.7353057861328}, + {5.590668, 6.356277}, + {7.359085, 8.984451}, + {3.88916, 7.396545}, + {3.8884735107422, 7.4109649658203}, + {7.257156, 13.106689}, + {3.879547, 7.389679}, + {10.951309204102, 11.716232299805}, + {8.5672760009766, 12.008743286133}, + {8.861161, 9.998245}, + {8.8639068603516, 9.9529266357422}, + {72.824935913086, 18.954849243164}, + {73.003326, 19.056061}, + {72.934799194336, 19.050979614258}, + {72.997970581055, 19.180068969727}, + {73.029556274414, 19.159469604492}, + {73.086548, 19.213028}, + {72.980117797852, 19.186935424805}, + {73.11882019043, 19.009780883789}, + {73.069381713867, 19.049606323242}, + {72.847725, 19.123515}, + {72.837295532227, 19.103164672852}, + {72.859955, 19.162216}, + {72.848281860352, 19.12239074707}, + {72.838394, 18.958969}, + {72.845535, 19.169867}, + {72.831802368164, 18.930130004883}, + {72.831802368164, 18.957595825195}, + {72.827682495117, 19.202041625977}, + {72.870254516602, 19.05647277832}, + {72.990074, 19.071579}, + {72.963638305664, 19.199295043945}, + {72.99934387207, 19.208908081055}, + {7.234129, 47.132082}, + {6.129809, 46.201068}, + {9.3074798583984, 47.435531616211}, + {9.056854, 47.448578}, + {7.332458, 46.21994}, + {7.083572, 46.109482}, + {8.585238, 47.409119}, + {8.164902, 47.369614}, + {7.913964, 47.348265}, + {8.6565399169922, 47.327041625977}, + {6.134491, 46.19957}, + {6.6268157958984, 46.508560180664}, + {7.5482940673828, 47.508316040039}, + {6.6336822509766, 46.525039672852}, + {6.227531, 46.388397}, + {6.681473, 46.791183}, + {80.679703, 16.48613}, + {78.375778198242, 17.427749633789}, + {77.892379760742, 15.749588012695}, + {78.363418579102, 17.448348999023}, + {78.812484741211, 18.391799926758}, + {78.143692, 16.751175}, + {78.19725, 16.898346}, + {79.303207, 16.037064}, + {78.504867553711, 17.442855834961}, + {78.174591, 17.559586}, + {83.889541625977, 18.305282592773}, + {79.567337, 18.008652}, + {79.236831665039, 17.743606567383}, + {80.018235, 15.654831}, + {78.410110473633, 17.416763305664}, + {78.451309204102, 17.389297485352}, + {78.438949584961, 17.41813659668}, + {80.437088012695, 16.29753112793}, + {77.288131713867, 28.611831665039}, + {80.067672729492, 16.102523803711}, + {80.088272094727, 16.095657348633}, + {77.344436645508, 28.534927368164}, + {77.07389831543, 28.644790649414}, + {77.072525, 28.431244}, + {153.148497, -27.624356}, + {153.06907653809, -27.554397583008}, + {152.877413, -27.047183}, + {152.950394, -27.111381}, + {152.397537, -27.616196}, + {146.83296203613, -38.544845581055}, + {152.049192, -28.193848}, + {153.376988, -28.028208}, + {151.257637, -23.845508}, + {152.17643737793, -24.796829223633}, + {152.826361, -25.260776}, + {152.89192199707, -26.774368286133}, + {146.067352, -17.856216}, + {146.28227233887, -20.064468383789}, + {115.79109191895, -31.817092895508}, + {116.008591, -32.11461}, + {0.141958, 52.389878}, + {0.70930480957031, 52.243423461914}, + {1.129189, 52.077599}, + {1.103695, 52.054671}, + {1.196136, 52.131271}, + {-0.092697143554688, 51.521072387695}, + {0.072097778320312, 51.588363647461}, + {-0.118269, 51.513006}, + {-2.238623, 53.508436}, + {-2.240982, 53.477554}, + {-2.271473, 53.465926}, + {-1.356809, 53.725471}, + {-2.989815, 53.405804}, + {-1.482593, 53.62433}, + {-3.129957, 53.246842}, + {-3.004761, 53.34137}, + {-2.092209, 53.398636}, + {-3.094711, 53.194839}, + {-2.704447, 53.21434}, + {27.731552124023, 60.956954956055}, + {22.709426879883, 63.549728393555}, + {27.079238891602, 64.54948425293}, + {25.74577331543, 63.533248901367}, + {24.949264526367, 60.168685913086}, + {24.842147827148, 64.278945922852}, + {24.960250854492, 60.187911987305}, + {25.078353881836, 60.224990844727}, + {25.050888061523, 60.24284362793}, + {24.975357055664, 60.194778442383}, + {23.806686401367, 60.381546020508}, + {24.335403442383, 60.426864624023}, + {24.572982788086, 60.259323120117}, + {24.813328, 60.347126}, + {24.798202514648, 60.179672241211}, + {25.07698059082, 60.226364135742}, + {25.070114135742, 60.19889831543}, + {25.127792358398, 60.400772094727}, + {25.109939575195, 60.485916137695}, + {25.097579956055, 60.413131713867}, + {25.115432739258, 60.360946655273}, + {30.380543, -29.606052}, + {26.190207, -29.23631}, + {27.842788696289, -25.71418762207}, + {18.519515991211, -33.923721313477}, + {28.348159790039, -24.987716674805}, + {25.618057250977, -33.958053588867}, + {18.821640014648, -34.028091430664}, + {25.559005737305, -33.951187133789}, + {18.676071166992, -33.859176635742}, + {25.568618774414, -33.940200805664}, + {18.665084838867, -33.901748657227}, + {28.297348022461, -26.098709106445}, + {27.108078, -26.709824}, + {27.829055786133, -26.762008666992}, + {28.039896, -26.23339}, + {27.802963256836, -25.649642944336}, + {18.482376, -33.944813}, + {18.403631, -34.128342}, + {18.862838745117, -34.113235473633}, + {18.468704223633, -34.012985229492}, + {18.371201, -34.019165}, + {78.122406, 11.67366}, + {78.164291381836, 11.657180786133}, + {78.151931762695, 11.655807495117}, + {78.614730834961, 10.690383911133}, + {78.003616333008, 12.154312133789}, + {77.911605834961, 9.8499298095703}, + {78.153854, 12.155685}, + {78.547439575195, 12.47428894043}, + {79.76692199707, 11.909866333008}, + {79.687958, 12.275162}, + {77.812728881836, 9.4805145263672}, + {78.414574, 10.944099}, + {76.981201, 11.012582}, + {78.253555297852, 9.0369415283203}, + {76.944808959961, 11.032333374023}, + {80.002441, 13.130035}, + {78.862839, 10.337906}, + {79.935837, 12.637779}, + {77.781143188477, 10.073776245117}, + {77.182388305664, 8.2555389404297}, + {78.16291809082, 8.8076019287109}, + {79.304122924805, 11.449813842773}, + {80.145950317383, 13.336715698242}, + {77.836497, 12.747257}, + {139.66575622559, 35.636215209961}, + {139.65751647949, 35.630722045898}, + {139.71244812012, 35.562057495117}, + {139.714096, 35.638138}, + {139.695969, 35.566635}, + {139.614258, 35.523605}, + {139.69596862793, 35.524978637695}, + {139.654083, 35.561371}, + {139.66026306152, 35.659561157227}, + {139.59159851074, 35.669174194336}, + {139.532089, 35.648575}, + {139.62181091309, 35.627975463867}, + {139.59925, 35.60463}, + {139.55589294434, 35.629348754883}, + {139.567129, 35.512494}, + {139.893265, 35.735092}, + {139.87174987793, 35.678787231445}, + {139.858292, 35.663956}, + {139.79759216309, 35.65544128418}, + {139.85389709473, 35.722732543945}, + {139.849319, 35.650177}, + {139.8690032959, 35.76530456543}, + {139.79347229004, 35.802383422852}, + {139.77561950684, 35.671920776367}, + {139.826431, 35.783844}, + {-6.190933, 36.464584}, + {-5.838393, 36.225971}, + {-6.078414, 36.258316}, + {-5.501175, 36.081162}, + {-6.361771, 36.743546}, + {-6.9179534912109, 37.27180480957}, + {-7.308997, 37.21447}, + {-3.1867218017578, 38.080673217773}, + {-4.154205, 36.858788}, + {-6.0253143310547, 37.39128112793}, + {-0.88096618652344, 41.663589477539}, + {0.045342, 41.512717}, + {-0.86174011230469, 41.663589477539}, + {-0.884743, 41.647797}, + {-2.1691131591797, 42.580947875977}, + {-5.638504, 43.288193}, + {-4.744491, 43.41362}, + {-5.8687591552734, 43.586196899414}, + {-5.77034, 43.558273}, + {-5.899447, 43.552023}, + {2.763375, 39.514639}, + {2.616806, 39.582367}, + {145.57914733887, 43.303298950195}, + {144.59861755371, 43.321151733398}, + {140.87562561035, 38.169937133789}, + {141.56776428223, 38.895034790039}, + {140.973129, 38.279114}, + {140.84953308105, 38.230361938477}, + {140.85502624512, 38.263320922852}, + {140.879745, 38.315898}, + {140.758438, 38.214798}, + {141.146289, 39.70253}, + {141.14479064941, 39.702529907227}, + {140.27137756348, 38.146591186523}, + {140.297288, 38.157719}, + {140.008907, 37.547579}, + {139.81407165527, 38.735733032227}, + {140.45539855957, 37.784042358398}, + {140.87425231934, 37.069931030273}, + {141.412582, 40.675735}, + {141.43592834473, 40.56770324707}, + {140.33180236816, 37.200393676758}, + {140.87425231934, 38.268814086914}, + {140.48835754395, 39.481430053711}, + {140.1065826416, 39.727249145508}, + {140.87013244629, 38.268814086914}, + {113.40705871582, 35.21598815918}, + {121.620712, 38.914261}, + {123.45268249512, 41.795425415039}, + {123.48976135254, 41.759719848633}, + {122.02445983887, 39.694290161133}, + {122.89100646973, 40.997543334961}, + {121.59599304199, 38.94172668457}, + {121.57539367676, 38.936233520508}, + {121.4916229248, 38.974685668945}, + {119.90821838379, 40.00602722168}, + {120.67039489746, 40.639114379883}, + {121.580887, 38.88588}, + {121.52320861816, 38.967819213867}, + {121.54655456543, 38.967819213867}, + {126.52610778809, 43.838882446289}, + {125.25444030762, 43.815536499023}, + {126.54670715332, 43.838882446289}, + {113.74488830566, 40.887680053711}, + {113.88633728027, 40.876693725586}, + {126.61811828613, 45.657119750977}, + {115.65101623535, 32.202987670898}, + {114.06623840332, 35.314865112305}, + {113.83964538574, 35.421981811523}, + {118.755569, 32.014847}, + {38.890914916992, 47.243270874023}, + {40.234009, 48.117145}, + {40.967330932617, 46.273727416992}, + {39.7061, 47.226654}, + {41.174355, 55.026398}, + {50.111291, 53.202962}, + {49.327926635742, 53.537063598633}, + {50.151215, 53.194885}, + {50.181656, 53.19191}, + {49.231796264648, 53.55354309082}, + {142.72132873535, 46.884841918945}, + {46.005936, 51.557922}, + {59.736105, 58.431477}, + {60.590973, 56.824036}, + {64.265213012695, 57.001876831055}, + {35.945549, 56.846008}, + {32.040939331055, 54.767532348633}, + {-51.079582, -27.01445}, + {-52.632064819336, -26.995468139648}, + {-48.595962524414, -27.601089477539}, + {-50.793954, -29.921603}, + {-49.130262, -27.684091}, + {-48.859634399414, -26.304702758789}, + {-49.071879, -26.946501}, + {-49.209823608398, -25.412063598633}, + {-51.24641418457, -30.081253051758}, + {-51.223829, -30.104909}, + {-49.067001342773, -28.615951538086}, + {-48.542881, -25.814361}, + {-51.220069, -30.043157}, + {-48.560256958008, -27.157516479492}, + {-52.022628, -25.449864}, + {-51.142044067383, -29.680252075195}, + {-51.03592, -29.651802}, + {-50.843124, -29.667535}, + {-51.196975708008, -29.921951293945}, + {-117.852219, 33.660324}, + {-117.84278869629, 33.872909545898}, + {-117.992477, 33.77463}, + {-117.87574768066, 33.77815246582}, + {-117.840042, 33.867416}, + {-117.342752, 34.47447}, + {-117.612763, 34.141388}, + {-117.764112, 34.085194}, + {-117.695847, 33.973534}, + {-116.918293, 33.474118}, + {-117.27253, 33.919144}, + {-117.46376, 33.757606}, + {-117.27424621582, 33.938827514648}, + {-117.577675, 34.069908}, + {-117.525596, 33.827525}, + {-117.415602, 34.084854}, + {-117.24540710449, 32.956924438477}, + {-117.252315, 32.97769}, + {-117.227417, 33.217438}, + {-117.077572, 33.028258}, + {-117.121353, 32.823257}, + {-117.076492, 32.848091}, + {-117.173629, 32.837313}, + {-1.4797210693359, 55.086135864258}, + {-2.5893402099609, 49.459762573242}, + {-2.5811004638672, 49.484481811523}, + {10.784944, 59.906406}, + {25.749664, 62.246933}, + {22.364044, 60.402832}, + {22.345513, 60.467468}, + {23.652878, 61.451798}, + {28.777176, 61.168442}, + {22.931425, 62.835374}, + {26.686622, 60.88542}, + {23.840332, 63.16864}, + {24.714431762695, 60.249710083008}, + {23.890738, 60.406542}, + {24.806823, 60.194407}, + {26.903457641602, 67.165603637695}, + {29.926748, 62.496635}, + {23.501317, 61.495676}, + {23.019790649414, 59.855575561523}, + {23.713302612305, 60.11100769043}, + {22.107101, 60.564194}, + {21.579854, 51.944524}, + {19.517853, 52.065961}, + {19.922409, 50.070877}, + {19.013981, 50.260974}, + {19.129257202148, 50.238418579102}, + {18.802757, 50.73143}, + {19.063928, 49.807205}, + {18.982315063477, 50.21369934082}, + {16.928657, 52.428732}, + {16.966679, 51.104205}, + {16.880094, 52.417969}, + {17.820510864258, 51.615829467773}, + {17.256088256836, 51.490859985352}, + {16.762616, 53.159288}, + {14.959215, 53.301968}, + {18.585114, 54.414925}, + {18.021011352539, 53.13606262207}, + {18.139114379883, 53.140182495117}, + {17.483748, 53.153751}, + {21.026461, 52.180229}, + {20.749981, 52.140815}, + {20.987319946289, 52.180252075195}, + {20.856857299805, 51.908340454102}, + {20.931702, 52.165146}, + {21.14387512207, 52.232437133789}, + {21.022052, 52.095923}, + {22.22053527832, 52.172012329102}, + {21.610107, 51.882248}, + {22.330124, 50.753952}, + {22.157363891602, 52.70622253418}, + {22.792511, 51.992798}, + {23.397445678711, 50.456771850586}, + {22.55012512207, 51.203842163086}, + {22.551498413086, 51.245040893555}, + {22.01042175293, 51.133804321289}, + {21.842880249023, 51.309585571289}, + {21.102676391602, 51.391983032227}, + {21.164474487305, 51.401596069336}, + {21.165848, 51.377166}, + {21.202704, 51.841412}, + {21.193313598633, 51.788864135742}, + {-99.161911010742, 19.456100463867}, + {-99.16877746582, 19.41764831543}, + {-100.2742767334, 25.645523071289}, + {-99.092697, 19.367386}, + {-104.516143, 21.16775}, + {-103.79539489746, 20.36247253418}, + {-95.25764465332, 16.31950378418}, + {-97.24479675293, 19.59342956543}, + {-97.725448608398, 18.879318237305}, + {-97.972640991211, 19.343490600586}, + {-106.09840393066, 28.644790649414}, + {-110.96672058105, 29.352035522461}, + {-106.4266204834, 23.198318481445}, + {-106.44721984863, 23.238143920898}, + {-99.054794311523, 19.306411743164}, + {-98.874893188477, 19.684066772461}, + {-98.964157104492, 19.711532592773}, + {36.170425, 56.001022}, + {35.949325561523, 56.028213500977}, + {37.934555, 55.805191}, + {37.540969848633, 55.412979125977}, + {37.56706237793, 55.44319152832}, + {38.320213, 54.827954}, + {37.307133, 55.665766}, + {37.741470336914, 55.046310424805}, + {37.922744750977, 55.620346069336}, + {37.448959350586, 55.616226196289}, + {37.818374633789, 55.526962280273}, + {37.269058, 55.658798}, + {37.829360961914, 55.697250366211}, + {37.411880493164, 55.642318725586}, + {37.354202270508, 55.638198852539}, + {37.440719604492, 55.654678344727}, + {37.933273, 55.912857}, + {37.767562866211, 55.440444946289}, + {36.752700805664, 56.326217651367}, + {37.968063, 55.733643}, + {90.221786499023, 22.974472045898}, + {90.337142944336, 22.441635131836}, + {90.419540405273, 23.727035522461}, + {90.353622436523, 23.798446655273}, + {90.381088256836, 23.74626159668}, + {90.247193, 24.011993}, + {90.378341674805, 23.750381469727}, + {90.415420532227, 23.792953491211}, + {90.374221801758, 23.740768432617}, + {90.65506, 23.561211}, + {90.387954711914, 23.739395141602}, + {90.397567749023, 24.626541137695}, + {90.37971496582, 23.779220581055}, + {90.348129272461, 23.783340454102}, + {90.603561401367, 24.947891235352}, + {90.415420532227, 24.137649536133}, + {90.396194, 23.766174}, + {90.375595092773, 23.739395141602}, + {90.360488891602, 23.759994506836}, + {90.376968383789, 23.738021850586}, + {90.422286987305, 23.720169067383}, + {90.41130065918, 23.720169067383}, + {90.425033569336, 23.695449829102}, + {90.541077, 23.555375}, + {49.84016418457, 40.386428833008}, + {49.809951782227, 40.343856811523}, + {69.597452, 42.34599}, + {76.891708, 43.190231}, + {76.918716430664, 43.167343139648}, + {76.891251, 43.202133}, + {76.971952, 43.295544}, + {76.917294, 43.264209}, + {51.29035949707, 51.18049621582}, + {67.68196105957, 47.79670715332}, + {71.468124389648, 51.129684448242}, + {71.396713256836, 51.089859008789}, + {73.048782348633, 49.792098999023}, + {71.464004516602, 51.170883178711}, + {71.440658569336, 51.161270141602}, + {82.678298950195, 49.918441772461}, + {71.406326293945, 51.192855834961}, + {-46.655502319336, -23.541641235352}, + {-51.359362, -29.492044}, + {-47.801373, -15.654169}, + {-51.128311157227, -29.130935668945}, + {-51.060812, -29.678385}, + {-47.892151, -15.830269}, + {-47.962875366211, -15.900650024414}, + {-51.209335327148, -30.029067993164}, + {-47.788094, -15.763016}, + {-51.228689, -30.042094}, + {-51.233251, -30.040456}, + {-43.526748, -22.772591}, + {-43.443374633789, -22.74787902832}, + {-43.425521850586, -22.81379699707}, + {-51.095494, -29.940393}, + {-47.879196, -15.747574}, + {-50.390853881836, -30.163650512695}, + {-48.046646118164, -15.775680541992}, + {-47.859878540039, -15.737228393555}, + {-47.960718, -15.886906}, + {14.393411, 67.287073}, + {8.373642, 58.972549}, + {9.8320770263672, 58.969802856445}, + {10.404739379883, 59.140090942383}, + {10.772634, 61.008284}, + {9.410992, 58.865776}, + {11.020966, 59.249055}, + {9.968189, 59.406034}, + {5.5529022216797, 59.361190795898}, + {8.922682, 63.630205}, + {5.359621, 60.366193}, + {7.797781, 63.034745}, + {5.697974, 58.949514}, + {11.17691, 60.225999}, + {10.086304, 59.756701}, + {10.756467, 59.928067}, + {11.263602, 60.00785}, + {10.835639, 59.851266}, + {10.711465, 59.932995}, + {10.752942, 59.940891}, + {3.917642, 50.963872}, + {4.604648, 50.671142}, + {-43.45573425293, -22.754745483398}, + {-43.299046, -22.660986}, + {-42.966305, -22.411337}, + {-43.992691, -19.905853}, + {-44.084701538086, -22.610549926758}, + {-43.198928833008, -22.627029418945}, + {-46.416549682617, -23.467483520508}, + {-46.398696899414, -23.470230102539}, + {-48.501205444336, -27.550277709961}, + {-40.481185913086, -3.3391571044922}, + {-46.740646362305, -23.551254272461}, + {-46.680824, -23.465686}, + {-46.744766235352, -23.537521362305}, + {-46.745358, -23.508196}, + {-46.772768, -23.505595}, + {-46.776351928711, -23.584213256836}, + {-46.681594848633, -23.525161743164}, + {-46.894454956055, -23.188705444336}, + {-46.55387878418, -23.358993530273}, + {-43.339004516602, -23.01155090332}, + {-43.391547, -22.970959}, + {16.11145, 47.27623}, + {15.312881469727, 47.883224487305}, + {16.162906, 47.933815}, + {16.478119, 48.0336}, + {16.775837, 47.791013}, + {16.091537475586, 48.01643371582}, + {15.410385131836, 47.097702026367}, + {15.376052856445, 47.05924987793}, + {15.389785766602, 47.035903930664}, + {15.590286254883, 47.033157348633}, + {15.311508178711, 46.932907104492}, + {13.968155, 46.59343}, + {14.306259155273, 46.61018371582}, + {14.313126, 46.607437}, + {13.083172, 46.739616}, + {13.784408569336, 46.72966003418}, + {13.60286, 47.027664}, + {14.917373657227, 46.957626342773}, + {14.414749145508, 46.757125854492}, + {14.309005737305, 48.307571411133}, + {14.295272827148, 48.300704956055}, + {14.329605102539, 48.25813293457}, + {14.302139, 48.25264}, + {77.279107, 12.718931}, + {75.368271, 13.53653}, + {74.796981811523, 13.346328735352}, + {76.008224, 13.577042}, + {76.461410522461, 13.261184692383}, + {76.755294799805, 15.774307250977}, + {77.712478637695, 13.004379272461}, + {77.685012817383, 12.932968139648}, + {77.719345092773, 12.996139526367}, + {77.680892944336, 12.981033325195}, + {77.627334594727, 12.94807434082}, + {77.53532409668, 12.963180541992}, + {77.522964477539, 12.974166870117}, + {77.568283081055, 12.923355102539}, + {77.654114, 13.355255}, + {77.580642700195, 12.946701049805}, + {77.583389282227, 12.905502319336}, + {77.553176879883, 12.910995483398}, + {77.654800415039, 12.839584350586}, + {77.654800415039, 12.846450805664}, + {77.639694, 12.951409}, + {-44.167974, -19.962634}, + {-43.930337, -19.923499}, + {-43.33666, -21.763874}, + {-43.965645, -19.92698}, + {-43.345634, -21.765196}, + {-43.900680541992, -19.858474731445}, + {-43.958262, -19.926067}, + {-43.889078, -19.808583}, + {-42.594680786133, -19.548110961914}, + {-38.396530151367, -12.937088012695}, + {-39.738487, -14.134258}, + {-38.385543823242, -12.941207885742}, + {-38.949836, -12.308521}, + {-37.060009, -10.937938}, + {-37.03971862793, -10.92658996582}, + {-38.39018, -12.823968}, + {-34.926223754883, -8.0330657958984}, + {-35.799945, -9.534186}, + {-35.722732543945, -9.4393157958984}, + {-34.922312, -8.186794}, + {-34.896698, -8.11615}, + {-73.611831665039, 45.614547729492}, + {-73.561019897461, 45.593948364258}, + {-71.311569213867, 46.768112182617}, + {-71.359046, 46.762619}, + {-71.25618, 46.81572}, + {-79.344672, 43.909805}, + {-79.372787, 43.846024}, + {-79.393387, 43.963165}, + {-77.490005493164, 46.099319458008}, + {-79.466171264648, 44.038009643555}, + {-79.017921, 44.745475}, + {-82.16194152832, 42.424392700195}, + {-79.882189, 44.607059}, + {-81.725234985352, 43.733139038086}, + {75.134811401367, 15.344467163086}, + {76.726455688477, 9.1564178466797}, + {76.118087768555, 11.122970581055}, + {76.552047729492, 10.027084350586}, + {76.748428344727, 8.8282012939453}, + {76.432228, 9.619904}, + {76.318588256836, 10.304489135742}, + {76.792373657227, 9.5615386962891}, + {75.998611450195, 10.982894897461}, + {76.925582885742, 8.4889984130859}, + {76.140060424805, 11.650314331055}, + {76.948928833008, 8.5109710693359}, + {76.523208618164, 9.1701507568359}, + {79.993515014648, 14.435348510742}, + {79.341201782227, 13.678665161133}, + {83.411636352539, 18.113021850586}, + {78.496627807617, 17.404403686523}, + {79.103622436523, 13.248825073242}, + {77.59162902832, 14.69352722168}, + {78.502142, 17.433661}, + {121.24305725098, 24.979476928711}, + {121.01921081543, 24.833908081055}, + {120.87089538574, 24.283218383789}, + {121.27326965332, 24.903945922852}, + {120.669022, 23.941956}, + {120.67863464355, 24.218673706055}, + {120.66215515137, 24.150009155273}, + {121.36665344238, 24.94514465332}, + {120.4808807373, 22.75749206543}, + {120.297546, 22.620163}, + {121.5259552002, 25.049514770508}, + {121.50652, 25.086125}, + {121.547591, 25.020014}, + {121.52320861816, 25.111312866211}, + {121.51222229004, 25.056381225586}, + {121.58500671387, 25.12092590332}, + {121.543585, 25.059593}, + {121.788597, 25.131569}, + {121.56852722168, 25.04264831543}, + {121.683884, 25.187302}, + {121.615675, 25.060973}, + {121.484862, 25.060974}, + {121.450465, 25.091345}, + {-120.320206, 46.350632}, + {-85.990676879883, 36.281661987305}, + {-86.023635864258, 36.174545288086}, + {-118.490158, 34.158554}, + {-118.874817, 34.301376}, + {-118.754997, 34.028091}, + {-117.918663, 33.712921}, + {-118.207978, 33.95668}, + {-117.932053, 33.914049}, + {-117.792892, 34.005203}, + {-117.488855, 34.241681}, + {-117.256088, 34.111252}, + {-118.616295, 34.489346}, + {-117.92930603027, 34.066543579102}, + {-118.31657409668, 34.177780151367}, + {-118.1861114502, 34.10774230957}, + {-117.93754577637, 33.785018920898}, + {-117.89772033691, 33.694381713867}, + {-117.152872, 32.722132}, + {-117.27424621582, 33.208236694336}, + {-115.15892, 32.723923}, + {-89.329147338867, 43.053359985352}, + {-88.046493530273, 43.054733276367}, + {-88.029098, 44.591904}, + {-88.14743, 44.403992}, + {144.22645568848, -37.68928527832}, + {137.795364, -34.890662}, + {146.616517, -37.145174}, + {146.318893, -36.392441}, + {150.88966369629, -32.270278930664}, + {151.25157, -33.872738}, + {151.045281, -33.824791}, + {151.240425, -33.876572}, + {151.20002746582, -33.871536254883}, + {151.031732, -33.896009}, + {150.808955, -34.563311}, + {151.19178771973, -33.871536254883}, + {150.88234, -34.42955}, + {151.293448, -33.76533}, + {151.22062683105, -33.835830688477}, + {151.209183, -33.849564}, + {151.185982, -33.78658}, + {151.20277404785, -33.871536254883}, + {151.19253, -33.871432}, + {151.209515, -33.877965}, + {-83.057327, 42.527161}, + {-82.625427, 43.058853}, + {-83.62174987793, 44.278335571289}, + {-83.546528, 42.216854}, + {-83.726807, 42.827516}, + {-83.244095, 42.55806}, + {-84.43412, 42.402077}, + {-83.942824, 41.897049}, + {-83.358872, 42.496024}, + {-83.879105, 43.396042}, + {-83.990707, 42.297478}, + {-83.575057983398, 41.899795532227}, + {-83.012009, 42.682571}, + {-84.029929, 42.324642}, + {-84.640731811523, 41.910781860352}, + {-83.77422, 43.179973}, + {-83.193146, 42.128998}, + {-86.020301, 41.621802}, + {-85.320510864258, 40.99479675293}, + {-86.336746, 41.722641}, + {-85.098037719727, 41.06071472168}, + {-116.269913, 43.634262}, + {-116.216812, 43.59478}, + {77.188911, 28.731995}, + {77.132949829102, 28.665390014648}, + {77.181015014648, 28.47038269043}, + {76.991500854492, 28.407211303711}, + {77.194747924805, 28.576126098633}, + {77.050552368164, 28.696975708008}, + {77.067031860352, 28.342666625977}, + {79.420852661133, 13.627853393555}, + {78.399353, 17.437592}, + {78.470143, 17.409112}, + {78.448563, 17.437559}, + {79.066968, 17.648412}, + {80.43571472168, 16.371688842773}, + {72.552338, 23.003998}, + {78.388137817383, 17.499160766602}, + {78.510360717773, 17.372817993164}, + {80.441207885742, 16.290664672852}, + {73.183364868164, 22.346878051758}, + {72.599716186523, 23.022537231445}, + {77.517471313477, 12.987899780273}, + {77.494125366211, 12.777786254883}, + {77.542190551758, 12.875289916992}, + {77.788009643555, 13.743209838867}, + {77.695999145508, 12.714614868164}, + {114.2928314209, 29.85466003418}, + {114.8119354248, 30.46028137207}, + {111.99256896973, 27.732925415039}, + {111.38832092285, 26.381607055664}, + {112.19169616699, 25.385971069336}, + {113.13377380371, 27.466506958008}, + {112.95249938965, 25.36262512207}, + {109.50828552246, 18.254470825195}, + {109.84062194824, 18.478317260742}, + {111.26884460449, 23.479843139648}, + {110.4142, 24.821548}, + {109.831925, 18.415146}, + {110.87608337402, 24.754257202148}, + {110.87471008301, 24.752883911133}, + {110.29792785645, 25.23078918457}, + {110.32402038574, 25.254135131836}, + {111.03950500488, 23.356246948242}, + {108.32038879395, 22.817916870117}, + {110.298363, 25.271578}, + {109.17594909668, 23.618545532227}, + {104.03022766113, 30.664901733398}, + {114.965744, 24.695206}, + {103.980789, 30.648422}, + {115.89546203613, 28.622817993164}, + {80.166549682617, 12.983779907227}, + {80.204865, 13.014198}, + {80.057773, 12.84563}, + {80.196762084961, 13.063430786133}, + {80.060806274414, 12.845077514648}, + {80.167922973633, 13.074417114258}, + {80.161056518555, 13.011245727539}, + {80.144577026367, 12.976913452148}, + {80.108871459961, 13.132095336914}, + {80.251694, 13.067093}, + {80.264053344727, 13.044204711914}, + {78.141403, 11.676407}, + {76.973648071289, 11.028213500977}, + {78.683395385742, 10.793380737305}, + {77.396621704102, 10.969161987305}, + {76.96403503418, 11.011734008789}, + {80.022354125977, 13.082656860352}, + {76.98600769043, 11.013107299805}, + {77.007186, 11.029934}, + {79.588394, 12.892113}, + {77.985763549805, 11.679153442383}, + {78.801498413086, 10.09162902832}, + {78.686485, 10.837669}, + {79.070663452148, 11.135330200195}, + {45.338516235352, 50.177993774414}, + {38.225502, 45.268267}, + {38.242721557617, 45.282211303711}, + {38.129195, 45.23552}, + {39.004949, 45.05375}, + {40.354843139648, 45.44563293457}, + {41.097793579102, 45.000686645508}, + {39.383926391602, 46.299819946289}, + {38.944473266602, 45.002059936523}, + {38.988418579102, 45.11604309082}, + {37.328109741211, 44.916915893555}, + {37.370681762695, 44.823532104492}, + {38.968735, 45.064926}, + {38.23494, 44.544296}, + {38.963045, 45.06111}, + {38.288040161133, 45.371475219727}, + {39.06189, 44.106674}, + {40.336990356445, 45.437393188477}, + {39.025714, 45.044036}, + {-50.114822387695, -20.888442993164}, + {-45.366358, -23.797957}, + {-48.038063, -21.124306}, + {-51.845028, -21.628637}, + {-51.444474, -22.155197}, + {-50.347606, -21.303854}, + {-46.530718, -22.588597}, + {-50.481167, -20.663881}, + {-50.077915, -22.394462}, + {-46.332337, -23.397199}, + {-49.35173, -23.664322}, + {-45.214336, -22.775378}, + {-47.70981, -23.112194}, + {-46.584091186523, -23.536148071289}, + {-46.463703, -23.134441}, + {-115.080643, 36.159439}, + {-115.0681, 36.224204}, + {-115.298904, 36.194046}, + {-115.09071350098, 36.017990112305}, + {-115.179634, 36.048889}, + {-115.176477, 36.267542}, + {-115.16761779785, 36.104507446289}, + {-95.588607788086, 41.496047973633}, + {-96.798627, 43.270016}, + {-96.755905151367, 44.455490112305}, + {-96.816329956055, 48.021926879883}, + {-99.367904663086, 48.281478881836}, + {-98.434069, 44.113541}, + {-100.04013, 45.514984}, + {-98.180924, 47.342148}, + {-106.168833, 40.652063}, + {-96.015278, 41.286246}, + {-98.079579, 46.910935}, + {-105.159587, 39.77679}, + {-105.160207, 39.776284}, + {-105.256686, 40.346629}, + {32.550430297852, -25.935287475586}, + {34.838333129883, -19.836502075195}, + {32.561416625977, -25.887222290039}, + {32.749557495117, -15.604019165039}, + {32.586135864258, -25.968246459961}, + {39.291746, -15.151839}, + {32.575149536133, -25.970993041992}, + {40.536117553711, -12.986526489258}, + {36.987533569336, -16.83723449707}, + {32.399368286133, -25.936660766602}, + {32.606735229492, -25.87760925293}, + {40.676193237305, -14.545211791992}, + {32.575149536133, -25.972366333008}, + {32.479019165039, -25.944900512695}, + {28.322067260742, -15.444717407227}, + {28.290481567383, -15.399398803711}, + {28.65303, -13.010559}, + {28.311080932617, -15.433731079102}, + {28.135299682617, -12.84782409668}, + {28.289566, -15.42366}, + {28.46901, -14.414063}, + {100.53245544434, 13.949203491211}, + {100.50498962402, 13.76106262207}, + {100.5558013916, 13.721237182617}, + {100.52696228027, 13.728103637695}, + {100.56678771973, 13.971176147461}, + {100.93894958496, 13.19938659668}, + {100.56129455566, 13.740463256836}, + {100.94032287598, 13.28727722168}, + {100.955772, 13.316116}, + {100.5558013916, 13.715744018555}, + {100.54756164551, 13.743209838867}, + {100.58738708496, 13.734970092773}, + {100.62171936035, 13.759689331055}, + {100.63133239746, 13.743209838867}, + {100.51460266113, 13.751449584961}, + {100.60935974121, 13.711624145508}, + {100.54481506348, 13.755569458008}, + {100.54756164551, 13.707504272461}, + {100.3182220459, 13.887405395508}, + {100.3882598877, 13.940963745117}, + {100.44593811035, 13.751449584961}, + {100.51872253418, 13.906631469727}, + {77.719085, 12.991611}, + {77.749557495117, 13.064804077148}, + {77.54768371582, 12.981033325195}, + {77.597122192383, 12.961807250977}, + {77.578745, 12.813579}, + {77.611444, 12.98221}, + {77.386322, 12.802849}, + {76.936569213867, 8.4752655029297}, + {76.641311645508, 12.287521362305}, + {77.573776245117, 12.937088012695}, + {75.78987121582, 11.254806518555}, + {76.569900512695, 8.9655303955078}, + {75.365524291992, 11.875534057617}, + {76.704025, 9.193039}, + {76.786880493164, 9.4805145263672}, + {76.838791, 9.788681}, + {76.837692, 9.826584}, + {76.075859, 11.751595}, + {76.179885864258, 10.802993774414}, + {76.017837524414, 11.489639282227}, + {76.100234985352, 10.837326049805}, + {18.864212036133, 49.720687866211}, + {19.04686, 50.260563}, + {18.641052, 50.358582}, + {18.687057495117, 50.747909545898}, + {18.467331, 54.465408}, + {18.69873, 54.349365}, + {16.106231, 54.200569}, + {17.318761, 53.656443}, + {15.92399597168, 54.05891418457}, + {-121.670716, 36.688328}, + {-122.38838195801, 37.616500854492}, + {-123.216682, 39.164164}, + {-122.118106, 37.881152}, + {-122.32109069824, 38.334732055664}, + {-122.26615905762, 38.333358764648}, + {-122.344453, 38.257911}, + {-122.14942932129, 37.69889831543}, + {-122.09985, 37.688625}, + {-124.147647, 40.562218}, + {-121.843857, 36.624143}, + {-121.945152, 37.268372}, + {-122.00660705566, 37.289657592773}, + {-80.6013, 28.507658}, + {-78.485641479492, 35.942459106445}, + {-94.27848815918, 36.508255004883}, + {-122.36640930176, 37.598648071289}, + {-83.859329223633, 33.595504760742}, + {-76.218338012695, 42.569961547852}, + {-122.69050598145, 47.770614624023}, + {0.574722, 49.142694}, + {0.891952, 49.7612}, + {2.2762298583984, 46.747512817383}, + {2.8035736083984, 46.868362426758}, + {2.02729, 47.854885}, + {2.7500152587891, 47.134780883789}, + {1.8724822998047, 47.940902709961}, + {1.301193, 45.863114}, + {0.20805358886719, 45.648880004883}, + {1.2888336181641, 45.858993530273}, + {5.024873, 45.503998}, + {4.8758697509766, 45.003433227539}, + {0.024717, 45.635491}, + {4.7824859619141, 44.342880249023}, + {2.530383, 48.630295}, + {2.3847198486328, 48.683853149414}, + {2.807951, 48.659391}, + {5.986251, 45.378647}, + {3.914566, 50.136642}, + {5.996475, 45.270538}, + {4.219535, 49.143023}, + {4.7989654541016, 45.317916870117}, + {44.265975952148, 46.325912475586}, + {51.705093, 52.765274}, + {47.458877563477, 43.003921508789}, + {46.165237426758, 48.307571411133}, + {48.389648, 41.662677}, + {38.920441, 45.632401}, + {40.264205932617, 48.174362182617}, + {39.858261, 47.2202}, + {39.059829711914, 45.835647583008}, + {39.961923, 43.410184}, + {37.630233764648, 44.680709838867}, + {37.038345336914, 55.629959106445}, + {38.076897, 44.569817}, + {37.324678, 44.937517}, + {37.418687, 55.764482}, + {37.328373, 55.691348}, + {37.590225, 55.772598}, + {-74.843517, 11.015795}, + {-74.773635864258, 10.955429077148}, + {-74.803848, 10.974655}, + {-74.799728393555, 10.999374389648}, + {-74.803848266602, 10.93620300293}, + {-74.164993, 10.933456}, + {-73.24955, 10.47185}, + {-74.196304, 11.24437}, + {-73.235549926758, 10.43083190918}, + {-75.453414916992, 8.9572906494141}, + {-75.88737487793, 8.7554168701172}, + {-75.40136, 9.314368}, + {-76.385879516602, 3.5135650634766}, + {-76.566967, 3.819188}, + {-76.41471862793, 3.5300445556641}, + {-76.485551, 3.56764}, + {-75.472640991211, 10.381393432617}, + {-75.529138, 10.41295}, + {-75.464401245117, 10.404739379883}, + {-73.136672973633, 7.1459197998047}, + {77.43857, 28.666514}, + {77.202399, 28.596725}, + {72.907745, 19.070343}, + {72.846909, 18.954025}, + {77.163162231445, 28.721694946289}, + {72.848969, 19.214401}, + {72.843704, 18.959885}, + {73.01857, 19.055099}, + {76.387252807617, 27.697219848633}, + {73.127918, 19.234657}, + {77.554550170898, 27.320938110352}, + {76.237564086914, 24.434280395508}, + {74.586868286133, 28.205337524414}, + {75.35041809082, 28.210830688477}, + {73.144912719727, 26.535415649414}, + {75.747986, 27.073059}, + {72.079238891602, 26.862258911133}, + {76.130447387695, 24.480972290039}, + {72.969131469727, 26.240158081055}, + {75.792214, 26.914202}, + {75.651168823242, 26.833419799805}, + {72.997970581055, 26.270370483398}, + {76.100234985352, 24.443893432617}, + {73.014450073242, 26.237411499023}, + {-9.122772, 38.73642}, + {-9.314346, 38.917465}, + {-9.4159698486328, 38.959579467773}, + {-9.2800140380859, 38.827743530273}, + {-8.422053, 40.199318}, + {-8.297882, 39.753571}, + {-8.79353, 39.74637}, + {-17.09919, 32.687759}, + {-8.6057281494141, 41.152725219727}, + {-27.234878, 38.659592}, + {-7.413025, 41.390991}, + {-8.703575, 41.257095}, + {5.8399200439453, 49.726181030273}, + {-7.4013519287109, 37.214126586914}, + {-9.176036, 38.643723}, + {-9.122361, 38.644823}, + {-8.7210845947266, 41.333999633789}, + {-8.5974884033203, 41.171951293945}, + {-8.5576629638672, 40.68717956543}, + {-8.657227, 40.937805}, + {-7.96636, 37.020259}, + {-9.3555450439453, 38.786544799805}, + {-9.166718, 38.667755}, + {-8.6606597900391, 40.514144897461}, + {-8.48053, 40.895462}, + {-9.1426849365234, 38.627243041992}, + {-8.5686492919922, 37.133102416992}, + {-7.993829, 37.027163}, + {-8.279912, 37.64843}, + {-98.994369506836, 19.673080444336}, + {-98.973770141602, 19.699172973633}, + {-99.011716, 19.652101}, + {-99.048232, 19.406943}, + {-99.178187, 19.411495}, + {-99.112175, 19.373059}, + {-99.198989868164, 19.537124633789}, + {-100.302924, 25.732708}, + {-100.272291, 25.667296}, + {-100.38414001465, 25.716934204102}, + {-103.33534240723, 20.646743774414}, + {-104.27879333496, 19.089431762695}, + {-103.40950012207, 20.719528198242}, + {-103.443681, 20.66544}, + {-103.46031188965, 20.557479858398}, + {-104.906236, 21.499774}, + {-105.51887512207, 20.771713256836}, + {-96.955032348633, 19.457473754883}, + {36.812298, 55.398973}, + {36.03035, 55.522843}, + {30.497360229492, 50.471878051758}, + {30.574264526367, 50.445785522461}, + {30.701065, 50.40184}, + {30.515102, 50.441518}, + {25.565872192383, 50.403213500977}, + {27.000961303711, 49.419937133789}, + {26.984481811523, 50.237045288086}, + {28.68489, 50.264786}, + {-66.046477, 18.325988}, + {-65.855484008789, 18.368453979492}, + {-66.242752075195, 18.314895629883}, + {-66.169967651367, 18.37532043457}, + {-66.242752075195, 18.312149047852}, + {-80.16242980957, 26.10969543457}, + {-74.28337097168, 40.556716918945}, + {-70.689468383789, 42.594680786133}, + {-74.210586547852, 40.669326782227}, + {-74.101181, 40.338135}, + {-73.993606567383, 40.700912475586}, + {-73.981246948242, 40.736618041992}, + {-74.069138, 40.888367}, + {-74.088363647461, 40.757217407227}, + {-73.99772644043, 40.736618041992}, + {-74.055404663086, 40.710525512695}, + {-74.64077, 40.634308}, + {-74.461625, 40.798702}, + {-74.587772, 40.533297}, + {-74.753856, 40.715416}, + {-74.133682250977, 40.880813598633}, + {75.148544311523, 27.616195678711}, + {75.442428588867, 27.793350219727}, + {76.303024, 26.708909}, + {75.608596801758, 28.225936889648}, + {75.474014282227, 26.903457641602}, + {74.312210083008, 29.343795776367}, + {76.892623901367, 27.175369262695}, + {75.872268676758, 26.973495483398}, + {75.829353, 30.94677}, + {75.714340209961, 30.951919555664}, + {75.818710327148, 30.947799682617}, + {75.822829, 31.37352}, + {75.211715698242, 31.815719604492}, + {75.149917602539, 32.024459838867}, + {74.939117, 29.938627}, + {74.906502, 30.149574}, + {74.86702, 30.141678}, + {75.712966918945, 32.297744750977}, + {74.170761108398, 30.137557983398}, + {76.376266479492, 30.361404418945}, + {75.121078491211, 30.239181518555}, + {76.84021, 30.728531}, + {76.638565063477, 31.212844848633}, + {133.95011901855, 34.036331176758}, + {133.52027893066, 33.550186157227}, + {140.781555, 38.195343}, + {133.59306335449, 33.476028442383}, + {141.0294342041, 38.364944458008}, + {139.72068786621, 35.71174621582}, + {139.71244812012, 35.726852416992}, + {139.70970153809, 35.729598999023}, + {139.71519470215, 35.736465454102}, + {139.67124938965, 35.644454956055}, + {136.817519, 35.110307}, + {136.79966, 35.303879}, + {136.667175, 35.027161}, + {135.75874328613, 34.98664855957}, + {135.934525, 34.976486}, + {130.4907989502, 31.556167602539}, + {135.97984313965, 35.019607543945}, + {130.48942565918, 31.538314819336}, + {140.07637, 35.657272}, + {139.9747467041, 35.688400268555}, + {140.19721984863, 35.604629516602}, + {140.05989074707, 35.687026977539}, + {139.904709, 35.733376}, + {139.50096130371, 35.351943969727}, + {139.48997497559, 35.50163269043}, + {51.332931518555, 35.754318237305}, + {51.192855834961, 35.726852416992}, + {51.485366821289, 35.730972290039}, + {54.009475708008, 32.30598449707}, + {51.493149, 35.744705}, + {51.230372, 35.717864}, + {51.40022277832, 35.768051147461}, + {51.47575378418, 35.766677856445}, + {51.412582, 35.767708}, + {51.53205871582, 32.85530090332}, + {51.462020874023, 35.780410766602}, + {51.435928344727, 33.993759155273}, + {51.185989, 35.702591}, + {51.375503540039, 35.77766418457}, + {51.376876831055, 35.781784057617}, + {51.457901000977, 34.011611938477}, + {50.87287902832, 32.323837280273}, + {51.35627746582, 35.637588500977}, + {51.247101, 35.681534}, + {51.391983032227, 35.693893432617}, + {49.605331420898, 37.269058227539}, + {50.855026245117, 35.757064819336}, + {50.951156616211, 35.807876586914}, + {50.963516235352, 35.927352905273}, + {2.1279144287109, 48.900833129883}, + {2.307129, 48.729858}, + {2.221298, 48.754166}, + {2.3668670654297, 48.747024536133}, + {2.4341583251953, 48.871994018555}, + {2.3036956787109, 48.994216918945}, + {2.489777, 48.974991}, + {2.2638702392578, 48.969497680664}, + {2.4217987060547, 48.985977172852}, + {2.4932098388672, 48.781356811523}, + {2.3009490966797, 49.483108520508}, + {2.5096893310547, 48.812942504883}, + {2.3490142822266, 48.527297973633}, + {2.4767303466797, 48.995590209961}, + {3.6783599853516, 43.442001342773}, + {4.8044586181641, 45.88508605957}, + {1.2421417236328, 43.602676391602}, + {-4.0766143798828, 48.406448364258}, + {1.9988250732422, 48.777236938477}, + {1.9713592529297, 48.527297973633}, + {2.9038238525391, 42.697677612305}, + {4.8731231689453, 45.760116577148}, + {136.88879, 35.165176}, + {136.886902, 35.173416}, + {137.020798, 35.194765}, + {136.97273254395, 35.119857788086}, + {137.028275, 35.004501}, + {137.18421936035, 34.978408813477}, + {137.07847595215, 35.226974487305}, + {137.156815, 35.417984}, + {137.113058, 35.077161}, + {137.13340759277, 35.064926147461}, + {136.95487976074, 35.376663208008}, + {136.666489, 35.375977}, + {136.69807434082, 35.508499145508}, + {137.322235, 35.420609}, + {137.061996, 34.880219}, + {137.360344, 34.706039}, + {137.433243, 34.712906}, + {137.69920349121, 34.761428833008}, + {139.63829, 35.847702}, + {137.205276, 34.937668}, + {139.67948913574, 35.839462280273}, + {139.616776, 35.925064}, + {139.579926, 35.778351}, + {139.62593078613, 35.90950012207}, + {139.613914, 35.785561}, + {-112.893448, 49.689789}, + {-75.26252746582, 44.890823364258}, + {-97.074508666992, 49.859390258789}, + {-73.532639, 45.602646}, + {-73.795852661133, 45.63102722168}, + {-78.935394, 43.876305}, + {-83.042221069336, 42.320022583008}, + {-104.86381530762, 41.607284545898}, + {-105.46806335449, 43.812789916992}, + {-108.461284, 41.641298}, + {-72.466506958008, 41.399917602539}, + {-78.948440551758, 43.00666809082}, + {-98.551483, 31.543121}, + {-118.3559, 33.817354}, + {-117.716303, 33.623239}, + {41.927261352539, 44.838638305664}, + {42.847366333008, 44.042129516602}, + {137.06611633301, 50.594100952148}, + {40.516891479492, 64.554977416992}, + {47.992172, 46.304855}, + {36.459274, 50.626602}, + {40.418014526367, 56.14631652832}, + {38.534959, 59.212054}, + {37.83073425293, 59.131851196289}, + {41.128794, 60.050425}, + {39.05796, 51.719264}, + {39.506607, 59.552078}, + {104.29252624512, 52.236557006836}, + {103.097764, 53.028946}, + {40.959544, 56.996284}, + {21.907424926758, 54.602737426758}, + {35.277784, 54.133072}, + {-80.237961, 40.529938}, + {-80.132217407227, 40.541610717773}, + {-80.154190063477, 41.132125854492}, + {-80.003128, 40.44136}, + {-80.178825, 39.964841}, + {-80.000167, 40.433249}, + {-79.952802, 40.515974}, + {-80.093765258789, 40.386428833008}, + {-79.788766, 39.774158}, + {-80.302985, 40.302852}, + {-80.559662, 41.194897}, + {-81.851577758789, 41.387557983398}, + {-81.511313, 41.411573}, + {-80.71562, 38.676063}, + {-81.685722, 41.494363}, + {-81.663436889648, 41.287307739258}, + {-83.564071655273, 41.53450012207}, + {-83.855639, 41.490869}, + {-82.862118, 41.506951}, + {-84.404956, 41.607305}, + {-81.619436, 41.031968}, + {-84.323696, 41.305097}, + {-81.61831, 41.101078}, + {-81.515844, 40.806602}, + {-1.6445159912109, 54.713973999023}, + {-1.6802215576172, 54.634323120117}, + {-4.719315, 51.738205}, + {-2.628479, 52.075888}, + {-2.9793548583984, 52.615585327148}, + {-0.68321228027344, 52.928695678711}, + {-1.3945770263672, 52.730941772461}, + {-2.0496368408203, 53.83918762207}, + {-1.343193, 52.844009}, + {-0.26023864746094, 51.492233276367}, + {-6.5457916259766, 54.649429321289}, + {-1.392207, 53.362746}, + {-3.0535125732422, 53.615341186523}, + {-2.58728, 53.628387}, + {-2.6442718505859, 53.748550415039}, + {-1.5579986572266, 52.582626342773}, + {-3.5327911376953, 54.604110717773}, + {-3.0562591552734, 53.82682800293}, + {-0.46073913574219, 53.222579956055}, + {-2.772296, 54.111478}, + {-2.2734832763672, 53.066024780273}, + {10.962295532227, 45.420913696289}, + {12.938004, 45.807266}, + {13.783017, 45.649501}, + {13.058968, 45.64682}, + {13.060135, 45.636246}, + {12.768173217773, 45.963363647461}, + {12.827225, 45.780029}, + {12.210272, 46.361276}, + {12.38639831543, 46.445388793945}, + {12.155685424805, 46.379470825195}, + {11.205368041992, 44.200057983398}, + {12.641830444336, 46.078720092773}, + {11.360354, 44.395065}, + {11.265887, 44.344058}, + {11.213814, 44.290901}, + {12.403466, 44.099593}, + {12.039615, 44.203364}, + {11.843948, 44.362106}, + {11.826095581055, 44.451370239258}, + {12.058181762695, 44.477462768555}, + {12.25456237793, 44.57633972168}, + {12.20944, 44.419785}, + {12.229843139648, 45.018539428711}, + {12.330465, 45.451403}, + {11.782256, 45.031005}, + {12.247353, 45.506058}, + {12.085647583008, 45.275344848633}, + {12.609329, 45.969772}, + {12.511999, 45.940403}, + {12.202377, 45.615234}, + {13.184280395508, 46.08283996582}, + {11.798629760742, 45.287704467773}, + {11.728249, 45.429668}, + {11.736832, 45.736118}, + {11.773910522461, 45.353622436523}, + {11.878109, 45.39053}, + {11.384112, 46.494013}, + {10.911483764648, 45.382461547852}, + {10.800247192383, 46.198196411133}, + {10.987014770508, 45.457992553711}, + {11.405868530273, 44.947128295898}, + {11.19654, 44.157192}, + {12.070541381836, 44.125900268555}, + {121.75941467285, 24.623794555664}, + {120.587082, 23.678513}, + {121.48887634277, 25.027542114258}, + {120.44105529785, 23.448257446289}, + {121.555481, 25.063591}, + {8.6180877685547, 56.360549926758}, + {9.009475, 55.929349}, + {10.383682, 55.407486}, + {10.774154663086, 55.28938293457}, + {10.222092, 55.387573}, + {10.305176, 55.370407}, + {12.136002, 55.56221}, + {12.238541, 55.729752}, + {12.32048, 55.347454}, + {12.573165893555, 55.678024291992}, + {12.503128051758, 55.675277709961}, + {12.504501342773, 55.712356567383}, + {12.570419311523, 55.673904418945}, + {12.577285766602, 55.669784545898}, + {12.20292, 56.094467}, + {12.423477172852, 55.653305053711}, + {12.33284, 55.948563}, + {12.324829, 55.859528}, + {12.478605, 55.69058}, + {12.280654907227, 55.656051635742}, + {4.3485260009766, 45.471725463867}, + {4.7110748291016, 45.603561401367}, + {5.3125762939453, 43.403549194336}, + {4.4130706787109, 45.440139770508}, + {3.7003326416016, 43.40217590332}, + {-1.9617462158203, 47.018051147461}, + {2.4314117431641, 49.365005493164}, + {2.7404022216797, 50.30158996582}, + {-1.048508, 45.111374}, + {3.1578826904297, 45.824661254883}, + {6.714554, 43.355331}, + {-1.3863372802734, 46.737899780273}, + {-2.8118133544922, 48.563003540039}, + {6.0431671142578, 48.738784790039}, + {-0.31654357910156, 49.176864624023}, + {4.1356658935547, 44.03938293457}, + {6.186903, 48.614719}, + {-2.178497, 47.63237}, + {-2.775518, 47.668481}, + {2.569313, 46.370888}, + {3.238907, 46.962541}, + {1.3863372802734, 43.525772094727}, + {4.5806121826172, 51.305465698242}, + {5.4691314697266, 50.901718139648}, + {4.8126983642578, 51.172256469727}, + {4.4789886474609, 51.207962036133}, + {4.5188140869141, 51.196975708008}, + {4.407234, 51.198349}, + {4.3759918212891, 51.282119750977}, + {4.1164398193359, 51.191482543945}, + {5.039291, 49.793747}, + {5.792027, 49.732189}, + {5.587234, 50.619736}, + {5.037918, 50.408157}, + {4.9047088623047, 50.26725769043}, + {5.4347991943359, 50.651779174805}, + {5.9113311767578, 50.65315246582}, + {4.5092010498047, 50.394973754883}, + {-89.701926, 39.704092}, + {-88.87321472168, 39.912643432617}, + {-88.093149, 40.117553}, + {-86.001772, 41.680845}, + {-89.128913, 38.529097}, + {-86.217269897461, 41.678695678711}, + {-85.72151184082, 41.744613647461}, + {-87.794939, 42.733795}, + {-88.803452, 42.879913}, + {-88.429641723633, 42.841873168945}, + {-89.516315, 43.035002}, + {-88.229828, 43.131317}, + {-88.089419, 44.515758}, + {-87.911889, 42.980205}, + {-89.760360717773, 43.626022338867}, + {-87.984892, 43.041}, + {-88.583450317383, 43.880081176758}, + {-89.743558, 43.669968}, + {-90.683212280273, 44.033889770508}, + {-92.490463256836, 45.504684448242}, + {-89.495944, 45.679624}, + {-89.871657, 38.678533}, + {-89.131737, 45.231285}, + {-90.427780151367, 38.781051635742}, + {-123.04893493652, 44.923782348633}, + {-122.986575, 45.00181}, + {-122.336472, 45.428055}, + {-122.394905, 45.51796}, + {-122.89924621582, 46.146011352539}, + {-122.529392, 45.555222}, + {-123.554764, 45.056992}, + {-122.785527, 45.389328}, + {-80.451646, 40.719727}, + {-80.260326, 40.493546}, + {-123.259048, 44.574623}, + {-122.86079406738, 45.140762329102}, + {-80.230064, 40.61491}, + {-79.999008178711, 40.442733764648}, + {-79.959393, 40.360442}, + {-79.960556, 40.484129}, + {-80.117111206055, 40.672073364258}, + {-122.01484680176, 37.766189575195}, + {-77.720081, 43.159103}, + {-122.43444, 37.653368}, + {-122.688054, 38.436356}, + {-122.32373, 37.914149}, + {-122.371333, 37.926898}, + {-122.357158, 37.94132}, + {-87.628784, 41.824265}, + {-81.44783, 41.566772}, + {-87.693558, 41.735344}, + {-96.853408813477, 33.022842407227}, + {-96.742172241211, 32.766036987305}, + {-96.760899, 32.929583}, + {-96.856499, 32.934952}, + {-96.832809448242, 32.700119018555}, + {-95.458145141602, 30.143051147461}, + {-76.929702758789, 40.232620239258}, + {-95.449905395508, 29.036178588867}, + {-95.477921, 30.046097}, + {-95.514450073242, 29.737930297852}, + {-95.375747680664, 29.816207885742}, + {-94.673309, 38.978806}, + {-94.448776, 39.263626}, + {-80.280075, 26.012192}, + {-80.122604, 25.822372}, + {-93.304824829102, 45.051498413086}, + {-73.973122, 40.797272}, + {-80.0354, 26.559449}, + {-74.001846313477, 40.714645385742}, + {-74.103719, 40.710775}, + {-73.959137, 40.670288}, + {-73.787612915039, 40.703659057617}, + {-83.974685668945, 42.61116027832}, + {-83.775339, 42.970414}, + {-83.13835144043, 42.472457885742}, + {-83.142441, 42.500754}, + {-82.884292602539, 42.836380004883}, + {-85.296201, 41.019491}, + {-85.352096557617, 43.154983520508}, + {-85.65559387207, 42.43537902832}, + {-83.29257, 43.883376}, + {-82.657699584961, 43.395309448242}, + {-83.404769897461, 43.481826782227}, + {-86.177444458008, 40.758590698242}, + {-84.433823, 42.247238}, + {-85.309524536133, 42.274703979492}, + {-84.653091430664, 43.612289428711}, + {-84.483255, 41.999132}, + {-85.400658, 41.532541}, + {79.119186, 13.120651}, + {84.458771, 18.801041}, + {80.22834777832, 16.753463745117}, + {78.145065307617, 13.767929077148}, + {80.004501342773, 15.450210571289}, + {77.675399780273, 15.385665893555}, + {78.343277, 12.745285}, + {82.1299, 17.050553}, + {77.919846, 13.982849}, + {81.714935, 16.752777}, + {81.784286499023, 16.982803344727}, + {82.906265258789, 17.644729614258}, + {79.418106079102, 18.35334777832}, + {78.852310180664, 18.100662231445}, + {79.98664855957, 14.457321166992}, + {78.495647, 17.438736}, + {78.49250793457, 17.398910522461}, + {78.566666, 17.405319}, + {83.28035, 17.716141}, + {78.343735, 17.462997}, + {78.313294, 17.462394}, + {78.361503, 17.42275}, + {80.631638, 16.375351}, + {28.73405456543, 41.059341430664}, + {28.972321, 41.1129}, + {28.669932, 41.053848}, + {42.487564086914, 38.46794128418}, + {35.25032043457, 36.593399047852}, + {30.546798706055, 37.779922485352}, + {30.553665161133, 37.76481628418}, + {41.493301391602, 38.738479614258}, + {30.517959594727, 39.773941040039}, + {29.108276, 37.912445}, + {29.140548706055, 37.814254760742}, + {29.078750610352, 37.797775268555}, + {29.060897827148, 40.301284790039}, + {34.874038696289, 40.580062866211}, + {28.916473, 40.356445}, + {38.857955932617, 37.388534545898}, + {32.097244262695, 36.486282348633}, + {31.14143371582, 40.847854614258}, + {30.912094116211, 36.94221496582}, + {30.452041625977, 40.720138549805}, + {27.511825561523, 40.976943969727}, + {26.634292602539, 40.849227905273}, + {27.219314575195, 41.728134155273}, + {28.649597, 41.222076}, + {46.672178, 24.761124}, + {46.771117, 24.699912}, + {46.802902, 24.814224}, + {46.562118530273, 24.684219360352}, + {46.735382, 24.777832}, + {46.678848266602, 24.588088989258}, + {46.722465, 24.657483}, + {46.706314086914, 24.66911315918}, + {43.969345092773, 26.352767944336}, + {38.044967651367, 24.111557006836}, + {39.58854675293, 24.485092163086}, + {39.197158813477, 21.532516479492}, + {39.145432, 21.546249}, + {39.184799194336, 21.529769897461}, + {39.265823364258, 21.61491394043}, + {39.815139770508, 21.381454467773}, + {39.929122924805, 21.470718383789}, + {40.441360473633, 21.294937133789}, + {58.38752746582, 23.586959838867}, + {41.467687, 19.998643}, + {58.54133605957, 23.597946166992}, + {54.085006713867, 17.00065612793}, + {54.043807983398, 17.008895874023}, + {-2.190399, 55.888138}, + {-2.9807281494141, 54.189376831055}, + {-1.250382, 54.119797}, + {-0.647781, 53.508774}, + {-2.2570037841797, 51.418075561523}, + {-0.64201354980469, 51.966018676758}, + {-1.6101837158203, 53.630447387695}, + {-1.2970733642578, 53.240432739258}, + {-1.8889617919922, 52.04704284668}, + {-3.6550140380859, 55.572280883789}, + {-1.5621185302734, 52.255783081055}, + {-1.6568756103516, 54.308853149414}, + {-2.4712371826172, 52.493362426758}, + {-0.47309875488281, 51.474380493164}, + {-0.602675, 51.236587}, + {-0.046349, 51.622353}, + {-1.566925, 53.814297}, + {-0.65025329589844, 51.527938842773}, + {-2.247356, 53.477729}, + {135.812302, 34.983559}, + {135.78758239746, 34.78889465332}, + {135.79032897949, 34.738082885742}, + {136.059952, 35.460434}, + {136.208496, 35.50026}, + {135.90431213379, 35.103378295898}, + {136.362305, 35.340958}, + {131.333654, 31.981359}, + {140.128212, 35.625229}, + {131.378174, 31.96106}, + {140.08323669434, 35.629348754883}, + {140.02830505371, 35.762557983398}, + {139.94041442871, 35.71174621582}, + {139.928055, 35.722389}, + {139.475555, 35.382156}, + {139.521561, 35.49614}, + {139.50370788574, 35.467300415039}, + {139.437103, 35.470734}, + {139.33753967285, 35.33821105957}, + {139.13841247559, 35.163803100586}, + {139.18922424316, 35.373916625977}, + {139.242096, 35.38353}, + {135.18745422363, 34.687271118164}, + {139.3856048584, 35.493392944336}, + {139.614258, 35.504379}, + {18.475570678711, 54.558792114258}, + {22.819290161133, 52.736434936523}, + {21.031265258789, 52.207717895508}, + {20.909042358398, 52.240676879883}, + {20.953674, 52.199821}, + {20.976333618164, 52.277755737305}, + {19.438247680664, 51.776504516602}, + {19.462967, 51.771011}, + {19.437215, 51.810007}, + {19.487073, 51.821247}, + {22.24250793457, 50.923690795898}, + {22.541885375977, 51.842422485352}, + {22.103805541992, 51.700973510742}, + {20.410537719727, 52.099227905273}, + {23.14888, 53.122787}, + {21.149368286133, 52.379379272461}, + {2.291344, 48.763511}, + {2.249451, 48.835602}, + {7.2571563720703, 43.69743347168}, + {2.346396, 48.774017}, + {2.3284149169922, 48.863754272461}, + {2.45018, 48.879776}, + {7.7391815185547, 48.523178100586}, + {2.4904632568359, 48.850021362305}, + {2.42349, 48.855865}, + {1.6417694091797, 50.30158996582}, + {2.5138092041016, 48.99284362793}, + {3.0576324462891, 50.341415405273}, + {3.1166839599609, 50.396347045898}, + {2.8104400634766, 50.215072631836}, + {4.114379, 49.236603}, + {6.288758, 49.130862}, + {6.2271881103516, 49.121932983398}, + {6.112137, 49.002457}, + {77.603988647461, 12.964553833008}, + {76.692123413086, 12.422103881836}, + {77.578926, 13.005753}, + {77.674026489258, 12.998886108398}, + {73.992233276367, 18.585433959961}, + {73.806838989258, 18.553848266602}, + {73.854904174805, 18.474197387695}, + {72.816696166992, 18.971328735352}, + {72.918319702148, 19.094924926758}, + {72.879868, 19.115524}, + {72.985610961914, 19.068832397461}, + {73.02131652832, 19.023513793945}, + {73.323440551758, 28.019943237305}, + {72.853088, 19.202728}, + {77.374649047852, 27.308578491211}, + {75.806350708008, 26.848526000977}, + {73.313827514648, 27.995223999023}, + {75.769271850586, 26.837539672852}, + {75.810470581055, 26.80046081543}, + {75.715713500977, 26.921310424805}, + {72.99934387207, 26.304702758789}, + {79.988021850586, 26.479110717773}, + {75.774765014648, 26.796340942383}, + {82.783356, 25.098953}, + {9.53219, 53.556544}, + {13.765869, 52.831192}, + {13.673515, 52.520828}, + {13.711624145508, 52.527694702148}, + {11.959305, 51.470947}, + {7.021915, 51.344565}, + {6.842959, 51.301123}, + {9.3006134033203, 48.756637573242}, + {7.9740142822266, 52.151412963867}, + {9.1619110107422, 53.028945922852}, + {8.4381866455078, 52.221450805664}, + {11.537704467773, 52.166519165039}, + {12.998886108398, 55.609359741211}, + {12.718734741211, 58.22135925293}, + {13.127975463867, 58.555068969727}, + {13.699264526367, 56.039199829102}, + {14.509506225586, 59.337844848633}, + {17.817764282227, 59.742965698242}, + {13.755569458008, 56.166915893555}, + {11.984024047852, 57.683029174805}, + {18.062210083008, 59.333724975586}, + {13.21174621582, 55.701370239258}, + {11.407241821289, 58.430099487305}, + {13.203506469727, 55.665664672852}, + {11.935958862305, 57.867050170898}, + {18.915023803711, 59.28840637207}, + {14.241714477539, 55.635452270508}, + {12.261428833008, 57.130966186523}, + {12.975540161133, 55.564041137695}, + {12.965927124023, 56.525344848633}, + {17.93586730957, 59.648208618164}, + {7.1253204345703, 51.536178588867}, + {37.247085571289, 55.786514282227}, + {37.124176, 55.794411}, + {37.518997192383, 55.88264465332}, + {37.554702758789, 55.908737182617}, + {37.600021362305, 55.905990600586}, + {37.565002, 55.862045}, + {37.560195922852, 55.823593139648}, + {37.580338, 55.807114}, + {36.997146606445, 56.144943237305}, + {37.490725, 55.866136}, + {37.491188, 55.851059}, + {37.52311706543, 55.676651000977}, + {37.561569213867, 55.646438598633}, + {37.518997192383, 56.077651977539}, + {37.501195, 55.659176}, + {37.837600708008, 55.819473266602}, + {37.468185424805, 55.984268188477}, + {37.285537719727, 56.011734008789}, + {37.560195922852, 55.720596313477}, + {37.543716430664, 55.643692016602}, + {55.204238891602, 51.990737915039}, + {60.561447143555, 56.841201782227}, + {58.285903930664, 51.276626586914}, + {61.609268188477, 56.691513061523}, + {66.624526977539, 66.532516479492}, + {65.600051879883, 56.54182434082}, + {74.585494995117, 63.615646362305}, + {36.266555786133, 54.74006652832}, + {37.82112121582, 55.690383911133}, + {86.87370300293, 53.730697631836}, + {38.147964477539, 55.737075805664}, + {55.800247192383, 52.445297241211}, + {40.561935, 64.536301}, + {40.351639, 56.13533}, + {142.669145, 50.912018}, + {34.390640258789, 61.78092956543}, + {136.937706, 50.523381}, + {19.961471557617, 54.465408325195}, + {20.635757446289, 54.653549194336}, + {8.8158416748047, 52.610092163086}, + {9.1426849365234, 49.963760375977}, + {13.891525268555, 51.714706420898}, + {-79.452438354492, 42.126388549805}, + {-73.976887, 42.286363}, + {-78.151765, 39.171602}, + {-77.16791, 39.131959}, + {-77.830581665039, 38.19465637207}, + {-77.415486, 38.87531}, + {-77.0635, 39.089229}, + {-77.584762573242, 39.113388061523}, + {-76.990127563477, 38.938980102539}, + {-77.065301, 38.925433}, + {-77.016338, 39.032021}, + {-77.189254760742, 38.930740356445}, + {-76.609725952148, 39.228744506836}, + {-77.434849, 39.40227}, + {-77.045059204102, 38.903274536133}, + {-75.079422, 38.346176}, + {-76.464981, 39.142776}, + {-76.661911010742, 39.197158813477}, + {-76.597994, 38.782368}, + {-76.532821655273, 38.310012817383}, + {-76.968771, 38.521042}, + {3.2444000244141, 6.4675140380859}, + {8.555603, 11.994324}, + {3.3034515380859, 6.6364288330078}, + {3.406906, 6.609879}, + {3.2341, 6.71196}, + {3.2073211669922, 6.4936065673828}, + {3.4682464599609, 6.6625213623047}, + {3.02948, 6.481247}, + {9.7551727294922, 4.0395355224609}, + {10.152053833008, 5.9593963623047}, + {9.745854, 4.097214}, + {11.550064, 3.877487}, + {11.499252319336, 3.8747406005859}, + {9.7647857666016, 4.0532684326172}, + {9.7098541259766, 4.0258026123047}, + {11.477279663086, 3.8610076904297}, + {11.594009399414, 3.9667510986328}, + {11.514359, 3.879547}, + {-25.059385, 17.017839}, + {-22.723846, 16.125183}, + {8.658067, 50.180529}, + {8.591936, 50.217626}, + {8.656699, 49.361047}, + {8.7046051025391, 50.079116821289}, + {8.8639068603516, 48.929672241211}, + {9.724686, 48.98433}, + {9.441835, 48.703157}, + {9.667658, 48.694956}, + {9.1770172119141, 48.774490356445}, + {9.498709, 47.649463}, + {7.098939, 50.759778}, + {7.297593, 50.766501}, + {7.208567, 50.806382}, + {10.06965637207, 48.454513549805}, + {71.376113891602, 42.867965698242}, + {71.407356, 51.161613}, + {76.953048706055, 43.231887817383}, + {76.830825805664, 43.193435668945}, + {76.835861, 43.225365}, + {77.038193, 43.830299}, + {69.20768737793, 42.727890014648}, + {76.872162, 43.249741}, + {76.917343139648, 43.196182250977}, + {82.674179077148, 49.952774047852}, + {76.99836730957, 43.341751098633}, + {76.902236938477, 43.315658569336}, + {72.956314, 50.052567}, + {69.773483276367, 42.103042602539}, + {66.211166381836, 51.919326782227}, + {71.410446166992, 51.11457824707}, + {-0.38932800292969, 39.481430053711}, + {-0.40306091308594, 39.187545776367}, + {-1.0004425048828, 38.058700561523}, + {-0.69557189941406, 37.97492980957}, + {-0.099564, 38.546371}, + {-1.1872100830078, 37.569808959961}, + {-2.6222991943359, 42.509536743164}, + {-2.653198, 42.853546}, + {-6.3906097412109, 39.477310180664}, + {-2.7458953857422, 39.489669799805}, + {-0.447006, 38.408615}, + {-0.488663, 38.347549}, + {-0.551376, 38.230637}, + {-0.74501037597656, 38.274307250977}, + {-0.69969177246094, 38.264694213867}, + {-0.79307556152344, 38.495407104492}, + {-0.026779174804688, 38.750839233398}, + {-0.022659301757812, 38.867568969727}, + {-0.427094, 38.741226}, + {-0.86174011230469, 38.628616333008}, + {-0.777146, 37.859299}, + {3.9035797119141, 51.501846313477}, + {3.8651275634766, 51.309585571289}, + {3.9434051513672, 51.250534057617}, + {4.893281, 51.719625}, + {5.112076, 51.562271}, + {4.772873, 51.600998}, + {4.7660064697266, 51.611709594727}, + {4.43779, 51.907791}, + {4.4927215576172, 51.941299438477}, + {5.076977, 51.563605}, + {4.4803619384766, 51.920700073242}, + {4.397775, 51.743117}, + {4.403458, 51.929626}, + {4.5517730712891, 52.000350952148}, + {4.4144439697266, 51.922073364258}, + {4.5146942138672, 51.941299438477}, + {4.751488, 51.802067}, + {4.473038, 52.267227}, + {4.421768, 52.206345}, + {4.4460296630859, 52.051162719727}, + {4.430063, 52.13234}, + {4.3444061279297, 51.992111206055}, + {-3.678783, 40.400796}, + {-3.6440277099609, 40.45783996582}, + {-3.0356597900391, 40.023880004883}, + {-3.579483, 40.051346}, + {-4.749184, 36.488688}, + {-4.90221, 36.515399}, + {-1.806228, 38.094228}, + {-1.692914, 42.818398}, + {-5.8193206787109, 43.105545043945}, + {-5.833397, 43.301926}, + {-5.608749, 43.517532}, + {-16.723251342773, 28.057022094727}, + {-8.673019, 41.977386}, + {-17.766609, 28.666763}, + {-4.131088, 42.927017}, + {12.657623, 41.912155}, + {9.048615, 39.308395}, + {9.120363, 39.246825}, + {8.48711, 40.278625}, + {11.261673, 43.77491}, + {10.91423034668, 43.932266235352}, + {11.156486, 43.454589}, + {11.167374, 43.56514}, + {10.840072631836, 43.638381958008}, + {13.351707, 38.134232}, + {13.348389, 38.141785}, + {12.170862, 43.167241}, + {15.090407, 37.516937}, + {12.633866, 38.069687}, + {16.215133666992, 39.672317504883}, + {16.253138, 39.311154}, + {15.361589, 41.685766}, + {121.032257, 14.552765}, + {120.96977233887, 14.701766967773}, + {121.01371765137, 14.545211791992}, + {120.9986114502, 14.699020385742}, + {120.960159, 14.78334}, + {121.0865020752, 14.558944702148}, + {121.04667663574, 14.644088745117}, + {120.78025817871, 14.965438842773}, + {121.05903625488, 14.594650268555}, + {120.92170715332, 14.822616577148}, + {102.55393981934, 13.662185668945}, + {99.124145, 16.864014}, + {101.08004, 13.713937}, + {99.964371, 12.530365}, + {100.039616, 13.818741}, + {100.907833, 14.544692}, + {100.89088439941, 14.532852172852}, + {101.031548, 12.84037}, + {120.66078186035, 24.045639038086}, + {120.67863464355, 24.079971313477}, + {120.669022, 24.063034}, + {120.666275, 24.129868}, + {120.67424, 24.127762}, + {120.666275, 24.153854}, + {120.6566619873, 24.160995483398}, + {120.68962097168, 24.128036499023}, + {120.691853, 24.20578}, + {120.36689758301, 23.89045715332}, + {120.43556213379, 23.718795776367}, + {120.72395324707, 24.137649536133}, + {120.58387756348, 23.990707397461}, + {120.54542541504, 24.086837768555}, + {120.502167, 24.081345}, + {120.58799743652, 23.884963989258}, + {120.54817199707, 24.03190612793}, + {120.4712677002, 23.691329956055}, + {120.77613830566, 23.725662231445}, + {120.797653, 23.673477}, + {120.60173, 23.930832}, + {120.69923400879, 23.766860961914}, + {120.59761, 24.164429}, + {120.54267883301, 24.171981811523}, + {120.785751, 24.497795}, + {8.60864, 45.444698}, + {8.9147186279297, 45.382461547852}, + {8.2843780517578, 44.150619506836}, + {9.1550445556641, 45.456619262695}, + {9.324463, 44.321594}, + {10.136947631836, 46.176223754883}, + {9.6356964111328, 45.725784301758}, + {10.083016, 45.683764}, + {9.1316986083984, 45.749130249023}, + {9.416428, 45.824432}, + {11.291305, 44.629793}, + {11.363045, 44.621809}, + {11.720353, 44.35936}, + {12.038955688477, 44.506301879883}, + {11.866411, 45.440532}, + {12.235256, 44.732814}, + {11.389938, 44.982559}, + {11.672286987305, 45.732650756836}, + {12.342698, 45.635535}, + {12.306747436523, 45.290451049805}, + {2.3600006103516, 43.233261108398}, + {-1.456127, 47.088698}, + {-0.889208, 47.193834}, + {2.1128082275391, 48.867874145508}, + {-1.024844, 46.884543}, + {-2.162933, 47.303696}, + {2.076187, 49.007172}, + {2.2501373291016, 48.884353637695}, + {2.082939, 48.994217}, + {2.184219, 48.907013}, + {5.796661, 43.139877}, + {7.008591, 43.555985}, + {6.29393, 43.398331}, + {6.4537811279297, 43.332138061523}, + {7.1706390380859, 43.657608032227}, + {0.24787902832031, 46.416549682617}, + {-0.71617126464844, 46.413803100586}, + {6.9564056396484, 43.616409301758}, + {0.096817016601562, 47.016677856445}, + {0.417023, 46.727371}, + {-0.20118713378906, 46.251754760742}, + {10.436325073242, 49.452896118164}, + {8.8460540771484, 48.502578735352}, + {12.681655883789, 48.243026733398}, + {11.530838, 48.216385}, + {11.570663452148, 48.120803833008}, + {11.533127, 48.180315}, + {11.703872680664, 48.369369506836}, + {11.517105102539, 48.167495727539}, + {11.621475219727, 48.144149780273}, + {10.111217, 48.366117}, + {10.160293579102, 48.667373657227}, + {10.035782, 48.420639}, + {11.627918, 48.036127}, + {-88.87321472168, 42.922897338867}, + {-88.028183, 44.488907}, + {-87.951279, 42.565842}, + {-117.166541, 33.143496}, + {-117.42393493652, 33.254928588867}, + {-117.13691711426, 33.396377563477}, + {-117.2728729248, 33.407363891602}, + {-116.85264587402, 32.730331420898}, + {-117.1492767334, 33.17253112793}, + {-117.203921, 32.829041}, + {-117.19047546387, 33.101119995117}, + {-117.159273, 32.757086}, + {-117.03941345215, 32.72346496582}, + {-117.23304748535, 32.719345092773}, + {-117.04643, 32.947957}, + {-117.00508117676, 32.79899597168}, + {-117.023116, 32.768843}, + {-117.33192443848, 33.135452270508}, + {-95.111389, 44.934769}, + {-92.962875366211, 44.890823364258}, + {103.251379, 3.857251}, + {102.199005, 5.546878}, + {103.21586608887, 5.1903533935547}, + {103.19389343262, 5.2288055419922}, + {102.1021270752, 6.0143280029297}, + {116.0767364502, 5.9539031982422}, + {103.383793, 4.622739}, + {117.891913, 4.249527}, + {103.23783874512, 1.8903350830078}, + {110.29655456543, 1.5744781494141}, + {118.62968444824, 4.2441558837891}, + {110.253831, 1.556283}, + {111.84562683105, 2.2473907470703}, + {101.61460876465, 3.1029510498047}, + {101.6365814209, 3.1317901611328}, + {101.4965057373, 3.0768585205078}, + {101.70249938965, 3.0768585205078}, + {101.89338684082, 2.7294158935547}, + {101.52534484863, 3.0397796630859}, + {101.72035217285, 3.1427764892578}, + {101.71348571777, 3.1620025634766}, + {101.68601989746, 3.1304168701172}, + {11.789016723633, 50.419692993164}, + {11.791897, 52.247349}, + {6.3864898681641, 51.58561706543}, + {6.0266876220703, 50.77262878418}, + {6.944733, 51.218262}, + {6.771927, 51.246414}, + {6.8190765380859, 51.313705444336}, + {6.6954803466797, 51.235427856445}, + {6.5196990966797, 51.606216430664}, + {6.350327, 51.256962}, + {6.260834, 51.570854}, + {6.5238189697266, 51.360397338867}, + {-97.368392944336, 32.83332824707}, + {-97.568229, 32.896994}, + {-97.1618, 33.589164}, + {-97.173386, 32.897873}, + {-97.343673706055, 32.741317749023}, + {-97.292861938477, 32.903366088867}, + {-95.55290222168, 32.498245239258}, + {-94.888229370117, 32.389755249023}, + {-96.106338500977, 32.26203918457}, + {-96.464767456055, 32.097244262695}, + {-97.799606323242, 31.205978393555}, + {-97.101974487305, 31.666030883789}, + {-94.750113, 32.508694}, + {-96.963272094727, 32.13020324707}, + {-120.64567565918, 46.97135925293}, + {-95.220909, 32.316971}, + {-120.38612365723, 46.731033325195}, + {-94.844758, 32.681173}, + {-97.861404418945, 32.726211547852}, + {-95.981369018555, 32.940444946289}, + {17.26432800293, 43.628768920898}, + {18.056716918945, 44.445877075195}, + {18.070449829102, 44.70817565918}, + {17.18879699707, 44.776840209961}, + {18.412399291992, 43.860855102539}, + {18.557281, 44.816666}, + {18.398666381836, 43.849868774414}, + {17.545395, 44.260941}, + {18.383560180664, 43.886947631836}, + {17.270508, 45.129776}, + {15.976524, 45.757713}, + {15.721436, 45.351906}, + {16.534424, 45.734711}, + {16.289291381836, 46.317672729492}, + {16.352462768555, 46.294326782227}, + {15.793533325195, 45.791702270508}, + {18.643112182617, 45.537643432617}, + {16.951217651367, 46.155624389648}, + {77.127456665039, 28.685989379883}, + {77.123336791992, 28.720321655273}, + {77.094498, 28.676205}, + {77.198867797852, 28.503341674805}, + {77.224960327148, 28.587112426758}, + {77.266159057617, 28.582992553711}, + {77.165565, 28.520508}, + {77.219467163086, 28.566513061523}, + {77.268905639648, 28.490982055664}, + {77.277145385742, 28.607711791992}, + {77.37190246582, 28.626937866211}, + {77.234802, 28.567886}, + {77.29362487793, 28.64616394043}, + {77.454299926758, 28.469009399414}, + {77.292251586914, 28.662643432617}, + {77.338943481445, 28.657150268555}, + {77.344436645508, 28.366012573242}, + {77.06428527832, 28.408584594727}, + {76.962661743164, 28.69010925293}, + {77.289505004883, 28.257522583008}, + {77.219467163086, 28.635177612305}, + {77.402114868164, 28.497848510742}, + {23.409805297852, 42.591934204102}, + {23.34114074707, 42.715530395508}, + {23.42903137207, 42.760848999023}, + {23.273849487305, 41.552352905273}, + {23.203811645508, 42.276077270508}, + {23.342514038086, 42.79655456543}, + {23.115921020508, 42.56721496582}, + {23.312301635742, 42.683944702148}, + {23.444137573242, 41.872329711914}, + {23.331527709961, 42.693557739258}, + {23.293075561523, 42.649612426758}, + {23.26286315918, 42.666091918945}, + {24.76936340332, 42.148361206055}, + {24.751510620117, 42.15934753418}, + {24.305142, 42.095505}, + {24.143142700195, 42.152481079102}, + {25.432662963867, 42.613906860352}, + {27.46891, 43.141594}, + {26.969375610352, 43.727645874023}, + {26.572494506836, 43.517532348633}, + {27.87712097168, 43.222274780273}, + {28.050155639648, 43.363723754883}, + {27.717819213867, 42.663345336914}, + {7.338352, 46.244888}, + {6.109596, 46.209701}, + {10.08284, 46.290756}, + {6.605279, 46.528945}, + {6.646754, 46.773656}, + {8.542705, 47.380149}, + {8.232584, 47.491911}, + {8.535745, 47.502219}, + {8.635712, 47.695084}, + {9.467125, 47.027596}, + {7.493999, 47.007682}, + {7.8202056884766, 47.311935424805}, + {6.127493, 46.18721}, + {8.943099, 46.148186}, + {6.628922, 46.524857}, + {6.6117095947266, 46.53190612793}, + {6.455497, 46.480637}, + {-112.949746, 31.916892}, + {-109.44648742676, 27.091598510742}, + {-99.49974, 27.464447}, + {-94.453242, 18.12319}, + {-88.192749, 20.700531}, + {-102.57179260254, 22.778091430664}, + {-98.806032, 19.27875}, + {-99.356918, 20.074539}, + {-99.01496887207, 19.424514770508}, + {-72.495346069336, 7.9190826416016}, + {-73.596725463867, 8.3145904541016}, + {-74.10758972168, 4.5984649658203}, + {-74.117202758789, 4.6273040771484}, + {-72.923812866211, 5.7231903076172}, + {-74.14192199707, 4.5819854736328}, + {-74.13211, 4.604084}, + {-74.044418334961, 4.7371673583984}, + {-74.238052368164, 4.7179412841797}, + {-74.137802124023, 4.6355438232422}, + {-74.155654907227, 4.5806121826172}, + {-74.179001, 4.610138}, + {-74.070510864258, 4.6025848388672}, + {-74.069824, 4.621124}, + {-74.091110229492, 4.6698760986328}, + {-74.630814, 4.218063}, + {-76.419463, 0.638602}, + {-74.068451, 4.674683}, + {-74.06364440918, 4.6424102783203}, + {-74.807968139648, 4.2963409423828}, + {140.41282653809, 35.600509643555}, + {139.91844177246, 35.710372924805}, + {139.92942810059, 35.724105834961}, + {140.352859, 35.606461}, + {140.21919250488, 35.317611694336}, + {140.156708, 35.384903}, + {140.06401062012, 35.387649536133}, + {140.020065, 35.456657}, + {140.057831, 35.276413}, + {139.91981506348, 35.744705200195}, + {139.962845, 35.797348}, + {139.9568939209, 35.784530639648}, + {139.78797912598, 36.068801879883}, + {139.78523254395, 35.895767211914}, + {139.68360900879, 35.802383422852}, + {139.56001281738, 35.783157348633}, + {140.12031555176, 35.596389770508}, + {139.55863952637, 36.046829223633}, + {140.11619567871, 35.640335083008}, + {139.914322, 35.689163}, + {139.89646911621, 35.622482299805}, + {140.3345489502, 35.770797729492}, + {140.503922, 35.896225}, + {78.96354675293, 28.957901000977}, + {139.88411, 35.457687}, + {79.529343, 29.222031}, + {78.385391235352, 27.147903442383}, + {78.054428100586, 27.856521606445}, + {79.017105, 30.316086}, + {78.809052, 30.236435}, + {77.289505004883, 29.271011352539}, + {78.393630981445, 28.875503540039}, + {83.382797241211, 26.752395629883}, + {81.248016, 26.923371}, + {81.18536, 26.720982}, + {81.866683959961, 25.442276000977}, + {83.569564819336, 25.92155456543}, + {82.884292602539, 27.109451293945}, + {81.243209838867, 26.208572387695}, + {81.811752319336, 25.440902709961}, + {80.769424438477, 27.929306030273}, + {80.861434936523, 26.875991821289}, + {80.954819, 26.759949}, + {80.920029, 26.766129}, + {83.000107, 25.288925}, + {80.166092, 27.373581}, + {80.94429, 26.903458}, + {80.89714050293, 26.845779418945}, + {139.75227355957, 35.656814575195}, + {139.73991394043, 35.625228881836}, + {139.72755432129, 35.616989135742}, + {139.652481, 35.601883}, + {139.71382141113, 35.638961791992}, + {139.65614318848, 35.612869262695}, + {139.72618103027, 35.564804077148}, + {139.75914001465, 35.571670532227}, + {139.7371673584, 35.563430786133}, + {139.63417053223, 35.692520141602}, + {139.58473205566, 35.708999633789}, + {139.66850280762, 35.718612670898}, + {139.60807800293, 35.710372924805}, + {139.63254, 35.625315}, + {139.72343444824, 35.732345581055}, + {139.73991394043, 35.728225708008}, + {139.72068786621, 35.751571655273}, + {139.82231140137, 35.715866088867}, + {139.7193145752, 35.714492797852}, + {139.85664367676, 35.740585327148}, + {139.77973937988, 35.762557983398}, + {139.79759216309, 35.76530456543}, + {139.8250579834, 35.779037475586}, + {139.87586975098, 35.750198364258}, + {106.817665, -6.208649}, + {106.820692, -6.291396}, + {106.81114196777, -6.2436676025391}, + {106.775854, -6.277356}, + {106.49940490723, -6.2574005126953}, + {106.837294, -6.248375}, + {106.53923034668, -6.2574005126953}, + {106.806765, -6.164017}, + {106.84410095215, -6.3549041748047}, + {106.89353942871, -6.3164520263672}, + {106.895336, -6.298365}, + {106.867528, -6.332868}, + {106.92512512207, -6.2944793701172}, + {107.693344, -6.955858}, + {107.62962341309, -6.9495391845703}, + {108.569929, -6.726761}, + {108.17481994629, -6.7655181884766}, + {107.61032, -6.974195}, + {107.769256, -6.934976}, + {108.452776, -6.705437}, + {106.65596008301, -6.5773773193359}, + {106.95671081543, -6.2505340576172}, + {107.61451721191, -6.9275665283203}, + {106.98280334473, -6.1708831787109}, + {2.636197, 48.555917}, + {2.5481414794922, 48.727798461914}, + {2.479082, 48.554176}, + {2.727355, 48.131619}, + {2.516556, 48.827972}, + {2.60321, 48.798798}, + {2.396501, 48.624802}, + {2.58989, 48.778061}, + {2.204361, 48.893967}, + {2.196751, 48.905468}, + {2.32825, 48.895199}, + {2.3641204833984, 48.898086547852}, + {2.3668670654297, 48.88298034668}, + {2.3847198486328, 48.88298034668}, + {2.3957061767578, 48.852767944336}, + {2.309416, 48.892477}, + {2.3984527587891, 48.874740600586}, + {3.176422, 47.025261}, + {-0.48957824707031, 44.459609985352}, + {2.0812225341797, 48.920059204102}, + {2.2707366943359, 49.251022338867}, + {13.344269, 41.585999}, + {8.9751434326172, 39.198532104492}, + {12.131876, 42.520066}, + {8.347368, 40.733583}, + {9.1701507568359, 39.21501159668}, + {12.96121, 37.87317}, + {14.170303344727, 40.856094360352}, + {13.273544311523, 38.196029663086}, + {17.120132, 39.069443}, + {16.265458, 41.075112}, + {15.930404, 38.685837}, + {17.26432800293, 40.519638061523}, + {15.26481628418, 41.28044128418}, + {18.134995, 39.998474}, + {16.580429077148, 41.203536987305}, + {14.457321166992, 40.871200561523}, + {14.361190795898, 41.074447631836}, + {15.657577, 41.386871}, + {-73.912582397461, 40.70915222168}, + {-74.168014526367, 40.55534362793}, + {-74.135666, 40.611801}, + {-73.970311, 40.604833}, + {-73.960648, 40.645235}, + {-73.916702270508, 40.617141723633}, + {-73.731307983398, 40.691299438477}, + {-73.793106079102, 40.788803100586}, + {-73.77799987793, 40.645980834961}, + {-73.739488, 40.620665}, + {-73.526977, 40.728812}, + {-73.371505737305, 40.648727416992}, + {-74.005966186523, 40.714645385742}, + {-74.003501, 40.733907}, + {-73.975754, 40.737952}, + {-74.280624389648, 40.485305786133}, + {-73.989487, 40.726129}, + {-73.983993530273, 40.684432983398}, + {-72.643661499023, 40.867080688477}, + {-74.383897, 40.786057}, + {-73.196068, 40.853691}, + {-73.029973, 40.778732}, + {-74.09797668457, 40.904159545898}, + {-73.973714, 40.89221}, + {-69.693832397461, 18.457717895508}, + {-69.927978, 18.553505}, + {-70.398330688477, 18.807907104492}, + {-69.891586303711, 18.468704223633}, + {-70.650767, 19.773331}, + {-61.456146, 10.336075}, + {-69.889984, 18.466187}, + {-61.365509, 10.648499}, + {-61.461914, 10.160019}, + {-61.335983, 10.555801}, + {-61.508743, 10.647812}, + {-61.217880249023, 10.877151489258}, + {-61.595192, 10.684547}, + {49.815444946289, 40.374069213867}, + {49.833297729492, 40.365829467773}, + {49.895095825195, 40.367202758789}, + {49.807205200195, 40.341110229492}, + {49.693222045898, 40.569076538086}, + {48.758010864258, 39.911270141602}, + {78.050308227539, 12.133712768555}, + {78.023054, 12.655563}, + {77.256546020508, 11.275405883789}, + {79.633712768555, 11.094131469727}, + {78.947145, 11.344081}, + {76.848678588867, 11.422348022461}, + {78.572158813477, 12.406997680664}, + {80.156936645508, 12.600631713867}, + {78.639450073242, 12.69401550293}, + {78.920974731445, 12.956314086914}, + {76.95442199707, 11.176528930664}, + {76.983261108398, 11.018600463867}, + {77.717285, 11.34819}, + {79.053497, 10.727463}, + {79.560242, 12.523041}, + {77.338943481445, 8.8927459716797}, + {79.671478, 13.07373}, + {78.491135, 11.650314}, + {78.003616333008, 11.334457397461}, + {76.532821655273, 10.79475402832}, + {78.581771850586, 11.610488891602}, + {76.821212768555, 30.398483276367}, + {77.270278930664, 30.132064819336}, + {79.408493041992, 28.379745483398}, + {35.528989, 33.450791}, + {35.579453, 33.908615}, + {35.619735717773, 33.969039916992}, + {35.847116, 34.432619}, + {35.431594848633, 33.331832885742}, + {35.531937, 33.869839}, + {35.542831, 33.837204}, + {35.582656860352, 33.544692993164}, + {35.482406616211, 33.793258666992}, + {35.538711547852, 33.883895874023}, + {35.240707397461, 33.197250366211}, + {35.910068, 31.981549}, + {35.902122, 31.980315}, + {35.956192016602, 31.962661743164}, + {35.829849243164, 31.99836730957}, + {35.873691, 32.009132}, + {35.90950012207, 31.811599731445}, + {35.960311889648, 30.17463684082}, + {35.91704, 31.960732}, + {35.891647338867, 31.839065551758}, + {36.082992, 31.381302}, + {35.991897583008, 32.492752075195}, + {35.832595825195, 32.278518676758}, + {73.651657104492, 15.877304077148}, + {73.788986, 18.709946}, + {73.814294, 15.528946}, + {77.321777, 19.164276}, + {79.985275268555, 20.280075073242}, + {79.177780151367, 21.08757019043}, + {79.312362670898, 19.927139282227}, + {77.154922485352, 19.740371704102}, + {79.077529907227, 21.145248413086}, + {77.752304077148, 20.910415649414}, + {78.989639282227, 20.432510375977}, + {73.17009, 22.315292}, + {72.958145141602, 21.312789916992}, + {73.19709777832, 22.276840209961}, + {72.640914916992, 23.010177612305}, + {73.320693969727, 22.357864379883}, + {73.221645, 22.329197}, + {72.511825561523, 23.036270141602}, + {72.573257, 23.057419}, + {72.594223022461, 22.937393188477}, + {72.784195, 21.190567}, + {72.878494262695, 21.212539672852}, + {72.761764526367, 20.16471862793}, + {72.852401733398, 21.230392456055}, + {-78.703994750977, 33.819351196289}, + {-82.481758, 34.835719}, + {-79.963125, 32.752206}, + {-80.827102661133, 33.566665649414}, + {-78.948811, 33.736145}, + {-82.120468, 34.858258}, + {-82.639846801758, 34.418106079102}, + {-82.926251, 34.921847}, + {-82.657156, 34.522572}, + {-82.069021, 34.298086}, + {-80.874611, 32.286355}, + {-84.556962, 33.773347}, + {-85.034866, 34.00901}, + {-84.156951, 31.570045}, + {-85.026316, 34.704152}, + {-84.853083, 34.716499}, + {-84.182543, 34.106663}, + {-82.387117, 31.201502}, + {-84.167692, 34.165628}, + {-82.539421, 31.118624}, + {-83.469831, 34.14569}, + {-83.889917, 34.079112}, + {21.071090698242, 52.188491821289}, + {20.953576, 52.160241}, + {21.478958129883, 50.705337524414}, + {19.229507, 50.293503}, + {18.762589, 50.374374}, + {18.931503, 50.353775}, + {18.192672729492, 50.344161987305}, + {18.696499, 50.066757}, + {21.660916, 50.183488}, + {17.607650756836, 50.646286010742}, + {19.538498, 49.953461}, + {19.460220336914, 50.491104125977}, + {19.210599, 51.84328}, + {19.947738647461, 50.127182006836}, + {16.855087280273, 52.362899780273}, + {16.911668, 52.457387}, + {16.241638, 51.221832}, + {19.624741, 51.734207}, + {19.673036, 51.425701}, + {19.461583, 51.740193}, + {100.59700012207, 14.060440063477}, + {100.6175994873, 14.064559936523}, + {100.741882, 14.023361}, + {100.60111999512, 13.853073120117}, + {100.65055847168, 13.881912231445}, + {100.59425354004, 13.83659362793}, + {100.07926940918, 14.972305297852}, + {100.1685333252, 15.219497680664}, + {100.91423034668, 14.527359008789}, + {101.583974, 12.868587}, + {100.91972351074, 13.156814575195}, + {100.80436706543, 14.527359008789}, + {101.295091, 14.292177}, + {100.97877502441, 13.516616821289}, + {101.008573, 13.558866}, + {101.43196105957, 14.726486206055}, + {101.8563079834, 15.57243347168}, + {104.62898254395, 14.653701782227}, + {102.75169372559, 14.324111938477}, + {99.013595581055, 18.853225708008}, + {103.47679138184, 17.47444152832}, + {101.70387268066, 17.24235534668}, + {99.111099243164, 18.798294067383}, + {12.5813, 41.824159}, + {12.481155395508, 41.795425415039}, + {11.524429, 43.100052}, + {11.317977905273, 43.32389831543}, + {12.769547, 41.693115}, + {12.576599, 41.907005}, + {12.545700073242, 41.84211730957}, + {12.583603, 41.89238}, + {12.597885131836, 41.914901733398}, + {12.443008, 41.82457}, + {13.198013305664, 41.376571655273}, + {12.495028, 41.880731}, + {13.74870300293, 41.652603149414}, + {12.670807, 41.814925}, + {12.666549682617, 41.86408996582}, + {12.641487, 41.827011}, + {11.36604309082, 43.729019165039}, + {10.822219848633, 42.817153930664}, + {11.517105102539, 43.321151733398}, + {9.0287017822266, 39.319381713867}, + {-71.03096, 41.961708}, + {-74.460526, 40.134659}, + {-74.923324584961, 40.508651733398}, + {-74.116516, 40.398651}, + {-74.515707, 40.498415}, + {-75.109482, 40.654832}, + {-80.864074, 35.004879}, + {-80.730874, 35.300759}, + {-80.658531, 35.214615}, + {-80.334091, 34.981589}, + {-80.878706, 35.823376}, + {-80.98846, 35.300448}, + {-81.155319213867, 35.261306762695}, + {-80.881691, 35.071106}, + {-82.567474, 35.605682}, + {-82.908695, 35.544205}, + {-75.643616, 39.740982}, + {-81.139108, 32.075573}, + {-75.633316040039, 39.154586791992}, + {-75.514389, 39.801407}, + {-79.966049, 32.71601}, + {-80.653903, 33.084091}, + {-72.801418, 40.801334}, + {-73.701297, 40.780445}, + {-82.350357, 27.883163}, + {-84.293201, 30.451732}, + {-82.29377746582, 27.93342590332}, + {-84.363022, 30.535507}, + {-85.746503, 38.274564}, + {-110.832981, 32.160697}, + {-85.689644, 38.144324}, + {-85.864334, 37.691456}, + {-85.657678, 38.149584}, + {-85.834121704102, 38.11637878418}, + {-85.544357, 38.250275}, + {-86.971206665039, 38.300399780273}, + {-86.936874389648, 38.385543823242}, + {-86.186234, 36.761215}, + {-101.86729431152, 35.205001831055}, + {-87.454605102539, 36.693649291992}, + {-85.841924, 38.96707}, + {-87.908249, 37.117081}, + {-101.924598, 33.539325}, + {-101.580502, 32.18491}, + {-79.000168, 42.159348}, + {-102.84370422363, 32.963790893555}, + {-121.47926330566, 38.594284057617}, + {-78.700333, 43.168716}, + {-78.638077, 43.001175}, + {9.6947479248047, 48.028793334961}, + {104.05632019043, 30.629196166992}, + {104.1414642334, 30.61408996582}, + {104.02061462402, 30.686874389648}, + {103.957443, 30.678291}, + {104.12223815918, 30.695114135742}, + {104.26231384277, 30.556411743164}, + {108.92463684082, 34.348068237305}, + {108.920517, 34.263611}, + {108.93424987793, 34.218978881836}, + {103.91761779785, 36.04133605957}, + {-1.62323, 53.732071}, + {-2.5440216064453, 53.082504272461}, + {-2.4671173095703, 53.240432739258}, + {-2.058677, 52.343559}, + {-0.29045104980469, 50.844039916992}, + {-1.8958282470703, 52.063522338867}, + {-0.150375, 50.964875}, + {-1.3149261474609, 53.181381225586}, + {0.19294738769531, 52.658157348633}, + {-1.1226654052734, 53.125076293945}, + {1.2860870361328, 52.077255249023}, + {-0.63514709472656, 52.927322387695}, + {-0.30555725097656, 52.983627319336}, + {-3.5327911376953, 50.714950561523}, + {-3.1482696533203, 54.523086547852}, + {-2.2240447998047, 51.876754760742}, + {-4.1260528564453, 51.203842163086}, + {-1.4467620849609, 54.941940307617}, + {-2.187272, 49.208075}, + {-2.2666168212891, 53.521957397461}, + {-4.5339202880859, 54.152297973633}, + {1.98834, 48.711568}, + {4.3952178955078, 45.438766479492}, + {5.2384185791016, 45.59944152832}, + {7.1266937255859, 43.641128540039}, + {-1.6472625732422, 48.108444213867}, + {0.26573181152344, 46.53190612793}, + {-1.7118072509766, 48.129043579102}, + {-1.5538787841797, 43.450241088867}, + {4.211655, 43.96843}, + {-1.082391, 47.420654}, + {1.569443, 47.766266}, + {-1.0086822509766, 44.682083129883}, + {-0.27397155761719, 43.246994018555}, + {2.7788543701172, 50.290603637695}, + {6.7243194580078, 46.084213256836}, + {-2.1553802490234, 47.239151000977}, + {6.341744, 43.406995}, + {4.1493988037109, 44.209671020508}, + {0.017166137695312, 43.244247436523}, + {-0.13526916503906, 49.213943481445}, + {1.7269134521484, 50.298843383789}, + {4.0560150146484, 44.156112670898}, + {-122.504044, 37.866804}, + {-122.694545, 38.308718}, + {-122.097611, 37.425182}, + {-121.84867858887, 36.806259155273}, + {-122.0189666748, 37.405014038086}, + {-121.83959, 37.23795}, + {-121.760206, 37.228969}, + {-121.974642, 37.30739}, + {-119.860231, 34.445934}, + {-118.41407775879, 34.150314331055}, + {-118.53355407715, 34.386520385742}, + {-119.097795, 35.427677}, + {-118.21632385254, 34.144821166992}, + {-119.288218, 35.353018}, + {-119.19548034668, 34.172286987305}, + {-119.155616, 34.273024}, + {-118.190147, 34.111883}, + {-118.402726, 34.316061}, + {-118.143586, 34.186617}, + {-118.283713, 34.096266}, + {-118.06938171387, 33.923721313477}, + {12.418442, 48.186722}, + {11.804122924805, 48.535537719727}, + {11.174625, 48.213634}, + {12.114487, 48.570213}, + {11.430244, 48.264999}, + {11.452560424805, 48.768997192383}, + {9.0122222900391, 49.215316772461}, + {11.350937, 47.781143}, + {11.828156, 47.790527}, + {12.633591, 47.799454}, + {11.588516235352, 48.123550415039}, + {11.522598266602, 48.134536743164}, + {11.589041, 48.137826}, + {17.820510864258, 59.37629699707}, + {17.798538208008, 59.28840637207}, + {14.532852172852, 56.252059936523}, + {18.092422485352, 59.33235168457}, + {11.988378, 57.74208}, + {17.836990356445, 59.206008911133}, + {17.949395, 59.287509}, + {12.301941, 58.314743}, + {16.975936889648, 59.712753295898}, + {11.469039, 58.281784}, + {17.982614, 59.0411}, + {17.568505, 59.192966}, + {18.15525, 59.149532}, + {13.004929, 55.567337}, + {18.536039, 59.32356}, + {12.640465, 57.851948}, + {18.04573059082, 59.287033081055}, + {17.960586547852, 59.564437866211}, + {11.945571899414, 57.645950317383}, + {18.135223, 59.274673}, + {12.89176940918, 56.699752807617}, + {17.954701, 59.410041}, + {15.746841430664, 56.139450073242}, + {12.990646362305, 55.59700012207}, + {151.216507, -33.891678}, + {151.22886657715, -33.960800170898}, + {148.69102478027, -34.00749206543}, + {151.085358, -33.9608}, + {150.52024841309, -35.047073364258}, + {150.733795, -34.129715}, + {150.62461853027, -34.812240600586}, + {144.680328, -37.73735}, + {142.17338562012, -36.695022583008}, + {144.8609161377, -37.681045532227}, + {144.774845, -37.618556}, + {145.31684875488, -37.512130737305}, + {145.168114, -37.944557}, + {145.14381408691, -37.891159057617}, + {145.327408, -38.101458}, + {145.56678771973, -38.071060180664}, + {144.9048614502, -37.833480834961}, + {144.907398, -37.798462}, + {144.699436, -37.860828}, + {145.046997, -37.850058}, + {145.05867004395, -37.88703918457}, + {78.78776550293, 17.471694946289}, + {77.941818237305, 16.379928588867}, + {78.083542, 17.588425}, + {79.430465698242, 16.988296508789}, + {77.157211, 31.103211}, + {78.513565, 13.577042}, + {85.887680053711, 20.461349487305}, + {76.771774, 30.760345}, + {75.552291870117, 31.359786987305}, + {75.574264526367, 31.306228637695}, + {76.730575561523, 30.740432739258}, + {81.86393737793, 25.466995239258}, + {79.392014, 28.371506}, + {79.909744262695, 27.053146362305}, + {80.917739868164, 26.874618530273}, + {77.674026489258, 27.49397277832}, + {81.003342, 26.839829}, + {80.963058, 26.886292}, + {78.415603637695, 27.136917114258}, + {77.691879272461, 29.007339477539}, + {78.789138793945, 30.221328735352}, + {78.710861206055, 28.809585571289}, + {79.048690795898, 28.76838684082}, + {77.702865600586, 29.472885131836}, + {24.853134155273, 60.311508178711}, + {25.034408569336, 60.310134887695}, + {25.685348510742, 62.522506713867}, + {29.769515991211, 62.59391784668}, + {29.770889282227, 62.754592895508}, + {25.641403198242, 62.393417358398}, + {29.504470825195, 61.558456420898}, + {24.803695678711, 67.805557250977}, + {29.328689575195, 61.460952758789}, + {27.209701538086, 63.552474975586}, + {24.780349731445, 60.737228393555}, + {25.112686157227, 60.338973999023}, + {25.114059448242, 60.223617553711}, + {25.093460083008, 60.222244262695}, + {24.934158325195, 60.209884643555}, + {25.019302368164, 60.35270690918}, + {24.982223510742, 60.214004516602}, + {25.068740844727, 60.256576538086}, + {25.023422241211, 60.410385131836}, + {25.037155151367, 60.290908813477}, + {25.097579956055, 60.34309387207}, + {-100.86067199707, 22.140884399414}, + {-99.150924682617, 19.445114135742}, + {-99.759292602539, 19.372329711914}, + {-99.43244934082, 19.18830871582}, + {-103.67729187012, 19.266586303711}, + {-98.244552612305, 21.981582641602}, + {-100.30448913574, 25.690841674805}, + {-103.41361999512, 20.696182250977}, + {-103.319018, 20.655358}, + {-103.2447052002, 20.521774291992}, + {-96.948165893555, 19.590682983398}, + {-96.801223754883, 19.489059448242}, + {-106.14234924316, 28.688735961914}, + {-101.576493, 20.961352}, + {-101.68190002441, 21.069717407227}, + {-102.052599, 19.415807}, + {-116.960052, 32.514267}, + {-102.069389, 19.426135}, + {-109.92851257324, 27.467880249023}, + {-110.98731994629, 29.081497192383}, + {122.13569641113, 37.405014038086}, + {116.97898864746, 33.75617980957}, + {120.18836975098, 30.24055480957}, + {120.08262634277, 30.311965942383}, + {118.57063293457, 32.297744750977}, + {121.5355682373, 29.868392944336}, + {121.41471862793, 29.615707397461}, + {121.5699005127, 29.821701049805}, + {119.241142, 26.030045}, + {119.7859954834, 25.50407409668}, + {118.60084533691, 24.876480102539}, + {118.39485168457, 24.61555480957}, + {114.40132141113, 30.60173034668}, + {114.29145812988, 30.509719848633}, + {112.89894104004, 29.840927124023}, + {112.99095153809, 28.195724487305}, + {114.21867370605, 30.583877563477}, + {111.7000579834, 29.022445678711}, + {108.36845397949, 22.806930541992}, + {110.284882, 25.281601}, + {103.97529602051, 30.647048950195}, + {115.78834533691, 28.647537231445}, + {72.923812866211, 21.29768371582}, + {73.161392211914, 22.319412231445}, + {74.104843139648, 17.390670776367}, + {79.109115600586, 21.179580688477}, + {75.905227661133, 17.65022277832}, + {73.764267, 19.970398}, + {73.891983032227, 15.491409301758}, + {72.813949584961, 19.440994262695}, + {73.80455, 18.633499}, + {73.873672, 18.481064}, + {73.853955, 18.519219}, + {77.455673217773, 23.227157592773}, + {77.466659545898, 23.232650756836}, + {77.307357788086, 28.414077758789}, + {72.838668823242, 19.001541137695}, + {72.832352, 18.985062}, + {77.010726928711, 28.493728637695}, + {72.835922241211, 19.186935424805}, + {72.893600463867, 19.097671508789}, + {76.37077331543, 26.225051879883}, + {72.958145141602, 19.15397644043}, + {74.01008605957, 29.439926147461}, + {75.743179321289, 26.913070678711}, + {8.425827, 44.269753}, + {9.550552, 44.243546}, + {11.361923217773, 44.338760375977}, + {12.471542358398, 44.031143188477}, + {9.94812, 44.5681}, + {12.645950317383, 43.984451293945}, + {12.641830444336, 44.000930786133}, + {8.9765167236328, 44.407424926758}, + {10.267639, 44.597855}, + {10.361252, 44.798355}, + {10.496946, 44.699347}, + {10.966415405273, 44.583206176758}, + {10.675964, 44.778401}, + {12.387771606445, 45.42366027832}, + {10.853413, 44.920055}, + {12.504501342773, 45.659866333008}, + {12.32048034668, 45.440139770508}, + {12.163925170898, 45.975723266602}, + {12.45231628418, 46.492080688477}, + {12.28889465332, 46.194076538086}, + {-90.083084106445, 14.40788269043}, + {-91.505813598633, 14.431228637695}, + {-90.337601, 14.369888}, + {-89.437637329102, 16.432113647461}, + {-91.493453979492, 15.241470336914}, + {-88.836341, 15.497472}, + {-90.183792, 15.149002}, + {-88.96455, 15.569563}, + {-90.35774230957, 15.441970825195}, + {-90.106430053711, 14.851455688477}, + {-89.366226196289, 14.819869995117}, + {-90.224533081055, 13.932723999023}, + {-90.13801574707, 14.855575561523}, + {-89.230270385742, 13.659439086914}, + {-89.137573, 13.704071}, + {-88.304672241211, 13.52897644043}, + {-89.669723510742, 13.90251159668}, + {-89.695816040039, 13.73908996582}, + {-89.264602661133, 13.680038452148}, + {-89.283829, 13.681259}, + {-92.239838, 14.875488}, + {-88.304672241211, 18.531875610352}, + {-99.198989868164, 19.478073120117}, + {-99.13444519043, 19.432754516602}, + {-99.197617, 19.441269}, + {-99.225082, 19.474869}, + {-99.295120239258, 19.366836547852}, + {-99.204483032227, 19.43000793457}, + {-98.968276977539, 19.423141479492}, + {-100.97877502441, 25.40657043457}, + {-100.979962, 25.423009}, + {-101.004868, 25.513001}, + {-103.44795227051, 20.689315795898}, + {-105.28678894043, 21.543502807617}, + {-99.207229614258, 19.402542114258}, + {-99.234318, 19.382687}, + {-102.48527526855, 22.750625610352}, + {-98.207473754883, 18.971328735352}, + {-98.203353881836, 18.987808227539}, + {-92.868847, 18.112296}, + {-97.136288, 18.839288}, + {5.253659, 45.585433}, + {5.648052, 45.258615}, + {5.221367, 46.204605}, + {4.405347, 45.410528}, + {4.72532, 46.021163}, + {5.698814, 45.189421}, + {5.750827, 45.171061}, + {5.259116, 43.426895}, + {5.4032135009766, 43.268966674805}, + {5.126816, 45.598709}, + {4.823915, 45.724943}, + {4.876864, 45.751403}, + {4.79688, 45.576401}, + {4.8442840576172, 45.720291137695}, + {4.8964691162109, 45.755996704102}, + {7.284513, 43.713191}, + {7.104366, 43.729506}, + {6.1695098876953, 43.123397827148}, + {6.0157012939453, 43.122024536133}, + {2.2226715087891, 48.777236938477}, + {-0.68595886230469, 49.281234741211}, + {16.417007, 48.205556}, + {16.396408081055, 48.238906860352}, + {16.393661499023, 48.275985717773}, + {16.340561, 48.24028}, + {16.391822, 48.266373}, + {16.367568969727, 48.252639770508}, + {16.314010620117, 48.12629699707}, + {16.346969604492, 48.167495727539}, + {16.268692016602, 48.189468383789}, + {16.377182006836, 48.15788269043}, + {16.302109, 48.196335}, + {16.318130493164, 48.20182800293}, + {14.810256958008, 48.102951049805}, + {16.386795043945, 48.031539916992}, + {11.835069, 47.842098}, + {13.737716674805, 47.782974243164}, + {13.781661987305, 48.04801940918}, + {14.28840637207, 48.247146606445}, + {8.5755157470703, 56.367416381836}, + {8.5727691650391, 56.489639282227}, + {10.031204223633, 56.434707641602}, + {10.136947631836, 56.153182983398}, + {8.8268280029297, 55.952682495117}, + {9.961166, 56.060143}, + {8.882927, 55.752357}, + {9.5326995849609, 55.705490112305}, + {9.5821380615234, 54.882888793945}, + {8.475952, 55.459671}, + {10.367660522461, 55.417098999023}, + {10.632705688477, 55.45280456543}, + {9.4791412353516, 55.24543762207}, + {10.231247, 55.398331}, + {11.975783, 55.317536}, + {14.70588684082, 55.17951965332}, + {11.418228149414, 54.810104370117}, + {11.756172, 55.459786}, + {12.28244, 55.569534}, + {12.068473, 55.586018}, + {11.680069, 55.65239}, + {12.264862, 55.759048}, + {11.635208129883, 55.712356567383}, + {40.555344, 64.500732}, + {30.527572631836, 56.258926391602}, + {83.727493286133, 53.362655639648}, + {83.562698364258, 53.29948425293}, + {81.627731323242, 52.70622253418}, + {39.891495, 57.636063}, + {39.871444702148, 57.610244750977}, + {55.440444946289, 57.983779907227}, + {83.073806762695, 54.911727905273}, + {37.240219116211, 55.840072631836}, + {55.836639, 58.046951}, + {37.487411499023, 55.781021118164}, + {37.481918334961, 55.812606811523}, + {37.492798, 55.78818}, + {37.369308, 55.759964}, + {37.620817, 55.793381}, + {37.470932006836, 55.800247192383}, + {36.896896362305, 56.054306030273}, + {36.918869018555, 56.224594116211}, + {37.300987, 55.797501}, + {36.623611, 56.429901}, + {37.518654, 55.60936}, + {37.544937, 55.606918}, + {37.465438842773, 55.634078979492}, + {37.568435668945, 55.675277709961}, + {37.61100769043, 55.642318725586}, + {37.578186, 55.694916}, + {37.621994018555, 55.70686340332}, + {37.540969848633, 55.746688842773}, + {37.609634399414, 55.610733032227}, + {37.300643920898, 55.80436706543}, + {37.47917175293, 55.842819213867}, + {37.514853, 55.869281}, + {37.497024536133, 55.864791870117}, + {37.433853149414, 55.749435424805}, + {37.636414, 55.837326}, + {37.639846801758, 55.846939086914}, + {37.392654418945, 55.95817565918}, + {37.674179077148, 55.813980102539}, + {37.604141235352, 55.851058959961}, + {37.657974, 55.840347}, + {37.685165405273, 55.867538452148}, + {37.63993, 55.817575}, + {16.822128295898, 41.101913452148}, + {17.305526733398, 40.95085144043}, + {18.065947, 40.453519}, + {14.600143432617, 40.737991333008}, + {18.218307, 40.302658}, + {18.299299, 40.121874}, + {14.344254, 40.807571}, + {14.974365, 40.604095}, + {15.270309448242, 40.227127075195}, + {14.164810180664, 41.178817749023}, + {14.329605102539, 41.044235229492}, + {14.333724975586, 41.08268737793}, + {14.563064575195, 41.23649597168}, + {14.802017211914, 41.134872436523}, + {14.641342163086, 40.648727416992}, + {13.598099, 38.020248}, + {16.183547973633, 41.24885559082}, + {12.83311, 38.05772}, + {13.723983764648, 37.966690063477}, + {15.058822631836, 37.436599731445}, + {-122.2908782959, 37.826614379883}, + {-122.46803283691, 37.763442993164}, + {-122.36503601074, 37.973556518555}, + {-122.29637145996, 37.881546020508}, + {-122.13569641113, 38.017501831055}, + {-122.231483, 37.444496}, + {-122.33070373535, 37.571182250977}, + {-121.885414, 36.59079}, + {-121.75941467285, 36.51237487793}, + {-121.829453, 36.638031}, + {-121.7813873291, 37.985916137695}, + {-121.92558288574, 37.719497680664}, + {-122.09037780762, 37.480545043945}, + {-122.219467, 38.138513}, + {-123.206444, 39.216665}, + {-122.076133, 37.412877}, + {-122.06977844238, 37.405014038086}, + {121.49711608887, 25.008316040039}, + {121.56396, 25.035576}, + {121.501596, 25.041103}, + {121.5616607666, 25.038528442383}, + {121.45179748535, 25.026168823242}, + {121.44905090332, 25.041275024414}, + {121.48612976074, 25.006942749023}, + {121.50535583496, 25.03303527832}, + {121.76216125488, 24.758377075195}, + {121.465905, 25.052261}, + {121.77040100098, 24.75700378418}, + {121.60148620605, 23.993453979492}, + {121.42158508301, 25.057754516602}, + {121.57676696777, 23.975601196289}, + {121.77040100098, 24.677352905273}, + {121.46278381348, 25.182723999023}, + {121.41609191895, 25.181350708008}, + {121.42295837402, 25.111312866211}, + {121.45454406738, 25.079727172852}, + {121.51084899902, 25.087966918945}, + {121.470337, 25.083847}, + {121.59324645996, 25.291213989258}, + {121.536026, 25.042648}, + {121.5699005127, 25.081100463867}, + {18.635864, 54.382345}, + {18.64449, 54.3567}, + {18.634872436523, 54.334945678711}, + {16.889419555664, 54.579391479492}, + {18.548355102539, 54.336318969727}, + {19.171808, 54.325196}, + {18.676623, 54.150377}, + {15.554809, 54.167061}, + {14.73747253418, 53.151168823242}, + {15.032730102539, 53.335189819336}, + {19.082543, 52.642082}, + {18.610153198242, 53.019332885742}, + {18.785934448242, 53.023452758789}, + {20.957794, 53.568649}, + {21.79069519043, 54.041061401367}, + {18.92601, 53.311501}, + {14.688034057617, 53.366775512695}, + {14.557571, 53.448074}, + {135.25337219238, 34.721603393555}, + {135.277405, 34.71199}, + {135.228378, 34.713364}, + {135.52116394043, 34.652938842773}, + {135.49507141113, 34.705123901367}, + {135.42640686035, 34.753189086914}, + {135.43464660645, 34.736709594727}, + {133.70429992676, 34.15168762207}, + {133.808866, 34.256254}, + {132.3983001709, 34.484024047852}, + {133.61915588379, 34.614486694336}, + {133.884544, 34.657059}, + {132.462158, 34.39476}, + {133.229828, 34.460678}, + {131.31065368652, 34.017105102539}, + {133.87870788574, 34.621353149414}, + {130.584068, 32.935546}, + {130.70503234863, 33.628463745117}, + {130.53611755371, 31.597366333008}, + {130.442963, 33.656158}, + {130.86158752441, 33.896255493164}, + {130.5004119873, 32.95280456543}, + {131.668625, 33.216476}, + {127.710571, 26.227112}, + {8.266068, 50.074997}, + {8.7389373779297, 50.364761352539}, + {8.331757, 50.007019}, + {8.357677, 49.963761}, + {8.643211, 49.856886}, + {11.519847, 53.863911}, + {13.91128, 51.534262}, + {13.76106262207, 52.47688293457}, + {13.255086, 53.556281}, + {13.931350708008, 52.538681030273}, + {13.716433, 52.519457}, + {100.56541442871, 13.762435913086}, + {100.53520202637, 13.766555786133}, + {100.52146911621, 13.74870300293}, + {100.60523986816, 13.77067565918}, + {99.826583862305, 15.759201049805}, + {100.48713684082, 13.766555786133}, + {100.903244, 14.455948}, + {100.499157, 13.750567}, + {100.63270568848, 13.691024780273}, + {100.517349, 13.752136}, + {100.53108215332, 13.78303527832}, + {98.615341186523, 19.270706176758}, + {100.63545227051, 13.706130981445}, + {100.63957214355, 13.693771362305}, + {100.5997467041, 13.743209838867}, + {100.49537658691, 13.868179321289}, + {100.56816101074, 13.751449584961}, + {100.47752380371, 13.932723999023}, + {100.53932189941, 13.796768188477}, + {100.524101, 13.800316}, + {101.0474395752, 13.423233032227}, + {101.11335754395, 13.467178344727}, + {100.53932189941, 13.832473754883}, + {135.52940368652, 34.819107055664}, + {135.477908, 34.749074}, + {135.50743103027, 34.608993530273}, + {135.63789367676, 34.565048217773}, + {135.6324005127, 34.81086730957}, + {135.410614, 34.92897}, + {134.83863830566, 34.850692749023}, + {135.417887, 34.832905}, + {135.25062561035, 34.828720092773}, + {135.1847076416, 34.19563293457}, + {135.16273498535, 34.074783325195}, + {135.76148986816, 34.982528686523}, + {135.80680847168, 34.949569702148}, + {135.161112, 35.743582}, + {135.539779, 35.119894}, + {135.72715759277, 34.978408813477}, + {136.31904602051, 34.915237426758}, + {135.99220275879, 35.014114379883}, + {136.31355285645, 35.309371948242}, + {136.08833312988, 35.019607543945}, + {136.90818786621, 35.261306762695}, + {135.90019226074, 34.376907348633}, + {-77.142562866211, 39.154586791992}, + {-77.919845581055, 39.499282836914}, + {-77.025094, 39.250924}, + {-76.618119, 39.311414}, + {-77.911606, 38.679428}, + {-76.006851196289, 36.545333862305}, + {-76.41517, 39.4093}, + {-76.469553, 37.101787}, + {-77.341441, 37.249012}, + {-78.19313, 36.632309}, + {-78.498638, 38.031818}, + {-76.741561889648, 37.25944519043}, + {-78.990622, 38.205892}, + {-77.440567016602, 37.759323120117}, + {-78.83359, 38.410318}, + {-77.993863, 37.846274}, + {-81.569598, 38.273463}, + {-80.504447, 37.147111}, + {-82.67308, 38.472139}, + {-80.209448, 39.383935}, + {-81.214801, 37.815033}, + {16.364822387695, 48.182601928711}, + {16.389541625977, 48.207321166992}, + {16.377182006836, 48.188095092773}, + {16.320877075195, 48.218307495117}, + {15.579758, 48.285141}, + {16.562576293945, 48.563003540039}, + {15.130233764648, 48.767623901367}, + {15.054977, 47.311386}, + {15.095901489258, 47.38883972168}, + {15.100021362305, 47.392959594727}, + {16.24397277832, 47.813186645508}, + {15.455017, 47.075729}, + {16.844100952148, 47.975234985352}, + {16.456833, 47.793274}, + {14.314498901367, 46.63215637207}, + {15.139473, 47.002975}, + {14.274673461914, 46.648635864258}, + {15.552658, 46.830185}, + {13.879166, 46.641769}, + {14.323196, 46.622543}, + {14.29801940918, 46.606063842773}, + {14.841842651367, 47.218551635742}, + {50.514450073242, 26.190719604492}, + {50.591354, 26.206284}, + {50.599594116211, 26.218185424805}, + {50.557022094727, 26.222305297852}, + {50.517302, 26.160515}, + {50.54939, 26.207154}, + {50.614502, 26.139671}, + {50.576248168945, 26.20719909668}, + {50.59293, 26.238667}, + {50.606461, 25.949707}, + {50.599528, 26.228364}, + {50.519943, 26.059708}, + {-70.182723999023, 44.492568969727}, + {-94.016189575195, 41.218643188477}, + {-77.37529, 35.495041}, + {-89.142379760742, 43.244247436523}, + {-89.570846557617, 42.99430847168}, + {-89.00505065918, 42.704544067383}, + {-88.13850402832, 43.781204223633}, + {-88.137130737305, 43.277206420898}, + {-87.926331, 43.03997}, + {-97.481002807617, 35.20637512207}, + {-87.749862670898, 43.811416625977}, + {-91.503067016602, 39.307022094727}, + {-97.537307739258, 35.45768737793}, + {-83.925247192383, 35.773544311523}, + {-90.629653930664, 41.003036499023}, + {-96.670761108398, 35.358810424805}, + {-89.016036987305, 42.293930053711}, + {-96.236801147461, 41.140365600586}, + {-89.737014770508, 33.03108215332}, + {-89.965153, 32.383919}, + {-89.196396, 32.771645}, + {-90.401687, 32.353364}, + {-74.067764282227, 45.348129272461}, + {-73.624649, 45.488663}, + {-73.57063293457, 45.49919128418}, + {-73.572006225586, 45.501937866211}, + {-71.909981, 46.681938}, + {-67.122345, 48.953476}, + {-68.516922, 48.43071}, + {-70.090713500977, 47.354507446289}, + {-64.252366, 48.560264}, + {-73.977127075195, 45.625534057617}, + {-73.825778, 45.745937}, + {-73.925903, 45.6828}, + {-73.494644, 45.376053}, + {-73.173751831055, 45.593948364258}, + {-73.615265, 45.41748}, + {-75.792618, 45.322723}, + {8.5837554931641, 50.20133972168}, + {8.3942413330078, 52.066268920898}, + {9.9776458740234, 52.373886108398}, + {9.720325, 49.534092}, + {11.229172, 52.200394}, + {8.6840057373047, 50.142288208008}, + {8.4752655029297, 50.364761352539}, + {6.9097137451172, 50.723190307617}, + {6.8080902099609, 51.192855834961}, + {7.6059722900391, 50.374374389648}, + {8.3406829833984, 49.392471313477}, + {8.576104, 50.049493}, + {8.5961151123047, 50.006332397461}, + {10.32096862793, 50.022811889648}, + {8.277397, 50.000839}, + {8.772926, 50.066757}, + {6.557053, 49.702286}, + {7.566832, 49.464227}, + {126.88041687012, 37.565689086914}, + {126.88179016113, 37.546463012695}, + {126.91749572754, 37.587661743164}, + {126.90238952637, 37.55744934082}, + {129.291244, 35.558491}, + {129.42649841309, 35.49201965332}, + {129.26170349121, 35.551071166992}, + {129.28367614746, 35.833969116211}, + {128.744262, 35.650692}, + {129.319397, 35.95769}, + {128.938691, 35.93394}, + {127.024612, 37.288971}, + {127.03834533691, 37.286911010742}, + {127.00263977051, 37.267684936523}, + {127.02461242676, 37.286911010742}, + {127.12760925293, 36.953201293945}, + {127.06993103027, 37.288284301758}, + {127.04383850098, 37.749710083008}, + {127.047958, 37.700958}, + {127.00813293457, 36.785659790039}, + {127.02461242676, 37.741470336914}, + {126.99028015137, 37.561569213867}, + {126.99714660645, 37.561569213867}, + {126.97654724121, 37.569808959961}, + {-74.943923950195, 40.095291137695}, + {-75.946426391602, 39.637985229492}, + {-75.50422668457, 39.162826538086}, + {-74.965285, 40.136462}, + {-75.587997436523, 39.677810668945}, + {-75.515213012695, 39.701156616211}, + {-75.685988, 39.674287}, + {-75.347671508789, 40.277938842773}, + {-75.715713500977, 40.076065063477}, + {-75.501480102539, 40.080184936523}, + {-75.920333862305, 40.338363647461}, + {-75.916213989258, 40.438613891602}, + {-75.213088989258, 40.606155395508}, + {-77.377138, 39.44957}, + {-75.604476928711, 40.229873657227}, + {-77.122521, 39.174371}, + {-77.162241, 38.987721}, + {-77.370529174805, 39.607772827148}, + {-76.86653137207, 39.219131469727}, + {-77.181701, 39.06189}, + {-76.925582885742, 38.993911743164}, + {-77.08625793457, 38.852462768555}, + {-76.936569213867, 38.910140991211}, + {-76.955795288086, 38.892288208008}, + {-80.327224731445, 42.789688110352}, + {-80.716258, 43.39943}, + {-77.745327, 44.036366}, + {-79.44281, 43.683858}, + {-79.936523, 43.775024}, + {-79.532947, 43.904817}, + {-79.366447, 43.782708}, + {-79.39338684082, 43.794937133789}, + {-79.466171264648, 43.76335144043}, + {-79.294838, 45.236034}, + {-88.105545043945, 38.48991394043}, + {-76.727828979492, 39.279556274414}, + {-86.452675, 37.07445}, + {-87.607949, 37.975876}, + {-88.751417, 37.277648}, + {-87.601243, 37.198468}, + {-85.647354125977, 38.242721557617}, + {-85.925329, 37.775681}, + {-85.835736, 38.150536}, + {-85.591049194336, 38.266067504883}, + {-85.684432983398, 38.200149536133}, + {-84.106521606445, 36.585159301758}, + {-85.493334, 37.851143}, + {-84.517678, 38.047798}, + {-84.624252319336, 37.031478881836}, + {-84.801406860352, 37.998275756836}, + {-84.282302856445, 37.646713256836}, + {-88.827896118164, 35.663681030273}, + {-90.205669, 35.201903}, + {-88.391887, 35.179621}, + {-89.765406, 35.050236}, + {9.994675, 53.508774}, + {10.033035, 53.642807}, + {9.9556732177734, 52.19123840332}, + {9.4860076904297, 52.604598999023}, + {6.3933563232422, 50.893478393555}, + {9.819625, 52.678757}, + {6.31367, 51.083179}, + {11.039671, 49.636941}, + {11.319604, 49.543027}, + {9.336319, 48.58017}, + {9.706192, 48.670578}, + {8.7238311767578, 53.155288696289}, + {9.017717, 48.498464}, + {9.9790191650391, 52.759780883789}, + {7.589149, 52.124977}, + {9.8087310791016, 52.531814575195}, + {103.78715515137, 1.2984466552734}, + {103.838754, 1.424454}, + {103.96843, 1.366653}, + {103.9395904541, 1.3822174072266}, + {103.84757995605, 1.3327789306641}, + {103.69651794434, 1.3506317138672}, + {103.89152526855, 1.3217926025391}, + {103.813957, 1.288106}, + {-97.279129, 32.812042}, + {-97.445984, 32.740631}, + {-93.778604, 32.379686}, + {-67.036514282227, 18.041610717773}, + {-70.909194946289, 42.486190795898}, + {-71.264877, 42.334644}, + {-71.072273, 42.360706}, + {-71.503829956055, 42.214279174805}, + {-74.194107055664, 40.755844116211}, + {-71.117459, 42.19248}, + {-74.190998, 40.707297}, + {-74.535932, 40.436928}, + {-74.775009155273, 40.912399291992}, + {-74.480812, 40.334029}, + {-73.940048217773, 40.997543334961}, + {-111.419222, 36.914979}, + {-110.06364, 35.319691}, + {-111.05735778809, 36.611251831055}, + {-121.90635681152, 37.240219116211}, + {-77.208480834961, 37.418746948242}, + {-111.425444, 36.40407}, + {-91.397323608398, 40.625381469727}, + {-86.086612, 44.936786}, + {14.374923706055, 40.879440307617}, + {14.780044555664, 40.924758911133}, + {14.575424194336, 40.747604370117}, + {14.802475, 41.135788}, + {14.475173950195, 40.766830444336}, + {14.3684, 41.01059}, + {14.575424194336, 40.742111206055}, + {14.274445, 40.850601}, + {14.249496, 40.858841}, + {15.028610229492, 40.537490844727}, + {14.192204, 40.836393}, + {14.274673461914, 40.895919799805}, + {18.19954, 40.060273}, + {18.159845, 40.325319}, + {17.974817, 40.330348}, + {18.374405, 40.181351}, + {15.580673217773, 38.244094848633}, + {16.272811889648, 38.239974975586}, + {15.126113891602, 37.540969848633}, + {15.04508972168, 37.439346313477}, + {15.06897, 37.532654}, + {-77.267763, 39.328079}, + {-77.538047, 39.273793}, + {-77.428825, 39.002167}, + {-78.462295532227, 38.888168334961}, + {-78.552246, 38.693161}, + {-78.187637329102, 38.956832885742}, + {-73.867263793945, 41.621017456055}, + {-79.189524, 42.12718}, + {-73.317947387695, 42.867965698242}, + {-73.859024, 43.588944}, + {-73.614991, 43.051323}, + {-75.474014282227, 42.924270629883}, + {-76.118087768555, 43.003921508789}, + {-73.611831665039, 42.274703979492}, + {-73.360298, 42.544308}, + {-74.08392, 42.370213}, + {-73.937491, 42.814763}, + {-76.22932434082, 42.992935180664}, + {-78.410397, 42.909335}, + {39.90303, 43.459305}, + {39.892071, 43.485616}, + {39.021377563477, 45.02815246582}, + {48.995590209961, 55.830459594727}, + {48.558072, 55.730251}, + {48.54377746582, 55.830459594727}, + {49.182357788086, 55.802993774414}, + {49.160385131836, 55.908737182617}, + {52.264022827148, 54.885635375977}, + {49.060134887695, 55.851058959961}, + {51.819076538086, 55.623092651367}, + {52.338524, 55.992508}, + {37.502517700195, 55.737075805664}, + {37.587661743164, 55.660171508789}, + {65.624771118164, 57.095260620117}, + {47.880584, 56.609327}, + {41.789933, 44.699936}, + {41.913528442383, 44.657363891602}, + {42.368089, 44.543381}, + {47.920303344727, 54.306106567383}, + {12.004623413086, 58.388900756836}, + {16.574935913086, 59.174423217773}, + {13.037338, 60.097275}, + {12.308120727539, 58.384780883789}, + {13.483657836914, 55.719223022461}, + {15.252456665039, 60.823745727539}, + {12.802505493164, 55.885391235352}, + {12.931229, 56.459152}, + {16.462326049805, 59.362564086914}, + {12.854004, 56.426468}, + {16.504898071289, 57.725601196289}, + {18.134842, 59.125595}, + {18.025131, 59.290237}, + {14.574509, 57.03392}, + {18.292922973633, 57.639083862305}, + {17.974797, 59.255939}, + {18.163833618164, 59.181289672852}, + {14.090356, 56.329586}, + {14.171676635742, 57.754440307617}, + {16.178656, 58.590989}, + {17.737656, 60.020828}, + {55.288991, 25.194103}, + {53.987503051758, 16.948471069336}, + {55.320529, 25.264494}, + {58.262283, 23.621292}, + {55.406112670898, 25.214309692383}, + {55.250930786133, 25.190963745117}, + {55.92041, 25.765686}, + {55.386317, 25.279853}, + {55.375846, 25.307727}, + {54.973526000977, 24.916305541992}, + {55.485763549805, 25.307693481445}, + {55.418747, 25.291489}, + {55.180892944336, 24.877853393555}, + {55.249557495117, 25.079727172852}, + {55.159607, 25.036469}, + {54.608231, 24.485779}, + {55.141067504883, 25.116806030273}, + {54.527753, 24.357461}, + {54.385757446289, 24.431533813477}, + {54.546432, 24.421234}, + {54.731826782227, 24.399948120117}, + {54.505234, 24.347305}, + {-88.005753, 42.005539}, + {-87.658768, 41.7556}, + {-87.646843, 41.534511}, + {-88.08219909668, 41.497421264648}, + {-88.686172, 42.010483}, + {-87.6297, 41.88469}, + {-87.699051, 41.867294}, + {-87.875381, 41.751205}, + {-88.008219, 41.715464}, + {-87.635879516602, 41.875076293945}, + {-87.740936, 41.954041}, + {-87.681983, 41.788167}, + {-87.626266, 41.766494}, + {-87.537003, 41.639307}, + {-87.151107788086, 40.828628540039}, + {-87.71553, 41.695175}, + {-87.010117, 41.451187}, + {-87.650986, 41.803894}, + {-87.880325317383, 41.899795532227}, + {-88.107101, 42.234512}, + {-88.094559, 41.869278}, + {-86.760921, 41.682472}, + {-87.942581, 42.428513}, + {-87.860903, 41.543329}, + {-88.038711, 41.550522}, + {-87.236251831055, 14.059066772461}, + {-85.909652709961, 15.708389282227}, + {-88.015594, 15.496216}, + {-86.004409790039, 14.769058227539}, + {-87.877578735352, 15.237350463867}, + {-88.251113891602, 15.314254760742}, + {-86.273277, 12.155278}, + {-88.036880493164, 15.529861450195}, + {-86.206283569336, 12.148818969727}, + {-87.330307, 15.66804}, + {-86.310653686523, 11.995010375977}, + {-87.119522094727, 12.661056518555}, + {-86.314087, 13.022919}, + {-86.202163696289, 11.920852661133}, + {-83.850174, 9.241104}, + {-85.040017, 10.381737}, + {-85.227127075195, 10.532455444336}, + {-84.185898, 9.944687}, + {-84.00764465332, 10.448684692383}, + {51.33430480957, 25.332412719727}, + {51.448287963867, 25.363998413086}, + {51.413955688477, 25.299453735352}, + {51.46019, 25.330124}, + {51.529312133789, 25.282974243164}, + {51.562271118164, 25.144271850586}, + {51.382192, 25.233058}, + {51.504592895508, 25.250015258789}, + {51.348038, 35.733523}, + {51.478226, 35.814743}, + {51.395245, 35.73123}, + {51.41886, 35.772087}, + {59.581003, 36.293592}, + {51.414963, 35.784531}, + {48.293838500977, 38.249588012695}, + {46.306686401367, 38.065567016602}, + {51.419449, 35.702477}, + {51.364517211914, 35.553817749023}, + {59.577255, 36.322861}, + {51.617202758789, 35.722732543945}, + {51.392441, 35.627518}, + {54.352798461914, 31.887130737305}, + {73.857651, 18.461838}, + {73.911552, 18.59848}, + {74.019184, 17.68301}, + {74.376754760742, 18.454971313477}, + {73.813705, 18.461563}, + {73.957558, 17.912178}, + {73.891296, 18.853226}, + {75.400758, 17.75185}, + {74.111709594727, 16.40739440918}, + {74.487991, 19.654541}, + {73.829498, 18.477631}, + {73.902969360352, 18.483810424805}, + {74.176254, 17.209396}, + {73.983993530273, 20.161972045898}, + {74.828567504883, 19.261093139648}, + {74.080123901367, 20.25260925293}, + {73.831558, 18.622513}, + {75.141677856445, 21.240005493164}, + {76.872024536133, 20.672836303711}, + {73.750534, 20.500488}, + {75.022201538086, 20.862350463867}, + {76.943435668945, 20.690689086914}, + {78.592758178711, 20.760726928711}, + {79.012985229492, 20.931015014648}, + {-0.38795471191406, 43.328018188477}, + {1.269029, 45.825818}, + {1.290305, 45.790427}, + {1.2654876708984, 45.827407836914}, + {0.905934, 44.846608}, + {0.573807, 44.216995}, + {1.176349, 45.777096}, + {2.3709869384766, 49.064254760742}, + {1.8450164794922, 48.936538696289}, + {4.8786163330078, 45.754623413086}, + {1.746483, 49.003315}, + {2.330091, 48.991475}, + {2.0812225341797, 49.054641723633}, + {2.313798, 49.001917}, + {3.2471466064453, 48.547897338867}, + {1.6555023193359, 48.998336791992}, + {2.6071929931641, 48.922805786133}, + {2.530717, 49.128944}, + {2.3751068115234, 48.928298950195}, + {2.3682403564453, 48.940658569336}, + {113.819046, 22.832336}, + {113.872604, 22.975845}, + {115.45051574707, 22.890701293945}, + {113.63502502441, 22.81379699707}, + {113.727017, 22.779335}, + {112.5611114502, 22.75749206543}, + {113.55949401855, 23.023910522461}, + {113.14750671387, 22.761611938477}, + {113.233566, 23.113174}, + {113.24775695801, 23.114547729492}, + {113.26972961426, 23.166732788086}, + {113.29444885254, 23.133773803711}, + {113.96461486816, 22.69157409668}, + {113.9852142334, 22.684707641602}, + {113.84101867676, 22.714920043945}, + {115.08522033691, 40.600662231445}, + {116.31156921387, 23.335647583008}, + {112.80830383301, 23.301315307617}, + {114.5043182373, 32.21809387207}, + {114.61555480957, 36.335220336914}, + {118.27949523926, 39.735488891602}, + {119.56764221191, 39.95246887207}, + {119.18449401855, 39.709396362305}, + {112.418758, -7.121264}, + {112.629433, -7.196045}, + {112.6490020752, -7.2008514404297}, + {111.973423, -7.076705}, + {111.980209, -6.805344}, + {111.46110534668, -7.4027252197266}, + {111.87858581543, -7.1445465087891}, + {113.40843200684, -7.2090911865234}, + {111.30043029785, -7.7501678466797}, + {111.50367736816, -7.6238250732422}, + {111.44737243652, -8.0069732666016}, + {111.872695, -7.983411}, + {112.16835021973, -7.7652740478516}, + {112.089386, -7.798233}, + {111.985363, -7.784912}, + {112.22602844238, -7.5606536865234}, + {113.44413757324, -8.1580352783203}, + {113.435726, -8.086624}, + {114.05799865723, -8.5617828369141}, + {113.22853088379, -8.1127166748047}, + {112.65174865723, -7.9163360595703}, + {114.375358, -8.212524}, + {112.52265930176, -7.8737640380859}, + {106.83036804199, -6.2175750732422}, + {37.589035, 55.777588}, + {60.615158, 56.878052}, + {60.67337, 56.869354}, + {60.516128540039, 56.835708618164}, + {59.951705932617, 56.908493041992}, + {60.566940307617, 56.835708618164}, + {65.611038208008, 57.087020874023}, + {65.727181, 57.014041}, + {60.753708, 56.078339}, + {61.29808, 55.192978}, + {30.430069, 59.869308}, + {30.505256, 59.888535}, + {30.241928100586, 59.984664916992}, + {30.281753540039, 59.984664916992}, + {-58.273544311523, -34.742202758789}, + {-58.24333190918, -34.82048034668}, + {-64.185715, -31.420829}, + {-64.217147827148, -31.402359008789}, + {-64.482183, -31.408953}, + {-64.024887084961, -31.373519897461}, + {-60.658951, -32.949996}, + {-60.659714, -32.930069}, + {-60.645493, -32.947998}, + {-60.69465637207, -32.859420776367}, + {-60.635604858398, -32.955551147461}, + {-60.656204223633, -33.015975952148}, + {-60.631484985352, -32.992630004883}, + {-62.191543579102, -31.413345336914}, + {-60.505142211914, -31.755294799805}, + {-60.852584838867, -31.797866821289}, + {-58.402138, -32.165909}, + {-65.785446166992, -28.464889526367}, + {-65.28866, -27.438698}, + {5.235028, 52.106054}, + {5.536148, 51.741898}, + {5.300045, 52.055626}, + {5.2329254150391, 52.086868286133}, + {5.351715, 51.79985}, + {5.150185, 51.475754}, + {5.329656, 51.674367}, + {5.1161956787109, 51.53205871582}, + {5.8138275146484, 51.591110229492}, + {5.927124, 51.792984}, + {5.7836151123047, 51.835556030273}, + {5.8481597900391, 51.808090209961}, + {5.697002, 51.469378}, + {5.400192, 51.432632}, + {5.4924774169922, 51.386489868164}, + {5.968079, 50.985508}, + {5.9401702880859, 51.203842163086}, + {5.865097, 51.393814}, + {5.795944, 50.876465}, + {5.812347, 50.873628}, + {4.8360443115234, 52.663650512695}, + {4.9459075927734, 52.335433959961}, + {106.866547, -6.342498}, + {106.89079284668, -6.3439178466797}, + {106.844559, -6.397018}, + {106.513293, -6.244926}, + {106.640975, -6.376548}, + {106.740929, -6.255473}, + {106.395351, -6.213379}, + {106.73011779785, -6.2917327880859}, + {106.60652160645, -6.5718841552734}, + {106.642434, -6.24591}, + {106.791949, -6.597139}, + {106.8138885498, -6.5663909912109}, + {106.83679, -6.614331}, + {106.8138885498, -6.6185760498047}, + {106.821291, -6.613645}, + {106.870193, -6.208649}, + {106.8647, -6.17569}, + {106.957796, -6.216475}, + {106.922542, -6.226134}, + {-35.085525512695, -8.3090972900391}, + {-35.001754760742, -8.2363128662109}, + {-34.959583, -8.084231}, + {-34.84545, -7.100668}, + {-35.279159545898, -5.9387969970703}, + {-37.286504, -7.036343}, + {-34.80711, -7.293977}, + {-38.54621887207, -3.7882232666016}, + {-38.459701538086, -3.8033294677734}, + {-38.37568, -3.869973}, + {-38.298812, -3.939166}, + {-44.240807, -2.53138}, + {-38.490008, -3.748018}, + {-47.478103637695, -5.5432891845703}, + {-48.433944, -1.331626}, + {-48.488254, -1.446641}, + {-46.714553833008, -23.696823120117}, + {-60.021743774414, -3.1043243408203}, + {-90.095546, 36.183483}, + {-94.065431, 31.478292}, + {-90.915711, 38.90724}, + {-96.588228, 33.342421}, + {-96.446101, 33.027799}, + {-98.999863, 31.713152}, + {-98.62907409668, 32.470779418945}, + {-97.104721069336, 33.628463745117}, + {-98.521185, 33.936853}, + {-95.927810668945, 31.547927856445}, + {-97.697982788086, 33.231582641602}, + {-96.494979858398, 32.207107543945}, + {-96.055144, 31.42913}, + {-97.101974487305, 31.78825378418}, + {-97.399979, 31.04187}, + {-96.905923, 31.427078}, + {-97.073135375977, 31.552047729492}, + {-94.828867, 32.177568}, + {-97.316207885742, 32.985763549805}, + {-97.327224, 32.543365}, + {-97.083817, 32.747932}, + {-97.130813598633, 32.753677368164}, + {16.062698364258, 47.019424438477}, + {13.984455, 46.685398}, + {16.360702514648, 48.222427368164}, + {121.81434631348, 25.02067565918}, + {121.53282165527, 25.016555786133}, + {6.706609, 45.508425}, + {6.5224456787109, 45.356369018555}, + {6.1626434326172, 45.545883178711}, + {5.361866, 45.347907}, + {5.734863, 45.388184}, + {5.6916046142578, 45.713424682617}, + {6.3617706298828, 45.670852661133}, + {7.7501678466797, 48.611068725586}, + {7.693789, 48.523772}, + {2.301179, 44.412689}, + {1.4014434814453, 44.855117797852}, + {2.544708, 44.314728}, + {1.730862, 43.424749}, + {1.616658, 43.797291}, + {1.456985, 44.894943}, + {0.94139099121094, 43.720779418945}, + {1.393244, 43.728252}, + {1.8573760986328, 43.08219909668}, + {1.611008, 43.448181}, + {120.80635070801, 24.564743041992}, + {120.702093, 24.297981}, + {120.78163146973, 24.472732543945}, + {120.642844, 24.220467}, + {120.65528869629, 24.199447631836}, + {120.378571, 23.997574}, + {120.72258, 24.279099}, + {120.48637390137, 24.084091186523}, + {120.5770111084, 24.100570678711}, + {120.68412780762, 24.07585144043}, + {120.51933288574, 24.063491821289}, + {120.546112, 24.154816}, + {120.58250427246, 23.964614868164}, + {120.49598693848, 23.749008178711}, + {120.592262, 23.998471}, + {120.5509185791, 23.705062866211}, + {120.37239074707, 23.806686401367}, + {120.494843, 23.537979}, + {120.40123, 23.709641}, + {120.320892, 23.679657}, + {120.455933, 23.47435}, + {120.536499, 23.511429}, + {120.23918151855, 23.467483520508}, + {-2.1759796142578, 53.380508422852}, + {-2.2817230224609, 53.438186645508}, + {-2.1347808837891, 53.406600952148}, + {-1.588348, 55.086376}, + {-1.695786, 53.812637}, + {-1.308804, 50.923405}, + {-2.6909637451172, 53.601608276367}, + {-2.0880889892578, 52.325820922852}, + {-0.264191, 52.408904}, + {-1.476377, 52.890124}, + {-2.334062, 52.736291}, + {-2.462997, 52.707596}, + {-1.900757, 53.25516}, + {-3.359336, 55.927463}, + {-0.866591, 53.734814}, + {-3.162834, 55.962016}, + {-1.3327789306641, 53.70735168457}, + {-1.881582, 52.506648}, + {-5.658495, 54.641259}, + {-1.899869, 52.531861}, + {-88.923344, 40.30541}, + {-87.534805, 40.116989}, + {-89.7146, 39.770007}, + {-89.025191, 39.916308}, + {-89.191474, 40.608387}, + {-93.2967, 41.685562}, + {-75.851669311523, 41.235122680664}, + {-89.125900268555, 40.570449829102}, + {-93.845215, 42.030945}, + {-87.340107, 41.566429}, + {-88.27652, 41.978073}, + {-87.664032, 41.901463}, + {-88.181686, 41.97258}, + {-87.866334, 41.999865}, + {-87.72789, 42.031975}, + {-88.307418823242, 41.836624145508}, + {-89.055862426758, 42.427139282227}, + {-87.866592407227, 42.074203491211}, + {-88.054047, 42.031021}, + {-87.773208618164, 42.163467407227}, + {-87.908401, 41.83342}, + {-88.219528198242, 42.43537902832}, + {-87.692924, 41.614151}, + {-87.710199, 41.603124}, + {80.222854614258, 13.081283569336}, + {80.159683227539, 13.108749389648}, + {79.636459350586, 12.873916625977}, + {79.96467590332, 12.21061706543}, + {78.158798217773, 10.031204223633}, + {78.72184753418, 10.805740356445}, + {79.132462, 12.905502}, + {76.953048706055, 11.013107299805}, + {78.139572143555, 11.228713989258}, + {79.265670776367, 12.678909301758}, + {78.162231, 11.272659}, + {77.045059204102, 11.043319702148}, + {87.848739624023, 22.714920043945}, + {88.778457641602, 22.422409057617}, + {87.945328, 23.21663}, + {88.707046508789, 23.412551879883}, + {88.81965637207, 23.08708190918}, + {6.740606, 50.789776}, + {6.189913, 50.786861}, + {7.7433013916016, 50.621566772461}, + {7.776788, 50.546459}, + {6.936264, 51.199265}, + {6.9097137451172, 51.275253295898}, + {6.860733, 51.146164}, + {6.9797515869141, 51.308212280273}, + {6.8039703369141, 51.18049621582}, + {6.721345, 51.235429}, + {11.570418, 48.148907}, + {11.721725463867, 47.594833374023}, + {11.708359, 48.111969}, + {11.43395, 48.151253}, + {11.485794, 47.872513}, + {12.673416137695, 48.225173950195}, + {72.682113647461, 32.071151733398}, + {73.088607788086, 33.605117797852}, + {73.132553100586, 33.551559448242}, + {74.213333129883, 31.41471862793}, + {74.001846313477, 32.356796264648}, + {71.899337768555, 34.485397338867}, + {73.805466, 31.820183}, + {73.442916870117, 30.854415893555}, + {67.069473, 24.930725}, + {74.305, 31.558571}, + {67.037887573242, 24.919052124023}, + {68.214797973633, 27.565383911133}, + {67.014541625977, 30.189743041992}, + {67.047500610352, 24.860000610352}, + {69.134902954102, 34.499130249023}, + {69.125289916992, 34.519729614258}, + {79.894638061523, 6.9605255126953}, + {79.931716918945, 6.8671417236328}, + {69.140388, 34.535342}, + {80.111618041992, 7.1981048583984}, + {80.323104858398, 7.4109649658203}, + {80.459060668945, 6.6638946533203}, + {119.30671691895, 25.830917358398}, + {119.26139831543, 26.058883666992}, + {119.3025970459, 25.685348510742}, + {119.59648132324, 25.788345336914}, + {118.08860778809, 24.491958618164}, + {117.83866882324, 24.520797729492}, + {118.13804626465, 24.511184692383}, + {118.06251525879, 24.443893432617}, + {118.09410095215, 24.585342407227}, + {114.42192077637, 30.442428588867}, + {106.32499694824, 38.500900268555}, + {114.14726257324, 30.574264526367}, + {114.25575256348, 30.571517944336}, + {112.34550476074, 32.146682739258}, + {112.14775085449, 32.060165405273}, + {111.6739654541, 32.351303100586}, + {114.29969787598, 30.633316040039}, + {112.36885070801, 25.597457885742}, + {112.97996520996, 28.147659301758}, + {112.984772, 28.227997}, + {108.36158752441, 22.808303833008}, + {108.249664, 22.833023}, + {108.43849182129, 22.894821166992}, + {12.519432, 41.862996}, + {14.424707, 42.223206}, + {9.5354461669922, 41.133499145508}, + {12.073288, 41.958847}, + {14.830856323242, 40.648727416992}, + {14.180604, 40.884934}, + {14.260940551758, 40.902786254883}, + {14.149703979492, 41.193923950195}, + {14.778671264648, 40.676193237305}, + {14.321365356445, 41.053848266602}, + {14.346084594727, 40.893173217773}, + {16.006393432617, 41.940994262695}, + {9.1921234130859, 45.452499389648}, + {8.98934, 44.969332}, + {9.632223, 45.619879}, + {8.7224578857422, 45.651626586914}, + {10.24543762207, 45.506057739258}, + {9.176331, 45.479965}, + {9.1275787353516, 45.51155090332}, + {9.2346954345703, 45.485458374023}, + {9.1440582275391, 45.449752807617}, + {9.1866302490234, 45.539016723633}, + {-54.569778442383, -20.455856323242}, + {-56.055749, -15.60909}, + {-38.473434448242, -12.862930297852}, + {-54.578018188477, -20.400924682617}, + {-38.939994, -12.242779}, + {-42.762222290039, -5.1889801025391}, + {-37.049331665039, -10.498123168945}, + {-42.763595581055, -5.1821136474609}, + {-47.381742, -22.74471}, + {-42.807541, -5.062981}, + {-42.799301147461, -5.0846099853516}, + {-47.824172973633, -15.744094848633}, + {-47.993087768555, -15.948715209961}, + {-54.59587097168, -20.499801635742}, + {-56.0864, -15.602927}, + {-59.703981, -2.690451}, + {-53.902359008789, -28.274002075195}, + {-53.916275, -28.38931}, + {-45.19157409668, -22.817916870117}, + {-47.927169799805, -15.803146362305}, + {116.00257873535, 25.966873168945}, + {115.94215393066, 28.684616088867}, + {115.27610778809, 25.916061401367}, + {115.82817077637, 28.653030395508}, + {104.13047790527, 30.765151977539}, + {104.08790588379, 30.664901733398}, + {104.03297424316, 30.638809204102}, + {104.10438537598, 30.634689331055}, + {104.13459777832, 30.60173034668}, + {104.0892791748, 30.670394897461}, + {104.10301208496, 30.641555786133}, + {104.0796661377, 30.651168823242}, + {103.93272399902, 30.780258178711}, + {104.20188903809, 30.560531616211}, + {103.90525817871, 30.780258178711}, + {104.06593322754, 30.567398071289}, + {104.09339904785, 30.560531616211}, + {104.50126647949, 31.324081420898}, + {105.98304748535, 28.935928344727}, + {104.45457458496, 30.708847045898}, + {104.74296569824, 31.491622924805}, + {106.6902923584, 26.51481628418}, + {106.65184020996, 26.466751098633}, + {105.05744934082, 25.315933227539}, + {61.433772, 55.176642}, + {61.281051635742, 55.194625854492}, + {61.877059936523, 55.271530151367}, + {39.795913696289, 57.676162719727}, + {37.788162231445, 55.809860229492}, + {37.603226, 55.710983}, + {37.593154907227, 55.705490112305}, + {37.594528198242, 55.731582641602}, + {37.462692260742, 55.888137817383}, + {37.390366, 55.898209}, + {37.785415649414, 55.797500610352}, + {37.413101, 55.952682}, + {37.494277954102, 55.852432250977}, + {37.727737426758, 55.813980102539}, + {37.388534545898, 55.809860229492}, + {37.826614379883, 55.812606811523}, + {37.788162231445, 55.802993774414}, + {37.786333, 55.849228}, + {37.38108, 55.710983}, + {37.313004, 56.015854}, + {37.261471, 56.015683}, + {20.414179, 49.720205}, + {20.424165, 49.555109}, + {20.615433, 50.871506}, + {21.34738, 50.914045}, + {20.097427368164, 49.976119995117}, + {19.862957, 50.134761}, + {19.925765991211, 49.845657348633}, + {16.936111450195, 52.369766235352}, + {16.960830688477, 51.113204956055}, + {17.020504, 51.112428}, + {15.49690246582, 51.955032348633}, + {15.501022338867, 51.945419311523}, + {15.698667, 50.764142}, + {16.168441772461, 51.345291137695}, + {16.305770874023, 51.033554077148}, + {18.939743041992, 52.071762084961}, + {17.736740112305, 51.687240600586}, + {16.621627807617, 50.680618286133}, + {15.874557495117, 50.905838012695}, + {52.655411, 36.530915}, + {53.649667, 36.711805}, + {52.846298, 36.440964}, + {52.743301391602, 36.693649291992}, + {49.996719360352, 36.289901733398}, + {50.856399536133, 36.83235168457}, + {51.088485717773, 34.460678100586}, + {54.985885620117, 36.409378051758}, + {50.912704467773, 34.587020874023}, + {60.658950805664, 25.295333862305}, + {51.421033, 35.759811}, + {51.420822143555, 35.78727722168}, + {51.332931518555, 35.776290893555}, + {51.319198608398, 35.769424438477}, + {51.412582397461, 35.791397094727}, + {51.401596, 35.723419}, + {51.445999, 35.747452}, + {51.501694, 35.735703}, + {51.354904174805, 35.750198364258}, + {51.45433, 35.755142}, + {51.521072387695, 35.737838745117}, + {51.389236450195, 35.648574829102}, + {51.415328979492, 35.752944946289}, + {51.220321655273, 35.75569152832}, + {51.337051391602, 35.619735717773}, + {78.447189331055, 17.442855834961}, + {78.566666, 17.448578}, + {79.580154418945, 16.804275512695}, + {78.40461730957, 17.459335327148}, + {79.640579223633, 16.882553100586}, + {77.347183227539, 15.649337768555}, + {80.262680053711, 17.032241821289}, + {80.435718, 16.909332}, + {79.694824, 13.754196}, + {81.017990112305, 16.672439575195}, + {78.299776, 17.494726}, + {81.266556, 17.578812}, + {77.602615356445, 15.273056030273}, + {79.608536, 17.981644}, + {79.912490844727, 18.816146850586}, + {79.989395141602, 14.44221496582}, + {78.528214, 17.372475}, + {79.923477172852, 16.434860229492}, + {81.899642944336, 16.698532104492}, + {78.474655151367, 17.327499389648}, + {81.734848022461, 17.008895874023}, + {78.477401733398, 17.376937866211}, + {80.58094, 16.634159}, + {80.695267, 16.469536}, + {103.96842956543, 30.712966918945}, + {114.02503967285, 22.536392211914}, + {113.35624694824, 23.098068237305}, + {116.49284362793, 39.800033569336}, + {116.4818572998, 39.831619262695}, + {116.11930847168, 39.937362670898}, + {116.45576477051, 39.941482543945}, + {116.32667541504, 39.989547729492}, + {116.46263122559, 39.903030395508}, + {116.31156921387, 39.883804321289}, + {116.37062072754, 39.876937866211}, + {116.269455, 39.999161}, + {116.33079528809, 39.971694946289}, + {116.48323059082, 39.878311157227}, + {116.37474060059, 39.978561401367}, + {116.7798614502, 39.882431030273}, + {116.58210754395, 40.067825317383}, + {116.69471740723, 39.863204956055}, + {116.35688781738, 40.008773803711}, + {116.36787414551, 40.021133422852}, + {116.33766174316, 39.927749633789}, + {116.30470275879, 39.923629760742}, + {116.33628845215, 39.971694946289}, + {15.749588012695, 50.032424926758}, + {15.875930786133, 50.079116821289}, + {16.014633178711, 50.366134643555}, + {15.573806762695, 50.600967407227}, + {15.838851928711, 50.216445922852}, + {15.83610534668, 50.242538452148}, + {13.993561, 50.644501}, + {14.263687133789, 50.080490112305}, + {14.26643371582, 50.105209350586}, + {14.480667114258, 50.106582641602}, + {14.50058, 50.265198}, + {14.483788, 50.104585}, + {14.414749145508, 50.066757202148}, + {14.398932, 50.061272}, + {14.396112, 49.981025}, + {14.344711303711, 50.046157836914}, + {13.947144, 49.831924}, + {14.523239135742, 50.053024291992}, + {-43.235461, -22.899105}, + {-35.704879760742, -9.6604156494141}, + {-43.289013, -22.736202}, + {-43.32389831543, -22.819290161133}, + {-41.725035, -22.320433}, + {-43.113026, -22.876541}, + {-43.239025, -22.877406}, + {-44.316262, -2.561432}, + {-47.968227, -15.840254}, + {-51.230775, -30.067977}, + {-47.962875366211, -15.897903442383}, + {-47.779913, -15.758407}, + {-56.05842590332, -15.60676574707}, + {-63.874193, -8.78732}, + {-43.94072, -19.923868}, + {-43.944409, -19.923835}, + {-44.042711, -19.90332}, + {-46.556054, -23.602964}, + {-46.73105, -23.673542}, + {-46.453769, -23.506182}, + {-46.794229, -23.617863}, + {-46.551798, -23.695225}, + {12.495575, 43.567657}, + {13.517990112305, 43.60954284668}, + {16.684341, 39.272461}, + {12.046167, 45.091324}, + {11.611862182617, 45.084457397461}, + {17.37419128418, 40.864334106445}, + {17.73894, 40.729479}, + {17.797849, 40.299916}, + {10.875778, 46.038698}, + {8.028603, 43.9048}, + {11.430587768555, 44.919662475586}, + {13.883973, 41.11908}, + {14.22248840332, 40.868453979492}, + {14.219741821289, 40.856094360352}, + {-53.850187, -27.270421}, + {-53.940811157227, -27.377243041992}, + {-53.083877563477, -29.235305786133}, + {-46.662368774414, -23.617172241211}, + {-46.718478, -23.507309}, + {-47.38472, -22.534332}, + {-47.384719848633, -22.535018920898}, + {-46.972732543945, -23.510055541992}, + {-47.259750366211, -23.26286315918}, + {-46.651382446289, -23.60481262207}, + {-46.650009155273, -23.554000854492}, + {-46.726913452148, -23.578720092773}, + {-46.304474, -23.973838}, + {-46.199569702148, -23.884963989258}, + {-48.532791137695, -22.232894897461}, + {-46.521469, -23.913528}, + {-47.436447, -23.539103}, + {44.46647644043, 33.201370239258}, + {44.484329223633, 33.245315551758}, + {44.374465942383, 33.226089477539}, + {44.293441772461, 33.279647827148}, + {44.323654174805, 33.309860229492}, + {44.388198852539, 33.39225769043}, + {44.354848, 33.011169}, + {44.459609985352, 33.357925415039}, + {44.396438598633, 33.329086303711}, + {44.042129516602, 32.621841430664}, + {44.043502807617, 32.61360168457}, + {44.343567, 31.988754}, + {44.391403, 32.021713}, + {44.366226196289, 33.281021118164}, + {44.165725708008, 32.878646850586}, + {44.404678344727, 32.034072875977}, + {44.143753051758, 32.896499633789}, + {44.366226196289, 32.013473510742}, + {44.912796, 32.005539}, + {42.981948852539, 36.847457885742}, + {44.366226196289, 33.400497436523}, + {44.341506958008, 33.329086303711}, + {45.444259643555, 35.555191040039}, + {47.925796508789, 29.264144897461}, + {8.481382, 50.193576}, + {17.674942016602, 59.843215942383}, + {13.483657836914, 55.822219848633}, + {9.60218, 60.982177}, + {14.651874, 68.737296}, + {15.750961303711, 66.749496459961}, + {119.36302185059, 26.017684936523}, + {118.13529968262, 24.686965942383}, + {118.58024597168, 24.916305541992}, + {120.249285, 31.518108}, + {116.878738, 36.655884}, + {122.1150970459, 37.509384155273}, + {122.0972442627, 37.262191772461}, + {120.351399, 36.084889}, + {120.366898, 36.182098}, + {118.0199432373, 36.830978393555}, + {117.91969299316, 36.75407409668}, + {117.82905578613, 36.690902709961}, + {119.37812805176, 36.567306518555}, + {119.15016174316, 36.594772338867}, + {119.1268157959, 36.708755493164}, + {117.01469421387, 31.95442199707}, + {121.69761657715, 29.879379272461}, + {119.16526794434, 29.030685424805}, + {120.56739807129, 30.542678833008}, + {120.65254211426, 27.829055786133}, + {120.67863464355, 30.626449584961}, + {120.124512, 28.272629}, + {120.65940856934, 30.097732543945}, + {120.5948638916, 30.037307739258}, + {-117.24403381348, 32.722091674805}, + {-117.161636, 32.709144}, + {-116.971573, 32.632828}, + {-116.931316, 32.856282}, + {-117.164469, 32.760673}, + {-97.01545715332, 32.74543762207}, + {-77.152176, 40.306778}, + {-76.715469360352, 39.948348999023}, + {-76.648677, 39.96795}, + {-77.317657, 39.811363}, + {-78.979486, 38.767028}, + {-77.66719, 39.634486}, + {-77.750524, 39.624151}, + {-77.818978, 39.298524}, + {-83.095779, 30.541763}, + {-97.61116, 33.258133}, + {-82.727737426758, 27.960891723633}, + {-82.313004, 29.665833}, + {-98.95866394043, 40.684432983398}, + {-91.669235229492, 41.942367553711}, + {144.813538, 13.517761}, + {-93.792343139648, 32.540817260742}, + {-7.3285675048828, 37.19352722168}, + {-3.521347, 37.220993}, + {-3.679733, 37.158508}, + {-3.7003326416016, 37.167434692383}, + {-1.8189239501953, 37.190780639648}, + {-5.548737, 36.821396}, + {-4.2249298095703, 38.00651550293}, + {-6.453771, 39.442253}, + {-6.183243, 38.352585}, + {-5.721688, 39.779391}, + {-6.4963531494141, 38.914260864258}, + {-6.9824981689453, 38.871688842773}, + {-4.793129, 37.880287}, + {-16.272811889648, 28.463516235352}, + {-16.247429, 28.476395}, + {-15.435104, 27.85087}, + {-13.510229, 29.021061}, + {-13.866806, 28.394028}, + {-16.672439575195, 28.051528930664}, + {-17.922134399414, 28.606338500977}, + {-15.567215, 27.758011}, + {-15.441970825195, 28.133926391602}, + {-16.725997924805, 28.081741333008}, + {15.547714233398, 45.500564575195}, + {15.944574, 45.773468}, + {15.955581665039, 45.798568725586}, + {16.40417, 43.545237}, + {13.643264, 45.363999}, + {15.93597, 45.793632}, + {15.885485, 45.807059}, + {20.4207, 44.812546}, + {20.388565063477, 44.804306030273}, + {11.135330200195, 43.480453491211}, + {10.834389, 43.699303}, + {10.744171, 42.931824}, + {10.519039, 43.825995}, + {11.095504760742, 43.880081176758}, + {11.856307983398, 43.443374633789}, + {8.507767, 44.335556}, + {7.928899, 43.849698}, + {12.556686401367, 41.902542114258}, + {12.382278442383, 41.95198059082}, + {12.412379, 41.903355}, + {12.455062866211, 41.897048950195}, + {13.351135, 41.550293}, + {113.543015, 22.222458}, + {113.90281677246, 22.793197631836}, + {115.10581970215, 23.537521362305}, + {113.78746032715, 23.070602416992}, + {114.04838562012, 22.592697143555}, + {114.035339, 22.558367}, + {113.25736999512, 23.37272644043}, + {113.2120513916, 23.166732788086}, + {113.83277893066, 22.907180786133}, + {113.82179260254, 22.841262817383}, + {113.71467590332, 22.974472045898}, + {113.71467590332, 22.81379699707}, + {113.75999450684, 22.811050415039}, + {113.41804504395, 22.338638305664}, + {115.34202575684, 22.837142944336}, + {113.41804504395, 22.679214477539}, + {113.83689880371, 22.985458374023}, + {113.22441101074, 23.400192260742}, + {113.89045715332, 23.202438354492}, + {113.93440246582, 23.201065063477}, + {113.57597351074, 23.541641235352}, + {114.04838562012, 22.668228149414}, + {-84.502029418945, 9.5354461669922}, + {-84.077682495117, 9.9131011962891}, + {-84.228744506836, 9.9694061279297}, + {-84.243850708008, 9.9941253662109}, + {-79.886398, 9.327393}, + {-80.277786254883, 7.8174591064453}, + {-79.518356323242, 8.9971160888672}, + {-79.495010375977, 9.0177154541016}, + {-79.521102905273, 8.9943695068359}, + {-79.778921, 8.882788}, + {-80.323828, 8.469218}, + {-79.628219604492, 9.2278289794922}, + {-79.427204, 9.060287}, + {-79.736709594727, 8.9243316650391}, + {-79.773788452148, 8.8707733154297}, + {51.397202, 35.690323}, + {51.43180847168, 35.691146850586}, + {51.251907348633, 35.707626342773}, + {51.401596069336, 35.67741394043}, + {51.438674926758, 35.600509643555}, + {51.501846313477, 35.64582824707}, + {51.460647583008, 35.704879760742}, + {51.153030395508, 35.410995483398}, + {51.067886352539, 35.592269897461}, + {51.276626586914, 35.509872436523}, + {51.411667, 35.811996}, + {51.063766479492, 35.504379272461}, + {50.845413, 35.407562}, + {51.975631713867, 35.707626342773}, + {51.107711791992, 35.736465454102}, + {51.485366821289, 35.844955444336}, + {54.373397827148, 31.896743774414}, + {48.486099243164, 34.787521362305}, + {49.327926635742, 37.510757446289}, + {46.420669555664, 38.021621704102}, + {51.455154418945, 35.807876586914}, + {51.420822143555, 35.754318237305}, + {51.440048217773, 35.798263549805}, + {51.568451, 35.732346}, + {51.402969360352, 35.729598999023}, + {-64.066772, -31.381073}, + {-64.167709350586, -31.369400024414}, + {-64.191055, -31.440125}, + {-64.164962768555, -31.37077331543}, + {-64.249714, -31.39255}, + {-62.78205871582, -31.918716430664}, + {-63.254470825195, -32.396621704102}, + {-63.40004, -32.179642}, + {-64.092178344727, -32.875900268555}, + {-65.292434692383, -24.192581176758}, + {-65.499801635742, -24.909439086914}, + {-65.403671264648, -24.799575805664}, + {-65.192184448242, -26.854019165039}, + {-65.160598754883, -26.936416625977}, + {-65.196304321289, -26.821060180664}, + {-65.214157104492, -26.837539672852}, + {-65.767162, -28.451053}, + {-60.643844604492, -32.97477722168}, + {-60.587539672852, -33.914108276367}, + {-60.217781, -33.33355}, + {-60.624618530273, -32.992630004883}, + {7.3079681396484, 49.789352416992}, + {16.922545, 48.144932}, + {14.507675, 48.493881}, + {14.584063, 48.138424}, + {10.318511, 47.142043}, + {16.33564, 47.986815}, + {14.399517, 46.644438}, + {14.299657, 48.279492}, + {16.322414, 48.180632}, + {13.044832, 47.807665}, + {13.059116, 47.76816}, + {12.178435, 47.594883}, + {16.359329, 48.188055}, + {12.766799926758, 46.827163696289}, + {16.024933, 47.71637}, + {13.324356079102, 47.85026550293}, + {16.371688842773, 48.207321166992}, + {15.468063, 47.078819}, + {16.344223022461, 48.190841674805}, + {16.396408081055, 48.124923706055}, + {9.7359466552734, 47.465744018555}, + {11.685962, 47.340313}, + {13.713684, 51.100845}, + {11.94694519043, 51.055526733398}, + {12.392578, 51.338425}, + {6.8547821044922, 51.074752807617}, + {7.175623, 50.816955}, + {6.0514068603516, 50.775375366211}, + {6.0980987548828, 50.783615112305}, + {6.13351, 50.787048}, + {7.0923614501953, 50.774002075195}, + {-100.834236, 20.530014}, + {-99.08088684082, 19.61540222168}, + {-100.359786, 20.560174}, + {-100.375443, 20.586777}, + {-99.21163, 19.30704}, + {-99.274937, 19.359108}, + {-107.76008605957, 29.640426635742}, + {-115.49446105957, 32.653427124023}, + {-99.067153930664, 19.410781860352}, + {-99.086380004883, 19.504165649414}, + {-98.174514770508, 19.071578979492}, + {-102.247911, 21.889117}, + {-102.29501, 21.879035}, + {-86.87370300293, 21.168594360352}, + {-99.229202270508, 19.475326538086}, + {-93.175735473633, 16.775436401367}, + {-91.814384, 18.645047}, + {-96.12419128418, 18.084182739258}, + {-88.263473510742, 18.557968139648}, + {121.597023, 25.055695}, + {121.47789001465, 25.082473754883}, + {121.616936, 25.065994}, + {121.510849, 25.08728}, + {120.786403, 24.598625}, + {120.823329, 24.168497}, + {120.75462, 24.386748}, + {120.550644, 24.087112}, + {120.7088470459, 24.152755737305}, + {120.635955, 24.164072}, + {120.65940856934, 24.165115356445}, + {120.459823, 24.127695}, + {120.601141, 23.937529}, + {120.56739807129, 23.879470825195}, + {120.595879, 23.732282}, + {120.540675, 23.609065}, + {120.908519, 23.849881}, + {120.315539, 22.659444}, + {120.23643493652, 22.82341003418}, + {120.518904, 22.565123}, + {120.302695, 22.7937}, + {120.324427, 22.681008}, + {120.22819519043, 22.993698120117}, + {120.546112, 22.901688}, + {9.829331, 55.030518}, + {12.285032, 55.575568}, + {12.030715942383, 55.629959106445}, + {12.626724, 55.663605}, + {18.095169067383, 59.296646118164}, + {17.305527, 62.40715}, + {15.215377807617, 63.630752563477}, + {13.594345, 59.536789}, + {9.928551, 47.07264}, + {10.875778198242, 47.207565307617}, + {9.587631, 47.256088}, + {9.597987, 47.236741}, + {10.988388061523, 46.956253051758}, + {11.449937, 47.281853}, + {12.394246, 47.504981}, + {11.451187, 47.262497}, + {14.500124, 48.513538}, + {16.176681518555, 47.013931274414}, + {16.187668, 47.281036}, + {16.440353393555, 48.274612426758}, + {16.883469, 48.505783}, + {16.486359, 48.23204}, + {16.525497436523, 48.203201293945}, + {16.377182006836, 48.714065551758}, + {15.62873840332, 48.145523071289}, + {16.527557, 47.828587}, + {-85.541610717773, 36.024856567383}, + {-87.014461, 35.608004}, + {-87.22526550293, 36.528854370117}, + {-88.067594, 36.658327}, + {-87.678108, 36.840248}, + {-87.696697, 36.85354}, + {-86.820478, 36.165146}, + {-86.772079467773, 36.196517944336}, + {-86.839370727539, 36.153945922852}, + {-86.748733520508, 36.196517944336}, + {-86.754794, 36.345472}, + {-82.248263, 36.529835}, + {-82.169203, 36.56491}, + {-84.044682, 35.685117}, + {-83.863769, 36.014646}, + {-81.667556762695, 41.52214050293}, + {-81.598892211914, 41.496047973633}, + {-81.484634, 41.065384}, + {-81.577837, 41.040532}, + {20.135879516602, 47.741775512695}, + {23.897344, 37.922472}, + {23.899155, 37.998734}, + {23.73606, 38.006123}, + {23.714528, 38.002227}, + {26.332398, 39.176102}, + {24.033279418945, 37.829360961914}, + {22.90123, 38.032608}, + {25.173935, 35.33217}, + {25.379104614258, 35.335464477539}, + {25.037155151367, 35.372543334961}, + {23.47641, 38.800278}, + {22.503433227539, 36.72248840332}, + {22.372971, 37.510036}, + {21.841311, 38.39653}, + {23.798196, 38.101836}, + {22.202682495117, 40.527877807617}, + {23.677597045898, 38.005142211914}, + {23.690408, 37.992534}, + {74.885559, 30.82901}, + {76.763992, 30.721664}, + {82.643509, 25.125046}, + {80.358810424805, 26.455764770508}, + {81.84196472168, 26.355514526367}, + {83.185043334961, 26.760635375977}, + {81.049576, 26.548462}, + {83.562698364258, 26.599960327148}, + {82.343215942383, 26.050643920898}, + {83.23860168457, 26.609573364258}, + {80.969925, 26.893845}, + {80.96941, 26.855564}, + {80.71174621582, 27.574996948242}, + {80.407333, 26.433334}, + {80.929184, 26.789017}, + {83.404769897461, 26.786727905273}, + {80.647888, 26.060257}, + {79.637832641602, 26.374740600586}, + {80.80513, 25.914688}, + {81.25763, 26.172867}, + {82.318496704102, 25.322799682617}, + {82.716751098633, 27.282485961914}, + {93.943405151367, 24.816055297852}, + {93.928298950195, 24.865493774414}, + {0.287007, 45.551764}, + {1.137153, 43.577123}, + {0.059421, 43.255287}, + {-4.054687, 47.866139}, + {1.412424, 45.832216}, + {2.3957061767578, 48.81706237793}, + {2.341859, 48.844451}, + {3.068977, 50.608484}, + {2.4217987060547, 48.797836303711}, + {2.7033233642578, 48.564376831055}, + {2.3751068115234, 48.686599731445}, + {2.351018, 48.884062}, + {76.782907, 30.739362}, + {77.03975, 28.44177}, + {76.941757, 28.366928}, + {72.87712097168, 19.178695678711}, + {88.406295776367, 22.624282836914}, + {88.410415649414, 22.584457397461}, + {72.825734, 19.199358}, + {80.224227905273, 13.031845092773}, + {80.246200561523, 13.048324584961}, + {88.311538696289, 22.543258666992}, + {80.320358276367, 13.22135925293}, + {80.22834777832, 13.108749389648}, + {80.082778930664, 13.048324584961}, + {80.151443481445, 13.027725219727}, + {80.231266, 12.849083}, + {77.604904, 12.961807}, + {80.246887, 13.136902}, + {77.580642700195, 12.921981811523}, + {77.631454467773, 13.051071166992}, + {77.521591186523, 12.961807250977}, + {77.705612182617, 13.022232055664}, + {77.606735229492, 12.978286743164}, + {77.51445, 12.915115}, + {77.641067504883, 13.007125854492}, + {9.7139739990234, 53.359909057617}, + {7.68015, 50.195858}, + {7.2626495361328, 50.296096801758}, + {7.164688, 49.463882}, + {6.916581, 50.036545}, + {6.612897, 49.453564}, + {6.696468, 49.374863}, + {7.3780059814453, 49.358139038086}, + {8.6441802978516, 50.096969604492}, + {8.613684, 50.103822}, + {8.7252044677734, 50.182113647461}, + {8.716123, 50.114768}, + {8.9325714111328, 50.042037963867}, + {13.371833, 52.515335}, + {28.234863, -25.781479}, + {28.268508911133, -25.74577331543}, + {28.345227, -25.756622}, + {28.304513, -25.786887}, + {28.466262817383, -26.595840454102}, + {28.063888549805, -26.113815307617}, + {29.231185913086, -26.484603881836}, + {30.978012084961, -29.843673706055}, + {28.066635131836, -26.133041381836}, + {30.94574, -29.882126}, + {-88.745498657227, 17.27668762207}, + {31.636505, 4.792099}, + {-90.510177612305, 14.593276977539}, + {-90.512924194336, 14.619369506836}, + {-90.518417, 14.586868}, + {-90.474472045898, 14.582290649414}, + {-90.507431030273, 14.590530395508}, + {-90.514297485352, 14.638595581055}, + {-90.53627, 14.624176}, + {-91.518173217773, 14.834976196289}, + {-90.508804321289, 14.58366394043}, + {-90.551376342773, 14.664688110352}, + {80.036545, 15.504227}, + {80.597763061523, 16.541976928711}, + {80.42610168457, 16.39778137207}, + {78.56803894043, 17.368698120117}, + {78.423843383789, 18.008651733398}, + {81.664810180664, 17.128372192383}, + {79.276657, 17.062454}, + {83.191909790039, 17.687301635742}, + {79.365921020508, 13.610000610352}, + {78.308411, 17.512817}, + {78.36319, 17.551346}, + {78.218765, 17.067947}, + {78.41732, 17.391701}, + {78.487014770508, 17.33024597168}, + {78.441696166992, 17.14485168457}, + {82.168807983398, 17.045974731445}, + {79.505996704102, 13.63883972168}, + {79.385147094727, 17.284927368164}, + {78.481979, 17.63649}, + {77.212600708008, 28.598098754883}, + {77.212600708008, 28.569259643555}, + {77.189254760742, 28.569259643555}, + {77.173952, 28.572202}, + {77.270278930664, 28.626937866211}, + {1.5799713134766, 43.237380981445}, + {1.6184234619141, 43.35823059082}, + {7.030563, 48.718041}, + {6.8575286865234, 47.636032104492}, + {6.5595245361328, 48.580856323242}, + {6.15715, 48.674927}, + {4.5888519287109, 43.875961303711}, + {4.0834808349609, 44.124526977539}, + {4.0834808349609, 43.764724731445}, + {1.5703582763672, 50.349655151367}, + {-0.51567077636719, 47.41081237793}, + {0.048751831054688, 47.898330688477}, + {0.22315979003906, 47.962875366211}, + {-0.355586, 47.46241}, + {-3.9173126220703, 47.888717651367}, + {-2.3641204833984, 47.918930053711}, + {0.169779, 47.526169}, + {1.2599945068359, 49.555892944336}, + {1.1391448974609, 49.483108520508}, + {0.119149, 49.323748}, + {0.88783264160156, 49.583358764648}, + {8.452546, 49.772299}, + {8.059158, 50.548782}, + {8.517014, 49.909103}, + {8.4821319580078, 50.02555847168}, + {8.3214569091797, 50.02555847168}, + {8.281615, 50.105962}, + {8.742599, 50.799866}, + {8.7485504150391, 50.154647827148}, + {9.9350738525391, 49.815444946289}, + {8.646307, 49.892616}, + {8.64162, 49.774859}, + {8.631698, 49.871685}, + {128.94996643066, 27.672500610352}, + {127.80601501465, 26.337661743164}, + {127.751083, 26.357574}, + {127.709689, 26.158349}, + {127.73068, 26.255068}, + {127.7661895752, 26.319808959961}, + {130.91514587402, 33.308486938477}, + {132.51091003418, 34.514236450195}, + {129.788132, 33.087845}, + {132.418215, 34.378282}, + {130.631332, 33.745651}, + {138.731232, 36.342602}, + {140.54878234863, 36.215744018555}, + {139.292679, 35.849991}, + {130.64323425293, 31.73469543457}, + {137.885971, 36.33728}, + {140.33317565918, 35.515365600586}, + {138.226864, 36.592292}, + {138.95713806152, 35.616989135742}, + {138.2608795166, 37.071304321289}, + {139.61357116699, 35.261306762695}, + {138.935165, 35.455399}, + {139.604154, 35.393143}, + {139.25651550293, 35.630722045898}, + {135.00205993652, 34.665298461914}, + {134.9897, 34.710617}, + {135.26413, 34.725723}, + {139.77012634277, 35.666427612305}, + {139.7371673584, 35.630722045898}, + {139.7728729248, 35.69938659668}, + {139.775482, 35.626602}, + {139.840202, 38.771046}, + {139.77012634277, 35.68977355957}, + {140.23292541504, 37.144088745117}, + {140.335464, 38.220749}, + {140.44853210449, 37.801895141602}, + {140.30296325684, 38.241348266602}, + {139.516983, 35.774002}, + {139.544907, 35.760841}, + {140.510201, 37.300146}, + {140.925189, 37.660946}, + {139.43229675293, 35.735092163086}, + {138.533478, 35.654068}, + {138.86375427246, 35.09651184082}, + {139.5092010498, 35.69938659668}, + {139.240723, 35.753975}, + {138.56987, 35.66803}, + {138.370399, 35.037804}, + {138.286482, 34.865701}, + {6.77948, 51.218948}, + {9.93782, 51.572571}, + {6.7421722412109, 50.250778198242}, + {13.283157348633, 52.334060668945}, + {9.0026092529297, 53.087997436523}, + {10.32114, 51.01347}, + {6.7819976806641, 50.720443725586}, + {6.7009735107422, 50.404586791992}, + {10.065536499023, 53.467025756836}, + {7.8133392333984, 50.445785522461}, + {8.3090972900391, 50.705337524414}, + {13.232345581055, 52.55241394043}, + {13.305130004883, 52.573013305664}, + {7.185059, 51.481934}, + {7.018492, 51.05496}, + {13.078536987305, 48.284225463867}, + {7.130336, 51.086199}, + {43.244247436523, 54.076766967773}, + {47.545846, 55.456467}, + {47.413559, 56.085205}, + {86.162338256836, 55.353927612305}, + {88.065719604492, 53.688125610352}, + {44.025650024414, 43.189315795898}, + {47.633285522461, 42.777328491211}, + {158.38645935059, 53.184127807617}, + {142.79960632324, 47.353134155273}, + {132.29804992676, 43.381576538086}, + {93.337783813477, 56.203994750977}, + {92.934036254883, 55.998001098633}, + {92.987594604492, 56.007614135742}, + {92.932663, 56.03817}, + {91.422511, 53.737219}, + {91.426162719727, 53.743057250977}, + {56.405354, 54.815073}, + {55.824966430664, 52.474136352539}, + {54.230575561523, 56.096878051758}, + {54.046568, 55.819484}, + {56.12434387207, 54.829330444336}, + {8.0083465576172, 58.151321411133}, + {5.7300567626953, 58.891525268555}, + {5.849991, 58.770676}, + {10.960922241211, 60.259323120117}, + {11.15592956543, 59.519119262695}, + {9.9515533447266, 59.929733276367}, + {10.726089477539, 59.929733276367}, + {10.683517, 59.907761}, + {11.149063110352, 60.104141235352}, + {10.725859, 59.922}, + {10.737076, 59.92218}, + {10.642318725586, 59.924240112305}, + {10.792692, 59.935227}, + {10.102615356445, 59.75944519043}, + {10.609359741211, 59.88166809082}, + {10.75080871582, 59.950332641602}, + {10.73844909668, 59.710006713867}, + {10.425338745117, 61.202774047852}, + {10.737075805664, 59.91325378418}, + {11.113357543945, 59.248580932617}, + {11.10237121582, 60.19889831543}, + {79.551315307617, 29.358901977539}, + {78.147811889648, 29.39323425293}, + {78.208236694336, 30.033187866211}, + {72.870254516602, 21.094436645508}, + {73.070755004883, 22.456741333008}, + {73.251234, 22.289706}, + {72.539291, 23.008118}, + {72.616195678711, 23.229904174805}, + {75.903854370117, 22.720413208008}, + {81.250076293945, 18.700790405273}, + {77.395935, 23.26973}, + {75.784378051758, 26.906204223633}, + {73.017196655273, 26.274490356445}, + {81.6016, 21.232318}, + {75.60173034668, 28.370132446289}, + {75.832214, 26.84166}, + {75.819397, 26.880798}, + {75.729446411133, 26.911697387695}, + {80.177677, 13.053956}, + {80.180282592773, 13.099136352539}, + {80.110244750977, 13.118362426758}, + {72.621688842773, 23.039016723633}, + {72.506332397461, 23.026657104492}, + {72.639541625977, 23.036270141602}, + {-93.396836, 38.234024}, + {-89.526901, 37.300415}, + {-92.134803, 39.214989}, + {-89.859581, 38.571969}, + {-90.209375, 38.624917}, + {-90.049267, 38.594799}, + {-94.515871, 37.086803}, + {-90.633773803711, 38.694534301758}, + {-90.246505737305, 38.478927612305}, + {-90.035018920898, 38.720626831055}, + {-90.232772827148, 38.636856079102}, + {-90.036392211914, 38.651962280273}, + {-93.266372680664, 36.651077270508}, + {-85.430374145508, 34.972915649414}, + {-85.308151245117, 35.056686401367}, + {-85.266764, 35.142611}, + {-83.923873901367, 35.969924926758}, + {-86.750106811523, 36.596145629883}, + {-84.209518432617, 36.281661987305}, + {-85.273544, 34.879257}, + {-84.172439575195, 35.89714050293}, + {-83.792175, 35.886256}, + {-83.95133972168, 35.88752746582}, + {-83.718453, 35.895272}, + {13.943558, 50.923233}, + {8.6084747314453, 50.021438598633}, + {13.114242553711, 51.047286987305}, + {8.6043548583984, 50.048904418945}, + {6.732571, 49.311444}, + {6.8946075439453, 49.411697387695}, + {8.8790130615234, 52.281875610352}, + {8.647926, 51.875881}, + {12.124786, 50.937424}, + {8.7238311767578, 50.131301879883}, + {8.938065, 50.087013}, + {8.316582, 49.996582}, + {8.292618, 50.054398}, + {13.418844, 52.552872}, + {3.138767, 50.635322}, + {3.086424, 45.72794}, + {7.773514, 48.749967}, + {6.786057, 47.476492}, + {4.916453, 45.726305}, + {3.9681243896484, 46.796951293945}, + {5.9195709228516, 45.547256469727}, + {2.351604, 48.838248}, + {1.125567, 49.460856}, + {2.039528, 48.846447}, + {4.905949, 43.491529}, + {6.459274, 43.53674}, + {2.412823, 48.683853}, + {1.3726043701172, 45.845260620117}, + {2.263361, 48.903709}, + {2.431772, 48.927176}, + {2.48213, 48.826311}, + {8.687929, 51.024799}, + {9.5629119873047, 51.317825317383}, + {11.24382019043, 49.196090698242}, + {10.256423950195, 49.42268371582}, + {6.731246, 49.423593}, + {6.780248, 49.503079}, + {9.683762, 48.759613}, + {11.424408, 53.863907}, + {11.399002075195, 53.624954223633}, + {8.151169, 53.286438}, + {7.6457977294922, 53.182754516602}, + {12.501754760742, 50.717697143555}, + {7.57124, 53.06385}, + {12.659683227539, 51.022567749023}, + {-1.2448883056641, 51.191482543945}, + {-1.965867, 50.822983}, + {-1.1762237548828, 50.867385864258}, + {0.10368347167969, 51.580123901367}, + {0.072784, 51.485367}, + {0.58982849121094, 51.775131225586}, + {0.118561, 51.40274}, + {-0.004869, 51.267243}, + {-0.046005249023438, 51.43180847168}, + {-0.409339, 51.694107}, + {-0.319977, 51.583786}, + {-0.41130065917969, 51.720199584961}, + {-1.2984466552734, 53.655166625977}, + {-0.21080017089844, 51.393356323242}, + {-0.41404724121094, 51.36589050293}, + {-0.124568, 51.414044}, + {-0.46073913574219, 51.493606567383}, + {-0.13526916503906, 51.368637084961}, + {6.676254, 47.174149}, + {5.96826, 47.198327}, + {3.115311, 48.005251}, + {6.101754, 47.213119}, + {4.089146, 47.777481}, + {2.1306610107422, 48.789596557617}, + {3.155905, 46.955926}, + {-0.30143737792969, 49.165878295898}, + {-2.9203033447266, 47.79670715332}, + {-1.2943267822266, 48.076858520508}, + {-1.1528778076172, 46.18034362793}, + {2.3215484619141, 48.818435668945}, + {2.3201751708984, 48.818435668945}, + {2.4588775634766, 48.822555541992}, + {2.3133087158203, 48.844528198242}, + {2.72811, 50.545935}, + {3.087735, 50.709457}, + {3.173797, 50.656828}, + {3.002015, 50.538569}, + {3.0068206787109, 50.599594116211}, + {1.5154266357422, 44.547500610352}, + {-1.722382, 46.795441}, + {27.572250366211, 47.15950012207}, + {27.614822387695, 47.155380249023}, + {26.124801635742, 44.406051635742}, + {24.551010131836, 47.178726196289}, + {25.59196472168, 45.640640258789}, + {25.531539916992, 44.934768676758}, + {23.56086730957, 47.658004760742}, + {22.124404907227, 47.36686706543}, + {22.277526, 45.853577}, + {21.855239868164, 46.934280395508}, + {25.908735, 46.452714}, + {26.31706237793, 44.418411254883}, + {25.336532592773, 44.717788696289}, + {22.043380737305, 46.655502319336}, + {26.063003540039, 44.45686340332}, + {26.115188598633, 44.421157836914}, + {26.11930847168, 44.47883605957}, + {26.094589233398, 44.441757202148}, + {26.08772277832, 44.465103149414}, + {25.605698, 45.655252}, + {-98.113894, 29.692343}, + {-98.887992, 30.282387}, + {-98.593368530273, 29.769515991211}, + {-97.54280090332, 31.050796508789}, + {-97.758407592773, 31.11946105957}, + {-97.54089, 31.054713}, + {-97.743301, 30.26673}, + {-101.904148, 33.57518}, + {-97.738495, 30.264587}, + {-101.37153625488, 33.916854858398}, + {-102.573345, 32.711702}, + {-102.612305, 32.712136}, + {-98.451909, 33.579789}, + {-102.379696, 31.863943}, + {-97.847315, 27.406489}, + {-96.997433, 28.849239}, + {-102.92610168457, 31.598739624023}, + {-81.713463, 30.450377}, + {-81.616982, 30.27274}, + {-99.611664, 29.30397}, + {-81.609192, 30.544968}, + {-81.891403198242, 30.051040649414}, + {-81.559066772461, 30.295486450195}, + {-81.697769165039, 30.241928100586}, + {121.16477966309, 24.95475769043}, + {121.37214660645, 24.934158325195}, + {121.0961151123, 24.972610473633}, + {121.288048, 24.942769}, + {121.333044, 24.939435}, + {121.41059875488, 24.912185668945}, + {121.23207092285, 24.864120483398}, + {121.239591, 24.93131}, + {121.259308, 24.935303}, + {121.189499, 24.911499}, + {120.93406677246, 24.781723022461}, + {121.09336853027, 24.752883911133}, + {120.97663879395, 24.79133605957}, + {121.009473, 24.800824}, + {120.98350524902, 24.776229858398}, + {121.019105, 24.785737}, + {120.99998474121, 24.728164672852}, + {120.967369, 24.827042}, + {121.41059875488, 23.637771606445}, + {121.31309509277, 23.224411010742}, + {121.3240814209, 23.376846313477}, + {121.76902770996, 24.674606323242}, + {14.339218139648, 40.84098815918}, + {14.311752319336, 40.873947143555}, + {14.454574584961, 40.688552856445}, + {15.304642, 41.05545}, + {14.344711303711, 41.06071472168}, + {14.251327514648, 41.086807250977}, + {14.565125, 40.781937}, + {14.545212, 40.759811}, + {14.020615, 41.199875}, + {14.743996, 40.677567}, + {13.921738, 41.220017}, + {14.124985, 41.283875}, + {14.173719, 40.922516}, + {16.769943237305, 40.890426635742}, + {16.86882019043, 41.125259399414}, + {16.859011, 41.089554}, + {16.83723449707, 40.917892456055}, + {16.330490112305, 38.925247192383}, + {16.378555297852, 41.123886108398}, + {16.662826538086, 41.174697875977}, + {16.427547, 39.618707}, + {16.244431, 39.307022}, + {15.98991394043, 39.959335327148}, + {47.251511, 56.099625}, + {83.757705688477, 53.370895385742}, + {83.715133666992, 53.375015258789}, + {83.77555847168, 53.357162475586}, + {39.768447875977, 43.588943481445}, + {38.666794, 45.457169}, + {39.085007, 44.101181}, + {38.530838, 44.380234}, + {39.545299, 43.729709}, + {39.006729, 45.107803}, + {39.024124, 45.051041}, + {93.541030883789, 56.260299682617}, + {92.984848022461, 56.006240844727}, + {92.832413, 56.03302}, + {133.08494567871, 42.734756469727}, + {131.889496, 42.982636}, + {132.603836, 43.354111}, + {131.334, 42.941437}, + {-46.772232055664, -23.610305786133}, + {-49.245529174805, -25.515060424805}, + {-49.25651550293, -25.425796508789}, + {-61.905275, -10.884767}, + {-52.931442260742, -29.97688293457}, + {-47.780227661133, -15.779800415039}, + {-51.564714, -25.072043}, + {7.619405, 49.43298}, + {-6.8836212158203, 33.971786499023}, + {-6.851878, 34.02211}, + {-7.171555, 33.790054}, + {-6.9193267822266, 33.905868530273}, + {-5.3414154052734, 35.729598999023}, + {-5.111389, 35.450821}, + {-5.408264, 35.566084}, + {-7.5331878662109, 33.515853881836}, + {-6.784058, 33.87085}, + {-7.594299, 33.54126}, + {-4.9706268310547, 34.011611938477}, + {-5.0008392333984, 34.050064086914}, + {-4.983673, 34.015045}, + {-2.295914, 35.110245}, + {-1.9136810302734, 34.665298461914}, + {-13.196640014648, 27.153396606445}, + {-5.836258, 35.751572}, + {-5.8893585205078, 35.747451782227}, + {-5.9030914306641, 35.718612670898}, + {-7.6979827880859, 33.525466918945}, + {-6.5512847900391, 34.06379699707}, + {-6.5801239013672, 34.256057739258}, + {106.821854, -6.240921}, + {106.985685, -6.252875}, + {106.861608, -6.30724}, + {106.744396, -6.328142}, + {106.965775, -6.357651}, + {106.63536071777, -6.2985992431641}, + {107.341231, -6.756592}, + {106.958857, -6.269417}, + {106.853456, -6.165991}, + {106.08192443848, -6.0390472412109}, + {106.86195373535, -6.1392974853516}, + {106.894726, -6.131271}, + {106.85547, -6.464415}, + {106.893322, -6.179057}, + {106.14784240723, -6.1310577392578}, + {106.733038, -6.249581}, + {106.544037, -5.666885}, + {106.205136, -6.130574}, + {106.724819, -6.19079}, + {106.767206, -6.205633}, + {107.008288, -6.200475}, + {37.111129760742, 45.346755981445}, + {39.01725769043, 45.400314331055}, + {37.967378, 44.933053}, + {39.591751, 52.598648}, + {60.597839, 56.803436}, + {39.180776, 51.683848}, + {33.098373, 68.894234}, + {35.551071166992, 58.548202514648}, + {82.937850952148, 55.020217895508}, + {86.107406616211, 56.23420715332}, + {54.594772, 51.851486}, + {53.638687, 53.542901}, + {45.794448852539, 51.305465698242}, + {45.348129272461, 52.276382446289}, + {50.89765, 55.66168}, + {131.976699, 43.141253}, + {56.21223449707, 57.996139526367}, + {56.188888549805, 58.038711547852}, + {65.711975, 57.431717}, + {43.566970825195, 56.522598266602}, + {5.7561492919922, 52.437057495117}, + {4.302521, 51.48571}, + {4.450424, 51.495804}, + {5.790176, 50.945816}, + {6.896399, 53.111702}, + {6.700516, 53.276138}, + {6.0019683837891, 51.198348999023}, + {5.504837, 51.439499}, + {4.938354, 52.371826}, + {4.8983, 52.378006}, + {4.574384, 52.174248}, + {5.1587677001953, 52.231063842773}, + {5.293179, 51.687841}, + {5.916628, 52.000155}, + {5.1505279541016, 52.129440307617}, + {4.844284, 52.235184}, + {6.162212, 52.231966}, + {5.003586, 51.582184}, + {4.274803, 52.095062}, + {42.797927856445, 44.010543823242}, + {30.34877, 59.8965}, + {30.351791381836, 59.943466186523}, + {37.431198, 55.687271}, + {37.648458, 55.773103}, + {37.654286, 55.764542}, + {37.561963, 55.713972}, + {30.377883911133, 59.93522644043}, + {37.573363, 55.765107}, + {37.58903503418, 55.745315551758}, + {30.222843, 59.822438}, + {30.375824, 59.82605}, + {91.43440246582, 53.737564086914}, + {132.92289733887, 42.845993041992}, + {37.824907, 55.811852}, + {43.892784, 56.316605}, + {37.718811, 55.800797}, + {37.680773, 55.768726}, + {37.857069, 55.76955}, + {37.32756, 55.492081}, + {37.627487182617, 55.721969604492}, + {-48.279812, -18.903532}, + {-46.20231628418, -19.657974243164}, + {-47.781600952148, -20.026016235352}, + {-45.077590942383, -21.945877075195}, + {-44.650497436523, -22.007675170898}, + {-44.891573, -21.955884}, + {-45.993576049805, -22.257614135742}, + {-46.350023, -22.864317}, + {-46.694078, -22.321084}, + {-46.05546, -22.594122}, + {-45.960513, -20.46805}, + {-45.736771, -19.776765}, + {-45.541527, -20.287095}, + {-46.908187866211, -16.355209350586}, + {-43.863661, -16.704811}, + {-42.297992, -16.161142}, + {-43.225021362305, -22.978591918945}, + {-43.234668, -22.920119}, + {-43.267593383789, -22.81379699707}, + {-43.350556, -22.801195}, + {23.975601196289, 38.098526000977}, + {25.206069946289, 35.328598022461}, + {28.225936889648, 36.434097290039}, + {25.094833374023, 35.335464477539}, + {22.964944, 40.607508}, + {23.69270324707, 35.507125854492}, + {23.572197, 40.000191}, + {22.992324829102, 40.556716918945}, + {22.768478393555, 40.630874633789}, + {22.518539, 36.880875}, + {22.753831, 37.949295}, + {22.737579, 38.009949}, + {21.267744, 49.014663}, + {19.14299, 48.743199}, + {17.106399536133, 48.14826965332}, + {17.096786499023, 48.12629699707}, + {17.164077758789, 48.185348510742}, + {17.183303833008, 48.164749145508}, + {17.18605, 48.175163}, + {18.206066, 48.597229}, + {18.151548, 47.970628}, + {19.540558, 48.447647}, + {19.244888, 49.207077}, + {12.917313, 47.289963}, + {16.342849731445, 48.321304321289}, + {12.423095, 47.288626}, + {16.393661499023, 48.378982543945}, + {15.241470336914, 48.207321166992}, + {-111.903638, 40.632955}, + {-98.022498, 30.761723}, + {-111.913186, 40.678916}, + {-97.047973, 28.695922}, + {-82.546734, 27.457069}, + {-82.64807, 27.425321}, + {-105.12886047363, 35.685653686523}, + {-122.6357, 47.369007}, + {-122.276466, 47.543679}, + {-122.207165, 47.478994}, + {-122.167002, 47.756057}, + {-122.422028, 47.320519}, + {-122.036133, 47.682037}, + {-96.744919, 32.761231}, + {-72.566757202148, 42.734756469727}, + {-77.27165222168, 43.223648071289}, + {-74.743423461914, 43.003921508789}, + {-76.973648071289, 42.841873168945}, + {-75.407412, 43.154988}, + {-75.653914, 42.200089}, + {-73.774338, 42.838669}, + {120.35865783691, 22.694320678711}, + {120.35179138184, 22.720413208008}, + {120.46028137207, 22.474594116211}, + {120.24467468262, 22.886581420898}, + {120.45066833496, 22.636642456055}, + {120.899047, 22.350311}, + {120.60035705566, 22.602310180664}, + {120.64979553223, 22.574844360352}, + {120.54542541504, 22.552871704102}, + {120.47813415527, 22.458114624023}, + {118.31932067871, 24.402694702148}, + {121.47514343262, 24.984970092773}, + {121.39961242676, 24.950637817383}, + {121.4298248291, 25.038528442383}, + {121.375732, 24.949433}, + {121.42433166504, 25.022048950195}, + {121.56028747559, 24.984970092773}, + {121.54655456543, 24.986343383789}, + {121.53144836426, 24.961624145508}, + {121.523803, 24.980625}, + {121.53144836426, 25.02067565918}, + {121.53419494629, 25.015182495117}, + {121.55479431152, 25.026168823242}, + {50.526809692383, 26.226425170898}, + {51.493606567383, 25.244522094727}, + {50.589981079102, 26.240158081055}, + {50.562515258789, 26.133041381836}, + {51.540985, 24.994583}, + {51.514206, 25.21431}, + {51.445541381836, 25.19645690918}, + {51.471633911133, 25.267868041992}, + {51.436615, 25.263748}, + {51.523991, 25.238686}, + {51.525192260742, 25.357131958008}, + {51.419448852539, 25.451889038086}, + {51.412582397461, 25.295333862305}, + {51.067886352539, 24.71305847168}, + {51.337051391602, 25.217056274414}, + {51.526565551758, 25.280227661133}, + {50.793228149414, 25.417556762695}, + {51.521072387695, 25.348892211914}, + {51.547164916992, 25.289840698242}, + {51.449661254883, 25.361251831055}, + {51.456527709961, 25.190963745117}, + {51.456527709961, 25.173110961914}, + {51.429061889648, 25.401077270508}, + {-107.40577697754, 24.838027954102}, + {-101.01757, 22.128525}, + {-87.068710327148, 20.646743774414}, + {-107.432179, 24.812708}, + {-106.412888, 23.277054}, + {-92.512435913086, 18.625259399414}, + {-110.945091, 31.329575}, + {-97.449417114258, 25.840530395508}, + {-95.337982, 18.453598}, + {-95.240707, 18.440781}, + {-95.304336547852, 18.476943969727}, + {-97.012710571289, 19.597549438477}, + {-89.581833, 20.954165}, + {-99.10285949707, 19.412155151367}, + {-99.183883666992, 19.306411743164}, + {-99.141311645508, 19.62776184082}, + {-103.17604064941, 20.612411499023}, + {-99.150924682617, 19.245986938477}, + {-98.902359008789, 19.40803527832}, + {121.52458190918, 25.103073120117}, + {121.47651672363, 25.137405395508}, + {121.74156188965, 24.671859741211}, + {121.49436950684, 25.144271850586}, + {121.83082580566, 25.126419067383}, + {121.55891418457, 24.98908996582}, + {121.51908874512, 25.015182495117}, + {121.49299621582, 25.075607299805}, + {121.30897521973, 25.044021606445}, + {121.11671447754, 24.969863891602}, + {121.30348205566, 25.041275024414}, + {121.286566, 24.887546}, + {121.51634216309, 25.008316040039}, + {121.20323181152, 24.851760864258}, + {120.69511413574, 24.288711547852}, + {120.7788848877, 24.43977355957}, + {120.3133392334, 22.679214477539}, + {120.539508, 22.555313}, + {120.29273986816, 22.717666625977}, + {120.18562316895, 23.014297485352}, + {120.35453796387, 22.947006225586}, + {120.29686, 23.065796}, + {120.28861999512, 22.96760559082}, + {120.53581237793, 24.169235229492}, + {120.61683654785, 24.18571472168}, + {115.78834533691, -0.24238586425781}, + {116.83891296387, -1.2778472900391}, + {114.84901428223, -3.4366607666016}, + {114.71168518066, -3.4435272216797}, + {116.839828, -1.236649}, + {113.91242980957, -2.1910858154297}, + {113.92204284668, -2.2089385986328}, + {113.88084411621, -2.1814727783203}, + {112.95936584473, -2.5275421142578}, + {113.86024475098, -2.1732330322266}, + {111.6300201416, -2.6868438720703}, + {111.62452697754, -2.6964569091797}, + {115.202408, -2.909317}, + {106.80839538574, -6.1612701416016}, + {116.00120544434, -3.4201812744141}, + {116.22917175293, -3.2375335693359}, + {117.14378356934, -0.45249938964844}, + {114.6004486084, -3.3240509033203}, + {117.12730407715, -0.49507141113281}, + {109.34898376465, -0.041885375976562}, + {111.174088, 0.002747}, + {109.36820983887, -0.067977905273438}, + {111.478584, 0.059364}, + {111.500876, 0.078964}, + {-88.962478, 35.814058}, + {-89.54475402832, 35.759811401367}, + {-89.877127, 34.961857}, + {-88.871841430664, 35.65544128418}, + {-92.280807, 34.750443}, + {-92.90818, 36.065738}, + {-92.525445, 34.609671}, + {-93.140241, 35.247363}, + {-94.313052, 36.418077}, + {-94.405746, 35.351944}, + {-97.741699, 35.508156}, + {-97.341832, 36.775949}, + {-97.491989135742, 35.298385620117}, + {-97.355628, 35.967594}, + {-95.338419, 36.254312}, + {-95.621566772461, 36.306381225586}, + {-96.429456, 35.836766}, + {-93.077299, 34.457147}, + {-97.862774, 36.097641}, + {-98.493805, 36.367984}, + {-93.033543, 34.211813}, + {-92.586004, 42.058967}, + {-91.535328, 41.624417}, + {-94.187546, 42.714997}, + {-91.638241, 42.03423}, + {37.424240112305, 31.26091003418}, + {38.658828735352, 31.674270629883}, + {49.542847, 25.445023}, + {39.647599, 24.419174}, + {41.662216186523, 27.568130493164}, + {39.592412, 24.489438}, + {41.539307, 27.824936}, + {44.263229370117, 26.314315795898}, + {43.966598510742, 26.083602905273}, + {43.496932983398, 25.872116088867}, + {42.512283325195, 18.233871459961}, + {42.48893737793, 18.214645385742}, + {42.948989868164, 18.080062866211}, + {42.566528, 16.877747}, + {42.954483032227, 16.698532104492}, + {42.618026733398, 16.882553100586}, + {47.185592651367, 24.112930297852}, + {46.586837768555, 24.605941772461}, + {39.900283813477, 21.435012817383}, + {50.164948, 26.330795}, + {50.039749, 26.396713}, + {50.020065, 26.423492}, + {50.033798217773, 26.517562866211}, + {2.1773529052734, 41.397171020508}, + {2.4822235107422, 42.179946899414}, + {2.194519, 41.511154}, + {2.0056915283203, 41.457595825195}, + {2.18605, 41.58165}, + {2.118988, 41.541367}, + {2.6648712158203, 41.629257202148}, + {2.2171783447266, 41.427383422852}, + {2.1869659423828, 41.40266418457}, + {2.164994, 41.426702}, + {2.1704864501953, 41.391677856445}, + {2.170166, 41.375486}, + {2.1814727783203, 41.383438110352}, + {2.0276641845703, 41.494674682617}, + {1.7276, 41.367645}, + {2.1814727783203, 41.391677856445}, + {1.6994476318359, 41.349105834961}, + {2.114525, 41.398802}, + {2.1732330322266, 41.410903930664}, + {2.1334075927734, 41.366958618164}, + {1.9960784912109, 41.810531616211}, + {174.609146, -37.169724}, + {174.330087, -35.727489}, + {174.77668762207, -36.855697631836}, + {174.651326, -36.84942}, + {169.34394836426, -44.899063110352}, + {172.56706237793, -43.538131713867}, + {170.4988861084, -45.879592895508}, + {171.860276, -43.906174}, + {168.34831237793, -46.391830444336}, + {174.781631, -41.296921}, + {172.61512756348, -43.553237915039}, + {173.837357, -41.511459}, + {175.8341217041, -40.33561706543}, + {175.282059, -39.425206}, + {175.207901, -40.554428}, + {174.77531433105, -41.296920776367}, + {176.209893, -37.680012}, + {174.180988, -39.159486}, + {176.163636, -37.741906}, + {174.214484, -39.178011}, + {175.847237, -38.163955}, + {34.917984008789, 32.550430297852}, + {35.344385, 32.552748}, + {35.302132, 32.492922}, + {35.421981811523, 32.748184204102}, + {34.810392, 32.072208}, + {34.830093383789, 32.040939331055}, + {34.995575, 32.110016}, + {34.860025, 32.268274}, + {34.909744262695, 32.370529174805}, + {34.972915649414, 32.465286254883}, + {34.900131225586, 32.176895141602}, + {34.911117553711, 31.990127563477}, + {34.90837097168, 31.966781616211}, + {34.799880981445, 31.244430541992}, + {34.773788452148, 31.23893737793}, + {34.876704, 32.188366}, + {34.82048034668, 32.213973999023}, + {35.209121704102, 32.731704711914}, + {35.202255249023, 32.889633178711}, + {35.243454, 32.678833}, + {-1.4289093017578, 53.34342956543}, + {-0.338059, 51.081162}, + {-0.368042, 51.074066}, + {-0.096817016601562, 51.367263793945}, + {-2.377363, 51.892548}, + {-3.1743621826172, 51.72981262207}, + {-1.219952, 50.78217}, + {-2.0510101318359, 51.882247924805}, + {-0.86174011230469, 50.787734985352}, + {-0.15449523925781, 51.096725463867}, + {-0.17646789550781, 50.834426879883}, + {-0.169605, 51.498082}, + {-0.21217346191406, 51.49772644043}, + {-0.511551, 51.465356}, + {-0.665359, 51.390266}, + {-0.45936584472656, 51.36589050293}, + {-2.200012, 53.481445}, + {-2.255302, 53.48597}, + {-0.092697143554688, 51.501846313477}, + {47.947769165039, 29.291610717773}, + {48.056922, 29.213889}, + {47.990341186523, 29.276504516602}, + {48.094711303711, 29.168014526367}, + {48.085098266602, 29.246292114258}, + {48.122864, 29.130936}, + {47.733535766602, 29.323196411133}, + {48.010940551758, 29.365768432617}, + {48.012313842773, 29.34928894043}, + {48.083724975586, 29.268264770508}, + {47.939529418945, 29.264144897461}, + {47.927169799805, 29.260025024414}, + {47.936782836914, 29.288864135742}, + {46.72004699707, 24.686965942383}, + {46.603317260742, 24.724044799805}, + {46.674728393555, 24.649887084961}, + {46.719371, 24.541206}, + {46.659622192383, 24.601821899414}, + {46.73275, 24.690742}, + {46.754379272461, 24.743270874023}, + {46.783218383789, 24.752883911133}, + {46.711728, 24.873493}, + {9.188919, 39.317551}, + {9.697495, 40.707583}, + {9.0190887451172, 39.276809692383}, + {9.3198394775391, 39.204025268555}, + {12.325973510742, 43.65348815918}, + {13.456192016602, 43.605422973633}, + {12.90482, 43.336949}, + {13.82698059082, 42.671585083008}, + {13.340842, 42.391436}, + {14.217682, 42.452202}, + {14.215622, 42.461898}, + {11.736832, 43.240677}, + {13.085405, 42.269212}, + {12.856064, 42.321053}, + {12.623704, 43.058304}, + {12.082901000977, 41.957473754883}, + {12.297871, 42.030964}, + {12.393264770508, 42.458724975586}, + {12.118606567383, 42.732009887695}, + {103.81462097168, 1.2915802001953}, + {103.84346008301, 1.2998199462891}, + {103.95499, 1.348538}, + {103.87001, 1.380844}, + {103.779759, 1.433941}, + {103.79264831543, 1.4550018310547}, + {103.871613, 1.306}, + {103.9275, 1.315373}, + {103.848953, 1.330719}, + {103.88191223145, 1.3217926025391}, + {103.92448425293, 1.3478851318359}, + {103.8599395752, 1.3918304443359}, + {-85.262833, 37.052765}, + {-85.237464, 37.493192}, + {-85.3747, 36.819724}, + {-84.598159790039, 38.042221069336}, + {-84.328994750977, 38.046340942383}, + {-84.504204, 38.071175}, + {-85.635028, 38.139268}, + {-85.570611, 38.315102}, + {-85.651131, 38.212166}, + {-89.801652, 35.113132}, + {-85.534744, 38.179276}, + {-89.580718, 35.702211}, + {-88.278579711914, 35.519485473633}, + {-88.676275, 35.458521}, + {-90.110942, 35.002932}, + {-89.967041, 34.759369}, + {-90.372505, 34.84108}, + {-89.872970581055, 35.143203735352}, + {-89.705887, 35.307999}, + {29.463272094727, -23.89045715332}, + {28.065072, -26.073709}, + {28.106169, -26.210806}, + {28.067917, -26.05335}, + {28.069253, -26.151039}, + {18.840866088867, -33.977279663086}, + {18.860092163086, -33.937454223633}, + {18.871078491211, -34.077529907227}, + {18.527913, -33.875532}, + {18.513989, -33.831518}, + {18.654098510742, -33.815231323242}, + {30.99723815918, -29.775009155273}, + {31.288375854492, -29.335556030273}, + {22.081832885742, -34.166793823242}, + {28.245993, -25.840049}, + {29.43512, -25.784226}, + {26.874618530273, -31.903610229492}, + {28.295707, -25.827019}, + {28.069381713867, -25.773239135742}, + {27.995911, -26.126862}, + {28.152502, -26.105897}, + {28.304637, -25.809827}, + {18.590927124023, -34.04182434082}, + {3.80788, 51.022772}, + {3.785574, 51.043674}, + {3.6728668212891, 51.091232299805}, + {4.768295, 50.94429}, + {4.867041, 50.808727}, + {4.8813629150391, 50.736923217773}, + {5.6641387939453, 51.065139770508}, + {5.3263092041016, 50.930557250977}, + {5.7300567626953, 51.03630065918}, + {4.4391632080078, 51.173629760742}, + {4.446304, 51.171982}, + {4.4570159912109, 51.209335327148}, + {4.7536468505859, 51.14616394043}, + {4.6121978759766, 51.405715942383}, + {4.709702, 51.411896}, + {4.2551422119141, 50.493850708008}, + {4.1974639892578, 50.474624633789}, + {3.3968353271484, 50.603713989258}, + {3.930702, 50.687485}, + {-0.10368347167969, 51.534805297852}, + {-0.375857, 51.477127}, + {-0.133869, 51.528995}, + {-0.308866, 51.551285}, + {-0.70158, 51.542873}, + {1.148758, 52.069521}, + {-0.58570861816406, 51.658401489258}, + {-0.45348, 51.880678}, + {-0.61317443847656, 52.283248901367}, + {-0.71205139160156, 52.324447631836}, + {0.753708, 51.39473}, + {0.19020080566406, 51.467514038086}, + {-0.097137, 51.33944}, + {0.241109, 51.421026}, + {-0.199434, 51.48774}, + {-0.186453, 51.405332}, + {-0.074844360351562, 51.493606567383}, + {-1.0622406005859, 51.401596069336}, + {-1.5106, 50.90882}, + {-0.11741638183594, 51.427688598633}, + {127.050631, 37.45178}, + {127.058377, 37.497809}, + {127.05647, 37.517705}, + {127.062944, 37.613708}, + {127.021259, 37.483014}, + {126.93809509277, 37.609634399414}, + {127.21138000488, 37.906265258789}, + {127.11799621582, 37.637100219727}, + {127.10753, 37.755691}, + {127.29927062988, 37.911758422852}, + {126.97792053223, 37.554702758789}, + {126.98616, 37.553329}, + {126.98753356934, 37.562942504883}, + {126.92848205566, 37.572555541992}, + {127.02186584473, 37.586288452148}, + {127.02049255371, 37.61100769043}, + {127.7140045166, 37.877426147461}, + {129.135683, 37.461864}, + {126.7911529541, 37.653579711914}, + {127.08641052246, 37.62336730957}, + {126.7699, 37.688749}, + {126.671419, 37.491221}, + {127.20314, 37.170868}, + {127.06343, 37.250836}, + {-75.828644, 40.462286}, + {-75.276374, 39.965054}, + {-75.350445, 40.202449}, + {-75.333938598633, 39.982681274414}, + {-75.226889, 39.97146}, + {-75.03319, 39.94482}, + {-75.147717, 39.981241}, + {-75.510191, 39.949722}, + {-74.989242553711, 39.95246887207}, + {-75.685501098633, 39.400405883789}, + {-77.196245, 39.798361}, + {-76.013846, 40.89185}, + {-75.914053, 39.961527}, + {-74.71321105957, 39.883804321289}, + {-77.729212, 43.197602}, + {-77.899167, 42.754332}, + {-76.190902, 43.062725}, + {-73.89188, 40.692807}, + {-76.129103, 43.466788}, + {-74.018326, 40.625598}, + {-73.996564, 40.603409}, + {-76.543807983398, 3.2952117919922}, + {-76.447677612305, 3.4188079833984}, + {-76.531347, 3.468774}, + {-76.534194946289, 3.4503936767578}, + {-75.453415, 5.028305}, + {-76.488876342773, 3.4531402587891}, + {-75.71159362793, 4.5188140869141}, + {-75.730819702148, 5.3372955322266}, + {-75.705003, 4.804718}, + {-75.765151977539, 4.8072052001953}, + {-75.704727172852, 4.8154449462891}, + {-75.692856, 4.528547}, + {-74.820079, 10.967213}, + {-74.813461303711, 10.996627807617}, + {-75.812759, 9.234695}, + {-75.70198059082, 9.2456817626953}, + {-72.593447, 11.161466}, + {-75.490493774414, 10.485763549805}, + {-75.472641, 10.397186}, + {-74.209213, 11.063644}, + {20.978851, 52.217331}, + {21.509170532227, 50.094223022461}, + {19.89143371582, 50.079116821289}, + {19.83512878418, 49.977493286133}, + {19.016647338867, 50.256271362305}, + {19.002914, 50.274124}, + {19.070205688477, 49.838790893555}, + {18.967896, 50.29747}, + {19.157341, 50.59619}, + {19.133377, 50.799179}, + {18.618393, 54.238815}, + {17.915267944336, 50.669631958008}, + {18.790512, 54.31778}, + {16.182844, 54.201208}, + {17.992824, 53.125546}, + {17.550996, 53.451542}, + {16.741104125977, 53.138809204102}, + {15.502395629883, 51.945419311523}, + {16.94709777832, 52.368392944336}, + {16.930618286133, 52.435684204102}, + {16.088790893555, 51.647415161133}, + {2.326355, 48.969498}, + {2.1526336669922, 48.931045532227}, + {2.4039459228516, 48.932418823242}, + {2.2336578369141, 48.994216918945}, + {1.9795989990234, 49.018936157227}, + {2.5193023681641, 48.97087097168}, + {2.5824737548828, 49.01481628418}, + {2.4451446533203, 48.994216918945}, + {0.17921447753906, 45.644760131836}, + {0.342815, 47.139765}, + {1.699905, 46.821671}, + {-0.467606, 46.321243}, + {-0.74501, 46.119003}, + {-0.96817, 45.609055}, + {-0.510766, 46.323754}, + {-3.2498931884766, 47.901077270508}, + {2.351589, 48.693466}, + {2.393483, 48.644224}, + {2.337685, 48.647461}, + {5.7904815673828, 50.87287902832}, + {4.651544, 51.804087}, + {4.4130706787109, 52.11296081543}, + {4.849119, 52.372623}, + {4.8360443115234, 52.306594848633}, + {4.625244, 52.377319}, + {-79.81636, 43.354111}, + {-79.793875, 43.329089}, + {-79.696924, 43.230812}, + {-79.749582, 43.244566}, + {-80.098916, 43.464662}, + {-77.010726928711, 44.577713012695}, + {-63.609523, 44.804945}, + {-63.503036499023, 44.691696166992}, + {-123.15605163574, 49.263381958008}, + {-123.109818, 49.349442}, + {-123.121719, 49.286336}, + {-122.851049, 49.200444}, + {100.998505, 13.351535}, + {99.036305, 18.803317}, + {102.81898498535, 16.477432250977}, + {100.072406, 13.819509}, + {98.999293, 18.783929}, + {98.381799, 7.813793}, + {98.388, 7.893572}, + {100.567326, 13.769983}, + {100.58876037598, 13.785781860352}, + {100.61348, 13.806381}, + {100.63407897949, 13.74870300293}, + {100.548436, 13.722735}, + {100.48851013184, 13.772048950195}, + {100.32783508301, 13.763809204102}, + {100.457121, 13.779112}, + {100.46516418457, 13.723983764648}, + {100.37452697754, 13.686904907227}, + {100.49675, 13.731079}, + {100.62034606934, 13.759689331055}, + {98.990249633789, 18.754348754883}, + {99.005355834961, 18.788681030273}, + {99.042434692383, 18.588180541992}, + {99.402236938477, 18.148727416992}, + {101.05842590332, 15.488662719727}, + {-97.378005981445, 32.78938293457}, + {-96.957778930664, 32.74543762207}, + {-97.13493347168, 32.836074829102}, + {-96.346664428711, 32.891006469727}, + {-97.100065, 32.751573}, + {-96.656879, 32.877228}, + {-97.09098815918, 32.741317749023}, + {-96.758651733398, 32.742691040039}, + {-97.004470825195, 32.882766723633}, + {-97.110214233398, 32.94319152832}, + {-97.016830444336, 32.836074829102}, + {-97.39860534668, 32.727584838867}, + {-96.711959838867, 33.101119995117}, + {-96.584243774414, 33.011856079102}, + {-96.869888305664, 32.825088500977}, + {-96.825942993164, 32.704238891602}, + {-96.823196411133, 32.588882446289}, + {-97.296524, 32.822342}, + {-97.313461303711, 32.837448120117}, + {-96.757278442383, 32.983016967773}, + {-96.82731628418, 32.972030639648}, + {2.3819732666016, 41.497421264648}, + {2.2817230224609, 41.570205688477}, + {2.275152, 41.618562}, + {-3.6962127685547, 42.344741821289}, + {2.0647430419922, 41.351852416992}, + {-4.086399, 42.155743}, + {-3.530495, 42.272874}, + {-6.3329315185547, 39.473190307617}, + {-5.465642, 39.872785}, + {-6.597634, 39.968605}, + {-6.272598, 36.498856}, + {-5.9662628173828, 36.24870300293}, + {-6.151158, 36.467181}, + {-5.5446624755859, 36.22673034668}, + {-6.1365509033203, 36.667556762695}, + {-5.456703, 36.156693}, + {-6.3809967041016, 36.701889038086}, + {-6.4400482177734, 36.723861694336}, + {0.092697143554688, 40.284805297852}, + {-0.18058776855469, 39.875564575195}, + {0.13252258300781, 40.319137573242}, + {-90.512994, 14.628702}, + {-91.540145874023, 14.848709106445}, + {-90.482123, 14.578389}, + {-90.604934692383, 14.549331665039}, + {-88.02864074707, 15.532608032227}, + {-84.184655, 9.943025}, + {-85.676193237305, 10.57502746582}, + {-84.156973, 9.978205}, + {-84.208145141602, 9.9378204345703}, + {-84.106521606445, 9.9185943603516}, + {-84.065322875977, 9.8828887939453}, + {-79.957123, 8.495178}, + {-79.504623, 8.993511}, + {-79.519516, 8.991361}, + {-77.077066, -11.949399}, + {-77.040939331055, -11.929092407227}, + {-77.056963, -12.055188}, + {-77.013473510742, -12.124099731445}, + {-76.917363, -12.228946}, + {-77.030604, -12.104222}, + {-79.039405, -8.10014}, + {-47.923508, -22.009506}, + {-48.477589, -21.260507}, + {-48.495242, -21.26542}, + {-43.183087, -22.908758}, + {-43.201241, -22.913951}, + {-40.56770324707, -20.760726928711}, + {-43.926086, -19.895554}, + {-48.288255, -18.952774}, + {-44.990884, -19.87391}, + {-49.175491333008, -25.451889038086}, + {-48.611618, -27.601089}, + {-51.821823120117, -29.507217407227}, + {-47.603454, -15.467858}, + {-57.680282592773, -16.064071655273}, + {-35.715595, -9.562121}, + {-38.988418579102, -12.45231628418}, + {-40.834256, -14.855696}, + {-35.214243, -5.796016}, + {-1.7351531982422, 48.093338012695}, + {-1.674728, 48.096428}, + {-1.424446, 47.294426}, + {-1.761442, 48.034875}, + {-0.552999, 47.38447}, + {-0.557213, 47.471924}, + {-4.4680023193359, 48.398208618164}, + {-0.51704406738281, 47.457504272461}, + {-1.358414, 47.309189}, + {5.2109527587891, 45.431900024414}, + {0.27671813964844, 44.585952758789}, + {5.389137, 45.941048}, + {-0.14488220214844, 48.747024536133}, + {4.1782379150391, 45.639266967773}, + {4.136077, 45.761715}, + {4.1082, 46.132279}, + {3.142497, 45.764007}, + {3.089905, 45.782776}, + {3.1455230712891, 45.68733215332}, + {2.403717, 45.58136}, + {4.8360443115234, 45.76286315918}, + {1.70357, 45.399629}, + {102.83134460449, 16.452713012695}, + {103.83247375488, 17.361831665039}, + {102.753589, 17.848631}, + {104.329289, 15.125922}, + {104.78141784668, 17.411270141602}, + {101.65580749512, 14.851455688477}, + {102.225088, 14.730329}, + {101.80961608887, 16.64909362793}, + {104.861507, 15.214171}, + {100.71510314941, 13.648452758789}, + {100.886889, 13.576931}, + {100.52284240723, 13.689651489258}, + {100.745522, 13.620021}, + {100.52833557129, 13.634719848633}, + {100.52421569824, 13.728103637695}, + {101.017827, 13.370185}, + {102.16667175293, 12.515487670898}, + {101.048353, 13.405155}, + {102.244492, 13.100967}, + {102.066252, 12.620297}, + {100.56129455566, 13.734970092773}, + {100.67390441895, 13.832473754883}, + {100.5736541748, 13.72673034668}, + {121.41059875488, 29.692611694336}, + {121.5795135498, 29.861526489258}, + {121.44630432129, 29.742050170898}, + {121.53968811035, 29.857406616211}, + {121.53007507324, 29.884872436523}, + {120.29136657715, 30.320205688477}, + {120.394363, 30.419769}, + {115.91331481934, 28.666763305664}, + {115.89683532715, 28.63655090332}, + {115.927734, 28.584366}, + {115.92292785645, 28.545913696289}, + {115.92018127441, 28.654403686523}, + {114.395142, 30.508347}, + {114.437714, 30.562592}, + {114.34913635254, 30.622329711914}, + {114.29969787598, 30.546798706055}, + {113.86573791504, 31.256790161133}, + {114.13078308105, 30.572891235352}, + {113.7654876709, 29.338302612305}, + {112.11891174316, 31.900863647461}, + {111.272964, 30.707474}, + {111.296997, 30.769272}, + {112.16697692871, 31.027450561523}, + {114.3189239502, 29.923324584961}, + {114.28596496582, 29.871139526367}, + {-75.508346557617, 45.529403686523}, + {-73.620987, 45.613632}, + {-71.255264, 46.845932}, + {-71.290146, 46.794205}, + {-71.285133, 46.768456}, + {-71.266250610352, 46.83952331543}, + {-79.248898, 43.906192}, + {-79.402756, 43.822259}, + {-79.753876, 43.786697}, + {-79.229965209961, 43.799057006836}, + {-81.673737, 43.536758}, + {-78.352432250977, 44.561233520508}, + {-79.981843, 44.70131}, + {-82.373428344727, 42.935256958008}, + {-81.803512573242, 42.991561889648}, + {-121.2801361084, 38.732986450195}, + {-121.293869, 38.858643}, + {-121.42570495605, 38.513259887695}, + {-89.683456420898, 38.528366088867}, + {-90.251175, 38.672836}, + {-90.38932800293, 38.572311401367}, + {-90.479965209961, 38.540725708008}, + {-90.283126, 38.661716}, + {-111.93901062012, 40.534744262695}, + {-111.896583, 41.667926}, + {-90.796921, 38.793411}, + {-111.93901062012, 40.562210083008}, + {-111.87858581543, 39.661331176758}, + {-111.94175720215, 40.48942565918}, + {-111.9815826416, 40.547103881836}, + {-111.97883605957, 40.614395141602}, + {-112.06672668457, 41.41227722168}, + {-111.98295593262, 41.498794555664}, + {-111.89643859863, 40.878067016602}, + {-97.57438659668, 30.457534790039}, + {-92.208938598633, 34.874038696289}, + {-90.465881, 35.988297}, + {-91.62941, 33.662797}, + {-92.714309692383, 34.49089050293}, + {-90.526657104492, 36.026229858398}, + {-91.610642, 35.645828}, + {-91.66649, 36.016275}, + {-94.166565, 36.068802}, + {-94.164505004883, 36.083908081055}, + {-94.380111694336, 35.299758911133}, + {-92.767868041992, 35.104751586914}, + {-94.197463989258, 36.258316040039}, + {-94.087600708008, 36.046829223633}, + {-83.066499, 42.336077}, + {-83.086166381836, 42.373580932617}, + {-82.985916137695, 42.563095092773}, + {-83.621063, 42.223892}, + {-83.431801, 42.818131}, + {127.39265441895, 36.340713500977}, + {128.96919250488, 35.152816772461}, + {128.641311, 35.907284}, + {127.42286682129, 36.332473754883}, + {128.96644592285, 35.10612487793}, + {128.960171, 35.185152}, + {128.690092, 35.873308}, + {128.609304, 35.862775}, + {128.59840393066, 35.854568481445}, + {128.73710632324, 35.732345581055}, + {128.6547088623, 35.883407592773}, + {126.73896789551, 37.420120239258}, + {126.66069030762, 37.604141235352}, + {126.69914245605, 37.406387329102}, + {126.714478, 37.434082}, + {126.66206359863, 37.517623901367}, + {126.68678283691, 37.424240112305}, + {126.98616027832, 37.54508972168}, + {126.675339, 37.421494}, + {126.96968078613, 37.52311706543}, + {127.0191192627, 37.50114440918}, + {127.02323913574, 37.576675415039}, + {127.05207824707, 37.556076049805}, + {127.02461242676, 37.573928833008}, + {126.88591003418, 37.638473510742}, + {-1.314719, 53.111873}, + {-1.2146759033203, 52.958908081055}, + {-1.335024, 53.398674}, + {-3.235999, 51.43407}, + {-0.04335, 51.46376}, + {-6.687699, 55.114517}, + {0.271486, 51.497938}, + {-0.036163, 51.582642}, + {-0.135269, 51.523304}, + {-1.602974, 52.841148}, + {-0.275667, 51.636538}, + {-0.508137, 51.540066}, + {-0.167681, 51.804365}, + {0.56282, 51.892776}, + {-3.906713, 51.573124}, + {-2.485134, 51.421389}, + {-1.744564, 51.594463}, + {0.271225, 51.528625}, + {0.85487365722656, 51.415328979492}, + {1.336069, 52.610521}, + {36.968447, 55.945653}, + {37.565689, 56.196442}, + {37.236099243164, 55.985641479492}, + {37.250748, 55.737991}, + {37.65495300293, 55.944442749023}, + {37.41325378418, 55.878524780273}, + {36.848475, 56.267543}, + {38.14522, 56.346818}, + {37.836227416992, 55.999374389648}, + {37.597274780273, 55.851058959961}, + {37.66777, 55.875778}, + {37.672805786133, 55.871658325195}, + {37.664356, 55.889177}, + {37.556076, 55.876036}, + {37.543362, 55.901518}, + {-73.054275512695, 41.583938598633}, + {-77.573776245117, 39.102401733398}, + {-104.94483947754, 39.683303833008}, + {-105.05332946777, 39.684677124023}, + {-77.198867797852, 38.73161315918}, + {-84.02961730957, 33.528213500977}, + {-84.603652954102, 33.433456420898}, + {-84.502029418945, 33.72184753418}, + {-84.436111450195, 33.395004272461}, + {-84.088668823242, 33.981399536133}, + {-84.077682495117, 33.694381713867}, + {-97.729568481445, 30.351791381836}, + {-85.221633911133, 32.81135559082}, + {-83.454208374023, 31.189498901367}, + {-88.079452514648, 30.64567565918}, + {-118.20671081543, 33.789138793945}, + {-118.17924499512, 33.974533081055}, + {-118.3097076416, 33.849563598633}, + {-118.36051940918, 33.905868530273}, + {-117.83180236816, 33.760299682617}, + {-117.82905578613, 34.11735534668}, + {-117.98973083496, 33.74382019043}, + {-118.14903259277, 34.069290161133}, + {-90.273971557617, 38.576431274414}, + {-90.33576965332, 38.510513305664}, + {-70.740280151367, -33.62434387207}, + {-70.530926, -33.460326}, + {-70.620803833008, -33.537826538086}, + {-70.596084594727, -33.427963256836}, + {-70.14008, -20.218869}, + {-70.398330688477, -23.662490844727}, + {-70.400403, -23.560494}, + {-73.065856, -36.793403}, + {-70.335159301758, -27.38410949707}, + {-73.037796020508, -36.883163452148}, + {-72.026504, -34.412277}, + {-71.648026, -33.463669}, + {-71.560134887695, -33.020095825195}, + {-71.384353637695, -30.211715698242}, + {-72.356643676758, -37.475051879883}, + {-71.07536315918, -27.874374389648}, + {-70.306457, -18.49112}, + {-70.659255981445, -33.64631652832}, + {-70.101026, -20.274058}, + {-72.586931, -38.732908}, + {-111.95137023926, 40.762710571289}, + {-112.805763, 41.963322}, + {-110.56983947754, 38.900527954102}, + {-111.90467834473, 40.600662231445}, + {-111.81678771973, 40.431747436523}, + {-111.64237976074, 40.239486694336}, + {-111.807317, 40.715236}, + {-95.109183, 36.474432}, + {-95.966262817383, 36.119613647461}, + {-95.929183959961, 35.243453979492}, + {-94.92764, 35.995786}, + {-95.791854858398, 36.053695678711}, + {-96.104739, 36.093706}, + {-95.92127, 36.081688}, + {-97.632614, 34.858383}, + {-98.405228, 34.687958}, + {-97.846298217773, 35.103378295898}, + {-97.538288, 35.507243}, + {-96.918019, 35.22458}, + {172.627487, -43.636093}, + {142.87239074707, -5.9758758544922}, + {178.42277526855, -18.14323425293}, + {178.36921691895, -17.710647583008}, + {178.456421, -18.129501}, + {30.027694702148, 31.266403198242}, + {31.350173950195, 30.104598999023}, + {30.046234, 31.288376}, + {31.289749145508, 30.067520141602}, + {30.97526550293, 30.007095336914}, + {33.826217651367, 27.184982299805}, + {29.968643188477, 31.244430541992}, + {29.908312, 31.18456}, + {30.920333862305, 30.073013305664}, + {31.185654, 30.008469}, + {30.913467, 30.543366}, + {31.186752319336, 30.721206665039}, + {15.009384155273, 47.425918579102}, + {14.347457885742, 46.618423461914}, + {14.312439, 46.623917}, + {13.910751342773, 46.692581176758}, + {13.395767211914, 47.373733520508}, + {13.261642, 47.844658}, + {13.094101, 47.175064}, + {16.362075805664, 48.204574584961}, + {16.403274536133, 48.22380065918}, + {16.475376, 48.262046}, + {16.438980102539, 48.249893188477}, + {16.408336, 48.269346}, + {16.406021118164, 48.263626098633}, + {16.424998, 48.239281}, + {16.36409, 48.204025}, + {16.367298, 48.235708}, + {16.329116821289, 48.197708129883}, + {16.335297, 48.24028}, + {-121.984909, 37.544678}, + {-119.67063903809, 37.019119262695}, + {-121.51359558105, 38.569564819336}, + {-121.46965, 38.557663}, + {-104.83222961426, 38.805770874023}, + {-121.50673, 37.745592}, + {-105.237939, 40.009559}, + {-104.674988, 39.847412}, + {-104.89128112793, 39.643478393555}, + {-80.825729370117, 34.011611938477}, + {-80.36018371582, 33.864669799805}, + {-79.76692199707, 33.679275512695}, + {-77.192001342773, 38.737106323242}, + {-78.077774047852, 39.080429077148}, + {-79.62272644043, 37.181167602539}, + {-79.74494934082, 37.506637573242}, + {-73.833618, 42.703171}, + {-75.891494750977, 42.329635620117}, + {-73.902397, 42.713242}, + {-78.640367, 43.226853}, + {10.947189331055, 43.941879272461}, + {11.279687, 43.781204}, + {11.249203, 43.788472}, + {11.087265014648, 43.889694213867}, + {11.240368, 43.783676}, + {11.11322, 43.791406}, + {11.175155639648, 43.803176879883}, + {11.190908, 43.502103}, + {11.400964, 43.772376}, + {11.20988, 43.556965}, + {10.518598, 43.927148}, + {12.564926147461, 42.56721496582}, + {10.561523, 43.206711}, + {10.937815, 42.688134}, + {10.495898, 43.32138}, + {10.344126, 43.552628}, + {10.477786, 43.324403}, + {10.867772, 43.706648}, + {14.483413696289, 40.864334106445}, + {11.949313, 57.700637}, + {11.954269, 57.699509}, + {16.367568969727, 56.83708190918}, + {15.753707885742, 59.405136108398}, + {13.07788, 55.645642}, + {16.109848, 59.184952}, + {16.218038, 59.752704}, + {12.66242980957, 56.085891723633}, + {18.071823120117, 59.318618774414}, + {12.843701, 56.162148}, + {14.204229, 57.773634}, + {11.915324, 57.687633}, + {11.896133422852, 57.677536010742}, + {17.087632, 61.739731}, + {17.897092, 59.371289}, + {18.040924, 59.333725}, + {11.976516, 57.678818}, + {12.033119, 57.633591}, + {13.235753, 55.693843}, + {11.975784301758, 57.680282592773}, + {13.081443, 55.638673}, + {13.28727722168, 55.459671020508}, + {12.316360473633, 58.382034301758}, + {17.717857, 59.210129}, + {12.313613891602, 58.354568481445}, + {130.78193664551, 32.866287231445}, + {140.886269, 38.265381}, + {140.907211, 38.456039}, + {140.897184, 38.240079}, + {140.87013244629, 38.27018737793}, + {140.76988220215, 38.185043334961}, + {141.302719, 38.564758}, + {140.999222, 38.343658}, + {140.931931, 38.182068}, + {139.770126, 35.708313}, + {139.7110748291, 35.707626342773}, + {139.707642, 35.715866}, + {139.752274, 35.723419}, + {139.77149963379, 35.717239379883}, + {139.70970153809, 35.725479125977}, + {139.703522, 35.765991}, + {136.855545, 35.209122}, + {139.69459533691, 35.688400268555}, + {136.828079, 35.183945}, + {136.45362854004, 34.897384643555}, + {136.63764953613, 35.185775756836}, + {136.42890930176, 34.654312133789}, + {136.577225, 34.972916}, + {136.705704, 35.02388}, + {136.62803649902, 34.953689575195}, + {-3.967094, 55.80986}, + {-4.003143, 55.871315}, + {-3.1125640869141, 53.403854370117}, + {-2.7967071533203, 53.364028930664}, + {-1.018624, 51.46654}, + {-1.0869598388672, 51.265640258789}, + {-1.153859, 51.460255}, + {-2.635002, 53.328323}, + {-2.020386, 52.569031}, + {-2.276916, 52.654724}, + {-2.765396, 52.68013}, + {-2.0977020263672, 52.553787231445}, + {-1.7804718017578, 52.846298217773}, + {-3.5657501220703, 51.545791625977}, + {-1.7365264892578, 52.390365600586}, + {-2.768692, 52.402245}, + {-4.263382, 55.858612}, + {-4.2839813232422, 55.849685668945}, + {-4.2345428466797, 55.852432250977}, + {-2.452183, 53.54496}, + {-2.0688629150391, 53.38737487793}, + {-79.309777, 45.136661}, + {-81.231474, 42.986693}, + {-81.240882, 42.976355}, + {-77.606049, 44.100252}, + {-79.913286, 43.225801}, + {-80.256991, 43.824659}, + {-79.389892, 43.184109}, + {-69.531784057617, 48.249893188477}, + {-70.841903686523, 48.606948852539}, + {-76.487503051758, 44.228897094727}, + {-75.596237182617, 44.96223449707}, + {-74.595108032227, 45.506057739258}, + {-71.925458, 45.380752}, + {-65.462502, 47.023069}, + {-64.810409545898, 46.102066040039}, + {-64.819183, 46.094042}, + {-60.08903503418, 46.247634887695}, + {-61.961517, 45.609055}, + {-63.787307739258, 44.83039855957}, + {-63.683052, 44.777729}, + {-73.180533, 45.568917}, + {-97.380752563477, 18.376693725586}, + {-96.109085083008, 19.14436340332}, + {-93.080978, 16.733894}, + {-99.141311645508, 19.758224487305}, + {-99.185256958008, 19.622268676758}, + {-99.163284301758, 19.442367553711}, + {-99.242935180664, 19.425888061523}, + {-99.218215942383, 19.45198059082}, + {-99.186630249023, 19.398422241211}, + {-99.19075012207, 19.428634643555}, + {-99.171524047852, 19.399795532227}, + {-99.197616577148, 19.379196166992}, + {-99.240188598633, 19.390182495117}, + {-99.160537719727, 19.427261352539}, + {-99.152297973633, 19.425888061523}, + {-99.172897338867, 19.436874389648}, + {-99.182510375977, 19.369583129883}, + {-99.23469543457, 19.498672485352}, + {-99.249801635742, 19.56184387207}, + {114.31755065918, 4.5902252197266}, + {114.920347, 4.907295}, + {114.933472, 4.897842}, + {114.83253479004, 4.9376678466797}, + {114.93278503418, 4.9019622802734}, + {115.20881652832, 4.7797393798828}, + {172.5904083252, -43.47770690918}, + {172.145615, -43.510342}, + {168.996094, -44.88547}, + {168.806648, -44.953995}, + {172.585267, -43.529158}, + {172.40776062012, -43.501052856445}, + {174.77806091309, -41.305160522461}, + {175.60478210449, -40.354843139648}, + {174.784927, -41.27449}, + {175.794754, -39.116135}, + {175.622635, -40.368233}, + {178.30055236816, -37.88703918457}, + {175.769348, -37.414627}, + {176.39854431152, -37.844467163086}, + {175.985458, -38.615158}, + {3.049263, 50.644108}, + {-0.77659606933594, 43.330764770508}, + {2.204853, 45.203961}, + {1.3822174072266, 43.630142211914}, + {1.437284, 43.573338}, + {-1.479893, 48.827191}, + {6.2354278564453, 46.384963989258}, + {2.9779815673828, 44.618911743164}, + {3.7277984619141, 45.852127075195}, + {2.9491424560547, 48.825302124023}, + {0.27946472167969, 49.301834106445}, + {4.954272, 44.577809}, + {1.851196, 47.801514}, + {3.1262969970703, 50.730056762695}, + {77.50373840332, 17.912521362305}, + {76.346054077148, 15.341720581055}, + {76.854858, 17.335053}, + {76.366653442383, 15.260696411133}, + {76.734695, 17.299347}, + {77.422714233398, 13.081283569336}, + {76.82258605957, 12.560806274414}, + {77.483139038086, 13.126602172852}, + {77.652053833008, 12.787399291992}, + {74.864273071289, 12.90412902832}, + {74.805221557617, 13.339462280273}, + {74.704971313477, 13.527603149414}, + {76.877517700195, 13.729476928711}, + {76.629639, 13.387527}, + {75.725783, 13.418198}, + {77.104110717773, 13.338088989258}, + {77.603302, 13.042831}, + {75.509719848633, 12.731094360352}, + {76.038436889648, 12.84782409668}, + {77.663040161133, 13.005752563477}, + {77.618319, 12.890575}, + {77.678146, 12.984123}, + {77.642323, 12.963141}, + {77.693253, 12.977992}, + {2.3847198486328, 13.406753540039}, + {1.2119293212891, 6.1283111572266}, + {1.1803436279297, 6.6336822509766}, + {7.1102142333984, 13.505630493164}, + {1.239655, 6.2114}, + {1.089249, 6.270218}, + {1.1927032470703, 7.9190826416016}, + {2.395574, 6.366262}, + {1.1569976806641, 7.4631500244141}, + {2.1581268310547, 6.6693878173828}, + {57.480805, -20.196117}, + {57.683029174805, -20.278701782227}, + {57.47406, -20.239334}, + {57.468796, -20.216435}, + {-1.760788, 4.897842}, + {-13.239212036133, 8.4862518310547}, + {-10.797500610352, 6.4606475830078}, + {-2.0935821533203, 5.4265594482422}, + {0.42984, 5.995789}, + {-0.21903991699219, 5.5693817138672}, + {-0.11192321777344, 5.6998443603516}, + {-0.168482, 5.707423}, + {1.9782257080078, 41.44660949707}, + {0.680008, 40.639572}, + {2.0743560791016, 41.323013305664}, + {1.2050628662109, 41.921768188477}, + {0.83564758300781, 41.020889282227}, + {1.112595, 41.164169}, + {1.02998, 41.081262}, + {-0.248703, 39.084961}, + {0.059032, 40.179764}, + {-0.50468444824219, 38.38005065918}, + {-0.535812, 38.356247}, + {-0.39482116699219, 39.389419555664}, + {-0.42228698730469, 39.573440551758}, + {-0.46760559082031, 39.379806518555}, + {-0.16273498535156, 38.553085327148}, + {-0.147285, 38.570938}, + {-0.35636901855469, 39.475936889648}, + {-1.1844635009766, 37.990036010742}, + {-0.77384948730469, 39.43473815918}, + {-0.67085266113281, 39.471817016602}, + {-0.871811, 38.090744}, + {-0.78208923339844, 38.237228393555}, + {128.68354797363, 35.224227905273}, + {126.940803, 35.928828}, + {127.400408, 35.790466}, + {127.135625, 35.833144}, + {128.7425994873, 36.66618347168}, + {128.338175, 36.15753}, + {128.140817, 36.583958}, + {128.22761535645, 36.408004760742}, + {128.14474, 35.451403}, + {128.036696, 34.802464}, + {128.085047, 34.933542}, + {128.223963, 35.223483}, + {127.06993103027, 37.509384155273}, + {127.03147888184, 37.499771118164}, + {127.02049255371, 37.503890991211}, + {127.04933166504, 37.487411499023}, + {127.03559875488, 37.499771118164}, + {127.69477844238, 37.116622924805}, + {127.5904083252, 36.300888061523}, + {128.20289611816, 37.138595581055}, + {128.119325, 37.217625}, + {128.046608, 37.245541}, + {127.930494, 37.330592}, + {127.04109191895, 37.660446166992}, + {75.734939575195, 26.899337768555}, + {76.56852722168, 27.062759399414}, + {77.553176879883, 34.143447875977}, + {74.847107, 32.718658}, + {80.252724, 13.059654}, + {80.286026000977, 13.119735717773}, + {80.292892, 13.097305}, + {80.15019, 13.038891}, + {80.038144, 13.116306}, + {80.273666381836, 13.081283569336}, + {80.233154, 13.036308}, + {80.118484, 12.959576}, + {72.540664672852, 22.927780151367}, + {79.435958862305, 13.246078491211}, + {79.891891479492, 13.316116333008}, + {74.113082885742, 18.525009155273}, + {73.757400512695, 18.597793579102}, + {73.036422729492, 20.741500854492}, + {73.942402, 18.501859}, + {73.817196, 18.595162}, + {73.84964, 18.503036}, + {77.815475463867, 19.126510620117}, + {77.419962, 20.453118}, + {20.016402, 49.961701}, + {19.534378051758, 49.639663696289}, + {18.938369750977, 50.352401733398}, + {19.211197, 50.326767}, + {19.004287719727, 50.271377563477}, + {18.921890258789, 50.35514831543}, + {-43.348617553711, -22.738265991211}, + {-43.627395629883, -22.513046264648}, + {-46.697817, -23.574434}, + {-46.713717, -23.639669}, + {-46.774978637695, -23.61442565918}, + {-46.780471801758, -23.637771606445}, + {-46.896177, -23.537591}, + {-47.136083, -23.524023}, + {-46.787866, -23.72505}, + {-46.741733, -23.656671}, + {-46.709275, -23.752012}, + {-43.413959, -22.813176}, + {-43.377456665039, -22.84538269043}, + {-43.329386, -22.840708}, + {-43.404922485352, -22.859115600586}, + {-43.236923, -22.834396}, + {-43.501052856445, -22.881088256836}, + {-43.3119, -22.827425}, + {-43.254087, -22.842803}, + {-47.022171020508, -23.006057739258}, + {-43.206989, -22.805042}, + {-46.809310913086, -23.585586547852}, + {-46.753005981445, -23.501815795898}, + {-76.531909, 36.938526}, + {-70.949495, 42.475929}, + {-71.109695, 42.268524}, + {-71.391763, 42.290242}, + {-71.421432495117, 42.661972045898}, + {-71.110049, 42.43141}, + {-71.318435668945, 42.630386352539}, + {-71.10969543457, 42.341995239258}, + {-71.084976196289, 42.372207641602}, + {-71.017673, 42.383336}, + {-71.171454, 42.244348}, + {-75.279006958008, 39.751968383789}, + {-74.933095, 38.989049}, + {-75.534086, 39.12915}, + {-75.132064819336, 39.411392211914}, + {-74.883284, 40.030157}, + {-75.473181, 40.630319}, + {-75.04775, 40.032957}, + {-75.104749, 39.819047}, + {-74.775732, 40.228843}, + {-75.397109985352, 40.144729614258}, + {139.513779, 35.850449}, + {139.54765319824, 35.858688354492}, + {139.843216, 35.876236}, + {139.830551, 35.885239}, + {139.67948913574, 36.081161499023}, + {139.711349, 35.943283}, + {139.694595, 35.871735}, + {140.035858, 35.871735}, + {139.9129486084, 35.817489624023}, + {139.956894, 35.894394}, + {140.22743225098, 35.718612670898}, + {140.354952, 35.783157}, + {140.125809, 35.803757}, + {140.121161, 35.721359}, + {139.951126, 35.438187}, + {139.972, 35.370827}, + {135.592575, 34.700775}, + {135.635147, 34.719467}, + {135.581589, 34.680748}, + {135.561676, 34.625473}, + {135.55274963379, 34.63508605957}, + {135.767326, 34.500246}, + {135.70930480957, 34.567794799805}, + {135.29319763184, 34.265670776367}, + {135.304183, 34.199753}, + {30.641555786133, 50.41145324707}, + {30.618721, 50.454073}, + {30.601092, 50.490338}, + {30.384293, 50.428391}, + {30.500106811523, 50.422439575195}, + {30.43830871582, 50.437545776367}, + {30.40535, 50.412483}, + {30.485000610352, 50.507583618164}, + {30.53581237793, 50.414199829102}, + {30.483627, 50.39827}, + {30.386123657227, 50.456771850586}, + {30.561904907227, 50.425186157227}, + {30.401229858398, 50.408706665039}, + {30.519333, 50.43869}, + {30.561928, 50.449582}, + {30.517273, 50.419006}, + {32.014846801758, 46.97135925293}, + {30.744552612305, 46.464614868164}, + {30.761032104492, 46.424789428711}, + {30.723218, 46.398987}, + {30.729446411133, 46.409683227539}, + {30.655289, 46.450882}, + {30.728073120117, 46.450881958008}, + {30.721206665039, 46.430282592773}, + {121.476974, 31.25267}, + {121.45042419434, 31.255416870117}, + {121.48063659668, 31.148300170898}, + {121.433945, 31.245255}, + {121.42158508301, 31.01921081543}, + {121.5177154541, 31.050796508789}, + {121.50947570801, 31.01921081543}, + {121.42570495605, 31.291122436523}, + {121.4119720459, 31.16340637207}, + {121.46278381348, 31.340560913086}, + {121.26914978027, 31.446304321289}, + {121.491194, 31.096115}, + {121.551018, 31.077919}, + {121.48612976074, 31.227951049805}, + {121.35292053223, 30.75553894043}, + {121.641655, 31.304855}, + {121.47239685059, 31.236190795898}, + {121.54243469238, 31.210098266602}, + {121.62208557129, 31.15104675293}, + {121.62056, 31.207352}, + {121.60423278809, 31.245803833008}, + {121.43119812012, 31.344680786133}, + {121.5802, 31.183319}, + {121.55342102051, 31.199111938477}, + {-51.626815795898, -29.957656860352}, + {-51.165762, -30.076879}, + {-51.229012, -30.031145}, + {-50.927644, -28.500808}, + {-48.059006, -16.025162}, + {-48.144086, -15.802862}, + {-47.977134, -16.083692}, + {-47.887344360352, -15.793533325195}, + {-47.88228, -15.761948}, + {-49.233756, -16.723367}, + {-61.933364868164, -10.921096801758}, + {-51.087444, -29.926698}, + {-55.778037, -29.786928}, + {-48.335719, -10.343426}, + {-56.074711, -15.578703}, + {-67.826156616211, -9.9707794189453}, + {-61.433584, -11.42773}, + {-43.948745727539, -19.924392700195}, + {100.289813, 16.819766}, + {100.14518737793, 16.434860229492}, + {99.63020324707, 13.447952270508}, + {99.466781616211, 13.548202514648}, + {99.54231262207, 14.039840698242}, + {99.759292602539, 13.943710327148}, + {99.590377807617, 13.773422241211}, + {100.10673522949, 14.475173950195}, + {99.848556518555, 14.344711303711}, + {100.03944396973, 13.820114135742}, + {100.2481842041, 13.590774536133}, + {100.30448913574, 13.697891235352}, + {100.26741027832, 13.548202514648}, + {99.826583862305, 12.733840942383}, + {99.966659545898, 12.537460327148}, + {98.808975219727, 8.1470489501953}, + {98.917539, 8.062689}, + {98.273391723633, 8.4903717041016}, + {99.318466186523, 9.1358184814453}, + {99.117965698242, 10.548934936523}, + {99.590377807617, 7.5592803955078}, + {100.14518737793, 7.6636505126953}, + {101.3111114502, 6.4867401123047}, + {101.58714294434, 6.3603973388672}, + {-74.608840942383, 45.083084106445}, + {-74.342422485352, 45.846633911133}, + {-76.893997192383, 45.246505737305}, + {-74.657606, 45.513739}, + {-76.992807, 45.768753}, + {-64.989303, 46.716581}, + {-65.671508, 46.946327}, + {-67.732772827148, 46.684341430664}, + {-64.620896, 44.192162}, + {-63.537368774414, 44.92790222168}, + {-64.115524291992, 46.799697875977}, + {-52.756034, 47.535641}, + {-52.732315063477, 47.563247680664}, + {-113.97148132324, 51.077499389648}, + {-75.846176147461, 45.522537231445}, + {-71.068743, 46.81769}, + {-71.664505004883, 48.473739624023}, + {52.548294, 29.601517}, + {52.604065, 29.545746}, + {53.635940551758, 28.949661254883}, + {51.600723, 30.656662}, + {51.567612, 30.598068}, + {51.072464, 28.718033}, + {50.50621, 29.574165}, + {48.563396, 34.961929}, + {46.504440307617, 34.801254272461}, + {46.548386, 33.779251}, + {49.499588, 33.924065}, + {45.871353149414, 35.994644165039}, + {50.177994, 37.166061}, + {53.792888, 36.730728}, + {55.20299, 37.261817}, + {55.502243041992, 37.387161254883}, + {51.394729614258, 35.647201538086}, + {51.379623413086, 35.700759887695}, + {51.364436, 35.710615}, + {51.449661, 35.780144}, + {51.403275, 35.808945}, + {54.541798, 35.214272}, + {50.570755004883, 34.530715942383}, + {50.984115600586, 35.790023803711}, + {8.072205, 47.246532}, + {9.5272064208984, 46.755752563477}, + {8.9545440673828, 46.005935668945}, + {8.1140899658203, 47.331161499023}, + {7.1692657470703, 46.200942993164}, + {6.6432952880859, 46.784591674805}, + {13.371047973633, 49.741287231445}, + {13.406753540039, 49.748153686523}, + {14.722366333008, 48.760757446289}, + {14.677047729492, 49.411697387695}, + {77.060165405273, 28.63655090332}, + {77.209854, 28.5466}, + {77.291428, 28.537125}, + {77.373275756836, 28.555526733398}, + {77.093124389648, 28.471755981445}, + {77.202988, 28.519135}, + {72.81120300293, 18.971328735352}, + {73.022689819336, 19.041366577148}, + {72.833176, 19.066544}, + {72.851028442383, 19.164962768555}, + {72.853775024414, 19.237747192383}, + {72.827682495117, 18.975448608398}, + {72.826309204102, 19.01252746582}, + {75.824203491211, 30.886001586914}, + {75.795364379883, 26.882858276367}, + {75.796737670898, 26.886978149414}, + {72.546157836914, 23.085708618164}, + {72.123184204102, 21.852493286133}, + {72.835922241211, 21.205673217773}, + {76.977767944336, 29.574508666992}, + {76.362533569336, 29.205093383789}, + {22.301559, 56.312485}, + {22.222595, 56.226654}, + {23.933029174805, 54.907608032227}, + {25.552139282227, 54.591751098633}, + {25.348892, 54.775772}, + {25.276107788086, 54.641189575195}, + {24.141083, 54.308624}, + {23.945388793945, 54.856796264648}, + {23.050346, 54.642906}, + {25.261001586914, 54.735946655273}, + {24.832534790039, 54.545059204102}, + {25.351638793945, 54.979019165039}, + {25.271987915039, 54.686508178711}, + {24.115676879883, 55.757675170898}, + {23.307724, 55.941238}, + {21.207873, 55.942359}, + {11.418227, 44.711953}, + {9.5052337646484, 0.31654357910156}, + {2.851639, 36.6782}, + {80.220108032227, 6.0335540771484}, + {78.396652, 17.417038}, + {14.93248, 51.768265}, + {153.03062438965, -27.502212524414}, + {73.731307983398, 24.583969116211}, + {-9.600906, 30.430069}, + {-46.457607, -23.984642}, + {-3.1029510498047, 42.938003540039}, + {32.524338, 0.328686}, + {12.977294, 55.615578}, + {17.94084, 59.434733}, + {78.081894, 27.91008}, + {10.612793, 45.459366}, + {11.382994, 47.265969}, + {117.10945129395, 36.884536743164}, + {15.065232, 37.513047}, + {27.105331420898, -26.705703735352}, + {125.575579, -8.555233}, + {131.90391540527, 43.093185424805}, + {9.0891265869141, 45.416793823242}, + {51.376004, 35.708192}, + {-2.387198, 53.471699}, + {-74.045563, 4.7295}, + {17.095148, 61.284348}, + {9.195316, 49.38376}, + {77.325210571289, 28.556900024414}, + {102.539012, 15.939213}, + {-1.934967, 46.71135}, + {-4.221497, 55.857239}, + {8.765865, 47.425182}, + {21.536636352539, 60.685043334961}, + {3.90538, 43.660976}, + {9.51088, 45.229569}, + {-82.16194152832, 26.705703735352}, + {121.53419494629, 29.864273071289}, + {9.7881317138672, 49.885482788086}, + {38.956833, 45.024948}, + {114.128036, 22.502747}, + {-91.836776733398, 18.63899230957}, + {6.450374, 51.282198}, + {75.630569458008, 21.833267211914}, + {13.781252, 52.320505}, + {0.037765502929688, 40.041732788086}, + {24.739234, 59.42036}, + {20.47728, 44.786453}, + {1.382217, 41.143112}, + {6.18342, 52.194058}, + {91.81755065918, 22.350997924805}, + {104.00276184082, 30.556411743164}, + {-5.6531524658203, 43.518905639648}, + {-1.883923, 52.528154}, + {76.37077331543, 31.289749145508}, + {41.61003112793, 55.671157836914}, + {58.909244, 36.141651}, + {-96.023941, 41.245193}, + {5.07568, 51.668015}, + {85.263519, 27.662888}, + {6.3246917724609, 6.2766265869141}, + {8.6634063720703, 50.018692016602}, + {18.983397, 47.424898}, + {-1.38096, 50.926343}, + {-3.052788, 55.539904}, + {120.38887023926, 22.651748657227}, + {120.899734, 32.054672}, + {0.582048, 43.632889}, + {9.0630340576172, 48.560256958008}, + {67.073144, 24.940894}, + {-95.664138793945, 29.946670532227}, + {-77.321090698242, 40.544357299805}, + {0.695875, 51.226252}, + {125.30113220215, 43.821029663086}, + {103.780716, 1.295276}, + {139.84840393066, 36.210250854492}, + {23.600693, 38.459702}, + {-3.458614, 51.809007}, + {26.109695, 44.465446}, + {-1.624979, 47.578272}, + {30.878677, -29.905014}, + {20.696869, 44.276962}, + {36.715621948242, -3.4476470947266}, + {99.272123, 18.323928}, + {4.632514, 46.949362}, + {-2.593117, 53.254166}, + {-3.987804, 55.848771}, + {121.51084899902, 31.267776489258}, + {-4.4556427001953, 36.725234985352}, + {21.722033, 39.611893}, + {38.268814086914, 46.703567504883}, + {23.887024, 40.389862}, + {-44.007797241211, -19.951858520508}, + {3.011221, 45.705731}, + {22.881088256836, 56.555557250977}, + {-4.024194, 40.645067}, + {24.130038, 35.468509}, + {-80.26371, 40.846481}, + {-1.7626190185547, 42.58918762207}, + {22.860489, 56.901627}, + {-7.582626, 33.30574}, + {-77.728958129883, 39.787673950195}, + {109.59480285645, 23.098068237305}, + {5.044263, 47.317611}, + {5.976105, 50.788422}, + {-84.455337524414, 33.638076782227}, + {-3.1441497802734, 48.064498901367}, + {-97.746048, 30.360718}, + {-1.481369, 52.410141}, + {-8.772239, 42.204666}, + {-1.931412, 54.945119}, + {-77.002487182617, 38.360824584961}, + {-74.527132, 41.172783}, + {-112.26448, 33.824845}, + {-117.33741760254, 47.71842956543}, + {-2.5083160400391, 42.013778686523}, + {-104.88166809082, 39.565200805664}, + {17.331795, 48.974517}, + {11.534957885742, 48.071365356445}, + {1.055187, 45.893262}, + {37.327886, 44.885341}, + {3.808009, 50.189487}, + {-11.842575073242, 10.18913269043}, + {136.1693572998, 36.037216186523}, + {4.220268, 45.247123}, + {100.149202, 18.127562}, + {16.285331, 49.264686}, + {-0.778382, 44.878821}, + {101.458801, 0.567044}, + {-111.88682556152, 33.559799194336}, + {41.947860717773, 45.02815246582}, + {114.21867370605, 22.392196655273}, + {9.9323272705078, 54.020462036133}, + {6.189574, 51.820205}, + {-15.606766, 27.740479}, + {27.929306030273, 43.216781616211}, + {73.72182, 19.984818}, + {-112.337952, 34.582901}, + {24.953384399414, 60.175552368164}, + {1.345139, 43.624649}, + {6.201089, 53.132404}, + {-81.50276184082, 28.376998901367}, + {21.57096862793, 38.356704711914}, + {0.15174865722656, 45.63102722168}, + {47.526168823242, -18.917770385742}, + {8.946767, 44.417613}, + {3.5822296142578, 51.464767456055}, + {-47.798080444336, -15.827865600586}, + {23.832321, 54.900742}, + {21.130142211914, 55.713729858398}, + {25.090562, 54.778672}, + {6.819077, 51.429749}, + {6.9097137451172, 51.446914672852}, + {6.449661, 51.199379}, + {7.198105, 50.857086}, + {7.206345, 50.628433}, + {6.767578, 51.27388}, + {6.739894, 51.214853}, + {7.640893, 50.855223}, + {7.1212005615234, 50.819320678711}, + {7.082376, 50.932786}, + {7.0655, 50.978128}, + {9.213409, 48.797836}, + {100.14793395996, 15.39665222168}, + {100.0902557373, 13.81462097168}, + {101.01722717285, 13.328475952148}, + {100.04219055176, 9.4736480712891}, + {103.07304382324, 14.977798461914}, + {100.61622619629, 13.857192993164}, + {100.67115783691, 13.736343383789}, + {100.81260681152, 13.725357055664}, + {100.57090759277, 13.712997436523}, + {100.57502746582, 13.794021606445}, + {100.661954, 13.762373}, + {100.7137298584, 13.745956420898}, + {100.51460266113, 13.98078918457}, + {100.41160583496, 13.883285522461}, + {100.49125671387, 13.88053894043}, + {100.57090759277, 13.765182495117}, + {100.54618835449, 13.912124633789}, + {100.57090759277, 14.071426391602}, + {100.56816101074, 13.755569458008}, + {100.71098327637, 13.942337036133}, + {100.61210632324, 14.34196472168}, + {100.5997467041, 13.828353881836}, + {-1.1940765380859, 53.149795532227}, + {-0.80268859863281, 51.494979858398}, + {1.2407684326172, 52.026443481445}, + {-1.2160491943359, 52.568893432617}, + {-1.1556243896484, 52.35466003418}, + {-0.15586853027344, 51.511459350586}, + {-0.190201, 51.515579}, + {-2.7761077880859, 51.420822143555}, + {-2.894293, 51.340136}, + {-3.215155, 50.79379}, + {-4.324199, 55.452805}, + {-4.545593, 55.60524}, + {-4.277389, 55.756577}, + {-0.32615661621094, 53.767776489258}, + {-1.3890838623047, 54.799118041992}, + {-2.747269, 54.935172}, + {-2.20372, 53.865555}, + {-1.511078, 53.903732}, + {-1.9123077392578, 53.879013061523}, + {-2.7458953857422, 51.46614074707}, + {-2.7266693115234, 51.776504516602}, + {119.94804382324, 31.84455871582}, + {120.89012145996, 32.00798034668}, + {119.37675476074, 32.365036010742}, + {119.20234680176, 34.602127075195}, + {118.77250671387, 32.093124389648}, + {118.74092102051, 32.023086547852}, + {118.88648986816, 31.885757446289}, + {119.73930358887, 32.76741027832}, + {119.18998718262, 33.565292358398}, + {119.9974822998, 31.837692260742}, + {120.3311920166, 31.705856323242}, + {120.95329284668, 31.707229614258}, + {120.32844543457, 31.563034057617}, + {120.19386291504, 36.416244506836}, + {120.18287658691, 35.95344543457}, + {119.15016174316, 36.736221313477}, + {120.38200378418, 36.130599975586}, + {120.3050994873, 36.070175170898}, + {117.01057434082, 36.668930053711}, + {117.0092010498, 35.695266723633}, + {120.09223937988, 36.311874389648}, + {117.25639343262, 31.839065551758}, + {117.91282653809, 31.079635620117}, + {46.758499, 24.615555}, + {39.118881, 21.558609}, + {39.110641479492, 21.590194702148}, + {39.110641479492, 21.580581665039}, + {50.035171508789, 26.407699584961}, + {45.99494934082, 25.137405395508}, + {50.021438598633, 26.738662719727}, + {50.102462768555, 26.411819458008}, + {50.203743, 26.263504}, + {49.943161010742, 26.663131713867}, + {50.215072631836, 26.322555541992}, + {43.965225219727, 26.312942504883}, + {49.58610534668, 25.379104614258}, + {41.060028, 19.537125}, + {41.66633605957, 20.521774291992}, + {37.440719604492, 27.813949584961}, + {42.556228637695, 16.918258666992}, + {40.510483, 24.882774}, + {46.681732, 24.787079}, + {46.671295, 24.77211}, + {46.677474975586, 24.677352905273}, + {78.487014770508, 25.575485229492}, + {79.09538269043, 10.732955932617}, + {78.077774047852, 10.956802368164}, + {77.428207397461, 8.1855010986328}, + {77.788009643555, 9.0273284912109}, + {77.364578, 9.854507}, + {79.080963, 9.282074}, + {79.148941040039, 12.934341430664}, + {78.710403, 12.771378}, + {78.039322, 8.586502}, + {77.937698364258, 8.5013580322266}, + {78.686141967773, 10.78239440918}, + {79.800796, 10.929337}, + {79.72229, 11.233521}, + {77.194747924805, 8.3997344970703}, + {79.317855834961, 12.033462524414}, + {77.883316, 12.714615}, + {77.789841, 11.270371}, + {79.755935668945, 11.916732788086}, + {77.623444, 11.160202}, + {77.899933, 11.058426}, + {77.856674194336, 11.175155639648}, + {77.073669, 11.016998}, + {76.929016, 10.683517}, + {77.004089, 10.659714}, + {76.965408325195, 11.004867553711}, + {76.96019, 11.009811}, + {77.296371459961, 8.3599090576172}, + {78.701248, 10.796127}, + {88.412222, 22.698598}, + {88.362350463867, 22.570724487305}, + {88.432388305664, 22.57209777832}, + {76.557540893555, 31.605606079102}, + {77.149429, 31.882324}, + {76.270523, 32.093582}, + {75.94367980957, 32.099990844727}, + {88.43376159668, 22.400436401367}, + {88.510665893555, 22.805557250977}, + {80.255813598633, 13.056564331055}, + {80.251694, 13.038254}, + {80.24086, 12.985611}, + {72.65739440918, 23.060989379883}, + {72.653274536133, 23.036270141602}, + {70.037155151367, 23.118667602539}, + {72.91145324707, 20.455856323242}, + {73.187485, 22.130585}, + {73.344039916992, 22.363357543945}, + {72.624435424805, 22.952499389648}, + {73.761520385742, 18.610153198242}, + {73.878164, 18.461752}, + {74.56901550293, 18.44123840332}, + {73.161392211914, 19.215774536133}, + {73.822632, 20.020866}, + {73.731307983398, 18.658218383789}, + {73.921738, 18.50441}, + {73.918076, 18.56575}, + {73.857651, 31.227264}, + {74.01969909668, 31.259536743164}, + {74.315545, 31.480637}, + {74.233932495117, 31.62483215332}, + {-8.7993621826172, 39.74235534668}, + {-8.739624, 39.703903}, + {-9.1413116455078, 38.732986450195}, + {-9.173505, 38.672783}, + {-9.152069, 38.740768}, + {-9.1440582275391, 38.730239868164}, + {-8.555701, 41.173913}, + {-8.550987, 41.230278}, + {-8.518551, 39.450943}, + {-8.619088, 41.112503}, + {-7.4192047119141, 37.190780639648}, + {-9.131012, 38.733673}, + {-9.347305, 38.763199}, + {-8.820267, 39.743881}, + {-8.664436, 41.179161}, + {5.929871, 49.570656}, + {5.965805, 50.086899}, + {144.905392, -37.766375}, + {144.942398, -37.826614}, + {144.957984, -37.814832}, + {144.962326, -37.815435}, + {145.015844, -37.857589}, + {144.990366, -37.811356}, + {145.054537, -37.751825}, + {145.209685, -37.761847}, + {145.22483825684, -37.856826782227}, + {145.196536, -37.802461}, + {145.09437561035, -37.855453491211}, + {145.080589, -37.968437}, + {145.01747131348, -37.968063354492}, + {145.042496, -37.944717}, + {145.200856, -37.911132}, + {144.874129, -38.398595}, + {145.188309, -38.074631}, + {145.521698, -38.071518}, + {145.33058166504, -38.043594360352}, + {9.8636627197266, 51.452407836914}, + {8.553808, 52.010645}, + {9.514336, 51.301985}, + {8.440783, 51.832579}, + {8.6565399169922, 51.736679077148}, + {8.53018, 50.130848}, + {8.922594, 50.821873}, + {10.224311, 49.667817}, + {7.165146, 49.649152}, + {6.8108367919922, 49.940414428711}, + {8.470753, 49.470847}, + {9.187094, 48.785827}, + {9.239777, 48.779984}, + {8.730789, 48.678589}, + {9.634872, 48.970047}, + {-1.471024, 52.944489}, + {-5.897642, 54.583179}, + {-2.672736, 53.798197}, + {-2.910232, 53.396073}, + {-2.977982, 53.411751}, + {-2.98708, 53.651562}, + {-1.7612457275391, 53.77326965332}, + {0.15174865722656, 51.821823120117}, + {-0.176468, 51.627978}, + {-2.023937, 52.422344}, + {-2.041397, 52.540741}, + {-4.448604, 55.865651}, + {-4.2496490478516, 55.820846557617}, + {-2.997894, 53.6689}, + {0.518875, 51.392899}, + {-0.50331115722656, 51.536178588867}, + {0.338688, 51.577549}, + {-0.786665, 51.813126}, + {-1.094513, 52.641678}, + {-106.30989074707, 31.623458862305}, + {-106.44172668457, 31.677017211914}, + {-99.50798034668, 27.466506958008}, + {-106.212141, 28.452504}, + {-96.82731628418, 19.821395874023}, + {-99.499740600586, 17.554092407227}, + {-97.095108032227, 18.818893432617}, + {-99.19451, 19.580746}, + {-99.189651, 19.621994}, + {-99.176335, 19.58262}, + {-99.163284301758, 19.409408569336}, + {-99.848556518555, 19.377822875977}, + {-99.606857299805, 18.732376098633}, + {-100.16578674316, 25.782852172852}, + {-100.13832092285, 25.410690307617}, + {-100.2303314209, 25.749893188477}, + {-100.3978729248, 25.656509399414}, + {-97.876510620117, 22.29606628418}, + {-116.626739, 32.537384}, + {37.724991, 55.631847}, + {37.746048, 55.643234}, + {37.582168579102, 55.533828735352}, + {37.60139465332, 55.594253540039}, + {37.607918, 55.684204}, + {37.598398, 55.691258}, + {37.626938, 55.689011}, + {37.516250610352, 55.601119995117}, + {37.47917175293, 55.594253540039}, + {37.394027709961, 55.661544799805}, + {37.253952026367, 55.607986450195}, + {37.4366, 55.657883}, + {37.499771118164, 55.668411254883}, + {37.352828979492, 55.609359741211}, + {37.568893, 55.743485}, + {37.512817, 55.735703}, + {37.569808959961, 55.759048461914}, + {37.420120239258, 55.745315551758}, + {37.387161, 55.707378}, + {37.368634, 55.764399}, + {37.270431518555, 55.651931762695}, + {76.366653442383, 9.9323272705078}, + {78.455429077148, 17.411270141602}, + {78.49250793457, 17.441482543945}, + {78.482894897461, 17.394790649414}, + {78.395004272461, 17.511520385742}, + {78.381271362305, 17.446975708008}, + {78.381271362305, 17.445602416992}, + {78.395004, 17.44776}, + {80.836716, 17.64679}, + {79.707184, 17.908402}, + {80.126724243164, 17.250595092773}, + {77.500991821289, 13.824234008789}, + {78.522995, 17.373642}, + {78.511734008789, 17.40852355957}, + {79.577407836914, 13.34358215332}, + {79.120101928711, 13.270797729492}, + {78.412857055664, 17.444229125977}, + {78.548812866211, 17.365951538086}, + {78.569412231445, 17.322006225586}, + {78.397750854492, 17.541732788086}, + {78.405990600586, 17.492294311523}, + {78.287887573242, 17.501907348633}, + {78.495255, 17.455673}, + {-79.89737, -2.16193}, + {-79.909744262695, -2.1691131591797}, + {-78.491134643555, -0.12290954589844}, + {-78.47053527832, -0.16685485839844}, + {-79.468697, -1.000647}, + {-80.232699, -3.479745}, + {-78.033828735352, -1.4783477783203}, + {-78.453598, -0.052414}, + {-78.318099975586, -0.0048065185546875}, + {-78.542404, -0.277634}, + {-78.449936, -0.33371}, + {-77.306759, -0.688136}, + {-79.29245, -0.099564}, + {-80.475540161133, -1.0677337646484}, + {-80.726852416992, -0.95375061035156}, + {-78.96492, -2.893836}, + {-83.069686889648, 40.118637084961}, + {-83.860187, 41.071015}, + {-84.22049, 40.787158}, + {-84.435264, 40.888044}, + {-82.028378, 38.434631}, + {-81.46803, 40.492135}, + {-105.021, 38.445568}, + {-81.729374, 38.836081}, + {-76.635818481445, 39.33723449707}, + {-71.123428344727, 42.390060424805}, + {-73.407211303711, 40.716018676758}, + {-71.267623901367, 42.432632446289}, + {-97.730941772461, 30.27214050293}, + {-73.95378112793, 40.65559387207}, + {-74.176254272461, 40.625381469727}, + {-74.004592895508, 40.713272094727}, + {-74.071884155273, 40.931625366211}, + {-74.026565551758, 40.890426635742}, + {-74.01969909668, 40.838241577148}, + {-78.942947387695, 35.908126831055}, + {-76.317557, 39.9947}, + {-75.200729370117, 39.94010925293}, + {-82.164688110352, 33.562545776367}, + {-72.797470092773, 41.465835571289}, + {-81.637344360352, 41.426010131836}, + {77.308731, 28.432617}, + {77.32795715332, 28.41682434082}, + {77.355422973633, 28.591232299805}, + {77.382888793945, 28.610458374023}, + {77.34375, 28.654404}, + {77.156982, 28.682556}, + {77.274398803711, 28.633804321289}, + {77.027206420898, 28.507461547852}, + {77.107544, 28.606339}, + {77.360916137695, 28.635177612305}, + {77.242813110352, 28.539047241211}, + {77.365036010742, 28.587112426758}, + {77.051926, 28.595901}, + {77.257714, 28.546883}, + {75.895614624023, 29.360275268555}, + {76.318588256836, 28.456649780273}, + {75.870895385742, 28.753280639648}, + {76.969528198242, 29.389114379883}, + {76.675643920898, 30.744552612305}, + {76.71272277832, 30.729446411133}, + {76.817092895508, 30.65803527832}, + {76.760787963867, 30.783004760742}, + {75.343551635742, 31.495742797852}, + {75.806350708008, 30.862655639648}, + {15.972073, 53.430863}, + {16.911392211914, 52.426071166992}, + {8.6620330810547, 49.408950805664}, + {8.495865, 49.237404}, + {7.897568, 47.790909}, + {7.78862, 48.296127}, + {9.234981, 48.867015}, + {9.179382, 48.815079}, + {11.589203, 48.460693}, + {11.188888549805, 49.216690063477}, + {11.59538269043, 48.361129760742}, + {9.3871307373047, 52.320327758789}, + {9.3926239013672, 52.324447631836}, + {139.817505, 35.743332}, + {140.12168884277, 35.60188293457}, + {139.864197, 35.780411}, + {139.55863952637, 35.453567504883}, + {139.63829040527, 35.336837768555}, + {139.46800231934, 35.328598022461}, + {139.82231140137, 35.994644165039}, + {139.72068786621, 36.071548461914}, + {139.74678039551, 35.671920776367}, + {139.70008850098, 35.658187866211}, + {139.42680358887, 35.415115356445}, + {139.31007385254, 35.345077514648}, + {139.76600646973, 35.685653686523}, + {139.997177, 35.703964}, + {139.75090026855, 35.698013305664}, + {138.39546203613, 37.270431518555}, + {139.76051330566, 35.666427612305}, + {138.90495300293, 37.572555541992}, + {139.60258483887, 36.192398071289}, + {138.70719909668, 35.74333190918}, + {140.15464782715, 36.070175170898}, + {139.06288146973, 36.60026550293}, + {137.84202575684, 36.552200317383}, + {139.17549133301, 35.803756713867}, + {139.96238708496, 36.648330688477}, + {79.039077, 20.120774}, + {79.014358520508, 20.229263305664}, + {75.600357, 19.869463}, + {75.255661010742, 19.35173034668}, + {74.303970336914, 18.791427612305}, + {75.703353881836, 19.159469604492}, + {74.030685424805, 20.936508178711}, + {73.326187133789, 19.077072143555}, + {75.552291870117, 21.003799438477}, + {73.707619, 16.231613}, + {73.951584, 15.274429}, + {74.04167175293, 15.008010864258}, + {77.304611206055, 19.182815551758}, + {75.850955, 22.671686}, + {75.934066772461, 22.83576965332}, + {75.892868041992, 22.668228149414}, + {78.341445922852, 24.036026000977}, + {75.105972290039, 23.765487670898}, + {77.797622680664, 23.511428833008}, + {80.83122253418, 24.567489624023}, + {77.112350463867, 28.643417358398}, + {77.102737426758, 28.688735961914}, + {77.171144, 28.560762}, + {77.050552, 28.62196}, + {3.3419036865234, 6.5801239013672}, + {7.116394, 6.218262}, + {7.323532, 5.288315}, + {7.410965, 6.427689}, + {7.0154571533203, 4.7618865966797}, + {7.0497894287109, 4.8456573486328}, + {6.987305, 4.815674}, + {4.636917, 8.543243}, + {4.5517730712891, 7.4837493896484}, + {3.868904, 7.360153}, + {5.745163, 6.345978}, + {3.9543914794922, 7.3903656005859}, + {5.868758, 6.531143}, + {5.587692, 6.46843}, + {6.9399261474609, 8.4587860107422}, + {7.557184, 9.0261}, + {7.4343109130859, 9.0630340576172}, + {7.5318145751953, 11.71760559082}, + {7.22374, 9.173355}, + {3.390459, 6.515775}, + {3.63533, 6.467514}, + {3.331532, 6.507306}, + {3.285294, 6.595535}, + {3.2855987548828, 6.6762542724609}, + {3.3309173583984, 6.5856170654297}, + {3.3322906494141, 6.5911102294922}, + {110.670278, -6.589946}, + {110.68519592285, -6.6913604736328}, + {110.81840515137, -6.7971038818359}, + {111.055563, -7.423028}, + {110.30616760254, -7.8092193603516}, + {103.59352111816, -1.5950775146484}, + {110.419235, -7.746048}, + {106.99516296387, -6.1818695068359}, + {103.78028869629, -3.6728668212891}, + {103.76655578613, -3.7580108642578}, + {102.89726257324, -3.2773590087891}, + {104.759445, -2.977295}, + {104.241161, -3.428918}, + {104.78553771973, -2.9656219482422}, + {104.72373962402, -2.9203033447266}, + {102.26417541504, -3.8088226318359}, + {101.105942, -2.546356}, + {104.62623596191, -5.5007171630859}, + {105.20713806152, -5.3990936279297}, + {105.22773742676, -5.3716278076172}, + {105.25245666504, -5.4210662841797}, + {29.127503, 36.616058}, + {29.025879, 36.727524}, + {28.808212280273, 36.921615600586}, + {38.804397583008, 37.190780639648}, + {31.94206237793, 41.527633666992}, + {32.65754699707, 40.26008605957}, + {29.087677, 40.33287}, + {28.703842163086, 40.214767456055}, + {29.216079711914, 40.879440307617}, + {29.254531860352, 40.869827270508}, + {29.249038696289, 40.974197387695}, + {29.080123901367, 41.02912902832}, + {29.05632, 41.016312}, + {35.06217956543, 40.597915649414}, + {38.731609, 40.96184}, + {35.526351928711, 38.544845581055}, + {36.159439086914, 38.660202026367}, + {32.54009, 37.857214}, + {36.938095092773, 37.56706237793}, + {34.363567, 37.629449}, + {37.812444, 40.947657}, + {41.935501098633, 37.93098449707}, + {16.445846557617, 48.275985717773}, + {16.563949584961, 48.120803833008}, + {16.583313, 48.021652}, + {16.454086303711, 47.987594604492}, + {14.280166625977, 48.293838500977}, + {14.321365356445, 48.319931030273}, + {13.820114135742, 47.979354858398}, + {14.775925, 47.96315}, + {14.123268, 47.532692}, + {14.250641, 48.211441}, + {14.554824829102, 48.112564086914}, + {14.094772338867, 48.162002563477}, + {11.377716, 47.167054}, + {11.250343, 47.265587}, + {11.429214477539, 47.273483276367}, + {16.236072, 47.994943}, + {16.18766784668, 47.924423217773}, + {16.423874, 47.760178}, + {23.368606567383, 42.64274597168}, + {24.700698852539, 41.577072143555}, + {24.424667358398, 42.184066772461}, + {24.379348754883, 42.232131958008}, + {24.675979614258, 42.162094116211}, + {25.828170776367, 42.14973449707}, + {23.217316, 41.615639}, + {26.279983520508, 42.495803833008}, + {22.874221801758, 43.989944458008}, + {27.897720336914, 43.219528198242}, + {27.905960083008, 43.20442199707}, + {27.926008, 43.209402}, + {27.462387084961, 42.504043579102}, + {28.150406, 43.407865}, + {27.492599487305, 42.552108764648}, + {25.492401, 42.886505}, + {25.978889, 43.850555}, + {25.981979370117, 43.834762573242}, + {23.374099731445, 42.646865844727}, + {23.34114074707, 42.701797485352}, + {23.389205932617, 42.653732299805}, + {65.603153, 57.112629}, + {65.565033, 57.178345}, + {61.267318725586, 55.31135559082}, + {37.54508972168, 55.730209350586}, + {37.644291, 55.748277}, + {37.650833129883, 55.731582641602}, + {37.578048706055, 55.768661499023}, + {37.615127563477, 55.702743530273}, + {37.504208, 55.845566}, + {37.739181, 55.716019}, + {37.482602, 55.858684}, + {37.527237, 55.670471}, + {37.69889831543, 55.635452270508}, + {37.472305, 55.660515}, + {37.407760620117, 55.76042175293}, + {37.400894, 55.811626}, + {37.354202270508, 55.83869934082}, + {37.634353637695, 55.841445922852}, + {37.54508972168, 55.842819213867}, + {37.696151733398, 55.54069519043}, + {-73.447162, 45.515671}, + {-73.426878, 45.569955}, + {-75.722819, 45.344666}, + {-71.249428, 46.792831}, + {-71.290969848633, 46.794204711914}, + {-79.408846, 43.693831}, + {-79.463882, 43.705673}, + {-79.539472, 43.77232}, + {-79.736195, 43.734598}, + {-79.405076, 43.705159}, + {-79.27405, 43.858067}, + {-79.422666, 43.774572}, + {-79.422226, 43.726273}, + {-79.308216, 43.682948}, + {-79.62774, 43.638666}, + {-79.586069, 43.618156}, + {-79.623167, 43.708291}, + {-79.900782, 43.341763}, + {-79.839706420898, 43.602676391602}, + {-80.805130004883, 46.614303588867}, + {-106.624234, 35.093961}, + {-106.590525, 35.146686}, + {-106.54335021973, 35.130844116211}, + {-105.964165, 35.676813}, + {-106.57218933105, 31.847305297852}, + {-105.67268371582, 33.312606811523}, + {-122.44194030762, 37.782669067383}, + {-103.501375, 33.310884}, + {-122.46391296387, 37.785415649414}, + {-122.399301, 37.619247}, + {-121.905897, 38.237229}, + {-122.44468688965, 38.19465637207}, + {-122.071609, 38.258514}, + {-121.856863, 37.380035}, + {-121.890473, 37.342669}, + {-121.97639465332, 37.384414672852}, + {-121.983171, 37.311646}, + {-122.02147, 37.292315}, + {-122.160179, 37.388487}, + {-122.29774475098, 37.845840454102}, + {-122.15766906738, 37.20588684082}, + {-122.02308654785, 37.980422973633}, + {-122.00386047363, 38.012008666992}, + {-122.14813, 37.873705}, + {31.315841674805, 30.192489624023}, + {31.413345336914, 30.176010131836}, + {31.248405, 30.069738}, + {30.836906, 27.736015}, + {31.520462036133, 31.431198120117}, + {31.123580932617, 30.171890258789}, + {31.240310668945, 30.016708374023}, + {31.182632446289, 30.088119506836}, + {31.30485534668, 30.093612670898}, + {31.305542, 29.987869}, + {31.205978393555, 30.068893432617}, + {31.196365356445, 30.046920776367}, + {31.25129699707, 30.05241394043}, + {31.200485229492, 29.949417114258}, + {31.184005737305, 30.468521118164}, + {31.193618774414, 30.379257202148}, + {31.255416870117, 30.104598999023}, + {31.152420043945, 29.990615844727}, + {31.109848022461, 29.029312133789}, + {30.48225402832, 31.322708129883}, + {32.024459838867, 26.182479858398}, + {30.853042602539, 29.280624389648}, + {34.24919128418, 27.864761352539}, + {34.427719116211, 28.057022094727}, + {-3.933105, 40.308838}, + {-4.078217, 40.220261}, + {-4.114609, 40.470657}, + {-4.037762, 40.669384}, + {-3.874741, 40.467845}, + {-4.4487762451172, 36.725234985352}, + {-4.4638824462891, 36.674423217773}, + {-5.0145721435547, 36.501388549805}, + {-4.953652, 36.492229}, + {-4.8621368408203, 36.574172973633}, + {-3.9049530029297, 36.777420043945}, + {-4.7687530517578, 36.571426391602}, + {-4.522934, 36.600952}, + {-5.2205657958984, 36.377792358398}, + {-5.227152, 36.368793}, + {-5.1560211181641, 36.928482055664}, + {-4.3608856201172, 36.719741821289}, + {-4.4268035888672, 36.752700805664}, + {-4.4872283935547, 36.716995239258}, + {-4.467316, 36.713219}, + {-0.77659606933594, 37.82112121582}, + {99.475021362305, 17.338485717773}, + {100.135021, 15.459212}, + {99.196243286133, 10.661544799805}, + {100.4857635498, 6.9976043701172}, + {101.8041229248, 6.4112091064453}, + {98.807602, 8.246841}, + {98.479385375977, 8.4244537353516}, + {98.300857543945, 7.8916168212891}, + {100.46653747559, 7.0072174072266}, + {100.5379486084, 7.2475433349609}, + {99.999618530273, 9.7400665283203}, + {100.64918518066, 13.696517944336}, + {100.71922302246, 13.934097290039}, + {101.46354675293, 12.566299438477}, + {101.105541, 13.421642}, + {100.5200958252, 13.73908996582}, + {101.83570861816, 12.775039672852}, + {98.317337036133, 7.7941131591797}, + {100.67115783691, 13.736343383789}, + {100.60249328613, 13.918991088867}, + {100.54756164551, 13.811874389648}, + {100.50498962402, 13.810501098633}, + {100.62309265137, 13.670425415039}, + {100.52558898926, 13.691024780273}, + {106.75346374512, -6.1228179931641}, + {106.752548, -6.129227}, + {106.70539855957, -6.1887359619141}, + {106.63633, -6.109744}, + {106.711535, -6.152002}, + {106.72325134277, -6.1750030517578}, + {106.84684753418, -6.1983489990234}, + {106.80976867676, -6.1420440673828}, + {106.946592, -6.257374}, + {106.873499, -6.303957}, + {106.76719665527, -6.2628936767578}, + {106.943436, -6.19194}, + {106.85096740723, -6.5416717529297}, + {106.815948, -6.617203}, + {106.789836, -6.495696}, + {106.775436, -6.355591}, + {106.976128, -6.40208}, + {107.13798522949, -6.0692596435547}, + {106.833017, -6.225252}, + {106.807812, -6.168674}, + {106.82075500488, -6.1695098876953}, + {8.5398101806641, 47.413558959961}, + {6.1626434326172, 46.200942993164}, + {8.022386, 46.876371}, + {10.305176, 46.73378}, + {7.2846221923828, 46.832656860352}, + {106.35520935059, 10.528335571289}, + {106.9979095459, 10.721969604492}, + {106.90727233887, 10.841445922852}, + {106.69441223145, 10.79475402832}, + {106.80152893066, 10.884017944336}, + {106.73149108887, 10.956802368164}, + {105.9432220459, 20.315780639648}, + {105.41725158691, 18.511276245117}, + {105.5216217041, 20.291061401367}, + {105.88691711426, 21.43913269043}, + {105.813446, 21.070404}, + {105.54359436035, 21.345748901367}, + {105.82649230957, 21.001052856445}, + {105.79627990723, 21.017532348633}, + {105.76469421387, 20.962600708008}, + {105.83885192871, 21.031265258789}, + {105.841402, 21.027538}, + {105.86219787598, 20.998306274414}, + {105.875796, 20.97137}, + {105.88279724121, 21.299057006836}, + {106.66007995605, 10.99250793457}, + {106.68479919434, 10.973281860352}, + {106.487389, 10.657425}, + {106.697551, 10.796127}, + {67.026901245117, 24.861373901367}, + {67.017288208008, 24.832534790039}, + {67.013168334961, 24.912185668945}, + {68.761367797852, 27.492599487305}, + {70.473861694336, 29.172134399414}, + {69.825668, 28.188171}, + {69.325594, 28.006603}, + {69.18571472168, 28.639297485352}, + {73.112309, 33.414709}, + {72.352523803711, 34.74494934082}, + {73.032302856445, 33.047561645508}, + {74.10347, 32.481079}, + {74.114456176758, 31.267776489258}, + {71.407699584961, 30.185623168945}, + {71.424761, 30.191846}, + {71.548511, 30.20019}, + {71.075762, 29.163896}, + {70.93391418457, 30.044174194336}, + {72.331924438477, 31.906356811523}, + {74.286118, 31.459645}, + {73.057022094727, 33.638076782227}, + {71.59393, 34.015732}, + {-121.99836730957, 37.36930847168}, + {67.068099975586, 24.924545288086}, + {-122.30323791504, 37.97492980957}, + {-122.041763, 37.626663}, + {-122.05604553223, 37.703018188477}, + {-122.13981628418, 37.891159057617}, + {-122.457439, 38.215648}, + {-122.585975, 38.164067}, + {-122.55317687988, 37.903518676758}, + {-122.490918, 37.89824}, + {-122.224007, 38.061741}, + {-121.92558288574, 37.322616577148}, + {-121.58259, 37.000909}, + {-122.26203918457, 37.841720581055}, + {-122.268562, 37.824898}, + {-122.279364, 37.80179}, + {-122.257645, 37.831398}, + {-121.9132232666, 37.481918334961}, + {-121.92882, 37.328895}, + {-121.973648, 37.376862}, + {-122.4488067627, 37.731857299805}, + {18.785976, 47.338673}, + {21.936951, 48.236847}, + {19.895553588867, 47.761001586914}, + {17.882326, 46.9594}, + {18.992789, 46.528817}, + {19.681778, 46.882096}, + {21.131296, 46.669315}, + {18.17917, 47.376022}, + {-46.64176940918, -23.544387817383}, + {-46.644406, -23.548336}, + {-46.441601, -24.018853}, + {-46.382401, -23.964981}, + {-48.376234, -23.975219}, + {-47.879104614258, -23.258743286133}, + {-50.428372, -21.220997}, + {-47.221298217773, -23.12141418457}, + {-47.395706176758, -22.201309204102}, + {-47.522048950195, -22.37434387207}, + {-46.709060668945, -23.630905151367}, + {-45.548629760742, -22.98957824707}, + {-43.09455871582, -22.908554077148}, + {-43.943252563477, -19.964218139648}, + {-47.40119934082, -20.53825378418}, + {-51.305465698242, -19.479446411133}, + {-50.871965, -19.58571}, + {-49.472839, -18.984451}, + {-46.520679, -18.590804}, + {-49.452896118164, -18.979568481445}, + {-1.0237884521484, 5.2521514892578}, + {-0.22419, 5.609894}, + {-0.27397155761719, 5.6284332275391}, + {-1.517143, 6.70887}, + {0.0006866455078125, 5.6339263916016}, + {0.22727966308594, 5.8385467529297}, + {-0.083084106445312, 5.6009674072266}, + {-1.6458892822266, 6.6432952880859}, + {-0.39894104003906, 5.5309295654297}, + {3.345649, 6.498226}, + {3.36731, 6.544418}, + {3.189468, 6.471909}, + {3.5794830322266, 6.4702606201172}, + {3.336721, 6.594245}, + {3.9818572998047, 6.5801239013672}, + {3.9392852783203, 7.8682708740234}, + {3.421555, 6.769981}, + {3.9859771728516, 7.4027252197266}, + {5.3936004638672, 10.238571166992}, + {6.996231, 4.794846}, + {7.0209503173828, 5.5158233642578}, + {6.924362, 4.891434}, + {8.529282, 7.760696}, + {7.328563, 6.47095}, + {76.866531, 30.136871}, + {77.002487, 29.680252}, + {76.622085571289, 28.357772827148}, + {77.915725708008, 27.923812866211}, + {78.065414428711, 27.893600463867}, + {77.116470336914, 28.540420532227}, + {78.010139, 27.171249}, + {77.67746, 27.502213}, + {77.774276733398, 28.260269165039}, + {79.709702, 28.593979}, + {78.035202026367, 27.157516479492}, + {79.126968, 29.394951}, + {78.791885375977, 28.458023071289}, + {78.183861, 29.976196}, + {79.39476, 28.981934}, + {78.059921264648, 30.467147827148}, + {78.204116821289, 27.231674194336}, + {79.511489868164, 28.455276489258}, + {78.016892, 27.590103}, + {77.774276, 28.718033}, + {79.598007202148, 29.838180541992}, + {21.238358, 48.986115}, + {21.886825561523, 48.740158081055}, + {20.549240112305, 48.951644897461}, + {19.134750366211, 48.738784790039}, + {21.271591186523, 48.659133911133}, + {17.152634, 48.157883}, + {17.341232299805, 48.221054077148}, + {17.858963, 48.780899}, + {17.835617, 48.754578}, + {18.506545, 48.195726}, + {18.125132, 47.759628}, + {18.250350952148, 47.968368530273}, + {18.910903930664, 49.068374633789}, + {19.263284, 48.782137}, + {18.081436157227, 48.304824829102}, + {18.110275268555, 48.315811157227}, + {17.62001, 48.37326}, + {17.600784301758, 48.304824829102}, + {20.335281, 48.411392}, + {21.647872, 48.881607}, + {110.61103820801, -7.6883697509766}, + {110.26534, -7.375972}, + {110.22239685059, -7.4562835693359}, + {108.866684, -7.372238}, + {110.79643249512, -7.5620269775391}, + {110.761592, -7.551282}, + {110.830961, -7.57419}, + {110.423794, -6.987984}, + {110.74424743652, -7.7378082275391}, + {110.447974, -6.974318}, + {110.42976379395, -7.0209503173828}, + {110.31303405762, -7.8037261962891}, + {110.3638458252, -7.8353118896484}, + {110.399845, -7.762444}, + {110.337552, -7.799342}, + {110.329826, -7.787789}, + {110.382444, -7.753987}, + {110.40916442871, -7.0909881591797}, + {111.039658, -6.756637}, + {108.823471, -7.495193}, + {109.9243927002, -7.7199554443359}, + {110.016449, -7.835569}, + {111.00379943848, -7.4219512939453}, + {1.170778, 51.095542}, + {1.206439, 51.348496}, + {-2.784348, 53.274307}, + {-2.6840972900391, 53.225326538086}, + {-0.76423645019531, 51.527938842773}, + {-0.48545837402344, 51.345291137695}, + {-1.111679, 51.28624}, + {0.108332, 50.77284}, + {0.074844360351562, 51.011581420898}, + {-2.6030731201172, 54.528579711914}, + {-3.157412, 54.104695}, + {-3.035177, 53.86721}, + {-2.4011993408203, 53.630447387695}, + {-2.43612, 53.582382}, + {-0.018539428710938, 51.522445678711}, + {-0.019398, 51.519527}, + {-0.066791, 51.557941}, + {-0.12977600097656, 51.43180847168}, + {-2.409727, 51.551111}, + {-3.3267974853516, 51.507339477539}, + {-90.526945, 14.544806}, + {-90.503311157227, 14.675674438477}, + {-90.482711791992, 14.49577331543}, + {-90.515670776367, 14.644088745117}, + {-90.558242797852, 14.615249633789}, + {-91.79557800293, 14.966812133789}, + {-90.555369, 14.615105}, + {-90.184707641602, 14.807510375977}, + {-89.058609008789, 15.27717590332}, + {-90.742739, 14.570095}, + {-90.673599243164, 14.576797485352}, + {-90.736770629883, 14.557571411133}, + {-88.630142211914, 13.877792358398}, + {-89.17121887207, 13.725357055664}, + {-89.204177856445, 13.707504272461}, + {-89.204177856445, 13.714370727539}, + {-89.209261, 13.715102}, + {-89.169845581055, 13.700637817383}, + {-89.146499633789, 13.688278198242}, + {39.175186, 51.623383}, + {43.947922, 56.283646}, + {43.972641, 56.310425}, + {43.704757, 56.298752}, + {44.209671020508, 56.150436401367}, + {34.380573, 53.197409}, + {41.993179321289, 52.710342407227}, + {37.212204, 54.282761}, + {36.33659362793, 54.52995300293}, + {46.025161743164, 51.577377319336}, + {32.770615, 58.140335}, + {42.144241333008, 54.63981628418}, + {33.304366, 54.117508}, + {58.487777709961, 51.505966186523}, + {40.748977661133, 55.977401733398}, + {37.674179077148, 59.832229614258}, + {135.045319, 48.486099}, + {-77.706161, 37.678574}, + {-76.181259155273, 37.093276977539}, + {-76.389803, 37.107598}, + {-76.439437866211, 36.428604125977}, + {-76.97639465332, 36.325607299805}, + {-86.829071, 38.612824}, + {-91.261367797852, 42.780075073242}, + {-93.847274780273, 32.480392456055}, + {-93.469619750977, 31.553421020508}, + {-90.541763305664, 41.443862915039}, + {-69.927291870117, 43.913040161133}, + {-70.322799682617, 43.672714233398}, + {4.293737, 50.806201}, + {4.370384, 50.870786}, + {4.381846, 50.793734}, + {4.321089, 50.872018}, + {4.2304229736328, 50.88249206543}, + {4.458607, 51.215333}, + {4.576439, 51.143822}, + {4.055036, 51.109138}, + {5.325394, 51.034012}, + {5.316696, 50.937939}, + {4.518516, 50.99958}, + {5.54449, 50.871334}, + {5.521967, 49.802977}, + {5.6050872802734, 50.680618286133}, + {5.984117, 50.462609}, + {4.310074, 50.397263}, + {3.682459, 50.48839}, + {3.7195587158203, 50.911331176758}, + {27.857894897461, 47.627792358398}, + {28.837738, 47.031784}, + {27.786483764648, 47.229537963867}, + {17.467575073242, 51.229934692383}, + {19.247360229492, 50.335922241211}, + {20.969467163086, 52.233810424805}, + {21.044643, 52.259653}, + {21.257858276367, 51.40022277832}, + {21.156693, 51.398849}, + {22.860489, 52.448502}, + {23.850631713867, 52.699356079102}, + {22.265853881836, 52.645797729492}, + {21.04866, 52.219622}, + {21.060497, 52.231579}, + {20.881576538086, 53.228073120117}, + {-73.982620239258, 40.783309936523}, + {-73.968887329102, 40.791549682617}, + {-73.999099731445, 40.695419311523}, + {-73.93180847168, 40.812149047852}, + {-73.918075561523, 40.839614868164}, + {-73.896102905273, 40.905532836914}, + {-74.121552, 40.213623}, + {-74.058151245117, 40.287551879883}, + {-74.154836, 40.778916}, + {-73.816452026367, 40.889053344727}, + {-73.88953, 40.931563}, + {-73.879623413086, 41.165084838867}, + {-73.779373168945, 40.970077514648}, + {-73.941421508789, 40.662460327148}, + {-73.951034545898, 40.669326782227}, + {-73.96614074707, 40.58967590332}, + {-73.234176635742, 40.76545715332}, + {-73.30696105957, 40.748977661133}, + {-73.501968383789, 40.662460327148}, + {-73.745040893555, 40.641860961914}, + {37.537355, 55.668555}, + {37.762069702148, 55.726089477539}, + {60.625991821289, 56.843948364258}, + {60.750504, 56.760178}, + {60.590286254883, 56.830215454102}, + {37.902596, 55.751991}, + {65.591812133789, 57.185897827148}, + {65.561599731445, 57.146072387695}, + {27.460712, 53.935917}, + {19.314651489258, 51.814956665039}, + {28.806838989258, 47.038650512695}, + {20.856979, 52.028557}, + {23.211926, 53.141759}, + {21.220322, 52.24617}, + {20.341873, 53.040128}, + {20.953921, 52.216475}, + {20.96495, 52.2329}, + {20.708105, 52.146216}, + {22.334518432617, 52.128067016602}, + {19.089431762695, 50.280990600586}, + {18.990555, 50.079803}, + {18.89030456543, 50.177993774414}, + {18.980941772461, 50.451278686523}, + {19.005661, 49.912075}, + {18.913412, 50.300451}, + {18.046126, 50.490517}, + {19.402542114258, 50.48698425293}, + {18.62652, 50.217283}, + {2.3023223876953, 48.876113891602}, + {2.2432708740234, 48.931045532227}, + {2.4053192138672, 48.871994018555}, + {2.3860931396484, 48.859634399414}, + {2.176535, 48.780874}, + {1.981931, 48.791237}, + {2.0070648193359, 48.77311706543}, + {2.1183013916016, 49.001083374023}, + {2.0963287353516, 48.843154907227}, + {3.8307952880859, 43.595809936523}, + {4.102025, 43.700131}, + {5.0763702392578, 47.302322387695}, + {6.8383026123047, 47.647018432617}, + {1.0388946533203, 49.393844604492}, + {1.4550018310547, 48.460006713867}, + {2.3874664306641, 48.815689086914}, + {2.323765, 49.050946}, + {2.4657440185547, 48.887100219727}, + {6.206651, 48.690052}, + {6.176762, 49.151201}, + {-1.5648651123047, 47.232284545898}, + {-1.659567, 47.205314}, + {5.4210662841797, 43.523025512695}, + {5.4361724853516, 43.506546020508}, + {5.41832, 43.552895}, + {3.8513946533203, 43.56559753418}, + {4.009323, 43.59169}, + {3.4847259521484, 43.417282104492}, + {3.314438, 43.419571}, + {3.568068, 43.669281}, + {3.516312, 43.389816}, + {4.152832, 43.55072}, + {2.2982025146484, 48.880233764648}, + {2.324401, 48.896713}, + {2.3435211181641, 48.885726928711}, + {2.3366546630859, 48.85139465332}, + {2.1883392333984, 48.841781616211}, + {2.6291656494141, 48.806076049805}, + {2.5055694580078, 48.85139465332}, + {17.76008605957, 48.660507202148}, + {17.128372192383, 48.166122436523}, + {17.114944, 48.156509}, + {17.129745483398, 48.130416870117}, + {17.102279663086, 48.100204467773}, + {17.383804321289, 48.243026733398}, + {17.345189, 48.195277}, + {17.49641418457, 48.045272827148}, + {17.400971, 48.728485}, + {18.48793, 48.609107}, + {18.26545715332, 48.58772277832}, + {17.960586547852, 48.885726928711}, + {17.71614074707, 48.369369506836}, + {18.845261, 48.591568}, + {18.817812, 49.351277}, + {19.794993, 48.7563}, + {19.406648, 49.368947}, + {21.246871948242, 48.709945678711}, + {37.569351, 55.683517}, + {37.551956176758, 55.591506958008}, + {37.564066, 55.692756}, + {37.580795, 55.706406}, + {38.064193725586, 55.547561645508}, + {38.078658, 55.369203}, + {37.961884, 55.798874}, + {56.707992553711, 57.479782104492}, + {38.657455444336, 52.625198364258}, + {39.493107, 51.551972}, + {53.15803527832, 56.835708618164}, + {133.51203918457, 45.265731811523}, + {131.93000793457, 43.17008972168}, + {45.655746459961, 43.238754272461}, + {36.416588, 53.186188}, + {64.406661987305, 55.388259887695}, + {38.531112670898, 52.614212036133}, + {40.474319458008, 56.166915893555}, + {103.9395904541, 52.501602172852}, + {102.73246765137, 53.412094116211}, + {100.62171936035, 54.538192749023}, + {61.316757202148, 54.851303100586}, + {73.227310180664, 55.031204223633}, + {61.430740356445, 55.160293579102}, + {61.469192504883, 55.11360168457}, + {61.384048461914, 55.256423950195}, + {53.290419, 56.849295}, + {37.60139465332, 54.192123413086}, + {38.417129516602, 54.020462036133}, + {36.572799682617, 50.600967407227}, + {36.590424, 50.603943}, + {36.037217, 52.920457}, + {40.269699, 56.083145}, + {38.097152709961, 54.078140258789}, + {30.465774536133, 59.902267456055}, + {9.37672, 52.042817}, + {10.573654174805, 52.368392944336}, + {9.791712, 52.243763}, + {10.020217895508, 52.382125854492}, + {7.0072174072266, 51.039047241211}, + {6.3851165771484, 51.284866333008}, + {6.9866180419922, 51.052780151367}, + {6.6954803466797, 51.191482543945}, + {6.932373, 50.820969}, + {7.2132110595703, 51.271133422852}, + {-9.188136, 38.751171}, + {-8.931198, 38.713074}, + {-9.1454315185547, 38.465194702148}, + {-8.55423, 41.147232}, + {-8.6826324462891, 41.171951293945}, + {-8.432236, 41.124802}, + {-8.411048, 41.546729}, + {-8.459394, 37.141852}, + {-8.535004, 39.664078}, + {-8.553887, 40.542755}, + {101.07215881348, 13.681411743164}, + {100.99113464355, 13.508377075195}, + {100.987015, 13.389359}, + {101.20811462402, 13.248825073242}, + {100.9252166748, 13.064804077148}, + {101.130867, 12.96833}, + {100.898781, 12.931595}, + {100.94444274902, 12.842330932617}, + {101.591263, 12.647324}, + {102.29850769043, 12.44270324707}, + {101.70387268066, 14.009628295898}, + {100.99388122559, 14.120864868164}, + {98.339726, 7.835989}, + {98.293991088867, 7.8916168212891}, + {98.386001586914, 7.9094696044922}, + {98.394061, 7.880956}, + {99.63020324707, 7.6114654541016}, + {100.48027038574, 7.0044708251953}, + {101.60224914551, 6.6584014892578}, + {98.257598, 8.496208}, + {100.47203063965, 7.2777557373047}, + {99.895248413086, 8.9888763427734}, + {27.716642, 42.705721}, + {25.472946, 42.974167}, + {40.96321105957, 41.213150024414}, + {29.012832641602, 41.077194213867}, + {28.894729614258, 40.979690551758}, + {28.823229, 41.055599}, + {29.100723266602, 40.952224731445}, + {28.957901000977, 40.21614074707}, + {29.11994934082, 40.98518371582}, + {29.014205932617, 40.987930297852}, + {32.698745727539, 39.97444152832}, + {32.611524, 39.758854}, + {32.524337768555, 37.860946655273}, + {57.490768432617, 37.071304321289}, + {49.572647, 37.270432}, + {50.925064, 35.441551}, + {50.994415, 35.669861}, + {52.066269, 27.839742}, + {50.862579, 32.319717}, + {49.678115844727, 34.070663452148}, + {51.353530883789, 35.76530456543}, + {51.447678, 35.797195}, + {51.452407836914, 35.669174194336}, + {51.394335, 35.723938}, + {51.413498, 35.686569}, + {51.344114, 35.71312}, + {51.264267, 35.670547}, + {51.361728, 35.610123}, + {51.464767456055, 35.62385559082}, + {52.52082824707, 29.629440307617}, + {51.052780151367, 35.44807434082}, + {56.285019, 27.182465}, + {48.678359985352, 31.278762817383}, + {52.868270874023, 36.449203491211}, + {50.937423706055, 35.833969116211}, + {49.724807739258, 34.103622436523}, + {59.622574, 36.291733}, + {50.981369018555, 35.795516967773}, + {-43.207993, -22.532501}, + {-44.185578, -22.527837}, + {-43.189618, -22.811596}, + {-43.326572, -22.931717}, + {-43.028993, -22.950333}, + {-43.395309448242, -22.82341003418}, + {-43.711614, -22.633141}, + {-41.715, -22.306671}, + {-43.626603, -22.886309}, + {-40.284805297852, -20.319900512695}, + {-42.902596, -22.934565}, + {-43.35437, -21.804724}, + {-47.622299194336, -18.855972290039}, + {-43.977584838867, -19.892807006836}, + {-47.530433, -18.403035}, + {-43.908609, -19.866927}, + {-45.961990356445, -22.201309204102}, + {-43.962478637695, -19.936752319336}, + {-45.974693, -19.223827}, + {-43.919906616211, -20.341873168945}, + {-47.933031, -19.744129}, + {4.893494, 43.437882}, + {5.233395, 43.441596}, + {4.8882293701172, 44.046249389648}, + {4.749265, 43.960386}, + {5.387614, 43.297293}, + {4.873999, 44.022734}, + {5.3469085693359, 43.351364135742}, + {5.3990936279297, 43.307418823242}, + {5.1422882080078, 43.617782592773}, + {5.1930999755859, 43.919906616211}, + {6.615205, 44.673219}, + {4.442725, 43.455587}, + {4.919815, 43.834419}, + {5.897806, 43.698035}, + {6.2010955810547, 43.87321472168}, + {5.4787445068359, 43.58757019043}, + {5.456323, 43.290238}, + {5.602733, 43.295844}, + {9.001007, 42.637253}, + {18.401412963867, 54.560165405273}, + {18.511276245117, 52.770767211914}, + {18.034744262695, 53.62907409668}, + {19.390182495117, 54.149551391602}, + {18.213272094727, 53.118209838867}, + {17.052841186523, 51.073379516602}, + {21.98844909668, 51.706466674805}, + {20.021896362305, 52.036056518555}, + {23.543014526367, 53.13606262207}, + {-82.656155, 28.02681}, + {-82.727737426758, 28.208084106445}, + {-82.296219, 27.6017}, + {-82.144088745117, 27.09846496582}, + {-81.802476, 26.597377}, + {-82.357173, 28.627409}, + {-81.984786987305, 26.491470336914}, + {-81.740341186523, 26.215438842773}, + {-82.557695, 27.576043}, + {-82.362442016602, 28.06526184082}, + {-82.465271, 27.956748}, + {-82.077129, 26.964403}, + {-80.084776, 26.637539}, + {-80.097885131836, 26.594467163086}, + {-80.383144, 27.57603}, + {-80.344556, 27.610188}, + {-80.314865, 25.689424}, + {-80.405403, 25.672693}, + {-80.333816, 25.278031}, + {-80.151305, 26.115384}, + {-80.217361450195, 26.095962524414}, + {30.358036, 59.937927}, + {-80.111618041992, 26.116561889648}, + {30.380630493164, 59.972305297852}, + {30.331192016602, 59.975051879883}, + {30.199356079102, 60.006637573242}, + {30.444624, 59.95744}, + {30.320205688477, 59.858322143555}, + {30.445175170898, 59.84733581543}, + {31.80061340332, 59.93522644043}, + {28.368759155273, 60.612258911133}, + {30.585704, 59.543566}, + {30.434188842773, 59.704513549805}, + {30.35041809082, 59.828109741211}, + {29.952163696289, 60.157699584961}, + {30.088119506836, 59.733352661133}, + {29.931564331055, 59.876174926758}, + {30.490493774414, 59.89128112793}, + {30.10871887207, 59.814376831055}, + {30.502853393555, 59.85969543457}, + {30.35041809082, 59.876174926758}, + {-74.338183, 40.255634}, + {37.722244262695, 55.813980102539}, + {-73.412811, 40.689179}, + {-72.859268188477, 40.851974487305}, + {-73.960007, 40.580653}, + {-73.941421508789, 40.68717956543}, + {-74.018125, 40.787546}, + {-73.950858, 41.423343}, + {-73.99772644043, 40.735244750977}, + {-73.71786, 40.974619}, + {-73.922073, 40.951742}, + {-74.426676, 40.791524}, + {-73.757400512695, 41.037368774414}, + {-79.064407, 42.623787}, + {-73.927688598633, 41.674575805664}, + {-77.517471313477, 43.062973022461}, + {-76.732643, 42.041085}, + {-75.139275, 43.55444}, + {-76.124954223633, 42.825393676758}, + {-76.258039, 43.108304}, + {-78.145261, 43.283092}, + {-75.463285, 43.23154}, + {-76.499862670898, 42.449111938477}, + {-79.061293, 43.08638}, + {47.195205688477, 41.199417114258}, + {47.798080444336, 41.001663208008}, + {45.386581420898, 41.507034301758}, + {77.058243, 43.331863}, + {79.442714, 43.923837}, + {77.033367, 43.661272}, + {73.409957885742, 49.351272583008}, + {76.904983520508, 43.143997192383}, + {76.978455, 43.273773}, + {57.134121, 50.317168}, + {73.569259643555, 43.984451293945}, + {78.123101, 44.378587}, + {81.049575805664, 50.660018920898}, + {73.681869506836, 48.823928833008}, + {71.420059204102, 51.135177612305}, + {51.136551, 43.668137}, + {51.191483, 51.504593}, + {-80.166549682617, 25.848770141602}, + {-90.235519, 35.276871}, + {-88.772964477539, 34.260177612305}, + {-80.11848449707, 26.008071899414}, + {-80.373916625977, 25.929794311523}, + {-80.244827270508, 26.166000366211}, + {-80.070877, 26.692581}, + {-80.098789, 26.960485}, + {-80.31623840332, 25.925674438477}, + {-80.346176, 25.71611}, + {-80.32695, 25.809494}, + {-80.267715, 25.9655}, + {-80.333012, 25.670242}, + {-80.379581, 25.629044}, + {-90.495397, 38.54087}, + {-90.680755, 38.713218}, + {-90.697403, 38.843994}, + {-90.481535, 38.682175}, + {-90.520859, 38.323593}, + {-89.851547, 38.87011}, + {-90.975311, 38.370506}, + {-90.155868530273, 38.68766784668}, + {-90.359383, 38.521156}, + {-90.263197, 38.65323}, + {126.98753356934, 37.569808959961}, + {126.9408416748, 37.514877319336}, + {126.9229888916, 37.505264282227}, + {126.91200256348, 37.52311706543}, + {126.98753356934, 37.505264282227}, + {126.99714660645, 37.521743774414}, + {126.845102, 35.129217}, + {126.92848205566, 37.499771118164}, + {126.88179016113, 37.517623901367}, + {129.108136, 35.117953}, + {126.95594787598, 35.247573852539}, + {127.35832214355, 37.214126586914}, + {127.51899719238, 37.131729125977}, + {127.287582, 37.004607}, + {127.44621276855, 37.08366394043}, + {127.616249, 37.281341}, + {127.03559875488, 37.270431518555}, + {126.828918, 37.304764}, + {126.82685852051, 37.348709106445}, + {126.68952941895, 37.646713256836}, + {126.78153991699, 37.648086547852}, + {126.77467346191, 37.687911987305}, + {126.748123, 37.67601}, + {126.88865661621, 37.678298950195}, + {126.74995422363, 37.66731262207}, + {106.410484, 10.594597}, + {106.67930603027, 10.77278137207}, + {106.57905578613, 10.842819213867}, + {108.30390930176, 12.710494995117}, + {106.597595, 10.702744}, + {106.751341, 10.796377}, + {109.0550994873, 14.011001586914}, + {106.30165100098, 20.446243286133}, + {105.6534576416, 18.669204711914}, + {108.85734558105, 11.680526733398}, + {106.12998962402, 11.312484741211}, + {105.82237243652, 21.003799438477}, + {105.8992767334, 21.066970825195}, + {105.07804870605, 20.693435668945}, + {105.797653, 21.018219}, + {105.77430725098, 21.003799438477}, + {105.816605, 21.042526}, + {105.78804016113, 21.029891967773}, + {105.84297180176, 20.991439819336}, + {107.7710723877, 21.524276733398}, + {105.936815, 20.2137}, + {106.618202, 20.864412}, + {106.93336486816, 20.972213745117}, + {107.96745300293, 21.531143188477}, + {4.5174407958984, 50.868759155273}, + {4.3608856201172, 50.846786499023}, + {4.305496, 50.809708}, + {4.405746, 50.816116}, + {4.371872, 50.841293}, + {4.1933441162109, 50.908584594727}, + {4.3965911865234, 50.826187133789}, + {4.2894744873047, 50.760269165039}, + {4.352646, 50.863953}, + {4.4007110595703, 51.045913696289}, + {4.4982147216797, 51.087112426758}, + {4.6987152099609, 50.863265991211}, + {5.4251861572266, 51.008834838867}, + {5.2191925048828, 51.093978881836}, + {135.51567077637, 34.523849487305}, + {135.61180114746, 34.507369995117}, + {135.68870544434, 34.830093383789}, + {135.53352355957, 34.522476196289}, + {135.557262, 34.49658}, + {139.7550201416, 35.702133178711}, + {135.36735534668, 34.747695922852}, + {139.74815368652, 35.695266723633}, + {135.35362243652, 34.727096557617}, + {140.5020904541, 36.362686157227}, + {140.103942, 36.091937}, + {139.74952697754, 35.707626342773}, + {140.42381286621, 36.377792358398}, + {140.669632, 36.650293}, + {134.694271, 34.811211}, + {139.737167, 36.24321}, + {139.86625671387, 36.498641967773}, + {134.789658, 34.777908}, + {135.382718, 34.808741}, + {130.56221, 32.935638}, + {135.4044342041, 34.804000854492}, + {130.773239, 32.784805}, + {130.736961, 32.209167}, + {130.710983, 32.798996}, + {130.438614, 33.509674}, + {39.735488891602, -3.9873504638672}, + {35.277317, 0.517489}, + {39.674652, -4.040359}, + {36.892776489258, -1.2050628662109}, + {36.890029907227, -1.2888336181641}, + {37.023239135742, -1.0965728759766}, + {36.831894, -1.325455}, + {36.813354, -1.316872}, + {36.80001, -1.275792}, + {34.771041870117, -0.67634582519531}, + {36.808662, -1.274071}, + {39.268389, -6.771548}, + {39.261703491211, -6.8025970458984}, + {39.239730834961, -6.1846160888672}, + {39.316635, -6.867828}, + {39.253463745117, -6.7778778076172}, + {38.90092, -6.434359}, + {39.23378, -6.798477}, + {39.249619, -6.811661}, + {36.705872, -3.389282}, + {39.276809692383, -6.8245697021484}, + {39.260330200195, -6.8369293212891}, + {27.975997924805, -26.133041381836}, + {28.057022094727, -26.159133911133}, + {28.044662475586, -26.145401000977}, + {26.62467956543, -28.83430480957}, + {26.270370483398, -29.000473022461}, + {28.383865356445, -26.33903503418}, + {28.304901, -26.1866}, + {28.446454, -26.427823}, + {28.172378540039, -26.244277954102}, + {28.367386, -25.964127}, + {28.145737, -26.048173}, + {28.148117, -26.260757}, + {28.13117980957, -26.194839477539}, + {25.605065, -33.94932}, + {25.537033081055, -33.944320678711}, + {29.475631713867, -23.89045715332}, + {29.005574, -24.184145}, + {31.004607, -29.861009}, + {30.963147, -29.829767}, + {30.982131958008, -29.895858764648}, + {18.706283569336, -34.059677124023}, + {18.652725219727, -34.032211303711}, + {-95.883865356445, 36.169052124023}, + {-97.51832, 35.465899}, + {-97.309341, 37.505722}, + {-95.326035, 36.161362}, + {-96.737388, 35.234731}, + {-95.035171508789, 39.529495239258}, + {-88.123398, 30.257492}, + {-75.279006958008, 40.343856811523}, + {-75.329818725586, 40.102157592773}, + {-75.549545288086, 39.811019897461}, + {-75.160903930664, 40.201034545898}, + {-75.235061645508, 38.781051635742}, + {-75.283126831055, 40.662460327148}, + {-75.63881, 40.053292}, + {-74.974136352539, 39.934616088867}, + {-75.207596, 39.956589}, + {-75.122451782227, 40.179061889648}, + {-75.347015, 40.011933}, + {-111.164474, 33.681564}, + {-112.280957, 33.509564}, + {-112.25476, 33.443954}, + {-110.875855, 32.303696}, + {50.942916870117, 35.719985961914}, + {52.117080688477, 35.66780090332}, + {46.244888305664, 38.054580688477}, + {46.380157, 38.066254}, + {51.864395141602, 32.774276733398}, + {51.586990356445, 32.610855102539}, + {51.65153503418, 32.713851928711}, + {53.086624145508, 32.840194702148}, + {52.589492797852, 29.54704284668}, + {49.59846496582, 37.278671264648}, + {49.57649230957, 37.284164428711}, + {54.304733276367, 27.653274536133}, + {49.19059753418, 37.575302124023}, + {54.453048706055, 36.813125610352}, + {54.448928833008, 36.784286499023}, + {46.415176391602, 33.632583618164}, + {56.03645324707, 27.123184204102}, + {59.53010559082, 36.296768188477}, + {61.153335571289, 36.491775512695}, + {58.328475952148, 29.106216430664}, + {48.679733276367, 31.337814331055}, + {48.387222290039, 32.370529174805}, + {47.09358215332, 34.376907348633}, + {47.561867, 34.727099}, + {47.953262329102, 34.499130249023}, + {0.10643005371094, 51.394729614258}, + {-0.13938903808594, 51.370010375977}, + {-0.23963928222656, 51.740798950195}, + {-0.47584533691406, 51.728439331055}, + {-0.501681, 51.74587}, + {-2.1306610107422, 53.472518920898}, + {-2.6497650146484, 53.54118347168}, + {-4.6533966064453, 51.939926147461}, + {-3.038198, 51.71146}, + {-0.437622, 51.504593}, + {-0.426406, 51.441422}, + {-0.088577270507812, 51.515579223633}, + {-4.1741180419922, 50.414199829102}, + {-1.3259124755859, 50.915451049805}, + {-5.2397918701172, 50.234298706055}, + {-1.1940765380859, 50.855026245117}, + {0.89881896972656, 52.220077514648}, + {-1.9617462158203, 52.99186706543}, + {-2.1334075927734, 52.835311889648}, + {-77.496871948242, 38.992538452148}, + {-1.8587493896484, 52.655410766602}, + {-78.666915893555, 38.66569519043}, + {-77.786742, 38.59665}, + {-78.078016, 38.975049}, + {-77.128738, 38.897761}, + {-77.117192, 38.898968}, + {-95.266846, 29.631775}, + {-95.286484, 29.778117}, + {-95.145414, 29.706155}, + {-95.557431, 29.729565}, + {-95.216751, 29.535523}, + {-95.632678, 29.590497}, + {-95.38825, 29.681363}, + {-95.449457, 29.828714}, + {-95.53791, 29.821816}, + {-95.55833, 29.748917}, + {-96.333618, 30.673141}, + {-96.339797973633, 30.609970092773}, + {-95.313949584961, 30.213088989258}, + {-95.563449, 29.947797}, + {-95.294657, 29.983615}, + {-95.546035766602, 30.082626342773}, + {-95.673751831055, 29.192733764648}, + {-95.610580444336, 29.982376098633}, + {-95.10383605957, 29.785995483398}, + {72.848281860352, 19.182815551758}, + {72.856522, 19.008408}, + {72.846908569336, 19.082565307617}, + {72.833176, 18.972015}, + {72.969756, 19.202916}, + {73.138046264648, 19.207534790039}, + {73.006210327148, 19.083938598633}, + {73.155899047852, 18.972702026367}, + {72.871627807617, 19.213027954102}, + {72.829742, 19.152603}, + {72.82356262207, 19.140243530273}, + {73.035873, 19.15947}, + {84.79866027832, 19.30778503418}, + {84.79866027832, 19.313278198242}, + {85.860214233398, 20.29655456543}, + {86.239242553711, 20.613784790039}, + {76.769027709961, 30.721206665039}, + {85.15022277832, 20.843124389648}, + {76.799240112305, 30.750045776367}, + {76.477890014648, 30.990371704102}, + {76.42707824707, 30.292739868164}, + {75.76789855957, 31.218338012695}, + {77.109603881836, 31.001358032227}, + {35.279159545898, 32.571029663086}, + {35.238647, 32.66304}, + {34.754188, 31.955546}, + {34.570541381836, 31.31721496582}, + {35.191269, 30.585022}, + {35.012719, 32.405957}, + {34.889145, 31.940689}, + {34.869918823242, 31.999740600586}, + {34.905624389648, 32.014846801758}, + {34.766191, 32.075779}, + {34.773507, 32.063049}, + {34.81662, 32.16007}, + {34.712677, 31.477203}, + {34.548568725586, 31.606979370117}, + {34.927597, 31.703796}, + {35.198822, 31.71135}, + {35.117248, 32.708095}, + {34.917984008789, 32.550430297852}, + {35.062149, 32.829739}, + {35.115737915039, 33.007736206055}, + {35.04055, 32.78183}, + {35.191266, 32.94274}, + {-117.15202331543, 32.690505981445}, + {-117.217576, 32.737131}, + {-117.1053314209, 33.103866577148}, + {-117.15476989746, 33.134078979492}, + {-117.118339, 32.787187}, + {-117.168923, 33.37783}, + {-116.403682, 32.712489}, + {-115.959967, 36.191952}, + {-115.01243591309, 36.273422241211}, + {-115.0838470459, 36.245956420898}, + {-115.17997741699, 36.057815551758}, + {-115.246209, 36.051445}, + {-114.972962, 36.049279}, + {-156.44187927246, 20.686569213867}, + {-156.452492, 20.88685}, + {-157.952614, 21.364288}, + {-157.804481, 21.393467}, + {-97.312088012695, 37.659072875977}, + {-117.875082, 33.671326}, + {-118.126765, 33.75739}, + {48.172988891602, 30.443801879883}, + {48.174362182617, 30.43830871582}, + {48.753890991211, 33.916854858398}, + {48.351517, 33.525925}, + {52.544174194336, 29.600601196289}, + {50.839233, 28.966484}, + {50.149154663086, 30.048294067383}, + {47.156296, 34.370499}, + {52.638995, 36.624351}, + {49.573288, 37.27066}, + {49.584732055664, 37.296524047852}, + {49.602585, 37.295837}, + {53.061904907227, 36.576919555664}, + {54.442337, 36.844162}, + {51.00499, 35.718613}, + {51.6675, 32.644672}, + {51.679001, 32.654114}, + {59.613876342773, 36.294021606445}, + {46.304398, 38.080215}, + {60.84846496582, 29.497604370117}, + {60.847195, 29.470757}, + {48.674240112305, 31.328201293945}, + {56.106949, 26.971664}, + {52.54280090332, 29.628067016602}, + {48.49983215332, 34.823226928711}, + {78.393116, 24.677696}, + {81.300888061523, 25.902328491211}, + {81.475983, 26.829987}, + {81.291275, 25.915375}, + {80.713359, 25.992086}, + {79.571914672852, 27.38410949707}, + {79.908829, 26.484604}, + {80.846328735352, 26.722183227539}, + {80.682907104492, 27.565383911133}, + {74.860153198242, 32.712478637695}, + {75.346298217773, 32.466659545898}, + {74.838180541992, 34.088516235352}, + {77.417221069336, 34.166793823242}, + {90.300064086914, 26.442031860352}, + {95.351868, 27.485809}, + {95.329055786133, 27.426681518555}, + {94.583358764648, 27.502212524414}, + {91.779098510742, 26.167373657227}, + {91.746826, 26.17836}, + {77.712478637695, 29.352035522461}, + {77.774276733398, 28.731307983398}, + {77.844314575195, 27.358016967773}, + {77.797622680664, 27.557144165039}, + {77.88688659668, 27.93342590332}, + {114.12940979004, 22.280960083008}, + {114.15550231934, 22.280960083008}, + {114.18296813965, 22.278213500977}, + {114.209061, 22.291866}, + {114.218674, 22.287567}, + {114.032974, 22.444382}, + {114.148495, 22.338463}, + {104.92698669434, 11.547317504883}, + {104.92835998535, 11.56379699707}, + {116.24290466309, 40.003280639648}, + {116.27998352051, 40.021133422852}, + {116.33491516113, 39.89616394043}, + {116.37474060059, 39.942855834961}, + {116.28135681152, 39.832992553711}, + {116.26075744629, 39.892044067383}, + {116.38298034668, 39.905776977539}, + {116.41868591309, 39.973068237305}, + {116.54914855957, 39.94010925293}, + {116.46263122559, 40.004653930664}, + {116.48323059082, 39.935989379883}, + {116.414909, 39.872475}, + {116.4200592041, 39.898910522461}, + {116.40632629395, 39.890670776367}, + {-98.079174, 30.402215}, + {-97.443923950195, 29.655532836914}, + {-96.409149, 29.725571}, + {-97.642708, 30.728416}, + {-97.735061645508, 30.550918579102}, + {-93.112564086914, 41.518020629883}, + {-93.803066, 40.888722}, + {-90.74089050293, 42.491683959961}, + {-93.891531, 41.536722}, + {-90.086706, 43.932274}, + {-91.497573852539, 44.797439575195}, + {-89.810486, 44.376183}, + {-89.582115, 44.873772}, + {-88.420906, 45.072721}, + {-87.865219116211, 42.980575561523}, + {-87.922897338867, 42.988815307617}, + {-87.90659, 43.122368}, + {-88.208537, 43.132081}, + {-89.791946411133, 43.601303100586}, + {121.72782897949, 25.133285522461}, + {121.77177429199, 25.151138305664}, + {121.76902770996, 25.129165649414}, + {121.677704, 25.166245}, + {121.57814025879, 25.061874389648}, + {121.78825378418, 25.133285522461}, + {121.58226013184, 25.052261352539}, + {121.55479431152, 25.059127807617}, + {121.58088684082, 25.056381225586}, + {121.595156, 25.083657}, + {121.600487, 25.084132}, + {121.54518127441, 25.081100463867}, + {121.578647, 25.079282}, + {121.60972595215, 24.160995483398}, + {121.598053, 23.926163}, + {121.745944, 24.742535}, + {121.77864074707, 24.759750366211}, + {121.21421813965, 25.05500793457}, + {121.29524230957, 24.994583129883}, + {121.20488, 25.061874}, + {121.39686584473, 25.031661987305}, + {121.346054, 24.998932}, + {-97.06901550293, 33.047561645508}, + {-96.927978, 32.988373}, + {-96.838903, 33.006105}, + {-96.872444, 32.982597}, + {-97.061119, 32.784608}, + {-96.954603, 32.941818}, + {-97.080001831055, 32.750930786133}, + {-97.746277, 32.241955}, + {-97.203912, 32.824282}, + {-97.207899, 32.872015}, + {-96.713857, 32.895503}, + {-96.898137, 32.918288}, + {-96.760025024414, 33.091506958008}, + {-96.702346801758, 32.639694213867}, + {-96.346664428711, 32.724838256836}, + {-96.935806274414, 32.896499633789}, + {-93.242437, 32.168263}, + {-92.127914428711, 32.507858276367}, + {-94.562865, 32.056046}, + {-95.551896, 32.408005}, + {-95.471126, 32.208281}, + {-94.952774, 33.345566}, + {-95.235414, 32.864056}, + {-98.566245, 29.496505}, + {19.046049, 47.505349}, + {18.62663269043, 44.585952758789}, + {17.294540405273, 44.353866577148}, + {17.843856811523, 44.75212097168}, + {18.108901977539, 44.103927612305}, + {17.280808, 43.577271}, + {18.18717956543, 44.392318725586}, + {15.597152709961, 44.87434387207}, + {15.413131713867, 44.985580444336}, + {13.849865, 44.869369}, + {14.355439, 45.359163}, + {-83.194656, 30.371704}, + {-82.489968, 28.19025}, + {-82.658157, 28.248138}, + {-101.022982, 32.365429}, + {-97.078069, 32.996954}, + {-97.13768, 33.753433}, + {-97.224197387695, 29.41520690918}, + {-117.06499, 47.473047}, + {-77.036991, 38.899155}, + {-76.992167, 38.921042}, + {-76.628952026367, 39.729995727539}, + {-76.62703, 39.060929}, + {-78.764647, 39.628145}, + {-77.105756, 38.954439}, + {-77.474114, 38.874435}, + {-76.676331, 39.584427}, + {-77.316970825195, 38.945846557617}, + {-76.913223266602, 38.81950378418}, + {-77.621841430664, 38.955459594727}, + {-80.16243, 25.919495}, + {-80.166394, 25.997231}, + {0.67222595214844, 51.559524536133}, + {0.417896, 51.626557}, + {-1.627007, 52.808189}, + {-0.31958, 52.187948}, + {-0.52391052246094, 52.130813598633}, + {-1.500778, 52.949295}, + {0.941048, 51.787834}, + {0.90431213378906, 51.886367797852}, + {-1.339989, 50.905838}, + {-1.760788, 51.559296}, + {-2.1389007568359, 51.84928894043}, + {-2.3586273193359, 51.72981262207}, + {-1.0951995849609, 51.456527709961}, + {-0.97434997558594, 51.370010375977}, + {-1.576732, 50.804515}, + {-0.83152770996094, 51.426315307617}, + {-0.75050354003906, 51.38786315918}, + {-1.140028, 51.222356}, + {-1.4522552490234, 50.914077758789}, + {-2.4272918701172, 51.316452026367}, + {-5.1793670654297, 50.264511108398}, + {-4.1713714599609, 50.971755981445}, + {-4.2111968994141, 51.545791625977}, + {-97.604598999023, 30.825576782227}, + {-95.812454223633, 33.606491088867}, + {-96.483993530273, 32.947311401367}, + {-96.66389465332, 33.856430053711}, + {-95.658645629883, 30.145797729492}, + {-95.857772827148, 30.568771362305}, + {-93.980484008789, 30.007095336914}, + {-94.743531, 30.250626}, + {-95.942916870117, 30.361404418945}, + {-95.071077, 29.671405}, + {-95.633926391602, 30.765151977539}, + {-95.90237, 29.446949}, + {-96.338621, 30.61821}, + {-95.305709838867, 29.66926574707}, + {-95.27385, 29.993748}, + {-95.600967407227, 29.608840942383}, + {-95.467758178711, 29.961776733398}, + {-95.493851, 29.787369}, + {-95.557022094727, 29.707717895508}, + {-95.41145324707, 29.842300415039}, + {10.035025, 53.613773}, + {9.938254, 53.748108}, + {10.006484985352, 53.634567260742}, + {9.901428, 53.564529}, + {8.9696502685547, 50.013198852539}, + {9.7483062744141, 50.908584594727}, + {8.4505462646484, 50.605087280273}, + {9.8416900634766, 49.749526977539}, + {7.2516632080078, 50.705337524414}, + {8.581849, 50.088082}, + {8.459129, 50.042381}, + {9.275207, 50.192757}, + {9.938507, 51.008835}, + {8.84538, 50.229493}, + {-70.247268676758, 43.660354614258}, + {-122.02857971191, 37.848587036133}, + {-122.46253967285, 37.674179077148}, + {-112.04887390137, 33.447189331055}, + {-116.04927062988, 36.954574584961}, + {-112.21641540527, 33.465042114258}, + {-83.115005493164, 35.794143676758}, + {-121.25816345215, 38.711013793945}, + {-72.719192504883, 42.241744995117}, + {-90.452499389648, 32.851181030273}, + {-89.061081, 30.431992}, + {-76.649551391602, 39.364700317383}, + {-76.575393676758, 39.322128295898}, + {-76.372146606445, 39.684677124023}, + {-76.865158081055, 39.298782348633}, + {-76.821212768555, 39.16145324707}, + {-76.639938354492, 39.17106628418}, + {-75.077133178711, 38.352584838867}, + {-76.560287475586, 38.932113647461}, + {2.4121856689453, 48.847274780273}, + {-3.194191, 48.286351}, + {2.2583770751953, 48.965377807617}, + {2.071456, 48.799488}, + {2.580414, 42.851486}, + {6.11389, 45.070725}, + {5.255584, 46.709747}, + {0.51841735839844, 47.309188842773}, + {2.361467, 48.911771}, + {4.031754, 49.259491}, + {10.768661499023, 48.818435668945}, + {10.563502, 49.29701}, + {10.271836, 50.028847}, + {10.977238, 49.480783}, + {11.012135, 49.311676}, + {8.053315, 50.40358}, + {8.6386871337891, 49.819564819336}, + {8.976282, 49.552276}, + {8.35219, 49.678364}, + {7.323837, 49.369014}, + {16.400527954102, 48.259506225586}, + {16.366195678711, 48.163375854492}, + {16.356583, 48.086746}, + {16.334609985352, 48.182601928711}, + {16.411514, 48.178678}, + {16.357269, 48.199081}, + {16.334609985352, 48.171615600586}, + {16.488419, 48.283539}, + {16.471252, 48.291092}, + {13.155746, 48.292007}, + {13.061096, 47.861938}, + {13.24333190918, 47.97248840332}, + {13.074417114258, 47.800827026367}, + {12.985153198242, 47.815933227539}, + {13.206253051758, 47.461624145508}, + {16.330490112305, 48.199081420898}, + {16.338729858398, 48.197708129883}, + {16.381301879883, 48.260879516602}, + {16.399154663086, 48.218307495117}, + {1.602859, 43.371506}, + {1.4824676513672, 43.617782592773}, + {1.3684844970703, 43.647994995117}, + {7.3642730712891, 47.945022583008}, + {2.2583770751953, 48.845901489258}, + {7.7268218994141, 48.60969543457}, + {1.9850921630859, 48.799209594727}, + {2.0729827880859, 48.758010864258}, + {2.194748, 48.707199}, + {2.092209, 48.790054}, + {-1.6156768798828, 43.41178894043}, + {4.9143218994141, 45.761489868164}, + {4.3636322021484, 45.471725463867}, + {3.0287933349609, 43.174209594727}, + {6.1173248291016, 45.93864440918}, + {2.2995758056641, 48.87336730957}, + {2.3709869384766, 48.898086547852}, + {2.342148, 48.821182}, + {2.2817230224609, 48.828048706055}, + {-1.572418, 47.184906}, + {-1.588211, 47.188339}, + {-1.7351531982422, 48.087844848633}, + {1.8395233154297, 47.866744995117}, + {-1.4632415771484, 48.240280151367}, + {-0.680466, 49.062881}, + {-3.0164337158203, 47.656631469727}, + {7.469697, 51.360634}, + {7.923202, 51.528563}, + {7.238256, 52.186555}, + {7.1086, 50.881347}, + {6.930727, 50.833054}, + {6.9220733642578, 51.184616088867}, + {7.549323, 51.557808}, + {8.3969879150391, 50.057144165039}, + {9.008926, 50.045197}, + {7.172709, 49.275483}, + {11.00212097168, 49.48860168457}, + {8.313816, 49.055538}, + {10.897631, 49.901544}, + {10.939965, 49.90859}, + {8.917923, 49.132919}, + {8.22821, 48.764328}, + {9.500869, 47.672032}, + {11.921539, 47.994289}, + {-87.948989868164, 15.652084350586}, + {-87.174453735352, 14.10026550293}, + {-87.168960571289, 14.09065246582}, + {-87.178573608398, 14.07829284668}, + {-87.184588, 14.074053}, + {-87.148047, 14.041041}, + {-88.034133911133, 15.479049682617}, + {-87.240371704102, 14.037094116211}, + {-88.004608, 15.542221}, + {-85.778396, 15.21345}, + {-86.968671, 14.196075}, + {-87.195053100586, 14.104385375977}, + {-87.156600952148, 14.10026550293}, + {-87.221145629883, 14.05632019043}, + {-87.207412719727, 14.072799682617}, + {-88.774922, 14.720871}, + {-88.033136, 15.569434}, + {-88.017654418945, 15.52848815918}, + {-88.02864074707, 15.532608032227}, + {84.027744, 24.954809}, + {-87.980394, 15.478733}, + {84.01725769043, 24.952011108398}, + {84.077683, 24.042618}, + {84.43473815918, 26.472244262695}, + {85.141983, 25.60817}, + {85.898666381836, 26.146774291992}, + {84.000778198242, 25.071487426758}, + {87.050857543945, 25.97785949707}, + {86.736373901367, 26.303329467773}, + {86.149292, 25.117493}, + {84.823379516602, 26.359634399414}, + {87.299423217773, 24.108810424805}, + {84.514389038086, 25.552139282227}, + {86.787643, 23.743515}, + {84.801406860352, 25.331039428711}, + {72.83317565918, 18.958969116211}, + {86.036545, 20.606918}, + {85.11879, 25.597305}, + {86.645736694336, 20.311660766602}, + {85.055465698242, 20.878829956055}, + {81.887283325195, 18.351974487305}, + {86.196670532227, 20.172958374023}, + {85.236740112305, 20.409164428711}, + {86.711654663086, 22.204055786133}, + {132.237282, 34.159584}, + {130.9220123291, 33.959426879883}, + {132.08518981934, 34.084396362305}, + {133.6988067627, 34.629592895508}, + {133.68138, 34.547053}, + {133.576034, 34.537857}, + {133.89793395996, 34.68864440918}, + {133.884635, 34.625112}, + {133.76609802246, 34.596633911133}, + {133.72627258301, 34.537582397461}, + {134.037552, 34.718857}, + {133.7784576416, 34.610366821289}, + {133.856757, 35.425271}, + {133.359433, 35.433017}, + {133.06297302246, 35.464553833008}, + {133.224508, 35.44962}, + {132.713699, 34.409866}, + {133.756142, 34.273911}, + {133.76215, 34.239235}, + {134.11079406738, 34.345321655273}, + {133.139186, 34.226533}, + {133.084942, 33.926435}, + {132.987496, 34.066146}, + {132.7498626709, 33.860549926758}, + {30.431442260742, 59.916000366211}, + {38.411636352539, 55.720596313477}, + {37.54508972168, 55.730209350586}, + {37.782669067383, 55.454177856445}, + {60.632858276367, 56.88102722168}, + {60.558700561523, 56.872787475586}, + {61.389541625977, 55.160293579102}, + {92.781600952148, 55.995254516602}, + {45.046005249023, 53.207473754883}, + {34.100601, 44.854843}, + {33.925095, 44.962578}, + {34.785459, 45.281525}, + {33.597565, 44.669552}, + {35.965277, 45.26795}, + {33.441322, 44.573219}, + {33.933334350586, 45.898818969727}, + {52.453536987305, 29.607467651367}, + {139.46113586426, 35.616989135742}, + {138.86650085449, 35.112991333008}, + {139.69047546387, 35.52360534668}, + {138.28559875488, 36.373672485352}, + {139.76463317871, 35.669174194336}, + {139.74128723145, 35.654067993164}, + {139.70970153809, 35.647201538086}, + {139.22080993652, 35.798263549805}, + {139.58335876465, 35.696640014648}, + {139.48173522949, 35.671920776367}, + {139.54078674316, 35.660934448242}, + {139.53804016113, 35.662307739258}, + {139.39796447754, 35.73371887207}, + {139.43092346191, 35.717239379883}, + {139.41581726074, 35.737838745117}, + {139.29908752441, 35.625228881836}, + {139.17686462402, 36.413497924805}, + {139.73304748535, 35.68977355957}, + {139.77836608887, 35.715866088867}, + {139.48448181152, 35.560684204102}, + {139.36225891113, 35.700759887695}, + {139.47761535645, 35.710372924805}, + {139.34852600098, 35.882034301758}, + {85.351832, 27.68959}, + {85.288533, 27.69977}, + {51.463394165039, 35.805130004883}, + {51.393356323242, 35.66780090332}, + {52.463150024414, 29.615707397461}, + {51.536178588867, 32.356796264648}, + {51.492233276367, 35.818862915039}, + {48.494338989258, 36.692276000977}, + {51.348037719727, 35.784530639648}, + {48.480606079102, 36.670303344727}, + {54.996529, 36.404572}, + {50.815887, 35.912247}, + {51.636428833008, 32.713851928711}, + {57.071914672852, 30.239181518555}, + {57.759933, 28.688278}, + {55.128708, 30.119019}, + {48.298064, 38.242722}, + {45.069695, 37.54097}, + {47.522221, 37.970123}, + {48.667374, 31.271896}, + {48.753890991211, 31.310348510742}, + {48.726425170898, 31.329574584961}, + {112.65998840332, -7.3340606689453}, + {112.48008728027, -7.4260711669922}, + {115.258402, -8.558804}, + {115.080163, -8.57187}, + {123.55293273926, -10.17951965332}, + {112.41279602051, -8.1964874267578}, + {112.426529, -7.477341}, + {112.240821, -7.458146}, + {112.45399475098, -6.9893646240234}, + {111.59980773926, -7.4892425537109}, + {111.95686340332, -7.7391815185547}, + {112.21641540527, -7.7982330322266}, + {112.127632, -7.94914}, + {112.8247833252, -8.2308197021484}, + {113.219581, -8.12291}, + {112.7986907959, -7.2887420654297}, + {112.63252258301, -7.9712677001953}, + {106.93199157715, -6.2422943115234}, + {105.86357116699, -6.5663909912109}, + {106.2068939209, -6.2175750732422}, + {105.8992767334, -6.3439178466797}, + {119.42688, -5.132675}, + {112.16697692871, -7.1610260009766}, + {112.39768981934, -7.1225738525391}, + {103.876761, 1.501364}, + {103.28178405762, 1.8436431884766}, + {99.84992980957, 6.3274383544922}, + {100.387093, 5.856716}, + {100.323823, 6.661639}, + {101.03645324707, 4.5682525634766}, + {100.727798, 4.858806}, + {100.674625, 4.196277}, + {101.117386, 4.08989}, + {100.763623, 4.495084}, + {100.342388, 5.41191}, + {100.4857635498, 5.3249359130859}, + {100.481675, 5.623396}, + {100.484992, 5.110955}, + {100.537262, 5.213699}, + {100.80986022949, 5.6984710693359}, + {103.30483, 3.525048}, + {103.18977355957, 4.8154449462891}, + {103.31474304199, 3.8582611083984}, + {103.300388, 3.788677}, + {16.232986450195, 45.548629760742}, + {103.26942443848, 3.7868499755859}, + {102.27653503418, 5.7561492919922}, + {13.861312866211, 44.879837036133}, + {15.882797241211, 43.694686889648}, + {15.637907, 44.862186}, + {18.035054, 42.686289}, + {15.91438293457, 45.801315307617}, + {18.904037475586, 45.048751831055}, + {16.035232543945, 45.798568725586}, + {15.523682, 45.510521}, + {15.834732, 45.62645}, + {15.98030090332, 45.769729614258}, + {16.127243041992, 45.823287963867}, + {15.976639, 45.840225}, + {19.350357055664, 45.220413208008}, + {16.483612, 43.512726}, + {15.225677, 44.145813}, + {18.117142, 42.640196}, + {16.489007, 43.52793}, + {13.934097290039, 44.81803894043}, + {14.798241, 45.123596}, + {-66.050491, 18.44773}, + {-86.76383972168, 34.698257446289}, + {-85.954971313477, 32.406234741211}, + {-85.750305, 32.451965}, + {-81.170425415039, 36.111373901367}, + {-88.052795, 32.780174}, + {-81.424486, 35.780755}, + {-80.626602172852, 35.531845092773}, + {-79.935452, 36.117059}, + {-80.912246704102, 34.120101928711}, + {-80.103378295898, 36.156692504883}, + {-80.776978, 35.261495}, + {-79.929786, 32.785949}, + {-78.862717, 35.947792}, + {-78.518194, 35.823851}, + {-79.852066040039, 36.166305541992}, + {-78.669662475586, 35.64582824707}, + {-77.204360961914, 34.699630737305}, + {-77.433700561523, 35.449447631836}, + {-77.685012817383, 34.389266967773}, + {-80.854376, 34.914455}, + {106.76307678223, -6.1901092529297}, + {106.75895690918, -6.1901092529297}, + {106.78230285645, -6.1118316650391}, + {106.77131652832, -6.2821197509766}, + {107.61177062988, -6.8163299560547}, + {115.15663146973, -8.7897491455078}, + {106.81251525879, -6.2189483642578}, + {116.13533, -8.565903}, + {114.591787, -3.308465}, + {112.74925231934, -7.2653961181641}, + {106.71775817871, -6.1324310302734}, + {117.59834289551, 3.2938385009766}, + {98.526077, 3.199081}, + {98.667526245117, 3.5877227783203}, + {98.681946, 3.606949}, + {98.656539916992, 3.6865997314453}, + {98.652077, 3.569527}, + {104.502773, 0.92512}, + {104.017516, 1.140708}, + {104.03984069824, 1.0553741455078}, + {104.663948, -2.930379}, + {104.71362, -2.918032}, + {103.5880279541, -1.6870880126953}, + {-3.176908, 40.627113}, + {-3.692093, 40.394472}, + {-3.7703704833984, 40.474319458008}, + {-3.703108, 40.364258}, + {-3.713379, 40.389862}, + {-3.642066, 40.432925}, + {-3.655079, 40.476935}, + {-3.816391, 40.257044}, + {-1.1569976806641, 38.02848815918}, + {2.1828460693359, 41.406784057617}, + {2.150193, 41.379168}, + {2.08068, 41.284505}, + {2.070408, 41.58823}, + {1.8779754638672, 41.853103637695}, + {2.774392, 41.883818}, + {3.029861, 41.784287}, + {1.5566253662109, 41.229629516602}, + {-0.875494, 41.644079}, + {1.1927032470703, 41.920394897461}, + {2.285843, 41.934129}, + {-8.716597, 42.238017}, + {16.201400756836, 38.770065307617}, + {15.851441, 41.335716}, + {15.345154, 41.511498}, + {18.365707397461, 39.846725463867}, + {18.159713745117, 40.174942016602}, + {18.158340454102, 40.012893676758}, + {18.162912, 40.092134}, + {17.396851, 40.449601}, + {17.073440551758, 40.602035522461}, + {15.238723754883, 37.247085571289}, + {16.293411254883, 41.232376098633}, + {15.156326293945, 41.912155151367}, + {15.995407104492, 41.67594909668}, + {15.678852, 38.098476}, + {15.531546, 38.191251}, + {15.300522, 37.87262}, + {15.010757446289, 38.024368286133}, + {14.647524, 36.757508}, + {14.719038, 36.916971}, + {14.696274, 36.893692}, + {15.08876, 37.5168}, + {9.9542999267578, 53.655166625977}, + {9.961559, 48.353086}, + {6.8108367919922, 51.227188110352}, + {11.567916870117, 48.138656616211}, + {11.471617, 48.827534}, + {10.366561, 53.980363}, + {10.077626, 53.660345}, + {10.41172, 53.177948}, + {9.8897552490234, 52.295608520508}, + {10.517349243164, 52.188491821289}, + {8.415134, 53.415027}, + {12.926997, 52.422009}, + {13.890151977539, 52.502975463867}, + {13.709939, 52.432688}, + {13.538725, 52.522803}, + {13.694229, 52.804459}, + {12.429314, 51.347008}, + {13.734227, 51.084636}, + {12.961464, 51.008492}, + {-2.6332855224609, 53.461532592773}, + {-5.9305572509766, 54.624710083008}, + {-5.9291839599609, 54.597244262695}, + {-0.33439636230469, 51.56364440918}, + {-2.0867156982422, 51.898727416992}, + {-0.13664245605469, 51.29997253418}, + {-0.82328796386719, 51.368637084961}, + {-0.320663, 51.282527}, + {0.022659301757812, 51.455154418945}, + {-0.085659, 51.442966}, + {-0.044631958007812, 51.481246948242}, + {-2.1800994873047, 50.999221801758}, + {-1.926956, 50.75798}, + {-2.2556304931641, 51.328811645508}, + {-2.589615, 50.99675}, + {-0.983963, 51.462296}, + {-0.97984313964844, 51.424942016602}, + {-0.79582214355469, 51.405715942383}, + {-0.77247619628906, 51.413955688477}, + {-0.82740783691406, 51.430435180664}, + {-0.84251403808594, 51.367263793945}, + {107.61726379395, -7.1939849853516}, + {107.94548034668, -6.8190765380859}, + {112.77397155762, -7.2310638427734}, + {111.368752, -7.389679}, + {111.470444, -7.9655}, + {97.596359, 2.894211}, + {124.917984, 1.364365}, + {106.832088, -6.382435}, + {106.809731, -6.226435}, + {107.626877, -2.733536}, + {106.611191, -6.170609}, + {106.782159, -6.1413}, + {106.592789, -6.15303}, + {106.862583, -6.166796}, + {106.682314, -6.379174}, + {106.678297, -6.312924}, + {106.662827, -6.310272}, + {107.348295, -6.328615}, + {107.28630065918, -6.3411712646484}, + {106.810799, -6.497726}, + {-80.199629, 40.109582}, + {-77.86491394043, 40.808029174805}, + {-76.343994, 40.018387}, + {-77.866287231445, 40.823135375977}, + {-75.527847, 40.731949}, + {-75.223374, 40.834004}, + {-75.418273, 41.165179}, + {-76.948928833008, 41.246109008789}, + {-76.234817504883, 40.783309936523}, + {-76.607666, 40.14576}, + {-75.006243, 39.913628}, + {-74.99199, 39.897537}, + {-75.258407592773, 39.879684448242}, + {-75.005855, 40.048805}, + {-76.839065551758, 39.057083129883}, + {-74.448038, 39.370147}, + {-75.875015258789, 40.158462524414}, + {-75.390243530273, 39.935989379883}, + {-74.734868, 39.462229}, + {-75.436935424805, 38.976058959961}, + {-75.300979614258, 40.030746459961}, + {8.1443023681641, 45.387954711914}, + {8.466682, 45.42057}, + {8.087425, 45.334854}, + {8.3338165283203, 45.73127746582}, + {8.4629058837891, 44.307174682617}, + {8.6867523193359, 46.021041870117}, + {8.7224578857422, 44.421157836914}, + {9.2305755615234, 44.349746704102}, + {8.7059783935547, 44.415664672852}, + {9.4393157958984, 44.296188354492}, + {9.2580413818359, 44.458236694336}, + {9.904175, 44.154739}, + {8.2253265380859, 44.124526977539}, + {8.2500457763672, 44.134140014648}, + {8.9765167236328, 44.42253112793}, + {8.9531707763672, 44.40055847168}, + {11.566543579102, 44.495315551758}, + {11.19987487793, 44.653244018555}, + {12.572342, 45.484634}, + {11.966171264648, 45.739517211914}, + {49.760513305664, 33.671035766602}, + {52.415084838867, 35.651321411133}, + {49.96994, 30.494957}, + {57.129592895508, 27.454147338867}, + {52.541427612305, 29.626693725586}, + {51.309086, 35.752945}, + {51.120071411133, 35.725479125977}, + {53.211656, 36.60114}, + {48.741989, 31.304169}, + {46.857376098633, 38.382797241211}, + {51.341171264648, 35.62385559082}, + {54.451675415039, 36.824111938477}, + {49.619522, 31.26503}, + {48.686599731445, 31.347427368164}, + {46.115799, 38.018188}, + {52.523574829102, 29.622573852539}, + {51.36589050293, 35.69938659668}, + {50.515594, 29.572678}, + {51.613633, 32.737885}, + {47.393941, 37.576087}, + {51.153030395508, 35.515365600586}, + {53.149795532227, 29.790115356445}, + {51.657421, 32.71856}, + {50.976072, 35.716013}, + {51.238174438477, 35.512619018555}, + {-73.72398, 40.967917}, + {-84.326248168945, 33.912734985352}, + {-84.320755004883, 33.978652954102}, + {-84.486923217773, 34.062423706055}, + {-84.355087280273, 33.74382019043}, + {-84.327621459961, 34.022598266602}, + {-84.393539428711, 33.728713989258}, + {-84.407272338867, 33.797378540039}, + {-83.664321899414, 32.542190551758}, + {-83.796157836914, 32.796249389648}, + {-84.28092956543, 34.014358520508}, + {-83.53385925293, 34.212112426758}, + {-84.243851, 33.955994}, + {-84.220504760742, 33.49250793457}, + {-84.592666625977, 34.052810668945}, + {-84.471817, 33.906784}, + {-84.416885375977, 33.915481567383}, + {-84.414493, 33.730575}, + {-84.406815, 33.672867}, + {-84.009017944336, 33.920974731445}, + {-84.049072, 33.811569}, + {120.55778503418, 31.300735473633}, + {120.65391540527, 31.291122436523}, + {120.682754, 31.308289}, + {119.38636779785, 32.355422973633}, + {119.9356842041, 31.714096069336}, + {120.65254211426, 31.259536743164}, + {120.60585021973, 31.336441040039}, + {120.75553894043, 31.652297973633}, + {120.66352844238, 31.133193969727}, + {120.576324, 31.328545}, + {120.951233, 31.406479}, + {118.79447937012, 31.987380981445}, + {120.08811950684, 31.708602905273}, + {120.6127166748, 31.335067749023}, + {120.41633605957, 31.560287475586}, + {119.44679260254, 32.397994995117}, + {119.42893981934, 32.40348815918}, + {119.38087463379, 32.377395629883}, + {119.38636779785, 32.318344116211}, + {117.22618103027, 34.264297485352}, + {118.76426696777, 32.097244262695}, + {118.81782531738, 31.947555541992}, + {120.53169250488, 31.319961547852}, + {118.85353088379, 31.96403503418}, + {-74.148167, 4.676443}, + {-74.142609, 4.602585}, + {-73.832931518555, 3.7964630126953}, + {-74.059524536133, 4.6781158447266}, + {-73.361892700195, 5.5419158935547}, + {-74.08493, 4.631081}, + {-72.881240844727, 5.7259368896484}, + {-74.775009155273, 2.1141815185547}, + {-74.262771606445, 4.6726226806641}, + {-74.065516, 4.881691}, + {-74.035721, 4.85939}, + {-73.999562, 5.019378}, + {-73.769760131836, 3.9667510986328}, + {-75.256004, 2.937126}, + {-73.632431030273, 4.1480255126953}, + {-72.492132, 7.902791}, + {-73.076248168945, 7.0401763916016}, + {-73.101017, 7.082601}, + {-73.081783, 7.123107}, + {14.534633, 50.057928}, + {14.364426, 49.986454}, + {14.700699, 50.106735}, + {14.454126, 48.95779}, + {13.159561157227, 49.712448120117}, + {14.635848999023, 49.426803588867}, + {15.363451, 50.244843}, + {15.512832, 50.635575}, + {18.27301, 49.776306}, + {16.065216, 50.393372}, + {15.791703, 49.447404}, + {16.430740356445, 49.764633178711}, + {16.413084, 49.209431}, + {14.51774597168, 49.961013793945}, + {17.250799, 49.581996}, + {18.531875610352, 49.706954956055}, + {18.103213, 49.459959}, + {13.413092, 49.727554}, + {14.403076, 50.07637}, + {14.424081, 50.085758}, + {14.491653442383, 50.134048461914}, + {-38.209762573242, -6.1049652099609}, + {-43.378786, -22.92399}, + {-36.045455932617, -8.0756378173828}, + {-50.073623657227, -6.0720062255859}, + {-44.26058, -2.507452}, + {-35.330564, -7.663526}, + {-59.983748, -3.008861}, + {-48.465499, -1.337436}, + {-35.24027, -5.887423}, + {13.557014, 52.4049}, + {13.753602, 52.417275}, + {13.475418, 52.162649}, + {11.553319, 53.289363}, + {11.735916, 53.541641}, + {11.562423706055, 53.287124633789}, + {14.007819, 53.230508}, + {13.463651, 52.513962}, + {14.505082, 52.499314}, + {13.390804, 52.554306}, + {13.535842895508, 52.509841918945}, + {13.129348754883, 52.527694702148}, + {13.027039, 52.437744}, + {100.282284, 5.308544}, + {101.078568, 4.59549}, + {103.659439, 1.540421}, + {102.86293029785, 2.4932098388672}, + {101.953601, 2.714378}, + {103.777753, 1.539882}, + {101.633411, 3.094394}, + {101.61323547363, 3.1441497802734}, + {101.653368, 3.073621}, + {101.700892, 3.035159}, + {101.6187286377, 3.0246734619141}, + {103.80363464355, 1.5648651123047}, + {101.649342, 3.13179}, + {101.54731750488, 2.9697418212891}, + {101.82884216309, 2.8832244873047}, + {101.69426, 3.171116}, + {101.595547, 3.076199}, + {101.69014, 3.193039}, + {101.723099, 3.009364}, + {101.88789367676, 2.4410247802734}, + {101.77665710449, 3.1221771240234}, + {99.702988, 6.387863}, + {103.871384, 1.509476}, + {7.6938629150391, 51.529312133789}, + {7.5414276123047, 51.477127075195}, + {7.1143341064453, 51.935806274414}, + {6.60759, 51.835556}, + {7.236556, 52.210636}, + {7.4301910400391, 52.32307434082}, + {7.813339, 52.235184}, + {7.604588, 51.927116}, + {9.090044, 53.881811}, + {10.265136, 54.392163}, + {10.338879, 54.427501}, + {9.3871307373047, 54.724960327148}, + {9.4022369384766, 54.80598449707}, + {10.853118, 53.816537}, + {10.115395, 53.6509}, + {29.84504699707, 50.856399536133}, + {31.221084594727, 49.830551147461}, + {30.827931, 50.557807}, + {30.531235, 50.295868}, + {30.414688, 50.395523}, + {30.458908081055, 50.469131469727}, + {32.52571105957, 51.448287963867}, + {31.484701, 49.135698}, + {30.143051147461, 49.197463989258}, + {30.752639, 46.470864}, + {30.309219, 47.594284}, + {30.708847045898, 46.408309936523}, + {-111.90467834473, 33.526840209961}, + {-111.887146, 33.521747}, + {-111.73027038574, 33.499374389648}, + {-111.780036, 33.216607}, + {-111.786364, 33.426766}, + {-111.97608947754, 33.716354370117}, + {-112.338302, 33.754658}, + {-112.119379, 33.59681}, + {-112.165164, 33.535066}, + {-112.0516204834, 33.657302856445}, + {-109.472812, 34.084397}, + {-110.807725, 32.214942}, + {-110.978566, 32.274242}, + {-112.083305, 33.021077}, + {-109.35035705566, 32.244186401367}, + {-109.64698791504, 32.805862426758}, + {-111.94862365723, 33.451309204102}, + {-111.884028, 33.385884}, + {-112.099686, 33.491357}, + {-111.856959, 33.336562}, + {-112.032976, 33.439366}, + {-112.135671, 33.456319}, + {-112.676523, 33.436694}, + {-106.701279, 35.127869}, + {-106.567856, 35.11719}, + {-3.8280487060547, 40.354843139648}, + {-3.7676239013672, 40.339736938477}, + {-3.7058258056641, 40.393295288086}, + {-3.847, 40.396317}, + {-4.0120697021484, 40.360336303711}, + {-3.7580108642578, 40.382308959961}, + {-3.60576, 40.864704}, + {-4.119492, 40.703049}, + {-3.0287933349609, 39.562454223633}, + {-3.33122, 39.921454}, + {-4.2977142333984, 40.279312133789}, + {-4.32106, 40.356522}, + {-3.7126922607422, 40.592422485352}, + {-3.6440277099609, 40.538864135742}, + {-1.598609, 38.465195}, + {-1.867676, 38.982925}, + {-3.883667, 40.440674}, + {-3.905903, 38.976448}, + {-3.297846, 40.535178}, + {-3.493515, 40.444656}, + {-4.0834808349609, 39.86457824707}, + {-4.187851, 40.154343}, + {116.49971, 39.81823}, + {116.542282, 39.868011}, + {116.4722442627, 39.973068237305}, + {116.55464172363, 39.904403686523}, + {116.407013, 40.072289}, + {116.43379211426, 40.069198608398}, + {116.31980895996, 40.00602722168}, + {116.1824798584, 39.997787475586}, + {116.318043, 40.001319}, + {116.37748718262, 39.865951538086}, + {116.48735046387, 40.195541381836}, + {121.351204, 31.15551}, + {121.48887634277, 31.254043579102}, + {121.53144836426, 31.227951049805}, + {121.30897521973, 30.990371704102}, + {121.26502990723, 31.365280151367}, + {121.07414245605, 31.203231811523}, + {121.39823913574, 31.208724975586}, + {121.35429382324, 31.18537902832}, + {121.394806, 31.204605}, + {121.18537902832, 31.149673461914}, + {121.21421813965, 31.280136108398}, + {121.41059875488, 31.208724975586}, + {0.16822814941406, 51.565017700195}, + {0.151291, 51.500015}, + {-0.191491, 51.413623}, + {-0.173035, 51.422882}, + {-0.185613, 51.362425}, + {-0.395726, 51.47316}, + {0.001717, 53.440247}, + {-1.0100555419922, 53.480758666992}, + {-1.219482, 54.707794}, + {-1.2805938720703, 54.572525024414}, + {-2.644958, 53.76297}, + {-2.645618, 53.715645}, + {-2.82947, 53.686752}, + {-1.9356536865234, 52.428817749023}, + {-1.6857147216797, 52.446670532227}, + {-2.502241, 53.551976}, + {-2.799454, 53.504301}, + {1.080093, 51.241313}, + {0.69419860839844, 51.345291137695}, + {5.444736, 43.289097}, + {5.4004669189453, 43.27033996582}, + {5.4045867919922, 43.29231262207}, + {7.2255706787109, 43.679580688477}, + {2.2762298583984, 48.858261108398}, + {2.2817230224609, 48.865127563477}, + {2.316593, 48.830855}, + {1.4810943603516, 43.575210571289}, + {1.519494, 43.56771}, + {2.3270416259766, 48.85139465332}, + {1.433179, 43.618382}, + {2.3352813720703, 48.884353637695}, + {1.3739776611328, 43.652114868164}, + {2.3242950439453, 48.867874145508}, + {2.3435211181641, 48.859634399414}, + {2.3627471923828, 48.863754272461}, + {3.072614, 50.640622}, + {-0.43190002441406, 44.693069458008}, + {3.7676239013672, 43.598556518555}, + {-0.58845520019531, 44.844131469727}, + {-0.58845520019531, 44.888076782227}, + {7.7364349365234, 48.54377746582}, + {0.688705, 47.397276}, + {7.762329, 48.557919}, + {113.34114074707, 23.213424682617}, + {113.92616271973, 22.530899047852}, + {113.308868, 23.143387}, + {114.24339294434, 22.716293334961}, + {114.00444030762, 22.532272338867}, + {114.14039611816, 22.578964233398}, + {113.946762, 22.497253}, + {114.12528991699, 22.576217651367}, + {113.95362854004, 22.562484741211}, + {114.06211853027, 22.639389038086}, + {114.13764953613, 22.569351196289}, + {113.967361, 22.595444}, + {113.55125427246, 23.076095581055}, + {113.25050354004, 22.937393188477}, + {113.7572479248, 23.028030395508}, + {113.5718536377, 22.282333374023}, + {112.78221130371, 22.254867553711}, + {112.7904510498, 22.239761352539}, + {113.58833312988, 22.243881225586}, + {-74.606094360352, 46.115798950195}, + {-64.808578, 45.039139}, + {-73.874817, 46.061211}, + {-73.791046, 45.537643}, + {-73.572006225586, 45.519790649414}, + {-73.668162, 45.483081}, + {-73.507922, 45.554311}, + {-73.567886, 45.539017}, + {-73.672624, 45.535592}, + {-77.114232, 45.799764}, + {-79.837985, 43.467313}, + {-75.995865, 45.528717}, + {7.085495, 50.950764}, + {7.210463, 50.879402}, + {6.512236, 51.204554}, + {6.460859, 51.152713}, + {7.1555328369141, 50.699844360352}, + {7.073823, 50.578309}, + {7.133789, 51.255569}, + {6.7545318603516, 51.170883178711}, + {6.437143, 50.874881}, + {6.147454, 50.798286}, + {6.901817, 50.95665}, + {6.876526, 50.883179}, + {6.8932342529297, 50.996475219727}, + {101.889911, 14.107908}, + {100.64506530762, 13.70475769043}, + {100.53108215332, 14.020614624023}, + {103.212123, 16.393263}, + {100.56953430176, 14.065933227539}, + {102.81349182129, 16.466445922852}, + {98.99812, 18.714413}, + {100.058946, 17.635117}, + {99.987258911133, 17.361831665039}, + {99.543685913086, 8.3736419677734}, + {99.33219909668, 9.1509246826172}, + {100.60523986816, 13.917617797852}, + {100.63270568848, 14.06867980957}, + {100.70686340332, 13.656692504883}, + {100.546188, 13.737259}, + {100.531425, 13.770676}, + {10.219345092773, 52.342300415039}, + {10.436325073242, 51.920700073242}, + {9.812395, 52.250748}, + {10.588760375977, 52.369766235352}, + {10.754928588867, 52.41096496582}, + {10.514602661133, 52.261276245117}, + {9.7661590576172, 49.667129516602}, + {10.051145, 49.913619}, + {9.1632843017578, 49.991226196289}, + {9.146118, 49.98024}, + {13.108869, 51.162519}, + {100.66841125488, 13.658065795898}, + {98.362655639648, 7.8737640380859}, + {102.088394, 15.869751}, + {100.4761505127, 13.743209838867}, + {101.97303771973, 13.019485473633}, + {100.42259216309, 13.875045776367}, + {100.58326721191, 14.061813354492}, + {100.611806, 13.987446}, + {98.381881713867, 7.9396820068359}, + {100.45829772949, 13.689651489258}, + {100.365738, 13.790451}, + {100.635074, 13.827036}, + {100.541153, 13.9048}, + {100.71647644043, 13.653945922852}, + {100.10398864746, 13.468551635742}, + {100.538733, 14.454575}, + {-81.912638, 33.570451}, + {-85.139786, 34.157181}, + {-85.183181762695, 34.278030395508}, + {-84.304437, 33.744063}, + {-84.267196655273, 33.757553100586}, + {-84.087317, 33.62703}, + {-84.496795, 33.68672}, + {-84.118003, 33.957578}, + {-84.51743, 33.857096}, + {-84.209426, 33.942756}, + {-84.388551, 33.823292}, + {-84.350967407227, 33.80012512207}, + {-84.372940063477, 34.048690795898}, + {-84.049476, 34.200157}, + {-83.658828735352, 33.98551940918}, + {-81.638717651367, 31.924209594727}, + {-81.66618347168, 31.797866821289}, + {-83.572637, 32.860171}, + {-82.95551, 32.968075}, + {-111.93901062012, 40.651473999023}, + {-85.959091186523, 30.741806030273}, + {22.074966430664, 46.383590698242}, + {27.726058959961, 45.695571899414}, + {6.1063385009766, 46.259994506836}, + {7.5208282470703, 46.958999633789}, + {-82.636002, 30.324875}, + {-84.279734, 30.458212}, + {-82.5103, 28.125229}, + {-82.217407, 27.885437}, + {-82.546463012695, 28.013076782227}, + {-82.712043, 27.800805}, + {-82.712202, 27.967758}, + {-82.681557, 27.832154}, + {-81.230991, 28.421584}, + {-81.385989, 28.768172}, + {-81.012496948242, 29.073257446289}, + {-81.373672485352, 28.723068237305}, + {-81.511968, 28.545914}, + {-81.998519897461, 28.970260620117}, + {-81.560675, 28.365434}, + {-80.761981, 28.35731}, + {-80.726353, 28.23814}, + {-82.134475708008, 29.146041870117}, + {-82.580658, 28.452118}, + {-80.115737915039, 26.643905639648}, + {-80.055313110352, 26.708450317383}, + {-82.11832, 27.020511}, + {-82.354202270508, 26.93229675293}, + {34.868545532227, 32.078018188477}, + {34.772415161133, 32.071151733398}, + {34.773788452148, 32.061538696289}, + {34.858932495117, 32.126083374023}, + {34.775161743164, 32.076644897461}, + {-78.327261, 44.26271}, + {-79.893997, 43.209457}, + {-81.541208, 43.610479}, + {-79.871033, 43.202825}, + {-75.763778686523, 45.370101928711}, + {-75.518318, 45.466355}, + {-75.897217, 45.314484}, + {-81.213004, 43.007094}, + {-79.082919, 43.267159}, + {-80.319691, 42.874427}, + {-81.331611, 42.961304}, + {-76.606518, 44.476351}, + {-80.511599, 43.469053}, + {-78.937596, 43.88252}, + {-79.687304, 44.382331}, + {-79.406016, 43.70084}, + {-79.294758, 44.268224}, + {-79.380794, 43.646114}, + {-79.006118774414, 43.843002319336}, + {-79.228048, 43.788022}, + {-79.587705, 43.762293}, + {-8.602195, 51.980219}, + {-9.5107269287109, 52.022323608398}, + {-7.721256, 52.652982}, + {-6.397696, 53.50377}, + {-6.279569, 53.28222}, + {-6.413955, 53.372726}, + {-9.191965, 51.853247}, + {-6.4496612548828, 52.36701965332}, + {-10.307729, 51.838178}, + {-8.722037, 53.387204}, + {-7.3423004150391, 53.910598754883}, + {-7.863808, 53.866654}, + {-6.3384246826172, 52.551040649414}, + {-9.0259552001953, 52.82844543457}, + {-80.401382446289, 25.462875366211}, + {-80.408249, 25.524673}, + {-80.073165893555, 26.613693237305}, + {-80.314316, 27.271912}, + {-81.241836547852, 28.577499389648}, + {-81.242306, 28.274079}, + {-81.281661987305, 28.199844360352}, + {-81.42448425293, 28.466262817383}, + {-81.824112, 28.458481}, + {-81.595365, 28.487748}, + {-80.58815, 28.55484}, + {-81.170425, 28.580933}, + {-81.355819702148, 28.626937866211}, + {-81.578588, 28.420956}, + {-81.545333862305, 28.38249206543}, + {-84.22999, 30.467758}, + {-81.759567260742, 30.384750366211}, + {-82.339096069336, 29.673385620117}, + {39.775314331055, 47.129287719727}, + {37.631607055664, 55.723342895508}, + {30.534439086914, 59.931106567383}, + {30.343551635742, 59.921493530273}, + {45.032272338867, 53.291244506836}, + {45.000412, 53.192368}, + {30.362777709961, 59.933853149414}, + {56.021485, 54.764076}, + {55.916633, 54.546089}, + {107.65434265137, 51.843795776367}, + {107.655596, 51.806039}, + {106.52961730957, 51.227188110352}, + {34.337387, 61.810226}, + {53.693357, 63.561238}, + {48.462753295898, 55.885391235352}, + {44.550247192383, 43.02864074707}, + {44.406509, 54.317551}, + {49.104080200195, 55.823593139648}, + {49.067944, 55.799288}, + {8.986301, 48.683853}, + {9.0163421630859, 48.701705932617}, + {8.944015, 47.971115}, + {9.196854, 48.520177}, + {9.2305755615234, 48.583602905273}, + {132.35023498535, 33.441696166992}, + {132.751486, 33.841823}, + {133.643532, 33.582115}, + {134.34837341309, 34.067916870117}, + {134.49668884277, 34.096755981445}, + {134.5516204834, 34.044570922852}, + {130.43174743652, 33.584518432617}, + {134.49256896973, 34.102249145508}, + {134.285889, 34.108429}, + {130.432434, 33.613358}, + {130.43037414551, 33.60237121582}, + {130.40153503418, 33.584518432617}, + {130.41801452637, 33.632583618164}, + {130.39329528809, 33.53645324707}, + {130.42488098145, 33.653182983398}, + {130.503159, 33.557739}, + {130.43174743652, 33.511734008789}, + {130.38642883301, 33.59001159668}, + {130.37132263184, 33.579025268555}, + {130.392075, 33.577805}, + {130.92475891113, 33.812484741211}, + {130.89454650879, 33.867416381836}, + {130.641586, 33.753159}, + {130.885849, 33.879318}, + {-89.024276733398, 41.942367553711}, + {-87.885818481445, 42.048110961914}, + {-87.872085571289, 42.370834350586}, + {-87.832260131836, 42.377700805664}, + {-87.178574, 41.572078}, + {-85.959091186523, 31.80061340332}, + {-87.41787, 41.665651}, + {-86.167835, 32.533265}, + {-86.604537963867, 31.836318969727}, + {-86.530198, 30.499452}, + {-88.211215, 30.496694}, + {-86.601052, 30.760979}, + {-88.273173, 30.751842}, + {-85.14473, 32.687759}, + {-87.945145, 34.057755}, + {-86.706334, 33.198302}, + {-85.768204, 33.826218}, + {-85.536804, 34.554062}, + {3.3267974853516, 6.6144561767578}, + {7.9369354248047, 4.6630096435547}, + {5.2246856689453, 7.6471710205078}, + {3.3144378662109, 6.6185760498047}, + {7.9630279541016, 4.6547698974609}, + {6.6886138916016, 12.168045043945}, + {7.487869, 9.033508}, + {8.8707733154297, 9.6370697021484}, + {7.8998565673828, 8.8405609130859}, + {7.5153350830078, 9.0561676025391}, + {3.3487701416016, 6.5979766845703}, + {7.642227, 7.146744}, + {7.4480438232422, 8.9861297607422}, + {7.4713897705078, 9.0245819091797}, + {7.5839996337891, 9.0108489990234}, + {7.3532867431641, 9.1385650634766}, + {7.0360565185547, 8.8130950927734}, + {3.8788604736328, 7.3642730712891}, + {5.6243133544922, 6.3274383544922}, + {7.0951080322266, 5.4293060302734}, + {7.90226, 5.024529}, + {8.34549, 4.996719}, + {3.6907196044922, 6.4620208740234}, + {10.80436706543, 55.326461791992}, + {12.314301, 55.000992}, + {11.736831665039, 55.198745727539}, + {11.656494, 55.586014}, + {11.56208, 55.459671}, + {11.655807495117, 55.543441772461}, + {12.54020690918, 56.074905395508}, + {11.979218, 55.571594}, + {12.282028, 55.781021}, + {12.465591, 55.7444}, + {12.572823, 55.725403}, + {12.591018676758, 55.673904418945}, + {12.573165893555, 55.680770874023}, + {12.570419311523, 55.680770874023}, + {12.56217956543, 55.661544799805}, + {12.588272094727, 55.680770874023}, + {12.56217956543, 55.664291381836}, + {12.46467590332, 55.66291809082}, + {12.371292114258, 55.661544799805}, + {12.482528686523, 55.698623657227}, + {-73.610458, 42.74746}, + {-95.146053, 29.548997}, + {-87.71965, 41.930008}, + {-86.82693, 41.309039}, + {-87.47263, 41.512527}, + {-89.06044, 41.618271}, + {-89.697188, 39.754715}, + {-89.487076, 40.932449}, + {-79.981842, 33.429108}, + {-89.380646, 40.424881}, + {-79.993057, 32.782517}, + {-79.478530883789, 33.403244018555}, + {-81.939468383789, 34.90837097168}, + {-81.18187, 34.708786}, + {-82.277985, 34.753876}, + {-80.866928100586, 35.443954467773}, + {-78.397109, 35.582774}, + {-81.73210144043, 36.169052124023}, + {-83.788041, 32.898735}, + {-83.980178833008, 34.000625610352}, + {139.966507, 35.880386}, + {139.89921569824, 35.923233032227}, + {139.787064, 36.081619}, + {140.14778137207, 36.093521118164}, + {139.86248, 36.071205}, + {140.182571, 36.065598}, + {140.151901, 35.359909}, + {135.621552, 34.766507}, + {140.13954162598, 35.98503112793}, + {135.695243, 34.798398}, + {135.54588317871, 34.727096557617}, + {135.437393, 34.503937}, + {135.747757, 34.633942}, + {135.589142, 34.635086}, + {135.194517, 34.033585}, + {135.46073913574, 34.751815795898}, + {135.76835632324, 35.03059387207}, + {135.745449, 34.522839}, + {135.89469909668, 34.523849487305}, + {135.70106506348, 35.016860961914}, + {141.14204406738, 38.917007446289}, + {134.202118, 35.498199}, + {141.4427947998, 40.419387817383}, + {132.21977233887, 35.011367797852}, + {132.987442, 34.335861}, + {31.17301940918, 30.990371704102}, + {31.11397, 31.202553}, + {31.230697631836, 30.022201538086}, + {31.258163452148, 30.035934448242}, + {31.450424194336, 31.120834350586}, + {30.873641967773, 30.10871887207}, + {31.26915, 30.72876}, + {31.120834350586, 29.982376098633}, + {31.281509399414, 30.920333862305}, + {32.101364135742, 30.660781860352}, + {30.815963745117, 30.112838745117}, + {31.405106, 30.044174}, + {30.933574, 29.941272}, + {30.995864868164, 29.983749389648}, + {31.417465209961, 30.02082824707}, + {31.475605, 30.256927}, + {31.317019, 29.872709}, + {31.350173950195, 29.787368774414}, + {31.557540893555, 30.17463684082}, + {31.10710144043, 29.071884155273}, + {29.597854614258, 30.94367980957}, + {31.25129699707, 29.991989135742}, + {31.18537902832, 29.055404663086}, + {71.4272, 51.168549}, + {71.393966674805, 51.093978881836}, + {71.440658569336, 51.043167114258}, + {76.940689086914, 43.264846801758}, + {76.955795288086, 43.27995300293}, + {77.060165405273, 43.880081176758}, + {76.898804, 43.299866}, + {76.959572, 43.323212}, + {69.632263, 42.328262}, + {65.492935180664, 44.867477416992}, + {73.771133422852, 43.613662719727}, + {51.159896850586, 43.664474487305}, + {51.198348999023, 43.686447143555}, + {73.057022094727, 49.786605834961}, + {-118.01719665527, 34.140701293945}, + {-117.869339, 33.897171}, + {-117.95951843262, 33.916854858398}, + {-117.67387390137, 33.576278686523}, + {-117.943039, 33.732147}, + {-117.87162780762, 33.598251342773}, + {-118.03642272949, 33.830337524414}, + {-118.31382751465, 33.366165161133}, + {-117.84141540527, 33.69026184082}, + {-117.8345489502, 33.640823364258}, + {-118.001363, 33.894447}, + {-118.3179473877, 33.980026245117}, + {-118.23829650879, 33.874282836914}, + {-118.036828, 34.126789}, + {-118.48686218262, 33.896255493164}, + {-118.34953308105, 34.135208129883}, + {-118.21312, 33.941803}, + {-118.14903259277, 33.915481567383}, + {-0.62553405761719, 50.842666625977}, + {-0.32341003417969, 51.239547729492}, + {-4.4913482666016, 51.998977661133}, + {-2.725296, 51.19194}, + {-0.773849, 52.030563}, + {-0.790329, 51.086426}, + {-1.677473, 51.627847}, + {-1.183964, 50.837548}, + {-0.153122, 51.786118}, + {-2.6950836181641, 55.514602661133}, + {-5.2013397216797, 50.298843383789}, + {-0.23963928222656, 53.236312866211}, + {0.54245, 51.585617}, + {-3.396835, 54.357605}, + {-2.861252, 53.554459}, + {-3.5533905029297, 56.364669799805}, + {-3.66703, 55.958691}, + {-3.490677, 55.999374}, + {14.243087768555, -6.2587738037109}, + {13.238526, -8.781509}, + {13.272171020508, -8.9916229248047}, + {55.513229370117, -4.6726226806641}, + {33.547439575195, 14.406509399414}, + {34.023971557617, 17.712020874023}, + {32.75505065918, 14.155197143555}, + {33.315353393555, 16.613388061523}, + {32.51782, 15.710961}, + {30.541305541992, 18.651351928711}, + {32.555008, 15.623703}, + {29.403534, -1.965523}, + {29.246979, -1.680222}, + {30.044174194336, -1.9356536865234}, + {30.057907104492, -1.9466400146484}, + {30.059280395508, -1.9493865966797}, + {38.772811889648, 8.9737701416016}, + {38.722687, 8.968277}, + {38.804054, 9.012566}, + {38.806686, 9.008102}, + {39.041976928711, 11.977157592773}, + {37.561073, 6.064608}, + {39.541168, 9.681702}, + {39.267196655273, 8.5370635986328}, + {100.36903381348, -0.93864440917969}, + {102.71324157715, 1.0086822509766}, + {104.45457458496, 0.92079162597656}, + {105.222244, -4.608994}, + {102.231396, -3.703989}, + {106.802065, -6.213524}, + {106.787882, -6.255324}, + {106.824188, -6.332932}, + {106.909395, -6.344417}, + {106.8221282959, -6.2065887451172}, + {106.898608, -6.211732}, + {106.900509, -6.172335}, + {106.71501159668, -6.1956024169922}, + {106.94511, -6.197787}, + {106.947647, -6.206314}, + {107.59666442871, -6.9371795654297}, + {106.96632385254, -6.1818695068359}, + {107.594604, -6.858559}, + {108.80653381348, -6.8163299560547}, + {107.568512, -6.889114}, + {107.545853, -6.923447}, + {106.812778, -6.620865}, + {106.1450958252, -6.1173248291016}, + {20.354232788086, 48.17985534668}, + {20.604774, 48.3391}, + {21.326522827148, 48.019180297852}, + {19.68132019043, 46.915054321289}, + {19.379196166992, 47.44514465332}, + {19.104537963867, 47.535781860352}, + {19.186296, 47.777153}, + {-71.204577, 41.968523}, + {-71.053353, 41.659653}, + {-70.772415, 41.841019}, + {-69.572115, 44.592389}, + {-73.357772827148, 42.315902709961}, + {-69.767990112305, 44.264602661133}, + {-70.423049926758, 43.818283081055}, + {-73.995309, 40.717661}, + {-73.902061, 40.869293}, + {-73.888635, 40.815802}, + {-73.902969360352, 40.86296081543}, + {-73.872756958008, 40.824508666992}, + {-73.905715942383, 40.83137512207}, + {-73.839797973633, 40.900039672852}, + {-73.895837, 40.85554}, + {-73.90022277832, 40.851974487305}, + {-73.929061889648, 40.78742980957}, + {-73.967514038086, 40.762710571289}, + {-77.432131, 37.673983}, + {-76.413345336914, 36.965560913086}, + {-79.88234, 36.857688}, + {-77.503238, 37.172385}, + {10.629959106445, 57.736587524414}, + {10.305862426758, 56.99089050293}, + {9.9446868896484, 57.358932495117}, + {9.893876, 57.01561}, + {9.8416900634766, 56.916732788086}, + {9.5066070556641, 56.823348999023}, + {9.1262054443359, 56.544570922852}, + {8.9723968505859, 56.117477416992}, + {10.856552124023, 56.378402709961}, + {10.919723510742, 56.408615112305}, + {9.9666595458984, 56.061172485352}, + {9.7524261474609, 56.149063110352}, + {10.198745727539, 56.169662475586}, + {10.294193, 56.38115}, + {10.130081176758, 56.158676147461}, + {10.469971, 55.260315}, + {8.4011077880859, 55.502243041992}, + {9.260794, 55.8181}, + {9.571152, 55.689697}, + {9.649155, 55.587387}, + {9.610428, 55.587387}, + {10.539321899414, 55.241317749023}, + {30.078073, -25.978795}, + {30.005346, -28.019935}, + {31.027450561523, -29.798355102539}, + {28.36051940918, -32.616348266602}, + {29.85997, -28.620197}, + {28.035049438477, -26.05339050293}, + {28.3821, -25.709675}, + {31.585693, 4.87381}, + {77.524337768555, 12.950820922852}, + {77.520046, 12.986612}, + {77.634201049805, 12.978286743164}, + {77.533950805664, 12.981033325195}, + {77.643814086914, 12.994766235352}, + {77.663040161133, 12.959060668945}, + {76.94206237793, 11.91535949707}, + {77.584762573242, 13.085403442383}, + {77.616937, 13.145044}, + {76.027450561523, 12.387771606445}, + {75.718918, 12.878952}, + {77.528457641602, 13.020858764648}, + {77.463372, 12.922337}, + {77.52626, 12.892319}, + {75.317459106445, 13.601760864258}, + {77.672653198242, 13.005752563477}, + {77.716309, 12.976745}, + {74.637680053711, 13.754196166992}, + {77.730331420898, 12.99201965332}, + {75.083999633789, 13.182907104492}, + {76.428451538086, 10.15754699707}, + {77.71019, 12.801132}, + {75.866089, 11.302872}, + {76.262283, 10.149994}, + {-74.01146, 45.381088}, + {-73.761520385742, 45.510177612305}, + {-73.577042, 45.501938}, + {-71.884143, 46.859669}, + {-70.712814, 46.146355}, + {-72.47200012207, 46.85188293457}, + {-68.18587, 49.215165}, + {-74.016952514648, 45.637893676758}, + {-73.451156616211, 46.01692199707}, + {-73.921233, 45.685547}, + {-73.508639, 45.486832}, + {-73.471755981445, 45.554122924805}, + {-73.114700317383, 45.603561401367}, + {-75.690994262695, 45.354995727539}, + {-73.576126098633, 45.537643432617}, + {-75.221329, -12.056122}, + {-78.518600463867, -7.1527862548828}, + {-69.198843, -51.630373}, + {-68.081932, -38.562355}, + {-71.281211, -41.132221}, + {-68.924789428711, -37.388534545898}, + {-68.902358, -33.041154}, + {-68.543014526367, -31.517715454102}, + {-59.131378, -37.338905}, + {-57.542953491211, -38.00651550293}, + {-57.014236450195, -37.323989868164}, + {-57.56217956543, -38.053207397461}, + {-57.030715942383, -37.339096069336}, + {-59.24446105957, -34.331588745117}, + {-59.579457, -34.461285}, + {-61.26146, -32.865098}, + {4.077129, 46.115627}, + {3.08342, 45.885391}, + {6.573257, 46.397461}, + {6.228345, 46.190679}, + {6.423683, 46.068077}, + {0.693741, 44.491196}, + {2.551869, 44.35112}, + {-0.58433532714844, 44.782333374023}, + {-1.0594940185547, 44.768600463867}, + {-1.3272857666016, 43.911666870117}, + {1.3259124755859, 45.882339477539}, + {-1.1473846435547, 46.161117553711}, + {5.98439, 47.282547}, + {-2.1787261962891, 47.310562133789}, + {4.7467803955078, 44.585952758789}, + {2.1155548095703, 49.940414428711}, + {3.14347, 49.559665}, + {2.384033, 48.950615}, + {6.1145782470703, 49.034042358398}, + {2.412347, 48.937912}, + {-35.351943969727, -8.3310699462891}, + {-48.944746, -2.933}, + {-60.057744, -3.087174}, + {-60.017623901367, -2.9807281494141}, + {-43.384781, -22.960739}, + {-59.958572387695, -3.1139373779297}, + {-59.983659, -3.044521}, + {-59.983291625977, -3.1468963623047}, + {-59.957381, -3.024561}, + {-41.305529, -21.781668}, + {-43.617086, -22.669364}, + {-43.551227, -22.792186}, + {-59.927586, -3.062448}, + {-43.347244262695, -22.765731811523}, + {-43.938574, -22.926494}, + {-43.680953979492, -22.948379516602}, + {-43.109665, -22.861862}, + {-0.892227, 38.113358}, + {-0.43739318847656, 38.752212524414}, + {-0.697404, 38.27385}, + {-0.459366, 38.717096}, + {-0.078715, 39.994666}, + {-0.484858, 39.574505}, + {-0.704636, 39.391342}, + {-0.48545837402344, 39.234237670898}, + {-0.41130065917969, 39.361953735352}, + {2.6813507080078, 41.625137329102}, + {-3.9997100830078, 40.287551879883}, + {3.0686187744141, 41.835250854492}, + {1.1391448974609, 41.10466003418}, + {0.86723327636719, 41.49055480957}, + {-0.13252258300781, 41.040115356445}, + {-0.011672973632812, 41.51252746582}, + {-1.2599945068359, 40.849227905273}, + {-2.7664947509766, 40.367202758789}, + {-2.0070648193359, 39.504776000977}, + {-3.8788604736328, 40.724258422852}, + {-3.7621307373047, 42.00553894043}, + {-95.76916, 29.539256}, + {-95.751205, 29.721268}, + {-94.921275, 29.770546}, + {-95.559012, 30.035122}, + {-95.501747, 30.328425}, + {-95.291976928711, 29.77912902832}, + {-95.109787, 29.540176}, + {-95.57487487793, 29.662399291992}, + {-95.216445922852, 29.803848266602}, + {-81.809005737305, 30.182876586914}, + {-96.047287, 30.242271}, + {-81.66172, 29.835777}, + {-95.867385864258, 30.225448608398}, + {-81.520616, 30.65323}, + {-82.171555, 29.191017}, + {-81.717682, 29.585495}, + {-118.3715057373, 34.05143737793}, + {-117.98561096191, 33.929214477539}, + {-94.621810913086, 39.072189331055}, + {-118.3715057373, 34.194259643555}, + {-94.429550170898, 38.966445922852}, + {-94.481735229492, 38.947219848633}, + {-94.19059753418, 39.440231323242}, + {-94.365005493164, 38.934860229492}, + {-73.951034545898, 40.64323425293}, + {-80.246200561523, 25.784225463867}, + {-74.000473022461, 40.736618041992}, + {-80.214614868164, 26.112442016602}, + {-122.28675842285, 47.609939575195}, + {-108.760906, 36.907756}, + {-104.90364074707, 34.971542358398}, + {-74.596845, 39.407516}, + {-75.079879760742, 38.717880249023}, + {-80.192642211914, 40.088424682617}, + {-79.39173, 40.736947}, + {-80.026393, 42.140586}, + {-80.174065, 41.594366}, + {-79.94957, 40.507278}, + {-79.976578, 40.385056}, + {-80.097728, 40.304691}, + {-79.740829467773, 40.67756652832}, + {-79.720230102539, 40.407028198242}, + {-79.760055541992, 40.374069213867}, + {-80.017196, 40.687819}, + {-6.058958, 37.437287}, + {-4.4364166259766, 36.70051574707}, + {-4.4419097900391, 36.718368530273}, + {-4.475835, 36.692795}, + {-4.5064544677734, 36.73210144043}, + {-5.159879, 36.743608}, + {-4.447403, 36.915436}, + {-5.045242, 36.474838}, + {-4.401398, 36.730042}, + {-4.148025, 36.852951}, + {-3.4339141845703, 37.650833129883}, + {-3.855488, 36.732795}, + {-3.2965850830078, 37.665939331055}, + {-3.1153106689453, 36.75407409668}, + {-3.600941, 37.149754}, + {-3.582699, 37.136233}, + {-2.622986, 36.810722}, + {-4.32707, 37.617538}, + {-4.756252, 37.888412}, + {-6.307526, 36.531143}, + {141.16401672363, 39.525375366211}, + {141.14891052246, 39.499282836914}, + {141.53343200684, 39.326248168945}, + {140.31257629395, 38.257827758789}, + {139.83055114746, 38.915634155273}, + {140.35102844238, 38.940353393555}, + {140.46775817871, 37.726364135742}, + {140.4759979248, 37.785415649414}, + {140.48149108887, 37.74284362793}, + {140.41694641113, 37.426986694336}, + {140.39222717285, 37.422866821289}, + {141.3549041748, 40.603408813477}, + {140.45539855957, 40.805282592773}, + {140.76301574707, 40.781936645508}, + {140.73829650879, 40.768203735352}, + {140.13542175293, 39.723129272461}, + {140.79322814941, 40.174942016602}, + {140.59410095215, 39.510269165039}, + {141.09397888184, 39.382553100586}, + {141.0376739502, 39.058456420898}, + {140.067352, 35.678192}, + {140.077362, 35.658035}, + {140.03517150879, 35.665054321289}, + {140.03105163574, 35.702133178711}, + {17.955093383789, 59.225234985352}, + {17.094039916992, 59.641342163086}, + {13.833847045898, 56.692886352539}, + {18.152848, 59.199143}, + {13.421859741211, 55.49674987793}, + {11.625595092773, 58.208999633789}, + {11.919479370117, 57.86018371582}, + {18.036117553711, 59.343338012695}, + {12.325973510742, 57.117233276367}, + {18.02375793457, 59.333724975586}, + {12.518174, 57.666641}, + {18.010025024414, 59.366683959961}, + {18.511276245117, 59.388656616211}, + {13.213119506836, 55.719223022461}, + {18.901290893555, 59.834976196289}, + {18.11164855957, 59.293899536133}, + {11.896133422852, 57.641830444336}, + {12.081527709961, 57.673416137695}, + {10.199661, 36.859818}, + {10.182953, 36.850204}, + {10.314102172852, 36.88591003418}, + {9.7606658935547, 37.12760925293}, + {10.033950805664, 37.170181274414}, + {9.9666595458984, 36.560440063477}, + {10.536704, 36.686003}, + {10.634239, 35.833946}, + {10.576817, 35.882738}, + {10.771408081055, 34.793014526367}, + {10.093002319336, 34.68864440918}, + {10.182266235352, 36.79801940918}, + {10.485763549805, 33.34831237793}, + {14.269180297852, 27.550277709961}, + {13.28727722168, 32.848434448242}, + {20.098801, 32.121277}, + {13.180160522461, 32.867660522461}, + {14.468307495117, 27.031173706055}, + {-17.448348999023, 14.753952026367}, + {-17.422256469727, 14.741592407227}, + {-17.404403686523, 14.752578735352}, + {107.6831817627, -6.9330596923828}, + {107.611821, -6.884846}, + {107.6392364502, -6.8932342529297}, + {107.468178, -6.507017}, + {107.27256774902, -6.8080902099609}, + {107.028755, -6.72084}, + {108.261156, -6.734309}, + {108.27507019043, -7.3120880126953}, + {108.13774108887, -6.4702606201172}, + {108.17481994629, -6.4029693603516}, + {108.26957702637, -6.4043426513672}, + {109.67445373535, -6.9001007080078}, + {109.561844, -6.884537}, + {109.67994689941, -6.8767547607422}, + {110.475735, -7.011255}, + {110.908419, -7.096795}, + {110.863882, -6.812396}, + {110.42427062988, -7.1376800537109}, + {109.1869354248, -7.4178314208984}, + {110.41053771973, -7.0717620849609}, + {110.319552, -7.934765}, + {110.452591, -7.839076}, + {11.114801, 47.487576}, + {11.237641, 47.439652}, + {11.116104125977, 47.508316040039}, + {12.007369995117, 49.018936157227}, + {11.580963, 49.951401}, + {12.81623840332, 49.288101196289}, + {11.552810668945, 48.247146606445}, + {7.682264, 51.556956}, + {9.965216, 53.837092}, + {10.243835, 53.515892}, + {10.127334594727, 53.537063598633}, + {10.028177, 53.845398}, + {12.722031, 50.753403}, + {12.856848, 50.796563}, + {12.798385620117, 50.537796020508}, + {12.847824, 50.795288}, + {12.600174, 50.500717}, + {10.010604858398, 53.662033081055}, + {10.036697, 53.562361}, + {9.999621, 53.586425}, + {9.887755, 53.607131}, + {10.577057, 52.972902}, + {9.005631, 53.976792}, + {9.702988, 53.94191}, + {9.5697784423828, 53.998489379883}, + {121.09336853027, 22.830276489258}, + {121.442135, 24.974867}, + {121.433221, 24.967692}, + {121.513705, 25.012539}, + {121.501236, 25.029465}, + {121.36322, 24.954071}, + {121.74980163574, 24.765243530273}, + {121.75254821777, 24.291458129883}, + {121.520511, 25.022245}, + {121.44493103027, 23.735275268555}, + {121.8253326416, 24.684219360352}, + {121.519544, 24.972722}, + {121.487231, 25.057752}, + {121.426983, 25.067709}, + {121.759415, 25.128479}, + {121.53007507324, 25.107192993164}, + {121.61247253418, 25.244522094727}, + {121.27052307129, 24.890213012695}, + {121.3062286377, 24.995956420898}, + {121.24168395996, 24.98908996582}, + {120.96839904785, 24.803695678711}, + {121.03569030762, 24.788589477539}, + {121.01462, 24.820521}, + {22.023238, 50.205004}, + {22.438194, 49.384453}, + {21.10405, 49.704209}, + {21.072465, 51.043626}, + {46.717300415039, 24.655380249023}, + {46.50993347168, 24.984970092773}, + {39.190292358398, 22.412796020508}, + {39.006269, 22.812276}, + {39.120254516602, 21.987075805664}, + {39.202532, 21.621526}, + {39.27475, 21.477585}, + {39.219588, 21.48542}, + {39.13948059082, 21.616287231445}, + {39.103088, 21.662979}, + {39.096908569336, 21.705551147461}, + {39.158427, 21.614842}, + {39.238357543945, 21.485824584961}, + {39.109268188477, 21.586074829102}, + {39.171066, 21.602097}, + {39.228744506836, 21.402053833008}, + {39.221878051758, 21.436386108398}, + {39.388856, 21.403192}, + {39.88655090332, 21.408920288086}, + {39.751968383789, 21.413040161133}, + {39.143600463867, 21.54899597168}, + {39.189377, 21.510544}, + {39.212608, 21.520157}, + {39.85221862793, 21.437759399414}, + {-104.67292785645, 39.843978881836}, + {-105.029989, 39.766185}, + {-104.952785, 39.755822}, + {-107.58979797363, 37.233352661133}, + {-104.81575012207, 39.653091430664}, + {-104.99290466309, 40.429000854492}, + {-105.075725, 40.408975}, + {-104.96269226074, 39.684677124023}, + {-104.78492, 40.463883}, + {-105.180722, 39.922203}, + {-104.960755, 39.854279}, + {-104.75944519043, 38.750839233398}, + {-104.814994, 38.95338}, + {-104.792896, 41.145456}, + {-104.854665, 38.94997}, + {-106.278786, 42.849649}, + {-108.616913, 39.087697}, + {-112.1752166748, 41.822891235352}, + {-114.49572, 36.62072}, + {-115.17311096191, 36.164932250977}, + {-113.448828, 35.18437}, + {-115.116882, 36.118868}, + {-115.010105, 36.044875}, + {-111.444376, 34.3905}, + {39.768447875977, 64.553604125977}, + {36.159439086914, 51.706466674805}, + {30.132064819336, 60.056076049805}, + {30.322952270508, 59.813003540039}, + {30.126571655273, 59.579544067383}, + {30.41633605957, 60.04508972168}, + {65.583572387695, 57.184524536133}, + {39.421005249023, 47.11555480957}, + {37.472305297852, 56.011734008789}, + {30.344924926758, 59.984664916992}, + {30.398483276367, 59.942092895508}, + {30.324325561523, 59.851455688477}, + {60.661697, 56.87233}, + {60.592784, 56.954351}, + {59.795150756836, 58.633346557617}, + {62.744979858398, 56.28776550293}, + {53.456039428711, 53.671646118164}, + {22.922286987305, 56.440200805664}, + {25.111998, 57.969361}, + {26.957015991211, 55.92658996582}, + {24.077225, 56.930122}, + {23.249812, 56.98612}, + {24.82564, 57.363851}, + {22.62291, 56.962738}, + {25.554201, 59.549103}, + {24.987715, 59.015809}, + {25.786285, 59.585037}, + {24.777653, 59.504192}, + {24.711563, 59.407273}, + {24.626097, 59.42861}, + {30.967025756836, 36.928482055664}, + {32.040939331055, 36.53434753418}, + {29.585494995117, 37.715377807617}, + {29.19548034668, 40.185928344727}, + {29.058151245117, 40.198287963867}, + {40.198287963867, 37.919998168945}, + {36.229477, 36.853409}, + {34.606933, 36.806946}, + {33.455523, 36.163258}, + {28.806838989258, 41.02912902832}, + {28.967514038086, 41.015396118164}, + {28.920364, 40.998917}, + {29.126815795898, 40.993423461914}, + {29.165528, 40.990173}, + {29.044418334961, 41.081314086914}, + {27.124557495117, 38.418502807617}, + {29.415605, 40.777874}, + {27.150650024414, 38.290786743164}, + {31.906356811523, 38.288040161133}, + {28.727188110352, 38.143844604492}, + {132.497635, 34.361801}, + {132.460938, 34.407043}, + {133.92127990723, 34.669418334961}, + {132.488251, 34.475784}, + {133.818782, 34.67641}, + {133.729877, 34.60762}, + {132.89680480957, 34.79850769043}, + {141.393013, 43.065548}, + {141.40242, 43.069016}, + {141.303111, 43.084749}, + {144.111883, 43.828681}, + {136.20094299316, 36.048202514648}, + {136.857064, 36.629292}, + {136.18171691895, 36.042709350586}, + {136.226212, 36.057266}, + {130.86982727051, 33.890762329102}, + {130.40016174316, 33.579025268555}, + {130.749802, 33.797928}, + {130.401994, 33.649983}, + {139.77836608887, 35.625228881836}, + {126.695298, 37.791227}, + {139.69734191895, 35.656814575195}, + {127.198359, 37.717662}, + {127.07817077637, 37.987289428711}, + {127.17430114746, 37.561569213867}, + {11.933607, 54.566882}, + {11.736831665039, 55.18913269043}, + {11.753586, 55.292953}, + {11.756058, 55.287552}, + {10.562399, 56.392414}, + {9.524852, 56.178832}, + {9.537277, 56.183395}, + {10.153427124023, 56.169662475586}, + {10.216598510742, 56.19026184082}, + {9.41597, 56.453476}, + {9.694372, 55.82118}, + {8.542557, 55.461731}, + {9.8252105712891, 55.110855102539}, + {10.001678, 57.44442}, + {9.333495, 56.75538}, + {9.276352, 54.985886}, + {8.942184, 56.111298}, + {9.215126, 56.607743}, + {36.850204467773, 7.6828765869141}, + {44.064102172852, 9.5491790771484}, + {39.970321655273, 7.0099639892578}, + {45.007828, 10.446487}, + {36.86393737793, 7.6856231689453}, + {36.08528137207, -0.33439636230469}, + {35.191268920898, -0.58158874511719}, + {37.188034, -0.86792}, + {34.462051391602, 0.10780334472656}, + {39.666824, -4.048462}, + {37.527236938477, -2.5124359130859}, + {39.668198, -4.038315}, + {39.688454, -4.027863}, + {37.032578, 0.003159}, + {38.02848815918, -0.71205139160156}, + {37.440376, -0.566139}, + {37.002639770508, -0.64750671386719}, + {37.025299, -1.476288}, + {37.041092, -0.455246}, + {36.435470581055, -0.76011657714844}, + {36.872177124023, -1.2531280517578}, + {36.888253, -1.32979}, + {36.903305, -1.287918}, + {-54.450645, -25.684662}, + {-65.555191, -22.926407}, + {-65.635741, -24.908934}, + {-68.825226, -32.87796}, + {-68.446198, -33.073654}, + {-62.272567749023, -38.249588012695}, + {-56.740953, -36.757522}, + {-59.304886, -34.061737}, + {-58.395767211914, -34.606246948242}, + {-58.480911254883, -34.680404663086}, + {-64.208908081055, -31.406478881836}, + {-64.141616821289, -31.388626098633}, + {-65.876083374023, -32.316970825195}, + {-65.110856, -26.851605}, + {-64.203414916992, -24.739151000977}, + {-65.720901489258, -28.43879699707}, + {-58.852043, -27.47406}, + {-60.100021362305, -33.408737182617}, + {-58.772048950195, -27.452774047852}, + {37.620620727539, 55.771408081055}, + {37.630233764648, 55.77278137207}, + {37.606887817383, 55.770034790039}, + {37.72087097168, 55.778274536133}, + {37.672805786133, 55.768661499023}, + {37.838973999023, 55.721969604492}, + {37.77717590332, 55.749435424805}, + {37.443466186523, 55.734329223633}, + {37.725753, 55.651437}, + {37.731857299805, 55.69450378418}, + {37.634353637695, 55.781021118164}, + {37.609634399414, 55.793380737305}, + {37.634012, 55.792198}, + {37.17155456543, 55.56266784668}, + {37.575302124023, 55.819473266602}, + {37.968063354492, 55.632705688477}, + {37.628860473633, 55.573654174805}, + {37.398147583008, 55.859298706055}, + {37.615127563477, 55.743942260742}, + {37.627029, 55.753555}, + {37.572555541992, 55.82633972168}, + {76.05354309082, 16.084671020508}, + {75.08674621582, 15.664443969727}, + {77.597122192383, 12.92610168457}, + {75.584564, 11.594696}, + {76.189498901367, 10.840072631836}, + {76.215591430664, 10.61897277832}, + {76.281967, 9.985977}, + {76.354293823242, 9.9968719482422}, + {76.280136108398, 9.9721527099609}, + {76.642684936523, 8.8474273681641}, + {76.600112915039, 8.8831329345703}, + {76.972274780273, 8.4230804443359}, + {88.476334, 22.710114}, + {88.370590209961, 22.758865356445}, + {88.422775268555, 22.618789672852}, + {88.295059204102, 22.628402709961}, + {88.376083374023, 22.489700317383}, + {77.204360961914, 19.186935424805}, + {73.878937, 18.515396}, + {73.835678100586, 18.535995483398}, + {73.798599243164, 18.619766235352}, + {36.92985534668, -1.1734771728516}, + {36.814498901367, -1.2874603271484}, + {36.844711, -1.322594}, + {36.823196, -1.330032}, + {36.810379, -1.316986}, + {36.835098266602, -1.2751007080078}, + {36.76643371582, -1.1858367919922}, + {36.821365356445, -1.2737274169922}, + {36.844259, -1.171999}, + {36.708755493164, -1.3245391845703}, + {36.673049926758, -1.1309051513672}, + {36.641464233398, -1.1707305908203}, + {36.793899536133, -1.3094329833984}, + {36.770553588867, -1.2805938720703}, + {36.883163452148, -1.3286590576172}, + {36.909275, -1.307652}, + {36.07292175293, -0.29319763183594}, + {36.998519897461, -1.1254119873047}, + {34.850692749023, -0.73539733886719}, + {36.878769, -1.284714}, + {34.755935668945, -0.12016296386719}, + {33.966293334961, 0.098190307617188}, + {34.474411010742, -1.0402679443359}, + {141.31782531738, 43.089065551758}, + {141.56364440918, 42.975082397461}, + {143.23631286621, 42.596054077148}, + {142.318954, 43.79509}, + {142.403887, 43.740005}, + {137.21305847168, 36.693649291992}, + {137.006149, 36.752701}, + {136.23527526855, 36.089401245117}, + {136.202774, 35.963058}, + {136.728744, 36.664352}, + {136.22428894043, 36.061935424805}, + {134.02153015137, 34.345321655273}, + {134.0160369873, 34.269790649414}, + {133.205109, 33.904495}, + {130.39192199707, 33.585891723633}, + {130.44822692871, 33.596878051758}, + {130.51414489746, 33.65592956543}, + {130.805494, 33.86879}, + {130.623184, 33.852859}, + {130.40702819824, 33.596878051758}, + {130.42213439941, 33.59001159668}, + {127.70851135254, 26.216812133789}, + {127.692032, 26.195755}, + {127.72087097168, 26.233291625977}, + {140.752029, 41.789246}, + {-1.3382720947266, 54.547805786133}, + {0.11741638183594, 52.202224731445}, + {0.24375915527344, 51.485366821289}, + {-3.5218048095703, 50.735549926758}, + {-4.1919708251953, 51.586990356445}, + {-1.7255401611328, 51.926193237305}, + {-2.2006988525391, 51.253280639648}, + {-0.100295, 51.546652}, + {-0.15724182128906, 51.522445678711}, + {0.52803039550781, 51.736679077148}, + {0.45249938964844, 51.878128051758}, + {-0.722122, 51.525192}, + {-0.83564758300781, 51.464767456055}, + {-0.767441, 51.52153}, + {-2.546768, 51.467514}, + {-0.185038, 51.468184}, + {4.392624, 48.398667}, + {4.650379, 49.863236}, + {4.404373, 48.874741}, + {1.7667388916016, 50.164260864258}, + {4.0903472900391, 49.272994995117}, + {1.6197967529297, 49.46662902832}, + {3.0809783935547, 49.281234741211}, + {0.812302, 49.475876}, + {0.430115, 49.594345}, + {0.533066, 49.608994}, + {0.24787902832031, 49.528427124023}, + {2.630539, 49.221497}, + {2.6703643798828, 49.748153686523}, + {2.879542, 49.231796}, + {0.13938903808594, 44.982833862305}, + {1.6623687744141, 45.202560424805}, + {1.5113067626953, 45.164108276367}, + {1.531514, 45.155869}, + {1.5387725830078, 45.014419555664}, + {5.8385467529297, 52.008590698242}, + {5.828018, 51.893234}, + {5.7424163818359, 51.77375793457}, + {5.9003448486328, 51.834182739258}, + {5.9278106689453, 51.987991333008}, + {5.640067, 52.046706}, + {5.590496, 52.410242}, + {5.4952239990234, 52.136306762695}, + {5.68524, 52.348485}, + {6.1818695068359, 52.534561157227}, + {5.368881, 52.178329}, + {5.9539031982422, 52.50846862793}, + {5.928034, 52.207407}, + {5.82985, 52.079086}, + {6.2532806396484, 52.24479675293}, + {6.1035919189453, 52.041549682617}, + {5.9909820556641, 52.199478149414}, + {6.6803741455078, 52.259902954102}, + {6.7751312255859, 52.268142700195}, + {6.8177032470703, 52.253036499023}, + {6.6172027587891, 52.221450805664}, + {6.5375518798828, 52.32307434082}, + {75.898361206055, 22.692947387695}, + {77.421340942383, 23.207931518555}, + {76.510848999023, 22.986831665039}, + {75.855103, 22.71492}, + {77.434113, 23.25325}, + {80.843582, 24.857941}, + {77.444687, 23.201408}, + {75.904198, 22.7314}, + {77.073212, 11.198502}, + {75.825576782227, 22.662734985352}, + {77.072868, 11.016541}, + {78.765106, 23.839645}, + {78.710861206055, 10.815353393555}, + {77.724838, 11.330612}, + {78.688888549805, 10.822219848633}, + {78.114395, 9.914932}, + {78.121445, 9.925461}, + {77.520217895508, 8.1250762939453}, + {79.70100402832, 12.843704223633}, + {79.507369995117, 11.355056762695}, + {79.67308, 12.824936}, + {79.383773803711, 12.919235229492}, + {78.600997924805, 10.049057006836}, + {9.022815, 44.994363}, + {9.231491, 45.260239}, + {9.2017364501953, 45.473098754883}, + {9.1907501220703, 45.464859008789}, + {9.1838836669922, 45.466232299805}, + {9.223513, 45.470156}, + {9.210663, 45.477219}, + {9.234695, 45.484837}, + {9.212723, 45.493011}, + {9.22778, 45.506222}, + {9.1303253173828, 45.507431030273}, + {9.274796, 45.388504}, + {7.315518, 45.737459}, + {7.7158355712891, 45.133895874023}, + {10.515975952148, 45.43327331543}, + {10.353927612305, 45.404434204102}, + {10.385513305664, 45.419540405273}, + {9.5999908447266, 45.376968383789}, + {9.7016143798828, 45.234146118164}, + {9.95018, 45.324097}, + {103.82148742676, 13.283157348633}, + {104.17991638184, 10.613479614258}, + {102.72834777832, 13.619613647461}, + {102.80662536621, 13.600387573242}, + {104.926987, 11.554871}, + {104.94346618652, 11.61735534668}, + {105.09864807129, 11.506118774414}, + {104.92836, 11.569977}, + {104.91050720215, 11.57341003418}, + {103.56742858887, 10.614852905273}, + {104.55391, 13.003006}, + {104.69078063965, 11.198501586914}, + {103.46992492676, 12.812118530273}, + {105.71113586426, 11.690139770508}, + {104.92698669434, 11.589889526367}, + {104.92835998535, 11.536331176758}, + {101.97853088379, 20.689315795898}, + {107.09266662598, 15.252456665039}, + {102.34794616699, 18.58268737793}, + {102.87117, 18.056717}, + {103.04420471191, 18.145980834961}, + {2.3036956787109, 48.856887817383}, + {2.3256683349609, 48.87336730957}, + {2.3242950439453, 48.866500854492}, + {2.2707366943359, 48.862380981445}, + {2.3490142822266, 48.848648071289}, + {2.3847198486328, 48.880233764648}, + {2.37236, 48.894444}, + {2.3613739013672, 48.867874145508}, + {2.3188018798828, 48.823928833008}, + {2.3297882080078, 48.825302124023}, + {3.451767, 50.106583}, + {3.8843536376953, 50.182113647461}, + {-1.50032, 47.210606}, + {-1.479721, 47.215118}, + {-1.591697, 47.226897}, + {-1.568298, 47.233246}, + {2.660948, 47.060427}, + {1.889158, 47.926581}, + {-2.235026, 48.214203}, + {-1.6568756103516, 48.112564086914}, + {-118.168342, 33.975139}, + {-118.2740020752, 34.04182434082}, + {-118.060444, 34.007986}, + {-118.08294, 33.96818}, + {-121.030813, 37.622351}, + {-119.87729, 47.216006}, + {-118.30009460449, 33.966293334961}, + {-118.176498, 33.785534}, + {-118.168456, 33.864323}, + {-118.342681, 34.043751}, + {-118.38523864746, 34.061050415039}, + {-118.46283, 34.073753}, + {-118.405838, 34.10347}, + {-118.291726, 34.037021}, + {-118.293434, 33.880111}, + {-118.392289, 33.836838}, + {-122.09999084473, 37.686538696289}, + {-121.749641, 38.015687}, + {-122.08213806152, 37.627487182617}, + {-86.238785, 32.359543}, + {-87.036276, 33.84152}, + {-86.342919, 32.313767}, + {-86.866836547852, 33.91960144043}, + {-87.358474731445, 34.681777954102}, + {-85.747757, 34.937668}, + {-86.648483276367, 33.651809692383}, + {-86.703417, 34.463431}, + {-70.936660766602, 43.079452514648}, + {-70.883789, 43.215409}, + {-87.207412719727, 33.76579284668}, + {-71.502457, 42.76703}, + {-70.339737, 43.631516}, + {-71.612625, 43.501205}, + {-71.213943, 43.584875}, + {-89.581833, 38.809891}, + {-89.894944, 38.795471}, + {-72.430881, 43.65284}, + {-91.39801, 40.189362}, + {-90.275344848633, 38.772811889648}, + {175.200321, -37.630397}, + {174.79042053223, -36.879043579102}, + {174.84535217285, -36.865310668945}, + {174.896848, -37.156449}, + {174.85496520996, -36.862564086914}, + {175.076523, -36.789322}, + {174.88380432129, -36.984786987305}, + {174.791583, -36.941687}, + {174.859329, -36.901865}, + {174.80827331543, -36.965560913086}, + {174.772053, -36.924019}, + {174.695399, -36.904664}, + {174.856752, -36.948185}, + {174.73823547363, -36.903762817383}, + {174.72312927246, -36.924362182617}, + {174.593124, -36.834183}, + {174.751282, -36.701202}, + {174.636828, -36.883744}, + {174.786987, -36.609192}, + {174.729172, -36.879868}, + {174.3660736084, -35.851821899414}, + {4.285259, 50.844701}, + {4.494218, 50.786501}, + {4.050156, 50.912704}, + {4.052789, 50.943428}, + {3.6865997314453, 51.025314331055}, + {5.5062103271484, 50.644912719727}, + {3.7387847900391, 51.011581420898}, + {5.4965972900391, 50.620193481445}, + {5.376582, 50.606461}, + {5.6133270263672, 50.605087280273}, + {4.8140716552734, 50.467758178711}, + {5.006498, 50.468721}, + {5.581741, 49.667473}, + {5.2754974365234, 49.859390258789}, + {3.245499, 50.800095}, + {5.551527, 50.183382}, + {2.992401, 51.258774}, + {3.1922149658203, 51.339797973633}, + {3.2430267333984, 50.775375366211}, + {7.5304412841797, 51.327438354492}, + {7.574657, 51.19957}, + {7.034528, 51.585797}, + {7.8380584716797, 51.235427856445}, + {7.5125885009766, 51.490859985352}, + {6.9179534912109, 51.679000854492}, + {8.876366, 52.211476}, + {7.2351837158203, 51.490859985352}, + {9.8458099365234, 51.408462524414}, + {9.9762725830078, 51.137924194336}, + {7.6856231689453, 51.413955688477}, + {7.654947, 51.687241}, + {8.650818, 50.24025}, + {8.6414337158203, 50.06950378418}, + {4.4130706787109, 51.217575073242}, + {4.448876, 51.217246}, + {4.3663787841797, 51.223068237305}, + {3.990326, 50.448303}, + {4.375076, 51.178665}, + {4.723434, 51.181412}, + {4.991684, 51.060562}, + {4.221359, 50.475174}, + {4.497665, 50.43013}, + {4.3718719482422, 50.379867553711}, + {4.8676300048828, 50.445785522461}, + {5.5899810791016, 50.680618286133}, + {4.814102, 45.76973}, + {2.8928375244141, 50.861892700195}, + {0.17784118652344, 45.68733215332}, + {-0.30693054199219, 49.171371459961}, + {-0.33027648925781, 49.18098449707}, + {4.762573, 45.383148}, + {5.513052, 45.305079}, + {100.67802429199, 13.913497924805}, + {100.856916, 13.854589}, + {100.86479187012, 13.582534790039}, + {100.84693908691, 13.601760864258}, + {100.56953430176, 14.001388549805}, + {100.44593811035, 13.993148803711}, + {100.563452, 13.770477}, + {100.55992126465, 13.736343383789}, + {100.561844, 13.749527}, + {100.60249328613, 13.703384399414}, + {100.58464050293, 13.72673034668}, + {100.69725, 13.84037}, + {100.61485290527, 13.82698059082}, + {100.64643859863, 13.861312866211}, + {100.620804, 13.781662}, + {100.54481506348, 13.752822875977}, + {100.55030822754, 13.744583129883}, + {100.525551, 13.787597}, + {100.505785, 13.776449}, + {100.54069519043, 13.747329711914}, + {12.103427, 48.923908}, + {10.307356, 49.755392}, + {-8.731613, 40.432663}, + {-8.4752655029297, 41.189804077148}, + {-8.5865020751953, 41.312026977539}, + {-8.072747, 37.073473}, + {-8.262955, 37.102158}, + {-8.7197113037109, 37.86506652832}, + {-8.7938690185547, 37.775802612305}, + {-7.8655242919922, 38.055953979492}, + {-8.103104, 37.938538}, + {-8.452606, 41.511154}, + {-8.66169, 41.954384}, + {-7.0882415771484, 41.213150024414}, + {-8.5851287841797, 41.166458129883}, + {-16.928507, 32.670314}, + {-8.4711456298828, 39.462203979492}, + {-25.503616, 37.713776}, + {-8.6400604248047, 40.996170043945}, + {-8.571121, 40.966232}, + {-8.598175, 39.70047}, + {-8.461987, 40.729394}, + {-8.9600372314453, 39.426498413086}, + {-8.654341, 39.43309}, + {117.11631774902, -0.50331115722656}, + {117.13829040527, -0.49232482910156}, + {115.89683532715, -1.8340301513672}, + {117.53379821777, 0.50056457519531}, + {113.3699798584, -1.9219207763672}, + {114.62242126465, -3.3405303955078}, + {114.5922088623, -3.2910919189453}, + {115.27610778809, -2.4190521240234}, + {116.04525, -3.48271}, + {116.002579, -3.434448}, + {109.157522, 0.322006}, + {116.837025, -1.251411}, + {116.841891, -1.219202}, + {117.144928, -0.501595}, + {119.4344329834, -5.1409149169922}, + {120.10734558105, -3.9022064208984}, + {119.76951599121, -4.9994659423828}, + {120.04417419434, -4.5929718017578}, + {119.98374938965, -4.3361663818359}, + {121.03706359863, -2.5797271728516}, + {121.61933898926, -4.1178131103516}, + {127.36656188965, 0.68458557128906}, + {132.743042, -5.641996}, + {140.41145324707, -6.6638946533203}, + {133.13163757324, -2.4451446533203}, + {106.76719665527, -6.1983489990234}, + {106.87568664551, -6.1777496337891}, + {112.63938903809, -7.9520416259766}, + {110.3995513916, -7.1184539794922}, + {110.39817810059, -6.9962310791016}, + {107.7010345459, -6.9138336181641}, + {107.7010345459, -6.9138336181641}, + {106.82075500488, -6.1942291259766}, + {104.23210144043, 1.0691070556641}, + {106.85371398926, -6.1598968505859}, + {119.68711853027, -5.2548980712891}, + {114.60182189941, -3.2691192626953}, + {114.6883392334, -3.4160614013672}, + {98.747177124023, 3.5890960693359}, + {98.66066, 3.573303}, + {104.70176696777, 0.91529846191406}, + {103.972755, 1.055087}, + {104.63584899902, -2.9148101806641}, + {105.21812438965, -4.8854827880859}, + {119.49348449707, -5.1573944091797}, + {119.86427307129, -5.6009674072266}, + {106.83448791504, -6.2134552001953}, + {-0.54313659667969, 50.811080932617}, + {-1.12186, 52.633852}, + {-0.594635, 51.725693}, + {-0.32066345214844, 51.847915649414}, + {-0.11192321777344, 51.478500366211}, + {-0.15449523925781, 51.249160766602}, + {0.7279, 50.933411}, + {0.559284, 50.855242}, + {-1.1254119873047, 52.632064819336}, + {0.66261291503906, 51.330184936523}, + {-0.641295, 52.184974}, + {1.040629, 51.092172}, + {1.126562, 51.802124}, + {-0.120976, 51.569862}, + {-0.001602, 51.601782}, + {-0.304184, 51.586561}, + {-0.024657, 51.540298}, + {0.077590942382812, 51.552658081055}, + {0.013046264648438, 51.560897827148}, + {0.399371, 51.410179}, + {-0.070419, 51.584091}, + {-60.053233, -3.093416}, + {-44.217339, -2.484466}, + {-46.908187866211, -23.508682250977}, + {-46.583062, -23.580369}, + {-46.537402, -23.573244}, + {-46.764817, -23.643526}, + {-46.75724, -23.648529}, + {-46.733267, -23.80392}, + {-46.636276245117, -23.51692199707}, + {-46.636276245117, -23.515548706055}, + {-46.842253, -23.513021}, + {-46.784484, -23.497499}, + {-46.857448, -23.208499}, + {-46.328758, -23.953159}, + {-47.467047, -23.484454}, + {-51.392463, -22.123907}, + {-47.072018, -22.941903}, + {-47.063435, -22.847586}, + {-47.327762, -22.63151}, + {-49.106598, -25.521011}, + {-49.529541, -25.448663}, + {-56.213607788086, -34.253311157227}, + {-56.042307, -34.875805}, + {-55.04768371582, -34.880905151367}, + {-56.165542602539, -34.927597045898}, + {-56.252518, -34.793015}, + {-54.943313598633, -34.945449829102}, + {-54.936104, -34.949913}, + {-54.962539672852, -34.926223754883}, + {-56.760177612305, -34.488143920898}, + {-58.095016479492, -32.314224243164}, + {-53.38098, -32.571356}, + {-56.897506713867, -33.518600463867}, + {-57.580032348633, -32.771530151367}, + {-56.899782, -34.413072}, + {-56.167603, -34.907851}, + {-54.982452, -34.739456}, + {-56.161422729492, -34.889144897461}, + {-54.913101196289, -34.93034362793}, + {-53.524703979492, -33.88801574707}, + {23.640518188477, 37.928237915039}, + {139.86625671387, 35.671920776367}, + {139.77149963379, 35.678787231445}, + {139.81407165527, 35.696640014648}, + {139.86969, 35.695267}, + {139.61494445801, 35.644454956055}, + {140.00633239746, 35.877914428711}, + {139.59571838379, 35.717239379883}, + {139.84977722168, 35.659561157227}, + {139.70008850098, 35.658187866211}, + {139.715881, 35.730972}, + {139.73579406738, 35.692520141602}, + {139.75639343262, 35.696640014648}, + {139.78660583496, 35.687026977539}, + {139.692535, 35.692177}, + {139.474526, 35.916367}, + {139.52156066895, 35.651321411133}, + {139.68910217285, 35.715866088867}, + {139.76188659668, 35.737838745117}, + {139.65339660645, 35.990524291992}, + {139.65614318848, 35.847702026367}, + {141.37962341309, 43.067092895508}, + {140.36476135254, 37.377548217773}, + {140.88935852051, 38.163070678711}, + {-7.6018524169922, 33.55842590332}, + {-7.5716400146484, 33.603744506836}, + {-7.6746368408203, 33.566665649414}, + {-7.6718902587891, 33.587265014648}, + {-5.50209, 33.896942}, + {-8.5109710693359, 33.25080871582}, + {-5.350919, 35.58392}, + {-1.8917083740234, 34.690017700195}, + {-8.8954925537109, 32.300491333008}, + {-8.2129669189453, 31.287002563477}, + {-9.5436859130859, 30.37239074707}, + {-9.5821380615234, 30.427322387695}, + {-6.5650177001953, 34.264297485352}, + {-6.7806243896484, 33.834457397461}, + {-5.0131988525391, 33.71223449707}, + {-15.951461791992, 23.70231628418}, + {-10.053176879883, 29.548416137695}, + {-6.6899871826172, 32.502365112305}, + {-6.5032196044922, 34.286270141602}, + {-8.5398101806641, 33.230209350586}, + {-7.9383087158203, 33.11897277832}, + {-2.9395294189453, 35.261306762695}, + {-5.5666351318359, 33.151931762695}, + {-8.5356903076172, 32.234573364258}, + {30.178756713867, 59.845962524414}, + {30.375137, 59.935226}, + {30.553322, 59.819527}, + {30.257148, 59.86971}, + {30.346298217773, 59.907760620117}, + {30.78987121582, 60.12336730957}, + {30.4332, 59.749834}, + {30.019293, 59.478648}, + {30.115585, 59.531021}, + {73.452385, 61.235733}, + {70.335159301758, 61.179428100586}, + {55.625153, 54.644623}, + {55.970673, 54.73732}, + {47.467098, 42.991831}, + {39.779434204102, 47.277603149414}, + {50.19928, 53.233017}, + {50.227432250977, 53.217086791992}, + {60.652084350586, 56.845321655273}, + {60.590298, 56.907296}, + {60.56694, 56.802406}, + {129.73823547363, 62.055587768555}, + {49.134292602539, 55.820846557617}, + {79.861679077148, 6.8781280517578}, + {79.98664855957, 6.7627716064453}, + {79.946823120117, 7.0401763916016}, + {80.629348754883, 7.3162078857422}, + {96.14616394043, 16.86882019043}, + {96.194229125977, 16.833114624023}, + {96.257400512695, 16.712265014648}, + {96.169509887695, 16.782302856445}, + {96.147537231445, 16.82487487793}, + {96.02668762207, 19.79118347168}, + {96.107711791992, 22.014541625977}, + {96.109085083008, 22.003555297852}, + {93.229293823242, 20.553359985352}, + {96.911086, 20.625229}, + {96.544418334961, 22.068099975586}, + {96.08024597168, 21.969223022461}, + {95.749283, 20.798492}, + {95.094223022461, 18.270950317383}, + {96.150283813477, 16.797409057617}, + {96.236801147461, 16.778182983398}, + {96.15715, 16.847191}, + {96.169509887695, 16.833114624023}, + {-86.467208862305, 34.29313659668}, + {-86.702453, 34.80098}, + {-86.87370300293, 34.992141723633}, + {-86.161357, 34.491087}, + {-86.820751, 33.609041}, + {-86.887894, 33.661424}, + {-86.755514, 33.502893}, + {-86.784192, 33.178257}, + {-87.523046, 33.174982}, + {-85.770811, 33.97426}, + {-86.037712, 33.895226}, + {-86.887435913086, 34.212112426758}, + {-86.64436340332, 34.765548706055}, + {-84.437484741211, 34.75456237793}, + {-84.997787475586, 34.790267944336}, + {-85.585556030273, 32.452926635742}, + {-85.20378112793, 32.84294128418}, + {-86.060299, 32.365261}, + {-86.210011, 32.642344}, + {-85.911026000977, 32.429580688477}, + {-82.852707, 34.105152}, + {-83.10272, 34.301042}, + {-83.842849731445, 34.335708618164}, + {-83.670555, 34.549942}, + {77.031326, 28.463058}, + {77.032883, 28.44397}, + {77.217682, 28.53067}, + {77.023086547852, 28.463516235352}, + {77.003860473633, 29.665145874023}, + {77.040939331055, 28.98811340332}, + {76.970901489258, 29.464645385742}, + {77.31559753418, 28.305587768555}, + {76.861038208008, 29.974136352539}, + {76.670150756836, 28.265762329102}, + {76.96403503418, 30.608596801758}, + {76.838608, 30.314255}, + {79.801254272461, 13.38752746582}, + {78.363418579102, 17.453842163086}, + {79.883651733398, 13.894271850586}, + {80.914993286133, 16.017379760742}, + {78.157424926758, 15.690536499023}, + {78.437576293945, 17.394790649414}, + {78.45817565918, 17.385177612305}, + {78.23844909668, 18.570327758789}, + {78.546982, 17.377625}, + {83.227615356445, 17.733993530273}, + {83.271560668945, 17.717514038086}, + {83.296555, 17.738663}, + {44.840733, 41.675182}, + {44.889686, 41.686434}, + {44.83039855957, 41.71989440918}, + {44.834518432617, 41.229629516602}, + {44.734268188477, 41.82975769043}, + {41.673175, 41.659733}, + {42.641372680664, 42.199172973633}, + {44.83039855957, 41.685562133789}, + {44.28942, 42.018193}, + {45.758743, 41.628571}, + {44.80843, 41.777917}, + {44.79071, 41.709183}, + {44.515573, 40.16739}, + {44.625778198242, 40.271072387695}, + {44.470596313477, 40.011520385742}, + {44.46682, 40.198975}, + {44.473686, 40.198975}, + {23.16535949707, 42.74299621582}, + {23.380966186523, 42.635879516602}, + {23.335922, 42.65419}, + {18.490677, 54.437714}, + {16.448593139648, 54.277267456055}, + {21.400680541992, 50.145034790039}, + {16.69303894043, 53.711471557617}, + {19.05647277832, 50.271377563477}, + {16.936111450195, 51.404342651367}, + {21.014785766602, 52.167892456055}, + {18.082809448242, 53.118209838867}, + {20.628890991211, 52.20085144043}, + {20.287632, 51.828004}, + {7.67601, 45.287018}, + {7.926784, 45.44152}, + {8.0522918701172, 45.383834838867}, + {7.535477, 44.795151}, + {8.6222076416016, 44.915542602539}, + {7.9547882080078, 44.94987487793}, + {8.31665, 45.169601}, + {7.531128, 45.096817}, + {8.7114715576172, 44.995193481445}, + {7.478256, 45.088062}, + {7.7419281005859, 45.076217651367}, + {7.742271, 45.138359}, + {8.112717, 45.555499}, + {7.6924896240234, 44.338760375977}, + {7.544173, 44.449953}, + {7.807593, 44.504353}, + {7.548981, 44.398499}, + {8.940125, 44.410858}, + {8.392449, 44.223708}, + {8.817215, 44.427796}, + {8.02813, 43.906486}, + {7.843159, 43.853891}, + {114.094391, 22.344818}, + {114.10469055176, 22.408676147461}, + {114.03190612793, 22.333145141602}, + {113.968048, 22.37915}, + {114.215364, 22.383273}, + {114.139847, 22.284546}, + {114.0209197998, 22.219161987305}, + {114.2310333252, 22.282333374023}, + {114.20219421387, 22.289199829102}, + {114.178162, 22.2995}, + {114.190929, 22.307579}, + {114.03465270996, 22.441635131836}, + {114.23377990723, 22.473220825195}, + {114.05113220215, 22.445755004883}, + {113.97285461426, 22.393569946289}, + {114.19532775879, 22.382583618164}, + {114.17627, 22.337009}, + {114.17335510254, 22.279586791992}, + {114.03053283691, 22.443008422852}, + {114.1431427002, 22.337265014648}, + {114.14726257324, 22.334518432617}, + {137.61817932129, 36.265182495117}, + {140.58311462402, 36.133346557617}, + {139.97062683105, 35.009994506836}, + {140.08460998535, 35.071792602539}, + {139.688187, 35.714951}, + {139.69596862793, 35.698013305664}, + {139.73167419434, 35.632095336914}, + {139.73854064941, 35.527725219727}, + {139.69184875488, 35.688400268555}, + {139.57649230957, 35.588150024414}, + {139.70008850098, 35.822982788086}, + {142.83805847168, 43.142623901367}, + {140.42930603027, 42.612533569336}, + {140.907211, 42.398479}, + {140.66825866699, 38.303146362305}, + {141.38786315918, 43.098678588867}, + {140.86463928223, 38.22624206543}, + {140.9676361084, 37.168807983398}, + {140.84541320801, 37.972183227539}, + {139.743691, 38.745003}, + {140.4402923584, 37.402267456055}, + {138.00132751465, 34.843826293945}, + {138.00270080566, 34.761428833008}, + {136.51405334473, 35.336837768555}, + {136.25038146973, 34.836959838867}, + {49.208450317383, 55.78239440918}, + {49.134292602539, 55.779647827148}, + {49.091720581055, 55.820846557617}, + {48.411255, 55.72609}, + {52.41096496582, 54.874649047852}, + {52.253036499023, 54.900741577148}, + {53.137435913086, 56.838455200195}, + {53.325576782227, 54.47639465332}, + {47.272109985352, 56.143569946289}, + {47.206192016602, 56.154556274414}, + {47.541275024414, 56.041946411133}, + {83.682861, 53.32901}, + {82.332229614258, 52.28874206543}, + {37.698907, 44.770828}, + {38.923873901367, 45.113296508789}, + {38.970565795898, 45.070724487305}, + {40.169449, 44.525528}, + {38.814010620117, 45.672225952148}, + {30.28244, 59.889221}, + {30.322952270508, 59.839096069336}, + {29.787368774414, 60.38703918457}, + {30.402809, 59.926878}, + {30.265274047852, 60.058822631836}, + {30.625073, 59.762192}, + {30.321578979492, 59.823989868164}, + {38.235855102539, 56.022720336914}, + {38.215255737305, 56.029586791992}, + {36.981125, 55.423965}, + {37.252007, 55.682487}, + {37.065353, 55.610733}, + {37.036972045898, 56.150436401367}, + {37.499771118164, 56.162796020508}, + {37.616500854492, 55.787887573242}, + {37.620620727539, 55.749435424805}, + {37.671432, 55.764084}, + {37.682418823242, 55.809860229492}, + {-42.781448364258, -5.0365447998047}, + {-42.786255, -5.026245}, + {-48.698959350586, -20.11116027832}, + {-47.891086, -22.028768}, + {-47.070236, -22.868042}, + {-47.111435, -22.972755}, + {-47.068444, -22.827865}, + {-47.035516, -22.893857}, + {-42.351608276367, -22.716293334961}, + {-51.096725463867, -29.961776733398}, + {-47.947769165039, -15.869064331055}, + {-48.049392700195, -15.917129516602}, + {-38.307266235352, -12.695388793945}, + {-38.014476, -12.574084}, + {-38.426742553711, -12.75993347168}, + {-35.918943, -7.261456}, + {-42.396926879883, -22.64762878418}, + {-43.934464, -19.787064}, + {-44.024276733398, -19.851608276367}, + {-47.977981567383, -15.925369262695}, + {-47.925145, -16.202745}, + {3.626175, 6.845169}, + {8.659973, 10.433578}, + {4.6080780029297, 8.5054779052734}, + {3.4174346923828, 6.7311859130859}, + {7.467957, 9.071274}, + {13.13942, 11.794968}, + {4.3677520751953, 7.3285675048828}, + {7.4947357177734, 9.0781402587891}, + {7.0607757568359, 6.2216949462891}, + {7.24617, 4.849777}, + {7.9026031494141, 6.4070892333984}, + {7.0388031005859, 4.8456573486328}, + {7.016219, 4.834679}, + {8.9929962158203, 7.3546600341797}, + {7.8160858154297, 5.6998443603516}, + {5.6984710693359, 5.5721282958984}, + {6.910629, 6.020737}, + {5.6696319580078, 6.3576507568359}, + {8.545303, 11.981277}, + {7.4054718017578, 10.441818237305}, + {7.565506, 9.007004}, + {7.5853729248047, 13.003005981445}, + {7.553024, 8.95752}, + {-95.822067, 36.313477}, + {-90.587082, 41.160278}, + {-89.702682495117, 40.286178588867}, + {-91.215586, 40.374229}, + {-89.149931, 42.164385}, + {-89.019547, 42.429886}, + {-88.994564, 42.305478}, + {-96.696069, 40.874732}, + {-93.295212, 37.168407}, + {-92.596206665039, 37.454452514648}, + {-98.744432, 40.719229}, + {-96.539097, 41.445065}, + {-96.033343, 41.335162}, + {-76.983261108398, 39.591293334961}, + {-76.81022644043, 39.267196655273}, + {-76.799240112305, 39.220504760742}, + {-71.082229614258, 42.307662963867}, + {-70.589218139648, 41.745986938477}, + {-70.063247680664, 41.750106811523}, + {-84.394912719727, 33.754806518555}, + {-84.23698425293, 33.683395385742}, + {-74.089736938477, 40.286178588867}, + {-80.838088989258, 35.218734741211}, + {-81.049575805664, 35.647201538086}, + {-80.549698, 35.584717}, + {12.639999, 55.651932}, + {12.577972, 55.680771}, + {12.516975, 55.652503}, + {12.183151245117, 55.610733032227}, + {12.412592, 55.622672}, + {12.35788, 55.657471}, + {12.419357299805, 55.691757202148}, + {16.574249, 59.094772}, + {16.153335571289, 61.334609985352}, + {17.344641, 62.447787}, + {14.697647094727, 57.516860961914}, + {16.017379760742, 58.818740844727}, + {18.696670532227, 59.764938354492}, + {18.386306762695, 59.433975219727}, + {20.839693, 64.773675}, + {18.041610717773, 59.383163452148}, + {15.810794, 58.444902}, + {15.755564, 58.449686}, + {101.564234, 3.158632}, + {101.52534484863, 3.3213043212891}, + {101.73683166504, 3.1620025634766}, + {101.37153625488, 3.1262969970703}, + {101.48002624512, 2.9821014404297}, + {101.844991, 2.489835}, + {102.243572, 2.195522}, + {102.619362, 2.060351}, + {102.30125427246, 2.2446441650391}, + {102.33421325684, 2.1608734130859}, + {101.98127746582, 2.6607513427734}, + {101.963364, 2.74561}, + {102.46879577637, 2.2570037841797}, + {101.76671, 2.928369}, + {101.69632, 2.935676}, + {101.67915344238, 3.0823516845703}, + {101.72721862793, 3.0974578857422}, + {101.70249938965, 3.0480194091797}, + {101.6626739502, 3.0356597900391}, + {101.61323547363, 2.9999542236328}, + {101.590347, 3.021927}, + {-82.617874145508, 43.768844604492}, + {-81.30632, 43.07806}, + {-79.531815, 42.867142}, + {-79.284896850586, 42.987442016602}, + {-79.353561401367, 44.653244018555}, + {-79.863604, 44.220823}, + {-69.095077514648, 47.85026550293}, + {-74.292984008789, 49.62043762207}, + {-67.099685668945, 52.803726196289}, + {-76.264896, 45.225118}, + {-72.572250366211, 46.32453918457}, + {-72.732894, 45.80273}, + {-71.078228, 45.648498}, + {-72.141036987305, 45.27946472168}, + {-73.12775, 45.0309}, + {-71.936416625977, 45.397567749023}, + {-48.889407, -26.24179}, + {-49.47389, -28.923611}, + {-51.030762, -30.069706}, + {-53.819344, -29.68654}, + {-47.870865, -15.828781}, + {-47.906939, -15.834059}, + {-49.23333, -16.717147}, + {-56.097143, -15.584727}, + {-43.310055, -21.776578}, + {-48.586349487305, -27.614822387695}, + {-63.894887, -8.758538}, + {-39.319472, -7.219419}, + {-43.952865600586, -19.903793334961}, + {-43.183231, -22.902462}, + {-35.728311, -9.642091}, + {-42.78694152832, -5.0763702392578}, + {-47.741775512695, -21.088943481445}, + {-56.073004, -15.598224}, + {-38.440475463867, -12.99201965332}, + {-38.472061157227, -12.95768737793}, + {-44.105644, -19.924736}, + {77.940445, 16.098404}, + {78.360672, 18.329315}, + {81.119613647461, 17.28630065918}, + {80.156936645508, 16.393661499023}, + {79.941329956055, 14.391403198242}, + {78.47053527832, 17.39616394043}, + {78.517227172852, 17.368698120117}, + {77.532577514648, 13.869552612305}, + {77.092667, 30.906143}, + {76.875801, 31.509132}, + {76.688001, 31.593262}, + {77.201065, 32.319443}, + {83.601150512695, 21.332015991211}, + {85.889053344727, 20.380325317383}, + {85.856094360352, 20.29655456543}, + {85.883560180664, 20.459976196289}, + {76.80061340332, 30.732192993164}, + {75.079879760742, 30.221328735352}, + {76.381759643555, 30.622329711914}, + {75.880508422852, 30.530319213867}, + {76.42707824707, 30.577011108398}, + {75.583877563477, 31.314468383789}, + {75.781631469727, 31.262283325195}, + {79.479218, 26.82312}, + {-4.0683746337891, 41.365585327148}, + {-5.9580230712891, 37.400894165039}, + {-2.5714874267578, 42.497177124023}, + {1.153567, 41.174013}, + {-0.38795471191406, 40.224380493164}, + {-0.422847, 39.361818}, + {-0.479279, 39.47525}, + {-0.38658142089844, 39.488296508789}, + {-5.074997, 41.919937}, + {-5.669632, 42.013436}, + {-0.875216, 41.645308}, + {-0.799484, 41.664047}, + {-3.4462738037109, 40.316390991211}, + {-3.6618804931641, 40.372695922852}, + {-4.0216827392578, 39.865951538086}, + {1.4069366455078, 41.62239074707}, + {-3.3927154541016, 38.790664672852}, + {-0.920103, 37.603455}, + {9.417681, 45.517671}, + {14.063423, 37.480335}, + {12.588272094727, 41.869583129883}, + {11.301498413086, 44.507675170898}, + {9.019776, 45.506744}, + {9.2099761962891, 45.440139770508}, + {9.280767, 46.043012}, + {8.7691497802734, 45.839767456055}, + {9.253861, 45.60243}, + {9.375471, 45.482287}, + {9.215121, 45.186139}, + {9.177688, 45.458585}, + {9.2195892333984, 45.453872680664}, + {7.704797, 45.068898}, + {9.2566680908203, 45.382461547852}, + {7.557805, 45.059831}, + {6.7023468017578, 45.074844360352}, + {8.490677, 45.113602}, + {10.208289, 45.533653}, + {10.600496, 45.465608}, + {10.001973, 45.139193}, + {-122.302895, 47.733879}, + {-122.628068, 48.311785}, + {-122.146487, 47.65467}, + {-122.31971740723, 47.677230834961}, + {-122.267408, 47.48497}, + {-74.698792, 40.385056}, + {-75.082626342773, 41.187057495117}, + {-75.182876586914, 39.946975708008}, + {-75.771561, 39.659958}, + {-75.664902, 39.437103}, + {-75.436249, 39.722958}, + {-75.019454956055, 39.84260559082}, + {-95.42754, 30.005918}, + {-96.828689575195, 30.398483276367}, + {-95.261078, 30.797424}, + {-94.733324, 30.15633}, + {-95.38797, 29.838181}, + {-95.230178833008, 29.893112182617}, + {-90.576095581055, 38.279800415039}, + {-90.930391, 38.338861}, + {-77.24006652832, 38.971939086914}, + {-77.045059204102, 38.893661499023}, + {-76.544495, 37.806702}, + {-76.556167602539, 39.397659301758}, + {78.204117, 12.255936}, + {77.068405151367, 11.025466918945}, + {78.739700317383, 10.66291809082}, + {79.309616088867, 10.338821411133}, + {78.293380737305, 11.665420532227}, + {77.41584777832, 11.138076782227}, + {79.664474, 12.217209}, + {79.280776977539, 12.976913452148}, + {77.557983, 11.425095}, + {77.722091674805, 8.6730194091797}, + {79.499130249023, 11.930465698242}, + {80.156936645508, 13.358688354492}, + {78.224716186523, 10.934829711914}, + {79.207992553711, 11.341323852539}, + {78.569412231445, 12.49626159668}, + {77.822341918945, 9.4942474365234}, + {78.185577, 9.970779}, + {78.164291381836, 11.191635131836}, + {79.655685, 12.216797}, + {79.815331, 11.931839}, + {77.388381958008, 10.875778198242}, + {77.711105, 8.75473}, + {79.467544555664, 11.008987426758}, + {-117.87986755371, 33.741073608398}, + {-117.904068, 34.130627}, + {-117.9842376709, 34.015731811523}, + {-117.89497375488, 34.121475219727}, + {-118.27537536621, 34.011611938477}, + {-118.25065612793, 34.045944213867}, + {-118.40995788574, 34.220352172852}, + {-117.991562, 34.593887}, + {-117.453464, 34.34601}, + {-117.894974, 33.79509}, + {-117.348404, 34.399338}, + {-118.0281829834, 33.764419555664}, + {-118.21495056152, 33.824844360352}, + {-118.28438, 33.845502}, + {-118.2218170166, 34.036331176758}, + {-118.30284118652, 33.815231323242}, + {-118.24378967285, 33.826217651367}, + {-118.1957244873, 34.144821166992}, + {34.777486, 31.753578}, + {34.801477, 31.872044}, + {34.959018, 32.825253}, + {34.983901977539, 32.786636352539}, + {35.060234, 32.819023}, + {35.045700073242, 32.77702331543}, + {35.119171, 32.820969}, + {34.815245, 31.253014}, + {34.784774780273, 32.076644897461}, + {34.75456237793, 32.050552368164}, + {34.759925, 32.005038}, + {34.865799, 32.336884}, + {34.909744, 32.360916}, + {34.949569702148, 32.231826782227}, + {34.983901977539, 32.242813110352}, + {34.795761108398, 32.079391479492}, + {34.809494018555, 32.072525024414}, + {102.80799865723, 25.037155151367}, + {102.7613067627, 24.979476928711}, + {123.41972351074, 41.75422668457}, + {114.08821105957, 22.53776550293}, + {114.077568, 22.672348}, + {113.875008, 22.613983}, + {114.14039611816, 22.578964233398}, + {113.13652038574, 23.102188110352}, + {114.43153381348, 23.082962036133}, + {114.3724822998, 22.842636108398}, + {112.89894104004, 22.650375366211}, + {126.604385, 45.97538}, + {116.7455291748, 23.387832641602}, + {111.58882141113, 21.79069519043}, + {111.300278, 30.687027}, + {103.3861541748, 36.127853393555}, + {115.21018981934, 37.915878295898}, + {119.75028991699, 39.995040893555}, + {118.72581481934, 32.27165222168}, + {118.79585266113, 33.706741333008}, + {112.53364562988, 37.856826782227}, + {112.88795471191, 35.415115356445}, + {112.86598205566, 36.835098266602}, + {139.68635559082, 35.625228881836}, + {139.78385925293, 35.553817749023}, + {139.6753692627, 35.659561157227}, + {140.23979187012, 35.540084838867}, + {139.97749328613, 35.445327758789}, + {140.0365447998, 35.67741394043}, + {139.933549, 35.713806}, + {139.66163635254, 35.854568481445}, + {139.57099914551, 35.776290893555}, + {139.47486877441, 35.776290893555}, + {139.74128723145, 35.713119506836}, + {139.76051330566, 35.704879760742}, + {139.79621887207, 35.696640014648}, + {139.4034576416, 35.822982788086}, + {139.186478, 35.992584}, + {139.64790344238, 35.814743041992}, + {139.69596862793, 35.846328735352}, + {139.27436828613, 36.108627319336}, + {139.63554382324, 35.465927124023}, + {140.177994, 35.599823}, + {139.62799, 35.923576}, + {140.05714416504, 36.031723022461}, + {140.208206, 36.077728}, + {139.65202331543, 36.355819702148}, + {-117.019452, 32.59509}, + {-117.23030090332, 32.746810913086}, + {-119.655643, 36.842937}, + {-118.031163, 33.783646}, + {-117.91694641113, 33.747940063477}, + {-117.673211, 33.545532}, + {-117.826822, 33.694575}, + {-117.763777, 33.734004}, + {-117.93891906738, 33.801498413086}, + {-117.838113, 33.690648}, + {-157.727139, 21.285043}, + {-157.75177, 21.378147}, + {-155.54512023926, 19.094924926758}, + {-115.032471, 36.150717}, + {-115.232174, 36.003653}, + {-113.94264221191, 35.205001831055}, + {-112.39486, 33.601211}, + {-111.75498962402, 33.506240844727}, + {-112.02964782715, 33.52409362793}, + {-112.12577819824, 33.572158813477}, + {20.998131, 52.271646}, + {20.957107543945, 52.268142700195}, + {20.481491, 52.438431}, + {21.156234741211, 52.295608520508}, + {20.926484, 52.385324}, + {21.05598449707, 52.305221557617}, + {20.790939331055, 52.253036499023}, + {21.001052856445, 52.24479675293}, + {21.046371459961, 52.248916625977}, + {21.04548, 52.176182}, + {21.218032836914, 52.110214233398}, + {21.044998168945, 52.19123840332}, + {21.016617, 52.165604}, + {21.382827758789, 52.055282592773}, + {21.292190551758, 52.220077514648}, + {21.001052856445, 52.226943969727}, + {20.989609, 52.252579}, + {21.019825, 52.224253}, + {21.02165222168, 52.218704223633}, + {21.075210571289, 52.155532836914}, + {20.984573364258, 52.224197387695}, + {-2.231513, 51.552636}, + {-1.528271, 54.765106}, + {0.35087585449219, 51.633682250977}, + {-1.4701080322266, 53.490371704102}, + {0.49369812011719, 51.754531860352}, + {-2.656917, 51.514721}, + {-2.4959564208984, 51.588363647461}, + {-0.170829, 51.470362}, + {-0.168125, 51.300995}, + {-4.193046, 55.831509}, + {-3.859802, 55.735955}, + {-3.01663, 56.490947}, + {-1.104404, 51.758612}, + {-0.030937, 51.711857}, + {-0.395138, 51.680057}, + {-0.52940368652344, 51.602096557617}, + {-0.485507, 51.89353}, + {-0.16713, 51.798203}, + {7.569137, 51.024225}, + {7.045972, 51.065387}, + {6.8177032470703, 51.363143920898}, + {6.876755, 51.472026}, + {6.4331817626953, 51.27799987793}, + {6.605481, 51.367411}, + {6.583165, 51.338719}, + {6.7572784423828, 50.679244995117}, + {6.9687652587891, 50.866012573242}, + {6.719284, 51.228561}, + {6.848602, 51.303337}, + {6.842963, 51.295312}, + {6.8630218505859, 51.379623413086}, + {6.9879913330078, 51.103591918945}, + {6.912264, 51.183831}, + {6.8698883056641, 51.061019897461}, + {6.969871, 51.126538}, + {7.325821, 51.561661}, + {7.344184, 51.498429}, + {8.078366, 51.571714}, + {8.126167, 51.554074}, + {116.3939666748, -8.6386871337891}, + {107.50602722168, -6.8520355224609}, + {107.67768859863, -6.9042205810547}, + {119.37126159668, -1.1734771728516}, + {121.79649353027, -2.2872161865234}, + {106.83723449707, -6.2409210205078}, + {123.04893493652, 0.56098937988281}, + {119.425083, -5.145082}, + {119.390691, -5.181152}, + {119.496992, -5.133723}, + {119.658279, -5.254211}, + {106.85508728027, -6.4290618896484}, + {98.791809, 1.73172}, + {99.656754, 2.95372}, + {95.270462, 5.851822}, + {97.835311889648, 3.4833526611328}, + {95.978622436523, 5.2782440185547}, + {99.778518676758, 0.65162658691406}, + {99.490127563477, 1.0196685791016}, + {99.658587, 2.852078}, + {98.591995, 3.601456}, + {98.506851196289, 2.8887176513672}, + {100.287669, -0.709062}, + {153.012156, -27.390641}, + {152.97249, -27.009936}, + {153.06604, -26.663928}, + {153.088425, -26.662012}, + {149.21012878418, -21.400680541992}, + {153.071156, -27.588}, + {153.458882, -28.119057}, + {152.978335, -27.154119}, + {152.976608, -27.892227}, + {149.155769, -21.161156}, + {151.979033, -26.843045}, + {138.581883, -34.909318}, + {137.127967, -33.293381}, + {138.69495, -34.784016}, + {139.24937, -34.952707}, + {115.85838317871, -32.032699584961}, + {115.786797, -32.035542}, + {115.771362, -31.691544}, + {116.01107, -32.195474}, + {114.1431427002, -27.750778198242}, + {-48.492965698242, -27.160263061523}, + {-51.537551879883, -29.104843139648}, + {-49.114645, -28.749699}, + {-48.661880493164, -26.992721557617}, + {-48.505325317383, -27.680740356445}, + {-48.462753295898, -27.606582641602}, + {-48.049392700195, -15.893783569336}, + {-47.929916381836, -16.173934936523}, + {-47.839737, -15.669479}, + {-48.118057250977, -15.786666870117}, + {-48.086471557617, -15.882797241211}, + {-47.888717651367, -15.76057434082}, + {-47.868881, -15.801926}, + {-49.300599, -25.434558}, + {-49.827461, -25.469056}, + {-49.289634, -16.71698}, + {-49.050521850586, -26.477737426758}, + {-49.32343, -16.626263}, + {-48.799671, -26.272955}, + {-48.017807006836, -15.871810913086}, + {-49.267894, -16.601225}, + {101.644946, 3.227171}, + {101.65855407715, 3.4600067138672}, + {102.86018371582, 1.8463897705078}, + {101.62135, 3.046147}, + {101.10511779785, 4.4611358642578}, + {100.504303, 6.466827}, + {101.260025, 4.201584}, + {100.94993591309, 5.0379180908203}, + {99.665908813477, 6.3851165771484}, + {100.269127, 5.284424}, + {100.41847229004, 5.2288055419922}, + {101.111592, 4.587086}, + {101.06941223145, 4.6479034423828}, + {100.510164, 5.712431}, + {103.625009, 1.531143}, + {103.77891540527, 1.5648651123047}, + {103.751911, 1.637656}, + {102.74757385254, 2.0262908935547}, + {103.89839172363, 1.7227935791016}, + {102.6390838623, 2.7458953857422}, + {118.200417, 5.551758}, + {117.92106628418, 4.2565155029297}, + {-97.316207885742, 32.926712036133}, + {-71.397629, 42.777328}, + {-70.924988, 43.172836}, + {-76.951675415039, 39.021377563477}, + {-76.948043, 38.968528}, + {-77.096418, 39.051188}, + {-77.145309, 39.396973}, + {-77.065487, 38.914948}, + {-77.417068, 38.888474}, + {-77.473869, 38.897806}, + {-77.570572, 38.707581}, + {-77.294681, 38.828166}, + {-77.268672, 38.843305}, + {-76.849315, 38.90294}, + {-76.746166, 38.903436}, + {-76.990585, 38.822708}, + {-76.487907, 38.349757}, + {-77.164593, 38.871517}, + {-80.302309, 36.152965}, + {-79.945528, 35.937646}, + {-79.441975, 36.086589}, + {-79.818086, 36.047111}, + {-86.143112182617, 33.616104125977}, + {-85.882645, 31.328659}, + {78.042068481445, 30.324325561523}, + {77.676773071289, 27.491226196289}, + {77.717916, 28.866334}, + {78.754806518555, 28.830184936523}, + {79.052810668945, 28.258895874023}, + {79.626846313477, 29.640426635742}, + {78.122406, 30.206223}, + {80.091018676758, 29.390487670898}, + {78.59001159668, 29.394607543945}, + {79.42497253418, 28.983993530273}, + {77.281265258789, 29.347915649414}, + {77.121963500977, 28.640670776367}, + {78.817977905273, 27.191848754883}, + {79.530716, 26.615753}, + {77.954177856445, 27.211074829102}, + {78.020095825195, 27.21794128418}, + {72.488479614258, 22.990951538086}, + {72.557602, 23.029495}, + {72.516289, 23.073006}, + {72.31819152832, 23.400192260742}, + {72.386856, 23.605728}, + {72.665634155273, 21.167221069336}, + {71.631546020508, 23.831405639648}, + {69.678726196289, 23.229904174805}, + {69.990463256836, 23.277969360352}, + {106.760353, -6.161055}, + {106.801674, -6.588123}, + {106.846848, -6.231995}, + {106.87705993652, -6.2244415283203}, + {98.650131, 3.589783}, + {112.62702941895, -7.9589080810547}, + {110.403671, -6.960526}, + {106.627823, -6.156159}, + {106.703619, -6.156969}, + {106.826577, -6.285191}, + {106.817238, -6.290801}, + {106.964129, -6.26238}, + {106.81114196777, -6.2120819091797}, + {106.812457, -6.149062}, + {106.764884, -6.118554}, + {106.83311462402, -6.3549041748047}, + {106.814849, -6.226197}, + {106.850263, -6.253609}, + {107.598933, -6.920393}, + {110.452785, -6.995731}, + {98.671646118164, 3.5836029052734}, + {98.693815, 3.564377}, + {112.723812, -7.266875}, + {112.678487, -7.305379}, + {27.541123, 60.932236}, + {24.948295, 61.111707}, + {21.528397, 63.020325}, + {25.671615600586, 66.533889770508}, + {25.32051, 54.668656}, + {23.926162719727, 54.884262084961}, + {23.92662, 54.903488}, + {23.930794, 54.739616}, + {24.196701, 54.204483}, + {25.817657, 55.835963}, + {22.683334350586, 55.084762573242}, + {25.258255004883, 55.077896118164}, + {23.904192, 54.883988}, + {23.942642211914, 54.91584777832}, + {24.886093, 55.384141}, + {23.088454, 55.814667}, + {24.366989135742, 55.054550170898}, + {22.864608764648, 54.653549194336}, + {127.74971008301, 37.866439819336}, + {128.05046081543, 37.911758422852}, + {126.79172, 37.486219}, + {126.78743, 37.445744}, + {126.6771697998, 37.509384155273}, + {126.74858093262, 37.681045532227}, + {126.82737, 37.597302}, + {126.889719, 37.658849}, + {127.356538, 36.362301}, + {127.266898, 38.064745}, + {127.376322, 36.345693}, + {127.052471, 36.184064}, + {127.055587, 36.810553}, + {127.206666, 36.686198}, + {127.172085, 36.801378}, + {127.38304138184, 36.626358032227}, + {127.45445251465, 36.631851196289}, + {127.47779846191, 36.629104614258}, + {126.896071, 35.154857}, + {127.576356, 34.903478}, + {126.678685, 35.400611}, + {127.34321594238, 35.354690551758}, + {129.351058, 36.205446}, + {128.714733, 36.552582}, + {128.60252380371, 35.862808227539}, + {2.7294158935547, 49.138412475586}, + {6.120072, 46.012802}, + {2.3696136474609, 48.815689086914}, + {2.421406, 48.800583}, + {2.3723602294922, 48.859634399414}, + {2.382157, 48.839558}, + {2.405766, 48.847855}, + {2.3380279541016, 48.679733276367}, + {4.881167, 45.614744}, + {4.806976, 45.722351}, + {4.7811126708984, 45.761489868164}, + {-1.543579, 47.199326}, + {-1.583371, 47.003665}, + {5.3798675537109, 43.321151733398}, + {5.4471588134766, 43.32389831543}, + {5.711803, 43.478107}, + {5.375748, 43.316071}, + {-120.78025817871, 37.058944702148}, + {-120.57975769043, 37.050704956055}, + {-121.062332, 39.261429}, + {-119.79835510254, 39.47868347168}, + {-119.64179992676, 37.012252807617}, + {-120.8667755127, 36.949081420898}, + {-121.663034, 39.684053}, + {-119.22157287598, 38.196029663086}, + {-119.117466, 36.210603}, + {-118.80683898926, 36.506881713867}, + {-121.045337, 38.23498}, + {-122.852554, 38.487854}, + {-121.95167541504, 37.374801635742}, + {-122.03407287598, 37.409133911133}, + {-121.9654083252, 37.366561889648}, + {-122.27577209473, 37.55744934082}, + {-122.1492, 37.480316}, + {-121.64405822754, 37.33772277832}, + {-121.899347, 37.292056}, + {-122.366251, 37.915442}, + {23.588333, 51.118698}, + {23.340225, 51.004257}, + {22.577590942383, 51.335678100586}, + {20.965347290039, 52.236557006836}, + {20.821151733398, 52.152786254883}, + {20.740127563477, 52.247543334961}, + {22.25853, 50.935593}, + {20.328140258789, 51.93717956543}, + {19.682693, 52.517624}, + {20.653610229492, 50.866012573242}, + {22.522659301758, 51.297225952148}, + {22.541166, 51.224395}, + {21.038714, 52.165032}, + {21.062829, 52.189478}, + {20.81749, 52.172012}, + {10.370407104492, 45.425033569336}, + {9.067811, 45.576407}, + {9.2140960693359, 45.466232299805}, + {9.2346954345703, 45.563735961914}, + {9.1550445556641, 45.452499389648}, + {9.2168426513672, 45.46760559082}, + {9.161931, 45.2074}, + {9.522812, 45.603561}, + {9.2978668212891, 45.548629760742}, + {9.093704, 45.521164}, + {9.153877, 45.494669}, + {9.1660308837891, 45.47721862793}, + {8.9339447021484, 45.610427856445}, + {10.418669, 45.533524}, + {10.250244, 45.527344}, + {10.215225, 45.581589}, + {9.190292, 45.462112}, + {11.182022094727, 45.400314331055}, + {10.965042114258, 45.407180786133}, + {12.120678, 45.419667}, + {-34.846572875977, -7.0854949951172}, + {-40.508223, -9.374256}, + {-38.79451, -3.855789}, + {-34.967, -8.097505}, + {-38.493547, -3.846927}, + {-34.877505, -7.938573}, + {-36.491825, -8.888288}, + {-41.831130981445, -3.8115692138672}, + {-37.46544, -9.215471}, + {-48.076858520508, -16.092910766602}, + {-49.216690063477, -25.466995239258}, + {-49.271642, -25.437061}, + {-52.074507, -23.663874}, + {-49.003574, -26.478234}, + {-48.623179, -26.994594}, + {-52.593612670898, -30.598983764648}, + {-51.408325, -29.811795}, + {-51.139028, -30.025103}, + {-51.165349, -30.04534}, + {-50.86821, -29.419601}, + {-91.943893432617, 34.804000854492}, + {-94.090347290039, 36.340713500977}, + {-84.901657104492, 42.626266479492}, + {-83.33610534668, 42.278823852539}, + {-83.415756225586, 42.490310668945}, + {-80.156251, 26.416627}, + {-81.393585, 28.378372}, + {-81.320114135742, 28.83430480957}, + {-82.30339050293, 28.033676147461}, + {-81.997146606445, 26.917190551758}, + {-86.590805053711, 30.48225402832}, + {-103.27079772949, 30.173263549805}, + {-97.74055480957, 30.265274047852}, + {-97.669143676758, 30.203475952148}, + {-98.704605102539, 29.82307434082}, + {-94.289474487305, 45.076217651367}, + {-88.069839477539, 42.855606079102}, + {-88.316345, 43.332825}, + {37.742386, 55.677109}, + {37.866439819336, 55.671157836914}, + {38.044967651367, 55.753555297852}, + {37.917251586914, 55.829086303711}, + {37.856826782227, 55.944442749023}, + {37.286911010742, 55.441818237305}, + {37.97732, 55.89461}, + {38.899154663086, 55.060043334961}, + {38.224182, 55.557861}, + {37.433265, 56.02684}, + {37.757126, 55.756577}, + {37.587324, 55.777783}, + {37.594528198242, 55.792007446289}, + {37.683626, 55.760422}, + {37.610688, 55.608653}, + {37.749939, 55.661087}, + {30.219498, 60.02449}, + {30.438228, 59.970124}, + {30.226903, 60.018593}, + {30.87648, 59.542465}, + {30.391235, 59.870481}, + {-122.53532409668, 49.029922485352}, + {-123.0893, 49.159941}, + {-123.667398, 48.766715}, + {-123.34693908691, 48.83903503418}, + {-125.098294, 49.925561}, + {-125.53733825684, 50.127182006836}, + {-120.679705, 50.201626}, + {-119.39872741699, 49.895095825195}, + {-119.870454, 51.565705}, + {-120.51795959473, 49.939041137695}, + {-113.54164123535, 53.66340637207}, + {-113.435743, 53.611254}, + {-113.56910705566, 53.530197143555}, + {-112.89482116699, 53.565902709961}, + {-0.90980529785156, 51.658401489258}, + {-0.661926, 51.809807}, + {-0.968857, 52.503433}, + {-0.985794, 52.478714}, + {-0.64888, 53.002167}, + {-1.4810943603516, 53.089370727539}, + {-0.845672, 53.084634}, + {-0.447693, 51.524506}, + {-0.391015, 51.560068}, + {-0.078964, 51.623726}, + {-0.37971496582031, 51.856155395508}, + {-0.099563598632812, 51.604843139648}, + {-0.283557, 51.753992}, + {-0.23826599121094, 51.935806274414}, + {-0.191574, 51.809464}, + {-0.68321228027344, 51.600723266602}, + {-0.150375, 51.65528}, + {-0.035018920898438, 51.644668579102}, + {-49.314049, -16.735435}, + {-49.239951, -16.712659}, + {-49.255142211914, -16.682052612305}, + {-49.253768920898, -16.71501159668}, + {-43.73176574707, -22.883834838867}, + {-43.340059, -22.726318}, + {-46.640396118164, -23.57048034668}, + {-43.297805786133, -22.784957885742}, + {-43.308335, -22.765395}, + {-43.307418823242, -22.778091430664}, + {-43.106003, -22.861404}, + {-43.076269, -22.820584}, + {-43.014801, -22.817691}, + {-42.937232, -22.773082}, + {-43.125458, -22.892761}, + {-35.243453979492, -5.8866119384766}, + {-41.725387573242, -2.9175567626953}, + {-47.298963, -23.259179}, + {-40.499725, -7.57782}, + {-41.759719848633, -6.3919830322266}, + {0.35362243652344, 46.584091186523}, + {3.6399078369141, 50.210952758789}, + {1.243515, 49.465256}, + {-1.711565, 48.122985}, + {-1.650356, 48.104002}, + {-0.41404724121094, 43.436508178711}, + {4.843597, 46.758009}, + {2.330704, 49.901276}, + {6.4455413818359, 48.189468383789}, + {-1.1034393310547, 46.177597045898}, + {-0.10505676269531, 49.288101196289}, + {2.6058197021484, 48.985977172852}, + {3.0617523193359, 50.632553100586}, + {2.3407745361328, 48.832168579102}, + {-3.6687469482422, 40.44548034668}, + {-3.52489, 40.336746}, + {-3.654557, 40.308708}, + {-74.654846, 40.476379}, + {-74.588928, 40.459213}, + {-74.03343, 40.67894}, + {-74.040298461914, 40.717391967773}, + {-74.050598, 40.604782}, + {-74.391860961914, 40.629501342773}, + {-84.349594116211, 33.731460571289}, + {-74.248581, 40.705032}, + {-81.660690307617, 32.382888793945}, + {-81.796646, 32.404175}, + {-84.489669799805, 33.408737182617}, + {-83.141098022461, 34.192886352539}, + {-83.586044311523, 34.477157592773}, + {-84.07554, 31.556128}, + {-84.928025, 30.993838}, + {-83.763757, 34.60155}, + {-84.583053588867, 34.692764282227}, + {-83.559698, 30.766902}, + {-82.328434, 31.225586}, + {-82.257113, 31.299404}, + {16.937484741211, 51.045913696289}, + {18.92463684082, 50.348281860352}, + {15.557327270508, 52.437057495117}, + {20.99006652832, 52.284622192383}, + {-67.42790222168, 8.9229583740234}, + {-69.809188842773, 10.138320922852}, + {-68.25325012207, 10.473403930664}, + {-67.548752, 10.068283}, + {-68.007431030273, 10.187759399414}, + {-67.47184753418, 7.9026031494141}, + {-66.859287, 10.272982}, + {-63.868103, 10.966415}, + {-71.889724731445, 10.88264465332}, + {-64.235779, 8.89514}, + {-65.756607055664, -19.570083618164}, + {-65.253067, -19.040451}, + {-63.290177, -17.332993}, + {-66.212769, -17.39296}, + {-65.718154907227, -21.444625854492}, + {-66.157608032227, -17.383804321289}, + {-86.299667358398, 39.794540405273}, + {-86.109782, 39.760408}, + {-86.106193, 39.91951}, + {-85.625381469727, 40.099411010742}, + {-86.112061, 39.932732}, + {-86.430719, 39.410215}, + {-86.197093, 39.664606}, + {-86.932754516602, 40.455093383789}, + {-86.167831420898, 39.912643432617}, + {-86.325437, 39.92266}, + {-117.448654, 47.679291}, + {-117.410905, 47.701382}, + {-119.89448547363, 36.815872192383}, + {-119.18586730957, 36.311874389648}, + {-118.9771270752, 35.353317260742}, + {-119.091339, 35.339355}, + {-118.72718811035, 35.28190612793}, + {-87.973709, 43.029373}, + {-87.970915, 43.088687}, + {-87.814211, 42.717247}, + {-89.4841, 43.434677}, + {-89.085646, 42.913971}, + {-88.37574, 43.244247}, + {-88.280182, 43.041992}, + {-88.425868, 43.172844}, + {11.550812, 48.10223}, + {11.533584594727, 48.129043579102}, + {11.57341003418, 48.146896362305}, + {11.550064086914, 48.134536743164}, + {11.442947387695, 48.145523071289}, + {11.032333374023, 49.553146362305}, + {11.054803, 49.468376}, + {10.182266235352, 49.370498657227}, + {11.036639, 49.382045}, + {11.354096, 50.2343}, + {11.232574, 48.295605}, + {10.880575, 48.353388}, + {10.900955, 48.393173}, + {-46.565552, -21.785202}, + {-44.643631, -20.071335}, + {-44.557646, -19.713041}, + {-46.890596, -17.192395}, + {-43.637256, -22.91954}, + {-40.637741088867, -20.811538696289}, + {-43.196697, -22.910674}, + {-43.263473510742, -22.872848510742}, + {-42.79, -23.006085}, + {-41.337783, -21.771642}, + {-43.163782, -22.121163}, + {-40.585091, -20.378332}, + {-44.026509, -19.812405}, + {-40.285561, -20.236816}, + {-44.857948, -20.133522}, + {-46.018075, -20.641082}, + {-43.212661743164, -19.620895385742}, + {31.804733276367, -1.3217926025391}, + {37.414627, -3.364792}, + {36.347579956055, -3.4229278564453}, + {32.02033996582, 1.7584991455078}, + {33.476028442383, 0.61454772949219}, + {30.05241394043, -0.12977600097656}, + {31.836318969727, 2.5536346435547}, + {32.584762573242, 0.30555725097656}, + {32.542895, 0.223553}, + {32.565536499023, 0.25886535644531}, + {32.245276, 2.235117}, + {32.909899, 2.434473}, + {32.858047485352, 2.2638702392578}, + {32.639694213867, 0.37834167480469}, + {32.575149536133, 0.35087585449219}, + {30.093612670898, 0.17921447753906}, + {32.582703, 0.31723}, + {32.888259887695, 0.79994201660156}, + {35.246200561523, -13.305130004883}, + {39.27681, -15.124054}, + {32.414474487305, -25.859756469727}, + {32.500991821289, -24.255752563477}, + {12.446823120117, 44.187698364258}, + {11.754, 45.323416}, + {11.796571, 45.308304}, + {11.407241821289, 45.695571899414}, + {12.941207885742, 46.415176391602}, + {13.031845092773, 45.640640258789}, + {11.708952, 44.579149}, + {12.159805297852, 44.226150512695}, + {12.172164916992, 45.63102722168}, + {12.40631, 45.734028}, + {12.511367797852, 41.901168823242}, + {12.129592895508, 42.434005737305}, + {12.585525512695, 41.832504272461}, + {-9.2168426513672, 38.767318725586}, + {-9.2086029052734, 38.815383911133}, + {-9.3582916259766, 38.68766784668}, + {-9.205856, 38.745346}, + {-9.3500518798828, 38.778305053711}, + {-9.145919, 39.409576}, + {-8.72643, 38.833413}, + {-9.1509246826172, 39.404525756836}, + {-8.132809, 39.562645}, + {-7.4040985107422, 39.298782348633}, + {-8.918833, 39.707149}, + {-8.629074, 41.155014}, + {-8.6084747314453, 41.156845092773}, + {-25.567932, 37.754517}, + {-16.852340698242, 32.691879272461}, + {-16.927871704102, 32.661666870117}, + {-8.542557, 41.534775}, + {-8.2733917236328, 41.454849243164}, + {-8.562241, 41.222992}, + {-8.6373138427734, 41.165084838867}, + {-8.5274505615234, 41.202163696289}, + {115.16212463379, 35.810623168945}, + {113.68721008301, 34.994888305664}, + {113.84651184082, 36.163558959961}, + {112.9923248291, 35.261306762695}, + {113.88084411621, 33.878402709961}, + {108.98918151855, 34.254684448242}, + {108.96583557129, 34.220352172852}, + {108.93699645996, 34.220352172852}, + {123.38264465332, 41.784439086914}, + {123.41285705566, 41.658096313477}, + {121.51222229004, 38.857955932617}, + {121.24168395996, 38.80989074707}, + {122.0711517334, 40.221633911133}, + {121.30485534668, 41.071701049805}, + {119.29573059082, 42.299423217773}, + {120.74043273926, 49.27848815918}, + {120.73905944824, 31.27326965332}, + {120.83518981934, 31.255416870117}, + {118.79997253418, 32.010726928711}, + {120.47676086426, 30.951919555664}, + {120.97389221191, 31.389999389648}, + {120.29685974121, 31.88850402832}, + {120.30372619629, 31.567153930664}, + {119.97001647949, 31.847305297852}, + {21.52499, 52.193103}, + {22.553558, 51.253967}, + {22.759552, 51.158524}, + {22.569351196289, 51.267013549805}, + {22.936019897461, 54.120712280273}, + {22.217788696289, 50.061264038086}, + {18.728256, 50.275497}, + {19.796676635742, 50.190353393555}, + {19.994430541992, 50.054397583008}, + {19.762344360352, 50.249404907227}, + {21.633797, 49.884109}, + {21.976089477539, 50.031051635742}, + {21.941757, 49.574432}, + {19.310531616211, 50.076370239258}, + {18.666458129883, 50.101089477539}, + {17.960586547852, 50.665512084961}, + {45.739517211914, 36.862564086914}, + {50.605087280273, 35.266799926758}, + {48.140029907227, 36.313247680664}, + {60.29914855957, 27.627182006836}, + {61.962204, 27.308122}, + {61.38542175293, 28.072128295898}, + {-0.73265075683594, 52.066268920898}, + {-0.873871, 52.061462}, + {-0.38108825683594, 51.880874633789}, + {-0.95237731933594, 51.665267944336}, + {-1.424789, 51.786991}, + {-1.260711, 51.773704}, + {-0.245705, 52.327652}, + {-1.773043, 53.645054}, + {-1.259602, 54.569778}, + {-1.4824676513672, 54.219589233398}, + {-2.012558, 57.692054}, + {-6.7641448974609, 54.512100219727}, + {-4.1123199462891, 51.073379516602}, + {-1.441129, 52.920099}, + {-1.4344024658203, 53.037185668945}, + {-1.2023162841797, 52.942428588867}, + {-1.343079, 53.55011}, + {-0.450513, 54.146674}, + {-2.073375, 53.112717}, + {-2.1471405029297, 53.07014465332}, + {-0.751253, 54.197866}, + {5.959237, 49.512085}, + {6.13256, 49.597049}, + {5.931702, 49.503938}, + {-8.9861297607422, 53.291244506836}, + {-8.7238311767578, 51.747665405273}, + {-9.0493011474609, 53.274765014648}, + {-8.7636566162109, 53.100357055664}, + {-7.0937347412109, 52.972640991211}, + {-6.5279388427734, 53.265151977539}, + {-6.307627, 53.343404}, + {-6.3809967041016, 53.364028930664}, + {-6.226044, 53.062592}, + {-6.391983, 53.42308}, + {-8.4683990478516, 51.900100708008}, + {-6.22749, 53.307266}, + {-6.323885, 53.398259}, + {-8.9847564697266, 53.274765014648}, + {-6.249847, 53.351669}, + {-6.260147, 53.340589}, + {-6.2216949462891, 53.418960571289}, + {-6.2532806396484, 53.416213989258}, + {-6.3191986083984, 53.396987915039}, + {-96.751785, 17.060394}, + {-96.155776977539, 19.094924926758}, + {-96.104965209961, 19.148483276367}, + {-94.421847, 18.122979}, + {-86.765213012695, 21.105422973633}, + {-88.29808, 18.515396}, + {-92.924423217773, 18.031997680664}, + {-92.954635620117, 17.983932495117}, + {-92.929877, 17.987959}, + {-112.188451, 30.7127}, + {-117.039579, 32.4785}, + {-116.998575, 32.541684}, + {-109.933365, 22.895823}, + {-98.250045776367, 19.020767211914}, + {-98.196487426758, 19.046859741211}, + {-98.370895385742, 19.218521118164}, + {-98.15803527832, 19.414901733398}, + {-98.188247680664, 19.019393920898}, + {-89.70817565918, 20.996932983398}, + {-89.623989, 21.001136}, + {-106.00372, 28.607772}, + {-63.194046020508, -17.787551879883}, + {-68.755874633789, -11.030960083008}, + {-68.094292, -16.504898}, + {-68.069572, -16.532913}, + {-63.172073364258, -17.731246948242}, + {-63.095169067383, -17.773818969727}, + {-64.72526550293, -21.579208374023}, + {-79.044570922852, -3.0164337158203}, + {-78.545933, -0.278279}, + {-78.560562, -0.469284}, + {-78.50064, -0.209383}, + {-77.775192, -0.826492}, + {-78.381271362305, -0.099563598632812}, + {-78.62915, -1.267842}, + {-80.435715, -0.703583}, + {-80.40354, -0.645545}, + {-79.191238, -3.987076}, + {-80.139083862305, -3.3858489990234}, + {-78.973159790039, -2.9010772705078}, + {121.169062, 14.58787}, + {120.58113098145, 15.197525024414}, + {123.730774, 10.182953}, + {121.07991, 14.300766}, + {120.97389221191, 14.348831176758}, + {123.950344, 10.334079}, + {121.02882385254, 14.650955200195}, + {121.01921081543, 14.553451538086}, + {120.995007, 14.459209}, + {121.10298156738, 14.648208618164}, + {120.993805, 14.449356}, + {120.99449157715, 14.572677612305}, + {121.048686, 14.574318}, + {120.3394317627, 16.042098999023}, + {98.390121459961, 7.9973602294922}, + {100.724136, 13.667731}, + {100.667306, 13.736044}, + {100.532722, 13.746951}, + {100.611945, 13.772199}, + {100.499119, 13.722948}, + {100.413796, 13.88129}, + {100.538682, 13.941539}, + {100.607761, 14.069731}, + {116.4461517334, 6.3686370849609}, + {102.83134460449, 5.4457855224609}, + {102.00050354004, 4.7646331787109}, + {102.413585, 3.445581}, + {102.01698303223, 4.1713714599609}, + {102.22984313965, 5.8715057373047}, + {102.31086730957, 5.7588958740234}, + {103.8077545166, 1.5799713134766}, + {100.38551330566, 6.1145782470703}, + {101.56517, 3.113594}, + {101.61323547363, 3.1249237060547}, + {101.543747, 3.103775}, + {101.483951, 3.071547}, + {101.670644, 3.080709}, + {101.685453, 2.746126}, + {101.78764343262, 3.1262969970703}, + {102.22846984863, 5.4650115966797}, + {101.711082, 3.143463}, + {103.01261901855, 5.0749969482422}, + {100.393753, 6.167862}, + {100.614469, 5.050583}, + {22.413483, 61.042099}, + {25.988845825195, 61.445846557617}, + {21.630758, 63.094508}, + {25.229874, 54.740067}, + {24.091767, 54.918696}, + {22.331771850586, 55.689010620117}, + {25.265121459961, 55.031204223633}, + {23.257369, 55.904618}, + {21.161727905273, 55.724716186523}, + {25.279754, 54.689385}, + {21.693363, 55.686264}, + {24.019572, 54.876172}, + {24.746429, 55.249832}, + {24.0065, 54.922028}, + {24.437127, 57.29286}, + {24.117393, 56.997643}, + {23.773727416992, 56.637954711914}, + {24.326133, 56.967545}, + {24.162674, 56.980896}, + {24.168549, 56.924973}, + {50.241165161133, 30.600357055664}, + {51.613082885742, 30.659408569336}, + {51.373444, 36.610565}, + {48.729172, 33.90358}, + {50.970383, 35.659103}, + {51.245040893555, 35.747451782227}, + {48.804914, 34.326307}, + {51.286239624023, 35.766677856445}, + {52.357407, 36.481476}, + {59.620742797852, 36.243209838867}, + {51.282119750977, 35.758438110352}, + {52.457656860352, 36.675796508789}, + {50.893478, 35.781326}, + {60.757827758789, 28.736801147461}, + {55.359420776367, 37.214126586914}, + {49.58610534668, 37.210006713867}, + {54.34455871582, 31.818466186523}, + {49.425430297852, 37.475051879883}, + {53.074264526367, 36.549453735352}, + {50.989608764648, 35.835342407227}, + {50.608292, 35.978737}, + {51.187362670898, 29.354782104492}, + {59.471054077148, 36.357192993164}, + {51.023941040039, 35.674667358398}, + {53.587875366211, 36.685409545898}, + {150.820999, -33.602371}, + {150.553093, -33.700447}, + {152.662491, -31.731033}, + {150.855717, -33.780463}, + {150.98030090332, -33.815231323242}, + {151.05995178223, -33.739700317383}, + {150.84159851074, -33.808364868164}, + {150.994765, -33.834487}, + {150.79627990723, -33.952560424805}, + {150.91438293457, -33.886642456055}, + {150.946426, -33.84819}, + {150.90888977051, -33.837203979492}, + {150.893784, -33.965607}, + {151.164322, -33.707428}, + {150.97068786621, -33.927841186523}, + {151.077633, -33.760128}, + {151.049709, -33.846674}, + {151.06269836426, -33.845443725586}, + {151.14921569824, -33.894882202148}, + {151.104298, -33.830462}, + {151.051445, -33.849426}, + {151.05995178223, -33.923721313477}, + {151.22611999512, -33.894882202148}, + {27.308578491211, 53.961410522461}, + {27.642013, 53.924332}, + {26.480484008789, 52.686996459961}, + {23.751068, 52.077599}, + {25.469055, 54.037628}, + {28.736222, 55.488331}, + {30.358657836914, 53.950424194336}, + {30.289993286133, 53.983383178711}, + {23.585586547852, 51.769638061523}, + {28.236923217773, 53.022079467773}, + {27.68589, 53.896523}, + {27.521438598633, 53.874893188477}, + {24.041519165039, 52.399978637695}, + {29.654159545898, 53.942184448242}, + {24.796829223633, 52.188491821289}, + {30.376510620117, 53.888626098633}, + {-86.041832, 33.964018}, + {-86.343832, 32.293282}, + {-86.766586303711, 33.452682495117}, + {-85.396666, 32.613916}, + {-85.684145, 32.47243}, + {-86.949234008789, 34.782028198242}, + {-87.309036254883, 34.696884155273}, + {-87.610495, 33.237091}, + {-85.50178527832, 33.64631652832}, + {-85.766815, 33.812771}, + {-87.683944702148, 30.270767211914}, + {-89.12727355957, 30.630569458008}, + {-87.185483, 30.38947}, + {-89.311694, 30.389808}, + {-89.120968, 30.548039}, + {-87.89680480957, 30.65803527832}, + {-66.013412, 18.234421}, + {-66.068907, 18.436805}, + {-66.50549, 18.334596}, + {-66.758521, 18.453598}, + {-66.857529, 18.036118}, + {5.0104522705078, 45.764236450195}, + {4.9390411376953, 45.713424682617}, + {4.9637603759766, 45.77522277832}, + {4.8896026611328, 45.620040893555}, + {4.9225616455078, 45.684585571289}, + {4.890956, 45.624628}, + {5.7328033447266, 45.195693969727}, + {5.7135772705078, 45.197067260742}, + {4.8799896240234, 45.793075561523}, + {3.4064483642578, 50.278244018555}, + {3.13591, 50.569059}, + {3.275349, 50.457213}, + {6.2065887451172, 43.404922485352}, + {6.0514068603516, 43.167343139648}, + {5.815063, 43.122574}, + {5.6147003173828, 43.233261108398}, + {2.732944, 50.315589}, + {2.83459, 50.326525}, + {1.4192962646484, 43.569717407227}, + {0.14488220214844, 43.768844604492}, + {11.48551940918, 48.205947875977}, + {11.581387, 48.176516}, + {11.593666, 48.187752}, + {11.608428, 48.206924}, + {11.501267, 50.010153}, + {10.002365112305, 49.73991394043}, + {10.861015, 49.535294}, + {12.154312133789, 49.671249389648}, + {11.110610961914, 49.386978149414}, + {10.951309204102, 49.869003295898}, + {11.022491, 49.329758}, + {-70.575943, -33.446426}, + {-70.599655, -33.429886}, + {-73.062515, -36.827545}, + {-71.15364074707, -31.633071899414}, + {-72.41569519043, -37.422866821289}, + {-73.081741333008, -36.813125610352}, + {-71.609848, -33.587471}, + {-72.907501, -39.556507}, + {-70.546646118164, -33.513107299805}, + {-70.646896362305, -33.430709838867}, + {-71.57112121582, -33.059921264648}, + {-70.631790161133, -33.425216674805}, + {-70.715560913086, -33.45817565918}, + {-71.958389282227, -35.752944946289}, + {-72.804336547852, -39.942855834961}, + {-72.798843383789, -36.387405395508}, + {-71.30744934082, -31.747055053711}, + {-70.553512573242, -33.539199829102}, + {-71.601217, -33.587917}, + {-46.630783, -23.643351}, + {-46.522939, -23.687127}, + {-46.515404, -23.648971}, + {-46.273727416992, -23.173599243164}, + {-46.296143, -23.552529}, + {-46.779098510742, -23.540267944336}, + {-46.8043, -23.490301}, + {-46.821356, -23.548979}, + {-46.673252, -23.589245}, + {-46.706314086914, -23.578720092773}, + {-47.099075317383, -23.16535949707}, + {-47.051010131836, -23.571853637695}, + {-46.915054321289, -23.177719116211}, + {-46.615676879883, -23.543014526367}, + {-46.615676879883, -23.505935668945}, + {-46.560745239258, -23.54850769043}, + {-49.984359741211, -20.421524047852}, + {-46.958413, -23.153589}, + {38.944473266602, 45.035018920898}, + {38.469314575195, 45.311050415039}, + {38.279800415039, 46.706314086914}, + {41.338119506836, 44.83039855957}, + {41.115646362305, 45.000686645508}, + {39.2008, 45.0648}, + {38.969192504883, 45.033645629883}, + {38.94172668457, 45.043258666992}, + {40.196914672852, 43.672714233398}, + {39.901657104492, 43.461227416992}, + {37.532730102539, 45.12565612793}, + {38.065567, 45.233871}, + {92.856033, 56.01915}, + {92.452011108398, 55.951309204102}, + {92.77009, 56.027728}, + {91.934280395508, 53.331069946289}, + {92.733536, 55.968475}, + {131.86134338379, 43.089065551758}, + {131.9588470459, 43.117904663086}, + {131.897736, 43.100739}, + {131.93962097168, 43.073959350586}, + {129.33174133301, 35.531845092773}, + {127.05207824707, 37.586288452148}, + {127.00813293457, 37.609634399414}, + {126.755722, 37.590196}, + {105.82099914551, 21.023025512695}, + {105.81275939941, 21.053237915039}, + {105.80589294434, 21.036758422852}, + {105.838165, 21.027145}, + {105.83061218262, 21.064224243164}, + {105.786667, 21.104736}, + {105.818481, 21.092148}, + {105.78804016113, 20.970840454102}, + {114.099655, 22.580338}, + {113.89457702637, 22.809677124023}, + {114.064852, 22.531787}, + {113.73664855957, 23.018417358398}, + {113.7476348877, 23.02116394043}, + {113.81355285645, 22.809677124023}, + {113.99757385254, 23.052749633789}, + {113.05000305176, 23.008804321289}, + {113.24226379395, 23.12141418457}, + {113.25462341309, 23.118667602539}, + {114.39582824707, 23.120040893555}, + {113.99070739746, 22.69157409668}, + {116.14814758301, 24.420547485352}, + {112.58308410645, 32.977523803711}, + {118.10920715332, 39.574813842773}, + {118.14079284668, 39.800033569336}, + {119.77500915527, 40.014266967773}, + {116.61918640137, 38.640975952148}, + {118.18199157715, 39.636611938477}, + {116.81419372559, 38.22624206543}, + {115.51231384277, 38.781051635742}, + {115.70732116699, 37.987289428711}, + {106.52824401855, 29.540176391602}, + {101.698877, 14.029937}, + {102.747132, 14.107949}, + {100.6175994873, 14.184036254883}, + {102.0238494873, 13.03596496582}, + {100.53245544434, 13.728103637695}, + {101.49787902832, 14.076919555664}, + {100.61451, 13.754736}, + {100.601315, 13.66069}, + {100.536804, 13.814163}, + {102.92198181152, 15.61637878418}, + {100.73570251465, 13.815994262695}, + {100.47203063965, 7.0264434814453}, + {100.501591, 13.661618}, + {101.082459, 12.995453}, + {100.623093, 13.778}, + {100.72746276855, 13.94645690918}, + {102.19551086426, 15.148086547852}, + {100.55442810059, 13.774795532227}, + {-1.406054, 47.166808}, + {-1.6307830810547, 48.11393737793}, + {4.830993, 45.77084}, + {4.8113250732422, 45.515670776367}, + {4.8511505126953, 45.771102905273}, + {4.838994, 45.662669}, + {5.4169464111328, 43.299179077148}, + {5.6119537353516, 43.306045532227}, + {5.4279327392578, 43.520278930664}, + {4.6904754638672, 43.646621704102}, + {4.8154449462891, 43.941879272461}, + {6.95729, 43.549694}, + {1.500833, 43.568293}, + {1.40807, 43.576367}, + {1.4948272705078, 43.598556518555}, + {1.381187, 43.609715}, + {1.2091827392578, 43.610916137695}, + {9.448929, 42.69548}, + {1.8381500244141, 50.132675170898}, + {4.7467803955078, 44.028396606445}, + {7.2859954833984, 43.711166381836}, + {-58.548202514648, -34.630966186523}, + {-58.51936340332, -34.62272644043}, + {-58.498764038086, -34.551315307617}, + {-58.489151000977, -34.555435180664}, + {-58.498764038086, -34.551315307617}, + {-58.564682006836, -34.545822143555}, + {-58.011245727539, -35.588150024414}, + {-58.388900756836, -34.589767456055}, + {-57.687836, -36.35376}, + {-60.579299926758, -35.041580200195}, + {-61.476745, -34.735336}, + {-71.307621, -41.133671}, + {-71.427558, -41.121727}, + {-71.367874145508, -41.174697875977}, + {-43.87321472168, -16.717758178711}, + {-43.734512329102, -20.281448364258}, + {91.902694702148, 24.91081237793}, + {88.635635375977, 25.624923706055}, + {89.088821411133, 25.81169128418}, + {91.150131225586, 23.673477172852}, + {90.371475219727, 22.709426879883}, + {91.095199584961, 23.514175415039}, + {91.080093383789, 23.533401489258}, + {91.875228881836, 22.436141967773}, + {91.821670532227, 22.329025268555}, + {91.834030151367, 22.368850708008}, + {91.798324584961, 22.36198425293}, + {91.866989135742, 22.28645324707}, + {90.375595092773, 23.751754760742}, + {91.815262, 22.327652}, + {91.28059387207, 23.321914672852}, + {90.798568725586, 23.619918823242}, + {91.220169067383, 23.858871459961}, + {92.105941772461, 22.063980102539}, + {91.869049, 24.894333}, + {92.15744, 24.825668}, + {91.865615844727, 24.518051147461}, + {88.89518737793, 25.784225463867}, + {89.559861, 22.787018}, + {-6.3617706298828, 54.218215942383}, + {-5.487534, 56.292709}, + {0.067977905273438, 51.628189086914}, + {-4.355221, 55.888481}, + {-2.69865, 53.477465}, + {-2.0825958251953, 53.530197143555}, + {-2.479019, 53.704605}, + {38.933486938477, 45.041885375977}, + {39.069442749023, 45.024032592773}, + {83.759078979492, 53.351669311523}, + {131.885476, 43.121973}, + {137.0043182373, 50.513076782227}, + {131.931152, 43.104172}, + {131.92451477051, 43.119277954102}, + {44.422073, 48.583603}, + {44.502182006836, 48.753890991211}, + {44.503098, 48.7603}, + {104.334068, 52.250633}, + {20.497055053711, 54.741439819336}, + {104.23896789551, 52.291488647461}, + {37.598648071289, 55.587387084961}, + {37.396774291992, 55.739822387695}, + {37.575989, 55.568161}, + {37.86506652832, 56.011734008789}, + {37.797604, 55.921097}, + {37.045211791992, 55.583267211914}, + {37.266311645508, 55.616226196289}, + {36.340713500977, 56.006240844727}, + {-100.43907165527, 20.693435668945}, + {-100.60249328613, 20.887069702148}, + {-101.61323547363, 21.094436645508}, + {-86.824264526367, 21.14387512207}, + {-101.67091369629, 21.145248413086}, + {-102.276535, 21.747437}, + {-86.850357055664, 21.169967651367}, + {-99.116592407227, 19.369583129883}, + {-99.137192, 19.324951}, + {-99.157791137695, 19.325637817383}, + {-99.065780639648, 19.336624145508}, + {-99.137191772461, 19.336624145508}, + {-98.87077331543, 19.30778503418}, + {-98.86116027832, 19.372329711914}, + {-99.194832, 19.510846}, + {-99.188003540039, 18.974075317383}, + {-99.259415, 19.517441}, + {-99.233322143555, 19.53987121582}, + {-99.115219116211, 19.453353881836}, + {-99.19075012207, 19.487686157227}, + {-99.257355, 19.380569}, + {-99.193496704102, 19.40803527832}, + {-99.083633422852, 19.526138305664}, + {-99.207229614258, 19.575576782227}, + {43.869095, 56.318436}, + {44.028396606445, 56.324844360352}, + {49.222824, 55.792347}, + {55.186386108398, 51.798477172852}, + {45.083772, 52.746735}, + {46.241719, 51.744306}, + {49.038162231445, 53.630447387695}, + {44.529647827148, 48.716812133789}, + {44.52507, 48.716812}, + {44.496002, 48.715439}, + {47.605819702148, 42.10578918457}, + {47.416305541992, 42.983322143555}, + {47.446861, 43.030357}, + {41.14549, 49.794072}, + {40.470886, 45.452499}, + {40.165328979492, 45.849380493164}, + {39.753969, 47.296221}, + {42.716231, 47.385048}, + {39.652817, 47.224319}, + {40.275192260742, 47.737655639648}, + {41.51252746582, 46.496200561523}, + {24.875106811523, 44.87434387207}, + {25.244522094727, 44.697189331055}, + {24.130783081055, 44.164352416992}, + {24.806442260742, 45.219039916992}, + {23.795186, 45.167885}, + {26.896591186523, 46.568984985352}, + {28.062515258789, 46.824417114258}, + {27.167193, 47.222672}, + {26.134414672852, 47.969741821289}, + {26.880111694336, 47.045516967773}, + {27.631301879883, 47.149887084961}, + {26.946029663086, 46.938400268555}, + {26.268997192383, 47.67448425293}, + {26.675491333008, 47.734909057617}, + {23.877411, 46.802444}, + {21.863199, 47.103772}, + {24.380722, 45.094528}, + {26.108322143555, 44.377212524414}, + {25.898208618164, 44.988327026367}, + {26.30744934082, 44.415664672852}, + {26.112099, 44.335327}, + {25.964951, 44.46785}, + {15.65486, 57.300828}, + {14.663811, 57.393697}, + {12.745524, 57.57575}, + {14.598770141602, 59.648208618164}, + {15.113241, 59.181145}, + {18.645858764648, 59.280166625977}, + {17.481307983398, 60.35270690918}, + {16.054458618164, 59.78141784668}, + {17.109146118164, 60.69465637207}, + {-9.1811370849609, 38.74397277832}, + {-9.2086029052734, 38.737106323242}, + {-9.4475555419922, 38.734359741211}, + {-9.160194, 38.72406}, + {-8.559494, 41.212235}, + {-8.491738, 40.449605}, + {-8.506562, 40.13078}, + {-9.3871307373047, 38.716506958008}, + {-9.1495513916016, 38.818130493164}, + {-9.1344451904297, 38.723373413086}, + {-9.1371917724609, 38.708267211914}, + {-8.9105987548828, 38.513259887695}, + {-8.4917449951172, 37.157821655273}, + {-7.7570343017578, 39.473190307617}, + {-8.4766387939453, 39.463577270508}, + {-8.1429290771484, 39.673690795898}, + {-9.4159698486328, 38.96369934082}, + {-8.6483001708984, 41.171951293945}, + {-8.3283233642578, 41.465835571289}, + {38.498153686523, 55.849685668945}, + {37.973556518555, 55.083389282227}, + {43.419847, 56.284558}, + {43.391189575195, 56.214981079102}, + {82.898025512695, 55.024337768555}, + {43.906101, 56.278152}, + {82.873306274414, 54.970779418945}, + {50.147157, 53.211219}, + {50.109329223633, 53.185501098633}, + {50.112075805664, 53.190994262695}, + {50.20752, 53.357849}, + {60.660461, 56.781876}, + {45.978469848633, 51.573257446289}, + {35.972671508789, 56.826095581055}, + {35.878349, 56.846353}, + {60.609512329102, 56.89338684082}, + {35.913619995117, 56.890640258789}, + {30.261154, 59.92836}, + {30.288887, 59.958604}, + {30.267599, 59.938014}, + {30.29005, 59.930785}, + {-60.650592, -33.022344}, + {-65.120788, -26.843659}, + {-65.41516, -24.801965}, + {-58.391647338867, -34.747695922852}, + {-58.366928100586, -34.608993530273}, + {-58.358688354492, -34.61311340332}, + {-58.640213012695, -34.647445678711}, + {-58.568801879883, -34.680404663086}, + {-58.477514, -34.657193}, + {-58.512497, -34.722061}, + {-57.953567504883, -34.905624389648}, + {-58.416366577148, -34.804000854492}, + {-58.670425415039, -34.587020874023}, + {-58.548202514648, -34.445571899414}, + {-58.550777, -34.488487}, + {-96.734337, 32.93978}, + {-81.02211, 29.165955}, + {-81.493148803711, 28.474502563477}, + {-81.271225, 28.245163}, + {-104.6949005127, 38.98567199707}, + {-104.60151672363, 38.271560668945}, + {-104.74983215332, 38.967819213867}, + {-105.13023376465, 40.177688598633}, + {-104.76081848145, 39.967575073242}, + {-105.26344299316, 39.951095581055}, + {-104.98329162598, 39.624252319336}, + {-105.8470916748, 39.702529907227}, + {-104.90364074707, 39.778060913086}, + {-104.98741149902, 39.870071411133}, + {-105.070496, 39.776001}, + {-105.31837463379, 39.675064086914}, + {-104.85008239746, 39.725875854492}, + {-104.8802947998, 39.585800170898}, + {-104.76219177246, 39.471817016602}, + {2.248327, 48.906282}, + {2.2858428955078, 48.892593383789}, + {2.277511, 48.781793}, + {3.285712, 48.544678}, + {-2.159526, 47.034821}, + {7.108469, 43.721612}, + {4.680762, 48.316126}, + {5.4924774169922, 43.211288452148}, + {7.6265716552734, 43.789443969727}, + {4.4391632080078, 45.143508911133}, + {3.5066986083984, 44.76448059082}, + {3.389969, 45.200813}, + {13.395767211914, 52.504348754883}, + {13.59375, 52.533188}, + {13.517990112305, 52.560653686523}, + {12.806546, 52.180491}, + {13.561935424805, 52.456283569336}, + {6.9879913330078, 51.445541381836}, + {6.696548, 51.39946}, + {7.2434234619141, 51.494979858398}, + {6.8616485595703, 51.463394165039}, + {6.65596, 51.489487}, + {7.6567840576172, 51.51969909668}, + {7.2612762451172, 52.868270874023}, + {8.72314, 52.381482}, + {98.559036254883, 3.6000823974609}, + {98.666152954102, 3.5945892333984}, + {112.63664245605, -7.9740142822266}, + {98.642807, 3.590469}, + {112.62840270996, -8.0207061767578}, + {98.771896362305, 3.5300445556641}, + {115.16487121582, -8.6894989013672}, + {98.677139282227, 3.5822296142578}, + {115.18547058105, -8.7155914306641}, + {115.17860412598, -8.7595367431641}, + {136.89582824707, -4.5476531982422}, + {106.635361, -6.245041}, + {110.19630432129, -6.9138336181641}, + {106.81526184082, -6.6199493408203}, + {110.35148620605, -7.8668975830078}, + {106.82899475098, -6.2381744384766}, + {106.85234069824, -6.2436676025391}, + {106.86332702637, -6.1928558349609}, + {110.36247253418, -7.7405548095703}, + {106.84272766113, -6.2587738037109}, + {106.84959411621, -6.2670135498047}, + {110.44486999512, -6.9509124755859}, + {106.68067932129, -6.2148284912109}, + {106.60926818848, -6.2271881103516}, + {-97.37157, 36.042085}, + {-98.758163452148, 35.522232055664}, + {-95.086899, 34.001999}, + {-106.695285, 35.103107}, + {-96.974258422852, 36.232223510742}, + {-108.15422058105, 36.762313842773}, + {-106.69578552246, 35.155563354492}, + {-106.62574768066, 35.047073364258}, + {-105.9789276123, 35.62385559082}, + {-84.848098754883, 34.320602416992}, + {-106.5023, 35.09749}, + {-112.022728, 33.62709}, + {-111.981582, 33.665423}, + {-111.4720916748, 33.83171081543}, + {-112.09968566895, 33.566665649414}, + {-112.565689, 32.907945}, + {-112.39225, 33.64489}, + {-112.289233, 33.565318}, + {-112.46635437012, 33.467788696289}, + {-111.71241760254, 33.285140991211}, + {-111.700358, 33.277856}, + {77.076644897461, 28.510208129883}, + {77.141189575195, 28.572006225586}, + {77.168655, 28.715744}, + {77.171191, 28.591232}, + {77.105484008789, 28.710708618164}, + {77.333450317383, 28.692855834961}, + {77.369156, 28.635521}, + {75.324325561523, 33.098373413086}, + {77.389297, 28.520508}, + {77.29362487793, 28.389358520508}, + {77.374798, 28.521523}, + {77.045059, 28.594666}, + {77.086258, 28.462296}, + {77.124710083008, 28.547286987305}, + {77.286758, 28.532867}, + {77.253799438477, 28.673629760742}, + {77.246932983398, 28.742294311523}, + {77.24006652832, 28.758773803711}, + {77.142562866211, 28.782119750977}, + {77.146682739258, 28.762893676758}, + {77.365036, 28.608663}, + {77.302963, 28.698349}, + {12.573165893555, 55.67253112793}, + {12.566299438477, 55.676651000977}, + {12.321561, 55.625068}, + {11.938705444336, 55.33332824707}, + {11.43608, 55.663612}, + {10.194027, 56.144274}, + {9.726336, 56.463547}, + {10.348282, 55.393753}, + {9.4709014892578, 55.246810913086}, + {9.430684, 55.291236}, + {9.219985, 55.638552}, + {8.384164, 55.673811}, + {10.614861, 55.063479}, + {10.309982, 55.470657}, + {10.359104, 55.426184}, + {-83.989791870117, 34.444198608398}, + {-97.695579, 30.377197}, + {-77.485885620117, 39.701156616211}, + {-76.541061401367, 39.168319702148}, + {-76.804733276367, 38.548965454102}, + {-93.222349, 30.240957}, + {-95.592139, 29.676328}, + {-95.760269165039, 29.750289916992}, + {-80.047073364258, 40.452346801758}, + {-88.798599, 30.456619}, + {-79.746322631836, 40.468826293945}, + {-85.727005004883, 34.521102905273}, + {-86.273576, 34.385539}, + {-87.795181274414, 32.297744750977}, + {-86.827732, 33.543031}, + {-71.079483032227, 42.350234985352}, + {-70.907821655273, 42.483444213867}, + {-122.825529, 47.471282}, + {-70.869369506836, 42.574081420898}, + {-98.143112, 27.13829}, + {-81.532516, 30.158157}, + {-82.492935, 29.368004}, + {-82.054824829102, 29.243545532227}, + {-83.550797, 30.431442}, + {-82.314376831055, 29.703598022461}, + {-82.514753, 27.564604}, + {-82.52926, 27.360607}, + {-81.740341186523, 26.258010864258}, + {-82.483291625977, 27.180862426758}, + {-82.038345336914, 26.447525024414}, + {-82.78678894043, 28.011703491211}, + {-82.13996887207, 27.785110473633}, + {-82.458572387695, 27.941665649414}, + {-82.372055053711, 27.807083129883}, + {-82.664566040039, 27.812576293945}, + {-82.502157, 28.02294}, + {-82.54508972168, 28.00895690918}, + {-82.560195922852, 27.919692993164}, + {-72.662887573242, 41.756973266602}, + {15.507888793945, 50.624313354492}, + {14.899520874023, 48.784103393555}, + {14.512057, 49.968796}, + {15.858078, 50.20079}, + {14.587783813477, 49.614944458008}, + {16.592069, 49.19057}, + {16.680849, 49.084822}, + {15.580749, 49.463265}, + {15.811386108398, 49.801712036133}, + {17.688603, 49.224985}, + {14.57507, 50.111949}, + {14.183999, 50.096779}, + {14.412448, 50.06466}, + {14.500852, 50.371364}, + {18.62471, 48.213364}, + {17.2555, 48.188684}, + {17.173761, 48.143035}, + {17.100296, 48.12162}, + {18.853225708008, 49.207077026367}, + {19.434127807617, 41.313400268555}, + {19.784339, 41.318126}, + {14.519119, 35.887985}, + {14.479752, 35.87059}, + {14.305434, 36.026132}, + {14.53010559082, 35.861434936523}, + {14.462814331055, 35.822982788086}, + {14.466934204102, 35.88752746582}, + {14.517803, 35.860634}, + {14.373550415039, 35.850448608398}, + {14.487533569336, 35.91911315918}, + {14.349747, 35.938187}, + {14.499435, 35.916367}, + {33.278274536133, 35.119857788086}, + {34.001998901367, 34.992141723633}, + {33.739700317383, 34.982528686523}, + {32.505111694336, 34.746322631836}, + {33.989639282227, 35.033340454102}, + {33.341721, 35.170944}, + {33.381821, 35.148697}, + {-92.248764038086, 31.208724975586}, + {-86.366958618164, 39.712142944336}, + {-85.473404, 39.574814}, + {-86.527633666992, 39.34684753418}, + {-90.491226, 31.07579}, + {-91.07048034668, 31.677017211914}, + {-90.686646, 40.393295}, + {-87.649612426758, 41.767959594727}, + {-86.02912902832, 33.989639282227}, + {-87.256852, 34.089211}, + {-86.81269, 33.487604}, + {-70.951766967773, 43.992691040039}, + {-71.823806762695, 42.90641784668}, + {-70.83366394043, 43.014907836914}, + {-71.642532348633, 43.18244934082}, + {-90.371475219727, 37.354202270508}, + {-90.735397338867, 35.816116333008}, + {-91.210556030273, 35.682907104492}, + {26.100075, 44.434462}, + {26.08016, 44.46205}, + {26.103287, 44.44725}, + {26.023178100586, 44.938888549805}, + {28.610093, 44.210505}, + {24.875106811523, 44.855117797852}, + {23.810806, 44.316406}, + {21.244125366211, 45.754623413086}, + {25.748519897461, 45.105056762695}, + {25.612564, 45.651352}, + {25.620803833008, 45.637893676758}, + {26.101455688477, 44.426651000977}, + {26.036911010742, 44.425277709961}, + {28.598098754883, 43.944625854492}, + {27.524185180664, 47.18147277832}, + {26.252517700195, 47.655258178711}, + {26.082987, 44.508212}, + {26.071854, 44.447098}, + {25.672988891602, 45.194320678711}, + {28.577499, 43.781454}, + {102.92747497559, 24.189834594727}, + {90.202560424805, 42.894058227539}, + {86.265335083008, 41.290054321289}, + {121.54518127441, 25.059127807617}, + {121.57539367676, 25.06462097168}, + {121.56028747559, 25.013809204102}, + {121.54518127441, 24.997329711914}, + {121.54106140137, 24.993209838867}, + {121.56303405762, 25.027542114258}, + {121.5438079834, 25.03303527832}, + {121.53831481934, 25.045394897461}, + {121.51222229004, 25.052261352539}, + {121.52092, 25.063248}, + {121.52320861816, 25.116806030273}, + {121.32820129395, 24.975357055664}, + {121.5177154541, 25.056381225586}, + {121.29249572754, 25.063247680664}, + {121.09062194824, 24.724044799805}, + {121.30760192871, 25.01106262207}, + {121.23207092285, 25.078353881836}, + {-73.364212, 5.528908}, + {-73.639572, 4.129074}, + {-76.297988891602, 1.5950775146484}, + {-74.26139831543, 11.006240844727}, + {-76.316283, 3.649046}, + {-77.665558, 0.819168}, + {-75.572979, 6.243316}, + {-75.620956420898, 4.6245574951172}, + {-73.123627, 6.537552}, + {-74.228439331055, 11.193008422852}, + {-75.545425415039, 10.426712036133}, + {-74.227066040039, 11.197128295898}, + {-67.960739135742, 10.259170532227}, + {-66.893349, 10.292473}, + {-65.994186401367, 9.2140960693359}, + {-66.874465942383, 10.434951782227}, + {17.476501, 51.252937}, + {16.988885, 51.062884}, + {17.702716, 51.294556}, + {17.039108276367, 51.091232299805}, + {16.478043, 50.915756}, + {20.898571, 52.229176}, + {20.969009, 52.213669}, + {20.980668, 52.243032}, + {20.848617553711, 52.204971313477}, + {21.079330444336, 52.307968139648}, + {20.963973999023, 52.327194213867}, + {20.611038, 52.442158}, + {21.029891967773, 52.303848266602}, + {21.258545, 52.501602}, + {21.105422973633, 52.321701049805}, + {20.922775268555, 52.312088012695}, + {21.134262084961, 52.360153198242}, + {20.898399, 52.332344}, + {20.775702, 52.184565}, + {19.128348, 46.386742}, + {16.73648, 46.810364}, + {19.081187, 47.919086}, + {19.741744995117, 51.44416809082}, + {19.484939575195, 51.398849487305}, + {19.487126, 51.746434}, + {18.630634, 51.228442}, + {19.502763, 51.743756}, + {19.461236, 51.790947}, + {19.404342, 51.752043}, + {19.406679, 51.660436}, + {20.411873, 52.03999}, + {20.652236, 52.1521}, + {20.456173, 52.110637}, + {19.697799682617, 52.548294067383}, + {20.736694, 52.635498}, + {19.213027954102, 52.45491027832}, + {21.886825561523, 52.796859741211}, + {20.170211791992, 53.108596801758}, + {21.130142211914, 52.898483276367}, + {21.569595336914, 53.067398071289}, + {21.940383911133, 53.405227661133}, + {23.111801147461, 53.083877563477}, + {107.59798, -6.915287}, + {107.58018493652, -6.9454193115234}, + {107.603229, -6.928011}, + {107.598038, -6.902847}, + {107.63649, -6.825485}, + {107.6131439209, -6.8012237548828}, + {107.621653, -6.815165}, + {107.59941101074, -6.9055938720703}, + {107.607605, -6.910851}, + {107.593094, -6.888016}, + {107.62962341309, -6.8932342529297}, + {107.51152038574, -6.8314361572266}, + {107.51289367676, -6.8740081787109}, + {107.60902404785, -7.0127105712891}, + {107.823064, -6.966717}, + {107.63786315918, -6.8946075439453}, + {107.65571594238, -6.8918609619141}, + {107.63786315918, -6.8822479248047}, + {108.55796813965, -6.7050933837891}, + {108.19816589355, -7.3423004150391}, + {108.55796813965, -6.7105865478516}, + {108.00727844238, -6.8479156494141}, + {28.992233276367, 40.249099731445}, + {28.943094, 40.211427}, + {29.121322631836, 37.823867797852}, + {28.863849, 40.217121}, + {34.931716918945, 40.544357299805}, + {40.165453, 37.927433}, + {28.915328979492, 41.041488647461}, + {30.519332885742, 39.76432800293}, + {28.894729614258, 41.005783081055}, + {26.577474, 41.668085}, + {37.31575012207, 37.032852172852}, + {37.317123413086, 37.086410522461}, + {37.347816, 37.084719}, + {29.038925170898, 41.003036499023}, + {36.145706176758, 36.178665161133}, + {30.615463256836, 37.762069702148}, + {28.997726, 41.10878}, + {34.88639831543, 36.910629272461}, + {34.563284, 36.776218}, + {29.181921, 40.900495}, + {29.165601, 40.902764}, + {29.007339477539, 41.046981811523}, + {29.161277, 40.903985}, + {29.111756, 40.952988}, + {114.04838562012, 34.022598266602}, + {103.82423400879, 36.068801879883}, + {115.8226776123, 32.869033813477}, + {121.88575744629, 39.096908569336}, + {121.42845153809, 29.442672729492}, + {120.01670837402, 30.802230834961}, + {120.85990905762, 28.044662475586}, + {116.2525177002, 25.129165649414}, + {121.00547790527, 28.128433227539}, + {109.22813415527, 23.74626159668}, + {120.16639709473, 30.210342407227}, + {118.065262, 24.448929}, + {117.2550201416, 31.83219909668}, + {118.11332702637, 24.531784057617}, + {114.36836242676, 27.840042114258}, + {110.06996154785, 25.545272827148}, + {113.81904602051, 23.008804321289}, + {110.473023, 24.77829}, + {112.99507141113, 28.154525756836}, + {113.0541229248, 28.095474243164}, + {113.07472229004, 28.291854858398}, + {104.3529510498, 30.962905883789}, + {102.14469909668, 29.618453979492}, + {104.72785949707, 31.460037231445}, + {106.30989074707, 29.582748413086}, + {50.996624, 35.624004}, + {51.809463500977, 35.41374206543}, + {50.891933, 34.658432}, + {50.158767700195, 36.23908996582}, + {60.025863647461, 36.581039428711}, + {59.04670715332, 33.874282836914}, + {46.203689575195, 36.505508422852}, + {52.47551, 29.628754}, + {48.439957, 34.8647}, + {49.613571166992, 37.258071899414}, + {47.057876586914, 34.330215454102}, + {49.619064, 37.296936}, + {50.010399, 36.278968}, + {51.391983032227, 35.730972290039}, + {48.025703, 37.00161}, + {48.080978393555, 39.022750854492}, + {52.518081665039, 29.626693725586}, + {59.602890014648, 36.272048950195}, + {45.887832641602, 35.989151000977}, + {51.419448852539, 35.704879760742}, + {59.393463, 35.311777}, + {51.479873657227, 34.01985168457}, + {59.593037, 35.987664}, + {-43.365735, -22.985353}, + {-43.463973999023, -22.875595092773}, + {-43.712289, -22.914426}, + {-43.573005, -22.884436}, + {-44.294815063477, -22.97721862793}, + {-46.607437133789, -23.521041870117}, + {-46.558314, -23.680197}, + {-46.691207885742, -23.683090209961}, + {-46.562118530273, -23.699569702148}, + {-46.490109, -23.638541}, + {-46.504440307617, -23.854751586914}, + {-46.466184, -23.508486}, + {-46.456437, -23.516309}, + {-46.190775, -23.51029}, + {-46.216987, -23.542649}, + {-46.297639, -23.490212}, + {-43.333511, -22.863922}, + {-45.507431030273, -23.830032348633}, + {-43.411765, -22.797081}, + {-43.411559, -22.805105}, + {-43.452804, -22.732582}, + {9.5670318603516, 55.326461791992}, + {9.515377, 54.967457}, + {8.460159, 55.491305}, + {10.349564, 55.395638}, + {10.395715, 55.409252}, + {10.268782, 55.398388}, + {10.196927, 56.158059}, + {9.918001, 57.043037}, + {9.915024, 57.047195}, + {8.853127, 56.765623}, + {9.9391937255859, 57.040328979492}, + {9.9089813232422, 57.052688598633}, + {10.397186, 57.171481}, + {10.054374, 56.129807}, + {9.6068572998047, 54.900741577148}, + {10.207463, 56.115721}, + {9.73486, 55.842533}, + {12.185897827148, 55.610733032227}, + {10.35942, 55.394442}, + {11.35643, 55.401306}, + {-97.205831, 34.754538}, + {-80.017593, 40.414394}, + {-79.667428, 40.291766}, + {-90.963363647461, 38.33610534668}, + {-90.40198, 38.278225}, + {-88.867721557617, 37.431106567383}, + {-90.111696, 38.578995}, + {-82.851333618164, 39.944229125977}, + {-82.874032, 39.971615}, + {-84.547005, 39.29892}, + {-84.430301, 39.318589}, + {-84.622413, 39.213742}, + {-84.404983, 39.631119}, + {-83.379364, 39.729407}, + {-122.5984954834, 47.079849243164}, + {-89.904556274414, 35.318984985352}, + {-82.138595581055, 35.170669555664}, + {-79.078903198242, 34.949569702148}, + {-75.546233, 41.534164}, + {128.55445861816, 35.833969116211}, + {128.59016418457, 35.857315063477}, + {128.34159851074, 36.11686706543}, + {129.028371, 35.150163}, + {129.213099, 35.239205}, + {129.0502166748, 35.159683227539}, + {129.080676, 35.203695}, + {128.98567199707, 35.183029174805}, + {128.96095275879, 35.055313110352}, + {128.906778, 35.232806}, + {128.165674, 35.723014}, + {128.609995, 35.25085}, + {128.575553, 35.199196}, + {128.697798, 34.91438}, + {129.32899475098, 35.531845092773}, + {126.87355041504, 37.472305297852}, + {126.890278, 37.460201}, + {126.87763, 37.476602}, + {126.938095, 37.466125}, + {127.13584899902, 37.481918334961}, + {126.85432434082, 37.568435668945}, + {126.92161560059, 37.505264282227}, + {126.817171, 37.568121}, + {126.812711, 37.575566}, + {127.03834533691, 37.52311706543}, + {2.4904632568359, 49.009323120117}, + {2.7486419677734, 49.028549194336}, + {2.503281, 48.828507}, + {2.463455, 48.868332}, + {2.4959564208984, 48.907699584961}, + {2.546602, 48.965771}, + {2.6044464111328, 49.007949829102}, + {2.403946, 48.867325}, + {2.2872161865234, 49.624557495117}, + {-1.1034393310547, 45.004806518555}, + {-0.65849304199219, 44.682083129883}, + {-0.44837951660156, 43.310165405273}, + {-0.663072, 45.079728}, + {-0.22727966308594, 44.969100952148}, + {2.1897125244141, 48.701705932617}, + {0.963669, 45.524979}, + {2.462082, 48.763962}, + {2.422943, 48.736038}, + {2.450638, 48.768997}, + {2.388778, 48.791523}, + {2.336044, 48.805313}, + {-4.2290496826172, 47.84065246582}, + {-0.37559509277344, 49.196090698242}, + {2.4382781982422, 48.909072875977}, + {-0.39894104003906, 49.171371459961}, + {2.4176788330078, 48.91731262207}, + {2.2006988525391, 48.935165405273}, + {2.381189, 48.712692}, + {2.5014495849609, 48.797836303711}, + {2.479477, 48.807699}, + {2.1897125244141, 48.682479858398}, + {3.1702423095703, 48.354263305664}, + {2.9491424560547, 48.409194946289}, + {2.7335357666016, 48.140029907227}, + {1.9960784912109, 48.799209594727}, + {2.019645, 48.780057}, + {2.504196, 48.909073}, + {2.4726104736328, 48.889846801758}, + {2.4739837646484, 48.881607055664}, + {1.7983245849609, 42.678451538086}, + {-92.908749, 41.392767}, + {-92.880477905273, 41.39030456543}, + {-93.556137084961, 41.383438110352}, + {-96.538925170898, 47.241897583008}, + {-93.611779, 41.592644}, + {-96.843349, 46.862462}, + {-97.070388793945, 47.91618347168}, + {-93.469791, 44.93331}, + {-93.354823, 45.246251}, + {-93.22380065918, 44.977340698242}, + {-93.722768, 45.28197}, + {-93.361883, 45.129776}, + {-93.238906860352, 44.944381713867}, + {-93.27677, 44.967139}, + {-92.767868041992, 45.017166137695}, + {-93.285577, 45.040279}, + {-93.112564086914, 45.004806518555}, + {-92.890090942383, 44.601058959961}, + {-91.747447, 43.806381}, + {-93.350143432617, 44.28108215332}, + {-96.0635, 44.863006}, + {-92.883753, 44.509577}, + {-96.053467, 43.527145}, + {-103.02085876465, 48.270492553711}, + {77.468032836914, 23.271102905273}, + {91.77360534668, 26.182479858398}, + {78.248062133789, 26.296463012695}, + {74.86496, 32.695999}, + {79.931716918945, 23.162612915039}, + {88.370590209961, 22.566604614258}, + {88.351364135742, 22.486953735352}, + {88.417282104492, 22.598190307617}, + {84.831619262695, 22.221908569336}, + {85.869827270508, 20.304794311523}, + {86.077194213867, 20.774459838867}, + {84.021377563477, 21.857986450195}, + {80.102005004883, 13.118362426758}, + {85.840988, 20.263596}, + {80.184677, 13.040359}, + {80.14389, 12.906189}, + {80.157623, 12.953568}, + {80.205001831055, 12.952194213867}, + {80.247573852539, 13.005752563477}, + {1.437424, 45.095444}, + {3.8884735107422, 43.605422973633}, + {3.876114, 43.574524}, + {4.058609, 43.558579}, + {3.9118194580078, 43.660354614258}, + {3.745308, 43.632374}, + {6.220734, 45.564148}, + {4.8387908935547, 46.792831420898}, + {4.0738677978516, 46.608810424805}, + {4.4899749755859, 44.550247192383}, + {4.7673797607422, 44.481582641602}, + {5.205109, 45.073709}, + {6.622238, 45.876846}, + {6.9371795654297, 47.556381225586}, + {6.2587738037109, 47.152633666992}, + {6.004715, 47.182388}, + {5.7726287841797, 45.013046264648}, + {6.207275, 45.000687}, + {6.2546539306641, 46.041641235352}, + {5.7176971435547, 45.187454223633}, + {35.908126831055, 31.918716430664}, + {35.89714050293, 31.93244934082}, + {36.145706176758, 32.10823059082}, + {35.97541809082, 31.663284301758}, + {35.905380249023, 31.962661743164}, + {35.93123, 31.992732}, + {36.223983764648, 32.083511352539}, + {35.88752746582, 31.973648071289}, + {35.855941772461, 32.550430297852}, + {36.22673034668, 32.341690063477}, + {36.09489440918, 32.061538696289}, + {35.840835571289, 31.984634399414}, + {35.990743, 31.995417}, + {35.890683, 31.963406}, + {36.506881713867, 31.966781616211}, + {34.978408813477, 29.413833618164}, + {45.369865, 35.568823}, + {36.298141479492, 33.522720336914}, + {45.434646606445, 35.573043823242}, + {44.36897277832, 35.453567504883}, + {45.379028, 35.590897}, + {47.979354858398, 30.44792175293}, + {47.725296020508, 30.38200378418}, + {44.45961, 33.309708}, + {0.26435852050781, 46.593704223633}, + {-1.1377716064453, 46.141891479492}, + {5.5405426025391, 46.814804077148}, + {0.087203979492188, 46.63215637207}, + {3.9530181884766, 49.343032836914}, + {0.27259826660156, 49.46662902832}, + {4.7206878662109, 49.785232543945}, + {2.8914642333984, 49.182357788086}, + {-0.65986633300781, 44.860610961914}, + {1.4632415771484, 45.166854858398}, + {4.8484039306641, 45.765609741211}, + {4.8429107666016, 45.713424682617}, + {3.25882, 45.31723}, + {5.7822418212891, 45.208053588867}, + {4.876556, 45.064545}, + {4.8387908935547, 46.317672729492}, + {4.8030853271484, 44.767227172852}, + {2.8447723388672, 50.703964233398}, + {4.7893524169922, 46.283340454102}, + {3.0205535888672, 50.506210327148}, + {6.6062164306641, 44.694442749023}, + {4.8085784912109, 43.950119018555}, + {4.757309, 43.938675}, + {4.9280548095703, 43.880081176758}, + {1.5291595458984, 42.505416870117}, + {1.6678619384766, 42.572708129883}, + {2.1183013916016, 41.38069152832}, + {2.069704, 41.357041}, + {2.789378, 41.676455}, + {2.845047, 41.702316}, + {0.052871704101562, 40.06233215332}, + {-2.739029, 42.427139}, + {-2.729691, 42.416428}, + {-2.488632, 42.455978}, + {-2.4506378173828, 42.454605102539}, + {-0.262298, 41.787186}, + {-0.84938049316406, 41.730880737305}, + {-0.72853, 42.295914}, + {-0.88508605957031, 41.656723022461}, + {-0.88783264160156, 41.640243530273}, + {-2.5096893310547, 43.264846801758}, + {-1.5964508056641, 41.361465454102}, + {-2.4218, 42.671038}, + {-2.9821014404297, 43.278579711914}, + {-3.6083221435547, 40.365829467773}, + {-77.511429, 37.605515}, + {-77.623146, 37.770341}, + {-77.833087, 36.761224}, + {-77.445202, 36.829989}, + {-75.939559936523, 36.321487426758}, + {-76.792373657227, 36.671676635742}, + {-76.406478881836, 36.84196472168}, + {-76.238817, 36.913411}, + {-76.200485229492, 36.81037902832}, + {-77.079391479492, 38.89778137207}, + {-77.050552, 38.909454}, + {-78.207843, 38.455779}, + {-77.834517, 39.297898}, + {-76.858039, 38.845983}, + {-77.026722, 38.910264}, + {-76.611099243164, 38.359451293945}, + {-76.877713, 38.773277}, + {-77.143311, 38.705876}, + {-77.303925, 38.831348}, + {-77.980270385742, 39.242477416992}, + {-77.167282, 38.650589}, + {-78.105239868164, 38.921127319336}, + {-93.701705932617, 41.579818725586}, + {-93.620468, 41.559722}, + {-83.367691040039, 42.186813354492}, + {-85.578689575195, 42.262344360352}, + {-83.503647, 42.217712}, + {-82.72087097168, 41.406784057617}, + {-83.364944458008, 42.494430541992}, + {-84.738235473633, 43.60954284668}, + {-83.335419, 42.414093}, + {-84.484961, 42.679825}, + {-83.19465637207, 42.42301940918}, + {-83.688354, 42.366028}, + {-83.327865600586, 42.490310668945}, + {-85.688553, 42.829514}, + {-85.732498168945, 42.969589233398}, + {-84.740982055664, 42.738876342773}, + {-84.496536, 42.909851}, + {-85.583771, 43.131912}, + {-83.038101196289, 42.355728149414}, + {-83.113174, 42.320938}, + {-83.069686889648, 42.390060424805}, + {-82.99907, 42.414481}, + {140.380936, 37.515335}, + {140.11619567871, 39.721755981445}, + {141.352421, 43.058853}, + {141.3191986084, 43.068466186523}, + {141.361427, 43.142624}, + {141.36863708496, 43.03825378418}, + {140.73417663574, 41.835250854492}, + {141.34803771973, 43.057479858398}, + {140.78086853027, 41.796798706055}, + {140.74653625488, 42.107162475586}, + {141.888809, 43.397751}, + {144.1234588623, 43.82926940918}, + {136.7749786377, 35.147323608398}, + {136.80244445801, 35.235214233398}, + {143.067856, 42.919693}, + {136.818161, 35.163803}, + {136.81617736816, 35.19401550293}, + {137.021485, 35.251694}, + {136.816727, 35.31459}, + {136.76399230957, 35.321731567383}, + {137.013474, 35.205002}, + {137.025948, 35.293579}, + {137.01118469238, 35.187149047852}, + {136.9164276123, 35.159683227539}, + {-98.528823852539, 29.417953491211}, + {-98.49723815918, 29.320449829102}, + {-81.372299194336, 28.767013549805}, + {-98.498611450195, 29.519577026367}, + {-98.491744995117, 29.331436157227}, + {-98.552169799805, 29.51545715332}, + {-97.524953, 29.507226}, + {-98.762283, 30.18837}, + {-98.60710144043, 29.406967163086}, + {-97.506388, 25.942778}, + {-98.745064, 29.802352}, + {-98.523330688477, 29.571762084961}, + {-98.11615, 26.611633}, + {-97.311216, 27.894222}, + {-98.242411, 26.217472}, + {-82.148361, 27.014389}, + {-82.574387, 27.462387}, + {-81.796303, 26.275864}, + {-81.808044, 26.407288}, + {-82.372055053711, 27.555770874023}, + {-82.396774291992, 27.050399780273}, + {-82.357864, 28.139877}, + {-82.716065, 27.741852}, + {-82.726793, 27.916603}, + {-82.721558, 28.060455}, + {103.73908996582, 1.5305328369141}, + {103.397927, 1.511205}, + {103.715677, 1.510791}, + {103.36555480957, 2.0674896240234}, + {100.31959533691, 5.3551483154297}, + {100.267606, 5.294331}, + {101.146317, 4.623184}, + {100.315172, 5.379967}, + {116.0863494873, 5.9745025634766}, + {102.2435760498, 6.1324310302734}, + {101.392273, 3.002151}, + {101.72996520996, 3.0919647216797}, + {101.733398, 3.096085}, + {101.724847, 3.125332}, + {101.696353, 3.233577}, + {101.621161, 3.134842}, + {101.65855407715, 3.1688690185547}, + {101.617098, 3.172353}, + {101.74071, 3.181739}, + {101.64894104004, 3.0699920654297}, + {100.39512634277, 5.3963470458984}, + {101.741386, 3.022946}, + {46.838150024414, 24.787216186523}, + {46.501693725586, 25.052261352539}, + {47.134780883789, 25.225296020508}, + {46.693954467773, 24.752883911133}, + {46.68571472168, 24.75700378418}, + {46.684341430664, 24.740524291992}, + {46.717300415039, 24.75700378418}, + {46.695327758789, 24.674606323242}, + {46.784591674805, 24.77897644043}, + {46.721420288086, 24.693832397461}, + {46.658248901367, 24.674606323242}, + {46.693954467773, 24.660873413086}, + {46.658809, 24.607204}, + {46.709623, 24.585923}, + {46.70768737793, 24.540023803711}, + {44.384078979492, 24.490585327148}, + {45.214920043945, 24.00993347168}, + {46.77360534668, 24.719924926758}, + {46.733779907227, 24.75700378418}, + {46.75163269043, 24.710311889648}, + {46.70768737793, 24.726791381836}, + {46.571731567383, 24.702072143555}, + {46.713180541992, 24.626541137695}, + {108.93424987793, 34.186019897461}, + {108.94523620605, 34.265670776367}, + {108.88343811035, 34.150314331055}, + {109.015549, 34.270065}, + {103.32572937012, 35.934219360352}, + {102.11723327637, 38.330612182617}, + {103.82011413574, 36.056442260742}, + {103.84071350098, 36.057815551758}, + {105.4515838623, 37.453079223633}, + {103.86268615723, 35.954818725586}, + {85.400161743164, 41.954727172852}, + {82.97492980957, 41.707534790039}, + {113.00193786621, 28.221817016602}, + {106.53373718262, 29.404220581055}, + {110.4874420166, 29.114456176758}, + {106.0929107666, 30.814590454102}, + {104.4312286377, 31.203231811523}, + {103.63334655762, 30.986251831055}, + {104.01786804199, 30.664901733398}, + {104.04396057129, 30.663528442383}, + {116.492844, 39.80278}, + {116.06300354004, 39.761581420898}, + {116.990662, 39.462891}, + {117.16987609863, 39.113388061523}, + {7.0236968994141, 50.709457397461}, + {7.141996, 50.769294}, + {8.08342, 51.093979}, + {7.1926116943359, 50.955276489258}, + {8.067398, 50.599045}, + {8.2500457763672, 50.746536254883}, + {6.648894, 50.444307}, + {13.752822875977, 53.881759643555}, + {13.285903930664, 52.515335083008}, + {9.2113494873047, 53.634567260742}, + {11.556656, 48.249344}, + {13.226332, 52.370286}, + {13.33127, 52.497084}, + {13.394393920898, 52.535934448242}, + {11.136421, 53.953313}, + {75.305099487305, 51.709213256836}, + {71.432762, 51.153374}, + {68.257369995117, 43.281326293945}, + {76.760787963867, 30.722579956055}, + {83.299026489258, 17.733993530273}, + {77.072525024414, 28.58024597168}, + {77.30598449707, 28.397598266602}, + {77.310104370117, 28.431930541992}, + {77.246932983398, 28.631057739258}, + {77.187881469727, 28.706588745117}, + {77.079735, 28.643761}, + {77.252426147461, 28.563766479492}, + {77.382888793945, 28.655776977539}, + {77.20573425293, 28.648910522461}, + {77.135696411133, 28.723068237305}, + {77.050552368164, 28.706588745117}, + {77.231826782227, 28.554153442383}, + {77.165908813477, 28.651657104492}, + {77.171401977539, 28.657150268555}, + {77.196121, 28.644104}, + {77.065658569336, 28.500595092773}, + {77.157669067383, 28.51432800293}, + {77.362289428711, 28.581619262695}, + {76.944808959961, 28.425064086914}, + {6.6185760498047, 46.542892456055}, + {6.6213226318359, 46.548385620117}, + {8.626785, 47.05101}, + {7.577408, 47.573768}, + {8.356479, 47.432787}, + {8.4326934814453, 47.152633666992}, + {7.5565338134766, 47.186965942383}, + {9.5340728759766, 46.853256225586}, + {9.526813, 47.228753}, + {8.826942, 47.217751}, + {9.2786407470703, 47.077102661133}, + {8.5562896728516, 47.361373901367}, + {6.091016, 46.251104}, + {6.097629, 46.216989}, + {7.413025, 46.923294}, + {7.4961090087891, 46.321792602539}, + {29.790115356445, 40.770950317383}, + {29.07600402832, 41.015396118164}, + {29.117202758789, 41.057968139648}, + {29.108963012695, 41.031875610352}, + {32.531204223633, 40.011520385742}, + {34.713363647461, 38.624496459961}, + {29.09797668457, 41.019515991211}, + {33.994446, 38.385544}, + {26.815567016602, 39.364700317383}, + {34.032211303711, 38.367691040039}, + {36.295394897461, 41.285934448242}, + {36.329727172852, 41.257095336914}, + {36.273422241211, 41.309280395508}, + {28.872756958008, 40.983810424805}, + {28.924484, 41.029129}, + {28.874588, 40.975571}, + {28.838424682617, 40.232620239258}, + {28.989486694336, 40.24772644043}, + {27.095718383789, 38.466567993164}, + {27.051773071289, 38.492660522461}, + {26.897049, 38.370438}, + {35.505752563477, 38.730239868164}, + {27.14241027832, 38.294906616211}, + {27.134170532227, 38.28254699707}, + {36.820846, -1.306761}, + {36.845957, -1.26223}, + {37.937850952148, 0.23963928222656}, + {35.247573852539, 0.53627014160156}, + {37.319869995117, -1.2668609619141}, + {37.082291, 0.083771}, + {36.835699, -1.264715}, + {39.25264, -6.776505}, + {39.207802, -6.835556}, + {39.25827, -6.783371}, + {37.120742797852, -2.8639984130859}, + {37.340469360352, -3.3528900146484}, + {37.326736450195, -3.3034515380859}, + {37.019119262695, -3.5204315185547}, + {32.176895141602, -2.8324127197266}, + {35.659561, -7.829132}, + {34.150314331055, -8.8433074951172}, + {35.548324584961, -4.2729949951172}, + {32.922592163086, -2.4987030029297}, + {39.284225, -6.811661}, + {33.371658325195, -3.3391571044922}, + {38.3464, -6.203157}, + {35.762558, -6.175003}, + {37.609634399414, -6.7490386962891}, + {87.074212, 53.632508}, + {86.848983764648, 53.649673461914}, + {55.879898071289, 54.30061340332}, + {58.505630493164, 52.123947143555}, + {43.98307800293, 53.184127807617}, + {48.32405090332, 54.307479858398}, + {48.372459, 54.306107}, + {46.120605, 51.490173}, + {55.98014831543, 54.698867797852}, + {51.957418, 55.675382}, + {56.196438, 54.809261}, + {46.525039, 55.862732}, + {47.278976, 56.095963}, + {45.570053, 56.048813}, + {44.010086, 56.326218}, + {49.21669, 55.793381}, + {44.805157, 53.293013}, + {-48.949892, -16.332839}, + {-48.328588, -10.327863}, + {-49.308243, -25.562668}, + {-51.928939819336, -23.427658081055}, + {-50.04753112793, -25.436782836914}, + {-48.545218, -27.594293}, + {-48.592913, -27.616438}, + {-48.545897, -27.582159}, + {-52.382082, -31.7465}, + {-52.150039672852, -32.05192565918}, + {-48.015060424805, -15.874557495117}, + {-56.049325, -15.572697}, + {-49.275741577148, -16.742477416992}, + {-54.170837, -22.27478}, + {-51.168711, -23.327534}, + {-51.164512, -23.298836}, + {-48.619445, -27.545603}, + {-48.633236, -26.981622}, + {-48.449020385742, -27.433547973633}, + {-48.606948852539, -27.031173706055}, + {88.240127563477, 22.584457397461}, + {88.262100219727, 22.596817016602}, + {88.436508178711, 22.975845336914}, + {88.256607055664, 22.50617980957}, + {88.385696411133, 22.510299682617}, + {88.391189575195, 22.541885375977}, + {88.350931, 22.58032}, + {88.363182, 22.586452}, + {88.358694, 22.561594}, + {88.217812, 22.493984}, + {88.361097, 22.502084}, + {88.373337, 22.54034}, + {88.321151733398, 22.497940063477}, + {88.300552368164, 22.562484741211}, + {88.274459838867, 22.495193481445}, + {88.237839, 22.603226}, + {88.360977172852, 22.578964233398}, + {88.359603881836, 22.525405883789}, + {88.378829956055, 22.764358520508}, + {88.403549194336, 22.580337524414}, + {88.336258, 22.530441}, + {94.104080200195, 25.663375854492}, + {91.297073364258, 23.86848449707}, + {19.446487426758, 51.780624389648}, + {22.77893, 49.782468}, + {22.292404, 49.535065}, + {-71.845779418945, 45.374221801758}, + {-75.70198059082, 45.35774230957}, + {-106.666222, 52.118355}, + {-104.642715, 50.446701}, + {-106.61258, 52.092416}, + {-102.61161804199, 49.006576538086}, + {-105.453987, 50.392743}, + {-105.760025, 51.981125}, + {-108.51816, 53.052862}, + {-79.378280639648, 43.654861450195}, + {-79.440667, 43.633281}, + {-79.394760131836, 43.691940307617}, + {-79.334881, 43.667507}, + {-79.530027, 43.701757}, + {-79.405777, 43.78169}, + {-79.579811, 43.698807}, + {-79.497756958008, 43.641128540039}, + {-79.793014526367, 43.612289428711}, + {1.1611175537109, 43.740005493164}, + {6.0253143310547, 44.734268188477}, + {3.753998, 44.169847}, + {1.3602447509766, 43.601303100586}, + {2.4945831298828, 48.881607055664}, + {5.3620147705078, 43.362350463867}, + {1.3822174072266, 43.610916137695}, + {3.657073, 43.849182}, + {5.583421, 43.311884}, + {-3.02639, 48.208351}, + {2.47261, 48.779297}, + {2.732579, 47.997761}, + {-0.861797, 47.061955}, + {136.44401550293, 35.383529663086}, + {137.03659, 34.801255}, + {140.383987, 36.374817}, + {136.47834777832, 34.674911499023}, + {137.899312, 34.778889}, + {139.978866, 36.875922}, + {137.433701, 35.459061}, + {135.57884216309, 35.489273071289}, + {136.794205, 35.164261}, + {136.65550231934, 36.572799682617}, + {135.4222869873, 34.639205932617}, + {135.47172546387, 34.65705871582}, + {135.363236, 33.734207}, + {135.596695, 34.679522}, + {135.018808, 34.6436}, + {135.157242, 34.315796}, + {134.94300842285, 34.669418334961}, + {135.33714294434, 34.760055541992}, + {134.954682, 34.821168}, + {136.128708, 35.055313}, + {135.15174865723, 34.05143737793}, + {135.77796936035, 34.555435180664}, + {135.72578430176, 34.978408813477}, + {135.30006408691, 34.720230102539}, + {5.976417, 49.507392}, + {6.185692, 49.634059}, + {-6.1585235595703, 54.013595581055}, + {-6.3947296142578, 53.370895385742}, + {-6.4112091064453, 53.315963745117}, + {-6.1969757080078, 53.265151977539}, + {-6.528008, 53.318218}, + {-6.4318084716797, 54.030075073242}, + {-6.4524078369141, 53.418960571289}, + {-8.42663, 53.917285}, + {-8.0550384521484, 54.017715454102}, + {-8.3448028564453, 54.560165405273}, + {-10.112228393555, 53.510971069336}, + {-8.988998, 53.298707}, + {-8.298111, 51.866455}, + {-8.4862518310547, 51.89323425293}, + {-7.4439239501953, 52.855911254883}, + {-9.310725, 52.615086}, + {-10.272903, 52.146194}, + {-8.788295, 52.693863}, + {139.2098236084, 35.368423461914}, + {135.183609, 34.684525}, + {139.370499, 35.486984}, + {139.5613861084, 35.497512817383}, + {135.095215, 34.635315}, + {135.131836, 34.652939}, + {135.298691, 34.725037}, + {139.77012634277, 35.673294067383}, + {135.063858, 34.645248}, + {139.76737976074, 35.678787231445}, + {139.75227355957, 35.659561157227}, + {139.770584, 35.687943}, + {139.772568, 35.622025}, + {140.392227, 37.416687}, + {140.12718200684, 38.053207397461}, + {139.434651, 35.747452}, + {138.464814, 35.711746}, + {138.860641, 35.099533}, + {139.5352935791, 35.730972290039}, + {138.859634, 35.113907}, + {138.34053, 34.980743}, + {137.937469, 36.233139}, + {137.83699, 36.461563}, + {131.60179138184, 33.235702514648}, + {131.59767150879, 33.23844909668}, + {-83.533785, 35.796933}, + {-95.51651, 30.675201}, + {-82.491366, 27.994894}, + {-95.304336547852, 32.277145385742}, + {-82.458911, 28.065822}, + {-81.569692, 28.239236}, + {-88.668525, 37.09545}, + {-85.203157, 38.203957}, + {-86.375259, 38.241322}, + {-95.176620483398, 29.983749389648}, + {-94.118756, 33.438775}, + {-93.609146, 32.071152}, + {-81.18278503418, 28.530807495117}, + {-85.132369995117, 33.638076782227}, + {-80.368276, 25.712491}, + {-80.132216, 26.015968}, + {-80.329971313477, 25.688095092773}, + {-87.959289, 42.819214}, + {-92.012557983398, 44.916915893555}, + {-93.454513, 45.109177}, + {-93.116226, 44.87114}, + {-93.57021, 44.768262}, + {115.177689, -8.609848}, + {115.153542, -8.623581}, + {115.155258, -8.607101}, + {115.16624450684, -8.7993621826172}, + {115.23765563965, -8.6798858642578}, + {115.087473, -8.110175}, + {115.2074432373, -8.6318206787109}, + {115.17448425293, -8.6290740966797}, + {115.190964, -8.66066}, + {115.18272399902, -8.7059783935547}, + {115.166277, -8.737166}, + {115.162811, -8.667526}, + {115.173111, -8.748276}, + {115.228043, -8.530197}, + {115.240693, -8.582107}, + {116.13824, -8.589292}, + {106.02973937988, -5.8975982666016}, + {118.46626281738, -8.5398101806641}, + {116.118851, -8.594742}, + {116.3843536377, -8.6373138427734}, + {121.64405822754, -8.8474273681641}, + {123.41835021973, -8.3750152587891}, + {120.2693939209, -9.6549224853516}, + {96.705093383789, 5.2109527587891}, + {97.253036499023, 5.1120758056641}, + {97.627944946289, 1.2792205810547}, + {96.731269, 5.191683}, + {95.364761352539, 5.5625152587891}, + {98.493118286133, 2.8955841064453}, + {98.70735168457, 3.6248016357422}, + {98.627701, 3.608322}, + {98.666742, 3.58223}, + {98.668625, 3.600632}, + {98.677139282227, 3.5739898681641}, + {98.62056, 3.567673}, + {98.71696472168, 3.5451507568359}, + {98.651047, 3.541718}, + {95.320816040039, 5.5075836181641}, + {96.128311157227, 4.1411590576172}, + {95.315322875977, 5.5377960205078}, + {99.063034057617, 2.9573822021484}, + {95.320816040039, 5.5597686767578}, + {96.017074584961, 5.3098297119141}, + {95.308718, 5.5501}, + {98.671646, 3.629265}, + {100.63819885254, -1.0086822509766}, + {99.700807, 17.020047}, + {99.826145, 13.27606}, + {100.10398864746, 7.6251983642578}, + {99.985885620117, 12.162551879883}, + {98.371348, 7.85377}, + {101.73957824707, 5.9470367431641}, + {98.250045776367, 9.1097259521484}, + {100.47889709473, 6.9742584228516}, + {99.086645, 9.747734}, + {98.887252807617, 18.965835571289}, + {2.2377777099609, 47.096328735352}, + {4.3045806884766, 45.603561401367}, + {0.34538269042969, 46.586837768555}, + {6.5430450439453, 45.486831665039}, + {3.075714, 45.894699}, + {5.9360504150391, 45.571975708008}, + {2.37123, 48.822535}, + {2.48291, 49.276428}, + {2.2418975830078, 48.828048706055}, + {2.292917, 48.847275}, + {2.2954559326172, 48.85139465332}, + {2.3902130126953, 48.848648071289}, + {2.2858428955078, 48.848648071289}, + {3.118111, 50.368678}, + {2.498399, 48.762244}, + {2.9491424560547, 48.516311645508}, + {2.4712371826172, 48.896713256836}, + {2.6346588134766, 48.584976196289}, + {2.3119354248047, 48.624801635742}, + {2.6634979248047, 48.837661743164}, + {2.6113128662109, 48.734664916992}, + {16.382084, 48.215526}, + {16.368942260742, 48.167495727539}, + {16.305368, 48.190025}, + {13.003642, 47.759499}, + {12.878938, 47.357266}, + {11.4309, 47.262048}, + {13.640345, 47.706629}, + {13.41774, 47.991714}, + {14.831414, 47.217229}, + {14.201889, 48.223604}, + {15.849838256836, 47.089462280273}, + {15.474911, 46.892036}, + {16.240203, 48.081986}, + {16.33155, 48.180458}, + {16.459383, 48.069796}, + {16.563937, 48.123757}, + {16.470928, 48.123019}, + {16.458893, 47.947083}, + {15.135727, 48.059692}, + {16.280336, 48.243392}, + {74.912338256836, 31.664657592773}, + {74.869766235352, 31.635818481445}, + {74.864273071289, 31.677017211914}, + {76.663284301758, 30.686874389648}, + {76.321334838867, 30.110092163086}, + {76.269836, 30.677261}, + {75.842056274414, 30.870895385742}, + {75.714615, 31.251022}, + {80.927352905273, 26.869125366211}, + {81.833724975586, 25.451889038086}, + {78.544692993164, 25.442276000977}, + {81.241837, 26.243591}, + {83.123245239258, 25.273361206055}, + {83.407516479492, 26.753768920898}, + {80.718612670898, 27.587356567383}, + {80.893020629883, 26.794967651367}, + {80.946578979492, 26.763381958008}, + {80.961685180664, 26.895217895508}, + {92.726669311523, 23.751754760742}, + {93.764877319336, 24.643020629883}, + {91.243515014648, 23.893203735352}, + {87.354354858398, 22.346878051758}, + {76.319962, 10.050774}, + {-95.459518432617, 29.717330932617}, + {-95.392375, 29.638175}, + {-95.423812866211, 29.695358276367}, + {-95.379913, 29.934622}, + {-95.745162963867, 29.753036499023}, + {-95.835800170898, 29.753036499023}, + {-97.672928, 26.217415}, + {-97.334976, 26.140824}, + {-97.787777, 26.39}, + {-98.395342, 26.225405}, + {-97.778091, 28.538403}, + {-98.27751159668, 26.242904663086}, + {-98.624651, 29.46015}, + {-97.739181518555, 29.63493347168}, + {-98.287124633789, 29.47151184082}, + {-98.004538, 29.286335}, + {-98.4214, 29.605547}, + {-98.455494, 29.648382}, + {-98.505085, 29.576078}, + {-98.332558, 29.586697}, + {-98.986181, 29.741568}, + {152.998566, -27.339535}, + {153.08555603027, -26.71257019043}, + {138.58085632324, -34.86442565918}, + {138.597723, -34.726326}, + {138.52895, -34.867582}, + {138.629379, -34.876785}, + {138.5245513916, -35.026473999023}, + {138.55339, -34.995575}, + {138.72505187988, -35.019607543945}, + {115.89546203613, -31.983261108398}, + {115.864545, -31.941282}, + {115.820304, -32.029167}, + {115.82679748535, -31.957168579102}, + {115.8309173584, -31.874771118164}, + {116.05476379395, -31.893997192383}, + {116.001579, -32.19813}, + {115.92155456543, -32.010726928711}, + {115.94764709473, -32.31559753418}, + {151.16569519043, -33.815231323242}, + {151.07917785645, -33.877029418945}, + {151.1107635498, -33.89762878418}, + {151.15608215332, -33.936080932617}, + {1.0443878173828, 41.636123657227}, + {1.167984, 41.654434}, + {-2.4437713623047, 42.453231811523}, + {1.3039398193359, 42.078323364258}, + {0.941347, 41.716468}, + {-7.6169586181641, 43.683700561523}, + {-1.7159271240234, 42.087936401367}, + {-6.8767547607422, 43.135757446289}, + {-7.767854, 43.172836}, + {-7.608261, 43.604507}, + {-3.6316680908203, 40.385055541992}, + {-3.588023, 40.475007}, + {-3.725551, 40.386429}, + {-3.6934661865234, 40.356216430664}, + {-3.6879730224609, 40.374069213867}, + {-3.712143, 40.431061}, + {-3.7030792236328, 40.412521362305}, + {-3.6838531494141, 40.431747436523}, + {1.3794708251953, 43.634262084961}, + {7.324448, 47.74704}, + {7.224197, 47.739029}, + {7.343487, 47.905593}, + {7.488668, 47.650532}, + {7.807846, 48.602829}, + {6.8328094482422, 47.255630493164}, + {2.1347808837891, 48.80744934082}, + {2.2515106201172, 48.836288452148}, + {2.3435211181641, 48.789596557617}, + {2.2789764404297, 48.777236938477}, + {2.0496368408203, 48.909072875977}, + {1.706996, 48.921434}, + {1.8724822998047, 48.858261108398}, + {1.951049, 48.737628}, + {2.235031, 48.731918}, + {2.192111, 48.696314}, + {2.31863, 48.695698}, + {2.1526336669922, 48.786849975586}, + {72.320938110352, 31.26091003418}, + {68.503189086914, 27.279739379883}, + {67.029647827148, 24.861373901367}, + {67.068099975586, 24.969863891602}, + {67.734146118164, 26.491470336914}, + {72.977829, 33.64769}, + {68.264236450195, 25.351638793945}, + {74.232559204102, 32.392501831055}, + {73.738861, 33.149185}, + {72.350292, 34.710102}, + {72.857894897461, 33.930587768555}, + {71.97624206543, 34.17366027832}, + {73.387985229492, 31.742935180664}, + {74.281997680664, 31.48063659668}, + {74.321823120117, 31.499862670898}, + {74.444046020508, 31.179885864258}, + {74.350662231445, 31.506729125977}, + {67.155990600586, 24.84489440918}, + {67.114792, 24.899139}, + {67.026901245117, 24.905319213867}, + {73.055648803711, 33.61198425293}, + {72.997970581055, 33.688888549805}, + {136.51268005371, 34.713363647461}, + {136.4769744873, 34.636459350586}, + {136.470795, 34.641266}, + {136.994705, 34.903564}, + {137.42729187012, 34.760055541992}, + {137.41767883301, 34.742202758789}, + {137.4259185791, 34.749069213867}, + {136.729202, 35.450363}, + {136.81480407715, 35.373916625977}, + {136.80107116699, 35.415115356445}, + {137.71019, 34.771729}, + {137.629852, 34.862366}, + {137.659807, 34.886913}, + {137.5577545166, 34.924850463867}, + {137.3518, 34.831467}, + {136.92604064941, 35.508499145508}, + {137.288589, 35.330315}, + {137.042084, 35.443955}, + {138.37898254395, 35.003128051758}, + {138.386536, 34.966049}, + {138.42430114746, 34.985275268555}, + {137.87086486816, 34.739456176758}, + {138.28285217285, 34.856185913086}, + {138.1468963623, 34.743576049805}, + {-77.438507, 38.314134}, + {-74.739303588867, 40.22575378418}, + {-81.943588256836, 33.55842590332}, + {-72.86750793457, 41.351852416992}, + {-74.520721, 39.435196}, + {-76.166152954102, 43.053359985352}, + {-97.184371948242, 32.694625854492}, + {-97.240676879883, 32.739944458008}, + {-96.650161743164, 33.167037963867}, + {-97.137680053711, 32.759170532227}, + {-96.832809448242, 32.801742553711}, + {-77.44743347168, 38.385543823242}, + {-77.109603881836, 39.01725769043}, + {-77.060165405273, 38.888168334961}, + {-77.330703735352, 38.864822387695}, + {-76.881637573242, 38.830490112305}, + {-79.703064, 36.057816}, + {-106.28791809082, 31.736068725586}, + {-79.822311, 35.869217}, + {-104.51774597168, 33.390884399414}, + {-84.334487915039, 33.947067260742}, + {-97.669143676758, 30.476760864258}, + {-84.393539428711, 34.13932800293}, + {-95.216445922852, 29.645919799805}, + {-97.717208862305, 30.508346557617}, + {11.725, 48.176158}, + {12.438259, 47.750343}, + {11.40998840332, 48.164749145508}, + {-9.141377, 38.742599}, + {-9.222728, 38.755548}, + {-9.383599, 39.133595}, + {-8.5988616943359, 41.154098510742}, + {-8.2967376708984, 40.10627746582}, + {-8.6125946044922, 41.191177368164}, + {-8.68782, 41.205826}, + {-8.606277, 41.17923}, + {-7.967834, 37.020493}, + {120.69923400879, 24.115676879883}, + {120.40397644043, 23.418045043945}, + {120.500107, 23.47332}, + {120.43556213379, 23.537521362305}, + {120.38200378418, 23.280715942383}, + {120.213482, 22.986548}, + {120.21446228027, 23.066482543945}, + {120.318632, 22.699814}, + {120.4808807373, 22.683334350586}, + {120.2172088623, 23.012924194336}, + {120.358353, 22.72789}, + {120.413589, 22.506866}, + {121.4714, 25.018565}, + {121.339188, 24.993896}, + {120.29411315918, 22.654495239258}, + {120.67176818848, 24.17610168457}, + {120.315399, 22.628403}, + {121.50535583496, 25.028915405273}, + {121.53419494629, 25.057754516602}, + {121.54243469238, 25.041275024414}, + {121.72508239746, 25.104446411133}, + {121.47789001465, 25.045394897461}, + {121.76902770996, 24.76936340332}, + {121.41609191895, 25.028915405273}, + {121.29386901855, 24.991836547852}, + {-74.77027, 40.65081}, + {-73.989486694336, 40.873947143555}, + {-74.344711, 40.536118}, + {-74.252798, 40.524672}, + {-74.188152, 40.42407}, + {-73.89048, 41.195879}, + {-73.766556, 40.919266}, + {-73.793109, 40.935127}, + {-115.10719299316, 36.012496948242}, + {-83.980622, 33.752603}, + {-84.148425, 33.853424}, + {-84.167699, 33.701659}, + {-84.678589, 33.889591}, + {-84.881969, 33.719574}, + {-84.041976928711, 33.432083129883}, + {-84.096908569336, 33.340072631836}, + {-84.220504760742, 33.543319702148}, + {-84.138107299805, 33.96354675293}, + {-82.038192, 33.421451}, + {-84.8871, 35.225327}, + {119.19136047363, 32.334823608398}, + {120.938187, 31.923523}, + {121.64543151855, 31.907730102539}, + {120.35453796387, 36.241836547852}, + {120.21034240723, 36.539840698242}, + {120.34767150879, 36.291275024414}, + {118.82057189941, 36.852951049805}, + {118.54042053223, 37.440719604492}, + {117.13554382324, 35.081405639648}, + {116.8773651123, 34.328842163086}, + {120.25428771973, 30.311965942383}, + {120.01808166504, 30.283126831055}, + {120.11283874512, 30.33805847168}, + {120.14717102051, 30.26252746582}, + {120.19248962402, 30.176010131836}, + {120.15403747559, 30.195236206055}, + {120.162964, 30.259094}, + {121.62620544434, 29.99885559082}, + {121.42433166504, 30.057907104492}, + {121.56303405762, 29.828567504883}, + {120.11695861816, 29.379501342773}, + {120.59623718262, 30.024948120117}, + {120.3833770752, 30.430068969727}, + {119.29023742676, 26.094589233398}, + {-2.984939, 43.313406}, + {-3.037033, 43.317032}, + {3.3199310302734, 39.540481567383}, + {20.175704956055, 47.174606323242}, + {16.570816040039, 47.248764038086}, + {19.315777, 47.418363}, + {20.039749145508, 46.928787231445}, + {20.964425, 46.844089}, + {20.735081, 47.635826}, + {19.111404418945, 47.409439086914}, + {21.566848754883, 48.04801940918}, + {18.555221557617, 49.858016967773}, + {17.276688, 49.543991}, + {17.216263, 49.604645}, + {14.427108764648, 50.077743530273}, + {14.471054077148, 50.116195678711}, + {14.454437, 50.093399}, + {14.329605102539, 50.021438598633}, + {14.453201293945, 50.048904418945}, + {14.702454, 50.048218}, + {14.575424194336, 50.013198852539}, + {14.311066, 50.046158}, + {14.431228637695, 49.95002746582}, + {14.391403198242, 50.072250366211}, + {14.440663, 50.106045}, + {13.210372924805, 49.336166381836}, + {13.392432, 49.700481}, + {13.377914428711, 49.750900268555}, + {15.398025512695, 50.128555297852}, + {15.20439, 49.672625}, + {5.261078, 52.182999}, + {5.3359222412109, 52.121200561523}, + {5.9648895263672, 52.217330932617}, + {4.750713, 51.581684}, + {5.7506561279297, 51.975631713867}, + {4.449582, 51.529305}, + {6.111832, 52.780838}, + {3.6179351806641, 51.501846313477}, + {5.925563, 53.113216}, + {6.7243194580078, 53.394241333008}, + {5.9799957275391, 50.833053588867}, + {6.4510345458984, 52.79411315918}, + {6.6405487060547, 53.200607299805}, + {6.5622711181641, 53.206100463867}, + {5.3908538818359, 51.396102905273}, + {5.520924, 51.467514}, + {5.300005, 51.361559}, + {6.578751, 51.983414}, + {5.6861114501953, 51.483993530273}, + {6.1241912841797, 52.507095336914}, + {-0.465164, 39.271622}, + {-0.38658142089844, 39.462203979492}, + {-0.327072, 39.568863}, + {-0.36644, 39.46907}, + {-0.37147521972656, 39.496536254883}, + {-4.720139, 41.649857}, + {-4.721669, 41.661235}, + {-4.756674, 41.618482}, + {-3.7113189697266, 40.588302612305}, + {-2.6895904541016, 43.38020324707}, + {-2.917361, 43.246013}, + {-2.9615020751953, 43.256607055664}, + {-6.0280609130859, 41.376571655273}, + {-6.609875, 42.084734}, + {-3.6399078369141, 37.208633422852}, + {-2.746631, 40.89798}, + {-0.977783, 41.548233}, + {-1.2380218505859, 41.906661987305}, + {-1.0402679443359, 41.722640991211}, + {-0.83152770996094, 41.612777709961}, + {-1.00264, 41.706436}, + {54.395370483398, 24.453506469727}, + {54.469528198242, 24.408187866211}, + {54.760665893555, 24.66911315918}, + {54.888382, 24.83923}, + {54.605484008789, 24.478225708008}, + {55.718307, 24.136276}, + {55.702057, 24.13353}, + {54.65217590332, 24.35188293457}, + {52.754287719727, 24.078598022461}, + {54.370638, 24.470716}, + {55.286636352539, 25.258255004883}, + {55.387573, 25.122986}, + {55.260543823242, 25.140151977539}, + {55.304489135742, 25.271987915039}, + {54.470901489258, 24.428787231445}, + {55.336075, 25.250015}, + {39.789047241211, 21.524276733398}, + {40.423233, 21.28093}, + {40.945027, 21.078212}, + {40.283432, 21.352272}, + {40.974197387695, 20.727767944336}, + {50.224685668945, 26.334915161133}, + {50.121688842773, 26.340408325195}, + {50.210952758789, 26.271743774414}, + {50.264511108398, 26.212692260742}, + {50.017318725586, 26.551895141602}, + {49.92805480957, 26.652145385742}, + {50.134048461914, 26.491470336914}, + {50.085983276367, 26.431045532227}, + {50.087357, 26.420746}, + {41.037368774414, 30.951919555664}, + {49.982986, 26.75148}, + {42.238998413086, 30.371017456055}, + {49.581985473633, 25.376358032227}, + {40.154342651367, 29.828567504883}, + {49.680862426758, 26.95426940918}, + {49.71794128418, 26.911697387695}, + {49.651108, 26.958389}, + {49.558639526367, 25.387344360352}, + {147.830933, -37.461182}, + {145.90255, -36.582365}, + {145.26466369629, -36.408004760742}, + {144.25117492676, -36.759567260742}, + {153.42475891113, -28.13117980957}, + {152.970047, -28.003152}, + {151.81800842285, -26.431045532227}, + {151.963309, -27.60403}, + {148.35868835449, -21.943130493164}, + {153.35746765137, -28.054275512695}, + {153.366609, -28.084638}, + {153.400236, -27.912827}, + {153.38905334473, -27.963638305664}, + {153.090019, -27.603149}, + {153.01002502441, -27.465133666992}, + {153.029884, -27.45117}, + {152.706583, -27.675871}, + {153.06495666504, -27.509078979492}, + {153.06221008301, -27.485733032227}, + {122.48588562012, 10.813980102539}, + {122.974091, 10.661545}, + {121.02333068848, 14.591903686523}, + {121.05079650879, 14.600143432617}, + {121.05079650879, 14.576797485352}, + {120.994835, 14.541092}, + {121.00135803223, 14.572677612305}, + {121.039418, 14.497931}, + {121.11671447754, 14.58366394043}, + {121.04667663574, 14.586410522461}, + {121.02333068848, 14.556198120117}, + {120.98075866699, 14.634475708008}, + {120.999985, 14.673691}, + {121.08375549316, 14.678421020508}, + {121.04804992676, 14.689407348633}, + {120.98213195801, 14.587783813477}, + {121.01509094238, 14.602890014648}, + {121.18949890137, 14.578170776367}, + {121.047363, 14.532852}, + {121.05354309082, 14.538345336914}, + {125.5785369873, 7.0415496826172}, + {-73.29749, 41.191177}, + {-72.594778, 42.136279}, + {-72.460647, 42.575638}, + {-73.238513, 42.668188}, + {-72.801303, 44.601116}, + {-73.124759, 44.481694}, + {-72.783737182617, 43.601303100586}, + {-72.743617, 41.617977}, + {-72.671127319336, 41.765213012695}, + {-78.684911, 42.961207}, + {-78.786378, 42.946548}, + {-78.968491, 43.027542}, + {-78.892841, 43.049723}, + {-73.756431, 42.651632}, + {-73.679982, 43.283134}, + {-73.77708, 42.504137}, + {-73.371631, 42.619275}, + {-75.44643, 43.227034}, + {-76.086502075195, 43.093185424805}, + {-76.958541870117, 42.136001586914}, + {-76.609725952148, 41.787185668945}, + {-75.949471, 42.11928}, + {-75.653763, 42.851791}, + {-76.133113, 43.171625}, + {12.518473, 41.880864}, + {12.494888305664, 41.899795532227}, + {14.204892, 42.478003}, + {14.210129, 42.466278}, + {14.198227, 42.473373}, + {13.244705200195, 42.068710327148}, + {8.3187103271484, 40.56770324707}, + {8.51976, 40.730576}, + {9.7249603271484, 40.681686401367}, + {9.6645355224609, 40.766830444336}, + {9.086152, 39.24202}, + {9.120384, 39.212572}, + {14.27604675293, 40.864334106445}, + {14.547043, 40.767288}, + {14.229354858398, 40.902786254883}, + {15.196609, 41.908035}, + {15.650515, 41.866542}, + {16.866073608398, 41.084060668945}, + {16.775436401367, 41.159591674805}, + {-122.897219, 47.055065}, + {-122.258651, 47.760219}, + {-122.219623, 47.849049}, + {-68.665237426758, 44.903182983398}, + {-122.176068, 48.029739}, + {-117.43515, 47.899704}, + {-120.68962097168, 35.226974487305}, + {-116.918271, 47.713521}, + {-116.93916320801, 47.734909057617}, + {-118.726501, 45.682526}, + {-116.972122, 46.718948}, + {-118.36463928223, 46.030654907227}, + {-119.76951599121, 34.440078735352}, + {-122.66578674316, 45.571975708008}, + {-122.500461, 45.405874}, + {-123.09425354004, 45.217666625977}, + {-123.02421569824, 45.245132446289}, + {-122.69174, 45.521996}, + {-122.68158, 45.522537}, + {-122.666882, 45.523717}, + {-122.954178, 46.131551}, + {-122.565372, 45.70936}, + {-122.966558, 45.154561}, + {-123.171692, 44.088898}, + {14.572677612305, 46.614303588867}, + {14.315087, 48.284029}, + {14.306259155273, 48.281478881836}, + {14.28840637207, 48.281478881836}, + {14.296646118164, 48.30207824707}, + {13.60725402832, 47.97248840332}, + {13.496018, 47.931977}, + {14.153823852539, 47.851638793945}, + {14.059525, 48.080063}, + {13.090896606445, 47.712936401367}, + {13.084030151367, 47.75276184082}, + {13.442459106445, 47.896957397461}, + {13.112869262695, 47.406692504883}, + {12.805252075195, 47.386093139648}, + {11.816482543945, 47.398452758789}, + {11.377029418945, 47.25700378418}, + {11.378086, 47.25989}, + {11.504745483398, 47.05924987793}, + {11.930465698242, 47.21305847168}, + {9.6398162841797, 47.267990112305}, + {10.908737182617, 47.390213012695}, + {10.830459594727, 47.417678833008}, + {21.149368286133, 51.402969360352}, + {21.242833, 51.458467}, + {20.633010864258, 50.896224975586}, + {20.51628112793, 50.335922241211}, + {20.080947875977, 51.615829467773}, + {19.355850219727, 51.471633911133}, + {20.630264282227, 52.327194213867}, + {21.150741577148, 52.906723022461}, + {19.741744995117, 52.534561157227}, + {21.211166381836, 52.343673706055}, + {20.573959350586, 52.254409790039}, + {22.017288208008, 51.558151245117}, + {19.039993286133, 50.297470092773}, + {5.264339, 52.097855}, + {5.243053, 52.377268}, + {4.732353, 52.300709}, + {4.941101, 52.345566}, + {4.632238, 52.363834}, + {4.535724, 52.386584}, + {4.702753, 52.314384}, + {5.216434, 52.685705}, + {6.341171, 51.92997}, + {6.175004, 52.004014}, + {5.3166961669922, 51.901473999023}, + {5.523268, 51.773324}, + {5.283694, 52.189863}, + {5.923495, 52.42509}, + {5.988801, 52.202702}, + {6.916261, 52.244052}, + {6.592331, 53.21619}, + {6.371235, 53.181489}, + {4.0752410888672, 51.935806274414}, + {4.998485, 51.15303}, + {121.53144836426, 31.23893737793}, + {121.4119720459, 31.221084594727}, + {121.38038635254, 31.241683959961}, + {121.60011291504, 31.280136108398}, + {121.18812561035, 31.400985717773}, + {121.457597, 31.253306}, + {121.42845153809, 31.276016235352}, + {121.53968811035, 30.825576782227}, + {121.48750305176, 31.155166625977}, + {121.083069, 30.93956}, + {117.14241027832, 39.129867553711}, + {117.19184875488, 39.136734008789}, + {117.653275, 39.040639}, + {106.60102844238, 29.626693725586}, + {108.79005432129, 31.223831176758}, + {113.38920593262, 23.115921020508}, + {113.37547302246, 22.944259643555}, + {113.279313, 23.133864}, + {113.225254, 23.054665}, + {113.82865905762, 22.643508911133}, + {113.919857, 22.534696}, + {114.03190612793, 22.530899047852}, + {114.0291595459, 22.627029418945}, + {4.5037078857422, 35.73371887207}, + {0.141449, 35.397949}, + {1.027222, 33.680649}, + {4.369584, 36.220322}, + {7.7158355712891, 36.784286499023}, + {7.0264434814453, 33.592758178711}, + {7.1390533447266, 35.43571472168}, + {2.2130584716797, 36.229476928711}, + {2.3229217529297, 36.258316040039}, + {3.3734893798828, 36.718368530273}, + {3.575363, 36.594772}, + {5.6792449951172, 34.707870483398}, + {0.15174865722656, 34.828720092773}, + {0.98945617675781, 33.519973754883}, + {3.2869720458984, 36.668930053711}, + {3.2677459716797, 36.78840637207}, + {3.857696, 35.682879}, + {1.3162994384766, 36.156692504883}, + {2.915358, 36.594498}, + {3.098635, 36.684821}, + {2.956259, 36.690403}, + {2.9477691650391, 36.784286499023}, + {1.666346, 36.212675}, + {12.526016, 45.787125}, + {11.515731811523, 45.868606567383}, + {11.559677, 45.55275}, + {11.567782, 45.522873}, + {11.496524, 45.699715}, + {13.029098510742, 46.389083862305}, + {12.880783081055, 46.198196411133}, + {12.807998657227, 46.194076538086}, + {12.545471, 45.985107}, + {12.630844, 46.005936}, + {13.810501, 45.657806}, + {13.623198, 45.937374}, + {12.128563, 46.600571}, + {11.916046, 46.493454}, + {11.642074584961, 46.689834594727}, + {11.000701, 45.766863}, + {12.238082885742, 45.661239624023}, + {11.799545, 45.318832}, + {11.912612915039, 45.212173461914}, + {11.795883178711, 45.334396362305}, + {-89.563980102539, 41.802291870117}, + {-88.100051879883, 42.037124633789}, + {-88.102798, 42.134399}, + {-84.684066, 39.203874}, + {-84.690482, 39.076933}, + {-84.297409057617, 39.239730834961}, + {-84.215846, 39.737006}, + {-84.301528930664, 39.806900024414}, + {-84.283938, 39.372973}, + {-84.558727, 39.391022}, + {-85.007356, 39.854522}, + {-82.225194, 41.412116}, + {-81.879044, 41.380005}, + {-81.695022583008, 41.494674682617}, + {-81.21254, 41.686478}, + {-80.476913452148, 41.184310913086}, + {-81.852951049805, 40.249099731445}, + {-82.663192749023, 40.872573852539}, + {-81.718368530273, 41.02912902832}, + {-81.493864, 41.010132}, + {-81.366119, 41.31855}, + {-81.654512, 41.4679}, + {-81.595459, 41.485748}, + {-105.007553, 39.753593}, + {25.235188, 53.873231}, + {28.769760131836, 55.504989624023}, + {28.653030395508, 54.882888793945}, + {27.19596862793, 55.14518737793}, + {27.56947, 53.916909}, + {27.598342895508, 53.91471862793}, + {27.692783, 53.947678}, + {27.550277709961, 53.258285522461}, + {27.774366, 53.958664}, + {23.839645385742, 53.674392700195}, + {23.77533, 52.138138}, + {28.860397338867, 47.026290893555}, + {28.609085083008, 47.02766418457}, + {28.854904174805, 46.967239379883}, + {29.972763061523, 46.397323608398}, + {28.852157592773, 46.991958618164}, + {78.488388061523, 17.536239624023}, + {79.430465698242, 13.640213012695}, + {79.411926, 13.63884}, + {78.574905395508, 17.492294311523}, + {80.420265, 16.297188}, + {83.38005065918, 17.896041870117}, + {78.386765, 17.445799}, + {78.473281860352, 17.482681274414}, + {78.360329, 17.546196}, + {80.66780090332, 16.493911743164}, + {78.437576293945, 17.409896850586}, + {78.503494, 17.310677}, + {78.476028442383, 17.394790649414}, + {78.475404, 17.393417}, + {86.224136352539, 22.824783325195}, + {85.302658081055, 23.332901000977}, + {71.899337768555, 21.70280456543}, + {72.134170532227, 21.770095825195}, + {72.446595, 23.282776}, + {72.827682495117, 21.167221069336}, + {72.927932739258, 20.950241088867}, + {76.86653137207, 30.336685180664}, + {77.023086547852, 28.97575378418}, + {77.29362487793, 30.136184692383}, + {-99.160537719727, 19.392929077148}, + {-99.166374, 19.424171}, + {-99.126892, 19.445457}, + {-99.204941, 19.657974}, + {-99.177017, 19.522705}, + {-99.188347, 19.556351}, + {-99.137191772461, 19.358596801758}, + {-99.186630249023, 19.337997436523}, + {-99.170150756836, 19.245986938477}, + {-99.098739624023, 19.359970092773}, + {-98.940811157227, 19.287185668945}, + {-99.14296, 19.339371}, + {-99.019088745117, 19.357223510742}, + {-99.177017211914, 19.377822875977}, + {-99.100112915039, 19.421768188477}, + {-98.884506225586, 19.313278198242}, + {-98.998097, 19.617168}, + {-101.63108825684, 21.080703735352}, + {-101.33583068848, 21.053237915039}, + {-101.159134, 20.630722}, + {-99.906296, 16.829675}, + {6.5581512451172, 53.195114135742}, + {5.10961, 52.089153}, + {4.0175628662109, 51.820449829102}, + {-93.376235961914, 17.983932495117}, + {-98.987503051758, 19.359970092773}, + {-99.135818481445, 19.348983764648}, + {-103.404947, 20.734025}, + {-103.42597961426, 20.700302124023}, + {-106.470436, 31.384026}, + {-89.609298706055, 20.969467163086}, + {-89.693069458008, 20.992813110352}, + {-89.682083129883, 20.981826782227}, + {-93.310317993164, 18.257217407227}, + {-103.2804107666, 25.84602355957}, + {-91.76262, 17.771072}, + {-98.984756469727, 20.29655456543}, + {-98.495864868164, 20.207290649414}, + {-98.718338012695, 20.085067749023}, + {-89.630954, 20.996933}, + {-93.049392700195, 18.176193237305}, + {-92.825546, 18.244171}, + {-88.245163, 20.608292}, + {-88.38020324707, 20.627517700195}, + {-98.899612426758, 19.278945922852}, + {14.572677612305, 40.618515014648}, + {14.723282, 40.683517}, + {14.124984741211, 40.83137512207}, + {14.214248657227, 40.971450805664}, + {14.193649291992, 41.012649536133}, + {15.661697387695, 40.04035949707}, + {15.473556518555, 41.511154174805}, + {17.087173461914, 41.059341430664}, + {16.925125, 41.067581}, + {16.003646850586, 38.704147338867}, + {16.25358581543, 39.300155639648}, + {15.837478637695, 40.641860961914}, + {16.29753112793, 41.209030151367}, + {13.097305, 38.088455}, + {15.249710083008, 41.062088012695}, + {14.155197143555, 37.844467163086}, + {14.725112915039, 36.918869018555}, + {14.20784, 41.13121}, + {14.06867980957, 41.252975463867}, + {61.327943, 55.180048}, + {61.145782, 55.009918}, + {37.138458, 54.718369}, + {43.634262084961, 43.956985473633}, + {43.020401000977, 44.053115844727}, + {82.983169555664, 55.020217895508}, + {87.179947, 55.879898}, + {92.991714477539, 57.91374206543}, + {83.093032836914, 54.889755249023}, + {79.533462524414, 52.151412963867}, + {92.919617, 56.060486}, + {73.106464, 54.946408}, + {37.514877319336, 54.012222290039}, + {37.994155883789, 54.035568237305}, + {39.510269165039, 57.850570678711}, + {86.129379272461, 55.360794067383}, + {87.220802, 53.758507}, + {139.09172058105, 35.139083862305}, + {139.0601348877, 35.107498168945}, + {139.05464172363, 34.978408813477}, + {136.95625305176, 35.181655883789}, + {138.45588684082, 35.070419311523}, + {137.57011413574, 36.324234008789}, + {136.8985748291, 35.22834777832}, + {137.75276184082, 34.703750610352}, + {136.91505432129, 35.387649536133}, + {136.80931091309, 36.609878540039}, + {137.18971252441, 37.300643920898}, + {135.29731750488, 34.386520385742}, + {135.177841, 34.677462}, + {135.20530700684, 34.70100402832}, + {135.58433532715, 34.739456176758}, + {135.44975280762, 34.690017700195}, + {135.461426, 34.670792}, + {135.19706726074, 34.75456237793}, + {134.84275817871, 34.749069213867}, + {135.31379699707, 33.785018920898}, + {134.83863830566, 34.753189086914}, + {136.16249084473, 35.232467651367}, + {135.48957824707, 34.70100402832}, + {135.17646789551, 35.459060668945}, + {135.73127746582, 35.019607543945}, + {-52.194901, -29.183807}, + {-50.011825561523, -26.770248413086}, + {-43.333511352539, -22.824783325195}, + {-43.931978, -19.936328}, + {-45.591882, -19.977895}, + {-52.040176391602, -32.045059204102}, + {-53.490028, -28.312111}, + {-40.746221, -9.402927}, + {-60.022286, -3.134618}, + {-50.722733, -22.814713}, + {-44.669723510742, -19.906539916992}, + {-44.669723510742, -19.508285522461}, + {-122.52296447754, 48.99284362793}, + {-120.001601, 46.340866}, + {-122.33207702637, 47.593460083008}, + {-122.34992980957, 47.653884887695}, + {-122.123275, 47.667524}, + {-122.159568, 47.637561}, + {-122.306671, 47.243271}, + {-122.902679, 46.39183}, + {-122.719635, 47.504925}, + {-122.33619689941, 47.609939575195}, + {-122.878647, 47.998032}, + {-112.01259, 43.472503}, + {-106.03385925293, 44.205551147461}, + {-108.360652, 43.71443}, + {-112.48970031738, 38.587417602539}, + {-109.49180603027, 40.596542358398}, + {-112.617311, 40.331708}, + {-113.64601135254, 42.688064575195}, + {-116.878346, 43.947176}, + {7.350883, 48.083725}, + {7.347794, 47.742599}, + {6.168595, 48.708573}, + {6.1750030517578, 49.270248413086}, + {6.675568, 49.180985}, + {7.1692657470703, 48.420181274414}, + {7.088852, 48.163071}, + {-0.122566, 47.226105}, + {-1.3904571533203, 46.387710571289}, + {-0.646398, 47.549937}, + {-1.098495, 46.35228}, + {-1.710434, 48.556137}, + {-3.524552, 48.680077}, + {-1.5003204345703, 47.210311889648}, + {-2.1334075927734, 47.143020629883}, + {-0.62965393066406, 47.523422241211}, + {-1.6403961181641, 47.527542114258}, + {-1.627579, 47.179184}, + {-1.534996, 47.206192}, + {-0.38658142089844, 48.307571411133}, + {74.722824, 27.725372}, + {74.519577026367, 28.436050415039}, + {73.014450073242, 26.237411499023}, + {75.773391723633, 26.891098022461}, + {75.740825, 26.88227}, + {74.979629516602, 27.934799194336}, + {75.770645141602, 26.999588012695}, + {72.089882, 26.871185}, + {75.814133, 26.883774}, + {73.319320678711, 28.019943237305}, + {75.721206665039, 27.191848754883}, + {76.606979370117, 27.241287231445}, + {71.341781616211, 25.857009887695}, + {76.41471862793, 27.988357543945}, + {74.077377, 29.757156}, + {75.561905, 23.847199}, + {76.005477905273, 24.62516784668}, + {74.636306762695, 25.947647094727}, + {73.633804321289, 25.008316040039}, + {73.52668762207, 24.762496948242}, + {75.826950073242, 26.925430297852}, + {72.988357543945, 26.279983520508}, + {16.399612, 48.200455}, + {16.361579, 48.211319}, + {16.4772, 48.123388}, + {16.321793, 48.148041}, + {16.379242, 48.154449}, + {16.297179, 48.18913}, + {16.352462768555, 48.146896362305}, + {16.356582641602, 48.205947875977}, + {16.315383911133, 48.193588256836}, + {16.338729858398, 48.227920532227}, + {16.337356567383, 48.183975219727}, + {16.374435424805, 48.212814331055}, + {16.371688842773, 48.210067749023}, + {16.35383605957, 48.208694458008}, + {15.104796, 48.171355}, + {16.103897094727, 48.49983215332}, + {15.062015, 48.285223}, + {16.286774, 48.368797}, + {15.196151733398, 48.606948852539}, + {16.708969, 48.335037}, + {15.060196, 47.349701}, + {16.623001098633, 48.520431518555}, + {15.278893, 47.413559}, + {22.462563, 50.061253}, + {21.460439, 50.060307}, + {19.717025756836, 49.966506958008}, + {21.688466, 49.542194}, + {19.008064, 50.108986}, + {19.849022, 50.084365}, + {19.370098, 50.630322}, + {18.614273071289, 50.90446472168}, + {25.39029, 41.123858}, + {22.971349, 40.561524}, + {21.675338745117, 40.663833618164}, + {22.508926391602, 40.271072387695}, + {25.268261, 37.114467}, + {25.828170776367, 35.170669555664}, + {25.402450561523, 41.11701965332}, + {25.359863, 41.155483}, + {22.93327331543, 40.651473999023}, + {23.772354125977, 37.97492980957}, + {23.750381469727, 38.00651550293}, + {23.650818, 38.082047}, + {23.753128051758, 38.038101196289}, + {23.72428894043, 38.080673217773}, + {23.654251098633, 37.948837280273}, + {20.189437866211, 39.51301574707}, + {21.402053833008, 37.692031860352}, + {22.530456, 38.635029}, + {20.583572387695, 49.992599487305}, + {20.536881, 49.411698}, + {19.956687, 49.300678}, + {21.21048, 49.651337}, + {20.704355, 50.804018}, + {20.511377, 50.863462}, + {21.010208, 51.070633}, + {20.503922, 51.16333}, + {20.314407, 49.985733}, + {19.942245483398, 50.065383911133}, + {20.011826, 50.074997}, + {20.008163452148, 50.094223022461}, + {19.938125610352, 50.102462768555}, + {20.020523071289, 50.087356567383}, + {48.064498901367, 29.242172241211}, + {48.130417, 29.090767}, + {47.656631469727, 29.356155395508}, + {47.977295, 29.376068}, + {48.046646118164, 29.338302612305}, + {48.016889, 29.324036}, + {48.065872192383, 29.332809448242}, + {48.053512573242, 29.25178527832}, + {48.035659790039, 29.336929321289}, + {46.53190612793, 24.555130004883}, + {41.76383972168, 27.668380737305}, + {41.718521118164, 27.555770874023}, + {43.234634399414, 25.988845825195}, + {48.440780639648, 27.498092651367}, + {43.726273, 26.282043}, + {44.025650024414, 26.245651245117}, + {45.985336303711, 28.389358520508}, + {45.268478, 25.758133}, + {45.026321, 26.038284}, + {44.815292358398, 26.336288452148}, + {43.40217590332, 26.032791137695}, + {41.489181518555, 27.868881225586}, + {39.199905395508, 21.606674194336}, + {39.158706665039, 21.601181030273}, + {41.049728393555, 19.531631469727}, + {39.882431030273, 21.415786743164}, + {39.802780151367, 21.377334594727}, + {42.553482055664, 16.905899047852}, + {42.987442016602, 17.532119750977}, + {48.310317993164, 15.753707885742}, + {44.252243041992, 13.391647338867}, + {58.787155, 22.469788}, + {58.38752746582, 23.563613891602}, + {58.446578979492, 23.600692749023}, + {58.147201538086, 22.795944213867}, + {57.616425, 23.325348}, + {58.151321411133, 23.669357299805}, + {57.53059387207, 23.82453918457}, + {57.253189086914, 23.412551879883}, + {55.745316, 24.255295}, + {55.318222045898, 25.259628295898}, + {55.32096862793, 25.236282348633}, + {55.329103, 25.263854}, + {55.335667, 25.249199}, + {55.288022, 25.220033}, + {11.521224975586, 45.540390014648}, + {11.678542, 45.444966}, + {11.762924194336, 45.192947387695}, + {11.621475219727, 45.512924194336}, + {12.907425, 45.713425}, + {12.239914, 45.487188}, + {12.197571, 45.473099}, + {13.08342, 46.113052}, + {13.237944, 46.065202}, + {11.919479, 45.469666}, + {11.81510925293, 45.30143737793}, + {12.203750610352, 44.130020141602}, + {12.053953, 44.215799}, + {12.236709594727, 44.23713684082}, + {10.965042114258, 44.629898071289}, + {11.165542602539, 44.85237121582}, + {11.048608, 44.562076}, + {13.44615, 43.462884}, + {12.37587, 43.107605}, + {13.890151977539, 42.891311645508}, + {11.923599243164, 43.115158081055}, + {-49.307327270508, -16.67106628418}, + {-41.967079, -18.88451}, + {-43.429995, -21.697692}, + {-45.937161, -22.236817}, + {-49.216215, -25.419915}, + {-53.206100463867, -24.619674682617}, + {-48.49983215332, -27.554397583008}, + {-48.520947, -27.599373}, + {-52.332, -31.787567}, + {-56.054306030273, -15.615005493164}, + {-56.121597290039, -15.615005493164}, + {-72.668493, -7.623698}, + {-67.824107, -9.972097}, + {-63.876538, -8.747854}, + {-38.469097, -3.805609}, + {-59.998397827148, -3.0603790283203}, + {-60.02449, -3.13179}, + {-59.994277954102, -3.1249237060547}, + {73.025436401367, 25.995712280273}, + {73.453903198242, 25.163497924805}, + {74.768142700195, 29.181747436523}, + {75.180130004883, 26.672744750977}, + {75.900192, 26.83754}, + {71.181106567383, 26.465377807617}, + {73.032302856445, 26.279983520508}, + {76.8116, 26.567001}, + {73.742981, 24.589462}, + {76.21696472168, 26.869125366211}, + {73.720321655273, 24.632034301758}, + {75.751419067383, 26.825180053711}, + {77.581231, 12.935715}, + {77.601929, 12.994766}, + {77.837791, 12.984467}, + {77.304023, 12.741296}, + {74.949417114258, 12.873916625977}, + {77.513962, 12.941666}, + {77.677631, 13.000259}, + {77.665786743164, 12.981033325195}, + {75.707473754883, 16.838607788086}, + {77.230453491211, 18.044357299805}, + {76.855545043945, 15.895156860352}, + {76.940689086914, 15.15495300293}, + {-1.621628, 55.039444}, + {-2.215805, 53.768806}, + {-2.32186, 53.784007}, + {-2.211342, 53.833694}, + {-2.6428985595703, 53.774642944336}, + {-1.0814666748047, 50.801467895508}, + {-1.487961, 53.349451}, + {-1.476974, 53.376114}, + {-1.4481353759766, 53.447799682617}, + {-0.68733215332031, 52.317581176758}, + {-2.2240447998047, 52.19123840332}, + {-1.9823455810547, 52.415084838867}, + {-2.405777, 52.387619}, + {-1.907845, 52.413712}, + {-2.2089385986328, 52.198104858398}, + {-0.89653, 52.271805}, + {-1.6115570068359, 52.276382446289}, + {-0.909201, 52.261751}, + {-1.4385223388672, 52.892990112305}, + {-84.333877, 10.047837}, + {-84.274979, 10.073242}, + {-84.326248168945, 10.016098022461}, + {-82.941970825195, 9.8526763916016}, + {-84.17244, 9.979706}, + {-84.637161, 9.664261}, + {-84.025497, 9.928665}, + {-84.045672, 9.934769}, + {-84.09553527832, 9.9378204345703}, + {-84.055724, 9.932986}, + {-84.194412231445, 9.9433135986328}, + {-84.176559448242, 10.007858276367}, + {-84.237573, 9.999619}, + {-84.212348, 10.007903}, + {-84.179496, 9.988291}, + {-84.113388061523, 9.9735260009766}, + {-84.154194, 9.992164}, + {-84.087295532227, 9.9350738525391}, + {-1.097602, 44.744568}, + {4.7824859619141, 44.514541625977}, + {0.327045, 45.609978}, + {2.3064422607422, 48.87336730957}, + {2.295652, 48.873563}, + {2.324054, 48.874335}, + {2.340088, 48.881607}, + {2.2240447998047, 48.845901489258}, + {3.037857, 50.573227}, + {3.0686187744141, 50.585861206055}, + {0.357742, 46.641769}, + {3.2855987548828, 43.892440795898}, + {-1.3493, 48.916189}, + {0.21354675292969, 46.637649536133}, + {1.321449, 45.953064}, + {3.0425262451172, 46.288833618164}, + {1.22612, 45.804062}, + {4.180298, 47.58522}, + {2.336655, 48.847275}, + {2.328243, 48.833885}, + {2.400404, 48.829698}, + {123.19313049316, 13.633346557617}, + {124.620438, 10.992508}, + {122.07252502441, 6.9179534912109}, + {122.64656066895, 7.8119659423828}, + {122.88414001465, 7.6966094970703}, + {120.21858215332, 15.969314575195}, + {120.742811, 18.533932}, + {120.45616149902, 17.070693969727}, + {121.77864074707, 17.620010375977}, + {121.7896270752, 17.533493041992}, + {121.0082244873, 16.256332397461}, + {125.72959899902, 9.5711517333984}, + {125.1830291748, 6.1159515380859}, + {125.10749816895, 8.8240814208984}, + {125.564346, 9.621964}, + {120.53031921387, 15.17692565918}, + {124.813614, 8.335876}, + {121.05766296387, 14.656448364258}, + {121.00273132324, 14.58366394043}, + {121.00959777832, 14.567184448242}, + {121.92420959473, 11.963424682617}, + {123.89488220215, 10.309982299805}, + {121.92695617676, 11.956558227539}, + {139.524307, 36.096268}, + {139.4734954834, 35.783157348633}, + {139.888229, 35.663681}, + {139.86248, 35.864868}, + {139.854637, 35.70076}, + {139.701004, 35.546951}, + {139.70420837402, 35.732345581055}, + {139.61906433105, 35.729598999023}, + {139.66163635254, 35.676040649414}, + {139.71656799316, 35.644454956055}, + {139.70283508301, 35.658187866211}, + {136.464615, 34.725266}, + {136.52503967285, 35.091018676758}, + {136.809998, 35.236588}, + {137.00706481934, 34.982528686523}, + {138.439667, 35.001964}, + {136.66127, 35.027023}, + {137.14714050293, 34.937210083008}, + {138.936882, 35.002441}, + {138.854827, 35.37941}, + {136.842613, 34.902878}, + {138.977394, 35.350227}, + {137.165337, 35.025787}, + {136.906924, 35.237906}, + {106.73561096191, -6.2230682373047}, + {106.91276550293, -6.2436676025391}, + {108.54011535645, -7.3615264892578}, + {106.898483, -6.408463}, + {112.78163, -7.312352}, + {113.82179260254, -7.9204559326172}, + {107.61491, -6.886172}, + {113.70575, -8.187561}, + {107.60215759277, -6.9110870361328}, + {109.38331604004, -6.9179534912109}, + {108.17070007324, -6.5183258056641}, + {109.13475036621, -6.8630218505859}, + {110.52314758301, -6.9632720947266}, + {109.674797, -6.896667}, + {108.838119, -6.901646}, + {109.61128234863, -6.9042205810547}, + {110.40916442871, -6.9852447509766}, + {110.819435, -7.56443}, + {110.86235046387, -7.0580291748047}, + {110.37529, -7.878189}, + {110.01640319824, -7.8174591064453}, + {110.62202453613, -7.5675201416016}, + {112.770479, -7.336718}, + {112.748468, -7.276186}, + {32.457046508789, -25.96549987793}, + {33.472595, -19.116211}, + {32.619094848633, -25.884475708008}, + {47.424545288086, -19.390182495117}, + {47.524796, -18.908157}, + {55.460358, -20.885696}, + {55.489883422852, -20.895309448242}, + {55.472946, -20.918655}, + {55.463790893555, -21.336135864258}, + {55.473403930664, -20.898056030273}, + {55.511232, -21.339132}, + {55.652161, -21.378251}, + {55.334244, -20.929198}, + {31.063328, -18.006592}, + {31.682510375977, -21.040878295898}, + {28.15315246582, -20.197677612305}, + {-8.5549163818359, 42.878952026367}, + {-8.2088470458984, 43.454360961914}, + {-7.144088, 43.537675}, + {-7.506294, 42.991333}, + {-7.880356, 42.335953}, + {-8.433692, 43.000051}, + {-8.617695, 42.804598}, + {-1.0842132568359, 38.017501831055}, + {-1.195622, 38.000078}, + {-0.768356, 37.618389}, + {-1.411743, 37.850304}, + {-1.2984466552734, 37.919998168945}, + {-1.63147, 38.062134}, + {-2.0839691162109, 42.229385375977}, + {-1.671639, 42.495117}, + {-1.655655, 43.133011}, + {-1.701965, 42.848511}, + {-3.023788, 43.312304}, + {-3.081596, 43.319686}, + {-2.9079437255859, 43.290939331055}, + {-2.6662445068359, 42.851486206055}, + {-2.5124359130859, 43.025894165039}, + {-82.872148, 42.643175}, + {-82.772796, 42.707302}, + {-83.08923, 42.51091}, + {-83.093928, 42.324061}, + {-82.939221, 42.375157}, + {-84.528121948242, 42.648239135742}, + {-85.671134, 42.882519}, + {-83.998489, 43.424149}, + {-86.205689, 43.183694}, + {-84.013137817383, 43.746871948242}, + {-86.128574, 42.876662}, + {-83.475723, 42.477493}, + {-85.48942565918, 42.332382202148}, + {-83.350074, 42.3983}, + {-83.715739, 43.066819}, + {-83.333358764648, 42.825393676758}, + {-84.033737182617, 42.219772338867}, + {-83.958206176758, 42.436752319336}, + {-87.59963, 37.818144}, + {-87.885775, 42.969665}, + {-88.353124, 43.073967}, + {29.796981811523, 60.196151733398}, + {30.44792175293, 59.685287475586}, + {29.353408813477, 60.171432495117}, + {61.447906, 55.114975}, + {60.087661743164, 54.973526000977}, + {31.285629272461, 58.524856567383}, + {37.552643, 55.723343}, + {37.604141235352, 55.605239868164}, + {37.841720581055, 55.73844909668}, + {37.660446166992, 55.704116821289}, + {37.599335, 55.753555}, + {37.815628051758, 55.712356567383}, + {30.031814575195, 59.998397827148}, + {30.229568481445, 59.83772277832}, + {30.318832397461, 59.976425170898}, + {30.081253051758, 59.995651245117}, + {56.150436401367, 57.965927124023}, + {56.129494, 58.051415}, + {59.962692260742, 56.90299987793}, + {55.951309204102, 57.89176940918}, + {61.379928588867, 55.180892944336}, + {61.283798217773, 55.17951965332}, + {5.7973480224609, 53.184127807617}, + {5.4883575439453, 53.071517944336}, + {4.8882293701172, 52.335433959961}, + {4.8319244384766, 52.306594848633}, + {4.8209381103516, 51.562271118164}, + {5.2590179443359, 52.05940246582}, + {4.8896026611328, 52.36701965332}, + {6.5828704833984, 53.222579956055}, + {6.6487884521484, 52.605972290039}, + {6.12157, 52.242674}, + {6.4153289794922, 52.159652709961}, + {6.215515, 51.948166}, + {6.6295623779297, 52.364273071289}, + {5.964597, 52.167193}, + {6.019706, 52.192921}, + {5.9772491455078, 52.193984985352}, + {5.697028, 52.342754}, + {114.28047180176, 22.341384887695}, + {114.16511535645, 22.445755004883}, + {114.16786193848, 22.447128295898}, + {114.188919, 22.324905}, + {114.20906066895, 22.388076782227}, + {114.17060852051, 22.320785522461}, + {114.16648864746, 22.341384887695}, + {114.16923522949, 22.298812866211}, + {114.15962219238, 22.304306030273}, + {114.15824890137, 22.265853881836}, + {114.16923522949, 22.302932739258}, + {114.213352, 22.327137}, + {114.26536560059, 22.337265014648}, + {114.04838562012, 22.480087280273}, + {114.188038, 22.314285}, + {113.928222, 22.304993}, + {114.172069, 22.299924}, + {114.177171, 22.33522}, + {114.16923522949, 22.280960083008}, + {114.20631408691, 22.389450073242}, + {114.17335510254, 22.279586791992}, + {33.658676147461, 59.624862670898}, + {30.222702026367, 59.834976196289}, + {29.915909, 60.033829}, + {30.320206, 59.978779}, + {30.285873413086, 59.94758605957}, + {30.335973, 60.005562}, + {30.693743, 59.887626}, + {30.33989, 59.922867}, + {30.449295, 59.908447}, + {30.441513, 59.88533}, + {30.338058, 59.714813}, + {30.598984, 59.780731}, + {30.861512, 59.525757}, + {28.122940063477, 58.347702026367}, + {50.313994, 53.193065}, + {50.246658325195, 53.254165649414}, + {49.308700561523, 53.513717651367}, + {41.914901733398, 44.621658325195}, + {41.960907, 45.118103}, + {36.034469604492, 54.650802612305}, + {144.8787689209, -37.826614379883}, + {144.90348815918, -37.759323120117}, + {144.9584197998, -37.795028686523}, + {145.15617, -36.917954}, + {145.2303314209, -38.463821411133}, + {150.52436828613, -23.335647583008}, + {145.06897, -37.2052}, + {152.99354553223, -27.489852905273}, + {151.73011779785, -27.281112670898}, + {153.03886413574, -27.498092651367}, + {153.01551818848, -27.465133666992}, + {138.66188049316, -34.773788452148}, + {138.49296569824, -34.917984008789}, + {115.79795837402, -31.777267456055}, + {115.88310241699, -31.98600769043}, + {137.92272, 36.301877}, + {139.47898864746, 38.219375610352}, + {139.37324523926, 38.00651550293}, + {138.91456604004, 37.845840454102}, + {138.922556, 37.798899}, + {138.94477844238, 37.863693237305}, + {138.776321, 37.232132}, + {138.996964, 37.887567}, + {139.04090881348, 37.926864624023}, + {140.742416, 36.868744}, + {140.694383, 36.659285}, + {140.251465, 36.097641}, + {139.984818, 36.204758}, + {140.04066467285, 36.08528137207}, + {140.26588439941, 36.206130981445}, + {140.174561, 36.032616}, + {140.06813049316, 35.938339233398}, + {140.3702545166, 36.218490600586}, + {140.57762145996, 36.317367553711}, + {140.41831970215, 36.100387573242}, + {139.8950958252, 36.564559936523}, + {139.91569519043, 36.550827026367}, + {140.104294, 36.545334}, + {139.99122619629, 36.693649291992}, + {14.49577331543, 46.059494018555}, + {14.366714, 46.247322}, + {13.604311, 45.504684}, + {15.376052856445, 45.989456176758}, + {15.594406, 46.542206}, + {13.886032104492, 45.801315307617}, + {15.26001, 46.234131}, + {14.968838, 45.914647}, + {13.593521118164, 45.909805297852}, + {14.502639770508, 46.04850769043}, + {14.635848999023, 46.146011352539}, + {15.271683, 46.231613}, + {14.758759, 45.951004}, + {-76.961289, 39.752625}, + {-76.75666809082, 39.959335327148}, + {-75.186399, 39.951693}, + {-77.216720581055, 40.595169067383}, + {-75.090866088867, 40.04997253418}, + {-75.101852416992, 39.979934692383}, + {-74.985593, 40.075483}, + {-75.156296, 39.946673}, + {-75.127944946289, 39.859085083008}, + {-75.212024, 39.970869}, + {-75.01584, 39.879095}, + {-74.569016, 39.279752}, + {-74.937057495117, 39.816513061523}, + {-74.757254, 39.697625}, + {-75.072866, 39.872818}, + {-75.002975463867, 39.848098754883}, + {-74.311352, 40.018278}, + {-74.871231, 39.841324}, + {-74.12956237793, 40.117263793945}, + {-74.188613891602, 39.845352172852}, + {-74.755783081055, 40.195541381836}, + {-74.680252075195, 40.349349975586}, + {-75.137215, 40.155581}, + {-75.274617, 40.089618}, + {-75.195522, 40.109596}, + {-48.462753295898, -1.1473846435547}, + {-38.779678344727, -7.3134613037109}, + {-46.902283, -23.46302}, + {-34.891205, -8.004227}, + {-34.83283996582, -7.7666473388672}, + {-34.904829, -7.869159}, + {-46.752066, -5.558348}, + {-35.460433959961, -8.2418060302734}, + {-43.365097045898, -22.941513061523}, + {-49.539276, -25.682956}, + {-46.832656860352, -21.764602661133}, + {-46.724095, -23.642542}, + {-46.555252075195, -23.684463500977}, + {-46.703567504883, -23.740768432617}, + {-41.044235229492, -16.443099975586}, + {-43.218629, -22.897132}, + {-43.578214, -22.720963}, + {-63.906278, -8.75426}, + {-48.468246459961, -16.742477416992}, + {23.457870483398, 37.972183227539}, + {23.776473999023, 37.819747924805}, + {23.754501342773, 37.915878295898}, + {23.765487670898, 37.847213745117}, + {23.640518188477, 37.950210571289}, + {23.453750610352, 37.973556518555}, + {23.074722290039, 41.225509643555}, + {23.220095, 37.974734}, + {23.423538208008, 40.400161743164}, + {24.811935424805, 35.051193237305}, + {23.591079711914, 38.400650024414}, + {25.131912231445, 35.33821105957}, + {23.20930480957, 38.341598510742}, + {24.004440307617, 35.507125854492}, + {21.277084350586, 37.900772094727}, + {24.528957, 35.368181}, + {21.997474, 38.302362}, + {22.372970581055, 37.514877319336}, + {28.199844360352, 36.331100463867}, + {26.429672241211, 39.246597290039}, + {12.616862, 41.952105}, + {12.529220581055, 42.011032104492}, + {12.730407, 41.930008}, + {9.297523, 39.26033}, + {9.076767, 39.456907}, + {9.484787, 40.984268}, + {8.379106, 40.705731}, + {12.858810424805, 41.564712524414}, + {12.49626159668, 41.902542114258}, + {12.491531, 41.902433}, + {12.732813, 41.953698}, + {12.851548, 41.789147}, + {12.728348, 41.885376}, + {12.571023, 41.924825}, + {12.560635, 41.934986}, + {12.536122, 41.934808}, + {12.356644, 41.745872}, + {12.353738, 41.750286}, + {12.322442, 41.712243}, + {12.522629, 41.689133}, + {-35.770797729492, -9.5793914794922}, + {-34.84245300293, -7.1555328369141}, + {-34.834113, -7.093156}, + {-34.816091, -7.139545}, + {-38.537979125977, -3.7181854248047}, + {-39.408645629883, -7.2365570068359}, + {-45.173721313477, -10.437698364258}, + {-39.314041, -7.250443}, + {-34.907146, -8.031833}, + {-43.452763, -21.620546}, + {-35.739789, -9.640239}, + {-35.097885131836, -6.1420440673828}, + {-35.265426635742, -5.7602691650391}, + {-38.447341918945, -3.7566375732422}, + {-48.878860473633, -1.7255401611328}, + {-43.123397827148, -22.904434204102}, + {-49.947280883789, -4.2482757568359}, + {-37.180861, -5.086816}, + {-44.094314575195, -19.811782836914}, + {-36.049575805664, -8.3159637451172}, + {-97.430191040039, 20.579452514648}, + {-96.808090209961, 19.53987121582}, + {-92.52067565918, 16.308517456055}, + {-102.659683, 20.932938}, + {-99.204483032227, 20.057601928711}, + {-104.32136535645, 19.119644165039}, + {-99.598618, 19.401169}, + {-100.291306, 24.649887}, + {-103.213394, 20.283371}, + {-103.285127, 20.644705}, + {-103.36967468262, 20.652236938477}, + {-101.4814, 21.011124}, + {-102.15293884277, 21.404800415039}, + {-101.45118713379, 20.92414855957}, + {-98.786316, 20.060349}, + {-100.48027038574, 20.679702758789}, + {-100.30586242676, 20.674209594727}, + {-100.44319152832, 20.828018188477}, + {-100.106735, 20.475082}, + {-99.205856323242, 19.832382202148}, + {-99.164657592773, 19.381942749023}, + {12.809371948242, 55.893630981445}, + {12.963180541992, 56.808242797852}, + {11.995010375977, 57.685775756836}, + {12.829971313477, 56.668167114258}, + {12.207870483398, 57.334213256836}, + {11.986770629883, 57.687149047852}, + {12.356014, 57.809372}, + {12.152252, 57.743454}, + {13.00163269043, 55.547561645508}, + {13.029098510742, 55.605239868164}, + {13.00163269043, 55.603866577148}, + {13.222908, 55.699634}, + {17.603530883789, 59.874801635742}, + {13.217456, 55.715826}, + {17.647084, 59.864012}, + {17.7285, 60.009727}, + {17.090195, 59.648209}, + {14.681854, 60.985794}, + {15.636978149414, 60.608139038086}, + {17.757339477539, 60.214004516602}, + {15.389786, 58.32518}, + {15.219497680664, 58.100509643555}, + {15.621871948242, 58.410873413086}, + {-97.340927124023, 32.735824584961}, + {-97.106094360352, 33.189010620117}, + {-100.3360748291, 35.226974487305}, + {-106.52275085449, 32.010726928711}, + {-106.000058, 32.853365}, + {-101.903968, 35.157818}, + {-102.321854, 31.874977}, + {-99.871537, 32.264845}, + {-101.869611, 33.581518}, + {-100.234945, 32.109867}, + {-101.95676, 33.583357}, + {-106.18721, 31.669693}, + {-96.533432006836, 30.419082641602}, + {-106.440353, 31.917539}, + {-96.108518, 28.950975}, + {-97.199478149414, 29.880752563477}, + {-96.696853637695, 28.938674926758}, + {-97.748206, 30.254861}, + {-97.743301391602, 30.283126831055}, + {-97.732514, 30.28461}, + {1.1446380615234, 52.61833190918}, + {-3.961946, 50.868073}, + {-3.4229278564453, 51.463394165039}, + {-3.5808563232422, 55.903244018555}, + {-3.955765, 55.746189}, + {0.004003, 51.859018}, + {0.40580749511719, 51.578750610352}, + {-2.8997039794922, 53.803482055664}, + {-2.4849700927734, 52.496109008789}, + {-1.2819671630859, 51.670761108398}, + {-4.1287994384766, 55.930709838867}, + {-1.267777, 54.561996}, + {-4.2675018310547, 55.857925415039}, + {-6.0678863525391, 54.709854125977}, + {-1.2929534912109, 51.788864135742}, + {-3.9640045166016, 55.742568969727}, + {-3.9296722412109, 55.835952758789}, + {-1.8724822998047, 50.732803344727}, + {-0.198441, 53.098984}, + {-3.0617523193359, 51.018447875977}, + {1.1501312255859, 51.790237426758}, + {0.072097778320312, 50.874252319336}, + {-1.657905, 53.343086}, + {28.033676147461, -26.072616577148}, + {27.989883, -26.055728}, + {27.993851, -26.011505}, + {28.225937, -26.068497}, + {28.201217651367, -26.14128112793}, + {28.000717163086, -26.100082397461}, + {28.017196655273, -26.094589233398}, + {28.133926391602, -25.924301147461}, + {28.146286, -25.941696}, + {18.969955444336, -33.43620300293}, + {18.999481, -33.427963}, + {18.70343, -33.456933}, + {18.968032, -33.715248}, + {18.533496, -33.876731}, + {18.545609, -33.880463}, + {18.487762, -33.795985}, + {18.493698, -33.942947}, + {18.544235229492, -33.938827514648}, + {31.242224, 30.066245}, + {30.766525268555, 28.73405456543}, + {32.26203918457, 31.256790161133}, + {31.604232788086, 26.698837280273}, + {31.197739, 30.000229}, + {30.804977416992, 28.497848510742}, + {32.038192749023, 31.358413696289}, + {29.214706420898, 30.837936401367}, + {29.997482299805, 31.162033081055}, + {33.680648803711, 31.113967895508}, + {31.28288269043, 29.975509643555}, + {29.915832, 31.196594}, + {31.45886, 30.080664}, + {31.237564086914, 30.964279174805}, + {31.384506225586, 31.023330688477}, + {31.37077331543, 31.039810180664}, + {32.343063354492, 30.081253051758}, + {29.725570678711, 31.091995239258}, + {29.949417114258, 31.232070922852}, + {29.991989135742, 31.255416870117}, + {29.927444458008, 31.20735168457}, + {31.694869995117, 26.553268432617}, + {28.951034545898, 41.001663208008}, + {28.913955688477, 41.071701049805}, + {28.889236450195, 41.077194213867}, + {29.562149047852, 41.163711547852}, + {29.821701049805, 41.13899230957}, + {28.901596069336, 41.075820922852}, + {28.968887329102, 41.00715637207}, + {28.981246948242, 41.026382446289}, + {28.837051391602, 40.982437133789}, + {28.880996704102, 41.041488647461}, + {28.897905, 41.047286}, + {28.93180847168, 41.015396118164}, + {28.83430480957, 41.031875610352}, + {28.929061889648, 41.014022827148}, + {28.822433, 41.063094}, + {29.084243774414, 41.008529663086}, + {28.82194519043, 41.063461303711}, + {28.864517211914, 40.975570678711}, + {29.316329956055, 40.939865112305}, + {28.804092407227, 41.026382446289}, + {29.309464, 40.892143}, + {29.181747, 41.017113}, + {29.213333129883, 40.96321105957}, + {29.220605, 40.98006}, + {28.93180847168, 41.034622192383}, + {5.7836151123047, 49.901962280273}, + {6.1159515380859, 49.724807739258}, + {6.314404, 49.525506}, + {6.1763763427734, 49.58610534668}, + {5.9539031982422, 50.062637329102}, + {6.054257, 49.623298}, + {6.0939788818359, 49.624557495117}, + {6.1283111572266, 49.612197875977}, + {121.027966, 14.564438}, + {121.039712, 14.562868}, + {121.076202, 14.517746}, + {124.024658, 10.604553}, + {121.085815, 14.553223}, + {123.88664245605, 10.315475463867}, + {123.84544372559, 10.250930786133}, + {122.92808532715, 11.43196105957}, + {121.173706, 13.331223}, + {121.697615, 13.902529}, + {120.61203, 15.655518}, + {120.934753, 14.853516}, + {120.59074401855, 15.131607055664}, + {119.4165802002, 10.971908569336}, + {120.03456115723, 15.289535522461}, + {121.088536, 14.327475}, + {120.941761, 14.32177}, + {125.547295, 11.125383}, + {122.5806427002, 7.7474212646484}, + {123.6009979248, 8.0536651611328}, + {120.485687, 16.272812}, + {11.341324, 43.766098}, + {9.34449, 44.311363}, + {10.060043334961, 44.03938293457}, + {10.522749, 43.655965}, + {10.544815063477, 43.115158081055}, + {7.7721405029297, 43.834762573242}, + {8.2033538818359, 44.051742553711}, + {11.78627, 43.203049}, + {11.006240844727, 42.729263305664}, + {10.757675170898, 42.922897338867}, + {11.364669799805, 44.113540649414}, + {11.235580444336, 43.788070678711}, + {9.4997406005859, 46.137771606445}, + {9.1742706298828, 45.426406860352}, + {9.1069793701172, 45.518417358398}, + {9.137192, 45.511747}, + {-71.976242, -39.278732}, + {-71.392593383789, -33.037948608398}, + {-68.926162719727, -22.453994750977}, + {-71.275864, -35.04727}, + {-71.462631225586, -35.401382446289}, + {-70.659255981445, -33.197250366211}, + {-70.747602, -33.261095}, + {-70.778536, -32.745634}, + {-70.623375, -33.506938}, + {-70.64826965332, -33.433456420898}, + {-70.566788, -33.403702}, + {-70.576858520508, -33.400497436523}, + {-70.587845, -33.537827}, + {-70.67748, -33.479556}, + {-70.659255981445, -33.444442749023}, + {-70.741653442383, -33.504867553711}, + {-70.718307495117, -33.355178833008}, + {-70.969619750977, -33.455429077148}, + {-70.67985534668, -33.500747680664}, + {67.05436706543, 24.829788208008}, + {67.046127319336, 24.798202514648}, + {67.123031616211, 24.827041625977}, + {73.780746459961, 33.750686645508}, + {73.499221801758, 34.659805297852}, + {71.911697387695, 34.306869506836}, + {66.662979125977, 25.396957397461}, + {72.367630004883, 34.02946472168}, + {72.129364, 30.588684}, + {72.462387084961, 30.954666137695}, + {72.646408081055, 32.017593383789}, + {71.674118041992, 29.395980834961}, + {74.313583374023, 31.479263305664}, + {74.290237426758, 31.547927856445}, + {68.448257446289, 28.279495239258}, + {68.129654, 26.28685}, + {68.659744262695, 25.744400024414}, + {66.840133666992, 29.835433959961}, + {71.75651550293, 34.199752807617}, + {73.044662475586, 33.591384887695}, + {72.660140991211, 33.790512084961}, + {73.000717163086, 30.625076293945}, + {67.19101, 24.904633}, + {72.006454467773, 29.170761108398}, + {139.539413, 35.690804}, + {139.58885192871, 35.726852416992}, + {139.67948913574, 35.718612670898}, + {139.57099914551, 35.703506469727}, + {139.68772888184, 35.715866088867}, + {135.476532, 34.692764}, + {139.66575622559, 35.698013305664}, + {135.48683166504, 34.70100402832}, + {135.48545837402, 34.684524536133}, + {135.49507141113, 34.668045043945}, + {135.49507141113, 34.698257446289}, + {135.50605773926, 34.691390991211}, + {135.528259, 34.682007}, + {135.5101776123, 34.696884155273}, + {135.5005645752, 34.691390991211}, + {135.59669494629, 34.582901000977}, + {135.483398, 34.466171}, + {135.47996520996, 34.610366821289}, + {135.51429748535, 34.608993530273}, + {135.498734, 34.733963}, + {135.671768, 34.890518}, + {135.62141418457, 34.824600219727}, + {135.6502532959, 34.82048034668}, + {135.325699, 34.738083}, + {135.343323, 34.745636}, + {45.125682, 54.171524}, + {87.112655639648, 53.670272827148}, + {44.666976928711, 42.968215942383}, + {44.655938, 43.738004}, + {131.698369, 44.168016}, + {132.0824432373, 43.168716430664}, + {93.539429, 56.248856}, + {92.789921, 55.996143}, + {36.972427368164, 56.19026184082}, + {55.92453, 54.61647}, + {60.87043762207, 56.290512084961}, + {58.404006958008, 53.966903686523}, + {85.073318481445, 56.500625610352}, + {83.917043, 55.152751}, + {83.179550170898, 54.988632202148}, + {76.255416870117, 55.227584838867}, + {82.80876159668, 54.985885620117}, + {55.776901245117, 24.062118530273}, + {55.275650024414, 25.228042602539}, + {55.309982299805, 25.092086791992}, + {55.314102, 25.05867}, + {55.405655, 25.218887}, + {55.233765, 25.120239}, + {55.396499633789, 25.31867980957}, + {55.23307800293, 25.127792358398}, + {56.072159, 25.981293}, + {55.406112670898, 25.374984741211}, + {56.203994750977, 24.805068969727}, + {55.014724731445, 24.931411743164}, + {55.32096862793, 25.219802856445}, + {34.780654907227, 32.072525024414}, + {34.791641235352, 32.143936157227}, + {34.497756958008, 31.523208618164}, + {34.880447, 32.076187}, + {35.000381469727, 32.42546081543}, + {34.748383, 32.020683}, + {34.924850463867, 32.068405151367}, + {-46.593704223633, -23.63639831543}, + {-46.667077, -23.61521}, + {-46.607666, -23.649216}, + {-46.868362426758, -23.488082885742}, + {-46.529159545898, -23.585586547852}, + {-46.530227, -23.546301}, + {-46.703567504883, -23.775100708008}, + {-46.445388793945, -23.510055541992}, + {-46.449508666992, -23.540267944336}, + {-46.62529, -23.549973}, + {-46.652755737305, -23.51692199707}, + {-46.615676879883, -23.536148071289}, + {-46.67610168457, -23.608932495117}, + {-46.736526489258, -23.622665405273}, + {-46.471896, -23.720506}, + {-46.61087, -23.720856}, + {-46.413714, -23.667619}, + {-46.709386, -23.844346}, + {-46.482467651367, -23.489456176758}, + {37.473129, 55.864792}, + {37.518997192383, 55.776901245117}, + {37.401493, 55.641209}, + {37.534103393555, 55.752182006836}, + {37.56706237793, 55.76042175293}, + {37.506637573242, 55.84831237793}, + {37.47917175293, 55.621719360352}, + {37.511215, 55.660629}, + {37.394027709961, 55.824966430664}, + {36.736221313477, 55.71647644043}, + {47.11555480957, 42.80891418457}, + {27.201461791992, 42.712783813477}, + {27.835922241211, 42.188186645508}, + {23.358993530273, 42.660598754883}, + {23.217544555664, 42.650985717773}, + {23.298568725586, 42.668838500977}, + {23.371353149414, 42.685317993164}, + {23.449301, 42.698423}, + {23.323287963867, 42.68669128418}, + {23.370173, 42.666341}, + {23.934902, 42.346615}, + {23.5952, 42.657166}, + {24.182968139648, 43.242874145508}, + {25.624923706055, 42.078323364258}, + {24.752541, 42.122183}, + {24.774858, 42.13051}, + {25.367089, 41.675949}, + {24.968216, 41.553452}, + {24.695205688477, 41.651229858398}, + {24.684219360352, 42.186813354492}, + {27.929306030273, 43.211288452148}, + {27.073388, 43.325574}, + {27.044122, 43.031731}, + {26.621932983398, 42.710037231445}, + {7.2187042236328, 50.507583618164}, + {-1.249924, 53.033981}, + {-1.547851, 53.799971}, + {-1.5868377685547, 55.038070678711}, + {-1.5030670166016, 52.928695678711}, + {1.2476348876953, 52.627944946289}, + {1.13127, 52.035639}, + {-1.514511, 54.642105}, + {-3.0603790283203, 56.187515258789}, + {-2.4739837646484, 53.252792358398}, + {1.1006927490234, 52.66227722168}, + {-0.46485900878906, 51.610336303711}, + {1.7406463623047, 52.478256225586}, + {-0.069351196289062, 51.596603393555}, + {0.37284851074219, 51.858901977539}, + {-1.6486358642578, 51.43180847168}, + {0.79582214355469, 52.33268737793}, + {-49.018341, -11.750212}, + {-49.276297, -16.696534}, + {-49.294203, -16.666703}, + {-49.482631, -16.653957}, + {-47.841568, -15.681534}, + {-47.967682, -15.834046}, + {-49.307443, -25.446295}, + {-54.461954, -25.468732}, + {-54.563905, -25.563822}, + {-48.556641, -27.603974}, + {-50.242691, -27.304137}, + {-51.17313, -30.066798}, + {-54.788237, -22.288948}, + {-47.883224487305, -15.788040161133}, + {-54.610899, -20.495526}, + {-50.713721, -29.514148}, + {-49.457695, -24.111715}, + {-48.63884, -26.818175}, + {-58.385188, -34.600434}, + {-58.467178344727, -34.610366821289}, + {-58.477191, -34.630625}, + {-58.511123657227, -34.668045043945}, + {-58.440714, -34.648643}, + {-58.51181, -34.72847}, + {-64.25422668457, -31.374893188477}, + {-64.19792175293, -31.443557739258}, + {-64.186249, -31.420212}, + {-64.177322387695, -31.398239135742}, + {-64.361343383789, -30.410842895508}, + {-64.2659, -31.315155}, + {-64.233627319336, -31.303482055664}, + {32.472152709961, 37.910385131836}, + {32.476272583008, 37.891159057617}, + {32.42546081543, 37.87467956543}, + {28.615951538086, 40.997543334961}, + {28.530807495117, 41.011276245117}, + {28.666763305664, 41.003036499023}, + {28.782119750977, 40.99479675293}, + {28.845291137695, 40.989303588867}, + {28.824692, 40.980789}, + {28.841171264648, 40.997543334961}, + {39.739151, 41.00029}, + {39.729995727539, 40.997543334961}, + {27.26188659668, 37.856826782227}, + {28.977814, 41.031876}, + {28.977127075195, 41.035995483398}, + {28.985366821289, 41.045608520508}, + {28.967514038086, 41.01676940918}, + {28.859024047852, 41.004409790039}, + {28.83430480957, 41.034622192383}, + {28.835678100586, 41.034622192383}, + {28.904114, 41.041718}, + {28.904342651367, 41.040115356445}, + {28.996353149414, 41.059341430664}, + {29.012832641602, 41.066207885742}, + {54.607956, 24.409836}, + {54.440689086914, 24.420547485352}, + {54.356918334961, 24.464492797852}, + {55.132147, 25.067816}, + {55.26363, 25.190956}, + {55.292587, 25.204239}, + {55.418887, 25.254306}, + {55.397719, 25.256275}, + {56.356155, 25.536209}, + {55.489883422852, 25.267868041992}, + {55.425338745117, 25.282974243164}, + {35.003607, 31.142703}, + {35.30837, 32.592984}, + {34.835473, 32.13918}, + {34.987713, 32.830918}, + {34.736583, 32.024165}, + {34.873117, 32.311426}, + {34.832506, 32.115283}, + {34.545565, 31.476088}, + {34.835586547852, 32.242813110352}, + {34.787521362305, 31.241683959961}, + {112.59956359863, -7.9245758056641}, + {112.61192321777, -7.9671478271484}, + {112.589264, -7.930756}, + {112.166208, -8.103094}, + {112.46635437012, -7.4329376220703}, + {112.62977600098, -7.5579071044922}, + {112.417934, -7.519082}, + {112.714453, -7.332265}, + {112.67372131348, -7.4507904052734}, + {112.69569396973, -7.3931121826172}, + {112.71354675293, -7.4576568603516}, + {112.76710510254, -7.3876190185547}, + {112.748566, -7.299042}, + {112.73414611816, -7.3189544677734}, + {112.75611877441, -7.2969818115234}, + {112.73826599121, -7.3107147216797}, + {112.74375915527, -7.2640228271484}, + {112.75062561035, -7.2626495361328}, + {112.73414611816, -7.2599029541016}, + {112.66136169434, -7.9808807373047}, + {112.64488220215, -8.1415557861328}, + {112.66960144043, -7.8888702392578}, + {112.69432067871, -7.9616546630859}, + {115.7691192627, 29.104843139648}, + {117.35939025879, 39.875564575195}, + {117.198715, 39.131927}, + {117.17399597168, 39.113388061523}, + {117.75215148926, 39.011764526367}, + {117.24678039551, 39.08317565918}, + {113.23539733887, 23.779220581055}, + {113.15711975098, 23.02116394043}, + {114.09370422363, 22.768478393555}, + {113.67073059082, 22.786331176758}, + {114.79682922363, 22.861862182617}, + {114.34501647949, 23.006057739258}, + {116.00532531738, 23.172225952148}, + {113.04725646973, 22.514419555664}, + {114.054308, 22.531929}, + {114.107437, 22.542801}, + {113.853379, 22.552872}, + {114.1527557373, 22.62565612793}, + {113.93165588379, 22.55012512207}, + {114.072189, 22.744675}, + {111.91429138184, 21.899185180664}, + {110.257416, 21.378708}, + {-6.283493, 53.383942}, + {-6.28418, 53.37862}, + {-6.2409210205078, 53.28987121582}, + {-6.2450408935547, 53.291244506836}, + {-6.2285614013672, 53.292617797852}, + {-6.395598, 53.399569}, + {-6.3576507568359, 53.401107788086}, + {-7.1816253662109, 52.644424438477}, + {-7.1308135986328, 52.25715637207}, + {-6.0816192626953, 53.100357055664}, + {-6.6803741455078, 53.265151977539}, + {-9.0630340576172, 53.266525268555}, + {-9.069605, 53.280231}, + {-7.053535, 53.128162}, + {-8.526289, 51.932637}, + {-8.263474, 52.13768}, + {-8.618431, 51.885338}, + {-6.2107086181641, 53.383255004883}, + {-6.2889862060547, 53.291244506836}, + {-6.15931, 53.197274}, + {-6.306324, 53.339481}, + {-6.440234, 53.290739}, + {-6.2422943115234, 53.347549438477}, + {10.92247, 44.674187}, + {10.899536, 44.670959}, + {9.734753, 45.064807}, + {10.656051635742, 44.690322875977}, + {10.62858581543, 44.713668823242}, + {11.504745483398, 44.535140991211}, + {11.269912719727, 44.487075805664}, + {12.262802124023, 44.256362915039}, + {10.272903442383, 44.856491088867}, + {13.469617, 43.609151}, + {13.514829, 43.534762}, + {13.723695, 43.292674}, + {7.7748870849609, 45.043258666992}, + {7.4837493896484, 45.271224975586}, + {7.568893, 45.057188}, + {7.505265, 44.62983}, + {7.582409, 45.003434}, + {7.8380584716797, 45.00617980957}, + {9.1385650634766, 45.490951538086}, + {9.129243, 45.496383}, + {8.973625, 45.651555}, + {9.227875, 45.624207}, + {103.756485, 1.427765}, + {103.854927, 1.315956}, + {103.77479553223, 1.3259124755859}, + {103.722687, 1.350555}, + {103.93272399902, 1.3245391845703}, + {103.911781, 1.42067}, + {103.894272, 1.385788}, + {103.857923, 1.381975}, + {103.759838, 1.345799}, + {103.7459564209, 1.3465118408203}, + {103.83522033691, 1.3039398193359}, + {103.878413, 1.307927}, + {103.745098, 1.384675}, + {103.81462097168, 1.2586212158203}, + {103.91655, 1.321033}, + {103.91566, 1.302981}, + {103.879567, 1.359185}, + {103.8394, 1.434295}, + {100.61485290527, 13.756942749023}, + {100.70960998535, 14.050827026367}, + {99.748884, 13.968413}, + {100.736705, 14.041293}, + {100.272483, 14.341987}, + {100.8016204834, 14.274673461914}, + {100.519343, 13.754818}, + {100.57090759277, 13.865432739258}, + {100.54481506348, 13.898391723633}, + {99.976959, 13.804321}, + {100.074692, 13.811874}, + {99.808166, 13.439583}, + {100.54344177246, 14.140090942383}, + {100.495214, 14.557486}, + {100.72746276855, 14.62760925293}, + {100.640675, 13.883098}, + {100.64918518066, 13.807754516602}, + {100.65330505371, 13.817367553711}, + {100.5736541748, 14.013748168945}, + {100.46104431152, 13.888778686523}, + {100.465276, 13.92368}, + {100.615655, 14.110306}, + {100.608954, 14.06809}, + {30.245591, 60.117416}, + {32.068405151367, 59.580917358398}, + {31.376266479492, 59.63996887207}, + {30.390243, 59.92939}, + {30.397109985352, 59.902267456055}, + {30.141677856445, 59.786911010742}, + {30.340805053711, 59.984664916992}, + {30.273513793945, 59.964065551758}, + {30.368958, 59.984322}, + {30.605850219727, 59.940719604492}, + {30.522423, 60.137444}, + {30.48225402832, 59.946212768555}, + {30.394613, 59.922867}, + {30.376510620117, 59.826736450195}, + {29.604715, 59.963527}, + {30.16227722168, 59.828109741211}, + {30.600357, 59.742966}, + {30.453415, 59.817123}, + {141.29722595215, 40.522384643555}, + {137.025261, 34.872322}, + {136.90269470215, 35.529098510742}, + {136.819267, 35.25547}, + {138.65364074707, 35.199508666992}, + {137.083054, 34.87381}, + {137.36686706543, 34.742202758789}, + {136.88896179199, 35.159683227539}, + {136.90406799316, 35.143203735352}, + {136.7749786377, 35.166549682617}, + {136.68571472168, 36.618118286133}, + {135.51155090332, 34.76692199707}, + {135.75943, 34.883652}, + {135.909119, 34.93721}, + {135.11878967285, 34.73258972168}, + {135.55824279785, 34.663925170898}, + {135.54863, 34.611511}, + {134.61753845215, 34.81086730957}, + {135.42366027832, 34.52522277832}, + {135.26573181152, 34.71061706543}, + {132.772751, 33.837204}, + {130.672531, 33.628922}, + {130.53749084473, 33.816604614258}, + {127.70439147949, 26.231918334961}, + {37.514648, 55.781708}, + {37.47673, 55.702591}, + {37.54097, 55.755959}, + {37.709885, 55.734482}, + {37.720528, 55.602493}, + {37.672348, 55.771179}, + {37.734603881836, 55.657424926758}, + {37.568435668945, 55.822219848633}, + {37.583346, 55.781021}, + {30.408096313477, 59.959945678711}, + {30.392990112305, 59.944839477539}, + {30.365524291992, 59.953079223633}, + {30.414658, 59.927292}, + {30.394363, 59.88108}, + {-38.542098999023, -12.665176391602}, + {-38.860702514648, -3.5890960693359}, + {-47.480850219727, -21.859359741211}, + {-48.080518, -23.633195}, + {-48.468246459961, -23.650131225586}, + {-39.263409, -12.966231}, + {-38.298813, -12.728298}, + {-47.45475769043, -23.371353149414}, + {-49.486679, -27.802963}, + {-47.327041625977, -23.374099731445}, + {-38.4636, -12.998112}, + {-49.095063, -17.733189}, + {-40.846716, -2.89438}, + {-49.274392, -16.673862}, + {-38.4482, -12.895203}, + {-47.444805, -21.991984}, + {-47.320175170898, -22.65998840332}, + {-43.185078, -22.972022}, + {-54.804006, -22.21928}, + {-46.640396118164, -23.562240600586}, + {-46.648635864258, -23.580093383789}, + {-46.703567504883, -23.805313110352}, + {-46.857376098633, -23.678970336914}, + {100.62171936035, 13.964309692383}, + {100.55992126465, 13.843460083008}, + {100.60523986816, 14.064559936523}, + {100.5558013916, 13.80500793457}, + {100.55030822754, 13.872299194336}, + {100.61897277832, 13.989028930664}, + {100.52558898926, 14.491653442383}, + {100.46928405762, 14.675674438477}, + {100.69450378418, 14.775924682617}, + {100.60111999512, 14.758071899414}, + {100.67253112793, 14.791030883789}, + {101.282722, 13.383128}, + {100.89912414551, 14.585037231445}, + {99.15641784668, 9.4187164306641}, + {101.25693, 13.538875}, + {103.83796691895, 14.951705932617}, + {103.6580657959, 14.888534545898}, + {103.80500793457, 15.121994018555}, + {104.74571228027, 14.964065551758}, + {104.82948303223, 15.275802612305}, + {102.6033782959, 17.275314331055}, + {101.986839, 16.063195}, + {101.6983795166, 3.0493927001953}, + {101.68190002441, 2.9807281494141}, + {101.691513, 3.051224}, + {101.43837, 2.995834}, + {101.42097473145, 3.0727386474609}, + {101.38114929199, 2.9573822021484}, + {101.74507141113, 3.1963348388672}, + {101.8480682373, 3.1647491455078}, + {101.70249938965, 3.0631256103516}, + {101.75743103027, 3.1565093994141}, + {101.77665710449, 3.0782318115234}, + {101.08726501465, 3.7635040283203}, + {101.60774230957, 3.2993316650391}, + {101.00074768066, 3.6660003662109}, + {102.00050354004, 2.7321624755859}, + {101.7162322998, 2.9120635986328}, + {101.78489685059, 2.8365325927734}, + {101.79862976074, 2.8241729736328}, + {101.924087, 2.693877}, + {101.69288635254, 3.1688690185547}, + {101.70936584473, 3.1235504150391}, + {-1.690521, 37.6577}, + {-2.666473, 42.863846}, + {-2.9463958740234, 43.24836730957}, + {-3.006821, 43.308792}, + {-2.9463958740234, 43.409042358398}, + {-0.63240051269531, 38.81950378418}, + {-0.165756, 38.939529}, + {-0.35911560058594, 39.431991577148}, + {0.142183, 38.827033}, + {-0.696945, 38.265381}, + {-0.685194, 37.980168}, + {-0.443082, 38.76673}, + {-1.095886, 39.499969}, + {0.447693, 40.461274}, + {2.0935821533203, 41.599044799805}, + {0.043258666992188, 40.794296264648}, + {-16.565322875977, 28.367385864258}, + {2.0304107666016, 41.373825073242}, + {2.2487640380859, 41.447982788086}, + {-2.9436492919922, 42.68669128418}, + {-1.0402679443359, 51.588363647461}, + {-1.7873382568359, 51.56364440918}, + {-0.73127746582031, 51.225814819336}, + {-0.647679, 52.920456}, + {0.080337524414062, 51.780624389648}, + {-1.7612457275391, 52.331314086914}, + {-1.571388, 52.385903}, + {-1.5291595458984, 54.792251586914}, + {-1.2036895751953, 52.66227722168}, + {-2.3613739013672, 53.149795532227}, + {-2.4506378173828, 53.208847045898}, + {-1.1487579345703, 51.716079711914}, + {-1.166611, 53.734818}, + {-1.5593719482422, 54.882888793945}, + {-1.5895843505859, 54.773025512695}, + {-3.1716156005859, 51.474380493164}, + {-2.243958, 51.644669}, + {-1.2709808349609, 51.412582397461}, + {-1.361169, 51.408483}, + {-0.141678, 52.305679}, + {-0.069287, 51.514572}, + {0.026668, 51.502249}, + {0.027141, 51.545345}, + {0.122491, 51.559284}, + {-0.41542053222656, 51.633682250977}, + {-0.33988952636719, 51.319198608398}, + {1.0306549072266, 51.787490844727}, + {-0.755688, 51.316635}, + {-0.39070129394531, 51.732559204102}, + {-0.441457, 51.883226}, + {-0.787618, 51.534039}, + {-0.417528, 51.516428}, + {-0.402421, 51.600275}, + {-1.989061, 52.412298}, + {-1.5099334716797, 52.412338256836}, + {-1.09726, 52.969208}, + {-1.1817169189453, 52.950668334961}, + {-120.27351379395, 37.818374633789}, + {-121.233443, 37.512589}, + {-120.521394, 37.065471}, + {-120.5948638916, 37.358322143555}, + {-121.046333, 37.674522}, + {-121.28288269043, 37.551956176758}, + {-78.830471, 42.768689}, + {-78.925094604492, 43.067092895508}, + {-76.051483, 42.101669}, + {-73.745040893555, 42.65510559082}, + {-73.81233215332, 42.671585083008}, + {-82.696839, 27.954712}, + {-82.503890991211, 28.035049438477}, + {-82.448959350586, 27.940292358398}, + {-82.558822631836, 27.574996948242}, + {-82.651291, 27.745285}, + {-82.613754272461, 27.830429077148}, + {-96.68586730957, 32.734451293945}, + {-119.900772, 34.432458}, + {-96.703720092773, 33.006362915039}, + {10.638198852539, 36.825485229492}, + {8.7897491455078, 34.419479370117}, + {10.613439, 35.796482}, + {10.721969604492, 34.765548706055}, + {10.601119995117, 35.854568481445}, + {10.227584838867, 33.671035766602}, + {10.131454, 33.87085}, + {10.510483, 35.963058}, + {10.191195, 36.782673}, + {10.18913269043, 36.802139282227}, + {10.208358764648, 36.748580932617}, + {10.136947631836, 36.410751342773}, + {8.7952423095703, 34.408493041992}, + {8.787655, 34.435569}, + {10.207672, 36.866684}, + {10.200119018555, 36.741714477539}, + {10.288009643555, 36.905136108398}, + {10.143814, 36.812439}, + {10.271873, 36.851578}, + {10.304489135742, 36.760940551758}, + {10.304489135742, 36.814498901367}, + {10.187759399414, 36.762313842773}, + {-89.12727355957, 13.575668334961}, + {-89.26872253418, 13.667678833008}, + {-89.354141, 13.714645}, + {-89.278006, 13.664118}, + {-89.244003295898, 13.706130981445}, + {-89.235061, 13.687883}, + {-89.573593139648, 13.956069946289}, + {-89.197311401367, 13.689651489258}, + {-89.73014831543, 13.972549438477}, + {-89.229813, 13.708878}, + {-89.249496459961, 13.708877563477}, + {-89.848787, 13.874161}, + {-89.25951, 13.67363}, + {-89.208984, 13.670425}, + {-89.176712036133, 13.732223510742}, + {-89.20045, 13.692398}, + {-89.176712, 13.695831}, + {-89.288864, 13.684464}, + {-89.304366, 13.676168}, + {-88.783950805664, 13.63883972168}, + {-89.250183, 13.680038}, + {-89.249496459961, 13.662185668945}, + {-88.092763, 41.595981}, + {-88.129153, 41.857702}, + {-87.988815307617, 41.857223510742}, + {-87.991336, 42.109489}, + {-87.764647, 41.960415}, + {-87.725386, 41.934249}, + {-87.631311, 41.923337}, + {-88.86972, 42.288348}, + {-85.954362, 39.807963}, + {-86.276022, 39.997438}, + {-86.210403442383, 39.850845336914}, + {-86.359717, 41.824889}, + {-86.498014, 41.695093}, + {-85.640429, 39.458199}, + {-96.629288, 39.162003}, + {-94.62043762207, 40.04997253418}, + {-94.588851928711, 39.102401733398}, + {-94.356819, 39.081992}, + {-94.31282043457, 37.770309448242}, + {-95.383987426758, 37.922744750977}, + {-94.207117, 35.594937}, + {-94.108499, 35.515736}, + {-5.061792, 34.014147}, + {-5.0585174560547, 33.99787902832}, + {-5.5240631103516, 33.900375366211}, + {-13.196640014648, 27.156143188477}, + {-7.6018524169922, 32.998123168945}, + {-3.9310455322266, 35.243453979492}, + {-7.630005, 33.557739}, + {-7.5620269775391, 33.559799194336}, + {-6.8918609619141, 33.948440551758}, + {-5.7108306884766, 34.203872680664}, + {-6.5004730224609, 32.421340942383}, + {-8.480072, 33.220596}, + {-9.8046112060547, 29.80110168457}, + {-3.16475, 34.626848}, + {-7.9795074462891, 31.782760620117}, + {-4.392668, 32.244186}, + {-5.4705047607422, 33.834457397461}, + {-6.3782501220703, 32.774276733398}, + {-6.9522857666016, 32.901992797852}, + {-4.893036, 34.015045}, + {-4.9761199951172, 34.065170288086}, + {-6.7916107177734, 34.034957885742}, + {16.656879, 51.738057}, + {19.314651489258, 51.360397338867}, + {35.765852, 56.907258}, + {35.347137, 56.633148}, + {85.015984, 56.504745}, + {37.484664916992, 54.219589233398}, + {37.066498, 54.503174}, + {65.573959350586, 57.180404663086}, + {65.355606079102, 57.185897827148}, + {48.41559, 54.228319}, + {59.388102, 53.355104}, + {37.741928, 55.781937}, + {37.359862, 55.821304}, + {37.183456, 56.081772}, + {37.819747924805, 55.82633972168}, + {37.807388305664, 55.82633972168}, + {37.733231, 55.769485}, + {37.586823, 55.873642}, + {-78.918717, 43.866825}, + {-79.27238, 43.731216}, + {-123.02146911621, 49.095840454102}, + {-122.96241760254, 49.240036010742}, + {-122.81547546387, 49.112319946289}, + {-123.121915, 49.213714}, + {-122.924709, 49.247845}, + {-122.927797, 49.237521}, + {-123.04756164551, 49.262008666992}, + {-73.94416809082, 45.714797973633}, + {-73.405838012695, 45.808181762695}, + {-73.617324829102, 45.517044067383}, + {-73.326187133789, 45.580215454102}, + {-73.569259643555, 45.495071411133}, + {-73.57132, 45.489578}, + {-73.480384, 45.382488}, + {-73.623994, 45.496299}, + {-73.695602416992, 45.573348999023}, + {-71.381545, 46.843947}, + {-56.109244, -34.782949}, + {121.61933898926, 31.249923706055}, + {121.59187316895, 31.258163452148}, + {121.4380645752, 31.236190795898}, + {121.49436950684, 31.218338012695}, + {121.42845153809, 31.21696472168}, + {116.387787, 39.936676}, + {116.46949768066, 39.90852355957}, + {116.266937, 39.999847}, + {116.261215, 40.130539}, + {121.46141052246, 31.193618774414}, + {117.80158996582, 36.70051574707}, + {118.53492736816, 34.74494934082}, + {118.30558776855, 35.107498168945}, + {120.44654846191, 37.24983215332}, + {120.338059, 36.139183}, + {120.353577, 36.215057}, + {116.95289611816, 36.659317016602}, + {116.86088562012, 36.494522094727}, + {116.99272155762, 35.585403442383}, + {105.71662902832, 37.112503051758}, + {101.78215026855, 36.631851196289}, + {108.96308898926, 34.114608764648}, + {106.7163848877, 26.513442993164}, + {106.71501159668, 26.590347290039}, + {-73.784467, 40.912111}, + {-76.202424, 36.768292}, + {-76.278763, 36.75175}, + {-76.524412, 37.347487}, + {-76.313095, 36.364288}, + {-87.653732299805, 41.865463256836}, + {-76.922989, 36.648636}, + {-88.083572387695, 41.671829223633}, + {-72.733056, 41.645868}, + {-72.658386, 41.867218}, + {-72.554397583008, 41.799545288086}, + {-72.579804, 42.022705}, + {-74.226405, 40.676702}, + {-74.241906, 40.724524}, + {-74.122695922852, 40.696792602539}, + {-74.11528, 40.888504}, + {-74.140549, 40.783768}, + {-74.070511, 40.971603}, + {-75.178756713867, 40.694046020508}, + {-74.726196, 40.908245}, + {-74.687089, 41.091624}, + {-74.416975, 40.886363}, + {-74.93122, 40.13649}, + {-75.298233, 40.269503}, + {91.705627, 53.694305}, + {38.914260864258, 45.098190307617}, + {92.913436889648, 55.993881225586}, + {41.976699829102, 45.069351196289}, + {135.05973815918, 48.501205444336}, + {43.377456665039, 45.105056762695}, + {37.892532348633, 51.308212280273}, + {39.86824, 59.218369}, + {104.287308, 52.288742}, + {104.263413, 52.280777}, + {38.094749, 55.753555}, + {39.594383, 52.594643}, + {37.290001, 55.607986}, + {37.659051, 55.579841}, + {33.158798217773, 68.97834777832}, + {43.860168, 56.35437}, + {43.994064331055, 56.305618286133}, + {83.074495, 54.917453}, + {82.856826782227, 54.965286254883}, + {83.09269, 54.840317}, + {36.039963, 52.933502}, + {32.071323, 54.799118}, + {-83.917694, 34.473724}, + {-84.514389038086, 33.885269165039}, + {-84.489202, 33.904826}, + {-84.57893371582, 33.937454223633}, + {-84.187546, 33.9077}, + {-84.326248168945, 33.835830688477}, + {-84.46907043457, 33.885269165039}, + {-83.737167, 32.998931}, + {-83.763601, 32.066499}, + {-83.934860229492, 32.363662719727}, + {-84.875564575195, 32.542190551758}, + {-80.951394, 32.541848}, + {-81.511001586914, 33.434829711914}, + {-72.768630981445, 41.50016784668}, + {-72.920748, 41.400755}, + {-72.554672, 41.778397}, + {-72.886734008789, 41.288681030273}, + {-73.107193, 41.327042}, + {-72.698144, 41.992526}, + {-73.409957885742, 42.034378051758}, + {101.710739, 3.151703}, + {101.71897888184, 3.1317901611328}, + {101.60362243652, 3.0686187744141}, + {101.58302307129, 3.0411529541016}, + {101.62971496582, 3.0493927001953}, + {101.557846, 3.068619}, + {101.56105041504, 3.2540130615234}, + {101.471786, 3.10418}, + {101.70936584473, 3.2004547119141}, + {101.674347, 3.180542}, + {101.757431, 3.03772}, + {101.67915344238, 2.9065704345703}, + {101.79039001465, 2.9683685302734}, + {104.117854, 1.699106}, + {102.220819, 2.235424}, + {102.792206, 2.488403}, + {102.273367, 2.218109}, + {102.88215637207, 2.0757293701172}, + {103.323916, 2.039586}, + {103.60176086426, 1.6623687744141}, + {103.605431, 1.66122}, + {103.601179, 1.56227}, + {16.17503, 54.188608}, + {17.017135620117, 54.477767944336}, + {21.268844604492, 52.248916625977}, + {21.154861450195, 52.172012329102}, + {21.118289, 52.236436}, + {21.057357788086, 52.247543334961}, + {21.082993, 52.24205}, + {21.052416, 52.258094}, + {21.061477661133, 52.152786254883}, + {20.88020324707, 52.13493347168}, + {20.988693237305, 52.303848266602}, + {20.689315795898, 52.126693725586}, + {20.97770690918, 52.181625366211}, + {20.918655395508, 52.239303588867}, + {21.002426147461, 52.243423461914}, + {21.036758, 52.235184}, + {19.482192993164, 51.753158569336}, + {19.442367553711, 51.722946166992}, + {-17.915622, 65.76594}, + {-19.145221, 64.179382}, + {-17.137129, 63.96292}, + {-20.689178, 63.949356}, + {19.794617, 41.322327}, + {19.482879, 41.337433}, + {20.07682800293, 40.221633911133}, + {14.497343, 35.914601}, + {14.28154, 36.027145}, + {14.37629699707, 35.945205688477}, + {33.710861206055, 35.007247924805}, + {32.947311401367, 34.628219604492}, + {33.348999, 35.171127}, + {33.847735, 35.015488}, + {32.440567016602, 34.765548706055}, + {80.108871459961, 13.108749389648}, + {74.352035522461, 23.42903137207}, + {76.961288452148, 10.984268188477}, + {78.131332397461, 9.9172210693359}, + {77.00798034668, 11.013107299805}, + {78.160171508789, 11.680526733398}, + {78.15055847168, 11.653060913086}, + {78.785018920898, 10.998001098633}, + {79.324722290039, 10.943069458008}, + {80.14801, 13.024979}, + {80.297699, 13.160248}, + {80.19429, 13.087875}, + {80.077285766602, 12.82585144043}, + {79.97612, 12.708206}, + {80.257186889648, 12.971420288086}, + {80.270462, 13.104172}, + {80.218734741211, 12.971420288086}, + {79.626846313477, 13.077163696289}, + {77.347183227539, 8.2472991943359}, + {79.186019897461, 12.971420288086}, + {79.321975708008, 11.47590637207}, + {79.166793823242, 10.867538452148}, + {80.30387878418, 26.468124389648}, + {79.836959838867, 12.908248901367}, + {9.2580413818359, 45.486831665039}, + {9.0081024169922, 45.843887329102}, + {10.143814086914, 46.231155395508}, + {10.238571166992, 45.570602416992}, + {9.193039, 45.455704}, + {9.3706512451172, 45.495071411133}, + {9.132462, 45.461197}, + {9.085464, 45.46257}, + {10.298653, 45.511093}, + {10.151367, 45.862427}, + {100.66703796387, 13.835220336914}, + {100.682831, 13.780975}, + {100.9156036377, 13.283157348633}, + {100.92933654785, 13.273544311523}, + {100.54206848145, 13.763809204102}, + {100.34019470215, 13.971176147461}, + {100.41297912598, 13.875045776367}, + {101.575596, 12.711218}, + {100.98976135254, 13.093643188477}, + {101.251602, 12.687149}, + {98.97102355957, 18.791427612305}, + {100.58464050293, 13.912124633789}, + {99.017715454102, 18.790054321289}, + {100.516037, 13.937905}, + {100.583515, 13.912812}, + {100.908076, 12.726025}, + {100.917713, 12.755077}, + {99.22233581543, 18.743362426758}, + {100.55305480957, 13.751449584961}, + {100.56953430176, 13.82698059082}, + {100.55992126465, 13.811874389648}, + {100.52421569824, 13.762435913086}, + {100.56266784668, 13.769302368164}, + {100.50773620605, 13.821487426758}, + {-75.152664, 40.030746}, + {-79.452438, 40.803909}, + {-111.605301, 33.583145}, + {-111.80717468262, 33.384017944336}, + {-74.267807, 40.556717}, + {-82.578048706055, 31.197738647461}, + {-84.166122, 33.825119}, + {-83.761372, 31.135942}, + {-81.067428588867, 32.168655395508}, + {-72.548904, 41.776199}, + {-82.857826, 32.985639}, + {-118.97316, 34.057541}, + {-118.307863, 34.042284}, + {-71.676865, 42.6503}, + {-72.656364, 42.616036}, + {-122.49824523926, 37.771682739258}, + {-121.6316986084, 37.19352722168}, + {6.7751312255859, 51.183242797852}, + {13.416366577148, 52.49885559082}, + {14.059066772461, 53.272018432617}, + {7.674857, 51.226345}, + {-89.032516479492, 30.419082641602}, + {-86.920544, 33.315042}, + {-86.700668334961, 33.591384887695}, + {-86.642990112305, 33.462295532227}, + {-86.645736694336, 33.654556274414}, + {-112.014483, 43.504048}, + {-95.706367, 29.661369}, + {-95.057144165039, 29.578628540039}, + {-95.416946411133, 29.541549682617}, + {-95.373001098633, 29.81071472168}, + {-95.485610961914, 29.698104858398}, + {-95.480368, 30.234274}, + {-95.739669799805, 30.534439086914}, + {-79.706497192383, 36.089401245117}, + {-87.932510375977, 42.383193969727}, + {-88.082672, 42.399845}, + {-87.903671264648, 42.25959777832}, + {-87.877579, 42.436752}, + {-87.967529, 42.074203}, + {-88.030014038086, 41.993179321289}, + {-69.972267, 18.454285}, + {-70.602951049805, 19.052352905273}, + {-69.94514465332, 18.504409790039}, + {-70.192337036133, 19.261093139648}, + {-69.807815551758, 19.221267700195}, + {-69.924545, 18.468312}, + {-69.876480102539, 18.508529663086}, + {-70.583724975586, 19.202041625977}, + {-70.508194, 19.487}, + {-70.420303, 19.356125}, + {-69.77897644043, 18.796920776367}, + {-72.313741, 18.552785}, + {-61.304397583008, 10.627212524414}, + {-61.459579, 10.28595}, + {-61.405334, 10.472717}, + {-61.427078, 10.459671}, + {-97.146797, 32.848939}, + {-95.429322, 29.73908}, + {-95.421489, 29.723669}, + {-96.279468, 30.54065}, + {-95.396347045898, 29.706344604492}, + {-95.318069458008, 29.645919799805}, + {-95.44017, 29.133954}, + {-95.314178, 29.949646}, + {-95.110846, 30.07678}, + {-95.165634155273, 29.961776733398}, + {-95.700132, 29.883284}, + {-95.34625, 30.556988}, + {-81.444172, 30.094421}, + {-81.733187, 30.177192}, + {-81.709915, 30.267867}, + {-81.543773, 30.145043}, + {-81.068802, 32.00798}, + {-81.551628, 30.644875}, + {-83.709503, 30.445175}, + {-0.11878967285156, 44.577713012695}, + {-1.2284088134766, 44.783706665039}, + {-1.099322, 44.481928}, + {-1.089249, 45.436707}, + {-0.12290954589844, 44.842758178711}, + {-0.65094, 44.840012}, + {-0.57197570800781, 44.826278686523}, + {-0.56785583496094, 44.822158813477}, + {-0.56510925292969, 44.845504760742}, + {-0.618301, 44.85347}, + {-0.42228698730469, 44.915542602539}, + {-0.47447204589844, 44.921035766602}, + {-0.687275, 44.783707}, + {-0.376282, 44.902496}, + {-0.870061, 44.704217}, + {2.8008270263672, 48.833541870117}, + {4.8291778564453, 45.699691772461}, + {4.860649, 45.760059}, + {4.895645, 45.774673}, + {2.3366546630859, 48.815689086914}, + {2.8310394287109, 45.771102905273}, + {4.8758697509766, 45.755996704102}, + {50.140914916992, 53.40934753418}, + {30.291824, 59.961319}, + {30.384358, 59.952098}, + {30.24055480957, 59.843215942383}, + {30.274993, 59.906282}, + {30.377798, 60.082956}, + {30.389723, 59.919711}, + {30.322952, 59.742966}, + {30.210235, 60.105493}, + {37.615127563477, 55.779647827148}, + {37.78678894043, 55.412979125977}, + {37.729110717773, 55.712356567383}, + {37.409821, 55.910797}, + {37.675552368164, 55.730209350586}, + {37.60139465332, 55.742568969727}, + {37.744216918945, 55.720596313477}, + {37.542343139648, 55.756301879883}, + {37.506638, 55.756302}, + {37.738723754883, 55.68489074707}, + {37.411880493164, 55.80436706543}, + {37.410507202148, 55.83869934082}, + {-0.53627014160156, 53.218460083008}, + {-0.47035217285156, 53.718338012695}, + {0.423889, 52.706108}, + {-1.0306549072266, 53.296737670898}, + {-0.785326, 51.773366}, + {-1.3300323486328, 52.430191040039}, + {-1.704941, 53.828202}, + {-1.3162994384766, 54.545059204102}, + {-1.740647, 54.620935}, + {-3.473913, 55.988389}, + {-3.171959, 55.961351}, + {-1.5634918212891, 53.611221313477}, + {-2.101302, 57.188793}, + {-1.2778472900391, 53.587875366211}, + {-1.873856, 53.624725}, + {-1.429596, 53.780823}, + {-5.9250640869141, 54.54231262207}, + {-5.5323028564453, 54.525833129883}, + {-6.2601470947266, 54.341812133789}, + {-0.256556, 51.620572}, + {-2.4423980712891, 50.931930541992}, + {-0.053068, 51.550108}, + {5.3867340087891, 43.341751098633}, + {5.183029, 43.50975}, + {5.413284, 43.263931}, + {5.36036, 43.291963}, + {5.434799, 43.330078}, + {5.4128265380859, 43.303298950195}, + {5.4306793212891, 43.297805786133}, + {5.553589, 43.292313}, + {5.3524017333984, 43.549118041992}, + {5.2013397216797, 44.130020141602}, + {4.87175, 44.009628}, + {4.8072052001953, 43.945999145508}, + {5.183334, 44.157486}, + {4.7728729248047, 43.972091674805}, + {8.7375640869141, 41.919021606445}, + {6.404686, 43.402519}, + {5.873795, 43.123703}, + {5.692064, 43.152242}, + {5.880432, 43.082199}, + {6.079559, 43.098679}, + {7.0291900634766, 43.554611206055}, + {3.1235504150391, 50.613327026367}, + {3.0686187744141, 50.635299682617}, + {5.0475311279297, 45.670852661133}, + {6.1585235595703, 45.447006225586}, + {2.7294158935547, 48.586349487305}, + {1.3149261474609, 47.296829223633}, + {1.025162, 47.289963}, + {2.3778533935547, 48.86100769043}, + {2.3380279541016, 48.811569213867}, + {2.3517608642578, 48.847274780273}, + {2.2748565673828, 48.87336730957}, + {2.2817230224609, 48.877487182617}, + {2.3394012451172, 48.869247436523}, + {4.7632598876953, 46.20231628418}, + {2.192116, 48.975677}, + {4.8346710205078, 45.757369995117}, + {5.0997161865234, 45.654373168945}, + {5.7314300537109, 45.180587768555}, + {4.8319244384766, 45.646133422852}, + {1.4467620849609, 43.615036010742}, + {-0.0006866455078125, 43.218154907227}, + {1.3506317138672, 43.58757019043}, + {1.4138031005859, 43.569717407227}, + {1.3629913330078, 43.597183227539}, + {1.3629913330078, 43.597183227539}, + {11.136022, 53.49793}, + {-93.483963, 44.971924}, + {-93.388595581055, 45.095443725586}, + {-93.080354, 44.834519}, + {-92.561183, 44.736353}, + {-93.225508, 44.897207}, + {-93.192062, 44.80581}, + {-92.809525, 44.951248}, + {-94.022598, 44.208755}, + {-92.283096313477, 46.86149597168}, + {-92.813186645508, 44.753494262695}, + {-92.361373901367, 44.487075805664}, + {-93.396378, 44.899521}, + {-93.310181, 44.923302}, + {-93.397186, 45.088051}, + {-92.991714477539, 43.683700561523}, + {-93.046818, 45.124283}, + {-94.374447, 44.862156}, + {-92.371522, 44.84064}, + {-93.563003540039, 45.374221801758}, + {-88.528244, 44.107773}, + {-87.790146, 43.759964}, + {-88.661727905273, 44.153366088867}, + {-123.123093, 45.625992}, + {-122.713996, 45.507431}, + {-122.63694763184, 45.497817993164}, + {-70.679512, -33.437233}, + {-70.609817504883, -33.587265014648}, + {-70.72380065918, -33.353805541992}, + {-70.70996, -33.343351}, + {-70.588944, -33.474381}, + {-70.58235168457, -33.41423034668}, + {-73.11882019043, -36.736221313477}, + {-71.105917, -34.838677}, + {-71.64528, -35.404816}, + {-71.550522, -33.017349}, + {-73.032302856445, -36.906509399414}, + {-74.022446, 4.733734}, + {-74.03205871582, 4.7097015380859}, + {-75.593490600586, 1.6046905517578}, + {-74.055862, 4.671249}, + {-75.306702, 4.411896}, + {-74.129457, 4.585788}, + {-74.067764, 4.725838}, + {-74.157028198242, 4.6286773681641}, + {-74.130935668945, 4.7824859619141}, + {106.0311126709, -5.9923553466797}, + {107.40989685059, -6.4015960693359}, + {106.840946, -6.225831}, + {106.87156677246, -6.3123321533203}, + {106.88124, -6.160255}, + {106.80702209473, -6.1804962158203}, + {106.920579, -6.295274}, + {106.67793273926, -6.1544036865234}, + {106.97868347168, -6.2340545654297}, + {106.523927, -6.229089}, + {106.165695, -6.096039}, + {106.545427, -6.250786}, + {106.877384, -6.321056}, + {106.87980651855, -6.2477874755859}, + {106.837715, -6.165013}, + {106.845288, -6.125635}, + {106.605525, -6.305722}, + {106.83586120605, -6.1475372314453}, + {7.7948, 47.186966}, + {7.0868682861328, 46.682968139648}, + {7.597788, 47.564613}, + {7.600502, 47.518544}, + {7.0058441162109, 47.460250854492}, + {8.3022308349609, 47.051010131836}, + {6.1132049560547, 46.220169067383}, + {8.9682769775391, 46.02653503418}, + {6.1173248291016, 46.221542358398}, + {7.365128, 46.242399}, + {6.649475, 46.527786}, + {6.9632720947266, 47.224044799805}, + {6.263643, 46.423416}, + {6.200311, 46.37388}, + {6.226501, 46.603317}, + {7.2681427001953, 47.141647338867}, + {6.130783, 46.216049}, + {6.102644, 46.176911}, + {16.558456420898, 38.895034790039}, + {15.020370483398, 40.328750610352}, + {16.477624, 41.183921}, + {14.203783, 40.834369}, + {14.18815612793, 40.864334106445}, + {13.954697, 40.733185}, + {15.114037, 37.566342}, + {16.444748, 39.731369}, + {14.439861, 41.020399}, + {9.121056, 45.479965}, + {9.1948699951172, 45.56510925293}, + {9.148178, 45.528645}, + {9.0904998779297, 45.532150268555}, + {9.1248321533203, 45.478591918945}, + {9.1962432861328, 45.45524597168}, + {10.236855, 45.561676}, + {8.966904, 44.398155}, + {7.7075958251953, 45.113296508789}, + {7.7899932861328, 43.818283081055}, + {-75.46028137207, 39.856338500977}, + {-75.19660949707, 39.893417358398}, + {-77.88688659668, 40.803909301758}, + {-75.170516967773, 39.916763305664}, + {-75.167908, 39.950143}, + {-75.21858215332, 39.934616088867}, + {-75.25898, 39.922256}, + {-75.204849, 40.407028}, + {-75.019867, 40.148026}, + {-75.432815551758, 40.117263793945}, + {-76.548443, 40.028172}, + {-75.119657, 40.080315}, + {-75.173263549805, 40.034866333008}, + {-76.34954, 40.061381}, + {-74.773178, 40.207062}, + {-74.845541, 40.169162}, + {-74.791488647461, 40.209274291992}, + {-74.565583, 40.280342}, + {-74.93293762207, 39.797286987305}, + {-74.895172, 40.14267}, + {-75.593147, 40.588303}, + {1.4261627197266, 43.645248413086}, + {2.889764, 42.725536}, + {3.037491, 42.740707}, + {3.89019, 43.60405}, + {-1.2133026123047, 46.176223754883}, + {-1.370682, 44.019481}, + {5.7341766357422, 45.16960144043}, + {3.162689, 49.606705}, + {3.088174, 50.399753}, + {3.170907, 50.098166}, + {2.700091, 50.435644}, + {5.455797, 47.073249}, + {4.663115, 46.388556}, + {6.125543, 48.699082}, + {4.710159, 49.771957}, + {3.128632, 50.613327}, + {3.065186, 50.666885}, + {3.483162, 50.454285}, + {7.412064, 48.067978}, + {7.338955, 47.796813}, + {6.172801, 49.118665}, + {112.5528717041, 37.880172729492}, + {112.62153625488, 37.778549194336}, + {112.69706726074, 37.744216918945}, + {112.57209777832, 33.747940063477}, + {112.43614196777, 33.125839233398}, + {114.678726, 34.82254}, + {115.05500793457, 34.440078735352}, + {121.54930114746, 38.91975402832}, + {120.86128234863, 40.758590698242}, + {123.39637756348, 41.857223510742}, + {126.55220031738, 43.866348266602}, + {126.62223815918, 45.727157592773}, + {118.89472961426, 32.056045532227}, + {115.84465026855, 34.408493041992}, + {118.7931060791, 32.116470336914}, + {118.74092102051, 32.060165405273}, + {119.43580627441, 32.470779418945}, + {120.06340026855, 32.536697387695}, + {120.232315, 32.039566}, + {118.932724, 32.107315}, + {118.9331817627, 31.900863647461}, + {119.06776428223, 31.418838500977}, + {36.368179, 50.041351}, + {27.474746704102, 53.902359008789}, + {27.514572143555, 53.846054077148}, + {27.434921264648, 53.863906860352}, + {27.51594543457, 53.837814331055}, + {27.557144165039, 53.929824829102}, + {27.50358581543, 53.924331665039}, + {27.435421, 53.92558}, + {27.54753112793, 53.969650268555}, + {27.570877075195, 53.911972045898}, + {27.577743530273, 53.931198120117}, + {27.690353393555, 53.951797485352}, + {27.639541625977, 53.872146606445}, + {27.588729858398, 53.833694458008}, + {27.59147644043, 53.876266479492}, + {27.682113647461, 53.830947875977}, + {27.680740356445, 53.86116027832}, + {23.710556030273, 52.088241577148}, + {29.100998, 40.971268}, + {29.084243774414, 40.959091186523}, + {29.126815795898, 40.971450805664}, + {29.108963012695, 40.946731567383}, + {29.435806274414, 40.784683227539}, + {28.77799987793, 40.516891479492}, + {29.437294, 40.827141}, + {32.83332824707, 39.86457824707}, + {33.605805, 39.673004}, + {32.85530090332, 39.915390014648}, + {27.095718383789, 38.399276733398}, + {27.055892944336, 38.388290405273}, + {27.130737, 38.397903}, + {29.137344, 36.574173}, + {27.124557495117, 38.391036987305}, + {27.016067504883, 38.381423950195}, + {29.146041870117, 40.996170043945}, + {29.084243774414, 41.003036499023}, + {29.159774780273, 40.997543334961}, + {29.082870483398, 40.996170043945}, + {28.786239624023, 41.077194213867}, + {28.848037719727, 41.099166870117}, + {28.77799987793, 41.064834594727}, + {-73.949835, 40.74211}, + {-73.999099731445, 40.76545715332}, + {-73.987107, 40.75444}, + {-74.218392, 39.981149}, + {-74.103944, 40.160045}, + {-74.748326, 41.050625}, + {-74.055982, 40.726279}, + {-74.301224, 40.654595}, + {-74.047165, 40.694971}, + {-74.625387, 40.571254}, + {-74.140625, 40.996252}, + {-74.073782, 40.980914}, + {-73.926315307617, 40.828628540039}, + {-73.960186, 41.048766}, + {-74.280428, 41.32988}, + {-73.975068, 40.821028}, + {-74.819947, 41.903786}, + {-74.122138, 40.886968}, + {-74.184494018555, 40.714645385742}, + {-73.987132, 40.744744}, + {-74.431686, 40.369034}, + {-73.969247, 40.755122}, + {-73.986909, 40.740117}, + {-82.443466186523, 28.102340698242}, + {-81.66481, 28.294144}, + {-82.30339050293, 28.006210327148}, + {-81.964188, 28.058853}, + {-82.594528198242, 27.980117797852}, + {-82.670482, 27.896981}, + {-106.44172668457, 31.95442199707}, + {-106.45957946777, 31.819839477539}, + {-106.323395, 31.766281}, + {-115.105495, 36.011397}, + {-115.03852844238, 36.074295043945}, + {-115.2074432373, 36.12922668457}, + {-115.0838470459, 36.120986938477}, + {-115.14289855957, 36.174545288086}, + {-115.16075134277, 36.162185668945}, + {-115.30632019043, 36.289901733398}, + {-115.1099395752, 36.233596801758}, + {-117.22343444824, 32.761917114258}, + {-115.17036437988, 36.247329711914}, + {-117.411642, 33.990299}, + {-91.47834777832, 41.721267700195}, + {-91.687225, 42.033417}, + {-91.109619, 40.811462}, + {-91.564089, 41.682039}, + {-90.326156, 41.304886}, + {-91.249008178711, 41.84211730957}, + {-77.832506, 35.100361}, + {-78.750686645508, 34.24919128418}, + {-70.322004, 43.93323}, + {-69.769854, 44.347687}, + {-77.528459, 35.641024}, + {-78.080973, 35.608294}, + {-92.581100463867, 41.009902954102}, + {-77.537384, 35.737152}, + {-94.077988, 41.662674}, + {-92.881164, 42.221833}, + {-92.611483, 42.98298}, + {-93.649520874023, 41.62239074707}, + {-93.715615, 41.617637}, + {-88.959045, 42.670898}, + {-89.208355, 42.997513}, + {-88.728187, 43.082907}, + {27.772750854492, -26.194839477539}, + {27.997970581055, -26.086349487305}, + {27.920567, -26.112942}, + {27.981561, -26.089553}, + {27.986298, -26.102829}, + {28.223190307617, -25.813064575195}, + {28.190231323242, -25.752639770508}, + {28.290481567383, -25.781478881836}, + {27.862014770508, -25.803451538086}, + {28.205338, -25.804367}, + {28.172378540039, -25.99983215332}, + {28.243789672852, -25.973739624023}, + {28.105087280273, -26.106948852539}, + {28.08723449707, -26.142654418945}, + {27.997970581055, -26.148147583008}, + {28.083114624023, -26.146774291992}, + {18.658218383789, -33.877029418945}, + {18.633499145508, -33.87565612793}, + {24.75700378418, -26.963882446289}, + {31.035004, -29.851913}, + {30.803604125977, -30.009841918945}, + {31.025047, -29.851913}, + {79.846572875977, 6.9207000732422}, + {79.871292114258, 6.9481658935547}, + {80.339584350586, 7.5112152099609}, + {80.814743041992, 9.2388153076172}, + {80.007476, 9.681244}, + {80.136337280273, 7.1129608154297}, + {79.860305786133, 6.8959808349609}, + {80.355377, 6.036301}, + {79.906997680664, 6.8589019775391}, + {79.850693, 6.908798}, + {79.916610717773, 6.8932342529297}, + {79.917984008789, 6.7325592041016}, + {79.865798950195, 6.8451690673828}, + {79.949569702148, 6.8108367919922}, + {80.430222, 7.524261}, + {80.533218, 5.955963}, + {80.205001831055, 6.9536590576172}, + {80.746765, 6.122818}, + {79.868545532227, 6.9028472900391}, + {79.939956665039, 6.8946075439453}, + {79.85481262207, 6.8946075439453}, + {79.898071, 6.727066}, + {79.852066040039, 6.9344329833984}, + {-75.311965942383, 40.148849487305}, + {-75.1986, 39.903802}, + {-75.306333, 39.959693}, + {-74.957657, 40.36583}, + {-75.166397094727, 39.96208190918}, + {-76.272756, 40.377846}, + {-75.870551, 40.159837}, + {-75.759196, 40.255969}, + {-75.222583, 40.691021}, + {-75.327988, 40.552139}, + {-75.42653, 40.66077}, + {-110.96122741699, 32.334823608398}, + {-71.419372, 41.807099}, + {-78.647253, 35.77136}, + {-78.71597, 35.832706}, + {-78.941136, 35.999612}, + {-78.945694, 35.979309}, + {-78.990556, 35.268173}, + {-78.989639282227, 35.154190063477}, + {-78.845444, 35.061264}, + {-78.891182, 35.834503}, + {-78.69072, 35.593872}, + {-77.990276, 35.522036}, + {-78.07502746582, 35.779037475586}, + {19.063339233398, 47.524795532227}, + {17.657933, 46.856745}, + {19.71817, 46.499634}, + {21.556549, 47.627793}, + {19.088748, 47.343522}, + {-4.817452, 50.543289}, + {-5.044567, 50.267485}, + {-0.13801574707031, 51.43180847168}, + {-0.136642, 51.491776}, + {-0.51017761230469, 51.398849487305}, + {-0.606308, 51.310616}, + {-0.268966, 51.337726}, + {-0.33302307128906, 51.293106079102}, + {-0.15037536621094, 51.099472045898}, + {0.21354675292969, 51.368637084961}, + {0.35362243652344, 51.169509887695}, + {0.331548, 51.300698}, + {0.652314, 51.365518}, + {0.55412292480469, 50.878372192383}, + {0.537949, 50.873032}, + {-2.1141815185547, 57.196884155273}, + {-3.124924, 57.629128}, + {-3.0727386474609, 57.051315307617}, + {0.607681, 52.44873}, + {-0.1856, 52.358368}, + {28.970192, 41.078612}, + {29.007339477539, 41.070327758789}, + {28.982620239258, 41.06071472168}, + {32.871305, 40.000146}, + {30.555038452148, 37.503890991211}, + {28.915328979492, 41.077194213867}, + {28.915328979492, 41.081314086914}, + {28.916032, 41.089022}, + {29.082870483398, 40.176315307617}, + {28.839798, 40.979004}, + {30.598983764648, 37.041091918945}, + {28.909307, 40.996806}, + {29.714584350586, 36.233596801758}, + {28.979131, 41.008296}, + {28.949628, 41.041177}, + {32.506484985352, 39.441604614258}, + {28.938244, 41.01189}, + {28.952277, 41.014382}, + {28.952407836914, 41.056594848633}, + {28.220443725586, 41.097793579102}, + {29.264144897461, 40.965957641602}, + {29.124359, 40.92719}, + {15.307388305664, 49.186477661133}, + {18.368061, 49.86734}, + {13.818615, 50.678078}, + {15.570831, 50.732803}, + {16.447795, 50.07517}, + {92.092208862305, 22.158737182617}, + {92.167739868164, 22.65998840332}, + {91.178970336914, 23.46061706543}, + {90.806122, 23.532028}, + {91.860122680664, 24.891586303711}, + {90.217666625977, 24.063491821289}, + {89.21516418457, 23.166732788086}, + {89.535140991211, 22.842636108398}, + {89.06135559082, 24.368362426758}, + {90.013046264648, 23.27522277832}, + {73.506088, 4.256516}, + {102.04032897949, 2.5563812255859}, + {101.689849, 3.13101}, + {101.739853, 3.223526}, + {101.7423248291, 3.0782318115234}, + {101.720627, 3.012589}, + {101.586456, 3.072052}, + {101.761208, 2.734909}, + {101.36741638184, 3.1400299072266}, + {101.460816, 3.064132}, + {102.296677, 2.274857}, + {101.95655822754, 2.7513885498047}, + {135.76286315918, 35.016860961914}, + {135.15998840332, 35.12809753418}, + {135.43464660645, 34.48127746582}, + {135.64888000488, 34.816360473633}, + {135.51979064941, 34.66667175293}, + {135.5362701416, 34.608993530273}, + {137.21305847168, 36.70051574707}, + {133.80043029785, 33.95393371582}, + {133.59306335449, 34.544448852539}, + {133.58757019043, 34.479904174805}, + {132.16484069824, 34.147567749023}, + {133.03688049316, 34.335708618164}, + {133.06709289551, 35.445327758789}, + {131.341553, 34.07959}, + {131.4054107666, 34.125595092773}, + {134.20829772949, 34.812240600586}, + {131.07719421387, 34.202499389648}, + {134.00093078613, 35.512619018555}, + {130.57731628418, 33.616104125977}, + {130.55946350098, 33.315353393555}, + {131.499825, 33.278618}, + {130.38368225098, 32.170028686523}, + {130.70640563965, 32.804489135742}, + {127.72773742676, 26.274490356445}, + {127.74421691895, 26.249771118164}, + {128.0037689209, 26.612319946289}, + {153.027878, -27.466049}, + {153.05534362793, -27.470626831055}, + {153.100579, -27.421999}, + {153.02375793457, -27.524185180664}, + {153.04023742676, -27.511825561523}, + {153.305561, -27.615168}, + {153.251724, -27.776321}, + {152.98393249512, -27.168502807617}, + {139.658019, -34.323408}, + {138.666687, -34.973602}, + {138.785751, -34.997361}, + {138.575483, -34.970169}, + {138.537632, -35.09414}, + {138.628399, -34.92087}, + {138.64952087402, -34.960556030273}, + {138.717499, -34.780655}, + {138.62617492676, -34.879531860352}, + {115.337397, -30.965146}, + {-4.4515228271484, 36.708755493164}, + {-4.499039, 36.622238}, + {-4.3457794189453, 36.73210144043}, + {-3.3803558349609, 36.714248657227}, + {-2.315781, 36.835648}, + {-2.142332, 37.09877}, + {-4.4954681396484, 37.943344116211}, + {-5.350573, 36.795731}, + {-6.542358, 37.880173}, + {-0.89607238769531, 41.647109985352}, + {-1.8834686279297, 42.217025756836}, + {-1.6101837158203, 42.057723999023}, + {0.21698, 42.09137}, + {-0.28358459472656, 42.232131958008}, + {-5.6627655029297, 43.546371459961}, + {4.300462, 39.874649}, + {-13.796768188477, 28.853530883789}, + {-14.229354858398, 28.160018920898}, + {-16.268692, 28.471756}, + {77.24006652832, 28.595352172852}, + {77.286758422852, 28.563766479492}, + {77.328644, 28.635178}, + {77.32795715332, 28.370132446289}, + {77.13020324707, 28.707962036133}, + {77.104110717773, 28.713455200195}, + {77.286758422852, 28.713455200195}, + {77.176895141602, 28.692855834961}, + {77.073212, 28.5466}, + {77.300491333008, 28.625564575195}, + {77.215347290039, 28.53630065918}, + {77.130607, 28.704004}, + {77.445829, 28.628846}, + {77.509689, 28.683243}, + {77.070212, 28.622673}, + {77.204361, 28.523712}, + {77.307357788086, 28.599472045898}, + {76.917343139648, 28.37287902832}, + {76.936569213867, 28.352279663086}, + {77.010726928711, 28.479995727539}, + {77.259292602539, 28.554153442383}, + {77.318344, 28.395351}, + {-99.207229614258, 19.515151977539}, + {-103.40812683105, 20.656356811523}, + {-103.71025085449, 20.672836303711}, + {-103.390931, 20.663641}, + {-103.215866, 20.611038}, + {-103.269424, 20.48378}, + {-103.371839, 20.508901}, + {-99.646408, 19.278534}, + {-99.528579711914, 19.976577758789}, + {-102.20237731934, 17.956466674805}, + {-99.12483215332, 18.997421264648}, + {-99.231949, 18.936996}, + {-104.886131, 21.230049}, + {-100.3003692627, 25.697708129883}, + {-100.478815, 25.678399}, + {-100.294189, 25.640717}, + {-100.345345, 25.668869}, + {-100.32096862793, 25.644149780273}, + {-100.2660369873, 25.770492553711}, + {-98.257599, 19.004974}, + {-98.34137, 19.202042}, + {-100.44456481934, 20.535507202148}, + {103.844833, 1.357155}, + {103.77754211426, 1.3314056396484}, + {103.752906, 1.388744}, + {103.867331, 1.323119}, + {103.954972, 1.332261}, + {103.812332, 1.288834}, + {103.742168, 1.331004}, + {103.84235, 1.300963}, + {114.910126, 4.894753}, + {114.90943908691, 4.8676300048828}, + {174.70390319824, -36.697769165039}, + {174.904643, -36.965779}, + {174.804077, -41.309298}, + {172.588086, -43.544258}, + {174.67643737793, -36.401138305664}, + {174.904404, -36.935806}, + {170.9122467041, -45.083084106445}, + {173.292531, -41.267184}, + {174.322673, -35.695259}, + {2.6236724853516, 48.964004516602}, + {-1.363505, 43.62963}, + {-1.5456390380859, 43.494186401367}, + {-1.4948272705078, 43.496932983398}, + {-1.1034393310547, 47.123794555664}, + {-0.693741, 47.361832}, + {-0.883124, 47.154792}, + {-1.1171722412109, 48.900833129883}, + {4.748154, 45.909348}, + {4.829865, 45.902252}, + {4.4007110595703, 45.422286987305}, + {4.623358, 45.910212}, + {4.7028350830078, 45.677719116211}, + {4.74365, 45.807138}, + {4.177604, 46.139321}, + {4.071906, 46.035952}, + {4.6822357177734, 45.926284790039}, + {3.1386566162109, 45.122909545898}, + {0.499535, 43.328705}, + {-0.24375915527344, 5.5281829833984}, + {-0.253372, 5.571304}, + {0.089436, 5.760956}, + {-0.279922, 5.577164}, + {-0.344696, 5.546379}, + {-1.6156768798828, 6.6803741455078}, + {-1.6335296630859, 6.7298126220703}, + {-1.6664886474609, 6.6693878173828}, + {-2.539215, 10.051804}, + {-1.285812, 5.105209}, + {-0.49369812011719, 5.7863616943359}, + {-0.255245, 6.082868}, + {-1.637306, 6.740456}, + {-1.6431427001953, 6.6542816162109}, + {-0.25062561035156, 6.0733795166016}, + {-0.590928, 5.396622}, + {-0.44975280761719, 5.5419158935547}, + {-0.270767, 5.540085}, + {-0.24513244628906, 5.5789947509766}, + {-2.3078155517578, 7.3395538330078}, + {-0.20942687988281, 5.5474090576172}, + {-0.23277282714844, 5.5625152587891}, + {0.065231323242188, 5.6778717041016}, + {-1.7584991455078, 4.8992156982422}, + {-1.7914581298828, 6.6872406005859}, + {-88.306459, 42.101501}, + {-89.473076, 41.396263}, + {-88.053818, 42.049942}, + {-87.779892, 41.719894}, + {-87.756692, 41.65972}, + {-87.657852172852, 41.71989440918}, + {-87.683944702148, 41.79817199707}, + {-87.652359008789, 41.96159362793}, + {-87.656478881836, 41.832504272461}, + {-87.660598754883, 42.001419067383}, + {-88.235405, 42.135094}, + {-87.997055053711, 42.030258178711}, + {-87.986762, 41.860684}, + {-88.201345, 41.796593}, + {-87.813034057617, 41.787185668945}, + {-87.78694152832, 41.982192993164}, + {-87.618923, 41.890197}, + {-87.635369, 41.911782}, + {-88.061599731445, 44.50080871582}, + {-87.92628, 43.750353}, + {-88.455807, 43.778385}, + {77.549515, 13.084488}, + {77.538070678711, 12.932968139648}, + {77.57926940918, 12.86018371582}, + {75.119705200195, 14.710006713867}, + {75.277633666992, 15.362319946289}, + {74.865646362305, 12.86979675293}, + {77.564163208008, 12.972793579102}, + {77.602615356445, 12.942581176758}, + {77.597122192383, 12.916488647461}, + {77.582015991211, 12.901382446289}, + {76.395492553711, 14.226608276367}, + {76.619338989258, 12.264175415039}, + {76.626205444336, 12.29850769043}, + {75.744552612305, 12.428970336914}, + {76.925582885742, 15.14533996582}, + {75.818710327148, 26.917190551758}, + {75.851669311523, 26.950149536133}, + {74.858779907227, 27.149276733398}, + {74.636306762695, 26.472244262695}, + {75.214462280273, 26.955642700195}, + {71.046524047852, 26.829299926758}, + {73.039169311523, 26.293716430664}, + {-88.749889, 41.927464}, + {-87.773208618164, 42.155227661133}, + {-87.659225463867, 41.765213012695}, + {-87.947616577148, 41.78581237793}, + {-87.929763793945, 41.853103637695}, + {-87.705917358398, 41.946487426758}, + {-87.620087, 41.395798}, + {-87.528762817383, 41.559219360352}, + {-87.597427368164, 41.57844543457}, + {-87.631759643555, 41.898422241211}, + {-87.618026733398, 41.898422241211}, + {-79.948196411133, 32.889633178711}, + {-79.011611938477, 35.936965942383}, + {-82.32536315918, 34.856185913086}, + {-80.735092163086, 35.299758911133}, + {-80.745693, 35.22832}, + {-79.898757, 34.689103}, + {-80.715866088867, 35.365676879883}, + {-82.440719604492, 34.94270324707}, + {-82.583541870117, 34.823226928711}, + {7.0827484130859, 51.225814819336}, + {7.1898651123047, 51.51008605957}, + {7.025115, 51.52408}, + {7.5510406494141, 51.316452026367}, + {7.380066, 51.570053}, + {7.449606, 51.499398}, + {7.5290679931641, 52.16926574707}, + {7.636093, 51.909714}, + {8.359909, 51.683578}, + {8.374596, 51.805609}, + {8.426929, 51.58059}, + {6.956062, 51.550255}, + {7.1706390380859, 51.637802124023}, + {8.714447, 52.275009}, + {100.28251647949, 7.1555328369141}, + {102.72148132324, 17.876815795898}, + {102.01560974121, 15.271682739258}, + {102.82997131348, 16.438980102539}, + {102.183983, 16.810936}, + {102.812774, 16.404138}, + {102.01972961426, 14.950332641602}, + {104.823499, 15.239599}, + {104.84870910645, 15.251083374023}, + {103.74870300293, 17.823257446289}, + {102.29713439941, 17.359085083008}, + {102.83546447754, 14.633102416992}, + {104.68940734863, 14.817123413086}, + {104.33097839355, 15.774307250977}, + {97.964401245117, 19.309158325195}, + {100.99662780762, 13.030471801758}, + {100.64781188965, 13.696517944336}, + {101.00624084473, 13.398513793945}, + {100.54206848145, 13.855819702148}, + {100.572336, 13.888245}, + {100.67390441895, 13.909378051758}, + {100.62858581543, 13.987655639648}, + {100.629314, 13.932175}, + {120.641556, 24.179535}, + {120.63743591309, 24.147262573242}, + {120.658722, 24.288712}, + {120.848923, 24.618988}, + {120.87913513184, 24.649887084961}, + {120.329819, 22.66658}, + {120.358658, 22.703934}, + {120.31745910645, 22.742385864258}, + {120.29685974121, 22.805557250977}, + {120.967026, 22.528839}, + {121.15242004395, 22.761611938477}, + {121.11671447754, 22.787704467773}, + {120.20347595215, 23.004684448242}, + {120.5248260498, 22.591323852539}, + {120.417984, 22.589951}, + {120.33256530762, 23.205184936523}, + {120.25291442871, 23.247756958008}, + {120.314354, 23.277535}, + {120.23094177246, 22.968978881836}, + {120.445175, 23.458557}, + {120.24192810059, 22.957992553711}, + {120.36003112793, 23.562240600586}, + {120.16502380371, 23.272476196289}, + {120.16227722168, 23.272476196289}, + {26.613693237305, -23.499069213867}, + {25.442963, -25.471802}, + {28.03092956543, -26.073989868164}, + {18.395233, -33.913422}, + {18.544235, -33.99147}, + {31.519088745117, -28.93180847168}, + {29.941689, -30.282338}, + {25.602951049805, -33.94157409668}, + {-86.805038452148, 33.577651977539}, + {-106.53099060059, 35.067672729492}, + {-107.843399, 35.134659}, + {-106.682699, 35.028494}, + {-92.298271, 34.777977}, + {-92.34129, 34.721603}, + {-84.356460571289, 33.942947387695}, + {-84.289169311523, 33.864669799805}, + {-84.278182983398, 34.018478393555}, + {-83.967819213867, 33.980026245117}, + {-83.956832885742, 34.003372192383}, + {-84.309768676758, 33.815231323242}, + {-84.143600463867, 34.184646606445}, + {-84.081802368164, 34.100875854492}, + {-84.202651977539, 33.547439575195}, + {-84.39079284668, 33.761672973633}, + {-84.524002075195, 33.717727661133}, + {-84.629745483398, 34.111862182617}, + {-83.75358581543, 34.262924194336}, + {-83.422622680664, 33.769912719727}, + {-83.632736206055, 33.84407043457}, + {-85.085678100586, 33.574905395508}, + {-84.805526733398, 33.274154663086}, + {-84.286422729492, 33.886642456055}, + {-84.120254516602, 33.871536254883}, + {-84.386672973633, 34.17366027832}, + {51.001968383789, 35.80924987793}, + {45.894236, 37.476751}, + {46.658248901367, 34.621353149414}, + {51.62956237793, 35.367050170898}, + {49.29084777832, 31.957168579102}, + {60.855331420898, 29.522323608398}, + {52.884750366211, 36.530227661133}, + {51.21208190918, 35.754318237305}, + {50.687485, 35.958742}, + {51.624069213867, 30.675888061523}, + {50.927810668945, 32.281265258789}, + {56.83708190918, 27.136917114258}, + {51.567307, 32.859421}, + {51.494979858398, 35.791397094727}, + {51.408463, 35.68222}, + {47.902450561523, 39.631118774414}, + {52.432022, 29.787369}, + {51.679001, 32.66922}, + {51.440048217773, 35.608749389648}, + {53.895492553711, 36.745834350586}, + {50.232925415039, 35.086898803711}, + {51.489486694336, 35.693893432617}, + {49.634170532227, 31.266403198242}, + {50.955964, 34.552002}, + {4.7893524169922, 44.102554321289}, + {5.063619, 44.23753}, + {7.2901153564453, 43.705673217773}, + {4.849254, 45.232676}, + {4.3897247314453, 44.61067199707}, + {1.8766021728516, 48.057632446289}, + {2.258375, 44.543152}, + {5.5075836181641, 43.343124389648}, + {5.352402, 43.295403}, + {5.0571441650391, 43.414535522461}, + {-0.681631, 49.117471}, + {-0.26847839355469, 49.023056030273}, + {-0.72578430175781, 45.666732788086}, + {0.195302, 46.060671}, + {1.595764, 46.707687}, + {3.179777, 44.973142}, + {5.0722503662109, 47.331161499023}, + {-3.447952, 48.804703}, + {-0.005356, 45.128128}, + {0.67982, 44.153609}, + {120.36140441895, 23.423538208008}, + {120.39436340332, 23.558120727539}, + {120.178482, 22.997818}, + {120.25428771973, 23.183212280273}, + {120.339262, 23.386716}, + {120.265402, 23.114434}, + {120.20484924316, 22.993698120117}, + {120.269344, 22.905399}, + {120.220603, 23.008379}, + {120.284364, 22.659192}, + {121.13319396973, 22.734146118164}, + {120.84205627441, 22.253494262695}, + {120.487061, 22.589264}, + {120.69374084473, 22.177963256836}, + {120.346985, 22.644882}, + {120.3050994873, 22.639389038086}, + {120.307846, 22.598877}, + {120.35179138184, 22.632522583008}, + {120.327072, 22.699127}, + {121.55891418457, 25.048141479492}, + {121.552048, 25.022965}, + {121.5438079834, 25.045394897461}, + {121.50810241699, 25.06462097168}, + {6.0994720458984, 52.336807250977}, + {4.9129486083984, 52.365646362305}, + {4.922409, 52.383541}, + {4.530193, 52.131468}, + {4.6245574951172, 52.285995483398}, + {5.217849, 52.367919}, + {5.298843, 52.363586}, + {5.317614, 51.797901}, + {4.849319, 52.685623}, + {4.783287, 52.525978}, + {4.874428, 52.30067}, + {4.799309, 52.331314}, + {5.966374, 51.843722}, + {5.9497833251953, 51.154403686523}, + {5.143147, 52.082233}, + {5.332587, 51.572473}, + {5.655441, 51.570511}, + {7.011337, 52.265396}, + {6.53814, 52.535934}, + {4.290017, 52.074979}, + {4.32543, 52.080002}, + {-85.862691, 38.200918}, + {-94.95002746582, 29.81071472168}, + {-85.522384643555, 38.288040161133}, + {-85.830001831055, 38.327865600586}, + {-84.493789672852, 38.049087524414}, + {-95.724563598633, 29.887619018555}, + {-97.11296081543, 31.961288452148}, + {-85.342483520508, 35.025100708008}, + {-80.763532, 28.530207}, + {-81.392899, 28.449509}, + {-81.225357055664, 28.567886352539}, + {-88.82926940918, 35.654067993164}, + {-80.187149047852, 26.155014038086}, + {-80.209121704102, 26.189346313477}, + {-80.183029, 25.816727}, + {-80.20637512207, 25.840530395508}, + {-80.155563354492, 26.588973999023}, + {-80.279159545898, 25.734786987305}, + {-80.316925, 25.74852}, + {-80.383529663086, 25.601577758789}, + {1.85257, 41.74324}, + {2.0386505126953, 41.549606323242}, + {2.096329, 41.507378}, + {2.182589, 41.548738}, + {2.2075653076172, 41.394424438477}, + {2.2254180908203, 41.41227722168}, + {2.1224212646484, 41.399917602539}, + {2.143192, 41.384811}, + {1.614303, 41.279755}, + {2.0386505126953, 41.342239379883}, + {2.0029449462891, 41.454849243164}, + {1.906815, 41.523857}, + {2.000883, 41.505662}, + {1.982874, 41.40203}, + {2.1526336669922, 41.399917602539}, + {2.273445, 41.467078}, + {2.173462, 41.404724}, + {2.7307891845703, 41.704788208008}, + {2.6978302001953, 41.652603149414}, + {-38.879928588867, -15.863571166992}, + {-40.375788, -7.071726}, + {-40.513907, -11.185118}, + {-38.623123, -3.775589}, + {-43.372076, -22.770595}, + {-43.597442, -22.684322}, + {-44.131393432617, -19.927139282227}, + {60.588977, 56.835351}, + {60.583648, 56.845584}, + {60.653457641602, 56.865921020508}, + {62.077560424805, 56.900253295898}, + {57.808914, 56.681442}, + {41.471328735352, 52.703475952148}, + {41.435623168945, 52.659530639648}, + {35.887436, 56.840927}, + {35.299758911133, 57.225723266602}, + {35.976791381836, 56.782150268555}, + {84.966201782227, 56.504745483398}, + {85.076519, 56.384366}, + {84.719009399414, 56.514358520508}, + {37.537765, 54.290085}, + {38.038212, 54.032487}, + {38.043594360352, 53.916091918945}, + {69.409561157227, 56.140823364258}, + {48.486099243164, 54.333572387695}, + {-1.7571258544922, 4.8882293701172}, + {-0.26161193847656, 5.6174468994141}, + {-0.19569396972656, 5.5954742431641}, + {-0.23002624511719, 5.5858612060547}, + {-0.23826599121094, 5.5597686767578}, + {-0.20157, 5.573227}, + {-0.018539428710938, 5.6407928466797}, + {-0.16960144042969, 5.5666351318359}, + {-0.18196105957031, 5.6394195556641}, + {-1.608331, 6.683854}, + {0.591937, 5.998705}, + {-0.86174011230469, 9.3994903564453}, + {-0.413361, 5.549469}, + {-0.247269, 5.567551}, + {-0.224983, 5.61271}, + {-0.13664245605469, 5.6339263916016}, + {-0.15861511230469, 5.8893585205078}, + {-0.29045104980469, 5.6147003173828}, + {-2.4781036376953, 6.1997222900391}, + {-1.3835906982422, 7.0168304443359}, + {-1.734238, 4.966507}, + {-0.046005249023438, 5.8481597900391}, + {-1.6719818115234, 6.6954803466797}, + {-1.6156768798828, 6.6886138916016}, + {-79.769392, 45.169372}, + {-79.715235, 43.643953}, + {-79.280152, 43.726952}, + {-79.273071, 43.744188}, + {-79.382400512695, 43.713912963867}, + {-79.603979, 43.688598}, + {-113.585255, 53.197661}, + {-113.931193, 50.923984}, + {-113.902998, 51.113507}, + {-113.56498718262, 53.482131958008}, + {-113.549054, 53.277379}, + {-113.488896, 53.449994}, + {-113.20243835449, 53.697738647461}, + {-113.567926, 53.506824}, + {11.35368347168, 44.482955932617}, + {11.584259, 44.824081}, + {11.040573, 44.743195}, + {11.306992, 44.548187}, + {11.33638, 44.497513}, + {11.395069, 44.582769}, + {11.411362, 44.526352}, + {12.041016, 44.270096}, + {11.620565, 44.389116}, + {12.074661, 44.476639}, + {12.23258972168, 44.139633178711}, + {12.651443481445, 44.000930786133}, + {11.054306030273, 44.595565795898}, + {10.962295532227, 44.592819213867}, + {9.9831390380859, 44.612045288086}, + {9.9858856201172, 45.083084106445}, + {9.6837615966797, 45.044631958008}, + {12.38142, 42.049828}, + {12.566986, 41.98082}, + {12.115859985352, 41.938247680664}, + {-97.686996459961, 30.307846069336}, + {-97.711715698242, 30.259780883789}, + {-97.817459106445, 30.230941772461}, + {-97.75016784668, 30.178756713867}, + {-97.713088989258, 30.520706176758}, + {-97.880630493164, 29.950790405273}, + {-97.90123, 30.864716}, + {-97.681961, 31.108475}, + {-95.752029418945, 29.784622192383}, + {-95.386734008789, 29.74479675293}, + {-95.357894897461, 29.831314086914}, + {-96.223068237305, 30.572891235352}, + {-97.802352905273, 30.276260375977}, + {-97.701416, 30.214462}, + {-97.986373901367, 30.44792175293}, + {-96.793327, 33.030396}, + {-97.099227905273, 31.681137084961}, + {-97.952499, 29.856949}, + {-96.707977, 33.056488}, + {-96.817703, 32.833633}, + {-96.897354, 32.891693}, + {-97.182312, 32.843628}, + {-96.613082885742, 32.911605834961}, + {-96.865082, 32.641068}, + {-96.963272094727, 33.297500610352}, + {0.812988, 51.335678}, + {-0.77384948730469, 53.083877563477}, + {-2.044388, 51.668255}, + {0.26435852050781, 52.399978637695}, + {1.2119293212891, 52.939682006836}, + {-3.032455, 55.936203}, + {-4.4240570068359, 53.066024780273}, + {-3.1359100341797, 54.598617553711}, + {-2.850264, 57.697586}, + {-1.9342803955078, 51.713333129883}, + {-1.807249, 51.618577}, + {-1.4316558837891, 54.589004516602}, + {-0.523453, 52.073219}, + {1.4783477783203, 52.139053344727}, + {-4.0656280517578, 55.675277709961}, + {-2.8475189208984, 56.399002075195}, + {1.5456390380859, 52.453536987305}, + {0.45112609863281, 51.933059692383}, + {-1.3671112060547, 53.075637817383}, + {-3.0438995361328, 52.702102661133}, + {28.466262817383, 54.24430847168}, + {28.502883, 54.206772}, + {28.305587768555, 51.779251098633}, + {26.111069, 54.391251}, + {25.077602, 52.552434}, + {27.808915, 47.834702}, + {28.771133422852, 47.033157348633}, + {21.009293, 52.196274}, + {20.496147, 50.470863}, + {11.303074, 52.374906}, + {12.69544, 54.076228}, + {1.431958, 48.732116}, + {34.339691, 53.25238}, + {13.00163269043, 58.393020629883}, + {8.930741, 50.32814}, + {114.212723, 22.693405}, + {-6.216108, 53.560539}, + {-112.419556, 33.548919}, + {136.855728, 35.227524}, + {39.582631, 24.480444}, + {-118.396467, 33.903316}, + {-8.6002349853516, 41.301040649414}, + {0.87157, 40.963789}, + {-94.497529, 39.110642}, + {74.222946166992, 16.69303894043}, + {-4.6753692626953, 36.504135131836}, + {-74.758529663086, 10.757675170898}, + {-122.376147, 47.670989}, + {-85.476801, 40.471905}, + {137.00569152832, 35.11848449707}, + {-51.350098, -30.076103}, + {6.7957305908203, 51.463394165039}, + {-73.612047, 41.411783}, + {5.288132, 52.052591}, + {-58.865433, -34.326553}, + {-6.2450408935547, 37.302017211914}, + {112.708934, -7.278271}, + {10.03624, 56.446838}, + {135.511093, 34.765549}, + {19.319687, 50.209122}, + {3.8871002197266, 43.595809936523}, + {-75.906476, 40.176176}, + {-6.006088, 37.383728}, + {105.821686, 21.041565}, + {11.861484, 45.339678}, + {51.648788, 32.667892}, + {4.3801116943359, 51.944046020508}, + {139.381027, 35.445328}, + {72.837982, 19.017334}, + {82.843821, 54.96228}, + {121.10298156738, 14.611129760742}, + {59.640999, 36.29694}, + {128.905367, 35.963992}, + {138.94477844238, 36.457443237305}, + {0.311737, 46.572647}, + {56.007613, 30.333023}, + {152.878873, -25.36196}, + {4.761051, 45.674137}, + {139.9925994873, 35.751571655273}, + {-114.207182, 51.068985}, + {105.05195617676, -5.3716278076172}, + {-121.055541, 37.332579}, + {114.134822, 22.50206}, + {37.565689086914, 55.863418579102}, + {99.032822, 18.658218}, + {13.029647, 45.976273}, + {10.195312, 55.073776}, + {103.96705627441, 22.503433227539}, + {17.669448852539, 49.22492980957}, + {26.05339050293, 44.441757202148}, + {133.862916, 34.701005}, + {135.6859588623, 34.549942016602}, + {-60.251612, -33.362468}, + {8.758622, 44.823076}, + {12.001513, 45.409625}, + {106.685486, 10.750809}, + {6.030273, 46.000138}, + {5.863612, 51.896154}, + {-104.74708557129, 39.129867553711}, + {7.634719, 45.067296}, + {7.628632, 51.964122}, + {5.8962249755859, 51.975631713867}, + {-80.376964, 25.665013}, + {73.461456, 61.23436}, + {-2.38266, 53.378792}, + {130.3328704834, 33.587265014648}, + {27.497385, 60.533988}, + {-79.491979, 43.632048}, + {-3.734266, 40.363127}, + {-84.417736, 39.212429}, + {-16.328018, 28.485901}, + {-86.776833, 36.278176}, + {-84.511642456055, 38.075180053711}, + {14.807510375977, 56.52946472168}, + {-2.178025, 43.053573}, + {-89.911951, 37.743956}, + {-4.639579, 36.569971}, + {136.59507751465, 36.500015258789}, + {33.60817, 34.867401}, + {-84.445125, 33.725275}, + {120.9546661377, 31.354293823242}, + {-43.213302, -22.895517}, + {-98.866653442383, 18.883438110352}, + {-38.338165, -12.704315}, + {-70.845658, 43.12931}, + {106.811643, -6.616163}, + {90.432037, 23.763153}, + {-77.610397, 38.152542}, + {-87.611008, 15.655381}, + {-122.690994, 45.522097}, + {-80.089645385742, 26.458511352539}, + {-43.556051, -17.401895}, + {-80.133590698242, 25.777359008789}, + {39.124374389648, 21.591567993164}, + {-4.926289, 41.330861}, + {8.343963, 49.253359}, + {-103.39714050293, 20.612411499023}, + {-68.602066040039, -16.194534301758}, + {122.518501, 10.718937}, + {122.28126525879, 10.660171508789}, + {-118.098792, 34.560985}, + {7.827072, 45.156555}, + {152.95921325684, -27.588729858398}, + {10.988109, 60.848879}, + {-0.565453, 44.766541}, + {85.332870483398, 27.693099975586}, + {116.367188, 39.904404}, + {-121.444842, 38.591493}, + {8.9929962158203, 44.399185180664}, + {153.03199768066, -27.463760375977}, + {-6.441117, 54.377747}, + {118.6351776123, 24.924545288086}, + {52.129898, 36.597061}, + {-0.60905456542969, 35.715866088867}, + {-83.061302, 34.701322}, + {-58.490026, -34.632617}, + {-64.420991, 44.453954}, + {-73.532180786133, 5.6325531005859}, + {28.015823, 45.383148}, + {151.03655, -33.940024}, + {-75.160903930664, 40.12825012207}, + {114.071049, 22.347163}, + {-82.231961, 34.691119}, + {22.373887, 61.230011}, + {-9.188654, 52.621466}, + {8.8364410400391, 50.515823364258}, + {-95.469131469727, 30.171890258789}, + {-0.38356, 49.327927}, + {-87.697677612305, 41.778945922852}, + {131.9766998291, 34.022598266602}, + {46.681594848633, 24.644393920898}, + {19.614536, 52.471207}, + {5.406647, 43.464661}, + {-27.213135, 38.664551}, + {-76.918716430664, -12.217483520508}, + {104.27192687988, 52.21321105957}, + {11.030103, 45.426235}, + {-80.255819, 26.846711}, + {-4.933411, 40.205978}, + {30.230941772461, 60.576553344727}, + {114.27085876465, 22.316665649414}, + {7.437973, 43.743576}, + {18.588181, 54.352112}, + {-4.229965, 38.0056}, + {29.397815, 37.396319}, + {-43.442374, -22.882871}, + {16.411171, 68.79467}, + {4.7220611572266, 52.905349731445}, + {1.23699, 52.603799}, + {-116.86225891113, 47.70881652832}, + {100.45784, 5.265427}, + {13.240585, 65.828705}, + {-43.927681, -19.897088}, + {14.950869, 51.771044}, + {51.463394165039, 35.718612670898}, + {-4.4872283935547, 48.391342163086}, + {-82.252578735352, 28.256149291992}, + {14.244766, 50.133591}, + {-58.555068969727, -34.62272644043}, + {7.153642, 51.266271}, + {-3.64442, 40.4496}, + {39.63249206543, 52.573013305664}, + {14.521865844727, 37.652206420898}, + {12.342728, 45.447556}, + {132.734413, 33.809395}, + {129.31893, 35.557495}, + {13.517990112305, 52.317581176758}, + {30.062026977539, 31.308975219727}, + {-74.227066040039, -13.15544128418}, + {121.08238220215, 14.55207824707}, + {101.71211242676, 3.0933380126953}, + {-157.984854, 21.396313}, + {139.698715, 35.688675}, + {-76.687317, 39.266804}, + {-42.729124, -22.733586}, + {-1.2476348876953, 51.622695922852}, + {15.23323059082, -4.3444061279297}, + {-98.411883, 29.457779}, + {-93.243584, 44.116785}, + {-74.196853637695, 40.553970336914}, + {4.810533, 51.822261}, + {139.82093811035, 35.752944946289}, + {77.656173706055, 12.886276245117}, + {29.868392944336, 56.048812866211}, + {0.266188, 49.500505}, + {77.470779418945, 12.905502319336}, + {10.800247192383, 44.563980102539}, + {153.06427, -26.400833}, + {77.887345, 29.882584}, + {11.139450073242, 51.787490844727}, + {-4.283282, 53.186428}, + {48.009567260742, 31.709976196289}, + {121.47239685059, 25.056381225586}, + {4.4474029541016, 51.243667602539}, + {-5.8097076416016, 54.713973999023}, + {-7.4123382568359, 32.060165405273}, + {127.15370178223, 37.60139465332}, + {77.065658569336, 28.422317504883}, + {13.116989135742, 55.603866577148}, + {103.945541, 32.508774}, + {8.587189, 45.417481}, + {153.042468, -27.665581}, + {23.528458, 47.639877}, + {121.24580383301, 25.012435913086}, + {49.131546020508, 55.792007446289}, + {-49.249733, -25.343106}, + {38.59016418457, 47.24739074707}, + {119.460251, -5.37822}, + {78.443527, 17.451096}, + {-83.345718383789, 41.195297241211}, + {25.138778686523, 54.646682739258}, + {110.447215, -7.017487}, + {1.7433929443359, 48.968124389648}, + {126.82685852051, 37.490158081055}, + {11.727905, 47.156067}, + {138.21968078613, 34.812240600586}, + {12.664352, 45.94606}, + {9.283859, 45.512924}, + {98.642807006836, 3.5739898681641}, + {120.335312, 22.636871}, + {30.305884, 60.067062}, + {-99.214119, 19.324772}, + {5.377565, 43.2916}, + {27.041476, 50.084611}, + {-0.036392211914062, 47.303695678711}, + {7.844805, 52.258359}, + {36.158065795898, 36.564559936523}, + {14.40788269043, 40.917892456055}, + {136.9164276123, 35.373916625977}, + {65.483322143555, 57.128219604492}, + {72.970963, 19.205246}, + {-81.729813, 30.393906}, + {22.562093, 55.489099}, + {37.531356811523, 55.800247192383}, + {-47.895584106445, -22.007675170898}, + {-3.6000823974609, 51.441421508789}, + {-85.709839, 43.541565}, + {-117.065887, 32.980118}, + {14.458694, 48.684128}, + {102.39189147949, 12.369918823242}, + {-122.188566, 47.72049}, + {2.3036956787109, 48.843154907227}, + {147.36991882324, -35.110244750977}, + {-87.684217, 41.904575}, + {-1.365542, 54.82011}, + {15.885309, 50.260735}, + {108.20777893066, -7.3752593994141}, + {140.156021, 37.996216}, + {38.104462, 56.406455}, + {-82.391281, 32.747498}, + {-2.136703, 57.123825}, + {-73.970108, 40.755335}, + {0.31929016113281, 51.87126159668}, + {-113.27748, 53.440506}, + {12.526474, 55.722656}, + {-99.075394, 19.529915}, + {130.5704498291, 31.61247253418}, + {-121.418399, 38.603568}, + {-3.584528, 40.455065}, + {-4.2043304443359, 55.800247192383}, + {98.396661, 9.715968}, + {-2.3709869384766, 51.401596069336}, + {12.416611, 51.358566}, + {12.548572, 41.891681}, + {39.673691, -4.054184}, + {25.158006, 43.343812}, + {13.64358, 68.178469}, + {13.381145, 52.504525}, + {112.874908, -6.902161}, + {120.81047058105, 28.026809692383}, + {139.531174, 35.793686}, + {3.2073211669922, 48.286972045898}, + {104.911194, 11.584396}, + {118.93043518066, 33.622970581055}, + {121.47789001465, 24.94514465332}, + {139.56550598145, 35.478286743164}, + {6.333618, 51.251358}, + {16.183547973633, 52.527694702148}, + {39.187545776367, 21.477584838867}, + {5.918712, 51.839161}, + {139.895645, 35.645142}, + {16.937485, 59.624176}, + {87.869338989258, 23.21891784668}, + {-4.427543, 40.227828}, + {120.62370300293, 14.181289672852}, + {24.881765, 60.213451}, + {110.416557, -6.979406}, + {13.767929077148, 51.011581420898}, + {14.410629272461, 41.691055297852}, + {73.894729614258, 20.157852172852}, + {7.72486, 48.585369}, + {121.49231, 31.302109}, + {30.443801879883, 50.441665649414}, + {55.796127319336, 25.65788269043}, + {5.7794952392578, 36.707382202148}, + {-1.210306, 54.69325}, + {76.626205444336, 12.297134399414}, + {19.788936, 45.264646}, + {77.145653, 28.67981}, + {80.155106, 7.328339}, + {-118.056227, 33.870308}, + {-2.991708, 56.533594}, + {13.028641, 45.767441}, + {-108.483879, 45.784355}, + {8.077354, 43.899651}, + {2.34407, 49.036331}, + {1.2627410888672, 47.618179321289}, + {-114.020231, 51.054522}, + {-94.67775, 39.131104}, + {-1.1583709716797, 52.581253051758}, + {-46.646274, -23.501258}, + {139.70558166504, 35.660934448242}, + {6.808377, 53.431147}, + {15.939102172852, 41.906661987305}, + {-117.897785, 33.770544}, + {77.504425, 13.066177}, + {-122.56416320801, 45.507431030273}, + {13.614464, 47.647362}, + {2.41319, 48.816111}, + {120.398483, 22.587891}, + {99.965965, 13.839962}, + {-96.34391784668, 30.137557983398}, + {-122.202809, 37.747713}, + {-86.080276, 39.637784}, + {-0.079099, 47.344329}, + {50.142288208008, 37.188034057617}, + {126.386238, 34.790724}, + {-13.58528137207, 9.6700286865234}, + {135.731449, 35.017891}, + {77.671279907227, 27.507705688477}, + {78.366165161133, 17.464828491211}, + {13.773422241211, 56.242446899414}, + {103.854996, 1.300369}, + {113.9412689209, 22.289199829102}, + {106.93061828613, -6.6680145263672}, + {-1.113595, 53.980294}, + {-3.6907196044922, 40.265579223633}, + {121.46488, -30.742675}, + {-0.20128, 51.244869}, + {120.997396, 14.564117}, + {-9.1152191162109, 38.761825561523}, + {39.811478, 21.444168}, + {-75.820956, 44.6612}, + {30.397568, 59.872971}, + {-77.421883, 35.842408}, + {-94.132919311523, 37.08366394043}, + {140.00633239746, 36.865310668945}, + {88.398056030273, 22.59407043457}, + {108.004125, 13.977839}, + {2.1828460693359, 41.398544311523}, + {135.418167, 34.459763}, + {136.832426, 35.20569}, + {118.76564025879, 31.970901489258}, + {21.00747, 52.223848}, + {100.608961, 13.822077}, + {77.700119018555, 12.953567504883}, + {1.080231, 46.095337}, + {8.6057281494141, 56.268539428711}, + {110.42289733887, -6.9866180419922}, + {16.649282, 54.097193}, + {-83.039071, 42.599568}, + {8.9929962158203, 44.395065307617}, + {103.608546, 1.53186}, + {2.019446, 41.315249}, + {25.391922, 36.366577}, + {20.926056, 52.247467}, + {120.98213195801, 14.670181274414}, + {7.269653, 43.696884}, + {-87.843695, 42.596334}, + {-1.308403, 50.920944}, + {31.07551574707, -17.875442504883}, + {-74.114456176758, 44.893569946289}, + {37.615127563477, 55.893630981445}, + {-46.372604370117, -23.419418334961}, + {-88.091812133789, 41.535873413086}, + {-3.2512664794922, 40.61164855957}, + {-57.035228, -37.34714}, + {138.906327, 35.116425}, + {-99.088097, 19.630508}, + {-82.454452514648, 28.06526184082}, + {-83.196029663086, 42.469711303711}, + {-119.217, 34.220156}, + {-149.866562, -17.480621}, + {-76.628952026367, 39.289169311523}, + {-101.628342, 21.127121}, + {15.293655395508, 37.06169128418}, + {-100.94993591309, 25.405197143555}, + {-88.080368, 42.127508}, + {-99.141311645508, 19.51789855957}, + {-86.665237, 30.430453}, + {28.680153, 41.018486}, + {11.457108, 47.118215}, + {11.390762329102, 44.498062133789}, + {120.54679870605, 14.900894165039}, + {13.086358, 55.720764}, + {31.965122, 41.37022}, + {11.061172, 33.588914}, + {7.6197052001953, 48.064498901367}, + {55.195999, 37.246399}, + {8.547936, 49.703693}, + {10.640488, 55.075836}, + {47.969741821289, 29.290237426758}, + {23.282089233398, 42.653732299805}, + {-97.783288, 30.471914}, + {135.821915, 34.730759}, + {106.82350158691, -6.2203216552734}, + {139.77424621582, 35.69938659668}, + {8.7114715576172, 51.688613891602}, + {77.016809, 28.483331}, + {139.62181091309, 35.904006958008}, + {10.690383911133, 50.92643737793}, + {28.024063110352, -26.052017211914}, + {-9.345932, 38.788114}, + {-46.882095336914, -23.599319458008}, + {7.311205, 47.75165}, + {57.477986, -20.270885}, + {-71.322281, 43.826798}, + {76.389999389648, 27.971878051758}, + {-80.985559, 35.143204}, + {48.12629699707, 29.106216430664}, + {19.069366, 50.230364}, + {55.772657, 24.20594}, + {12.701797, 53.326035}, + {121.51359558105, 25.089340209961}, + {103.71849060059, 1.3492584228516}, + {72.837982, 18.993988}, + {120.294656, 22.629542}, + {8.707208, 51.748351}, + {30.950546264648, -29.886245727539}, + {2.486693, 48.860792}, + {28.22868347168, -26.020431518555}, + {-1.496605, 55.111582}, + {88.391189575195, 22.592697143555}, + {24.096671, 56.943491}, + {2.6291656494141, 39.746475219727}, + {43.378829956055, 41.837997436523}, + {60.739975, 54.336319}, + {-84.522528, 37.996302}, + {60.793533, 54.404984}, + {-87.238998413086, 41.43424987793}, + {-3.372953, 40.496467}, + {-87.68983, 41.909409}, + {12.027969360352, 53.295364379883}, + {-1.380876, 53.921279}, + {135.490167, 34.698454}, + {31.012554, 31.09117}, + {27.13454, 38.33335}, + {2.4478912353516, 41.85173034668}, + {106.922594, -6.221053}, + {19.892807006836, 44.261856079102}, + {-67.974472045898, 10.183639526367}, + {-74.093856811523, 4.6891021728516}, + {-97.80805, 30.275472}, + {37.784042358398, 55.658798217773}, + {-96.909195, 32.975515}, + {120.2611541748, 23.264236450195}, + {-93.114232, 44.971063}, + {131.933441, 43.166313}, + {-47.113495, -22.887268}, + {28.19091, -25.747825}, + {-97.679125, 30.49659}, + {8.2761383056641, 53.14567565918}, + {78.109359741211, 10.947189331055}, + {140.04203796387, 35.472793579102}, + {98.402481079102, 7.8820037841797}, + {78.03108215332, 11.392135620117}, + {8.068892, 45.321793}, + {6.8190765380859, 47.500076293945}, + {51.922531, 47.105942}, + {110.83763122559, -7.6705169677734}, + {-2.99556, 56.4608}, + {145.412515, -37.803968}, + {77.312850952148, 28.392105102539}, + {72.967209, 19.224838}, + {139.507484, 36.165276}, + {35.693387, 31.193417}, + {-118.162074, 33.95036}, + {12.895889282227, 61.26594543457}, + {109.756508, -7.718582}, + {13.014784, 55.597035}, + {5.678651, 52.014934}, + {99.691724, 7.56411}, + {103.8599395752, 1.4797210693359}, + {114.13627624512, 22.556991577148}, + {-2.5234222412109, 53.407974243164}, + {-58.372593, -34.598179}, + {29.134529, 40.960813}, + {137.94502258301, 36.212997436523}, + {-3.5121917724609, 40.317764282227}, + {121.460724, 25.127106}, + {119.75544, 36.366463}, + {-97.11305, 31.97535}, + {121.51084899902, 25.024795532227}, + {104.26094055176, 52.232437133789}, + {100.47065734863, 6.8685150146484}, + {1.119145, 51.802071}, + {71.321182250977, 51.294479370117}, + {-0.25062561035156, 51.514205932617}, + {57.685776, -20.22789}, + {-1.541334, 38.320662}, + {140.74791, 37.140656}, + {7.668229, 52.252579}, + {-17.023544, 14.563065}, + {-8.854181, 42.501183}, + {3.7552642822266, 43.44612121582}, + {-79.925537, 33.621597}, + {53.984756469727, 26.54914855957}, + {-112.118631, 33.504503}, + {38.20996, 45.348718}, + {51.468887329102, 35.67741394043}, + {4.27946, 52.087692}, + {120.64430236816, 24.174728393555}, + {17.026442, 51.148017}, + {11.962373, 57.644425}, + {-1.083526, 37.610323}, + {50.090103149414, 40.536117553711}, + {77.630081176758, 12.976913452148}, + {139.63829, 35.711288}, + {26.073988, 61.845474}, + {-0.10780334472656, 51.55403137207}, + {16.292037963867, 41.151351928711}, + {-99.358291625977, 19.29817199707}, + {-83.046693, 34.72597}, + {-124.205786, 49.528938}, + {-117.614136, 33.600311}, + {139.72206115723, 35.890274047852}, + {80.908126831055, 16.201400756836}, + {103.800545, 1.339645}, + {-43.094695, -22.914643}, + {17.281865, 40.594861}, + {19.467086791992, 63.577194213867}, + {113.9330291748, 22.543258666992}, + {-9.107677, 38.786868}, + {-89.079208374023, 43.109664916992}, + {67.074966, 24.921112}, + {135.49507141113, 34.709243774414}, + {23.291702270508, 42.66471862793}, + {105.78186, 20.968437}, + {139.630051, 35.489731}, + {18.481728, -33.79962}, + {6.654704, 51.462021}, + {6.930984, 51.025733}, + {7.1088409423828, 50.713577270508}, + {6.689234, 50.894985}, + {7.000992, 50.943746}, + {6.622426, 51.214357}, + {6.984635, 50.937108}, + {7.0731353759766, 51.043167114258}, + {6.546773, 51.329694}, + {6.957814, 50.893056}, + {6.9104, 50.820007}, + {6.7099, 50.916824}, + {6.989365, 50.917099}, + {6.794578, 51.127412}, + {6.953487, 50.94429}, + {7.087544, 51.0148}, + {7.139732, 50.800951}, + {6.846886, 50.63839}, + {29.053314, 40.189551}, + {8.545803, 47.414058}, + {8.539943, 47.378205}, + {7.067642, 53.432694}, + {-0.798061, 44.676676}, + {139.71382141113, 35.688400268555}, + {22.971062, 63.09586}, + {1.5991973876953, 48.019180297852}, + {18.046074, 52.200852}, + {175.316566, -37.703251}, + {120.848659, 24.683635}, + {89.750748, 23.638458}, + {-66.93539, 18.471076}, + {60.749588012695, 55.774154663086}, + {100.411949, 13.823204}, + {135.68458557129, 34.775161743164}, + {-43.958853, -19.951419}, + {103.130142, 5.347748}, + {-83.228989, 42.292191}, + {-1.827565, 48.246367}, + {19.846029, 41.347389}, + {120.99174499512, 14.536972045898}, + {54.528522, 24.390956}, + {6.6927337646484, 51.282119750977}, + {-43.462600708008, -22.754745483398}, + {-93.833539, 41.59922}, + {37.637100219727, 55.807113647461}, + {55.853805541992, 24.196701049805}, + {20.854488, 52.256543}, + {6.5979766845703, 48.527297973633}, + {79.011611938477, 20.947494506836}, + {35.892677, 54.477541}, + {-1.283115, 52.995533}, + {1.6596221923828, 48.841781616211}, + {7.5167083740234, 50.246658325195}, + {35.26474, 47.888718}, + {30.395997, 40.777556}, + {2.245814, 49.100266}, + {7.4411773681641, 52.273635864258}, + {28.812057, 47.035904}, + {28.83430480957, 47.042770385742}, + {32.712478637695, 51.279373168945}, + {127.83897399902, 36.79801940918}, + {16.345596313477, 48.178482055664}, + {27.444206, -27.120711}, + {-83.630676, 32.616348}, + {23.298568725586, 42.66471862793}, + {-81.614657, 42.76742}, + {22.418977, 38.133548}, + {-52.11404, -21.775589}, + {-0.159076, 51.475867}, + {17.271652, 59.617539}, + {12.594452, 44.055176}, + {-70.23576, 41.65091}, + {135.90019226074, 34.267044067383}, + {51.479874, 25.19577}, + {84.876937866211, 56.481399536133}, + {28.443604, 57.825165}, + {31.329574584961, 30.055160522461}, + {130.404282, 33.574356}, + {83.329238891602, 21.727523803711}, + {-80.345077514648, 26.685104370117}, + {24.81102, 60.276718}, + {-5.833511, 43.272629}, + {-13.662511, 28.929149}, + {107.06245422363, -6.7737579345703}, + {10.811233520508, 63.423385620117}, + {-0.250353, 51.461747}, + {39.787673950195, 47.088088989258}, + {76.758041381836, 30.756912231445}, + {-72.609329, -38.757706}, + {4.851249, 45.753201}, + {-79.540328979492, 8.9916229248047}, + {127.084647, 36.796712}, + {-97.707308, 30.28664}, + {30.71863, 36.916318}, + {5.156217, 52.35878}, + {139.56687927246, 35.614242553711}, + {44.482956, 48.753204}, + {98.818071, 18.602949}, + {78.020095825195, 9.5876312255859}, + {136.81617736816, 35.174789428711}, + {-79.312362670898, 37.297897338867}, + {26.213178, -29.099387}, + {23.622665, 46.779723}, + {16.751828, 50.916842}, + {-84.377191, 33.848438}, + {140.33317565918, 35.568923950195}, + {-77.321090698242, 42.925643920898}, + {-46.661891, -23.611476}, + {28.359833, -25.791779}, + {13.129348754883, 50.651779174805}, + {46.632579, 24.835281}, + {24.707565307617, 45.971603393555}, + {-4.029648, 5.363388}, + {106.07231140137, 38.484420776367}, + {9.1481781005859, 45.45524597168}, + {31.343025, 30.100825}, + {16.3274, 48.200455}, + {18.336868286133, 50.14778137207}, + {11.099633, 46.151412}, + {16.997909545898, 41.008529663086}, + {121.57814025879, 25.083847045898}, + {29.107028, 41.027256}, + {120.37101745605, 30.31608581543}, + {30.406723022461, 59.942092895508}, + {37.74147, 55.700912}, + {10.182266235352, 49.040908813477}, + {-2.3421478271484, 53.087997436523}, + {12.338333129883, 43.080825805664}, + {8.937071, 39.372992}, + {-6.798019, 54.437943}, + {15.378372, 47.032723}, + {78.341445922852, 17.493667602539}, + {-70.551041, -33.459274}, + {-73.960648, 40.857468}, + {108.5538482666, -6.6996002197266}, + {139.69596862793, 35.627975463867}, + {-122.0890045166, 37.399520874023}, + {61.447376, 55.143564}, + {10.946345, 51.805132}, + {2.2817230224609, 48.867874145508}, + {-1.1624908447266, 44.631271362305}, + {8.096213, 48.571249}, + {28.262329, 61.067848}, + {-9.0589141845703, 42.586441040039}, + {-1.556625, 53.135605}, + {5.9278106689453, 43.076705932617}, + {16.449049, 48.271411}, + {-112.25898742676, 33.596878051758}, + {-1.701864, 48.107101}, + {-3.354263, 52.096481}, + {-2.9079437255859, 43.246994018555}, + {-4.593887, 55.890884}, + {13.417739868164, 42.597427368164}, + {-89.547500610352, 37.211380004883}, + {13.513870239258, 49.435043334961}, + {14.341084, 45.339313}, + {61.913091, 56.41904}, + {-0.293655, 47.513809}, + {-2.5783538818359, 51.445541381836}, + {61.428059, 55.11412}, + {145.942612, -38.469814}, + {-4.0532684326172, 56.127090454102}, + {24.345016479492, 44.113540649414}, + {22.990298, 40.605534}, + {28.738652, -24.492095}, + {15.591884, 44.087272}, + {92.957382202148, 55.996627807617}, + {25.518819, 41.063842}, + {3.0933380126953, 50.60920715332}, + {37.725676, 59.197086}, + {-73.265762329102, 41.323013305664}, + {4.867517, 45.708749}, + {23.668671, 61.499405}, + {18.493786, 45.049794}, + {2.5687408447266, 49.003829956055}, + {2.256317, 42.940063}, + {45.151748657227, 54.233322143555}, + {12.165299, 43.528519}, + {-86.881733, 12.419741}, + {101.77116394043, 2.9463958740234}, + {11.328908, 49.961701}, + {-3.762765, 40.324842}, + {4.1697, 50.761266}, + {29.349268, -28.72779}, + {-4.271297, 50.60298}, + {-93.365249633789, 42.895431518555}, + {10.342484, 55.094833}, + {-118.60359191895, 34.228591918945}, + {22.909927368164, 39.000778198242}, + {104.62074279785, 28.769760131836}, + {14.933853149414, 47.549514770508}, + {31.404643, -27.310574}, + {-6.1022186279297, 43.542251586914}, + {118.15315246582, 24.519424438477}, + {-9.0314483642578, 54.10285949707}, + {28.625564575195, 55.532455444336}, + {72.95539855957, 19.258346557617}, + {121.11946105957, 14.624862670898}, + {2.2817230224609, 45.52116394043}, + {11.79313659668, 45.066604614258}, + {102.80250549316, 17.407150268555}, + {0.186781, 48.013095}, + {-96.81770324707, 32.814102172852}, + {110.09330749512, 23.277969360352}, + {-80.210496, 37.242967}, + {111.43775939941, 30.38200378418}, + {-75.674514770508, 39.712142944336}, + {16.877059936523, 48.755264282227}, + {-89.541321, 43.019028}, + {30.335999, 59.9366}, + {-0.36460876464844, 53.730697631836}, + {135.62278747559, 34.799880981445}, + {0.78483581542969, 49.68635559082}, + {43.564224243164, 43.616409301758}, + {112.72315979004, -7.4233245849609}, + {101.36441, 1.748775}, + {100.291789, 13.62299}, + {14.034786, 50.247574}, + {2.0359039306641, 41.508407592773}, + {13.620987, 45.940704}, + {73.883194, 18.484909}, + {121.20460510254, 30.993118286133}, + {-82.959823608398, 39.979934692383}, + {1.2874603271484, 43.733139038086}, + {-76.701737, 39.248657}, + {-106.568756, 35.080032}, + {-89.275588989258, 44.426651000977}, + {100.534816, 13.701833}, + {12.410202, 52.268867}, + {36.364059448242, 55.532455444336}, + {83.010635375977, 25.317306518555}, + {120.82557678223, 32.95280456543}, + {10.788697, 45.125118}, + {10.765572, 59.920807}, + {18.48518371582, -34.033584594727}, + {-2.6717376708984, 53.348922729492}, + {11.210614, 49.295248}, + {120.69648742676, 23.762741088867}, + {10.049057, 52.128067}, + {78.83171081543, 14.46418762207}, + {123.40049743652, 41.789932250977}, + {93.247146606445, 55.87028503418}, + {9.725656, 52.406438}, + {10.495376586914, 52.765274047852}, + {-1.256561, 50.912018}, + {-70.39166, -23.590489}, + {139.56001281738, 35.833969116211}, + {4.394532, 36.690216}, + {129.72587585449, 33.208236694336}, + {-74.350662231445, 4.8154449462891}, + {-101.032791, 35.00084}, + {-81.957755, 27.997675}, + {-43.297805786133, -22.172470092773}, + {10.226211547852, 56.17790222168}, + {-74.945297, 45.031684}, + {-119.05815124512, 34.168167114258}, + {-103.681975, 48.14003}, + {101.72035217285, 3.1647491455078}, + {2.406143, 48.792069}, + {26.142654418945, 44.528274536133}, + {-4.453166, 37.292969}, + {9.935725, 53.56055}, + {-0.144138, 51.498184}, + {9.316739, 48.826211}, + {-97.714462280273, 20.944747924805}, + {-21.924397, 64.124645}, + {-0.82466125488281, 51.320571899414}, + {72.565383911133, 23.092575073242}, + {35.526835, 38.732579}, + {37.162936, 56.739199}, + {77.352676391602, 28.611831665039}, + {24.10293, 56.952438}, + {7.2695159912109, 46.875228881836}, + {103.78303527832, 0.91941833496094}, + {-67.126461, 18.297045}, + {29.526443481445, 40.781936645508}, + {76.642684936523, 10.774154663086}, + {74.891738891602, 12.872543334961}, + {42.003479, 45.126343}, + {11.363296508789, 45.495071411133}, + {12.135315, 48.545151}, + {103.03184509277, 5.2191925048828}, + {-99.8968, 36.708631}, + {61.272811889648, 54.589004516602}, + {106.804669, -6.155993}, + {139.7989654541, 35.772171020508}, + {12.003424, 57.486273}, + {151.158066, -33.740921}, + {139.61082458496, 35.40412902832}, + {12.378158569336, 55.737075805664}, + {103.850784, 1.280594}, + {107.603335, -6.882444}, + {119.94529724121, 32.465286254883}, + {-113.981747, 51.08353}, + {20.41877746582, 44.694442749023}, + {76.900864, 9.538193}, + {-46.553638, -23.721487}, + {0.21903991699219, 44.506301879883}, + {-101.28089904785, 20.14274597168}, + {30.57312, 39.765931}, + {-0.067876, 51.542607}, + {-3.674669, 40.359478}, + {50.112075805664, 26.325302124023}, + {6.112608, 52.185566}, + {-0.413864, 51.49205}, + {103.18428039551, 15.150833129883}, + {-75.16104, 39.952101}, + {27.385841, 37.049328}, + {-5.806274, 54.84993}, + {-0.355203, 50.982661}, + {32.867661, 39.90303}, + {12.424101, 45.421163}, + {10.182724, 36.800308}, + {51.507339477539, 25.67985534668}, + {-71.547933, 42.19549}, + {139.64653015137, 35.844955444336}, + {-106.43486022949, 23.243637084961}, + {19.442367553711, 51.733932495117}, + {119.853274, -3.100913}, + {0.099564, 51.777878}, + {115.199127, -8.708115}, + {-81.984786987305, 29.776382446289}, + {-96.007198, 35.905695}, + {104.87205505371, -4.8360443115234}, + {-99.988002, 25.596453}, + {19.468460083008, 51.760025024414}, + {-91.527579, 14.537306}, + {121.595306, 25.048828}, + {73.094559, 33.617935}, + {102.505755, 13.684521}, + {53.063736, 36.583786}, + {30.377609, 59.927124}, + {9.20311, 45.689163}, + {49.969256, 40.387803}, + {35.919774, 31.972938}, + {-1.876333, 53.86976}, + {80.246658, 13.070297}, + {13.865776, 44.874945}, + {25.450062, 36.405076}, + {73.11882019043, 26.325302124023}, + {135.54862976074, 34.493637084961}, + {47.527991, 51.904358}, + {-78.549843, -0.334854}, + {4.5435333251953, 50.423812866211}, + {106.78916931152, -6.1708831787109}, + {-1.774864, 51.085739}, + {37.639846801758, 41.093673706055}, + {130.764999, 32.807236}, + {9.954269, 53.63989}, + {16.355209350586, 48.208694458008}, + {106.723526, -6.340347}, + {14.321985, 51.888054}, + {10.646375, 51.719024}, + {8.7389373779297, 50.160140991211}, + {-55.720367, -12.541809}, + {-3.530502, 50.477371}, + {140.03929138184, 35.91911315918}, + {34.895623, 32.05393}, + {19.06615, 51.578958}, + {28.073408, -26.10111}, + {30.543134, 50.417342}, + {37.932357788086, 55.793380737305}, + {10.627212524414, 44.697189331055}, + {-1.442642, 53.384354}, + {31.558823, 30.432923}, + {45.430527, 50.116883}, + {-74.069183, 4.728399}, + {7.9039764404297, 48.46549987793}, + {-0.17509460449219, 46.463241577148}, + {120.915298, 14.09523}, + {100.668612, 14.111094}, + {-5.6696319580078, 41.994552612305}, + {-0.958969, 51.34996}, + {9.040878, 45.668289}, + {100.55854797363, 13.894271850586}, + {-99.167404174805, 19.401168823242}, + {32.435761, 37.850647}, + {10.785140991211, 52.313461303711}, + {2.370832, 48.836056}, + {-1.851328, 50.732397}, + {-76.491673, 39.320483}, + {80.093078, 44.171952}, + {-89.217911, 13.73497}, + {106.819839, -6.196976}, + {3.3364105224609, 6.6075897216797}, + {-123.222365, 45.007946}, + {16.077255, 53.810898}, + {-78.705521, 35.669251}, + {9.139664, 45.451126}, + {4.928643, 45.729119}, + {3.0411529541016, 50.550155639648}, + {96.169509887695, 4.2276763916016}, + {0.11329650878906, 51.468887329102}, + {25.582352, -33.857803}, + {105.4419708252, 10.37727355957}, + {59.556198, 36.283951}, + {153.11302185059, -27.400588989258}, + {135.786667, 34.647904}, + {-76.826705932617, 17.988052368164}, + {37.723617553711, 55.731582641602}, + {8.496323, 40.294418}, + {126.95594787598, 37.306137084961}, + {91.124038696289, 23.569107055664}, + {140.436172, 36.374588}, + {-87.042617797852, 35.590896606445}, + {-1.933214, 50.820259}, + {-90.731576, 14.556238}, + {91.656875610352, 53.686752319336}, + {113.81629943848, 22.783584594727}, + {139.548798, 35.750198}, + {-2.151261, 55.121841}, + {-68.12141418457, -16.488418579102}, + {8.353978, 49.657421}, + {-3.01672, 39.997787}, + {78.41423034668, 17.36457824707}, + {2.402502, 48.92979}, + {14.386597, 50.458145}, + {8.726392, 44.83154}, + {119.43168640137, -5.1683807373047}, + {74.858475, 31.634903}, + {35.48687, 33.86879}, + {49.072083, 55.825208}, + {31.935195922852, 30.637435913086}, + {-0.721665, 50.801468}, + {5.7163238525391, 58.859939575195}, + {172.63504, -43.527145}, + {-3.245774, 40.557466}, + {5.824344, 43.473804}, + {21.264715, 52.103857}, + {-13.518007, 28.999323}, + {5.234429, 52.377268}, + {77.079391479492, 28.499221801758}, + {11.411495, 48.970331}, + {-0.117351, 51.501321}, + {-38.43483, -12.985001}, + {-16.789169311523, 28.144912719727}, + {7.456604, 9.077774}, + {98.968277, 18.767395}, + {-40.494918823242, -20.671463012695}, + {-105.46814, 28.186152}, + {-79.857139, -2.176657}, + {72.824695, 19.065724}, + {-65.619277954102, -27.580490112305}, + {134.992516, 34.648819}, + {-79.799423, -2.140733}, + {37.606659, 55.603638}, + {13.418701, 52.566147}, + {18.173676, 47.971573}, + {-51.13655090332, 0.11878967285156}, + {125.18028259277, 44.451370239258}, + {57.566299, 23.716736}, + {126.906909, 35.150099}, + {72.835922, 19.123306}, + {25.33011, 37.261518}, + {24.356458, 55.690842}, + {88.280869, 22.693405}, + {19.294052124023, 49.21257019043}, + {27.532424926758, -21.123275756836}, + {-99.21272277832, 19.53987121582}, + {-0.961645, 37.674524}, + {-2.64061, 51.022568}, + {11.526192, 48.086961}, + {77.675399780273, 11.426467895508}, + {140.653839, 35.893707}, + {54.374771118164, 24.500198364258}, + {2.454793, 48.90852}, + {153.129516, -27.662702}, + {47.042770385742, 34.284896850586}, + {-15.987167358398, 14.138717651367}, + {55.511315, 25.35863}, + {28.169631958008, -25.775985717773}, + {23.619918823242, 37.926864624023}, + {-75.598268, 39.728049}, + {83.07518, 54.93576}, + {59.121323, 36.636429}, + {87.6091, 23.398819}, + {88.022461, 23.162613}, + {85.580062866211, 24.397201538086}, + {-122.396621, 37.625427}, + {57.468452, -20.267029}, + {-8.628584, 41.137977}, + {-54.667856, -20.418767}, + {4.6176910400391, 51.442794799805}, + {139.45152282715, 35.507125854492}, + {-16.877286, 32.652258}, + {22.87971496582, 62.751846313477}, + {135.573212, 34.622246}, + {18.048477172852, 59.34196472168}, + {28.274156, -25.772831}, + {28.939881, 41.002543}, + {5.281006, 60.341503}, + {-5.741634, 54.652522}, + {-4.0203094482422, 5.3235626220703}, + {12.262714, 45.653867}, + {5.4911041259766, 50.98274230957}, + {47.874985, 29.266891}, + {3.542404, 43.316174}, + {28.30302, -25.78845}, + {6.7957305908203, 50.837173461914}, + {-71.014252, -33.701248}, + {100.491714, 13.668137}, + {-68.971756, 18.437668}, + {2.254532, 41.468445}, + {-1.155624, 52.959251}, + {-49.120559692383, -25.78010559082}, + {11.001663, 49.840164}, + {-99.280015, 36.070862}, + {101.52534484863, 3.0068206787109}, + {-92.141541, 32.529327}, + {138.975277, 35.110073}, + {-43.411957, -22.802561}, + {102.60749816895, 2.3709869384766}, + {-48.429794311523, -1.3602447509766}, + {52.513275, 36.492462}, + {121.021957, 14.632645}, + {84.254837036133, 24.865493774414}, + {-90.992202758789, 33.024215698242}, + {-98.239059448242, 18.989181518555}, + {8.549973, 47.36261}, + {120.87913513184, 30.910720825195}, + {75.688247680664, 22.617416381836}, + {120.75004577637, 30.765151977539}, + {153.113475, -30.314426}, + {32.866182, 39.933102}, + {88.432388305664, 22.57209777832}, + {54.459915, 24.54892}, + {37.590408, 55.789902}, + {-77.03433, -12.074296}, + {-3.5218048095703, 40.346603393555}, + {-58.416366577148, -34.647445678711}, + {50.560226, 26.130295}, + {77.193374633789, 28.647537231445}, + {125.93559265137, -8.7512969970703}, + {140.14778137207, 35.932846069336}, + {9.090561, 49.044777}, + {9.18663, 45.503246}, + {12.274303, 43.180904}, + {172.62199401855, -43.53401184082}, + {110.86235046387, -7.5524139404297}, + {127.056293, 37.909154}, + {80.240707397461, 13.077163696289}, + {79.392013549805, 28.37287902832}, + {-73.631057739258, 45.484085083008}, + {13.003716, 47.759581}, + {35.126724, 31.540375}, + {77.63273, 13.027983}, + {-90.091461, 30.375893}, + {-0.27397155761719, 53.770523071289}, + {-61.456985, 10.634003}, + {121.55342102051, 25.079727172852}, + {5.0516510009766, 43.81965637207}, + {114.227085, 22.320786}, + {41.884689331055, 42.498550415039}, + {26.971435, 42.201235}, + {-74.010282, 40.709545}, + {4.951069, 46.573804}, + {43.950119018555, 26.182479858398}, + {76.164779663086, 10.57502746582}, + {-90.104141, 37.977676}, + {30.621567, 50.441055}, + {140.38398742676, 35.762557983398}, + {18.37326, 47.60582}, + {131.606369, 33.239822}, + {29.137802124023, 66.168594360352}, + {51.515579223633, 25.325546264648}, + {11.986770629883, 57.404251098633}, + {-3.6742401123047, 40.518264770508}, + {-96.154403686523, 42.683944702148}, + {-1.441421, 54.539108}, + {126.863937, 37.55127}, + {16.553238, 59.628433}, + {31.098862, -17.815018}, + {-87.052375, 41.606453}, + {7.2008514404297, 51.276626586914}, + {8.4642791748047, 44.30305480957}, + {73.955154418945, 15.28678894043}, + {-99.225082397461, 19.266586303711}, + {-82.704391479492, 28.070755004883}, + {-103.55918884277, 42.276077270508}, + {-95.701568, 29.976737}, + {7.3780059814453, 51.549911499023}, + {-66.083107, 18.457375}, + {-99.119338989258, 19.421768188477}, + {136.005936, 35.024002}, + {67.043380737305, 24.921798706055}, + {-104.672471, 39.581452}, + {109.328641, -0.022985}, + {-86.194611, 39.767076}, + {117.15476989746, -0.48957824707031}, + {14.726665, 48.061777}, + {1.99629, 41.443546}, + {-47.19108581543, -23.07746887207}, + {-113.342712, 53.538812}, + {37.694778442383, 55.776901245117}, + {12.548448, 43.08989}, + {-0.192261, 51.107712}, + {123.5913848877, 13.259811401367}, + {-117.234639, 33.940548}, + {-4.1727447509766, 40.610275268555}, + {30.048733, -25.688586}, + {73.386611938477, 54.987258911133}, + {106.84485, -6.384118}, + {80.211411, 13.063431}, + {-71.430222, 41.868485}, + {-1.190747, 47.965929}, + {110.47096252441, -7.0182037353516}, + {-34.936017, -8.138367}, + {126.997634, 37.607289}, + {153.052096, -27.617656}, + {74.180718, 31.37764}, + {-71.385726928711, 41.877822875977}, + {138.941666, 35.291428}, + {9.8842620849609, 51.567764282227}, + {18.224208, 46.041877}, + {136.87397, 35.181541}, + {50.098583, 53.186156}, + {57.875977, 23.645325}, + {-96.957637, 33.330692}, + {14.282913208008, 40.895919799805}, + {100.6381, 13.846153}, + {79.505996704102, 11.349563598633}, + {6.058823, 50.050278}, + {118.5033416748, 31.686630249023}, + {28.003463745117, 41.02912902832}, + {13.888092, 49.165878}, + {139.11643981934, 34.955062866211}, + {-0.99769592285156, 51.606216430664}, + {52.972640991211, 36.180038452148}, + {34.235, 48.471451}, + {11.167108, 52.829975}, + {-5.9882354736328, 37.383041381836}, + {73.927296, 15.361241}, + {22.302193, 60.446408}, + {6.144793, 45.462117}, + {21.050491, 52.18483}, + {30.866775512695, 52.437057495117}, + {10.362286, 63.353763}, + {2.352448, 48.878174}, + {37.050704956055, 55.79475402832}, + {31.623457, -21.056673}, + {79.066544, 11.734772}, + {29.076831, 40.2043}, + {-2.5591278076172, 51.468887329102}, + {66.874465942383, 25.035781860352}, + {-71.225715, 42.477397}, + {16.366196, 48.231354}, + {100.645306, 13.719622}, + {4.7783660888672, 52.961654663086}, + {12.460556030273, 41.814651489258}, + {50.576248, 26.128922}, + {120.06614685059, 40.191421508789}, + {-120.097732, 34.464111}, + {2.1224212646484, 41.423263549805}, + {-46.261367797852, -23.442764282227}, + {-77.130019, -12.061373}, + {139.5613861084, 35.666427612305}, + {126.871069, 34.954862}, + {106.96083068848, -6.6899871826172}, + {140.88798522949, 38.28254699707}, + {-47.387151, -21.033595}, + {77.410354614258, 28.640670776367}, + {76.969528198242, 43.348617553711}, + {2.392616, 48.885384}, + {-2.6387786865234, 43.156356811523}, + {-74.061813, 4.722214}, + {13.43147277832, 52.61833190918}, + {37.248001, 56.057053}, + {121.233901, 24.957936}, + {101.722641, 3.241196}, + {-118.901017, 50.878865}, + {114.14039611816, 22.491073608398}, + {-46.909062, -24.238171}, + {9.2745208740234, 45.560989379883}, + {-49.18098449707, -25.502700805664}, + {5.181721, 48.764657}, + {39.635238647461, 46.545639038086}, + {117.094345, -0.510864}, + {27.873688, -26.204453}, + {-79.677071, 44.460038}, + {84.825668, 19.305038}, + {-73.84676, 40.919425}, + {135.94249, 34.995438}, + {81.617432, 28.058395}, + {76.08512878418, 12.626724243164}, + {141.337395, 43.092842}, + {17.898788452148, 59.38591003418}, + {-84.109268188477, 9.9460601806641}, + {77.577381, 13.001976}, + {-98.995917, 19.672386}, + {25.127792358398, 44.655990600586}, + {55.318222045898, 25.267868041992}, + {28.732204, 40.99803}, + {-80.295639038086, 25.726547241211}, + {135.583237, 34.646072}, + {14.563477, 56.903137}, + {35.176849, 31.8013}, + {-3.88649, 40.282517}, + {3.9832305908203, 45.05973815918}, + {35.589867, 33.826218}, + {80.205038, 13.031876}, + {-2.052212, 57.33387}, + {34.330215, 49.363175}, + {-85.322159, 34.997911}, + {0.28770446777344, 51.626815795898}, + {55.257797, 25.132065}, + {-2.281448, 53.497421}, + {-1.1885833740234, 48.350143432617}, + {7.607346, 52.418289}, + {74.273547, 31.468488}, + {113.69956970215, 34.765548706055}, + {9.881744, 62.657089}, + {44.951248168945, 31.973648071289}, + {140.945263, 37.633667}, + {22.372755, 51.065429}, + {135.254157, 34.729647}, + {120.27351379395, 23.117294311523}, + {5.3812408447266, 43.306045532227}, + {-82.333764, 27.793835}, + {75.685501098633, 22.609176635742}, + {-89.56672668457, 37.256698608398}, + {-98.859786987305, 19.243240356445}, + {-46.693954467773, -23.73664855957}, + {76.679763793945, 11.45393371582}, + {131.6072845459, 33.235702514648}, + {31.554108, 4.853897}, + {112.729013, -7.298005}, + {34.960948, 30.334629}, + {142.76802062988, 46.97135925293}, + {56.231460571289, 58.004379272461}, + {77.217636, 28.953781}, + {17.931747436523, 59.653701782227}, + {73.100967407227, 26.240158081055}, + {11.16828918457, 44.518661499023}, + {31.311724, 30.077544}, + {104.75395202637, 31.495742797852}, + {114.16236877441, 22.28645324707}, + {106.46919250488, 10.647811889648}, + {101.04194641113, 12.942581176758}, + {102.64320373535, 17.949600219727}, + {-8.4175872802734, 43.363723754883}, + {31.479191, -28.905557}, + {7.6471710205078, 11.15592956543}, + {139.711762, 35.709458}, + {99.98085, 9.393997}, + {-10.174026489258, 29.380874633789}, + {138.667374, 35.646172}, + {23.418045043945, 50.466384887695}, + {37.508011, 55.644894}, + {18.420639038086, -33.91960144043}, + {14.411781, 48.029247}, + {-96.28624, 30.581314}, + {58.464431762695, 23.61442565918}, + {2.218276, 41.810075}, + {102.511947, 18.107072}, + {46.928787, 24.663895}, + {77.121963500977, 12.633590698242}, + {-4.7769927978516, 55.635452270508}, + {57.524414, 22.924347}, + {37.637100219727, 55.770034790039}, + {16.068388, 45.835844}, + {24.166488647461, 45.798568725586}, + {130.34729, 33.587265}, + {74.342422485352, 31.513595581055}, + {-3.5822296142578, 40.460586547852}, + {80.478286743164, 26.53678894043}, + {72.866134643555, 19.071578979492}, + {-15.454330444336, 28.113327026367}, + {55.151596, 25.086594}, + {139.702148, 35.689087}, + {14.178785, 42.461148}, + {8.981835, 44.419059}, + {-91.412179, 17.474719}, + {12.567619, 55.676542}, + {-3.7058258056641, 40.551223754883}, + {-8.682527, 41.191706}, + {14.28883, 46.592888}, + {2.0372772216797, 41.350479125977}, + {9.211251, 48.784888}, + {18.372966, 59.733353}, + {5.961227, 59.48616}, + {8.3434295654297, 4.9527740478516}, + {-0.92429, 52.251696}, + {16.261673, 48.142744}, + {135.714904, 35.009995}, + {110.79917907715, -7.4741363525391}, + {12.392441, 49.204056}, + {4.805832, 51.159897}, + {51.353239, 35.711571}, + {88.425521850586, 22.584457397461}, + {106.5584564209, -6.1722564697266}, + {85.136489868164, 21.885452270508}, + {-101.6407, 21.156235}, + {32.420425, 15.606766}, + {-74.008484, 40.733795}, + {100.509773, 13.780228}, + {-76.935961, -12.217896}, + {21.003112, 52.083435}, + {12.243027, 41.825089}, + {12.388754, 51.716277}, + {24.864120483398, 42.103042602539}, + {15.296401977539, 40.876693725586}, + {77.853927612305, 12.788772583008}, + {18.523636, 50.453568}, + {86.298294067383, 20.204544067383}, + {19.178611, 50.285267}, + {17.625503540039, 59.523239135742}, + {30.914840698242, 29.948043823242}, + {7.940781, 48.082352}, + {86.216354, 20.81337}, + {126.84196472168, 37.650833129883}, + {27.529678344727, 53.821334838867}, + {74.48112487793, 32.624588012695}, + {-48.320955, -1.364264}, + {-118.28072, 33.935487}, + {-81.737594604492, 42.992935180664}, + {88.439255, 22.377777}, + {106.82891, -6.195379}, + {11.069412231445, 42.885818481445}, + {142.441864, 43.997498}, + {34.482650756836, 36.718368530273}, + {5.78738, 51.808424}, + {-0.85487365722656, 44.765853881836}, + {110.70795, -6.687913}, + {-55.823733, -9.969454}, + {5.30365, 52.292863}, + {114.15138244629, 22.327651977539}, + {-0.123033, 38.54054}, + {-3.63699, 40.546932}, + {7.6444244384766, 50.687484741211}, + {-114.650528, 32.685471}, + {-86.141052, 32.24762}, + {77.521591186523, 13.037338256836}, + {72.838669, 18.955536}, + {24.042892456055, 56.927719116211}, + {28.617324829102, 41.026382446289}, + {7.107162, 51.673965}, + {-99.38085, 18.699604}, + {-73.981247, 40.659569}, + {126.86668395996, 37.29377746582}, + {-78.890762329102, 35.073165893555}, + {-2.410812, 42.47818}, + {77.123337, 28.866234}, + {0.26435852050781, 51.471633911133}, + {-9.1481781005859, 38.741226196289}, + {13.527619, 42.109912}, + {37.88021, 40.988808}, + {110.08781433105, 34.495010375977}, + {29.168339, 40.98776}, + {-0.69282531738281, 39.470443725586}, + {6.689072, 49.718857}, + {139.52980041504, 36.169052124023}, + {-46.529864, -23.467571}, + {-79.771041870117, 43.480453491211}, + {-97.734604, 30.251389}, + {121.110633, 14.675674}, + {72.988357543945, 19.151229858398}, + {99.694747924805, 8.1539154052734}, + {-100.584418, 21.241784}, + {88.365097045898, 22.443008422852}, + {-80.29426574707, 39.25895690918}, + {73.121841, 33.604019}, + {18.761672, 50.308001}, + {26.025924682617, 44.50080871582}, + {-72.02018737793, -37.120742797852}, + {5.5693817138672, 43.29231262207}, + {77.275772094727, 12.729721069336}, + {42.037125, 52.139969}, + {100.87577819824, 14.358444213867}, + {12.250442504883, 45.518417358398}, + {151.198306, -33.920166}, + {112.79457092285, -7.2901153564453}, + {77.446060180664, 28.699722290039}, + {-46.224995, -23.9758}, + {139.680038, 35.73262}, + {106.838087, -6.384972}, + {-0.73127746582031, 6.5952301025391}, + {-93.167735, 44.937456}, + {11.274993, 51.464638}, + {29.04167175293, 41.106033325195}, + {92.954292, 55.996628}, + {35.23796081543, 0.54039001464844}, + {20.402298, 44.818726}, + {115.184952, -8.670847}, + {3.954392, 47.84436}, + {29.080452, 40.189333}, + {3.2595062255859, 48.896713256836}, + {102.43171691895, 17.170944213867}, + {-77.572402954102, 44.13688659668}, + {38.675308227539, 7.6650238037109}, + {24.334030151367, 62.569198608398}, + {9.282455, 45.566025}, + {37.607803, 55.607986}, + {-119.780699, 39.500264}, + {37.155019, 55.987786}, + {12.611151, 48.921276}, + {-99.185085, 19.280663}, + {-115.16624450684, 36.103134155273}, + {121.58226013184, 25.044021606445}, + {125.58265686035, 7.0800018310547}, + {79.037741, 21.115036}, + {120.643251, 22.942387}, + {-116.232948, 33.687172}, + {76.83219909668, 17.33024597168}, + {-55.657425, -27.087736}, + {135.719604, 35.032654}, + {99.525833129883, 14.02473449707}, + {139.740156, 35.630803}, + {12.022323, 51.422253}, + {136.10115, 35.723648}, + {-117.794294, 33.88417}, + {120.219185, 23.026631}, + {-88.249203, 41.809638}, + {39.278182983398, -6.7861175537109}, + {135.600815, 34.690704}, + {-76.590551, 39.364963}, + {121.54518127441, 25.107192993164}, + {103.594837, 1.38111}, + {138.35151672363, 36.252822875977}, + {174.643753, -36.88591}, + {-99.181137, 19.672394}, + {61.554336547852, 26.686477661133}, + {-5.9456634521484, 37.492904663086}, + {51.618576, 32.629516}, + {13.421859741211, 49.786605834961}, + {90.574722290039, 22.816543579102}, + {8.533103, 49.427334}, + {-1.8683624267578, 51.420822143555}, + {56.82746887207, 59.402389526367}, + {100.339987, 13.589197}, + {26.817759, 58.920996}, + {100.53108215332, 13.750076293945}, + {47.435531616211, 42.976455688477}, + {1.027711, 43.576977}, + {125.189896, 43.846664}, + {-3.9708709716797, 5.2878570556641}, + {-97.814849, 30.235084}, + {121.17576599121, 30.063400268555}, + {15.215927, 52.998459}, + {24.838027954102, 60.192031860352}, + {58.66081237793, 23.549880981445}, + {15.712509155273, 48.306198120117}, + {107.57469177246, -6.9605255126953}, + {139.98710632324, 36.451950073242}, + {0.44013977050781, 52.75016784668}, + {100.8062, 14.044423}, + {16.361524, 48.27096}, + {-71.277064, 42.368947}, + {12.472915649414, 41.914901733398}, + {120.6388092041, 24.169235229492}, + {70.938034057617, 30.973892211914}, + {139.8429107666, 35.872421264648}, + {21.252365112305, 43.976211547852}, + {22.411422729492, -5.8989715576172}, + {23.753128051758, 61.395034790039}, + {-87.17170715332, 14.085159301758}, + {37.591781616211, 55.735702514648}, + {-84.280792, 10.012115}, + {-3.6248016357422, 40.472946166992}, + {98.901034, 18.60161}, + {-70.250699, 43.66557}, + {114.16786193848, 22.302932739258}, + {-3.429925, 40.295334}, + {50.97908, 35.833511}, + {76.955795288086, 31.655044555664}, + {114.30931091309, 30.64567565918}, + {-1.7090606689453, 52.475509643555}, + {138.59596252441, -34.915237426758}, + {12.483901977539, 55.67253112793}, + {-73.070953, 41.345982}, + {113.867111, 22.585144}, + {38.783798217773, 37.148208618164}, + {55.16098, 37.240219}, + {16.910018920898, 56.942825317383}, + {-121.432846, 38.65361}, + {100.26391, 16.812878}, + {0.300407, 51.483994}, + {52.862777709961, 36.462936401367}, + {-89.602432250977, 39.772567749023}, + {-17.031319, 32.66461}, + {120.5948638916, 24.188461303711}, + {2.177902, 48.828049}, + {2.399094, 48.851669}, + {39.500656, 22.481657}, + {116.6219329834, 0.80680847167969}, + {139.958318, 35.707728}, + {29.453354, -25.781982}, + {127.3363494873, 36.34895324707}, + {30.210342407227, 59.994277954102}, + {103.90113830566, 1.3739776611328}, + {23.286209106445, 41.416397094727}, + {37.666974, 55.706988}, + {103.87367248535, 1.5044403076172}, + {-111.844012, 40.340865}, + {76.933822631836, 43.266220092773}, + {2.359127, 48.6459}, + {150.144978, -33.480804}, + {100.663605, 13.961563}, + {37.524147, 55.657768}, + {3.1977081298828, 6.4661407470703}, + {17.909774780273, 59.348831176758}, + {100.203552, 17.013016}, + {11.107864379883, 47.943649291992}, + {6.8602752685547, 6.3370513916016}, + {-3.000504, 43.331863}, + {100.535224, 13.727899}, + {6.136551, 43.044434}, + {-69.921063, 18.511216}, + {80.37529, 15.813446}, + {37.888491, 55.790588}, + {127.03559875488, 37.560195922852}, + {28.889018, 41.00301}, + {120.777791, 23.982762}, + {120.328445, 23.094635}, + {5.675131, 47.267305}, + {77.646835, 12.963455}, + {-149.386377, 61.451532}, + {48.149642944336, 41.32438659668}, + {80.202255, 12.960933}, + {127.0809173584, 37.319869995117}, + {82.459945678711, 19.112777709961}, + {130.65147399902, 32.576522827148}, + {40.277861, 64.534798}, + {4.5682525634766, 52.365646362305}, + {34.023971557617, 45.11604309082}, + {-104.998701, 39.734108}, + {141.300222, 38.436543}, + {35.062866, 32.687073}, + {-80.812731, 44.144306}, + {-1.688745, 52.692215}, + {121.042557, 14.408035}, + {73.661270141602, 33.377151489258}, + {-2.3970794677734, 53.64143371582}, + {3.5808563232422, 51.449661254883}, + {-1.6033172607422, 52.24479675293}, + {7.439804, 8.970337}, + {33.271409, 35.116654}, + {3.532448, 43.658982}, + {-77.34992980957, 40.455093383789}, + {8.563843, 45.672227}, + {111.463509, -0.035362}, + {102.38777160645, 15.244216918945}, + {-114.141745, 53.021602}, + {-0.705456, 42.268937}, + {-46.670608520508, -23.569107055664}, + {-73.766455, 43.852137}, + {107.429428, -6.445694}, + {102.61848449707, 17.953720092773}, + {-97.747921, 31.043056}, + {139.822224, 35.673754}, + {-101.22184753418, 19.726638793945}, + {27.171025, 38.441298}, + {140.27961730957, 37.384414672852}, + {12.481155395508, 45.786209106445}, + {78.037434, 30.316257}, + {-110.03562927246, 51.262893676758}, + {85.33561706543, 26.019058227539}, + {-0.19569396972656, 39.903030395508}, + {101.618042, 3.057632}, + {-5.636673, 43.538818}, + {9.2086029052734, 45.324783325195}, + {146.851371, -36.115014}, + {-121.751404, 38.546219}, + {31.403732299805, 29.758529663086}, + {-83.117752, 42.326202}, + {150.848593, -34.029777}, + {16.640853881836, 51.80534362793}, + {-5.955276, 37.386246}, + {32.419967651367, 15.59440612793}, + {-0.078964233398438, 51.499099731445}, + {116.4900970459, 34.166793823242}, + {-93.155136108398, 44.462356567383}, + {36.377792358398, 33.69026184082}, + {77.584763, 29.939117}, + {113.493262, 52.029665}, + {116.39946, 39.912643}, + {14.876865, 53.036156}, + {30.277907, 46.42122}, + {143.206787, 42.989502}, + {105.37055969238, 20.873336791992}, + {117.320938, 34.804688}, + {136.950073, 35.192642}, + {30.302856, 59.957455}, + {36.807632446289, -1.2970733642578}, + {3.123207, 36.736221}, + {139.624005, 35.910372}, + {24.942398071289, 60.172805786133}, + {108.507843, -6.581268}, + {111.44325256348, -7.7982330322266}, + {135.6427, 34.685211}, + {-3.5973358154297, 55.954055786133}, + {89.833145141602, 23.60481262207}, + {-6.588361, 6.447604}, + {7.349512, 51.806031}, + {28.243446, -25.759163}, + {13.518539, 52.494736}, + {76.499862670898, 30.780258178711}, + {33.374176, 35.116654}, + {-90.079492, 34.864114}, + {10.739822387695, 36.453323364258}, + {-3.6962127685547, 55.485763549805}, + {49.704208374023, 30.752792358398}, + {0.11741638183594, 51.788864135742}, + {86.067581176758, 20.918655395508}, + {109.5027923584, 18.24348449707}, + {-80.207847, 25.795244}, + {-87.818724, 42.703563}, + {52.276382446289, 55.667037963867}, + {-83.006516, 40.001945}, + {19.438247680664, 51.747665405273}, + {67.004471, 30.2314}, + {-0.477562, 39.472675}, + {151.304986, -33.683984}, + {8.2404327392578, 47.490463256836}, + {-7.8668975830078, 42.354354858398}, + {106.3387298584, -6.1681365966797}, + {120.61546325684, 24.332656860352}, + {-70.704574584961, -33.481521606445}, + {-62.252946, -10.71524}, + {-103.124128, 44.045154}, + {-58.445408, -34.571093}, + {130.887699, -12.391529}, + {-90.499566, 14.586785}, + {27.414932, 53.88649}, + {-71.241074, 42.157516}, + {140.650406, -2.598953}, + {-117.685546, 33.959427}, + {17.122192, 48.159943}, + {60.654830932617, 25.292587280273}, + {18.680191, 59.752579}, + {118.17649841309, 30.073013305664}, + {-86.678695678711, 36.153945922852}, + {23.205872, 55.881271}, + {120.30235290527, 22.665481567383}, + {72.883987426758, 20.218276977539}, + {27.433673, 53.907977}, + {36.781025, -1.553879}, + {-95.403213500977, 29.790115356445}, + {82.813339, 27.041702}, + {131.412964, 32.072525}, + {-117.75352478027, 33.66828918457}, + {100.413736, 13.669309}, + {25.1017, 60.198212}, + {122.623215, 10.896378}, + {51.301346, 36.454239}, + {89.316787719727, 24.350509643555}, + {139.38697814941, 35.328598022461}, + {-77.072462, -11.963749}, + {106.79254, -6.178385}, + {22.377090454102, 37.51350402832}, + {46.620254, 24.767838}, + {-2.588654, 56.554184}, + {114.132963, 22.371082}, + {120.78575134277, 24.53727722168}, + {29.037412, 41.011458}, + {2.765808, 43.48732}, + {107.06108093262, 16.834487915039}, + {106.648877, 10.80162}, + {-97.978134155273, 20.193557739258}, + {12.956314086914, 37.97492980957}, + {13.173843, 59.838547}, + {52.515335083008, 29.633560180664}, + {-73.963394, 40.65712}, + {31.359786987305, 30.222702026367}, + {13.928604125977, 40.746231079102}, + {29.369888305664, -3.3872222900391}, + {17.677688598633, 59.852828979492}, + {-118.606342, 34.221383}, + {13.493270874023, 46.799697875977}, + {18.063583374023, 59.315872192383}, + {28.864517211914, -2.5055694580078}, + {17.268105, 40.531654}, + {-77.098616, -12.071514}, + {6.729813, 47.051468}, + {10.412642, 59.325264}, + {13.516617, 52.498283}, + {102.6912689209, 25.03303527832}, + {-1.979942, 52.903336}, + {30.619583129883, 50.478744506836}, + {13.351821899414, 38.135604858398}, + {-3.600082, 40.467606}, + {3.393265, 50.380142}, + {114.644852, -8.36174}, + {-121.268168, 38.74386}, + {37.650146, 55.775528}, + {125.29014587402, -8.8968658447266}, + {102.266769, 6.185082}, + {17.499767, 60.229272}, + {73.814049, 18.509903}, + {24.604904, 46.521313}, + {77.463912963867, 28.539047241211}, + {-122.332865, 47.606994}, + {-110.91865539551, 47.377853393555}, + {-75.659866, 45.499191}, + {139.65234, 35.624912}, + {137.289937, 36.032003}, + {127.11103, 37.522491}, + {18.392899, 54.721115}, + {0.035018920898438, 5.7341766357422}, + {110.35795, 1.530381}, + {-6.800949, 52.331589}, + {90.361691, 22.684879}, + {139.961472, 35.894852}, + {76.89949, 29.943237}, + {-121.915695, 37.373703}, + {55.309067, 25.078812}, + {35.215982, 32.610856}, + {135.7120513916, 34.706497192383}, + {12.161178588867, 48.078231811523}, + {-84.364227, 33.80276}, + {-4.0093231201172, 56.193008422852}, + {141.26426696777, 43.159103393555}, + {121.21147155762, 31.413345336914}, + {114.364084, 34.766922}, + {77.330226, 28.574753}, + {4.6306, 8.485704}, + {-69.76266, 44.063764}, + {-99.113194, 19.397342}, + {139.753808, 35.702133}, + {121.123323, 24.015374}, + {35.085525512695, 32.735824584961}, + {-76.816112, -11.988733}, + {61.370315551758, 55.158920288086}, + {31.262283325195, 30.046920776367}, + {19.63283, 50.155441}, + {30.394621, 60.008011}, + {-43.205795, -22.806244}, + {-98.271807, 30.499896}, + {0.094070434570312, 51.747665405273}, + {-99.079056, 19.352646}, + {135.799393, 34.936935}, + {30.332565307617, 59.944839477539}, + {-6.675568, 4.766006}, + {-1.4083099365234, 50.900344848633}, + {-89.954541, 44.147324}, + {40.33561706543, 56.110610961914}, + {-0.394036, 50.946449}, + {20.151725, 32.073688}, + {2.3242950439453, 48.738784790039}, + {44.410171508789, 32.036819458008}, + {53.272669, 31.129941}, + {-83.010314, 42.398843}, + {13.649139, 48.020897}, + {77.311477661133, 28.397598266602}, + {132.4683380127, 34.451065063477}, + {-62.713394165039, 8.2981109619141}, + {-2.088432, 52.59319}, + {29.099697, 40.985797}, + {-44.003677368164, -20.005416870117}, + {36.323333, 49.945117}, + {-49.73030090332, -27.270126342773}, + {127.970835, 37.339004}, + {103.877792, -1.541519}, + {-75.485694, 40.64279}, + {41.240615844727, 52.603225708008}, + {-70.564498901367, -33.45817565918}, + {109.336111, -0.047965}, + {-0.218831, 54.068023}, + {7.614853, 47.539169}, + {80.862808227539, 26.845779418945}, + {91.146011352539, 23.700942993164}, + {126.96281433105, 37.561569213867}, + {-4.2963409423828, 48.418807983398}, + {99.598617553711, 13.671798706055}, + {8.864937, 49.406204}, + {14.472208, 46.233133}, + {1.27412, 52.645994}, + {3.392912, 6.574631}, + {9.1303253173828, 45.508804321289}, + {0.025674, 51.742992}, + {100.479307, 13.753751}, + {151.013607, -33.822521}, + {135.51155090332, 34.709243774414}, + {151.19178771973, -33.812484741211}, + {105.78254699707, 20.970840454102}, + {78.389511108398, 17.445602416992}, + {85.84098815918, 20.24299621582}, + {131.29692077637, 32.719345092773}, + {113.4935760498, 52.052536010742}, + {39.024811, 51.646729}, + {38.550663, 52.125162}, + {-4.4213104248047, 36.726608276367}, + {78.384705, 28.837051}, + {-25.607267, 37.75383}, + {-117.918124, 33.808267}, + {17.87956237793, 59.664688110352}, + {55.467191, -21.296556}, + {-80.277397, 25.901661}, + {32.394333, 35.041122}, + {2.492604, 48.965677}, + {102.224777, 6.120601}, + {13.355942, 52.426147}, + {139.65339660645, 35.641708374023}, + {75.801682, 26.903183}, + {-84.149867, 33.903804}, + {150.996506, -34.040863}, + {10.242201, 49.988774}, + {34.818715, 50.924279}, + {37.664566040039, -0.067977905273438}, + {-0.151063, 51.684572}, + {0.199814, 49.504983}, + {30.340118, 60.03273}, + {31.32843, 30.011444}, + {138.77174377441, 35.474166870117}, + {-71.405048, 46.858868}, + {0.10780334472656, 51.803970336914}, + {96.260147, 19.776764}, + {14.455261, 56.059799}, + {-77.017593383789, -12.060928344727}, + {-105.157595, 39.636847}, + {-99.332049, 29.79083}, + {98.697738647461, 3.5520172119141}, + {5.3853607177734, 43.426895141602}, + {7.2969818115234, 51.462020874023}, + {-49.071921, -22.294887}, + {127.248001, 37.329941}, + {17.147598266602, 60.646591186523}, + {100.49537658691, 13.913497924805}, + {-98.127738, 29.381902}, + {121.10023498535, 25.057754516602}, + {119.52644348145, 32.422714233398}, + {28.813128, 61.215089}, + {28.755175, 41.109554}, + {2.3448944091797, 48.896713256836}, + {119.50859069824, 25.954513549805}, + {139.726009, 35.767536}, + {-121.25267028809, 38.664321899414}, + {-77.18376159668, 38.96369934082}, + {92.866744995117, 56.006240844727}, + {-1.782585, 51.094583}, + {50.216445922852, 53.262405395508}, + {108.05946350098, 16.219253540039}, + {108.150102, 16.145096}, + {6.76638, 51.278225}, + {-1.686002, 53.768413}, + {13.361248, 38.101374}, + {106.58180236816, 29.622573852539}, + {-46.801414, -23.618546}, + {140.653839, 36.596146}, + {90.593262, 23.81218}, + {-81.934986, 38.45781}, + {-2.409635, 52.619705}, + {23.904131, 61.560816}, + {-58.618240356445, -34.733963012695}, + {-74.253845, 40.67276}, + {-1.284027, 53.073578}, + {47.782975, 35.17376}, + {104.14283752441, 30.793991088867}, + {-77.035608, -12.060834}, + {98.715591430664, 3.5602569580078}, + {22.947006225586, 39.360580444336}, + {102.47428894043, 24.921798706055}, + {-4.5682525634766, 36.581039428711}, + {99.439315795898, 16.580429077148}, + {77.558670043945, 13.034591674805}, + {150.571539, -33.697521}, + {42.924104, 16.682053}, + {12.669719, 41.911838}, + {121.51359558105, 31.296615600586}, + {15.179672241211, 59.27604675293}, + {49.91657, 26.389334}, + {72.866959, 19.13887}, + {14.462814331055, 42.21565246582}, + {74.858779907227, 32.717971801758}, + {-70.75264, -33.507156}, + {77.040939, 28.479996}, + {-0.899643, 52.496658}, + {-4.8841094970703, 34.04182434082}, + {38.265292, 56.355402}, + {14.117433, 57.339706}, + {3.690724, 32.509232}, + {-85.813086, 40.976445}, + {13.796409, 45.603384}, + {-46.557999, -23.72818}, + {-2.203445, 53.461258}, + {-0.183951, 52.324975}, + {-99.171524047852, 19.435501098633}, + {28.764266967773, 41.062088012695}, + {-118.485031, 34.021225}, + {-97.540951, 25.883984}, + {78.478775024414, 17.389297485352}, + {101.43196105957, 0.51704406738281}, + {-114.849564, 35.971848}, + {55.73844909668, 24.236526489258}, + {-93.74367, 32.519533}, + {121.449051, 25.143997}, + {-80.106674, 26.127548}, + {51.470261, 35.79895}, + {132.453232, 34.382401}, + {-72.783627, 41.265226}, + {0.006523, 49.325867}, + {36.89802, -1.342767}, + {-61.41293, 10.668347}, + {17.989951, 59.243822}, + {11.826096, 42.11174}, + {146.383896, -38.239288}, + {29.023687, 40.991966}, + {1.0773468017578, 47.785720825195}, + {120.2172088623, 22.960739135742}, + {91.378784, 23.010864}, + {-83.092927, 42.667571}, + {-1.588706, 54.504785}, + {107.082131, -6.699144}, + {14.573254, 46.040485}, + {11.99089050293, 45.526657104492}, + {28.628311157227, -12.967300415039}, + {139.62455749512, 35.225601196289}, + {30.321578979492, 60.032730102539}, + {-34.955867, -8.190393}, + {-93.293974, 36.964396}, + {107.708416, -6.965504}, + {34.769668579102, 31.26091003418}, + {9.773031, 48.583728}, + {-0.27259826660156, 51.743545532227}, + {-47.365073, -23.347449}, + {15.771561, 57.88147}, + {3.0535125732422, 45.77522277832}, + {106.51588439941, -6.2505340576172}, + {9.9446868896484, 10.278396606445}, + {139.66163635254, 35.641708374023}, + {-3.6934661865234, 40.405654907227}, + {80.295639038086, 16.414260864258}, + {80.181655883789, 13.046951293945}, + {139.55726623535, 35.956192016602}, + {-71.782714, 41.451891}, + {76.968154907227, 29.40559387207}, + {25.320042, 61.814581}, + {76.969528, 29.391174}, + {-1.658263, 53.223024}, + {35.232467651367, 31.828079223633}, + {-73.635177612305, 45.540390014648}, + {25.508193969727, 45.518417358398}, + {151.1190032959, -33.911361694336}, + {-9.215645, 38.767871}, + {15.150833129883, 47.046890258789}, + {28.176498413086, -26.310195922852}, + {16.391451, 48.202835}, + {16.307419, 48.193588}, + {-46.261367797852, -21.575088500977}, + {-89.319534301758, 30.596237182617}, + {30.297433, 60.071155}, + {-46.641769, -23.573914}, + {139.617348, 35.724106}, + {13.427791, 57.918337}, + {-76.621055, 36.522675}, + {77.584763, 12.915802}, + {-74.188385, 40.743942}, + {-80.20838, 25.869403}, + {21.654739379883, 39.518508911133}, + {2.3668670654297, 48.734664916992}, + {109.90928649902, 20.719528198242}, + {-46.320761, -23.963563}, + {14.977798461914, 48.76350402832}, + {78.98551940918, 26.799087524414}, + {13.133478, 49.718065}, + {6.9976043701172, 51.430435180664}, + {137.220612, 35.107841}, + {101.103058, 16.389542}, + {14.77180480957, 53.423080444336}, + {1.843606, 47.904121}, + {9.4255828857422, 48.928298950195}, + {30.168228, 59.8629}, + {2.752075, 43.483715}, + {2.2885894775391, 48.767623901367}, + {20.637131, 41.001663}, + {152.64060974121, -25.447769165039}, + {-4.108609, 38.695026}, + {120.28175354004, 22.988204956055}, + {12.760494, 52.90228}, + {-4.229599, 36.724411}, + {116.233292, -8.73024}, + {131.07032775879, 32.837448120117}, + {30.317459106445, 53.868026733398}, + {59.790573, 32.580316}, + {1.4124298095703, 52.63069152832}, + {30.7164, 46.478348}, + {39.533958, 48.665657}, + {40.424880981445, 21.260604858398}, + {116.72218322754, 40.276565551758}, + {41.621017456055, 21.135635375977}, + {2.542172, 49.018928}, + {-77.024243, -12.091375}, + {-122.15217590332, 47.865371704102}, + {77.564163208008, 12.976913452148}, + {139.700159, 35.605376}, + {-1.7900848388672, 52.688369750977}, + {-71.561509, 42.382965}, + {-82.187547, 36.865537}, + {15.591659545898, 58.38752746582}, + {99.968032836914, 12.537460327148}, + {139.61769104004, 36.291275024414}, + {-84.988213, 41.936882}, + {-100.22071838379, 25.796585083008}, + {-3.610153, 37.161484}, + {27.826309204102, -26.268997192383}, + {37.578964, 55.673904}, + {2.249729, 48.717063}, + {-117.301712, 33.22403}, + {10.651931762695, 42.966842651367}, + {-8.439011, 41.519119}, + {4.3073272705078, 50.867385864258}, + {21.534805, 42.018356}, + {18.073196411133, 59.313125610352}, + {-1.575165, 48.126068}, + {51.586990356445, 35.420608520508}, + {17.129973, 51.172055}, + {12.630844116211, 41.445236206055}, + {39.846725463867, 52.493362426758}, + {13.036341, 38.040628}, + {-0.59944152832031, 39.942855834961}, + {-46.527786254883, -23.461990356445}, + {-5.884209, 37.3736}, + {22.991082, 40.556718}, + {12.316538, 45.882733}, + {112.329859, -7.616886}, + {139.732361, 35.799637}, + {-46.829635, -23.63492}, + {-85.84465, 38.261948}, + {107.90016174316, -7.1569061279297}, + {-110.71815490723, 32.348556518555}, + {-122.35276, 47.633658}, + {-106.112223, 28.622732}, + {77.085781, 28.495242}, + {0.382004, 45.476761}, + {18.871078491211, -34.158554077148}, + {11.506499, 54.784073}, + {18.080062866211, 59.302139282227}, + {101.86592102051, 0.42366027832031}, + {27.57142, 53.89378}, + {104.869308, 11.556931}, + {25.664013, 61.60299}, + {-42.846451, -22.742386}, + {54.626083374023, 24.257125854492}, + {77.034072875977, 28.610458374023}, + {-44.293021, -23.008792}, + {25.946394, 48.268016}, + {4.507742, 52.211895}, + {-77.073898, -12.065048}, + {140.351028, 37.301159}, + {15.303268432617, 58.625106811523}, + {122.871094, 9.867096}, + {14.213366, 53.308453}, + {128.70326, 35.224406}, + {136.903839, 35.140457}, + {114.30244445801, 34.821853637695}, + {-99.812393, 16.798325}, + {12.566299438477, 50.687484741211}, + {104.60151672363, 20.753860473633}, + {36.356016, 0.031291}, + {90.464859008789, 24.100570678711}, + {-113.448268, 53.558461}, + {37.716751098633, 55.781021118164}, + {10.95311, 45.439602}, + {-97.491303, 25.84671}, + {25.321426391602, 50.739669799805}, + {17.543106079102, 53.14567565918}, + {38.493176, 55.862045}, + {6.594128, 48.333778}, + {120.681381, 32.354965}, + {-17.437362670898, 14.67155456543}, + {5.9195709228516, 45.324783325195}, + {34.551315307617, 36.774673461914}, + {111.87721252441, -7.3986053466797}, + {30.348095, 60.094613}, + {101.0495, 4.043655}, + {12.510269, 41.885239}, + {35.3164, 33.042727}, + {17.592851, 48.966447}, + {-1.678325, 48.138034}, + {77.472047, 13.057515}, + {125.51399230957, 46.218795776367}, + {0.19020080566406, 44.040756225586}, + {61.434860229492, 55.244064331055}, + {23.820419311523, 51.882247924805}, + {-122.250459, 37.861633}, + {4.7522735595703, 45.547256469727}, + {151.26731872559, -33.780899047852}, + {-90.81153, 39.648603}, + {31.340560913086, 30.040054321289}, + {2.444534, 48.798141}, + {-82.378922, 27.906784}, + {-82.668103, 42.971566}, + {-88.306045532227, 15.039596557617}, + {16.335983276367, 48.199081420898}, + {-74.035263, 4.686813}, + {-73.55278, 40.691185}, + {121.08238220215, 14.608383178711}, + {-101.123685, 20.553907}, + {-101.145287, 20.593872}, + {7.773251, 51.057953}, + {7.69249, 51.082993}, + {73.739548, 24.588364}, + {78.574905395508, 25.432662963867}, + {11.753311157227, 44.337387084961}, + {9.408417, 45.696945}, + {25.299453735352, 50.743789672852}, + {73.208084106445, 19.204788208008}, + {-9.0946197509766, 38.783798217773}, + {139.777681, -37.051049}, + {-35.239031, -5.734104}, + {96.113204956055, 22.00080871582}, + {139.74952697754, 35.669174194336}, + {138.2341, 34.877472}, + {55.726089477539, 24.243392944336}, + {-76.527328491211, 3.4764862060547}, + {-82.935932, 39.935526}, + {8.696671, 53.04605}, + {17.632828, 59.849167}, + {104.05082702637, 30.638809204102}, + {121.073162, 14.64816}, + {120.98899841309, 14.612503051758}, + {-83.490372, 43.041}, + {2.6689910888672, 48.569869995117}, + {101.282589, 6.553}, + {4.494553, 44.533768}, + {105.77980041504, 21.156234741211}, + {21.043758, 52.165615}, + {28.814319, 40.986646}, + {77.279891967773, 28.577499389648}, + {-113.611679, 33.75618}, + {-0.753938, 51.952286}, + {51.657028198242, 32.665786743164}, + {29.073186, -28.161113}, + {-1.5044403076172, 43.506546020508}, + {10.282859, 63.298588}, + {-5.7053375244141, 37.380294799805}, + {-89.179458618164, 13.70475769043}, + {-81.962664, 28.054091}, + {37.726364135742, 55.797500610352}, + {-88.156678, 14.324651}, + {-112.230314, 33.663732}, + {-122.49549865723, 45.692825317383}, + {-6.085415, 36.346756}, + {-76.603576, 21.194567}, + {9.0369415283203, 50.014572143555}, + {-0.558701, 39.594955}, + {114.148777, 22.281439}, + {-122.23045349121, 47.276229858398}, + {-75.566859, 6.296441}, + {20.690689086914, 52.491989135742}, + {112.179185, -7.100237}, + {-90.624436, 38.321133}, + {55.391006469727, 25.36262512207}, + {69.052505493164, 22.158737182617}, + {114.105377, 22.352371}, + {70.059127807617, 22.410049438477}, + {140.004861, 36.653628}, + {23.295822143555, 42.68669128418}, + {5.983851, 43.14276}, + {-76.048325, 36.848648}, + {36.29264831543, 33.517227172852}, + {8.082896, 50.32337}, + {4.279861, 51.524277}, + {72.846908569336, 19.105911254883}, + {17.610397338867, 60.065689086914}, + {32.608932, 46.632156}, + {31.397552, 30.139618}, + {32.180315, 30.598237}, + {126.56455993652, 33.25080871582}, + {13.807754516602, 50.13542175293}, + {131.843489, 33.9814}, + {20.616532, 50.546036}, + {-40.405941, -20.279691}, + {-75.75205, 45.322686}, + {7.0717620849609, 50.908584594727}, + {2.81044, 41.980545}, + {110.408958, -7.849727}, + {-0.422955, 51.89222}, + {78.620223999023, 17.415390014648}, + {35.253525, 0.522537}, + {65.543747, 57.144012}, + {99.823166, 13.294322}, + {12.488021850586, 9.2923736572266}, + {128.87168884277, 35.261306762695}, + {72.519607, 23.005142}, + {-156.440171, 20.722833}, + {113.996658, 22.461319}, + {50.538712, 26.109238}, + {-97.964624, 19.932521}, + {23.25325012207, 42.67707824707}, + {26.422806, 40.129166}, + {51.328812, 35.778351}, + {44.996494, 53.197644}, + {77.242813110352, 28.521194458008}, + {-111.68888, 33.439682}, + {-6.439425, 53.331081}, + {15.244217, 59.288956}, + {6.26049, 46.40934}, + {50.836258, 28.981247}, + {-75.050583, 40.328293}, + {8.285751, 51.840069}, + {24.887466430664, 59.379043579102}, + {-1.759415, 48.22609}, + {28.978542, 41.027863}, + {-0.40718078613281, 51.483993530273}, + {3.0590057373047, 36.781539916992}, + {120.16914367676, 30.303726196289}, + {-98.412025, 30.060585}, + {114.16923522949, 22.333145141602}, + {78.397750854492, 17.44010925293}, + {121.135483, 14.558945}, + {120.684128, 24.136963}, + {78.511734008789, 17.409896850586}, + {22.756119, 56.251923}, + {39.760208129883, 47.287216186523}, + {-86.01676940918, 41.365585327148}, + {4.297016, 46.439197}, + {1.457922, 49.045211}, + {-100.555801, 25.709038}, + {-115.204236, 36.09685}, + {-78.761429, 35.405331}, + {13.868179321289, 42.472457885742}, + {6.547496, 36.232573}, + {139.47761535645, 35.47004699707}, + {10.16716003418, 53.515090942383}, + {76.20735168457, 19.158096313477}, + {-3.7003326416016, 40.422134399414}, + {126.54670715332, 33.364791870117}, + {40.021769, 29.779895}, + {140.00907897949, 37.087783813477}, + {-95.953342, 40.985186}, + {35.372543334961, 33.54606628418}, + {12.965241, 50.834427}, + {1.9795989990234, 41.523513793945}, + {116.373367, 39.986801}, + {76.975021, 52.279816}, + {-3.530603, 40.434185}, + {18.3845, 54.310457}, + {8.613846, 46.716126}, + {-107.38380432129, 50.876998901367}, + {29.945663, 31.217888}, + {118.073502, 24.45282}, + {-0.711502, 52.040451}, + {6.58596, 36.257629}, + {18.256372, 49.788824}, + {17.047417, 48.184799}, + {115.170131, -8.733955}, + {-97.087434, 32.954082}, + {-1.4508819580078, 54.671401977539}, + {3.001307, 43.139429}, + {-93.418028, 32.155329}, + {-1.5525054931641, 50.915451049805}, + {106.69166564941, 10.770034790039}, + {-0.552938, 51.265307}, + {-7.878227, 42.316418}, + {11.609115600586, 48.131790161133}, + {7.657999, 45.082576}, + {-3.676986, 40.427628}, + {75.932693481445, 11.407241821289}, + {-1.329337, 34.990085}, + {136.888902, 35.169326}, + {-76.872024536133, 38.947219848633}, + {-0.589279, 51.564468}, + {-0.737457, 51.477814}, + {-82.109756469727, 41.395797729492}, + {-118.177185, 34.080963}, + {105.95008850098, 20.245742797852}, + {139.962616, 35.706253}, + {3.217984, 50.662685}, + {-3.598022, 40.444794}, + {-100.429733, 31.445755}, + {-77.950057983398, 18.30940246582}, + {-112.3949432373, 33.459548950195}, + {39.934616, 43.424149}, + {27.193222045898, -27.63542175293}, + {92.815933227539, 56.033706665039}, + {-51.159935, -29.942763}, + {0.545883, 48.46962}, + {9.6041107177734, 45.374221801758}, + {135.66261291504, 34.538955688477}, + {75.828323364258, 11.191635131836}, + {-0.992203, 51.456184}, + {60.650253, 56.823807}, + {68.990707397461, 59.141464233398}, + {28.154525756836, -25.748519897461}, + {-97.25033, 32.686077}, + {72.616195678711, 22.216415405273}, + {36.280288696289, 41.317520141602}, + {18.596315, 54.270888}, + {4.75502, 7.633438}, + {126.83372497559, 37.558822631836}, + {27.681102, 53.94457}, + {31.32682800293, 30.079879760742}, + {-73.663063, 41.217197}, + {101.64482116699, 3.2361602783203}, + {75.812874, 26.917191}, + {-2.1251678466797, 42.385940551758}, + {-0.95375, 37.65976}, + {134.960174, 34.578095}, + {77.437935, 28.623734}, + {-98.610171, 29.475682}, + {30.291366577148, 60.014877319336}, + {135.619354, 34.867172}, + {30.127944946289, 60.075302124023}, + {30.67279, 36.874042}, + {24.693671, 60.160684}, + {82.890701, 55.01976}, + {-73.998651, 40.76723}, + {16.596784, 47.680664}, + {71.350021362305, 42.895431518555}, + {116.992035, -0.447693}, + {-89.330291, 43.027612}, + {18.721389770508, 50.307083129883}, + {37.817345, 55.752182}, + {-111.932144, 40.56015}, + {-2.729874, 51.14296}, + {77.619781, 12.894516}, + {11.637726, 48.098373}, + {21.58332824707, 53.07975769043}, + {7.765759, 48.572374}, + {-4.8799896240234, 36.509628295898}, + {-69.199447631836, 10.09162902832}, + {14.918628, 49.966134}, + {-76.600607, 2.446553}, + {-46.801071166992, -23.687210083008}, + {30.353928, 60.007401}, + {-2.828201, 51.563062}, + {-1.712322, 51.528025}, + {-122.480727, 45.601211}, + {-85.663833618164, 38.286666870117}, + {4.3306732177734, 52.077255249023}, + {151.324962, -33.629711}, + {-49.348213, -16.772863}, + {133.891068, 34.036331}, + {-73.090196, 7.060377}, + {-94.594345092773, 39.054336547852}, + {135.06660461426, 48.472366333008}, + {30.298233032227, 59.95719909668}, + {-121.164504, 47.231725}, + {-99.147219, 19.641493}, + {9.432984, 48.806077}, + {24.964072, 60.201686}, + {-81.114120483398, 35.177536010742}, + {130.84098815918, 33.879776000977}, + {-123.137116, 49.312759}, + {11.798496, 55.251975}, + {121.5438079834, 38.921127319336}, + {19.047546, 54.036598}, + {-10.600351, 6.221604}, + {8.9737701416016, 45.842514038086}, + {76.867904663086, 10.787887573242}, + {145.06690979004, -38.211135864258}, + {121.02195739746, 24.820175170898}, + {105.87455749512, 17.861709594727}, + {139.634716, 35.585273}, + {-121.90773, 37.273865}, + {9.714661, 45.040512}, + {134.581833, 34.828033}, + {59.950332641602, 54.954299926758}, + {-81.67854309082, 41.257095336914}, + {121.44218444824, 25.026168823242}, + {126.986847, 37.567749}, + {-1.570098, 6.690746}, + {-1.622545, 53.67412}, + {107.05009460449, -6.7147064208984}, + {139.742661, 35.612564}, + {-99.197616577148, 19.402542114258}, + {54.607773, 24.461288}, + {140.108368, 39.722031}, + {77.211227416992, 28.518447875977}, + {32.518158, 15.603333}, + {23.306494, 42.673589}, + {30.257034301758, 59.446334838867}, + {7.637557, 44.98215}, + {16.35323, 48.191218}, + {5.9154510498047, 43.128890991211}, + {8.7293243408203, 49.557266235352}, + {-56.748853, -2.646414}, + {-98.730835, 30.193997}, + {37.723617553711, 55.667037963867}, + {18.17253, 59.79744}, + {6.6487884521484, 43.216781616211}, + {120.34080505371, 22.62565612793}, + {-95.176468, 29.806595}, + {37.68352, 55.46819}, + {2.09212, 41.56551}, + {18.110275268555, 59.277420043945}, + {-80.448382, 40.116051}, + {139.591324, 35.415115}, + {-95.555517, 29.658159}, + {-81.41487121582, 37.568435668945}, + {-85.239258, 35.020065}, + {-98.762283, 19.701233}, + {-79.402277, 43.691326}, + {105.97755432129, 20.394058227539}, + {113.059998, 22.542419}, + {120.69511413574, 24.073104858398}, + {-89.225922, 45.971375}, + {-43.17693, -22.902913}, + {131.581192, 32.974091}, + {121.46415710449, 25.061874389648}, + {-95.364903, 29.781071}, + {30.793167, 46.578323}, + {75.14030456543, 30.43830871582}, + {139.7989654541, 35.772171020508}, + {153.391342, -28.074417}, + {8.603077, 56.487937}, + {9.1536712646484, 45.481338500977}, + {79.63508605957, 17.14485168457}, + {30.539932250977, 59.942092895508}, + {-2.842026, 48.545975}, + {-0.11776, 5.592384}, + {77.123642, 28.729172}, + {7.5839996337891, 51.578750610352}, + {138.852768, 35.12352}, + {14.261382, 50.427723}, + {-3.515167, 55.884018}, + {148.610022, -32.328694}, + {83.502884, 50.346909}, + {139.647903, 35.442581}, + {24.443893, 60.999527}, + {-6.0884857177734, 40.02799987793}, + {77.618332, 13.132019}, + {-74.320696, 40.825611}, + {24.825668334961, 44.892196655273}, + {77.610808, 12.976535}, + {46.684067, 24.789963}, + {-85.196609, 41.120377}, + {-3.7140655517578, 40.418014526367}, + {101.666841, 3.094617}, + {3.0274200439453, 42.295303344727}, + {2.807178, 39.661503}, + {-122.738347, 49.163251}, + {27.903978, 60.598684}, + {-122.346546, 45.582913}, + {4.9074554443359, 45.749130249023}, + {-58.62958, -34.493524}, + {18.630066, 47.204819}, + {136.900929, 34.909156}, + {-0.69557189941406, 50.871505737305}, + {121.36528015137, 25.060501098633}, + {109.12788391113, 12.492141723633}, + {121.437219, 25.073494}, + {29.206466674805, 60.168685913086}, + {34.565735, 31.587067}, + {14.379501, 41.0392}, + {126.9229888916, 37.550582885742}, + {17.291793823242, 53.119583129883}, + {11.897765, 58.870154}, + {139.856127, 35.697556}, + {22.289652, 51.71471}, + {50.944977, 35.828934}, + {-122.314224, 37.906265}, + {30.187683, 55.197372}, + {37.929611, 55.824051}, + {-5.949097, 54.550552}, + {19.600296, 50.269808}, + {41.409530639648, 52.66227722168}, + {-98.57468, 29.82391}, + {-80.08994, 26.419176}, + {115.839844, 32.862167}, + {28.573379516602, 43.875961303711}, + {-46.733918, -23.593552}, + {-70.612176, -33.534373}, + {-116.40495300293, 33.23844909668}, + {-89.978713989258, 37.620620727539}, + {23.625013, 62.436868}, + {103.73359680176, 1.5113067626953}, + {-49.977493286133, -21.536636352539}, + {106.81114196777, -6.2203216552734}, + {36.567306518555, 28.418197631836}, + {172.57255554199, -43.597183227539}, + {77.962417602539, 30.336685180664}, + {-3.506509, 36.830853}, + {21.906051635742, 42.527389526367}, + {106.040188, -6.006554}, + {28.913147, 41.043989}, + {46.113052368164, 54.415969848633}, + {36.045705, 52.942678}, + {140.208316, 35.994028}, + {59.655075, 36.297719}, + {15.538373, 51.966843}, + {38.910828, 45.054245}, + {73.06526184082, 21.67121887207}, + {139.87174987793, 35.649948120117}, + {-3.03787, 51.823571}, + {-58.439712524414, -34.683151245117}, + {-104.612798, 50.485671}, + {23.97834777832, 49.842910766602}, + {-75.531692504883, 10.404739379883}, + {-96.766548, 32.939148}, + {8.362656, 51.586304}, + {116.22917175293, 37.520370483398}, + {17.12059, 48.869705}, + {7.402039, 46.95076}, + {109.4066619873, -0.14762878417969}, + {-76.001319, -9.300378}, + {-84.749171, 9.875349}, + {106.837977, -6.374192}, + {2.172546, 48.67424}, + {37.634811, 55.705032}, + {-104.50401306152, 23.887710571289}, + {96.612396, 3.927612}, + {72.97737121582, 19.195175170898}, + {90.370102, 23.764801}, + {1.893253, 50.084782}, + {25.346145629883, 41.618270874023}, + {-4.503708, 38.114548}, + {-98.426455, 22.193782}, + {-122.33345, 46.921921}, + {13.061371, 47.819023}, + {35.362930297852, 31.199111938477}, + {38.153915, 56.330338}, + {29.040848, 41.093674}, + {-0.690079, 51.37207}, + {105.81550598145, 21.007919311523}, + {0.654475, 51.609617}, + {-4.0711212158203, 50.867385864258}, + {-42.594680786133, -22.860488891602}, + {-46.588088, -23.663368}, + {1.0073089599609, 47.439651489258}, + {-49.242445, -25.432147}, + {11.798629760742, 43.034133911133}, + {120.98213195801, 14.580917358398}, + {138.241653, 37.076799}, + {-76.132362, -13.418321}, + {138.950271, 35.561379}, + {-90.582962036133, 14.565811157227}, + {-95.043747, 29.625565}, + {-71.235842, -34.985668}, + {-80.980606, 34.184494}, + {-84.625625610352, 35.489273071289}, + {48.293495, 30.333939}, + {139.72480773926, 35.621109008789}, + {138.531647, 37.358093}, + {28.29460144043, -25.837783813477}, + {106.779556, -6.556091}, + {139.767247, 35.689729}, + {56.372222, 54.75792}, + {75.869522094727, 11.236953735352}, + {14.270168, 51.44575}, + {30.648422, 46.474424}, + {100.648667, 14.197201}, + {-1.7145538330078, 39.935989379883}, + {29.852829, -19.449692}, + {4.364501, 50.847353}, + {110.84312438965, -7.6828765869141}, + {90.412673950195, 23.727035522461}, + {118.745728, 31.968155}, + {135.76011657715, 34.99626159668}, + {174.7354888916, -36.873550415039}, + {8.397446, 45.009842}, + {31.171646118164, 30.062026977539}, + {77.226333618164, 28.603591918945}, + {35.497512817383, 33.84407043457}, + {136.92462, 35.077286}, + {30.31608581543, 59.795150756836}, + {103.85719299316, 1.3080596923828}, + {38.455502, 55.878548}, + {37.397995, 55.793228}, + {31.388626098633, 30.110092163086}, + {121.453857, 25.159378}, + {51.544418334961, 25.271987915039}, + {87.315903, 23.072891}, + {-122.899372, 46.195492}, + {6.028846, 47.24641}, + {77.286758422852, 28.530807495117}, + {78.429108, 17.454758}, + {-96.184616, 33.036575}, + {121.454209, 25.063718}, + {16.517918, 46.52848}, + {22.94563293457, 37.998275756836}, + {29.121323, 41.038742}, + {78.516129, 17.37886}, + {21.955490112305, 37.256698608398}, + {-8.940384, 52.522548}, + {-87.01789855957, 33.577651977539}, + {127.24708557129, 37.392654418945}, + {-3.877487, 40.507965}, + {54.4384, 24.43428}, + {21.040878295898, 52.231063842773}, + {110.00519, -7.713467}, + {-0.39756774902344, 54.282760620117}, + {106.01197, -6.011198}, + {7.191582, 50.816231}, + {18.701335, -33.853047}, + {40.006015, 47.449269}, + {18.042301, 42.672959}, + {-97.174913, 49.957234}, + {-2.3215484619141, 50.919570922852}, + {-74.118576049805, 4.7151947021484}, + {10.219345, 44.975144}, + {-54.553161, -20.463948}, + {13.153725, 43.617783}, + {103.97117614746, 10.217971801758}, + {-47.028876, -22.893593}, + {-70.552139282227, -33.384017944336}, + {11.676406860352, 52.20085144043}, + {-76.453171, 3.564175}, + {-102.355122, 20.692671}, + {-98.802108764648, 18.684310913086}, + {95.364761352539, 5.5721282958984}, + {21.125503, 50.968407}, + {30.18326, 59.499195}, + {-117.109223, 32.803116}, + {153.077732, -27.451056}, + {128.99116516113, 35.18440246582}, + {19.939041, 50.050278}, + {13.134842, 55.693131}, + {7.917952, 35.919073}, + {6.907967, 51.006501}, + {77.200241088867, 28.543167114258}, + {0.171287, 52.757188}, + {43.086318969727, 44.219284057617}, + {87.287063598633, 26.829299926758}, + {136.916977, 35.161057}, + {-0.625305, 38.542557}, + {78.412857055664, 14.81575012207}, + {12.936526, 55.559172}, + {117.83866882324, 32.84294128418}, + {76.212158, 10.617599}, + {-97.7839, 50.12465}, + {129.71008, 62.079621}, + {10.18013, 36.797104}, + {120.29854, 22.634621}, + {-97.014542, 32.848892}, + {-46.503886, -23.46043}, + {-121.255069, 38.743533}, + {140.590668, 40.522385}, + {144.10285949707, 44.022903442383}, + {19.545364, 51.716766}, + {135.2286529541, 35.38215637207}, + {8.6496734619141, 58.496017456055}, + {99.080886, 18.758469}, + {12.595814, 55.66293}, + {13.055191040039, 47.770614624023}, + {131.34498596191, 31.532821655273}, + {102.17216491699, 25.041275024414}, + {4.710575, 51.430685}, + {100.63682556152, 14.189529418945}, + {-84.074094, 37.008947}, + {18.935623168945, 50.062637329102}, + {-2.2446441650391, 53.450546264648}, + {2.622528, 51.111832}, + {0.223158, 49.459214}, + {23.132400512695, 52.821578979492}, + {31.706406, 26.558624}, + {-70.683542, -33.468544}, + {10.605239868164, 54.350051879883}, + {31.298332, 58.590431}, + {-83.727475, 42.970196}, + {16.538914, 60.583681}, + {107.516365, -6.855969}, + {5.952526, 53.182755}, + {-3.5987091064453, 51.496353149414}, + {80.79963684082, 6.8987274169922}, + {-73.733177, 45.590326}, + {-2.128912, 52.012578}, + {-74.535834, -8.380724}, + {116.123428, 6.005402}, + {121.67701721191, 31.310348510742}, + {-0.185405, 5.592263}, + {137.233658, 36.650096}, + {-76.001358, -9.297761}, + {-92.487716674805, 43.241500854492}, + {-0.165482, 5.715294}, + {-96.812119, 32.777023}, + {-118.333569, 34.028435}, + {-88.951005, 40.735623}, + {-76.980205, -11.943769}, + {121.462578, 25.060815}, + {12.313613891602, 42.195053100586}, + {126.5274810791, 43.822402954102}, + {-3.950729, 43.447037}, + {30.226364, -31.01738}, + {139.66575622559, 36.140213012695}, + {41.380692, 30.772705}, + {8.230972, 50.020294}, + {14.861068725586, 57.827224731445}, + {28.381266, 48.0259}, + {77.216720581055, 28.606338500977}, + {139.625725, 35.64782}, + {-7.7227020263672, 52.380752563477}, + {14.086624, 50.14238}, + {-1.4618682861328, 54.836196899414}, + {-5.2933502197266, 35.663681030273}, + {-6.4496612548828, 34.363174438477}, + {139.708054, 35.751572}, + {-96.547164916992, 33.032455444336}, + {-7.592371, 54.853654}, + {27.792211, -25.637183}, + {126.93946838379, 37.517623901367}, + {17.583244, 53.697739}, + {-0.993199, 43.659256}, + {135.43464660645, 34.633712768555}, + {79.51286315918, 20.766220092773}, + {136.969128, 35.139084}, + {28.567886352539, 60.630111694336}, + {-16.422500610352, 16.062698364258}, + {16.849594116211, 47.863998413086}, + {137.002945, 35.125626}, + {9.7373199462891, 45.657119750977}, + {142.329026, 43.77617}, + {-79.844063, -6.779533}, + {17.466288, 50.856571}, + {18.445785, -34.159155}, + {84.765701293945, 19.37370300293}, + {61.886673, 55.279083}, + {28.870468, 41.058297}, + {9.380264, 45.393448}, + {22.742385864258, 50.458145141602}, + {27.096296, 37.82869}, + {16.071724, 51.650641}, + {-0.516357, 51.547852}, + {51.657028198242, 35.317611694336}, + {5.243916, 52.728199}, + {-76.959514, -12.028407}, + {26.230545043945, 38.228988647461}, + {-0.617294, 35.196075}, + {1.869947, 50.945663}, + {8.960037, 50.117798}, + {-72.629471, 42.097549}, + {10.455551147461, 55.425338745117}, + {-76.976134, -6.032231}, + {6.87355, 45.062943}, + {-75.685501, -11.417313}, + {113.713989, 34.762802}, + {136.89994812012, 36.263809204102}, + {-75.313543, 40.231369}, + {139.87312316895, 35.681533813477}, + {135.235977, 34.18602}, + {100.682831, 13.720551}, + {80.229721, 13.034592}, + {114.753571, -3.455887}, + {-85.429284, 38.383788}, + {-46.650009155273, -23.478469848633}, + {121.510849, 24.990921}, + {-79.504623413086, 8.9875030517578}, + {-80.146827, 26.330736}, + {36.988565, 56.182022}, + {36.846084594727, -1.3053131103516}, + {54.928665, 24.881287}, + {-121.298813, 38.700302}, + {7.727502, 51.29551}, + {35.031967163086, 38.955459594727}, + {75.935440063477, 10.954055786133}, + {12.480194, 45.760391}, + {28.463516235352, 49.237289428711}, + {110.479728, -6.960004}, + {16.451669, 58.661976}, + {135.55686950684, 34.670791625977}, + {77.30598449707, 29.923324584961}, + {80.023727416992, 23.483963012695}, + {141.98661804199, 43.635635375977}, + {76.936569, 8.490372}, + {-71.569536, 42.263079}, + {100.99535, 12.94442}, + {101.79039001465, 3.4243011474609}, + {-55.34294128418, -31.03157043457}, + {141.65428161621, 42.661972045898}, + {140.062638, 35.6559}, + {122.940249, 14.125279}, + {141.23268127441, 43.122024536133}, + {71.963882446289, 21.727523803711}, + {73.013076782227, 22.34001159668}, + {18.009896, 53.108713}, + {139.903336, 36.58287}, + {-5.6613922119141, 43.539505004883}, + {34.733963012695, -19.620895385742}, + {109.19632, 12.2402}, + {133.85124206543, 34.282150268555}, + {38.682174682617, 55.160293579102}, + {-77.12059, -12.070198}, + {5.358217, 51.880053}, + {-96.818807, 32.953882}, + {-43.651774, -22.647133}, + {30.365524291992, 59.937973022461}, + {11.173782348633, 60.142593383789}, + {24.839859, 59.378586}, + {-3.61535, 40.385056}, + {-6.254654, 53.349609}, + {74.40309, 31.549947}, + {139.890289, 36.56044}, + {51.408462524414, 25.458755493164}, + {30.560989, 50.438919}, + {51.527938842773, 34.209365844727}, + {107.5513458252, -6.8424224853516}, + {12.605316, 41.869095}, + {107.74085998535, -6.5856170654297}, + {32.507858276367, 55.055923461914}, + {-105.01762390137, 39.746475219727}, + {25.330841, 60.663396}, + {-101.610074, 17.664501}, + {15.661153, 50.850792}, + {135.746384, 34.980331}, + {5.0475311279297, 52.452163696289}, + {-51.147537231445, -23.31916809082}, + {-1.666031, 48.117599}, + {-91.888961, 30.268021}, + {102.942179, 17.111489}, + {-113.799772, 53.535128}, + {120.30921936035, 22.721786499023}, + {10.30102, 43.631805}, + {31.968595, -28.74182}, + {-70.71955, -33.512981}, + {139.73991394043, 35.647201538086}, + {21.301624, 52.181446}, + {44.99588, 53.172455}, + {77.56965637207, 13.000259399414}, + {30.371017456055, 59.85969543457}, + {-2.2295379638672, 53.787002563477}, + {-103.041003, 20.546773}, + {-123.997554, 49.199749}, + {-1.463636, 39.283373}, + {120.46028137207, 23.433151245117}, + {21.157851, 52.302685}, + {2.139175, 50.337845}, + {132.48207092285, 34.532089233398}, + {-0.38108825683594, 49.252395629883}, + {120.72532653809, 24.180221557617}, + {16.404647827148, 41.281814575195}, + {17.009741, 51.094735}, + {77.523651, 13.022232}, + {136.867447, 35.176849}, + {-5.8220672607422, 55.220718383789}, + {25.065523, 70.493089}, + {121.18675231934, 30.307846069336}, + {-2.081909, 43.27652}, + {103.704176, 1.476749}, + {117.18223571777, 34.223098754883}, + {120.430756, 31.232071}, + {27.137822, 38.323529}, + {28.844963, 40.982995}, + {126.378795, 36.417161}, + {119.85466003418, -0.88920593261719}, + {-3.994217, 5.390396}, + {121.47789001465, 31.270523071289}, + {13.263931, 53.630447}, + {24.880599975586, 12.051315307617}, + {14.889722, 50.4815}, + {11.904144, 44.409027}, + {34.858932495117, 32.32795715332}, + {74.831314086914, 30.313339233398}, + {-121.11351, 38.679502}, + {13.555564, 49.251119}, + {106.788101, -6.714929}, + {10.325985, 44.801246}, + {-2.987177, 43.294095}, + {-113.885737, 50.941922}, + {-0.041199, 40.118637}, + {-120.682613, 38.195463}, + {-0.435333, 38.503304}, + {-117.14378356934, 32.70149230957}, + {21.797933, 51.963661}, + {88.363723754883, 22.589950561523}, + {35.424728, 45.085487}, + {34.758041, 31.991226}, + {12.672521, 57.485306}, + {114.1088104248, 22.548751831055}, + {18.29704284668, 57.634963989258}, + {134.46922302246, 34.207992553711}, + {12.472915, 55.650559}, + {13.419113, 43.456421}, + {-5.5638885498047, 33.886642456055}, + {2.0029449462891, 50.933303833008}, + {-51.16127, -30.040742}, + {-83.382252, 42.43964}, + {174.79316711426, -36.888656616211}, + {-86.249312, 41.666937}, + {-98.578262329102, 29.544296264648}, + {-8.3104705810547, 51.776504516602}, + {-3.7113189697266, 40.449600219727}, + {10.410894, 45.464859}, + {-122.05467224121, 38.272933959961}, + {44.92859, 38.552743}, + {-71.120436, 42.362232}, + {108.018788, -6.857467}, + {-66.072101, 18.41864}, + {59.484329, 36.346208}, + {138.2787322998, 37.122116088867}, + {35.858231, 31.931076}, + {-94.927585, 47.505908}, + {28.967514038086, 41.00715637207}, + {30.584746, -0.305416}, + {14.655802, 50.150286}, + {-35.44807434082, -7.8737640380859}, + {114.147949, 22.287827}, + {105.76194763184, -6.5224456787109}, + {2.769615, 35.83241}, + {-0.823975, 51.215515}, + {28.905715942383, 54.841690063477}, + {136.95762634277, 35.19401550293}, + {125.557251, -8.54805}, + {10.047112, 56.081657}, + {11.512918, 55.847626}, + {21.581011, 53.79211}, + {-79.875463, 43.537572}, + {137.46299743652, 34.762802124023}, + {41.122513, 37.879486}, + {41.887435913086, 37.343215942383}, + {-85.079793, 33.595505}, + {6.692734, 46.289749}, + {49.914321899414, 40.39192199707}, + {33.69987487793, -25.082473754883}, + {24.682503, 59.410458}, + {140.612297, 36.513062}, + {23.35144, 42.692871}, + {104.53285217285, 15.432357788086}, + {-3.75389, 50.768339}, + {135.47584533691, 34.669418334961}, + {12.542953491211, 50.664138793945}, + {22.51339, 51.160927}, + {-77.480415, 39.19507}, + {37.593154907227, 55.771408081055}, + {-89.206924438477, 13.721237182617}, + {37.862323, 56.08635}, + {10.96871, 43.721069}, + {99.952083, 12.574834}, + {25.6493, 60.385323}, + {46.729332, 24.778699}, + {-89.792976, 35.044842}, + {-97.650833, 29.732895}, + {19.520988, 47.298889}, + {-9.3253326416016, 38.726119995117}, + {-47.320175170898, -22.808303833008}, + {-95.704544, 38.976914}, + {25.254135131836, 54.733200073242}, + {27.966354, -26.160695}, + {25.776942, 62.259415}, + {2.728042, 50.534363}, + {22.394943237305, 51.267013549805}, + {11.542017, 45.598071}, + {-0.83976745605469, 47.679977416992}, + {-7.8641510009766, 53.951797485352}, + {-90.550828, 29.756332}, + {136.896515, 35.102005}, + {-79.442825317383, 35.211868286133}, + {118.665939, 39.46653}, + {-7.6471710205078, 53.843307495117}, + {26.985852, 37.774888}, + {-90.422286987305, 38.748092651367}, + {76.552048, 12.407684}, + {2.3078155517578, 48.82942199707}, + {108.40141296387, -7.8147125244141}, + {25.414810180664, 66.418533325195}, + {109.999751, -7.778753}, + {109.910298, -7.723812}, + {144.943562, -37.826063}, + {72.926559448242, 22.610549926758}, + {27.571481, 47.159367}, + {104.2032623291, 30.648422241211}, + {74.227524, 16.677933}, + {104.19639587402, 30.741806030273}, + {106.810345, -6.220698}, + {104.29664611816, 52.298355102539}, + {-74.205093, 40.75531}, + {8.3942413330078, 48.99284362793}, + {36.212997436523, 49.988479614258}, + {30.74465, 36.857615}, + {44.929275512695, 54.161911010742}, + {88.133010864258, 22.508926391602}, + {36.913375854492, 50.37712097168}, + {7.4370574951172, 9.0287017822266}, + {10.139836, 43.989897}, + {36.118334, 52.936124}, + {9.339454, 45.242198}, + {29.027938842773, 40.989303588867}, + {11.614608764648, 48.13591003418}, + {106.75758361816, -6.4990997314453}, + {139.96788, 35.730972}, + {87.315902709961, 23.069229125977}, + {0.332033, 46.548603}, + {-2.7884674072266, 51.483993530273}, + {30.409469604492, 59.841842651367}, + {141.418762, 43.076706}, + {-3.6289215087891, 40.474319458008}, + {-51.702805, -20.803757}, + {-89.393692016602, 43.046493530273}, + {30.193176, 60.503769}, + {109.667285, -6.888757}, + {13.13887, 45.687973}, + {121.50947570801, 25.123672485352}, + {8.4574127197266, 50.004959106445}, + {10.745315551758, 35.593643188477}, + {-2.782288, 48.500519}, + {3.97842, 43.822767}, + {-97.468823, 31.057682}, + {73.087921, 19.172859}, + {17.518155, 53.708497}, + {0.966558, 49.512523}, + {17.994917, 52.460404}, + {-87.653183, 41.954178}, + {89.077835083008, 23.94401550293}, + {112.624969, -7.984314}, + {8.6194610595703, 44.395065307617}, + {26.82312, 39.567947}, + {5.339466, 60.387871}, + {10.634995, 44.88945}, + {26.34819, 43.149949}, + {-70.645523071289, -33.443069458008}, + {-85.501785, 44.313583}, + {-3.9791107177734, 50.705337524414}, + {33.77815246582, 41.427383422852}, + {-8.711472, 41.256752}, + {21.081734, 46.174164}, + {120.571518, 23.963791}, + {-118.24379, 34.052124}, + {-0.094070434570312, 51.446914672852}, + {105.663195, -5.732812}, + {28.808471, 41.0175}, + {-6.229248, 53.271561}, + {-85.60875, 30.099709}, + {-46.650009155273, -23.597946166992}, + {-113.460205, 53.606544}, + {31.586380004883, 4.8758697509766}, + {-90.942764282227, 29.633560180664}, + {28.793106079102, 47.034530639648}, + {73.572349, 22.791138}, + {-56.677952, -36.690559}, + {-1.163866, 47.270396}, + {103.84346, 1.316483}, + {3.384479, 47.294542}, + {28.062344, -26.546745}, + {19.494209, 51.710587}, + {-0.392061, 53.440482}, + {-7.718087, 32.815702}, + {21.205673, 45.729218}, + {108.812793, -6.849528}, + {10.595627, 35.822639}, + {54.501113891602, 24.354629516602}, + {-80.089654, 26.617051}, + {-36.053363, -8.003439}, + {20.873054, 52.2017}, + {22.402521, 49.443289}, + {75.16674, 30.815964}, + {117.168674, 36.144333}, + {29.17350769043, 40.264205932617}, + {-59.009903, -34.373337}, + {-5.961594, 43.572739}, + {30.754165649414, 46.461868286133}, + {139.31968688965, 35.921859741211}, + {32.091751, 54.842377}, + {-77.033245, -12.046718}, + {100.34294128418, 13.81462097168}, + {-84.090042114258, 34.124221801758}, + {58.158187866211, 54.829330444336}, + {-82.347393, 23.10791}, + {-75.02494, 39.94108}, + {11.789016723633, 55.445938110352}, + {-58.174667, 6.768178}, + {-73.517762, 45.475159}, + {-2.7431488037109, 53.291244506836}, + {9.063492, 45.511894}, + {-120.046742, 39.817815}, + {9.143372, 45.491135}, + {22.510299682617, 52.071762084961}, + {30.538558959961, 50.437545776367}, + {-42.896124, -20.410439}, + {-3.6742401123047, 40.438613891602}, + {42.569961547852, 40.332870483398}, + {-1.7887115478516, 4.9280548095703}, + {51.526337, 25.380478}, + {12.13508605957, 48.98323059082}, + {90.42366027832, 23.695449829102}, + {2.799797, 50.503807}, + {56.283645629883, 27.202835083008}, + {-2.8832244873047, 53.432693481445}, + {9.3555450439453, 46.386337280273}, + {34.808120727539, 32.060165405273}, + {139.619904, 35.531605}, + {-58.367844, -34.61174}, + {-7.7433013916016, 52.327194213867}, + {-3.532103, 51.511002}, + {27.536544799805, 53.929824829102}, + {-61.511765, -31.318588}, + {139.82643127441, 35.884780883789}, + {-73.63655090332, 4.1562652587891}, + {18.61702, 50.349106}, + {139.705675, 35.681534}, + {-58.552322387695, -34.85481262207}, + {-73.945541381836, 40.827255249023}, + {-106.097283, 28.649073}, + {78.044128, 15.830612}, + {127.0287322998, 37.584915161133}, + {107.992859, 13.97049}, + {32.901992797852, 40.032119750977}, + {-6.2285614013672, 53.407974243164}, + {24.445266723633, 57.051315307617}, + {-123.113857, 49.294682}, + {131.504745, 33.284225}, + {13.919678, 45.709305}, + {-43.454671, -22.691936}, + {52.515335083008, 29.617080688477}, + {20.981173, 52.183146}, + {7.5551605224609, 50.349655151367}, + {6.6721343994141, 12.163925170898}, + {2.474442, 48.964005}, + {107.832542, -7.231242}, + {19.123339, 48.635134}, + {-122.3087310791, 47.648391723633}, + {-16.940231323242, 14.424362182617}, + {-118.14903259277, 34.695510864258}, + {-5.63391, 54.403268}, + {106.66007995605, -6.3452911376953}, + {-10.70686340332, 6.3082122802734}, + {0.065231323242188, 47.214431762695}, + {114.52766418457, 22.595443725586}, + {119.019699, 33.600311}, + {5.5844879150391, 43.27995300293}, + {121.261597, 25.027542}, + {12.162568, 59.387714}, + {7.638421, 45.094439}, + {114.158707, 22.274094}, + {78.027306, 30.28244}, + {2.3394012451172, 48.889846801758}, + {9.725023, 52.481627}, + {-64.37370300293, 9.2923736572266}, + {10.751785, 59.603644}, + {-0.977948, 51.445217}, + {-47.980601, -21.147102}, + {37.87661, 55.710389}, + {0.153122, 44.426651}, + {-70.690841674805, 46.130905151367}, + {-0.332413, 51.604385}, + {0.53627014160156, 40.566329956055}, + {-98.241806030273, 19.225387573242}, + {23.296036, 42.676444}, + {26.472244262695, 44.629898071289}, + {-0.105839, 39.913826}, + {18.70285, 50.281677}, + {24.321670532227, 37.939224243164}, + {-77.36744, 25.072176}, + {-6.7105865478516, 55.182266235352}, + {106.870849, -6.299227}, + {-84.072187, 42.737504}, + {-81.250906, -4.588966}, + {75.810242, 26.913528}, + {-120.29823303223, 47.490463256836}, + {-99.171774, 19.359845}, + {-76.983261108398, -11.948318481445}, + {-103.45481872559, 20.681076049805}, + {19.122391, 50.217819}, + {-74.051517, 4.726942}, + {20.997162, 52.286682}, + {38.113632202148, 55.525588989258}, + {98.859786987305, 2.9669952392578}, + {-2.843056, 42.577}, + {84.27131652832, 27.969131469727}, + {8.082891, 52.2555}, + {102.22434997559, 15.078048706055}, + {139.765091, 35.699387}, + {8.1031036376953, 63.46321105957}, + {24.242706, 40.911026}, + {-46.543579, -23.426285}, + {-0.32341003417969, 51.521072387695}, + {20.473709106445, 44.811172485352}, + {112.762776, -7.268205}, + {121.457977, 31.253357}, + {100.75355529785, 19.292678833008}, + {102.791535, 16.459721}, + {101.67640686035, 2.9134368896484}, + {-73.977642, 40.582724}, + {29.725134, 60.199537}, + {100.338807, 15.025104}, + {80.220451, 13.016739}, + {44.036636352539, 56.289138793945}, + {31.282196, 29.97551}, + {5.699592, 58.957375}, + {6.0074615478516, 43.142623901367}, + {140.19859313965, 38.17268371582}, + {2.199634, 41.456251}, + {16.105728, 45.752106}, + {77.223587036133, 28.657150268555}, + {19.879107, 50.09419}, + {20.999594, 52.222824}, + {37.580109, 55.890885}, + {-70.615036, -33.426865}, + {73.58024597168, 23.955001831055}, + {-9.93864, 53.55629}, + {-2.8612518310547, 53.225326538086}, + {71.414566040039, 51.170883178711}, + {-78.790512, 43.331451}, + {-82.37005, 28.068667}, + {30.292053, 59.859009}, + {-35.899887, -7.23999}, + {121.02470397949, 14.609756469727}, + {36.958694458008, 56.198501586914}, + {-51.480904, -30.056534}, + {-86.625137329102, 35.165176391602}, + {18.71521, 54.361038}, + {31.711655, 30.315628}, + {-73.714, 45.961121}, + {79.374160766602, 19.821395874023}, + {-97.089976, 32.928442}, + {88.332138061523, 22.489700317383}, + {-89.453293, 43.45134}, + {-78.463531, -0.279327}, + {8.56355, 45.911375}, + {75.431442260742, 17.902908325195}, + {-75.936814, 40.174068}, + {-35.763401, -9.592832}, + {77.426834, 28.488922}, + {9.157145, 45.462741}, + {-101.88926696777, 21.750869750977}, + {2.265747, 47.001846}, + {57.532425, -20.117111}, + {139.7715, 35.703326}, + {112.17109680176, 2.9285430908203}, + {-90.571017, 41.521707}, + {-94.689102172852, 39.747848510742}, + {6.674194, 52.365646}, + {73.173752, 22.303482}, + {28.880996704102, 41.020889282227}, + {139.87586975098, 35.74333190918}, + {-0.33027648925781, 51.117324829102}, + {2.0922088623047, 49.326553344727}, + {28.048782348633, -26.204452514648}, + {-94.467047, 39.018033}, + {77.782516479492, 27.292098999023}, + {69.310251, 41.321914}, + {114.235611, 22.264481}, + {133.86360168457, -23.728408813477}, + {72.824936, 18.958282}, + {139.78935241699, 35.629348754883}, + {77.709732055664, 12.695388793945}, + {-79.001084, 33.741074}, + {14.234489, 51.431212}, + {67.033767700195, 24.838027954102}, + {136.839798, 35.117935}, + {21.447372, 42.017212}, + {121.08787536621, 14.602890014648}, + {-0.46073913574219, 52.45491027832}, + {25.06776, 60.2605}, + {-58.358688354492, -34.677658081055}, + {16.432827, 48.160961}, + {1.7708587646484, 47.442398071289}, + {40.054092407227, 40.94123840332}, + {42.204666137695, 44.590072631836}, + {-79.735336303711, 36.473922729492}, + {129.74922180176, 62.099533081055}, + {37.943344116211, 40.976943969727}, + {27.284504, 36.901097}, + {4.8346710205078, 45.765609741211}, + {-123.21510314941, 49.259262084961}, + {41.016769, 38.141098}, + {139.7371673584, 35.678787231445}, + {30.762062, 46.436806}, + {-2.219198, 53.524785}, + {138.800068, 35.616646}, + {37.665939331055, 55.693130493164}, + {14.316421, 48.322128}, + {46.810326, 24.708499}, + {17.613829, 52.610623}, + {85.164642, 25.598831}, + {-2.003411, 43.286598}, + {77.636074, 12.922606}, + {139.7989654541, 35.715866088867}, + {-70.642776489258, -33.451309204102}, + {-103.26118469238, 20.624771118164}, + {-77.117532, -12.039963}, + {132.468491, 34.389267}, + {41.438369750977, 20.601425170898}, + {-95.535384, 29.863286}, + {-8.691559, 41.177444}, + {123.049622, 10.466194}, + {-99.936447143555, 18.106155395508}, + {-96.992696, 32.986787}, + {-117.836341, 33.727984}, + {19.533888, 48.474034}, + {17.874069213867, 50.743789672852}, + {2.228571, 48.767427}, + {-3.769824, 37.812882}, + {9.838028, 44.113541}, + {23.36311340332, 56.779403686523}, + {35.621109008789, -0.17372131347656}, + {153.335894, -27.891368}, + {29.75715637207, 40.716018676758}, + {23.232651, 50.717972}, + {24.003067016602, 56.95930480957}, + {-43.174209594727, -22.909927368164}, + {-3.662567, 40.404282}, + {29.997165, 31.260487}, + {29.075317, 40.991458}, + {46.856002807617, 56.776657104492}, + {17.163447, 60.665321}, + {22.721786499023, 63.699417114258}, + {-44.074961, -19.775884}, + {-49.237849, -16.726724}, + {116.41181945801, 40.059585571289}, + {12.041702270508, 54.013595581055}, + {80.159683227539, 12.981033325195}, + {24.004440307617, 46.464614868164}, + {79.462051391602, 29.38362121582}, + {139.72618103027, 35.758438110352}, + {-1.806107, 38.235857}, + {107.657409, -6.924241}, + {3.713722, 6.466141}, + {123.866867, 10.258072}, + {24.875106811523, 60.234603881836}, + {114.136826, 22.286728}, + {-43.055803, -20.10125}, + {9.152298, 45.443867}, + {121.07276916504, 24.873733520508}, + {39.667099, -4.061234}, + {-0.80680847167969, 38.397903442383}, + {-7.100245, 52.250188}, + {6.668014, 36.432037}, + {-79.905624, 36.13617}, + {13.368301391602, 52.494735717773}, + {-113.238488, 53.526901}, + {-1.8079376220703, 52.46452331543}, + {22.370374, 53.802872}, + {135.487862, 33.731117}, + {23.731155395508, 56.669540405273}, + {-79.60144, 43.652802}, + {3.635886, 45.87616}, + {-51.177749633789, -29.890365600586}, + {139.760513, 35.602341}, + {-78.621597, -1.249008}, + {-2.6703643798828, 53.313217163086}, + {-95.629806518555, 29.879379272461}, + {-3.403083, 53.261533}, + {-77.04231262207, -12.119979858398}, + {-97.798461, 30.468016}, + {-4.658988, 55.554955}, + {12.693329, 56.094818}, + {-74.606474, 45.087871}, + {20.898486, 52.188141}, + {9.261376, 45.639954}, + {28.589859, 64.085999}, + {24.682846069336, 60.80451965332}, + {7.632065, 45.055618}, + {26.509338, 48.77153}, + {139.67674255371, 35.796890258789}, + {33.60878, 34.881821}, + {31.38313293457, -20.205917358398}, + {127.03673, 37.462324}, + {22.14225769043, 51.43180847168}, + {121.07551574707, 14.579544067383}, + {2.3572540283203, 41.501541137695}, + {32.771530151367, 39.953842163086}, + {138.708044, 37.435226}, + {12.689438, 50.930405}, + {75.918960571289, 10.974655151367}, + {2.2830963134766, 49.176864624023}, + {-58.473089, -34.65934}, + {77.142562866211, 28.533554077148}, + {73.372559, 61.27087}, + {49.199524, 30.556412}, + {28.986740112305, 41.037368774414}, + {2.1649932861328, 48.885726928711}, + {107.62687683105, -6.7627716064453}, + {100.883845, 12.929388}, + {28.934359, 41.031876}, + {12.453689575195, 41.932754516602}, + {29.963150024414, 31.218338012695}, + {-84.726697, 37.816178}, + {27.451400756836, 53.851547241211}, + {139.647511, 35.710177}, + {77.649307, 12.834091}, + {139.595718, 35.485497}, + {-79.774194, 43.390151}, + {31.274741, 30.193863}, + {13.119019, 47.821513}, + {15.093154907227, 44.307174682617}, + {77.55455, 13.010971}, + {-95.248031616211, 31.035690307617}, + {-118.922685, 34.414185}, + {-1.4138031005859, 54.874649047852}, + {86.22688293457, 22.833023071289}, + {9.167404, 41.235466}, + {116.880061, -1.262945}, + {10.499496459961, 54.85954284668}, + {76.970352, 52.253037}, + {9.215527, 44.357986}, + {129.00901794434, 35.244827270508}, + {30.200729, 60.509655}, + {5.766468, 45.174774}, + {2.2061920166016, 41.410903930664}, + {-51.166077, -29.968643}, + {100.49469, 5.340729}, + {120.22270202637, 22.981338500977}, + {13.728103637695, 52.107467651367}, + {2.0880889892578, 41.357345581055}, + {106.898591, -6.179696}, + {-6.5348052978516, 32.141189575195}, + {-9.0314483642578, 38.520126342773}, + {-73.871126, 40.744967}, + {-98.109970092773, 19.06608581543}, + {-88.33941, 39.84949}, + {80.016860961914, 7.0511627197266}, + {-77.018417, -12.121628}, + {-58.444109, -34.57565}, + {104.208755, 12.532059}, + {21.378707885742, 53.304977416992}, + {51.214142, 35.757751}, + {6.8122100830078, 43.516159057617}, + {115.20332336426, 37.494277954102}, + {16.919678, 52.450921}, + {-0.54450988769531, 51.504592895508}, + {100.618286, 14.176712}, + {-118.31382751465, 33.789138793945}, + {31.743759, 36.638992}, + {-10.105141, 53.549745}, + {-4.2798614501953, 55.866165161133}, + {36.673049926758, -0.70793151855469}, + {2.717071, 39.518064}, + {33.770019, 41.34989}, + {139.70832824707, 35.910873413086}, + {39.654465, 47.214432}, + {-50.43342590332, -29.027938842773}, + {110.55061340332, 29.135055541992}, + {101.704559, 3.113937}, + {27.866134643555, -26.130294799805}, + {132.22801208496, 34.254684448242}, + {8.167648, 52.107468}, + {121.44493103027, 25.041275024414}, + {-0.365677, 39.459069}, + {135.50331115723, 34.680404663086}, + {30.485000610352, 59.843215942383}, + {-77.053299, -12.016983}, + {10.130372, 56.738209}, + {-0.51429748535156, 39.506149291992}, + {106.72966, 10.915146}, + {-0.23139953613281, 5.5570220947266}, + {143.21434, 42.914658}, + {7.113215, 51.446126}, + {-40.407543, -18.710918}, + {-105.008618, 39.828841}, + {-1.210327, 51.760483}, + {84.890659, 56.523308}, + {44.63264465332, 48.705825805664}, + {120.987625, 14.570274}, + {82.891846, 54.995499}, + {-0.53627014160156, 53.193740844727}, + {130.55122375488, 32.944564819336}, + {12.485275, 55.721054}, + {-5.4828643798828, 34.212112426758}, + {2.3036956787109, 48.828048706055}, + {3.2389068603516, 45.459365844727}, + {8.6949920654297, 50.341415405273}, + {-3.8019561767578, 40.34797668457}, + {139.664466, 35.947952}, + {-1.82579, 50.73555}, + {-1.192703, 6.619263}, + {103.87367248535, 1.3039398193359}, + {73.728218, 18.654099}, + {-92.103199, 47.851644}, + {27.581988, 53.83307}, + {-82.669446, 27.74256}, + {106.530916, -6.140615}, + {-1.1075592041016, 43.087692260742}, + {47.292709350586, -18.996047973633}, + {-1.5731048583984, 53.803482055664}, + {0.551376, 52.706223}, + {-81.14502, 35.184402}, + {-95.970657, 31.11438}, + {39.706375, 47.201523}, + {39.714203, 47.293396}, + {129.01588439941, 35.152816772461}, + {37.694778442383, 55.765914916992}, + {26.10969543457, 44.399185180664}, + {37.763442993164, 56.423721313477}, + {2.889519, 41.713028}, + {-0.454483, 39.453506}, + {18.070679, 59.337845}, + {78.389511108398, 17.446975708008}, + {106.861015, -6.297218}, + {100.90461730957, 14.56169128418}, + {135.422846, 34.740141}, + {8.9476776123047, 50.927810668945}, + {8.9820098876953, 56.143569946289}, + {74.588242, 16.42662}, + {139.797592, 36.309814}, + {149.185658, -21.147173}, + {8.316195, 58.236637}, + {24.925232, 60.201645}, + {-82.722244262695, 27.684860229492}, + {139.540206, 35.400273}, + {4.2771148681641, 50.892105102539}, + {-56.179276, -34.891434}, + {6.3700103759766, 49.757766723633}, + {-1.379471, 53.350845}, + {-46.598373, -23.524612}, + {78.364105, 17.469978}, + {-79.648487, 43.807658}, + {9.0287017822266, 45.536270141602}, + {80.362930297852, 16.918258666992}, + {79.699630737305, 17.838363647461}, + {12.884772, 51.506592}, + {7.470703, 58.026695}, + {0.052027, 51.605583}, + {24.716414, 60.17592}, + {-1.0306549072266, 46.253128051758}, + {-87.383193969727, 40.518264770508}, + {2.608051, 48.507557}, + {5.384685, 43.279855}, + {72.85514831543, 19.314651489258}, + {-4.588574, 36.664535}, + {2.736576, 39.786203}, + {67.11067199707, 24.984970092773}, + {37.549085, 55.69313}, + {14.432053, 37.43715}, + {-58.247451782227, -34.794387817383}, + {-95.641972, 32.685995}, + {31.055603, 59.931107}, + {35.506876, 38.71889}, + {139.07386779785, 36.321487426758}, + {37.734603881836, 55.709609985352}, + {-1.087646, 50.802155}, + {-9.1522979736328, 38.760452270508}, + {-76.885495, 38.833558}, + {4.0161895751953, 36.696395874023}, + {-85.348282, 31.315842}, + {77.569445, 12.967512}, + {80.100631713867, 12.909622192383}, + {15.215377807617, 37.014999389648}, + {21.252365112305, 45.739517211914}, + {79.655685, 10.980606}, + {44.000931, 56.262131}, + {50.029678, 58.556442}, + {-111.87171936035, 33.399124145508}, + {20.046733, 49.972}, + {13.143081665039, 56.312484741211}, + {79.038992, 21.113491}, + {-2.236954, 53.491745}, + {104.73609924316, 31.48063659668}, + {-0.43601989746094, 51.569137573242}, + {32.86491394043, 39.942855834961}, + {30.353164672852, 59.932479858398}, + {5.557604, 43.561478}, + {35.500259399414, 32.470779418945}, + {8.516006, 59.352951}, + {30.172806, -23.825684}, + {107.10502624512, -5.9896087646484}, + {7.0607757568359, 8.9517974853516}, + {29.978256225586, 39.418258666992}, + {-6.5444183349609, 32.054672241211}, + {98.927078, 18.727341}, + {54.536819458008, 24.369735717773}, + {24.11796, 61.582964}, + {7.8051, 47.53624}, + {17.085114, -22.576904}, + {69.327163696289, 41.43424987793}, + {139.722846, 35.692324}, + {34.371037, 49.617045}, + {39.733843, 46.403641}, + {-96.038395, 29.313578}, + {9.3679046630859, 41.110153198242}, + {28.506775, 48.534508}, + {-2.326894, 53.528839}, + {126.982215, 37.179681}, + {13.43147277832, 52.467269897461}, + {31.155166, 36.901474}, + {-48.530123, -25.543452}, + {20.598679, 52.005157}, + {-6.374954, 36.626907}, + {-0.43190002441406, 39.504776000977}, + {36.711502, -1.215363}, + {-71.219301, 42.414662}, + {7.1060943603516, 51.043167114258}, + {1.56727, 41.20062}, + {23.613951, 37.949248}, + {-73.127564, 45.487158}, + {-117.22618103027, 33.828964233398}, + {-117.32231140137, 34.148941040039}, + {106.816249, -6.56223}, + {49.956893920898, 26.674118041992}, + {127.1949005127, 37.735977172852}, + {-76.486129760742, 3.4256744384766}, + {21.191254, 52.207718}, + {37.60139465332, 55.830459594727}, + {-92.416306, 35.992357}, + {-118.626938, 34.15123}, + {29.080739, 37.827884}, + {-117.2193145752, 33.14094543457}, + {106.72325134277, -6.5554046630859}, + {37.910385131836, 55.665664672852}, + {0.183334, 49.515381}, + {-16.728744506836, 28.055648803711}, + {133.7427520752, 34.27116394043}, + {59.565468, 36.273422}, + {135.77934265137, 35.034713745117}, + {77.738228, 12.987556}, + {121.266861, 25.061874}, + {23.661117553711, 61.498031616211}, + {31.476516723633, -28.88786315918}, + {91.796951293945, 22.320785522461}, + {-0.96748352050781, 37.597274780273}, + {-4.760742, 37.392426}, + {7.055969, 48.876114}, + {121.32957458496, 14.46418762207}, + {3.339917, 6.593293}, + {139.66163635254, 35.854568481445}, + {-49.910097, -26.3313}, + {-92.977, 46.960373}, + {77.380142, 12.792892}, + {46.766738891602, 24.599075317383}, + {141.667328, 43.019028}, + {123.06266784668, 0.53764343261719}, + {54.363729, 24.479653}, + {131.94511413574, 43.101425170898}, + {-76.015090942383, -9.9103546142578}, + {79.400253, 28.98468}, + {101.70433, 3.25264}, + {139.55726623535, 35.577163696289}, + {121.459579, 31.20369}, + {-0.164108, 51.183701}, + {-9.515396, 52.070251}, + {-0.243677, 50.969093}, + {-75.360546, 40.077181}, + {24.726791381836, 56.219100952148}, + {110.946929, -7.587697}, + {-15.989914, 18.110275}, + {113.6515045166, 34.765548706055}, + {34.486770629883, 55.853805541992}, + {-52.780380249023, -26.26350402832}, + {-0.303284, 51.07982}, + {9.899634, 46.17322}, + {58.384094, 23.565674}, + {75.365524, 19.883881}, + {126.99577331543, 37.295150756836}, + {35.257481, 32.886004}, + {-116.921973, 43.982107}, + {21.189193725586, 51.379623413086}, + {-97.930466, 30.434535}, + {-76.995620727539, 38.91975402832}, + {-117.525486, 34.090612}, + {-100.95849, 22.150537}, + {-85.973443, 38.280608}, + {-66.86897277832, 10.469284057617}, + {-0.18882751464844, 51.501846313477}, + {101.669846, 3.033218}, + {24.941024780273, 60.165939331055}, + {24.367905, 45.103683}, + {-89.645218, 21.034535}, + {-102.390976, 31.931076}, + {-100.18913269043, 25.777359008789}, + {21.232584, 45.774943}, + {14.529749, 52.408736}, + {7.902341, 47.637341}, + {-73.898849487305, 40.641860961914}, + {-97.94878, 29.190674}, + {-82.746963500977, 40.080184936523}, + {104.11811828613, -3.9530181884766}, + {110.459981, -7.776066}, + {-13.656692504883, 9.5711517333984}, + {121.14143371582, 30.094985961914}, + {75.758285522461, 23.136520385742}, + {11.49787902832, 50.75065612793}, + {21.701431274414, 50.062637329102}, + {90.070724487305, 23.864364624023}, + {140.362234, 35.784503}, + {27.181137, 39.123276}, + {-72.566757202148, 42.002792358398}, + {-8.676041, 42.180771}, + {122.55043029785, -3.9653778076172}, + {-117.600602, 33.463979}, + {-5.925064, 54.653}, + {100.324402, 13.647766}, + {74.65690612793, 19.305038452148}, + {72.989668, 19.126635}, + {13.029098510742, 47.833786010742}, + {27.22171, 38.46515}, + {140.87287902832, 38.257827758789}, + {37.582168579102, 55.811233520508}, + {104.87342834473, 15.178298950195}, + {31.402148, 30.142206}, + {-73.808652, 45.662004}, + {12.319781, 58.528224}, + {33.528213500977, -8.9051055908203}, + {79.265670776367, 17.052841186523}, + {19.047332, 47.558034}, + {51.650161743164, 32.702865600586}, + {30.472640991211, 59.926986694336}, + {11.988143920898, 45.176467895508}, + {50.650405883789, 26.225051879883}, + {14.445761, 45.324936}, + {-3.7360382080078, 40.429000854492}, + {-6.352615, 53.716049}, + {44.017131, 56.238942}, + {-2.208708, 53.045197}, + {32.522901, 0.296016}, + {3.087658, 50.636236}, + {12.477064, 51.302766}, + {-46.684155, -23.561098}, + {121.07414245605, 13.796768188477}, + {-87.924572, 43.043614}, + {-79.202499, -4.03038}, + {-3.9145660400391, 40.183181762695}, + {40.334243774414, 30.155410766602}, + {21.941757202148, 42.991561889648}, + {-79.96467590332, -1.6252899169922}, + {6.8053436279297, 51.442794799805}, + {-75.653915405273, 6.1846160888672}, + {16.277618, 48.038406}, + {-82.621591, 27.494001}, + {76.479263305664, 43.219528198242}, + {-92.616981, 46.855088}, + {-99.122086, 19.265213}, + {-80.386785, 25.690957}, + {11.807213, 58.134499}, + {103.86817932129, 2.3805999755859}, + {-3.6083221435547, 40.860214233398}, + {120.99449157715, 14.704513549805}, + {0.36807, 45.642179}, + {30.379715, 59.831314}, + {22.904434, 45.880875}, + {110.29792785645, 25.317306518555}, + {-113.50123, 53.557724}, + {113.50456237793, 34.65705871582}, + {-0.781656, 39.607303}, + {37.416687, 55.890884}, + {76.501235961914, 26.19758605957}, + {-96.881181, 32.859413}, + {0.54862976074219, 41.652603149414}, + {140.058746, 35.664139}, + {-73.985366821289, 40.617141723633}, + {20.520558, 54.763367}, + {32.602615, -25.959418}, + {100.59849, 13.713867}, + {39.613265991211, 24.468612670898}, + {-78.03242, 39.067397}, + {-92.067489, 41.781418}, + {47.925796508789, 56.633834838867}, + {32.047805786133, 0.39894104003906}, + {120.179031, 22.908554}, + {72.517318725586, 22.990951538086}, + {28.000717163086, 37.056198120117}, + {37.866332, 40.980908}, + {-3.69278, 42.348862}, + {-87.634964, 38.017044}, + {32.825088500977, 39.988174438477}, + {21.744003295898, 38.253707885742}, + {51.317825317383, 35.710372924805}, + {11.822433, 45.62645}, + {9.05658, 44.981461}, + {77.367782592773, 28.642044067383}, + {31.196365356445, 36.903762817383}, + {18.236618041992, 49.522933959961}, + {100.599208, 13.843043}, + {-75.411701, 41.584625}, + {11.842575073242, 48.17985534668}, + {101.06803894043, 4.8209381103516}, + {5.580826, 45.570145}, + {-99.868139, 16.857344}, + {-85.593946, 30.116581}, + {30.189743041992, 38.189163208008}, + {-123.330917, 45.062485}, + {-102.003869, 35.177144}, + {-123.15879821777, 49.130172729492}, + {-100.471115, 19.61174}, + {-105.10963439941, 39.594039916992}, + {-90.515670776367, 19.829635620117}, + {118.868637, 32.11235}, + {-121.775438, 49.252137}, + {-72.873001098633, 41.837997436523}, + {-78.576278686523, -9.0561676025391}, + {87.521896362305, 23.646011352539}, + {-91.540833, 45.85144}, + {139.599838, 35.726264}, + {29.01969909668, 41.090927124023}, + {21.70784, 53.129883}, + {110.357854, -7.720703}, + {27.476119995117, 42.499923706055}, + {36.883163452148, -1.3039398193359}, + {31.190638, -29.563094}, + {76.811599731445, 28.198471069336}, + {-97.21681, 33.127734}, + {11.597214, 48.146439}, + {86.811904907227, 23.032150268555}, + {-96.991317, 32.971297}, + {30.751894, 46.466728}, + {-121.28288269043, 38.617630004883}, + {138.58222961426, 35.402755737305}, + {104.30488586426, 52.349166870117}, + {73.827438354492, 18.599166870117}, + {-1.588672, 53.876957}, + {-0.371201, 39.48967}, + {42.700424194336, 18.556594848633}, + {121.006393, 14.388199}, + {2.6442718505859, 50.585861206055}, + {88.299179077148, 26.928176879883}, + {69.594955444336, 21.72477722168}, + {-78.820839, 42.931023}, + {-1.487687, 46.617874}, + {120.48774719238, 22.771224975586}, + {90.49919128418, 23.639144897461}, + {113.654938, 34.810867}, + {-117.08885192871, 33.433456420898}, + {7.054212, 51.425423}, + {-75.026321411133, 39.975814819336}, + {-2.585416, 53.322045}, + {85.311722, 27.694199}, + {-0.597839, 51.316223}, + {125.13359069824, 43.702926635742}, + {40.439987, 45.078278}, + {-40.79704284668, -4.1466522216797}, + {75.397109985352, 23.463363647461}, + {-87.87648, 41.479431}, + {16.845474243164, 51.129684448242}, + {-6.235886, 54.746933}, + {53.248672, 56.873474}, + {-0.98258972167969, 40.271072387695}, + {-6.2972259521484, 53.34342956543}, + {78.055801391602, 8.3777618408203}, + {139.598923, 35.581741}, + {40.847411, 56.78293}, + {4.453054, 51.96253}, + {137.00294494629, 34.923477172852}, + {104.294096, 52.290115}, + {40.483932495117, 21.443252563477}, + {-0.104272, 50.842274}, + {6.596603, 46.389084}, + {-71.69059753418, 44.161605834961}, + {-103.4300994873, 20.730514526367}, + {-77.248306274414, 38.737106323242}, + {-74.934341, 39.949131}, + {-74.224195, -13.159311}, + {139.665756, 35.689274}, + {-79.618606567383, 43.812789916992}, + {-46.40007019043, -22.878341674805}, + {107.02262878418, -6.2642669677734}, + {116.488266, -8.630905}, + {121.54106140137, 31.329574584961}, + {-99.142684936523, 20.004043579102}, + {37.859573364258, 55.690383911133}, + {79.824600219727, 11.927719116211}, + {-81.374359, 28.686677}, + {100.89637756348, 12.931594848633}, + {-102.06642150879, 51.210708618164}, + {60.661697387695, 56.942825317383}, + {12.999625, 52.659111}, + {113.0579, 22.562141}, + {113.07609558105, 22.570724487305}, + {11.768435, 52.264055}, + {113.290672, 22.859459}, + {4.384044, 45.464968}, + {104.749832, -2.925993}, + {12.08023, 48.999573}, + {9.0204620361328, 48.70719909668}, + {8.738643, 48.707297}, + {30.213219, -14.977017}, + {25.149484, -27.902472}, + {28.279171, -25.598665}, + {9.4654083251953, 51.232681274414}, + {30.419391, -29.550132}, + {21.08139, 52.560654}, + {78.107986450195, 12.058181762695}, + {4.749608, 51.304173}, + {114.104004, 22.540512}, + {-80.833737, 42.898722}, + {-79.104003, 44.365901}, + {-86.563339233398, 41.700668334961}, + {79.137497, 12.979202}, + {116.06986999512, 5.9552764892578}, + {21.002931, 52.243355}, + {78.88801574707, 16.609268188477}, + {116.03965759277, 39.71076965332}, + {-3.342889, 50.926897}, + {-77.556839, 44.304886}, + {-96.185979, 43.974685}, + {-80.193077, 25.904156}, + {139.929199, 35.67421}, + {121.02607727051, 14.630355834961}, + {17.106724, 48.136271}, + {77.034622, 28.478073}, + {-76.386753, -6.484871}, + {-9.3143463134766, 39.326248168945}, + {-58.384781, -34.60144}, + {37.532730102539, 55.83869934082}, + {-81.557395, 30.4032}, + {6.178482, 49.1082}, + {-86.079940795898, 35.472793579102}, + {106.81663513184, -6.2258148193359}, + {-89.809998, 34.961685}, + {121.53694152832, 25.104446411133}, + {144.203404, -37.587909}, + {47.923049926758, 29.247665405273}, + {12.419161, 44.182872}, + {72.588729858398, 22.974472045898}, + {25.619326, 43.080239}, + {13.226852, 46.204605}, + {37.626801, 48.162689}, + {55.311201, 25.234486}, + {139.01413, 37.884979}, + {18.955773, 52.014547}, + {39.849472045898, 47.243270874023}, + {-71.950149536133, 48.417434692383}, + {107.286301, -6.136551}, + {14.388656616211, 62.907028198242}, + {78.474655151367, 17.359085083008}, + {140.921459, 38.277054}, + {114.3724822998, 34.828720092773}, + {139.21257019043, 36.354446411133}, + {11.191177, 60.817337}, + {24.697401, 57.241657}, + {5.006561, 51.150627}, + {8.7018585205078, 51.820449829102}, + {139.645121, 35.847738}, + {-119.781526, 39.518067}, + {-76.978523, 39.11599}, + {113.52241516113, 22.271347045898}, + {51.530685424805, 25.365371704102}, + {22.096939086914, 60.491409301758}, + {34.152603, 44.489365}, + {11.025466918945, 43.834762573242}, + {14.578801, 50.076896}, + {-80.294266, 40.493546}, + {114.38758850098, 30.474014282227}, + {-105.0593, 40.553911}, + {18.170357, 59.343338}, + {5.20903, 45.777695}, + {-53.843245, -29.684104}, + {-76.943435668945, 39.035110473633}, + {121.028402, 14.609794}, + {-8.32489, 41.619644}, + {-94.657366, 34.528243}, + {-58.448296, -34.612427}, + {42.660049, 17.155014}, + {121.04942321777, 14.553451538086}, + {139.653912, 35.566987}, + {-39.485825, -9.843475}, + {-84.025497436523, 42.380447387695}, + {77.076645, 28.450532}, + {58.500687, 23.528184}, + {7.062149, 47.402573}, + {-95.372065, 29.739527}, + {30.417709350586, 60.003890991211}, + {23.407435, 42.708679}, + {1.871366, 47.917242}, + {88.245620727539, 24.086837768555}, + {-6.225313, 53.264228}, + {125.29975891113, 43.344497680664}, + {38.173141, 56.258011}, + {7.476196, 9.113073}, + {12.797809, 55.607001}, + {55.305862, 25.238571}, + {16.81963, 52.429298}, + {139.516983, 35.546494}, + {-96.814041, 32.833328}, + {121.387939, 31.206665}, + {77.222213745117, 28.687362670898}, + {-77.119217, 39.291573}, + {16.382675170898, 48.21418762207}, + {30.471267700195, 59.755325317383}, + {139.62264, 35.784007}, + {136.991393, 50.540159}, + {36.170156, 50.082964}, + {46.731033325195, 24.670486450195}, + {-87.07127, 20.66282}, + {118.41682434082, -8.5480499267578}, + {-0.353622, 51.50528}, + {98.49723815918, 3.6083221435547}, + {80.245013, 13.116989}, + {121.47651672363, 25.019302368164}, + {-107.158187, 52.766211}, + {-0.47035217285156, 51.895980834961}, + {31.274642944336, 30.031814575195}, + {2.192459, 48.89328}, + {18.034427, 59.317642}, + {2.175751, 48.75618}, + {-123.18489074707, 49.242782592773}, + {12.452211, 43.118574}, + {19.111563, 47.591923}, + {-8.4931182861328, 33.19450378418}, + {-73.931637, 40.785542}, + {39.30290222168, 51.514205932617}, + {20.094680786133, 32.106857299805}, + {-1.7118072509766, 51.746292114258}, + {-58.561592, -34.503593}, + {33.841662, 52.657815}, + {139.38835144043, 35.571670532227}, + {7.0099639892578, 4.7550201416016}, + {3.370056, 6.639175}, + {-97.52273, 35.493062}, + {-43.812789916992, -19.711532592773}, + {-89.882583618164, 35.077285766602}, + {-87.755356, 41.990433}, + {-76.991500854492, -12.11311340332}, + {73.791732788086, 61.584548950195}, + {78.057174682617, 30.295486450195}, + {136.969471, 35.175819}, + {15.535354, 46.885117}, + {137.79670715332, 34.806747436523}, + {49.868317, 26.536102}, + {18.034744262695, 59.314498901367}, + {-2.4533843994141, 50.616073608398}, + {121.0952, 14.643173}, + {1.49437, 44.845047}, + {-3.950424, 55.976334}, + {55.388259887695, 25.357131958008}, + {29.785995, 60.178299}, + {106.934738, -6.383057}, + {6.8286895751953, 51.007461547852}, + {120.6827545166, 31.293869018555}, + {25.356445, 35.335464}, + {139.67674255371, 35.691146850586}, + {-1.884842, 52.245712}, + {-5.5226898193359, 41.921768188477}, + {6.996918, 4.802399}, + {136.943893, 35.185165}, + {27.904808, 39.649784}, + {20.873337, 51.121762}, + {8.3516693115234, 51.614456176758}, + {5.989609, 5.503006}, + {136.803818, 34.358368}, + {26.572494506836, 43.24836730957}, + {-64.791641, 32.295227}, + {-78.403455, 40.474787}, + {20.958481, 52.42772}, + {92.843399047852, 56.010360717773}, + {-97.236473, 32.430159}, + {7.198793, 51.274568}, + {-1.1212921142578, 50.848159790039}, + {18.72084, 50.327682}, + {-75.815963745117, 40.455093383789}, + {73.837051391602, 15.384292602539}, + {109.47807312012, -6.9001007080078}, + {26.13166809082, 44.459609985352}, + {1.4426422119141, 43.602676391602}, + {30.980759, -17.824356}, + {-52.47654, -26.375084}, + {-95.238154, 29.601796}, + {-2.280349, 53.589935}, + {55.394302, 25.328842}, + {9.331516, 42.699055}, + {8.7059783935547, 48.149642944336}, + {59.611347, 36.286649}, + {6.6872406005859, 36.409378051758}, + {4.864447, 51.557886}, + {-61.350928, 10.637068}, + {2.1045684814453, 41.501541137695}, + {98.67301940918, 3.6962127685547}, + {139.374618, 35.526352}, + {104.92835998535, 11.569290161133}, + {9.117507, 45.587346}, + {107.548599, -7.149353}, + {-97.230329, 33.001739}, + {75.954666137695, 31.490249633789}, + {119.25590515137, 33.758926391602}, + {-86.267287, 39.882976}, + {111.12464904785, -7.4027252197266}, + {24.863434, 62.64061}, + {-52.026642, -23.435632}, + {8.935928, 51.715317}, + {-104.56855773926, 38.285293579102}, + {-111.946392, 40.702801}, + {33.365707, 35.172043}, + {4.1068267822266, 48.28971862793}, + {-13.620986938477, 9.6247100830078}, + {14.024907, 40.924416}, + {37.52311706543, 55.429458618164}, + {23.826463, 38.045395}, + {139.80308532715, 35.795516967773}, + {-118.315034, 34.011444}, + {4.8882293701172, 51.295852661133}, + {105.84983825684, 21.016159057617}, + {-76.705066, 38.991264}, + {13.038711547852, 54.08088684082}, + {82.858658, 54.981308}, + {139.592697, 35.531845}, + {139.772873, 35.689185}, + {-118.35777282715, 34.137954711914}, + {6.1324310302734, 52.676010131836}, + {110.215074, -7.482654}, + {10.306225, 56.260511}, + {139.85252380371, 35.740585327148}, + {-86.114706, 41.724448}, + {106.851715, -6.16341}, + {-4.9994659423828, 34.04182434082}, + {23.85612487793, 61.171188354492}, + {80.277786254883, 26.208572387695}, + {-97.382714, 32.785655}, + {121.456506, 25.009554}, + {-9.242921, 38.717323}, + {100.728665, 13.598003}, + {-0.037087, 38.805777}, + {80.008278, 9.668655}, + {10.739822387695, 35.710372924805}, + {4.8044586181641, 52.55241394043}, + {30.538558959961, 39.767074584961}, + {36.254196, 37.053452}, + {-104.796919, 39.544087}, + {34.82048034668, 50.907211303711}, + {49.498902, 30.980072}, + {35.929145, 31.946252}, + {140.9497833252, 39.65446472168}, + {45.030899047852, 53.18000793457}, + {-98.976516723633, 19.416275024414}, + {56.361465, 25.469742}, + {6.427687, 51.814951}, + {11.02409362793, 53.504104614258}, + {22.504807, 38.124619}, + {31.35498, 30.523796}, + {140.530014, 37.435379}, + {-68.841018676758, -32.966537475586}, + {-89.830055, 35.030005}, + {55.933456420898, 54.657669067383}, + {-81.626783, 43.157433}, + {-17.378311157227, 14.774551391602}, + {100.623671, 13.767012}, + {177.369461, -17.676661}, + {100.311673, 5.376246}, + {-121.577681, 36.63025}, + {72.833176, 18.975449}, + {-79.366985, 43.162505}, + {-76.693954, 39.457169}, + {9.516309, 51.267015}, + {5.41969, 45.144883}, + {101.09275817871, 13.461685180664}, + {6.761092, 51.482185}, + {13.485949, 58.51616}, + {15.908889770508, 50.768508911133}, + {100.41023254395, 13.866806030273}, + {5.012891, 46.527935}, + {-149.15657, 61.599656}, + {2.8749847412109, 50.708084106445}, + {103.097098, 5.073794}, + {140.195847, 35.468216}, + {101.536276, 3.478194}, + {3.403015, 50.136108}, + {-6.637538, 43.039377}, + {115.221176, -8.74649}, + {14.194354, 40.974478}, + {139.047089, 37.892807}, + {153.21327209473, -27.720565795898}, + {41.926034, 44.999813}, + {12.558517, 42.981034}, + {121.07963562012, 14.745712280273}, + {77.528114, 12.944984}, + {-97.672517, 30.217725}, + {-3.6811065673828, 40.422134399414}, + {24.500748, 60.981949}, + {111.71379089355, -7.6993560791016}, + {137.07023620605, 35.332717895508}, + {9.4310760498047, 50.316696166992}, + {75.596237182617, 25.910568237305}, + {24.875565, 60.163536}, + {25.706101, 45.143509}, + {21.308165, 53.838932}, + {-97.893694, 28.105112}, + {73.372604, 61.264023}, + {3.8802337646484, 36.381912231445}, + {-0.17482, 51.6996}, + {9.528579, 41.017456}, + {76.575393676758, 9.9584197998047}, + {-2.265474, 50.915749}, + {37.578324, 55.548111}, + {8.5068511962891, 47.391586303711}, + {-77.289162, 38.63205}, + {-4.162674, 14.514542}, + {5.5103302001953, 43.505172729492}, + {77.641067504883, 12.971420288086}, + {29.038069, 41.091138}, + {13.521881, 46.936111}, + {59.37629699707, 36.311874389648}, + {134.215163, 35.268174}, + {-81.637344360352, 30.25016784668}, + {-55.631985, -34.433217}, + {28.85627746582, 41.000289916992}, + {121.100922, 14.606323}, + {36.352249, 55.449097}, + {-79.893264770508, 40.592422485352}, + {15.080856, 37.468693}, + {-89.591049, 20.94682}, + {82.106667, 26.768532}, + {-96.163254, 31.671219}, + {-118.02955627441, 34.094009399414}, + {-46.717088, -23.543909}, + {11.018672, 50.964999}, + {-6.6034698486328, 42.557601928711}, + {115.170364, -8.647614}, + {-121.44355773926, 39.223251342773}, + {-84.855049, 42.280657}, + {6.179454, 49.535205}, + {15.025863647461, 53.33381652832}, + {107.094825, -6.476735}, + {137.89833068848, 35.592269897461}, + {31.183308, 58.479884}, + {78.388137817383, 17.446975708008}, + {107.67149, -6.952268}, + {-117.08885192871, 32.925338745117}, + {-1.7255401611328, 7.5524139404297}, + {-105.872203, 49.486836}, + {-90.944867, 14.702062}, + {2.566223, 48.816147}, + {1.367397, 43.499563}, + {39.293489, 21.426302}, + {136.93428, 35.126038}, + {114.58122253418, 38.013381958008}, + {11.699752807617, 48.13591003418}, + {13.228905, 51.261388}, + {80.16242980957, 12.963180541992}, + {78.214073, 26.202049}, + {139.656909, 35.97989}, + {71.485977172852, 51.15852355957}, + {12.59981, 55.703568}, + {-86.235662, 39.790586}, + {96.941299438477, 17.420883178711}, + {4.57694, 51.872192}, + {-117.75901794434, 34.032211303711}, + {28.842544555664, 46.982345581055}, + {-0.539305, 44.818719}, + {83.562698364258, 25.929794311523}, + {12.566438, 44.038773}, + {101.711922, 3.154715}, + {-72.855834, 45.047381}, + {-81.569972, 30.322969}, + {-5.2342987060547, 55.445938110352}, + {104.96955871582, 8.7348175048828}, + {18.75846862793, 49.201583862305}, + {-2.676773, 53.700485}, + {2.3448944091797, 48.770370483398}, + {-84.941025, 32.561874}, + {21.018906, 52.117767}, + {21.040878295898, 52.170639038086}, + {26.678237915039, 60.855331420898}, + {13.792005, 49.828996}, + {-83.708267211914, 42.232131958008}, + {-1.3712310791016, 53.055038452148}, + {-0.087203979492188, 51.51008605957}, + {-5.363388, 35.57991}, + {37.328176, 37.057102}, + {-1.4742279052734, 50.896224975586}, + {3.371429, 6.509857}, + {112.88108825684, 27.860641479492}, + {76.937393, 10.895004}, + {-95.385138, 29.833004}, + {51.041793823242, 35.685653686523}, + {-118.21764, 34.06933}, + {-7.5537872314453, 33.572158813477}, + {-75.56946, 43.128897}, + {-99.172897338867, 19.673080444336}, + {-156.47895812988, 20.885696411133}, + {-122.45429992676, 37.778549194336}, + {103.61686706543, -1.5868377685547}, + {-122.19612121582, 38.208389282227}, + {101.715546, 3.159943}, + {104.83497619629, 15.281295776367}, + {-71.042404174805, -34.758682250977}, + {-100.627041, 23.562412}, + {106.75346374512, 10.86067199707}, + {106.743027, -6.127487}, + {1.2064361572266, 41.106033325195}, + {73.51432800293, 17.479934692383}, + {-3.8692474365234, 37.19352722168}, + {0.54588317871094, 46.941146850586}, + {77.823715209961, 13.084030151367}, + {-1.0691070556641, 53.986129760742}, + {39.716263, 47.282639}, + {7.492685, 9.096582}, + {-82.510757446289, 28.974380493164}, + {139.914322, 36.592712}, + {21.112289428711, 52.24479675293}, + {72.645034790039, 23.223037719727}, + {17.397537231445, 48.24577331543}, + {-4.2606353759766, 40.466079711914}, + {21.129161, 52.315031}, + {22.755203, 62.791672}, + {-85.612912, 42.954483}, + {136.6609954834, 36.563186645508}, + {30.523234, 50.454477}, + {27.675247192383, 53.93669128418}, + {18.37532043457, 39.805526733398}, + {30.39402, 59.970246}, + {28.181992, -25.643692}, + {24.65065, 60.228525}, + {-71.577987670898, -33.121719360352}, + {50.625, 35.999794}, + {137.00569152832, 34.99626159668}, + {-100.980988, 22.143358}, + {11.076198, 43.800834}, + {38.570938110352, 55.29899597168}, + {7.0717620849609, 8.8927459716797}, + {77.926712036133, 28.74641418457}, + {-42.749862670898, -5.1161956787109}, + {37.031478881836, 39.756088256836}, + {19.000854, 50.270004}, + {-51.178436, -23.306122}, + {1.84639, 42.374954}, + {13.603134155273, 56.160049438477}, + {-81.792232, 30.312326}, + {4.472544, 50.458274}, + {18.474899, -34.010111}, + {46.038208, 51.523132}, + {-70.507887, -33.366595}, + {0.420227, 46.614304}, + {31.203232, 30.097275}, + {21.047741, 64.729668}, + {8.737335, 45.254059}, + {121.02745056152, 14.558944702148}, + {-74.228558, 39.676062}, + {-74.682998657227, 39.357833862305}, + {-94.415817260742, 39.234237670898}, + {39.640731811523, -4.0409088134766}, + {-118.244591, 34.039879}, + {-74.766966, 10.951898}, + {120.91209411621, 37.635726928711}, + {-122.720718, 45.465546}, + {-82.111244, 29.172821}, + {-80.129471, 26.185226}, + {-87.494972, 44.535908}, + {-98.180987, 19.067071}, + {8.870087, 44.905243}, + {78.469161987305, 17.414016723633}, + {9.7043609619141, 55.535202026367}, + {8.283248, 50.049578}, + {12.192764282227, 46.360244750977}, + {101.18064880371, 13.074417114258}, + {139.722748, 35.577164}, + {30.421829223633, 59.981918334961}, + {23.142013549805, 63.831253051758}, + {-0.676804, 50.785904}, + {106.633301, 10.8078}, + {101.68327331543, 3.1125640869141}, + {135.234756, 34.353256}, + {128.51578, 35.470039}, + {77.726211547852, 11.330337524414}, + {7.461973, 10.542657}, + {-73.800489, 41.112366}, + {12.114145, 44.356613}, + {-58.380661, -34.60968}, + {-96.795569, 32.698261}, + {33.578027, 45.140887}, + {85.014266967773, 26.816940307617}, + {21.952057, 47.045517}, + {-2.23603, 53.429697}, + {140.501198, 36.389465}, + {-73.838424682617, 40.758590698242}, + {31.155853, 29.997482}, + {-115.245346, 36.288528}, + {18.706283569336, 54.350051879883}, + {126.67854309082, 37.416000366211}, + {7.478127, 51.525141}, + {51.530136, 25.279953}, + {-4.025345, 50.721817}, + {121.11122131348, 14.607009887695}, + {-0.689045, 47.29889}, + {11.99089050293, 51.161270141602}, + {34.839706420898, 31.803359985352}, + {29.367371, 40.803452}, + {-71.432236, 42.98063}, + {37.329635, 56.010208}, + {27.996597290039, -26.211318969727}, + {20.663223266602, 40.618515014648}, + {30.28450012207, 59.970932006836}, + {11.261215, 44.483741}, + {7.131843, 43.574425}, + {-0.90568542480469, 51.03630065918}, + {72.884184, 21.077957}, + {10.491256713867, 43.403549194336}, + {107.154273, -6.273923}, + {37.196274, 55.624467}, + {31.358413696289, 29.441299438477}, + {-81.46842956543, 26.435165405273}, + {106.941192, -6.217956}, + {35.249806, 32.787323}, + {8.0907440185547, 45.562362670898}, + {116.45576477051, 39.929122924805}, + {-16.149208, 14.531481}, + {-88.316563, 36.601964}, + {76.944907, 43.266122}, + {139.715979, 36.130404}, + {44.551620483398, 40.10627746582}, + {82.726364135742, 25.344772338867}, + {-94.577187, 39.77332}, + {113.78196716309, 22.734146118164}, + {19.956589, 49.596024}, + {70.057754516602, 22.470474243164}, + {29.647296, -19.572153}, + {11.166458, 44.634476}, + {39.51301574707, -8.9339447021484}, + {-1.967242, 51.760025}, + {33.016251, 34.654312}, + {12.372585, 51.89619}, + {132.938004, 48.78479}, + {35.895309, 32.056961}, + {23.771439, 61.491394}, + {124.477615, 10.548019}, + {11.533584594727, 51.074752807617}, + {81.809005737305, 16.877059936523}, + {6.0363006591797, 43.244247436523}, + {26.079106, 61.229297}, + {107.534454, -6.859648}, + {12.44339, 55.691758}, + {17.977066040039, 50.705337524414}, + {-67.609541, 10.27849}, + {47.786064, 29.291267}, + {12.291641235352, 55.823593139648}, + {-3.03257, 53.466511}, + {46.824875, 24.785843}, + {20.962143, 52.23175}, + {-4.3265533447266, 55.88264465332}, + {30.368156, 50.392227}, + {-0.44151306152344, 39.530868530273}, + {51.5968, 35.745686}, + {117.198029, 39.130554}, + {17.29301, 62.451962}, + {36.059188842773, 52.987747192383}, + {77.189255, 28.657837}, + {139.004464, 37.896547}, + {76.950302124023, 11.028213500977}, + {-113.4603, 53.503533}, + {7.560654, 45.068665}, + {-101.668523, 21.087174}, + {136.92054748535, 34.92073059082}, + {48.66291, 31.25782}, + {29.42482, 40.859528}, + {-81.747033, 30.310809}, + {-97.261826, 35.632508}, + {37.652206420898, 55.820846557617}, + {-43.922653, -19.951172}, + {20.18669128418, 47.171859741211}, + {-76.959915161133, -12.082901000977}, + {13.727648, 43.174052}, + {84.502029418945, 22.614669799805}, + {100.70823669434, 13.844833374023}, + {44.797439575195, 33.948440551758}, + {23.566164, 46.785769}, + {-66.161727905273, 18.373947143555}, + {133.328304, 34.043488}, + {-103.32710266113, 20.671463012695}, + {-94.698382, 32.382449}, + {77.078018188477, 28.499221801758}, + {-101.950965, 32.391773}, + {26.337661743164, 59.36393737793}, + {43.399429321289, 59.692153930664}, + {25.740967, -25.299454}, + {113.07334899902, 25.782852172852}, + {100.54206848145, 13.855819702148}, + {29.042641, 40.970561}, + {-2.1402740478516, 51.339797973633}, + {107.54447937012, -6.9248199462891}, + {124.617232, 8.51058}, + {18.343734741211, 43.830642700195}, + {88.387756, 22.802811}, + {136.181717, 36.228561}, + {3.0040740966797, 36.748580932617}, + {77.538070678711, 13.038711547852}, + {19.03450012207, 50.25764465332}, + {16.872286, 41.107472}, + {75.815506, 26.82106}, + {100.198228, 26.888488}, + {177.86247253418, -18.235244750977}, + {-95.99675, 36.185532}, + {13.390085, 56.13362}, + {13.325465, 59.71558}, + {-58.39714050293, -34.596633911133}, + {141.139641, 39.731369}, + {50.230178833008, 30.593490600586}, + {127.423861, 36.683444}, + {-84.907150268555, 38.16032409668}, + {130.514831, 33.581772}, + {139.644182, 35.819926}, + {4.491625, 50.871515}, + {9.418727, 53.200335}, + {24.422608, 58.791046}, + {77.51335144043, 12.878036499023}, + {16.615702, 49.191256}, + {101.14082336426, 13.438339233398}, + {85.055465698242, 25.578231811523}, + {-75.276260375977, 2.8914642333984}, + {-122.01004, 37.32605}, + {1.258104, 51.364694}, + {-0.73814392089844, 38.06282043457}, + {34.994339, 44.838638}, + {137.426612, 50.274124}, + {9.234784, 49.182712}, + {-3.2938385009766, 47.748641967773}, + {27.877808, 43.186569}, + {48.621368, 31.28872}, + {-2.294769, 53.699112}, + {-73.985366821289, 40.75309753418}, + {77.609481811523, 12.924728393555}, + {5.580369, 46.696016}, + {104.37767, 52.278099}, + {-88.520278930664, 44.073715209961}, + {-5.5034637451172, 42.451858520508}, + {6.8053436279297, 51.442794799805}, + {-7.8916168212891, 37.155075073242}, + {-1.8820953369141, 50.736923217773}, + {-0.33302307128906, 48.635787963867}, + {100.58738708496, 14.167556762695}, + {-158.059616, 21.445607}, + {-58.361434936523, -34.655685424805}, + {140.430679, 37.821121}, + {-46.571731567383, -23.556747436523}, + {23.646011352539, 60.08903503418}, + {-104.882355, 39.640045}, + {29.540176, -24.293289}, + {132.40242004395, 34.438705444336}, + {75.772018432617, 11.282272338867}, + {77.058792114258, 28.46076965332}, + {-96.814956665039, 33.103866577148}, + {29.879379272461, 40.762710571289}, + {13.030471801758, 46.667861938477}, + {80.236588, 13.058624}, + {-122.144024, 47.488153}, + {30.379257202148, 59.92561340332}, + {27.802449, 43.191851}, + {140.416946, 36.358174}, + {73.815537, 18.534164}, + {37.966690063477, -1.3465118408203}, + {11.34407043457, 45.518417358398}, + {-7.957535, 12.669296}, + {139.72068786621, 35.618362426758}, + {8.796234, 50.60936}, + {112.9923248291, 22.639389038086}, + {121.054186, 14.565749}, + {121.446671, 25.171921}, + {-4.175263, 50.37941}, + {113.77647399902, -8.0358123779297}, + {3.3927154541016, 6.4620208740234}, + {80.17204284668, 13.099136352539}, + {-9.294496, 38.700085}, + {45.935897827148, 51.599349975586}, + {77.16268, 28.54866}, + {75.457878, 63.210526}, + {14.635162, 63.178253}, + {-95.372124, 29.757208}, + {37.756576538086, 55.646438598633}, + {118.36601257324, 31.340560913086}, + {138.211441, 36.76918}, + {11.107864379883, 59.274673461914}, + {-70.661316, -33.446503}, + {31.413345336914, 30.65803527832}, + {139.705599, 35.731006}, + {-0.67222595214844, 44.815292358398}, + {-8.0261993408203, 12.597885131836}, + {7.889493, 51.637208}, + {-122.005995, 37.520944}, + {24.981881, 60.192375}, + {31.024704, -29.822388}, + {36.884536743164, 27.220687866211}, + {-98.445598, 29.06392}, + {26.641159057617, 60.930862426758}, + {103.18840026855, 3.7456512451172}, + {11.104351, 60.181761}, + {-0.67634582519531, 51.661148071289}, + {-1.018982, 52.564774}, + {-122.486566, 38.520848}, + {10.721467, 50.866462}, + {-0.359287, 39.126434}, + {13.805695, 50.359955}, + {23.757247924805, 37.98454284668}, + {-6.247673, 53.355675}, + {19.178159, 50.305026}, + {21.374357, 46.229096}, + {52.98912, 39.994354}, + {91.693954467773, 53.67301940918}, + {-38.492660522461, -12.964553833008}, + {1.4618682861328, 52.34504699707}, + {106.604462, 10.815353}, + {-3.6934661865234, 40.275192260742}, + {-74.215529, 45.99962}, + {-65.197437, -26.832112}, + {-86.075766, 39.375467}, + {-79.359055, 43.822403}, + {-94.417191, 39.003067}, + {-91.680735, 14.540022}, + {-66.157608, 18.382187}, + {100.32920837402, 16.985549926758}, + {99.902114868164, 17.988052368164}, + {9.5890045166016, 55.75080871582}, + {121.1483001709, 13.942337036133}, + {19.160842895508, 47.416305541992}, + {5.6229400634766, 6.3947296142578}, + {12.987899780273, 41.553726196289}, + {2.6099395751953, 43.799057006836}, + {78.334351, 17.41745}, + {15.472183227539, 46.890335083008}, + {4.2359161376953, 52.080001831055}, + {138.723679, 37.42218}, + {9.4969940185547, 51.260147094727}, + {-0.70381164550781, 52.140426635742}, + {17.257804, 40.842362}, + {54.263535, 31.894684}, + {-7.890244, 12.609329}, + {113.99894714355, 22.466354370117}, + {10.726089477539, 49.283981323242}, + {112.79068, -7.321014}, + {119.49073791504, 35.419235229492}, + {0.54450988769531, 51.592483520508}, + {18.006405, 59.368681}, + {60.598869, 56.850471}, + {-5.539856, 43.532295}, + {115.79521179199, 28.654403686523}, + {15.065689, 37.45563}, + {140.863266, 38.345032}, + {37.256698608398, 56.160049438477}, + {36.792984, -1.286545}, + {-5.839233, 37.33017}, + {-1.2819671630859, 50.945663452148}, + {-77.053257, -11.99915}, + {-0.279121, 51.745949}, + {-0.23414611816406, 51.942672729492}, + {77.693252563477, 13.000259399414}, + {112.91542053223, 22.466354370117}, + {55.433578491211, 25.376358032227}, + {10.638198852539, 59.91325378418}, + {46.138045, 38.034256}, + {12.813229, 43.917569}, + {5.0447845458984, 43.789443969727}, + {17.648848, 52.533463}, + {36.817245, -1.281281}, + {17.471694946289, 46.57585144043}, + {138.310318, 36.662735}, + {37.598648071289, 55.66291809082}, + {17.366589, 51.228463}, + {18.083434, 51.328437}, + {39.813309, 47.276688}, + {-3.589096, 36.733475}, + {-78.81356, -7.9765}, + {-80.148992, 26.290023}, + {24.785019, 46.220718}, + {29.993362426758, 31.252670288086}, + {1.4206695556641, 51.331558227539}, + {-85.080184936523, 40.975570678711}, + {-0.414617, 51.805936}, + {-16.274912, 12.567511}, + {10.141067504883, 54.347305297852}, + {77.566767, 12.930353}, + {7.0264434814453, 50.588607788086}, + {-119.315243, 47.15704}, + {112.00218200684, -7.8009796142578}, + {-97.391325, 42.944243}, + {23.159866333008, 50.969009399414}, + {-91.514395, 45.546913}, + {-3.317871, 40.513458}, + {8.132754, 49.744471}, + {41.931969, 51.442509}, + {-5.692978, 43.308836}, + {77.731901, 28.955154}, + {108.252682, -6.727306}, + {-85.515518188477, 42.663345336914}, + {-69.936904907227, 18.47282409668}, + {120.62919616699, 31.368026733398}, + {127.245323, 36.99692}, + {102.295239, 2.221516}, + {-118.379265, 34.156648}, + {139.74815368652, 35.758438110352}, + {6.808091, 51.231995}, + {-8.8817596435547, 37.072677612305}, + {110.3508, -7.745705}, + {91.440582, 53.718338}, + {11.335830688477, 44.337387084961}, + {18.539886, -33.856659}, + {-86.584625, 31.396179}, + {14.210852, 51.519035}, + {19.763375, 43.559075}, + {-97.634215, 31.328796}, + {11.423721313477, 47.913436889648}, + {132.038043, 43.371965}, + {18.086999, 59.314563}, + {-81.512708, 29.969479}, + {113.6775970459, 34.816360473633}, + {27.885818, 43.21907}, + {54.347305297852, 31.86653137207}, + {9.2113494873047, 55.49674987793}, + {121.01234436035, 14.567184448242}, + {21.266098022461, 60.793533325195}, + {-0.15174865722656, 5.6861114501953}, + {100.400162, 13.682327}, + {21.017532348633, 52.15690612793}, + {4.8429107666016, 45.713424682617}, + {77.954727, 10.375076}, + {10.180892944336, 36.806259155273}, + {-94.147072, 45.553672}, + {16.782303, 49.76429}, + {17.210312, 49.764175}, + {37.514877319336, 55.647811889648}, + {64.007034301758, 57.776412963867}, + {-95.254377, 29.775324}, + {63.698043823242, 58.046951293945}, + {-47.33528137207, -0.64064025878906}, + {17.014363, 58.624203}, + {-1.484819, 50.971358}, + {-43.190647, -22.985923}, + {37.332271, 55.689011}, + {-4.0779876708984, 48.001327514648}, + {-9.359665, 38.689728}, + {136.912308, 35.094589}, + {32.772217, 39.943771}, + {-83.582596, 36.252009}, + {-3.8376617431641, 56.320724487305}, + {-1.656134, 54.406876}, + {-0.442888, 51.256372}, + {-3.6797332763672, 40.431747436523}, + {8.996429, 13.798828}, + {-60.88211, 14.600144}, + {-91.648361, 30.993393}, + {-72.4135, -38.424881}, + {139.76051330566, 35.795516967773}, + {34.547882, -0.696945}, + {-96.729813, 32.995834}, + {-106.442551, 23.239517}, + {2.245052, 48.876787}, + {37.818375, 55.821762}, + {-93.137283325195, 41.682815551758}, + {77.634201049805, 13.02360534668}, + {-77.112350463867, -11.944198608398}, + {1.895828, 47.8965}, + {101.562601, 3.128957}, + {173.872789, -41.514862}, + {107.175045, -6.374936}, + {135.44700622559, 34.475784301758}, + {26.864319, 43.185196}, + {16.036598, 41.391679}, + {134.16435241699, 34.739456176758}, + {-99.155044555664, 19.43962097168}, + {2.133408, 41.399574}, + {27.433547973633, 53.88313293457}, + {-67.511672973633, 10.213851928711}, + {15.297317, 41.062546}, + {100.0366973877, 13.811874389648}, + {26.093903, 48.79921}, + {-103.571085, 41.813796}, + {-87.639999389648, 41.875076293945}, + {73.23967, 22.304993}, + {136.806564, 36.608368}, + {-8.5301971435547, 33.23844909668}, + {3.419495, 6.437302}, + {100.7137298584, 13.934097290039}, + {102.630697, 1.005212}, + {90.417709, 23.707809}, + {136.9164276123, 34.874038696289}, + {-7.733002, 52.102661}, + {12.531967163086, 44.077835083008}, + {140.813942, 38.222122}, + {30.311965942383, 59.965438842773}, + {15.639644, 44.244356}, + {18.662704, 54.354195}, + {-2.9395294189453, 53.462905883789}, + {5.6504058837891, 6.3137054443359}, + {-114.96849060059, 36.023483276367}, + {26.598587036133, 48.689346313477}, + {139.372559, 36.000137}, + {4.2839813232422, 45.869979858398}, + {20.951614, 52.258987}, + {17.99034, 48.882523}, + {-0.225677, 51.766434}, + {24.740541, 42.13749}, + {-2.127457, 52.045212}, + {-43.385696411133, -23.000564575195}, + {-122.80444, 57.291647}, + {-75.686874389648, 45.41130065918}, + {48.753433, 31.364365}, + {-73.904989, 40.844946}, + {0.763973, 51.208016}, + {-69.430160522461, -19.832382202148}, + {-97.50618, 32.762833}, + {-97.082901, 36.110444}, + {119.94255065918, 30.263900756836}, + {136.92192077637, 35.154190063477}, + {117.236481, -0.411301}, + {-0.15037536621094, 51.516952514648}, + {77.64518737793, 13.009872436523}, + {120.59074401855, 31.328201293945}, + {106.66282653809, 10.78239440918}, + {7.1788787841797, 9.1770172119141}, + {19.636522, 41.697474}, + {37.756576538086, 55.802993774414}, + {4.105911, 51.520157}, + {136.91093444824, 35.207748413086}, + {10.043563842773, 49.816818237305}, + {115.07698059082, 37.565689086914}, + {120.543365, 31.806107}, + {-1.374493, 50.870133}, + {98.86116027832, 2.9711151123047}, + {-100.66841125488, 18.358840942383}, + {20.021073, 51.529851}, + {136.68296813965, 35.078659057617}, + {142.42057800293, 43.823776245117}, + {-3.5066986083984, 56.383895874023}, + {-47.883224487305, -20.619277954102}, + {-75.132751, 39.951782}, + {85.125961, 25.620346}, + {137.893184, 36.363031}, + {-74.283194, 40.670108}, + {-0.099563598632812, 5.6902313232422}, + {29.088407, 64.866725}, + {37.27928, 48.137286}, + {-3.975334, 5.338326}, + {80.189895629883, 7.2420501708984}, + {136.908188, 35.251007}, + {80.31514, 13.201584}, + {-6.468582, 53.433645}, + {8.057099, 44.804764}, + {7.854081, 53.018418}, + {21.004486, 52.264023}, + {23.196259, 44.36142}, + {18.953967, 69.649462}, + {0.564984, 50.862767}, + {4.5009613037109, 52.148666381836}, + {3.312721, 6.636772}, + {28.957715, 41.006282}, + {-84.38063, 39.042526}, + {98.696365, 3.572159}, + {-56.049793, -15.569483}, + {-60.185165405273, -32.157669067383}, + {139.73898, 35.636215}, + {21.654739379883, 47.594833374023}, + {30.480880737305, 31.034317016602}, + {102.03346252441, 5.8097076416016}, + {127.13241, 36.842907}, + {112.61054992676, -7.2338104248047}, + {-3.7209320068359, 40.363082885742}, + {122.51197814941, -3.9736175537109}, + {13.295516967773, 54.009475708008}, + {-73.334541, 45.579071}, + {42.854232788086, 44.03938293457}, + {30.423202514648, 50.447158813477}, + {121.30073547363, 25.004196166992}, + {46.239738, 38.050461}, + {40.153656, 49.373245}, + {26.11254, 44.433321}, + {28.022689819336, -26.208572387695}, + {-75.575979, 6.240325}, + {120.471271, 31.48822}, + {137.17185974121, 34.90837097168}, + {78.286514282227, 10.009231567383}, + {-84.187081, 9.987576}, + {136.88346862793, 35.166549682617}, + {39.595413208008, 24.478225708008}, + {9.9529266357422, 49.797592163086}, + {43.616409, 43.48938}, + {74.608383, 42.857895}, + {120.434189, 36.176605}, + {100.422482, 13.75893}, + {120.461221, 36.178665}, + {-96.685646, 32.854603}, + {19.101791381836, 50.285110473633}, + {-0.359802, 6.193542}, + {7.188952, 51.008377}, + {110.35835266113, -7.8009796142578}, + {139.446774, 35.543289}, + {110.41603088379, 29.36164855957}, + {51.42219543457, 35.619735717773}, + {18.554535, 4.373245}, + {121.01097106934, 24.833908081055}, + {12.500381, 55.719223}, + {32.266159057617, 30.611343383789}, + {5.2356719970703, 52.37663269043}, + {-5.869265, 54.632655}, + {18.042068, 59.383163}, + {4.852067, 52.350653}, + {2.2872161865234, 48.78547668457}, + {3.194796, 45.661845}, + {-77.021164, 38.888718}, + {-1.454544, 53.366318}, + {4.346466, 51.847916}, + {-0.48820495605469, 43.899307250977}, + {-88.443375, 13.344612}, + {140.09010314941, 36.32698059082}, + {52.290437, 54.902415}, + {1.3739776611328, 43.634262084961}, + {12.974166870117, 47.782974243164}, + {-75.197982788086, 39.937362670898}, + {-69.861373901367, 18.514022827148}, + {-99.09165, 19.441007}, + {-69.272232055664, -19.763717651367}, + {30.274887084961, 59.899520874023}, + {113.2738494873, 22.957992553711}, + {74.875259399414, 24.46174621582}, + {-46.649352, -23.595923}, + {78.831515, 14.465169}, + {7.7790069580078, 51.684494018555}, + {73.819794, 15.539098}, + {6.2271881103516, 51.078872680664}, + {37.556076, 55.777588}, + {-0.38932800292969, 39.475936889648}, + {-82.473543, 27.489573}, + {126.947138, 52.63144}, + {39.646224975586, 47.206192016602}, + {25.29670715332, 54.722213745117}, + {138.29109191895, 36.682662963867}, + {3.184883, 39.805788}, + {44.70131, 41.093674}, + {-0.64613342285156, 38.12873840332}, + {128.140393, 51.565019}, + {2.392273, 51.04454}, + {8.600627, 47.67468}, + {121.709023, 25.097934}, + {-77.30598449707, 38.628616333008}, + {-122.924423, 46.979599}, + {34.619633, 36.803991}, + {7.488418, 50.088184}, + {3.173676, 42.263718}, + {-77.573978, 39.124269}, + {12.403908, 55.692444}, + {-76.479263, 3.613358}, + {-5.049587, 50.224002}, + {17.076187133789, 48.123550415039}, + {107.602158, -6.952972}, + {13.907089, 46.566467}, + {17.790298461914, 46.35612487793}, + {29.789566, -19.436796}, + {22.394243, 61.028283}, + {-3.5808563232422, 50.337295532227}, + {44.437437, 33.306116}, + {23.797073364258, 53.701858520508}, + {139.842773, 35.707077}, + {18.66096496582, 49.899215698242}, + {110.45979, -7.005972}, + {-90.231448, 32.359591}, + {15.610885620117, 58.414993286133}, + {75.793991088867, 26.933670043945}, + {-3.689888, 40.25713}, + {-77.056631, -12.098476}, + {137.986221, 35.873795}, + {-72.720565795898, 41.663589477539}, + {-5.831108, 43.38295}, + {12.232291, 45.480834}, + {4.869003, 52.310715}, + {-15.730362, 27.814407}, + {-0.220268, 51.475888}, + {140.191543, 35.905861}, + {-46.591939, -23.456595}, + {-0.17234802246094, 51.526565551758}, + {54.400863647461, 24.452133178711}, + {100.988567, 14.573342}, + {-50.445785522461, -24.868240356445}, + {-7.215271, 53.114777}, + {113.097943, 22.98034}, + {11.072158813477, 49.680862426758}, + {83.657455444336, 21.349868774414}, + {17.073440551758, 59.608383178711}, + {37.646122, 55.881736}, + {1.723743, 48.505614}, + {34.852453, 32.326582}, + {-96.23405456543, 37.100143432617}, + {33.434829711914, -3.6577606201172}, + {16.999969, 49.276428}, + {-1.543179, 53.117248}, + {13.327868, 45.893784}, + {3.944679, 43.670779}, + {10.717163, 34.72023}, + {12.346572875977, 42.081069946289}, + {30.467147827148, 46.967239379883}, + {139.774806, 35.709846}, + {121.61521911621, 25.048141479492}, + {11.71474, 49.735124}, + {13.897019, 55.863876}, + {104.19776916504, 30.430068969727}, + {137.860336, 36.495895}, + {23.124504, 60.371933}, + {-73.747513, 40.921188}, + {-117.730569, 33.869777}, + {136.916656, 35.152359}, + {54.62677, 24.376602}, + {-82.094131, 34.215768}, + {27.727218, 53.844032}, + {6.5540313720703, 36.971054077148}, + {80.09651184082, 12.905502319336}, + {139.077988, 36.000595}, + {38.29216003418, 55.830459594727}, + {51.37619, 35.740929}, + {39.839859008789, 55.981521606445}, + {138.95576477051, 37.659072875977}, + {36.68684, 45.318286}, + {9.3665313720703, 36.08528137207}, + {1.935654, 41.388245}, + {-2.946396, 48.560257}, + {120.32020568848, 31.585006713867}, + {10.061264, 33.847275}, + {1.129189, 43.585854}, + {21.062652, 52.29115}, + {77.334137, 8.940811}, + {4.288562, 49.002457}, + {-106.34696960449, 31.645431518555}, + {-84.170136, 41.591585}, + {-100.97877502441, 22.15461730957}, + {-92.654124, 30.375606}, + {23.306236, 42.701201}, + {-6.93045, 53.424592}, + {139.514694, 35.90181}, + {-79.747695922852, 33.239822387695}, + {12.29267, 45.528374}, + {-0.56098937988281, 52.691116333008}, + {-65.260848999023, -19.038619995117}, + {-99.172897338867, 19.379196166992}, + {139.938183, 36.559753}, + {-77.053298950195, -12.111740112305}, + {140.170097, 35.718956}, + {78.438949584961, 17.392044067383}, + {-0.234146, 52.437973}, + {-76.539688110352, 39.392166137695}, + {109.48768615723, 34.191513061523}, + {-49.246445, -25.506821}, + {-85.543823, 38.230425}, + {72.688293, 33.21991}, + {35.214065, 46.713455}, + {10.694687, 60.782181}, + {-3.6550140380859, 40.514144897461}, + {121.07276916504, 14.57405090332}, + {114.0731048584, 34.457931518555}, + {28.181991577148, -26.164627075195}, + {31.01921081543, -29.842300415039}, + {13.344372, 52.767046}, + {14.175796508789, 52.822952270508}, + {61.408767700195, 55.130081176758}, + {48.0233, 29.303055}, + {11.716232299805, 50.444412231445}, + {37.605511, 55.644909}, + {35.489273071289, 38.701400756836}, + {112.792854, -7.3423}, + {101.61460876465, 3.0974578857422}, + {36.317331, 49.956464}, + {36.241531, 50.029373}, + {135.322952, 33.781357}, + {18.828506469727, 49.890975952148}, + {73.04718, 19.191055}, + {127.19352722168, 37.292404174805}, + {-2.1485137939453, 52.472763061523}, + {26.196212768555, -29.071884155273}, + {-89.407424, 45.660629}, + {31.105543, 59.416859}, + {-79.691390991211, 43.549118041992}, + {43.439254760742, 56.230087280273}, + {12.327151, 45.400314}, + {88.408585, 22.599106}, + {-3.630411, 37.551628}, + {-0.660973, 45.762276}, + {136.56898498535, 35.005874633789}, + {83.112258911133, 55.055923461914}, + {103.841629, 22.336349}, + {34.765548706055, -0.10917663574219}, + {2.809347, 41.957765}, + {4.5572662353516, 50.070877075195}, + {7.2846221923828, 50.677871704102}, + {13.048668, 38.074153}, + {14.689407348633, 37.03971862793}, + {31.019105, 30.073119}, + {18.936996459961, 42.732009887695}, + {50.493851, 26.206169}, + {11.743698, 57.867737}, + {73.67775, 24.598487}, + {-90.14861, 32.383085}, + {20.33088684082, 47.723922729492}, + {79.394073, 10.956116}, + {-122.45704650879, 47.999954223633}, + {13.561935424805, 45.968856811523}, + {-0.16136169433594, 51.501846313477}, + {127.18391418457, 37.34733581543}, + {100.429459, 13.797455}, + {28.117446899414, 40.118637084961}, + {47.381973266602, 42.976455688477}, + {151.54335021973, -32.956924438477}, + {10.301743, 36.727295}, + {-74.792666, 10.925217}, + {-78.758926391602, 42.96272277832}, + {17.180557250977, 59.623489379883}, + {74.645919799805, 19.380569458008}, + {135.46485900879, 34.824600219727}, + {81.118240356445, 16.75895690918}, + {101.64756774902, 3.0960845947266}, + {130.88493347168, 31.851425170898}, + {-83.07131, 42.474081}, + {-96.819076538086, 32.925338745117}, + {13.787155151367, 52.391738891602}, + {-5.0983428955078, 50.072250366211}, + {43.940505981445, 56.275405883789}, + {121.34880065918, 30.730819702148}, + {82.841034, 54.82933}, + {107.20115661621, 22.842636108398}, + {142.51945495605, -37.958450317383}, + {76.973452, 29.552928}, + {8.926169, 51.4967}, + {-1.793289, 53.649673}, + {120.17738342285, 30.247421264648}, + {132.44087219238, 34.400253295898}, + {102.0059967041, 12.674789428711}, + {4.736786, 45.881195}, + {-1.447132, 52.061273}, + {113.36036682129, 22.940139770508}, + {136.213028, 34.917709}, + {121.773072, 24.823834}, + {28.963394165039, -2.3339080810547}, + {141.102217, 38.558582}, + {44.99382019043, 40.562210083008}, + {44.978713989258, 40.757217407227}, + {-116.947563, 32.749849}, + {37.468646, 55.871203}, + {56.725845, 58.991089}, + {116.449356, 39.904861}, + {145.665488, -16.759621}, + {49.546279907227, 25.388717651367}, + {37.058487, 55.731583}, + {-2.52677, 51.505108}, + {2.627792, 48.949242}, + {83.30956, 54.340897}, + {101.650772, 3.208237}, + {23.316352, 42.719282}, + {139.6671295166, 35.604629516602}, + {9.348221, 48.611984}, + {-4.222183, 55.897751}, + {-118.15185, 34.113733}, + {1.1391448974609, 51.260147094727}, + {72.506332, 23.021851}, + {18.901041, 47.361106}, + {31.276893, 30.133933}, + {14.009628, 48.782043}, + {14.412003, 50.085983}, + {-75.906600952148, 8.7952423095703}, + {19.088021, 49.837566}, + {9.3679046630859, 45.365982055664}, + {52.44255065918, 29.724197387695}, + {35.740193, 49.708917}, + {50.519943237305, 26.183853149414}, + {39.905359, 59.231907}, + {-73.595352172852, 41.034622192383}, + {-7.880173, 52.505264}, + {21.261978149414, 45.739517211914}, + {-8.684426, 52.660854}, + {-99.23469543457, 19.565963745117}, + {-93.800582885742, 41.567459106445}, + {-47.412185668945, -23.052749633789}, + {60.777053833008, 54.351425170898}, + {60.609512329102, 54.223709106445}, + {111.43089294434, -7.5977325439453}, + {-97.662735, 30.484543}, + {153.32176208496, -27.885360717773}, + {-96.736938, 36.114797}, + {55.35530090332, 25.269241333008}, + {31.101786, -28.98005}, + {110.494995, -7.365646}, + {22.257385, 60.439787}, + {-98.221893, 19.04068}, + {105.28953552246, -5.1216888427734}, + {15.913009643555, 58.478164672852}, + {31.250267, 29.227066}, + {2.1759796142578, 46.194076538086}, + {47.025763, -19.868088}, + {-8.5247039794922, 40.992050170898}, + {-2.315316, 36.833725}, + {98.380508422852, 7.8792572021484}, + {11.282849, 44.031828}, + {34.401626586914, 47.553634643555}, + {37.785415649414, 55.745315551758}, + {12.111740112305, 41.936874389648}, + {139.511948, 35.460606}, + {77.001113891602, 11.013107299805}, + {4.934137, 45.683212}, + {-9.140167, 38.72818}, + {10.197372436523, 56.154556274414}, + {137.882309, 35.581741}, + {139.83604431152, 35.717239379883}, + {4.8332977294922, 52.421951293945}, + {-0.440689, 54.09874}, + {121.59049987793, 23.964614868164}, + {134.805679, 35.254166}, + {83.959579467773, 53.43132019043}, + {-74.59098815918, 41.147232055664}, + {123.096724, 9.465684}, + {8.9778900146484, 50.136795043945}, + {-87.656302, 41.903403}, + {34.249649, 56.217728}, + {-58.459763, -34.542664}, + {18.526597, 50.35063}, + {6.5100860595703, 43.451614379883}, + {-0.77659606933594, 39.43473815918}, + {100.80024719238, 13.677291870117}, + {10.229187, 47.670364}, + {10.790634155273, 59.848709106445}, + {61.386111, 54.914475}, + {4.8992156982422, 43.474960327148}, + {-78.517227172852, -7.1514129638672}, + {2.413559, 48.843842}, + {-46.538772583008, -23.500442504883}, + {-93.826675415039, 45.31379699707}, + {10.023647, 36.755678}, + {29.074631, 40.882874}, + {-123.564713, 48.542751}, + {-84.703217, 42.753983}, + {50.533676147461, 26.215438842773}, + {-103.51249694824, 19.636001586914}, + {8.756275, 36.929855}, + {-77.065658569336, 38.934860229492}, + {-78.155153, 39.077086}, + {55.066909790039, 24.895706176758}, + {78.407742, 17.459335}, + {14.063186645508, 46.599197387695}, + {77.614975, 12.912369}, + {109.10865783691, 21.484451293945}, + {-76.670150756836, 39.18342590332}, + {110.663898, -7.729869}, + {13.312456, 43.619157}, + {10.221405, 36.833611}, + {10.735703, 36.451035}, + {4.8360443115234, 45.78483581543}, + {101.74644470215, 3.0919647216797}, + {55.989761, 58.038712}, + {38.260986, 54.021835}, + {-66.24137878418, 18.323135375977}, + {77.566452, 13.161392}, + {-1.4907073974609, 47.30094909668}, + {-3.820496, 40.392609}, + {18.009395, 59.296589}, + {139.69596862793, 35.774917602539}, + {7.208455, 43.668466}, + {-8.740311, 42.20773}, + {39.179306030273, 21.462478637695}, + {113.092117, 22.656784}, + {23.710955, 37.917716}, + {-99.169366, 18.887068}, + {139.8868560791, 35.644454956055}, + {6.043854, 51.330528}, + {77.183075, 28.661957}, + {23.965301, 47.181474}, + {72.848228, 21.204289}, + {14.431228637695, 50.077743530273}, + {7.4466705322266, 43.755111694336}, + {76.043930053711, 18.189926147461}, + {37.539596557617, 56.828842163086}, + {11.120224, 60.775681}, + {-2.0674896240234, 52.365646362305}, + {-38.587757, -3.775357}, + {-2.8516387939453, 43.23600769043}, + {36.785659790039, -1.2064361572266}, + {-97.308376, 36.283548}, + {6.909714, 51.273193}, + {-80.038834, 43.822403}, + {32.853927612305, 39.91813659668}, + {-83.195516, 42.358393}, + {37.47917175293, 55.774154663086}, + {121.12770080566, 22.754745483398}, + {-82.195209, 30.066925}, + {27.822189, 43.24303}, + {-60.70839, -32.975693}, + {101.702499, 3.185623}, + {-94.957888, 33.131534}, + {37.150955200195, 56.047439575195}, + {-93.312378, 37.182541}, + {-58.129804, -34.792816}, + {37.341585, 55.648842}, + {15.142593383789, 46.904067993164}, + {12.115583, 48.694421}, + {103.65669250488, 1.5497589111328}, + {151.16157531738, -33.855056762695}, + {115.225868, -8.675308}, + {86.970749, 23.68721}, + {139.960702, 35.702445}, + {101.71897888184, 3.1592559814453}, + {20.453109741211, 44.779586791992}, + {65.567092895508, 57.126846313477}, + {8.243866, 45.00206}, + {106.646347, 10.756989}, + {120.482298, 36.178665}, + {-77.919845581055, 18.490676879883}, + {73.830184936523, 18.518142700195}, + {-5.3002166748047, 37.682418823242}, + {32.60124206543, 0.32890319824219}, + {27.153381, 44.415107}, + {-56.254806518555, -34.795761108398}, + {131.068596, -12.500561}, + {9.434756, 45.581918}, + {106.832864, -6.177445}, + {25.036449, 60.189929}, + {11.396255493164, 59.115371704102}, + {59.517746, 36.331329}, + {4.363632, 48.955307}, + {142.36701965332, 43.772964477539}, + {23.35075378418, 42.666091918945}, + {44.768938, 41.769212}, + {110.352486, 1.523253}, + {44.75212097168, 41.724014282227}, + {-8.8776397705078, 38.521499633789}, + {-104.941178, 39.768906}, + {17.611427, 52.550698}, + {34.385419, 53.265977}, + {32.713165, 39.936676}, + {11.669540405273, 55.205612182617}, + {-50.551528930664, -20.27458190918}, + {15.469436645508, 47.04963684082}, + {5.6133270263672, 52.030563354492}, + {30.779571, 46.572075}, + {26.011858, 70.975115}, + {-0.22041320800781, 51.559524536133}, + {4.493768, 52.161091}, + {138.88023376465, 35.104751586914}, + {-97.293593, 36.289501}, + {-1.575707, 54.819936}, + {-3.007202, 51.071243}, + {-100.143369, 20.187789}, + {105.731735, 19.264183}, + {139.804753, 35.851822}, + {-97.063179, 32.702522}, + {-83.143844604492, 42.89680480957}, + {-100.266876, 25.770598}, + {-80.427474975586, 37.241592407227}, + {51.37001, 35.605316}, + {-66.852493286133, 18.33137512207}, + {-72.351150512695, -37.459945678711}, + {10.258035, 45.647591}, + {85.284805, 27.69104}, + {15.235923, 44.120903}, + {85.294418334961, 27.661514282227}, + {-104.809939, 39.664092}, + {23.161239624023, 53.126449584961}, + {-3.6920928955078, 40.320510864258}, + {135.42091369629, 34.727096557617}, + {28.522567749023, -25.671615600586}, + {11.803436, 50.479431}, + {139.33754, 35.391495}, + {137.2061920166, 36.581039428711}, + {139.473724, 36.339569}, + {100.27565002441, 16.826248168945}, + {18.191299438477, 39.88655090332}, + {75.229568, 23.003311}, + {18.155251, 49.826474}, + {-99.133071899414, 19.296798706055}, + {-1.767628, 53.77784}, + {127.036554, 37.502464}, + {55.795275, 24.304132}, + {106.773402, -6.150766}, + {2.294083, 48.811111}, + {37.550993, 55.902516}, + {-43.429168, -22.720917}, + {-104.752822, 39.622844}, + {6.6103363037109, 50.636672973633}, + {2.203849, 48.678887}, + {29.047164916992, 41.111526489258}, + {139.801987, 35.70076}, + {-58.443302, -32.537399}, + {100.29762268066, 19.559097290039}, + {122.16453552246, -2.8227996826172}, + {-93.266257, 44.889925}, + {77.61360168457, 12.97966003418}, + {36.191809, 55.346538}, + {-47.420947, -22.756738}, + {121.64817810059, 25.060501098633}, + {7.264814, 51.557017}, + {-4.025438, 5.430078}, + {-2.461349, 36.83345}, + {13.360748, 52.495422}, + {37.36930847168, 55.77278137207}, + {0.648605, 47.343521}, + {90.202560424805, 23.960494995117}, + {83.073887, 54.936048}, + {19.03450012207, 46.621170043945}, + {45.635696, 38.943375}, + {-82.419966, 29.609842}, + {18.52707, -33.85849}, + {-91.880267, 41.185687}, + {28.062515258789, -26.122055053711}, + {121.263657, 25.066681}, + {98.931198120117, 8.1085968017578}, + {16.354522, 48.356324}, + {31.325112, 59.884072}, + {2.8502655029297, 48.473739624023}, + {-119.599228, 37.74353}, + {-17.318475, 14.731783}, + {137.128372, 35.126724}, + {85.615768432617, 24.472732543945}, + {137.07160949707, 35.07453918457}, + {104.64134216309, 16.941604614258}, + {15.278275, -4.451523}, + {3.6275482177734, 45.637893676758}, + {113.540955, 22.201653}, + {153.101652, -27.431419}, + {77.947311, 29.888535}, + {4.827805, 45.760803}, + {78.94157409668, 12.195510864258}, + {139.672165, 35.526352}, + {0.332474, 50.802017}, + {144.987259, -37.734146}, + {120.442429, 23.291703}, + {106.870209, -6.414501}, + {15.01937, 37.283113}, + {-4.520645, 48.403931}, + {-7.971954, 12.669983}, + {18.226506, 42.607665}, + {9.063492, 45.459366}, + {105.0821685791, 16.039352416992}, + {14.337851, 49.215321}, + {11.94694519043, 45.363235473633}, + {73.769760131836, 18.59504699707}, + {35.481765, 54.269195}, + {137.89695739746, 34.677658081055}, + {0.084457397460938, 52.232437133789}, + {28.120193481445, -26.377487182617}, + {-1.079178, 46.400528}, + {100.458145, 13.784409}, + {46.178284, 35.481033}, + {32.816848754883, 34.673538208008}, + {55.218998, 25.139063}, + {25.574112, 49.546271}, + {10.137463, 52.362213}, + {-91.35612487793, 42.909164428711}, + {-80.287399, 25.788231}, + {86.364212036133, 23.32878112793}, + {2.8530120849609, 46.47834777832}, + {104.916687, 11.562424}, + {24.593824, 65.725948}, + {30.349044799805, 59.852828979492}, + {91.210556030273, 23.441390991211}, + {-73.949661, 41.126633}, + {9.4969940185547, 56.596755981445}, + {14.245835, 57.78534}, + {-84.460831, 33.944664}, + {12.321167, 55.785141}, + {-78.648248, -1.295012}, + {12.591733, 41.613419}, + {-93.38996887207, 45.004806518555}, + {-113.348335, 53.466003}, + {75.931314, 31.93657}, + {-5.4663848876953, 41.14860534668}, + {120.210045, 23.04752}, + {-79.005168, 43.087256}, + {-80.358179, 25.711024}, + {-71.338207, 42.593511}, + {80.466123, 26.549345}, + {-94.624557495117, 39.072189331055}, + {120.94779968262, 14.111251831055}, + {55.151836, 25.093016}, + {139.39796447754, 35.562057495117}, + {84.832306, 25.556946}, + {-117.9141998291, 33.894882202148}, + {11.228315, 43.635635}, + {12.479782104492, 55.719223022461}, + {103.892441, 1.323853}, + {127.04246520996, 37.602767944336}, + {103.802948, 1.579285}, + {4.293595, 51.927567}, + {136.05812072754, 35.461807250977}, + {-99.174271, 19.447861}, + {30.03044128418, -22.346878051758}, + {14.790656, 44.74513}, + {100.648548, 13.835952}, + {140.908928, 38.281517}, + {37.849666, 55.732302}, + {82.97699, 25.346146}, + {133.826306, 34.279838}, + {37.939224243164, 55.710983276367}, + {106.702554, 10.749239}, + {137.08122253418, 35.335464477539}, + {78.54606628418, 14.74983215332}, + {75.864028930664, 30.859909057617}, + {135.5623626709, 34.816360473633}, + {53.22498, 56.847536}, + {-5.533219, 54.622879}, + {5.469133, 59.447558}, + {25.89958190918, 45.080337524414}, + {31.204605102539, 29.985122680664}, + {106.67930603027, 10.81672668457}, + {139.594345, 35.909375}, + {79.535751, 14.200516}, + {73.808899, 18.561401}, + {134.200973, 34.754563}, + {61.304397583008, 55.347061157227}, + {-119.74891662598, 36.749954223633}, + {5.583114, 51.83487}, + {27.54993, 53.890742}, + {35.973723, 54.520171}, + {1.118032, 49.888745}, + {-0.47309875488281, 51.580123901367}, + {-91.682414, 14.537624}, + {15.235156, 59.351995}, + {-1.976068, 37.62631}, + {22.937393188477, 42.921524047852}, + {76.727828979492, 30.463027954102}, + {139.65888977051, 35.939712524414}, + {37.661476, 55.748234}, + {-8.937549, 38.750343}, + {139.69734191895, 35.612869262695}, + {12.945327758789, 55.570907592773}, + {31.197968, 29.931564}, + {139.481735, 35.702329}, + {123.934708, 10.346375}, + {-79.828024, 36.09004}, + {-100.082703, 20.450501}, + {-121.431624, 43.900444}, + {18.461838, -33.917542}, + {11.860234, 48.436122}, + {104.436722, 0.924911}, + {-106.336155, 42.85964}, + {-69.012516, -33.02947}, + {-101.003102, 25.389771}, + {140.10108947754, 35.390396118164}, + {-93.145523, 37.443771}, + {-8.6359405517578, 41.121139526367}, + {79.592972, 17.977524}, + {-95.474625, 29.878693}, + {120.71846008301, 15.598526000977}, + {12.551193, 55.646439}, + {20.89737, 67.104494}, + {77.087631225586, 28.436050415039}, + {-99.223297, 18.911865}, + {-4.1727447509766, 56.048812866211}, + {99.968719, 17.95372}, + {12.17903137207, 44.068222045898}, + {149.08790588379, -35.196762084961}, + {-82.616043, 27.808456}, + {100.47340393066, 7.0003509521484}, + {-80.76530456543, 33.493881225586}, + {-98.552169799805, 29.486618041992}, + {11.764297485352, 48.387222290039}, + {-0.27259826660156, 50.989608764648}, + {107.617722, -6.938553}, + {-104.867861, 39.403033}, + {33.36067199707, 45.192947387695}, + {35.746078491211, 54.031448364258}, + {-99.25542, 19.382318}, + {-1.14706, 47.08535}, + {49.833297729492, 40.360336303711}, + {25.016899, 48.67012}, + {24.104342, 35.477058}, + {6.9083404541016, 52.251663208008}, + {77.576522827148, 12.967300415039}, + {114.66362, -3.400269}, + {-1.2723541259766, 47.100448608398}, + {112.740555, -7.247543}, + {-64.13200378418, -32.189254760742}, + {3.6138153076172, 51.210708618164}, + {31.61247253418, 40.732498168945}, + {22.136388, 40.811822}, + {77.402114868164, 13.08952331543}, + {4.636917, 52.337494}, + {39.746475219727, 47.148513793945}, + {2.2199249267578, 48.893966674805}, + {139.485025, 35.465391}, + {30.461654663086, 50.427932739258}, + {11.175141, 47.969057}, + {-117.143387, 32.783476}, + {20.785446166992, 52.189865112305}, + {28.33854675293, -28.706588745117}, + {28.673629760742, 40.982437133789}, + {3.143234, 41.927719}, + {9.8732757568359, 37.280044555664}, + {77.606049, 12.943954}, + {18.172037, 53.998584}, + {-96.194229, 32.138443}, + {-66.183700561523, 18.41926574707}, + {115.147518, -8.767277}, + {-76.501235961914, 39.349594116211}, + {124.02397155762, 10.601119995117}, + {-99.180458, 19.369087}, + {-63.601913452148, 44.671096801758}, + {31.791000366211, -25.903701782227}, + {22.318834, 47.942063}, + {76.661309, 12.350286}, + {-92.631912, 41.287651}, + {49.8452, 40.432434}, + {119.4344329834, 32.21809387207}, + {-75.919264, 37.921999}, + {-102.395872, 23.178557}, + {7.4480438232422, 46.956253051758}, + {100.022278, 15.391846}, + {18.490682, 57.455065}, + {14.410629272461, 46.957626342773}, + {77.268905639648, 28.40446472168}, + {16.35383605957, 48.23616027832}, + {100.567507, 13.982266}, + {114.01679992676, 22.665481567383}, + {101.62422180176, 6.6638946533203}, + {0.253265, 51.586866}, + {20.854784, 52.195827}, + {36.51237487793, 56.554183959961}, + {30.651016, 36.914028}, + {21.012726, 52.168579}, + {31.300735, 30.073471}, + {77.231826782227, 28.552780151367}, + {37.959823608398, 55.517349243164}, + {-80.600878, 41.109687}, + {101.763153, 2.934036}, + {106.70677185059, 10.781021118164}, + {34.853439331055, -0.73677062988281}, + {72.212906, 55.891342}, + {79.091262817383, 21.115036010742}, + {72.816892, 18.961716}, + {30.85578918457, 50.364761352539}, + {3.381729, 51.350098}, + {27.358249, 42.5235}, + {11.117032, 42.474578}, + {-78.496627807617, -7.1747589111328}, + {29.245158, -25.897714}, + {139.99809265137, 37.498397827148}, + {2.898331, 42.668381}, + {-0.438309, 51.70372}, + {54.326248, 29.201431}, + {3.882209, 51.065098}, + {16.462326049805, 59.355697631836}, + {-2.4822235107422, 43.179702758789}, + {43.981704711914, 56.286392211914}, + {-76.118774, 42.915344}, + {5.209238, 46.673012}, + {51.430435180664, 32.492752075195}, + {11.8781, 48.315667}, + {-2.212372, 53.526764}, + {0.212166, 49.4838}, + {145.279312, -37.81105}, + {12.09114074707, 54.171524047852}, + {-81.473493, 28.470619}, + {-65.793685913086, 18.417892456055}, + {134.87915, 34.705124}, + {-77.279892, 38.746719}, + {16.504898071289, 48.145523071289}, + {-74.147415161133, 4.5600128173828}, + {-2.937813, 35.071106}, + {121.60423278809, 24.04426574707}, + {120.934341, 14.4142}, + {-76.979589, -12.102082}, + {-100.955429, 25.429745}, + {137.037964, 35.007935}, + {-96.26678, 35.979779}, + {104.82536315918, 11.52946472168}, + {20.137252807617, 63.794174194336}, + {13.859116, 57.758286}, + {117.83592224121, 28.352279663086}, + {-0.057005, 51.628255}, + {5.6957244873047, 50.842666625977}, + {27.268753051758, 37.881546020508}, + {28.838424682617, 47.024917602539}, + {31.253128, 30.116043}, + {128.194696, 37.173895}, + {3.471681, 6.446745}, + {54.521534, 24.388932}, + {102.269313, 6.145871}, + {20.450363, 45.821228}, + {15.273743, -4.319687}, + {136.268921, 35.260621}, + {134.755783, -29.013748}, + {78.331558, 18.319016}, + {121.498833, 12.597199}, + {140.093536, 35.614929}, + {77.156295776367, 28.525314331055}, + {130.450287, 33.552246}, + {139.86625671387, 36.432723999023}, + {54.39537, 24.45694}, + {-16.62117, 28.019943}, + {138.87336730957, 37.788162231445}, + {100.212871, 14.01316}, + {80.257186889648, 13.05793762207}, + {-95.382879, 29.735476}, + {27.842214, 39.658733}, + {76.269149780273, 27.866134643555}, + {114.36424255371, 30.508346557617}, + {7.263336, 51.255341}, + {-93.204574584961, 44.881210327148}, + {34.953079, 32.478457}, + {28.977127075195, 41.008529663086}, + {77.686126, 12.931187}, + {2.946857, 44.601531}, + {48.35907, 54.306107}, + {39.827179, 57.604568}, + {28.621444702148, 44.267349243164}, + {125.612869, 7.091675}, + {-94.393138, 46.739469}, + {8.791806, 49.370501}, + {17.099533081055, 48.085098266602}, + {38.521499633789, 55.60661315918}, + {-84.535939, 39.218071}, + {-2.160932, 49.239954}, + {-43.368073, -22.973137}, + {12.99843, 56.582108}, + {-5.5721282958984, 33.164291381836}, + {-73.519821166992, 41.239242553711}, + {-83.380585, 42.542076}, + {40.438957, 21.379738}, + {-60.646591, -32.965851}, + {20.192572, 47.147606}, + {-122.87178039551, 45.702438354492}, + {7.645111, 45.038452}, + {20.932388305664, 52.242050170898}, + {19.839354, 50.105632}, + {37.491531, 55.612793}, + {76.863784790039, 30.846176147461}, + {13.402156, 51.725242}, + {115.535082, -8.595238}, + {5.7204437255859, 49.149398803711}, + {14.431228637695, 50.077743530273}, + {139.581127, 35.985718}, + {109.34349060059, 12.993392944336}, + {16.318130493164, 56.67366027832}, + {90.385208, 23.745804}, + {-96.821239, 32.640184}, + {118.76564025879, 32.072525024414}, + {102.123297, 12.532915}, + {139.848668, 35.821557}, + {-79.683151245117, 44.322280883789}, + {-39.329985, -7.231785}, + {-16.597425, 28.03284}, + {75.009841918945, 20.465469360352}, + {141.697311, 42.65007}, + {106.6641998291, 10.78239440918}, + {17.871324, 49.782944}, + {29.257278442383, 41.00715637207}, + {70.261001586914, 52.76252746582}, + {37.825241088867, 60.04508972168}, + {89.253616333008, 25.751266479492}, + {-95.866012573242, 36.042709350586}, + {101.28776550293, 6.5595245361328}, + {60.612039, 56.836967}, + {-58.367157, -34.608307}, + {14.700393676758, 49.78385925293}, + {24.204254, 56.971664}, + {-73.979873657227, 40.769577026367}, + {-5.7218170166016, 41.461715698242}, + {103.84964, 13.339462}, + {17.08889, 48.070335}, + {-0.17097473144531, 51.516952514648}, + {106.692964, -6.385368}, + {77.665787, 12.908764}, + {26.428763, 40.139861}, + {5.46755, 52.166519}, + {139.80583190918, 35.752944946289}, + {32.715225219727, 39.841232299805}, + {-105.011953, 39.501441}, + {23.36311340332, 42.58918762207}, + {-94.133904, 36.062443}, + {-65.851364135742, 18.368453979492}, + {29.928268, 31.194717}, + {-116.9474029541, 32.542190551758}, + {-121.264468, 38.751883}, + {-102.34108, 21.857986}, + {-98.127189, 36.388923}, + {106.74247741699, 10.988388061523}, + {102.389472, 3.521412}, + {-43.976898, -6.375332}, + {144.903863, -37.694267}, + {32.565536499023, -25.972366333008}, + {121.551989, 24.979845}, + {34.103622, 0.460052}, + {124.577638, 12.076036}, + {13.570175170898, 46.803817749023}, + {9.075786, 45.539703}, + {-3.494459, 40.129964}, + {102.299693, -3.824181}, + {72.874374389648, 19.170455932617}, + {-84.085922241211, 9.9680328369141}, + {4.79012, 44.74893}, + {78.373032, 17.445087}, + {12.218856811523, 45.490951538086}, + {-71.547775268555, -33.779525756836}, + {-5.982055, 13.870411}, + {-1.2599945068359, 51.394729614258}, + {3.3460235595703, 6.6144561767578}, + {138.66146, -34.73704}, + {106.69166564941, 10.775527954102}, + {15.56924, 46.766413}, + {16.640853881836, 49.15901184082}, + {-0.64888000488281, 35.678787231445}, + {7.304398, 43.733139}, + {-0.650255, 45.16182}, + {-74.202004, 40.545388}, + {-80.11528, 32.921219}, + {106.695099, 10.728836}, + {74.240798950195, 22.834396362305}, + {-4.5449066162109, 36.95182800293}, + {-99.175643920898, 19.445114135742}, + {24.810104, 57.514572}, + {139.670268, 35.423159}, + {20.944099, 52.204189}, + {16.732864379883, 40.766830444336}, + {38.390476, 55.36562}, + {-1.5882110595703, 55.00373840332}, + {100.1163482666, 13.474044799805}, + {6.916873, 46.82509}, + {6.6007232666016, 43.458480834961}, + {28.240159, -26.214718}, + {135.218124, 34.710159}, + {-59.991106, -3.030289}, + {-76.611649, 39.364838}, + {-10.271072, 52.1418}, + {-89.408811, 43.06585}, + {-3.3528900146484, 58.901138305664}, + {-54.363346, -19.731484}, + {4.9912261962891, 51.297225952148}, + {25.363998413086, 35.305252075195}, + {98.637314, 3.552704}, + {-84.980278, 46.259745}, + {99.843063, 6.87355}, + {-120.87913513184, 37.73323059082}, + {10.303115844727, 36.847457885742}, + {106.579103, 10.814529}, + {-121.58638000488, 39.143600463867}, + {10.068283, 44.844131}, + {-78.561172485352, -0.28633117675781}, + {-121.486419, 38.571444}, + {14.616622924805, 60.915756225586}, + {0.310266, 46.616658}, + {23.36311340332, 42.672958374023}, + {16.665812, 49.187135}, + {-5.9264373779297, 37.475051879883}, + {91.802444458008, 26.137161254883}, + {135.620629, 34.679228}, + {27.629025, 62.878175}, + {9.586841, 47.604946}, + {8.6537933349609, 50.096969604492}, + {3.159805, 6.663071}, + {-2.4300384521484, 47.310562133789}, + {80.77766418457, 26.64665222168}, + {-80.212211, 25.964343}, + {36.155319213867, 49.970626831055}, + {120.806625, 14.858597}, + {109.19654846191, 23.751754760742}, + {136.977768, 35.18074}, + {11.712801, 48.119295}, + {139.988708, 35.693283}, + {131.92039489746, 43.164596557617}, + {-74.125442504883, 4.6190643310547}, + {-77.436228, 35.535308}, + {54.365707, 24.477402}, + {85.935745239258, 26.727676391602}, + {10.124588012695, 54.307479858398}, + {9.1660308837891, 45.473098754883}, + {-99.227371, 19.471664}, + {-81.267929, 28.475418}, + {78.32633972168, 17.345352172852}, + {65.505834, 57.141021}, + {7.466583, 10.546188}, + {-1.0828399658203, 44.634017944336}, + {-4.0216827392578, 5.3153228759766}, + {91.85188293457, 22.331771850586}, + {77.608108520508, 13.02360534668}, + {23.904013, 60.343858}, + {-84.135189, 9.925976}, + {-97.501507, 35.460988}, + {27.270126342773, 37.860946655273}, + {49.299087524414, 46.61018371582}, + {76.921463012695, 43.253860473633}, + {27.627182006836, 42.564468383789}, + {22.37434387207, 52.758407592773}, + {120.968056, 14.436378}, + {-80.710372924805, 41.213150024414}, + {-89.886703491211, 37.709884643555}, + {-35.160088, -5.953243}, + {-86.29280090332, 12.155685424805}, + {7.140884, 43.659897}, + {121.53282165527, 16.535110473633}, + {27.678496, 62.895761}, + {-73.625841, 40.761207}, + {99.42009, 8.385315}, + {-65.411728, -24.788552}, + {44.161606, 33.464127}, + {-73.071671, 7.028732}, + {-46.592330932617, -23.536148071289}, + {113.20381164551, 23.390579223633}, + {-57.640457, -25.286636}, + {-9.1097259521484, 43.185195922852}, + {77.468032836914, 8.7870025634766}, + {-96.170146, 19.147227}, + {121.01371765137, 14.703140258789}, + {22.48724, 50.073586}, + {-0.65162658691406, 45.813674926758}, + {102.93022155762, 1.8587493896484}, + {139.7550201416, 35.648574829102}, + {135.0171661377, 34.577407836914}, + {3.574905, 6.674881}, + {140.184862, 36.331113}, + {120.33531188965, 23.142013549805}, + {9.391937, 47.671738}, + {-0.101869, 51.508511}, + {105.89653015137, 20.148239135742}, + {80.833969116211, 8.0564117431641}, + {136.79695129395, 35.25993347168}, + {135.86311340332, 35.566177368164}, + {7.3587799072266, 5.1313018798828}, + {120.18424987793, 22.974472045898}, + {19.158096313477, 52.262649536133}, + {123.86055, 10.27771}, + {78.419723510742, 17.431869506836}, + {7.7364349365234, 45.754623413086}, + {-75.203475952148, -12.080154418945}, + {21.262253, 45.759567}, + {100.403801, 5.449085}, + {37.554702758789, 55.607986450195}, + {106.095213, -2.134926}, + {83.010635375977, 25.51643371582}, + {126.968304, 37.39041}, + {12.589645385742, 55.695877075195}, + {100.521686, 13.749786}, + {80.235214233398, 12.934341430664}, + {72.857437, 19.222641}, + {15.797653198242, 59.637222290039}, + {27.241287231445, 61.094284057617}, + {3.1757354736328, 43.378829956055}, + {121.76216125488, 31.156539916992}, + {19.535751342773, 52.060775756836}, + {-79.552689, 8.978348}, + {11.151538, 44.247576}, + {2.0359039306641, 50.933303833008}, + {37.47917175293, 55.75080871582}, + {13.180847, -8.908539}, + {3.169846, 50.111185}, + {9.0918731689453, 48.189468383789}, + {27.294846, 54.40979}, + {19.92938, 50.052518}, + {16.337356567383, 48.219680786133}, + {-112.526506, 33.454079}, + {-80.866084, 35.225671}, + {38.55583190918, 54.88151550293}, + {5.3592681884766, 36.254196166992}, + {-58.38752746582, -34.736709594727}, + {34.580547, 45.056599}, + {51.445541381836, 25.346145629883}, + {-99.104232788086, 19.480819702148}, + {135.522385, 34.766846}, + {-38.487626, -12.623062}, + {34.844076, 32.096773}, + {112.478782, -8.157153}, + {40.466445, 48.913742}, + {98.68537902832, 3.5080718994141}, + {-81.40251159668, 28.539047241211}, + {107.798538, 11.530426}, + {-121.998104, 47.631247}, + {-79.293411, 43.792465}, + {37.445933, 55.940777}, + {2.945709, 50.4142}, + {-99.154587, 19.440537}, + {-122.755222, 44.98764}, + {13.186169, 41.68745}, + {10.480270385742, 33.344192504883}, + {15.91667, 48.323595}, + {21.240692, 64.6875}, + {49.401535, -18.149002}, + {30.241466, 60.111551}, + {14.444961547852, 50.184860229492}, + {-117.362824, 47.753449}, + {101.68190002441, 3.1468963623047}, + {37.660446, 55.712357}, + {13.588027954102, 47.593460083008}, + {-74.913711547852, 4.8552703857422}, + {8.7073516845703, 5.9621429443359}, + {18.41017, -33.933543}, + {46.686264, 24.581497}, + {139.536667, 35.71189}, + {10.326461, 52.312775}, + {72.849655151367, 19.431381225586}, + {16.925034, 40.811668}, + {121.497116, 31.211929}, + {9.911267, 36.392441}, + {104.18403625488, 30.660781860352}, + {-1.7447662353516, 42.86247253418}, + {78.679962, 10.798187}, + {61.38113, 55.156603}, + {143.114914, 42.915427}, + {-0.285252, 39.573146}, + {10.772436, 59.808267}, + {104.257508, 52.268143}, + {8.467013, 49.484245}, + {0.78071594238281, 51.540298461914}, + {30.927200317383, -29.846420288086}, + {8.9064788818359, 56.956558227539}, + {-41.981755, -11.771828}, + {24.137649536133, 65.914535522461}, + {37.641801, 55.729945}, + {14.299392700195, 46.636276245117}, + {33.330002, 35.184402}, + {2.9271697998047, 36.756820678711}, + {49.138412475586, 55.793380737305}, + {-2.7829742431641, 52.876510620117}, + {9.589691, 45.621929}, + {100.97877502441, 13.116989135742}, + {6.9097137451172, 51.29035949707}, + {-74.090619, 4.641911}, + {36.377449, 49.939041}, + {-79.767952, 35.69046}, + {-96.813733, 32.645993}, + {29.065017700195, 41.198043823242}, + {38.039474487305, 57.255935668945}, + {27.469253540039, 53.843307495117}, + {11.455307006836, 48.259506225586}, + {30.722579956055, 50.139541625977}, + {-1.293228, 51.507339}, + {-75.697403, 45.424118}, + {27.923812866211, 66.573715209961}, + {-104.93110656738, 39.822006225586}, + {-78.515853881836, -7.1569061279297}, + {8.863907, 48.317871}, + {100.51322937012, 13.73908996582}, + {12.503316, 41.902443}, + {5.0104522705078, 51.284866333008}, + {23.269729614258, 52.949295043945}, + {100.60661315918, 13.888778686523}, + {100.706863, 13.863544}, + {58.340835571289, 23.59245300293}, + {141.353989, 43.058853}, + {27.900548, -26.137553}, + {5.366281, 49.923078}, + {27.790603637695, 43.175582885742}, + {37.751083374023, 55.973281860352}, + {4.926437, 46.615862}, + {-3.5176849365234, 40.387802124023}, + {116.46125793457, 40.004653930664}, + {143.9820098877, 43.698806762695}, + {100.41069, 13.911135}, + {9.54068, 45.729724}, + {25.564498901367, 45.339889526367}, + {-58.439482, -34.644114}, + {37.694778442383, 55.708236694336}, + {117.39097595215, 34.841079711914}, + {140.0626373291, 35.507125854492}, + {139.625538, 35.48705}, + {6.767822, 50.904465}, + {13.838359, 58.188362}, + {110.29106140137, 20.031509399414}, + {15.356826782227, -4.3828582763672}, + {13.72603, 58.127133}, + {-79.012217, 33.747053}, + {7.65541, 51.006088}, + {-97.071925, 36.109325}, + {2.06403, 48.837868}, + {12.048054, 46.77927}, + {135.11055, 35.543106}, + {-4.1439056396484, 50.401840209961}, + {-47.328414916992, -22.746505737305}, + {18.184432983398, 54.822463989258}, + {-82.320537, 36.284045}, + {20.691139, 49.64634}, + {21.023025512695, 52.296981811523}, + {36.092572, 32.087004}, + {-97.404376, 31.093549}, + {-2.745003, 48.519058}, + {10.723342895508, 52.474136352539}, + {1.218738, 45.827285}, + {6.3480377197266, 48.623428344727}, + {12.453689575195, 47.837905883789}, + {-2.6593780517578, 53.439559936523}, + {79.856185913086, 6.9344329833984}, + {126.709599, 37.344358}, + {-76.803339, 40.243269}, + {-78.161544799805, 39.186172485352}, + {13.758316040039, 51.069259643555}, + {-22.623051, 63.996357}, + {-79.379097, 43.661113}, + {-97.217573, 32.988268}, + {30.340118, 60.060883}, + {77.253113, 31.999054}, + {60.222244262695, 56.054306030273}, + {77.382888793945, 31.193618774414}, + {-121.381832, 38.085518}, + {69.313137, 41.322866}, + {39.847412, 21.453552}, + {-5.620652, 36.862565}, + {33.94157409668, 35.123977661133}, + {28.341293334961, -26.345901489258}, + {4.0903472900391, 48.264999389648}, + {121.56028747559, 25.112686157227}, + {-4.0615081787109, 38.675308227539}, + {119.609383, -4.792497}, + {99.005137, 18.787496}, + {28.294541, -25.748862}, + {121.326097, 24.939095}, + {-9.2676544189453, 53.866653442383}, + {121.15654, 14.586411}, + {7.9767608642578, 49.083480834961}, + {105.36781311035, 21.057357788086}, + {32.560043334961, 39.992294311523}, + {31.021547, -29.506999}, + {-2.734604, 51.341095}, + {18.30940246582, 47.494583129883}, + {151.257145, -33.913443}, + {26.609728, 39.548391}, + {14.449487, 50.093929}, + {-86.16924, 39.824057}, + {-99.220962524414, 19.43000793457}, + {-0.62965393066406, 46.210556030273}, + {75.625076, 32.173462}, + {138.465843, 35.023384}, + {17.979341, 51.59917}, + {21.046371459961, 52.189865112305}, + {12.684271, 43.983477}, + {121.15928649902, 15.619125366211}, + {13.332768, 52.657242}, + {37.378921508789, 55.765914916992}, + {79.950942993164, 6.7586517333984}, + {76.94191, 11.071701}, + {7.1775054931641, 47.835159301758}, + {30.254287719727, 59.898147583008}, + {-98.48762512207, 29.422073364258}, + {77.470779418945, 23.238143920898}, + {-109.53300476074, 45.44563293457}, + {2.634048, 49.857407}, + {-4.471908, 36.708529}, + {-7.9904937744141, 12.56217956543}, + {30.40638, 59.740334}, + {-1.3547515869141, 50.915451049805}, + {73.234176635742, 19.16633605957}, + {-81.461799, 40.028405}, + {27.484663, 53.86714}, + {-79.887125, -2.177932}, + {-98.110886, 29.68895}, + {101.36604309082, 0.47172546386719}, + {137.06131, 34.873352}, + {-46.476974487305, -23.615798950195}, + {-99.262973, 18.942365}, + {56.194382, 25.155945}, + {-99.5121, 27.586441}, + {-84.553299, 39.091876}, + {11.0392, 36.812439}, + {115.237656, -8.697052}, + {-122.399368, 37.797444}, + {36.773300170898, -1.1885833740234}, + {61.767196655273, 57.954940795898}, + {140.39772033691, -8.4917449951172}, + {23.258743, 42.717934}, + {-107.392119, 24.811443}, + {139.127781, 34.914895}, + {-105.017904, 39.577355}, + {11.569277, 49.946341}, + {20.619277954102, 48.09196472168}, + {74.863243, 26.594124}, + {0.64476013183594, 48.053512573242}, + {-8.397135, 40.18583}, + {136.9864654541, 35.505752563477}, + {105.98030090332, -6.0074615478516}, + {1.728173, 45.581131}, + {32.164535, 41.508579}, + {12.802373, 52.179596}, + {-77.612228393555, 40.872573852539}, + {-86.781692504883, 33.484268188477}, + {-80.574417114258, 40.397415161133}, + {39.746475219727, 54.619216918945}, + {3.416748, 6.608963}, + {8.8872528076172, 53.061904907227}, + {51.794788, 55.628838}, + {117.37724304199, 33.013229370117}, + {15.772181, 50.828797}, + {52.16926574707, 51.743545532227}, + {-0.069286, 51.5401}, + {140.415573, 39.499969}, + {140.797348, 41.829071}, + {-82.472517, 27.956745}, + {14.062729, 47.526627}, + {-64.578323, -34.83696}, + {7.380109, 45.096286}, + {7.0168304443359, 51.463394165039}, + {136.2215423584, 36.071548461914}, + {12.625351, 41.784439}, + {-76.966781616211, -11.93733215332}, + {0.072784, 40.060959}, + {7.1225738525391, 47.14714050293}, + {-95.508184, 30.057074}, + {18.827133178711, 63.239364624023}, + {-8.259659, 43.301926}, + {-84.073105, 9.93782}, + {15.70426940918, 60.590286254883}, + {39.202651977539, 21.584701538086}, + {20.950241088867, 52.211837768555}, + {40.575942993164, 45.431900024414}, + {-115.044984, 36.065496}, + {27.430344, 53.929367}, + {18.078689575195, 59.306259155273}, + {8.06282, 45.554581}, + {74.784622192383, 34.062423706055}, + {134.91554260254, 34.716110229492}, + {35.680160522461, 34.018478393555}, + {139.96513366699, 35.844955444336}, + {-48.341903686523, -10.182266235352}, + {78.499374389648, 17.356338500977}, + {46.7276, 24.673233}, + {-83.393097, 35.150757}, + {-113.454437, 53.58252}, + {-51.221558, -30.025085}, + {-84.59036, 33.397669}, + {-86.254348754883, 12.13508605957}, + {-113.246906, 53.433044}, + {-57.357559204102, 50.708084106445}, + {-5.466386, 12.34932}, + {26.085312, 44.657709}, + {-3.374863, 39.015198}, + {6.700058, 51.524735}, + {7.877354, 51.727608}, + {7.90947, 45.195008}, + {-0.620958, 43.444292}, + {8.147049, 45.495987}, + {77.761917114258, 12.717361450195}, + {6.1544036865234, 52.255783081055}, + {10.736618, 35.624772}, + {-114.020406, 50.753003}, + {79.934463500977, 23.20930480957}, + {18.43832, 52.900715}, + {124.286957, 13.599701}, + {127.061495, 37.233346}, + {80.71907, 25.998001}, + {16.078491, 47.734222}, + {105.85121154785, 20.115280151367}, + {24.475962, 35.355746}, + {19.89987, 50.070485}, + {55.974426, 54.732285}, + {-51.179122924805, -29.989242553711}, + {12.940276, 56.388366}, + {23.790894, 44.305115}, + {108.306656, 13.531036}, + {18.005905151367, 59.311752319336}, + {37.595901489258, 55.761795043945}, + {13.068923950195, 55.765914916992}, + {38.926620483398, 55.242691040039}, + {25.054086, 60.236194}, + {44.46662, 56.045996}, + {-86.056791, 39.637985}, + {28.040542602539, 45.429153442383}, + {4.532547, 35.734406}, + {-4.334908, 55.889626}, + {0.398392, 51.584518}, + {53.950882, 26.572495}, + {72.81120300293, 19.471206665039}, + {139.888441, 35.63199}, + {41.999359, 45.069351}, + {40.528557, 52.946552}, + {-122.335149, 47.631192}, + {14.740219116211, 41.167831420898}, + {-113.451678, 53.323522}, + {11.808794, 51.303663}, + {10.609613, 44.670733}, + {-99.08824, 19.51096}, + {-95.116364, 29.525634}, + {37.497025, 55.92041}, + {14.810256958008, 51.254653930664}, + {-54.969602, -34.920731}, + {135.41679382324, 34.718856811523}, + {-96.896784, 32.756536}, + {-93.13591003418, 37.757949829102}, + {-82.514694, 27.576828}, + {-70.034408569336, 43.669967651367}, + {115.68809509277, 29.67887878418}, + {-123.138272, 49.27989}, + {-35.610122680664, -8.7128448486328}, + {-98.595886, 45.906384}, + {80.25993347168, 50.415573120117}, + {139.59983825684, 35.795516967773}, + {104.89814758301, 11.552810668945}, + {121.44905090332, 24.991836547852}, + {-51.18762, -30.128811}, + {-123.081994, 44.088486}, + {-0.10231018066406, 51.543045043945}, + {79.466171264648, 29.601974487305}, + {-3.8939666748047, 43.443374633789}, + {35.648567, 34.017255}, + {-105.151291, 39.725876}, + {6.6254425048828, 44.241256713867}, + {144.99824523926, -37.756576538086}, + {77.23938, 28.582076}, + {15.728988647461, 54.198989868164}, + {106.17256164551, 20.451736450195}, + {0.623474, 47.127228}, + {77.624073, 12.994595}, + {32.520411, 38.005633}, + {101.143253, 12.808633}, + {34.733963012695, 36.949081420898}, + {14.374923706055, 49.99397277832}, + {-98.500156, 29.426537}, + {5.954933, 52.77317}, + {31.025391, -29.814835}, + {12.780532836914, 49.160385131836}, + {153.089335, -27.411538}, + {99.42008972168, 18.217391967773}, + {-122.78114318848, 42.251358032227}, + {18.363007, 43.848477}, + {103.70613098145, 1.3465118408203}, + {5.144349, 50.122376}, + {130.707779, 32.798996}, + {18.683624, 50.259018}, + {74.800758, 34.030838}, + {126.999869, 37.287265}, + {104.779299, -2.992078}, + {-46.688461303711, -22.948379516602}, + {100.377274, 5.395432}, + {9.9282073974609, 53.462905883789}, + {47.973862, 29.354782}, + {77.583389282227, 12.954940795898}, + {14.489593, 56.35437}, + {-74.170761108398, 4.6135711669922}, + {-43.690567016602, -22.929153442383}, + {78.455429077148, 17.433242797852}, + {-1.131254, 48.720223}, + {4.46846, 43.734856}, + {73.86589050293, 18.448104858398}, + {-97.605483, 35.491626}, + {30.250935, 60.017778}, + {47.958755, 29.362335}, + {110.3199005127, 25.27473449707}, + {-73.633804321289, 41.376571655273}, + {-86.152104, 39.696529}, + {30.616478, 50.422932}, + {19.332504272461, 50.190353393555}, + {113.60206604004, 34.84245300293}, + {103.661266, 1.318167}, + {55.428085327148, 25.392837524414}, + {113.9330291748, 22.577590942383}, + {78.454056, 17.391357}, + {100.661365, 13.771589}, + {77.55661, 28.306274}, + {137.896957, 34.711304}, + {30.007095336914, 31.259536743164}, + {-86.485709, 40.027329}, + {22.613296508789, 53.182754516602}, + {-1.2737274169922, 54.377517700195}, + {18.200236, 59.437413}, + {24.826455, 59.389443}, + {6.1626434326172, 49.134292602539}, + {8.3420562744141, 48.903579711914}, + {77.589886, 13.044046}, + {139.210739, 37.889786}, + {51.636428833008, 32.761917114258}, + {-42.836658, -5.005938}, + {4.4899749755859, 46.746139526367}, + {105.82649230957, 21.039505004883}, + {103.97392272949, 30.721206665039}, + {139.713821, 35.513992}, + {17.638752, 54.669716}, + {115.303574, -8.551712}, + {-0.101503, 51.34571}, + {15.407639, 47.007523}, + {121.01234436035, 24.814682006836}, + {-0.509354, 51.910812}, + {3.873092, 39.997513}, + {-16.826248168945, 32.704238891602}, + {29.970016479492, 31.214218139648}, + {135.53352355957, 34.640579223633}, + {20.079574584961, 50.017318725586}, + {151.312637, -32.906113}, + {-1.945276, 51.548333}, + {15.912666, 43.769446}, + {99.940567016602, 12.81623840332}, + {106.80290222168, -6.2395477294922}, + {139.6314239502, 35.450820922852}, + {8.226242, 49.971085}, + {-43.940505981445, -19.960098266602}, + {47.826919555664, 30.494613647461}, + {126.61125183105, 43.759231567383}, + {79.047317504883, 21.120529174805}, + {33.449935913086, 67.610549926758}, + {37.750397, 55.796127}, + {8.4917449951172, 47.349014282227}, + {83.39241, 21.896896}, + {20.532834, 51.672479}, + {-82.581772, 41.247374}, + {-2.791357, 56.285072}, + {9.0465545654297, 50.054397583008}, + {2.3407745361328, 48.82942199707}, + {18.544093, 51.696033}, + {2.8173065185547, 39.827499389648}, + {29.136428833008, 63.546981811523}, + {-46.694256, -23.476273}, + {36.71012878418, 49.459762573242}, + {138.46962, 36.124649}, + {13.579328, 43.458025}, + {46.549758911133, 24.644393920898}, + {-85.85269, 38.095838}, + {20.116653442383, 50.072250366211}, + {-115.29213, 36.141129}, + {-86.26711, 37.815693}, + {-93.197708129883, 45.305557250977}, + {31.026764, -29.781499}, + {-50.037492, -29.790601}, + {-92.619411, 44.031689}, + {77.749695, 12.971283}, + {112.11616516113, 26.79084777832}, + {114.183557, 22.37454}, + {-71.641159, -35.822983}, + {-8.652616, 42.750844}, + {28.344039916992, -28.127059936523}, + {12.77229309082, 51.258773803711}, + {76.105728149414, 30.754165649414}, + {-71.479827, 41.759535}, + {-89.823532104492, 41.387557983398}, + {-122.912603, 46.318734}, + {-122.775055, 49.010896}, + {15.754852, 48.062897}, + {6.343918, 51.966705}, + {-58.386154174805, -34.610366821289}, + {-75.089928, 40.045076}, + {14.42024230957, 51.887741088867}, + {30.708389, 50.416946}, + {-9.0108489990234, 38.927993774414}, + {9.7922515869141, 37.155075073242}, + {104.38316345215, 52.465896606445}, + {2.456151, 48.786256}, + {23.566360473633, 46.450881958008}, + {8.5425567626953, 12.011489868164}, + {140.158339, 35.806417}, + {34.363174438477, 53.23356628418}, + {25.339279174805, -24.990463256836}, + {7.440719, 43.750992}, + {77.293625, 28.517761}, + {-78.99633, -2.900826}, + {-2.9889678955078, 43.326644897461}, + {100.5736541748, 13.72673034668}, + {-104.87754821777, 39.695663452148}, + {7.406158, 43.725586}, + {99.929580688477, 8.6647796630859}, + {110.817919, -7.576386}, + {-111.92527770996, 33.618850708008}, + {39.876937866211, 43.532638549805}, + {-47.93098, -15.834595}, + {-60.707015991211, 2.8131866455078}, + {103.69389, 1.355884}, + {8.9215850830078, 52.209091186523}, + {-1.201061, 51.868575}, + {2.401502, 48.825386}, + {-79.429092407227, 43.768844604492}, + {39.606399536133, 24.463119506836}, + {2.31839, 48.902893}, + {-3.674927, 36.755447}, + {8.8391876220703, 48.075485229492}, + {-72.975997924805, 5.8975982666016}, + {5.7355499267578, 48.347396850586}, + {-117.73429870605, 33.572158813477}, + {10.23307800293, 36.780166625977}, + {3.2498931884766, 51.199722290039}, + {27.731216, 64.225339}, + {2.5948333740234, 46.264114379883}, + {12.77504, 50.95665}, + {24.053421, 37.724533}, + {151.080455, -33.832947}, + {31.402359008789, 31.091995239258}, + {-96.727066040039, 32.663040161133}, + {-97.01064, 33.394677}, + {-94.896469116211, 31.818466186523}, + {-78.830405, 33.737155}, + {-55.244064331055, -25.439529418945}, + {2.3297882080078, 48.900833129883}, + {30.759658813477, 30.83381652832}, + {-70.042953, 18.431625}, + {-80.432282, 36.128883}, + {68.272681, 25.386479}, + {-108.152504, 35.680161}, + {36.891861, -1.322708}, + {-92.281716, 45.263677}, + {37.666626, 55.798187}, + {49.649276733398, 58.579788208008}, + {-1.666, 42.817001}, + {77.645187, 12.959747}, + {6.089859, 45.146256}, + {110.49293518066, 24.772109985352}, + {29.37637, 59.588315}, + {4.053112, 46.058426}, + {134.22477722168, 46.408309936523}, + {146.305553, -36.353351}, + {17.81868, 59.247971}, + {-84.794540405273, 44.410171508789}, + {55.303115844727, 25.244522094727}, + {2.058019, 41.355183}, + {15.83610534668, 50.237045288086}, + {77.647933959961, 23.073348999023}, + {-104.749145, 38.716509}, + {26.68098449707, 45.129776000977}, + {100.929337, 6.889801}, + {-72.007278, 42.633133}, + {139.67811584473, 35.563430786133}, + {58.283157348633, 23.599319458008}, + {-85.434494018555, 43.871841430664}, + {139.4652557373, 35.780410766602}, + {-101.279183, 20.99659}, + {24.956475, 60.289541}, + {-87.616653442383, 41.862716674805}, + {-7.649918, 33.595505}, + {56.346817016602, 25.05500793457}, + {16.051536, 45.841558}, + {25.727918, 44.914864}, + {139.68635559082, 35.680160522461}, + {-0.511162, 53.553937}, + {8.883133, 45.463829}, + {-74.065017700195, 41.088180541992}, + {-0.48957824707031, 11.810989379883}, + {-2.5563812255859, 40.515518188477}, + {55.723344, 24.121171}, + {-1.419186, 47.183036}, + {24.546886, 35.26314}, + {29.291610717773, 40.854721069336}, + {55.164413, 24.973297}, + {2.258835, 49.092636}, + {16.967192, 54.524222}, + {8.4052276611328, 49.009323120117}, + {-49.12681, -25.374683}, + {-84.228744506836, 39.695663452148}, + {-86.106892, 30.577976}, + {121.563721, 25.079041}, + {4.017563, 43.857422}, + {23.980408, 35.405502}, + {13.399887084961, 52.568893432617}, + {-90.099237, 29.871401}, + {-118.394681, 33.981894}, + {104.868995, 11.532515}, + {-104.810982, 39.610176}, + {110.467048, -7.35998}, + {-114.004517, 46.839357}, + {36.83012, -1.28231}, + {121.42433166504, 31.137313842773}, + {-81.684723, 41.496048}, + {-80.515501, 43.492781}, + {115.306945, -8.56428}, + {-5.2288055419922, 42.111282348633}, + {103.91624450684, 1.3932037353516}, + {14.414749145508, 37.641220092773}, + {0.66123962402344, 50.981369018555}, + {4.496995, 52.252581}, + {106.727371, 10.71991}, + {-2.08864, 48.611153}, + {22.28645324707, 60.92399597168}, + {-0.408581, 52.999632}, + {144.974886, -37.836066}, + {27.881906, -26.081152}, + {29.519577, 40.78743}, + {77.056045532227, 28.54866027832}, + {-78.22883605957, 40.312271118164}, + {-85.706405639648, 37.990036010742}, + {76.824554, 43.240128}, + {-118.306908, 34.164007}, + {-60.84058, 14.546629}, + {16.346969604492, 46.314926147461}, + {11.245884, 48.236161}, + {-77.594375610352, -11.127090454102}, + {-3.1043243408203, 43.334884643555}, + {124.90562438965, 46.599197387695}, + {-93.513908, 45.228653}, + {100.9774017334, 13.577041625977}, + {113.91792297363, 22.525405883789}, + {-80.910687, 43.010755}, + {108.370514, 15.895157}, + {-84.355593, 33.811197}, + {-89.542009, 21.098099}, + {-46.540104, -23.63338}, + {2.338348, 48.88193}, + {37.694092, 55.793381}, + {112.69706726074, -7.2859954833984}, + {7.754974, 44.732895}, + {4.760743, 45.292053}, + {-25.698395, 37.746964}, + {76.963577, 43.237839}, + {107.644193, -6.901007}, + {6.8163299560547, 51.109085083008}, + {-82.383043, 27.917407}, + {101.729965, 3.084641}, + {37.288284301758, 44.96223449707}, + {-43.259353637695, -22.948379516602}, + {37.532730102539, 55.590133666992}, + {14.428482055664, 50.088729858398}, + {29.058151245117, 40.882186889648}, + {-80.95344543457, 33.964920043945}, + {35.478836, 33.791885}, + {-81.275971, 35.807752}, + {-76.951676, 39.034653}, + {-93.304141, 44.821396}, + {102.87803649902, 5.5501556396484}, + {-86.218929, 39.901657}, + {120.990372, 14.412003}, + {-117.42256164551, 34.32746887207}, + {107.550372, -6.916487}, + {106.8042755127, -6.4702606201172}, + {103.903606, 1.308703}, + {-93.657761, 44.776841}, + {-113.26698303223, 52.551040649414}, + {-5.664327, 43.539013}, + {7.825699, 51.672134}, + {174.40040588379, -39.665451049805}, + {77.629082, 12.930721}, + {152.820958, -25.296301}, + {-118.01239, 34.129372}, + {-5.0955963134766, 50.021438598633}, + {5.284193, 45.594802}, + {11.624221801758, 55.901870727539}, + {-0.667981, 45.746633}, + {25.976486206055, 55.318222045898}, + {174.966199, -36.941942}, + {139.514302, 35.564804}, + {-70.460635, 43.366225}, + {71.429672, 51.127625}, + {139.90196228027, 35.993270874023}, + {33.853684, 34.968796}, + {148.73085021973, -20.284194946289}, + {24.986343, 69.935532}, + {-39.492549, -10.661505}, + {141.4785, 40.505219}, + {-79.482605, 43.654311}, + {38.134689, 44.506302}, + {-89.511766, 43.095932}, + {24.678726, 42.127487}, + {120.57426452637, 24.232406616211}, + {3.024915, 42.199102}, + {104.62348937988, 29.500350952148}, + {151.04347229004, -33.660049438477}, + {-0.137329, 38.559265}, + {-81.727779, 30.281974}, + {15.18465, 59.264717}, + {6.225472, 48.685341}, + {23.976974487305, 40.331497192383}, + {73.688049, 18.581314}, + {51.430239, 35.772171}, + {126.92573547363, 37.560195922852}, + {37.361068725586, 37.067184448242}, + {73.365326, 61.274185}, + {-97.844311, 32.736728}, + {-5.8358001708984, 43.030014038086}, + {151.221313, -33.731461}, + {-78.047561645508, -7.6197052001953}, + {135.43464660645, 34.780654907227}, + {12.730664, 56.021214}, + {-77.728958129883, -10.764541625977}, + {7.365646, 47.276426}, + {4.753478, 44.0193}, + {8.501816, 49.512634}, + {14.57558, 48.412753}, + {-0.29319763183594, 51.599349975586}, + {-100.31272888184, 25.667495727539}, + {-90.580821, 14.629229}, + {-90.575203, 14.0944}, + {-105.015849, 39.566641}, + {104.82398986816, 21.771469116211}, + {-77.714991, 0.816305}, + {-96.726674, 32.488449}, + {127.64671325684, 26.288223266602}, + {-53.202011, -30.311316}, + {115.82542419434, 28.73405456543}, + {-97.254684, 32.974091}, + {130.90003967285, 33.368911743164}, + {-122.828273, 45.522689}, + {-117.180888, 32.860801}, + {10.395551, 63.350882}, + {0.404091, 40.365829}, + {-70.123672485352, -20.271835327148}, + {32.898149, 2.246799}, + {14.536972045898, 37.253952026367}, + {137.05375671387, 34.983901977539}, + {106.6820526123, 10.765914916992}, + {-3.945465, 51.630936}, + {107.117882, -6.84871}, + {77.597122, 12.970047}, + {45.180587768555, 49.733047485352}, + {48.299332, 52.908783}, + {-86.115372, 39.791794}, + {27.749404907227, 41.106033325195}, + {55.224609, 25.180893}, + {-103.45344543457, 20.693435668945}, + {28.039169311523, 43.27033996582}, + {139.2716217041, 36.281661987305}, + {48.991470336914, 25.73616027832}, + {73.631057739258, 34.213485717773}, + {14.622116088867, 48.340530395508}, + {99.90348815918, 8.2747650146484}, + {34.827759, 32.167007}, + {136.790801, 35.113867}, + {-122.319767, 37.533123}, + {17.05696105957, 51.129684448242}, + {106.70265197754, 10.735702514648}, + {129.106616, 35.143978}, + {12.567672729492, 55.680770874023}, + {-90.609055, 37.791595}, + {139.49409484863, 35.773544311523}, + {15.57164, 49.406311}, + {-1.3410186767578, 38.477554321289}, + {4.8484039306641, 45.729904174805}, + {46.662369, 24.688797}, + {-82.707876, 36.358106}, + {22.412357, 52.100785}, + {-15.512008666992, 27.786483764648}, + {8.691055, 50.100998}, + {-83.180237, 42.32483}, + {121.03019714355, 14.604263305664}, + {10.138320922852, 54.064407348633}, + {15.647507, 47.575378}, + {31.207619, 30.004311}, + {6.731227, 44.473348}, + {0.576165, 50.866526}, + {48.547211, 34.795761}, + {-81.421783, 40.845822}, + {17.256088256836, 46.777725219727}, + {-122.14805603027, 37.642593383789}, + {44.279708862305, 33.525466918945}, + {-122.580314, 45.670888}, + {-0.231347, 51.452254}, + {34.963514, 32.817842}, + {10.082015991211, 33.841323852539}, + {-58.740463256836, -27.574996948242}, + {16.489563, 50.52681}, + {-48.932418823242, -27.161636352539}, + {100.653102, 13.947994}, + {-7.9987335205078, 12.632217407227}, + {-96.74652, 33.476258}, + {-3.9351654052734, 55.797500610352}, + {22.834396362305, 40.669326782227}, + {-104.624922, 38.30858}, + {28.968887329102, 40.251846313477}, + {-85.755844116211, 41.73225402832}, + {-110.298998, 24.05207}, + {34.578009, 36.787262}, + {-86.233574, 12.10847}, + {70.822677612305, 22.811050415039}, + {-84.065839, 9.98258}, + {-43.205011, -22.906985}, + {-70.122299, 19.182968}, + {112.616748, -7.97027}, + {-84.906971, 39.054337}, + {-74.203033, 40.78125}, + {104.71138000488, -2.9230499267578}, + {139.695997, 35.662205}, + {-99.097567, 19.450448}, + {103.87641906738, 22.315292358398}, + {141.307755, 43.068237}, + {72.841415405273, 18.935623168945}, + {13.661996, 56.506178}, + {8.625299, 44.384626}, + {-114.083038, 50.905125}, + {34.89687, 31.956825}, + {6.343918, 48.602371}, + {31.18537902832, 30.00846862793}, + {139.467659, 35.595016}, + {14.476539, 48.99159}, + {-70.705261, -33.366165}, + {135.494041, 34.795246}, + {110.16883850098, -7.6732635498047}, + {-75.317334, 10.67921}, + {108.376179, 22.816544}, + {-90.57746887207, 14.637222290039}, + {36.170425, 33.475113}, + {126.745834, 37.688187}, + {25.74542, 66.498245}, + {-58.382034, -34.626062}, + {139.381485, 37.927026}, + {10.109481811523, 53.733444213867}, + {-80.421955, -0.612816}, + {101.692543, 3.227234}, + {77.082138061523, 28.490982055664}, + {30.519332885742, 50.635299682617}, + {98.975896, 18.799594}, + {19.688186645508, 41.431503295898}, + {-10.109481811523, 51.602096557617}, + {101.577233, 3.0192}, + {113.53614807129, 22.191696166992}, + {-108.80241394043, 39.175186157227}, + {-97.06536, 36.120386}, + {-2.825599, 54.235997}, + {100.33882141113, 14.267807006836}, + {-40.277938842773, -19.248733520508}, + {120.20347595215, 30.210342407227}, + {1.194077, 51.186676}, + {88.415908813477, 22.908554077148}, + {39.258499, -6.798935}, + {-1.5497589111328, 48.995590209961}, + {77.309189, 28.433304}, + {29.92424, 31.188431}, + {-71.089674, 42.519111}, + {12.074661254883, 57.75032043457}, + {-38.225418, -12.812393}, + {-2.109449, 51.465707}, + {-1.0457611083984, 44.875717163086}, + {108.986092, -7.156563}, + {-3.541526, 40.52498}, + {3.9228057861328, 45.834274291992}, + {-3.976089, 5.29335}, + {-104.994474, 39.782063}, + {-9.5024871826172, 52.044296264648}, + {112.70805358887, -7.5565338134766}, + {-0.49369812011719, 51.661148071289}, + {-1.684799, 50.751572}, + {-5.958939, 54.593124}, + {-75.191901, 39.973853}, + {-3.054424, 53.814389}, + {10.205612182617, 36.715621948242}, + {2.305618, 48.752518}, + {-78.750749, 42.914096}, + {151.159622, -33.950566}, + {114.16923522949, 22.293319702148}, + {51.535688, 25.221176}, + {-96.65153503418, 32.737197875977}, + {72.72331237793, 19.991683959961}, + {-87.710037231445, 41.836624145508}, + {102.239273, 6.105338}, + {-111.786286, 43.82515}, + {-0.43464660644531, 51.749038696289}, + {8.4052276611328, 48.80744934082}, + {43.063697, 44.047969}, + {16.342849731445, 48.151016235352}, + {118.05290222168, 5.8646392822266}, + {117.08610534668, 34.383773803711}, + {134.82215881348, 34.326095581055}, + {29.765396118164, 62.598037719727}, + {15.290908813477, -4.4528961181641}, + {11.786728, 42.097321}, + {30.972607, -25.439567}, + {37.010879516602, 39.650344848633}, + {139.559763, 35.45132}, + {40.839614868164, 37.354202270508}, + {-0.807496, 52.294922}, + {138.464127, 36.212997}, + {12.569869, 41.5298}, + {88.359146, 22.573471}, + {37.020492553711, 49.91569519043}, + {103.228683, -4.029556}, + {138.728823, 35.143016}, + {10.444565, 45.583649}, + {3.0933380126953, 41.858596801758}, + {-122.477623, 37.703489}, + {101.5926361084, 3.0809783935547}, + {24.150009155273, 56.901626586914}, + {9.4722747802734, 35.03059387207}, + {73.529434204102, 34.38102722168}, + {-118.128204, 33.945236}, + {14.23439, 40.831833}, + {110.047488, -6.969989}, + {-58.338088989258, -34.670791625977}, + {-7.011795, 37.23793}, + {141.05140686035, 39.10514831543}, + {30.145454, 59.802017}, + {103.10050964355, 5.2672576904297}, + {5.8948516845703, 7.3670196533203}, + {-121.911163, 38.022566}, + {18.187506, 40.362614}, + {10.845565795898, 48.182601928711}, + {9.393995, 41.195984}, + {-84.192307, 39.069446}, + {-3.0150604248047, 55.823593139648}, + {-7.941055, 12.599847}, + {27.638168334961, 37.410507202148}, + {14.956572, 68.481914}, + {8.974219, 45.911179}, + {-8.2569122314453, 41.041488647461}, + {8.364304, 49.01207}, + {50.037, 26.46536}, + {-71.442031860352, 46.759872436523}, + {11.685104, 45.484085}, + {-122.697098, 47.578445}, + {113.12965393066, -7.1225738525391}, + {-93.796463012695, 42.385940551758}, + {10.401992797852, 55.351181030273}, + {-42.650985717773, -22.456741333008}, + {13.461685180664, 41.756973266602}, + {4.8003387451172, 52.487869262695}, + {-88.958358764648, 38.478927612305}, + {-74.566375, 44.975891}, + {109.91889953613, -7.3656463623047}, + {113.40431213379, 24.261245727539}, + {18.173446, 59.260941}, + {31.337814331055, 30.009841918945}, + {-87.938519, 42.363968}, + {3.4146881103516, 50.044784545898}, + {-89.661484, 21.278458}, + {-87.922473, 43.13501}, + {77.841567993164, 28.411331176758}, + {105.8470916748, 32.455673217773}, + {26.091156, 56.624908}, + {26.094589233398, 56.61735534668}, + {127.140937, 35.863784}, + {13.750076293945, 51.162643432617}, + {91.401443481445, 53.068771362305}, + {-95.245087, 29.649486}, + {16.379929, 48.14415}, + {138.70242, -34.796064}, + {-3.624191, 48.682481}, + {11.113357543945, 49.507827758789}, + {31.11946105957, 52.177505493164}, + {130.65559387207, 32.77702331543}, + {24.772338, 41.215797}, + {76.808853, 43.239441}, + {2.874435, 42.71965}, + {2.313309, 48.827362}, + {95.366134643555, 27.187728881836}, + {-4.786998, 39.984153}, + {137.942963, 34.834213}, + {6.134467, 52.449378}, + {-8.475253, 54.191667}, + {98.999862670898, 18.773574829102}, + {109.542544, -7.60811}, + {6.625398, 51.49405}, + {26.911697387695, 43.268966674805}, + {55.326118, 25.291214}, + {2.0139312744141, 41.54411315918}, + {103.310371, 3.820544}, + {-86.015396, 39.780005}, + {-5.765762, 41.551323}, + {103.84620666504, 1.2751007080078}, + {-93.146467, 45.041499}, + {-99.120712280273, 19.520645141602}, + {48.444900512695, 36.659317016602}, + {22.10472, 60.531693}, + {-2.158127, 52.280045}, + {12.601547, 44.034348}, + {114.19532775879, 22.334518432617}, + {98.060531616211, 4.2469024658203}, + {78.500061, 17.470322}, + {-2.8736114501953, 42.73063659668}, + {97.369078, 5.121419}, + {-2.638997, 57.062764}, + {18.636245727539, 54.255294799805}, + {112.698114, -7.269457}, + {12.334763, 45.503448}, + {-1.8285369873047, 51.045913696289}, + {20.918655395508, 52.226943969727}, + {17.32063293457, 49.551773071289}, + {101.569832, 3.084188}, + {7.7707672119141, 17.341232299805}, + {-0.58433532714844, 46.325912475586}, + {-87.970505, 41.848984}, + {7.1321868896484, 53.203353881836}, + {99.961166381836, 12.558059692383}, + {28.999099731445, 41.068954467773}, + {0.254606, 47.930072}, + {139.633209, 35.441208}, + {8.4464263916016, 55.51872253418}, + {0.194829, 46.509222}, + {2.0468902587891, 41.480941772461}, + {-38.596041, -3.783521}, + {119.43855285645, 32.200241088867}, + {82.557106, 49.992943}, + {119.92469787598, 28.469009399414}, + {-70.643985, -33.440757}, + {10.032577514648, 53.637313842773}, + {100.39444, 5.40184}, + {105.52436828613, -4.9816131591797}, + {-118.37699890137, 33.930587768555}, + {-48.333793, -10.195446}, + {43.893814086914, 56.333084106445}, + {76.144180297852, 10.261917114258}, + {15.020112, 59.92802}, + {-0.12085, 51.439362}, + {72.307892, 23.645783}, + {5.401153, 45.180958}, + {109.784811, -7.405398}, + {-70.681228637695, -33.48014831543}, + {18.463203, 45.050816}, + {72.600456, 23.033207}, + {107.926571, -6.471814}, + {128.604154, 35.868297}, + {36.319427, 49.944534}, + {13.289103, 49.4743}, + {30.487747192383, 46.253128051758}, + {-7.866211, 37.608261}, + {51.415328979492, 35.773544311523}, + {30.945395, -29.877705}, + {28.34404, 41.060715}, + {71.44723, 30.26567}, + {132.02339172363, 43.131637573242}, + {30.322495, 60.02449}, + {17.367324829102, 48.208694458008}, + {-4.299774, 11.176529}, + {12.714272, 32.756424}, + {119.419632, -5.14044}, + {140.897765, 38.260658}, + {10.249613, 36.737393}, + {-1.1611175537109, 51.997604370117}, + {15.326118, 49.949805}, + {31.300733, -27.259143}, + {138.662635, -34.691605}, + {109.52201843262, -7.6457977294922}, + {-49.244441, -16.666063}, + {140.0804901123, 35.652694702148}, + {122.64381408691, 0.65437316894531}, + {-80.655441, 41.096028}, + {-73.968544, 40.765114}, + {147.302823, -42.837332}, + {77.55764, 12.939835}, + {29.757563, 62.599245}, + {18.094423, 59.339321}, + {-77.024459838867, -12.095260620117}, + {8.6180877685547, 45.911178588867}, + {7.000351, 52.977349}, + {115.83778381348, 25.852890014648}, + {-6.1736297607422, 54.671401977539}, + {106.79740905762, -6.6652679443359}, + {49.191284, 55.812469}, + {114.19120788574, 22.322158813477}, + {4.397004, 52.135869}, + {4.055488, 50.255956}, + {7.2969818115234, 50.848159790039}, + {8.349202, 45.444176}, + {75.785065, 12.214737}, + {21.637802, 53.19191}, + {-80.684381, 41.108217}, + {11.992539, 45.664536}, + {0.345383, 46.602974}, + {9.949722, 44.58046}, + {55.307235717773, 25.232162475586}, + {8.441258, 47.396515}, + {-2.111461, 51.909548}, + {153.43299865723, -28.029556274414}, + {20.984345, 52.219789}, + {-4.2881011962891, 55.849685668945}, + {-79.025625, -8.094686}, + {117.9842376709, 34.894638061523}, + {118.14079284668, 34.913864135742}, + {117.61207580566, 34.743576049805}, + {80.481033325195, 6.0170745849609}, + {-81.69744, 41.505496}, + {35.592269897461, 32.705612182617}, + {-97.518939, 32.596639}, + {-116.87324523926, 32.46940612793}, + {6.524049, 49.285506}, + {-98.091431, 16.375809}, + {67.973098754883, 26.545028686523}, + {2.666245, 48.530045}, + {9.155045, 45.185051}, + {24.58122253418, 55.522842407227}, + {-82.096262, 29.56893}, + {30.115585327148, 37.597274780273}, + {7.438791, 52.283707}, + {30.437524, 59.997907}, + {41.774826, 41.877274}, + {4.47792, 50.847626}, + {-46.651542, -23.623264}, + {9.613465, 51.354328}, + {100.559921, 13.802948}, + {-74.227066040039, 11.193008422852}, + {35.400009155273, 32.801742553711}, + {8.834069, 53.452252}, + {-105.078833, 40.393155}, + {19.986190795898, 49.299087524414}, + {76.217642, 24.462437}, + {113.28071594238, 22.790451049805}, + {14.078751, 49.91478}, + {18.658905, 50.329056}, + {75.861282, 30.934067}, + {-4.9623870849609, 34.003372192383}, + {35.390985, 33.593347}, + {74.531936645508, 18.132247924805}, + {136.855807, 35.17067}, + {29.227066040039, 40.64323425293}, + {106.73286437988, 10.743942260742}, + {40.211105, 29.955368}, + {38.945694, 54.947302}, + {-2.090052, 52.53285}, + {46.324997, -15.69191}, + {16.902076, 41.034667}, + {-99.141655, 19.327698}, + {-3.190842, 47.314116}, + {13.797551, 50.348079}, + {24.913558959961, 60.171432495117}, + {-43.943897, -19.884948}, + {-122.162573, 47.436906}, + {73.121566772461, 33.631210327148}, + {-5.978619, 54.603883}, + {30.992073, 30.776909}, + {28.01239, 45.416794}, + {34.739113, 31.915398}, + {-104.78379, 38.917569}, + {18.02375793457, 59.31037902832}, + {72.325057983398, 24.215927124023}, + {120.009018, 30.280655}, + {29.005737, 41.048355}, + {12.45509, 56.089842}, + {39.194412231445, 21.632766723633}, + {12.279282, 55.935287}, + {27.972153, -25.938858}, + {150.777909, -33.814264}, + {110.150352, -7.866052}, + {117.00233459473, 36.619491577148}, + {-121.92009, 37.395303}, + {-73.895279, 41.208619}, + {-88.238232, 30.640049}, + {100.4061126709, 13.78303527832}, + {-97.414215, 27.805697}, + {-99.167404174805, 19.416275024414}, + {-79.258804321289, -5.9429168701172}, + {-65.463446, -33.68354}, + {-105.345154, 38.498154}, + {54.226455688477, 24.144515991211}, + {-79.017069, 35.271768}, + {79.533462524414, 28.205337524414}, + {4.3128204345703, 51.83967590332}, + {9.4832611083984, 48.748397827148}, + {30.928629, -29.895035}, + {100.51764, 14.513398}, + {46.04850769043, 37.302017211914}, + {91.53190612793, 24.296951293945}, + {3.077376, 42.523945}, + {17.473984, 45.960343}, + {139.647433, 35.483751}, + {-75.452041625977, 39.79866027832}, + {-76.270523071289, 39.499282836914}, + {80.16242980957, 13.126602172852}, + {-0.653832, 45.754668}, + {142.39311218262, 43.760604858398}, + {106.917711, -6.90292}, + {39.20723, 51.692734}, + {73.77799987793, 18.465957641602}, + {5.9992218017578, 51.99348449707}, + {106.514511, 29.616394}, + {1.281966, 45.879593}, + {27.143213, 43.316639}, + {21.421279907227, 45.42366027832}, + {-34.974289, -8.089714}, + {9.841748, 56.573732}, + {30.19660949707, 59.84733581543}, + {79.061050415039, 21.113662719727}, + {116.26899719238, 39.955215454102}, + {130.373383, 33.576279}, + {-111.890946, 33.304367}, + {5.744309, 51.265109}, + {121.558762, 25.059128}, + {-0.28495788574219, 51.636428833008}, + {121.70722961426, 24.931411743164}, + {1.424431, 43.610028}, + {12.88559, 59.129105}, + {115.22117614746, -8.6112213134766}, + {-4.367066, 56.005555}, + {-106.82350158691, 41.454849243164}, + {78.471908569336, 17.350845336914}, + {12.80387878418, 41.96159362793}, + {7.6251983642578, 47.594833374023}, + {7.347339, 48.289719}, + {29.625476, 36.192096}, + {5.788422, 53.19809}, + {18.808925, 53.014976}, + {18.246293, 53.059875}, + {-1.312868, 43.879395}, + {7.86232, 52.442551}, + {17.195663, 53.159958}, + {-122.724054, 45.883261}, + {9.2264556884766, 45.438766479492}, + {-88.030805, 15.524541}, + {44.813919067383, 48.737411499023}, + {17.007311, 51.102219}, + {-86.247698, 39.789724}, + {7.601223, 45.078276}, + {-16.737328, 28.120193}, + {136.91505432129, 34.960556030273}, + {-75.201588, -12.063503}, + {17.769864, 51.805478}, + {-103.32178, 20.650108}, + {-8.2115936279297, 42.262344360352}, + {150.468391, -34.512407}, + {102.57041931152, 24.608688354492}, + {-96.975632, 33.0439}, + {-111.667944, 40.263783}, + {28.355359, -26.099577}, + {82.142258, 26.756973}, + {114.04975891113, 22.445755004883}, + {-123.184891, 49.201584}, + {27.440414428711, 40.28205871582}, + {120.38200378418, 36.096267700195}, + {138.192215, 36.657028}, + {-58.690436, -34.498149}, + {61.334609985352, 55.175399780273}, + {3.433114, 45.847722}, + {36.470195, -0.930209}, + {-1.15265, 52.348127}, + {37.571182, 55.500412}, + {-121.879835, 37.42012}, + {43.293685913086, 41.975326538086}, + {3.229659, 50.167886}, + {-0.60356140136719, 51.468887329102}, + {23.902817, 54.906784}, + {-83.417129516602, 38.669815063477}, + {117.15339660645, -0.52253723144531}, + {72.85514831543, 19.199295043945}, + {30.092239379883, -1.9493865966797}, + {8.3997344970703, 49.546279907227}, + {8.76423, 51.761968}, + {5.410767, 51.874008}, + {-46.691765, -23.449827}, + {117.30583190918, 34.79850769043}, + {140.05851745605, 35.693893432617}, + {-122.87864685059, 50.17936706543}, + {5.5954742431641, 7.1994781494141}, + {5.249737, 52.296786}, + {31.098175, -17.918015}, + {51.449661254883, 35.768051147461}, + {107.85758972168, -6.7696380615234}, + {-121.940346, 37.338066}, + {9.653157, 47.363728}, + {106.657578, -6.203829}, + {86.50016784668, 21.053237915039}, + {2.0372772216797, 47.228164672852}, + {78.423843383789, 17.44010925293}, + {-74.15076, 40.901754}, + {28.733967, 45.385724}, + {30.501205, 50.390854}, + {26.104889, 44.514542}, + {15.94596862793, 43.771591186523}, + {-99.595821, 19.287264}, + {12.746887, 32.755737}, + {10.625152, 42.970963}, + {48.050765991211, 29.31770324707}, + {-2.264887, 53.400342}, + {140.317383, 35.519485}, + {33.351058959961, 45.186080932617}, + {36.837845, 55.585465}, + {-86.288364, 39.808802}, + {36.140054, 55.324147}, + {-70.653762817383, -33.43620300293}, + {-83.018738, 40.088287}, + {14.428482055664, 48.210067749023}, + {-43.415908813477, -22.720413208008}, + {-105.21253, 40.192011}, + {12.117698, 48.862382}, + {22.483521, 51.269074}, + {-121.200207, 45.628777}, + {9.0891265869141, 48.730545043945}, + {-69.36149597168, 10.053176879883}, + {-89.499435424805, 42.867965698242}, + {-82.924118041992, 36.273422241211}, + {-89.190105, 13.71369}, + {77.665375, 12.921799}, + {3.157442, 39.558339}, + {-72.35202, -37.472519}, + {-78.736328, 35.911681}, + {114.61555480957, 4.7316741943359}, + {-86.870956420898, 40.073318481445}, + {123.40187072754, 41.855850219727}, + {28.961012, 40.248483}, + {-2.0496368408203, 52.560653686523}, + {-122.772446, 45.367355}, + {26.105575561523, 44.381332397461}, + {-84.489258, 39.103226}, + {-122.404504, 37.797014}, + {7.3258209228516, 51.194229125977}, + {-0.74501037597656, 41.634750366211}, + {54.14680480957, 17.070693969727}, + {39.235611, 55.565414}, + {19.375992, 43.34404}, + {-5.779038, 43.235264}, + {-1.5346527099609, 42.175827026367}, + {72.862014770508, 19.063339233398}, + {19.259719848633, 52.421951293945}, + {137.25151062012, 36.635971069336}, + {174.881882, -36.987259}, + {19.926452, 46.508389}, + {130.652847, 32.46151}, + {7.47879, 51.364746}, + {110.815137, -7.558869}, + {-105.208237, 40.019348}, + {101.61735534668, 3.1455230712891}, + {25.848083, 53.113404}, + {116.54777526855, 41.40266418457}, + {80.039291, 13.579788}, + {103.86131286621, 36.070175170898}, + {8.3187103271484, 52.195358276367}, + {24.192581176758, 53.774642944336}, + {-75.32872, 40.283432}, + {16.694412231445, 38.871688842773}, + {7.4425506591797, 8.9820098876953}, + {-84.542541, 34.06929}, + {37.83989, 47.967453}, + {4.360198, 44.639512}, + {-79.903577, 40.868976}, + {0.22727966308594, 52.25715637207}, + {36.85432434082, -1.2572479248047}, + {113.59519958496, 37.858200073242}, + {126.783291, 37.532316}, + {9.414582, 51.241609}, + {-47.393142, -23.40632}, + {105.79319, 20.996933}, + {114.055252, 22.472534}, + {-2.533722, 49.445343}, + {76.833298, 30.625626}, + {31.991500854492, 46.967239379883}, + {5.635242, 51.776619}, + {2.3133087158203, 48.850021362305}, + {18.807564, 49.779053}, + {10.136232, 36.812416}, + {104.01374816895, 30.478134155273}, + {-75.167702, 39.933925}, + {-4.018021, 38.039475}, + {24.849799, 60.165253}, + {22.408676147461, 44.866104125977}, + {-63.583279, 44.666586}, + {24.4384, 57.296448}, + {-74.067764282227, 4.6273040771484}, + {-81.460686, 28.469526}, + {35.910873413086, 56.863174438477}, + {108.541706, -6.706837}, + {-98.275223, 19.053268}, + {36.743087768555, 56.675033569336}, + {28.643417358398, 51.69548034668}, + {-73.813311, 40.701712}, + {15.920565, 50.765078}, + {-77.058792114258, -11.952438354492}, + {-90.490951538086, 38.772811889648}, + {-8.6441802978516, 42.785568237305}, + {16.734076, 48.948333}, + {11.537704, 3.885269}, + {121.31172180176, 24.987716674805}, + {-58.504257, -34.618803}, + {77.636089, 12.912369}, + {-99.185256958008, 19.303665161133}, + {-111.762098, 40.346846}, + {140.559769, 37.626801}, + {-82.502518, 28.124165}, + {16.37580871582, 46.276473999023}, + {77.642440795898, 12.960433959961}, + {80.233840942383, 12.937088012695}, + {18.893965, -34.11873}, + {18.708332, 53.317681}, + {27.708664, 62.978439}, + {78.424576, 17.434616}, + {0.36598205566406, 42.806167602539}, + {105.7495880127, 21.157608032227}, + {121.32353, 31.020311}, + {101.82197570801, 2.5302886962891}, + {102.89451599121, 37.503890991211}, + {-74.60531, 39.259251}, + {7.165833, 51.260147}, + {33.328571, 47.892323}, + {-1.004477, 51.45052}, + {4.6794891357422, 51.814956665039}, + {-94.786606, 39.030991}, + {-3.958119, 51.615045}, + {-84.186722, 9.944918}, + {135.52253723145, 33.923721313477}, + {22.558364868164, 50.944290161133}, + {76.622429, 12.292328}, + {37.627487182617, 55.721969604492}, + {5.8522796630859, 45.316543579102}, + {78.391571, 17.441345}, + {31.716843, 26.558867}, + {-71.913757, 41.045437}, + {-2.5646209716797, 47.593460083008}, + {-73.387985229492, 40.695419311523}, + {-5.887459, 54.593613}, + {12.339706420898, 45.438766479492}, + {77.710419, 29.279251}, + {30.443801879883, 60.038223266602}, + {-79.742031, 32.804747}, + {10.378452, 43.450831}, + {90.440139770508, 23.713302612305}, + {89.933395385742, 54.461288452148}, + {28.782412, 40.986741}, + {22.397689819336, 38.570938110352}, + {56.430587768555, 58.068923950195}, + {-2.9326629638672, 35.170669555664}, + {19.873580932617, 54.628829956055}, + {-78.622099, 44.106023}, + {21.09992980957, 52.746047973633}, + {36.013870239258, 34.426345825195}, + {24.092330932617, 53.044052124023}, + {14.624862670898, 56.496505737305}, + {-2.695496, 51.39006}, + {55.40062, 25.210361}, + {2.9244232177734, 51.229934692383}, + {-93.572523, 41.02933}, + {14.175796508789, 57.775039672852}, + {103.9574432373, 1.0402679443359}, + {2.780914, 48.545151}, + {144.7908782959, 43.481826782227}, + {-0.81916809082031, 51.258773803711}, + {174.82200622559, -36.887283325195}, + {35.491427, 33.890262}, + {-74.304306, 40.630286}, + {-71.06575012207, 42.491683959961}, + {0.802694, 43.960419}, + {-76.94206237793, -12.055435180664}, + {-106.07277, 39.621964}, + {-117.00782775879, 32.505111694336}, + {121.62071228027, 31.30485534668}, + {120.15266418457, 30.121078491211}, + {139.1837310791, 35.373916625977}, + {-58.391647338867, -34.61311340332}, + {-122.313679, 47.661181}, + {-79.811325, 42.204208}, + {111.411888, -7.578678}, + {10.484665, 59.907486}, + {-71.20719909668, -32.698745727539}, + {-95.883734, 39.066573}, + {12.450315, 55.643717}, + {-87.720108, 41.960175}, + {105.532032, 30.495367}, + {-122.016229, 38.29819}, + {7.333512, 44.949875}, + {50.868759155273, 34.654312133789}, + {118.01582336426, 39.775314331055}, + {-118.2836151123, 33.764419555664}, + {9.736633, 47.554321}, + {108.20640563965, -6.7009735107422}, + {101.576157, 3.047333}, + {13.802514, 45.691746}, + {172.633667, -43.539276}, + {135.514173, 34.681778}, + {-102.69882, 51.317826}, + {119.44816589355, -5.1628875732422}, + {15.223811, 44.115984}, + {137.7335357666, 34.961929321289}, + {-0.111237, 51.487427}, + {56.03302, 54.782639}, + {-87.484818, 41.578454}, + {98.530197143555, 39.699783325195}, + {18.643112182617, 54.181137084961}, + {52.366745, 29.969467}, + {121.518756, 25.057755}, + {2.365494, 6.356735}, + {19.041803, 47.513554}, + {-121.667307, 36.792232}, + {16.499405, 47.811813}, + {5.5968475341797, 6.4455413818359}, + {18.823386, 50.291978}, + {-34.867284, -7.938025}, + {27.504616, 40.970421}, + {-58.488606, -34.684283}, + {100.597458, 13.650742}, + {-75.091896, 39.627342}, + {116.30470275879, 39.922256469727}, + {-85.813734, 43.235902}, + {139.69459533691, 35.586776733398}, + {8.98716, 60.701523}, + {36.205542, 50.062942}, + {10.668411254883, 43.849868774414}, + {-93.523178100586, 44.86198425293}, + {11.389389038086, 44.985580444336}, + {113.92890930176, 22.530899047852}, + {-0.81779479980469, 41.810531616211}, + {139.391973, 35.938844}, + {55.915604, 53.960495}, + {-3.7429046630859, 40.312271118164}, + {11.552810668945, 46.284713745117}, + {78.338013, 17.492294}, + {5.266037, 45.37117}, + {0.28495788574219, 51.486740112305}, + {30.27953, 39.004484}, + {-4.188023, 14.490795}, + {-76.605606079102, 2.4520111083984}, + {-79.901515, 43.249798}, + {10.03532409668, 44.437637329102}, + {13.417739868164, 52.526321411133}, + {-43.305205, -23.013167}, + {-79.820179, 40.546066}, + {7.6361846923828, 44.824905395508}, + {-118.4415435791, 34.069290161133}, + {-88.104746, 43.023761}, + {-0.55274963378906, 53.254165649414}, + {116.080035, 5.944452}, + {-88.975073, 42.388453}, + {-3.6069488525391, 40.42350769043}, + {20.288319, 51.977469}, + {-85.436247, 41.908243}, + {23.863678, 38.040848}, + {99.980392456055, 13.799514770508}, + {110.639584, 1.211245}, + {-117.880947, 33.883412}, + {-72.694473266602, -12.868423461914}, + {-121.488921, 38.578828}, + {109.661701, -6.889651}, + {24.248887, 56.83365}, + {28.039169311523, -26.030044555664}, + {114.8462677002, -3.4572601318359}, + {-90.062215, 30.45648}, + {19.814529418945, 53.379135131836}, + {28.595352172852, 46.832656860352}, + {8.082897, 48.189665}, + {12.541065, 41.899796}, + {1.783939, 46.312745}, + {101.613291, 3.017616}, + {-1.5250396728516, 53.293991088867}, + {14.363937, 40.817251}, + {11.455307006836, 42.447738647461}, + {106.63261413574, 10.732955932617}, + {101.57890319824, 3.0507659912109}, + {-0.67222595214844, 51.59797668457}, + {46.722794, 30.968857}, + {-98.784827, 20.061978}, + {38.257827758789, 54.02458190918}, + {-58.555985, -34.689103}, + {15.58636, 56.158758}, + {131.89888, 43.115387}, + {24.258499145508, 56.913986206055}, + {79.072036743164, 21.147994995117}, + {37.426758, 55.669556}, + {31.322021, 29.974823}, + {9.035568, 48.5289}, + {94.693222045898, 40.141983032227}, + {-76.671524047852, 39.21501159668}, + {107.028008, -6.29273}, + {94.175491333008, 42.527389526367}, + {-111.922989, 33.373489}, + {28.131179, 44.261867}, + {32.579678, 15.547421}, + {7.4974822998047, 9.0753936767578}, + {141.124878, 39.282303}, + {8.3983612060547, 49.99397277832}, + {18.420639038086, -33.923721313477}, + {29.926071166992, -24.015426635742}, + {42.577967, 16.913938}, + {10.952682495117, 59.928359985352}, + {29.915084838867, -24.015426635742}, + {5.29213, 52.047043}, + {-89.36991, 43.044671}, + {-1.307373, 52.627945}, + {-70.579021, -33.606451}, + {-2.191906, 53.393072}, + {-1.497577, 48.60695}, + {17.265283, 51.618126}, + {25.557633, 61.167755}, + {13.743896, 49.511948}, + {2.1553802490234, 41.395797729492}, + {18.562089, 54.499054}, + {32.732475, 39.870904}, + {-77.031041, 38.896148}, + {14.14915, 56.016825}, + {-58.605880737305, -34.413986206055}, + {-121.274705, 38.618754}, + {-5.9209442138672, 54.424209594727}, + {-84.139673, 10.010181}, + {-90.152088, 35.156853}, + {-3.389283, 55.986328}, + {-46.634902954102, -23.629531860352}, + {77.219124, 28.67466}, + {-51.830143, -30.877924}, + {-121.382797, 37.762619}, + {106.69303894043, 10.789260864258}, + {-87.97857, 43.014874}, + {-0.081392, 51.418855}, + {121.03843688965, 14.572677612305}, + {120.733109, 24.531555}, + {30.375597, 50.426687}, + {-88.421644, 41.389658}, + {120.26802062988, 22.610549926758}, + {93.501205444336, 42.832260131836}, + {-75.140743, 39.959412}, + {7.225696, 51.431684}, + {78.419723510742, 17.416763305664}, + {-122.06840515137, 37.600021362305}, + {35.408698, -15.310138}, + {17.437488, 68.4344}, + {-6.719513, 55.185013}, + {-60.652313, -32.995377}, + {-104.832231, 38.891569}, + {37.86644, 55.781708}, + {71.769931, 24.747179}, + {36.194916, 51.74675}, + {31.106827, 29.964523}, + {30.261403, 59.697772}, + {75.137557983398, 15.341720581055}, + {130.41664123535, 33.617477416992}, + {114.169235, 22.298813}, + {103.86405944824, 2.2570037841797}, + {-91.145668, 30.383034}, + {158.74488830566, 53.053665161133}, + {-58.452759, -34.546337}, + {133.994751, 34.683838}, + {20.822525024414, 41.42463684082}, + {35.592267, 32.474899}, + {9.207224, 39.21051}, + {-47.333908081055, -23.38508605957}, + {-121.500929, 38.628646}, + {-97.785873, 30.363327}, + {-99.098739624023, 19.421768188477}, + {138.067703, 35.822983}, + {65.546493530273, 57.15705871582}, + {-74.018325805664, 4.6726226806641}, + {69.148635864258, 54.896621704102}, + {78.061294555664, 30.305099487305}, + {-58.931832, -27.487423}, + {-80.224227905273, 26.090469360352}, + {37.615127563477, 55.761795043945}, + {6.922642, 50.935098}, + {15.597152709961, 57.622604370117}, + {28.029555, -26.233624}, + {11.357803, 45.602188}, + {-4.3924713134766, 42.339248657227}, + {46.669235229492, 24.697952270508}, + {7.8160858154297, 45.298690795898}, + {4.6863555908203, 45.830154418945}, + {-99.306106567383, 19.454727172852}, + {4.4638824462891, 51.902847290039}, + {3.8651275634766, 48.475112915039}, + {20.586318969727, 54.88151550293}, + {-4.375529, 50.415116}, + {-79.779085, 40.409775}, + {20.328140258789, 63.855972290039}, + {-3.082695, 47.594936}, + {-123.39912414551, 42.414779663086}, + {73.405838012695, 61.324996948242}, + {-58.567429, -34.690596}, + {18.242798, 52.197418}, + {106.828079, -6.224442}, + {101.666924, 3.542452}, + {-104.907761, 39.471817}, + {-78.549728, -0.296402}, + {115.704117, 34.417648}, + {-89.086643, 42.319644}, + {100.899271, 14.940777}, + {2.453457, 48.590253}, + {113.68446350098, 34.72297668457}, + {35.298844, 31.279683}, + {19.066708, 47.484138}, + {5.4114532470703, 61.338729858398}, + {4.5174407958984, 8.4793853759766}, + {112.94288635254, 27.094345092773}, + {-84.06601, 9.922028}, + {125.32035827637, 43.88557434082}, + {112.70942687988, -7.2461700439453}, + {140.88798522949, 38.29216003418}, + {25.327387, 45.978656}, + {-77.430953979492, 46.005935668945}, + {27.544441, 53.888969}, + {-74.028345, 4.74907}, + {22.545547, 51.217117}, + {-77.078018188477, -12.085647583008}, + {-1.106529, 52.58091}, + {-9.551826, 52.538755}, + {153.019343, -27.468878}, + {80.844269, 6.068916}, + {101.443291, 0.498505}, + {29.043732, 40.994797}, + {100.11497497559, -0.62690734863281}, + {9.7084808349609, 50.489730834961}, + {31.115341186523, -29.232559204102}, + {120.34629821777, 22.605056762695}, + {6.674677, 51.229961}, + {89.897689819336, 42.90641784668}, + {25.151138305664, 37.080917358398}, + {69.312057, 41.333049}, + {-7.605972, 33.556366}, + {108.88343811035, 34.257431030273}, + {73.509865, 4.178238}, + {34.53483581543, 49.621810913086}, + {10.123215, 44.08493}, + {28.312454, 64.139557}, + {10.025196, 46.988182}, + {-87.088025, 20.63792}, + {135.4566192627, 34.68864440918}, + {-3.364878, 40.488885}, + {3.254173, 45.817731}, + {-99.162473, 18.63046}, + {11.249532, 43.770677}, + {-8.679199, 41.204224}, + {43.617782592773, 43.474960327148}, + {23.380966186523, 42.701797485352}, + {11.486893, 3.79509}, + {37.608948, 55.896378}, + {139.846442, 35.09043}, + {-1.267776, 51.73439}, + {100.47340393066, 14.635848999023}, + {-3.216829, 43.381726}, + {11.075592, 47.302322}, + {-47.10692, -23.452765}, + {12.757186889648, 46.827163696289}, + {-76.098861694336, 44.794692993164}, + {21.406216, 47.561404}, + {-96.678081, 39.073121}, + {-80.177994, 40.676193}, + {-15.392532348633, 27.993850708008}, + {106.045826, -6.014917}, + {-97.765274047852, 30.358657836914}, + {-6.5087127685547, 54.506607055664}, + {-8.387963, 43.266711}, + {-95.696208, 29.012235}, + {80.255813598633, 13.093643188477}, + {-81.559067, 30.285187}, + {-43.677476, -22.417674}, + {-97.058379, 32.885405}, + {-99.13472, 19.316574}, + {120.13069152832, 30.21858215332}, + {-88.777222, 44.047348}, + {98.659286499023, 3.5767364501953}, + {-117.057266, 33.113769}, + {21.322402954102, 47.452011108398}, + {21.682549, 47.980385}, + {-96.727066040039, 30.144424438477}, + {27.682113647461, 42.646865844727}, + {3.625488, 51.476898}, + {-122.34993, 47.618285}, + {-65.273208618164, -26.84440612793}, + {135.47309875488, 34.819107055664}, + {73.830184936523, 18.508529663086}, + {137.841797, 37.039604}, + {121.07139587402, 14.611129760742}, + {-117.023666, 33.096176}, + {19.823456, 50.026245}, + {8.7100982666016, 36.180038452148}, + {2.092552, 48.503265}, + {106.76651, -6.168137}, + {10.517138, 52.950985}, + {21.90981, 43.322525}, + {36.752014, -1.28952}, + {-73.977127075195, 40.702285766602}, + {-2.163963, 55.052147}, + {48.684196, 31.317558}, + {139.66575622559, 35.930099487305}, + {22.039260864258, 57.975540161133}, + {35.512619, 33.393631}, + {25.300827026367, 64.130630493164}, + {-1.2050628662109, 51.886367797852}, + {-99.151268, 19.643898}, + {33.591384887695, -12.334213256836}, + {138.99833679199, 35.236587524414}, + {-3.882582, 40.517661}, + {117.69309997559, 39.018630981445}, + {32.85530090332, 39.957962036133}, + {-77.027893, -12.073288}, + {88.620529174805, 43.068466186523}, + {-117.084549, 33.119659}, + {100.64094543457, 13.600387573242}, + {-96.710586547852, 32.906112670898}, + {87.630386352539, 43.766098022461}, + {-74.790115356445, 10.966415405273}, + {-79.608978, 43.682729}, + {10.237198, 43.945999}, + {-119.30534362793, 46.292953491211}, + {100.45967102051, 14.692153930664}, + {5.300624, 51.61822}, + {140.04066467285, 35.87516784668}, + {-1.5271, 54.84581}, + {-79.125595092773, 43.252487182617}, + {-4.3392, 55.879544}, + {-0.293884, 45.681152}, + {24.710311889648, 42.506790161133}, + {3.4078216552734, 6.7655181884766}, + {-87.51091003418, 33.248062133789}, + {-4.492792, 53.238983}, + {-86.638870239258, 14.015121459961}, + {-83.119125, 39.966888}, + {5.22995, 43.507462}, + {80.207748413086, 13.137588500977}, + {26.924744, 39.47937}, + {12.618246, 41.744576}, + {-68.753712, -32.951204}, + {-86.178646, 41.679211}, + {-5.6943511962891, 40.930252075195}, + {-74.795608520508, 10.988388061523}, + {140.31806945801, 37.27180480957}, + {100.27702331543, 5.4636383056641}, + {-80.329854, 25.781636}, + {6.136022, 49.601626}, + {-79.256189, 35.546648}, + {96.155777, 16.773033}, + {-82.735428, 35.220383}, + {27.979164, -26.232594}, + {101.703964, 3.196861}, + {-76.525681, 39.143143}, + {134.964298, 34.924171}, + {-79.793685, 43.293126}, + {139.400024, 35.670547}, + {49.735794067383, 40.474319458008}, + {76.99791, 43.190232}, + {-122.142563, 47.605991}, + {7.1527862548828, 51.595230102539}, + {77.369155883789, 19.269332885742}, + {-121.537706, 38.674941}, + {13.555069, 48.097183}, + {112.323532, -7.619705}, + {-8.8378143310547, 41.876449584961}, + {129.323978, 35.729266}, + {8.5521697998047, 51.919326782227}, + {-80.306625, 25.993881}, + {65.57258605957, 57.136459350586}, + {80.368423461914, 7.4974822998047}, + {55.179362, 25.095207}, + {153.518864, -28.211515}, + {-71.283776, 46.722339}, + {73.179246, 22.289887}, + {4.8291778564453, 45.772476196289}, + {130.58967590332, 31.54655456543}, + {10.57502746582, 47.158126831055}, + {114.196014, 22.290573}, + {101.729784, 3.191172}, + {106.981375, -6.227351}, + {114.5858, -3.318558}, + {72.871627807617, 19.123764038086}, + {-0.45661926269531, 52.478256225586}, + {101.01173400879, 16.64909362793}, + {79.863052, 12.028999}, + {17.265701293945, 40.397415161133}, + {5.9305572509766, 45.746383666992}, + {79.839706, 11.972351}, + {6.4510345458984, 46.298446655273}, + {-75.125198364258, 40.104904174805}, + {2.4011993408203, 48.844528198242}, + {30.365524, 50.503464}, + {28.031616, -26.202049}, + {28.684946, 40.999854}, + {8.943154, 44.407102}, + {28.779373, 41.040802}, + {46.99691, 24.433735}, + {-71.600361, 46.699486}, + {9.5601654052734, 59.189529418945}, + {121.094435, 14.606663}, + {14.379043, 50.129242}, + {25.417556762695, 37.436599731445}, + {80.141830444336, 13.126602172852}, + {13.492795, 46.793474}, + {12.972793579102, 58.530349731445}, + {121.28288269043, 24.983596801758}, + {25.656991, 60.396041}, + {3.35527, 6.556271}, + {-105.77192, 39.696474}, + {29.391860961914, 60.406265258789}, + {10.121842, 33.876572}, + {-87.10289, 41.458817}, + {-73.9433, 4.915515}, + {147.331265, -19.627217}, + {50.754776000977, 24.677352905273}, + {17.61589050293, 42.922897338867}, + {-115.49858093262, 32.678146362305}, + {-4.5545196533203, 48.303451538086}, + {7.1816253662109, 51.511459350586}, + {-78.736213, 35.740467}, + {-76.948929, -12.102036}, + {128.885276, 35.240131}, + {100.56129455566, 7.2283172607422}, + {-87.785477, 41.909409}, + {-99.149551391602, 19.427261352539}, + {-87.890743, 41.847516}, + {-122.2386932373, 47.524795532227}, + {106.63948059082, 11.135330200195}, + {119.43031311035, 39.811019897461}, + {138.80195617676, 35.459060668945}, + {-122.062775, 47.827606}, + {29.529190063477, 48.362503051758}, + {42.178573608398, 22.730026245117}, + {-0.204674, 48.459445}, + {100.4761505127, 5.3304290771484}, + {25.633389, 43.076679}, + {109.13887023926, 12.426223754883}, + {-121.40510559082, 38.421249389648}, + {16.199341, 58.661499}, + {76.535225, 9.626427}, + {106.827202, -6.240884}, + {141.764145, 43.183273}, + {20.245742797852, 50.09147644043}, + {-5.601654, 42.543182}, + {23.139266967773, 46.299819946289}, + {31.101184, 59.419111}, + {-1.526414, 47.227936}, + {151.043898, -34.024902}, + {131.950813, 43.094122}, + {152.907605, -27.690273}, + {78.467788696289, 27.124557495117}, + {80.323104858398, 26.41731262207}, + {22.186203, 60.435791}, + {120.457993, 23.537064}, + {27.954733, 40.352553}, + {86.58805847168, 47.057876586914}, + {107.594524, -6.954334}, + {-2.090919, 51.893814}, + {-90.786891, 34.622728}, + {16.487044, 56.778718}, + {-73.930435180664, 40.67756652832}, + {-13.581227, 10.372369}, + {-90.005522, 32.064106}, + {31.015091, 59.933548}, + {113.55125427246, -6.9426727294922}, + {-5.617903, 43.529435}, + {139.498901, 35.683594}, + {-8.695679, 39.239044}, + {95.319442749023, 28.083114624023}, + {9.048217, 44.388005}, + {-5.290488, 35.645072}, + {7.82882, 51.679001}, + {2.3366546630859, 41.603164672852}, + {77.32795715332, 12.761306762695}, + {-122.211227, 37.710983}, + {0.074844360351562, 51.543045043945}, + {34.971989, 32.471249}, + {-16.16569519043, 16.270065307617}, + {-81.445476, 40.83785}, + {11.977919, 45.870896}, + {55.141067504883, 51.806716918945}, + {130.7022857666, 32.42546081543}, + {2.222478, 48.868836}, + {121.46415710449, 25.006942749023}, + {9.9790191650391, 52.759780883789}, + {-1.212616, 44.906616}, + {4.473362, 51.917476}, + {55.082998, 24.964229}, + {9.533386, 54.954987}, + {10.822219848633, 35.773544311523}, + {13.225479, 43.715286}, + {-0.57472229003906, 47.810440063477}, + {9.6205902099609, 48.612442016602}, + {14.199142, 49.257431}, + {-58.788864, -34.634389}, + {36.912002563477, 55.776901245117}, + {3.3638763427734, 6.5045928955078}, + {-46.730958, -23.57264}, + {172.61798, -43.543783}, + {-94.714241, 39.296094}, + {100.80024719238, 19.030380249023}, + {1.432833, 43.614938}, + {-67.86735534668, 45.702438354492}, + {42.436752319336, 18.236618041992}, + {106.85096740723, -6.2216949462891}, + {-75.577972, 40.623837}, + {83.330612, 54.52446}, + {122.60124206543, -3.9722442626953}, + {25.61798, 58.926816}, + {77.043686, 11.041489}, + {10.136032, 56.280441}, + {30.476761, 50.427704}, + {31.557540893555, 39.436111450195}, + {10.758842, 34.856695}, + {106.75895690918, 10.937576293945}, + {-74.074630737305, 40.813522338867}, + {24.51530456543, 48.34602355957}, + {87.872085571289, 24.067611694336}, + {2.6827239990234, 48.079605102539}, + {27.922992, -26.145944}, + {-122.32933, 47.615825}, + {27.369308, 39.092499}, + {34.768295288086, 0.65849304199219}, + {121.56715393066, 25.166244506836}, + {-99.130325317383, 19.370956420898}, + {55.698395, 25.514832}, + {-116.970374, 32.652054}, + {83.255081176758, 17.687301635742}, + {2.883911, 6.419106}, + {139.926682, 35.351569}, + {31.219711, 36.941528}, + {77.223195, 28.593979}, + {-86.239212, 39.896689}, + {37.734415, 55.649687}, + {39.10514831543, -5.0736236572266}, + {25.378075, 46.414146}, + {85.98999, 46.130219}, + {-80.429098, 25.697708}, + {19.14576, 50.831686}, + {77.334823608398, 28.599472045898}, + {-2.941547, 54.33886}, + {44.601058959961, 31.96403503418}, + {117.67799377441, 38.917007446289}, + {132.5040435791, 35.196762084961}, + {-81.610464, 30.265629}, + {16.983948, 51.114578}, + {-47.600326538086, -20.90217590332}, + {100.28938293457, 13.61686706543}, + {29.107577, 37.818221}, + {45.551376342773, 43.163223266602}, + {-79.521102905273, 44.473342895508}, + {-43.293479, -22.892594}, + {9.159622, 55.938492}, + {30.420455932617, 50.489730834961}, + {-60.672073, -32.927322}, + {3.362503, 7.142487}, + {-105.076259, 39.861374}, + {17.306900024414, 62.38655090332}, + {127.002057, 37.524878}, + {13.339462280273, 38.110885620117}, + {31.056635, -29.771074}, + {21.944504, 49.76738}, + {-44.278335571289, -19.862594604492}, + {-96.982498, 32.902908}, + {16.337356567383, 48.238906860352}, + {31.03157043457, -29.817581176758}, + {13.707504272461, 41.935501098633}, + {2.3476409912109, 48.856887817383}, + {23.231735, 61.617508}, + {4.761102, 52.322093}, + {-81.821758, 26.588974}, + {-0.54039001464844, 44.820785522461}, + {29.906845092773, 59.780044555664}, + {-103.85719299316, 19.710159301758}, + {116.58073425293, 39.903030395508}, + {10.134201049805, 53.546676635742}, + {-0.414299, 53.792996}, + {134.000381, 34.348068}, + {-71.674141, -33.447434}, + {28.989486694336, 41.040115356445}, + {-90.664673, 42.506104}, + {98.688125610352, 3.5465240478516}, + {-86.847486, 41.609844}, + {-73.312454223633, 41.222763061523}, + {106.81938171387, 28.132553100586}, + {101.472978, 3.072086}, + {-78.507156, -0.230026}, + {-91.573245, 41.686573}, + {22.509174, 51.298853}, + {32.550430297852, 0.39070129394531}, + {19.461616, 51.951464}, + {12.538833618164, 55.761795043945}, + {103.58390808105, -1.6060638427734}, + {109.22676086426, 19.302291870117}, + {9.8238372802734, 57.475662231445}, + {-95.539169311523, 29.736557006836}, + {135.5184173584, 34.773788452148}, + {12.837429, 56.670397}, + {118.009415, 37.406387}, + {5.017283, 50.737136}, + {-52.351913452148, -26.407699584961}, + {-96.630055, 32.889065}, + {8.4519195556641, 51.757278442383}, + {-52.634811401367, -27.132797241211}, + {-71.867294, 42.034378}, + {101.883243, 56.278133}, + {90.400314, 23.732529}, + {39.794540405273, 54.514846801758}, + {-82.648123, 27.791315}, + {5.090367, 52.022173}, + {-2.763061, 53.542099}, + {-66.540756225586, 10.472030639648}, + {1.989813, 41.28164}, + {143.18550109863, 42.970962524414}, + {84.739608764648, 44.40055847168}, + {12.694015, 45.521622}, + {14.016494750977, 68.310928344727}, + {84.857711791992, 45.635147094727}, + {80.710372924805, 7.9685211181641}, + {21.91291809082, 53.18000793457}, + {115.206757, -8.524704}, + {101.718979, 3.135223}, + {139.620438, 35.511383}, + {105.84983825684, 21.028518676758}, + {77.919845581055, 26.805953979492}, + {144.777145, 13.493118}, + {-117.91831970215, 33.78776550293}, + {-74.032548, 40.763248}, + {-3.0027008056641, 53.147048950195}, + {18.491364, -34.025345}, + {-0.99906921386719, 52.128067016602}, + {104.869308, 11.550522}, + {-0.98670959472656, 51.396102905273}, + {-0.11741638183594, 45.82878112793}, + {35.276414, 46.299821}, + {-121.9921, 37.319259}, + {-2.19452, 55.635453}, + {-73.355032, 45.796509}, + {-5.344108, 50.229985}, + {12.445449829102, 9.2539215087891}, + {12.460556, 9.220963}, + {11.383896, 47.27005}, + {-58.232441, -34.818087}, + {37.574819, 55.91266}, + {2.3915863037109, 48.855514526367}, + {-121.493855, 38.549652}, + {12.813491821289, 57.705001831055}, + {-96.715301, 17.084516}, + {-80.90847, 35.006676}, + {9.336318, 40.352097}, + {-100.16578674316, 25.87760925293}, + {-98.563385, 19.915174}, + {8.8076019287109, 45.470352172852}, + {23.625411987305, 40.229873657227}, + {85.30403137207, 27.695846557617}, + {12.623154, 41.473251}, + {-72.444534301758, 45.858993530273}, + {-78.995708, 33.696065}, + {-77.068408, -11.962402}, + {11.180924, 45.911728}, + {120.20210266113, 30.233688354492}, + {114.268679, 22.379637}, + {72.883301, 20.409164}, + {-104.681852, 38.676682}, + {-87.674332, 41.97464}, + {4.3897247314453, 50.80696105957}, + {129.336177, 35.544839}, + {37.422866821289, 55.661544799805}, + {22.289776, 52.103283}, + {139.57511901855, 35.397262573242}, + {-9.5423126220703, 51.603469848633}, + {31.612015, 30.129318}, + {19.345736, 47.494933}, + {30.652542, 46.389771}, + {10.691757202148, 48.563003540039}, + {4.95027, 52.310715}, + {-3.7648773193359, 40.448226928711}, + {35.085068, 0.635605}, + {139.61494445801, 35.707626342773}, + {14.490280151367, 35.866928100586}, + {-2.256317, 43.205795}, + {104.06730651855, 30.498733520508}, + {50.600967407227, 25.980606079102}, + {4.566385, 51.955087}, + {4.696387, 52.047706}, + {21.837436, 51.555502}, + {-45.846056, -23.180753}, + {139.648296, 35.811996}, + {30.489120483398, 59.917373657227}, + {122.755966, 11.575241}, + {-3.923492, 37.763443}, + {-15.574576, 27.768463}, + {-8.8515472412109, 42.722396850586}, + {106.3126373291, 10.434951782227}, + {73.029556274414, 50.048904418945}, + {-85.987091, 41.678085}, + {30.472984, 50.468445}, + {77.616348266602, 12.91374206543}, + {8.9998626708984, 36.62223815918}, + {113.91929626465, 22.508926391602}, + {19.923706, 50.090103}, + {18.926376, 50.319763}, + {-123.03520202637, 44.996566772461}, + {30.412216, 59.943924}, + {22.775344848633, 57.515487670898}, + {18.919831, 53.187561}, + {6.7710113525391, 45.48957824707}, + {18.964462280273, 53.381881713867}, + {3.691112, 43.652507}, + {-85.67336, 40.269482}, + {-0.739174, 37.748337}, + {52.474136352539, 29.630813598633}, + {-74.148788452148, 45.249252319336}, + {-2.988053, 43.376541}, + {18.771981, 54.310726}, + {-15.573458, 28.171351}, + {3.083802, 50.647275}, + {55.29899597168, 25.226669311523}, + {29.054031, 41.048904}, + {-0.688705, 37.99086}, + {-46.643111, -23.572109}, + {101.71211242676, 3.1510162353516}, + {15.086288452148, 37.488784790039}, + {14.12223815918, 41.206283569336}, + {106.006393, 20.246429}, + {-73.857650756836, 40.717391967773}, + {-1.334787, 53.460795}, + {-80.383529663086, 25.708694458008}, + {-88.287277, 43.123856}, + {69.397477, 42.464081}, + {-122.462181, 47.250824}, + {-99.214096069336, 19.43000793457}, + {-119.871301, 36.816115}, + {-82.372576, 28.336085}, + {36.303634643555, 49.969253540039}, + {19.799526, 50.084953}, + {27.974069, -26.073905}, + {114.15138244629, 22.278213500977}, + {22.256593, 50.141676}, + {29.071599, 40.984535}, + {104.028043, 11.179333}, + {-6.7751312255859, 34.043197631836}, + {55.922470092773, 53.04817199707}, + {74.302597, 16.615448}, + {4.785347, 52.349396}, + {98.682495, 3.543494}, + {11.33158, 43.323898}, + {82.714004516602, 43.584823608398}, + {105.260533, -5.420151}, + {27.975997924805, 38.228988647461}, + {81.749954223633, 43.849868774414}, + {121.798782, 31.151505}, + {135.626564, 34.772415}, + {30.529534, 50.402036}, + {32.910232543945, 47.122421264648}, + {140.672836, 35.890732}, + {79.243698120117, 20.002670288086}, + {9.995406, 50.562998}, + {138.89808654785, 37.556076049805}, + {100.50636291504, 13.605880737305}, + {-100.268784, 25.69606}, + {9.436463, 52.345902}, + {134.216385, 34.266129}, + {-122.36366271973, 47.623672485352}, + {12.934341430664, 49.23454284668}, + {-89.484044, 43.129182}, + {14.988354, 41.995085}, + {-76.945267, -12.096634}, + {18.302536010742, 54.829330444336}, + {-1.227722, 48.121491}, + {36.218187, 49.995429}, + {2.233052, 49.155503}, + {39.736862182617, 43.571090698242}, + {3.1139373779297, 45.786209106445}, + {10.616226196289, 44.731521606445}, + {-98.424453735352, 18.917770385742}, + {-10.119094848633, 51.772384643555}, + {37.897437, 48.007409}, + {-85.443473, 40.222479}, + {-0.845947, 52.1521}, + {28.115387, -26.08429}, + {-4.744645, 51.718369}, + {28.132436, -26.167915}, + {26.082535, 44.437637}, + {135.57334899902, 34.543075561523}, + {30.267334, 59.878922}, + {-99.228859, 19.536438}, + {-121.47377, 38.557102}, + {24.739371, 60.16124}, + {-47.193832397461, -15.555953979492}, + {-104.48204040527, 21.057357788086}, + {-8.818245, 41.692429}, + {-81.329794, 43.000419}, + {10.98014831543, 45.408554077148}, + {-62.774092, -17.666513}, + {135.741806, 35.013199}, + {110.333176, -7.775803}, + {110.40504455566, -7.1280670166016}, + {120.857437, 24.632858}, + {-80.698013305664, -4.9239349365234}, + {-78.7603, 43.033447}, + {-82.533906, 40.541023}, + {145.06004333496, -37.75520324707}, + {106.5584564209, 29.519577026367}, + {-122.591847, 45.16285}, + {-97.053517, 36.082535}, + {-93.466217, 46.584257}, + {120.95054626465, 15.459823608398}, + {120.97938537598, 14.450454711914}, + {9.90015, 49.569309}, + {-4.163132, 36.749268}, + {37.87467956543, 48.991470336914}, + {15.82649230957, 57.424850463867}, + {-118.30284118652, 34.122848510742}, + {-3.945506, 37.184388}, + {49.631653, 58.617325}, + {84.415512084961, 26.164627075195}, + {58.87092590332, 53.552169799805}, + {29.502529, 40.077672}, + {102.6830291748, 3.5836029052734}, + {100.554423, 13.777728}, + {26.648965, 47.749798}, + {-2.950516, 56.490087}, + {-3.429229, 56.228472}, + {-63.850479125977, 44.911422729492}, + {6.691338, 50.896098}, + {8.025718, 59.446757}, + {-82.320728, 34.922415}, + {30.572891235352, 50.495223999023}, + {35.829849243164, 31.995620727539}, + {-1.2545013427734, 51.713333129883}, + {100.507278, 14.525528}, + {141.351471, 43.060226}, + {51.444438, 25.228105}, + {-1.281887, 52.006266}, + {82.991409, 41.704102}, + {4.965591, 52.306595}, + {-73.600845336914, 45.51155090332}, + {-2.777082, 53.39725}, + {37.827987670898, 55.916976928711}, + {-121.504391, 38.565445}, + {0.959273, 52.115024}, + {39.190292, 21.570282}, + {10.693436, 34.704514}, + {139.999741, 36.945511}, + {104.9063873291, 11.544570922852}, + {135.23277282715, 34.430465698242}, + {17.218583, 48.125378}, + {35.874969, 31.953835}, + {13.144454956055, 47.961502075195}, + {16.250839, 47.753792}, + {-119.05265808105, 35.864181518555}, + {-72.014236, -17.029953}, + {-1.633388, 52.115109}, + {38.009262, 53.772583}, + {140.439949, 41.186714}, + {5.459919, 51.496561}, + {135.485865, 34.712702}, + {2.255516, 48.893967}, + {21.039505004883, 52.16926574707}, + {-58.520737, -34.520822}, + {30.340805053711, 59.910507202148}, + {-88.123894, 41.685867}, + {12.832718, 61.889877}, + {28.937301635742, 41.008529663086}, + {-37.276397, -7.032008}, + {140.777779, 40.830002}, + {-2.969349, 53.410525}, + {132.00416564941, 34.84245300293}, + {10.37727355957, 57.625350952148}, + {1.0018157958984, 51.188735961914}, + {-48.364218, -1.361169}, + {136.941376, 34.951172}, + {13.039171, 50.749856}, + {-90.09673, 29.952291}, + {27.411575317383, 53.891372680664}, + {-79.707265, 44.775748}, + {76.889877319336, 43.238754272461}, + {71.002578735352, 38.478927612305}, + {135.4923248291, 34.690017700195}, + {9.865829, 53.371565}, + {-87.915417, 41.774862}, + {135.769455, 34.999008}, + {-97.078628540039, 33.136825561523}, + {79.593887329102, 17.963333129883}, + {1.0498809814453, 47.570114135742}, + {172.708386, -43.557527}, + {100.525818, 13.724384}, + {-2.809204, 43.352188}, + {139.73167419434, 35.614242553711}, + {34.886738, 32.369693}, + {-8.057785, 37.144089}, + {-11.429901, 14.431915}, + {19.074325561523, 47.508316040039}, + {-2.1292877197266, 51.095352172852}, + {100.235138, 17.479248}, + {121.04804992676, 14.855575561523}, + {6.633351, 48.572751}, + {71.323242, 21.278458}, + {-0.629104, 43.190552}, + {135.76286315918, 35.000381469727}, + {4.942474, 7.719269}, + {107.61726379395, -6.9110870361328}, + {28.979846, 41.064636}, + {88.67546081543, 42.465591430664}, + {50.068588, 26.393051}, + {8.516918, 58.970261}, + {36.877670288086, -1.6390228271484}, + {103.3325958252, 2.0345306396484}, + {-87.333412, 39.438515}, + {10.253677368164, 55.92658996582}, + {103.33396911621, 2.0413970947266}, + {140.31394958496, 38.271560668945}, + {-56.791763305664, -27.043533325195}, + {136.800483, 35.114365}, + {37.569808959961, 55.649185180664}, + {30.743179321289, -29.753036499023}, + {-96.776848, 32.923965}, + {13.735979, 42.67405}, + {153.433204, -28.030737}, + {30.431271, 50.463123}, + {114.725082, -3.435549}, + {6.003236, 52.235607}, + {-87.970374, 41.682423}, + {16.996536254883, 43.487319946289}, + {-122.65617370605, 53.765029907227}, + {107.62687683105, -6.8630218505859}, + {18.349227905273, 15.793533325195}, + {139.774121, 35.699387}, + {21.996688842773, 60.337600708008}, + {31.740188598633, 30.743179321289}, + {23.64875793457, 60.803146362305}, + {139.984703, 35.702133}, + {23.646011352539, 60.698776245117}, + {21.310043334961, 37.664566040039}, + {-114.29420471191, 53.381881713867}, + {-3.1565093994141, 47.619552612305}, + {18.60721, 53.539614}, + {-5.9346771240234, 35.761184692383}, + {-79.852891, 40.13637}, + {-0.20317, 51.612778}, + {9.84581, 36.816788}, + {-80.098984, 26.360184}, + {9.1536712646484, 44.371719360352}, + {174.93598937988, -36.927108764648}, + {-119.039017, 34.228988}, + {37.613754272461, 54.214096069336}, + {-123.364105, 43.233347}, + {26.157074, 44.425278}, + {31.343307495117, 30.073013305664}, + {135.4422, 34.536209}, + {106.75895690918, -6.3164520263672}, + {-81.548739, 30.617982}, + {-99.063034057617, 19.660720825195}, + {48.264313, 38.242035}, + {23.124847, 60.395966}, + {107.07618713379, 10.360794067383}, + {140.09422302246, 39.73274230957}, + {28.143539, 60.934982}, + {-60.52987, -31.728238}, + {110.368978, -7.784737}, + {-96.001967, 41.186257}, + {-97.446670532227, 30.104598999023}, + {43.513412475586, 33.201370239258}, + {130.43312072754, 33.517227172852}, + {32.78938293457, 39.843978881836}, + {-95.383987426758, 30.023574829102}, + {114.07035827637, 22.651748657227}, + {139.85801696777, 35.950698852539}, + {5.0186920166016, 44.437637329102}, + {-122.33070373535, 47.594833374023}, + {19.576950073242, 52.612838745117}, + {8.876213, 45.315163}, + {104.86957, 11.571948}, + {17.069315, 52.066431}, + {2.7074432373047, 49.46662902832}, + {138.643689, -34.95668}, + {-9.0973663330078, 38.465194702148}, + {12.862930297852, 57.637710571289}, + {32.424316, 15.649338}, + {5.699163, 50.317383}, + {135.24101257324, 34.254684448242}, + {9.9405670166016, 51.716079711914}, + {120.97114562988, 31.914596557617}, + {101.43058776855, 0.50743103027344}, + {46.843643188477, 24.662246704102}, + {15.333544, 37.906813}, + {113.59931945801, 23.146133422852}, + {103.391566, 0.867532}, + {107.349472, -6.363144}, + {-98.160282, 26.310446}, + {113.19831848145, 28.48274230957}, + {101.764341, 3.131752}, + {76.950329, 43.26012}, + {-74.060211, 4.706955}, + {-87.792664, 42.140808}, + {13.839340209961, 57.942581176758}, + {8.549423, 48.233414}, + {-1.077846, 44.559866}, + {-84.020818, 35.092443}, + {74.566268920898, 15.895156860352}, + {22.47551, 37.436142}, + {-82.479172, 40.608902}, + {76.531448364258, 9.2800140380859}, + {-74.049451, 40.743408}, + {-1.4289093017578, 52.421951293945}, + {120.998611, 31.800156}, + {28.048782348633, -26.189346313477}, + {38.054580688477, 53.89274597168}, + {-38.394907, -12.906322}, + {34.891891, 32.264786}, + {-93.82942199707, 33.419723510742}, + {12.129592895508, 51.055526733398}, + {18.900298, 42.251782}, + {139.7289276123, 35.662307739258}, + {-1.682281, 47.262039}, + {121.45179748535, 24.994583129883}, + {61.375808, 55.141757}, + {30.451061, 50.523867}, + {-2.150922, 50.943948}, + {6.026001, 50.907211}, + {19.898300170898, 50.079116821289}, + {13.38258, 46.504392}, + {19.986190795898, 50.043411254883}, + {1.1968231201172, 43.657608032227}, + {13.752823, 58.656693}, + {4.81902, 52.670151}, + {-96.549873, 46.691386}, + {0.45387268066406, 51.863021850586}, + {14.646051, 49.427392}, + {139.58198547363, 35.405502319336}, + {-49.806807, -26.111451}, + {-85.037155, 41.068268}, + {36.298828, 49.999466}, + {-82.72656, 27.704675}, + {37.729110717773, 55.713729858398}, + {-80.886841, -2.215118}, + {-122.194839, 47.300308}, + {131.91902160645, 43.069839477539}, + {-47.013931274414, -23.026657104492}, + {113.25874328613, 22.811050415039}, + {79.58519, 11.921768}, + {18.151886, 59.263138}, + {4.3347930908203, 50.896224975586}, + {63.387680053711, 61.327743530273}, + {14.414749145508, 41.702041625977}, + {100.36766052246, -0.30555725097656}, + {-98.20198059082, 26.319808959961}, + {-84.36882019043, 33.857803344727}, + {-0.263535, 52.403}, + {4.9623870849609, 45.68733215332}, + {8.2253265380859, 48.837661743164}, + {4.419091, 50.404124}, + {8.32332, 49.984988}, + {110.31578063965, 20.024642944336}, + {-3.6687469482422, 40.398788452148}, + {27.128677368164, 54.450302124023}, + {101.736487, 3.163098}, + {145.729047, -16.911716}, + {106.857834, -6.117325}, + {11.371871, 53.841867}, + {34.963302612305, 48.494338989258}, + {114.02778625488, 22.444381713867}, + {77.290878295898, 28.537673950195}, + {23.750381469727, 38.102645874023}, + {80.263596, 13.057022}, + {14.413357, 47.079681}, + {77.163162, 28.558242}, + {10.702743530273, 54.928207397461}, + {9.562566, 44.881897}, + {126.76780700684, 37.308883666992}, + {61.443296, 55.147345}, + {35.94108581543, 31.93244934082}, + {-9.7991180419922, 51.666641235352}, + {102.317284, -3.840285}, + {141.91932678223, 43.485946655273}, + {30.366897583008, 59.953079223633}, + {151.01737976074, -33.672409057617}, + {106.8042755127, -6.2134552001953}, + {-99.181137084961, 19.380569458008}, + {16.128616333008, 40.772323608398}, + {93.593215942383, 42.888565063477}, + {105.14671325684, -2.0551300048828}, + {-95.208206, 29.665833}, + {100.481644, 13.74527}, + {46.735153198242, 24.59358215332}, + {30.371704, 59.831543}, + {75.302352905273, 31.510848999023}, + {-9.1344451904297, 38.715133666992}, + {-2.845443, 47.844032}, + {23.777847290039, 61.500778198242}, + {98.765029907227, 39.561080932617}, + {72.965012, 19.182987}, + {16.333237, 48.024216}, + {3.2320404052734, 48.216934204102}, + {29.809538, 62.613536}, + {-0.25062561035156, 6.0637664794922}, + {-0.168228, 51.332016}, + {17.069320678711, 58.751449584961}, + {-79.65898, 44.41912}, + {19.024201, 47.647705}, + {53.094521, 36.56456}, + {136.905029, 35.033295}, + {-43.385696411133, -22.883834838867}, + {37.673721, 55.739594}, + {19.826889038086, 50.068130493164}, + {100.68077087402, 13.671798706055}, + {-83.959458, 34.88074}, + {8.3612823486328, 46.562118530273}, + {4.0230560302734, 47.509689331055}, + {20.087128, 50.018692}, + {-76.289749145508, -6.7380523681641}, + {-69.984970092773, 18.434371948242}, + {-87.661664, 41.366617}, + {174.78904724121, -41.333999633789}, + {-79.739971, 39.882946}, + {-96.614358, 40.787136}, + {101.65718078613, 3.0727386474609}, + {-70.606875, -33.392454}, + {16.536484, 46.355301}, + {139.52018737793, 35.947952270508}, + {73.805319, 18.509817}, + {-85.462417, 41.311569}, + {99.128952026367, 16.822128295898}, + {35.019607543945, 48.475112915039}, + {-89.289321899414, 13.686904907227}, + {-92.943993, 41.680069}, + {-121.912873, 37.323047}, + {-1.2133026123047, 50.824813842773}, + {8.56213, 47.449976}, + {-80.352909, 26.111712}, + {37.397997, 45.269353}, + {13.121796, 11.819229}, + {29.014655, 41.003408}, + {11.363296508789, 48.115310668945}, + {120.51658630371, 31.359786987305}, + {-80.535629, 39.985794}, + {33.557739, 53.809662}, + {7.454224, 10.561295}, + {3.2444000244141, 51.143417358398}, + {-43.966598510742, -19.809036254883}, + {77.584762573242, 12.895889282227}, + {30.961462, 52.400583}, + {21.22886, 45.766512}, + {139.781113, 35.984344}, + {3.5204315185547, 46.18034362793}, + {119.538025, -5.266679}, + {17.902908325195, 48.299331665039}, + {109.27207946777, 37.554702758789}, + {1.9947052001953, 48.925552368164}, + {-100.23857116699, 25.858383178711}, + {17.116012573242, 48.146896362305}, + {137.96836853027, 35.829849243164}, + {-0.297318, 52.201538}, + {-48.249893188477, -23.198318481445}, + {-0.447006, 51.396299}, + {78.498077, 17.42157}, + {15.11100769043, 44.304428100586}, + {-113.971052, 54.128345}, + {100.62309265137, 13.610000610352}, + {-5.53505, 54.634912}, + {-8.8076019287109, 42.260971069336}, + {24.03145, 49.842611}, + {138.59785, -34.922007}, + {10.564728, 52.245483}, + {2.2940826416016, 48.786849975586}, + {17.332333, 51.729604}, + {-81.613998413086, 28.503341674805}, + {37.509194, 54.183641}, + {-3.155823, 55.908737}, + {21.869431, 49.929428}, + {-0.271225, 51.74437}, + {5.1752471923828, 52.610092163086}, + {45.968856811523, 51.599349975586}, + {-76.528701782227, 3.3776092529297}, + {24.012680053711, 49.866256713867}, + {8.9037322998047, 40.155715942383}, + {130.416516, 33.577402}, + {1.782278, 48.96704}, + {-0.86860656738281, 44.793319702148}, + {-122.89512634277, 49.233169555664}, + {80.766677856445, 6.9742584228516}, + {101.677294, 14.974309}, + {39.50065612793, 43.766098022461}, + {19.925765991211, 50.066757202148}, + {77.665786743164, 12.982406616211}, + {-1.1350250244141, 53.484878540039}, + {100.699081, 13.638382}, + {135.475235, 34.688644}, + {-8.6565399169922, 40.39192199707}, + {-90.2285, 38.724442}, + {-43.196182250977, -22.114791870117}, + {16.837234, 59.083786}, + {-74.055404663086, 4.6630096435547}, + {112.17384338379, 37.525863647461}, + {112.62840270996, 37.762069702148}, + {76.853256, 43.245621}, + {-90.182682, 29.955185}, + {-1.2792205810547, 52.358779907227}, + {12.368088, 44.953995}, + {9.084319, 61.753464}, + {23.096115, 41.996222}, + {54.52961, 24.297981}, + {140.124779, 35.794144}, + {104.29527282715, 52.283248901367}, + {30.33989, 60.094528}, + {77.63557434082, 13.053817749023}, + {48.052139282227, 46.349258422852}, + {30.531692504883, 50.366134643555}, + {28.508834838867, 54.240188598633}, + {138.17161560059, 34.707870483398}, + {36.711502075195, 56.33171081543}, + {8.826131, 45.500567}, + {1.8587493896484, 48.473739624023}, + {106.8921661377, -6.1365509033203}, + {2.412758, 51.023369}, + {-58.561935424805, -34.548568725586}, + {6.903859, 50.911512}, + {18.416519165039, 43.855361938477}, + {14.071426391602, 50.026931762695}, + {8.7567901611328, 50.116195678711}, + {15.311515, 44.118863}, + {31.5255, 59.192734}, + {102.30812072754, -3.8225555419922}, + {30.89698, 59.890595}, + {-104.70039367676, 38.857955932617}, + {-87.91877746582, 41.891555786133}, + {8.7567901611328, 50.116195678711}, + {-82.356753, 27.417461}, + {121.17301940918, 14.582290649414}, + {-16.009140014648, 18.080062866211}, + {-5.2933502197266, 36.287155151367}, + {110.48194885254, -7.0140838623047}, + {20.499122, 65.402298}, + {-43.873558, -19.816933}, + {-0.767678, 44.697879}, + {15.850353, 52.070904}, + {7.2722625732422, 43.716659545898}, + {8.6071014404297, 51.294479370117}, + {10.121841430664, 45.571975708008}, + {37.556534, 55.747604}, + {100.406113, 13.761406}, + {37.619247436523, 55.889511108398}, + {18.601913452148, -17.640609741211}, + {20.029358, 50.069639}, + {-0.648651, 51.509628}, + {116.36375427246, 39.988174438477}, + {-2.2624969482422, 52.989120483398}, + {14.44109, 36.911596}, + {46.364364624023, 38.080673217773}, + {12.858125, 41.600418}, + {26.737979, 60.787354}, + {12.23258972168, 58.007125854492}, + {135.470581, 34.710312}, + {19.903793334961, 50.083236694336}, + {14.455867, 50.029678}, + {-0.13252258300781, 51.438674926758}, + {-3.046813, 43.200158}, + {136.51817321777, 34.758682250977}, + {135.76286315918, 34.979782104492}, + {91.820297241211, 22.349624633789}, + {-0.49507141113281, 45.912551879883}, + {-92.048264, 46.883469}, + {137.59620666504, 34.67903137207}, + {-12.503128051758, 11.099624633789}, + {-81.227112, 33.916168}, + {55.932083129883, 54.675521850586}, + {139.651199, 35.718338}, + {7.5318145751953, 43.788070678711}, + {-98.248672485352, 18.986434936523}, + {112.686081, -7.281967}, + {-87.704861, 41.938116}, + {131.93412780762, 43.808670043945}, + {116.69883728027, -1.3478851318359}, + {-93.221682, 30.302741}, + {28.555526733398, 58.939590454102}, + {100.543362, 13.726048}, + {112.56385803223, -7.2901153564453}, + {-48.390528, -1.385585}, + {17.169951, 40.879163}, + {23.277969360352, 45.041885375977}, + {39.30290222168, 45.062484741211}, + {-1.17171, 44.40409}, + {46.726913452148, 22.304306030273}, + {18.762588500977, 59.950332641602}, + {-43.457107543945, -22.875595092773}, + {127.694092, 26.234665}, + {82.917251586914, 55.031204223633}, + {-3.338592, 40.492402}, + {-87.637252807617, 41.894302368164}, + {138.939661, 35.299135}, + {139.347349, 35.659757}, + {107.060151, -6.278107}, + {-1.7845916748047, 53.806228637695}, + {28.058224, -26.203079}, + {-43.416803, -22.808065}, + {2.399277, 47.106079}, + {-99.067153930664, 19.575576782227}, + {135.555267, 34.652939}, + {-2.203302, 53.474657}, + {0.83152770996094, 42.69905090332}, + {119.615274, -4.786028}, + {14.995651245117, 40.678939819336}, + {107.60902404785, -6.8231964111328}, + {138.14209, 36.504528}, + {23.500442504883, 51.122817993164}, + {114.13078308105, 22.36198425293}, + {18.511717, 50.057791}, + {12.294387817383, 55.767288208008}, + {114.1088104248, 22.370223999023}, + {-48.384475708008, -22.265853881836}, + {77.212601, 28.558884}, + {137.100449, 35.063472}, + {-81.932923, 27.995458}, + {0.18608093261719, 51.379623413086}, + {24.85725402832, 35.047073364258}, + {9.1399383544922, 55.748062133789}, + {9.8444366455078, 53.572769165039}, + {36.725234985352, 56.334457397461}, + {127.753124, 35.512237}, + {-0.952378, 51.116776}, + {26.930923461914, 38.940353393555}, + {34.755935668945, 32.054672241211}, + {-75.308334, 40.001196}, + {12.118607, 60.175552}, + {130.31776428223, 33.562545776367}, + {2.148788, 41.359818}, + {135.512066, 34.698257}, + {16.952590942383, 52.39860534668}, + {-81.784409, 28.049127}, + {27.171113, 38.388447}, + {30.620956420898, 50.394973754883}, + {25.706536, 66.491906}, + {106.6284942627, 10.739822387695}, + {128.510518, 35.853777}, + {37.765504, 55.753556}, + {122.45979309082, -4.0450286865234}, + {39.627914, 24.473648}, + {23.809432983398, 38.061447143555}, + {-99.832764, 16.895599}, + {-122.65892028809, 47.741775512695}, + {-99.196243286133, 19.244613647461}, + {69.280815, 41.32576}, + {-58.550917, -34.564378}, + {72.876205, 19.108658}, + {-95.438052, 29.598834}, + {37.778092, 55.719071}, + {31.227054, 30.166239}, + {113.835354, 22.686939}, + {-74.761276, 40.233307}, + {8.86621, 50.072718}, + {-74.212187, 4.710629}, + {28.690748, -26.148788}, + {23.238143920898, 41.405410766602}, + {16.576309204102, 59.696273803711}, + {-46.711807250977, -23.674850463867}, + {1.1721038818359, 43.21403503418}, + {131.0277557373, 32.963790893555}, + {-7.4164581298828, 33.651809692383}, + {28.206345, -25.753295}, + {30.586624145508, 59.741592407227}, + {3.722305, 51.71608}, + {140.224686, 35.366592}, + {16.591415405273, 49.160385131836}, + {121.02882385254, 14.580917358398}, + {-50.581741333008, -22.429275512695}, + {139.60121154785, 35.593643188477}, + {-4.320492, 55.478765}, + {-58.380978, -34.585542}, + {-4.2249298095703, 55.849685668945}, + {139.254799, 36.047173}, + {35.010681, 45.00824}, + {-58.423233032227, -34.650192260742}, + {34.93734, 32.111959}, + {107.578262, -6.937729}, + {-82.019222, 39.97851}, + {-73.104172, 7.11113}, + {27.84553527832, 38.996658325195}, + {-81.012352, 29.070945}, + {50.120315551758, 36.277542114258}, + {4.813385, 51.26152}, + {139.51332092285, 35.42610168457}, + {77.308044, 28.600159}, + {139.79484558105, 35.71174621582}, + {121.41655, 31.354294}, + {24.96711730957, 60.204391479492}, + {115.93391418457, 5.7328033447266}, + {77.287308, 28.531906}, + {4.547085, 51.863394}, + {-80.871054, 36.578296}, + {5.210037, 50.27942}, + {10.158920288086, 51.408462524414}, + {-92.701950073242, 17.801284790039}, + {11.70928, 45.479365}, + {21.32926940918, 43.586196899414}, + {77.002487182617, 29.693984985352}, + {-6.1695098876953, 40.512771606445}, + {30.841562, 50.582631}, + {105.86357116699, 20.293807983398}, + {10.395126, 55.391006}, + {9.054108, 51.111832}, + {-80.137837, 26.114466}, + {2.179255, 48.680939}, + {-84.099655151367, 9.9941253662109}, + {136.90132141113, 35.139083862305}, + {-3.9131927490234, 47.855758666992}, + {7.192268, 51.285553}, + {-87.635515, 41.908618}, + {24.869614, 60.634232}, + {21.14387512207, 43.448867797852}, + {-99.139938354492, 19.379196166992}, + {-4.295009, 55.865785}, + {-88.727645874023, 43.087692260742}, + {-4.095384, 38.710413}, + {46.044387817383, 51.398849487305}, + {10.005111694336, 48.417434692383}, + {-0.104142, 39.836655}, + {47.97248840332, 29.276504516602}, + {135.79719543457, 34.902877807617}, + {-70.421951, 19.762894}, + {77.038192749023, 11.052932739258}, + {-82.609291, 28.048782}, + {135.81092834473, 34.685897827148}, + {85.300609, 27.706884}, + {121.28425598145, 13.11149597168}, + {135.50743103027, 34.463424682617}, + {144.9405670166, -37.757949829102}, + {-75.366672, 40.291164}, + {51.46392, 25.197087}, + {6.8712615966797, 36.877670288086}, + {136.9068145752, 35.196762084961}, + {18.53874206543, -33.98551940918}, + {-73.756796, 45.410993}, + {13.207626342773, 45.832901000977}, + {79.084396362305, 21.134262084961}, + {118.419571, 24.438675}, + {-97.223257, 49.877752}, + {1.6719818115234, 41.586685180664}, + {27.962265014648, -26.174240112305}, + {101.698246, 3.175868}, + {130.72563171387, 31.726455688477}, + {37.508010864258, 55.768661499023}, + {1.3520050048828, 41.63200378418}, + {39.260697, 51.795364}, + {0.688524, 47.393741}, + {5.1052093505859, 44.616165161133}, + {80.619736, 16.297531}, + {-97.48384, 32.844498}, + {-2.3627471923828, 53.546676635742}, + {8.707352, 52.393112}, + {-55.075847, 47.245333}, + {14.785537719727, 57.677536010742}, + {-2.9972076416016, 51.592483520508}, + {-118.172255, 34.004786}, + {30.567856, 50.398178}, + {25.456008911133, 54.87190246582}, + {-82.731928, 29.709735}, + {13.90251159668, 57.971420288086}, + {32.42546081543, 15.625991821289}, + {6.166469, 51.396103}, + {140.94738, 38.253708}, + {22.23014831543, 45.438766479492}, + {114.232414, 22.354712}, + {34.95231628418, 31.825332641602}, + {-76.899472, 38.847276}, + {-3.5190582275391, 48.806076049805}, + {-100.37590026855, 25.686721801758}, + {-87.51091003418, 30.283126831055}, + {39.863205, 47.322769}, + {37.659271, 44.828044}, + {51.537551879883, 25.258255004883}, + {37.703018, 55.785599}, + {72.815322875977, 18.987808227539}, + {77.011373, 28.623626}, + {-105.148773, 39.811707}, + {1.8917083740234, 45.330276489258}, + {10.835952758789, 53.692245483398}, + {-92.436476, 34.64427}, + {36.425857543945, 56.268539428711}, + {2.403081, 48.773685}, + {-71.041030883789, 46.862869262695}, + {117.160094, -0.430152}, + {110.211868, -7.603226}, + {-77.985764, 34.212309}, + {22.542572, 47.685471}, + {10.669784, 34.828034}, + {29.754409790039, 62.599411010742}, + {0.91392517089844, 42.705917358398}, + {-111.92939758301, 33.56803894043}, + {-84.201279, 9.996109}, + {-78.800642, 42.886744}, + {-5.0379180908203, 50.445785522461}, + {-102.293015, 21.881332}, + {-76.659714, 39.35289}, + {-0.22727966308594, 46.261367797852}, + {68.366776, 25.374985}, + {3.134538, 51.166077}, + {136.591644, 34.930344}, + {13.647079467773, 57.286148071289}, + {-79.924628, -2.091689}, + {-87.882986, 41.90413}, + {33.776779174805, 41.542739868164}, + {-100.431656, 25.687271}, + {-4.3498992919922, 42.013778686523}, + {15.012819, 41.969491}, + {135.54039, 34.69708}, + {-84.05365, 9.906921}, + {-104.88441467285, 39.230117797852}, + {-79.511489868164, 43.594436645508}, + {101.443222, 1.674728}, + {-122.90061950684, 49.172744750977}, + {114.92454528809, 4.9005889892578}, + {-66.070032, -17.417055}, + {139.47074890137, 35.405502319336}, + {77.238693237305, 28.569259643555}, + {5.3290557861328, 52.254409790039}, + {4.0354156494141, 50.841293334961}, + {88.475784, 22.406845}, + {80.194359, 12.901726}, + {21.000445, 51.584998}, + {5.4073333740234, 46.047134399414}, + {51.426315, 35.581741}, + {87.556228637695, 22.357864379883}, + {139.77684, 35.708969}, + {-2.7513885498047, 43.212661743164}, + {-93.726425, 32.449722}, + {15.37468, -4.391098}, + {79.061050415039, 21.138381958008}, + {19.676899, 45.458107}, + {139.69871520996, 35.691146850586}, + {41.025009155273, 56.963424682617}, + {1.0897064208984, 43.458480834961}, + {98.602916, 12.444077}, + {25.95424, 47.58165}, + {-96.67184, 32.803448}, + {18.044357299805, 39.938735961914}, + {106.847189, -6.273074}, + {-0.149002, 51.60244}, + {-46.555099, -23.526535}, + {-74.428253, 40.67894}, + {-2.7774810791016, 43.208541870117}, + {-69.301071166992, 47.70881652832}, + {110.44898986816, -7.7007293701172}, + {113.5457611084, 37.311630249023}, + {139.795944, 35.683182}, + {140.210757, 36.14502}, + {4.652939, 52.011795}, + {32.919845581055, 39.885177612305}, + {98.703231811523, 19.134750366211}, + {8.2637786865234, 63.071823120117}, + {120.1868, 23.120237}, + {23.269729614258, 45.891952514648}, + {104.09202575684, 1.1913299560547}, + {79.668045043945, 18.654098510742}, + {-96.854782104492, 40.821762084961}, + {9.2937469482422, 44.357986450195}, + {-86.778945922852, 21.071090698242}, + {-60.422744750977, -37.032852172852}, + {28.038253, 36.102219}, + {21.37001, 46.176224}, + {-105.18379211426, 40.42350769043}, + {-46.767589, -23.68432}, + {-3.819123, 39.92775}, + {7.3162078857422, 48.771743774414}, + {9.8870086669922, 55.864791870117}, + {-99.649429321289, 16.695785522461}, + {-1.9699859619141, 52.479629516602}, + {17.928314, 40.260086}, + {45.352936, 25.902672}, + {-87.64274597168, 41.689682006836}, + {8.4917449951172, 47.413558959961}, + {37.02899, 56.141796}, + {21.338146, 42.007328}, + {15.752884, 60.342819}, + {-71.630173, -33.046188}, + {2.210587, 46.991136}, + {21.904678344727, 61.412887573242}, + {101.665519, 3.002799}, + {28.692856, 41.059341}, + {11.820602416992, 44.623031616211}, + {139.726948, 35.833727}, + {2.199561, 41.587156}, + {7.745263, 48.601652}, + {28.28498840332, 61.960830688477}, + {10.962257, 44.226623}, + {120.64244, 23.770983}, + {15.712509155273, 47.096328735352}, + {106.86496, -6.678351}, + {-6.294823, 36.530228}, + {139.63279724121, 35.695266723633}, + {41.115646362305, 55.613479614258}, + {-58.566055297852, -34.51286315918}, + {-88.103683, 42.329462}, + {-8.6222076416016, 40.320510864258}, + {-43.194008, -22.91954}, + {-76.547359, 3.363757}, + {120.79948425293, 1.0169219970703}, + {-52.730255, 47.563248}, + {-5.690312, 54.646198}, + {-43.186345, -22.913161}, + {-71.071793, 41.96489}, + {77.014846801758, 28.999099731445}, + {-90.034561, 36.238632}, + {30.613663, 50.045691}, + {-44.504928588867, -19.912033081055}, + {83.30451965332, 17.729873657227}, + {-85.244168, 33.940014}, + {-73.642044067383, 41.202163696289}, + {-72.152273, -36.615247}, + {7.025897, 49.151614}, + {-65.049362182617, -43.341751098633}, + {-99.226456, 19.680634}, + {6.883132, 50.974155}, + {17.965174, 52.423626}, + {19.644713, 47.42586}, + {32.788009643555, 38.003768920898}, + {3.730468, 51.472432}, + {-80.950927, 35.785523}, + {-94.357922, 36.089106}, + {37.348709106445, 46.904067993164}, + {6.2725067138672, 51.389236450195}, + {10.312185, 44.576127}, + {57.063674926758, 30.26252746582}, + {27.903213500977, 39.639358520508}, + {-0.0089263916015625, 51.346664428711}, + {55.128707885742, 25.048141479492}, + {120.94779968262, 31.354293823242}, + {28.963713, -25.949472}, + {-84.268569946289, 39.216384887695}, + {15.78804, 39.652405}, + {-35.625228881836, -9.5450592041016}, + {-5.654474, 43.53126}, + {107.7889251709, 26.509323120117}, + {24.759064, 59.420242}, + {31.552963, 31.439438}, + {-0.53764343261719, 44.870223999023}, + {122.51197814941, -3.9873504638672}, + {77.673477, 12.91539}, + {16.742477416992, 53.151168823242}, + {133.90205383301, 34.632339477539}, + {121.08512878418, 22.720413208008}, + {19.27161, 52.047049}, + {112.677498, -7.368736}, + {-40.306777954102, -5.4004669189453}, + {-86.254477, 39.908472}, + {-4.3018341064453, 36.715621948242}, + {39.148436, 21.678688}, + {110.367167, -7.818813}, + {135.549088, 34.540329}, + {-1.2654876708984, 39.778060913086}, + {39.697036743164, 47.24739074707}, + {29.750289916992, 62.617263793945}, + {120.69374084473, 24.155502319336}, + {75.582504272461, 31.344680786133}, + {-117.054045, 32.567961}, + {11.970291137695, 55.565414428711}, + {43.665848, -23.35144}, + {101.554642, 3.06633}, + {137.84065246582, 36.196517944336}, + {23.212051391602, 61.629867553711}, + {73.915787, 18.591385}, + {35.024757, -15.78186}, + {14.249954, 40.845108}, + {-79.473106, -7.249245}, + {-1.794204, 53.711128}, + {-5.9635162353516, 34.267044067383}, + {16.355208, 53.592}, + {14.336471557617, 49.67399597168}, + {-16.316757202148, 28.486862182617}, + {11.49787902832, 48.167495727539}, + {-75.753284, 4.510824}, + {13.669837, 43.27858}, + {-93.666317, 32.175102}, + {15.208856, 37.047615}, + {-74.064331, 4.64241}, + {33.340072631836, 14.767684936523}, + {136.74339294434, 35.335464477539}, + {10.970568, 46.085938}, + {28.676376342773, 41.00715637207}, + {-75.212984, 40.144307}, + {1.4769744873047, 43.58757019043}, + {-69.103317260742, -16.249465942383}, + {-112.274381, 50.717217}, + {10.734329223633, 47.229537963867}, + {-7.088928, 33.837204}, + {-85.685308, 38.155639}, + {-1.2751007080078, 51.451034545898}, + {-43.297027, -22.764874}, + {-84.46907, 33.585617}, + {-86.750106811523, 21.130142211914}, + {121.92008972168, 30.905227661133}, + {-51.150759, -29.922941}, + {-47.954635620117, -15.853958129883}, + {51.359573, 35.698837}, + {100.2974, 5.331016}, + {-99.052048, 19.548386}, + {-88.222275, 42.4086}, + {29.079127, 37.79989}, + {-0.972977, 53.273849}, + {-1.142942, 53.505641}, + {24.870987, 60.274626}, + {-45.01201, -12.145027}, + {-3.435874, 53.314532}, + {-0.48271179199219, 39.367446899414}, + {112.29057312012, -7.6499176025391}, + {9.9488067626953, 36.833724975586}, + {2.3957061767578, 48.638534545898}, + {-83.518753051758, 34.73258972168}, + {72.521439, 23.061447}, + {102.82997131348, 37.25944519043}, + {103.82423400879, 36.06330871582}, + {-104.60975646973, 23.992080688477}, + {121.43531799316, 31.219711303711}, + {-55.195999145508, 47.101821899414}, + {36.999893188477, -0.89744567871094}, + {114.14176940918, 22.289199829102}, + {-80.359039, 41.09436}, + {-3.1606292724609, 51.545791625977}, + {-0.20668, 5.590439}, + {-105.01075744629, 39.900283813477}, + {9.513822, 42.294961}, + {101.739586, 3.13472}, + {72.831802368164, 18.971328735352}, + {139.53186, 35.400696}, + {30.520706176758, 50.44303894043}, + {25.970993041992, 45.330276489258}, + {39.095539, 44.990388}, + {115.168368, -8.625056}, + {32.870407104492, 39.86457824707}, + {-88.902743, 34.543076}, + {114.18983459473, 22.458114624023}, + {139.27574157715, 35.386276245117}, + {18.411906, 47.575011}, + {36.195831, 34.049378}, + {105.31288146973, -5.4444122314453}, + {5.3139495849609, 59.770431518555}, + {1.207809, 6.198349}, + {-0.158577, 52.017235}, + {126.777592, 37.679844}, + {136.739273, 35.189271}, + {11.27815246582, 46.111679077148}, + {78.541946411133, 17.457962036133}, + {46.650696, 24.526291}, + {127.321224, 36.31401}, + {-117.071588, 32.634986}, + {72.888107299805, 21.245498657227}, + {22.997817993164, -27.379989624023}, + {3.2279205322266, 51.206588745117}, + {-1.144281, 51.87424}, + {2.6195526123047, 46.375350952148}, + {-1.83815, 53.771439}, + {51.503219604492, 25.277481079102}, + {51.28067, 35.752945}, + {76.509475708008, 28.420944213867}, + {20.40854, 44.818188}, + {12.433090209961, 46.552505493164}, + {37.398167, 55.916678}, + {135.50605773926, 34.676284790039}, + {-1.288834, 53.826141}, + {7.467858, 10.528336}, + {4.281235, 51.476441}, + {-79.569721, 43.643458}, + {15.785293579102, 60.017623901367}, + {121.045303, 14.389114}, + {19.832382202148, 43.852615356445}, + {135.8521270752, 35.034713745117}, + {-88.049240112305, 42.03987121582}, + {-61.526204, 10.665732}, + {-86.285934448242, 12.147445678711}, + {-85.832657, 38.448349}, + {3.1537628173828, 45.897445678711}, + {51.385117, 35.750198}, + {28.853577, 41.011722}, + {-38.548965454102, -3.7113189697266}, + {-79.533462524414, 8.9723968505859}, + {140.14503479004, -2.5138092041016}, + {115.172641, -8.648211}, + {125.63209533691, 7.1239471435547}, + {-97.572504, 35.525502}, + {140.73417663574, 40.827255249023}, + {13.478554, 52.328778}, + {132.078323, 43.354111}, + {92.874984741211, 56.019973754883}, + {-90.360218, 38.663941}, + {19.924392700195, 50.061264038086}, + {28.939317, -24.432224}, + {87.298737, 23.560867}, + {140.65040588379, 41.825637817383}, + {50.903091430664, 35.86555480957}, + {37.510414, 55.831146}, + {135.48957824707, 34.696884155273}, + {-121.79100036621, 39.706649780273}, + {8.969731, 50.581278}, + {114.949539, 4.925034}, + {76.880264282227, 43.219528198242}, + {10.985942, 48.361167}, + {141.529312, 40.507965}, + {74.374466, 32.477646}, + {3.18977, 47.980482}, + {-1.4591217041016, 46.203689575195}, + {121.769485, 24.820175}, + {101.738675, 3.102132}, + {106.71501159668, 26.586227416992}, + {33.634644, 34.906311}, + {77.565536499023, 11.017227172852}, + {37.553941, 55.730499}, + {22.363357, 51.026001}, + {98.733445, 7.687913}, + {137.400169, 34.765892}, + {22.521286010742, 51.265640258789}, + {98.715591430664, 7.7021026611328}, + {139.344498, 35.920122}, + {137.08946228027, -4.1342926025391}, + {6.6968536376953, 51.405715942383}, + {-77.03064, -12.019959}, + {130.719223, 32.745438}, + {27.027053833008, 55.678024291992}, + {-71.325127, 46.746373}, + {-99.208602905273, 19.554977416992}, + {-70.650062, -33.448083}, + {19.903793334961, 49.440536499023}, + {-70.258255004883, -33.36067199707}, + {58.56330871582, 23.618545532227}, + {139.50508117676, 35.336837768555}, + {-2.492868, 47.355881}, + {137.14164733887, 34.941329956055}, + {6.3590240478516, 50.765762329102}, + {56.259503, 57.968943}, + {2.348504, 48.543972}, + {43.970718383789, 53.16764831543}, + {99.963198, 1.733932}, + {103.852872, 1.321876}, + {114.159901, 22.341195}, + {9.905759, 49.354455}, + {-49.251022338867, -25.508193969727}, + {-76.883010864258, -12.258682250977}, + {-81.008377075195, 29.22981262207}, + {10.283203, 61.368942}, + {39.160061, 21.614638}, + {-3.543064, 50.712134}, + {4.3073272705078, 50.628433227539}, + {7.9904937744141, 51.950912475586}, + {-78.370972, -0.192261}, + {10.226211547852, 59.130477905273}, + {-6.761398, 38.879929}, + {35.073314, 32.504717}, + {-96.889489, 32.863915}, + {39.79866027832, 57.34245300293}, + {10.448684692383, 43.726272583008}, + {137.932968, 36.167603}, + {6.7229461669922, 51.538925170898}, + {-4.266952, 51.952011}, + {-73.986923, 41.148514}, + {8.876724, 9.890213}, + {-122.95291, 45.306676}, + {48.352890014648, 33.495254516602}, + {-71.737039, 10.42072}, + {-97.463150024414, 30.46989440918}, + {121.39686584473, 31.249923706055}, + {-80.354561, 27.448829}, + {-103.37104797363, 20.685195922852}, + {10.160359, 54.317285}, + {120.93269348145, 30.93132019043}, + {-73.047958, -36.768631}, + {-104.86518859863, 40.41389465332}, + {14.56169128418, 53.447799682617}, + {-99.063034, 19.424515}, + {77.146682739258, 9.8485565185547}, + {5.174661, 45.658614}, + {-43.42414855957, -22.981338500977}, + {151.19041442871, -33.871536254883}, + {49.134292602539, 55.820846557617}, + {9.662037, 47.414964}, + {54.453049, 24.547714}, + {109.24186706543, 13.772048950195}, + {130.78537, 32.814789}, + {7.144402, 46.141892}, + {100.40748596191, 13.899765014648}, + {4.251537, 52.064037}, + {120.151978, 30.39093}, + {-80.324478149414, 25.896835327148}, + {-43.38020324707, -23.000564575195}, + {-73.827454, 40.770375}, + {153.030658, -27.431427}, + {39.772567749023, 21.465225219727}, + {39.846268, 21.454697}, + {-1.6184234619141, 43.384323120117}, + {130.70915222168, 32.583389282227}, + {30.191116333008, 59.82536315918}, + {117.34153747559, 39.037857055664}, + {77.378082, 8.705292}, + {-117.11105, 33.167935}, + {16.259078979492, 38.96369934082}, + {139.70832824707, 35.762557983398}, + {-58.409295, -34.840516}, + {13.296547, 38.187447}, + {130.70777893066, 32.936325073242}, + {30.397797, 50.358582}, + {-78.51872, -0.239187}, + {-86.070877, 39.360306}, + {121.062493, 30.039234}, + {-9.240189, 38.643723}, + {140.70533752441, -2.5371551513672}, + {76.690063, 66.08757}, + {39.935989379883, 21.345748901367}, + {2.9889678955078, 42.773208618164}, + {77.060165405273, 10.087509155273}, + {30.617866, 50.436516}, + {-80.328598022461, 26.108322143555}, + {-1.383011, 54.815358}, + {35.226974487305, 32.97477722168}, + {25.484848022461, -10.712356567383}, + {139.149055, 36.256943}, + {-2.178268, 57.228012}, + {75.89973449707, 19.852981567383}, + {-86.702083, 36.140629}, + {56.297378540039, 57.923355102539}, + {3.14827, 45.906372}, + {18.609926, 54.348985}, + {37.915878295898, 55.67253112793}, + {37.307510375977, 55.945816040039}, + {-99.018663, 19.420496}, + {-4.066588, 40.729614}, + {60.598526, 56.783524}, + {5.3400421142578, 36.078414916992}, + {10.605844, 55.057539}, + {-117.751328, 34.095383}, + {-81.417142, 28.652046}, + {27.839356, 62.32338}, + {-76.78791, 18.056717}, + {148.620146, -20.324685}, + {29.064331, 40.183182}, + {-74.482498168945, 41.093673706055}, + {139.742935, 35.714493}, + {-1.4316558837891, 53.394241333008}, + {-75.461262, 40.064098}, + {-0.020319, 51.471689}, + {77.0224, 11.021347}, + {79.059677124023, 21.137008666992}, + {95.136795043945, 27.473373413086}, + {-76.488171, 44.244529}, + {17.337799, 40.35965}, + {-86.833886, 15.797655}, + {-89.336838, 40.18428}, + {3.812027, 43.568344}, + {101.671285, 3.168974}, + {-123.461593, 48.570265}, + {21.193313598633, 45.626907348633}, + {43.672028, -23.356247}, + {18.32112, 54.607168}, + {139.687729, 35.256271}, + {39.180679321289, 51.710586547852}, + {2.427929, 48.636758}, + {11.368458, 53.769497}, + {-4.168625, 50.409393}, + {114.56337, -3.326111}, + {-113.223862, 54.146896}, + {103.806381, 1.293869}, + {22.936019897461, 54.072647094727}, + {18.608322, -34.010696}, + {24.817401, 42.169668}, + {14.597396850586, 53.472518920898}, + {18.708686, 50.163002}, + {-0.660945, 39.98582}, + {80.421981811523, 16.296157836914}, + {106.74522399902, 10.857925415039}, + {141.39418, 43.079178}, + {30.298233032227, 59.92561340332}, + {98.611221313477, 3.5973358154297}, + {9.73519, 47.499286}, + {-52.396553, -28.245385}, + {-82.566378, 33.475342}, + {9.3898773193359, 47.458877563477}, + {-64.214786, -31.431282}, + {107.614414, -6.908867}, + {69.406814575195, 53.276138305664}, + {28.622817993164, 41.079940795898}, + {14.59422, 45.258289}, + {37.877083, 40.984154}, + {2.3160552978516, 48.840408325195}, + {120.32707214355, 22.642135620117}, + {140.629807, 36.514091}, + {-8.149796, 31.624832}, + {100.890935, 12.697402}, + {-122.595857, 45.231129}, + {4.7220611572266, 50.004959106445}, + {80.187149, 12.966614}, + {60.543594360352, 56.780776977539}, + {17.83561706543, 40.400161743164}, + {16.51454, 43.596303}, + {-80.310059, 25.84053}, + {28.717575073242, -26.18522644043}, + {-0.860863, 51.428108}, + {3.5355377197266, 49.506454467773}, + {19.876205, 49.490967}, + {30.352478, 59.943123}, + {8.465849, 45.12291}, + {137.398453, 34.733276}, + {-3.605729, 37.170168}, + {23.567733764648, 42.300796508789}, + {-70.586471557617, -33.557052612305}, + {-121.496617, 38.580676}, + {-1.23916, 52.53853}, + {-58.523483, -34.477844}, + {31.368026733398, 30.056533813477}, + {39.852905, 21.393814}, + {5.4183197021484, 43.520278930664}, + {21.491514, 61.231515}, + {8.7787628173828, 36.500015258789}, + {-122.85118, 44.82981}, + {28.53630065918, 43.821029663086}, + {47.494583129883, 25.118179321289}, + {-2.842711, 50.950661}, + {138.959495, 36.500452}, + {11.249313, 43.772866}, + {32.468278, 37.886573}, + {-66.85661315918, 10.513229370117}, + {-73.74641418457, 41.022262573242}, + {10.749092, 44.658051}, + {-6.6254425048828, 32.245559692383}, + {-84.412079, 33.861466}, + {-73.723068237305, 40.651473999023}, + {-0.013733, 5.742416}, + {125.655441, 7.172928}, + {139.7811126709, 35.899887084961}, + {18.752288, 45.510993}, + {135.52116394043, 34.676284790039}, + {-99.163284301758, 19.414901733398}, + {30.356369, 59.840012}, + {-82.192153930664, 29.210586547852}, + {86.148262, 55.344229}, + {-43.122872, -22.892583}, + {-78.822397, 35.62779}, + {12.472825, 55.898346}, + {79.092636108398, 13.217239379883}, + {39.86457824707, 21.400680541992}, + {-121.89949035645, 37.701644897461}, + {-110.78956604004, 32.215347290039}, + {-79.600067, -0.031586}, + {119.30946350098, 25.462875366211}, + {151.048525, -33.847959}, + {40.812836, 47.521362}, + {40.310898, 47.217865}, + {-87.945385, 42.108021}, + {101.643877, 3.100128}, + {-8.800433, 53.258294}, + {7.839089, 45.474815}, + {-84.49482, 39.095879}, + {111.87171936035, 29.61296081543}, + {113.1681060791, 23.479843139648}, + {73.029556274414, 26.267623901367}, + {121.43394470215, 24.860000610352}, + {139.748497, 35.607719}, + {98.961410522461, 3.5671234130859}, + {140.88523864746, 38.167190551758}, + {38.156204223633, 55.03532409668}, + {106.78092956543, -6.3040924072266}, + {30.830383, -29.829941}, + {139.62867736816, 35.450820922852}, + {10.819473, 59.929047}, + {-43.403549194336, -23.014297485352}, + {106.493088, 29.611862}, + {-118.35639953613, 33.933334350586}, + {2.3448944091797, 48.88298034668}, + {123.730545, 13.351822}, + {105.7852935791, 21.029891967773}, + {127.083196, 37.390874}, + {26.032791137695, 44.964981079102}, + {73.265762329102, 23.762741088867}, + {18.25309753418, 40.154342651367}, + {15.046463012695, 41.940994262695}, + {139.16175842285, 35.048446655273}, + {8.9325714111328, 38.932113647461}, + {-122.02308654785, 47.69645690918}, + {-78.616606, -9.026251}, + {-122.56004333496, 47.197952270508}, + {153.112223, -27.665733}, + {8.4134674072266, 50.551528930664}, + {112.692795, -7.277756}, + {8.6125946044922, 39.540481567383}, + {100.2742767334, 13.578414916992}, + {35.06218, 48.487015}, + {-47.946487, -15.840683}, + {-1.5552520751953, 12.374038696289}, + {-90.679779, 38.774643}, + {20.04524230957, 50.011825561523}, + {28.267135620117, -25.832290649414}, + {-46.638737, -23.546429}, + {95.417503, 5.518115}, + {-7.5908660888672, 53.386001586914}, + {-1.664112, 55.494156}, + {-3.6605072021484, 6.1832427978516}, + {-80.63298, 27.550233}, + {9.4324493408203, 42.086563110352}, + {9.3239593505859, 52.255783081055}, + {-13.66081237793, 9.5766448974609}, + {17.961966, 59.764083}, + {3.7799835205078, 43.53401184082}, + {-79.755951, 43.420957}, + {-89.445877, 40.716705}, + {-88.15979, 42.373753}, + {73.345054, 55.026161}, + {120.90660095215, 32.024459838867}, + {37.919998, 56.280212}, + {83.67805480957, 53.379135131836}, + {-6.616122, 42.551992}, + {10.805054, 44.786453}, + {-81.21171, 35.643425}, + {121.54395, 25.059617}, + {101.41822814941, 0.47172546386719}, + {-73.491898, 41.15181}, + {-7.0360565185547, 53.879013061523}, + {-43.417282104492, -22.864608764648}, + {-75.948223, 39.703783}, + {79.749069213867, 52.799606323242}, + {-99.897308, 21.753616}, + {138.440239, 35.31772}, + {73.679712, 24.577299}, + {80.418892, 16.31813}, + {121.604233, 29.994736}, + {141.62544250488, 42.837753295898}, + {37.426986694336, 54.873275756836}, + {115.203794, -8.668475}, + {11.052932739258, 35.509872436523}, + {-3.884452, 40.312173}, + {128.24684143066, 36.083908081055}, + {15.577926635742, 54.175643920898}, + {77.207565, 28.567886}, + {11.110610961914, 59.174423217773}, + {4.1040802001953, 43.980331420898}, + {39.29328918457, 51.716079711914}, + {144.96528625488, -37.734603881836}, + {-80.312119, 25.760867}, + {7.298493, 46.499628}, + {73.68049621582, 18.73649597168}, + {36.075335, 32.073071}, + {139.628677, 35.331802}, + {-1.8999481201172, 52.626571655273}, + {25.580978393555, 41.946487426758}, + {18.829157, 47.338148}, + {0.44425964355469, 45.611801147461}, + {9.794998, 37.156448}, + {106.969612, -6.193526}, + {135.81642150879, 34.514236450195}, + {26.239479, 50.631536}, + {9.6123504638672, 44.91828918457}, + {-66.155891, 18.360901}, + {1.943344, 41.584763}, + {111.887512, 2.295456}, + {23.277969360352, 45.025405883789}, + {139.731216, 35.933762}, + {-2.745895, 48.163376}, + {16.659164, 50.383988}, + {-43.82926940918, -22.883834838867}, + {27.967456, 49.077677}, + {106.65905, 10.758705}, + {-96.678549, 32.757005}, + {-3.8005828857422, 47.788467407227}, + {33.610610961914, 40.602035522461}, + {-48.221054077148, -18.926010131836}, + {5.226657, 51.325786}, + {-121.306757, 37.977676}, + {5.323562, 50.481216}, + {10.068164, 52.599345}, + {-79.84343, -6.785221}, + {101.381836, 14.658508}, + {-114.226227, 51.132431}, + {12.187271118164, 43.707046508789}, + {-80.272292, 44.456864}, + {77.553367, 12.914195}, + {76.600112915039, 12.338333129883}, + {39.97444152832, 47.439651489258}, + {27.954025268555, -26.330795288086}, + {40.139236450195, 50.462265014648}, + {151.61201477051, -33.138198852539}, + {-3.6591339111328, 40.419387817383}, + {29.97551, 60.042801}, + {5.1189422607422, 51.625442504883}, + {55.093002319336, 51.766891479492}, + {-74.447258, 45.159535}, + {11.702499389648, 50.10383605957}, + {-3.599776, 37.17605}, + {-118.371727, 34.090742}, + {15.15564, 40.301972}, + {11.613235473633, 50.040664672852}, + {51.530685424805, 25.326919555664}, + {34.741071, 31.912591}, + {-72.676982, 41.608893}, + {20.637130737305, 43.463973999023}, + {24.887466430664, 48.716812133789}, + {20.642626, 44.605179}, + {3.2265472412109, 51.227188110352}, + {139.82780456543, 35.894393920898}, + {-1.7145538330078, 55.03532409668}, + {36.33659362793, 41.290054321289}, + {31.096573, 30.955276}, + {138.24851989746, 36.300888061523}, + {18.132705, 50.33844}, + {-46.810488, -23.430928}, + {-97.914033, 36.391245}, + {8.6606597900391, 44.396438598633}, + {100.97465515137, 13.350448608398}, + {139.700089, 35.643879}, + {43.957605, 56.256269}, + {-54.3541, -28.031833}, + {121.494298, 24.993838}, + {101.63932800293, 3.2155609130859}, + {-122.750702, 45.466232}, + {92.883224487305, 55.974655151367}, + {-63.181282, -17.801421}, + {139.616533, 35.199101}, + {103.824921, 30.129318}, + {-103.43696594238, 20.631637573242}, + {-89.241256713867, 15.370559692383}, + {130.397417, 33.644945}, + {-118.65852355957, 39.419631958008}, + {-46.583405, -23.538895}, + {78.555679321289, 29.249038696289}, + {-84.769283, 34.242055}, + {16.995773, 51.062241}, + {103.777497, 1.305154}, + {-1.807239, 37.21816}, + {8.433151, 39.894791}, + {72.545128, 22.999535}, + {-1.755581, 53.788548}, + {55.441818237305, 25.244522094727}, + {-3.3158111572266, 50.931930541992}, + {104.92836, 11.569415}, + {44.546127319336, 41.921768188477}, + {135.653458, 34.760056}, + {40.017013549805, 47.647018432617}, + {108.82026672363, 11.32209777832}, + {-58.449201, -34.793015}, + {44.028396606445, 26.240158081055}, + {3.23775, 6.457756}, + {140.39497375488, 36.108627319336}, + {79.025344848633, 9.3019866943359}, + {-79.72952, 36.152007}, + {2.056503, 46.671524}, + {79.865798950195, 6.9001007080078}, + {32.620218, 0.316044}, + {32.593002319336, 0.38795471191406}, + {135.12153625488, 34.716110229492}, + {18.509902954102, 54.527206420898}, + {-51.16539, -29.800873}, + {30.464745, 50.482864}, + {120.2954864502, 22.684707641602}, + {109.164963, 12.187958}, + {-78.444443, 36.933289}, + {-54.157749, 48.714539}, + {133.49967956543, 33.543319702148}, + {135.485353, 34.677975}, + {105.23872375488, 10.071029663086}, + {23.580093, 44.513168}, + {47.324295, 24.160309}, + {4.075944, 46.057442}, + {0.247429, 49.457023}, + {79.061050415039, 21.138381958008}, + {-83.557205, 10.124588}, + {27.119932, -26.707063}, + {17.816390991211, 59.372177124023}, + {-79.747695922852, 8.8941192626953}, + {10.691757202148, 59.396896362305}, + {9.7112274169922, 4.0587615966797}, + {37.483291625977, 47.155380249023}, + {7.726814, 45.627618}, + {9.502487, 52.405472}, + {30.390249, 60.006181}, + {140.50346374512, 38.13835144043}, + {-0.771664, 51.413007}, + {29.236679077148, 40.889053344727}, + {12.38942, 42.463943}, + {8.544159, 49.719543}, + {27.546157836914, 45.857620239258}, + {-81.254196, 44.13826}, + {144.951849, -37.811631}, + {5.521883, 45.350197}, + {35.51105, 56.462173}, + {130.418015, 33.619194}, + {103.130218, 3.723438}, + {5.4567718505859, 45.523910522461}, + {30.471267700195, 50.489730834961}, + {18.632337, 54.325227}, + {16.460255, 41.02091}, + {-81.549454, 28.374023}, + {135.61866760254, 34.172286987305}, + {23.886337280273, 37.95295715332}, + {-0.525376, 51.491339}, + {12.340715, 45.909103}, + {16.308517456055, 48.204574584961}, + {139.118843, 35.811996}, + {176.223264, -38.132903}, + {139.57511901855, 35.575790405273}, + {-81.641147, 28.094893}, + {78.286514282227, 12.569046020508}, + {99.106195, 3.481587}, + {-118.398383, 34.201126}, + {49.778366088867, 40.341110229492}, + {80.222854614258, 13.12385559082}, + {120.36140441895, 22.62565612793}, + {98.660797, 3.684737}, + {-58.593858, -35.064059}, + {-103.293457, 20.66288}, + {76.790657, 9.555359}, + {81.883163452148, 25.446395874023}, + {141.440735, 43.058853}, + {55.745865, 24.243118}, + {86.918335, 22.263794}, + {-82.56706237793, 35.55793762207}, + {21.939010620117, 49.768753051758}, + {18.743362426758, -33.883895874023}, + {77.103995, 12.15308}, + {38.882837, 44.197311}, + {17.858281, 40.290301}, + {29.121322631836, 40.983810424805}, + {106.51039123535, 10.664291381836}, + {11.100746, 46.137636}, + {75.828323364258, 26.77848815918}, + {100.72196960449, 13.675918579102}, + {13.707504272461, 43.315658569336}, + {77.358169555664, 11.109237670898}, + {36.213978, 49.988087}, + {6.1489105224609, 46.198196411133}, + {-4.1590118408203, 40.614395141602}, + {77.578021, 13.070422}, + {77.212600708008, 11.154556274414}, + {139.654598, 35.630722}, + {9.5134735107422, 57.199630737305}, + {140.3084564209, 37.210006713867}, + {39.633865, 54.636383}, + {24.261246, 65.837631}, + {-58.368301391602, -34.676284790039}, + {121.532135, 25.064621}, + {101.611678, 3.134129}, + {30.279006958008, 59.900894165039}, + {30.27832, 59.909134}, + {23.361294, 42.697672}, + {30.292739868164, 59.931106567383}, + {11.077137, 49.451695}, + {-0.0061798095703125, 43.053359985352}, + {-73.99772644043, 40.595169067383}, + {-58.42745, -34.592619}, + {39.716262817383, 43.59992980957}, + {24.749642, 42.14594}, + {27.925109, -32.988979}, + {100.90539, 12.932203}, + {-122.66304016113, 47.756881713867}, + {-101.869954, 32.72165}, + {140.49247741699, 40.581436157227}, + {-8.6675262451172, 40.766830444336}, + {8.9559173583984, 41.568832397461}, + {35.637588500977, 33.889389038086}, + {38.499526977539, 59.236221313477}, + {7.220408, 46.020383}, + {73.525314331055, 18.74885559082}, + {17.570945, 53.697724}, + {2.204098, 48.837954}, + {22.341384887695, 48.649520874023}, + {135.7642364502, 34.97428894043}, + {33.521347045898, 44.574966430664}, + {-46.900712, -23.536792}, + {18.150599, 47.206131}, + {16.241061, 46.885556}, + {-2.4039459228516, 53.303604125977}, + {76.655044555664, 30.714340209961}, + {139.782143, 35.907784}, + {10.774154663086, 49.167251586914}, + {-121.275975, 38.736551}, + {9.675247, 45.715622}, + {-111.912236, 40.845796}, + {7.486496, 6.433182}, + {14.856949, 38.146591}, + {16.228867, 53.567734}, + {-43.997726, -19.970627}, + {-1.659622, 5.048218}, + {140.17375, 35.552717}, + {-73.082114, -36.801364}, + {-123.072712, 44.100971}, + {-1.187267, 53.022253}, + {35.871047973633, 32.049179077148}, + {-87.89680480957, 41.715774536133}, + {14.562378, 52.369766}, + {20.406418, 44.821472}, + {79.867172, 6.837387}, + {114.91218566895, 4.8690032958984}, + {-3.7085723876953, 40.405654907227}, + {-99.153735, 19.360881}, + {-70.96702, 42.466891}, + {-66.151497, -17.403029}, + {106.64772033691, 10.713729858398}, + {-75.526003, 10.439268}, + {-75.664901733398, 45.437393188477}, + {-70.914532, -53.133854}, + {-103.321381, 20.638733}, + {-73.263016, -3.746338}, + {142.07313537598, 43.017654418945}, + {140.11619567871, 35.537338256836}, + {-66.062675, 18.436912}, + {35.236015, 32.765927}, + {-86.800232, 15.784607}, + {-0.104224, 51.578566}, + {52.66159, 36.464996}, + {14.77180480957, 55.062789916992}, + {123.42658996582, 7.8366851806641}, + {127.135503, 37.442518}, + {6.969, 51.765805}, + {-1.977951, 36.951451}, + {121.045303, 14.458498}, + {77.537384, 10.624466}, + {2.4204254150391, 36.395645141602}, + {-2.2130584716797, 53.420333862305}, + {2.151489, 41.37085}, + {77.41584777832, 23.27522277832}, + {-81.513062, 45.971603}, + {72.137604, 21.735764}, + {115.855241, -31.942857}, + {77.105484, 28.715515}, + {-0.94826, 45.438768}, + {-8.0989837646484, 37.093276977539}, + {100.026173, 17.34368}, + {-3.6701202392578, 41.42463684082}, + {101.062369, 12.71941}, + {101.598746, 3.027838}, + {14.055633, 46.31012}, + {-80.084925, 26.500228}, + {136.04026794434, 34.966049194336}, + {16.623001098633, 43.282699584961}, + {48.816307, 32.059557}, + {-122.866058, 42.322254}, + {133.77021789551, 34.493637084961}, + {13.884335, 50.612681}, + {-121.494369, 37.698555}, + {-0.609285, 51.198117}, + {121.30760192871, 24.984970092773}, + {-118.24928283691, 34.104995727539}, + {22.153588, 60.426521}, + {106.795542, -6.189519}, + {127.22648620605, 37.534103393555}, + {2.4835968017578, 48.740158081055}, + {51.733244, 32.644502}, + {22.146835, 65.583115}, + {99.920425, 12.639084}, + {28.744645, 44.962628}, + {3.450852, 36.727068}, + {46.607437133789, 24.744644165039}, + {18.177109, 40.178452}, + {-48.926416, -24.288508}, + {6.6735076904297, 49.134292602539}, + {4.027176, 50.044098}, + {24.302444458008, 42.033004760742}, + {114.11293029785, 22.36198425293}, + {-0.541611, 47.448196}, + {-4.379836, 37.021042}, + {-122.07389831543, 37.694778442383}, + {-65.228965, -26.842316}, + {27.675247192383, 53.86116027832}, + {33.12355, 68.953171}, + {76.723709106445, 27.92106628418}, + {-79.48127746582, 9.0424346923828}, + {138.91181945801, 36.332473754883}, + {9.0767669677734, 48.822555541992}, + {39.822349, 64.565449}, + {-6.2752532958984, 36.504135131836}, + {-9.1632843017578, 38.90739440918}, + {129.5336151123, 28.392105102539}, + {-103.44657897949, 44.540634155273}, + {150.04096984863, -30.675888061523}, + {121.526985, 25.024796}, + {141.363116, 43.03688}, + {-45.86311340332, -23.19694519043}, + {-89.120064, 41.549606}, + {-0.621105, 47.475152}, + {-58.476105, -34.602127}, + {-84.300156, 39.113099}, + {83.09440612793, 17.565078735352}, + {9.557097, 54.364809}, + {8.001206, 45.519241}, + {-49.167618, -18.555568}, + {-122.8621673584, 49.179611206055}, + {2.3876, 48.937738}, + {121.27601623535, -2.5920867919922}, + {6.899976, 50.916573}, + {-0.53077697753906, 39.805526733398}, + {2.1636199951172, 48.887100219727}, + {121.052513, 14.653873}, + {1.1748504638672, 49.800338745117}, + {101.59950256348, 3.1592559814453}, + {77.079391479492, 12.357559204102}, + {77.63172, 12.901989}, + {76.669464, 12.279282}, + {16.636734008789, 38.860702514648}, + {29.974136352539, 31.204605102539}, + {7.7762603759766, 45.231399536133}, + {36.779428, -1.287651}, + {-92.389273, 34.754807}, + {136.670265, 35.225601}, + {77.646904, 12.98584}, + {77.618179, 12.869339}, + {39.992294311523, 43.391189575195}, + {19.435501098633, -33.628463745117}, + {-87.815094, 42.097549}, + {18.39729309082, 40.275192260742}, + {1.075621, 51.093586}, + {24.548006, 65.780211}, + {-46.610928, -23.717219}, + {-58.412443, -34.556808}, + {139.863853, 35.952759}, + {-0.095901, 51.525192}, + {106.683601, -6.32756}, + {26.171493530273, 44.417037963867}, + {119.88761901855, -0.91941833496094}, + {136.703293, 35.199234}, + {22.212295532227, 49.553146362305}, + {20.561382, 39.164346}, + {130.75172424316, 31.71272277832}, + {28.629684448242, 44.19319152832}, + {106.69166564941, 10.771408081055}, + {-79.488794, 42.941173}, + {17.436452, 59.938432}, + {2.170607, 41.422278}, + {-80.232467651367, 25.803451538086}, + {23.151626586914, 38.954086303711}, + {21.186721, 52.194062}, + {-1.7131805419922, 51.479873657227}, + {-51.205327, -30.005896}, + {7.465347, 9.056992}, + {7.0250701904297, 4.7975921630859}, + {8.479861, 45.132787}, + {121.332321, 31.254272}, + {87.317276000977, 44.007797241211}, + {-74.851227, 39.026184}, + {23.111801147461, 52.03742980957}, + {5.198593, 52.14386}, + {83.347547, 54.439774}, + {49.482422, 37.470245}, + {106.85371398926, -6.2313079833984}, + {-0.61454772949219, 39.42512512207}, + {51.76139831543, 32.479019165039}, + {-116.932191, 32.790651}, + {23.725662231445, 37.988662719727}, + {20.678329467773, 53.697738647461}, + {132.755569, 35.362339}, + {-81.09452, 32.07677}, + {38.035354614258, 44.590072631836}, + {-80.211868286133, 27.285232543945}, + {139.49628, 35.531845}, + {8.0165863037109, 50.874252319336}, + {-91.859685, 37.796411}, + {27.436345, 53.855464}, + {-45.913635, -12.734086}, + {17.891903, 59.510426}, + {136.542549, 34.861336}, + {73.615951538086, 25.727920532227}, + {30.237808, 41.158905}, + {-1.196823, 43.619156}, + {-56.154944, -15.640408}, + {-77.929359, 40.067905}, + {-103.36692810059, 20.628890991211}, + {-75.7182, 45.398457}, + {2.116053, 41.405861}, + {-42.826766967773, -5.0969696044922}, + {-58.995895385742, -37.66731262207}, + {121.419297, 24.978959}, + {-76.956398, -12.091072}, + {107.501203, -6.899983}, + {-99.081085, 18.904038}, + {-74.225456, 40.741572}, + {74.332809448242, 16.248092651367}, + {-118.117925, 33.999193}, + {43.34587097168, 42.517776489258}, + {13.886993, 42.641849}, + {79.909058, 13.136215}, + {34.440078735352, 53.219833374023}, + {39.541854858398, 53.818588256836}, + {-104.962235, 39.672134}, + {13.592147827148, 56.724472045898}, + {-117.195053, 32.789841}, + {12.25421, 54.969904}, + {-0.76560974121094, 47.663497924805}, + {55.963668823242, 53.622207641602}, + {106.9100189209, -6.1255645751953}, + {136.5991973877, 34.950942993164}, + {38.157577514648, 38.639602661133}, + {77.13981628418, 31.324081420898}, + {77.937698364258, 9.4722747802734}, + {2.3325347900391, 48.870620727539}, + {112.673447, -7.290253}, + {-88.484294, 42.390885}, + {-2.58424, 53.233763}, + {-46.585464477539, -23.559494018555}, + {72.069625854492, 21.741256713867}, + {-104.776979, 39.574497}, + {135.74089050293, 35.023727416992}, + {30.500106811523, 50.474624633789}, + {121.042513, 14.56154}, + {77.684326, 12.907734}, + {127.414964, 34.975287}, + {132.0824432373, 34.89875793457}, + {-1.4481353759766, 52.906723022461}, + {90.598068237305, 23.647384643555}, + {90.618667602539, 23.650131225586}, + {-121.26205, 50.758392}, + {-84.246826, 36.004028}, + {-115.238976, 32.55347}, + {14.786708, 40.752088}, + {29.238052368164, 38.59977722168}, + {6.9976043701172, 4.9143218994141}, + {39.870071411133, 43.510665893555}, + {27.246780395508, 63.570327758789}, + {-49.358763, -25.562725}, + {45.245132446289, 50.057144165039}, + {73.963394165039, 15.290908813477}, + {66.656112670898, 40.239486694336}, + {139.75914, 35.693665}, + {12.432632, 55.704117}, + {-73.569259643555, 45.495071411133}, + {55.275769, 25.046768}, + {-3.5643768310547, 50.353775024414}, + {103.675575, 1.51989}, + {-57.946091, -34.917984}, + {55.388259887695, 24.203567504883}, + {15.899963, 50.225372}, + {-75.131607, 40.006027}, + {13.60725402832, 37.789535522461}, + {13.359375, 52.515335}, + {4.175857, 50.647003}, + {-98.400568, 29.490149}, + {-0.37284851074219, 51.315078735352}, + {-65.190811157227, -26.859512329102}, + {-85.399787, 38.289414}, + {22.512943, 52.916972}, + {-8.8542938232422, 38.540725708008}, + {-99.181961, 19.380844}, + {38.23860168457, 40.939865112305}, + {98.828506, 1.673546}, + {13.67317199707, 43.05061340332}, + {88.300552368164, 23.444137573242}, + {-103.450356, 20.648117}, + {140.00633239746, 35.670547485352}, + {-63.615371, 44.876542}, + {-79.774484, 43.720781}, + {18.170219, 40.352812}, + {-0.03014, 51.609774}, + {-87.592163, 41.623306}, + {14.763222, 40.78125}, + {-77.071689, -11.973342}, + {100.76591491699, 18.781814575195}, + {143.651185, -38.346083}, + {-147.53608703613, 64.892807006836}, + {26.378174, 46.937027}, + {-100.776554, 25.209164}, + {30.49925, 50.426218}, + {-58.130722045898, 6.7833709716797}, + {39.742355, 47.1595}, + {14.061355, 47.080307}, + {101.608841, 3.366815}, + {74.597854614258, 14.238967895508}, + {116.13716125488, 39.811019897461}, + {10.717849731445, 55.492630004883}, + {73.812504, 18.482437}, + {-78.017456, 42.297945}, + {37.990585, 56.049912}, + {9.189573, 48.755264}, + {139.44877624512, 36.092147827148}, + {-9.073121, 53.275334}, + {20.47272, 44.80947}, + {106.720963, -6.121902}, + {139.62867736816, 35.921859741211}, + {14.528732299805, 59.786911010742}, + {103.86131286621, 13.386154174805}, + {79.694137573242, 16.009140014648}, + {35.541468, 33.878727}, + {-4.179622, 50.350355}, + {108.29978942871, 15.90202331543}, + {4.548043, 51.947473}, + {0.066604614257812, 38.834609985352}, + {2.4643707275391, 48.825302124023}, + {80.111618041992, 12.930221557617}, + {102.49259, 5.892671}, + {97.261963, 5.081863}, + {139.12605285645, 36.403884887695}, + {6.184273, 48.693123}, + {85.104904174805, 25.596084594727}, + {-43.954238891602, -19.95735168457}, + {-1.410395, 54.865817}, + {10.592880249023, 35.894393920898}, + {79.144821166992, 21.137008666992}, + {11.161859, 47.287461}, + {50.614214, 26.142411}, + {5.8344268798828, 52.622451782227}, + {80.235214233398, 13.053817749023}, + {77.695999145508, 12.839584350586}, + {39.67643737793, 43.661727905273}, + {2.9175567626953, 42.160720825195}, + {-87.877579, 42.148819}, + {18.097561, 59.350691}, + {37.134132, -0.484772}, + {10.925216674805, 10.305862426758}, + {9.273148, 48.719264}, + {3.2801055908203, 50.44303894043}, + {49.594345092773, 58.596267700195}, + {76.885757, 8.527679}, + {10.182266, 36.840134}, + {-2.3023223876953, 56.984024047852}, + {1.1240386962891, 49.392471313477}, + {37.190780639648, 55.658798217773}, + {16.554336547852, 38.782424926758}, + {6.273014, 49.788902}, + {5.17188, 47.323921}, + {-86.008691, 42.706028}, + {88.425521850586, 22.661361694336}, + {-84.322128295898, 33.72184753418}, + {13.988571, 49.664841}, + {44.41291809082, 33.418350219727}, + {106.953686, -6.294209}, + {-90.447693, 41.592179}, + {-82.418746948242, 38.40202331543}, + {16.190414428711, 58.589401245117}, + {3.4970855712891, 43.282699584961}, + {-9.1275787353516, 30.802230834961}, + {-76.642293, 39.509484}, + {-77.538070678711, 38.470687866211}, + {-87.067909, 35.60669}, + {-4.320602, 55.849686}, + {-122.393574, 47.241243}, + {-0.52528381347656, 44.90592956543}, + {101.569829, 3.200683}, + {14.976082, 40.453034}, + {-1.8134307861328, 53.723831176758}, + {110.31852722168, 20.02326965332}, + {135.82878112793, 34.709243774414}, + {77.663040161133, 13.011245727539}, + {43.865662, 56.330681}, + {5.1972198486328, 49.614944458008}, + {-89.226837, 13.707504}, + {-117.84828186035, 33.679275512695}, + {28.566513061523, 53.376388549805}, + {77.391472, 28.508148}, + {135.465546, 34.695511}, + {1.704975, 52.69856}, + {-2.955322, 55.943756}, + {-117.459255, 33.935847}, + {121.213531, 31.36528}, + {10.878524780273, 42.953109741211}, + {25.506821, 47.534409}, + {-82.961196899414, 42.458724975586}, + {0.23963928222656, 51.478500366211}, + {80.207748, 13.068581}, + {20.88981628418, 54.21272277832}, + {136.615677, 35.386276}, + {28.201217651367, 61.07780456543}, + {-6.274979, 53.361282}, + {9.134201, 54.861465}, + {-70.894837, 42.544971}, + {103.896025, 1.381867}, + {-100.381256, 20.609116}, + {72.440414428711, 23.28483581543}, + {139.65476989746, 35.658187866211}, + {-1.7282867431641, 54.461288452148}, + {106.90315246582, -6.1640167236328}, + {102.22023010254, 5.2837371826172}, + {135.76286315918, 35.009994506836}, + {7.0552825927734, 60.893783569336}, + {44.476493, 33.345566}, + {31.208725, 29.988327}, + {-75.387165, 45.467557}, + {126.863702, 37.693871}, + {26.299825, 50.613713}, + {108.23799133301, 16.086044311523}, + {-3.822556, 53.284035}, + {15.422745, 51.931}, + {7.1596527099609, 43.818283081055}, + {9.4585418701172, 49.095840454102}, + {103.72123718262, 16.658706665039}, + {24.943769, 58.712998}, + {-63.825719, 44.689899}, + {-4.254456, 42.774582}, + {77.410354614258, 19.431381225586}, + {110.346451, -7.894363}, + {110.207703, -7.600632}, + {-77.273923, 39.234421}, + {14.292526245117, 40.843734741211}, + {28.720322, 40.975571}, + {106.7520904541, -6.2656402587891}, + {-88.374906, 42.624207}, + {8.9215850830078, 45.78483581543}, + {-91.041641235352, 30.424575805664}, + {15.823745727539, 47.230911254883}, + {-117.18177, 34.105691}, + {23.580682, 46.753006}, + {-86.616897583008, 34.793014526367}, + {-91.005935668945, 30.432815551758}, + {-82.579971, 28.105087}, + {-6.07228, 43.445572}, + {45.999069, 51.528854}, + {-76.40510559082, 40.22575378418}, + {-88.089065551758, 41.557846069336}, + {-13.545456, 28.979416}, + {21.006546020508, 52.261276245117}, + {12.339706, 45.862656}, + {-58.595535, -34.420175}, + {22.761611938477, 53.490371704102}, + {-99.042042, 19.618345}, + {-74.23027, 11.169662}, + {-89.540634155273, 43.041000366211}, + {2.17018, 41.378447}, + {12.951736, 56.68602}, + {114.17335510254, 22.269973754883}, + {-94.818371, 29.292114}, + {-120.16227722168, 39.10514831543}, + {-73.934555053711, 40.823135375977}, + {-80.258389, 25.810318}, + {107.90840148926, -7.2310638427734}, + {77.635997, 13.084875}, + {138.59596252441, 35.610122680664}, + {52.56477355957, 28.848037719727}, + {29.272794, 40.939461}, + {-3.9516448974609, 39.863204956055}, + {-48.545071, -25.54825}, + {9.932345, 36.357197}, + {-111.821732, 40.370773}, + {65.571213, 57.120667}, + {14.565811157227, -22.668228149414}, + {8.802796, 40.930939}, + {77.551803588867, 12.950820922852}, + {74.352659, 31.544557}, + {81.657943725586, 21.260604858398}, + {79.879532, 14.221802}, + {-2.5385284423828, 54.117965698242}, + {35.104751586914, 32.652053833008}, + {39.740982055664, 47.236404418945}, + {-0.60768127441406, 51.181869506836}, + {77.112350463867, 18.942489624023}, + {141.084374, 39.150472}, + {-9.065094, 39.510269}, + {76.81022644043, 13.181533813477}, + {18.402786254883, 54.79362487793}, + {9.6659088134766, 40.363082885742}, + {51.375962, 35.748825}, + {18.278046, 59.309235}, + {-75.697860717773, 45.42366027832}, + {0.381033, 47.942761}, + {101.597283, 3.146953}, + {7.6471710205078, 9.0190887451172}, + {9.5752716064453, 49.798965454102}, + {1.1487579345703, 49.436416625977}, + {136.9686126709, 35.122604370117}, + {50.858383, 34.738083}, + {139.70283508301, 35.660934448242}, + {75.817337, 26.902771}, + {25.03233, 48.523525}, + {51.461272, 35.628849}, + {2.4135589599609, 48.858261108398}, + {121.50672912598, 25.027542114258}, + {120.59898376465, 22.719039916992}, + {24.47135925293, 60.159072875977}, + {43.969345092773, 36.215744018555}, + {28.041, 43.291855}, + {-95.557944, 36.395349}, + {2.532349, 48.503952}, + {-111.00654602051, 35.10612487793}, + {-46.84021, -23.529282}, + {114.62928771973, -3.4902191162109}, + {-2.3242950439453, 52.703475952148}, + {10.227584838867, 44.805679321289}, + {-121.22932434082, 44.72053527832}, + {99.091873168945, 7.5290679931641}, + {-74.005378, 40.708858}, + {16.438632, 43.509085}, + {-2.2693634033203, 53.064651489258}, + {24.316138, -33.335831}, + {36.211, 50.048904}, + {-82.982712, 40.135575}, + {19.64973449707, 50.817947387695}, + {-43.488693237305, -22.749252319336}, + {55.746609, 24.212176}, + {19.929885864258, 50.05989074707}, + {24.791332, 49.065171}, + {-121.245698, 37.970547}, + {8.9325714111328, 44.410171508789}, + {-99.454559, 19.284439}, + {37.663192749023, 55.867538452148}, + {-1.7736053466797, 53.792495727539}, + {-3.0123138427734, 43.356857299805}, + {-84.563828, 39.035255}, + {125.48377990723, 3.6069488525391}, + {139.7811126709, 35.69938659668}, + {120.96153259277, 31.336441040039}, + {-0.62690734863281, 35.19401550293}, + {-118.57200622559, 34.216232299805}, + {91.793064, 22.305274}, + {134.980087, 34.696198}, + {-46.733784, -23.643513}, + {-97.182884, 31.538315}, + {-106.13273620605, 28.736801147461}, + {9.039385, 48.738164}, + {138.51631164551, 36.274795532227}, + {77.553176879883, 13.004379272461}, + {101.636307, 3.094437}, + {-81.482305, 28.3358}, + {13.697205, 42.729263}, + {20.01091003418, 50.070877075195}, + {2.6937103271484, 45.596694946289}, + {103.85994, 1.31012}, + {90.232772827148, 23.91242980957}, + {-1.8408966064453, 48.329544067383}, + {121.48750305176, 25.028915405273}, + {10.042648, 53.578262}, + {8.373971, 40.900871}, + {28.195724, -26.146774}, + {130.776443, 33.868515}, + {121.52320861816, 25.06462097168}, + {73.05748, 31.350632}, + {5.864639, 45.460052}, + {121.19361877441, 24.941024780273}, + {77.736282, 13.141708}, + {139.70558166504, 35.698013305664}, + {8.2720184326172, 49.395217895508}, + {1.8560028076172, 48.90495300293}, + {4.822317, 51.573354}, + {139.793472, 35.656729}, + {28.709335327148, 40.998916625977}, + {-74.029312133789, 4.8566436767578}, + {39.263076782227, -6.7998504638672}, + {139.354019, 35.442581}, + {49.858017, 40.401077}, + {71.429672, 51.147537}, + {21.022339, 56.501656}, + {126.941024, 37.506386}, + {-70.004196166992, 18.44123840332}, + {4.959258, 45.226548}, + {7.010308, 53.291417}, + {139.7632598877, 35.665054321289}, + {30.566024780273, 50.423812866211}, + {72.555770874023, 23.023910522461}, + {73.066177, 30.287705}, + {136.626663, 34.899101}, + {37.840347290039, 55.796127319336}, + {101.44020080566, 3.0123138427734}, + {47.023539, 35.28535}, + {113.97972106934, 22.388076782227}, + {30.39436340332, 59.72785949707}, + {105.8470916748, 21.024398803711}, + {63.272323608398, 55.261917114258}, + {39.714889526367, -3.9900970458984}, + {4.178009, 51.194229}, + {66.272964477539, 56.66130065918}, + {51.294381, 35.752847}, + {21.448059, 41.976704}, + {-99.692001342773, 34.008865356445}, + {24.921798706055, 60.157699584961}, + {10.83287, 35.769396}, + {-9.1921234130859, 38.770065307617}, + {8.482132, 45.144196}, + {-8.399048, 39.709396}, + {41.65535, 41.646194}, + {29.012832641602, 41.106033325195}, + {9.252372, 45.471773}, + {-76.411972045898, 39.41276550293}, + {-88.899307250977, 17.897415161133}, + {139.627029, 35.483231}, + {9.383699, 51.710015}, + {2.2913360595703, 49.164505004883}, + {12.430344, 47.633743}, + {39.85221862793, 64.590682983398}, + {-119.790129, 39.469393}, + {116.218037, 6.180638}, + {-122.402598, 37.788085}, + {78.15055847168, 52.487869262695}, + {14.97405, 46.962039}, + {73.717117, 18.669662}, + {-58.509902, -34.587551}, + {-76.435523, 40.787262}, + {-103.40400695801, 20.679702758789}, + {22.005552, 47.909567}, + {15.43098449707, 47.035903930664}, + {30.894928, 48.059006}, + {-117.378635, 34.418716}, + {78.290634155273, 12.368545532227}, + {94.947280883789, 20.15510559082}, + {0.167542, 48.061752}, + {34.629592895508, 48.483352661133}, + {-2.993087, 48.115311}, + {124.647217, 6.765289}, + {139.717484, 35.666428}, + {39.819259643555, 21.386947631836}, + {28.701956, 41.024475}, + {28.70246887207, 41.023635864258}, + {119.57038879395, -5.0379180908203}, + {4.6369171142578, 52.412338256836}, + {9.1481781005859, 45.451126098633}, + {7.073822, 4.86969}, + {10.770128, 48.225252}, + {76.72554, 10.791543}, + {7.697067, 45.001144}, + {100.52284240723, 13.648452758789}, + {24.75206, 42.140121}, + {100.892957, 12.692653}, + {95.330154, 5.550156}, + {73.469009399414, 54.929580688477}, + {79.661178588867, 55.303115844727}, + {100.405655, 6.150192}, + {53.623580932617, 53.552169799805}, + {102.719376, 14.63154}, + {106.830368, -6.208878}, + {114.17472839355, 22.370223999023}, + {4.2098236083984, 49.362258911133}, + {78.26042175293, 17.438735961914}, + {77.797622680664, 17.894668579102}, + {-73.938357, 40.797823}, + {15.547714, 50.133362}, + {8.4876251220703, 49.039535522461}, + {37.29332, 44.958115}, + {9.1745, 45.452728}, + {105.778427, 21.082993}, + {8.3420562744141, 4.9802398681641}, + {31.51496887207, 29.98649597168}, + {120.62342, 24.14931}, + {30.431442260742, 59.870681762695}, + {107.587102, -6.986314}, + {-49.092591, -26.909192}, + {-3.7854766845703, 37.936477661133}, + {112.676534, -7.289839}, + {25.067367553711, 60.322494506836}, + {54.378204, 24.518051}, + {-84.675471, 41.661249}, + {-73.545615, 41.155533}, + {-2.0771026611328, 52.523574829102}, + {46.842269897461, 56.041946411133}, + {77.506484985352, 13.578414916992}, + {-122.50923156738, 57.041702270508}, + {12.995121, 41.836629}, + {8.129471, 50.937149}, + {-46.440766, -23.697367}, + {-73.98674, 40.751605}, + {-1.543655, 52.388077}, + {-46.9265, -23.198777}, + {-80.936483, 29.015957}, + {18.06770324707, 53.104476928711}, + {-46.658249, -23.558121}, + {-79.961037, 33.233093}, + {-71.076736450195, 42.402420043945}, + {-105.106888, 39.800491}, + {135.063484, 48.492217}, + {77.722916, 28.991409}, + {130.7462310791, 32.790756225586}, + {-57.947715, -34.893892}, + {121.064155, 14.537503}, + {142.0484161377, 47.053756713867}, + {77.147103, 28.531131}, + {97.954788208008, 4.4940948486328}, + {-73.43193, 45.782914}, + {4.37727, 51.207557}, + {145.19462585449, -38.120498657227}, + {-92.962189, 44.847565}, + {-118.60084533691, 34.083023071289}, + {121.04667663574, 30.888748168945}, + {-0.34812927246094, 49.318313598633}, + {137.91481018066, 37.049331665039}, + {-0.214175, 38.931011}, + {8.4175872802734, 47.392959594727}, + {34.775161743164, 25.271987915039}, + {-75.626449584961, 45.441513061523}, + {49.174118041992, 55.776901245117}, + {2.995834, 36.717682}, + {139.394703, 36.331444}, + {6.2395477294922, 50.849533081055}, + {120.06546, -3.815689}, + {18.430252, -33.929062}, + {78.563919067383, 17.339859008789}, + {34.874039, 32.352676}, + {139.74128723145, 35.746078491211}, + {120.594864, 23.851318}, + {19.419614, 51.774381}, + {-71.292343, 46.829224}, + {2.450147, 48.871013}, + {-99.161911010742, 19.516525268555}, + {12.016983032227, 51.47575378418}, + {82.675552368164, 25.914688110352}, + {2.3558807373047, 41.502914428711}, + {106.75346374512, -6.3040924072266}, + {-73.951836, 40.752525}, + {6.7462921142578, 43.439254760742}, + {106.467462, -6.204434}, + {8.5865020751953, 12.00325012207}, + {101.772977, 3.05157}, + {13.470611, 51.158524}, + {100.346123, 15.000891}, + {79.143906, 10.77919}, + {-73.850369, 40.890427}, + {14.73747253418, 50.127182006836}, + {-46.766955, -23.657252}, + {49.185791, 37.495651}, + {-99.227005, 18.867142}, + {10.378189, 55.39238}, + {75.897903, 22.746506}, + {12.740879, 43.284073}, + {-2.394333, 53.539124}, + {-111.09443664551, 55.587387084961}, + {-70.73616027832, -34.146194458008}, + {139.866257, 35.751266}, + {35.921402, 56.867294}, + {-99.178848, 19.373474}, + {3.3309173583984, 6.4853668212891}, + {4.45015, 50.40596}, + {23.974517, 37.920553}, + {16.196365, 58.572464}, + {15.545131, 38.134305}, + {127.70988464355, 37.757949829102}, + {-8.5507965087891, 41.71989440918}, + {-105.25382995605, 22.124404907227}, + {112.762985, -7.242737}, + {-84.080429077148, 36.892776489258}, + {-81.799392700195, 30.321578979492}, + {30.081253051758, 59.71549987793}, + {121.57196, 31.243057}, + {106.949686, -6.676695}, + {-58.402633666992, -34.598007202148}, + {-96.222044, 41.212693}, + {-87.142868041992, 37.738723754883}, + {120.93818664551, 31.406478881836}, + {133.40766906738, 34.48127746582}, + {-60.07221, -3.084547}, + {101.87004089355, 25.70182800293}, + {89.483645, 25.818559}, + {-118.047017, 33.893901}, + {30.519452, 50.419695}, + {76.641311645508, 9.5725250244141}, + {-63.169326782227, -9.2292022705078}, + {7.3615264892578, 47.267990112305}, + {-62.419509887695, -10.499496459961}, + {-4.227515, 55.823403}, + {37.633495, 55.76025}, + {27.607955932617, 53.911972045898}, + {9.17099, 48.835602}, + {-117.023621, 32.702866}, + {103.775711, 31.61705}, + {7.7405548095703, 44.342880249023}, + {11.862376, -4.736558}, + {14.621436, 61.1038}, + {-1.0224151611328, 45.642013549805}, + {100.601151, 7.153947}, + {-2.241554, 55.652275}, + {12.631531, 41.445923}, + {-77.057418823242, -12.073287963867}, + {3.8170623779297, 7.4782562255859}, + {3.3570098876953, 49.369125366211}, + {-58.910751, -34.237518}, + {6.9179534912109, 6.0198211669922}, + {-122.263641, 47.394333}, + {-0.214233, 51.516953}, + {35.841751, 32.977066}, + {-103.434219, 20.773773}, + {139.641495, 35.536805}, + {9.1756439208984, 55.103988647461}, + {-5.6902313232422, 35.65544128418}, + {-69.700008, 11.524659}, + {5.661163, 45.171433}, + {46.244888305664, 38.117752075195}, + {24.24938, 45.710999}, + {113.33839416504, 30.912094116211}, + {136.21467590332, 36.049575805664}, + {25.103073120117, 60.226364135742}, + {-47.884872, -15.850662}, + {3.055397, 50.635146}, + {27.896656, -33.016334}, + {39.935989379883, 43.429641723633}, + {-90.611684, 14.644439}, + {-66.245102, 18.011338}, + {12.260055, 45.843201}, + {78.395462, 17.439194}, + {106.45408630371, 29.540176391602}, + {124.83421325684, 1.4852142333984}, + {39.449844360352, 47.092208862305}, + {39.220171, 21.460088}, + {15.516128540039, 48.100204467773}, + {8.4258270263672, 45.47721862793}, + {-77.926712036133, 39.526748657227}, + {13.274531, 52.507263}, + {3.43071, 46.124496}, + {12.211304, 51.034241}, + {-35.022496, -8.305253}, + {153.068231, -27.380669}, + {9.5052337646484, 52.413711547852}, + {7.7144622802734, 36.657943725586}, + {139.4652557373, 35.791397094727}, + {7.5455474853516, 47.754135131836}, + {-104.702133, 38.795792}, + {22.494507, 51.236115}, + {112.98271179199, 23.23127746582}, + {77.362289, 28.60817}, + {74.478378, 16.704483}, + {-90.682755, 38.821335}, + {124.9015045166, 1.5415191650391}, + {-87.839314, 42.375329}, + {101.6418, 2.863449}, + {103.718913, 30.920123}, + {5.7314300537109, 46.173477172852}, + {78.592758178711, 20.741500854492}, + {117.496719, 27.347946}, + {-75.371017, 40.107193}, + {39.349594116211, 51.911087036133}, + {-86.420381, 36.865237}, + {114.16511535645, 22.276840209961}, + {106.59004211426, 10.749435424805}, + {25.399704, 62.424545}, + {3.0466461181641, 44.264602661133}, + {23.29719543457, 43.816909790039}, + {0.56785583496094, 51.874008178711}, + {139.7193145752, 35.64582824707}, + {-94.12467956543, 37.078170776367}, + {5.583939, 7.196457}, + {80.203502, 13.159593}, + {16.614761352539, 38.81950378418}, + {138.736038, -34.596634}, + {76.287002563477, 12.501754760742}, + {121.476627, 25.026307}, + {-2.4616241455078, 51.402969360352}, + {-58.490524291992, -34.551315307617}, + {139.468689, 36.275482}, + {37.747879, 55.790634}, + {6.8506622314453, 49.847030639648}, + {3.83545, 43.582249}, + {2.4135589599609, 50.809707641602}, + {-91.171646, 30.401688}, + {-43.384323120117, -22.881088256836}, + {-117.867302, 33.747528}, + {-77.141931, -11.800195}, + {102.5333404541, 2.6456451416016}, + {121.62483215332, 38.914260864258}, + {135.502625, 34.668732}, + {23.738021850586, 41.571578979492}, + {109.34211730957, -0.029525756835938}, + {15.940475463867, 41.298294067383}, + {121.501752, 25.080735}, + {29.069137573242, 41.040115356445}, + {-66.821265, 10.467814}, + {33.221643, 0.464754}, + {72.829056, 18.937683}, + {6.285782, 46.350633}, + {-82.573928833008, 39.714889526367}, + {-1.9857, 47.673158}, + {11.101742, 59.284154}, + {101.77253723145, 2.9312896728516}, + {-73.698348999023, 45.084457397461}, + {-48.001327514648, -15.851211547852}, + {21.229864, 52.337862}, + {19.056473, 47.520218}, + {-119.730525, 36.969411}, + {30.453496, 50.423732}, + {-1.946209, 52.46457}, + {137.02354431152, 36.748580932617}, + {36.303177, 55.597}, + {108.37532043457, -7.2475433349609}, + {29.93898, 31.207626}, + {139.33204650879, 35.651321411133}, + {19.074325561523, 50.107955932617}, + {15.791245, 39.79866}, + {-81.469154, 45.144876}, + {9.5395660400391, 47.475357055664}, + {-71.51481628418, 42.819900512695}, + {14.547105, 46.576835}, + {-2.4575042724609, 51.401596069336}, + {-68.468856811523, 44.647750854492}, + {-73.92644, 40.657217}, + {14.513626098633, 59.284286499023}, + {9.1715240478516, 50.65315246582}, + {-42.78101, -5.063004}, + {-51.235427856445, -30.078506469727}, + {-73.824536, 40.886681}, + {2.3297882080078, 48.859634399414}, + {101.558635, 3.02972}, + {114.57984924316, -3.3213043212891}, + {-80.032789, 40.509202}, + {18.422012329102, 59.313125610352}, + {35.744019, 35.58403}, + {139.701187, 35.531021}, + {-58.416824, -34.616776}, + {-74.082085, 40.756434}, + {152.87406921387, -25.344772338867}, + {97.659530639648, 15.507888793945}, + {-77.113288, 38.879707}, + {49.612197875977, 52.978134155273}, + {32.583389282227, 0.32203674316406}, + {100.573654, 13.815537}, + {1.872716, 49.751816}, + {130.46882629395, 33.56803894043}, + {18.029251098633, 48.185348510742}, + {136.93428039551, 35.174789428711}, + {0.07034, 38.639459}, + {-119.780228, 39.487473}, + {12.600631713867, 13.311996459961}, + {-6.2244415283203, 36.57829284668}, + {77.549057006836, 13.042831420898}, + {100.593948, 13.984451}, + {2.525083, 48.947931}, + {120.88188171387, 31.970901489258}, + {11.514358520508, 45.878219604492}, + {103.916588, 1.337242}, + {100.31547546387, 14.170303344727}, + {-121.803141, 39.722543}, + {10.098495483398, 56.202621459961}, + {37.768936157227, 56.140823364258}, + {-81.707077, 26.163102}, + {86.169139, 55.342443}, + {-83.80989074707, 9.9144744873047}, + {16.480178833008, 53.270645141602}, + {143.77601623535, 43.800430297852}, + {61.440353393555, 55.131454467773}, + {144.81285095215, -37.823867797852}, + {32.50373840332, 0.81916809082031}, + {139.63279724121, 35.332717895508}, + {23.987078, 49.805538}, + {-74.218826293945, -13.165054321289}, + {54.365158081055, 24.48371887207}, + {77.579269, 12.986355}, + {16.03385925293, 59.862442016602}, + {6.6432952880859, 51.161270141602}, + {-47.102317, -22.816358}, + {-123.064909, 49.267992}, + {15.965194702148, 48.602828979492}, + {120.3929901123, 22.561111450195}, + {75.772018432617, 26.838912963867}, + {-92.247767, 37.791335}, + {158.618138, 53.044015}, + {106.797773, -6.220847}, + {-80.246200561523, -3.4833526611328}, + {6.0445404052734, 50.643539428711}, + {37.722244262695, 55.620346069336}, + {27.157516479492, 38.165817260742}, + {27.770004272461, 54.091873168945}, + {-95.926098, 36.148015}, + {11.107864379883, 44.200057983398}, + {36.607131958008, 51.353530883789}, + {9.9419403076172, 36.868057250977}, + {-74.961427, 39.659416}, + {15.186882, 38.152084}, + {17.766952514648, 54.241561889648}, + {79.453125, 11.887894}, + {13.879166, 49.165192}, + {121.045803, 14.613502}, + {0.48545837402344, 52.582626342773}, + {11.198501586914, 47.32292175293}, + {38.211135864258, 55.824966430664}, + {-79.640579, 42.307663}, + {-3.5355377197266, 43.49006652832}, + {-66.038131713867, 18.233871459961}, + {-87.804766, 41.87739}, + {-76.576766967773, 39.29328918457}, + {-92.729415893555, 32.50373840332}, + {34.175034, 44.89975}, + {-15.543594360352, 27.770004272461}, + {101.706952, 3.047172}, + {-46.68263, -23.490304}, + {126.898432, 37.468567}, + {120.7706451416, 14.333724975586}, + {137.15126037598, 35.080032348633}, + {58.533096313477, 22.643508911133}, + {-76.622085571289, 3.3364105224609}, + {-1.684685, 49.650765}, + {34.733963012695, 25.332412719727}, + {35.007501, -15.698072}, + {-88.86360168457, 42.233505249023}, + {37.301192, 55.703568}, + {20.038375854492, 54.81559753418}, + {32.545586, 37.868592}, + {33.523405, 44.636765}, + {5.4032135009766, 36.15119934082}, + {-6.3329315185547, 53.666152954102}, + {12.194623, 55.525015}, + {14.260940551758, 57.787399291992}, + {123.49113464355, 13.288650512695}, + {24.063491821289, 60.248336791992}, + {28.842887, 47.002166}, + {138.88847351074, 34.65705871582}, + {125.43846130371, 43.771591186523}, + {88.274459838867, 24.182968139648}, + {15.447463989258, 41.796798706055}, + {59.460983, 36.346207}, + {151.285122, -33.46027}, + {120.45616149902, 23.941268920898}, + {106.31538391113, 11.886520385742}, + {126.71424865723, 37.465438842773}, + {-79.836502, 40.548019}, + {-2.7404022216797, 53.252792358398}, + {9.3376922607422, 11.694259643555}, + {136.91505432129, 35.16242980957}, + {-1.9329071044922, 37.421493530273}, + {34.929657, 31.820526}, + {28.849411, 46.999969}, + {2.4025726318359, 49.255142211914}, + {-79.716110229492, 40.694046020508}, + {-73.919074, 40.761837}, + {29.739303588867, 40.773696899414}, + {15.280508, 41.041687}, + {60.668563842773, 25.285720825195}, + {15.90889, 43.918533}, + {51.411737, 35.751519}, + {-0.325545, 43.325642}, + {106.54609680176, 29.562149047852}, + {139.647446, 35.927811}, + {104.34883117676, 15.112380981445}, + {37.594528198242, 55.775527954102}, + {-77.980270385742, -5.9442901611328}, + {-2.246549, 50.620001}, + {7.2063446044922, 43.694686889648}, + {22.50617980957, 49.877243041992}, + {114.133891, 22.373404}, + {105.83198547363, 21.032638549805}, + {13.051071166992, 58.512496948242}, + {35.485153, 33.841676}, + {30.227456, 59.985299}, + {-0.166092, 50.824203}, + {172.61375427246, -43.525772094727}, + {-77.163162231445, 38.803024291992}, + {9.507637, 45.611801}, + {-8.851707, 40.132979}, + {-76.517868, 44.232729}, + {12.155685424805, 47.484970092773}, + {36.293528, 41.329701}, + {-2.5289154052734, 47.699203491211}, + {16.07780456543, 67.128524780273}, + {2.718051, 49.102817}, + {-70.821533, 43.034821}, + {30.546799, 50.411453}, + {-90.743226, 38.991656}, + {-96.853408813477, 17.201156616211}, + {-101.451976, 33.696325}, + {-87.608033, 41.77653}, + {-1.73275, 52.323503}, + {121.43943786621, 31.210098266602}, + {116.333542, 39.748535}, + {108.20640563965, 16.06819152832}, + {104.41474914551, 31.144180297852}, + {28.201217651367, -26.214065551758}, + {-96.679001, 17.08374}, + {35.268173217773, 59.123611450195}, + {19.795303344727, 47.162246704102}, + {-1.053072, 44.993367}, + {30.443802, 59.867477}, + {141.177063, 41.314774}, + {10.206985473633, 53.582382202148}, + {-3.133164, 52.970994}, + {3.2155609130859, 50.708084106445}, + {114.622307, -8.356801}, + {-119.715134, 39.655838}, + {51.251907348633, 35.704879760742}, + {2.319488, 42.062531}, + {72.59147644043, 23.010177612305}, + {-7.2626495361328, 54.171524047852}, + {10.866165161133, 43.92951965332}, + {-91.185613, 30.527843}, + {17.139358520508, 61.655960083008}, + {72.917221, 19.061966}, + {47.986596, 46.342017}, + {-91.50032043457, 45.529403686523}, + {-63.184732, -17.799971}, + {-79.394273, 37.339702}, + {-3.3734893798828, 51.766891479492}, + {61.381349, 55.150961}, + {7.144547, 46.802837}, + {-102.618484, 34.14299}, + {7.030106, 5.440292}, + {83.311386108398, 17.73811340332}, + {10.171967, 56.125031}, + {-43.345871, -23.000565}, + {25.784225463867, 42.366714477539}, + {55.146958, 24.984726}, + {30.355911254883, 59.910507202148}, + {106.01600646973, 12.483901977539}, + {-70.714874, -33.514481}, + {138.85551452637, 37.44758605957}, + {-2.049839, 51.905681}, + {28.173751831055, -26.164627075195}, + {-6.931686, 40.942612}, + {6.441966, 51.208515}, + {2.277878, 43.555985}, + {-122.129517, 37.334976}, + {-123.070908, 49.339462}, + {111.60255432129, 24.42741394043}, + {101.70112609863, 2.9518890380859}, + {37.910156, 55.648041}, + {48.679733276367, 41.629257202148}, + {-79.537582397461, 9.0328216552734}, + {86.239242553711, 22.798690795898}, + {3.032455, 36.748123}, + {2.7857208251953, 6.3919830322266}, + {139.80995178223, 35.779037475586}, + {12.306747436523, 55.658798217773}, + {67.029647827148, 30.200729370117}, + {8.224643, 59.611817}, + {4.6465301513672, 43.80729675293}, + {14.547958374023, 35.873794555664}, + {28.097534, -25.933914}, + {-2.12783, 52.568138}, + {-0.30555725097656, 43.892440795898}, + {-1.4948272705078, 51.374130249023}, + {0.115357, 51.763458}, + {50.013199, 26.56105}, + {0.53489685058594, 51.555404663086}, + {10.131454467773, 50.062637329102}, + {-82.52655, 27.357559}, + {37.995529174805, 56.271286010742}, + {19.64973449707, 50.752029418945}, + {-61.544724, -30.945969}, + {-59.164466, -34.603501}, + {139.75364685059, 35.695266723633}, + {-46.578598022461, -23.580093383789}, + {-73.887667, 40.821762}, + {-84.109268, 9.988632}, + {-62.718503, -34.279239}, + {-3.6385345458984, 40.382308959961}, + {-74.047165, 4.675856}, + {127.04414, 37.518216}, + {-99.355545043945, 19.29817199707}, + {19.857382, 50.137721}, + {76.914596557617, 43.237380981445}, + {6.858215, 52.226944}, + {121.004353, 14.716618}, + {73.050155639648, 33.654556274414}, + {23.213424682617, 45.062484741211}, + {13.50700378418, 56.149063110352}, + {-2.3407745361328, 47.292709350586}, + {12.550227, 55.673052}, + {11.708553, 52.301952}, + {-0.213032, 51.516953}, + {-43.418251, -22.997546}, + {10.786514, 44.239197}, + {-70.62629699707, -33.499374389648}, + {112.636573, -7.374224}, + {8.965534, 47.77405}, + {109.69230651855, -7.0511627197266}, + {23.875350952148, 63.195419311523}, + {6.0198211669922, 51.280746459961}, + {121.293869, 24.967804}, + {4.6163177490234, 51.884994506836}, + {-78.988265991211, 42.635879516602}, + {-103.29689025879, 20.668716430664}, + {116.25389099121, 40.077438354492}, + {15.160446166992, 47.248764038086}, + {12.476761, 9.315445}, + {19.076157, 50.818405}, + {137.025156, 35.106088}, + {-80.500558, 25.467771}, + {138.635788, -34.901505}, + {31.324425, 30.134468}, + {120.26664733887, 23.166732788086}, + {60.542221069336, 56.834335327148}, + {32.54768371582, 0.39482116699219}, + {106.667535, -6.299188}, + {135.47996520996, 34.716110229492}, + {17.878714, 51.675507}, + {60.592117, 56.88591}, + {-158.06064, 21.489944}, + {30.62645, 50.443382}, + {79.385147094727, 28.979873657227}, + {112.736251, -7.262733}, + {5.6476593017578, 6.3507843017578}, + {-3.1002044677734, 51.794357299805}, + {28.276748657227, -15.362319946289}, + {-94.702835083008, 37.389907836914}, + {24.670486450195, 45.183334350586}, + {106.36344909668, -6.9248199462891}, + {-7.7021026611328, 4.3801116943359}, + {-2.3641204833984, 42.856979370117}, + {16.227493, 58.559875}, + {-74.791488647461, 11.010360717773}, + {30.453807, 59.776513}, + {-74.181851, 40.807422}, + {30.31608581543, 47.078475952148}, + {3.495712, 6.600037}, + {-73.019686, -36.817882}, + {12.685775756836, 50.786361694336}, + {15.910263, 38.399963}, + {107.18055725098, 30.717086791992}, + {108.31901550293, 32.397994995117}, + {-77.018966674805, 38.83186340332}, + {107.73262023926, 31.521835327148}, + {107.47856140137, 31.04118347168}, + {-95.28873, 32.332227}, + {106.667107, -6.445743}, + {-82.022327, 29.846429}, + {-2.636718, 51.228562}, + {100.51460266113, 13.678665161133}, + {-6.461105, 53.510971}, + {-46.589584350586, -23.59245300293}, + {106.758838, -6.158867}, + {101.542681, 3.077162}, + {-96.175237, 41.218353}, + {-125.003197, 49.628548}, + {106.6641998291, 17.368698120117}, + {-113.493054, 53.485312}, + {-8.222521, 41.38362}, + {76.422615, 30.352478}, + {-0.29594421386719, 51.335678100586}, + {15.92399597168, 47.018051147461}, + {-2.443314, 53.745804}, + {39.560165, 24.476852}, + {6.0774993896484, 43.141250610352}, + {5.212253, 46.657711}, + {114.02641296387, 22.61604309082}, + {67.004928588867, 24.938278198242}, + {1.440011, 43.59869}, + {82.934191, 54.97902}, + {77.32597, 28.497473}, + {100.36903381348, 6.1173248291016}, + {106.71913146973, -6.2876129150391}, + {104.93522644043, 11.533584594727}, + {-122.621567, 45.598618}, + {12.86293, 41.558304}, + {130.33973693848, 46.805191040039}, + {-0.016251, 51.551285}, + {-1.4083099365234, 53.847427368164}, + {101.69013977051, 3.0947113037109}, + {114.18022155762, 22.279586791992}, + {138.8582611084, 35.08415222168}, + {10.32096862793, 52.166519165039}, + {9.306107, 49.235001}, + {-122.653198, 45.529404}, + {7.084808, 47.416306}, + {151.080155, -33.841887}, + {28.769073, 61.171875}, + {1.91835, 47.902176}, + {100.71784973145, 38.631362915039}, + {16.772517, 48.337091}, + {28.994979858398, 41.101913452148}, + {-5.605962, 38.879679}, + {75.738373, 26.889725}, + {78.001328, 27.180862}, + {139.67674255371, 35.717239379883}, + {-3.2169342041016, 53.269271850586}, + {102.813204, 16.677568}, + {2.728681, 48.411654}, + {6.083984, 46.251068}, + {14.519119262695, 52.55241394043}, + {-0.046463, 51.648331}, + {2.073812, 48.827163}, + {8.291048, 50.057537}, + {2.137527, 41.386185}, + {139.77561950684, 35.695266723633}, + {-80.129470825195, 26.100082397461}, + {-69.023666381836, 44.77409362793}, + {6.626816, 46.50856}, + {30.316772, 59.868965}, + {4.7261810302734, 49.772872924805}, + {-71.463416, 41.823872}, + {-79.592858, 36.398735}, + {-90.387954711914, 15.455703735352}, + {-83.361818, 35.176513}, + {-90.530776977539, 14.622116088867}, + {-71.042252, 42.346954}, + {125.63484191895, 7.1349334716797}, + {74.037551879883, 18.449478149414}, + {0.72258, 47.387466}, + {153.040512, -27.6129}, + {-111.943938, 41.022747}, + {144.99549865723, -37.678298950195}, + {12.550838, 42.694506}, + {17.20253, 48.633591}, + {117.268296, 38.551254}, + {4.3430328369141, 51.920700073242}, + {100.41847229004, 13.799514770508}, + {-69.925813, 12.44471}, + {51.407547, 35.670547}, + {103.9835357666, 52.417831420898}, + {30.373764038086, 60.043716430664}, + {30.48225402832, 50.462265014648}, + {-5.0818634033203, 37.540969848633}, + {-4.8030853271484, 37.881546020508}, + {140.275955, 35.74791}, + {136.649551, 35.34462}, + {14.247207641602, 46.680221557617}, + {0.963397, 51.119948}, + {19.159469604492, 50.765762329102}, + {101.69151306152, 3.0644989013672}, + {-1.614892, 6.687044}, + {120.98213195801, 14.590530395508}, + {37.790908813477, 55.789260864258}, + {18.740615844727, 48.690719604492}, + {77.65892, 13.1987}, + {-2.6264190673828, 53.131942749023}, + {-70.515060424805, -33.362045288086}, + {139.71244812012, 35.766677856445}, + {-4.7000885009766, 53.342056274414}, + {121.08512878418, 14.623489379883}, + {-81.771164, 41.317291}, + {121.09199523926, 31.332321166992}, + {126.59202575684, 45.738143920898}, + {-1.8930816650391, 52.44255065918}, + {15.267562866211, -4.2592620849609}, + {114.189148, 22.329025}, + {76.050796508789, 13.062057495117}, + {-90.065887, 29.9526}, + {75.774765014648, 13.318862915039}, + {18.769454956055, 50.319442749023}, + {-64.679946899414, 17.74772644043}, + {28.258895874023, -25.861129760742}, + {86.339492797852, 20.948867797852}, + {86.680068969727, 21.286697387695}, + {101.01448059082, 12.846450805664}, + {126.95457458496, 37.459945678711}, + {38.77405, 55.091226}, + {-0.61180114746094, 35.217361450195}, + {-77.027206420898, 38.895034790039}, + {-73.936157, 40.661316}, + {-4.23317, 55.887451}, + {-108.140026, 51.41081}, + {12.533831, 53.836448}, + {11.366043, 44.800187}, + {30.325698852539, 40.711898803711}, + {3.960571, 43.540192}, + {23.787460327148, 38.054580688477}, + {29.000473022461, 41.048355102539}, + {75.812531, 26.800461}, + {46.666985, 24.749146}, + {8.4587860107422, 53.195114135742}, + {88.363449, 22.518265}, + {-73.933525, 40.770607}, + {39.007645, 45.067463}, + {30.973156, 30.029}, + {55.469284057617, 25.383224487305}, + {28.712461, 40.975373}, + {158.64339, 53.02416}, + {-74.078618, 4.651173}, + {-58.39582, -34.753912}, + {-99.596008, 19.278259}, + {100.717693, 13.594858}, + {-72.58493, 42.093164}, + {-79.480821, 43.660355}, + {85.12001, 25.614624}, + {30.440712, 59.884415}, + {112.545319, -7.432251}, + {140.60646057129, 36.535720825195}, + {33.388138, 35.05806}, + {82.778549194336, 24.193954467773}, + {-122.692004, 45.467481}, + {-0.0020599365234375, 51.571884155273}, + {106.88804626465, -6.3356781005859}, + {-122.49961853027, 37.954330444336}, + {2.0798492431641, 41.290054321289}, + {136.284715, 35.40413}, + {15.518875, 48.151703}, + {9.2195892333984, 45.437393188477}, + {4.0450286865234, 47.202072143555}, + {-74.027938842773, 40.754470825195}, + {37.719497680664, 55.779647827148}, + {61.426981, 57.354135}, + {102.82722473145, 16.790542602539}, + {56.357803, 25.098495}, + {15.359573364258, -4.3842315673828}, + {14.330978393555, 40.858840942383}, + {140.71701, 41.765213}, + {-83.460972, 33.916527}, + {60.536727905273, 56.868667602539}, + {101.67091369629, 3.1592559814453}, + {9.208317, 48.835087}, + {-84.455293, 39.273566}, + {-3.780441, 50.296097}, + {28.23012, -25.757196}, + {-51.125564575195, 0.10643005371094}, + {101.70864, 3.094804}, + {83.906021118164, 18.30940246582}, + {12.794612, 52.164888}, + {139.976944, 35.830948}, + {11.2499, 46.35546}, + {120.604359, 15.203046}, + {-1.859102, 53.717785}, + {120.672344, 24.129756}, + {6.968079, 50.928955}, + {-64.413528442383, -27.738418579102}, + {10.8947, 63.45173}, + {136.946411, 35.080032}, + {-1.2462615966797, 52.60871887207}, + {100.72608947754, 14.03434753418}, + {90.155868530273, 23.809432983398}, + {72.841415405273, 19.118270874023}, + {0.53215026855469, 51.194229125977}, + {72.970504760742, 19.24186706543}, + {-79.386520385742, 9.0644073486328}, + {139.66163635254, 35.662307739258}, + {7.8339385986328, 51.54167175293}, + {-48.315421, -10.249861}, + {30.171229, 59.862953}, + {12.718734741211, 45.528030395508}, + {-73.339920043945, 41.137619018555}, + {17.440106, 47.972489}, + {2.3778533935547, 48.896713256836}, + {27.627182006836, 38.013381958008}, + {6.7847442626953, 6.1406707763672}, + {-76.16272, 40.358276}, + {-16.577682495117, 28.050155639648}, + {107.7367401123, -6.9467926025391}, + {-77.561196, 39.109816}, + {-5.3386688232422, 36.245956420898}, + {-4.6533966064453, 36.506881713867}, + {-76.97308, -12.067796}, + {-73.952407836914, 40.828628540039}, + {7.6155853271484, 36.826858520508}, + {-114.100282, 51.026857}, + {13.10463, 37.505264}, + {-3.484726, 39.768105}, + {101.711339, 2.749197}, + {-71.588973999023, -33.095626831055}, + {-100.28663635254, 25.734786987305}, + {71.419419, 51.114254}, + {75.776138305664, 31.133193969727}, + {-81.484909057617, 43.363723754883}, + {-46.492080688477, -23.463363647461}, + {-117.06825256348, 33.120346069336}, + {73.19709777832, 22.357864379883}, + {-79.014008, 48.222517}, + {22.264621, 52.187281}, + {-77.031927, -11.854935}, + {-77.123336791992, -11.975784301758}, + {-74.580982, 41.133499}, + {-1.229321, 52.342307}, + {-111.83601379395, 40.481185913086}, + {37.328008, 37.060583}, + {35.907244, 56.05058}, + {75.787124633789, 30.918960571289}, + {136.01417541504, 35.05256652832}, + {12.358932495117, 58.685531616211}, + {12.316360473633, 58.310623168945}, + {106.79261, -6.292739}, + {141.12831115723, 39.683303833008}, + {15.896530151367, 38.673934936523}, + {104.1153717041, 15.82649230957}, + {3.66394, 6.664581}, + {-2.5110626220703, 48.457260131836}, + {74.554939, 15.857048}, + {-46.724166870117, -23.51692199707}, + {139.77424621582, 35.73371887207}, + {2.1169281005859, 41.423263549805}, + {105.810013, 21.030579}, + {76.329574584961, 13.078536987305}, + {139.428177, 35.810898}, + {151.108226, -24.824386}, + {-15.51887512207, 28.10920715332}, + {102.70225524902, 25.057754516602}, + {32.790756225586, 39.959335327148}, + {75.575637817383, 11.746444702148}, + {-122.10960388184, 47.733535766602}, + {26.899337768555, 46.592330932617}, + {76.436691, 9.933701}, + {5.5171966552734, 22.805557250977}, + {139.4474029541, 35.636215209961}, + {84.980894, 56.469508}, + {121.60972595215, 24.018173217773}, + {78.78776550293, 9.2552947998047}, + {-116.967659, 46.424103}, + {14.68309, 45.181961}, + {-99.211349, 19.438248}, + {-65.201797485352, -26.86637878418}, + {26.973495483398, 49.354019165039}, + {37.53547668457, 56.734085083008}, + {-14.021072, 28.225708}, + {37.394799, 55.918103}, + {104.056301, 14.341757}, + {19.90104675293, 54.189376831055}, + {8.892062, 41.68213}, + {39.220504760742, 51.696853637695}, + {114.17472839355, 22.337265014648}, + {25.015182495117, 35.336837768555}, + {43.973643, 56.26289}, + {18.569778, -33.903397}, + {15.061731, 58.327664}, + {16.31950378418, 48.199081420898}, + {29.998855, 31.234131}, + {25.673904, 60.39247}, + {-5.881806, 43.358231}, + {-73.62005, 45.494469}, + {-58.37516784668, -34.647445678711}, + {2.2803497314453, 48.858261108398}, + {32.56965637207, -25.972366333008}, + {-87.385475, 36.545748}, + {-8.5453033447266, 41.134872436523}, + {92.611312866211, 53.254165649414}, + {133.8663482666, 34.143447875977}, + {102.4275970459, 5.7671356201172}, + {15.649337768555, 46.648635864258}, + {59.498062, 36.323318}, + {-75.02082824707, 40.033493041992}, + {-99.081573, 40.726662}, + {80.069047, 13.015366}, + {-99.825897, 16.805649}, + {145.080308, -37.925882}, + {54.506607, 30.065462}, + {113.62953186035, 34.793014526367}, + {78.385391235352, 17.401657104492}, + {73.234176635742, 22.290573120117}, + {87.31041, 23.067169}, + {20.966720581055, 52.187118530273}, + {10.227452, 45.532553}, + {-95.920205, 36.115325}, + {18.783875, 49.686356}, + {41.987002, 47.644274}, + {12.079242, 48.949357}, + {145.31272888184, -38.027114868164}, + {13.439712524414, 52.680130004883}, + {136.261368, 35.262375}, + {-3.0068206787109, 43.310165405273}, + {150.518188, -23.331528}, + {2.854111, 42.040695}, + {25.950851, 40.857925}, + {4.676057, 51.05278}, + {150.209198, -35.764618}, + {1.446419, 43.331108}, + {-79.909867, -2.187435}, + {106.63124084473, 10.886764526367}, + {29.199600219727, -1.6692352294922}, + {5.0598907470703, 51.538925170898}, + {100.682144, 4.845657}, + {24.748764038086, 60.186538696289}, + {146.877594, -36.110001}, + {48.243713, 33.716354}, + {8.4601593017578, 39.683303833008}, + {55.419845581055, 25.289840698242}, + {36.81037902832, 55.581893920898}, + {49.896051, 26.656952}, + {17.646102905273, 52.207717895508}, + {135.49507141113, 34.73258972168}, + {107.40440368652, 29.703598022461}, + {139.3416595459, 35.66780090332}, + {40.082493, 47.421213}, + {-78.691979, 42.989159}, + {133.140335, 33.212357}, + {60.641785, 56.796982}, + {73.892588, 18.475695}, + {101.45530700684, 3.0933380126953}, + {25.089339, 60.215127}, + {-99.126767, 19.292305}, + {-98.109112, 27.746315}, + {24.732285, 40.730209}, + {80.468806, 8.593891}, + {18.812026977539, -33.864669799805}, + {115.2156829834, -8.7938690185547}, + {22.315311, 37.510218}, + {7.487869, 9.02623}, + {-0.055618286132812, 38.88542175293}, + {17.228747, 49.59884}, + {16.790542602539, 48.041152954102}, + {121.055603, 14.578514}, + {28.380126, -26.230013}, + {-9.5711517333984, 30.435562133789}, + {73.760147094727, 15.577926635742}, + {44.130020141602, 55.185012817383}, + {76.322708129883, 32.198867797852}, + {48.134536743164, 29.114456176758}, + {-80.45768737793, -3.5712432861328}, + {-91.401443481445, 39.96208190918}, + {-0.18745422363281, 51.897354125977}, + {-49.432069, -16.515427}, + {-97.528745, 25.93246}, + {20.432510375977, 44.78645324707}, + {120.99174499512, 14.575424194336}, + {5.3372955322266, 36.432723999023}, + {-95.971755981445, 41.299667358398}, + {0.471649, 51.758347}, + {5.2713775634766, 36.494522094727}, + {139.646072, 35.606003}, + {-7.6705169677734, 33.561172485352}, + {-105.278265, 39.744653}, + {138.69699, -34.671629}, + {17.131118774414, 48.11393737793}, + {114.356261, -8.246776}, + {-66.885452270508, 10.489883422852}, + {-90.369759, 41.469784}, + {79.10774230957, 10.331954956055}, + {77.649002, 12.988917}, + {18.926353, 50.320473}, + {-79.529342651367, 36.467056274414}, + {51.143025, 43.663101}, + {10.92247, 47.27211}, + {120.310895, 22.727283}, + {77.255172729492, 10.576400756836}, + {78.444443, 17.420197}, + {-103.568571, 43.885341}, + {47.932662963867, 29.266891479492}, + {12.823072, 47.977983}, + {-99.039105, 19.388424}, + {77.70149230957, 11.34407043457}, + {16.905899047852, 48.251266479492}, + {-2.342148, 52.994614}, + {22.953415, 48.560715}, + {4.264755, 52.093048}, + {-1.913223, 50.816116}, + {123.895157, 10.300644}, + {104.53971862793, 30.375137329102}, + {72.827682495117, 19.097671508789}, + {11.34201, 47.138214}, + {74.952164, 15.452957}, + {46.238021850586, 37.39128112793}, + {-79.377054, 43.702291}, + {-8.5398101806641, 33.230209350586}, + {29.073973, 40.976871}, + {2.9079437255859, 42.66471862793}, + {-67.904892, -38.992081}, + {37.586746, 55.748062}, + {-63.185381, -17.775189}, + {30.868148803711, 27.407455444336}, + {93.428421020508, 56.201248168945}, + {101.592447, 3.021381}, + {-74.169387, 40.249786}, + {-8.601608, 42.624207}, + {49.568939, 27.133484}, + {-70.728856, -33.518404}, + {-106.05033874512, 28.654403686523}, + {105.076675, 17.449036}, + {130.5086517334, 31.549301147461}, + {106.65596008301, 10.592880249023}, + {54.028701782227, 17.028121948242}, + {-70.651888, -33.433016}, + {139.634423, 35.456267}, + {113.199692, 23.146133}, + {-8.7842559814453, 42.263717651367}, + {-5.9044647216797, 54.539566040039}, + {-59.821243286133, -31.340560913086}, + {-80.433998, 25.654106}, + {10.450057983398, 59.421615600586}, + {2.3764801025391, 48.830795288086}, + {11.841201782227, 57.711868286133}, + {-65.216217, -26.852646}, + {32.735824584961, 40.008773803711}, + {9.1880035400391, 45.466232299805}, + {11.041259, 43.847809}, + {37.524490356445, 54.005355834961}, + {121.31034851074, 24.368362426758}, + {92.074356079102, 21.503677368164}, + {-17.449722290039, 14.720993041992}, + {16.334609, 48.203201}, + {32.707727, 40.013748}, + {-79.054554, 43.901063}, + {-2.0153045654297, 52.975387573242}, + {-98.078384399414, 42.026138305664}, + {8.7787628173828, 36.500015258789}, + {-48.79508972168, -26.847152709961}, + {-86.788833, 40.381706}, + {80.26062, 12.976913}, + {76.023330688477, 39.489669799805}, + {121.59187316895, 31.249923706055}, + {10.550003, 52.46315}, + {-122.50785827637, 45.582962036133}, + {75.917244, 22.761955}, + {19.447627, 65.850907}, + {33.088760375977, 57.240829467773}, + {-35.761184692383, -9.6576690673828}, + {11.179963, 49.474869}, + {-84.181202, 9.938574}, + {-84.461403, 33.880005}, + {78.459206, 17.40303}, + {-58.699264526367, -34.611740112305}, + {-55.88264465332, -27.375869750977}, + {-96.139297, 19.201355}, + {19.52752, 40.757221}, + {88.282699584961, 22.510299682617}, + {69.592208862305, 40.86296081543}, + {-89.414547, 30.344817}, + {-1.9384002685547, 52.660903930664}, + {-47.58199, -20.895903}, + {6.9852447509766, 47.243270874023}, + {77.179641723633, 28.490982055664}, + {25.920181274414, 63.328628540039}, + {12.11311340332, 50.893478393555}, + {10.753212, 52.424698}, + {8.698729, 52.090804}, + {9.726756, 52.513222}, + {7.0127105712891, 50.986862182617}, + {9.9076080322266, 51.383743286133}, + {135.19432067871, 34.698257446289}, + {135.637207, 34.702034}, + {8.028946, 49.759827}, + {8.389435, 47.375793}, + {30.376510620117, -29.589614868164}, + {28.266528, 36.875863}, + {46.789169, 24.6801}, + {113.04862976074, 3.1716156005859}, + {4.2894744873047, 51.286239624023}, + {-2.640154, 47.930604}, + {20.68917, 44.846235}, + {7.589035, 47.141418}, + {-71.689622, 42.519061}, + {8.404955, 46.96936}, + {139.52568054199, 35.509872436523}, + {7.0401763916016, 49.30046081543}, + {46.715927124023, 24.766616821289}, + {-43.405311, -13.267921}, + {-73.816452026367, 45.490951538086}, + {8.924175, 46.135774}, + {9.920164, 51.563448}, + {10.018387, 52.459946}, + {136.898117, 35.273666}, + {38.21662902832, 38.334732055664}, + {30.76789855957, 30.81184387207}, + {8.944931, 45.991516}, + {73.823318481445, 18.445358276367}, + {68.663315, 40.829453}, + {126.5892791748, 45.983963012695}, + {10.903244, 42.371521}, + {9.9501800537109, 51.301345825195}, + {126.62223815918, 45.776596069336}, + {27.458267211914, 46.047134399414}, + {106.7520904541, -6.1777496337891}, + {5.6902313232422, 50.506210327148}, + {17.510605, 59.587784}, + {33.981401, 44.516602}, + {14.684077, 49.779456}, + {134.74662780762, 34.779281616211}, + {94.571118, 56.10842}, + {13.741224, 50.332956}, + {43.394623, 38.5009}, + {-7.265856, 55.258713}, + {67.094192504883, 24.851760864258}, + {37.542686, 56.029587}, + {101.653404, 3.183632}, + {14.269180297852, 40.868453979492}, + {-8.7471771240234, 41.377944946289}, + {100.39924621582, 13.711624145508}, + {11.349563598633, 47.250137329102}, + {102.61848449707, 17.964706420898}, + {-94.812588, 38.944292}, + {-5.9387969970703, 54.689254760742}, + {85.336990356445, 27.687606811523}, + {116.30058288574, 40.034866333008}, + {-1.8354034423828, 54.848556518555}, + {-0.86036682128906, 41.692428588867}, + {11.967121, 50.081411}, + {-1.1103057861328, 52.622451782227}, + {-1.753006, 53.905106}, + {-38.498153686523, -3.7264251708984}, + {7.958905, 51.527025}, + {139.85527038574, 39.002151489258}, + {13.479537963867, 56.361923217773}, + {16.739730834961, 48.056259155273}, + {-0.383148, 43.289909}, + {110.43388366699, -7.8270721435547}, + {-78.494975, -0.211145}, + {-121.383408, 38.436218}, + {-103.2007598877, 25.539779663086}, + {107.165474, -6.807677}, + {77.216720581055, 28.540420532227}, + {-49.238662719727, -15.891036987305}, + {-73.876876831055, 40.748977661133}, + {127.73872375488, 26.123428344727}, + {107.626928, -6.900304}, + {13.699264526367, 50.911331176758}, + {106.84684753418, -6.1186981201172}, + {-101.38938903809, 20.107040405273}, + {-73.617338, 45.504984}, + {-67.111702, 18.488274}, + {106.982288, -6.233025}, + {23.717422485352, 37.958450317383}, + {51.445541, 35.731125}, + {12.54737, 48.542471}, + {4.5078277587891, 45.47721862793}, + {46.367111206055, 38.066940307617}, + {11.280899, 43.779007}, + {11.867754, 42.599259}, + {115.09895324707, -3.0768585205078}, + {14.03434753418, 51.35627746582}, + {8.0509185791016, 47.202072143555}, + {7.596359, 47.184563}, + {14.900894165039, 44.805679321289}, + {28.171005249023, -26.222305297852}, + {12.504501342773, 41.822891235352}, + {113.66523742676, 22.938766479492}, + {136.86836242676, 35.20637512207}, + {72.85817, 19.074326}, + {30.479508, 59.910067}, + {15.743179, -12.816696}, + {5.2329254150391, 13.132095336914}, + {-106.60377502441, 52.097854614258}, + {72.923676, 19.090256}, + {7.325134, 5.111389}, + {-80.153161, 25.99703}, + {-6.5499114990234, 36.994400024414}, + {10.168533325195, 36.79801940918}, + {116.332855, 39.975128}, + {136.93791, 35.295639}, + {2.9697418212891, 43.178329467773}, + {101.3111114502, 13.61686706543}, + {28.167801, 44.23027}, + {121.41609191895, 23.647384643555}, + {8.8433074951172, 11.798629760742}, + {-6.2368011474609, 41.250228881836}, + {34.662551879883, 31.661911010742}, + {-74.037126, 40.655977}, + {37.753143, -1.309433}, + {16.500778198242, 47.490463256836}, + {-17.382431030273, 14.74983215332}, + {113.33290100098, 22.982711791992}, + {-95.677872, 30.171204}, + {46.952133, 31.717529}, + {27.424031, 38.640919}, + {-1.8271636962891, 51.59797668457}, + {81.983413696289, 27.15202331543}, + {100.54618835449, 13.743209838867}, + {-2.270633, 53.395189}, + {101.69916, 3.14506}, + {83.54621887207, 26.833419799805}, + {14.688512, 50.12173}, + {9.63707, 47.432785}, + {-85.678939819336, 42.916030883789}, + {-97.15116, 32.823683}, + {-75.732192993164, 6.2093353271484}, + {28.185425, -26.166}, + {-8.9105987548828, 39.525375366211}, + {19.936752319336, 50.029678344727}, + {-71.095455, 42.408758}, + {-43.422626, -22.984637}, + {12.723878, 41.951982}, + {39.18342590332, 21.485824584961}, + {8.231943, 48.846026}, + {15.985794067383, 53.306350708008}, + {-3.7168121337891, 37.762069702148}, + {16.839418, 41.137976}, + {-77.072963, -11.983309}, + {114.321207, 22.594994}, + {7.2077178955078, 49.875869750977}, + {-2.9024505615234, 53.600234985352}, + {-8.5919952392578, 41.765213012695}, + {116.54640197754, 39.76432800293}, + {-76.149673461914, -13.662185668945}, + {19.87777, 50.048378}, + {27.542701, 68.645702}, + {-79.455231, 43.648999}, + {9.595871, 53.496552}, + {-93.408508, 44.891511}, + {52.49885559082, 29.640426635742}, + {7.276554, 51.229935}, + {9.217186, 48.882637}, + {56.054306030273, 58.022232055664}, + {13.324356079102, 52.560653686523}, + {45.268478393555, 55.436325073242}, + {78.559113, 12.616081}, + {12.494888305664, 48.815689086914}, + {75.826950073242, 25.158004760742}, + {140.70259094238, -2.5440216064453}, + {11.773456, 48.693925}, + {-122.744093, 45.404446}, + {4.4762420654297, 45.100936889648}, + {121.20460510254, 14.47380065918}, + {7.015458, 50.992355}, + {19.374941, 47.409439}, + {0.026779174804688, 51.538925170898}, + {11.105117797852, 10.292129516602}, + {100.54206848145, 13.619613647461}, + {100.246377, 16.80948}, + {21.285983, 52.172254}, + {133.564499, 33.502121}, + {7.281876, 43.715973}, + {10.867538452148, 59.929733276367}, + {174.311829, -35.689774}, + {8.3420562744141, 49.886856079102}, + {-43.344497680664, -22.828903198242}, + {139.782761, 35.654892}, + {-46.579971313477, -23.61442565918}, + {110.37757873535, 19.995803833008}, + {100.67527770996, 13.973922729492}, + {60.62873840332, 56.898880004883}, + {31.980514526367, 46.67610168457}, + {121.19773864746, 14.453201293945}, + {14.234853, 36.100389}, + {30.54817199707, 37.418746948242}, + {91.689834594727, 53.700485229492}, + {107.667046, -6.947601}, + {77.333450317383, 28.576126098633}, + {28.161983, -25.682397}, + {-84.327393, 39.746475}, + {121.02195739746, 24.777603149414}, + {19.614028930664, 45.350875854492}, + {4.8511505126953, 43.947372436523}, + {18.899231, 50.469131}, + {28.45459, 54.187317}, + {16.388855, 49.740601}, + {136.7227935791, 34.45930480957}, + {139.472809, 35.35675}, + {121.03157043457, 14.455947875977}, + {37.664566040039, 55.693130493164}, + {-6.1461639404297, 35.200881958008}, + {103.77262, 1.38118}, + {48.045272827148, 56.566543579102}, + {-58.383407592773, -34.706497192383}, + {3.950721, 50.474713}, + {-70.642776489258, -33.43620300293}, + {19.085771, 49.556809}, + {-61.292038, 10.704803}, + {0.96061706542969, 51.243667602539}, + {117.11769104004, -0.52528381347656}, + {-3.6522674560547, 40.449600219727}, + {-89.623031616211, 21.009292602539}, + {-74.674352, 39.505278}, + {37.628860473633, 55.76042175293}, + {-89.180374, 13.607254}, + {-83.371165, 35.188792}, + {24.026412963867, 49.84016418457}, + {9.6974945068359, 4.0450286865234}, + {47.947769165039, 29.306716918945}, + {152.765656, -27.597271}, + {50.823440551758, 28.967514038086}, + {18.726168, 52.900186}, + {-2.8694915771484, 51.022567749023}, + {-57.621231, -25.291901}, + {-43.177872, -22.964859}, + {140.02555847168, 36.869430541992}, + {1.591549, 42.996893}, + {-47.877731323242, -15.797653198242}, + {6.91452, 51.549225}, + {-81.896896362305, 29.102096557617}, + {-73.816053, 40.767674}, + {74.769515991211, 26.264877319336}, + {10.784391, 51.498831}, + {-1.23967, 51.404068}, + {37.476425170898, 45.250625610352}, + {139.66438293457, 35.796890258789}, + {-79.522476196289, 43.786697387695}, + {8.6304473876953, 49.333419799805}, + {-105.205032, 39.69841}, + {131.893734, 43.126425}, + {-46.763395, -23.019837}, + {22.381897, 52.110214}, + {120.90934753418, 31.100234985352}, + {32.86574, 39.916866}, + {8.495867, 50.285802}, + {3.054886, 50.602341}, + {99.311599731445, 13.545455932617}, + {106.68617248535, 10.767288208008}, + {139.789733, 35.747452}, + {52.048416137695, 55.813980102539}, + {27.597885, 53.927536}, + {-121.807632, 37.303696}, + {-9.0493011474609, 38.646469116211}, + {13.604507446289, 48.644027709961}, + {0.332382, 41.632014}, + {-59.996365, -3.151953}, + {9.099426, 49.991914}, + {-58.839612, -34.491014}, + {9.4654083251953, 42.550735473633}, + {101.105804, 4.65889}, + {-80.225601, 33.700562}, + {-90.194320678711, 29.191360473633}, + {-84.948044, 35.152817}, + {121.47239685059, 31.148300170898}, + {11.021347045898, 52.159652709961}, + {-76.534194946289, 3.4270477294922}, + {13.413619995117, 47.272109985352}, + {139.32243347168, 35.481033325195}, + {27.874374389648, 40.382308959961}, + {107.620163, -6.922558}, + {79.375534057617, 10.959548950195}, + {1.1652374267578, 43.032760620117}, + {135.49507141113, 34.705123901367}, + {56.383438, 58.143082}, + {120.1375579834, 30.235061645508}, + {-124.93285, 49.681091}, + {112.75886535645, -7.3203277587891}, + {38.441848754883, 55.878524780273}, + {1.2668609619141, 6.1365509033203}, + {-0.464745, 51.458817}, + {-49.408950805664, -20.839004516602}, + {-101.23420715332, 35.05256652832}, + {35.520858764648, 53.041305541992}, + {-84.218935, 39.089846}, + {39.709396, 47.344208}, + {3.006146, 48.111082}, + {57.314987, 37.47345}, + {-89.081904, 39.365282}, + {15.421706, 47.07846}, + {88.880768, 23.477097}, + {72.161636, 21.774902}, + {-122.672646, 45.516215}, + {-2.3105621337891, 53.380508422852}, + {26.19758605957, 48.847274780273}, + {-112.027588, 41.105347}, + {24.81330871582, 49.807205200195}, + {23.335647583008, 48.66325378418}, + {-97.801353, 32.712604}, + {-4.3773651123047, 55.91423034668}, + {-1.8903350830078, 39.025497436523}, + {7.666397, 49.240723}, + {-42.035751342773, -22.892074584961}, + {100.54481506348, 13.743209838867}, + {8.9586639404297, 48.340530395508}, + {130.413895, 33.566666}, + {-48.488845825195, -1.4398956298828}, + {-84.329012, 33.790138}, + {33.890762329102, 27.021560668945}, + {6.6405487060547, 51.27799987793}, + {103.89152526855, 1.3863372802734}, + {-48.203314, -7.204377}, + {11.989517, 51.217575}, + {13.618240356445, 47.835159301758}, + {116.36787414551, 39.89616394043}, + {3.87198, 48.67081}, + {7.307968, 48.771744}, + {8.5095977783203, 48.880233764648}, + {40.480499, 52.900543}, + {30.814590454102, 36.855697631836}, + {-106.136703, 39.549179}, + {25.936660766602, 48.295211791992}, + {28.631515, 44.16481}, + {7.1019744873047, 51.249160766602}, + {6.262344, 48.033954}, + {2.6277923583984, 48.995590209961}, + {73.799286, 18.625259}, + {136.807938, 35.287125}, + {10.062068, 47.910012}, + {90.38932800293, 23.750381469727}, + {103.85856628418, 1.3780975341797}, + {-123.08876037598, 49.245529174805}, + {25.567733, 45.828181}, + {-0.79170227050781, 51.515579223633}, + {140.12718200684, 35.608749389648}, + {-2.0139312744141, 50.893478393555}, + {109.227596, -7.330423}, + {22.461777, 45.523911}, + {78.497314, 17.385864}, + {-5.6668853759766, 40.960464477539}, + {83.551712036133, 26.079483032227}, + {83.418502807617, 26.744155883789}, + {111.57920837402, -7.9959869384766}, + {120.960846, 31.083755}, + {30.710220336914, 36.912002563477}, + {77.017593383789, 28.453903198242}, + {74.843674, 34.08371}, + {24.82898, 60.336157}, + {139.912262, 36.962128}, + {77.261581, 28.658066}, + {24.297638, 46.31115}, + {-71.847153, 46.18515}, + {13.173294067383, 38.091659545898}, + {99.365158081055, 19.060592651367}, + {76.505355834961, 9.6892547607422}, + {117.35939025879, 32.923965454102}, + {-86.785783, 35.452777}, + {32.519875, 0.289764}, + {-8.5631561279297, 33.08464050293}, + {-93.151016, 16.757927}, + {-15.466234, 28.088151}, + {100.501863, 13.644778}, + {-72.070999145508, 42.656478881836}, + {131.171265, 33.985519}, + {12.871170043945, 43.897933959961}, + {34.031296, 45.0103}, + {-58.393020629883, -34.90837097168}, + {3.233609, 43.334296}, + {136.280475, 35.44045}, + {-1.4344024658203, 53.380508422852}, + {136.42753601074, 34.912490844727}, + {25.573105, 46.723005}, + {-4.306984, 38.222809}, + {4.3396, 50.911331}, + {37.578535, 55.763458}, + {138.13179016113, 36.193771362305}, + {128.11912536621, 61.268692016602}, + {-104.67704772949, 38.840103149414}, + {14.388656616211, 40.871200561523}, + {19.226760864258, 54.071273803711}, + {0.304557, 52.205796}, + {23.107681274414, 57.059555053711}, + {6.8314361572266, 47.453384399414}, + {7.7996063232422, 48.013687133789}, + {20.060251, 50.029678}, + {-89.051742553711, 40.90690612793}, + {-1.17952, 53.149796}, + {-13.511782, 29.140289}, + {-71.054077, 42.427597}, + {-0.31791687011719, 39.521255493164}, + {10.318909, 53.791122}, + {2.4835968017578, 48.560256958008}, + {113.86848449707, 22.59407043457}, + {-76.576766967773, 39.246597290039}, + {-117.189859, 32.764518}, + {-102.203888, 19.899864}, + {-2.626419, 51.454468}, + {59.622116088867, 36.215744018555}, + {101.733934, 3.203612}, + {139.04365539551, 37.921371459961}, + {-149.81300354004, 61.117630004883}, + {-79.378280639648, -0.014419555664062}, + {-96.379623413086, 32.517471313477}, + {-101.730001, 51.267017}, + {139.3155670166, 36.527481079102}, + {60.530136, 56.808243}, + {139.70420837402, 35.662307739258}, + {65.423585, 57.245636}, + {18.420453, 53.343014}, + {139.498764, 35.681534}, + {-80.753624, 35.114136}, + {78.355178, 11.841889}, + {4.8758697509766, 46.61018371582}, + {116.42143249512, -8.6290740966797}, + {8.523259, 47.358942}, + {-0.183792, 51.561813}, + {8.4793853759766, 51.97151184082}, + {47.141647338867, 51.875381469727}, + {-0.040512, 52.617874}, + {98.33931, 8.147736}, + {101.72996520996, 3.0905914306641}, + {82.609634399414, 49.901962280273}, + {2.3545074462891, 48.847274780273}, + {-0.358626, 43.332721}, + {5.3084564208984, 43.452987670898}, + {127.073246, 37.541712}, + {24.222793579102, 53.582382202148}, + {29.04153, 40.990942}, + {120.22407531738, 31.45866394043}, + {120.37239074707, 31.576766967773}, + {77.593002319336, 12.938461303711}, + {120.31471252441, 31.583633422852}, + {126.7293548584, 37.33772277832}, + {7.0539093017578, 50.890731811523}, + {-123.72184753418, 40.91926574707}, + {36.195938, 55.129371}, + {73.041915893555, 19.240493774414}, + {136.88484191895, 35.225601196289}, + {-4.40697, 55.917414}, + {2.3627471923828, 48.709945678711}, + {127.09190368652, 37.550582885742}, + {111.22215270996, 30.693740844727}, + {77.956924, 27.177887}, + {81.263809204102, 43.922653198242}, + {103.86405944824, 1.2833404541016}, + {101.8322, 2.843668}, + {139.67948913574, 35.636215209961}, + {22.685544, 51.20339}, + {98.961410522461, 18.85871887207}, + {70.605697631836, 29.702224731445}, + {25.684891, 60.989914}, + {46.044388, 37.346649}, + {-87.876277, 42.130458}, + {136.62772, 35.375924}, + {-0.102581, 51.53681}, + {5.260561, 43.425963}, + {27.522934, 53.986683}, + {-80.562265, 28.02006}, + {-80.372722, 25.592739}, + {10.72237, 59.908493}, + {55.212021, 25.117493}, + {-47.813187, -15.795593}, + {-73.477249145508, 45.967483520508}, + {3.1894683837891, 45.860366821289}, + {73.826065063477, 15.498275756836}, + {-81.855862, 30.085922}, + {14.713569, 49.823971}, + {-48.469619750977, -1.4124298095703}, + {50.14795, 26.377297}, + {138.15788269043, 36.627731323242}, + {-118.08311462402, 33.816604614258}, + {16.949844360352, 43.355484008789}, + {117.14515686035, -0.47447204589844}, + {-80.399244, 27.428754}, + {-103.34907531738, 20.671463012695}, + {13.733754, 54.161234}, + {-74.183120727539, 40.908279418945}, + {119.452286, -5.145584}, + {9.417801, 56.472702}, + {-77.042272, 38.907415}, + {54.320526, 31.879578}, + {-73.42059, 41.414963}, + {8.7238311767578, 53.37776184082}, + {13.263931274414, 55.613479614258}, + {-84.415288, 39.169641}, + {43.012161254883, 36.699142456055}, + {139.81269836426, 36.438217163086}, + {-3.093681, 57.052689}, + {77.014846801758, 10.036697387695}, + {31.240310668945, 30.088119506836}, + {2.0688629150391, 41.460342407227}, + {77.593002319336, 13.075790405273}, + {6.4002227783203, 60.627365112305}, + {12.614364624023, 44.035263061523}, + {75.916213989258, 30.870895385742}, + {-9.2758941650391, 38.741226196289}, + {140.763561, -37.822173}, + {115.254135, -8.659744}, + {-76.61382, 39.279779}, + {59.624862670898, 36.291275024414}, + {38.971481, 45.052414}, + {96.129684448242, 16.809768676758}, + {-74.76676940918, 10.929336547852}, + {15.95832824707, 46.66374206543}, + {-84.246597290039, 10.006484985352}, + {145.038285, -37.861074}, + {133.70018005371, 33.614730834961}, + {-5.955734, 37.357407}, + {10.752182006836, 59.90364074707}, + {7.4549102783203, 53.259658813477}, + {98.306465, 7.816425}, + {-72.301128, 18.571489}, + {8.54006, 47.496456}, + {33.40828, 34.975662}, + {-0.402603, 39.300156}, + {-80.258560180664, 40.582809448242}, + {-0.20393371582031, 51.534805297852}, + {106.765366, -6.257858}, + {122.22702, 40.676193}, + {16.654439, 52.424742}, + {122.216721, 40.667267}, + {-2.485657, 53.067055}, + {-17.332649, 14.755325}, + {-0.088577270507812, 51.512832641602}, + {127.288382, 35.055227}, + {-73.706818, 40.985527}, + {23.881867, 38.005141}, + {36.34758, 50.038834}, + {6.7737579345703, 49.134292602539}, + {7.173386, 49.3396}, + {1.5332794189453, 48.432540893555}, + {30.308304, 59.932022}, + {3.3432769775391, 6.7119598388672}, + {2.268162, 41.466694}, + {139.45152282715, 35.91911315918}, + {16.93473815918, 52.41096496582}, + {108.520756, -6.708558}, + {9.3239593505859, 45.501937866211}, + {-39.0205, -4.960887}, + {27.980117797852, 31.067276000977}, + {10.076091, 53.575483}, + {137.743149, 34.732635}, + {104.06318664551, 52.209091186523}, + {75.752792, 26.902771}, + {10.121216, 53.582289}, + {103.73085021973, 1.3588714599609}, + {9.3939971923828, 51.245040893555}, + {0.262527, 51.600357}, + {-65.829392, 18.390427}, + {115.22117614746, -8.6702728271484}, + {-81.228104, 27.354126}, + {31.80542, 50.236359}, + {-56.470413208008, -24.588088989258}, + {-88.367019, 42.963822}, + {49.716567993164, 52.98225402832}, + {74.511337280273, 15.831985473633}, + {114.17067, 22.318642}, + {-43.181076049805, -22.966232299805}, + {38.988418579102, 45.45524597168}, + {9.7455596923828, 55.841445922852}, + {51.220321655273, 35.493392944336}, + {78.460922241211, 28.911209106445}, + {0.50468444824219, 45.91667175293}, + {-90.482455, 19.851517}, + {99.036484, 18.817062}, + {20.86235, 53.55526}, + {20.896027, 52.21456}, + {-0.821915, 51.277084}, + {34.779281616211, 32.072525024414}, + {-94.128799438477, 36.141586303711}, + {80.198135375977, 13.118362426758}, + {12.958331, 52.956167}, + {119.35066223145, 33.95393371582}, + {34.825058, 32.015305}, + {72.529678344727, 23.015670776367}, + {77.09587097168, 28.517074584961}, + {113.34663391113, 23.12141418457}, + {28.072128295898, 59.105758666992}, + {27.395095825195, -32.892379760742}, + {2.8845977783203, 42.697677612305}, + {-46.669694, -23.57178}, + {141.334356, 43.036168}, + {0.11741638183594, 51.758651733398}, + {-80.954028, 35.159235}, + {-76.707572, 39.356921}, + {16.388168334961, 48.197708129883}, + {-15.697402954102, 16.465072631836}, + {39.00229, 45.07952}, + {3.1853485107422, 13.04557800293}, + {9.088059, 47.295547}, + {37.665939331055, 55.643692016602}, + {7.7803802490234, 49.477615356445}, + {37.663192749023, 55.68489074707}, + {140.108414, 35.404129}, + {18.876684, 50.312042}, + {-76.220169, 1.927872}, + {-2.963974, 43.33049}, + {17.34936, 50.784303}, + {31.208724975586, 30.180130004883}, + {143.59946, 44.189575}, + {-66.039995, 18.306368}, + {9.5890045166016, 56.180648803711}, + {8.839874, 35.171356}, + {54.782638549805, 24.700698852539}, + {-121.208469, 37.814802}, + {26.907577514648, 37.726364135742}, + {8.903082, 44.456017}, + {106.68754577637, 10.771408081055}, + {2.4300384521484, 48.814315795898}, + {13.610000610352, 52.371139526367}, + {13.395767211914, 52.85041809082}, + {-1.806573, 38.09148}, + {138.26225280762, 34.813613891602}, + {14.402389526367, 53.269271850586}, + {15.290908813477, 49.958267211914}, + {10.71647644043, 46.062240600586}, + {1.2998199462891, 52.75016784668}, + {30.371704, 60.041313}, + {2.4437713623047, 48.906326293945}, + {-121.91184997559, 37.770309448242}, + {47.13752746582, 31.843185424805}, + {-118.012666, 33.855861}, + {-72.100016, -36.619588}, + {119.59510803223, 39.931869506836}, + {-90.941390991211, 14.655075073242}, + {-73.893826, 40.747809}, + {-74.073257446289, 4.6163177490234}, + {73.073776, 31.418564}, + {-51.120071411133, -30.029067993164}, + {8.5851287841797, 56.36604309082}, + {12.529220581055, 47.491836547852}, + {98.315963745117, 7.7913665771484}, + {39.892044067383, 21.426773071289}, + {9.789069, 54.126249}, + {-2.133072, 52.010125}, + {31.201858520508, -29.522323608398}, + {127.412567, 36.336594}, + {73.719635, 18.59642}, + {39.426041, 54.74968}, + {129.83436584473, 33.37028503418}, + {46.047134399414, 37.313003540039}, + {31.280136108398, 30.100479125977}, + {31.201172, 30.096359}, + {135.453873, 34.683838}, + {-75.27832, 40.131409}, + {77.005233764648, 29.001846313477}, + {39.970321655273, 21.344375610352}, + {77.370529174805, 28.654403686523}, + {-80.126473, 25.819417}, + {114.112473, 22.532043}, + {139.60121154785, 35.811996459961}, + {101.61598205566, 2.9642486572266}, + {-4.51197, 51.834228}, + {98.694992, 3.582687}, + {-1.303939, 51.050456}, + {46.067733764648, 43.487319946289}, + {28.150405883789, -25.748519897461}, + {10.856227, 53.722347}, + {106.796051, -6.274468}, + {108.874512, 34.19632}, + {32.012100219727, 46.866989135742}, + {137.7156829834, 35.73371887207}, + {-0.55824279785156, 44.850997924805}, + {80.417175, 16.294098}, + {16.255588, 46.286134}, + {10.075149536133, 33.900375366211}, + {136.960373, 35.184231}, + {16.780759, 48.018226}, + {106.665115, 10.777359}, + {23.466121, 46.690114}, + {77.516098022461, 10.741195678711}, + {5.0585174560547, 52.634811401367}, + {8.1374359130859, 53.171768188477}, + {34.852066040039, -19.828262329102}, + {-0.245323, 51.440517}, + {13.11981, 38.044154}, + {21.044073, 52.277706}, + {5.3537750244141, 52.029190063477}, + {37.766189575195, 55.609359741211}, + {39.253463745117, 21.415786743164}, + {-44.206924438477, -19.896926879883}, + {-73.837137, 40.8391}, + {-3.633682, 40.365738}, + {17.348963, 48.225969}, + {0.25108, 48.344193}, + {38.995972, 45.102997}, + {10.713729858398, 47.95051574707}, + {-81.303447, 41.664026}, + {19.914779663086, 50.031051635742}, + {-79.043751, -8.081562}, + {-46.835915, -23.539158}, + {123.30299377441, 9.3061065673828}, + {-47.175819, -22.888804}, + {141.43730163574, 43.008041381836}, + {-89.524612, 38.610764}, + {-101.179071, 20.561964}, + {27.934169, -26.228293}, + {-105.13023376465, 39.699783325195}, + {-117.16987609863, 33.107986450195}, + {101.65535, 3.220139}, + {133.922224, 34.617233}, + {82.167434692383, 25.376358032227}, + {83.39241027832, 27.529678344727}, + {3.0233001708984, 50.03791809082}, + {105.822372, 21.170883}, + {-3.821472, 40.370975}, + {1.422043, 43.641815}, + {10.750809, 34.737396}, + {37.807388305664, 55.811233520508}, + {7.465095, 51.516968}, + {27.868372, 37.841202}, + {-87.480344, 37.570959}, + {72.618942260742, 23.070602416992}, + {113.08708190918, 22.602310180664}, + {3.4929656982422, 45.111923217773}, + {83.557205200195, 25.935287475586}, + {99.205856323242, 7.9314422607422}, + {-57.578875, -25.307755}, + {5.2219390869141, 7.6169586181641}, + {16.528244018555, 38.89778137207}, + {24.623794555664, 44.996566772461}, + {79.497756958008, 26.443405151367}, + {60.525741577148, 56.795883178711}, + {39.923859, 43.434677}, + {-78.005676, 39.411392}, + {-99.263534545898, 19.362716674805}, + {-73.621379, 40.783717}, + {111.222272, -7.67581}, + {7.8874969482422, 47.648391723633}, + {7.452163, 48.284912}, + {106.672132, 10.752734}, + {-87.875895, 42.758714}, + {8.3846282958984, 50.05989074707}, + {27.796759, 41.155939}, + {4.876556, 45.027122}, + {76.520462, 9.980049}, + {104.93385314941, 11.558303833008}, + {135.549316, 34.691391}, + {25.157329, 54.765479}, + {100.51460266113, 13.767929077148}, + {-45.009153, -12.12896}, + {7.117351, 53.424304}, + {174.54734802246, -36.773300170898}, + {14.917373657227, 57.544326782227}, + {101.67778015137, 3.1262969970703}, + {137.16087341309, 34.933090209961}, + {14.48204, 35.863495}, + {112.74787902832, -7.2736358642578}, + {17.588673, 59.18821}, + {-5.8550262451172, 37.431106567383}, + {1.5209197998047, 41.189804077148}, + {13.523483276367, 47.93815612793}, + {57.096633911133, 30.248794555664}, + {18.627319, 57.644577}, + {-1.8917083740234, 54.632949829102}, + {27.823386, 37.853022}, + {-73.140793, 41.211385}, + {-0.38658142089844, 45.074844360352}, + {-51.405715942383, -23.367233276367}, + {-81.596145629883, 27.765884399414}, + {15.610885620117, 58.405380249023}, + {3.232956, 51.222153}, + {6.6172027587891, 46.529159545898}, + {120.98762512207, 14.572677612305}, + {116.31843566895, 39.982681274414}, + {-58.618240356445, -34.484024047852}, + {12.301254272461, 45.452499389648}, + {-122.84523, 45.403061}, + {134.845505, 34.344978}, + {120.937371, 14.391875}, + {16.354179, 48.182602}, + {-98.997116, 19.615652}, + {-64.924393, 18.345108}, + {88.265533, 27.03804}, + {103.37791442871, 23.365859985352}, + {116.174515, 40.041183}, + {18.799667358398, 54.60823059082}, + {77.589655, 12.995625}, + {24.983596801758, 60.196151733398}, + {51.325035, 35.759468}, + {73.685303, 24.574699}, + {20.985946655273, 52.239303588867}, + {6.8767547607422, 49.354019165039}, + {13.493270874023, 51.166763305664}, + {26.958389282227, 37.752456665039}, + {136.47148132324, 34.695510864258}, + {14.453643, 46.056302}, + {5.8289337158203, 47.658004760742}, + {-84.190292358398, 9.9597930908203}, + {138.659668, 35.137024}, + {6.538639, 51.819491}, + {50.197219848633, 26.284103393555}, + {74.481125, 29.921951}, + {41.095734, 19.123764}, + {-6.814682, 53.172684}, + {-75.612717, 6.151461}, + {-84.996643, 34.699443}, + {13.798141479492, 45.588455200195}, + {-6.6844940185547, 34.190139770508}, + {15.221695, 59.36896}, + {2.1471405029297, 48.914566040039}, + {106.867722, -6.244217}, + {108.88481140137, 34.26155090332}, + {-100.73793, 40.960122}, + {101.36604309082, 2.9738616943359}, + {22.346878051758, 51.865768432617}, + {43.660354614258, 36.26106262207}, + {140.054398, 36.172485}, + {19.960098266602, 50.068130493164}, + {112.7808380127, -7.3107147216797}, + {9.109316, 45.51474}, + {2.3036956787109, 48.913192749023}, + {-120.546345, 34.741288}, + {27.941665649414, 59.127731323242}, + {37.636414, 56.0186}, + {113.1681060791, 23.015670776367}, + {21.939468, 51.620407}, + {-77.003860473633, -11.993637084961}, + {5.9099578857422, 51.825942993164}, + {113.65699768066, 22.820663452148}, + {-71.052607, 42.177139}, + {-74.086990356445, 4.6204376220703}, + {10.033883, 53.554565}, + {4.8346710205078, 45.77522277832}, + {37.508010864258, 56.131210327148}, + {-98.586502075195, 19.917526245117}, + {30.889728, 36.855659}, + {7.534347, 44.978954}, + {-6.647415, 4.76738}, + {15.588226, 48.214874}, + {39.110641479492, 21.653366088867}, + {30.445175170898, 59.873428344727}, + {21.717910766602, 63.091049194336}, + {21.135635375977, 48.76350402832}, + {-2.5632476806641, 49.430923461914}, + {118.32069396973, 33.94157409668}, + {-119.941727, 39.065048}, + {21.055641, 52.510872}, + {60.46724, 56.977831}, + {50.183487, 26.27655}, + {139.20707702637, 36.313247680664}, + {152.96058654785, -27.469253540039}, + {-87.994614, 41.865495}, + {-98.712844848633, 20.115280151367}, + {-1.918958, 52.472672}, + {-103.9395904541, 44.525527954102}, + {-93.279106, 45.129152}, + {-122.5106048584, 37.768936157227}, + {-70.84465, 41.665134}, + {150.79627990723, 59.569931030273}, + {24.942856, 37.444839}, + {140.21644592285, 38.043594360352}, + {50.75651, 33.906218}, + {39.904403686523, 21.408920288086}, + {114.189148, 22.324905}, + {114.12803649902, 22.320785522461}, + {77.532577514648, 28.449783325195}, + {11.16828918457, 43.010787963867}, + {16.327744, 48.192673}, + {106.1483, -2.075729}, + {112.23152160645, -7.1006011962891}, + {-79.870834, -2.033157}, + {110.226927, -6.955235}, + {5.805029, 49.667264}, + {20.197705, 47.172218}, + {-15.685666, 27.761423}, + {12.440643, 41.860657}, + {55.306206, 25.273018}, + {112.76822, -7.232076}, + {140.44853210449, 40.808029174805}, + {13.412246704102, 52.545547485352}, + {78.705826, 30.164569}, + {136.949387, 34.92691}, + {-16.709518432617, 28.063888549805}, + {101.565336, 3.163607}, + {10.979462, 59.890594}, + {13.798141479492, 41.225509643555}, + {151.470365, -33.21281}, + {77.479706, 13.129349}, + {139.38835144043, 35.693893432617}, + {12.409744262695, 51.315078735352}, + {-2.473862, 53.068598}, + {9.4626617431641, 42.74299621582}, + {120.331016, 22.699285}, + {39.040603637695, 47.281723022461}, + {100.53108215332, 13.751449584961}, + {13.355941772461, 38.135604858398}, + {19.148767, 50.301385}, + {5.0708770751953, 50.351028442383}, + {-122.404231, 37.769726}, + {-40.426254272461, -9.2539215087891}, + {18.570147, 47.483799}, + {114.18022155762, 22.278213500977}, + {13.41911315918, 55.595626831055}, + {3.936285, 7.418791}, + {-52.693852, -26.107983}, + {54.341812133789, 17.099533081055}, + {37.981796264648, 55.656051635742}, + {29.420700073242, 38.671188354492}, + {2.437363, 6.358109}, + {16.393661499023, 47.791213989258}, + {116.59034729004, 39.911270141602}, + {45.658493041992, 43.260726928711}, + {27.599057, 42.563871}, + {-87.871261, 41.781235}, + {-3.589554, 57.616196}, + {21.753616333008, 50.419692993164}, + {5.441208, 47.061996}, + {23.575973510742, 44.515914916992}, + {-34.949569702148, -8.1017303466797}, + {127.304763, 37.700014}, + {-81.284408569336, 36.197891235352}, + {-73.913955688477, 40.676193237305}, + {-77.695999145508, 18.04573059082}, + {37.391968, 55.846939}, + {130.55671691895, 46.229782104492}, + {100.42842, 5.240565}, + {-106.588225, 35.152842}, + {79.120101928711, 12.889022827148}, + {-7.943573, 12.622604}, + {-80.095138549805, 26.535415649414}, + {122.023773, 41.128006}, + {135.749817, 34.953003}, + {106.917206, -6.111119}, + {17.044601, 52.086868}, + {6.3343048095703, 43.858108520508}, + {-91.325912475586, 14.839096069336}, + {75.645706, 31.90728}, + {4.376956, 50.789683}, + {4.1933441162109, 50.45539855957}, + {77.621645, 13.057741}, + {76.33546, 9.501702}, + {-76.859743, 39.096315}, + {16.316299, 59.459152}, + {108.555918, -6.707166}, + {29.902155, 40.763068}, + {13.295516967773, 38.082046508789}, + {113.212567, -7.747108}, + {-89.703273, 35.051181}, + {27.487106323242, 53.87077331543}, + {109.719772, -6.916924}, + {48.19661, 30.41304}, + {1.1638641357422, 41.685562133789}, + {38.788834, -6.724319}, + {61.45546, 55.130768}, + {41.347732543945, 47.328414916992}, + {39.529495239258, -6.9948577880859}, + {-4.4817352294922, 38.293533325195}, + {-56.358406, -24.816325}, + {139.89235, 35.452366}, + {-83.683548, 22.455368}, + {11.107521, 43.770218}, + {28.321058, -25.764939}, + {26.685104370117, 38.310012817383}, + {72.946472, 19.230194}, + {139.582443, 35.698929}, + {16.372375, 48.216934}, + {-7.5771331787109, 33.134078979492}, + {7.1115875244141, 6.2505340576172}, + {135.46073913574, 34.677658081055}, + {55.329346, 25.293274}, + {-85.965957641602, 41.691055297852}, + {-8.412437, 40.193481}, + {73.017197, 19.24221}, + {9.161037, 48.71246}, + {-57.93068, -34.907227}, + {52.463837, 29.64798}, + {1.0773468017578, 49.895095825195}, + {2.089462, 48.89789}, + {32.793502807617, 39.951095581055}, + {28.003463745117, -26.247024536133}, + {0.53627014160156, 41.22688293457}, + {-64.822622, 46.099051}, + {25.850601, 62.318345}, + {24.636433, 35.398388}, + {-8.4835052490234, 37.150955200195}, + {19.364777, 47.446518}, + {27.164841, 38.438644}, + {-45.425872, -23.621476}, + {-2.644959, 53.326492}, + {-49.318914, -16.664659}, + {-2.193833, 47.610627}, + {-7.417831, 54.07402}, + {-68.138434, -16.497375}, + {3.1180572509766, 48.370742797852}, + {-74.183804, 40.560151}, + {72.856521606445, 19.123764038086}, + {112.709557, -7.26796}, + {-46.843741, -23.500443}, + {-122.979601, 49.186085}, + {14.426193, 50.091934}, + {120.07987976074, 30.313339233398}, + {139.457016, 35.916367}, + {-105.196983, 39.991746}, + {133.671929, 33.538807}, + {112.63664245605, -7.2763824462891}, + {37.502747, 55.3965}, + {71.431045532227, 51.18049621582}, + {75.942306518555, 11.802749633789}, + {-3.004596, 53.241912}, + {16.310699, 47.24258}, + {24.684219360352, 59.387283325195}, + {4.534495, 47.267679}, + {-2.244048, 47.275238}, + {27.88353, -25.728378}, + {140.854111, 36.969681}, + {11.06624, 49.331682}, + {9.1316986083984, 48.71955871582}, + {138.8768, 35.126038}, + {-2.899704, 53.404541}, + {120.25016784668, 36.267929077148}, + {13.185653686523, 55.70686340332}, + {2.395767, 50.734118}, + {-54.668206, -20.500128}, + {-118.526688, 34.434586}, + {-88.002548217773, 42.25959777832}, + {90.937271118164, 23.280715942383}, + {16.245457, 50.821176}, + {6.180496, 46.18721}, + {10.168533325195, 36.817245483398}, + {113.948822, 22.518539}, + {75.392990112305, 11.971664428711}, + {-2.502823, 56.751938}, + {15.995407104492, 47.340774536133}, + {-8.0055999755859, 31.61247253418}, + {84.018630981445, 24.973983764648}, + {138.20045471191, 36.613998413086}, + {121.46278381348, 24.994583129883}, + {-122.858744, 42.316959}, + {30.298233032227, 59.964065551758}, + {18.971386, 53.353381}, + {100.500897, 7.019796}, + {30.505599975586, 50.454025268555}, + {91.853256225586, 24.899826049805}, + {27.702643, -26.183582}, + {-72.804006, -36.894317}, + {-79.67903137207, 8.9490509033203}, + {-122.215885, 37.655778}, + {26.28547668457, 50.598220825195}, + {78.009024, 14.914627}, + {-6.4194488525391, 36.740341186523}, + {127.09958, 37.52163}, + {-97.082748, 32.572599}, + {139.778194, 36.474094}, + {2.6264190673828, 9.3885040283203}, + {0.29182434082031, 52.291488647461}, + {144.44892883301, -37.665939331055}, + {50.178452, 26.371994}, + {10.865666, 49.52603}, + {32.85530090332, 67.926406860352}, + {10.10124206543, 35.66780090332}, + {-87.640228, 41.943512}, + {30.635936, 50.429564}, + {-1.628511, 47.224538}, + {23.130755, 53.111389}, + {16.654587, 49.210281}, + {-95.929183959961, 18.261337280273}, + {-8.391952, 41.550598}, + {88.369217, 22.767105}, + {11.632461547852, 48.182601928711}, + {-2.4973297119141, 51.449661254883}, + {16.610641479492, 40.953598022461}, + {74.520950317383, 42.880325317383}, + {-72.704069, 41.599891}, + {-0.556869, 51.616516}, + {1.813391, 49.457477}, + {27.932053, -26.150208}, + {-38.120873, -5.114392}, + {-72.8388, 41.80876}, + {28.625564575195, 44.190444946289}, + {33.366623, 35.109558}, + {-100.14518737793, 20.50666809082}, + {-96.922435, 50.158406}, + {-5.4732513427734, 41.559219360352}, + {60.639577, 56.799293}, + {-80.091018676758, 35.05256652832}, + {121.02882385254, 31.947555541992}, + {-83.962326049805, 36.060562133789}, + {30.625076293945, 40.681686401367}, + {-120.547829, 46.61808}, + {12.286148071289, 41.833877563477}, + {-52.112612, -32.05373}, + {-118.420578, 33.905411}, + {80.776290893555, 16.504898071289}, + {10.124453, 54.301926}, + {33.725967407227, 44.452743530273}, + {27.936516, 43.212662}, + {142.73780822754, 46.972732543945}, + {77.36586, 28.625839}, + {77.540817260742, 12.932968139648}, + {4.0587615966797, 49.209823608398}, + {101.61595, 3.206486}, + {-43.128890991211, -22.883834838867}, + {-83.913575, 40.288926}, + {120.64842224121, 24.310684204102}, + {-0.45387268066406, 46.387710571289}, + {54.016342163086, 26.542282104492}, + {10.61897277832, 49.977493286133}, + {74.246292114258, 20.337753295898}, + {-87.696202, 41.857172}, + {39.013137817383, 45.102310180664}, + {80.255126, 13.070298}, + {104.297332, 52.292519}, + {16.499404907227, 48.225173950195}, + {107.615565, -6.937963}, + {80.253067016602, 13.053817749023}, + {1.543285, 43.586197}, + {26.403579711914, 61.888046264648}, + {-1.5167999267578, 54.99137878418}, + {108.15422058105, 15.831985473633}, + {77.702865600586, 12.952194213867}, + {39.270129, 51.663751}, + {82.837600708008, 25.269241333008}, + {7.3464202880859, 5.1189422607422}, + {-34.941329956055, -8.1511688232422}, + {114.150192, 22.248666}, + {-8.559254, 37.123754}, + {107.44285583496, -6.4963531494141}, + {0.152092, 46.563835}, + {49.991226196289, 36.278915405273}, + {141.33155822754, 43.080825805664}, + {15.089496, 50.144577}, + {-4.062859, 55.808155}, + {13.649826049805, 52.372512817383}, + {-76.820551, 42.131401}, + {17.032241821289, 51.098098754883}, + {-1.5758514404297, 6.6831207275391}, + {-58.626480102539, -34.696884155273}, + {151.849594, -32.748773}, + {-88.045120239258, 44.517288208008}, + {115.63591003418, -33.396377563477}, + {-73.808494, 45.300778}, + {139.74815368652, 35.644454956055}, + {140.192184, 35.967636}, + {-39.773941040039, -11.648941040039}, + {78.381216, 17.451041}, + {-58.514851, -34.52483}, + {140.81932067871, 35.732345581055}, + {127.070385, 37.601801}, + {101.774982, 2.995677}, + {17.456588745117, 54.281387329102}, + {139.780655, 35.673752}, + {100.46516418457, 5.2768707275391}, + {-121.944496, 37.370674}, + {139.74678039551, 35.659561157227}, + {30.478583, 59.739943}, + {-1.0251617431641, 37.612380981445}, + {30.94367980957, -29.891738891602}, + {2.300262, 48.876114}, + {37.189407348633, 55.840072631836}, + {-8.500103, 39.629157}, + {36.880417, -1.287918}, + {38.2386, 49.027863}, + {-81.33419, 31.870308}, + {-122.32521057129, 47.612686157227}, + {13.220444, 46.08284}, + {20.367966, 44.841385}, + {55.340194702148, -21.249618530273}, + {-122.701584, 38.329239}, + {104.07554626465, 30.627822875977}, + {82.91862487793, 55.036697387695}, + {87.130112, 53.756377}, + {-104.99559, 39.759272}, + {2.829752, 42.650325}, + {2.3325347900391, 48.80744934082}, + {130.35346984863, 46.802444458008}, + {18.097111, 59.117167}, + {-6.8273162841797, 39.916763305664}, + {120.17498, 22.966232}, + {76.407852172852, 9.2910003662109}, + {139.59297180176, 35.401382446289}, + {73.880996704102, 18.512649536133}, + {-0.072922, 5.635026}, + {139.779802, 35.743269}, + {35.776290893555, 54.426956176758}, + {121.10160827637, 24.891586303711}, + {86.112899780273, 20.95573425293}, + {76.803097, 30.747604}, + {20.491561889648, 44.797439575195}, + {39.026870727539, 22.690200805664}, + {8.671948, 49.384224}, + {-83.045425, 42.314987}, + {2.2798, 48.880795}, + {88.462601, 22.626686}, + {5.968095, 45.564804}, + {-0.41404724121094, 39.198532104492}, + {44.502182006836, 33.374404907227}, + {-3.031526, 57.055912}, + {3.2759857177734, 43.36784362793}, + {67.031021118164, 24.903945922852}, + {-93.365693, 38.250159}, + {8.336391, 49.263554}, + {4.8662567138672, 45.68733215332}, + {114.23377990723, 22.305679321289}, + {121.44493103027, 31.210098266602}, + {18.683722, 50.304533}, + {2.1196746826172, 48.836288452148}, + {-8.0385589599609, 12.516860961914}, + {120.21858215332, 22.986831665039}, + {103.03733825684, 18.578567504883}, + {128.19328308105, -3.6563873291016}, + {120.2872467041, 23.054122924805}, + {-42.793424, -5.060433}, + {-117.916217, 33.768625}, + {82.93098449707, 55.021591186523}, + {-118.09135437012, 34.10774230957}, + {9.452591, 51.35994}, + {-93.276969, 44.973685}, + {-46.941146850586, -23.122787475586}, + {-79.893264770508, -2.0949554443359}, + {100.499095, 13.645812}, + {108.60054016113, -7.3230743408203}, + {-77.126271, 38.852289}, + {-3.9859771728516, 48.620681762695}, + {2.502137, 48.908616}, + {100.89500427246, 12.961807250977}, + {120.31196594238, 22.58171081543}, + {-1.240082, 54.608917}, + {8.0097198486328, 50.405960083008}, + {10.822831, 51.982463}, + {-1.119283, 52.959593}, + {93.940658569336, 24.799575805664}, + {1.324265, 52.688374}, + {-0.13389587402344, 44.526901245117}, + {-43.39632, -22.838164}, + {44.116974, 41.988831}, + {144.980239, -37.81608}, + {104.330629, 15.117607}, + {-3.998413, 5.328502}, + {-0.82603454589844, 41.795425415039}, + {6.3603973388672, 51.639175415039}, + {-97.236557, 33.015289}, + {42.646865844727, 37.042465209961}, + {113.93989562988, 22.529525756836}, + {9.8746490478516, 51.481246948242}, + {-86.048355, 39.690563}, + {60.583355, 56.711421}, + {30.280380249023, -25.609817504883}, + {119.24903869629, 33.76579284668}, + {2.3146820068359, 6.4304351806641}, + {27.219414, 41.491721}, + {-122.9500579834, 44.841384887695}, + {10.210187, 54.123687}, + {28.933181762695, 30.846176147461}, + {7.461777, 9.073563}, + {15.60676574707, 51.71745300293}, + {2.581614, 51.086314}, + {36.218490600586, 50.026931762695}, + {39.69223, 47.235031}, + {3.6838531494141, 44.932022094727}, + {-95.567322, 46.582718}, + {76.855545043945, 43.205795288086}, + {-5.5583953857422, 41.541366577148}, + {5.3318023681641, 43.343124389648}, + {-89.189071655273, 13.697891235352}, + {136.522293, 34.576492}, + {115.46287536621, 36.48078918457}, + {16.407928, 46.210714}, + {83.109512, 54.857483}, + {-73.882369995117, 40.814895629883}, + {104.04121398926, 30.692367553711}, + {153.428895, -28.829644}, + {116.54228210449, 39.867324829102}, + {-111.095315, 32.362109}, + {83.325119, 25.532229}, + {-117.727236, 33.63533}, + {101.67778015137, 3.2032012939453}, + {-76.946182250977, -12.062301635742}, + {8.507636, 47.364709}, + {16.201400756836, 48.229293823242}, + {98.975124, 18.771917}, + {17.013006, 51.11221}, + {20.610695, 52.165489}, + {0.017166137695312, 5.7190704345703}, + {3.0741119384766, 48.979110717773}, + {101.66954040527, 3.0658721923828}, + {106.811916, -6.739797}, + {145.079528, -37.911889}, + {-9.3308258056641, 38.720626831055}, + {2.867836, 42.627366}, + {-1.3465118408203, 43.481826782227}, + {21.082077, 55.93277}, + {-94.125158, 46.251956}, + {107.58979797363, 51.823196411133}, + {-46.652755737305, -23.536148071289}, + {103.694458, 1.50238}, + {125.93284606934, 41.728134155273}, + {28.522567749023, 37.902145385742}, + {103.740463, 1.488419}, + {-3.464578, 40.466228}, + {104.13597106934, 30.629196166992}, + {22.782211303711, 51.983871459961}, + {26.446151733398, 54.50798034668}, + {10.690177, 53.864263}, + {-17.86377, 28.825722}, + {137.40119934082, 34.953689575195}, + {82.848587036133, 25.321426391602}, + {127.02598571777, 37.499771118164}, + {37.537554, 55.745418}, + {51.385116577148, 32.48176574707}, + {103.841907, 1.283027}, + {114.144058, 22.482834}, + {18.795547485352, 47.49870300293}, + {14.225327, 50.026016}, + {2.546071, 49.008909}, + {30.500565, 50.450363}, + {-7.5537872314453, 33.555679321289}, + {14.372177124023, 59.123611450195}, + {-5.098349, 34.027637}, + {106.843526, -6.15159}, + {5.4883575439453, 51.771011352539}, + {5.695038, 52.039352}, + {56.81510925293, 23.393325805664}, + {14.051075, 48.069731}, + {174.86595153809, -41.099166870117}, + {144.5711517334, -37.573928833008}, + {-97.694321, 32.974136}, + {9.6796417236328, 50.699844360352}, + {101.797943, 2.93335}, + {4.1713714599609, 50.756149291992}, + {-64.140243530273, -31.373519897461}, + {4.4020843505859, 44.653244018555}, + {101.454483, 3.090317}, + {2.651825, 44.35936}, + {14.86368, 40.442374}, + {-122.67643, 45.526485}, + {-83.785168, 39.690629}, + {-79.351013, 43.655083}, + {11.708562, 48.586561}, + {76.318588256836, 10.073776245117}, + {19.060073, 47.499927}, + {126.478974, 37.460743}, + {-58.260159, -34.714989}, + {-82.454452514648, 28.037796020508}, + {-123.045467, 49.271287}, + {-49.573745727539, -25.475234985352}, + {55.099868774414, 51.768264770508}, + {-0.455239, 52.251348}, + {76.740188598633, 8.8364410400391}, + {46.884841918945, 24.824295043945}, + {104.98329162598, 21.580581665039}, + {109.68132019043, 30.476760864258}, + {138.5945892334, 35.33821105957}, + {34.962483, 32.572893}, + {-46.645889282227, -23.610305786133}, + {139.52705383301, 35.663681030273}, + {-0.44013977050781, 5.5583953857422}, + {9.2868804931641, 49.084854125977}, + {-71.344921, 42.314628}, + {20.965347290039, 52.14729309082}, + {113.94676208496, 31.04118347168}, + {138.131332, 36.017532}, + {48.093338012695, 29.334182739258}, + {120.832443, 24.650574}, + {134.772262, 35.444412}, + {-75.938186645508, 45.356369018555}, + {120.0235748291, 35.868301391602}, + {1.9699859619141, 48.828048706055}, + {-92.918587, 18.012545}, + {3.2567596435547, 6.6501617431641}, + {137.111225, 35.07294}, + {37.532730102539, 55.645065307617}, + {28.133983, -26.304063}, + {-3.703984, 42.168009}, + {101.70799255371, 3.0741119384766}, + {27.908706665039, 39.607772827148}, + {73.037521, 26.336288}, + {-121.127436, 38.686292}, + {-0.97709655761719, 51.687240600586}, + {-58.706131, -34.440994}, + {24.905319213867, 57.155685424805}, + {120.47813415527, 22.680587768555}, + {9.966111, 53.443405}, + {100.264125, 13.55084}, + {72.934799194336, 20.355606079102}, + {-74.258652, 40.618515}, + {22.088076, 51.472226}, + {-58.677291870117, -34.63508605957}, + {-0.234147, 53.779795}, + {2.5000762939453, 48.870620727539}, + {11.549111, 48.133204}, + {30.369644, 59.936142}, + {-97.011336, 42.250672}, + {25.976486206055, 44.406051635742}, + {54.35417175293, 39.526748657227}, + {19.037246704102, 49.472122192383}, + {10.610733032227, 45.473098754883}, + {-99.236068725586, 19.804916381836}, + {1.378473, 38.974561}, + {-2.228165, 47.006149}, + {-123.469849, 49.43161}, + {-79.37458, 43.785753}, + {98.606415, 12.446823}, + {-90.002694, 35.03239}, + {40.531997680664, 45.440139770508}, + {4.3993377685547, 36.377792358398}, + {18.59504699707, 53.024826049805}, + {-88.313255, 39.544258}, + {-117.25639343262, 32.917098999023}, + {-74.59465, 46.186752}, + {99.768905639648, 7.0909881591797}, + {112.52952575684, -7.0346832275391}, + {8.84279, 48.379077}, + {-121.965077, 37.416427}, + {-117.93754577637, 33.85368347168}, + {24.597989, 65.846357}, + {-2.338029, 47.711564}, + {136.652413, 35.352631}, + {80.268173217773, 13.034591674805}, + {114.3189239502, 22.397689819336}, + {135.704498, 34.959869}, + {20.144119262695, 50.154647827148}, + {77.534585, 12.967617}, + {77.652053833008, 12.91374206543}, + {29.849739, 40.759186}, + {126.991525, 37.558175}, + {2.6071929931641, 41.594924926758}, + {7.5112152099609, 6.4414215087891}, + {-80.063278, 26.531296}, + {3.61931, 51.538926}, + {-44.329147338867, -19.954605102539}, + {39.585800170898, 24.46174621582}, + {39.124374389648, 21.682205200195}, + {21.998062133789, 62.641983032227}, + {132.81184, 34.537165}, + {140.18623352051, 39.681930541992}, + {118.17649841309, 33.90998840332}, + {113.42079162598, 30.347671508789}, + {-71.308594, 46.763077}, + {47.517242, -18.906784}, + {46.737899780273, 24.699325561523}, + {114.2310333252, 22.300186157227}, + {140.43891906738, 41.200790405273}, + {87.195511, 25.89592}, + {78.675155639648, 10.822219848633}, + {10.11527, 53.555756}, + {121.485855, 31.186752}, + {55.114974975586, 25.035781860352}, + {122.9500579834, 41.115646362305}, + {-70.503611, 41.773301}, + {-79.511489868164, 43.034133911133}, + {10.93620300293, 49.419937133789}, + {-5.2040863037109, 38.520126342773}, + {-5.413512, 38.599777}, + {72.919693, 20.455399}, + {81.005219, 26.854019}, + {-46.548385620117, -23.577346801758}, + {174.638672, -36.884144}, + {22.573471069336, 52.69660949707}, + {-71.481857299805, -41.16096496582}, + {34.817736, 32.014298}, + {2.1306610107422, 41.388931274414}, + {30.781631469727, 36.916122436523}, + {1.8532562255859, 48.911819458008}, + {77.564163208008, 12.890396118164}, + {-74.785995483398, 10.987014770508}, + {90.365982055664, 23.82453918457}, + {46.692581176758, 24.79133605957}, + {-1.4591217041016, 53.508224487305}, + {32.782516479492, -15.623245239258}, + {28.802552, 41.033029}, + {7.7968597412109, 44.396438598633}, + {-99.161911010742, 19.423141479492}, + {-92.859879, 45.033493}, + {-0.099952, 51.504082}, + {-73.206821, 46.08753}, + {-83.996658325195, 34.017105102539}, + {145.41847229004, -38.076553344727}, + {104.16481018066, 30.62370300293}, + {-73.589054, 45.582497}, + {-84.477310180664, 39.143600463867}, + {-96.966687, 32.727177}, + {-91.527059, 14.847038}, + {75.695114135742, 11.440200805664}, + {-86.269454956055, 12.128219604492}, + {-84.492645, 33.554443}, + {121.494715, 25.145142}, + {3.3776092529297, 6.6323089599609}, + {4.5407867431641, 50.887985229492}, + {75.685501, 31.274643}, + {13.537028, 52.575228}, + {51.445541381836, 25.265121459961}, + {24.72423, 59.401339}, + {-90.363235473633, 30.049667358398}, + {-117.714887, 33.616624}, + {121.052508, 14.572361}, + {2.034744, 50.375727}, + {104.67430114746, 31.064529418945}, + {-0.67222595214844, 51.982498168945}, + {6.1956024169922, 46.23664855957}, + {32.55729675293, 15.724868774414}, + {17.234802, 53.794327}, + {-86.20079, 33.927841}, + {-100.433578, 20.67474}, + {4.503021, 51.879501}, + {73.102340698242, 19.042739868164}, + {135.1847076416, 34.039077758789}, + {44.98420715332, 53.181381225586}, + {101.44569396973, 0.53627014160156}, + {136.581345, 34.88411}, + {20.129927, 50.02734}, + {101.616661, 3.192176}, + {77.158585, 28.697891}, + {35.314179, 48.619995}, + {-107.43461608887, 24.810562133789}, + {-1.3121795654297, 38.517379760742}, + {7.8723907470703, 50.857772827148}, + {20.433883666992, 44.750747680664}, + {37.911758, 55.694504}, + {6.1516571044922, 49.297714233398}, + {31.141438, -29.634248}, + {28.657150268555, 50.190353393555}, + {100.409661, 13.859315}, + {106.193866, -6.128335}, + {140.19035339355, 35.564804077148}, + {5.6449127197266, 45.177841186523}, + {-99.263878, 18.717957}, + {-75.205473, 39.952344}, + {37.019119262695, 39.749221801758}, + {-118.394364, 33.873353}, + {4.638137, 51.056748}, + {12.174911499023, 58.033218383789}, + {72.873001, 19.292679}, + {13.22319, 43.714828}, + {-84.156647, 10.018845}, + {-84.115051, 33.91974}, + {-8.014755, 31.630325}, + {-64.24118, -31.405792}, + {-114.77210998535, 35.169296264648}, + {51.412452, 35.75883}, + {-77.606802, -11.111369}, + {-46.636276245117, -23.621292114258}, + {32.453416, 40.388385}, + {-122.175693, 47.596617}, + {-99.618645, 19.162138}, + {-79.576011, 43.595468}, + {126.94496154785, 37.046585083008}, + {-58.28903, -34.757263}, + {139.649826, 35.654892}, + {120.501205, 22.783585}, + {-123.140749, 49.227677}, + {-88.796997, 36.00563}, + {18.637619018555, 54.258041381836}, + {9.298782, 45.359116}, + {99.679641723633, 8.1649017333984}, + {-58.403508, -34.802503}, + {46.537628, 56.326675}, + {21.601868, 37.508011}, + {35.214615, 31.758957}, + {71.488723754883, 51.153030395508}, + {85.147476196289, 25.612564086914}, + {3.392029, 6.651535}, + {16.480179, 41.24556}, + {81.295394897461, 24.538650512695}, + {139.47898864746, 35.676040649414}, + {34.933090209961, 32.078018188477}, + {-6.258274, 53.358536}, + {106.1986541748, 28.231430053711}, + {106.41014099121, 28.041915893555}, + {31.205978, 30.079056}, + {33.337326, 35.160245}, + {121.517715, 25.060158}, + {75.116958618164, 12.514114379883}, + {80.256271, 13.077621}, + {-73.642076, 45.572025}, + {37.661819458008, 55.775527954102}, + {-48.54377746582, -27.579116821289}, + {-119.29044, 36.300965}, + {6.982124, 50.939348}, + {0.14076232910156, 51.864395141602}, + {-118.043005, 34.038083}, + {12.139205932617, 44.439010620117}, + {26.8891, -33.54307}, + {-2.330731, 53.712069}, + {-118.409467, 34.000135}, + {-0.544232, 53.213816}, + {107.61177062988, -6.9152069091797}, + {2.317422, 48.769835}, + {80.946578979492, 26.767501831055}, + {-0.25199890136719, 51.354904174805}, + {77.213973999023, 28.533554077148}, + {47.915293, 29.299414}, + {-2.5412750244141, 53.594741821289}, + {-0.162735, 51.186905}, + {-74.913852, 40.16034}, + {30.260056, 59.896774}, + {104.27467346191, 30.968399047852}, + {4.9967193603516, 44.76448059082}, + {-74.180374, 4.588165}, + {-2.553908, 52.981981}, + {-82.767563, 27.859726}, + {136.87797546387, 36.391525268555}, + {-87.788655, 42.759018}, + {-121.693713, 36.662891}, + {-70.652389526367, -33.451309204102}, + {-92.117615, 31.681824}, + {107.46611, -6.408706}, + {-119.726724, 36.665136}, + {-65.19905090332, -26.826553344727}, + {-66.601181030273, 18.01139831543}, + {-103.27766418457, 20.497055053711}, + {5.171736, 51.848282}, + {7.929702, 49.90823}, + {79.124221801758, 21.116409301758}, + {17.347232, 62.326261}, + {121.439278, 24.969061}, + {4.39538, 51.982094}, + {81.397705, 26.869812}, + {81.230922, 22.007675}, + {-6.707312, 53.997433}, + {-84.003524780273, 33.786392211914}, + {100.231247, 16.793289}, + {77.072411, 28.510094}, + {44.527298, 40.129843}, + {19.589309692383, 51.67350769043}, + {-122.74023, 45.41922}, + {1.8862152099609, 48.374862670898}, + {121.29386901855, 31.116714477539}, + {37.837600708008, 55.719223022461}, + {8.5562896728516, 11.982650756836}, + {16.373749, 48.251266}, + {34.276505, -0.967026}, + {-118.273315, 34.074783}, + {-98.878326, 19.266586}, + {37.321712, 55.970988}, + {139.75364685059, 35.67741394043}, + {72.830429077148, 21.204299926758}, + {30.717866, -23.530244}, + {2.276779, 48.868698}, + {121.62483215332, 31.197738647461}, + {3.93425, 7.348801}, + {0.85762023925781, 45.047378540039}, + {72.948532104492, 19.03450012207}, + {30.240555, 60.023117}, + {72.198258, 22.616502}, + {100.53520202637, 13.745956420898}, + {-97.083664, 32.542191}, + {-118.19435119629, 33.820724487305}, + {-5.181443, 36.399316}, + {16.668054, 49.197331}, + {84.331741333008, 27.154769897461}, + {57.268294, 37.409823}, + {22.854081, 53.923422}, + {-98.274307, 26.298752}, + {74.626007, 19.69368}, + {-117.575912, 34.09826}, + {11.235580444336, 63.718643188477}, + {18.481063842773, -33.823471069336}, + {-150.575456, 60.529345}, + {2.739487, 42.683716}, + {-68.071975708008, -16.541976928711}, + {-79.586314, 43.580062}, + {2.9024505615234, 36.039962768555}, + {49.461135864258, 58.526229858398}, + {-75.537185668945, 10.426712036133}, + {-71.993959, 42.567309}, + {-106.64909362793, 35.183029174805}, + {-105.021114, 39.91848}, + {-80.167922973633, 26.094589233398}, + {-95.416946411133, 46.321792602539}, + {100.135297, 15.697891}, + {79.488143920898, 11.186141967773}, + {-95.814651, 30.180954}, + {-47.869997, -15.79911}, + {-106.063016, 28.630182}, + {55.483703, 25.411377}, + {16.506271362305, 59.35432434082}, + {76.333511, 10.04631}, + {-116.158216, 31.205979}, + {-76.435317993164, 3.2540130615234}, + {-79.906432, 36.113128}, + {11.955184936523, 51.074752807617}, + {30.935440063477, -29.770889282227}, + {14.346084594727, 50.050277709961}, + {4.3238067626953, 51.989364624023}, + {34.994888305664, 48.469619750977}, + {34.411239624023, 61.768569946289}, + {46.709576, 24.682846}, + {101.808814, 3.015496}, + {-116.992967, 34.897736}, + {45.758205, 40.938604}, + {101.520538, 12.938461}, + {139.95964050293, 36.681289672852}, + {46.728286743164, 24.787216186523}, + {117.18910217285, 36.990280151367}, + {139.81402, 35.69664}, + {-100.94513, 25.541153}, + {37.470108, -0.549728}, + {114.11842346191, 22.372970581055}, + {88.425522, 22.584183}, + {-109.034042, 25.843277}, + {77.321090698242, 28.499221801758}, + {23.338394165039, 42.692184448242}, + {39.719696, 45.238266}, + {9.6233367919922, 36.598892211914}, + {13.249512, 37.433167}, + {114.148636, 22.273636}, + {137.093994, 35.116837}, + {113.940067, -2.229023}, + {137.153615, 35.086899}, + {21.035385131836, 52.198104858398}, + {100.58458, 13.64376}, + {118.28636169434, 33.95393371582}, + {29.17361, 40.433604}, + {27.881185, -25.854983}, + {24.719238, 43.148804}, + {26.204452514648, -24.810562133789}, + {-118.62419128418, 34.206619262695}, + {-2.6236724853516, 53.39973449707}, + {2.465401, 48.821068}, + {-104.554138, 38.248901}, + {37.698212, 55.634766}, + {-5.7135772705078, 9.9391937255859}, + {20.284337, 63.799987}, + {-81.373672485352, 35.199508666992}, + {27.71369934082, 62.912521362305}, + {38.35807800293, 40.90690612793}, + {139.58313, 35.817947}, + {27.557144165039, 53.115463256836}, + {-58.841047, -34.490682}, + {-81.210339, 28.565357}, + {30.288237, 59.983252}, + {2.2336578369141, 41.439743041992}, + {-3.5492706298828, 37.226486206055}, + {32.632827758789, -25.848770141602}, + {-89.890123, 35.062586}, + {-123.543777, 48.618393}, + {-73.736916, 40.722885}, + {79.940221, 6.873869}, + {-85.372696, 40.651474}, + {77.245559692383, 12.69401550293}, + {76.931076049805, 12.545700073242}, + {-2.221298, 47.303696}, + {-74.749132, 10.958263}, + {-74.747543334961, 10.962295532227}, + {129.056819, 35.207652}, + {101.596756, 3.059692}, + {-95.055770874023, 29.814834594727}, + {-99.152297973633, 19.425888061523}, + {28.738174438477, -25.678482055664}, + {120.189056, 22.975159}, + {144.96940612793, -37.825241088867}, + {89.609298706055, 22.569351196289}, + {138.959884, 37.244339}, + {79.934463500977, 12.856063842773}, + {2.121563, 48.902435}, + {1.7076873779297, 41.649856567383}, + {47.408065795898, 27.392349243164}, + {17.126313, 48.999368}, + {135.505142, 34.806747}, + {103.73634338379, 1.4783477783203}, + {-122.392039, 37.617622}, + {55.935964, 54.728157}, + {12.107136, 52.55167}, + {-111.85935974121, 56.085891723633}, + {25.773239135742, 45.084457397461}, + {34.846572875977, 48.275985717773}, + {139.363106, 35.338906}, + {6.7957305908203, 51.229934692383}, + {118.54866027832, 31.265029907227}, + {78.942947387695, 26.989974975586}, + {-71.221552, 46.807404}, + {15.583419799805, 48.409194946289}, + {10.182266235352, 37.190780639648}, + {119.36988830566, 25.887222290039}, + {140.78773498535, 41.78581237793}, + {46.573104858398, 24.654006958008}, + {14.401879, 48.041744}, + {128.59075, 35.868335}, + {114.174385, 22.282677}, + {3.5822296142578, 6.8012237548828}, + {139.57237243652, 35.79963684082}, + {2.4369049072266, 48.86100769043}, + {-69.003968, 18.456557}, + {14.899520874023, 63.027877807617}, + {11.923422, 57.504512}, + {-62.987778, -40.807205}, + {8.610748, 52.070395}, + {23.943673, 48.303108}, + {-73.758773803711, 40.676193237305}, + {-0.130692, 39.801178}, + {10.238571166992, 36.835098266602}, + {17.278739, 62.431871}, + {17.365951538086, 45.893325805664}, + {73.981983, 18.592693}, + {74.46281, 31.57708}, + {-122.99055, 44.9397}, + {25.99983215332, 61.189041137695}, + {55.292129516602, 25.251388549805}, + {29.09045, 40.971715}, + {10.213851928711, 36.77604675293}, + {46.58821105957, 24.766616821289}, + {19.13578, 47.511063}, + {31.03157043457, -17.823257446289}, + {-79.36357, 9.102568}, + {-91.641166, 41.988071}, + {0.55549621582031, 52.27912902832}, + {25.353698, 45.509492}, + {103.71162414551, 1.3259124755859}, + {4.891722, 45.166225}, + {138.18260192871, 34.828720092773}, + {27.88948059082, -26.148147583008}, + {-118.299408, 33.878403}, + {-158.04176330566, 21.536636352539}, + {-87.130508422852, 39.036483764648}, + {98.679885864258, 3.5890960693359}, + {-88.398713, 32.428107}, + {172.626801, -43.523941}, + {79.915924, 6.913834}, + {100.12046813965, 8.2610321044922}, + {-95.372871, 29.750166}, + {37.718124389648, 55.820846557617}, + {10.573654174805, 45.624160766602}, + {139.668503, 35.496826}, + {-105.225677, 39.760208}, + {113.27934265137, 23.129653930664}, + {-85.754929, 39.817612}, + {114.09233093262, 30.458908081055}, + {38.259476, 56.343521}, + {20.446244, 44.803619}, + {13.414993286133, 52.527694702148}, + {-0.22178649902344, 51.515579223633}, + {94.787979125977, 20.876083374023}, + {44.065805, 56.230959}, + {5.905491, 43.138392}, + {77.602615356445, 13.03596496582}, + {138.95988464355, 37.436599731445}, + {72.535171508789, 23.003311157227}, + {77.714048, 12.98123}, + {139.562073, 35.439835}, + {145.20149230957, -37.815628051758}, + {77.303238, 28.582157}, + {35.949325561523, 32.422714233398}, + {7.2832489013672, 50.831680297852}, + {-47.023544311523, -22.959365844727}, + {-122.654646, 38.300348}, + {-0.44425964355469, 54.196243286133}, + {107.60078430176, -6.9055938720703}, + {25.930824, 35.166551}, + {-84.125826, 39.74721}, + {100.628336, 13.820011}, + {77.841567993164, 9.1440582275391}, + {-96.652908325195, 19.391555786133}, + {23.519668579102, 58.923110961914}, + {104.01512145996, 30.575637817383}, + {30.520706176758, 50.401840209961}, + {-97.191775, 19.632781}, + {72.985610961914, 50.061264038086}, + {-117.885506, 33.839266}, + {7.5043487548828, 48.822555541992}, + {76.955109, 8.508224}, + {78.986435, 11.390305}, + {-81.948116, 34.944277}, + {16.716356, 50.487808}, + {-48.892307, -25.20125}, + {6.035588, 49.194159}, + {100.97461, 12.972214}, + {29.875259399414, 59.73747253418}, + {73.808212280273, 18.564834594727}, + {6.092711, 49.250389}, + {80.232468, 13.135529}, + {-5.8289337158203, 37.344589233398}, + {-85.991343, 30.271817}, + {33.791885375977, 48.99284362793}, + {-118.047958, 34.100327}, + {11.274032592773, 58.879165649414}, + {27.951466, -26.190088}, + {-71.420435, 41.786845}, + {0.074501, 51.548464}, + {-71.031876, 42.41066}, + {37.54508972168, 55.781021118164}, + {-82.466812133789, 22.98957824707}, + {127.020493, 37.541656}, + {-94.80583190918, 35.25993347168}, + {9.273016, 53.063607}, + {96.324691772461, 21.85661315918}, + {-118.247429, 34.162743}, + {-95.52475, 30.08812}, + {79.295516, 13.644518}, + {-94.052495, 30.017138}, + {101.55143737793, 3.1468963623047}, + {-122.382325, 37.926088}, + {-62.155838012695, 45.573348999023}, + {-66.298465, 45.357219}, + {126.804258, 36.887346}, + {71.61506652832, 34.084396362305}, + {21.015244, 52.073593}, + {-111.00517, 29.13533}, + {50.45539855957, 33.914108276367}, + {85.806655883789, 20.345993041992}, + {121.516342, 31.330948}, + {19.193802, 54.188691}, + {9.805984, 56.615982}, + {121.47239685059, 31.274642944336}, + {51.310958862305, 36.057815551758}, + {41.6819, 27.560349}, + {18.939743, 49.815445}, + {78.210297, 30.034561}, + {2.2116851806641, 49.061508178711}, + {39.280243, -6.849976}, + {30.293503, 59.985428}, + {13.598328, 57.288895}, + {112.918844, 24.14552}, + {139.549713, 36.298141}, + {76.605516, 43.211777}, + {74.214706420898, 32.018966674805}, + {-98.518922, 29.460736}, + {-6.676254, 55.147247}, + {101.539631, 3.152071}, + {-16.807451, 28.362704}, + {139.52293395996, 35.729598999023}, + {35.573043823242, 33.893508911133}, + {85.275879, 23.126221}, + {-3.69837, 40.459772}, + {104.25819396973, 23.346633911133}, + {-99.210954, 19.544543}, + {12.711868286133, 42.594680786133}, + {2.641525, 6.506882}, + {-117.62992858887, 57.710494995117}, + {11.03474, 44.984209}, + {108.2283782959, 16.069564819336}, + {107.426534, -7.118134}, + {132.44361877441, 34.38102722168}, + {92.966995239258, 55.987014770508}, + {2.06067, 49.089027}, + {138.63578796387, 35.654067993164}, + {36.082534790039, 52.972640991211}, + {-106.132278, 28.702011}, + {7.417195, 48.2613}, + {23.725662231445, 37.907638549805}, + {17.623025, 59.203363}, + {72.531051635742, 23.026657104492}, + {135.53901672363, 34.615859985352}, + {14.406509399414, 50.09147644043}, + {-99.517593383789, 17.621383666992}, + {-71.117249, 42.409287}, + {-9.4173431396484, 39.014511108398}, + {29.652786, 40.777817}, + {-80.196967, 26.404304}, + {-7.3931121826172, 39.879684448242}, + {-76.608549, 44.241257}, + {0.72029113769531, 46.943893432617}, + {-70.61433, -33.422666}, + {137.89009094238, 36.359939575195}, + {-75.254287719727, 9.4118499755859}, + {-80.128784, 35.784187}, + {-99.946060180664, 20.693435668945}, + {113.006744, 23.735275}, + {-104.9585723877, 39.738235473633}, + {113.119869, 23.716049}, + {-63.183212, -17.790298}, + {-76.43669128418, 42.543869018555}, + {-96.689614, 32.909151}, + {80.012741088867, 9.6837615966797}, + {39.897537, 43.474274}, + {136.856575, 35.184402}, + {106.703401, -6.251908}, + {-88.921279907227, 39.77668762207}, + {150.07942199707, -33.386764526367}, + {18.831916, 54.094008}, + {19.052344, 47.474154}, + {-2.1965789794922, 54.729080200195}, + {37.716751098633, 55.787887573242}, + {12.889022827148, 56.433334350586}, + {1.828984, 50.936968}, + {100.57903, 13.70982}, + {-99.72770690918, 19.453353881836}, + {131.00166320801, 45.772476196289}, + {127.041415, 37.468811}, + {121.61659240723, 38.926620483398}, + {-1.860764, 54.511023}, + {8.2143402099609, 53.148422241211}, + {15.32341, -4.350815}, + {31.188125610352, 30.059280395508}, + {121.04530334473, 14.646835327148}, + {28.305587768555, -15.421371459961}, + {-86.088978, 34.23146}, + {2.7060699462891, 48.413314819336}, + {23.717422485352, 37.98454284668}, + {108.9493560791, 34.231338500977}, + {6.819534, 51.38649}, + {77.851181030273, 28.405838012695}, + {20.05485534668, 49.93766784668}, + {17.630442, 59.817035}, + {114.12803649902, 22.495193481445}, + {-90.945512, 30.499911}, + {-0.039138793945312, 51.468887329102}, + {88.084946, 22.136078}, + {-81.481056, 31.113499}, + {-2.520401, 52.71904}, + {30.332737, 59.911194}, + {23.739739, 61.500435}, + {76.796493530273, 30.73356628418}, + {7.79892, 4.975433}, + {11.910932, 57.717601}, + {31.575394, 51.570053}, + {-81.222952, 42.932852}, + {77.628707885742, 12.90412902832}, + {8.4876251220703, 49.141159057617}, + {12.527847290039, 38.020248413086}, + {6.606674, 46.581345}, + {-1.6898345947266, 39.221878051758}, + {39.538777, 24.455997}, + {114.17335510254, 22.279586791992}, + {61.022186, 54.983826}, + {6.0005950927734, 51.939926147461}, + {7.6554107666016, 45.083084106445}, + {32.290244, 31.246438}, + {-113.48573, 53.583851}, + {122.26341247559, 40.641860961914}, + {79.111862182617, 12.441329956055}, + {-79.623286, 43.683862}, + {-113.947449, 51.037674}, + {123.75755310059, 13.273544311523}, + {-6.462021, 54.412537}, + {-113.572015, 37.092146}, + {-116.6040802002, 33.004989624023}, + {32.555923461914, -25.928421020508}, + {100.505337, 13.633371}, + {141.06239318848, 43.17008972168}, + {14.500809, 40.775528}, + {18.932876, 53.600235}, + {77.422714233398, 23.181838989258}, + {11.310425, 44.833832}, + {8.9517974853516, 50.639419555664}, + {135.350626, 34.747072}, + {100.697421, 14.527373}, + {-118.122403, 34.077068}, + {0.333481, 51.436844}, + {-117.935142, 33.825325}, + {-0.34538269042969, 51.544418334961}, + {17.124252319336, 48.145523071289}, + {80.989151000977, 26.873245239258}, + {-117.96913146973, 33.933334350586}, + {-7.985982, 37.014215}, + {15.056191, 50.718041}, + {77.297744750977, 28.376998901367}, + {78.180770874023, 9.8870086669922}, + {139.64515686035, 35.714492797852}, + {116.44477844238, 40.000534057617}, + {78.44856262207, 17.349472045898}, + {-86.518020629883, 33.227462768555}, + {-14.157159, 28.222013}, + {-46.316386, -23.567864}, + {47.98798, 29.270239}, + {77.24967956543, 28.635177612305}, + {104.81678, 28.123627}, + {-3.638836, 39.066899}, + {75.501633, 11.748886}, + {46.730444, 24.666988}, + {4.656932, 51.464244}, + {120.664306, 24.16238}, + {46.746962, 24.675629}, + {20.87036, 39.564846}, + {-84.818161, 33.367813}, + {7.569164, 45.746951}, + {105.81275939941, 21.032638549805}, + {85.490799, 24.391022}, + {100.4285, 13.797643}, + {7.933006, 49.906557}, + {32.647933959961, 29.099349975586}, + {-73.134384, -36.75499}, + {77.728043, 12.920609}, + {19.034508, -33.345567}, + {103.66081237793, 1.5662384033203}, + {24.162368774414, 43.207168579102}, + {85.390548706055, 24.108810424805}, + {-93.149642944336, 46.02653503418}, + {12.687149047852, 56.231460571289}, + {77.535782, 13.055191}, + {135.71891784668, 34.993515014648}, + {74.065017700195, 15.006637573242}, + {-77.45072, 37.54273}, + {-2.277603, 52.33873}, + {121.40922546387, 37.53547668457}, + {-43.233603, -22.887665}, + {-57.520980834961, -25.304946899414}, + {-86.441281, 30.495341}, + {-58.670425415039, -34.630966186523}, + {130.91102600098, 33.83171081543}, + {-86.338121, 36.464585}, + {6.146021, 48.523229}, + {-73.736856, 40.670526}, + {177.285232, -38.012466}, + {57.455482, -20.23585}, + {9.258469, 45.504526}, + {26.122604, 44.68428}, + {150.746859, -34.035263}, + {77.106856, 29.623261}, + {88.354110717773, 22.481460571289}, + {27.962265014648, -26.174240112305}, + {-73.981246948242, 40.750350952148}, + {-102.43858337402, 20.269088745117}, + {-82.648287, 28.41529}, + {21.183014, 52.239475}, + {118.12294006348, 24.60319519043}, + {-9.074392, 52.454994}, + {101.557826, 3.155409}, + {39.599533081055, 24.467239379883}, + {113.25325012207, 23.093948364258}, + {101.84532165527, 2.7568817138672}, + {-4.706955, 36.722946}, + {32.661666870117, 25.788345336914}, + {12.563552856445, 41.88606262207}, + {13.26388, 51.89325}, + {120.7061, 24.342957}, + {101.2410736084, 4.2166900634766}, + {6.2340545654297, 48.06037902832}, + {117.585437, 3.302644}, + {25.483775, 65.00508}, + {-92.547043, 47.556107}, + {-7.891159, 42.288895}, + {51.401596069336, 36.682662963867}, + {-2.464714, 51.418076}, + {39.817886352539, 47.230911254883}, + {-43.439369, -22.863895}, + {120.23643493652, 40.288925170898}, + {110.39268493652, 29.093856811523}, + {76.856918334961, 30.710220336914}, + {38.013381958008, 54.897994995117}, + {100.624094, 14.108303}, + {109.72114562988, 28.268508911133}, + {1.8642425537109, 47.843399047852}, + {55.412979125977, 25.353012084961}, + {118.56513977051, 39.834365844727}, + {-92.761002, 45.02472}, + {122.03132629395, 41.232376098633}, + {118.07624816895, 39.532241821289}, + {76.354293823242, 26.024551391602}, + {-1.2023162841797, 46.155624389648}, + {8.4436798095703, 55.46516418457}, + {114.63066101074, 38.851089477539}, + {-122.557297, 49.215067}, + {28.835678100586, 41.046981811523}, + {13.077299, 55.619935}, + {32.083817, -28.791144}, + {10.014936, 53.511192}, + {-87.637003, 41.561841}, + {-87.989871, 42.224918}, + {5.80549, 43.950465}, + {-92.066174, 32.567206}, + {2.3613739013672, 48.845901489258}, + {-79.52522277832, 8.9751434326172}, + {135.512924, 34.695663}, + {3.081894, 36.733475}, + {-94.732672, 31.28114}, + {126.99714660645, 37.483291625977}, + {-77.216171, 38.888718}, + {77.517471313477, 12.952194213867}, + {-92.410812, 44.053574}, + {-94.462166, 16.404305}, + {-96.671619, 32.830753}, + {-75.7996, 45.348896}, + {100.903748, 13.581726}, + {5.303314, 43.597797}, + {-81.16408, 42.973368}, + {30.483627319336, 50.469131469727}, + {23.332901000977, 42.679824829102}, + {100.591014, 14.350952}, + {8.501633, 49.455917}, + {27.892227172852, -25.797958374023}, + {121.45042419434, 25.179977416992}, + {55.186386108398, 25.133285522461}, + {20.389252, 44.824905}, + {37.852707, 55.632706}, + {5.2754974365234, 36.49040222168}, + {29.498969, 61.577022}, + {13.453103, 52.512106}, + {91.264114379883, 23.79020690918}, + {76.307602, 9.854279}, + {55.719223, 24.23996}, + {116.37199401855, 39.865951538086}, + {9.486923, 55.477829}, + {0.011672973632812, 51.503219604492}, + {95.445785522461, 21.820907592773}, + {95.655899047852, 21.919784545898}, + {18.057924, 50.264303}, + {100.907795, 14.468701}, + {121.030711, 14.503521}, + {28.301468, 40.029373}, + {76.359786987305, 9.4654083251953}, + {-8.703461, 52.037659}, + {115.6729888916, 34.401626586914}, + {6.932954, 46.995339}, + {32.670593, 41.21727}, + {25.519180297852, 29.205093383789}, + {139.64241, 35.958546}, + {-0.355939, 53.764464}, + {21.684951782227, 40.619888305664}, + {46.83952331543, 24.82292175293}, + {24.568862915039, 56.817855834961}, + {-72.805894, 41.663823}, + {100.550974, 13.781539}, + {-0.012196, 51.51125}, + {21.367721557617, 53.473892211914}, + {80.248323, 12.896888}, + {124.87678527832, -9.2058563232422}, + {77.300949, 28.698349}, + {117.98835754395, 36.762313842773}, + {78.596878051758, 21.261978149414}, + {24.802322387695, 63.980941772461}, + {16.058578491211, 48.400955200195}, + {-75.21755, 40.184236}, + {6.7311859130859, 51.411209106445}, + {12.056534, 41.968185}, + {6.335474, 49.557607}, + {8.9847564697266, 45.71891784668}, + {75.744552612305, 26.936416625977}, + {126.67442321777, 45.794448852539}, + {-58.39047, -34.61998}, + {120.94574, 22.462234}, + {-80.863012, 35.775019}, + {46.286087036133, 24.450759887695}, + {-118.371506, 34.19268}, + {38.793894, 52.44393}, + {-70.710067749023, -33.555679321289}, + {139.51332092285, 35.560684204102}, + {-55.68798, -31.529388}, + {140.3263092041, 38.50227355957}, + {100.48988342285, 6.6185760498047}, + {-79.872665405273, 37.321243286133}, + {-2.1128082275391, 47.336654663086}, + {-3.6151885986328, 40.468826293945}, + {38.042221, 55.749436}, + {106.85508728027, -6.2917327880859}, + {77.279892, 28.632431}, + {121.47926330566, 31.23893737793}, + {88.131637573242, 22.275466918945}, + {77.586136, 12.925727}, + {28.05290222168, -26.178359985352}, + {-118.204651, 34.024658}, + {-123.073319, 44.041657}, + {6.308212, 52.830505}, + {120.31883239746, 32.871780395508}, + {-122.666931, 38.267899}, + {10.587393, 55.328075}, + {12.663803100586, 52.456283569336}, + {28.813705, 41.004868}, + {2.113571, 41.41182}, + {27.500839233398, -23.172225952148}, + {100.652625, 13.786598}, + {153.423729, -28.029213}, + {116.31706237793, -8.6167144775391}, + {134.026337, 35.070763}, + {-0.122223, 51.4888}, + {-75.568872, 6.233358}, + {-82.05574, 29.194565}, + {-1.9452667236328, 48.182601928711}, + {-42.818438, -14.949604}, + {34.853439331055, -5.7588958740234}, + {140.5542755127, 40.750350952148}, + {8.1923675537109, 53.152542114258}, + {34.330215454102, 48.808822631836}, + {-83.048418, 39.886231}, + {-3.7319183349609, 40.389175415039}, + {121.49024963379, 25.068740844727}, + {41.693272, 27.541544}, + {-117.653054, 34.129685}, + {4.8484039306641, 52.449417114258}, + {-97.130813598633, 33.833084106445}, + {98.609848022461, 56.136703491211}, + {-84.89549, 42.2651}, + {37.806702, 55.695877}, + {2.221273, 48.864013}, + {21.993486, 40.935289}, + {-64.203414916992, -31.387252807617}, + {-83.134231567383, 42.333755493164}, + {80.629348754883, 16.337356567383}, + {-87.988815, 43.299179}, + {14.181289672852, 50.042037963867}, + {-64.105225, -31.420898}, + {14.040016, 56.24173}, + {121.413002, 31.04187}, + {-83.447341, 42.402768}, + {7.321358, 47.767411}, + {4.786405, 48.860843}, + {-88.58085, 14.59053}, + {51.346521, 35.768782}, + {-111.84150695801, 40.705032348633}, + {-105.056227, 39.712251}, + {-35.701865, -9.646957}, + {-35.254440307617, -6.0129547119141}, + {107.39616394043, -6.6652679443359}, + {107.459396, -6.520102}, + {116.302966, 39.953428}, + {100.3003692627, 13.741836547852}, + {109.06608581543, -7.6224517822266}, + {-80.106655, 26.314243}, + {105.84434509277, 21.003799438477}, + {-59.034347, -31.889877}, + {4.3828582763672, 50.451278686523}, + {124.039078, 12.705688}, + {-104.87480163574, 39.50065612793}, + {-118.34266662598, 33.786392211914}, + {-71.488725, 42.914658}, + {6.200132, 48.678729}, + {-117.24952697754, 47.67448425293}, + {116.46904, 39.944687}, + {132.949539, 42.848465}, + {120.994492, 14.728775}, + {35.209163, 31.781304}, + {24.236527, 49.00589}, + {121.11534118652, 14.623489379883}, + {19.670084, 46.897202}, + {-17.443886, 14.712067}, + {101.83433532715, 3.3776092529297}, + {-89.931345, 38.716685}, + {107.65022277832, -7.0154571533203}, + {46.652755737305, 24.748764038086}, + {29.79561, -19.269333}, + {129.321994, 35.548376}, + {120.58113098145, 24.215927124023}, + {28.680954, 41.034622}, + {16.206401, 59.590924}, + {-0.13472, 39.802231}, + {-8.474579, 41.443863}, + {129.665909, 33.210526}, + {32.407608032227, 34.790267944336}, + {18.541214, 50.345535}, + {114.224625, 22.313156}, + {104.47654724121, 21.925277709961}, + {120.218582, 31.437378}, + {134.841944, 34.744012}, + {19.736251831055, 40.11589050293}, + {60.483169555664, 54.914474487305}, + {9.074364, 45.158615}, + {7.1610260009766, 50.724563598633}, + {107.628446, -6.919131}, + {19.337997436523, 47.615432739258}, + {19.131317, 47.373734}, + {19.093551635742, 47.523422241211}, + {116.27311706543, 40.023880004883}, + {17.952346801758, 59.460067749023}, + {104.18952941895, 52.321701049805}, + {-80.93147277832, 8.0660247802734}, + {135.45112609863, 34.663925170898}, + {-58.471298, -34.562513}, + {9.376907, 47.42363}, + {16.223373413086, 48.207321166992}, + {81.023941, 16.687546}, + {3.4352874755859, 6.4400482177734}, + {3.209328, 43.33668}, + {-4.2702484130859, 41.07307434082}, + {77.748184204102, 29.004592895508}, + {-54.65217590332, -25.520553588867}, + {13.219985961914, 43.52165222168}, + {4.032669, 51.839679}, + {73.808212280273, 18.687057495117}, + {46.714553833008, 53.094863891602}, + {-2.8942108154297, 43.20442199707}, + {16.963577270508, 52.936935424805}, + {18.031997680664, 59.328231811523}, + {20.883408, 44.005051}, + {-105.108547, 39.779248}, + {-2.232284, 47.654801}, + {76.767654, 13.826981}, + {12.626692, 41.477909}, + {-17.908111, 28.65708}, + {-70.254135131836, -18.022384643555}, + {-99.173584, 19.379883}, + {51.380996704102, 35.67741394043}, + {-117.68898010254, 34.034957885742}, + {-81.420364379883, 41.185684204102}, + {4.370617, 50.842009}, + {27.138597, 38.425637}, + {17.98942565918, 51.280746459961}, + {-115.42304992676, 32.619094848633}, + {-74.694211, 40.884731}, + {-0.184708, 51.111145}, + {81.034469604492, 21.098556518555}, + {145.02708435059, -37.63298034668}, + {-71.547775268555, 41.530380249023}, + {-85.139416, 35.05799}, + {54.001235961914, 32.30598449707}, + {9.985554, 53.57831}, + {10.881271, 45.480652}, + {133.03825378418, 34.39338684082}, + {-122.32457, 47.626115}, + {131.927207, 43.841211}, + {82.619591, 49.955521}, + {140.08735656738, 35.644454956055}, + {32.579269, -25.942841}, + {15.064021, 59.104304}, + {168.20823669434, -17.71614074707}, + {112.08045959473, 2.6923370361328}, + {125.033218, 8.225073}, + {-1.992113, 52.705175}, + {-9.4709014892578, 29.595108032227}, + {4.03074, 43.710326}, + {102.368546, 15.227051}, + {137.003769, 35.40358}, + {72.824661, 33.405716}, + {21.7852, 32.765353}, + {76.326934, 9.544003}, + {99.248428344727, 7.9218292236328}, + {136.959686, 35.006905}, + {101.57615661621, 3.0466461181641}, + {136.984268, 35.127548}, + {-78.882607, 44.684338}, + {80.349197387695, 6.3906097412109}, + {-118.337255, 34.090917}, + {3.7978363037109, 50.15739440918}, + {135.47172546387, 34.841079711914}, + {73.76838684082, 15.533981323242}, + {77.605637, 12.913467}, + {72.886361, 19.131104}, + {141.34941101074, 43.03825378418}, + {9.8966217041016, 51.80534362793}, + {12.243576049805, 45.683212280273}, + {106.74934387207, -6.1557769775391}, + {22.748566, 48.233414}, + {-4.2922210693359, 36.723861694336}, + {98.610535, 12.452316}, + {37.790908813477, 55.621719360352}, + {-74.61731, 10.421448}, + {0.25062561035156, 48.177108764648}, + {29.07600402832, 40.196914672852}, + {136.817551, 35.414429}, + {-117.469264, 34.017425}, + {49.174118041992, 55.764541625977}, + {6.4482879638672, 50.679244995117}, + {-99.21272277832, 18.93424987793}, + {-121.79786682129, 37.190780639648}, + {77.17414855957, 31.09748840332}, + {7.020264, 52.877886}, + {30.940933227539, 31.112594604492}, + {-89.659958, 40.573196}, + {-122.948421, 50.114113}, + {-2.205338, 53.487545}, + {-58.504944, -34.560242}, + {2.0867156982422, 48.892593383789}, + {48.731918334961, 31.303482055664}, + {3.3213043212891, 46.560745239258}, + {-64.648361206055, -33.920974731445}, + {22.289199829102, 43.875961303711}, + {101.749196, 3.02482}, + {-96.019805, 33.121953}, + {114.151383, 22.294006}, + {-98.379479, 29.291267}, + {115.982157, 5.704946}, + {25.585623, 45.759656}, + {145.177556, -38.297937}, + {105.75782775879, 20.92414855957}, + {12.961098, 66.319071}, + {48.057632446289, 29.211959838867}, + {-119.02771, 36.061428}, + {-1.8024444580078, 51.578750610352}, + {49.584732055664, 25.38459777832}, + {-117.976364, 33.805618}, + {100.947456, 14.847052}, + {18.08967590332, 59.534225463867}, + {140.73417663574, 40.827255249023}, + {7.009506, 4.776535}, + {-122.904054, 47.686157}, + {14.274673461914, 53.858413696289}, + {-7.5579071044922, 38.381423950195}, + {72.904803, 20.343529}, + {111.49406433105, -7.8490447998047}, + {120.47950744629, 30.750045776367}, + {51.37001, 33.944321}, + {30.891494750977, -24.875106811523}, + {32.673255, 40.205024}, + {14.38591003418, 50.110702514648}, + {30.516586303711, 50.436172485352}, + {30.871213, -30.074598}, + {100.890455, 12.953893}, + {28.623952, -27.427398}, + {-84.38236, 33.762236}, + {51.777877807617, 35.746078491211}, + {113.078842, 22.602997}, + {88.345413, 22.761154}, + {9.014969, 39.083405}, + {27.886251, -26.254347}, + {-74.773635864258, 10.982894897461}, + {-8.820616, 7.755334}, + {55.40885925293, 25.160751342773}, + {0.33439636230469, 49.55451965332}, + {2.934036, 36.74263}, + {31.04118347168, -29.858779907227}, + {103.137325, 5.299153}, + {-6.939926, 55.049744}, + {48.69758605957, 31.333694458008}, + {114.104691, 22.377548}, + {45.099563598633, 37.641220092773}, + {0.66398620605469, 51.972885131836}, + {11.534683, 45.546707}, + {76.631698608398, 14.008255004883}, + {75.89973449707, 22.754745483398}, + {-122.78114318848, 49.297714233398}, + {-116.680517, 31.886612}, + {-85.301284790039, 45.184707641602}, + {-13.868179321289, 28.742294311523}, + {-101.116917, 21.140852}, + {-74.06868, 41.477738}, + {30.342865, 59.93866}, + {78.022842407227, 11.787643432617}, + {-98.170394897461, 19.347610473633}, + {-85.929792, 12.916977}, + {-88.27033996582, 42.98469543457}, + {-80.258560180664, -3.4833526611328}, + {-98.732933, 20.117661}, + {101.721268, 3.137283}, + {96.796897, 20.724374}, + {-48.568496704102, -25.872116088867}, + {80.798263549805, 25.214309692383}, + {-83.825546, 33.756077}, + {24.93278503418, 60.164566040039}, + {104.41886901855, 16.095657348633}, + {-118.269058, 34.068192}, + {-3.9447784423828, 5.3372955322266}, + {9.154998, 45.488411}, + {78.352432250977, 12.55256652832}, + {102.078486, 15.011454}, + {74.736557006836, 13.340835571289}, + {120.62507629395, 31.245803833008}, + {73.826065063477, 18.501663208008}, + {21.141128540039, 52.246170043945}, + {91.898574829102, 24.908065795898}, + {72.588423, 23.098232}, + {-2.216, 50.75908}, + {88.246307, 24.111557}, + {139.758682, 35.662308}, + {-40.744857788086, -20.01091003418}, + {0.349502, 51.408006}, + {135.243831, 34.710617}, + {-118.518926, 34.183864}, + {76.008224487305, 11.905746459961}, + {77.428207397461, 17.48405456543}, + {77.980270385742, 16.753463745117}, + {3.598533, 50.850427}, + {28.671739, 41.030223}, + {-0.58433532714844, 51.79573059082}, + {31.407852172852, 30.155410766602}, + {76.352920532227, 28.138046264648}, + {-90.480789, 30.482006}, + {6.9124603271484, 51.008834838867}, + {80.195388793945, 21.807174682617}, + {106.762787, -6.303851}, + {-121.59461975098, 39.77668762207}, + {76.675186, 66.120529}, + {-86.644774, 30.427761}, + {-6.681747, 54.580078}, + {31.565781, 30.416336}, + {-0.979835, 51.457215}, + {5.217132, 48.654328}, + {58.482284545898, 23.525161743164}, + {3.3817291259766, 46.080093383789}, + {50.070191, 36.000137}, + {112.5707244873, 37.748336791992}, + {39.512558, 52.601395}, + {-71.01771, 42.405892}, + {7.8421783447266, 49.494094848633}, + {-82.796401977539, 27.962265014648}, + {131.629715, 33.228378}, + {11.158676147461, 49.433670043945}, + {-75.596742, 39.873791}, + {77.21809387207, 28.635177612305}, + {77.303181, 28.433132}, + {31.192246, 27.169189}, + {121.63032531738, 24.027786254883}, + {-122.55043029785, 45.747756958008}, + {88.378829956055, 22.922286987305}, + {113.20930480957, 23.166732788086}, + {113.26698303223, 22.762985229492}, + {-47.546768188477, -15.582046508789}, + {-103.35182189941, 20.672836303711}, + {115.227737, -8.70708}, + {-102.038458, 32.015944}, + {74.082870483398, 19.776077270508}, + {79.109802, 18.464584}, + {55.179808, 25.097506}, + {137.01805, 35.302049}, + {88.346771, 22.538615}, + {28.798599243164, 41.03874206543}, + {34.958324, 32.17844}, + {101.773042, 2.978158}, + {8.30642, 47.050827}, + {113.33839416504, 23.14338684082}, + {84.966201782227, 22.243881225586}, + {132.905045, 42.84668}, + {114.612625, -8.359706}, + {-72.520428, 40.885588}, + {17.172085, 51.237845}, + {115.503159, 38.873062}, + {126.985397, 37.569358}, + {-73.94416809082, 40.75309753418}, + {106.73286437988, -6.1379241943359}, + {14.490280151367, 48.395462036133}, + {-3.9282989501953, 5.3730010986328}, + {109.05235290527, 34.663925170898}, + {24.790421, 42.136002}, + {119.436023, -5.113904}, + {107.59391784668, -6.8781280517578}, + {79.948196411133, 7.9410552978516}, + {-121.555785, 36.99969}, + {37.499771118164, 56.018600463867}, + {117.254311, -0.289702}, + {11.25617980957, 47.114181518555}, + {-0.354166, 53.743899}, + {2.5914, 49.015846}, + {59.582290649414, 36.339340209961}, + {79.126282, 29.391861}, + {6.4249420166016, 51.181869506836}, + {134.9388885498, 34.681777954102}, + {29.056778, 37.752914}, + {139.70008850098, 35.531845092773}, + {3.773667, 43.537033}, + {2.414246, 48.633728}, + {29.940394, 40.77446}, + {53.129196166992, 52.873764038086}, + {45.725784301758, 41.630630493164}, + {16.326370239258, 48.175735473633}, + {100.61210632324, 13.754196166992}, + {9.263763, 52.928467}, + {15.775680541992, 40.625381469727}, + {67.148438, 24.88472}, + {6.88744, 51.203223}, + {31.270523071289, 51.479873657227}, + {-17.457601, 14.697554}, + {131.02638244629, 33.824844360352}, + {-120.9546661377, 39.098281860352}, + {29.18627, 40.204576}, + {-0.062631, 51.470729}, + {101.685778, 3.066105}, + {30.442268, 50.44467}, + {-82.968994, 42.629277}, + {-122.14942932129, 37.405014038086}, + {-77.115269, 38.910341}, + {135.4566192627, 34.828720092773}, + {-83.897778, 43.475786}, + {-64.631881713867, 18.424758911133}, + {-66.759321, 10.45365}, + {3.787994, 46.213837}, + {32.829666, 39.946747}, + {4.9788665771484, 51.830062866211}, + {-47.96547, -15.796831}, + {24.078598022461, 56.995010375977}, + {30.446548461914, 59.936599731445}, + {70.750351, 22.574844}, + {78.036575317383, 15.829238891602}, + {115.949659, -32.48768}, + {115.225296, -8.691357}, + {-48.065872192383, -16.01188659668}, + {-71.427242, 46.836254}, + {19.936752319336, 50.073623657227}, + {79.496383666992, 29.220199584961}, + {139.279999, 35.738663}, + {73.094101, 19.531632}, + {5.84919, 43.064346}, + {78.528214, 17.432899}, + {52.819516, 29.942553}, + {50.197219848633, 26.204452514648}, + {100.715955, 14.226326}, + {121.15791320801, 25.013809204102}, + {-83.132171, 42.803421}, + {140.584488, 39.285599}, + {30.396595, -29.605618}, + {-15.862197875977, 14.866561889648}, + {72.893600463867, 22.702560424805}, + {120.25978088379, 31.918716430664}, + {-2.3023223876953, 52.994613647461}, + {121.23481750488, 31.030197143555}, + {112.6586151123, -7.2805023193359}, + {-2.1663665771484, 51.83967590332}, + {-97.191238, 32.992287}, + {20.683822631836, 43.716659545898}, + {11.033706665039, 49.386978149414}, + {49.835046, 40.337365}, + {-73.854557, 40.722536}, + {9.408962, 55.030194}, + {101.594009, 3.140717}, + {114.18571472168, 22.46223449707}, + {-8.420334, 41.357346}, + {12.367172241211, 55.705490112305}, + {102.01698303223, 14.948959350586}, + {7.203284, 53.601989}, + {140.45402526855, 40.757217407227}, + {31.20735168457, 36.97380065918}, + {-89.164089, 43.1921}, + {-82.497531, 42.958242}, + {29.457778, 59.602694}, + {-98.56041, 29.406052}, + {28.6285, 41.016173}, + {2.1210479736328, 48.753890991211}, + {-0.45112609863281, 54.325332641602}, + {-1.430283, 54.858856}, + {7.7515411376953, 51.611709594727}, + {79.360427856445, 11.06803894043}, + {-93.33366394043, 44.640884399414}, + {27.105331420898, 38.459701538086}, + {106.742594, -6.318901}, + {139.38285827637, 35.542831420898}, + {-60.043533, -3.113463}, + {-83.099899291992, 30.347671508789}, + {-79.471664428711, 9.0355682373047}, + {-72.99907, 41.268906}, + {17.317886352539, 50.805587768555}, + {-88.437881469727, 44.233016967773}, + {-111.538697, 33.642197}, + {-122.391698, 37.748605}, + {101.72035217285, 3.0274200439453}, + {73.136672973633, 49.775619506836}, + {-89.225807, 13.702354}, + {74.812088012695, 14.600143432617}, + {0.508718, 47.29326}, + {102.668541, 16.507527}, + {35.410995483398, 29.508590698242}, + {5.183125, 51.204477}, + {2.438371, 50.955462}, + {-40.75309753418, -4.1823577880859}, + {88.312911987305, 22.486953735352}, + {77.285385131836, 28.389358520508}, + {101.74369812012, 3.0892181396484}, + {114.241333, 22.267227}, + {88.435593, 22.918167}, + {80.214614868164, 13.046951293945}, + {72.871628, 22.673035}, + {-122.617719, 38.20221}, + {72.86750793457, 22.680587768555}, + {144.9488067627, -37.806015014648}, + {121.04118347168, -8.6757659912109}, + {31.471708, 30.673831}, + {106.993204, -6.239903}, + {-90.89469909668, 46.670608520508}, + {31.382858, 59.270004}, + {16.087418, 59.569244}, + {101.597848, 3.15859}, + {-99.700928, 19.343491}, + {18.20915222168, 59.325485229492}, + {-118.336258, 34.100418}, + {18.004531860352, 53.777389526367}, + {25.505447387695, 64.916152954102}, + {51.545792, 25.253311}, + {11.929092407227, 48.460006713867}, + {0.026779174804688, 51.621322631836}, + {81.321487426758, 43.911666870117}, + {77.731704711914, 10.532455444336}, + {9.9089813232422, 53.624954223633}, + {-105.037983, 39.829384}, + {29.736557006836, 31.076889038086}, + {-97.001673, 32.767474}, + {39.045005, 45.027441}, + {-70.641403198242, -33.576278686523}, + {28.699491, 40.999357}, + {26.882858276367, 46.753005981445}, + {55.43083190918, 25.300827026367}, + {12.547073, 38.020248}, + {-0.85762, 51.373444}, + {-46.530048, -23.537679}, + {5.9607696533203, 50.473251342773}, + {-75.309726, 6.157386}, + {49.996719, 26.529922}, + {-36.944961547852, -10.491256713867}, + {19.800796508789, 47.706069946289}, + {5.616242, 49.684315}, + {-46.93977355957, -23.536148071289}, + {110.50117492676, -7.7556610107422}, + {-97.314834594727, 32.985763549805}, + {-87.886734, 42.217941}, + {-68.809433, -32.952805}, + {-100.91423034668, 22.150497436523}, + {-102.350238, 31.896745}, + {-79.466171, 9.048843}, + {74.958344, 15.459824}, + {-94.34440612793, 38.938980102539}, + {68.375473022461, 25.374984741211}, + {-98.75061, 20.10807}, + {-83.827743530273, 9.9021148681641}, + {-101.887215, 33.589674}, + {139.54490661621, 35.776290893555}, + {139.543076, 35.736923}, + {-99.647302, 18.940144}, + {46.75163269043, 24.821548461914}, + {139.77561950684, 35.952072143555}, + {7.612122, 47.602655}, + {115.91331481934, 36.837844848633}, + {-87.810287475586, 42.201919555664}, + {8.1374359130859, 52.623825073242}, + {-78.564835, -0.465317}, + {-3.641281, 40.473927}, + {127.44483947754, 37.115249633789}, + {-2.35222, 51.845628}, + {-46.59782409668, -23.527908325195}, + {127.11250305176, 37.551956176758}, + {77.614974975586, 11.286392211914}, + {113.91929626465, 22.500686645508}, + {119.56214904785, 32.426834106445}, + {130.44136047363, 33.642196655273}, + {78.896255493164, 29.198226928711}, + {138.6124420166, 35.972671508789}, + {14.60563659668, 49.98161315918}, + {9.7441864013672, 4.0711212158203}, + {139.804459, 35.709}, + {5.28273, 45.947708}, + {-64.186462, -31.465316}, + {-97.74088, 30.369536}, + {120.80360412598, 14.924240112305}, + {-96.126937866211, 18.549728393555}, + {77.362999, 28.620495}, + {37.597274780273, 55.602493286133}, + {-73.11681, 7.098946}, + {120.7527923584, 24.336776733398}, + {30.3452, 60.002353}, + {-113.779775, 52.262948}, + {2.6758575439453, 39.607772827148}, + {91.781158, 26.161881}, + {16.504373, 50.611666}, + {130.34797668457, 33.296127319336}, + {8.7183380126953, 51.582870483398}, + {77.58696, 12.959335}, + {17.639923, 59.194851}, + {121.26091003418, 37.560195922852}, + {28.874130249023, 41.077194213867}, + {37.904778, 59.08905}, + {18.394546508789, 54.557418823242}, + {12.492141723633, 41.891555786133}, + {29.021915, 40.260058}, + {12.550053, 43.073402}, + {3.096085, 50.463638}, + {7.634757, 47.97729}, + {3.989018, 50.112645}, + {10.474932, 53.334405}, + {3.9530181884766, 50.24528503418}, + {49.197463989258, 55.808486938477}, + {101.73957824707, 3.1153106689453}, + {51.457901000977, 35.688400268555}, + {37.490158081055, 55.624465942383}, + {-1.835405, 52.498169}, + {11.853563, 44.80362}, + {122.075043, 6.903763}, + {16.390914916992, 48.218307495117}, + {14.106251, 50.145181}, + {-81.824202, 33.836142}, + {-87.840532, 41.933404}, + {100.562282, 7.092174}, + {-75.886001586914, 9.4214630126953}, + {-119.23805236816, 49.863510131836}, + {-57.932113, -35.75449}, + {25.84602355957, 44.925155639648}, + {78.892135620117, 20.402297973633}, + {-122.20024108887, 37.751083374023}, + {-43.359769, -22.776981}, + {5.666886, 50.678558}, + {140.31394958496, 38.16032409668}, + {76.82258605957, 30.647048950195}, + {101.80274963379, 3.0081939697266}, + {17.429521, 60.444393}, + {13.768616, 55.912857}, + {-57.613962, -25.302068}, + {-72.694473266602, -12.857437133789}, + {25.544357, 43.087692}, + {-118.304225, 33.815564}, + {106.72325134277, -6.1914825439453}, + {78.433456420898, 17.548599243164}, + {30.289307, 50.451736}, + {77.674026, 27.57225}, + {114.105986, 22.374882}, + {-124.77653503418, 49.132919311523}, + {26.015786, 43.875407}, + {-96.688155, 34.926682}, + {10.931776, 44.655016}, + {48.069518, 29.171875}, + {40.46608, 28.760834}, + {78.482203, 14.614565}, + {135.07759094238, 34.64469909668}, + {-1.95282, 52.764245}, + {-58.40126, -34.62204}, + {136.1954498291, 34.775161743164}, + {121.211443, 24.898806}, + {74.334182739258, 17.401657104492}, + {14.280441, 46.559372}, + {19.071304, 47.505981}, + {12.887649536133, 50.909957885742}, + {76.052856, 14.390717}, + {-86.169204711914, 39.794540405273}, + {-71.831783, 42.549694}, + {33.330462, 35.102828}, + {9.133072, 51.549911}, + {-74.036178588867, 4.6753692626953}, + {0.99906921386719, 52.185745239258}, + {113.396759, 23.123474}, + {76.815719604492, 17.051467895508}, + {-73.985367, 40.846981}, + {30.50422668457, 31.432571411133}, + {6.4853668212891, 59.899520874023}, + {2.394333, 51.043854}, + {-98.203353881836, 26.319808959961}, + {-96.482332, 33.081691}, + {4.510574, 51.889458}, + {10.757675170898, 35.698013305664}, + {120.67588806152, 24.173355102539}, + {18.046417, 53.497925}, + {-77.218918, 39.144974}, + {30.486373901367, 59.987411499023}, + {29.871139526367, 31.170272827148}, + {-71.265793, 42.092056}, + {2.233856, 48.879842}, + {-49.164047, -25.348892}, + {139.772004, 35.660875}, + {-46.63215637207, -23.564987182617}, + {127.386167, 36.347793}, + {123.001556, 10.782394}, + {78.429336547852, 17.559585571289}, + {139.70558166504, 35.68977355957}, + {-87.854655, 42.183609}, + {6.716881, 49.135496}, + {-103.074966, 34.551315}, + {63.662338256836, 56.095504760742}, + {46.693954467773, 24.79133605957}, + {-116.861383, 32.469066}, + {106.048966, 10.355301}, + {7.6251983642578, 48.523178100586}, + {27.174683, 47.219927}, + {48.013412, 29.280624}, + {48.870620727539, 36.45881652832}, + {106.45545959473, 9.9268341064453}, + {10.000991821289, 53.548049926758}, + {75.800171, 26.833763}, + {19.063339233398, 47.497329711914}, + {126.7115020752, 45.791702270508}, + {30.43843, 50.446127}, + {9.257895, 48.881887}, + {-6.855819, 33.847414}, + {140.064182, 36.090603}, + {73.730278, 24.584999}, + {37.619247436523, 55.614852905273}, + {-47.586328, -22.379524}, + {8.1044769287109, 47.436904907227}, + {130.29716491699, 33.569412231445}, + {102.79838562012, 17.394790649414}, + {136.236649, 34.676971}, + {-0.98121643066406, 50.820693969727}, + {45.010299682617, 10.441818237305}, + {121.44905090332, 31.277389526367}, + {2.7074432373047, 44.392318725586}, + {48.011958, 29.327443}, + {72.787857055664, 21.190567016602}, + {21.221957, 45.744618}, + {-82.450332641602, 8.4189605712891}, + {6.61307, 53.113068}, + {-0.344696, 39.465637}, + {57.671356, -20.43663}, + {10.830459594727, 59.920120239258}, + {13.246521, 46.107601}, + {-118.172836, 34.006348}, + {30.474014282227, 49.700088500977}, + {9.536825, 45.505372}, + {18.057404, 51.740112}, + {-8.4889984130859, 40.209274291992}, + {-6.8355560302734, 34.017105102539}, + {-63.126754760742, 46.233901977539}, + {-4.485168, 36.638031}, + {51.644669, 32.622757}, + {28.882369995117, 40.998916625977}, + {135.62004089355, 34.629592895508}, + {8.3626556396484, 45.743637084961}, + {51.279373168945, 25.155258178711}, + {28.809585571289, 41.115646362305}, + {-2.466049, 53.181076}, + {6.068185, 52.47545}, + {-76.982517, 38.806686}, + {101.69425964355, 3.0658721923828}, + {-93.244400024414, 44.86198425293}, + {-0.017166, 51.61377}, + {139.70420837402, 35.700759887695}, + {-46.567611694336, -23.56086730957}, + {-87.791061401367, 41.976699829102}, + {144.903061, -37.675288}, + {13.654317, 51.130396}, + {-81.350326538086, 28.286361694336}, + {79.905623, 15.260239}, + {-74.126815795898, 45.250625610352}, + {3.367081, 46.36879}, + {126.95045471191, 37.455825805664}, + {27.99934387207, -26.120681762695}, + {-117.783552, 33.796506}, + {106.60789489746, -6.2285614013672}, + {3.9269256591797, 51.820449829102}, + {17.00522, 51.110889}, + {18.60466003418, 49.918441772461}, + {137.05101013184, 36.736221313477}, + {-99.218215942383, 18.960342407227}, + {83.076553344727, 25.307693481445}, + {72.849655151367, 21.207046508789}, + {135.77796936035, 35.015487670898}, + {36.263809204102, 34.882278442383}, + {116.10557556152, 39.935989379883}, + {101.643546, 3.198428}, + {106.83448791504, -6.1695098876953}, + {7.871077, 47.98833}, + {118.81645202637, 31.78825378418}, + {-70.574111938477, -33.407363891602}, + {16.132736206055, 38.583297729492}, + {135.88920593262, 35.004501342773}, + {-122.097598, 37.41368}, + {7.4411773681641, 43.75373840332}, + {100.52833557129, 13.72673034668}, + {133.50791931152, 34.593887329102}, + {36.203384399414, 36.337966918945}, + {-81.082306, 34.044228}, + {101.10374450684, 1.3231658935547}, + {103.162708, 5.260963}, + {18.28125, 57.627411}, + {-37.288589, -7.033914}, + {139.522476, 35.511589}, + {14.635848999023, 53.248672485352}, + {112.74513244629, -7.3258209228516}, + {73.015823364258, 19.099044799805}, + {-49.775619506836, -22.909927368164}, + {11.998781, 55.525855}, + {30.265274047852, 59.926986694336}, + {100.73432922363, 13.708877563477}, + {13.58528137207, 53.052291870117}, + {-43.429642, -23.003998}, + {-117.847595, 34.118042}, + {4.819675, 52.311078}, + {34.879531860352, -1.0059356689453}, + {12.494888305664, 55.678024291992}, + {-2.0825958251953, 51.448287963867}, + {20.808792, 52.169266}, + {37.771956, 44.706803}, + {18.041610717773, 59.329605102539}, + {-46.780815, -23.510606}, + {9.738747, 4.041549}, + {-54.652959, -20.514461}, + {114.177566, 22.281783}, + {-46.495112, -23.902248}, + {-40.8199, -14.8663}, + {-83.881301879883, 39.699783325195}, + {-82.987976, 42.465591}, + {-111.864853, 40.672073}, + {-75.784565, 45.33808}, + {-0.38246154785156, 49.197463989258}, + {1.3753509521484, 38.932113647461}, + {51.42952, 35.657272}, + {77.928085327148, 29.825820922852}, + {77.455673, 12.991333}, + {78.491134643555, 13.000259399414}, + {77.52571105957, 12.968673706055}, + {78.395004, 17.412499}, + {144.96666, -37.737694}, + {127.48054504395, 36.115493774414}, + {76.720276, 30.719833}, + {-117.32231140137, 33.197250366211}, + {136.9507598877, 35.036087036133}, + {-84.472847, 42.6091}, + {1.1583709716797, 45.685958862305}, + {100.55992126465, 13.732223510742}, + {29.38362121582, 40.86296081543}, + {77.187881469727, 10.014724731445}, + {114.1609954834, 22.326278686523}, + {1.6060638427734, 44.135513305664}, + {101.703537, 3.132156}, + {112.54463195801, 37.862319946289}, + {-2.876815, 51.275025}, + {12.915802, 55.841446}, + {36.895065, -1.319962}, + {13.41568, 43.297806}, + {-74.95464, 10.990643}, + {126.93260192871, 37.856826782227}, + {16.267318725586, 60.115127563477}, + {9.4516754150391, 4.6094512939453}, + {-95.324751, 29.991398}, + {32.433700561523, 50.58723449707}, + {-51.316821, -30.082967}, + {55.302429, 25.271988}, + {3.409195, 6.455416}, + {139.85939025879, 36.410751342773}, + {112.78358459473, -7.2653961181641}, + {14.770432, 48.211441}, + {35.354690551758, 32.065658569336}, + {5.894226, 48.662382}, + {75.894241, 22.725906}, + {-102.701405, 20.294549}, + {-1.806774, 52.435705}, + {120.022659, 30.280838}, + {77.230006, 13.474392}, + {28.963394165039, 41.00715637207}, + {37.44788, 56.020857}, + {53.304977416992, 56.848068237305}, + {24.894882, 49.968704}, + {-99.156293, 19.479446}, + {-86.950607299805, 33.629837036133}, + {104.629669, 30.130692}, + {17.464141, 40.673447}, + {54.641189575195, 24.426040649414}, + {-89.195938110352, 13.723983764648}, + {-1.615677, 48.061066}, + {121.021042, 14.601517}, + {140.03517150879, 35.644454956055}, + {-46.85051, -23.155746}, + {-50.904706, -17.783337}, + {4.340445, 51.915407}, + {31.234817504883, 30.051040649414}, + {114.18571472168, 22.324905395508}, + {73.024063110352, 19.228134155273}, + {6.9879913330078, 51.032180786133}, + {-118.113387, 34.001999}, + {17.281714, 54.472955}, + {-2.506581, 53.379182}, + {-0.36048889160156, 43.30192565918}, + {-2.326561, 43.286339}, + {50.994652, 35.791279}, + {51.477127075195, 35.758438110352}, + {75.892791, 22.756496}, + {109.03999328613, 14.46418762207}, + {4.8291778564453, 45.875473022461}, + {131.875076, 32.799339}, + {14.465560913086, 35.895767211914}, + {112.24800109863, -7.0992279052734}, + {33.340302, 47.911835}, + {-5.584991, 42.607813}, + {98.876838, 3.634009}, + {-48.215560913086, -13.533096313477}, + {-119.598312, 36.107717}, + {114.019547, 22.447586}, + {106.662178, 10.807323}, + {-11.103058, 10.742569}, + {1.736926, 43.087564}, + {134.69306945801, 34.836959838867}, + {-84.057083129883, 34.267044067383}, + {53.832321166992, 24.02229309082}, + {135.39756774902, 34.738082885742}, + {77.513443, 12.904495}, + {26.908676, 60.485367}, + {121.064804, 14.617172}, + {121.05628967285, 14.586410522461}, + {103.883613, 1.334392}, + {-2.562561, 51.383743}, + {29.81071472168, 30.993118286133}, + {78.872909545898, 30.247421264648}, + {-118.1339263916, 34.056930541992}, + {-4.09584, 36.737137}, + {78.82209777832, 30.226821899414}, + {72.941666, 20.33844}, + {-58.441086, -34.639206}, + {85.807983, 20.336426}, + {-2.2061920166016, 47.295455932617}, + {37.76481628418, 55.668411254883}, + {-96.188736, 38.402711}, + {106.74659729004, -6.2931060791016}, + {77.723694, 12.9776}, + {10.128707885742, 53.523330688477}, + {-76.970573, 38.857924}, + {1.3973236083984, 45.611801147461}, + {-99.161345, 19.419561}, + {51.388893, 35.777664}, + {-80.241132, 26.000584}, + {13.745956420898, 51.179122924805}, + {30.386123657227, 59.937973022461}, + {-0.10917663574219, 51.596603393555}, + {20.103458, 51.518792}, + {2.116378, 48.828741}, + {-76.995522, -12.136666}, + {139.45701599121, 35.467300415039}, + {-0.954718, 51.448431}, + {-79.540433, 43.711102}, + {-70.585098266602, -33.437576293945}, + {139.87037658691, 36.381912231445}, + {114.2049407959, 22.217788696289}, + {-100.07652282715, 19.387435913086}, + {37.430935, 55.844364}, + {-99.131698608398, 19.434127807617}, + {-107.564227, 40.510249}, + {121.40098571777, 24.975357055664}, + {-73.810148, 40.699698}, + {105.847092, 21.004486}, + {139.74128723145, 35.685653686523}, + {122.95417785645, 10.679397583008}, + {72.915573120117, 19.055099487305}, + {15.34172, 37.915192}, + {78.543202, 17.421707}, + {134.392319, 34.756966}, + {105.84846496582, 21.226272583008}, + {0.362234, 52.248608}, + {0.26847839355469, 51.452407836914}, + {121.152878, 30.03685}, + {-82.892532348633, 40.080184936523}, + {101.6805267334, 3.0095672607422}, + {2.617205, 48.820475}, + {11.537704467773, 45.554122924805}, + {102.66105651855, 2.0359039306641}, + {86.339117, 54.470041}, + {120.676575, 24.148636}, + {90.339889526367, 23.781967163086}, + {136.50238, 34.617233}, + {33.282738, 34.735851}, + {-46.759872436523, -23.689956665039}, + {-87.599258, 41.799545}, + {1.7145538330078, 48.696212768555}, + {116.31568908691, 39.890670776367}, + {-9.2525482177734, 52.074508666992}, + {-73.952866, 40.75676}, + {-6.359024, 53.385315}, + {78.081893920898, 12.35481262207}, + {35.671920776367, 38.793411254883}, + {2.7033233642578, 48.736038208008}, + {-96.937625, 33.013775}, + {28.84391784668, 40.21614074707}, + {12.529220581055, 55.709609985352}, + {36.754421, -1.263968}, + {116.35551452637, 39.867324829102}, + {34.618606567383, 31.701736450195}, + {77.664963, 12.854691}, + {8.6112213134766, 48.068618774414}, + {106.994133, -6.411552}, + {20.385818, 44.811859}, + {17.062055, -22.576774}, + {39.900283813477, 21.437759399414}, + {77.436996, 28.624191}, + {37.731857299805, 55.879898071289}, + {39.18342590332, 21.594314575195}, + {24.805068969727, 67.805557250977}, + {7.146606, 47.278976}, + {81.663436889648, 21.163101196289}, + {103.342636, 15.363723}, + {-103.39988708496, 20.615158081055}, + {-73.60254, 45.613626}, + {19.821396, 50.173187}, + {-57.558059692383, -25.388717651367}, + {-84.347631, 33.729631}, + {-3.978424, 5.296783}, + {-84.008291, 33.884842}, + {116.42692565918, 39.882431030273}, + {139.4034576416, 35.432968139648}, + {104.62944, 30.131149}, + {78.198623657227, 28.793106079102}, + {91.975479125977, 24.853134155273}, + {-117.734542, 34.086159}, + {135.48683166504, 34.703750610352}, + {-83.334495, 42.315997}, + {8.5892486572266, 48.097457885742}, + {125.08003234863, 7.8971099853516}, + {138.462524, 35.281677}, + {37.634353637695, 55.616226196289}, + {46.876383, 24.315361}, + {139.886045, 37.532582}, + {77.483401, 12.91925}, + {6.450676, 52.383141}, + {15.763321, 48.038406}, + {28.982620239258, 41.034622192383}, + {127.062338, 37.725164}, + {137.85987854004, -34.780654907227}, + {139.72343444824, 35.621109008789}, + {139.30732727051, 36.211624145508}, + {39.140434, 21.543059}, + {120.397239, 22.502389}, + {-87.627777, 41.888809}, + {1.1116790771484, 47.23503112793}, + {-7.853165, 12.595825}, + {-75.732192993164, -14.067306518555}, + {55.234121, 25.093067}, + {-1.63765, 54.946976}, + {31.177139282227, 30.05241394043}, + {-84.353124, 33.964767}, + {-70.748519897461, 41.836624145508}, + {103.74458312988, 1.3890838623047}, + {-84.942855834961, 34.760055541992}, + {127.395881, 36.325869}, + {-96.255611, 32.987588}, + {-43.18338, -22.903599}, + {-118.44326, 34.016075}, + {-0.14350891113281, 51.503219604492}, + {73.201217651367, 22.344131469727}, + {-0.41679382324219, 5.4924774169922}, + {-117.630272, 33.874283}, + {16.58665, 49.186453}, + {39.84993, -3.640366}, + {7.5414276123047, 45.08171081543}, + {77.434387, 23.25325}, + {15.812759399414, 48.782730102539}, + {45.062485, 37.575302}, + {16.632083, 49.143911}, + {-2.3641204833984, 51.44416809082}, + {102.3657989502, 2.2885894775391}, + {-6.092046, 53.388245}, + {13.16780090332, 48.254013061523}, + {22.031021118164, 47.914810180664}, + {-3.189497, 51.518395}, + {6.567764, 52.852135}, + {54.565659, 24.422607}, + {-83.286438, 42.096863}, + {-4.1823577880859, 51.740798950195}, + {-78.483142, -0.202021}, + {25.223922729492, 35.332717895508}, + {121.27326965332, 31.188125610352}, + {101.646194, 3.110733}, + {-83.06694, 42.432632}, + {76.245117, 10.776215}, + {43.956985473633, 56.245193481445}, + {-46.671615, -23.606485}, + {77.26047, 28.581619}, + {4.888229, 43.681412}, + {-76.992398, -12.14953}, + {-71.21955871582, 18.796920776367}, + {102.39326477051, 12.368545532227}, + {76.456947, 9.822464}, + {-84.518548, 42.954758}, + {-98.274765014648, 19.126510620117}, + {18.512484, 52.620277}, + {9.9172210693359, 52.095108032227}, + {115.285233, -8.554699}, + {120.91621398926, 14.427108764648}, + {-99.848556, 19.747238}, + {5.0708770751953, 51.688613891602}, + {3.5767364501953, 51.077499389648}, + {10.267868, 55.392838}, + {-0.77522277832031, 51.126937866211}, + {4.5366668701172, 48.579483032227}, + {26.108008, 44.475147}, + {170.50849914551, -45.871353149414}, + {37.916393, 56.040745}, + {-5.490417, 33.910675}, + {75.948486, 18.989868}, + {4.657713, 52.207914}, + {121.547717, 25.044022}, + {29.158401489258, 41.05110168457}, + {128.001938, -3.776779}, + {101.664963, 3.076859}, + {28.077621459961, -26.098709106445}, + {139.613571, 35.456842}, + {121.56028747559, 25.041275024414}, + {101.65855407715, 3.1386566162109}, + {23.586959838867, 44.153366088867}, + {10.313415, 56.25412}, + {114.18296813965, 22.452621459961}, + {73.037796020508, 26.33903503418}, + {-58.435592651367, -34.706497192383}, + {7.660904, 45.41954}, + {105.258815, -2.764404}, + {28.031955, -25.884064}, + {-80.239334106445, 25.957260131836}, + {-121.935997, 37.410164}, + {-5.7959747314453, 43.392562866211}, + {55.347061157227, 25.226669311523}, + {73.886662, 18.523464}, + {72.677993774414, 23.036270141602}, + {16.722171, 59.842458}, + {-1.2393951416016, 52.336807250977}, + {-6.2107086181641, 54.59587097168}, + {-9.461288, 38.715134}, + {12.081529, 42.401734}, + {72.873714, 19.095751}, + {-1.643144, 54.10698}, + {-84.628524, 42.646103}, + {20.683822631836, 44.441757202148}, + {-46.42136, -23.441923}, + {-90.864879, 38.811461}, + {6.079101, 52.506638}, + {100.45692443848, 5.3372955322266}, + {121.45042419434, 24.986343383789}, + {51.401596069336, 35.747451782227}, + {-106.441498, 31.816177}, + {-79.700808, 37.128983}, + {100.63407897949, -0.22865295410156}, + {127.105282, 37.478358}, + {125.81336975098, 7.4507904052734}, + {0.27259826660156, 51.521072387695}, + {76.630589, 12.345622}, + {-96.753159, 32.844315}, + {-118.428116, 34.211197}, + {131.486435, 32.208873}, + {26.196212768555, -29.144668579102}, + {-90.205994, 33.52169}, + {39.901657104492, 57.493515014648}, + {-51.172764, -23.29076}, + {-112.7808380127, 34.206619262695}, + {9.241053, 45.437385}, + {13.750076293945, 47.622299194336}, + {77.542191, 12.991333}, + {137.94090270996, 36.207504272461}, + {89.66423034668, 26.321182250977}, + {100.848354, 14.063472}, + {30.873641967773, -29.818954467773}, + {-75.584483, 45.451307}, + {102.729689, 16.057901}, + {107.16819763184, -6.3027191162109}, + {-95.336416, 29.674779}, + {119.39735412598, 32.06428527832}, + {39.129867553711, 45.030899047852}, + {126.96556091309, 37.913131713867}, + {-15.555267, 28.059082}, + {95.357894897461, 27.201461791992}, + {101.692303, 3.137102}, + {3.1551361083984, 45.879592895508}, + {5.7891082763672, 5.5048370361328}, + {8.470115, 44.670897}, + {107.0679473877, -6.2807464599609}, + {-49.646732, -20.615591}, + {28.194351, -25.775624}, + {-3.0466461181641, 52.373886108398}, + {110.374693, -7.830887}, + {120.67176818848, 27.973251342773}, + {-16.684799194336, 13.432846069336}, + {79.018478393555, 10.877151489258}, + {-2.4121856689453, 51.950912475586}, + {30.621653, -30.503133}, + {-118.49098205566, 34.00749206543}, + {114.17472839355, 22.300186157227}, + {2.021942, 47.192917}, + {-97.931442260742, 30.409469604492}, + {7.043839, 4.794846}, + {4.635773, 52.380295}, + {76.895370483398, 13.730850219727}, + {-95.430679321289, 29.739303588867}, + {6.1969757080078, 43.572463989258}, + {-122.38700866699, 37.619247436523}, + {-43.024626, -22.807339}, + {28.21981, -26.050295}, + {22.903060913086, 42.682571411133}, + {-49.277572, -21.133804}, + {34.803233, 31.950427}, + {20.656128, 40.903702}, + {2.4314117431641, 49.148025512695}, + {21.903992, 43.327332}, + {-9.6013641357422, 30.427322387695}, + {-104.91737365723, 39.735488891602}, + {-71.55876159668, -33.110733032227}, + {-77.054995, -12.055184}, + {98.667526245117, 3.5066986083984}, + {136.887589, 35.024414}, + {-96.293564, 29.132767}, + {-75.692367553711, 4.7948455810547}, + {88.325579, 22.526732}, + {121.46003723145, 25.009689331055}, + {-116.43516540527, 34.188766479492}, + {28.370132446289, 70.179977416992}, + {80.23796081543, 13.136215209961}, + {132.89405822754, 42.851486206055}, + {73.808212, 15.477333}, + {-82.357651, 27.995295}, + {72.77961730957, 21.190567016602}, + {5.891191, 45.698491}, + {72.820816040039, 21.196060180664}, + {5.619736, 51.509628}, + {112.94013977051, 28.181991577148}, + {107.56507873535, -6.8602752685547}, + {139.88273620605, 36.538467407227}, + {140.17112731934, 35.960311889648}, + {-4.4144439697266, 36.71012878418}, + {6.993942, 4.821854}, + {118.87550354004, 25.239028930664}, + {-4.203644, 50.407333}, + {118.90159606934, 25.129165649414}, + {65.007954, 57.07349}, + {108.544534, -6.673103}, + {116.122227, -8.59354}, + {-99.667282104492, 19.321517944336}, + {103.958656, 1.348133}, + {13.948412, 55.528618}, + {0.20530700683594, 45.971603393555}, + {49.300461, -12.289352}, + {129.126694, 35.149916}, + {110.43525695801, -7.0676422119141}, + {-94.466512, 18.105341}, + {81.218490600586, 26.27311706543}, + {0.592852, 43.661184}, + {98.96917, 18.803566}, + {13.722610473633, 42.666091918945}, + {100.9625, 12.763912}, + {-7.367191, 33.690949}, + {-74.233932, 40.163269}, + {1.393433, 43.618469}, + {8.442763, 49.001084}, + {-118.209286, 34.61792}, + {-41.647109985352, -20.350112915039}, + {11.065292358398, 60.190658569336}, + {51.597288, 35.529785}, + {-58.484173, -34.511318}, + {-77.002487182617, -12.051315307617}, + {14.778671264648, 40.672073364258}, + {-3.1249, 51.52851}, + {45.261611938477, 53.218460083008}, + {-3.015289, 56.322098}, + {48.394088745117, 54.319839477539}, + {37.442092895508, 55.856552124023}, + {2.441299, 48.867874}, + {-79.467284, 44.278608}, + {72.736359, 21.19194}, + {137.20893859863, 36.68815612793}, + {-72.650267, -7.732379}, + {-106.426163, 23.212967}, + {-112.262192, 33.527298}, + {-97.478014, 25.923251}, + {108.63624572754, 34.320602416992}, + {-0.142679, 51.574101}, + {108.21189880371, 34.376907348633}, + {-80.136677, 26.241085}, + {-86.680241, 36.005459}, + {77.588882446289, 12.923355102539}, + {101.669741, 3.094021}, + {77.311478, 28.598973}, + {135.568954, 34.701004}, + {32.56965637207, -25.975112915039}, + {136.067734, 35.327226}, + {90.372848510742, 22.70393371582}, + {15.842971801758, 50.190353393555}, + {26.931387, 60.459143}, + {11.135330200195, 46.612930297852}, + {144.34867858887, 43.002548217773}, + {105.801315, 21.216202}, + {7.892628, 46.687603}, + {103.93975, 17.448745}, + {121.074268, 14.65265}, + {78.386307, 27.157974}, + {101.68865, 3.131828}, + {-82.256698608398, 36.482162475586}, + {1.969276, 43.564299}, + {102.879143, 15.878977}, + {114.13215637207, 22.497940063477}, + {140.616074, 36.492462}, + {34.738082885742, 44.901809692383}, + {77.620468139648, 13.046951293945}, + {73.745664, 32.918121}, + {138.229294, 34.737167}, + {106.87156677246, -6.1200714111328}, + {5.912642, 43.127787}, + {60.51857, 56.90361}, + {-1.595243, 55.316478}, + {100.0463104248, 13.799514770508}, + {9.0314483642578, 44.907302856445}, + {4.496384, 7.713089}, + {19.897474, 50.066473}, + {37.546463, 55.680084}, + {27.801674, -26.288434}, + {98.985176, 18.900872}, + {-57.60612487793, -25.329666137695}, + {-3.703079, 40.432434}, + {101.79725646973, 3.4243011474609}, + {-51.233139, -30.032356}, + {42.244835, 18.674011}, + {3.306808, 6.529922}, + {4.2153167724609, 51.977005004883}, + {20.536880493164, 52.128067016602}, + {5.9278106689453, 51.948165893555}, + {6.148448, 49.04564}, + {-58.908004760742, -34.467544555664}, + {-97.02507019043, 32.955551147461}, + {-95.920944213867, 36.134719848633}, + {-3.8623809814453, 52.324447631836}, + {103.69926452637, 1.4989471435547}, + {-60.901337, 14.611816}, + {37.590801, 55.613676}, + {38.966445922852, 45.051498413086}, + {104.20051574707, 30.674514770508}, + {-8.6153411865234, 41.202163696289}, + {80.217361450195, 12.829971313477}, + {135.438517, 34.667546}, + {-77.691879272461, 1.0457611083984}, + {-76.528606, 3.450798}, + {-122.27027893066, 47.224044799805}, + {56.839049, 59.422734}, + {-75.411358, 45.559101}, + {74.838180541992, 19.041366577148}, + {-97.090203, 32.680108}, + {123.81385803223, 8.1621551513672}, + {-77.534548, 38.765843}, + {59.497146606445, 36.303634643555}, + {-6.139297, 54.476693}, + {-95.485610961914, 29.915084838867}, + {48.027420043945, 29.29573059082}, + {100.663167, 13.671637}, + {78.174017, 13.121483}, + {-9.5505523681641, 31.531448364258}, + {88.542801, 23.081039}, + {-97.37114, 35.476227}, + {117.9663848877, 37.119369506836}, + {19.021761, 47.482955}, + {115.196494, -8.622579}, + {115.261917, -8.692245}, + {139.63279724121, 35.893020629883}, + {92.887344360352, 56.015853881836}, + {72.818069, 21.173172}, + {79.530715942383, 29.228439331055}, + {8.5604095458984, 49.528427124023}, + {19.357487, 52.242437}, + {137.003632, 35.110245}, + {139.724464, 35.625229}, + {13.062057495117, 50.933303833008}, + {-99.217985, 19.454521}, + {30.219344, 60.085526}, + {-47.611312866211, -23.066482543945}, + {2.1567535400391, 48.832168579102}, + {73.850784, 18.623199}, + {37.541313, 55.846252}, + {-7.6773834228516, 33.584518432617}, + {75.800858, 11.283302}, + {139.783173, 35.68222}, + {30.362698, 59.955108}, + {4.702823, 48.126993}, + {38.434982299805, 55.767288208008}, + {5.1354217529297, 48.12629699707}, + {41.046981811523, 43.00666809082}, + {12.739163, 50.194312}, + {19.116604, 50.80237}, + {1.0938262939453, 49.470748901367}, + {39.175186157227, 21.58332824707}, + {-0.15037536621094, 45.724411010742}, + {2.483016, 48.871994}, + {23.777847290039, 61.496658325195}, + {5.59642, 52.345529}, + {-74.057139, 4.652794}, + {51.125564575195, 24.430160522461}, + {0.830033, 44.06922}, + {-42.806289, -5.027283}, + {106.786682, -6.200774}, + {14.532231, 53.4404}, + {20.751087, 50.033806}, + {-74.038925170898, 4.7495269775391}, + {134.903011, 34.524879}, + {-110.762907, 27.939538}, + {-53.057784, -29.279938}, + {-76.931364, -12.043695}, + {-97.137337, 31.527672}, + {-9.4805145263672, 30.388870239258}, + {106.53373718262, 29.423446655273}, + {-90.089950561523, 29.990615844727}, + {32.308731079102, 26.083602905273}, + {-93.383811, 43.661714}, + {77.181015014648, 28.675003051758}, + {-75.482919, 40.557913}, + {99.898644, 13.720863}, + {80.794143676758, 16.528244018555}, + {12.206769, 56.083146}, + {101.622758, 14.838367}, + {93.726425170898, 25.89958190918}, + {76.943435668945, 8.5631561279297}, + {129.70390319824, 62.028121948242}, + {84.870071411133, 22.243881225586}, + {110.78132629395, -6.7641448974609}, + {-0.628276, 45.065374}, + {112.01591491699, -7.8147125244141}, + {39.488022, 51.558289}, + {55.374217, 25.305484}, + {110.368954, -7.73605}, + {-6.9110870361328, 52.148666381836}, + {44.101639, 56.294632}, + {39.858381, 57.573172}, + {115.96138000488, 36.704635620117}, + {-83.480488, 41.533189}, + {24.868240356445, 60.256576538086}, + {108.73100280762, -6.8616485595703}, + {24.897079467773, 59.50813293457}, + {-117.267036, 33.924253}, + {7.5112152099609, 44.329147338867}, + {70.347518920898, 23.291702270508}, + {29.357479, 40.789646}, + {16.334609985352, 48.168869018555}, + {139.726868, 35.731659}, + {112.03788757324, -6.9028472900391}, + {34.88639831543, 32.084884643555}, + {-79.968795776367, 40.343856811523}, + {31.146926879883, 30.380630493164}, + {77.119216918945, 28.739547729492}, + {-4.3718719482422, 55.741195678711}, + {51.496353149414, 25.292587280273}, + {80.102829, 12.925003}, + {-77.340316772461, 35.593643188477}, + {-2.127914, 52.821121}, + {-2.918636, 51.362653}, + {-122.302562, 47.315827}, + {18.075942993164, 59.431228637695}, + {19.200476, 47.325465}, + {10.499496459961, 43.838882446289}, + {107.62113, -6.878756}, + {38.805770874023, 37.197647094727}, + {79.522476196289, 11.782150268555}, + {-123.27919, 44.558029}, + {20.722961, 47.221299}, + {22.090072631836, 50.173873901367}, + {-16.494095, 16.017197}, + {6.12178, 49.599186}, + {7.7323150634766, 45.639266967773}, + {-46.584185, -23.675709}, + {-73.854281, 40.76067}, + {27.579116821289, 63.080062866211}, + {-94.220809936523, 45.585708618164}, + {-92.057211, 44.639939}, + {19.767837524414, 50.080490112305}, + {-5.945132, 37.023899}, + {8.635941, 45.542679}, + {55.169906616211, 25.103073120117}, + {23.54850769043, 47.644271850586}, + {-82.072677612305, 42.710037231445}, + {-75.947799682617, 41.294174194336}, + {-76.938415, 38.908777}, + {113.12141418457, 23.025283813477}, + {-84.112839, 43.410416}, + {-106.382217, 23.236313}, + {8.945094, 52.453374}, + {100.526094, 13.732808}, + {77.079391479492, 43.772964477539}, + {-95.585791, 30.002831}, + {-71.43928527832, 42.311782836914}, + {37.488786, 55.879898}, + {98.648300170898, 3.5547637939453}, + {88.779830932617, 23.066482543945}, + {121.19911193848, 30.982131958008}, + {13.151321411133, 58.024978637695}, + {5.392293, 47.13379}, + {-8.32283, 41.174011}, + {16.342849731445, 47.736282348633}, + {106.82762145996, -6.2340545654297}, + {46.805191040039, 24.708938598633}, + {75.750046, 26.895218}, + {9.1728973388672, 45.437393188477}, + {121.171646, 14.575562}, + {-4.099959, 40.937119}, + {-87.275783, 30.422761}, + {8.7128448486328, 51.676254272461}, + {54.020462, 27.065506}, + {120.426409, 23.488628}, + {25.792465209961, 42.368087768555}, + {3.2347869873047, 51.210708618164}, + {118.19984436035, 40.255966186523}, + {51.526565551758, 25.27473449707}, + {21.756363, 50.878372}, + {103.85719299316, 1.2819671630859}, + {25.493087768555, -33.982772827148}, + {63.615372, 53.199234}, + {-3.8472747802734, 48.332290649414}, + {-45.887832641602, -23.301315307617}, + {51.550794, 35.733743}, + {135.877876, 34.621696}, + {8.8240814208984, 50.043411254883}, + {-34.939956665039, -8.1690216064453}, + {15.590286254883, 49.396591186523}, + {126.909944, 37.459946}, + {49.671249389648, 58.586654663086}, + {3.363876, 6.4888}, + {12.236709594727, 44.318161010742}, + {128.567078, 36.252489}, + {-2.0633697509766, 53.31184387207}, + {-76.993977, -11.956984}, + {10.577942, 55.351635}, + {-0.205291, 43.298636}, + {44.418411254883, 33.353805541992}, + {110.72639465332, -7.5592803955078}, + {-78.599624633789, 38.032608032227}, + {-0.101342, 51.503451}, + {115.812149, -31.843185}, + {1.6733551025391, 44.673843383789}, + {17.099666, 50.81322}, + {1.2517547607422, 44.860610961914}, + {10.195999145508, 53.372268676758}, + {1.152093, 49.019525}, + {141.731186, 45.398026}, + {-91.592330932617, 34.290390014648}, + {8.2637786865234, 48.781356811523}, + {-79.388998, 37.817003}, + {24.122543334961, 56.948318481445}, + {28.136215, -25.948563}, + {-79.010855, 35.036862}, + {13.785781860352, 45.569229125977}, + {32.870407, 24.234467}, + {77.639694213867, 13.022232055664}, + {-73.861770629883, 40.943984985352}, + {-117.258691, 32.806284}, + {39.760208129883, 54.627456665039}, + {31.17407, 27.182658}, + {121.588246, 25.06736}, + {106.884866, -6.342363}, + {120.94367980957, 14.800643920898}, + {-61.566696166992, -34.050064086914}, + {-98.177261352539, 19.042739868164}, + {78.503494262695, 17.162704467773}, + {-118.444633, 34.032211}, + {-80.287399291992, 43.525772094727}, + {-72.782363891602, -38.642349243164}, + {77.554550170898, 22.971725463867}, + {106.73973083496, 10.937576293945}, + {17.958527, 52.655411}, + {13.308735, -8.781853}, + {-122.26753234863, 45.453872680664}, + {75.870895385742, 30.929946899414}, + {77.502365112305, 29.978256225586}, + {-106.12449645996, 28.647537231445}, + {120.07301330566, 35.890274047852}, + {-2.2048187255859, 47.681350708008}, + {95.338668823242, 5.5130767822266}, + {-100.37590026855, 25.726547241211}, + {40.337677, 40.98381}, + {2.423447, 6.380997}, + {101.82197570801, 2.9340362548828}, + {113.90693664551, 22.551498413086}, + {102.02110290527, 15.733108520508}, + {117.55439758301, 40.463333129883}, + {100.38551330566, 5.4141998291016}, + {-46.689002, -23.583378}, + {18.944694, -33.911319}, + {-75.797078, 45.305148}, + {29.350662231445, 40.549850463867}, + {109.19929504395, 12.205123901367}, + {78.456802368164, 17.43049621582}, + {2.187653, 48.912506}, + {75.883942, 30.886002}, + {103.30513000488, 4.0601348876953}, + {14.262313842773, 40.847854614258}, + {105.22911071777, 15.820999145508}, + {5.5075836181641, 36.174545288086}, + {137.19932556152, 34.944076538086}, + {28.97575378418, 41.009902954102}, + {19.79118347168, 47.02766418457}, + {106.810684, -6.21666}, + {6.761856, 49.286728}, + {3.082352, 6.579666}, + {30.481796, 59.886246}, + {-122.383163, 45.461563}, + {43.921279907227, 56.317977905273}, + {-112.26173400879, 33.732833862305}, + {106.87705993652, -6.2422943115234}, + {-3.444903, 50.727862}, + {-3.170242, 55.928879}, + {-117.833288, 33.675154}, + {9.924545, 48.436661}, + {2.187455, 49.698692}, + {-74.909613, 39.966912}, + {-1.2366485595703, 53.624954223633}, + {7.028366, 4.813248}, + {-81.968307, 34.964218}, + {11.359176635742, 55.415725708008}, + {3.822899, 43.68679}, + {140.20133972168, 35.752944946289}, + {29.349976, 40.827942}, + {16.378118, 49.209037}, + {-56.101582, -15.59451}, + {-72.160263061523, -39.49104309082}, + {2.1169281005859, 41.533126831055}, + {-118.402262, 34.032575}, + {-105.81825256348, 26.80046081543}, + {-117.975603, 33.98103}, + {77.664871, 12.958145}, + {-80.201294, 26.122705}, + {103.800652, 1.533518}, + {-120.014328, 45.793772}, + {76.215591430664, 10.514602661133}, + {76.218338, 10.515152}, + {77.004547, 29.800415}, + {77.049179077148, 29.927444458008}, + {76.617279, 28.838425}, + {-115.19371032715, 36.164932250977}, + {17.19841003418, 48.141403198242}, + {11.864547729492, 44.020156860352}, + {-0.64064025878906, 35.69938659668}, + {18.556595, 54.306564}, + {114.21730041504, 22.289199829102}, + {100.133236, 15.165362}, + {-78.863961, 35.896055}, + {153.027988, -27.469578}, + {121.03294372559, 14.668807983398}, + {77.090561, 28.584183}, + {0.33988952636719, 51.908340454102}, + {-7.9644012451172, 31.300735473633}, + {10.98014831543, 52.265396118164}, + {71.421432495117, 33.592758178711}, + {61.405245, 55.165885}, + {55.456924438477, 25.351638793945}, + {105.85670471191, 21.017532348633}, + {74.840927124023, 12.868423461914}, + {-8.743682, 42.212906}, + {5.1683807373047, 7.2667694091797}, + {78.490698, 17.542465}, + {4.488442, 52.164434}, + {-73.550033569336, 45.570602416992}, + {-70.764352, -30.967278}, + {76.962661743164, 43.234634399414}, + {76.26091003418, 10.109481811523}, + {19.893326, 47.777468}, + {139.11506652832, 36.329727172852}, + {28.978500366211, 41.034622192383}, + {-72.553024291992, -39.29328918457}, + {4.600898, 52.172966}, + {5.725888, 52.652823}, + {2.1457672119141, 48.858261108398}, + {51.60141, 32.837448}, + {73.800659, 18.577881}, + {9.8032379150391, 54.921340942383}, + {-95.500033, 29.790368}, + {48.120803833008, 29.146041870117}, + {-3.983549, 55.865096}, + {-8.612447, 42.162307}, + {30.48225402832, 50.382614135742}, + {1.4865875244141, 49.002456665039}, + {10.281601, 47.528458}, + {137.222672, 34.849712}, + {39.674383, 47.219928}, + {-9.1358184814453, 32.260665893555}, + {100.539944, 13.755844}, + {135.96061706543, 34.97428894043}, + {-86.220391, 32.343688}, + {-1.7804718017578, 47.343521118164}, + {100.670987, 13.606285}, + {-75.934067, 44.445877}, + {-46.674728, -23.558807}, + {-43.351912, -22.937067}, + {-112.7368927002, 31.539688110352}, + {-34.959182739258, -8.0509185791016}, + {-100.846939, 33.828964}, + {122.75230407715, 11.589889526367}, + {-88.039398, 42.346115}, + {121.125417, 14.554049}, + {28.244614, -25.854263}, + {72.831802368164, 18.927383422852}, + {-95.558297, 29.745287}, + {20.377544, 52.26721}, + {2.520944, 48.900832}, + {26.087208, 46.920719}, + {51.06458, 35.760676}, + {77.248306274414, 28.50471496582}, + {77.572402954102, 12.94807434082}, + {-77.093124389648, 38.943099975586}, + {10.200119018555, 47.582473754883}, + {28.28498840332, -15.413131713867}, + {30.349543, 60.064036}, + {102.03483581543, 2.5385284423828}, + {137.14164733887, 35.047073364258}, + {29.052658081055, 37.753829956055}, + {79.050064086914, 21.031265258789}, + {21.156234741211, 48.623428344727}, + {126.60713195801, 45.758743286133}, + {89.765853881836, 24.399948120117}, + {7.344635, 9.148521}, + {5.52887, 46.676102}, + {8.2939910888672, 9.5793914794922}, + {134.938431, 34.713821}, + {55.302331, 25.278462}, + {-2.532406, 53.42272}, + {25.479355, 65.013657}, + {74.953537, 31.3797}, + {75.787124633789, 11.252059936523}, + {15.492782592773, 58.505630493164}, + {0.51704406738281, 51.394729614258}, + {129.111177, 35.13646}, + {55.363665, 25.119303}, + {135.32341003418, 34.727096557617}, + {-97.504348754883, 25.869369506836}, + {101.715456, 3.070906}, + {5.513035, 50.615736}, + {1.200746, 43.327235}, + {139.88410949707, 35.663681030273}, + {4.0711212158203, 7.4988555908203}, + {20.74836730957, 39.687423706055}, + {98.386732, 7.887193}, + {-79.485397338867, 9.0122222900391}, + {-82.573381, 28.06308}, + {9.503303, 48.628885}, + {80.28019, 13.064117}, + {16.465072631836, 41.12663269043}, + {-1.2545013427734, 38.053207397461}, + {27.914004, -33.019115}, + {9.4159698486328, 56.45393371582}, + {18.229109, 51.316717}, + {0.945512, 48.719332}, + {12.253189086914, 44.132766723633}, + {-1.9232940673828, 52.382125854492}, + {30.964279174805, -29.856033325195}, + {14.409255981445, 47.90657043457}, + {-81.538911, 30.337527}, + {-89.710922, 20.576706}, + {139.52293395996, 35.719985961914}, + {-46.666488647461, -23.556747436523}, + {28.041915893555, -26.123428344727}, + {-70.289291, -18.44014}, + {103.686822, 1.34747}, + {21.436386108398, 52.54280090332}, + {28.233398, -25.701717}, + {2.693161, 41.622391}, + {39.110641479492, 21.564102172852}, + {11.904373168945, 44.200057983398}, + {135.37284851074, 34.81086730957}, + {113.5018157959, 52.01545715332}, + {153.13636779785, -27.690353393555}, + {12.509994506836, 41.843490600586}, + {22.412796020508, 54.172897338867}, + {50.099258, 26.426468}, + {31.329918, 30.058251}, + {8.495866, 53.096238}, + {1.8642425537109, 46.137771606445}, + {-58.370361, -34.657059}, + {106.801374, -6.174934}, + {31.379013061523, 30.232315063477}, + {73.274002075195, 55.02571105957}, + {-0.14488220214844, 51.49772644043}, + {-55.092923, -25.795664}, + {-99.475192, 27.482649}, + {10.834579467773, 56.427841186523}, + {50.031051635742, 26.495590209961}, + {-73.991808, 40.602394}, + {-0.264155, 52.005301}, + {132.91053771973, 48.781356811523}, + {-111.882463, 40.606334}, + {-0.033646, 39.977737}, + {121.10298156738, 24.928665161133}, + {39.206771850586, 21.492691040039}, + {106.4966583252, 29.61296081543}, + {28.664016723633, 55.522842407227}, + {101.16554260254, 6.6638946533203}, + {106.7960357666, -6.2450408935547}, + {49.657516479492, 58.60725402832}, + {39.705276489258, 49.603958129883}, + {130.827255, 33.807907}, + {13.37492, 52.548202}, + {76.558914, 9.40773}, + {6.8671417236328, 46.479721069336}, + {-101.34544372559, 19.68132019043}, + {30.177383422852, 55.182266235352}, + {-3.5794830322266, 37.164688110352}, + {10.039443969727, 36.83235168457}, + {-0.112874, 51.473641}, + {-1.17757, 48.070437}, + {-74.673868, 5.475878}, + {103.41636657715, 3.4915924072266}, + {50.997848510742, 35.806503295898}, + {-77.450915, 38.870678}, + {79.422569, 11.823006}, + {-99.465408325195, 27.529678344727}, + {-49.217161, -25.388917}, + {-114.502271, 32.688099}, + {-69.754944, 18.535309}, + {-78.293552, 35.183716}, + {93.009567260742, 26.553268432617}, + {21.897812, 61.416733}, + {138.80332946777, -34.816360473633}, + {121.27052307129, 31.118087768555}, + {34.908912, 31.974789}, + {139.7110748291, 35.663681030273}, + {-112.179601, 33.600258}, + {-88.849319, 13.840714}, + {77.719345092773, 12.939834594727}, + {120.992432, 24.791336}, + {2.626762, 39.559364}, + {37.870559692383, 55.938949584961}, + {18.795547485352, 50.153274536133}, + {16.557083129883, 59.745712280273}, + {79.716110229492, 11.569290161133}, + {76.22932434082, 17.815017700195}, + {51.713333129883, 35.310745239258}, + {-81.540839, 30.056908}, + {77.638320922852, 12.97004699707}, + {105.7852935791, 21.082077026367}, + {-74.376414, 40.860318}, + {37.391624, 55.707207}, + {25.794315, 45.767862}, + {135.596352, 34.582901}, + {126.458448, 34.812464}, + {116.32942199707, 39.966201782227}, + {139.6053314209, 35.722732543945}, + {122.863472, 0.648395}, + {112.727966, -7.220078}, + {96.161270141602, 16.779556274414}, + {-80.14014, 26.202128}, + {69.225540161133, 41.294174194336}, + {121.75941467285, 31.042556762695}, + {55.423984, 25.399741}, + {107.237549, -6.788864}, + {77.521591186523, 12.938461303711}, + {55.337448120117, 25.29670715332}, + {36.539624, 55.007497}, + {38.936233520508, 45.054244995117}, + {16.584548950195, 46.448135375977}, + {-96.644668579102, 32.867660522461}, + {85.068512, 25.772553}, + {77.658920288086, 12.99201965332}, + {22.577590942383, 51.231307983398}, + {30.347599, 59.977726}, + {51.45813, 25.158691}, + {-78.072969, 18.457033}, + {3.266569, 43.340574}, + {10.601119995117, 45.383834838867}, + {-1.5799713134766, 52.563400268555}, + {139.762868, 35.567551}, + {27.69172668457, 53.946304321289}, + {-65.151671, -26.080857}, + {-1.4357757568359, 43.642501831055}, + {-46.777039, -23.433838}, + {-77.192001342773, 38.70964050293}, + {-99.035568237305, 19.186935424805}, + {-97.443923950195, 35.415115356445}, + {-46.565544, -23.712713}, + {-101.931574, 35.155897}, + {-81.603012084961, 40.597915649414}, + {-75.29852, 40.848493}, + {-123.028793, 49.207077}, + {34.449693, 28.006669}, + {-74.195751, 11.228223}, + {75.92170715332, 21.167221069336}, + {-76.657677, 40.289921}, + {56.938706, 36.335221}, + {35.266848, 33.005495}, + {80.616989135742, 17.56233215332}, + {145.132828, -37.634354}, + {46.725958, 24.885226}, + {113.63777160645, 34.717483520508}, + {-1.8491363525391, 52.180252075195}, + {4.8374176025391, 45.758743286133}, + {39.210205, 21.532516}, + {77.131576538086, 16.763076782227}, + {31.081008911133, 59.742965698242}, + {7.59055, 47.561483}, + {139.738541, 35.733032}, + {77.727584838867, 11.588516235352}, + {127.202642, 37.538925}, + {107.00477600098, 10.712356567383}, + {104.89402770996, 25.087966918945}, + {135.58158874512, 35.144577026367}, + {20.906295776367, 52.20085144043}, + {3.4339141845703, 6.4400482177734}, + {-97.055282592773, 32.676773071289}, + {17.780685424805, 59.778671264648}, + {-43.179702758789, -22.941513061523}, + {14.744338989258, 41.74186706543}, + {121.49848937988, 24.979476928711}, + {4.8813629150391, 45.793075561523}, + {91.220169067383, 26.496963500977}, + {101.114731, 4.613571}, + {110.44761657715, 24.975357055664}, + {105.35682678223, 16.388168334961}, + {22.673996, 44.633469}, + {118.784317, 32.045883}, + {17.907028198242, 50.666885375977}, + {11.648021, 45.663529}, + {18.994315, 52.586951}, + {139.51606750488, 35.505752563477}, + {27.576370239258, 53.900985717773}, + {42.108535766602, 51.383743286133}, + {27.338790893555, 44.187698364258}, + {-2.3682403564453, 48.378982543945}, + {43.969345092773, 40.619888305664}, + {77.847061157227, 30.36003112793}, + {54.006042, 26.558418}, + {-78.807221, -8.410369}, + {110.175967, -6.98919}, + {6.9797515869141, 52.312088012695}, + {8.481446, 51.172257}, + {2.3586273193359, 48.900833129883}, + {77.594375610352, 30.43830871582}, + {5.6641387939453, 48.530044555664}, + {1.213589, 6.188271}, + {-92.475471, 44.053759}, + {30.552512, 59.962336}, + {-92.966303, 17.957843}, + {-34.89017, -8.036703}, + {-58.98078918457, -27.463760375977}, + {-82.2424, 34.979621}, + {100.42808532715, 13.732223510742}, + {-73.111785, 42.239783}, + {116.20307922363, -1.9315338134766}, + {-97.809538, 41.410143}, + {139.14115905762, 35.349197387695}, + {-85.879440307617, 42.368087768555}, + {-7.260099, 54.164265}, + {143.905204, -37.032904}, + {79.565048217773, 18.015518188477}, + {100.57666, 13.758683}, + {117.08335876465, -29.575881958008}, + {126.813126, 37.562256}, + {-87.052230834961, 34.858932495117}, + {78.390884399414, 17.486801147461}, + {22.820663452148, 52.004470825195}, + {101.721922, 3.127082}, + {2.2130584716797, 48.811569213867}, + {119.43855285645, -5.1491546630859}, + {77.187881469727, 30.490493774414}, + {22.97721862793, 40.618515014648}, + {121.51496887207, 29.791488647461}, + {137.46299743652, 36.883163452148}, + {37.679284, 47.117269}, + {85.419387817383, 27.676620483398}, + {2.467117, 48.741531}, + {-50.163281, -25.091688}, + {-1.540402, 53.71082}, + {16.806888, 46.143129}, + {27.826309204102, -26.687850952148}, + {100.924275, 13.563652}, + {-105.12886047363, 40.56770324707}, + {29.483871459961, -25.703201293945}, + {39.174955, 21.506962}, + {24.824192, 60.623539}, + {9.0177154541016, 53.052291870117}, + {60.613632202148, 56.828842163086}, + {135.556641, 34.559555}, + {37.517623901367, 55.802993774414}, + {71.414566040039, 25.756759643555}, + {27.954025, 45.265274}, + {140.31532287598, 38.208389282227}, + {30.618209838867, 36.895523071289}, + {28.69010925293, 41.003036499023}, + {-97.623825073242, 34.885025024414}, + {4.0587615966797, 44.073715209961}, + {114.21180725098, 22.217788696289}, + {75.902481079102, 27.396469116211}, + {50.865555, 34.739456}, + {76.724964, 8.734261}, + {10.075149536133, 44.890823364258}, + {31.428451538086, 30.022201538086}, + {79.632339477539, 13.078536987305}, + {130.440331, 33.584175}, + {-74.252472, 41.437683}, + {18.454456, -34.026203}, + {7.682971, 45.065803}, + {34.843607, 31.934842}, + {6.12263, 48.945216}, + {39.228495, 21.523278}, + {-103.243079, 34.701965}, + {1.483847, 48.621599}, + {28.853531, 41.007843}, + {1.4783477783203, 43.656234741211}, + {109.26209, -7.416734}, + {37.160927, 56.039618}, + {17.365951538086, 48.065872192383}, + {26.930237, 45.303497}, + {15.217485, 63.409668}, + {-111.940727, 40.621264}, + {-1.212158, 53.146935}, + {14.686660766602, 57.678909301758}, + {8.6359405517578, 49.88410949707}, + {110.86097717285, 24.640274047852}, + {-80.309371948242, 25.770492553711}, + {-99.18251, 19.448318}, + {8.75473, 53.828201}, + {-74.996109008789, 45.209426879883}, + {73.322067260742, 30.854415893555}, + {-103.489495, 20.47989}, + {-111.79893493652, 41.853103637695}, + {-80.261416, 40.491859}, + {-89.684829711914, 20.969467163086}, + {98.652458, 3.699755}, + {76.532821655273, 9.6096038818359}, + {-103.68965148926, 19.25422668457}, + {88.636225, 22.322258}, + {139.327927, 36.396194}, + {140.84198, -2.665558}, + {13.063431, 48.249893}, + {-1.5442657470703, 51.647415161133}, + {101.55143737793, 3.3144378662109}, + {-0.40718078613281, 39.190292358398}, + {120.25978088379, 31.904983520508}, + {80.902633666992, 24.563369750977}, + {177.36122131348, -17.773818969727}, + {101.708679, 3.145523}, + {8.0948638916016, 48.902206420898}, + {28.610458374023, 44.169845581055}, + {74.254531860352, 32.466659545898}, + {-3.7731170654297, 40.393295288086}, + {114.23652648926, 34.576034545898}, + {5.629131, 51.920598}, + {21.988471, 50.050451}, + {6.350098, 4.939728}, + {76.177139282227, 21.290817260742}, + {76.671524047852, 10.058670043945}, + {43.48526, 25.871429}, + {30.924453735352, -29.831314086914}, + {13.368301391602, 50.45539855957}, + {9.4818878173828, 51.298599243164}, + {37.593154907227, 55.893630981445}, + {5.030715, 51.929974}, + {139.63319, 35.77943}, + {41.427383422852, 52.754287719727}, + {72.894973754883, 21.229019165039}, + {11.591607, 59.518776}, + {-49.15901184082, -25.458755493164}, + {14.633789, 50.013886}, + {137.156022, 36.954739}, + {-71.036911, 42.132339}, + {21.95686340332, 50.150527954102}, + {106.72187805176, 10.732955932617}, + {75.274887084961, 11.988143920898}, + {29.233932495117, 40.989303588867}, + {18.788223, 49.435043}, + {73.357772827148, 25.782852172852}, + {-75.644691, 40.055016}, + {-96.078872680664, 41.207656860352}, + {-83.033981323242, 40.316390991211}, + {11.797256469727, 52.226943969727}, + {8.3791351318359, 51.339797973633}, + {-84.28092956543, 10.049057006836}, + {-2.505092, 53.454213}, + {-84.533157, 39.006271}, + {-120.957584, 37.690487}, + {1.894242, 48.96827}, + {-46.512814, -23.672965}, + {10.702744, 51.585159}, + {70.787569, 22.282333}, + {-113.911057, 53.561508}, + {3.7497711181641, 43.67546081543}, + {-103.39576721191, 20.665969848633}, + {76.550674438477, 9.4448089599609}, + {99.082260131836, 13.927230834961}, + {17.290420532227, 49.601211547852}, + {37.481232, 55.664291}, + {77.509231567383, 13.071670532227}, + {105.85395812988, 21.038131713867}, + {25.951252, 45.459023}, + {39.655838012695, 47.228164672852}, + {78.764419555664, 29.360275268555}, + {9.2346954345703, 49.109573364258}, + {-97.675021, 33.336074}, + {50.083008, 26.704788}, + {141.34254455566, 43.071212768555}, + {81.633224487305, 21.246871948242}, + {77.728272, 12.966614}, + {85.728378295898, 20.461349487305}, + {-0.30555725097656, 5.5968475341797}, + {127.68653869629, 26.193466186523}, + {75.87776184082, 11.164169311523}, + {70.776378, 22.301298}, + {12.291985, 58.284874}, + {75.386123657227, 14.460067749023}, + {139.98435974121, 37.561569213867}, + {31.33301, 30.100754}, + {25.27823, 67.939503}, + {139.77424621582, 35.698013305664}, + {136.19751, 36.03653}, + {135.783463, 33.832398}, + {-8.2802581787109, 31.657791137695}, + {11.394891, 51.107126}, + {12.631531, 55.633392}, + {-74.120865, 4.721603}, + {30.396767, 60.04097}, + {28.291854858398, -25.480728149414}, + {6.458588, 46.483841}, + {30.805431, -29.776386}, + {-1.412677, 53.578859}, + {-74.089737, 4.607391}, + {80.25993347168, 13.000259399414}, + {6.6350555419922, 51.346664428711}, + {72.561264, 23.037186}, + {7.5263214111328, 9.0506744384766}, + {11.394882202148, 47.909317016602}, + {37.372627, 55.588875}, + {23.731155395508, 37.907638549805}, + {139.64378356934, 35.417861938477}, + {10.146469, 45.482346}, + {2.824448, 48.187729}, + {130.444107, 33.655243}, + {36.08528137207, 53.384628295898}, + {-7.4521636962891, 33.585891723633}, + {23.990707397461, 49.569625854492}, + {2.444038, 48.858303}, + {47.902450561523, 29.323196411133}, + {-1.2174224853516, 53.138809204102}, + {3.4091949462891, 6.4276885986328}, + {9.2621612548828, 45.485458374023}, + {77.212600708008, 28.604965209961}, + {-78.583806, 35.709526}, + {108.09104919434, 34.262924194336}, + {125.59776306152, 8.9572906494141}, + {108.55796813965, 34.411239624023}, + {137.364441, 34.75058}, + {34.66667175293, 48.483352661133}, + {37.760696411133, 55.820846557617}, + {3.1880950927734, 50.363388061523}, + {-103.38890075684, 20.523147583008}, + {-57.512741088867, -25.25276184082}, + {35.876541137695, 56.843948364258}, + {32.071151733398, 40.927505493164}, + {-47.665659, -22.741554}, + {35.946578979492, 31.968154907227}, + {13.222833, 52.529923}, + {104.9146270752, 25.037155151367}, + {-112.11479187012, 33.69987487793}, + {18.256912, 49.810867}, + {151.277774, -33.751769}, + {32.619095, 37.961807}, + {107.58567810059, -6.9866180419922}, + {27.389602661133, -32.742691040039}, + {74.518203735352, 16.168441772461}, + {76.96403503418, 43.27995300293}, + {73.15315246582, 19.214401245117}, + {101.46991, 2.99864}, + {57.074661, 30.297546}, + {121.628599, 25.056652}, + {54.425582885742, 24.530410766602}, + {-119.288495, 46.291387}, + {75.625076293945, 13.778915405273}, + {27.932052612305, -32.951431274414}, + {-48.949695, -16.297596}, + {123.899071, 10.316969}, + {101.52534484863, 3.0013275146484}, + {72.827682495117, 19.391555786133}, + {10.320345, 63.377604}, + {20.491104, 44.775467}, + {121.45179748535, 31.167526245117}, + {9.330659, 48.630045}, + {108.477443, -6.984876}, + {-121.395493, 38.450363}, + {112.648252, -7.978402}, + {-46.616941, -23.599639}, + {12.661056518555, 41.583938598633}, + {77.605019, 13.129005}, + {139.32312, 35.861435}, + {32.743796, 39.870592}, + {77.056045532227, 28.473129272461}, + {-99.11247253418, 19.37370300293}, + {76.965752, 52.291489}, + {48.096084594727, 29.184494018555}, + {19.188265, 50.190966}, + {1.420782, 43.571191}, + {55.283203, 25.256195}, + {55.367474, 25.274572}, + {9.309998, 55.621033}, + {2.235718, 48.777924}, + {-97.404295, 20.943018}, + {9.7016143798828, 52.357406616211}, + {-45.620040893555, -19.537124633789}, + {139.66026306152, 35.737838745117}, + {34.955701, 40.56028}, + {-6.353108, 53.430053}, + {174.90303039551, -36.88591003418}, + {-122.191143, 37.42836}, + {37.481918, 55.619659}, + {7.170638, 51.60347}, + {135.444946, 34.518127}, + {126.739474, 37.386379}, + {-82.686116, 27.715918}, + {-81.000943, 35.412265}, + {120.959129, 14.66074}, + {-122.7042388916, 45.374221801758}, + {-71.145065, 42.375285}, + {76.616592407227, 12.343826293945}, + {-123.31809997559, 48.409194946289}, + {-80.130844116211, 25.784225463867}, + {14.43609, 50.065809}, + {73.293228149414, 55.006484985352}, + {-85.729751586914, 31.53694152832}, + {131.897289, 43.10345}, + {10.108108520508, 36.800765991211}, + {13.496017456055, 51.18049621582}, + {-91.172103881836, 30.41633605957}, + {78.632583618164, 14.613876342773}, + {139.06288146973, 37.748336791992}, + {10.878524780273, 49.560012817383}, + {80.207405, 13.017082}, + {24.591528, 42.166217}, + {110.33500671387, 20.009536743164}, + {-74.817581176758, 11.019973754883}, + {100.53245544434, 13.728103637695}, + {-76.373519897461, 39.992294311523}, + {82.968063354492, 55.07926940918}, + {37.443466186523, 54.183883666992}, + {-86.166412, 39.775009}, + {19.230880737305, 50.15739440918}, + {120.380631, 36.290588}, + {126.869705, 37.5173}, + {35.957811, 31.936656}, + {2.430723, 48.613465}, + {121.520543, 25.088048}, + {-101.179694, 19.733009}, + {7.814351, 45.126741}, + {-85.879852, 31.033905}, + {7.874451, 47.548828}, + {1.577225, 52.387619}, + {2.178124, 48.701137}, + {-48.71434, -27.687058}, + {6.9399261474609, 51.588363647461}, + {88.009414672852, 25.388717651367}, + {1.4659881591797, 43.356857299805}, + {28.140793, -25.900383}, + {-95.775976, 29.778185}, + {26.333542, 43.965775}, + {120.22819519043, 30.148544311523}, + {78.548812866211, 17.339859008789}, + {138.550813, 35.083123}, + {72.994537, 50.037918}, + {10.689010620117, 53.832321166992}, + {18.196792602539, 50.459518432617}, + {2.666927, 48.549962}, + {35.001354, 32.817413}, + {-96.742172, 32.893753}, + {-98.968964, 26.4077}, + {-81.439735, 28.493995}, + {103.8599395752, 13.354568481445}, + {-99.177899, 19.397079}, + {79.883651733398, 6.9577789306641}, + {106.809968, -6.17557}, + {76.543808, 9.635893}, + {78.454055786133, 17.471694946289}, + {42.223892211914, 55.454177856445}, + {77.313538, 28.67775}, + {100.711488, 13.993585}, + {-70.709038, -33.72665}, + {-73.996135, 40.764682}, + {18.342361450195, 54.323959350586}, + {55.253677368164, 25.125045776367}, + {-6.2244415283203, 40.054092407227}, + {-66.917038, 10.507278}, + {126.984772, 37.541065}, + {72.846908569336, 19.057846069336}, + {-94.066309, 45.504686}, + {11.078563, 49.454755}, + {103.05931091309, 5.1313018798828}, + {-58.492585, -34.477158}, + {-98.494466, 29.521419}, + {76.111221313477, 10.754928588867}, + {56.285477, 58.010788}, + {88.606796264648, 24.398574829102}, + {77.295456, 28.606339}, + {-83.499319, 32.841287}, + {19.372329711914, 50.92643737793}, + {-71.309321, -35.209874}, + {-66.097641, 18.326797}, + {55.014724731445, 24.921798706055}, + {-1.7433929443359, 53.703231811523}, + {80.000902, 12.756275}, + {22.187576293945, 51.803970336914}, + {-1.5154266357422, 47.189712524414}, + {18.481247, -34.089798}, + {32.553176879883, 25.61393737793}, + {139.581528, 35.981369}, + {39.188919067383, 21.469345092773}, + {11.11198425293, 44.279708862305}, + {34.748765, 32.015933}, + {51.395416, 35.775604}, + {121.125726, 22.724298}, + {2.059937, 49.468689}, + {51.318075, 35.770049}, + {7.4068450927734, 6.8643951416016}, + {-75.05016, 40.089817}, + {37.670059204102, 55.78239440918}, + {-75.207081, 40.694027}, + {39.881058, 57.620544}, + {-38.476821, -13.00891}, + {-87.103417, 20.65064}, + {30.699234008789, 40.750350952148}, + {5.688647, 50.85974}, + {8.861847, 48.245087}, + {39.56657409668, 52.599105834961}, + {136.93153381348, 34.997634887695}, + {-98.592766, 29.515551}, + {121.42021179199, 31.030197143555}, + {-76.805122, 18.025978}, + {-75.161004, 39.94803}, + {20.359774, 49.909766}, + {104.55207824707, 30.390243530273}, + {2.0990753173828, 41.564712524414}, + {54.408417, 24.441147}, + {31.363906860352, 31.045303344727}, + {109.680129, -7.69895}, + {106.54609680176, 29.578628540039}, + {89.815292358398, 23.828659057617}, + {102.246857, 5.991274}, + {117.70545959473, 39.002151489258}, + {-2.951195, 53.795594}, + {25.600204467773, -33.790512084961}, + {151.075195, -33.961216}, + {-89.521408081055, 14.038467407227}, + {-97.751267, 27.669479}, + {7.779616, 48.571816}, + {30.178756713867, 59.791030883789}, + {27.99542, -26.027102}, + {27.487106323242, -11.65168762207}, + {135.353622, 34.745636}, + {-71.96662902832, -13.534469604492}, + {121.325912, 24.968033}, + {51.38031, 35.750198}, + {88.435822, 22.647629}, + {2.5865936279297, 48.801956176758}, + {-46.677474975586, -23.563613891602}, + {139.66300964355, 35.741958618164}, + {-117.00782775879, 32.540817260742}, + {23.826149, 54.525398}, + {-88.176613, 41.776199}, + {119.525028, -5.069983}, + {-100.95680236816, 25.431289672852}, + {-14.344711303711, 10.396499633789}, + {121.510162, 31.054916}, + {13.434767, 51.179615}, + {48.045272827148, 46.353378295898}, + {120.89149475098, 24.108810424805}, + {34.62272644043, 31.135940551758}, + {108.94248962402, 34.319229125977}, + {73.083115, 19.269333}, + {30.567856, 50.417404}, + {135.05836486816, 35.62385559082}, + {75.652542114258, 31.297988891602}, + {76.212844848633, 30.708847045898}, + {4.3485260009766, 45.396194458008}, + {-79.000625610352, 41.159591674805}, + {4.1301727294922, 51.835556030273}, + {1.4975738525391, 43.133010864258}, + {54.479141235352, 24.343643188477}, + {-82.698075, 27.843163}, + {78.558975, 17.458694}, + {-0.38932800292969, 5.9017181396484}, + {30.939396, 50.358686}, + {-49.204523, -16.666103}, + {-93.622849, 41.520169}, + {6.5169525146484, 51.758651733398}, + {-87.721363, 41.758997}, + {7.378235, 49.408035}, + {-2.11027, 57.140554}, + {12.687149047852, 41.831130981445}, + {32.520401, -25.939191}, + {140.452652, 37.772369}, + {120.995178, 14.633102}, + {37.518638, 55.542193}, + {113.99757385254, 22.459487915039}, + {121.09199523926, 14.593276977539}, + {-112.025528, 41.132484}, + {-99.784674, 19.231534}, + {-70.985275, 42.186676}, + {-83.330612182617, 33.942947387695}, + {-76.596451, 39.465866}, + {34.788467, 31.959216}, + {72.915448, 19.055099}, + {55.72883605957, 25.111312866211}, + {127.10449, 37.170946}, + {3.2457733154297, 49.323806762695}, + {-79.923752, 36.493149}, + {-0.696945, 38.262634}, + {39.80278, 64.543305}, + {120.8667755127, 24.678726196289}, + {37.612380981445, 55.77278137207}, + {9.79335, 4.08046}, + {104.907761, 11.590576}, + {103.82011413574, 1.5195465087891}, + {9.4448089599609, 51.305465698242}, + {1.5621185302734, 49.25651550293}, + {31.968492, -25.443373}, + {8.0907440185547, 53.512344360352}, + {52.563309, 28.874863}, + {37.630134, 55.766603}, + {-0.955124, 50.867386}, + {36.05094909668, 31.267776489258}, + {18.489647, -33.992729}, + {75.800857543945, 26.915817260742}, + {27.479925, 53.884225}, + {-83.927805, 9.848104}, + {-17.434163, 14.689969}, + {101.520377, 3.070618}, + {120.62782287598, 24.018173217773}, + {26.189346313477, 44.484329223633}, + {4.8758697509766, 52.35466003418}, + {48.698959, 31.319504}, + {90.420913696289, 23.891830444336}, + {10.160293579102, 53.434066772461}, + {100.626217, 13.781977}, + {1.1020660400391, 52.264022827148}, + {17.041283, 50.95346}, + {101.62559509277, 3.1317901611328}, + {19.464948, -33.623538}, + {-83.171310424805, 42.265090942383}, + {12.611706, 42.18469}, + {-82.874495, 40.083847}, + {9.5903778076172, 55.752182006836}, + {-99.233015, 19.53709}, + {4.940939, 52.306971}, + {133.950231, 34.60718}, + {-74.589614868164, 40.683059692383}, + {13.317972, 47.423481}, + {127.024781, 36.798287}, + {-97.26676940918, 49.877243041992}, + {2.343826, 48.915482}, + {-0.601404, 45.559812}, + {30.509719848633, 31.144180297852}, + {139.83604431152, 35.773544311523}, + {23.225524, 50.548886}, + {12.136685, 58.125824}, + {1.8766021728516, 48.972244262695}, + {-86.229629516602, 32.39387512207}, + {-46.90738, -23.602306}, + {36.032357, 34.478531}, + {43.053359985352, 56.279525756836}, + {37.554702758789, 55.599746704102}, + {-88.468542, 40.066455}, + {-118.24169, 34.00952}, + {-73.704095, 45.581122}, + {77.548599, 12.980576}, + {87.860641, 23.240891}, + {-65.334035, -26.405806}, + {76.476517, 9.766388}, + {-60.583419799805, -31.611099243164}, + {6.760025, 43.425064}, + {114.22691345215, 22.342758178711}, + {-4.5270538330078, 36.662063598633}, + {-1.6815948486328, 6.6982269287109}, + {126.49314880371, 37.49153137207}, + {11.605015, 48.115084}, + {120.451584, 16.028824}, + {-15.862198, 14.867592}, + {85.147476196289, 25.587844848633}, + {76.464157104492, 23.57048034668}, + {29.754409790039, 31.101608276367}, + {3.876801, 44.834521}, + {106.880969, -6.339481}, + {121.37077331543, 24.947891235352}, + {77.539443969727, 13.042831420898}, + {128.12873840332, -3.7703704833984}, + {134.999313, 34.690018}, + {114.17335510254, 22.29606628418}, + {113.794327, 22.804642}, + {106.79431, -6.125009}, + {110.7332611084, -7.7460479736328}, + {-8.265679, 54.004542}, + {84.978561401367, 25.927047729492}, + {106.837921, 10.868912}, + {-0.106264, 51.521155}, + {77.513351, 28.773193}, + {9.7963714599609, 53.714218139648}, + {75.62370300293, 31.269149780273}, + {52.686539, 36.535721}, + {-43.506546020508, -20.391311645508}, + {39.166946411133, 21.513290405273}, + {70.828170776367, 22.311172485352}, + {25.560017, 49.542464}, + {71.16325378418, 21.410293579102}, + {23.354187, 42.665405}, + {-43.395309448242, -22.931900024414}, + {0.57472229003906, 52.69660949707}, + {88.43376159668, 22.567977905273}, + {51.377426, 35.754318}, + {19.296112, 50.202713}, + {29.880752563477, 31.210098266602}, + {131.923641, 32.950433}, + {12.061335, 48.999161}, + {-2.433335, 36.870255}, + {0.385408, 43.599145}, + {-97.943115, 19.118958}, + {78.53611, 17.374191}, + {-70.6253, -33.486707}, + {-3.914733, 56.098443}, + {-91.00256, 30.274087}, + {151.20826721191, -33.828964233398}, + {11.605556, 48.191738}, + {-98.854933, 19.67434}, + {-87.989502, 41.562653}, + {-93.212814331055, 18.247604370117}, + {-100.321299, 25.668567}, + {-51.559524536133, -23.489456176758}, + {7.594418, 51.804626}, + {106.93473815918, -6.2189483642578}, + {53.09211730957, 32.862167358398}, + {15.349338, 51.237369}, + {-103.40950012207, 20.700302124023}, + {106.878433, -6.268387}, + {49.473495483398, 58.736343383789}, + {22.532711, 38.809904}, + {25.192337036133, 35.144577026367}, + {-8.330044, 39.710982}, + {-92.949142456055, 44.872970581055}, + {38.979721, 45.044174}, + {38.97331237793, 45.019912719727}, + {-118.255806, 33.80389}, + {41.979446411133, 27.370376586914}, + {136.36024475098, 36.300888061523}, + {139.75914001465, 35.670547485352}, + {19.080854, 50.874545}, + {9.556644, 51.350021}, + {3.149332, 46.994219}, + {116.76915, 38.373871}, + {127.68928527832, 26.24153137207}, + {77.560043, 12.922668}, + {-78.45994, -0.075472}, + {-64.192428588867, -31.354293823242}, + {48.068618774414, 30.490493774414}, + {78.112106323242, 18.676071166992}, + {18.36364, 57.566532}, + {-97.332759, 32.729657}, + {12.58907, 48.252206}, + {37.852902, 55.973282}, + {41.53450012207, 54.774398803711}, + {106.885749, -6.196759}, + {-0.467356, 51.441181}, + {-8.1882476806641, 40.492172241211}, + {4.7701263427734, 52.431564331055}, + {-2.171173, 53.178635}, + {-50.146408081055, -27.892227172852}, + {20.810165405273, 52.161026000977}, + {-87.226638793945, 14.053573608398}, + {61.684799194336, 55.158920288086}, + {60.872567, 56.239202}, + {-66.071365, 18.398666}, + {2.447238, 48.760114}, + {48.099372, 29.161385}, + {20.492935180664, 44.768600463867}, + {-43.174209594727, -22.894821166992}, + {29.948708, 50.440993}, + {-5.929184, 6.124649}, + {-87.892684936523, 42.002792358398}, + {16.379926, 60.040284}, + {106.46781921387, 29.562149047852}, + {-46.41227, -23.495216}, + {-60.94596862793, 14.677047729492}, + {-6.9165802001953, 32.870407104492}, + {-93.290095, 44.371698}, + {-48.156509399414, -21.761856079102}, + {-117.67559, 47.574921}, + {-123.16017150879, 49.26887512207}, + {11.853364, 48.08264}, + {116.31843566895, 39.946975708008}, + {-99.164854, 19.385474}, + {113.38371276855, -1.9136810302734}, + {19.3293, 49.633713}, + {-79.707870483398, 43.757858276367}, + {139.77012634277, 35.687026977539}, + {48.079605102539, 46.119918823242}, + {12.780315, 48.66687}, + {86.421890258789, 23.79020690918}, + {8.048996, 49.591599}, + {85.455089, 23.384402}, + {10.542983, 52.364273}, + {30.522079467773, 31.302108764648}, + {106.728058, -6.260147}, + {85.390549, 26.15062}, + {91.778412, 26.111756}, + {77.589569, 12.88353}, + {33.48014831543, -13.040084838867}, + {-0.24238586425781, 51.53205871582}, + {76.465530395508, 30.364151000977}, + {72.841415405273, 21.325149536133}, + {-99.142382, 19.42702}, + {77.090378, 28.65921}, + {24.79133605957, 60.163192749023}, + {100.64781188965, 14.82536315918}, + {117.12455749512, 36.67854309082}, + {43.027267456055, 44.132766723633}, + {-51.885909, -23.426931}, + {138.61518859863, 35.139083862305}, + {-83.649533, 32.821499}, + {-77.041128, 38.881345}, + {127.41716, 36.404915}, + {77.44194, 12.653503}, + {23.221664428711, 55.93620300293}, + {12.536479, 51.814172}, + {-42.288436889648, -20.746994018555}, + {14.31999206543, 46.61979675293}, + {-3.3405303955078, 47.719802856445}, + {29.096603393555, 40.982437133789}, + {-58.556442260742, -34.599380493164}, + {-104.43534851074, 24.277725219727}, + {-81.721115112305, 28.006210327148}, + {2.3091888427734, 48.731918334961}, + {112.695442, -7.536347}, + {-1.087525, 52.738615}, + {2.3091888427734, 48.815689086914}, + {-123.57490539551, 46.181716918945}, + {-3.907759, 40.377473}, + {-78.860092, 42.9673}, + {15.525137, 53.755714}, + {13.973514, 50.71084}, + {31.215591430664, 30.019454956055}, + {31.320511, 30.083038}, + {-1.480408, 53.557663}, + {28.020286, -26.133385}, + {-0.062943, 51.425401}, + {-74.105732, 4.547124}, + {36.301121, 33.522311}, + {-116.3939666748, 43.632888793945}, + {76.601486206055, 32.072525024414}, + {103.85581970215, 1.2929534912109}, + {-121.95304870605, 47.622299194336}, + {-81.862579, 42.379767}, + {100.948231, 14.542121}, + {-106.479568, 31.745058}, + {7.8696441650391, 35.939712524414}, + {72.627182006836, 23.111801147461}, + {-106.348288, 31.740705}, + {-77.33044, 38.939361}, + {23.022537231445, 40.553970336914}, + {-79.415359, 44.016724}, + {90.396194458008, 23.913803100586}, + {4.46583, 51.474032}, + {4.7742462158203, 46.188583374023}, + {39.894398, 59.2493}, + {116.371484, 39.966736}, + {100.977391, 12.949927}, + {8.479814, 51.353932}, + {18.647232, -33.826904}, + {-1.028635, 45.624403}, + {-46.78596496582, -23.635025024414}, + {21.993273, 50.020742}, + {127.492036, 34.963577}, + {121.48475646973, 25.090713500977}, + {-73.961985, 40.761682}, + {8.96878, 49.464572}, + {32.759170532227, 25.800704956055}, + {10.720631, 50.898325}, + {120.61134338379, 31.39274597168}, + {100.69862365723, 13.758316040039}, + {30.340805053711, 60.050582885742}, + {114.07997131348, 22.558364868164}, + {37.53273, 55.899124}, + {101.686287, 3.148724}, + {18.010025024414, 59.299392700195}, + {80.154190063477, 24.714431762695}, + {114.4864654541, 22.598190307617}, + {-0.094070434570312, 51.505966186523}, + {-60.412445, -33.311234}, + {-82.65195, 27.782404}, + {3.1578826904297, 50.686111450195}, + {52.348178, 27.698629}, + {74.838180541992, 31.639938354492}, + {52.491989135742, 29.655532836914}, + {2.2446441650391, 49.936294555664}, + {119.3025970459, 26.069869995117}, + {-117.998835, 34.065933}, + {-1.4962005615234, 53.966903686523}, + {30.005722045898, 31.271896362305}, + {126.663249, 37.489726}, + {-99.168777, 19.422767}, + {150.802591, -33.741659}, + {1.696358, 41.235466}, + {-47.331566, -22.741049}, + {55.392105, 25.334335}, + {76.167526245117, 10.48713684082}, + {139.77012634277, 35.687026977539}, + {-46.758395, -23.570209}, + {80.259018, 13.09227}, + {98.494491577148, 3.6261749267578}, + {121.53117, 25.05738}, + {-117.16163635254, 32.706985473633}, + {19.309158325195, 50.315322875977}, + {80.217361450195, 21.43913269043}, + {76.650924682617, 10.77278137207}, + {33.366165161133, 35.199508666992}, + {116.130627, 6.035174}, + {116.502365, 6.510821}, + {10.345687866211, 36.15119934082}, + {31.015344, 30.024601}, + {55.31135559082, 25.25276184082}, + {-118.346408, 34.186418}, + {-1.05423, 44.614563}, + {2.9587554931641, 36.649703979492}, + {-10.778274536133, 6.2931060791016}, + {-0.45799255371094, 51.534805297852}, + {10.992783, 49.446215}, + {4.8360443115234, 43.954238891602}, + {1.2737274169922, 51.350784301758}, + {4.802903, 52.022708}, + {4.233163, 47.643587}, + {110.40229797363, 0.85624694824219}, + {9.156728, 49.266984}, + {140.966949, 37.166748}, + {47.994736, 46.291306}, + {104.71961975098, 31.406478881836}, + {103.276683, 10.671158}, + {20.138626098633, -30.603103637695}, + {107.807465, -6.966019}, + {77.289505004883, 28.61457824707}, + {48.091965, 46.351547}, + {2.0565032958984, 41.471328735352}, + {-4.020394, 55.798195}, + {100.504911, 13.788928}, + {97.807098, 2.27945}, + {77.418594360352, 28.669509887695}, + {13.391647, 46.831284}, + {45.151748657227, 40.387802124023}, + {27.824081, -26.747499}, + {44.098434448242, 33.275527954102}, + {135.77796936035, 35.019607543945}, + {12.56217956543, 50.67512512207}, + {7.800327, 47.649337}, + {-122.957548, 44.048087}, + {11.540451049805, 48.269119262695}, + {43.468094, 56.245056}, + {-80.357437133789, 40.776443481445}, + {12.525100708008, 55.731582641602}, + {-71.329422, 41.924858}, + {18.68745, 49.256908}, + {19.21989440918, 51.887741088867}, + {-1.7337799072266, 39.256210327148}, + {-77.022586, -12.11562}, + {11.040573120117, 43.804550170898}, + {31.001358032227, -17.900161743164}, + {5.8879852294922, 50.996475219727}, + {100.535409, 13.72838}, + {100.5895, 13.71112}, + {2.662199, 39.578283}, + {9.001825, 48.709553}, + {-3.7003326416016, 42.343368530273}, + {132.73887634277, 33.758926391602}, + {127.350359, 36.387639}, + {-87.688888, 30.886371}, + {-2.3929595947266, 53.646926879883}, + {98.494991, 2.895703}, + {-52.34304, -31.767632}, + {9.1289520263672, 39.217758178711}, + {135.12153625488, 34.253311157227}, + {-72.520885, 7.906059}, + {135.25611877441, 34.714736938477}, + {120.99449157715, 14.611129760742}, + {35.18440246582, -14.556198120117}, + {37.52449, 56.091042}, + {120.99449157715, 14.637222290039}, + {-118.11541, 33.956736}, + {142.2338104248, -38.367691040039}, + {14.331493, 40.839615}, + {27.069625854492, 65.395431518555}, + {55.448684692383, -4.6231842041016}, + {85.898666381836, 22.570724487305}, + {-2.6470184326172, 48.335037231445}, + {78.550186157227, 14.723739624023}, + {-80.335465, 25.63179}, + {35.075912475586, 37.023239135742}, + {11.474235, 50.271079}, + {77.480392456055, 23.261489868164}, + {24.44458, 45.060425}, + {1.207765, 6.212043}, + {139.786949, 35.71312}, + {88.256607055664, 23.858871459961}, + {116.525803, 39.793625}, + {120.439514, 23.597087}, + {78.43620300293, 17.394790649414}, + {12.457185, 41.900295}, + {126.97929382324, 37.565689086914}, + {-75.372665, 39.852219}, + {73.088607788086, 19.225387573242}, + {-80.067051, 36.116115}, + {18.047103881836, 48.892593383789}, + {-43.395309448242, -22.886581420898}, + {106.69853210449, 10.792007446289}, + {8.588334, 52.021278}, + {145.145128, -37.786425}, + {35.507813, 33.881149}, + {-70.323074, -27.376822}, + {-91.130536, 30.500252}, + {121.54930114746, 24.952011108398}, + {8.1731414794922, 52.695236206055}, + {-97.930068969727, 19.015274047852}, + {25.752969, 58.722945}, + {1.559647, 45.227555}, + {-123.16429138184, 49.264755249023}, + {121.00135803223, 14.594650268555}, + {57.078781, 27.102127}, + {28.308334350586, -26.166000366211}, + {-73.77305, 45.566182}, + {-3.983687, 55.801163}, + {-87.635441, 41.866089}, + {37.877426147461, 55.561294555664}, + {78.338699, 17.42157}, + {4.0326690673828, 46.470108032227}, + {106.79191589355, -6.2203216552734}, + {-111.826755, 40.667992}, + {21.80305480957, 55.00373840332}, + {31.068649291992, 29.967269897461}, + {120.17189025879, 30.241928100586}, + {72.846908569336, 18.983688354492}, + {0.13664245605469, 51.581497192383}, + {0.010986, 51.570854}, + {-85.242775, 32.74527}, + {21.100108, 52.255456}, + {37.62062, 55.577774}, + {-3.5231781005859, 50.481491088867}, + {150.829468, 59.58847}, + {2.372208, 48.896408}, + {2.357431, 48.927324}, + {100.507044, 13.836703}, + {77.875900268555, 28.414077758789}, + {104.06455993652, 30.627822875977}, + {121.106071, 14.540749}, + {-120.302915, 37.979733}, + {138.96263122559, 35.748825073242}, + {121.08512878418, 28.205337524414}, + {79.953689575195, 17.62825012207}, + {101.68601989746, 3.1702423095703}, + {-4.5600128173828, 53.27751159668}, + {114.36012268066, 30.509719848633}, + {35.02739, 0.982132}, + {-66.241383, 18.321731}, + {36.575546264648, 50.624313354492}, + {10.704116821289, 34.728469848633}, + {-58.857651, -34.613571}, + {46.675941, 24.589211}, + {73.180618, 22.262192}, + {100.637449, 13.762281}, + {133.91166687012, 35.058059692383}, + {29.994735717773, 39.97444152832}, + {27.929538, -26.340211}, + {116.901211, -1.253575}, + {37.660446166992, 55.89225769043}, + {77.680892944336, 13.369674682617}, + {105.07392883301, 12.055435180664}, + {-111.68632507324, 34.989395141602}, + {120.01670837402, 28.890609741211}, + {101.55013, 3.056165}, + {55.350449, 25.229233}, + {-71.333884, 42.454606}, + {127.008228, 37.041555}, + {120.72395324707, 24.17610168457}, + {15.647964477539, 48.216934204102}, + {137.98759460449, 37.090530395508}, + {21.082077026367, 41.980819702148}, + {18.853226, -33.945007}, + {110.81428527832, -7.5991058349609}, + {121.49848937988, 25.13053894043}, + {-77.337384, 38.864111}, + {24.277725219727, 42.365341186523}, + {-3.285185, 53.273038}, + {78.496628, 17.398911}, + {35.461807250977, 40.857467651367}, + {-99.241561889648, 19.519271850586}, + {74.446792602539, 31.278762817383}, + {11.077652, 44.934082}, + {55.330581665039, 25.254135131836}, + {31.290691, 30.120568}, + {28.727473, 61.166549}, + {26.33903503418, 60.893783569336}, + {18.801040649414, -33.841323852539}, + {-5.0035858154297, 36.462936401367}, + {7.754288, 48.603745}, + {35.877914428711, 34.269790649414}, + {37.466812133789, 55.763168334961}, + {51.622009, 35.369797}, + {52.460403442383, 55.775527954102}, + {-46.371901, -23.053565}, + {-118.4593963623, 33.996505737305}, + {16.084671020508, 47.728042602539}, + {88.340377807617, 22.507553100586}, + {139.98985290527, 35.332717895508}, + {-82.558822631836, 35.596389770508}, + {17.006858, 51.117799}, + {2.638779, 41.87851}, + {-79.662551879883, 33.805618286133}, + {44.319534301758, 33.290634155273}, + {-81.642929, 26.609207}, + {113.77784729004, 23.206558227539}, + {-46.80793762207, -23.584213256836}, + {-43.318134, -23.012098}, + {100.49263000488, 13.903884887695}, + {-101.627746, 17.666486}, + {79.114608764648, 13.237838745117}, + {28.861770629883, 47.001571655273}, + {103.52073669434, 16.654586791992}, + {82.490096, 28.044163}, + {116.27998352051, 39.721755981445}, + {104.94071960449, 14.218368530273}, + {-112.175217, 33.493881}, + {90.25749206543, 23.849258422852}, + {0.665839, 51.56241}, + {34.87571, 32.215507}, + {-16.241364, 28.477661}, + {38.982551, 45.125933}, + {10.209373, 49.049565}, + {27.981491088867, -26.236038208008}, + {38.146591186523, 44.848251342773}, + {106.855142, -6.668091}, + {-7.392426, 52.998734}, + {78.171157836914, 11.308364868164}, + {51.582197, 30.120396}, + {101.705836, 3.162406}, + {139.804916, 35.200424}, + {81.083908081055, 26.867752075195}, + {39.368362, -3.791428}, + {54.347649, 24.481659}, + {4.4089508056641, 51.279373168945}, + {135.76286315918, 34.857559204102}, + {11.155243, 2.91687}, + {136.973557, 35.100906}, + {79.978408813477, 12.986526489258}, + {84.856338, 26.987228}, + {-3.4091949462891, 40.761337280273}, + {-46.728286743164, -23.588333129883}, + {-86.330799, 39.72728}, + {12.183151245117, -5.5995941162109}, + {30.133438110352, 55.168533325195}, + {110.54786682129, -7.0346832275391}, + {10.092218, 48.260683}, + {8.754639, 51.688016}, + {79.500503540039, 11.929092407227}, + {4.847771, 45.748341}, + {37.562943, 55.800385}, + {74.486618041992, 31.575393676758}, + {-1.4220428466797, 53.23356628418}, + {90.404434204102, 23.784713745117}, + {16.31950378418, 48.193588256836}, + {50.096969604492, 26.365127563477}, + {37.504234, 55.739651}, + {114.21455383301, 22.419662475586}, + {1.1569976806641, 45.070724487305}, + {51.585617, 32.684097}, + {9.6645355224609, 48.745651245117}, + {136.682968, 35.317612}, + {121.46415710449, 31.222457885742}, + {101.746359, 3.122325}, + {-4.3334197998047, 42.40104675293}, + {106.127534, -2.163571}, + {51.440048, 35.79792}, + {-81.332438, 28.524567}, + {74.126815795898, 19.081192016602}, + {-81.54670715332, 28.368759155273}, + {150.552764, -34.851415}, + {79.81636, 10.932084}, + {-101.13842, 20.565376}, + {76.52458190918, 9.6329498291016}, + {139.685838, 36.068633}, + {-77.005608, -12.093688}, + {-75.879723, 41.262043}, + {-80.598679, 40.776443}, + {-98.964155, 19.481978}, + {-83.412464, 41.610857}, + {11.987424, 51.772396}, + {84.47868347168, 26.203079223633}, + {23.798446655273, 61.484298706055}, + {78.596878051758, 21.266098022461}, + {-87.565155, 41.741867}, + {48.066902, 46.411743}, + {13.164428, 52.851808}, + {-121.975021, 37.383043}, + {82.741470336914, 26.794967651367}, + {136.86973571777, 35.187149047852}, + {-0.26023864746094, 5.6023406982422}, + {136.864243, 35.402412}, + {-82.910042, 42.52636}, + {106.49528503418, 29.725570678711}, + {139.478531, 35.531845}, + {114.40406799316, 38.054580688477}, + {77.568283081055, 12.93571472168}, + {71.543655395508, 42.955856323242}, + {115.19645690918, -8.6812591552734}, + {18.469881, -33.983754}, + {127.12211608887, 37.525863647461}, + {121.0343170166, 14.699020385742}, + {-81.701851, 26.599079}, + {128.52878, 35.156747}, + {44.34494, 33.011627}, + {78.473281860352, 17.353591918945}, + {5.50209, 45.346413}, + {-8.5494232177734, 41.06071472168}, + {37.609291, 55.715103}, + {78.182831, 12.98172}, + {18.691864, 50.215759}, + {47.933865, 56.625595}, + {3.8747406005859, 51.599349975586}, + {30.280380249023, 59.917373657227}, + {-76.381759643555, -6.4826202392578}, + {-2.414203, 51.550186}, + {-55.727119, -12.566459}, + {38.783798217773, 37.146835327148}, + {37.912445, 55.647125}, + {29.177627563477, 40.736618041992}, + {17.519185, 50.377637}, + {10.472030639648, 53.494491577148}, + {-69.949014, 18.44898}, + {130.552872, 31.660538}, + {78.863296, 18.459778}, + {25.738906860352, 62.290420532227}, + {-97.570266723633, 19.75959777832}, + {-122.002144, 37.339783}, + {-6.1750030517578, 54.39811706543}, + {-75.604673, 1.605868}, + {-72.966385, 41.457596}, + {-58.368988, -34.633713}, + {126.908053, 37.094907}, + {-75.596751, 6.243638}, + {-118.026002, 34.13817}, + {139.86763, 35.751484}, + {9.705323, 48.224565}, + {121.02333068848, 24.818801879883}, + {9.273147, 48.545984}, + {135.65574645996, 34.89875793457}, + {9.179377, 48.782395}, + {19.264653, 47.476758}, + {30.434188842773, 50.412826538086}, + {11.562767, 48.164406}, + {139.48036193848, 35.343704223633}, + {11.522598266602, 3.8884735107422}, + {135.93315124512, 34.992141723633}, + {-89.198684692383, 30.708847045898}, + {19.571141, 51.749037}, + {-1.6747283935547, 53.743057250977}, + {-103.294418, 20.621475}, + {139.8950958252, 35.757064819336}, + {140.05165100098, 36.38053894043}, + {9.083555, 48.45385}, + {30.329819, 59.851112}, + {-0.704184, 38.965653}, + {120.946747, 14.097936}, + {120.977647, 14.579872}, + {22.42790222168, 41.803665161133}, + {105.37605285645, 28.786239624023}, + {-7.760468, 55.045968}, + {3.304138, 6.591797}, + {-94.543543, 38.630425}, + {-4.3361663818359, 11.144943237305}, + {6.3425445556641, 46.25862121582}, + {121.65916442871, 25.067367553711}, + {136.47422790527, 34.863052368164}, + {58.16780090332, 23.102188110352}, + {18.908157348633, 50.360641479492}, + {77.244186401367, 28.611831665039}, + {8.994886, 48.693037}, + {9.3198394775391, 40.312271118164}, + {7.9245758056641, 5.0296783447266}, + {77.749557495117, 12.937088012695}, + {6.368294, 45.655746}, + {-105.128634, 21.183212}, + {5.9896087646484, 51.191482543945}, + {-1.8354034423828, 50.841293334961}, + {-87.185440063477, 14.083786010742}, + {-117.838835, 33.995163}, + {51.389065, 35.75758}, + {106.867223, -6.282096}, + {18.700790405273, 63.316268920898}, + {101.79039001465, 2.8159332275391}, + {84.968948364258, 56.466293334961}, + {-87.190815, 14.087526}, + {112.753098, -7.279953}, + {29.847519, -27.354996}, + {0.39344787597656, 48.061752319336}, + {-77.752991, 37.143402}, + {-103.435985, 20.629676}, + {24.140396118164, 65.899429321289}, + {-75.685676, 45.440093}, + {-83.210902, 42.285822}, + {-80.122604370117, 26.137161254883}, + {106.914825, -6.302719}, + {-117.04078674316, 32.533950805664}, + {9.019493, 48.209694}, + {-3.384476, 50.859604}, + {110.47233581543, -7.0195770263672}, + {127.013643, 37.489861}, + {14.459725, 48.955078}, + {70.441789, 21.509115}, + {54.003982543945, 26.55876159668}, + {7.089305, 43.608315}, + {18.961715698242, 47.59895324707}, + {115.55763244629, 38.87580871582}, + {103.80363464355, 1.3382720947266}, + {140.23704528809, 36.114120483398}, + {137.041855, 35.196304}, + {135.08995056152, 34.819107055664}, + {34.793701, -0.081711}, + {32.197757, 30.581813}, + {77.639694213867, 13.019485473633}, + {137.00843811035, 35.051193237305}, + {10.432205200195, 5.4856109619141}, + {106.84959411621, -6.1461639404297}, + {79.279403686523, 15.735855102539}, + {6.7833709716797, 51.429061889648}, + {3.3954620361328, 47.895584106445}, + {-8.544617, 37.146835}, + {14.906387329102, 37.560195922852}, + {-2.770315, 54.080281}, + {113.4317779541, 24.162368774414}, + {-2.5948333740234, 51.533432006836}, + {106.779882, -6.225009}, + {19.946365356445, 50.033798217773}, + {51.60758972168, 32.796249389648}, + {125.324478, 43.856343}, + {28.252914, -26.200172}, + {-117.246973, 34.431596}, + {30.203476, 60.010757}, + {37.591781616211, 55.835952758789}, + {-83.154144, 42.50679}, + {26.203995, 44.408343}, + {100.07377624512, 13.813247680664}, + {16.592788696289, 47.219924926758}, + {13.417465, 52.49144}, + {-50.184860229492, -29.783248901367}, + {8.4683990478516, 49.316940307617}, + {-3.6110687255859, 40.434494018555}, + {-59.863815307617, -36.781539916992}, + {10.93895, 45.724754}, + {-9.5313262939453, 30.391616821289}, + {91.379470825195, 53.712844848633}, + {-74.748916625977, 40.670700073242}, + {107.013355, -6.364145}, + {-118.465522, 34.211137}, + {-105.048226, 39.836176}, + {90.393447875977, 23.721542358398}, + {-111.960264, 41.062807}, + {115.245785, -8.436668}, + {-93.75417, 32.402281}, + {48.12629699707, 29.135055541992}, + {28.073502, -26.147461}, + {11.569599, 48.138622}, + {33.661423, 44.955368}, + {76.937942504883, 28.345413208008}, + {-97.44255065918, 41.475448608398}, + {-84.699692, 34.050797}, + {105.86494445801, 21.009292602539}, + {43.657608032227, 43.948745727539}, + {77.628707885742, 12.939834594727}, + {20.288509, 46.864138}, + {106.801069, -6.235958}, + {148.875925, -20.212744}, + {77.760543823242, 29.000473022461}, + {31.269149780273, 30.070266723633}, + {18.706283569336, 46.449508666992}, + {2.297457, 48.847416}, + {139.630131, 35.600187}, + {51.355362, 25.324173}, + {52.548294067383, 29.578628540039}, + {-4.166153, 55.869461}, + {-2.1004486083984, 57.092514038086}, + {7.5002288818359, 6.4949798583984}, + {-2.28524, 53.542295}, + {8.254471, 50.488052}, + {114.06349182129, 22.635269165039}, + {10.87028503418, 48.476486206055}, + {121.02607727051, 14.523239135742}, + {73.057022094727, 30.692367553711}, + {175.849994, -37.38716}, + {105.219869, -4.534106}, + {20.385777, 44.862166}, + {139.14253234863, -35.069046020508}, + {117.05177307129, 36.67854309082}, + {-111.93901062012, 40.658340454102}, + {-2.927955, 51.24797}, + {1.499634, 43.566284}, + {12.433486, 47.787881}, + {29.089088, 49.224271}, + {9.1667, 48.775438}, + {80.229687, 13.025207}, + {9.171615, 48.830246}, + {6.9289398193359, 50.920944213867}, + {139.415588, 35.69664}, + {37.531723, 55.800291}, + {10.317456, 49.087808}, + {3.0837249755859, 50.632553100586}, + {-119.731225, 36.817519}, + {32.555237, 37.935791}, + {-88.00666809082, 15.487289428711}, + {60.612333, 56.835117}, + {31.940479, 49.413357}, + {-1.053543, 51.372986}, + {0.046005249023438, 51.504592895508}, + {135.167313, 34.192886}, + {91.876602172852, 25.583724975586}, + {-86.852188, 36.009293}, + {-69.956818, 18.457031}, + {-82.976303100586, 40.032119750977}, + {-122.40760803223, 37.932357788086}, + {-71.34664, 42.673655}, + {81.464309692383, 16.584548950195}, + {127.341626, 36.303091}, + {-72.605209350586, 41.748733520508}, + {-122.058792, 37.529984}, + {151.22062683105, -33.87565612793}, + {126.88865661621, 37.509384155273}, + {113.67622375488, 34.790267944336}, + {-83.093719, 39.954071}, + {-118.77388000488, 34.674911499023}, + {28.125686645508, -26.279983520508}, + {-94.126052856445, 41.847610473633}, + {-59.256820678711, -32.348556518555}, + {10.222091674805, 53.557662963867}, + {117.15476989746, -0.45387268066406}, + {-2.924423, 43.239441}, + {106.86882, -6.228562}, + {34.357576, 53.286596}, + {8.8899993896484, 45.508804321289}, + {78.18489074707, 12.976913452148}, + {5.9401702880859, 43.120651245117}, + {73.083114624023, 19.468460083008}, + {137.394083, 34.838333}, + {30.29686, 60.006466}, + {136.926544, 35.312791}, + {134.18083190918, 34.482650756836}, + {82.061005, 26.242218}, + {77.511978149414, 23.254623413086}, + {121.082382, 14.681808}, + {114.89707946777, -0.96061706542969}, + {11.944198608398, 57.695388793945}, + {7.18094, 48.89946}, + {-44.014663696289, -19.931259155273}, + {2.464716, 41.554438}, + {-5.973698, 37.40683}, + {27.893600463867, -26.090469360352}, + {14.360276, 48.079606}, + {26.098709106445, 44.44450378418}, + {47.549514770508, -18.932876586914}, + {121.167183, 13.974266}, + {-63.17926, -17.769498}, + {51.301345825195, 35.76530456543}, + {-37.874234, -6.063103}, + {83.779678344727, 18.254470825195}, + {15.404463, 47.061094}, + {36.966934204102, -1.4783477783203}, + {127.670331, 26.212342}, + {28.796484, 40.991619}, + {6.043167, 50.876312}, + {77.097244262695, 30.912094116211}, + {121.732839, 25.109303}, + {90.396194458008, 23.769607543945}, + {-118.038946, 34.038694}, + {11.592048, 48.175735}, + {2.41101, 48.856893}, + {4.077185, 44.080603}, + {-71.25595, -30.254631}, + {27.949134, -26.045407}, + {110.49430847168, -7.3244476318359}, + {136.18309020996, 35.961685180664}, + {106.626792, -6.168661}, + {-74.203132, 40.516695}, + {-58.738684, -35.019771}, + {-97.425445, 35.348393}, + {113.93577575684, 22.316665649414}, + {127.77442932129, 26.183853149414}, + {14.669927, 53.382363}, + {-99.17741, 19.547102}, + {-87.598508, 41.680816}, + {74.77912902832, 31.767654418945}, + {20.985257, 52.160013}, + {7.0072174072266, 4.8346710205078}, + {79.923477172852, 6.8218231201172}, + {-0.725221, 51.611443}, + {14.167556, 40.844284}, + {78.224716186523, 26.21955871582}, + {37.498123, 55.820572}, + {136.87385559082, 35.222854614258}, + {7.9080963134766, 48.120803833008}, + {135.470156, 34.827935}, + {120.61409, 24.175072}, + {105.65071105957, 21.006546020508}, + {137.38609313965, 34.695510864258}, + {113.66798400879, 34.797134399414}, + {18.121874, 59.1971}, + {18.185806274414, 59.314498901367}, + {47.199669, 56.153355}, + {37.674179077148, 55.636825561523}, + {10.941794, 48.40537}, + {-118.10096740723, 33.85368347168}, + {15.778427, 40.35553}, + {-58.867263, -34.82048}, + {-6.302171, 53.347147}, + {-1.701878, 55.00481}, + {121.26091003418, 25.101699829102}, + {-89.565082, 13.988666}, + {54.538192749023, 28.750534057617}, + {11.203994750977, 49.347152709961}, + {86.265818, 54.769658}, + {-4.185472, 55.769207}, + {79.928970336914, 16.109390258789}, + {-5.96587, 37.42836}, + {106.63124084473, 10.819473266602}, + {27.504959106445, 53.843307495117}, + {2.455444, 50.50209}, + {151.12174987793, -33.91960144043}, + {7.306594, 51.085282}, + {55.719223022461, 24.248886108398}, + {-0.297412, 43.253967}, + {139.34852600098, 36.149826049805}, + {136.534384, -31.2508}, + {22.73551940918, 39.246597290039}, + {-5.0035858154297, 36.498641967773}, + {8.8748931884766, 9.9282073974609}, + {77.351303100586, 28.604965209961}, + {-93.384438, 44.808003}, + {17.836990356445, 59.190902709961}, + {-47.031784057617, -22.882461547852}, + {4.0697479248047, 46.030654907227}, + {-89.223403930664, 13.714370727539}, + {-72.912826538086, 41.347732543945}, + {18.13362121582, 50.478744506836}, + {-86.110909, 39.757823}, + {-6.096725, 36.715965}, + {-56.951466, -25.394591}, + {-73.957901, 40.605881}, + {14.197769165039, 40.830001831055}, + {-97.038116, 32.907743}, + {4.3375396728516, 47.412185668945}, + {-38.642448, -13.001152}, + {110.3816986084, -7.7213287353516}, + {-115.333004, 56.408725}, + {77.382888793945, 29.354782104492}, + {1.269791, 49.616971}, + {110.859046, -7.561401}, + {-48.932418823242, -27.097091674805}, + {-79.922791, 39.672318}, + {112.7286529541, -7.3505401611328}, + {77.485885620117, 20.48469543457}, + {55.395126342773, 25.329666137695}, + {7.5084686279297, 11.922225952148}, + {2.057876, 43.91049}, + {80.07453918457, 7.1363067626953}, + {72.893600463867, 19.103164672852}, + {55.281446, 25.191992}, + {110.405344, -6.993456}, + {1.0938262939453, 52.132186889648}, + {11.48551940918, 48.145523071289}, + {7.037704, 4.744583}, + {-4.633209, 53.30739}, + {6.7476654052734, 51.538925170898}, + {77.31559753418, 28.105087280273}, + {51.078872680664, 35.752944946289}, + {-99.216842651367, 19.442367553711}, + {77.200241088867, 28.628311157227}, + {-98.737564086914, 29.618453979492}, + {51.880874633789, 35.715866088867}, + {10.076784, 53.551152}, + {-84.168319702148, 33.820724487305}, + {-7.900317, 53.928911}, + {-71.046524047852, 48.352890014648}, + {127.0191192627, 37.524490356445}, + {121.10298156738, 14.575424194336}, + {116.84715270996, 40.375442504883}, + {-94.774148, 38.96625}, + {10.494003295898, 48.388595581055}, + {82.943344116211, 26.068496704102}, + {77.30598449707, 28.525314331055}, + {82.931853, 55.007375}, + {114.1527557373, 22.283706665039}, + {14.296646118164, 40.882186889648}, + {101.700499, 3.177803}, + {92.788467, 26.683731}, + {121.054125, 14.582934}, + {-73.896756, 40.748293}, + {3.7387847900391, 51.264266967773}, + {4.545593, 7.488556}, + {37.391891, 55.759308}, + {86.355286, 23.759995}, + {-0.749817, 44.821472}, + {51.680374, 32.551117}, + {-2.2336578369141, 53.456039428711}, + {31.498572, 30.583702}, + {11.054993, 49.445343}, + {37.431038, 55.892887}, + {137.657547, 34.778366}, + {18.568955, -33.890766}, + {137.40943908691, 36.826858520508}, + {114.07859802246, 22.643508911133}, + {130.7105255127, 32.78938293457}, + {24.66362, 42.133942}, + {15.733108520508, 48.457260131836}, + {120.368958, 36.140213}, + {-100.954742, 25.551453}, + {47.530288696289, -18.901290893555}, + {-79.96467590332, 43.498306274414}, + {108.9575958252, 34.245071411133}, + {44.507675170898, 48.767623901367}, + {-89.285202026367, 13.640213012695}, + {1.523737, 43.651685}, + {76.940689, 11.301498}, + {53.075637817383, 36.527481079102}, + {73.787612915039, 18.615646362305}, + {100.63682556152, 5.0447845458984}, + {76.995620727539, 43.286819458008}, + {39.322128295898, -6.8355560302734}, + {0.358929, 47.331082}, + {36.939468383789, -1.1309051513672}, + {1.5428924560547, 52.475509643555}, + {31.048049926758, -17.784805297852}, + {-38.567464, -3.744532}, + {-43.284072875977, -22.881088256836}, + {21.97906, 50.030631}, + {-73.84391784668, 40.722885131836}, + {6.953384, 51.108261}, + {80.239334106445, 13.059310913086}, + {-0.24650573730469, 5.6064605712891}, + {106.797535, -6.233764}, + {-85.547106, 32.155382}, + {-1.2929534912109, 50.578994750977}, + {8.8556671142578, 35.165176391602}, + {-86.843490600586, 21.080703735352}, + {9.209342, 48.806076}, + {75.646362, 27.537231}, + {139.744638, 35.875085}, + {-6.045466, 54.508869}, + {21.012726, 52.167892}, + {17.058677, 51.081382}, + {16.355207, 50.481491}, + {105.960671, 13.969}, + {34.808120727539, 31.961288452148}, + {7.26927, 51.287776}, + {-6.268081, 53.347362}, + {118.52394104004, 37.876052856445}, + {8.2074737548828, 48.856887817383}, + {-1.1418914794922, 50.795974731445}, + {-2.8571319580078, 53.44367980957}, + {-89.985428, 38.566818}, + {120.436935, 24.033966}, + {51.0466, 25.976486}, + {-0.302811, 48.577424}, + {-4.5517730712891, 52.89436340332}, + {5.1944732666016, 51.582870483398}, + {20.822525024414, 52.195358276367}, + {10.296249389648, 36.868057250977}, + {-34.869919, -8.055725}, + {-71.192092895508, 7.8147125244141}, + {-39.575063, -16.367436}, + {-0.45799255371094, 51.88362121582}, + {85.059128, 56.497421}, + {-99.792251586914, 29.231185913086}, + {-96.112308, 18.166595}, + {-121.14280700684, 37.752456665039}, + {-48.865814, -23.422852}, + {120.89836120605, 28.04328918457}, + {5.4842376708984, 43.538131713867}, + {90.24787902832, 23.845138549805}, + {102.787164, 17.400463}, + {34.562301635742, 0.56648254394531}, + {-75.679944, 45.437739}, + {13.396317, 45.80626}, + {137.02354431152, 50.540542602539}, + {51.308212280273, 35.752944946289}, + {80.805130004883, 16.557083129883}, + {-70.335159301758, -27.360763549805}, + {0.173035, 52.279129}, + {77.836737, 27.684212}, + {112.79319763184, -7.3340606689453}, + {-3.987076, 5.401322}, + {-0.53489685058594, 52.030563354492}, + {18.560257, -33.89122}, + {11.716575, 48.018494}, + {84.665451049805, 25.56037902832}, + {-97.806142, 30.246915}, + {-99.148178100586, 19.516525268555}, + {10.226211547852, 36.762313842773}, + {139.31968688965, 35.373916625977}, + {50.221939086914, 26.290969848633}, + {105.86082458496, 29.38362121582}, + {88.366470336914, 22.584457397461}, + {121.51908874512, 25.048141479492}, + {31.25129699707, 30.040054321289}, + {4.7440338134766, 51.901473999023}, + {28.385238647461, -26.292343139648}, + {117.62580871582, 37.744216918945}, + {9.722029, 52.374277}, + {4.833083, 46.799446}, + {8.1127166748047, 49.768753051758}, + {113.72016906738, 23.026657104492}, + {51.418075561523, 35.790023803711}, + {-0.103911, 43.241959}, + {-118.33992004395, 33.78776550293}, + {-76.944466, -12.107964}, + {24.754944, 59.410629}, + {0.36186218261719, 51.375503540039}, + {54.251174926758, 31.918716430664}, + {-6.481934, 53.430634}, + {22.405924, 50.91958}, + {4.825843, 46.85512}, + {-70.545273, -33.365479}, + {-80.029564, 42.136002}, + {10.093002319336, 53.561782836914}, + {2.352346, 48.901503}, + {-0.50468444824219, 51.486740112305}, + {-80.672379, 41.930008}, + {-2.107315, 53.702545}, + {-95.522241, 29.782521}, + {100.11360168457, 18.051223754883}, + {79.825973510742, 11.940078735352}, + {102.246044, 6.121458}, + {135.46485900879, 34.669418334961}, + {86.215896606445, 22.730026245117}, + {123.40599060059, 41.821517944336}, + {35.575529, 32.663045}, + {-96.949181, 35.527736}, + {96.166763305664, 16.778182983398}, + {8.054145, 47.583114}, + {9.2786407470703, 45.611801147461}, + {-0.034161, 43.111211}, + {130.94947814941, 33.938827514648}, + {-46.650009155273, -23.530654907227}, + {-77.978554, 35.390739}, + {139.87037658691, 35.766677856445}, + {-74.505611, 40.904236}, + {34.911397, 36.961532}, + {18.628089, 53.852381}, + {10.141067504883, 45.308303833008}, + {120.987968, 14.555511}, + {110.392857, -7.012753}, + {22.203095, 39.996536}, + {20.976333618164, 42.01789855957}, + {109.69230651855, -7.3944854736328}, + {120.504074, 22.66716}, + {34.983901977539, 48.446273803711}, + {19.906539916992, 50.940170288086}, + {139.095842, 34.991227}, + {121.64268493652, 31.168899536133}, + {-3.6371612548828, 37.22785949707}, + {112.762714, -7.36924}, + {102.24632263184, 6.1228179931641}, + {16.417007446289, 48.178482055664}, + {78.467788696289, 17.403030395508}, + {30.232315063477, 40.694046020508}, + {12.439956665039, 41.946487426758}, + {48.490219116211, 33.485641479492}, + {32.829409, 39.948085}, + {27.369335, 38.621812}, + {5.9305572509766, 50.59684753418}, + {56.219100952148, 24.206314086914}, + {1.1254119873047, 52.581253051758}, + {6.521343, 46.391515}, + {-1.4357757568359, 47.090835571289}, + {-57.71598815918, -24.869613647461}, + {27.97636, -26.137113}, + {30.450668334961, 50.504837036133}, + {-118.344365, 34.06709}, + {18.919282, 53.752814}, + {115.50819396973, 35.226974487305}, + {0.347443, 46.606064}, + {-70.685348510742, -33.477401733398}, + {-49.397964477539, -20.812911987305}, + {103.321609, 3.857574}, + {-0.19981384277344, 46.389083862305}, + {-43.247078, -22.814045}, + {105.82649230957, 21.130142211914}, + {12.42485, 41.838684}, + {-93.875427, 38.703461}, + {-119.455719, 49.877243}, + {101.718063, 3.141861}, + {6.2505340576172, 50.885238647461}, + {107.10639953613, 16.816635131836}, + {6.414643, 51.441937}, + {-1.0388946533203, 50.846786499023}, + {14.781522, 51.392821}, + {-5.4499053955078, 36.178665161133}, + {30.329818725586, 59.889907836914}, + {-73.739274, 45.490208}, + {114.59907531738, -3.2938385009766}, + {44.804306030273, 41.68830871582}, + {22.925033569336, 54.126205444336}, + {-51.468887329102, -25.373611450195}, + {103.9835357666, 30.741806030273}, + {-61.462326049805, 10.263290405273}, + {-43.429672, -23.006834}, + {113.35075378418, 23.115921020508}, + {92.167739868164, 22.136764526367}, + {7.25995, 43.716266}, + {84.175186157227, 54.34455871582}, + {3.9475250244141, 7.4082183837891}, + {128.578165, 35.23468}, + {50.868073, 35.893021}, + {4.0024566650391, 7.4054718017578}, + {98.397983, 8.007516}, + {106.873897, -6.247907}, + {1.6156768798828, 35.893020629883}, + {13.263536, 52.535866}, + {-7.6718902587891, 33.594131469727}, + {77.605362, 12.956772}, + {7.257548, 49.346957}, + {9.039332, 48.534063}, + {37.561615, 55.781838}, + {78.429336547852, 17.437362670898}, + {12.577285766602, 55.625839233398}, + {36.105815, 32.076134}, + {6.110458, 49.232483}, + {27.470627, 42.50292}, + {8.590618, 52.397042}, + {-0.047378540039062, 44.514541625977}, + {-102.245036, 21.868066}, + {34.982528686523, -15.772933959961}, + {-118.58848571777, 34.166793823242}, + {-8.5590362548828, 52.141799926758}, + {100.481415, 5.211474}, + {-69.949133, 18.470027}, + {37.486038, 55.84465}, + {6.6666412353516, 43.466720581055}, + {124.312363, 0.729218}, + {139.749135, 35.622482}, + {-119.50172424316, 47.162246704102}, + {-110.968094, 29.101639}, + {2.550888, 48.852572}, + {-16.813202, 14.955826}, + {-69.939272, 18.468222}, + {-43.35566, -22.870814}, + {-99.133071899414, 19.460220336914}, + {121.48750305176, 25.015182495117}, + {-104.912692, 39.689881}, + {-1.7722320556641, 53.49723815918}, + {13.090308, 54.313365}, + {-106.57081604004, 52.14729309082}, + {-81.614887, 30.220945}, + {101.632088, 3.13331}, + {-122.19612121582, 47.395706176758}, + {139.57649230957, 35.512619018555}, + {87.288437, 26.451302}, + {7.0401763916016, 5.4856109619141}, + {37.497399, 55.795753}, + {-3.46447, 56.382866}, + {9.60722, 48.708005}, + {1.440438, 43.665265}, + {120.36003112793, 22.72590637207}, + {16.058231, 59.851136}, + {136.223373, 35.241623}, + {-2.1389007568359, 53.516464233398}, + {24.02042, 54.896622}, + {13.728103637695, 51.990737915039}, + {78.567078, 17.44313}, + {101.5047454834, 2.6799774169922}, + {-17.007949, 14.44287}, + {2.394296, 48.841875}, + {136.903725, 35.202255}, + {50.856399536133, 34.602127075195}, + {17.327499, 50.99881}, + {55.483016967773, 25.381851196289}, + {17.070693969727, 40.895919799805}, + {56.050186157227, 25.061874389648}, + {113.08296203613, 3.2677459716797}, + {130.493202, 33.512764}, + {8.834568, 47.972863}, + {-57.60612487793, -25.31867980957}, + {76.961288452148, 23.326034545898}, + {-118.313328, 34.06954}, + {16.765823364258, 41.096420288086}, + {-70.434311, 9.364334}, + {76.944808959961, 8.5466766357422}, + {73.290481567383, 54.972152709961}, + {35.78466, 54.047612}, + {126.827694, 37.417334}, + {77.915268, 12.699052}, + {-0.82191467285156, 9.3788909912109}, + {121.45523, 25.094834}, + {106.799902, -6.226244}, + {2.828636, 50.522003}, + {75.031814575195, 31.56852722168}, + {37.700271606445, 55.734329223633}, + {37.484664916992, 54.019088745117}, + {-100.472717, 19.91066}, + {-118.19435119629, 33.801498413086}, + {8.31115, 50.041237}, + {-0.768541, 52.000653}, + {115.23078918457, -8.5507965087891}, + {9.3088531494141, 47.088088989258}, + {9.036738, 48.419663}, + {-3.335914, 55.881271}, + {114.87785339355, 40.777816772461}, + {-5.8399200439453, 54.340438842773}, + {-84.453976, 38.036312}, + {120.98762512207, 14.68391418457}, + {100.42121887207, 14.041213989258}, + {2.322464, 49.074326}, + {-80.688400268555, 25.716934204102}, + {138.46961975098, 36.185531616211}, + {90.014419555664, 23.948135375977}, + {140.83305358887, 38.213882446289}, + {76.557540893555, 18.404159545898}, + {139.57649230957, 35.656814575195}, + {51.572013, 24.945273}, + {-86.268344, 39.770137}, + {45.150375366211, 54.238815307617}, + {12.051315307617, 42.574081420898}, + {130.79429626465, 33.868789672852}, + {101.68190002441, 3.1400299072266}, + {-121.63993835449, 37.856826782227}, + {-2.917099, 43.240585}, + {99.251776, 18.555124}, + {2.5797271728516, 42.116775512695}, + {6.5718841552734, 47.552261352539}, + {80.483779907227, 8.7458038330078}, + {5.0928497314453, 52.093734741211}, + {121.10160827637, 14.628982543945}, + {-123.039607, 49.277574}, + {52.084121704102, 55.764541625977}, + {145.9334564209, -38.279800415039}, + {9.932756, 49.775309}, + {27.414597, 53.912247}, + {5.788193, 52.650376}, + {-76.718216, 38.909891}, + {40.216827, 47.711563}, + {30.019454956055, 61.644973754883}, + {77.439193725586, 23.287582397461}, + {0.37147521972656, 51.504592895508}, + {26.167373657227, 44.414291381836}, + {-66.069717407227, 18.415145874023}, + {-3.5959625244141, 40.755844116211}, + {100.53382873535, 13.747329711914}, + {9.74144, 4.091549}, + {141.13243103027, 39.701156616211}, + {7.2283172607422, 51.240921020508}, + {72.90239, 19.054001}, + {103.872986, 1.347885}, + {30.995864868164, -29.92057800293}, + {8.094177, 45.558106}, + {-1.5991973876953, 53.843307495117}, + {-58.45344543457, -34.669418334961}, + {31.549301147461, 30.424575805664}, + {-85.786057, 33.637115}, + {18.716374, 54.110777}, + {52.603225708008, 58.143081665039}, + {-87.33589, 30.804727}, + {17.01301574707, 51.093978881836}, + {29.829940795898, 30.967025756836}, + {-73.69701, 45.605589}, + {37.88703918457, 51.313705444336}, + {-3.1070709228516, 40.324630737305}, + {104.25270080566, 30.90934753418}, + {55.44319152832, 25.304946899414}, + {-74.010105, 40.720163}, + {11.59538269043, 49.948654174805}, + {-0.402832, 39.431534}, + {12.435639, 57.846262}, + {117.121181, -0.554291}, + {126.61674499512, 37.476425170898}, + {-72.513657, 45.855331}, + {120.17463684082, 30.25016784668}, + {120.19111633301, -5.0530242919922}, + {119.883499, -5.594788}, + {-122.405119, 37.793825}, + {74.861526489258, 12.78190612793}, + {77.643814086914, 27.543411254883}, + {-81.397018432617, 28.499221801758}, + {90.381088256836, 23.930282592773}, + {114.18296813965, 22.279586791992}, + {38.373184204102, -15.046463012695}, + {77.507172, 13.051758}, + {18.760528, -34.050751}, + {-71.136601, 42.502052}, + {75.802230834961, 26.86637878418}, + {10.918528, 48.928754}, + {26.83479309082, 38.275680541992}, + {36.870803833008, -1.3272857666016}, + {2.136154, 13.491898}, + {139.277267, 35.388107}, + {72.885360717773, 19.085311889648}, + {10.278851, 47.761919}, + {112.63938903809, 27.875747680664}, + {51.424942016602, 32.664413452148}, + {109.37644958496, -7.0374298095703}, + {99.714173, 13.962582}, + {150.76469421387, -33.758926391602}, + {82.907638549805, 55.072402954102}, + {37.271805, 55.67276}, + {15.657577514648, 38.136978149414}, + {103.03574, 5.232798}, + {3.955764, 46.461183}, + {31.363221, 30.124512}, + {22.366837, 50.687773}, + {120.604731, 23.853402}, + {79.496383666992, 28.298721313477}, + {100.802637, 14.280952}, + {101.740537, 3.112045}, + {6.9001007080078, 50.896224975586}, + {105.8292388916, 21.205673217773}, + {-96.671303, 33.126387}, + {113.804169, 22.865067}, + {75.860595, 22.684021}, + {16.174622, 58.621674}, + {73.20671081543, 22.256240844727}, + {-2.141649, 51.884308}, + {-77.401428, 39.030579}, + {23.849258422852, 44.244003295898}, + {-6.5554046630859, 5.7959747314453}, + {49.090347290039, 55.834579467773}, + {113.86711120605, 22.927780151367}, + {-8.3763885498047, 40.52375793457}, + {-70.602951049805, -33.528213500977}, + {29.89648, 60.166403}, + {12.699508666992, 57.139205932617}, + {78.368454, 17.415848}, + {3.0397796630859, 50.52131652832}, + {-43.023147583008, -22.854995727539}, + {-70.699081420898, -33.267288208008}, + {100.62446594238, 13.678665161133}, + {-93.944234, 41.61086}, + {37.84214, 55.7474}, + {-2.102737, 52.472763}, + {23.587646, 38.094406}, + {-73.84391784668, 40.732498168945}, + {-81.68747, 26.100769}, + {-76.965134, -12.033463}, + {44.52278137207, 40.12825012207}, + {-121.31034851074, 38.164443969727}, + {-112.030063, 41.50086}, + {-73.679122924805, 40.72151184082}, + {54.384384155273, 24.442520141602}, + {37.470932006836, 55.800247192383}, + {-96.981715, 32.495194}, + {37.606064, 55.728562}, + {49.854403, 26.405239}, + {78.403244018555, 17.407150268555}, + {-1.7749786376953, 53.684005737305}, + {-2.238464, 52.619705}, + {100.594171, 13.742748}, + {127.01362609863, 37.521743774414}, + {48.075485229492, 46.350631713867}, + {126.586533, 45.75943}, + {153.572415, -28.681989}, + {117.16575622559, 39.260330200195}, + {8.145083, 48.78983}, + {113.82179260254, 22.868728637695}, + {135.487289, 34.668961}, + {37.989487, 56.268265}, + {19.052854, 52.656106}, + {-76.937617, -12.06134}, + {121.023331, 14.419119}, + {29.997482, 31.247635}, + {11.644907, 48.12295}, + {121.46965026855, 25.050888061523}, + {-93.332290649414, 18.145980834961}, + {-0.030623, 51.705643}, + {77.620468139648, 12.92610168457}, + {10.886254, 50.439191}, + {105.41038513184, -5.5419158935547}, + {32.574463, -25.929794}, + {44.826278686523, 41.800918579102}, + {73.11058, 19.327698}, + {77.583389282227, 12.932968139648}, + {101.720352, 3.013053}, + {-1.4618682861328, 53.278884887695}, + {25.88996887207, -26.078109741211}, + {51.409485, 51.229236}, + {-122.10386, 47.371549}, + {-43.10408, -22.906249}, + {-0.486145, 39.232178}, + {-101.6805267334, 21.139755249023}, + {104.303238, 52.289841}, + {37.732544, 55.779648}, + {-100.22758483887, 28.497848510742}, + {31.966098, 51.55472}, + {2.2583770751953, 49.090347290039}, + {30.59211730957, 50.447158813477}, + {77.695999145508, 12.924728393555}, + {77.659116, 13.200171}, + {-70.494461, 43.453674}, + {17.467271, 51.428927}, + {18.431625366211, 52.148666381836}, + {23.309555053711, 42.64274597168}, + {27.926175, -26.098927}, + {-6.227463, 53.290146}, + {-74.294332, 40.638876}, + {122.08076477051, 13.861312866211}, + {-43.960683, -19.999924}, + {-82.518605, 40.753686}, + {-90.525283813477, 14.602890014648}, + {139.142215, 35.228137}, + {-73.49235534668, 41.432876586914}, + {89.37858581543, 27.43766784668}, + {122.36778259277, -3.9832305908203}, + {-86.813965, 33.338699}, + {-95.209579467773, 18.446731567383}, + {126.50276184082, 45.813674926758}, + {42.604293823242, 20.005416870117}, + {101.505611, 3.06225}, + {-6.278741, 53.345655}, + {-6.277019, 53.356116}, + {7.5812530517578, 45.074844360352}, + {114.87648010254, 40.812149047852}, + {40.50087, 64.583359}, + {25.17448425293, 60.223617553711}, + {-110.325394, 53.380966}, + {16.80290222168, 59.936599731445}, + {-0.332149, 5.557896}, + {-73.936632, 40.831206}, + {125.41511535645, 43.988571166992}, + {46.681594848633, 24.552383422852}, + {88.545685, 22.971382}, + {15.619811, 46.749573}, + {140.12168884277, 35.79963684082}, + {0.200415, 51.873922}, + {77.135696411133, 20.119400024414}, + {120.32020568848, 22.62565612793}, + {-82.212066, 28.330308}, + {77.135696411133, 16.752090454102}, + {77.311477661133, 16.536483764648}, + {12.908288, 50.826976}, + {54.0905, 17.015305}, + {104.6727, 16.684204}, + {77.755394, 29.005623}, + {55.29468, -21.200298}, + {39.922256469727, 47.778854370117}, + {10.007858276367, 56.503372192383}, + {-1.1487579345703, 41.816024780273}, + {-5.0159454345703, 33.691635131836}, + {14.492553, 63.152902}, + {109.33799743652, 1.4041900634766}, + {49.565894, 27.043162}, + {13.438471, 52.482272}, + {34.905002, 32.093096}, + {9.9048614501953, 51.596603393555}, + {106.742935, -6.159897}, + {55.186386108398, 25.141525268555}, + {2.411378, 48.896552}, + {6.8698883056641, 51.538925170898}, + {-81.477386, 35.263134}, + {5.2013397216797, 7.6663970947266}, + {35.013147, 48.406391}, + {-8.1786346435547, 43.246994018555}, + {9.6892547607422, 4.0518951416016}, + {1.15654, 49.395218}, + {38.982925415039, 45.055618286133}, + {-46.044387817383, -12.027969360352}, + {-4.1960906982422, 36.734848022461}, + {-3.897171, 36.759567}, + {105.304298, -2.733879}, + {127.04658508301, 37.072677612305}, + {25.959184, 43.846375}, + {-73.632774, 4.145279}, + {78.103866577148, 21.097183227539}, + {50.833053588867, 61.682052612305}, + {-90.576096, 41.406784}, + {149.191528, -21.114703}, + {100.58052062988, 13.718490600586}, + {13.798904, 50.636978}, + {19.95369, 50.085983}, + {120.666962, 24.140396}, + {35.183539, 47.774984}, + {105.293655, 21.330185}, + {37.152328491211, 55.579147338867}, + {79.092636, 21.141129}, + {-43.088994, -22.843723}, + {120.99311828613, 24.792709350586}, + {6.013962, 43.106549}, + {-71.059107, 42.302177}, + {135.095338, 48.538073}, + {34.412612915039, -1.0608673095703}, + {-75.51824, 45.477784}, + {102.12135314941, 12.567672729492}, + {73.183364868164, 22.323532104492}, + {80.91911315918, 26.832046508789}, + {19.604415893555, 41.371078491211}, + {100.305295, 13.962415}, + {138.86375427246, 35.097885131836}, + {30.912094116211, 52.39860534668}, + {102.79516, 17.411591}, + {32.620395, 39.940295}, + {-3.6605072021484, 40.452346801758}, + {-41.953943, -22.522065}, + {72.533798217773, 23.034896850586}, + {0.665634, 51.241727}, + {74.244918823242, 16.70539855957}, + {114.174688, 22.306738}, + {77.549057006836, 12.976913452148}, + {1.0855865478516, 43.461227416992}, + {51.622009, 32.653427}, + {55.300369262695, 25.259628295898}, + {50.596848, 26.227112}, + {23.755188, 61.315384}, + {23.203354, 61.633072}, + {38.130111, 37.101518}, + {4.929085, 52.078423}, + {54.978333, 24.809189}, + {-71.130079, 42.417865}, + {-80.297012329102, 26.231918334961}, + {0.46073913574219, 51.23405456543}, + {3.8527679443359, 43.63151550293}, + {-58.478164672852, -34.599380493164}, + {-1.275272, 52.005844}, + {12.054749, 57.910309}, + {3.4146881103516, 6.6927337646484}, + {-74.598542, 40.457153}, + {-122.308927, 47.315565}, + {108.15010070801, -6.4702606201172}, + {-122.45539, 37.802787}, + {12.346572875977, 51.24641418457}, + {-55.984268188477, -31.714096069336}, + {100.513664, 13.808594}, + {75.320205688477, 19.873580932617}, + {18.652666, -33.977972}, + {-122.531662, 45.494156}, + {-122.09587097168, 37.421493530273}, + {106.106644, 21.158066}, + {130.72288513184, 33.753433227539}, + {31.270291, 30.095041}, + {-104.988573, 39.908757}, + {138.67286682129, -34.843826293945}, + {31.193618774414, 30.085372924805}, + {121.04804992676, 14.57405090332}, + {77.256546020508, 9.6961212158203}, + {106.925598, -6.198727}, + {-2.777738, 48.187226}, + {-2.0207977294922, 53.464279174805}, + {114.05250549316, 22.644882202148}, + {-8.361293, 43.210602}, + {135.178116, 48.47374}, + {11.890183, 57.914658}, + {33.697128, 48.422732}, + {19.177777, 51.574174}, + {-58.961563, -34.782715}, + {10.82551, 50.108962}, + {73.939362, 15.321121}, + {77.321090698242, 28.381118774414}, + {5.884328, 51.16435}, + {-80.551048, 35.374281}, + {34.067916870117, 60.90202331543}, + {88.404236, 22.578964}, + {77.606735229492, 12.86018371582}, + {113.51829528809, 52.034683227539}, + {100.45143127441, 13.861312866211}, + {55.296249389648, 25.263748168945}, + {75.744095, 26.919937}, + {-84.530868530273, 34.126968383789}, + {139.669582, 35.585698}, + {7.974812, 50.009306}, + {21.440505981445, 42.000045776367}, + {39.511642456055, 24.445266723633}, + {30.5412, 50.402474}, + {107.89604187012, -7.0360565185547}, + {76.59668, 9.368591}, + {0.085830688476562, 52.831192016602}, + {31.777267456055, -13.10188293457}, + {-76.045251, 36.835636}, + {7.0786285400391, 47.417678833008}, + {76.615219116211, 9.3170928955078}, + {46.006966, 51.542015}, + {106.981921, -6.236946}, + {16.675951, 52.549048}, + {-83.630408, 30.469536}, + {9.3500518798828, 50.219192504883}, + {6.8163299560547, 51.470260620117}, + {144.512143, -36.71218}, + {-120.61958312988, 35.61149597168}, + {10.813980102539, 45.173721313477}, + {-46.682968139648, -23.58283996582}, + {-80.200199, 26.31259}, + {30.618896, 50.469131}, + {25.373611450195, 54.729080200195}, + {114.19258117676, -7.7515411376953}, + {-7.577141, 33.37376}, + {-72.947158813477, 42.424392700195}, + {-100.36903381348, 25.659255981445}, + {8.82967, 49.882186}, + {-92.151838, 15.024735}, + {73.238296508789, 20.99967956543}, + {-76.540028, 3.384963}, + {-48.470993041992, -21.402053833008}, + {134.55024719238, 34.067916870117}, + {-98.587095, 19.593433}, + {-95.410079956055, 29.684371948242}, + {76.476516723633, 10.116348266602}, + {-1.488417, 52.281878}, + {77.064846, 28.502446}, + {59.609756469727, 36.287155151367}, + {7.1472930908203, 5.3372955322266}, + {74.504470825195, 29.785995483398}, + {-121.908646, 37.399521}, + {79.15168762207, 29.165267944336}, + {37.459631, 55.60825}, + {121.358185, 31.186523}, + {27.681564, 49.085403}, + {83.579177856445, 27.540664672852}, + {137.252197, 36.14193}, + {-0.76148986816406, 51.315078735352}, + {115.18135070801, -8.6428070068359}, + {121.5177154541, 25.004196166992}, + {75.027557, 26.622208}, + {39.02395, 54.967685}, + {174.77394104004, -36.862564086914}, + {29.979826, 31.221085}, + {19.090235, 47.490353}, + {133.12202453613, 34.496383666992}, + {-75.1104, 40.035269}, + {69.921798706055, 28.732681274414}, + {20.510003, 53.74081}, + {100.65962, 13.825468}, + {-3.3144378662109, 56.09001159668}, + {44.982834, 53.23288}, + {-80.595703, 35.486756}, + {23.738708, 52.095108}, + {121.1222076416, 14.622116088867}, + {-78.930012, 36.045132}, + {39.669136, 46.578071}, + {30.94367980957, 31.115341186523}, + {83.399276733398, 25.56037902832}, + {77.56965637207, 13.005752563477}, + {8.6277008056641, 48.910446166992}, + {45.789412, 25.142466}, + {140.863953, 38.116379}, + {-6.256714, 53.352356}, + {8.98401, 48.70384}, + {141.362869, 43.125046}, + {34.477157592773, 62.91389465332}, + {14.041633, 50.073251}, + {-71.783587, 43.048342}, + {-7.9726409912109, 40.328750610352}, + {-71.322164, 42.64231}, + {19.984817504883, 50.085983276367}, + {13.675919, 52.843496}, + {78.544692993164, 17.390670776367}, + {35.924047, 31.993796}, + {20.404082, 52.099122}, + {2.300262, 49.926453}, + {108.706135, -7.31692}, + {-122.99005, 44.938451}, + {-82.664565, 40.608902}, + {-94.908829, 30.697174}, + {14.311752319336, 42.406539916992}, + {-43.286969, -22.839486}, + {-77.028011, 38.88086}, + {-6.9344329833984, 52.242050170898}, + {6.1434173583984, 46.191329956055}, + {-95.299185, 34.71781}, + {-155.644221, 20.029658}, + {100.477936, 5.454548}, + {77.661666870117, 12.857437133789}, + {-96.718513, 17.071301}, + {-101.38114929199, 20.681076049805}, + {126.575449, 34.628413}, + {100.3360748291, 6.1022186279297}, + {23.983841, 52.18895}, + {-1.350682, 53.517205}, + {-2.8076934814453, 43.212661743164}, + {0.571453, 43.643875}, + {129.951096, 33.468475}, + {-8.2225799560547, 41.408157348633}, + {4.93376, 50.442754}, + {5.8715057373047, 43.175582885742}, + {12.762373, 52.141739}, + {-87.631988, 41.892471}, + {-0.140762, 51.513748}, + {5.3798675537109, 43.234634399414}, + {126.79252624512, 37.326736450195}, + {15.319028, 47.129993}, + {-73.084488, -36.771469}, + {2.2748565673828, 48.87336730957}, + {0.524734, 52.346695}, + {96.112175, 19.713936}, + {48.037033081055, 29.276504516602}, + {30.343802, 50.420436}, + {26.11930847168, 44.451370239258}, + {-102.02179, 20.300675}, + {48.064498901367, 46.350631713867}, + {17.099533081055, 49.565505981445}, + {15.193405151367, 50.713577270508}, + {73.039131, 19.270828}, + {17.944107055664, 59.514999389648}, + {139.96101379395, 35.83122253418}, + {72.842788696289, 19.206161499023}, + {102.407585, 2.183497}, + {-107.3851776123, 24.770736694336}, + {33.69987487793, 41.457595825195}, + {-105.047525, 39.913971}, + {-60.93302, 14.520689}, + {-79.500501, 36.052323}, + {51.386489868164, 35.757064819336}, + {11.21223449707, 51.946792602539}, + {14.148293, 50.187573}, + {4.330215, 48.98186}, + {50.074997, 26.416332}, + {28.451156616211, 62.856216430664}, + {102.43034362793, 19.074325561523}, + {2.417287, 48.861596}, + {97.136306762695, 20.444869995117}, + {-2.296557, 53.585366}, + {-2.9985809326172, 53.436813354492}, + {-88.024979, 17.741776}, + {-83.893661, 43.581488}, + {13.905258178711, 51.51969909668}, + {24.879423, 44.879252}, + {-1.5525054931641, 53.546676635742}, + {1.859079, 48.674022}, + {-75.356354, 40.023628}, + {-105.235347, 40.002055}, + {80.253067016602, 7.7899932861328}, + {49.804458618164, 40.404281616211}, + {83.257141, 17.74086}, + {-68.421478, -34.757309}, + {-76.62483215332, 39.278182983398}, + {-73.934555053711, 40.667953491211}, + {37.438894, 55.551191}, + {55.325775, 25.092087}, + {113.0445098877, 36.511001586914}, + {-88.134388, 41.682704}, + {22.938766479492, 46.450881958008}, + {103.831375, 13.362808}, + {110.93925476074, 1.4989471435547}, + {-0.393906, 39.423752}, + {137.057877, 34.913177}, + {32.774276733398, 39.941482543945}, + {28.163718, -26.261223}, + {139.73167419434, 35.695266723633}, + {100.445251, 13.991776}, + {19.324264526367, 49.90608215332}, + {77.157806, 28.735977}, + {79.017105102539, 26.793594360352}, + {77.043685913086, 28.603591918945}, + {71.415939331055, 51.132431030273}, + {9.946938, 48.525068}, + {102.85606384277, 2.6470184326172}, + {102.92472839355, 2.7884674072266}, + {9.9900054931641, 51.15852355957}, + {55.989761352539, 54.752426147461}, + {-9.282508, 38.743188}, + {-2.4176788330078, 53.336563110352}, + {103.894704, 1.39898}, + {106.205521, -6.117325}, + {-58.393020629883, -34.611740112305}, + {121.099777, 14.606323}, + {-5.258194, 6.811661}, + {44.025650024414, 32.61360168457}, + {-7.630232, 33.440206}, + {88.133010864258, 22.507553100586}, + {-3.399239, 37.092247}, + {-63.065506, 18.036392}, + {-7.236557, 53.501358}, + {-78.875711, 43.89572}, + {127.709198, 26.227798}, + {37.428359985352, 55.720596313477}, + {-1.1405181884766, 51.683120727539}, + {7.5139617919922, 52.23518371582}, + {-58.391647338867, -34.604873657227}, + {-2.877678, 55.912615}, + {-2.6964569091797, 53.69499206543}, + {-58.616753, -34.660191}, + {18.332748413086, 53.528823852539}, + {-70.554885864258, -33.473281860352}, + {-72.576434, 40.943743}, + {25.990219116211, 44.43489074707}, + {-0.5228, 51.968685}, + {2.9120635986328, 36.519241333008}, + {-80.393142700195, 26.073989868164}, + {5.335735, 49.896404}, + {-69.934355, 18.468704}, + {-76.846442, 40.95377}, + {-114.62791442871, 36.221237182617}, + {-76.093368530273, 43.62190246582}, + {84.97554, 56.480026}, + {73.718948364258, 19.983444213867}, + {138.042934, 34.856489}, + {101.544614, 3.10449}, + {-80.066299438477, 35.949325561523}, + {-61.450424, 10.296249}, + {-80.079573, 26.549324}, + {-7.4755096435547, 53.22395324707}, + {-67.11067199707, -17.939987182617}, + {-73.005674, 40.823135}, + {100.492447, 13.702012}, + {-103.299637, 20.655388}, + {103.09776306152, 3.4737396240234}, + {11.383815, 47.262859}, + {-0.37284851074219, 51.530685424805}, + {77.65754699707, 11.238327026367}, + {127.42835998535, 36.716995239258}, + {-87.564468383789, 20.884323120117}, + {16.264336, 50.890835}, + {72.577743530273, 23.014297485352}, + {102.1817779541, 2.4451446533203}, + {19.281895, 50.57821}, + {1.37001, 43.64296}, + {112.76298522949, -7.2763824462891}, + {26.166818, 56.836672}, + {19.801895, 41.330704}, + {130.93162536621, 33.838577270508}, + {72.56950378418, 23.034896850586}, + {37.603043, 55.692032}, + {96.192855834961, 16.81526184082}, + {100.43495178223, 13.656692504883}, + {103.7020111084, 1.5401458740234}, + {10.164413, 48.576737}, + {-13.325729370117, 15.60676574707}, + {139.476242, 35.42363}, + {81.830978393555, 6.8369293212891}, + {112.698632, -7.653588}, + {113.28895568848, -1.8944549560547}, + {22.959824, 42.643204}, + {77.678146362305, 27.489852905273}, + {22.595443725586, 56.979904174805}, + {-77.270278930664, 18.086929321289}, + {51.483993530273, 35.72135925293}, + {15.531921, 46.792145}, + {-82.497024536133, 27.893600463867}, + {37.435346, 55.881578}, + {1.7598724365234, 43.656234741211}, + {65.549240112305, 44.72053527832}, + {-84.539795, 39.396973}, + {10.955429077148, 45.41130065918}, + {3.3515167236328, 49.359512329102}, + {46.103439331055, 36.966934204102}, + {39.876349, 59.216995}, + {86.958847045898, 25.247268676758}, + {139.666394, 35.585992}, + {1.44154, 52.554039}, + {21.697311401367, 53.38737487793}, + {7.604078, 51.806013}, + {51.45378112793, 25.282974243164}, + {9.2690277099609, 48.799209594727}, + {7.6265716552734, 45.889205932617}, + {112.758179, -7.284622}, + {139.649734, 36.055069}, + {-93.218009, 44.965457}, + {5.421753, 36.193085}, + {-1.388596, 54.890105}, + {-82.731554, 23.019185}, + {-88.152236938477, 20.741500854492}, + {-105.04509, 39.719696}, + {56.076439, 54.800694}, + {110.43388366699, -7.4576568603516}, + {126.729666, 37.460396}, + {112.75611877441, -7.2722625732422}, + {-121.90086364746, 37.68928527832}, + {-81.473922729492, 28.291854858398}, + {43.917847, 26.394653}, + {9.5327, 48.362675}, + {28.033431, -26.195616}, + {135.452499, 34.784088}, + {77.201614379883, 28.683242797852}, + {-99.15641784668, 19.403915405273}, + {78.708114624023, 10.835952758789}, + {-0.187657, 51.125839}, + {79.408493041992, 11.030960083008}, + {3.4078216552734, 6.4551544189453}, + {4.371185, 52.011126}, + {103.088025, 14.984915}, + {106.98280334473, -6.2107086181641}, + {-4.0175628662109, 5.3180694580078}, + {-79.519729614258, 8.9984893798828}, + {120.089392, 30.267317}, + {121.066674, 14.588828}, + {150.754106, -33.724827}, + {37.798233, 55.811234}, + {40.996170043945, 57.744827270508}, + {-43.123397827148, -22.892074584961}, + {23.692017, 52.085495}, + {121.03981018066, 14.402389526367}, + {-0.074083, 51.66253}, + {27.410985, 37.039939}, + {73.74641418457, 18.590927124023}, + {77.33345, 28.606339}, + {39.930592, 43.430462}, + {99.933700561523, 13.685531616211}, + {102.564926, 17.997665}, + {114.189157, 22.307937}, + {18.041418, 53.121314}, + {24.18571472168, 56.908493041992}, + {-1.3245391845703, 51.067886352539}, + {4.062538, 45.609055}, + {24.143829, 65.843124}, + {2.009742, 48.912055}, + {36.594772338867, 50.577621459961}, + {-62.305526733398, -31.409225463867}, + {7.164688, 49.467545}, + {9.3981170654297, 51.27799987793}, + {77.619094848633, 13.071670532227}, + {-1.222458, 51.461792}, + {3.394183, 6.607478}, + {12.401504516602, 55.741195678711}, + {-46.579655, -23.534615}, + {12.356185913086, 55.765914916992}, + {-104.682767, 39.870003}, + {34.636459350586, 48.480606079102}, + {-5.8358001708984, 43.371963500977}, + {-72.532424926758, 42.383193969727}, + {103.3683013916, 16.382675170898}, + {135.104143, 48.449478}, + {-117.204628, 33.950652}, + {-85.60148, 38.152667}, + {-92.180099487305, 14.922866821289}, + {53.185501098633, 56.797256469727}, + {89.526901245117, 26.499710083008}, + {8.3758, 49.493547}, + {-87.096176147461, 38.437728881836}, + {28.090668, -25.459442}, + {6.683806, 51.013298}, + {86.231002807617, 22.841262817383}, + {-75.578659, 6.218948}, + {4.3704986572266, 51.245040893555}, + {76.05354309082, 10.62858581543}, + {130.60890197754, 32.472152709961}, + {77.543368, 13.293947}, + {8.433467, 52.903548}, + {4.672535, 52.435183}, + {135.504684, 34.660492}, + {13.912124633789, 48.185348510742}, + {7.40916, 9.071637}, + {76.888504, 43.237839}, + {12.503128051758, 55.770034790039}, + {106.9896697998, -6.2052154541016}, + {150.501709, -35.25444}, + {108.94523620605, 34.473037719727}, + {2.907944, 36.7202}, + {14.266043, 47.990277}, + {100.613322, 13.687733}, + {114.125094, 22.35139}, + {76.975708, 13.581161}, + {18.488428, -33.824302}, + {73.271255493164, 29.199600219727}, + {27.584609985352, 53.900985717773}, + {-67.513701, -45.874102}, + {20.921345, 48.104226}, + {76.821899, 30.71434}, + {48.285598754883, 38.22624206543}, + {44.521408081055, 48.77311706543}, + {-55.17951965332, 5.8193206787109}, + {101.55143737793, 3.3940887451172}, + {100.63682556152, 13.818740844727}, + {-0.20668029785156, 52.01545715332}, + {9.323958, 45.485459}, + {139.63279724121, 35.508499145508}, + {51.407089233398, 35.72135925293}, + {-98.285408, 35.564976}, + {-121.24305725098, 38.683547973633}, + {113.398361, 52.071762}, + {31.103668, -24.87236}, + {126.7993927002, 42.381820678711}, + {48.372116088867, 25.167617797852}, + {39.261887, 51.663578}, + {9.6796417236328, 4.0724945068359}, + {24.666366577148, 60.203018188477}, + {33.499374389648, 46.48796081543}, + {108.538902, -6.665068}, + {-0.335603, 53.739896}, + {43.932653, 56.209655}, + {-35.141830444336, -6.2313079833984}, + {-101.9133, 22.511673}, + {-68.795700073242, -32.981643676758}, + {78.142318725586, 9.9419403076172}, + {7.934189, 46.912994}, + {-35.662307739258, -7.2502899169922}, + {-101.88789367676, 41.079940795898}, + {-79.404912, 43.767899}, + {-92.978846, 44.946188}, + {77.258377, 28.651657}, + {77.24006652832, 28.64616394043}, + {101.769969, 3.033374}, + {139.62181091309, 35.465927124023}, + {10.218418, 52.342715}, + {85.233993530273, 52.534561157227}, + {28.144912719727, -25.929794311523}, + {39.750595092773, 47.151260375977}, + {13.681608, 42.616065}, + {-0.11946, 51.596233}, + {79.367981, 20.484009}, + {5.609152, 51.923502}, + {4.866801, 52.337753}, + {-1.433689, 50.968415}, + {38.960952758789, 45.03776550293}, + {4.274266, 52.076777}, + {11.05251, 48.072844}, + {-105.361836, 39.717522}, + {39.613265991211, 24.468612670898}, + {76.95442199707, 43.251113891602}, + {136.86836242676, 35.103378295898}, + {6.4359283447266, 49.13703918457}, + {85.235366821289, 25.678482055664}, + {119.86976623535, -0.92765808105469}, + {147.49488830566, -43.002548217773}, + {13.399201, 38.103333}, + {-77.536697387695, -9.5519256591797}, + {22.280960083008, 62.793045043945}, + {127.76206970215, 26.303329467773}, + {9.449615, 47.777481}, + {-104.799439, 38.873054}, + {85.497665405273, 26.582107543945}, + {26.826553344727, 57.538833618164}, + {-1.5428924560547, 53.395614624023}, + {-86.818812, 36.166346}, + {39.82063293457, 43.532638549805}, + {110.97084, -7.603912}, + {-2.0523834228516, 51.865768432617}, + {28.033676147461, -26.016311645508}, + {30.557938, 50.442276}, + {-35.23838, -5.755584}, + {14.155197, 46.359558}, + {23.728409, 38.030548}, + {37.481918334961, 55.774154663086}, + {2.1855926513672, 41.408157348633}, + {51.474380493164, 25.29670715332}, + {-1.977539, 48.608322}, + {112.765838, -7.297227}, + {2.344314, 48.8658}, + {-1.8642425537109, 47.90657043457}, + {14.189529418945, 41.005783081055}, + {25.115432739258, 35.335464477539}, + {-38.460307, -12.961483}, + {-0.60997, 35.658646}, + {14.483413696289, 50.039291381836}, + {-49.268897, -16.682557}, + {-96.92688, 32.645874}, + {106.856785, -6.424847}, + {-2.547291, 37.578177}, + {-47.480850219727, -5.5226898193359}, + {-157.698048, 21.287601}, + {120.61546325684, 15.661697387695}, + {76.532822, 9.613586}, + {174.526457, -36.952033}, + {-13.686218, 9.527893}, + {100.4761505127, 5.8234405517578}, + {106.57081604004, 10.89225769043}, + {-83.495407104492, 39.73274230957}, + {103.741664, 1.304218}, + {108.01277160645, -7.3628997802734}, + {72.961349, 19.196548}, + {-99.604110717773, 18.568954467773}, + {-1.332779, 53.489685}, + {-74.043045043945, 40.764083862305}, + {51.449661254883, 35.722732543945}, + {0.16685485839844, 51.879501342773}, + {150.976299, -34.251915}, + {120.67588806152, 24.159622192383}, + {50.109329223633, 26.374740600586}, + {130.3507232666, 33.554306030273}, + {-118.166906, 34.020755}, + {0.19432, 49.488602}, + {-54.665026, -20.446301}, + {77.553176879883, 12.938461303711}, + {9.221878, 48.846817}, + {2.864511, 50.556735}, + {110.398666, -7.755059}, + {174.957821, -37.047935}, + {-74.015518, 40.624171}, + {109.75410461426, 19.865341186523}, + {-3.045739, 55.928566}, + {106.92237854004, -6.1928558349609}, + {5.7630157470703, 49.770126342773}, + {3.1784820556641, 50.220565795898}, + {-98.557662963867, 29.600601196289}, + {36.77604675293, -1.2599945068359}, + {72.535171508789, 23.003311157227}, + {8.406875, 52.005844}, + {43.412132, 56.243134}, + {-96.779763, 32.924668}, + {16.823501586914, 51.088485717773}, + {25.751266479492, 49.860763549805}, + {38.360481, 55.833206}, + {-72.842851, 5.830787}, + {101.43333435059, 3.8170623779297}, + {1.836777, 48.66478}, + {99.362411499023, 7.7446746826172}, + {30.540619, 50.377121}, + {28.675003, 54.263535}, + {-87.029167, 33.341863}, + {7.490616, 51.475754}, + {8.831465, 48.44712}, + {-93.163375854492, 30.787124633789}, + {30.534439086914, 50.452651977539}, + {30.723404, 46.387161}, + {-73.703842163086, 43.440628051758}, + {24.003067016602, 56.853561401367}, + {37.68928527832, 55.767288208008}, + {17.316513061523, 47.79670715332}, + {17.17643737793, 47.969741821289}, + {114.162827, 22.304001}, + {79.541702270508, 12.126846313477}, + {-73.143013, 41.177487}, + {7.812653, 47.999954}, + {168.31535339355, -17.746353149414}, + {30.24055480957, 59.951705932617}, + {-0.125269, 51.578834}, + {-0.11054992675781, 49.047775268555}, + {-55.686247, -25.32205}, + {-75.632779, 45.393281}, + {145.02159118652, -37.790908813477}, + {-118.440256, 40.242802}, + {100.576783, 13.794023}, + {126.821646, 37.48792}, + {90.378092, 23.771355}, + {76.52504, 9.569321}, + {98.656539916992, 3.5849761962891}, + {-76.070213, 36.825857}, + {78.04069519043, 27.829055786133}, + {5.954593, 43.147775}, + {104.737129, -2.918243}, + {30.574264526367, -25.950393676758}, + {76.217728, 10.623093}, + {12.769546508789, 41.835250854492}, + {29.045792, 41.031418}, + {139.37187194824, 36.306381225586}, + {107.631683, 51.821823}, + {123.41972351074, 41.809158325195}, + {75.82695, 11.137733}, + {-1.8917083740234, 52.579879760742}, + {114.07585144043, 22.536392211914}, + {50.15739440918, 37.188034057617}, + {12.341079711914, 44.311294555664}, + {107.600098, -6.471634}, + {28.803931, 41.102963}, + {8.5521697998047, 47.430038452148}, + {106.44035339355, 11.000747680664}, + {10.358505, 36.648331}, + {72.83317565918, 19.171829223633}, + {20.895309448242, 52.177505493164}, + {10.77278137207, 36.888656616211}, + {-75.535355, 39.948349}, + {4.255157, 52.067956}, + {13.41362, 42.351608}, + {127.468664, 37.381321}, + {-99.145431518555, 19.490432739258}, + {60.94597, 28.403092}, + {-81.57074, 41.508179}, + {19.734878540039, 50.076370239258}, + {26.588287, 44.263229}, + {-1.867328, 52.114048}, + {22.136764526367, 42.704544067383}, + {-44.069595336914, -19.912033081055}, + {-98.226242, 19.058304}, + {15.722122192383, 48.247146606445}, + {44.036637, 43.947373}, + {77.159042358398, 28.622817993164}, + {14.03457, 51.176994}, + {-87.575454711914, 34.485397338867}, + {-96.838695, 33.175278}, + {-2.1086883544922, 50.677871704102}, + {45.558242797852, 43.218154907227}, + {23.637085, 46.783218}, + {1.354294, 44.032059}, + {57.731094360352, -20.205917358398}, + {135.195694, 34.686813}, + {-6.1818695068359, 53.25553894043}, + {-83.793194, 32.945577}, + {39.143600463867, 21.58332824707}, + {-121.31034851074, 37.98454284668}, + {10.62858581543, 52.35466003418}, + {39.252090454102, 21.45149230957}, + {44.044876098633, 56.286392211914}, + {8.6002349853516, 47.383346557617}, + {77.323837280273, 8.9765167236328}, + {7.6691436767578, 45.041885375977}, + {91.762619018555, 26.18522644043}, + {-90.486831665039, 14.646835327148}, + {-111.951427, 33.665319}, + {-68.298568725586, -34.626846313477}, + {-76.642685, 39.496078}, + {-68.850631713867, -32.988510131836}, + {-97.686553, 30.231752}, + {4.258513, 52.029689}, + {51.419448852539, 35.728225708008}, + {78.279136, 18.069216}, + {6.4482879638672, 45.598068237305}, + {-8.308642, 43.29506}, + {-75.171890258789, 39.900283813477}, + {77.683809, 12.948814}, + {-15.601272583008, 11.861801147461}, + {121.64131164551, 25.068740844727}, + {101.7684173584, 17.054214477539}, + {-76.497248, 40.320113}, + {20.385818481445, 44.81803894043}, + {-46.477164, -23.507217}, + {18.111907, 59.360622}, + {37.515564, 55.785141}, + {73.381118774414, 16.690292358398}, + {73.819198608398, 18.592300415039}, + {35.061905, 47.810715}, + {118.22731018066, 24.638900756836}, + {134.69032287598, 34.819107055664}, + {106.6902923584, 10.786514282227}, + {139.29222106934, 35.306625366211}, + {72.823563, 19.142303}, + {120.04554748535, 26.796340942383}, + {82.855453491211, 20.339126586914}, + {72.59079, 23.019791}, + {-117.77275085449, 34.115982055664}, + {141.00471496582, 43.187942504883}, + {101.707188, 3.157918}, + {121.3858795166, 31.100234985352}, + {1.623917, 41.292114}, + {-54.63487, -20.46129}, + {60.803146362305, 56.650314331055}, + {-44.309921264648, -20.085067749023}, + {-99.62599, 28.566824}, + {11.636581420898, 48.175735473633}, + {28.880996704102, 41.019515991211}, + {6.86848, 52.35721}, + {-90.596197, 14.528897}, + {-96.746752, 32.919417}, + {30.333938598633, 59.876174926758}, + {30.443801879883, 54.594497680664}, + {73.842544555664, 18.568954467773}, + {43.641128540039, 56.136703491211}, + {-46.575581, -23.335149}, + {7.1898651123047, 50.686111450195}, + {14.443257, 50.099849}, + {4.473496, 51.921387}, + {135.57060241699, 34.663925170898}, + {-74.36179, 4.816331}, + {-58.697891235352, -34.64469909668}, + {-79.298629760742, 36.22673034668}, + {139.690475, 35.684555}, + {109.6785736084, -6.9014739990234}, + {72.925186157227, 22.554244995117}, + {123.43070983887, 41.800918579102}, + {-76.553421020508, 3.4449005126953}, + {77.711105, 13.385468}, + {-90.523910522461, 14.645462036133}, + {33.289260864258, 69.052505493164}, + {37.561569213867, 55.857925415039}, + {-72.921519, -40.997545}, + {88.281326293945, 22.379837036133}, + {-99.384384155273, 19.299545288086}, + {106.851296, -6.189946}, + {29.073257446289, 40.981063842773}, + {6.091703, 51.428622}, + {129.109523, 35.317353}, + {120.27763366699, 22.627029418945}, + {-73.88794, 40.835896}, + {107.611269, -6.952959}, + {47.957382202148, 45.854873657227}, + {6.0431671142578, 48.900833129883}, + {-1.4000701904297, 54.502487182617}, + {6.18145, 49.263011}, + {16.186294555664, 47.921676635742}, + {5.002786, 52.802676}, + {139.77699279785, 35.669174194336}, + {-79.531403, -1.550446}, + {19.131559, 47.50355}, + {-85.076065, 45.343323}, + {36.834223, -1.295916}, + {76.944808959961, 43.341751098633}, + {77.012100219727, 43.34587097168}, + {140.32493591309, 37.399520874023}, + {-84.27131652832, 33.901748657227}, + {101.44569396973, 2.8406524658203}, + {-98.913345, 19.430008}, + {77.665786743164, 29.692611694336}, + {139.91020202637, 35.665054321289}, + {100.54069519043, 13.745956420898}, + {-76.511536, 3.535538}, + {51.500473022461, 35.638961791992}, + {37.638931, 55.813065}, + {-101.507256, 22.464799}, + {85.324630737305, 23.353500366211}, + {6.80191, 45.605621}, + {106.6381072998, 10.781021118164}, + {-0.30418395996094, 43.27033996582}, + {66.984329223633, 24.930038452148}, + {-101.46903991699, 26.930923461914}, + {80.250549, 13.030243}, + {90.622787475586, 22.687454223633}, + {2.9244232177734, 47.483596801758}, + {51.430435180664, 35.713119506836}, + {2.2611236572266, 48.85139465332}, + {77.15712, 28.574478}, + {-12.396011352539, 11.076278686523}, + {3.1922149658203, 48.676986694336}, + {-76.96403503418, -12.038955688477}, + {73.84391784668, 18.452224731445}, + {139.909172, 35.726852}, + {-73.572462, 41.039943}, + {-77.060165405273, -12.054061889648}, + {-71.072616577148, -14.450454711914}, + {80.020980834961, 15.248336791992}, + {-75.758285522461, 45.569229125977}, + {-58.491897583008, -34.57878112793}, + {106.852646, -6.531758}, + {130.542435, 33.30574}, + {72.57637, 23.017731}, + {13.545977, 52.446135}, + {-104.563807, 19.23844}, + {-95.19172668457, 29.825820922852}, + {1.499151, 48.446087}, + {118.50883483887, 37.476425170898}, + {80.247573852539, 13.040084838867}, + {20.981826782227, 52.22282409668}, + {37.406889, 55.695969}, + {-107.38105773926, 24.811935424805}, + {13.621917, 47.653533}, + {5.589981, 51.600494}, + {25.014013, -31.461606}, + {15.467562, 45.935462}, + {77.61360168457, 13.116989135742}, + {-90.659935, 30.049567}, + {3.1592559814453, 46.740646362305}, + {25.834912, -24.578351}, + {77.586135864258, 28.52668762207}, + {80.255356, 12.956772}, + {101.721249, 3.128431}, + {135.12565612793, 34.256057739258}, + {140.673781, -2.610893}, + {9.8252105712891, 56.773910522461}, + {121.35429382324, 31.214218139648}, + {85.265579223633, 27.687606811523}, + {120.847092, 15.237351}, + {140.43754577637, 37.575302124023}, + {59.594650268555, 36.280288696289}, + {111.310418, 30.678635}, + {139.615631, 35.713577}, + {137.001434, 50.548266}, + {110.40092468262, -7.7762603759766}, + {4.360992, 52.008438}, + {4.848403, 44.335327}, + {29.09935, 40.974884}, + {11.508873, 48.533387}, + {-123.116641, 49.255914}, + {14.477234, 48.977051}, + {28.062515258789, -26.192092895508}, + {30.467834, 59.902439}, + {5.1958465576172, 43.58757019043}, + {4.270477, 8.165588}, + {37.707138061523, 55.792007446289}, + {2.927864, 44.460987}, + {28.102340698242, -26.013565063477}, + {15.55046081543, 58.398513793945}, + {17.882308959961, 44.124526977539}, + {-91.121292114258, 14.716873168945}, + {136.01142883301, 35.020980834961}, + {17.845230102539, 59.425735473633}, + {2.552726, 48.710784}, + {-38.423087, -12.977968}, + {-0.32890319824219, 39.489669799805}, + {103.924322, 1.351708}, + {-75.73356628418, -14.071426391602}, + {6.4990997314453, 45.504684448242}, + {16.252785, 39.300499}, + {-90.51155090332, 19.841995239258}, + {-73.972666, 40.792694}, + {139.7110748291, 35.64582824707}, + {-75.143363, 41.00597}, + {75.846176, 30.893555}, + {-74.183461, 40.699584}, + {3.469706, 6.429062}, + {131.1678314209, 33.201370239258}, + {107.99491882324, 13.979415893555}, + {2.3256683349609, 48.705825805664}, + {-72.264632, 19.823227}, + {100.708854, 13.631783}, + {118.32069396973, 32.277145385742}, + {131.66770935059, 32.56965637207}, + {31.226577758789, 30.082626342773}, + {101.70639, 3.114967}, + {3.540802, 6.444626}, + {27.717128, 50.598221}, + {103.792099, 1.349533}, + {35.891247, 31.928267}, + {120.30205, 22.604094}, + {127.893022, 37.397189}, + {-73.863847, 40.819299}, + {121.499176, 31.295929}, + {10.765178, 50.513435}, + {135.510213, 34.593999}, + {39.609146118164, 24.47135925293}, + {37.513516, 55.73724}, + {3.1208038330078, 50.683364868164}, + {107.55821228027, -6.8795013427734}, + {1.816879, 45.301069}, + {1.754929, 45.325607}, + {34.812927, 31.889191}, + {114.15000915527, 22.28645324707}, + {135.50743103027, 34.652938842773}, + {21.174948, 52.225655}, + {101.59400939941, 3.1221771240234}, + {88.436508178711, 22.35237121582}, + {72.85514831543, 19.155349731445}, + {30.57881, 37.045284}, + {75.776138305664, 26.907577514648}, + {56.714859008789, 24.340896606445}, + {80.192986, 13.014679}, + {-80.380103, 25.680503}, + {-2.424046, 53.574642}, + {76.578140258789, 20.698928833008}, + {7.193756, 43.667221}, + {20.657043, 44.5681}, + {-37.079813, -10.961778}, + {78.041353, 27.14522}, + {56.349563598633, 25.402450561523}, + {39.211406, 21.494326}, + {51.571884155273, 35.428848266602}, + {-9.190064, 38.651276}, + {19.550857543945, 43.966598510742}, + {5.1299285888672, 48.336410522461}, + {6.170154, 52.533167}, + {-73.305272, 40.788825}, + {34.879531860352, 32.058792114258}, + {-84.276629, 33.844685}, + {100.4940032959, 13.730850219727}, + {-119.089752, 35.417387}, + {101.74919128418, 3.1702423095703}, + {117.01469421387, 39.098281860352}, + {2.725234, 48.608833}, + {112.616704, -7.144968}, + {99.046608, 18.841272}, + {88.384323, 22.443695}, + {104.902954, 11.552124}, + {151.198762, -33.92677}, + {-73.930226, 40.759441}, + {78.156051635742, 11.646194458008}, + {8.6428070068359, 53.226699829102}, + {79.267044067383, 25.900955200195}, + {36.975861, 55.50293}, + {135.053299, 48.368855}, + {54.63981628418, 24.29557800293}, + {51.456527709961, 35.610122680664}, + {-80.968095, 35.045228}, + {13.052444458008, 47.817306518555}, + {-6.1804962158203, 53.403854370117}, + {-0.74638366699219, 42.363967895508}, + {77.363645, 28.608562}, + {135.75462341309, 34.999008178711}, + {23.581466674805, 46.787338256836}, + {115.189919, -8.543284}, + {38.971939086914, 45.063858032227}, + {77.56485, 8.677139}, + {129.34547424316, 35.544204711914}, + {89.236679, 24.007187}, + {-3.6948394775391, 40.433120727539}, + {139.342346, 35.57785}, + {12.084274291992, 51.257400512695}, + {30.521393, 50.447617}, + {-2.6840972900391, 53.542556762695}, + {-46.492080688477, -23.446884155273}, + {138.56712341309, 35.636215209961}, + {106.819107, -6.205215}, + {39.046096801758, 45.095443725586}, + {-46.505813598633, -23.567733764648}, + {112.87696838379, 28.230056762695}, + {-92.21305847168, 38.543472290039}, + {26.444778442383, 44.617538452148}, + {-49.056046, -26.92645}, + {23.687210083008, 38.036727905273}, + {9.3514251708984, 52.920455932617}, + {91.459121704102, 53.719711303711}, + {-107.573583, 52.72699}, + {7.671451, 51.565987}, + {101.59400939941, 3.0850982666016}, + {37.571182250977, 55.656051635742}, + {33.327026, 35.192642}, + {13.242416, 52.641563}, + {46.01692199707, 51.548538208008}, + {-3.068427, 51.553961}, + {4.9170684814453, 43.463973999023}, + {8.5521697998047, 49.776992797852}, + {-17.431249, 14.667623}, + {37.693405151367, 55.636825561523}, + {51.372756958008, 35.684280395508}, + {-77.016463, 39.018374}, + {-0.397911, 53.279228}, + {26.845694, -22.521901}, + {-48.980528, -16.347623}, + {28.283615112305, -25.69221496582}, + {-76.728928, 41.238419}, + {8.704831, 51.700049}, + {-82.102708, 29.959062}, + {-0.023755, 51.470664}, + {-58.238731, -34.718118}, + {106.87568664551, -6.2313079833984}, + {-75.037875, 39.401512}, + {55.597687, 25.306664}, + {107.16133117676, 29.655532836914}, + {106.52549743652, 29.619827270508}, + {111.754968, -2.642961}, + {77.177114, 28.732809}, + {107.61863708496, -6.9618988037109}, + {-74.582163, 40.930622}, + {139.735794, 35.611496}, + {5.552919, 52.292626}, + {101.736313, 3.031352}, + {48.729172, 31.355667}, + {90.405121, 23.792267}, + {2.843203, 39.692917}, + {146.40998840332, -36.633224487305}, + {72.76725769043, 22.908554077148}, + {-83.490601, 34.015732}, + {2.997915, 47.19349}, + {39.734115600586, 43.595809936523}, + {135.382004, 34.772873}, + {138.390427, 34.96788}, + {7.726865, 45.111537}, + {139.82643127441, 35.795516967773}, + {38.448106, 55.738045}, + {101.80000305176, 4.0601348876953}, + {114.17747497559, 30.596237182617}, + {139.59571838379, 35.409622192383}, + {22.782211303711, 48.470993041992}, + {66.225452, 56.654988}, + {-112.31365, 33.680458}, + {98.879013061523, 14.432601928711}, + {10.703398, 50.611426}, + {79.065170288086, 21.113662719727}, + {-118.333857, 33.977171}, + {135.77247619629, 34.519729614258}, + {-73.117446899414, 45.416793823242}, + {30.327835, 46.185074}, + {139.8429107666, 36.274795532227}, + {22.208475, 45.449193}, + {27.932052612305, -26.676864624023}, + {37.662643, 55.870285}, + {2.8227996826172, 50.308456420898}, + {-58.570175170898, -34.624099731445}, + {-0.403748, 51.148911}, + {77.76741027832, 12.867050170898}, + {32.638320922852, 46.656875610352}, + {39.524918, -3.918228}, + {-89.431212, 43.840263}, + {24.073792, 49.76738}, + {-47.468948, -23.459702}, + {-4.3773651123047, 36.721115112305}, + {-90.365982055664, 38.742599487305}, + {37.607803, 55.759048}, + {-5.7698822021484, 37.170181274414}, + {51.391774, 35.591308}, + {86.916275024414, 22.307052612305}, + {21.731643676758, 38.245468139648}, + {106.632614, -6.162643}, + {100.535498, 13.857287}, + {94.930801391602, 21.157608032227}, + {-5.3688812255859, 33.922348022461}, + {103.887928, 1.488627}, + {-84.655838012695, 9.6466827392578}, + {-97.977446, 35.063897}, + {-76.619338989258, 38.866195678711}, + {-111.896963, 40.553283}, + {-44.600763, -20.063958}, + {137.26249694824, 34.934463500977}, + {-70.72380065918, 41.919021606445}, + {-3.4709930419922, 48.745651245117}, + {-75.204849243164, 39.802780151367}, + {-88.025894165039, 44.797439575195}, + {10.72611, 53.867004}, + {-81.280288696289, 28.507461547852}, + {-80.254784, 43.460885}, + {4.868454, 44.886154}, + {79.83283996582, 10.849685668945}, + {131.24610900879, 33.962173461914}, + {-100.26191711426, 25.597457885742}, + {4.777006, 52.715247}, + {26.441345, 44.99588}, + {15.889663696289, 47.601699829102}, + {106.94709777832, -6.6996002197266}, + {21.051236, 52.195968}, + {21.071090698242, 52.180252075195}, + {-43.027852, -22.783855}, + {136.52229309082, 34.714736938477}, + {115.87760925293, -32.268905639648}, + {97.365646362305, 16.916885375977}, + {150.817139, -34.025366}, + {153.40141296387, -27.904586791992}, + {82.982254, 25.340195}, + {111.78657531738, 23.125534057617}, + {7.2447967529297, 43.749618530273}, + {36.902389526367, -1.2778472900391}, + {-45.659374, -23.394039}, + {77.255172729492, 28.582992553711}, + {44.08332824707, 9.5423126220703}, + {128.923898, 35.212669}, + {77.079391479492, 12.612991333008}, + {4.555208, 50.727998}, + {37.63607, 55.798531}, + {-0.080337524414062, 51.625442504883}, + {100.45692443848, 14.042587280273}, + {19.100876, 47.430496}, + {114.153672, 22.316666}, + {88.432388, 22.622223}, + {75.993118286133, 12.434463500977}, + {-117.949905, 33.78273}, + {128.362693, 34.982569}, + {-100.83045959473, 22.155990600586}, + {6.134491, 45.911179}, + {127.734604, 26.181107}, + {36.818618774414, 55.845565795898}, + {37.509384155273, 55.956802368164}, + {-73.856463, 40.659807}, + {-85.794022, 38.21965}, + {-84.17141, 9.989147}, + {11.97236, 45.700341}, + {31.122212, 50.500036}, + {51.527938842773, 24.887466430664}, + {30.158851, 31.122504}, + {5.089003, 51.532868}, + {-7.5400543212891, 33.581771850586}, + {-17.412643432617, 14.73747253418}, + {75.50422668457, 11.742324829102}, + {2.490463, 48.709259}, + {-74.022602, 40.950813}, + {-83.822250366211, 9.2127227783203}, + {34.764959, 31.606109}, + {-87.446365356445, 37.859573364258}, + {139.480539, -34.797931}, + {-99.115219, 18.736496}, + {77.238693, 28.413162}, + {-47.416305541992, -23.440017700195}, + {77.652053833008, 13.071670532227}, + {121.56852722168, 25.078353881836}, + {-77.89084, 34.214535}, + {-2.4533843994141, 51.40022277832}, + {77.057418823242, 12.611618041992}, + {-99.204483032227, 19.582443237305}, + {13.108115, 52.37624}, + {24.695205688477, 48.947525024414}, + {116.66175842285, 39.882431030273}, + {100.789607, 13.907364}, + {23.580093, 46.786652}, + {19.006691, 47.501793}, + {116.20170593262, 6.0994720458984}, + {77.123336791992, 28.596725463867}, + {76.692123, 30.715589}, + {5.317555, 46.0029}, + {39.734116, 54.631027}, + {77.104110717773, 28.713455200195}, + {-81.560440063477, 28.359146118164}, + {107.6049041748, -6.9742584228516}, + {-67.473220825195, 48.453140258789}, + {2.5536346435547, 48.836288452148}, + {106.68754577637, 10.779647827148}, + {-3.62934, 36.997628}, + {120.365066, 23.205643}, + {77.421340942383, 11.202621459961}, + {18.501663208008, 59.549331665039}, + {-5.8124542236328, 54.855422973633}, + {30.894241333008, 29.330062866211}, + {32.731704711914, 39.854965209961}, + {-3.836565, 40.132158}, + {92.092208862305, 22.084579467773}, + {-17.437213, 14.665626}, + {113.32054138184, 3.5506439208984}, + {30.626449584961, 36.888656616211}, + {-52.395858764648, -30.195236206055}, + {-87.96272277832, 41.855850219727}, + {36.252822875977, 50.006332397461}, + {55.345001, 25.259171}, + {-104.752465, 39.6802}, + {14.47380065918, 48.974990844727}, + {37.495651245117, -3.3007049560547}, + {-80.080032, 8.407288}, + {21.262849, 53.864442}, + {79.493637084961, 29.235305786133}, + {121.7113494873, 30.857162475586}, + {3.001384, 48.390412}, + {5.041645, 48.040331}, + {-103.428039, 20.690003}, + {16.745223999023, 50.083236694336}, + {9.3788909912109, 44.388198852539}, + {153.01277160645, -27.308578491211}, + {-0.589553, 49.252396}, + {21.768722, 38.320084}, + {-74.399336, 40.452687}, + {-79.398880004883, 44.206924438477}, + {-73.979851, 40.606953}, + {-80.898442, 28.95226}, + {-78.145066, 39.177934}, + {-96.231638, 19.163295}, + {78.481521606445, 17.378311157227}, + {107.639837, -6.960734}, + {72.495346069336, 23.034896850586}, + {31.219711303711, -29.531936645508}, + {73.727188110352, 19.971084594727}, + {139.70695495605, 35.662307739258}, + {51.280746459961, 35.715866088867}, + {78.399124145508, 12.681655883789}, + {30.264931, 59.869995}, + {114.12117004395, 22.37434387207}, + {0.67085266113281, 49.815444946289}, + {85.346603393555, 27.705459594727}, + {72.612762, 23.023911}, + {77.719345092773, 11.327590942383}, + {4.987923, 51.7802}, + {2.2721099853516, 48.64128112793}, + {96.126937866211, 16.949844360352}, + {79.530715942383, 29.224319458008}, + {10.073776245117, 45.324783325195}, + {124.82734680176, 1.4550018310547}, + {37.375986, 55.625678}, + {19.431314, 54.156592}, + {26.97624206543, 45.337142944336}, + {-121.310049, 38.589843}, + {-79.020309, -2.915726}, + {28.103056, -26.336168}, + {90.416336, 23.794897}, + {-73.634428, 41.018572}, + {81.099014282227, 16.716384887695}, + {24.644852, 60.925369}, + {5.15625, 52.075195}, + {80.226974487305, 13.090896606445}, + {6.086231, 43.159174}, + {-3.7003326416016, 40.30403137207}, + {74.027938842773, 15.400772094727}, + {-99.038956, 19.551956}, + {118.311996, 37.85408}, + {-68.26286315918, -31.660537719727}, + {118.08036804199, 37.652206420898}, + {9.7345733642578, 47.497329711914}, + {141.28623962402, 43.097305297852}, + {82.152328491211, 17.238235473633}, + {-97.395859, 32.651711}, + {25.806198120117, 66.562728881836}, + {26.139565, 44.441757}, + {39.706649780273, 47.259750366211}, + {4.1109466552734, 48.742904663086}, + {74.086990356445, 18.659591674805}, + {6.859439, 45.027795}, + {2.690506, 42.69722}, + {-75.508346557617, 46.557998657227}, + {88.395309448242, 22.968978881836}, + {127.50938415527, 36.086654663086}, + {20.870590209961, 53.560409545898}, + {-46.794427, -22.879559}, + {76.319504, 10.044479}, + {16.316757202148, 58.479537963867}, + {76.793746948242, 30.706100463867}, + {11.963882, 45.480881}, + {-47.592718, -22.387191}, + {48.057632446289, 46.350631713867}, + {-0.313797, 51.490173}, + {76.350173950195, 10.102615356445}, + {77.200241088867, 28.566513061523}, + {75.89973449707, 10.951309204102}, + {35.651321411133, 32.683639526367}, + {30.105972290039, 31.214218139648}, + {-47.093092, -22.906037}, + {174.443635, -36.693587}, + {-74.159774780273, 40.976943969727}, + {76.496429, 9.420776}, + {-90.384523, 37.788852}, + {140.32905578613, 40.087051391602}, + {11.502918, 48.974538}, + {114.59632873535, -3.2801055908203}, + {135.51567077637, 34.66667175293}, + {91.821670532227, 22.335891723633}, + {-76.260539, 36.939284}, + {79.846572875977, 7.2214508056641}, + {17.864454, 50.693542}, + {5.2947235107422, 48.671493530273}, + {-99.179763793945, 19.494552612305}, + {-117.07511901855, 32.634201049805}, + {31.925582885742, 51.144790649414}, + {9.750576, 55.65356}, + {98.808008, 8.089896}, + {110.350437, -7.902261}, + {-79.006485, 35.062454}, + {-122.35954284668, 47.565994262695}, + {68.236313, 25.381306}, + {141.65153503418, 42.738876342773}, + {76.447677612305, 30.351791381836}, + {2.3709869384766, 48.708572387695}, + {126.9847869873, 37.57942199707}, + {3.026061, 50.51283}, + {7.6018524169922, 52.287368774414}, + {66.396560668945, 56.81510925293}, + {139.78248596191, 35.714492797852}, + {13.439713, 51.140671}, + {76.535568237305, 31.411972045898}, + {133.78807067871, 34.235458374023}, + {74.74411, 19.099045}, + {5.9813690185547, 52.198104858398}, + {100.304512, 5.388605}, + {79.427719116211, 14.50813293457}, + {76.522751, 9.590836}, + {-74.999356, 41.344106}, + {18.91983, 51.578064}, + {-5.268118, 35.168312}, + {-0.18608093261719, 48.002700805664}, + {80.088272094727, 13.042831420898}, + {24.402694702148, 62.750473022461}, + {-51.218948364258, -30.026321411133}, + {2.217178, 41.427383}, + {86.875076293945, 23.522415161133}, + {18.110733, 59.123154}, + {5.9333038330078, 50.823440551758}, + {9.832077, 44.114227}, + {6.121435, 43.462611}, + {33.964920043945, 34.990768432617}, + {22.749252319336, 42.276077270508}, + {-89.369659, 38.606815}, + {23.512115, 46.749573}, + {27.517318725586, -29.29573059082}, + {30.471268, 59.859867}, + {-2.1430206298828, 51.376876831055}, + {-99.144058227539, 23.725662231445}, + {128.695957, 35.208507}, + {51.238632, 35.757523}, + {31.107101, -17.915268}, + {115.75263977051, -31.995620727539}, + {-91.053316, 30.496675}, + {37.843094, 55.762482}, + {139.650454, 35.562057}, + {51.477127075195, 35.722732543945}, + {-0.52014, 39.485124}, + {-106.151047, 34.758682}, + {-96.859079, 32.83154}, + {-79.895096, 36.054611}, + {78.474655, 12.32666}, + {100.5736541748, 13.829727172852}, + {60.619125366211, 56.809616088867}, + {135.7642364502, 34.95231628418}, + {-42.02117, -22.868977}, + {-106.19316101074, 28.838424682617}, + {137.125854, 35.014114}, + {-78.40353, 36.30146}, + {7.0676422119141, 51.555404663086}, + {101.660843, 2.967749}, + {108.19679260254, 16.069564819336}, + {17.982086, 59.341917}, + {24.906692504883, 60.215377807617}, + {100.52696228027, 13.728103637695}, + {-3.683853, 40.429001}, + {-61.307144165039, 10.639572143555}, + {140.08461, 35.46936}, + {4.7275543212891, 8.1484222412109}, + {135.535584, 34.806061}, + {12.508538, 41.919997}, + {-80.677414, 28.42598}, + {48.781356811523, 31.289749145508}, + {77.709732055664, 17.665328979492}, + {39.971694946289, 43.403549194336}, + {-36.242099, -7.267936}, + {139.926682, 35.666552}, + {112.754493, -7.27719}, + {7.755424, 49.450839}, + {-2.159348, 57.030716}, + {-0.468063, 47.375107}, + {109.31327819824, 13.095016479492}, + {2.0098114013672, 45.378341674805}, + {25.024795532227, 63.899917602539}, + {-47.891464233398, -20.766220092773}, + {44.079208374023, 36.193771362305}, + {-46.546326, -23.522415}, + {101.017772, 13.453298}, + {25.460249, 42.282405}, + {10.00373840332, 53.486251831055}, + {-99.021835327148, 27.458267211914}, + {-8.599781, 42.80626}, + {49.594345092773, 37.267684936523}, + {-2.285095, 51.341717}, + {36.792526, -1.237106}, + {-0.161362, 47.218552}, + {55.432205200195, 25.27473449707}, + {73.902969360352, 18.597793579102}, + {-90.25858, 38.672255}, + {19.35128, 47.616421}, + {50.666483, 26.288084}, + {5.871233, 45.618175}, + {16.886672973633, 52.481002807617}, + {2.6113128662109, 48.736038208008}, + {32.484512329102, 37.871932983398}, + {12.500381469727, 41.93962097168}, + {3.85382, 49.377989}, + {-84.287109, 33.321533}, + {-80.846328735352, 42.885818481445}, + {-84.269943237305, 33.900375366211}, + {131.5372467041, 32.282638549805}, + {-81.803512573242, 26.330795288086}, + {2.380737, 48.838898}, + {-42.041764, -22.88763}, + {101.09817, 4.561145}, + {-51.164196, -29.930497}, + {115.16487121582, -8.6908721923828}, + {71.634292602539, 29.37126159668}, + {35.297012329102, 32.700119018555}, + {76.352920532227, 30.344924926758}, + {44.437912, 48.653229}, + {139.40895080566, 38.053207397461}, + {76.903954, 13.736687}, + {-3.4297943115234, 51.894607543945}, + {-101.66679382324, 20.442123413086}, + {23.767082, 52.097552}, + {3.439753, 6.434107}, + {78.711319, 28.82515}, + {-0.006563, 51.582753}, + {5.381928, 46.177597}, + {104.55757141113, 28.161392211914}, + {-105.043644, 40.154445}, + {48.491592407227, 34.975662231445}, + {15.999526977539, 47.870864868164}, + {37.613754, 55.755844}, + {4.8236846923828, 45.673599243164}, + {125.39863586426, 7.0305633544922}, + {-84.271927, 34.22472}, + {-83.899154663086, 34.685897827148}, + {9.1316986083984, 36.265182495117}, + {4.6918487548828, 52.290115356445}, + {34.95231628418, 29.558029174805}, + {5.886925, 52.019818}, + {-75.644302368164, 5.4128265380859}, + {88.433075, 22.62085}, + {-1.120836, 51.890063}, + {6.9083404541016, 45.478591918945}, + {121.9132232666, 24.952011108398}, + {118.184738, 39.678497}, + {139.39796447754, 35.678787231445}, + {7.2406768798828, 47.116928100586}, + {121.50398254395, 25.031661987305}, + {20.480575561523, 53.405227661133}, + {0.068388, 48.644568}, + {51.483993530273, 35.73371887207}, + {14.465904, 46.854507}, + {127.493712, 37.668149}, + {21.248245, 66.020966}, + {-64.535751, -32.165223}, + {-1.219115, 37.996178}, + {0.78895568847656, 47.339401245117}, + {10.60318, 49.091309}, + {75.984878540039, 12.713241577148}, + {139.690475, 35.542145}, + {30.357284545898, 50.456771850586}, + {136.21467590332, 36.056442260742}, + {11.305819, 64.340191}, + {-4.5861053466797, 40.909652709961}, + {28.030921, -25.700838}, + {-78.752784, 35.797647}, + {-86.761093139648, 32.64518737793}, + {107.727127, -6.93924}, + {73.128433, 19.2453}, + {2.975468, 47.258607}, + {-86.092300415039, 11.956558227539}, + {130.49766540527, 31.534194946289}, + {-101.1971282959, 19.696426391602}, + {78.427963256836, 17.522506713867}, + {-78.330459594727, 34.045944213867}, + {121.02470397949, 14.525985717773}, + {134.81254577637, 34.764175415039}, + {-83.451461791992, 30.48225402832}, + {31.363893, 30.120552}, + {-47.372764, -23.434635}, + {7.3134613037109, 51.474380493164}, + {106.822928, -6.195182}, + {-48.428566, -27.454796}, + {-72.083358764648, 4.3128204345703}, + {138.35563659668, 35.026473999023}, + {-90.541763305664, 14.61799621582}, + {-117.898557, 33.995898}, + {77.204360961914, 28.707962036133}, + {-122.743516, 53.901735}, + {77.63557434082, 12.897262573242}, + {15.575179, 47.098389}, + {-0.426151, 39.323614}, + {131.1678314209, 32.869033813477}, + {17.220176, 49.532178}, + {-88.997768, 40.461679}, + {37.493591, 55.840073}, + {31.059036254883, 3.4819793701172}, + {140.78773498535, 36.872177124023}, + {55.485763549805, 25.325546264648}, + {9.91362, 59.781035}, + {-2.206536, 56.933556}, + {80.967178344727, 26.161880493164}, + {20.991439819336, 55.294876098633}, + {86.082172, 55.375214}, + {-4.5298004150391, 36.68815612793}, + {132.4779510498, 34.372787475586}, + {-78.322906, 18.369827}, + {125.89302062988, 7.1582794189453}, + {32.855061, 39.885265}, + {2.8502655029297, 49.91569519043}, + {121.500206, 25.127792}, + {-111.95137023926, 33.56803894043}, + {26.255264282227, 60.40901184082}, + {4.812274, 52.362935}, + {-0.53489685058594, 38.829116821289}, + {79.923477172852, 16.474685668945}, + {76.58088684082, 12.397384643555}, + {77.781143188477, 27.135543823242}, + {139.7989654541, 35.632095336914}, + {22.182083129883, 54.017715454102}, + {-53.594754, -25.506112}, + {-105.94184875488, 39.581680297852}, + {24.92317199707, 60.179672241211}, + {78.368225, 17.43084}, + {39.643383, 24.481737}, + {-46.118852, -23.359747}, + {18.623886108398, 48.764877319336}, + {17.136611938477, 48.17024230957}, + {-38.416289, -12.971687}, + {77.20639, 28.63623}, + {130.582123, 33.403244}, + {-80.079625, 37.812865}, + {72.863388061523, 19.235000610352}, + {118.56925964355, 36.500015258789}, + {-2.8708648681641, 53.524703979492}, + {77.64518737793, 12.94807434082}, + {-0.23551940917969, 52.438430786133}, + {-8.306351, 43.194809}, + {77.735824584961, 11.445693969727}, + {135.02540588379, 34.674911499023}, + {-38.410896, -12.139351}, + {134.66285705566, 34.885025024414}, + {0.058365, 35.893021}, + {111.311073, 27.353897}, + {2.0413970947266, 48.811569213867}, + {77.224960327148, 28.650283813477}, + {-68.617172241211, 44.623031616211}, + {45.124282836914, 40.367202758789}, + {-73.440737, 41.266991}, + {121.46141052246, 25.05500793457}, + {55.415725708008, 25.197830200195}, + {109.4066619873, 24.358749389648}, + {135.82054138184, 34.968795776367}, + {77.567368, 12.943497}, + {36.954574584961, -0.41404724121094}, + {119.23118591309, 34.742202758789}, + {124.84245300293, 1.3382720947266}, + {76.293869018555, 10.031204223633}, + {-103.523483, 36.33522}, + {1.1130523681641, 41.130752563477}, + {132.74711608887, 33.826217651367}, + {46.68571472168, 24.685592651367}, + {20.677729, 49.297028}, + {14.104385375977, 37.78678894043}, + {-3.655701, 40.127563}, + {103.896034, 1.380075}, + {55.26741027832, 25.182723999023}, + {-82.470932, 27.15889}, + {23.896637, 38.003769}, + {26.469497680664, -24.886093139648}, + {25.115433, 60.451584}, + {100.550726, 13.736002}, + {76.321334838867, 9.5093536376953}, + {11.055679321289, 35.508499145508}, + {11.78009, 45.075531}, + {100.484571, 13.917113}, + {-78.764557, 35.744568}, + {126.53984069824, 45.702438354492}, + {76.597366333008, 10.072402954102}, + {10.706033, 49.27959}, + {104.768029, -2.932708}, + {21.320572, 46.12175}, + {72.881240844727, 19.28581237793}, + {14.412002563477, 50.074996948242}, + {3.966064, 45.740891}, + {-0.61729431152344, 53.208847045898}, + {2.0111846923828, 42.443618774414}, + {-159.45350646973, 21.877212524414}, + {6.271595, 51.912462}, + {77.209854, 12.65213}, + {106.59965515137, 29.548416137695}, + {29.007339, 41.047668}, + {18.486557006836, 50.23567199707}, + {107.62413024902, -6.9248199462891}, + {-73.908463, 40.649414}, + {30.300979614258, 59.987411499023}, + {2.490097, 48.85068}, + {5.7918548583984, 51.287612915039}, + {100.62309265137, -0.21354675292969}, + {135.533981, 34.594345}, + {35.334374, 32.76322}, + {-112.080043, 47.671622}, + {-44.524154663086, -14.25407409668}, + {-68.115921020508, -16.471939086914}, + {-78.978928, 34.83078}, + {-56.678358, -27.59464}, + {3.072281, 50.564804}, + {81.379166, 21.209106}, + {177.297363, -38.033981}, + {75.923080444336, 11.171035766602}, + {-60.840225219727, 14.545211791992}, + {-101.216812, 20.610123}, + {-0.81682, 45.739269}, + {-3.453338, 43.404374}, + {80.059432983398, 12.842330932617}, + {174.46220397949, -36.355819702148}, + {-68.354187, -34.604874}, + {23.706436, 56.932297}, + {12.317733764648, 41.811904907227}, + {23.801193237305, 38.077926635742}, + {150.52898, -34.735369}, + {21.43913269043, -34.187393188477}, + {6.1736297607422, 49.248275756836}, + {27.856521606445, 62.309646606445}, + {60.631484985352, 56.863174438477}, + {88.409073, 22.937477}, + {20.478369, 50.828017}, + {100.56953430176, 13.729476928711}, + {79.059677124023, 28.817825317383}, + {129.084559, 35.196888}, + {136.94526672363, 35.148696899414}, + {73.390731811523, 61.312637329102}, + {130.51551818848, 33.425216674805}, + {79.593887, 13.951263}, + {75.629196166992, 32.278518676758}, + {72.829055786133, 18.943862915039}, + {0.19706726074219, 52.08137512207}, + {120.542679, 14.769402}, + {-84.110592, 39.718813}, + {140.56800842285, 36.365432739258}, + {28.782119750977, 66.079330444336}, + {28.782119750977, 40.986557006836}, + {100.90873718262, 14.758071899414}, + {77.720718383789, 29.000473022461}, + {3.2471466064453, 46.660995483398}, + {77.65754699707, 13.018112182617}, + {34.929765, 31.955442}, + {135.036392, 48.543091}, + {31.210098266602, -29.538803100586}, + {-63.733749389648, -31.797866821289}, + {76.845932006836, 30.631942749023}, + {-42.331008911133, -22.349624633789}, + {9.60823, 45.637207}, + {51.27855, 34.137131}, + {-73.635177612305, 40.742111206055}, + {-100.23445129395, 19.876327514648}, + {2.29222, 48.861509}, + {-59.059066772461, -33.073654174805}, + {-100.31959533691, 25.642776489258}, + {112.53227233887, -7.8792572021484}, + {36.350327, 50.033112}, + {30.377928, 59.856066}, + {11.095504760742, 44.132766723633}, + {-78.945084, 34.923477}, + {110.367643, -7.761949}, + {74.009399, 17.738113}, + {-99.178391, 19.324265}, + {-0.570371, 51.487724}, + {138.630696, -34.814236}, + {78.077774047852, 12.305374145508}, + {158.65837097168, 53.038558959961}, + {114.38758850098, 30.475387573242}, + {100.900183, 12.943443}, + {14.42985534668, 51.18049621582}, + {100.53932189941, 13.752822875977}, + {-73.705035, 45.492735}, + {-159.82154846191, -21.249618530273}, + {152.999557, -28.762235}, + {76.528701782227, 9.0506744384766}, + {74.318558, 31.580017}, + {-100.310669, 25.733414}, + {8.65725, 48.882662}, + {15.285415649414, 41.122512817383}, + {29.551162, 65.434158}, + {127.223549, 38.017623}, + {79.100875854492, 21.190567016602}, + {29.005966186523, 60.207138061523}, + {121.48063659668, 31.313095092773}, + {106.7520904541, 10.792007446289}, + {101.09825134277, 12.698135375977}, + {131.007125, 31.967474}, + {38.99528503418, 45.109176635742}, + {101.03446, 4.551731}, + {99.994125366211, 20.367965698242}, + {-4.0930938720703, 40.673446655273}, + {-43.186569213867, -22.64762878418}, + {140.71083068848, 38.277053833008}, + {77.215897, 28.580246}, + {113.99345397949, 22.890701293945}, + {73.793106079102, 19.987564086914}, + {33.59027, 55.181625}, + {33.354593, 55.148878}, + {-94.945907592773, 47.390213012695}, + {-80.858554, -2.228766}, + {36.938095092773, -1.3932037353516}, + {-86.777969, 37.948263}, + {4.85939, 52.371483}, + {96.249160766602, 16.83723449707}, + {78.327713012695, 27.198715209961}, + {79.865798950195, 6.8767547607422}, + {103.67454528809, 15.984420776367}, + {10.173956, 49.560668}, + {-74.542511, -8.403442}, + {-46.598156, -21.781038}, + {88.398743, 22.656555}, + {0.30143737792969, 51.485366821289}, + {-97.123947143555, 32.910232543945}, + {5.0585174560547, 31.839065551758}, + {24.246597, 56.988144}, + {2.1691131591797, 41.529006958008}, + {-80.846526, 35.37152}, + {-0.087203979492188, 39.944229125977}, + {18.121948, 59.29184}, + {12.753067016602, 56.066665649414}, + {-70.537033081055, -33.39225769043}, + {76.663284, 9.245682}, + {36.97380065918, 56.19026184082}, + {1.468591, 52.212602}, + {5.765582, 51.943316}, + {-4.7893524169922, 43.299179077148}, + {-74.789086, 4.299088}, + {-54.927082, -28.07821}, + {-81.388778686523, 41.388931274414}, + {126.743286, 37.891899}, + {139.06837463379, 34.81086730957}, + {-67.578964233398, 10.224838256836}, + {-91.857376098633, 37.33772277832}, + {77.084884643555, 28.484115600586}, + {-45.423597, -21.577051}, + {116.071457, 5.942488}, + {88.014907836914, 24.19807434082}, + {1.9054412841797, 41.475448608398}, + {3.122864, 47.079849}, + {2.4286651611328, 50.949783325195}, + {10.80779, 54.26903}, + {79.103321, 21.144966}, + {-0.247477, 51.523651}, + {37.771682739258, 48.015060424805}, + {139.62730407715, 35.73371887207}, + {80.890274047852, 26.805953979492}, + {4.6286773681641, 52.391738891602}, + {30.456161499023, 59.953079223633}, + {27.746658325195, 44.666976928711}, + {5.776078, 43.144815}, + {29.324107, 40.930682}, + {-41.148331, -20.856033}, + {82.992782592773, 25.269241333008}, + {-95.932032, 41.105016}, + {-57.56217956543, -25.423049926758}, + {135.481339, 34.669418}, + {48.520431518555, 39.224624633789}, + {100.462937, 14.901081}, + {37.225113, 55.669}, + {-0.47584533691406, 39.470443725586}, + {13.095016479492, 11.907119750977}, + {13.127289, 11.837082}, + {130.26420593262, 33.254928588867}, + {83.772811889648, 53.359909057617}, + {101.774578, 3.126407}, + {47.54264831543, -18.93424987793}, + {128.738028, 36.553685}, + {106.01051330566, 10.316848754883}, + {11.781819, 51.914837}, + {38.95752, 45.043259}, + {-65.034255981445, -24.714431762695}, + {18.83674621582, 50.445785522461}, + {51.408462524414, 35.732345581055}, + {103.66218566895, 10.587387084961}, + {37.398697, 55.916428}, + {-0.34263610839844, 51.577377319336}, + {92.160873413086, 24.916305541992}, + {-3.6302947998047, 43.40217590332}, + {51.377465, 35.750002}, + {-2.1031951904297, 37.642593383789}, + {-51.144344, -29.155414}, + {-111.931423, 40.735473}, + {23.093948, 53.121643}, + {5.3620147705078, 43.273086547852}, + {11.863174438477, 51.441421508789}, + {4.901852, 52.42224}, + {-74.479751586914, 40.456466674805}, + {-119.352493, 52.916794}, + {-105.246506, 20.679703}, + {-83.039932, 34.819107}, + {1.4453887939453, 43.601303100586}, + {-8.687118, 42.197507}, + {-74.759902954102, 40.20378112793}, + {-111.774216, 33.454971}, + {95.360641479492, 5.4718780517578}, + {116.49971008301, 39.986801147461}, + {-118.249924, 33.891879}, + {82.748533, 26.459297}, + {6.1173248291016, 47.114181518555}, + {20.920029, 52.406158}, + {2.3970794677734, 49.812698364258}, + {175.268433, -36.597821}, + {76.948928833008, 28.694229125977}, + {76.413345336914, 30.629196166992}, + {-75.70042, 45.428676}, + {78.911361694336, 11.672286987305}, + {77.198867797852, 28.408584594727}, + {-57.523031, -37.937851}, + {2.377062, 48.829903}, + {37.531356811523, 55.767288208008}, + {-4.762809, 48.360673}, + {-96.823196411133, 33.204116821289}, + {37.407074, 55.717506}, + {37.418746948242, 55.77278137207}, + {16.045338, 47.687388}, + {98.707103, 3.621723}, + {101.5308380127, 36.633224487305}, + {121.95304870605, 39.399032592773}, + {101.721383, 3.122285}, + {-80.301132202148, 32.57926940918}, + {12.539957, 47.000074}, + {29.887619018555, -23.140640258789}, + {77.246475, 28.56514}, + {117.98149108887, 37.398147583008}, + {-58.505630493164, -34.604873657227}, + {130.550243, 33.30574}, + {7.880622, 49.478962}, + {55.967664, 54.728081}, + {74.635162, 26.459427}, + {91.921920776367, 26.455764770508}, + {1.3616180419922, 46.066360473633}, + {76.319961547852, 9.6123504638672}, + {127.05757141113, 37.520370483398}, + {8.842621, 9.72496}, + {38.722011, 55.849358}, + {4.3141937255859, 52.088241577148}, + {29.165267944336, 37.866439819336}, + {7.408218, 10.445938}, + {-74.135654, 40.869579}, + {46.770858764648, 24.677352905273}, + {37.826304, 55.644847}, + {11.79811, 46.377827}, + {-73.952407836914, 40.676193237305}, + {120.327225, 22.874985}, + {1.2874603271484, 45.876846313477}, + {-56.680526733398, -36.708755493164}, + {76.652985, 10.787888}, + {-97.861405, 30.325012}, + {-77.128227, -11.959841}, + {-71.212692260742, 19.846115112305}, + {-84.378738, 33.774033}, + {6.8025970458984, 51.098098754883}, + {121.13319396973, 14.63996887207}, + {153.34510803223, -27.201461791992}, + {1.9356536865234, 42.336502075195}, + {86.149429, 23.652054}, + {-46.5048, -24.028624}, + {36.08528137207, -0.28907775878906}, + {123.641354, 10.071738}, + {123.7671661377, 10.227584838867}, + {-89.073715209961, 42.892684936523}, + {23.370255, -34.049515}, + {37.731857299805, 55.709609985352}, + {39.269943237305, 21.467971801758}, + {38.98567199707, 31.775894165039}, + {82.715377807617, 17.40852355957}, + {37.847969, 55.910349}, + {77.421340942383, 29.592361450195}, + {72.886734008789, 19.104537963867}, + {77.756424, 22.602997}, + {72.822189331055, 18.96858215332}, + {88.387619, 22.481735}, + {79.89875793457, 7.0017242431641}, + {73.165512084961, 22.298812866211}, + {127.055893, 37.706985}, + {115.991333, -3.415918}, + {18.704613, -33.99803}, + {27.862147, -26.435643}, + {137.07984924316, 34.99626159668}, + {10.165786743164, 36.695022583008}, + {73.654403686523, 19.765090942383}, + {10.338821411133, 48.75114440918}, + {37.108383178711, 56.982650756836}, + {139.34028625488, 35.735092163086}, + {8.740997, 49.366379}, + {-82.665454, 27.91054}, + {20.236699, 47.177186}, + {30.32844543457, 59.917373657227}, + {6.4167022705078, 53.028945922852}, + {-91.620441, 35.68861}, + {37.378921508789, 55.727462768555}, + {101.644135, 3.144836}, + {-8.117523, 40.424881}, + {23.836898803711, 53.677139282227}, + {23.905569, 38.170292}, + {5.6655120849609, 45.039138793945}, + {72.958145141602, 23.591079711914}, + {5.3757476806641, 43.304672241211}, + {-2.7747344970703, 52.70622253418}, + {7.804642, 48.003616}, + {15.317001342773, 50.907211303711}, + {12.159348, 47.697601}, + {-89.896951, 35.077181}, + {-100.008545, 20.377579}, + {139.365463, 35.436172}, + {-98.763656616211, 21.985702514648}, + {-106.673803, 35.132545}, + {-46.673042, -23.347912}, + {116.30744934082, 40.026626586914}, + {78.34831237793, 55.35530090332}, + {30.105925, -25.419621}, + {90.396194458008, 23.742141723633}, + {77.56965637207, 12.95768737793}, + {-88.962478637695, 42.270584106445}, + {19.115524, 50.196304}, + {119.56352233887, 39.919509887695}, + {12.353439, 41.760406}, + {-4.5668792724609, 55.947189331055}, + {-75.077565, 39.99869}, + {74.749191, 18.296768}, + {73.838425, 18.543137}, + {18.497826, -33.86578}, + {-42.355911, -22.849111}, + {90.383834838867, 23.735275268555}, + {25.3568, 50.743217}, + {23.603439331055, 46.772232055664}, + {2.3407745361328, 49.700088500977}, + {-68.339767456055, -34.611740112305}, + {139.751705, 35.723377}, + {-70.245895385742, 19.299545288086}, + {120.99998474121, 15.80451965332}, + {88.133010864258, 23.032150268555}, + {-99.576644897461, 19.267959594727}, + {77.709045, 11.331024}, + {79.534836, 13.516159}, + {2.911148, 50.584488}, + {105.75233459473, 20.321273803711}, + {9.963364, 57.008662}, + {74.661026000977, 15.410385131836}, + {37.700729, 55.709152}, + {116.46812438965, 39.892044067383}, + {28.99498, 41.080284}, + {-21.947250366211, 64.01252746582}, + {21.513758, 52.629077}, + {-46.563491821289, -23.09944152832}, + {37.40931, 55.877205}, + {-4.0422821044922, 40.483932495117}, + {50.221939086914, 53.274765014648}, + {126.91749572754, 37.553329467773}, + {-48.712692260742, -27.587356567383}, + {-96.122817993164, 46.303939819336}, + {6.5265655517578, 51.235427856445}, + {16.183547973633, 39.86457824707}, + {29.473377, -26.420867}, + {28.280868530273, -28.311080932617}, + {21.085281, 52.208633}, + {1.2201690673828, 52.567520141602}, + {29.191360473633, 40.891799926758}, + {-95.238811, 31.963937}, + {130.84648132324, 32.823715209961}, + {106.811627, -6.639429}, + {127.158167, 37.658708}, + {-103.229599, 20.631363}, + {-122.39692, 37.606171}, + {-74.805517, 4.291083}, + {139.023056, 36.260376}, + {-73.293228149414, 41.338119506836}, + {-94.254818, 18.064357}, + {101.797256, 36.603012}, + {-86.516647, 11.995697}, + {136.89582824707, 35.29426574707}, + {175.62675476074, -38.224868774414}, + {77.748184204102, 20.898056030273}, + {77.376709, 28.602905}, + {16.444473266602, 59.589157104492}, + {1.3588714599609, 44.160232543945}, + {-56.700439, -36.607132}, + {110.36904, -7.7853}, + {51.457748, 35.709}, + {38.386765, 55.370102}, + {138.4984588623, 35.00862121582}, + {91.982345581055, 24.935531616211}, + {2.0688629150391, 41.452102661133}, + {3.358463, 48.539192}, + {19.127883911133, 47.526168823242}, + {2.6113128662109, 48.852767944336}, + {5.1683807373047, 7.2420501708984}, + {118.25752258301, 39.97444152832}, + {13.29963684082, 46.564865112305}, + {102.73933410645, 14.499893188477}, + {127.077062, 36.197784}, + {37.836227416992, 55.75080871582}, + {19.259719848633, 49.665756225586}, + {73.660583, 16.448593}, + {78.363418579102, 27.175369262695}, + {76.893539, 43.207626}, + {30.025406, 31.263657}, + {24.520111, 47.085342}, + {-46.787594, -23.663518}, + {19.306412, 49.656418}, + {20.980453491211, 52.280502319336}, + {55.80382, -21.314342}, + {121.55342102051, 25.026168823242}, + {15.728988647461, 51.766891479492}, + {-0.26573181152344, 48.976364135742}, + {-57.773676, -37.281877}, + {-74.807968139648, 40.504531860352}, + {99.13382, 18.713748}, + {72.870255, 19.255943}, + {17.938613891602, 49.79621887207}, + {5.070478, 50.530197}, + {10.919723510742, 49.570999145508}, + {-8.201522, 43.523484}, + {36.184158325195, 51.727066040039}, + {27.261891, 38.350085}, + {135.6859588623, 34.606246948242}, + {-34.86442565918, -8.0261993408203}, + {76.943435668945, 11.011734008789}, + {-54.558792114258, -20.398178100586}, + {-0.42915344238281, 53.723831176758}, + {101.673633, 3.129846}, + {110.85823059082, -7.5537872314453}, + {126.78977966309, 37.642593383789}, + {78.564987, 11.176529}, + {135.744186, 35.007248}, + {130.12147, 33.142061}, + {136.56898498535, -33.922348022461}, + {105.83610534668, 21.032638549805}, + {40.688552856445, 55.360794067383}, + {-71.535415649414, 41.485061645508}, + {-99.094619750977, 19.520645141602}, + {9.2182159423828, 48.286972045898}, + {6.9110870361328, 43.945999145508}, + {39.715805, 54.613724}, + {8.499298, 44.345627}, + {98.190994262695, 39.848098754883}, + {-2.453384, 47.59964}, + {40.187301635742, 29.927444458008}, + {12.473017, 41.918333}, + {75.16227722168, 31.80061340332}, + {9.9817657470703, 55.890884399414}, + {139.56550598145, 36.00700378418}, + {139.880676, 36.315994}, + {35.537338256836, 33.80973815918}, + {8.4752655029297, 50.492477416992}, + {102.65830993652, 25.081100463867}, + {-48.446273803711, -1.3698577880859}, + {-77.075271606445, -11.964797973633}, + {138.91044616699, 35.225601196289}, + {37.509384155273, 55.73844909668}, + {85.850601196289, 51.920700073242}, + {-71.724108, -35.915253}, + {120.41954, 23.142471}, + {78.598251342773, 10.749435424805}, + {12.379531860352, 55.800247192383}, + {8.8584136962891, 9.8993682861328}, + {-118.1339263916, 34.033584594727}, + {75.905227661133, 22.798690795898}, + {138.45314025879, 35.029220581055}, + {2.7431488037109, 41.655349731445}, + {-70.823898, -34.305191}, + {27.61344909668, 38.506393432617}, + {5.828018, 50.969009}, + {21.94450378418, 51.887741088867}, + {5.6037139892578, 51.746292114258}, + {-105.224197, 20.627208}, + {4.700422, 52.035421}, + {4.825618, 52.265253}, + {-1.8560028076172, 39.438858032227}, + {13.075790405273, 52.399978637695}, + {-100.941422, 22.163132}, + {128.975319, 35.085561}, + {112.726425, -7.389816}, + {-82.468872, 27.543411}, + {-71.529922485352, -16.400527954102}, + {2.6662445068359, 48.483352661133}, + {39.549408, 52.592239}, + {9.0904998779297, 53.093490600586}, + {101.725288, 3.139928}, + {116.20719909668, 39.959335327148}, + {-96.902847290039, 19.530258178711}, + {-89.402882, 30.423688}, + {78.083267211914, 12.008743286133}, + {12.687149047852, 51.029434204102}, + {-112.083607, 33.668633}, + {78.298874, 17.510147}, + {14.33235168457, 48.256759643555}, + {-48.927427, -16.34013}, + {78.462295532227, 17.36457824707}, + {1.1556243896484, 44.183578491211}, + {23.692246, 38.277512}, + {-0.202443, 51.537093}, + {29.990615844727, 31.23893737793}, + {23.299942016602, 42.693557739258}, + {5.593035, 48.062443}, + {16.90315246582, 52.397232055664}, + {2.704237, 39.554593}, + {-50.496597290039, -29.882125854492}, + {77.59162902832, 13.018112182617}, + {98.780258, 1.741061}, + {131.004093, 31.935196}, + {120.28312683105, 22.868728637695}, + {18.651537, -33.97885}, + {9.813658, 34.768474}, + {36.130599975586, 52.971267700195}, + {-101.14082336426, 20.57258605957}, + {-100.73978, 22.405877}, + {-57.61848449707, -25.29670715332}, + {73.094101, 18.831528}, + {4.866303, 51.827366}, + {77.757797241211, 22.588577270508}, + {24.556503295898, 67.914047241211}, + {-88.163567, 13.462029}, + {-111.8579864502, 40.714645385742}, + {-4.1741180419922, 15.32112121582}, + {85.144729614258, 25.600204467773}, + {-111.701088, 33.437233}, + {-0.459452, 51.769724}, + {-87.035751342773, 40.354843139648}, + {4.508016, 50.195397}, + {28.051529, -26.165314}, + {-73.803406, 45.601501}, + {-1.1542510986328, 52.350540161133}, + {-48.619308, -27.007141}, + {9.053421, 50.046844}, + {51.437301635742, 35.759811401367}, + {4.771957, 45.775223}, + {21.260604858398, 40.521011352539}, + {131.09092712402, 31.719589233398}, + {100.87715148926, 13.791275024414}, + {112.043501, -6.899912}, + {-79.876151, 34.148307}, + {-68.873977661133, 12.121353149414}, + {-122.79624938965, 49.27848815918}, + {22.302932, 39.542542}, + {-80.1678, 26.628914}, + {-83.347091674805, 42.22526550293}, + {72.901840209961, 19.052352905273}, + {106.162499, -6.111034}, + {49.60807800293, 27.031173706055}, + {110.35011291504, 1.4934539794922}, + {105.26344299316, -5.4293060302734}, + {4.5229339599609, 44.209671020508}, + {107.07206726074, -6.2368011474609}, + {-45.326488, -23.582198}, + {80.064068, 13.119564}, + {113.0184173584, 28.173751831055}, + {-75.662155151367, 5.4512786865234}, + {130.84648132324, 33.86604309082}, + {36.419678, 49.921875}, + {80.629348754883, 16.504898071289}, + {37.638748, 55.816727}, + {-73.624009, 45.449084}, + {-0.039037, 51.512124}, + {-82.43522644043, 8.7746429443359}, + {13.016884, 55.583703}, + {55.235138, 25.0811}, + {51.107711791992, 35.578536987305}, + {-79.770126, 43.578415}, + {115.99983215332, 22.962112426758}, + {96.029434204102, 16.875686645508}, + {90.582962036133, 23.743515014648}, + {51.368637, 35.720673}, + {-74.808243, 4.292908}, + {19.998035, 50.095768}, + {106.6641998291, -6.2848663330078}, + {98.667526, 3.611755}, + {-89.32502746582, 43.171463012695}, + {30.015335083008, 59.62760925293}, + {36.394271850586, 49.932174682617}, + {2.469864, 48.898499}, + {31.525955200195, -18.183059692383}, + {-111.64375305176, 57.282028198242}, + {13.751449584961, 51.069259643555}, + {12.41624, 41.901785}, + {-51.14616394043, -29.703598022461}, + {105.58753967285, 30.642929077148}, + {-3.771744, 40.23674}, + {-98.439131, 26.259028}, + {-42.14171, -19.791199}, + {19.928512573242, 50.068130493164}, + {-3.5231781005859, 50.70671081543}, + {140.296524, 35.473495}, + {12.577908, 41.713616}, + {101.160736, 12.679596}, + {130.84098815918, 32.202987670898}, + {77.770157, 12.870255}, + {-100.292587, 25.652847}, + {48.682479858398, 31.292495727539}, + {120.301766, 22.707492}, + {-79.628219604492, 43.590316772461}, + {35.982284545898, 31.977767944336}, + {51.37207, 35.763588}, + {-84.503402709961, 39.143600463867}, + {19.71785, 47.419052}, + {172.64122009277, -43.432388305664}, + {32.327675, 41.631112}, + {135.502396, 34.650192}, + {87.324142456055, 23.496322631836}, + {105.83335876465, 21.01203918457}, + {8.467847, 47.203978}, + {-76.925582885742, -12.041702270508}, + {135.76148986816, 35.029220581055}, + {-69.921798706055, 18.459091186523}, + {-77.02033996582, -12.098007202148}, + {100.615591, 13.774694}, + {107.44285583496, -7.1143341064453}, + {-84.277398, 39.117312}, + {38.271560668945, 37.763442993164}, + {36.196328, 36.230332}, + {5.5693817138672, 43.268966674805}, + {90.328903198242, 23.85612487793}, + {34.988021850586, 48.466873168945}, + {139.922033, 35.813792}, + {-93.222427368164, 44.816665649414}, + {105.82649230957, 21.042251586914}, + {35.835342407227, 31.961288452148}, + {8.347421, 49.034239}, + {5.8975982666016, 51.135177612305}, + {51.203128, 35.436269}, + {-85.561867, 38.328896}, + {76.793304, 30.739187}, + {2.0949554443359, 41.349105834961}, + {8.76091, 48.6763}, + {-105.533137, 35.422059}, + {11.565170288086, 48.122177124023}, + {-0.18196105957031, 51.489486694336}, + {7.582629, 50.368424}, + {12.005996704102, 57.705001831055}, + {30.357284545898, 59.865188598633}, + {37.416000366211, 55.72883605957}, + {11.525344848633, 3.8733673095703}, + {-2.0812225341797, 53.27751159668}, + {9.674612, 45.119252}, + {2.281048, 48.850328}, + {7.837256, 48.026253}, + {2.988625, 43.163328}, + {-79.529733, 36.069136}, + {-61.513596, 16.254959}, + {113.87672424316, 22.657241821289}, + {-51.167035, -23.306842}, + {-88.039548, 30.898311}, + {-6.240354, 53.339872}, + {-73.815078735352, 40.776443481445}, + {103.630858, 1.546953}, + {77.553176879883, 13.03596496582}, + {51.115128, 35.744019}, + {-84.072523, 9.928797}, + {1.204474, 47.93796}, + {6.1516571044922, 49.196090698242}, + {123.4513092041, 41.733627319336}, + {121.46690368652, -33.697128295898}, + {24.045138, 60.304269}, + {32.494125366211, 25.597457885742}, + {103.85581970215, 1.3121795654297}, + {121.597137, 24.027557}, + {101.74507141113, 3.2100677490234}, + {112.09007263184, 22.622909545898}, + {135.969887, 35.030251}, + {38.638229370117, 44.846878051758}, + {30.778884887695, 46.766738891602}, + {139.756393, 35.65361}, + {77.715569, 12.926617}, + {67.085952758789, 24.93278503418}, + {51.489144, 35.543175}, + {14.887894, 56.321549}, + {104.0453338623, 30.618209838867}, + {10.209045, 56.157303}, + {-60.515522, -31.69848}, + {71.422805786133, 33.996505737305}, + {52.673263549805, 29.376754760742}, + {6.944535, 51.105622}, + {57.53059387207, -20.056228637695}, + {-98.095479, 26.187415}, + {18.5824, -33.969513}, + {34.418281, 61.758928}, + {77.121963500977, 28.640670776367}, + {77.683639526367, 27.568130493164}, + {130.5704498291, 32.432327270508}, + {-71.2427, -34.678548}, + {-93.302268, 44.85083}, + {30.371017456055, 59.928359985352}, + {-123.135223, 49.287643}, + {72.507705688477, 23.029403686523}, + {2.1004486083984, 48.893966674805}, + {-73.463516235352, -42.189559936523}, + {-112.075775, 33.567639}, + {-3.4778594970703, 5.3194427490234}, + {30.98762512207, 50.364761352539}, + {-76.480546, 37.076782}, + {11.620101928711, 48.122177124023}, + {-97.819243, 33.519123}, + {-79.40191, 43.799637}, + {-54.91156, -4.100228}, + {39.273933, 24.253909}, + {73.867263793945, 18.621139526367}, + {-78.944320678711, 36.256942749023}, + {99.807357788086, 18.96858215332}, + {-93.733978, 38.776795}, + {74.106903, 18.676071}, + {78.463669, 17.367783}, + {123.094378, 8.516589}, + {73.861771, 18.481064}, + {11.381149291992, 44.51042175293}, + {78.226089477539, 13.393020629883}, + {120.97836, 14.38862}, + {136.906767, 35.346451}, + {75.900715, 30.886983}, + {139.497299, 36.029892}, + {80.232467651367, 13.027725219727}, + {-97.671491, 30.498988}, + {35.836715698242, 56.892013549805}, + {123.84544372559, 10.241317749023}, + {127.02323913574, 37.459945678711}, + {37.481918334961, -0.97023010253906}, + {139.803772, 35.858002}, + {55.130081176758, 25.075607299805}, + {-73.773194, 41.706162}, + {9.139228, 48.75431}, + {77.610168, 13.042831}, + {-73.973007202148, 40.596542358398}, + {7.346878, 51.494064}, + {75.388184, 31.434631}, + {116.297836, 40.052719}, + {-116.99409484863, 32.505111694336}, + {-47.837907, -19.901734}, + {30.737686, 30.832443}, + {129.8494720459, 32.830581665039}, + {-112.118912, 33.57161}, + {72.885360717773, 19.103164672852}, + {2.4781036376953, 48.998336791992}, + {80.130844116211, 12.569046020508}, + {12.705001831055, 59.04670715332}, + {49.60762, 58.629684}, + {10.168075, 52.202683}, + {73.916702270508, 18.505783081055}, + {7.6018524169922, 51.473007202148}, + {37.579422, 55.89798}, + {39.131240844727, 51.654281616211}, + {59.365310668945, 36.494522094727}, + {18.460464477539, -34.213485717773}, + {106.995144, -6.237283}, + {-111.497105, 40.646373}, + {153.429016, -28.003865}, + {1.6747283935547, 50.061264038086}, + {113.8355255127, -8.0577850341797}, + {37.606887817383, 55.631332397461}, + {-110.956619, 32.329588}, + {-99.26628112793, 19.818649291992}, + {108.31077575684, 22.756118774414}, + {-70.575485229492, -33.469161987305}, + {106.68617248535, 10.753555297852}, + {29.979629516602, 31.247177124023}, + {-95.497970581055, 29.843673706055}, + {-118.967285, 37.649231}, + {34.559555053711, 31.505355834961}, + {104.01374816895, 30.673141479492}, + {38.767318725586, 9.1042327880859}, + {60.535629, 56.83104}, + {-122.303925, 47.834473}, + {4.925601, 45.724154}, + {75.379257202148, 30.000228881836}, + {34.809182, 32.071823}, + {7.511215, 6.434555}, + {113.55674743652, 52.009963989258}, + {104.90776062012, 11.599502563477}, + {136.879349, 35.217819}, + {-81.358505, 28.636449}, + {38.499526977539, 7.0484161376953}, + {139.7193145752, 35.240707397461}, + {8.9463043212891, 50.140914916992}, + {-71.594009, -33.038864}, + {-74.067264, 40.77807}, + {9.0287017822266, 48.207321166992}, + {78.164291381836, 30.443801879883}, + {139.400162, 36.298141}, + {6.032993, 50.773301}, + {78.649979, 17.443771}, + {22.199935913086, 60.476303100586}, + {100.678327, 13.588615}, + {139.57237243652, 35.544204711914}, + {13.228088, 46.065262}, + {15.214564, 51.701632}, + {-71.123428344727, 42.35710144043}, + {36.265182495117, 49.967880249023}, + {73.198471069336, 49.836044311523}, + {-1.247635, 44.623718}, + {29.836807250977, 60.179672241211}, + {-0.046522, 51.552721}, + {46.650009155273, 24.795455932617}, + {13.08952331543, 55.515975952148}, + {7.5620269775391, 44.184951782227}, + {11.47590637207, 45.716171264648}, + {75.787124633789, 26.919937133789}, + {-7.108154, 53.135376}, + {-81.955948, 26.642532}, + {4.8387908935547, 46.717300415039}, + {-14.602890014648, 10.664291381836}, + {73.701439, 19.899674}, + {76.664657592773, 30.743179321289}, + {-117.470627, 33.919707}, + {124.833527, 6.508713}, + {-98.737918, 29.421432}, + {13.075790405273, 51.16813659668}, + {4.786968, 44.72427}, + {128.95820617676, 36.439590454102}, + {-105.76498, 31.228331}, + {77.244186401367, 28.565139770508}, + {127.039194, 37.470865}, + {3.0370330810547, 35.08415222168}, + {-99.083681, 28.944879}, + {94.897842407227, 27.480239868164}, + {-82.343215942383, 41.332626342773}, + {78.59001159668, 17.426376342773}, + {77.429580688477, 28.653030395508}, + {-77.99674987793, -5.8481597900391}, + {151.25221252441, -33.890762329102}, + {19.081467, 47.47316}, + {-35.667204, -9.597925}, + {114.93690490723, 4.9005889892578}, + {6.2546539306641, 10.187759399414}, + {134.54063415527, 35.270919799805}, + {101.60774230957, 3.0837249755859}, + {81.85432434082, 25.501327514648}, + {51.361770629883, 35.792770385742}, + {31.170272827148, 27.183609008789}, + {140.58723449707, 42.980575561523}, + {77.904739379883, 27.156143188477}, + {78.025588989258, 27.19596862793}, + {76.090621948242, 31.711349487305}, + {121.05903625488, 14.358444213867}, + {30.266647338867, 46.221542358398}, + {10.112228393555, 45.220413208008}, + {134.056203, -0.844808}, + {9.42009, 45.500957}, + {8.2445526123047, 49.965133666992}, + {72.905960083008, 19.086685180664}, + {100.307479, 6.512538}, + {6.0065, 52.278854}, + {-57.934341430664, -35.754318237305}, + {80.91911315918, 16.819381713867}, + {15.708389282227, 47.107315063477}, + {33.22883605957, 34.73258972168}, + {-58.685535, -34.803454}, + {13.517990112305, 51.066513061523}, + {2.8337860107422, 50.140914916992}, + {14.490280151367, 35.880661010742}, + {66.989822387695, 24.872360229492}, + {8.171082, 45.55481}, + {27.363828, 44.566334}, + {-81.101760864258, 36.137466430664}, + {18.327138, 59.482374}, + {4.9129486083984, 52.325820922852}, + {-49.885216, -6.086754}, + {9.8210906982422, 48.76350402832}, + {12.114486694336, 47.754135131836}, + {76.236190795898, 10.746688842773}, + {51.35627746582, 35.717239379883}, + {80.490303, 16.342163}, + {-70.548706, -33.511734}, + {-50.227432250977, -17.261581420898}, + {120.61958312988, 31.39274597168}, + {77.755394, 13.049698}, + {-8.223953, 43.487091}, + {125.28327941895, 43.82926940918}, + {111.5421295166, -7.2255706787109}, + {35.181705, 31.785466}, + {35.970099, 32.504849}, + {78.675155639648, 17.43049621582}, + {23.401572, 41.859285}, + {19.506424, 49.922061}, + {18.634872436523, 49.763259887695}, + {17.657088, 59.875488}, + {39.868698120117, 57.621231079102}, + {44.983749, 53.189163}, + {54.58405, 24.41778}, + {101.682288, 2.872591}, + {29.365079, 37.089158}, + {30.703353881836, 48.871994018555}, + {39.043350219727, 45.092697143555}, + {21.433639526367, 60.794906616211}, + {16.288467, 48.17601}, + {72.87712097168, 19.020767211914}, + {135.71891784668, 34.941329956055}, + {-0.20668029785156, 5.5432891845703}, + {76.639252, 12.331467}, + {8.1552886962891, 52.237930297852}, + {99.525833129883, 14.04670715332}, + {-1.43074, 52.916336}, + {98.337936401367, 7.9808807373047}, + {121.52046203613, 25.056381225586}, + {76.186752319336, 10.338821411133}, + {-98.467179, 29.532809}, + {79.011611938477, 21.116409301758}, + {139.74403381348, 35.876541137695}, + {102.6212310791, 17.963333129883}, + {77.549057006836, 13.02360534668}, + {-6.6268157958984, 39.099655151367}, + {106.68754577637, 10.818099975586}, + {111.29219055176, 30.71159362793}, + {2.1924591064453, 41.417770385742}, + {19.211654663086, 50.217819213867}, + {-79.933090209961, -2.1979522705078}, + {9.5629119873047, 8.8694000244141}, + {101.752693, 3.03915}, + {88.38020324707, 22.64762878418}, + {16.286544799805, 48.304824829102}, + {43.966598510742, 56.247940063477}, + {-2.5289154052734, 5.0859832763672}, + {-112.306211, 33.450756}, + {15.532466, 47.158726}, + {-2.327728, 54.093247}, + {8.22169, 49.685913}, + {-84.638901, 34.028091}, + {8.499298, 51.294479}, + {-105.852081, 37.464791}, + {135.70381164551, 35.014114379883}, + {58.33122253418, 37.954330444336}, + {-86.290054, 39.740524}, + {78.271408081055, 27.219314575195}, + {35.188522338867, 31.785507202148}, + {9.724345, 48.041626}, + {8.632215, 48.324006}, + {109.44374084473, -7.5318145751953}, + {106.730118, 10.800934}, + {105.88829040527, -1.9809722900391}, + {74.590302, 19.112778}, + {-8.5741424560547, 42.855606079102}, + {6.080694, 52.516018}, + {4.4638824462891, 52.064895629883}, + {14.209213, 42.462387}, + {76.968154907227, 29.397354125977}, + {57.630157, -20.265656}, + {-2.4822235107422, 53.835067749023}, + {72.910079956055, 19.086685180664}, + {28.236923217773, -26.052017211914}, + {16.581802368164, 46.404190063477}, + {-35.698558, -9.636873}, + {17.658338, 47.692337}, + {110.405133, -6.978985}, + {130.54023742676, 33.449935913086}, + {19.038619995117, 51.106338500977}, + {70.982633, 26.865005}, + {103.92860412598, 1.3135528564453}, + {76.970902, 52.277069}, + {114.87785339355, 40.81901550293}, + {73.791732788086, 18.663711547852}, + {108.398438, 22.81929}, + {37.593154907227, 47.145767211914}, + {-71.292343139648, -30.678634643555}, + {-2.150933, 52.350401}, + {106.76170349121, -6.5663909912109}, + {-85.46402, 32.631454}, + {34.845199584961, 32.275772094727}, + {136.74751281738, 35.401382446289}, + {51.408462524414, 25.476608276367}, + {39.835739135742, 21.433639526367}, + {9.540596, 45.510349}, + {11.67366027832, 52.00309753418}, + {35.700759887695, 32.11784362793}, + {6.4936065673828, 51.253280639648}, + {-2.231598, 51.738052}, + {106.63398742676, 10.746688842773}, + {10.547561645508, 54.163284301758}, + {-75.39436340332, 40.956344604492}, + {99.993305, 13.385474}, + {-95.278152, 38.935571}, + {9.2182159423828, 56.896133422852}, + {14.224548, 40.889053}, + {98.576808, 3.599464}, + {77.120590209961, 10.60661315918}, + {120.30097961426, 22.688827514648}, + {103.590532, 1.402291}, + {-47.946406, -15.794887}, + {20.020943, 49.30216}, + {-95.275131, 29.541816}, + {114.56336975098, 37.389907836914}, + {-77.175521850586, 38.89778137207}, + {-83.168563842773, 35.960311889648}, + {106.77885, -6.276951}, + {-46.614303588867, -23.602066040039}, + {-100.7933807373, 20.77995300293}, + {3.0713653564453, 45.640640258789}, + {4.8621368408203, 45.758743286133}, + {-3.7456512451172, 40.284805297852}, + {-52.987747192383, -29.747543334961}, + {115.748627, -32.495573}, + {135.76286315918, 34.731216430664}, + {51.113204956055, 35.725479125977}, + {44.877090454102, 41.685562133789}, + {88.355484008789, 22.566604614258}, + {-98.972571, 19.71678}, + {-111.782121, 32.870532}, + {-88.959609, 42.269991}, + {27.509078979492, 53.92707824707}, + {75.782318, 26.903458}, + {135.36186218262, 34.739456176758}, + {75.772018432617, 26.90071105957}, + {76.983261108398, 29.621200561523}, + {49.899215698242, 40.412521362305}, + {-1.0910797119141, 6.5842437744141}, + {15.252456665039, 59.659194946289}, + {76.532821655273, 9.4640350341797}, + {5.9154510498047, 43.127517700195}, + {104.39964294434, 31.137313842773}, + {-122.80448913574, 45.18196105957}, + {58.439712524414, 23.589706420898}, + {35.215988, 31.763992}, + {22.649002075195, 49.969253540039}, + {98.390121459961, 7.8751373291016}, + {106.847156, -6.198117}, + {51.393356323242, 35.687026977539}, + {-98.477167, 29.509832}, + {10.036697387695, 53.424453735352}, + {112.83027648926, 23.227157592773}, + {112.82752990723, 23.206558227539}, + {8.2486724853516, 49.965133666992}, + {18.027877807617, 59.347457885742}, + {-3.4009552001953, 47.765121459961}, + {-49.135665893555, -25.662002563477}, + {-79.468231, 44.040756}, + {-66.862106323242, 10.491256713867}, + {-48.468582, -1.418827}, + {98.974147, 18.841101}, + {129.340279, 35.552003}, + {37.291030883789, 55.624465942383}, + {-83.007888793945, 42.534255981445}, + {-92.195084, 38.542987}, + {105.54634094238, 20.99006652832}, + {-98.353825, 26.262641}, + {30.982086, 54.979269}, + {79.526596069336, 29.210586547852}, + {96.110458374023, 21.930770874023}, + {-122.107106, 47.671494}, + {88.442001342773, 22.345504760742}, + {18.850021, -34.088516}, + {100.53415, 13.729352}, + {73.099594116211, 19.19792175293}, + {-0.64338684082031, 47.360000610352}, + {4.870377, 52.3526}, + {-73.934555053711, 40.602035522461}, + {-0.56373596191406, 51.666641235352}, + {73.705902, 24.541397}, + {91.847763061523, 25.554885864258}, + {88.38020324707, 22.422409057617}, + {-73.60221862793, 41.17057800293}, + {90.378341674805, 23.76823425293}, + {128.499512, 35.519059}, + {103.798749, -3.710082}, + {112.773706, -7.383492}, + {-0.863238, 38.183545}, + {-0.25474548339844, 5.6751251220703}, + {76.940689086914, 29.831314086914}, + {-90.602188110352, 19.802169799805}, + {23.536798, 42.766811}, + {1.7887115478516, 44.375839233398}, + {103.6306, 1.427536}, + {127.07361, 37.530302}, + {-76.15104675293, 39.559707641602}, + {2.565575, 49.009589}, + {53.949738, 26.509323}, + {-1.114844, 51.998138}, + {74.301223754883, 31.554794311523}, + {87.535629272461, 21.750869750977}, + {106.69303894043, 26.560134887695}, + {29.103469848633, 41.034622192383}, + {77.815475463867, 29.060897827148}, + {0.09819, 51.432495}, + {-16.522750854492, 28.342666625977}, + {-1.926039, 39.056168}, + {107.458649, -6.58699}, + {0.21766662597656, 52.130813598633}, + {-0.29045104980469, 48.427047729492}, + {29.768208, 31.093369}, + {-77.010726928711, 38.889541625977}, + {-58.371047973633, -34.60075378418}, + {77.627678, 13.003349}, + {30.298233, 59.92836}, + {-0.99587, 53.690191}, + {131.93687438965, 43.112411499023}, + {1.2339019775391, 47.979354858398}, + {29.346542358398, 40.820388793945}, + {-80.29127, 26.146273}, + {-56.677780151367, -36.695022583008}, + {39.823379516602, 21.421279907227}, + {5.004272, 51.606216}, + {81.009750366211, 26.873245239258}, + {77.24556, 28.573559}, + {-2.259064, 53.488312}, + {114.180563, 22.306778}, + {135.53489685059, 34.691390991211}, + {106.660995, 10.781021}, + {-70.987594, 42.381821}, + {46.537399, 34.107285}, + {15.487752, 47.074359}, + {11.247253, 45.431213}, + {21.763573, 51.950226}, + {119.562149, 26.719437}, + {30.947113, -29.953537}, + {100.635052, 13.839178}, + {73.051528930664, 27.971878051758}, + {75.19660949707, 19.990310668945}, + {-100.35942077637, 25.660629272461}, + {20.881576538086, 52.088241577148}, + {28.03092956543, 62.761459350586}, + {131.47682189941, 33.28239440918}, + {39.655727, 47.22547}, + {34.825253, -15.442549}, + {139.2894744873, 36.372299194336}, + {29.132308959961, 41.020889282227}, + {121.38999938965, 31.199111938477}, + {90.422287, 23.766303}, + {36.818618774414, -1.2682342529297}, + {24.610061645508, 43.404922485352}, + {-1.833664, 52.476883}, + {43.978958129883, 55.873031616211}, + {-97.019446, 32.808642}, + {11.304244995117, 47.97248840332}, + {-99.215469360352, 19.365463256836}, + {80.100631713867, 13.12385559082}, + {-95.360641479492, 29.750289916992}, + {37.471619, 55.632019}, + {30.398483276367, 50.458145141602}, + {139.64378356934, 35.546951293945}, + {13.664932250977, 50.669631958008}, + {0.142135, 50.934677}, + {-73.915328979492, 40.828628540039}, + {-97.854537963867, 30.483627319336}, + {-82.428359985352, 8.5329437255859}, + {-3.1565093994141, 53.221206665039}, + {1.9850921630859, 48.561630249023}, + {12.440231, 51.346664}, + {10.304805, 44.803684}, + {-1.800385, 51.291733}, + {-81.741855, 26.274785}, + {44.495315551758, 48.75114440918}, + {21.13151550293, 44.815292358398}, + {34.788208, 32.089691}, + {121.059706, 14.593516}, + {106.679796, -6.166149}, + {112.906357, 27.868332}, + {-46.533077, -23.649014}, + {-99.287796, 19.550858}, + {121.14143371582, 24.897079467773}, + {51.383743286133, 35.715866088867}, + {85.198287963867, 24.938278198242}, + {88.34587097168, 22.841262817383}, + {9.153671, 48.783005}, + {57.92610168457, 36.695022583008}, + {138.88984680176, 36.565933227539}, + {9.6590423583984, 54.238815307617}, + {-71.64234, 42.169672}, + {37.904891967773, 59.09065246582}, + {5.672836, 51.869888}, + {130.79429626465, 32.781143188477}, + {-64.938812, -24.332657}, + {74.284744262695, 16.800155639648}, + {5.705338, 52.532501}, + {106.813785, -6.133415}, + {98.495864868164, 16.686172485352}, + {139.4652557373, 35.496139526367}, + {120.56739807129, 16.050338745117}, + {37.714691, 55.757675}, + {39.022064, 44.599686}, + {94.923099, 27.468716}, + {139.632111, 35.220795}, + {37.433853149414, 55.720596313477}, + {49.876234, 40.384105}, + {139.369812, 35.68531}, + {-104.03022766113, 18.916397094727}, + {-1.419355, 54.974812}, + {37.636757, 55.660172}, + {5.962143, 50.897598}, + {-41.762466430664, -2.9216766357422}, + {3.2402801513672, 6.4592742919922}, + {20.855484, 51.109281}, + {9.634476, 47.806778}, + {50.999221801758, 35.832595825195}, + {121.00273132324, 14.391403198242}, + {3.141489, 50.979352}, + {126.75819396973, 37.756576538086}, + {-73.577499389648, 40.710525512695}, + {2.377903, 48.656216}, + {-6.3411712646484, 38.944473266602}, + {121.46690368652, 24.978103637695}, + {-87.669721, 41.878289}, + {-90.541763305664, 41.50016784668}, + {14.760132, 50.158768}, + {55.297622680664, -20.944747924805}, + {11.081771850586, 48.072738647461}, + {-1.116795, 51.881418}, + {9.156761, 47.677231}, + {-96.679000854492, 35.671920776367}, + {18.059463500977, 59.329605102539}, + {-8.410637, 43.363123}, + {-3.700582, 40.599476}, + {50.563888549805, 26.160507202148}, + {115.18684387207, -8.8433074951172}, + {35.234116, 31.836044}, + {114.20906066895, 22.312545776367}, + {105.37742614746, 30.869522094727}, + {-82.148094, 28.662663}, + {37.591781616211, 55.793380737305}, + {34.812241, 31.307602}, + {127.76206970215, 26.311569213867}, + {77.384262084961, 28.521194458008}, + {77.452926635742, 28.706588745117}, + {4.082108, 47.505569}, + {16.477432250977, 38.351211547852}, + {41.415495, 41.392239}, + {36.839218139648, 41.221389770508}, + {-58.667678833008, -34.40299987793}, + {126.58103942871, 36.537094116211}, + {121.05628967285, 14.63996887207}, + {4.998325, 44.812901}, + {100.564299, 13.710104}, + {28.685895, 41.062708}, + {77.182388305664, 28.473129272461}, + {121.63719177246, 25.063247680664}, + {-1.297621, 12.439682}, + {130.587616, 33.459549}, + {73.735427856445, 30.947799682617}, + {135.75462341309, 34.979782104492}, + {79.363174438477, 28.291854858398}, + {9.237671, 45.50354}, + {29.232285, 40.975571}, + {5.4169464111328, 7.6361846923828}, + {121.129455, 22.777708}, + {-42.075346, -4.024878}, + {79.448318481445, 11.555557250977}, + {100.561937, 13.810841}, + {77.230453491211, 28.615951538086}, + {4.4405364990234, 52.229690551758}, + {51.467514038086, 25.326919555664}, + {105.99403381348, 31.550674438477}, + {-73.963394165039, 40.648727416992}, + {-1.0849, 51.016388}, + {30.655288696289, 46.301193237305}, + {-0.952031, 48.295729}, + {4.3801116943359, 50.842666625977}, + {52.483292, 29.623947}, + {-46.869681, -23.591649}, + {140.302963, 38.765259}, + {-8.544273, 42.870541}, + {-1.1666107177734, 51.636428833008}, + {-79.933090209961, 40.456466674805}, + {-99.001235961914, 19.623641967773}, + {-73.244912, 45.333859}, + {-103.44795227051, 20.752487182617}, + {139.60121154785, 35.796890258789}, + {106.56669616699, 29.650039672852}, + {112.743321, -7.242338}, + {77.025833129883, 13.003005981445}, + {2.4396514892578, 48.874740600586}, + {99.050674438477, 19.504165649414}, + {51.431679, 35.765585}, + {72.956771850586, 22.540512084961}, + {-103.39851379395, 20.61653137207}, + {-80.13737, 25.790224}, + {121.09474182129, 14.587783813477}, + {-86.792784, 36.192004}, + {6.6034698486328, 36.350326538086}, + {128.640816, 35.241897}, + {77.286758422852, 28.569259643555}, + {6.2752532958984, 51.01432800293}, + {9.727707, 4.033356}, + {31.298962, -29.332229}, + {136.08421325684, 34.926223754883}, + {72.831802368164, 18.93424987793}, + {120.97389221191, 14.593276977539}, + {-9.3308258056641, 38.794784545898}, + {75.772018432617, 23.18733215332}, + {112.57484436035, -7.3574066162109}, + {50.048904418945, 26.437911987305}, + {-46.826269, -23.00728}, + {16.631024, 51.487785}, + {5.210953, 7.649002}, + {8.177719, 49.695053}, + {9.4475555419922, 45.239639282227}, + {77.094328, 28.428427}, + {114.49333190918, 30.472640991211}, + {139.29634094238, 35.424728393555}, + {6.503221, 51.730957}, + {51.694107055664, 32.65754699707}, + {128.123434, 35.212476}, + {-99.179763793945, 23.709182739258}, + {78.246296, 29.131034}, + {51.265640258789, 35.698013305664}, + {-63.02375793457, -28.523941040039}, + {-94.160835, 30.334641}, + {-8.7609100341797, 39.708023071289}, + {17.705154418945, 50.09147644043}, + {-5.930545, 41.651244}, + {18.566207885742, 49.807205200195}, + {-88.166847, 14.306215}, + {-118.378582, 33.891439}, + {26.113129, 44.514542}, + {35.796890258789, 35.526351928711}, + {40.224380493164, 37.914505004883}, + {-79.876785, 8.77121}, + {-0.40992736816406, 48.87336730957}, + {3.4847259521484, 6.6117095947266}, + {55.414352416992, 25.307693481445}, + {-110.97358703613, 29.222946166992}, + {106.636162, -6.238055}, + {1.126688, 48.089873}, + {98.671646118164, 3.6179351806641}, + {-90.572508, 14.592735}, + {127.651343, 34.756035}, + {-107.73262023926, 49.242782592773}, + {-99.481201, 19.281693}, + {6.5952301025391, 43.374710083008}, + {73.825378, 15.498962}, + {138.360443, 34.931717}, + {35.481033325195, 29.654159545898}, + {106.785049, -6.558838}, + {16.605639, 49.073595}, + {-35.224227905273, -5.8467864990234}, + {120.268707, 23.323288}, + {31.300469, 29.902352}, + {18.149414, 53.068085}, + {77.708358764648, 12.985153198242}, + {121.070219, 14.589157}, + {135.687561, 34.950943}, + {4.8690032958984, 49.719314575195}, + {87.638626098633, 43.935012817383}, + {121.45042419434, 23.740768432617}, + {114.2488861084, 30.620956420898}, + {105.21812438965, 15.065689086914}, + {23.157263, 53.137762}, + {100.04768371582, 18.60466003418}, + {127.042933, 37.499496}, + {91.776351928711, 26.157760620117}, + {-7.82341, 37.041092}, + {116.858139, 35.496826}, + {79.133834838867, 10.781021118164}, + {29.172134399414, 37.873306274414}, + {17.201353, 49.564721}, + {-76.789627075195, 18.005905151367}, + {77.60711, 12.915864}, + {-80.129471, 25.977859}, + {2.277236, 48.82151}, + {-79.444198608398, 44.162979125977}, + {-2.1375274658203, 52.23518371582}, + {5.6270599365234, 50.633926391602}, + {10.561294555664, 52.290115356445}, + {55.982894897461, 24.858627319336}, + {37.562942504883, 55.691757202148}, + {135.52940368652, 34.681777954102}, + {23.302688598633, 55.91423034668}, + {-2.199327, 51.31691}, + {10.006484985352, 45.57746887207}, + {4.404831, 52.150497}, + {0.81504821777344, 41.140365600586}, + {100.58326721191, 13.833847045898}, + {-70.71695, -34.181717}, + {127.034166, 37.582037}, + {56.234462, 58.008005}, + {-81.231832, 43.010397}, + {114.06211853027, 33.300247192383}, + {36.531600952148, 55.219345092773}, + {96.143417358398, 16.776809692383}, + {-88.956986, 40.417328}, + {100.514145, 13.821487}, + {-82.260827, 32.167974}, + {-67.149249, 18.210425}, + {-77.422504, 37.444646}, + {-113.42353820801, 53.582382202148}, + {9.26971, 45.742955}, + {15.250371, 46.998834}, + {51.536178588867, 35.719985961914}, + {145.454865, -37.20932}, + {80.876541137695, 26.80046081543}, + {37.207391, 55.728932}, + {114.54139709473, 38.053207397461}, + {101.768888, 3.000848}, + {76.08512878418, 22.963485717773}, + {-9.4709014892578, 13.018112182617}, + {24.822922, 59.436722}, + {30.296859741211, 60.003890991211}, + {-89.239197, 13.685532}, + {117.386856, 38.2901}, + {-81.528854, 40.980377}, + {37.40364074707, 55.743942260742}, + {-7.6197052001953, 33.584518432617}, + {73.692855834961, 24.608688354492}, + {46.740646362305, 24.722671508789}, + {112.74238586426, -7.2420501708984}, + {105.27168273926, 21.17546081543}, + {140.895731, 38.165817}, + {-92.95051574707, 18.062210083008}, + {105.78804016113, 30.476760864258}, + {8.185072, 52.757978}, + {-1.534145, 53.795364}, + {102.221895, 5.0091}, + {118.1778717041, 36.98616027832}, + {2.4410247802734, 48.81706237793}, + {74.612961, 42.850113}, + {17.867727, 59.375586}, + {0.97023010253906, 46.652755737305}, + {-98.982811, 19.434322}, + {-8.576889, 52.666855}, + {2.4684906005859, 48.812942504883}, + {29.191360473633, 40.989303588867}, + {34.175034, 0.668605}, + {135.2286529541, 34.902877807617}, + {9.480696, 0.376756}, + {-81.183267, 42.969796}, + {1.0608673095703, 41.066207885742}, + {16.728549, 41.045805}, + {-115.094833, 36.285782}, + {-0.206108, 51.889114}, + {-35.214473, -9.028287}, + {-8.528968, 42.879024}, + {9.920504, 52.258704}, + {-72.727432250977, -40.253219604492}, + {127.108413, 37.56357}, + {-64.348983764648, -33.322219848633}, + {77.418594360352, 28.659896850586}, + {82.568435668945, 25.134658813477}, + {30.373764038086, 60.031356811523}, + {-106.604489, 35.141456}, + {4.8401641845703, 43.958358764648}, + {79.795761108398, 11.956558227539}, + {75.773391723633, 30.59211730957}, + {8.4958648681641, 47.425918579102}, + {9.7084808349609, 4.0134429931641}, + {75.055848, 14.144211}, + {30.695113, 46.54976}, + {8.553066, 49.430512}, + {30.328617, 60.033846}, + {-1.5044403076172, 37.766189575195}, + {10.415725708008, 45.302810668945}, + {113.1502532959, 23.58283996582}, + {139.849548, 35.814313}, + {139.29908752441, 35.408248901367}, + {25.711441040039, 43.111038208008}, + {-7.6306915283203, 33.572158813477}, + {52.513961791992, 29.615707397461}, + {7.4040985107422, 9.1042327880859}, + {96.131057739258, 4.1480255126953}, + {127.10289001465, 37.267684936523}, + {77.185134887695, 28.495101928711}, + {13.600387573242, 43.16047668457}, + {108.43437194824, 22.811050415039}, + {-103.45069885254, 25.541152954102}, + {35.16449, 47.826233}, + {14.318618774414, 40.900039672852}, + {101.95655822754, 2.7225494384766}, + {-79.913864, 8.542949}, + {103.27903747559, 4.1686248779297}, + {100.27839660645, 16.750717163086}, + {76.352920532227, 12.324600219727}, + {-0.26985168457031, 43.440628051758}, + {90.426407, 23.825455}, + {-122.293901, 37.552698}, + {26.551801, 43.527648}, + {100.2564239502, 15.39665222168}, + {82.89665222168, 55.083389282227}, + {44.790573120117, 41.722640991211}, + {-78.944717, 38.256496}, + {37.774429321289, 55.704116821289}, + {4.862135, 52.340277}, + {106.772346, -6.293449}, + {174.72724914551, -36.894149780273}, + {-77.42177, 37.386429}, + {-69.853134155273, 18.512649536133}, + {-76.111221, 38.539352}, + {-87.990089, 15.384306}, + {-73.9555, 40.768461}, + {-1.7241668701172, 54.37614440918}, + {-78.532333, -0.266647}, + {-76.511879, 37.248688}, + {-79.423599243164, 44.06135559082}, + {2.371443, 48.921644}, + {131.93138122559, 43.101425170898}, + {-2.973198, 53.168152}, + {-2.4973297119141, 51.037673950195}, + {76.920364, 43.242874}, + {121.30485534668, 31.270523071289}, + {-84.470443725586, 33.881149291992}, + {52.174758911133, 54.962539672852}, + {90.367355, 22.697182}, + {-89.233016967773, 13.703384399414}, + {104.31999206543, 15.646591186523}, + {-121.38176, 38.049774}, + {16.586248, 51.851199}, + {73.152123, 19.231911}, + {131.8531036377, 34.015731811523}, + {96.143417358398, 16.930618286133}, + {32.702612, 39.914162}, + {21.415786743164, 44.382705688477}, + {30.481568, 59.937973}, + {139.764188, 35.679329}, + {9.1811370849609, 51.327438354492}, + {106.809082, -6.172943}, + {130.499039, 33.758469}, + {37.746963500977, 55.642318725586}, + {6.8328094482422, 6.1475372314453}, + {-80.098718, 40.417423}, + {25.986923, 53.108597}, + {6.5059661865234, 43.450241088867}, + {-2.7651214599609, 54.105606079102}, + {9.493517, 0.376096}, + {-76.33643, 38.98234}, + {37.494277954102, 55.823593139648}, + {121.07963562012, 14.597396850586}, + {-73.58397, 45.389945}, + {103.976425, 1.326642}, + {35.159172, 47.828474}, + {6.7531585693359, 48.002700805664}, + {126.54808044434, 45.858993530273}, + {120.68687438965, 23.95637512207}, + {80.103378295898, 13.059310913086}, + {92.973861694336, 56.013107299805}, + {18.084183, 59.308861}, + {10.843028, 59.88212}, + {13.759003, 47.612686}, + {55.374526977539, 25.321426391602}, + {6.1544036865234, 35.540084838867}, + {73.307877, 16.978683}, + {7.9822540283203, 48.10432434082}, + {-68.135147094727, -16.511764526367}, + {-0.112217, 51.452114}, + {-76.640968, 20.365219}, + {11.394196, 48.743591}, + {4.6561431884766, 50.889358520508}, + {140.88111877441, 38.26057434082}, + {7.6073455810547, 51.890487670898}, + {16.057329, 48.681239}, + {-44.611133, -19.851585}, + {143.90505, -37.168485}, + {-104.899163, 39.67217}, + {9.1509246826172, 45.457992553711}, + {-71.047897338867, 41.795425415039}, + {-84.06120300293, 9.9117279052734}, + {73.853531, 18.500977}, + {105.84846496582, 10.26741027832}, + {89.198684692383, 23.059616088867}, + {127.41865, 34.931533}, + {-0.383406, 39.427958}, + {135.82740783691, 34.97428894043}, + {5.7781219482422, 6.8904876708984}, + {72.742538452148, 19.993057250977}, + {-73.666451, 45.401784}, + {2.9422760009766, 50.651779174805}, + {54.107664, 35.700417}, + {130.40840148926, 33.591384887695}, + {-46.998265, -23.479936}, + {3.1990814208984, 50.695724487305}, + {5.3194427490234, 51.721572875977}, + {81.246643, 6.289673}, + {79.915237426758, 7.2571563720703}, + {126.6854095459, 37.464065551758}, + {27.461013793945, 38.620376586914}, + {10.014724731445, 50.000839233398}, + {79.084371, 21.154471}, + {51.665267944336, 32.649307250977}, + {-0.573349, 46.866302}, + {131.10328674316, 32.836074829102}, + {106.19041442871, 20.436630249023}, + {101.701126, 3.03772}, + {16.110763549805, 47.891464233398}, + {-0.85624694824219, 51.346664428711}, + {139.757767, 35.703506}, + {44.034576, 36.196518}, + {85.129622, 27.874375}, + {-80.103722, 37.292542}, + {129.089946, 35.118244}, + {-83.244815, 42.28336}, + {88.29231262207, 21.844253540039}, + {-77.064743, 37.431793}, + {11.268539428711, 49.143905639648}, + {75.905227661133, 22.705307006836}, + {76.525955200195, 9.6288299560547}, + {78.04069519043, 14.920120239258}, + {113.77235412598, 30.545425415039}, + {-73.775752, 40.72395}, + {13.02360534668, 45.78483581543}, + {31.934813, 40.755927}, + {32.619782, 46.516113}, + {34.836959838867, 38.640975952148}, + {8.7444305419922, 44.455490112305}, + {11.006240844727, 45.54313659668}, + {17.928519, 59.518587}, + {98.891908, 8.09545}, + {27.465133666992, 53.874893188477}, + {46.295700073242, 38.087539672852}, + {26.801798, 66.699051}, + {-0.30006408691406, 51.45378112793}, + {-83.965072631836, 39.333114624023}, + {-77.023251, 38.906073}, + {27.941665649414, -25.784225463867}, + {-122.355222, 47.387093}, + {9.224839, 45.607609}, + {-77.026436, -11.890065}, + {-116.84166, 32.680893}, + {3.5739898681641, 6.4743804931641}, + {-75.616836547852, 45.354995727539}, + {-1.477018, 53.314933}, + {139.65339660645, 35.562057495117}, + {-102.36030578613, 21.940383911133}, + {-99.145431518555, 19.397048950195}, + {-77.66716, 37.598373}, + {-58.584218, -34.683134}, + {-84.145239, 41.390356}, + {-79.54719543457, 8.9806365966797}, + {96.155776977539, 16.775436401367}, + {55.336349, 25.154984}, + {73.088607788086, 19.214401245117}, + {120.24192810059, 23.12141418457}, + {35.638328, 49.845781}, + {39.03923034668, 45.052871704102}, + {77.991256713867, 27.158889770508}, + {91.148633, 23.445761}, + {174.467701, -36.242524}, + {15.27717590332, 49.99397277832}, + {79.536209106445, 12.645950317383}, + {12.976913452148, 55.573654174805}, + {79.932034, 23.153422}, + {101.437156, 1.670609}, + {39.725287, 47.250137}, + {101.72584533691, 3.1262969970703}, + {77.099990844727, 28.593978881836}, + {78.348999, 17.445602}, + {114.206657, 30.55212}, + {121.06636, 14.613876}, + {42.223892211914, 18.092422485352}, + {139.881363, 35.897141}, + {145.4940032959, -37.981796264648}, + {5.9703826904297, 43.134384155273}, + {0.409241, 6.578064}, + {37.597961, 55.766945}, + {-76.603644, -12.758342}, + {55.20149230957, 25.118179321289}, + {26.03141784668, 44.425277709961}, + {28.323236, 37.918672}, + {51.350784301758, 25.190963745117}, + {79.808120727539, 11.941452026367}, + {72.955399, 19.281006}, + {51.081147, 35.556573}, + {16.38542175293, 47.932662963867}, + {-9.5148468017578, 30.355911254883}, + {27.436294555664, 53.859786987305}, + {1.9809722900391, 41.457595825195}, + {-6.343002, 54.908295}, + {-70.538326, -33.432167}, + {109.07020568848, 13.891525268555}, + {30.485000610352, 50.454025268555}, + {5.557852, 43.249711}, + {77.354202, 28.534775}, + {-2.5893402099609, 52.689743041992}, + {-81.130135, 32.084321}, + {37.549209594727, 55.675277709961}, + {102.576133, 17.443066}, + {6.392401, 52.542879}, + {-1.9521331787109, 52.438430786133}, + {-71.565407, -33.021095}, + {111.886826, -7.16423}, + {145.426065, -37.771772}, + {30.464058, 31.044273}, + {106.85371398926, -6.2120819091797}, + {79.911117553711, 6.8286895751953}, + {-73.16276550293, -36.994400024414}, + {100.699454, 13.921334}, + {3.66972, 49.150711}, + {102.201202, 6.13763}, + {127.06031799316, 37.264938354492}, + {126.916929, 37.481137}, + {39.581378, 24.477989}, + {16.136856079102, 47.92854309082}, + {-90.512924194336, 14.600143432617}, + {-80.320439, 25.77459}, + {-78.868789672852, 36.011123657227}, + {130.6583404541, 33.36067199707}, + {-51.047286987305, -26.84440612793}, + {72.842788696289, 19.214401245117}, + {77.510604858398, 13.691024780273}, + {-0.414963, 51.851578}, + {-117.81394958496, 33.693008422852}, + {-111.824478, 39.893954}, + {117.161694, -0.474576}, + {-0.15586853027344, 51.630935668945}, + {120.07850646973, 31.51496887207}, + {18.337154, 50.926457}, + {120.32020568848, 22.997817993164}, + {-86.131439, 39.892731}, + {33.522892, 49.956894}, + {126.674652, 37.638931}, + {9.979839, 53.460933}, + {11.70524597168, 58.095016479492}, + {106.6641998291, 10.805740356445}, + {8.856453, 53.034421}, + {7.849869, 47.985123}, + {-122.40760803223, 37.773056030273}, + {131.9506072998, 43.209915161133}, + {-110.969476, 32.364567}, + {0.17921447753906, 52.264022827148}, + {106.89881, -6.197849}, + {77.218094, 28.635178}, + {77.518844604492, 12.972793579102}, + {-122.314682, 37.571182}, + {120.928819, 24.524989}, + {3.5025787353516, 36.730728149414}, + {-43.308792114258, -23.014297485352}, + {53.31459, 56.899567}, + {78.356552124023, 13.15544128418}, + {114.74327087402, 33.669662475586}, + {106.79878234863, -6.1667633056641}, + {-8.504105, 42.896118}, + {-71.649805, -33.047061}, + {-100.29350280762, 25.649642944336}, + {72.84553527832, 19.099044799805}, + {102.9027557373, 29.829940795898}, + {28.185284, 61.06267}, + {78.72617, 13.210329}, + {-92.923049926758, 30.355911254883}, + {6.404342, 49.680863}, + {141.238861, 38.886795}, + {17.93563, 40.655359}, + {75.009841918945, 18.102035522461}, + {114.18434143066, 22.324905395508}, + {76.686630249023, 30.637435913086}, + {48.068619, 29.330651}, + {47.927169799805, 56.636581420898}, + {80.575790405273, 6.9069671630859}, + {121.55891418457, 25.031661987305}, + {79.434585571289, 17.742233276367}, + {139.650993, 35.595016}, + {135.51704406738, 34.621353149414}, + {120.53031921387, 31.878890991211}, + {106.69990539551, 10.775527954102}, + {7.345732, 51.749039}, + {139.693222, 35.757751}, + {104.19776916504, 1.5840911865234}, + {121.045492, 14.553948}, + {-89.307175, 39.556961}, + {-43.297806, -22.895998}, + {73.787612915039, 18.702163696289}, + {123.895124, 10.305114}, + {82.943344116211, 55.036697387695}, + {7.385915, 50.39904}, + {2.3586273193359, 48.944778442383}, + {-5.0406646728516, 34.010238647461}, + {-72.028427124023, -35.077285766602}, + {135.7299041748, 35.011367797852}, + {120.16090393066, 23.383712768555}, + {11.589975, 45.533268}, + {-76.160659790039, 43.076705932617}, + {-73.396224975586, 40.830001831055}, + {-74.808054, 39.546773}, + {-3.9900970458984, 5.2562713623047}, + {118.13529968262, 39.633865356445}, + {-69.243392944336, -51.622695922852}, + {101.247951, 12.678097}, + {30.596924, 50.474625}, + {-79.752797, 36.096268}, + {-66.046371459961, 18.438491821289}, + {11.302871704102, 51.401596069336}, + {73.933181762695, 17.360458374023}, + {9.927412, 53.564524}, + {11.026154, 49.371529}, + {1.3039398193359, 51.957778930664}, + {-95.235329, 30.167084}, + {28.2472, -26.379769}, + {101.73408508301, 2.9807281494141}, + {-158.010929, 21.392974}, + {2.518616, 48.861694}, + {-73.499222, 41.284561}, + {3.7978363037109, 50.867385864258}, + {31.213531, 46.675415}, + {139.69184875488, 35.54557800293}, + {102.299038, 5.758592}, + {126.98652, 37.285828}, + {30.43830871582, 46.169357299805}, + {26.181578, -29.091834}, + {0.272049, 46.962845}, + {-74.968643188477, 40.17219543457}, + {121.29386901855, 31.189498901367}, + {17.918773, 59.449585}, + {8.995193, 45.506058}, + {-72.644521, 2.570479}, + {7.1170806884766, 51.537551879883}, + {127.486237, 37.79639}, + {6.1475372314453, 6.2683868408203}, + {35.901052, 31.93376}, + {9.1275787353516, 55.945816040039}, + {7.687168, 11.136875}, + {37.777519, 55.749435}, + {18.609123, 54.338722}, + {108.21189880371, -7.3670196533203}, + {108.235299, -7.369749}, + {80.305252075195, 7.0113372802734}, + {44.054489135742, 9.5670318603516}, + {135.61866760254, 34.740829467773}, + {18.056716918945, 59.299392700195}, + {118.69972229004, 34.923477172852}, + {-1.2545013427734, 51.711959838867}, + {-69.334030151367, 10.076522827148}, + {13.82698059082, 58.414993286133}, + {79.943802, 27.281765}, + {37.584915161133, 55.910110473633}, + {-65.260022, -19.04963}, + {139.64378356934, 35.432968139648}, + {88.395309448242, 22.62565612793}, + {26.586, 41.674999}, + {0.588992, 47.401671}, + {-102.036702, 19.427835}, + {26.745529174805, -26.848526000977}, + {10.013179, 56.139794}, + {35.210494995117, 0.59120178222656}, + {12.003708, 45.8535}, + {-96.064682, 39.836197}, + {-82.817429, 34.675167}, + {20.884323120117, 42.891311645508}, + {115.8748626709, 28.723068237305}, + {-105.876699, 39.684889}, + {33.66828918457, 38.734359741211}, + {106.864905, -6.170627}, + {1.3492584228516, 52.516708374023}, + {-121.940689, 37.299728}, + {-46.769161, -23.486872}, + {10.183182, 36.812668}, + {7.0113372802734, 50.914077758789}, + {-43.744125366211, -19.86946105957}, + {92.47673034668, 24.772109985352}, + {118.11470031738, 39.639358520508}, + {107.64060974121, -6.9522857666016}, + {9.903946, 57.054977}, + {-118.246656, 33.99465}, + {-8.0152130126953, 43.19206237793}, + {121.98600769043, 12.389144897461}, + {7.4796295166016, 6.4373016357422}, + {76.94206237793, 27.73567199707}, + {6.6405487060547, 49.27848815918}, + {144.83894348145, -37.871932983398}, + {126.953153, 37.512724}, + {-2.9985809326172, 53.066024780273}, + {120.974579, 14.584007}, + {39.492416381836, 22.48420715332}, + {38.157577514648, -2.6840972900391}, + {-8.252154, 53.992691}, + {0.33813, 51.447638}, + {4.3526458740234, 51.22444152832}, + {12.487041, 41.917256}, + {139.307785, 36.419907}, + {101.67778015137, 3.0603790283203}, + {10.531278, 45.564521}, + {10.385513305664, 32.934951782227}, + {77.09587097168, 11.227340698242}, + {5.890045, 43.665161}, + {105.83885192871, 21.028518676758}, + {13.612747192383, 45.926284790039}, + {74.945297241211, 33.004989624023}, + {8.7567901611328, 36.39289855957}, + {140.206375, 36.042252}, + {44.514541625977, 48.513565063477}, + {35.450036, 32.013474}, + {101.517017, 14.5219}, + {-38.357672, -12.919564}, + {121.29936218262, 25.013809204102}, + {18.016891479492, 48.310317993164}, + {18.435492, -34.086889}, + {174.72724914551, -36.86393737793}, + {-83.333983, 42.514281}, + {11.430587768555, 48.146896362305}, + {77.641068, 13.02681}, + {37.744904, 55.696564}, + {37.292404174805, 55.66291809082}, + {1.818466, 49.513779}, + {77.248306274414, 28.65852355957}, + {77.761917114258, 23.615798950195}, + {38.198776245117, 55.566787719727}, + {2.180101, 41.573639}, + {2.2432708740234, 49.936294555664}, + {-7.3230743408203, 43.215408325195}, + {19.03450012207, 50.263137817383}, + {31.344680786133, 31.052169799805}, + {9.3761444091797, 47.733535766602}, + {-74.880752563477, -10.921096801758}, + {-98.002504, 30.391388}, + {1.4673614501953, 43.612289428711}, + {-58.582534790039, -34.505996704102}, + {-73.613204956055, 41.366958618164}, + {-122.28401184082, 47.42317199707}, + {106.97456359863, -6.2381744384766}, + {-17.445602, 14.711151}, + {-66.099243, 18.371201}, + {-7.8559112548828, 31.642684936523}, + {50.325211, 29.2202}, + {-78.201519, 39.140182}, + {85.324630737305, 23.365859985352}, + {77.106766, 28.57437}, + {27.705459594727, 50.105209350586}, + {-118.393478, 34.173965}, + {87.513656616211, 26.001205444336}, + {39.694290161133, 24.474105834961}, + {76.906357, 43.195724}, + {77.27165222168, 28.512954711914}, + {126.944535, 37.350418}, + {87.131516, 53.748459}, + {-85.240859985352, 42.298049926758}, + {8.80972, 53.076716}, + {12.140579223633, 49.11506652832}, + {113.28758239746, 23.071975708008}, + {31.416091918945, -1.0018157958984}, + {40.444107055664, 56.202621459961}, + {122.27165222168, 40.68717956543}, + {100.75492858887, 14.652328491211}, + {14.880294799805, 48.255386352539}, + {11.246566772461, 49.461135864258}, + {17.463455200195, 49.106826782227}, + {139.87793, 35.903321}, + {18.310775756836, 48.277359008789}, + {7.3944854736328, 10.462417602539}, + {-99.186031, 19.496278}, + {132.900007, 48.774491}, + {-43.082731, -22.881012}, + {73.19709777832, 22.359237670898}, + {112.58033752441, 23.000564575195}, + {73.07487487793, 32.065658569336}, + {10.498123168945, 34.52522277832}, + {104.38179016113, 31.10710144043}, + {51.723633, 32.66304}, + {114.11567687988, 22.947006225586}, + {80.209121704102, 12.997512817383}, + {5.876312, 50.811768}, + {7.0209503173828, 49.22492980957}, + {37.61100769043, 55.614852905273}, + {2.6209259033203, 48.854141235352}, + {-107.4112701416, 24.814682006836}, + {76.37077331543, 9.9268341064453}, + {-92.987201, 45.200104}, + {17.006424, 49.267502}, + {135.779343, 34.855728}, + {55.296249389648, 25.25276184082}, + {-84.298782348633, 34.083023071289}, + {36.957321166992, -1.1624908447266}, + {1.859207, 47.751846}, + {52.667770385742, 36.526107788086}, + {19.916152954102, 50.17936706543}, + {-61.515884, 10.651245}, + {19.11003112793, 47.417678833008}, + {16.886672973633, 51.13655090332}, + {25.640717, 45.616608}, + {-100.923057, 32.765045}, + {36.405258178711, 49.911575317383}, + {-1.519546, 51.467514}, + {-74.138489, 41.007385}, + {-48.00407409668, -15.951461791992}, + {-81.12922668457, 40.912399291992}, + {-8.7705230712891, 52.692489624023}, + {139.067001, 36.653366}, + {70.983357, 26.957018}, + {13.092269897461, 46.266860961914}, + {15.59440612793, 62.538986206055}, + {-58.432846069336, -34.567794799805}, + {110.40229797363, -7.7693939208984}, + {17.181931, 48.15834}, + {95.226058959961, 27.558517456055}, + {6.791727, 47.322781}, + {-112.211197, 33.721024}, + {121.518196, 25.069634}, + {26.645278930664, -26.917190551758}, + {-92.859879, 18.120575}, + {101.023811, 13.413431}, + {58.40332, 37.926865}, + {37.598648071289, 55.704116821289}, + {-0.169129, 5.62751}, + {2.345139, 48.938082}, + {31.39274597168, 29.965896606445}, + {55.569534301758, 24.203567504883}, + {85.826569, 23.35144}, + {130.55534362793, 31.589126586914}, + {76.635818481445, 12.309494018555}, + {100.619182, 13.966594}, + {100.4785, 13.840824}, + {0.51017761230469, 50.845413208008}, + {10.698517, 59.454812}, + {127.44209289551, 36.89826965332}, + {137.42866516113, 34.912490844727}, + {8.9751434326172, 60.728988647461}, + {9.792526, 4.058212}, + {75.837936401367, 26.836166381836}, + {44.440383911133, 33.340072631836}, + {117.40882873535, -8.4697723388672}, + {2.694565, 50.633545}, + {139.47212219238, 35.493392944336}, + {85.821762084961, 20.306167602539}, + {117.17948913574, -0.46211242675781}, + {-8.397434, 43.339923}, + {-74.062744, 4.857859}, + {71.72492980957, 30.215835571289}, + {91.779098510742, 26.155014038086}, + {30.472183, 50.481491}, + {113.09944152832, 36.207504272461}, + {77.558670043945, 12.927474975586}, + {101.662674, 3.143692}, + {-0.336621, 51.315971}, + {121.43669128418, 31.190872192383}, + {56.208114624023, 27.154769897461}, + {25.977216, 48.299878}, + {-83.16307, 30.621643}, + {35.503005981445, 30.402603149414}, + {86.441116333008, 23.794326782227}, + {5.048447, 45.046463}, + {-70.699228, 19.441035}, + {59.208755493164, 53.86116027832}, + {-78.499649, -7.166794}, + {-15.877304077148, 14.883041381836}, + {-47.270736694336, -22.820663452148}, + {37.672805786133, 55.737075805664}, + {26.161880493164, 44.432144165039}, + {8.9325714111328, 53.07975769043}, + {11.973037719727, 51.142044067383}, + {-76.360992, 39.526125}, + {8.8982391357422, 48.626174926758}, + {6.7147064208984, 46.743392944336}, + {-2.899336, 53.939467}, + {-69.974247, 18.450676}, + {-99.152007, 23.755286}, + {-98.93715, 19.867329}, + {2.441926, 48.898194}, + {-52.77214050293, -27.860641479492}, + {2.002122, 41.75203}, + {36.822738647461, -1.2957000732422}, + {31.843185424805, 30.572891235352}, + {75.353164672852, 19.850234985352}, + {16.67106628418, 52.942428588867}, + {8.731384, 47.360001}, + {-82.345974, 29.640503}, + {-73.908462524414, 40.736618041992}, + {106.82487487793, 28.133926391602}, + {28.047409057617, -25.931167602539}, + {24.426040649414, 47.23503112793}, + {80.656814575195, 7.8888702392578}, + {106.09153747559, 10.322341918945}, + {107.5431060791, -6.8685150146484}, + {80.211411, 12.950363}, + {77.29362487793, 28.620071411133}, + {-84.499283, 33.52272}, + {6.4290618896484, 53.125076293945}, + {103.96018981934, 1.3767242431641}, + {46.724166870117, 24.730911254883}, + {114.25849914551, 30.533065795898}, + {121.52046203613, 25.115432739258}, + {121.50123596191, 24.941024780273}, + {9.90612, 47.75259}, + {8.9092254638672, 53.537063598633}, + {126.925295, 37.600367}, + {4.2688751220703, 51.354904174805}, + {-0.876615, 52.178229}, + {-0.54025, 51.426256}, + {105.90339660645, 21.038131713867}, + {139.88822937012, 35.23796081543}, + {36.513748168945, 56.08039855957}, + {6.958067, 51.480101}, + {90.066604614258, 24.862747192383}, + {20.910415649414, 52.281875610352}, + {122.95280456543, 41.115646362305}, + {73.776626586914, 19.995803833008}, + {8.72648, 51.622233}, + {78.440322875977, 12.548446655273}, + {105.77980041504, 21.04362487793}, + {139.684525, 36.167679}, + {103.38066101074, 1.9054412841797}, + {51.662521362305, 32.727584838867}, + {27.62173, 62.887985}, + {77.229080200195, 28.555526733398}, + {17.043803, 51.190481}, + {126.56455993652, 45.776596069336}, + {-24.987735, 16.889655}, + {-95.169439, 29.567051}, + {-0.13801574707031, 51.429061889648}, + {11.077256, 49.337955}, + {13.218618, 48.244405}, + {-100.94306945801, 21.15348815918}, + {-4.5435333251953, 36.607131958008}, + {35.377425, 31.047457}, + {77.564163208008, 12.941207885742}, + {102.75169372559, 15.502395629883}, + {-110.27320861816, 23.488082885742}, + {8.039991, 48.016849}, + {107.773152, -6.911528}, + {26.421992, 40.148095}, + {3.141403, 50.664433}, + {135.48683166504, 34.79850769043}, + {-69.306564331055, 10.082015991211}, + {95.193099975586, 27.49397277832}, + {7.785806, 48.001573}, + {1.525167, 44.150717}, + {-48.466934, -22.924891}, + {128.094029, 35.147748}, + {135.778427, 34.518356}, + {74.402847290039, 16.360702514648}, + {72.956771850586, 21.268844604492}, + {18.57307434082, 54.378890991211}, + {1.8848419189453, 41.453475952148}, + {54.372024536133, 55.679397583008}, + {77.182388, 28.683929}, + {37.96669, 55.813522}, + {-83.476815, 42.492423}, + {83.30451965332, 17.710647583008}, + {102.831413, 15.197362}, + {-99.888381958008, 19.792556762695}, + {-79.782028198242, 43.373336791992}, + {58.318862915039, 23.589706420898}, + {17.993563, 59.305454}, + {18.444762, 43.859305}, + {-46.996078491211, -23.479843139648}, + {-49.100781, -5.346042}, + {51.350784301758, 35.784530639648}, + {2.4698638916016, 49.186477661133}, + {-3.045959, 53.34137}, + {2.492215, 49.253796}, + {100.59700012207, 13.821487426758}, + {9.359187, 48.857101}, + {14.444961547852, 35.895767211914}, + {39.018630981445, 45.035018920898}, + {11.213775, 48.681609}, + {24.360122680664, 55.734329223633}, + {-2.8845977783203, 56.473159790039}, + {39.724502563477, 43.584823608398}, + {-0.201286, 51.082444}, + {175.640487, -40.034866}, + {-78.473282, 38.066254}, + {11.905746459961, 50.305709838867}, + {4.858798, 43.960805}, + {77.172775, 28.504257}, + {-43.991317749023, -19.902420043945}, + {-6.181738, 53.405552}, + {-0.21629333496094, 51.769638061523}, + {-46.777409, -23.531076}, + {129.870071, 32.754707}, + {74.764022827148, 27.748031616211}, + {-117.197342, 33.149033}, + {32.323539, 41.618494}, + {8.611272, 53.174079}, + {137.50007629395, 35.421981811523}, + {32.528457641602, 37.89665222168}, + {111.54350280762, -7.5798797607422}, + {-122.482681, 37.768021}, + {-86.675478, 36.290673}, + {-77.683145, 36.444638}, + {-122.28675842285, 48.065872192383}, + {2.808722, 50.682681}, + {-77.039566040039, -12.084274291992}, + {-2.68163, 47.504282}, + {100.362854, 14.514999}, + {-73.439215, 45.506748}, + {4.817368, 44.419785}, + {-8.549423, 40.947418}, + {39.112014770508, 21.63688659668}, + {-94.658889770508, 44.363479614258}, + {77.620811, 12.948074}, + {76.606979370117, 8.8790130615234}, + {144.99266, -37.827083}, + {70.454361, 54.894974}, + {151.17393493652, -33.89762878418}, + {11.480026245117, 3.9008331298828}, + {50.089005, 26.377487}, + {77.711105, 12.988724}, + {149.110871, -35.159136}, + {131.9327545166, 43.154983520508}, + {31.228254, 30.023759}, + {-6.0555267333984, 42.483444213867}, + {-74.045791625977, 4.6808624267578}, + {21.279830932617, 45.924911499023}, + {54.512100219727, 24.261245727539}, + {-116.967086, 32.804032}, + {-99.078140258789, 19.502792358398}, + {120.96290588379, 14.668807983398}, + {13.081125, 55.636192}, + {16.417007446289, 48.291091918945}, + {77.700119018555, 12.97966003418}, + {7.6815032958984, 51.58561706543}, + {11.367416381836, 48.656387329102}, + {18.213272094727, 50.974502563477}, + {127.67555236816, 26.181106567383}, + {2.6071929931641, 46.339645385742}, + {101.57890319824, 3.0191802978516}, + {22.916793823242, 51.110458374023}, + {0.24164, 51.45623}, + {11.529661, 47.85262}, + {46.232528686523, 37.389907836914}, + {-111.668472, 33.403244}, + {-46.643917, -23.544025}, + {10.87028503418, 48.381729125977}, + {12.225723266602, 48.944778442383}, + {13.272575, 52.361365}, + {-81.859217, 32.369196}, + {29.132537, 40.940119}, + {39.865951538086, 59.218368530273}, + {8.520381, 49.463401}, + {0.454559, 51.546822}, + {-106.756174, 34.792744}, + {139.295425, 36.25145}, + {-6.5073394775391, 32.53532409668}, + {104.30763244629, 15.654830932617}, + {0.070724487304688, 51.53205871582}, + {4.1576385498047, 44.016036987305}, + {-75.993118286133, 36.847457885742}, + {80.609207, 16.513138}, + {30.372033, 52.333957}, + {83.786544799805, 28.026809692383}, + {121.024306, 14.526819}, + {120.29685974121, 31.87614440918}, + {1.986077, 48.80299}, + {9.8870086669922, 48.24577331543}, + {1.694113, 46.810488}, + {-111.8675994873, 33.680648803711}, + {51.370697, 35.693207}, + {77.972030639648, 27.172622680664}, + {139.69596862793, 35.527725219727}, + {4.5064544677734, 51.895980834961}, + {-0.16273498535156, 5.6298065185547}, + {-116.106264, 43.476118}, + {50.293350219727, 53.228073120117}, + {126.735333, 37.579495}, + {51.372032, 35.702951}, + {-81.406631469727, 30.204849243164}, + {8.153229, 50.763016}, + {37.760696411133, 6.8685150146484}, + {78.594131469727, 17.394790649414}, + {-84.784927368164, 40.640487670898}, + {107.87406921387, 34.269790649414}, + {80.203628540039, 13.324356079102}, + {106.68754577637, -6.3466644287109}, + {79.35905456543, 12.699508666992}, + {-81.796164, 30.29748}, + {-4.3718719482422, 55.513229370117}, + {28.79035949707, 41.112899780273}, + {37.60139465332, 55.660171508789}, + {3.586349, 6.470261}, + {76.766281, 30.736313}, + {73.061141967773, 19.303665161133}, + {18.798294067383, 59.751205444336}, + {9.963226, 53.811722}, + {143.629351, -38.258522}, + {106.810169, -6.181123}, + {55.392379760742, 25.36262512207}, + {138.47648620605, 35.715866088867}, + {55.406112670898, 25.381851196289}, + {10.957465, 48.29853}, + {6.4482879638672, 51.231307983398}, + {14.503573, 51.153856}, + {137.788925, 34.817734}, + {30.391616821289, 40.761337280273}, + {130.42337, 33.663071}, + {18.97362, 50.00908}, + {-74.51545715332, 39.316635131836}, + {106.810318, -6.216476}, + {72.926559448242, 22.548751831055}, + {-43.222465, -22.923102}, + {100.505932, 13.821078}, + {-49.197463989258, -25.46012878418}, + {106.891975, -6.364016}, + {101.7066192627, 3.0672454833984}, + {77.22770690918, 28.57063293457}, + {115.21156311035, -8.6359405517578}, + {109.39842224121, 24.380722045898}, + {83.653335571289, 27.918319702148}, + {80.222855, 12.986984}, + {78.182144165039, 29.406967163086}, + {-2.228131, 47.28305}, + {-58.683502, -34.977473}, + {9.917444, 53.490915}, + {127.039784, 37.501257}, + {139.64653015137, 35.846328735352}, + {119.6541595459, 26.333541870117}, + {23.356705, 42.650299}, + {14.484661, 59.328752}, + {10.646438598633, 44.653244018555}, + {30.639476, 46.394578}, + {121.552048, 31.198425}, + {106.65321350098, 10.735702514648}, + {-117.25639343262, 32.99674987793}, + {140.59547424316, 36.37092590332}, + {126.892602, 37.519793}, + {51.435928344727, 25.41618347168}, + {120.32432556152, 23.317794799805}, + {141.67900085449, 42.678451538086}, + {78.484268188477, 17.037734985352}, + {82.067184448242, 17.092666625977}, + {51.449661254883, 35.747451782227}, + {21.71516418457, 51.139297485352}, + {80.151443481445, 13.114242553711}, + {51.672134399414, 32.652053833008}, + {6.2532806396484, 50.142288208008}, + {59.56169128418, 36.284408569336}, + {-100.354622, 25.680562}, + {102.21748352051, 5.7424163818359}, + {26.52717590332, 47.515182495117}, + {74.838180541992, 54.932327270508}, + {-77.001113891602, 38.882675170898}, + {-7.3148345947266, 43.466720581055}, + {17.442855834961, 49.323806762695}, + {121.0164642334, 24.792709350586}, + {20.064009, 45.091324}, + {51.345291137695, 35.660934448242}, + {28.856304, 41.012111}, + {37.594528198242, 55.873031616211}, + {16.572189331055, 59.608383178711}, + {-81.371613, 40.8918}, + {-8.1772613525391, 43.387069702148}, + {21.023025512695, 52.465896606445}, + {37.494277954102, 55.426712036133}, + {4.586792, 7.769394}, + {126.969741, 37.545435}, + {-81.272473, 29.627162}, + {128.076965, 35.184815}, + {-0.48133850097656, 51.331558227539}, + {-0.77522277832031, 51.996231079102}, + {2.179719, 48.82161}, + {-88.12447, 41.606846}, + {11.423721313477, 48.174362182617}, + {114.63066101074, -3.3542633056641}, + {-77.722446, 39.590551}, + {106.50215148926, 10.653305053711}, + {-74.14238, 41.120224}, + {44.430770874023, 33.384017944336}, + {139.31968688965, 35.590896606445}, + {8.065336, 46.654816}, + {100.657424, 14.41475}, + {139.75776672363, 35.654067993164}, + {117.152416, -0.450538}, + {8.294916, 50.032388}, + {15.336227416992, 47.449264526367}, + {92.800827026367, 56.000747680664}, + {-79.194902, 37.369028}, + {30.405349731445, 60.046463012695}, + {147.16804504395, -9.3857574462891}, + {106.049334, 48.942521}, + {141.31507873535, 40.956344604492}, + {106.36756896973, 10.326461791992}, + {9.7277069091797, 52.533187866211}, + {121.54243469238, 29.879379272461}, + {114.80644226074, 37.763442993164}, + {23.615798950195, 46.758499145508}, + {15.39665222168, 47.056503295898}, + {76.729202270508, 11.810989379883}, + {139.614944, 35.483437}, + {135.12565612793, 48.451766967773}, + {89.029769897461, 26.359634399414}, + {139.309387, 35.804443}, + {77.238693237305, 28.655776977539}, + {30.33805847168, 59.855575561523}, + {-86.240525, 39.732607}, + {15.325241088867, 47.15950012207}, + {29.191360473633, 41.009902954102}, + {-91.154347, 30.121759}, + {3.0892181396484, 43.21403503418}, + {120.99998474121, 14.657821655273}, + {74.615707397461, 16.845474243164}, + {51.355591, 25.326233}, + {75.846176147461, 14.499893188477}, + {2.624019, 51.090757}, + {-79.529342651367, 9.0218353271484}, + {-99.194869995117, 19.427261352539}, + {27.959518432617, -26.249771118164}, + {2.4987030029297, 48.841781616211}, + {51.412582397461, 35.795516967773}, + {2.35668, 48.922395}, + {73.757401, 15.586853}, + {-8.6785125732422, 40.519638061523}, + {-71.378860473633, -30.04280090332}, + {-80.141830444336, 26.108322143555}, + {53.03581237793, 36.552200317383}, + {40.264205932617, 43.683700561523}, + {18.997421264648, 49.838790893555}, + {-49.241409301758, -25.469741821289}, + {-104.603331, 50.483444}, + {28.554153442383, 41.030502319336}, + {10.270156860352, 56.235580444336}, + {7.190788, 43.66008}, + {1.8010711669922, 41.730880737305}, + {-5.6613922119141, 11.345443725586}, + {84.811019897461, 56.296005249023}, + {122.06703186035, 41.189804077148}, + {15.439224243164, 47.068862915039}, + {-76.829452514648, 39.470443725586}, + {-38.097808, -5.143749}, + {79.401626586914, 13.66081237793}, + {79.136581420898, 12.95768737793}, + {107.590866, -7.043939}, + {69.576687, 42.332247}, + {30.953293, 30.33577}, + {110.446446, -6.987002}, + {-99.127578735352, 19.502792358398}, + {-87.449111938477, 41.574325561523}, + {150.989675, -34.190058}, + {73.132553100586, 22.059860229492}, + {0.050125122070312, 49.11506652832}, + {37.480087, 55.595627}, + {-84.759407, 34.206792}, + {82.973556518555, 55.029830932617}, + {28.072815, -26.445465}, + {72.978745, 19.219208}, + {51.531372, 25.264435}, + {39.13793, 51.700929}, + {-82.128982543945, 34.279403686523}, + {15.642857, 48.416735}, + {73.070755004883, 21.485824584961}, + {2.892838, 6.429977}, + {-99.04655456543, 19.576950073242}, + {21.03401184082, 50.013198852539}, + {104.061497, 1.112592}, + {25.689926, 42.431717}, + {99.855999, 12.143912}, + {135.97434997559, 35.033340454102}, + {112.781872, -7.242555}, + {31.529989, -25.684219}, + {116.634293, 39.900284}, + {102.57591247559, 15.43098449707}, + {60.635604858398, 35.25032043457}, + {101.68464660645, 14.895401000977}, + {21.10004, 46.189594}, + {-49.315567016602, -25.376358032227}, + {126.91304, 37.48321}, + {76.094741821289, 10.592880249023}, + {77.323837280273, 28.569259643555}, + {-122.475514, 37.772216}, + {-2.04483, 52.627258}, + {4.190941, 50.078965}, + {77.532577514648, 13.055191040039}, + {-122.787939, 45.494066}, + {8.75302, 45.625537}, + {11.996929, 49.18181}, + {54.998245239258, 28.868637084961}, + {-4.7701263427734, 55.951309204102}, + {136.98234558105, 35.427474975586}, + {137.29957580566, 34.648818969727}, + {24.016799926758, 49.836044311523}, + {99.043008, 18.627837}, + {18.784034, 53.483344}, + {9.2978668212891, 45.600814819336}, + {35.936965942383, 31.951675415039}, + {-47.462893, -23.503945}, + {113.32328796387, 22.996444702148}, + {37.697525024414, 55.554428100586}, + {106.54609680176, 10.683517456055}, + {-112.195356, 33.523636}, + {113.394673, -1.896684}, + {-118.345806, 34.271164}, + {76.01921081543, 32.531204223633}, + {151.210894, -33.878383}, + {-1.293869, 53.0793}, + {76.291122436523, 9.9721527099609}, + {5.358938, 60.317416}, + {9.074364, 47.725639}, + {-84.074935913086, 9.9405670166016}, + {101.69288635254, 3.0713653564453}, + {139.84977722168, 35.820236206055}, + {139.42405700684, 35.553817749023}, + {-0.119614, 51.565842}, + {174.25346374512, -39.002151489258}, + {25.671615600586, 49.580612182617}, + {76.896743774414, 28.710708618164}, + {135.33062, 34.73877}, + {2.4739837646484, 48.910446166992}, + {114.21318054199, 22.399063110352}, + {16.679306030273, 45.949630737305}, + {-58.822860717773, -33.631210327148}, + {134.005203, 34.330521}, + {126.985033, 37.566477}, + {126.79041, 37.651175}, + {120.98762512207, 14.575424194336}, + {7.4192047119141, 10.542068481445}, + {106.665573, 10.785141}, + {77.494125366211, 13.073043823242}, + {27.56950378418, 53.924331665039}, + {80.967178344727, 16.088790893555}, + {76.328005, 9.939194}, + {78.783646, 10.246353}, + {-1.143951, 37.900085}, + {51.527938842773, 32.897872924805}, + {13.236465454102, 51.271133422852}, + {2.17804, 41.389618}, + {-95.044785, 29.590988}, + {104.8184967041, -2.9628753662109}, + {13.335686, 52.478525}, + {11.647567749023, 48.19221496582}, + {-73.897934, 40.852432}, + {8.5219573974609, 12.081527709961}, + {46.008197, 51.545381}, + {34.295883178711, 53.306350708008}, + {6.573257, 53.221893}, + {29.75715637207, 62.602157592773}, + {-5.6160736083984, 33.193130493164}, + {-0.27992, 39.748536}, + {16.01188659668, 48.818435668945}, + {127.511953, 50.301684}, + {-0.622331, 51.347031}, + {139.94041442871, 35.883407592773}, + {-0.170245, 51.540465}, + {43.882827758789, 56.263046264648}, + {-0.37559509277344, 51.669387817383}, + {2.7925872802734, 36.263809204102}, + {-76.937942504883, -12.044448852539}, + {-86.873975, 30.405206}, + {-71.190719604492, -30.583877563477}, + {106.8221282959, -6.1667633056641}, + {-99.025955200195, 19.61540222168}, + {101.7505645752, 3.1633758544922}, + {-86.212801, 39.830378}, + {13.377914428711, 52.452163696289}, + {121.490936, 31.305542}, + {28.767014, 55.2556}, + {-97.350540161133, 19.799423217773}, + {10.068158, 52.63921}, + {82.958450317383, 55.022964477539}, + {77.171401977539, 28.82194519043}, + {116.4722442627, 39.903030395508}, + {-9.7565460205078, 31.499862670898}, + {-157.921073, 21.350587}, + {11.072899, 43.77044}, + {30.222383, 55.173499}, + {6.262207, 45.580902}, + {106.67381286621, 10.749435424805}, + {7.1775054931641, 43.760604858398}, + {2.0001983642578, 49.73991394043}, + {102.274181, -3.760365}, + {139.80308532715, 35.688400268555}, + {5.384674, 36.220551}, + {-75.159530639648, 40.04035949707}, + {30.61718, 46.437492}, + {78.490219, 17.386093}, + {106.960332, -6.178714}, + {121.58638000488, 25.083847045898}, + {106.99015, -6.182776}, + {9.9968719482422, 53.589248657227}, + {7.9904937744141, 49.836044311523}, + {10.062789916992, 53.608474731445}, + {37.266311645508, 25.038528442383}, + {126.906199, 37.480391}, + {2.304382, 48.741531}, + {79.345321655273, 26.729049682617}, + {8.372444, 49.289859}, + {12.231105, 51.321335}, + {78.17253112793, 27.433547973633}, + {78.515854, 17.458878}, + {30.340805053711, 59.92561340332}, + {-58.666305541992, -34.515609741211}, + {136.87522888184, 35.114364624023}, + {11.084717, 49.443563}, + {55.171279907227, 51.819076538086}, + {27.873252, -26.20363}, + {37.359541, 45.253266}, + {10.524626, 52.045067}, + {28.771133, 41.021576}, + {8.849487, 45.740204}, + {83.330612182617, 25.255508422852}, + {139.64653015137, 35.72135925293}, + {31.23893737793, 30.957412719727}, + {-117.100462, 32.93645}, + {84.164199829102, 24.92317199707}, + {3.0878448486328, 48.061752319336}, + {23.093573, 58.4983}, + {-1.244825, 52.583381}, + {-8.8831329345703, 42.111282348633}, + {46.950759887695, 24.33952331543}, + {100.880403, 12.932171}, + {-56.680526733398, -36.692276000977}, + {120.695748, 23.762107}, + {18.438491821289, 49.896469116211}, + {-96.026597, 41.190055}, + {28.234176635742, -32.647933959961}, + {-84.520632, 34.092203}, + {-55.727462768555, -22.567977905273}, + {-122.179053, 47.587967}, + {-92.920303344727, 17.999038696289}, + {96.10221862793, 16.896286010742}, + {12.158432006836, 47.90657043457}, + {8.365291, 50.020461}, + {7.7776336669922, 51.391983032227}, + {69.892959594727, 28.214950561523}, + {5.3578948974609, 46.163864135742}, + {28.261642456055, -25.80207824707}, + {73.388672, 54.94812}, + {10.866788, 48.086597}, + {126.91612243652, 37.520370483398}, + {129.370503, 36.051056}, + {104.760635, -2.970921}, + {4.534697, 52.372912}, + {127.049204, 37.69303}, + {72.436294555664, 23.071975708008}, + {131.96159362793, 43.091812133789}, + {79.346694946289, 25.229415893555}, + {-86.711523, 36.065733}, + {127.120475, 36.795205}, + {79.966049194336, 6.9412994384766}, + {39.681930541992, -4.0216827392578}, + {19.130630493164, 50.271377563477}, + {76.804733276367, 43.181076049805}, + {131.57707214355, 33.643569946289}, + {119.54704284668, -5.0763702392578}, + {105.80039978027, 21.010665893555}, + {51.426315307617, 35.713119506836}, + {37.486038208008, 55.616226196289}, + {106.708447, 10.801217}, + {7.9232025146484, 48.676986694336}, + {88.921279907227, 26.148147583008}, + {-97.819142, 29.926269}, + {14.132995, 52.845383}, + {10.853348, 48.333206}, + {106.9100189209, -6.1489105224609}, + {34.880905151367, 32.406234741211}, + {-80.266799926758, 43.061599731445}, + {3.519567, 44.944415}, + {-80.100631713867, 26.319808959961}, + {27.092971801758, 38.463821411133}, + {-123.086807, 49.192001}, + {-78.736257, 35.803688}, + {36.325607299805, 50.044784545898}, + {27.213135, -26.631546}, + {-58.828353881836, -34.387893676758}, + {-95.396347045898, 29.71321105957}, + {2.606506, 6.473007}, + {101.703426, 3.131362}, + {-48.572616577148, -20.565719604492}, + {81.049575805664, 16.695785522461}, + {-71.686477661133, -35.420608520508}, + {127.058544, 37.662308}, + {-1.788025, 52.454567}, + {72.512512, 23.039703}, + {-98.365402, 19.196548}, + {-98.076095, 29.692949}, + {-78.533707, -0.291138}, + {-110.773087, 32.114754}, + {-2.4602508544922, 42.476577758789}, + {20.459723, 44.88242}, + {19.940872192383, 50.058517456055}, + {-99.517593383789, 30.159530639648}, + {11.342317, 46.483944}, + {114.03327941895, 22.640762329102}, + {37.536848, 55.828057}, + {10.698886, 52.283057}, + {106.835211, -6.221724}, + {139.53392, 35.782471}, + {130.52925109863, 33.794631958008}, + {78.401870727539, 17.38655090332}, + {18.18359, 45.908999}, + {127.490281, 37.385186}, + {28.992233276367, 41.034622192383}, + {7.789535, 49.445572}, + {34.957809448242, 48.450393676758}, + {77.043685913086, 16.719131469727}, + {24.94606, 60.203018}, + {-117.11631774902, 32.911605834961}, + {4.477157, 8.711472}, + {4.3169403076172, 43.840255737305}, + {10.022964477539, 53.482131958008}, + {-73.816995, 40.694182}, + {129.12300109863, 35.551071166992}, + {51.374130249023, 35.707626342773}, + {-93.024422, 18.17292}, + {126.894477, 37.468779}, + {101.01036071777, 13.147201538086}, + {11.956558, 45.346756}, + {30.233688354492, 60.047836303711}, + {6.0774993896484, 46.310806274414}, + {76.899490356445, 43.231887817383}, + {120.27626037598, 23.787460327148}, + {19.959412, 50.009079}, + {120.4012298584, 23.155746459961}, + {20.929641723633, 52.401351928711}, + {-0.77110290527344, 51.492233276367}, + {139.949478, 35.833969}, + {100.95039, 13.320016}, + {12.371292114258, 51.335678100586}, + {11.492777, 48.14412}, + {-118.31245422363, 34.18327331543}, + {31.321334838867, 51.508712768555}, + {13.195266723633, 55.708236694336}, + {10.877151489258, 44.682083129883}, + {31.315841674805, 29.839553833008}, + {0.79170227050781, 44.088821411133}, + {-9.5436859130859, 30.413589477539}, + {-46.697771, -23.517801}, + {120.983917, 23.978348}, + {73.603591918945, 23.832778930664}, + {-55.932083129883, -13.097763061523}, + {120.60585021973, 28.014450073242}, + {103.913633, 1.455274}, + {-82.319866, 27.956934}, + {136.82579040527, 35.320358276367}, + {-78.475571, -0.188828}, + {139.309113, 36.399765}, + {46.581344604492, 24.754257202148}, + {-96.209335327148, 43.485946655273}, + {-100.29899597168, 25.666122436523}, + {-112.711166, 38.02887}, + {51.279962, 35.754318}, + {35.0203, -15.639811}, + {137.6717376709, 34.794387817383}, + {121.49848937988, 16.831741333008}, + {37.727737, 55.799789}, + {24.912185668945, 60.175552368164}, + {-7.6155853271484, 33.596878051758}, + {31.961773, -26.861621}, + {10.993881225586, 45.449752807617}, + {10.094376, 56.272659}, + {103.72261047363, 1.5360260009766}, + {139.63829040527, 35.750198364258}, + {54.367904663086, 24.454879760742}, + {13.533096313477, 59.421615600586}, + {14.24446105957, 40.938491821289}, + {10.187759399414, 45.528030395508}, + {99.14680480957, 18.717269897461}, + {113.32740783691, 23.136520385742}, + {30.984561, 30.348094}, + {141.1173248291, 39.269943237305}, + {7.9479217529297, 48.446273803711}, + {-100.25367736816, 25.830917358398}, + {-83.406143188477, 38.945846557617}, + {7.90605, 48.444062}, + {10.131454467773, 36.64421081543}, + {139.7728729248, 36.409378051758}, + {24.82498, 66.092377}, + {77.443313598633, 28.696975708008}, + {-86.129213, 40.471361}, + {-2.108432, 52.741097}, + {65.573959350586, 57.114486694336}, + {-77.905133, 43.084365}, + {37.518997192383, 55.765914916992}, + {-43.853419, -16.71393}, + {10.626232, 53.860179}, + {116.55464172363, 39.93049621582}, + {75.837936401367, 11.116104125977}, + {10.396008, 43.618939}, + {2.5508880615234, 46.549758911133}, + {75.902481079102, 17.676315307617}, + {-1.154251, 52.348099}, + {1.5717315673828, 41.964340209961}, + {-35.003452, -8.492022}, + {-94.380295, 35.428668}, + {5.9085845947266, 45.567855834961}, + {-99.177017211914, 19.446487426758}, + {-3.5025787353516, 53.164901733398}, + {10.033950805664, 45.90705871582}, + {126.884995, 37.177963}, + {-81.167678833008, 29.52507019043}, + {-86.565318, 37.589277}, + {-122.365699, 47.635052}, + {-71.908950805664, 41.914901733398}, + {139.68360900879, 35.780410766602}, + {-71.066097, -34.896312}, + {-58.899307, -34.452896}, + {85.34797668457, 27.677993774414}, + {-117.963497, 33.814739}, + {-75.692367553711, 39.404525756836}, + {107.41813659668, -6.6570281982422}, + {116.83479309082, -1.2778472900391}, + {-0.23414611816406, 51.327438354492}, + {87.64549, 21.728211}, + {126.801665, 37.672598}, + {58.501510620117, 23.510055541992}, + {121.02607727051, 14.744338989258}, + {11.69563293457, 44.349746704102}, + {1.9315338134766, 36.571426391602}, + {9.9172210693359, 57.041702270508}, + {106.881345, -6.190936}, + {-73.989486694336, 40.716018676758}, + {112.56935119629, 26.899337768555}, + {79.047317504883, 21.017532348633}, + {11.635207, 47.287909}, + {47.299576, 56.104431}, + {1.8532562255859, 50.966262817383}, + {105.08766174316, 12.422103881836}, + {106.29938, -6.146009}, + {72.824935913086, 19.126510620117}, + {18.312948, 59.29384}, + {128.963479, 35.09421}, + {55.801620483398, 24.19807434082}, + {44.065476, 56.316605}, + {135.57884216309, 34.650192260742}, + {80.66780090332, 16.514511108398}, + {136.61567687988, 35.03059387207}, + {18.20915222168, 51.738052368164}, + {7.4370574951172, 9.0877532958984}, + {80.518112182617, 6.9632720947266}, + {-0.030899047851562, 47.528915405273}, + {101.718045, 3.155309}, + {77.229080200195, 28.574752807617}, + {78.08464050293, 27.896347045898}, + {80.192642211914, 15.82649230957}, + {-119.403322, 35.40358}, + {135.74089050293, 34.98664855957}, + {120.32844543457, 23.104934692383}, + {13.027725219727, 59.206008911133}, + {54.510726928711, 24.254379272461}, + {16.921329, 52.470251}, + {11.835709, 45.43808}, + {18.23112487793, 49.297714233398}, + {-96.602557, 33.202042}, + {12.795639038086, 41.96159362793}, + {-4.0052032470703, 5.3112030029297}, + {14.502639770508, 48.502578735352}, + {2.3407745361328, 48.856887817383}, + {-103.28178405762, 20.703048706055}, + {16.153229, 49.206181}, + {-2.6470184326172, 48.019180297852}, + {20.270462036133, 52.073135375977}, + {75.007095336914, 15.457077026367}, + {6.3535308837891, 46.096572875977}, + {-61.002274, 10.716477}, + {121.44493103027, 25.001449584961}, + {-83.428115844727, 42.420272827148}, + {-2.679318, 53.484517}, + {99.131312, 16.869606}, + {9.4036102294922, 45.842514038086}, + {61.517606, 55.15867}, + {16.449966430664, 50.232925415039}, + {29.152336, 40.981159}, + {-80.848802, 33.552659}, + {27.929306030273, -26.176986694336}, + {102.632912, 15.865904}, + {88.911666870117, 25.704574584961}, + {-76.601345, 36.966325}, + {26.222305297852, -29.102096557617}, + {-95.258002, 29.601294}, + {15.2608, 49.262612}, + {80.350570678711, 26.44889831543}, + {-5.433249, 42.470906}, + {4.7838592529297, 45.783462524414}, + {107.093124, -6.271591}, + {15.450239, 48.642132}, + {-60.648415, -32.969765}, + {140.78910827637, 38.220748901367}, + {90.591888, 24.170609}, + {6.297226, 46.15242}, + {-1.3643646240234, 53.43132019043}, + {114.19807434082, 22.290573120117}, + {3.4751129150391, 6.6941070556641}, + {-80.167737, 25.740999}, + {2.146497, 41.373221}, + {83.278427124023, 26.227798461914}, + {72.956771850586, 19.185562133789}, + {55.341567993164, 54.679641723633}, + {-4.0807342529297, 51.662521362305}, + {-80.242081, 35.981598}, + {2.4918365478516, 48.843154907227}, + {-90.544376, 14.537287}, + {126.80804, 37.566729}, + {47.156753540039, 34.374160766602}, + {12.966819, 52.301583}, + {-0.256119, 47.15744}, + {76.601486206055, 8.8707733154297}, + {-81.639258, 27.690484}, + {58.178787231445, 23.687210083008}, + {-97.277755737305, 37.660446166992}, + {38.219376, 55.726776}, + {-78.489761352539, -0.23139953613281}, + {120.98487854004, 14.531478881836}, + {5.7273101806641, 48.31169128418}, + {-38.627309, -4.015293}, + {75.555725, 20.988007}, + {8.8735198974609, 48.644027709961}, + {-4.995961, 42.401757}, + {77.209854125977, 28.573379516602}, + {72.916946411133, 19.115524291992}, + {-0.762863, 38.039017}, + {23.511452, 49.311078}, + {-49.730355, -29.335158}, + {-84.25895690918, 38.826370239258}, + {-1.8999481201172, 52.654037475586}, + {-7.998714, 12.636909}, + {114.15138244629, 22.287826538086}, + {12.559373, 47.470309}, + {7.2269439697266, 51.286239624023}, + {2.2940826416016, 48.80744934082}, + {31.212844848633, 30.066146850586}, + {27.566014, 53.905076}, + {13.500137329102, 47.273483276367}, + {9.3143463134766, 9.3885040283203}, + {-43.179702758789, -22.952499389648}, + {-1.1968231201172, 53.472518920898}, + {-74.114207, 41.318751}, + {-79.919357299805, -2.1361541748047}, + {-79.024771, 37.60657}, + {51.533432006836, 25.26237487793}, + {8.65406, 49.270121}, + {-80.873795, 35.190697}, + {72.562637329102, 23.023910522461}, + {80.126724243164, 13.041458129883}, + {108.509216, -6.70578}, + {80.34782409668, 26.46125793457}, + {11.73957824707, 48.366622924805}, + {-0.249176, 51.36005}, + {6.8877410888672, 45.669479370117}, + {-0.16960144042969, 51.179122924805}, + {114.40818786621, 30.365524291992}, + {1.9823455810547, 43.054733276367}, + {10.539321899414, 64.11003112793}, + {46.685028, 34.234085}, + {10.231478, 49.983445}, + {20.501174926758, 44.812545776367}, + {-1.046445, 53.676454}, + {140.014572, 36.303635}, + {59.607009887695, 36.287155151367}, + {-81.067996, 34.867122}, + {135.66535949707, 34.853439331055}, + {5.930692, 43.128368}, + {106.78230285645, -6.2258148193359}, + {111.30661, 30.7267}, + {113.3960723877, 23.117294311523}, + {113.32740783691, 23.12141418457}, + {99.954299926758, 19.155349731445}, + {126.898688, 37.483693}, + {9.1728973388672, 48.777236938477}, + {-1.708026, 55.184771}, + {83.450089, 27.502962}, + {-2.1869659423828, 53.486251831055}, + {-75.61408996582, 6.1544036865234}, + {4.44338, 51.207476}, + {-72.256393432617, 43.547744750977}, + {77.706985, 12.902298}, + {18.043279, 59.341162}, + {139.64790344238, 35.443954467773}, + {44.162951, 56.175387}, + {37.738723754883, 55.81672668457}, + {-46.630783081055, -23.525161743164}, + {11.48799, 48.209035}, + {27.325057983398, 37.113876342773}, + {-81.98616027832, 41.493301391602}, + {8.797332, 56.170002}, + {16.307756, 48.206873}, + {51.309585571289, 35.69938659668}, + {-96.107711791992, 36.350326538086}, + {4.0532684326172, 44.116287231445}, + {-61.701278686523, 16.305770874023}, + {30.390243530273, 59.752578735352}, + {-72.116317749023, -39.495162963867}, + {-38.318121, -12.713369}, + {37.873735, 55.659635}, + {-122.731693, 45.594182}, + {-87.97233581543, 42.107162475586}, + {78.488448, 17.395746}, + {-64.204788208008, -31.406478881836}, + {-66.168594360352, 18.398666381836}, + {139.7289276123, 35.622482299805}, + {-58.848015, -34.991692}, + {76.145553588867, 29.218826293945}, + {120.683158, 23.75951}, + {-89.183578491211, 13.729476928711}, + {-81.37092590332, 28.473129272461}, + {35.717239379883, -4.2153167724609}, + {-73.945999, 40.645981}, + {59.616622924805, 36.331100463867}, + {-91.708279, 35.232175}, + {6.8355560302734, 51.087112426758}, + {112.48970031738, 37.889785766602}, + {-103.059445, 20.65496}, + {-102.764641, 20.852612}, + {-6.6570281982422, 37.675552368164}, + {-0.610882, 52.839432}, + {45.158615112305, 57.132339477539}, + {17.909317, 46.81572}, + {27.630854, 47.956468}, + {31.363906860352, 0.55274963378906}, + {-57.987899780273, -34.89875793457}, + {135.45936584473, 34.582901000977}, + {5.2851104736328, 46.195449829102}, + {46.688461303711, 24.666366577148}, + {3.8184356689453, 47.625045776367}, + {106.91276550293, -6.9509124755859}, + {106.59690856934, -6.1667633056641}, + {106.742377, -6.266254}, + {37.597274780273, 55.565414428711}, + {5.8660125732422, 46.222915649414}, + {80.251693725586, 12.927474975586}, + {12.667922973633, 50.813827514648}, + {31.155622, -18.047106}, + {145.177835, -37.7632}, + {103.260467, 1.643598}, + {75.824203491211, 26.804580688477}, + {-123.33595275879, 48.468246459961}, + {7.229004, 51.236115}, + {10.687637329102, 44.693069458008}, + {-46.563491821289, -23.519668579102}, + {18.820266723633, 57.798385620117}, + {108.4041595459, 22.815170288086}, + {0.084457397460938, 51.37825012207}, + {2.7733612060547, 48.291091918945}, + {-82.64277, 28.030877}, + {-6.4867401123047, 42.605667114258}, + {6.1200714111328, 48.694839477539}, + {8.888626, 9.828082}, + {-73.149443, 45.590501}, + {52.355347, 36.465683}, + {-9.315722, 38.72063}, + {-77.665787, 37.647743}, + {4.4171905517578, 35.827102661133}, + {-102.28503, 31.930836}, + {-38.376974, -12.906521}, + {-61.268692016602, 16.250839233398}, + {-48.112564086914, -15.788040161133}, + {-86.189804077148, 12.152938842773}, + {-58.270617, -31.702168}, + {-99.231948852539, 19.335250854492}, + {21.467971801758, 61.12174987793}, + {-86.704788208008, 36.438217163086}, + {-115.22529602051, 36.049575805664}, + {37.509384155273, 55.778274536133}, + {37.59343, 55.624741}, + {78.425216674805, 17.500534057617}, + {17.499160766602, 53.634567260742}, + {121.15104675293, 24.899826049805}, + {-118.335342, 34.098358}, + {18.432999, -33.934021}, + {-1.4206695556641, 35.038833618164}, + {-116.247579, 43.613391}, + {10.645065307617, 55.033950805664}, + {98.711471557617, 3.5863494873047}, + {106.80976867676, -6.2230682373047}, + {127.06924, 37.584395}, + {115.197622, -8.660123}, + {109.434814, -6.931}, + {135.51704406738, 34.703750610352}, + {80.265144, 6.004345}, + {23.977631, 56.938343}, + {-96.721572875977, 32.966537475586}, + {11.658418, 50.715484}, + {116.756991, -20.629603}, + {115.23902893066, -8.6634063720703}, + {111.47071838379, -7.8572845458984}, + {130.22850036621, 33.274154663086}, + {30.289993286133, 59.951705932617}, + {100.63682556152, 13.799514770508}, + {5.14824, 52.110444}, + {37.564315795898, 55.897750854492}, + {119.37675476074, 26.231918334961}, + {8.170046, 52.12072}, + {-98.999862670898, 19.616775512695}, + {-79.84245300293, 37.284164428711}, + {29.687118530273, -29.158401489258}, + {-91.864243, 36.715164}, + {13.885582, 42.933268}, + {3.334351, 6.638489}, + {113.368652, 23.123384}, + {30.353164672852, 59.987411499023}, + {76.972275, 29.483871}, + {79.397506713867, 13.604507446289}, + {112.9222869873, 28.028182983398}, + {-86.668381, 36.034658}, + {11.212006, 49.267136}, + {37.458572387695, 55.617599487305}, + {100.55305480957, 13.806381225586}, + {61.37580871582, 55.23307800293}, + {150.30326843262, -33.728713989258}, + {24.753626, 59.430571}, + {78.210983276367, 12.520980834961}, + {33.616104125977, 35.196762084961}, + {-2.1334075927734, 53.384628295898}, + {-90.512464, 14.596104}, + {12.213306, 48.927708}, + {-96.721572875977, 32.093124389648}, + {11.610488891602, 48.188095092773}, + {1.1968231201172, 51.085739135742}, + {15.216751098633, 38.18229675293}, + {18.518398, -33.940105}, + {-96.873799, 32.643834}, + {-100.954051, 22.144257}, + {-118.277378, 34.691295}, + {-76.955109, 17.992172}, + {105.82511901855, 21.072463989258}, + {19.560526, 51.892144}, + {77.090377807617, 28.490982055664}, + {-83.586868, 35.90593}, + {-103.281456, 20.650486}, + {114.175336, 22.444599}, + {-3.7044525146484, 40.446853637695}, + {10.496008, 52.303552}, + {30.649795532227, -0.60905456542969}, + {74.523696899414, 15.900650024414}, + {5.0173187255859, 51.181869506836}, + {-6.6089630126953, 30.72395324707}, + {-100.4418182373, 31.444931030273}, + {13.501518, 54.397437}, + {82.800521850586, 27.78923034668}, + {139.64653015137, 35.737838745117}, + {73.775253295898, 18.741989135742}, + {7.931284, 47.61839}, + {37.494277954102, 55.693130493164}, + {127.24983215332, 59.986038208008}, + {116.11381530762, 39.815139770508}, + {56.10237121582, 25.814437866211}, + {11.819237, 50.324944}, + {73.854904174805, 19.999923706055}, + {3.0370330810547, 50.611953735352}, + {-7.6251983642578, 33.570785522461}, + {10.022049, 49.141159}, + {86.689682006836, 24.491958618164}, + {9.868244, 47.100592}, + {113.51280212402, 22.29606628418}, + {96.155776977539, 16.816635131836}, + {101.649524, 3.077239}, + {72.86750793457, 19.24186706543}, + {80.022643, 13.124108}, + {-81.417447, 30.318528}, + {36.835098266602, -1.2860870361328}, + {12.815552, 50.927124}, + {126.97361, 37.56672}, + {126.979357, 37.556113}, + {126.967062, 37.510862}, + {80.16299, 13.078872}, + {13.372421264648, 52.471389770508}, + {-2.4533843994141, 47.266616821289}, + {50.986862182617, 35.847702026367}, + {135.22041320801, 34.78889465332}, + {104.742966, -2.978668}, + {-80.708439, 35.121139}, + {-97.507095336914, 35.487899780273}, + {127.067089, 37.660652}, + {53.163528442383, 56.81510925293}, + {100.94581604004, 12.950820922852}, + {-73.885116577148, 40.768203735352}, + {54.43244934082, 36.894149780273}, + {-88.976898, 30.414276}, + {65.57813, 57.142254}, + {6.814499, 45.565109}, + {2.239572, 49.172219}, + {12.858810424805, 45.997695922852}, + {-80.799745, 35.20923}, + {15.823746, 59.976425}, + {105.8470916748, 21.04362487793}, + {-74.031717, 40.621619}, + {91.097946166992, 29.663772583008}, + {-82.928573, 42.298317}, + {-4.9074554443359, 56.664047241211}, + {-71.33903503418, 10.198745727539}, + {169.27940368652, -46.152877807617}, + {104.27055358887, 30.582504272461}, + {75.401229858398, 14.788284301758}, + {10.087509155273, 50.172500610352}, + {1.5717315673828, 41.541366577148}, + {100.601263, 13.745576}, + {-113.59794616699, 53.075637817383}, + {19.818649291992, 41.317520141602}, + {10.653305053711, 44.70817565918}, + {76.046676635742, 26.83479309082}, + {60.694656, 56.833649}, + {136.93153381348, 35.275039672852}, + {-1.9864654541016, 47.10319519043}, + {-1.1254119873047, 44.775466918945}, + {119.99885559082, 30.29411315918}, + {124.67491149902, 6.6872406005859}, + {170.422339, -44.004391}, + {175.31776428223, -37.801895141602}, + {-82.66731262207, 27.851028442383}, + {43.84162902832, 55.417098999023}, + {126.897178, 37.525543}, + {114.181362, 22.316915}, + {135.561676, 34.926224}, + {139.92530822754, 35.669174194336}, + {138.64952087402, 35.494766235352}, + {50.124435424805, 26.37336730957}, + {88.700867, 25.335846}, + {77.901993, 15.487976}, + {139.33616638184, 35.65544128418}, + {-98.066421, 30.14968}, + {16.577682495117, 51.856155395508}, + {-60.641098022461, -32.967910766602}, + {28.793793, 41.00544}, + {7.4713897705078, 5.5391693115234}, + {139.80995178223, 35.86555480957}, + {8.5865020751953, 49.929428100586}, + {118.465347, 26.752396}, + {11.433108, 48.951245}, + {106.8138885498, -6.2395477294922}, + {-0.48820495605469, 51.427688598633}, + {121.02195739746, 24.809188842773}, + {121.22517, 24.952004}, + {44.467849731445, 56.789016723633}, + {6.0335540771484, 48.313064575195}, + {-83.932113647461, 33.986892700195}, + {77.62321472168, 13.040084838867}, + {135.6241607666, 34.665298461914}, + {10.101056, 53.538698}, + {99.821090698242, 19.858474731445}, + {-0.93589782714844, 48.985977172852}, + {-47.317428588867, -24.151382446289}, + {44.005, 56.322985}, + {-1.465834, 53.21839}, + {28.17512512207, 67.285079956055}, + {-0.935211, 52.509842}, + {-46.658248901367, -23.543014526367}, + {48.314437866211, 58.32160949707}, + {8.724962, 45.550892}, + {30.984535, 30.008125}, + {27.665634155273, 38.778305053711}, + {-117.707354, 34.09536}, + {-114.26261901855, 53.37776184082}, + {9.0053558349609, 56.033706665039}, + {108.24485778809, 16.065444946289}, + {10.381393432617, 53.60710144043}, + {-58.522109985352, -34.905624389648}, + {77.328644, 28.631058}, + {136.902695, 35.131531}, + {-73.951034545898, 40.640487670898}, + {-70.291672, 43.712082}, + {27.140754, 53.674854}, + {4.6616363525391, 7.4604034423828}, + {75.035934448242, 15.369186401367}, + {51.413955688477, 35.769424438477}, + {-82.444191, 27.134154}, + {9.0465545654297, 45.683212280273}, + {101.71348571777, 3.0274200439453}, + {-89.250869750977, 13.681411743164}, + {36.822738647461, 56.280899047852}, + {-88.851383, 30.470338}, + {106.4266204834, 29.792861938477}, + {100.763615, 17.126285}, + {21.093595, 52.219097}, + {135.239836, 34.834606}, + {-43.211988, -22.964277}, + {9.434287, 47.771533}, + {0.99357604980469, 52.202224731445}, + {11.478547, 58.621198}, + {48.635907, 31.206564}, + {15.455703735352, 47.052383422852}, + {19.392242, -33.633957}, + {78.364791870117, 17.41813659668}, + {76.86096, 11.322125}, + {71.771621704102, 30.031814575195}, + {115.86387634277, 28.694229125977}, + {126.872842, 37.479713}, + {61.164321899414, 55.152053833008}, + {24.052677, 49.785404}, + {29.05403137207, -30.397109985352}, + {51.486204, 25.30648}, + {4.5531463623047, 50.074996948242}, + {-75.323947, 41.099981}, + {4.642491, 52.136195}, + {77.562789916992, 12.942581176758}, + {5.3469085693359, 60.326614379883}, + {114.11018371582, 22.371597290039}, + {15.840225219727, 45.815048217773}, + {90.272598266602, 23.879470825195}, + {100.72059631348, 13.873672485352}, + {6.6790008544922, 46.523666381836}, + {51.492233276367, 25.270614624023}, + {20.015717, -33.933335}, + {2.2473907470703, 41.452102661133}, + {4.6259307861328, 44.963607788086}, + {88.425522, 22.584114}, + {37.156448364258, 55.440444946289}, + {113.21617126465, 23.128280639648}, + {-76.765512, 40.081447}, + {6.458588, 46.347199}, + {7.0964813232422, 43.627395629883}, + {10.864791870117, 51.479873657227}, + {-0.975037, 37.97699}, + {27.114625, 38.397818}, + {-81.581039, 41.404495}, + {-2.668158, 42.844469}, + {-0.047378540039062, 52.55241394043}, + {7.067538, 50.804997}, + {-85.438477, 32.605298}, + {-97.048416137695, 50.188980102539}, + {-41.019627, -21.630535}, + {-4.536495, 42.016525}, + {-0.51017761230469, 38.384170532227}, + {-8.6386871337891, 40.983810424805}, + {-83.147964477539, 34.857559204102}, + {-64.251480102539, -31.37077331543}, + {-84.320132, 33.84544}, + {-84.33723449707, 30.674514770508}, + {-93.167221, 44.79689}, + {120.93818664551, 14.370803833008}, + {29.129586, 40.853539}, + {-56.359176635742, -34.780654907227}, + {135.27122497559, 34.692764282227}, + {72.83317565918, 19.111404418945}, + {43.777084350586, 56.323471069336}, + {79.124221801758, 13.103256225586}, + {8.8556671142578, 41.913528442383}, + {55.673904418945, -20.994186401367}, + {-80.754545, 35.228753}, + {127.044794, 37.730772}, + {-1.1006927490234, 52.91633605957}, + {75.809097290039, 26.16325378418}, + {13.455173, 52.529805}, + {55.330581665039, 25.280227661133}, + {10.982894897461, 45.397567749023}, + {3.0081939697266, 36.704635620117}, + {132.84187316895, 48.836288452148}, + {-74.346542358398, 4.7811126708984}, + {-2.099486, 51.665456}, + {11.545944213867, 3.8788604736328}, + {139.86454, 35.650978}, + {16.62712097168, 49.209823608398}, + {101.39762878418, 14.602890014648}, + {4.512901, 52.070697}, + {-49.289474487305, -25.381851196289}, + {0.35224914550781, 51.360397338867}, + {75.126571655273, 12.405624389648}, + {-43.35462, -22.796597}, + {76.891250610352, 43.24836730957}, + {51.672134399414, 32.680892944336}, + {3.9530181884766, 7.4439239501953}, + {73.83430480957, 18.562088012695}, + {106.843659, -6.692204}, + {77.244186401367, 28.643417358398}, + {87.126388549805, 53.749923706055}, + {-41.742438, -22.328124}, + {6.9097137451172, 51.191482543945}, + {4.5325469970703, 50.868759155273}, + {-76.738815307617, 39.212265014648}, + {79.418106079102, 13.630599975586}, + {50.145034790039, 53.214340209961}, + {29.897232055664, 39.410018920898}, + {121.004105, 24.815369}, + {77.597122192383, 12.97004699707}, + {18.835373, 48.56781}, + {51.425629, 35.728226}, + {-6.707382, 55.098953}, + {22.93327331543, 37.939224243164}, + {-99.041748, 19.393616}, + {34.598754, 36.785689}, + {139.54216, 35.552902}, + {127.04348, 37.523342}, + {-80.664535, 35.115967}, + {7.524605, 45.023346}, + {-73.920135, 40.814896}, + {-0.24787902832031, 52.582626342773}, + {9.0561676025391, 50.138168334961}, + {23.017044067383, 60.429611206055}, + {106.57081604004, 29.556655883789}, + {-81.219472, 32.304415}, + {-86.880569458008, 12.438583374023}, + {80.27229309082, 13.106002807617}, + {-58.219985961914, -34.729843139648}, + {9.8911285400391, 47.903823852539}, + {-95.855274, 36.074831}, + {-92.673110961914, 34.971542358398}, + {25.12092590332, 44.728775024414}, + {-46.894791, -24.232662}, + {100.75355529785, 13.938217163086}, + {51.420822143555, 35.754318237305}, + {75.77751159668, 26.948776245117}, + {108.488846, -6.725235}, + {121.63307189941, 29.913711547852}, + {8.6386871337891, 49.386978149414}, + {-1.4756011962891, 37.884292602539}, + {74.630813598633, 25.353012084961}, + {135.74913, 35.001068}, + {74.444046020508, 14.274673461914}, + {-99.685134887695, 19.392929077148}, + {-0.59394836425781, 51.687240600586}, + {-149.55207824707, -17.541732788086}, + {47.402572631836, -18.803787231445}, + {-80.811539, 35.268173}, + {74.448165893555, 14.284286499023}, + {-100.15754699707, 25.453262329102}, + {23.713302612305, 37.951583862305}, + {38.789291381836, 58.05793762207}, + {58.253715, 23.617851}, + {140.38398742676, 35.763931274414}, + {135.492325, 34.486084}, + {12.251129, 53.383942}, + {2.318115, 51.007462}, + {34.997634887695, 31.767654418945}, + {10.341407, 50.324917}, + {27.129677, 38.396994}, + {79.264297485352, 12.24494934082}, + {37.332213, 55.751835}, + {108.246231, 10.956803}, + {57.352066040039, 48.237533569336}, + {135.713577, 34.931412}, + {-16.66145324707, 28.050155639648}, + {-58.666305541992, -34.30549621582}, + {140.88386535645, 38.259201049805}, + {47.741089, 29.08905}, + {24.02229309082, 56.927719116211}, + {29.14192199707, -31.995620727539}, + {1.723861, 46.82056}, + {-103.197515, 40.631678}, + {5.333176, 51.90834}, + {-81.439590454102, 28.217697143555}, + {-0.51292419433594, 38.344345092773}, + {-82.630233764648, 27.778244018555}, + {136.85188293457, 35.100631713867}, + {-84.209518432617, 32.079391479492}, + {17.869263, 43.424835}, + {102.301618, 6.139367}, + {14.118118286133, 50.127182006836}, + {-5.889258, 54.536742}, + {106.81800842285, -6.2738800048828}, + {-118.105087, 33.879501}, + {5.4856109619141, 47.631912231445}, + {-48.439407348633, -20.936508178711}, + {112.77397155762, -7.2063446044922}, + {74.070510864258, 32.549057006836}, + {-121.476059, 38.497238}, + {139.71519470215, 35.702133178711}, + {77.593002319336, 13.024978637695}, + {141.18324279785, 42.453231811523}, + {-74.096796, 40.198342}, + {39.276809692383, -6.7833709716797}, + {85.400161743164, 26.128921508789}, + {27.838668823242, 43.203048706055}, + {26.069869995117, 44.572219848633}, + {-117.255707, 33.189011}, + {-100.399442, 25.676233}, + {111.74125671387, 27.268753051758}, + {51.27799987793, 35.715866088867}, + {8.8076019287109, 41.868209838867}, + {-60.654721, -32.945765}, + {55.110855102539, 24.95475769043}, + {38.037711, 55.620159}, + {-7.6444244384766, 33.569412231445}, + {17.074813842773, 48.144149780273}, + {-50.611953735352, -26.259384155273}, + {76.324768, 22.679901}, + {37.520370483398, 55.625839233398}, + {77.595288, 13.087677}, + {9.2855072021484, 49.237289428711}, + {75.570145, 26.840286}, + {96.191482543945, 16.849594116211}, + {18.206219, 59.339363}, + {77.57926940918, 12.887649536133}, + {78.488205, 17.424911}, + {-97.377703, 32.791044}, + {128.51051330566, 38.209762573242}, + {78.668976, 17.440796}, + {-0.093425, 51.462737}, + {87.968215942383, 23.735275268555}, + {77.259292602539, 29.422073364258}, + {72.554397583008, 23.117294311523}, + {-83.619919, 41.374741}, + {25.945411, 48.253925}, + {46.183121, 51.506568}, + {25.678482055664, 66.502304077148}, + {-65.29655456543, -43.252487182617}, + {8.4958648681641, 47.482223510742}, + {52.669143676758, 36.539840698242}, + {-120.60859680176, 46.386337280273}, + {37.709884643555, 55.625839233398}, + {0.50331115722656, 49.098587036133}, + {10.084748, 53.567794}, + {51.515579223633, 30.20622253418}, + {-0.61454772949219, 44.923782348633}, + {77.146682739258, 28.585739135742}, + {2.545281, 50.299416}, + {-99.194869995117, 19.41764831543}, + {-6.6144561767578, 34.269790649414}, + {12.523727416992, 55.776901245117}, + {6.2546539306641, 45.040512084961}, + {126.835458, 37.618583}, + {-80.236908, 26.223514}, + {5.6256866455078, 6.2999725341797}, + {78.026962280273, 30.353164672852}, + {7.4274444580078, 43.740005493164}, + {-95.43988, 29.723373}, + {95.34553527832, 5.5474090576172}, + {46.733943, 24.605912}, + {-84.955215454102, 32.962417602539}, + {110.68656921387, -7.4343109130859}, + {139.56962585449, 35.691146850586}, + {108.652952, -7.693483}, + {139.594002, 35.402756}, + {90.364608764648, 22.71354675293}, + {90.352249, 22.670517}, + {32.562789916992, 0.29869079589844}, + {30.394411, 54.858441}, + {32.602615356445, -25.88996887207}, + {-3.5053253173828, 54.42008972168}, + {16.563208, 59.637236}, + {18.827133178711, -33.992385864258}, + {77.041855, 28.558273}, + {90.309677124023, 24.041519165039}, + {139.324722, 35.679703}, + {-93.436671, 45.069352}, + {76.667404174805, 31.127700805664}, + {37.376567, 55.789653}, + {73.813705444336, 18.509902954102}, + {35.494766235352, 33.896255493164}, + {5.1161956787109, 50.809707641602}, + {77.564163208008, 12.943954467773}, + {99.72770690918, 6.3947296142578}, + {120.61408996582, 27.791976928711}, + {-2.891459, 51.752129}, + {77.759628, 12.999344}, + {51.452407836914, 25.237655639648}, + {77.279891967773, 28.506088256836}, + {121.482038, 25.050633}, + {58.292770385742, 23.569107055664}, + {4.474182, 8.710785}, + {-4.2276763916016, 55.91423034668}, + {113.32328796387, 23.080215454102}, + {44.964981, 38.561783}, + {36.219863891602, 54.281387329102}, + {40.979690551758, 56.993637084961}, + {18.642941, 49.663651}, + {76.926956176758, 11.037826538086}, + {-54.948806762695, -34.938583374023}, + {56.142196655273, 24.821548461914}, + {-61.562576293945, 16.07780456543}, + {-10.274276733398, 6.1997222900391}, + {-1.7914581298828, 51.530685424805}, + {77.554550170898, 13.020858764648}, + {12.689493, 54.371217}, + {-2.341461, 51.679001}, + {2.1800994873047, 48.913192749023}, + {-78.301620483398, 40.96321105957}, + {22.808303833008, 62.79167175293}, + {-78.930365, 33.645447}, + {18.475570678711, 51.335678100586}, + {76.947555541992, 11.154556274414}, + {72.81120300293, 18.963088989258}, + {8.945395, 50.144067}, + {-71.258902, 42.834968}, + {-46.450774, -23.496443}, + {-119.281998, 36.298828}, + {135.896759, 34.996948}, + {106.6202545166, -6.2381744384766}, + {27.48161315918, -11.628341674805}, + {80.198479, 13.077164}, + {10.761238, 48.802491}, + {103.85444641113, 13.347702026367}, + {123.02421569824, 0.54725646972656}, + {106.81526184082, -6.4894866943359}, + {19.149856567383, 51.179122924805}, + {27.32780456543, 53.916091918945}, + {2.084902, 49.07403}, + {-8.4175872802734, 43.369216918945}, + {101.720332, 3.17189}, + {-6.358109, 53.33107}, + {3.414001, 43.945313}, + {76.885757446289, 43.25798034668}, + {-45.694198608398, -22.257614135742}, + {23.615798950195, 46.11442565918}, + {135.35636901855, 34.431838989258}, + {134.04624938965, 34.284896850586}, + {103.80638122559, 1.2737274169922}, + {100.67085, 13.879183}, + {30.52619934082, 50.462265014648}, + {28.132553100586, -25.981979370117}, + {51.326523, 35.779037}, + {-82.418841, 42.601543}, + {60.615005493164, 56.860427856445}, + {-100.828629, 19.860306}, + {31.028479, -29.723899}, + {151.111358, -33.961553}, + {55.923241, 25.693815}, + {77.728958, 13.384781}, + {120.32844543457, 22.673721313477}, + {-123.13682556152, 49.176864624023}, + {38.101751, 44.556806}, + {0.29406, 51.630422}, + {139.39796447754, 35.72135925293}, + {18.241782, 53.900386}, + {7.498169, 6.473007}, + {0.054244995117188, 43.252487182617}, + {15.330254, 51.21584}, + {15.653457641602, 45.673599243164}, + {10.890884399414, 48.354263305664}, + {-48.892063, -25.194372}, + {0.845679, 52.842618}, + {36.78840637207, -1.2805938720703}, + {15.560073852539, 41.475448608398}, + {36.679916381836, 28.412704467773}, + {-1.5058135986328, 53.899612426758}, + {51.40983581543, 35.791397094727}, + {10.748062133789, 59.525985717773}, + {8.282742, 45.056685}, + {-70.656509399414, -33.460922241211}, + {128.626266, 36.810119}, + {-68.331527709961, -54.81559753418}, + {9.1577911376953, 45.640640258789}, + {-0.713526, 48.111879}, + {99.577044, 13.620552}, + {82.888412475586, 54.992752075195}, + {140.998764, 38.282547}, + {100.874754, 12.916272}, + {-64.186935424805, -31.440811157227}, + {-117.713974, 33.977623}, + {-111.716035, 33.598768}, + {87.547988891602, 25.74577331543}, + {-75.763778686523, 45.510177612305}, + {19.169082641602, 47.54264831543}, + {51.43180847168, 35.586776733398}, + {-8.4766387939453, 51.989364624023}, + {18.546981811523, 54.49836730957}, + {139.50096130371, 35.706253051758}, + {100.58687, 13.735625}, + {101.50199890137, 3.1331634521484}, + {11.71760559082, 45.466232299805}, + {46.31217956543, -15.722122192383}, + {77.366409, 15.176926}, + {17.63786315918, 49.219436645508}, + {-117.918943, 33.994733}, + {-0.25474548339844, 43.33625793457}, + {31.344680786133, 29.975509643555}, + {-73.481369018555, 41.14860534668}, + {9.4818878173828, 45.76286315918}, + {-56.945571899414, -37.178421020508}, + {75.011215209961, 20.473709106445}, + {27.646408081055, 53.932571411133}, + {72.878494262695, 19.10041809082}, + {-0.923948, 52.16476}, + {71.428298950195, 51.166763305664}, + {77.368469, 28.593292}, + {136.88209533691, 35.174789428711}, + {2.612552, 49.489495}, + {73.846664428711, 18.615646362305}, + {0.76011657714844, 42.748489379883}, + {139.63417053223, 35.49201965332}, + {-74.178085, 40.739136}, + {-99.968402, 31.747916}, + {104.52673, 16.940874}, + {-6.896067, 52.834301}, + {35.269546508789, 0.51979064941406}, + {31.402359008789, 31.037063598633}, + {107.631393, -6.998174}, + {91.810684204102, 22.327651977539}, + {20.607895, 50.877414}, + {0.551807, 49.132797}, + {131.46858215332, 34.165420532227}, + {5.598908, 6.432495}, + {-50.481058, -1.68104}, + {11.848068237305, 49.44465637207}, + {12.404251098633, 62.69416809082}, + {15.146713256836, 37.571182250977}, + {3.4243011474609, 6.7092132568359}, + {0.97160339355469, 51.239547729492}, + {-0.35224914550781, 45.331649780273}, + {82.145462036133, 25.369491577148}, + {23.426773, 42.709803}, + {-4.070281, 55.794259}, + {10.26741027832, 36.84196472168}, + {-73.866633, 40.877014}, + {91.077346801758, 29.64729309082}, + {-79.56336, 41.187617}, + {140.13679504395, 36.35856628418}, + {-117.80296325684, 33.658676147461}, + {-0.93452453613281, 51.459274291992}, + {-90.572108, 41.574641}, + {56.335830688477, 25.126419067383}, + {-105.266168, 39.70828}, + {101.76979064941, 3.0095672607422}, + {142.398605, 43.750305}, + {-112.165604, 33.549637}, + {25.273361206055, 54.808731079102}, + {69.630661010742, 42.361221313477}, + {37.678299, 55.816727}, + {92.074356079102, 23.667984008789}, + {100.415019, 13.726576}, + {78.478775, 17.442627}, + {72.827682495117, 19.071578979492}, + {39.072189331055, 45.061111450195}, + {30.89973449707, 29.963150024414}, + {77.632827758789, 13.055191040039}, + {-6.4702606201172, 53.283004760742}, + {-1.760713, 54.67171}, + {109.43000793457, -7.4549102783203}, + {104.658707, 14.753979}, + {135.577927, 34.747696}, + {-0.011672973632812, 51.680374145508}, + {2.1910858154297, 13.465805053711}, + {72.819442749023, 18.975448608398}, + {33.105239868164, 68.95637512207}, + {93.002700805664, 55.995254516602}, + {13.178787, 41.325302}, + {113.71604919434, -8.1635284423828}, + {139.95414733887, 35.844955444336}, + {84.084548950195, 24.00032043457}, + {98.844681, 18.244171}, + {101.2288, 13.02403}, + {34.714736938477, 31.613845825195}, + {85.103530883789, 25.611190795898}, + {-80.787278, 35.833831}, + {9.917569, 50.213237}, + {120.67863464355, 28.014450073242}, + {54.95979309082, 36.395645141602}, + {52.604598999023, 29.571762084961}, + {109.39842224121, 24.303817749023}, + {-1.1006927490234, 52.625198364258}, + {16.249465942383, 40.342483520508}, + {-53.170833, 47.334275}, + {22.488327026367, 39.69841003418}, + {35.783157348633, 32.260665893555}, + {-98.974174, 19.35268}, + {77.113037, 28.643417}, + {0.68046569824219, 52.229690551758}, + {55.38723, 25.343742}, + {74.044418334961, 14.997024536133}, + {44.811172485352, 48.764877319336}, + {33.513107299805, 39.838485717773}, + {-77.223587036133, 42.406539916992}, + {17.375702, 60.698975}, + {-58.611373901367, -34.580154418945}, + {36.909255981445, 37.580795288086}, + {139.54216003418, 36.056442260742}, + {43.911666870117, 56.279525756836}, + {31.332321166992, 30.137557983398}, + {-93.274687, 44.966247}, + {18.921890258789, 50.293350219727}, + {27.53791809082, 53.887252807617}, + {-70.997085571289, 43.761978149414}, + {30.566024780273, 38.728866577148}, + {-79.574615, 43.592247}, + {27.039413452148, 38.85383605957}, + {-82.724015, 27.705315}, + {29.444046020508, 40.120010375977}, + {-82.463551, 27.956535}, + {72.627182006836, 21.71516418457}, + {127.088173, 37.507284}, + {127.033783, 37.282903}, + {127.019527, 37.628446}, + {57.522645, -20.260724}, + {7.01777, 5.529585}, + {116.0767364502, -8.7142181396484}, + {-70.970993041992, 42.372207641602}, + {-98.884506225586, 19.636001586914}, + {77.476272583008, 13.062057495117}, + {73.508834838867, 17.170944213867}, + {25.708694458008, 62.197036743164}, + {79.98664855957, 28.963394165039}, + {88.043746948242, 23.580093383789}, + {78.349685668945, 17.438735961914}, + {46.801071166992, 24.807815551758}, + {36.72248840332, -3.3666229248047}, + {136.28883361816, 35.34782409668}, + {-83.956832885742, 9.9021148681641}, + {40.301837, 40.956303}, + {5.4389190673828, 43.542251586914}, + {-60.625991821289, -32.950057983398}, + {2.2350311279297, 48.818435668945}, + {11.404377, 47.270499}, + {135.53009, 34.768295}, + {140.38948059082, 37.36930847168}, + {51.48811340332, 25.269241333008}, + {15.949127, 48.32122}, + {126.934586, 37.359075}, + {72.822189331055, 18.926010131836}, + {8.2994842529297, 47.637405395508}, + {30.493240356445, 50.462265014648}, + {109.046917, -6.853948}, + {130.794296, 32.161102}, + {-103.29002380371, 20.664596557617}, + {101.67640686035, 3.0837249755859}, + {77.264099, 28.645477}, + {76.659164428711, 8.9421844482422}, + {94.473495483398, 51.600723266602}, + {94.409637, 51.687241}, + {-73.920822143555, 40.647354125977}, + {121.42433166504, 31.159286499023}, + {37.840347290039, 55.730209350586}, + {40.536117553711, -12.97004699707}, + {125.33683776855, 8.9792633056641}, + {120.7445526123, 21.948623657227}, + {9.956897, 53.550996}, + {74.781875610352, 19.10041809082}, + {-2.7925872802734, 54.108352661133}, + {-105.056135, 40.028107}, + {28.352279663086, 57.839584350586}, + {31.336441040039, 30.141677856445}, + {41.678695678711, 27.520065307617}, + {-5.259477, 50.227433}, + {5.725937, 45.708618}, + {5.741923, 45.950995}, + {-71.570162, -33.055688}, + {-80.69938659668, 37.332229614258}, + {100.64918518066, 13.763809204102}, + {-1.6119, 55.133515}, + {9.79676, 49.332544}, + {-86.306881, 39.706424}, + {137.966995, 36.143646}, + {-80.659561157227, 36.11686706543}, + {103.82286071777, 1.3396453857422}, + {1.5195465087891, 43.524398803711}, + {-99.005355834961, 34.069290161133}, + {7.6828765869141, 49.478988647461}, + {73.721694946289, 24.621047973633}, + {112.733416, -7.275038}, + {25.311649, 50.718162}, + {85.321884155273, 23.365859985352}, + {111.52839660645, 36.082534790039}, + {7.2324371337891, 43.682327270508}, + {139.89372253418, 35.858688354492}, + {25.804824829102, -24.829788208008}, + {136.87447, 35.182825}, + {13.263931274414, -8.8790130615234}, + {139.24827575684, 35.783157348633}, + {8.8652801513672, 53.031692504883}, + {6.095989, 48.866874}, + {116.39259338379, 39.879684448242}, + {9.8773956298828, 45.331649780273}, + {-0.389328, 51.017532}, + {-44.899063110352, -23.14338684082}, + {139.80445861816, 36.384658813477}, + {11.267166137695, 54.814224243164}, + {30.333939, 59.990707}, + {-84.08317565918, 39.530868530273}, + {127.310739, 36.635151}, + {42.52533, 43.245621}, + {25.620804, 42.431259}, + {73.599472045898, 18.707656860352}, + {74.945297241211, 30.20622253418}, + {31.091995, 30.879822}, + {127.375938, 36.330226}, + {119.444488, -5.154498}, + {50.17936706543, 26.312942504883}, + {-3.6797332763672, 40.206527709961}, + {40.155715942383, 29.828567504883}, + {-97.423324584961, 27.816696166992}, + {4.2853546142578, 48.734664916992}, + {9.3898773193359, 48.146896362305}, + {-90.392328, 38.336583}, + {-61.006393, 14.493027}, + {12.805252075195, 56.659927368164}, + {-1.3176727294922, 50.905838012695}, + {106.840019, -6.229734}, + {116.35276794434, 27.938919067383}, + {2.43213, 50.987596}, + {2.3174285888672, 48.736038208008}, + {124.56367492676, 11.193008422852}, + {37.674179077148, 55.676651000977}, + {30.870302, 37.885146}, + {-70.947647094727, 42.464218139648}, + {127.402291, 37.5193}, + {39.129867553711, 21.668472290039}, + {13.507004, 52.46109}, + {-97.89436340332, 22.324905395508}, + {-80.221569, 25.804455}, + {-81.531600952148, 30.189743041992}, + {-46.692581176758, -23.593826293945}, + {114.10194396973, 22.360610961914}, + {92.885971069336, 56.01448059082}, + {76.944381, 11.161957}, + {-99.095993041992, 19.405288696289}, + {145.303179, -37.998824}, + {-115.20607, 36.164246}, + {-46.358702, -23.49114}, + {28.792231, 41.002714}, + {125.58265686035, 10.358047485352}, + {8.566861, 53.700174}, + {7.7048492431641, 52.989120483398}, + {102.88902282715, 2.5247955322266}, + {0.62416076660156, 48.764877319336}, + {38.101272583008, 50.212326049805}, + {127.22785949707, 36.925735473633}, + {-43.20442199707, -22.962112426758}, + {-4.68526, 36.503116}, + {-50.366134643555, -29.891738891602}, + {75.181503295898, 27.587356567383}, + {-111.83876037598, 40.47981262207}, + {75.063400268555, 28.094100952148}, + {-94.982987, 29.724884}, + {32.032699584961, 54.873275756836}, + {104.61319, 15.507202}, + {133.65211486816, 34.081649780273}, + {24.947891, 60.190659}, + {125.29975891113, 43.833389282227}, + {2.900876, 42.668209}, + {34.769668579102, 32.062911987305}, + {17.216261, 44.794006}, + {103.14445495605, 5.3180694580078}, + {12.978286743164, 50.855026245117}, + {134.94438171387, 34.677658081055}, + {12.678772, 54.375458}, + {5.712867, 53.284674}, + {37.547836303711, 55.801620483398}, + {-2.315369, 53.508224}, + {-42.405165, -4.964587}, + {-0.29457092285156, 43.649368286133}, + {76.944808959961, 11.298751831055}, + {77.212257, 28.580933}, + {1.9232940673828, 50.194473266602}, + {113.26148986816, 23.110427856445}, + {113.27247619629, 23.181838989258}, + {5.13221, 51.694648}, + {2.1540069580078, 43.583450317383}, + {48.71955871582, 40.584182739258}, + {103.859813, 1.281864}, + {22.002182006836, 50.031051635742}, + {-97.30110168457, 37.663192749023}, + {18.025131225586, 48.880233764648}, + {9.7249603271484, 52.372512817383}, + {19.674453735352, 45.239639282227}, + {17.025375366211, 47.243270874023}, + {-94.873552, 40.331807}, + {10.114974975586, 48.468246459961}, + {39.78630065918, 21.356735229492}, + {-45.184188, -22.809669}, + {-78.866371, 38.434338}, + {-46.440783, -23.442061}, + {60.602645874023, 56.894760131836}, + {-75.081276, 40.04727}, + {-118.028183, 33.773052}, + {139.94316101074, 35.788650512695}, + {-73.626861, 40.705826}, + {28.246536254883, -25.744400024414}, + {0.36323547363281, 51.18049621582}, + {14.081039, 57.197571}, + {112.32490539551, 37.370681762695}, + {100.66727, 13.932167}, + {39.665451049805, 47.267990112305}, + {14.343338012695, 50.139541625977}, + {16.984351, 52.375214}, + {138.21830749512, 37.115249633789}, + {138.61656188965, 35.608749389648}, + {-47.986221313477, -16.048965454102}, + {144.245932, -36.783092}, + {121.68937683105, 25.087966918945}, + {79.321975708008, 19.940872192383}, + {29.470042, 40.710728}, + {11.230775, 51.94295}, + {3.280765, 48.186722}, + {-34.949569702148, -8.0193328857422}, + {32.853927612305, 39.89616394043}, + {22.956619262695, 40.617141723633}, + {145.041435, -37.696219}, + {47.988225, 29.348204}, + {4.3251800537109, 50.795974731445}, + {99.985832, 15.3645}, + {81.635518, 21.243524}, + {121.52458190918, 25.057754516602}, + {8.4491729736328, 48.076858520508}, + {57.153397, 50.319443}, + {-0.585709, 47.33999}, + {101.767182, 3.195848}, + {25.358505249023, 13.619613647461}, + {106.94297790527, 10.770034790039}, + {-54.617062, -25.506544}, + {3.0713653564453, 49.837417602539}, + {-84.204025268555, 35.56755065918}, + {72.83317565918, 18.965835571289}, + {14.277420043945, 40.905532836914}, + {-3.0892181396484, 51.776504516602}, + {27.98463, -26.191308}, + {35.211868286133, 30.191116333008}, + {21.022568, 52.226028}, + {17.147598266602, 49.406204223633}, + {135.162735, 35.299301}, + {11.565170288086, 48.142776489258}, + {-0.810131, 38.450882}, + {45.98258972168, 51.604843139648}, + {-46.515395, -23.46066}, + {135.74638366699, 34.99626159668}, + {10.845565795898, 44.771347045898}, + {30.570626, 60.015133}, + {-71.437912, -32.590256}, + {-53.80852, -29.695212}, + {-81.766628, 41.445843}, + {-80.961685180664, 43.450241088867}, + {-74.020495, 45.80137}, + {-84.175186157227, 33.422470092773}, + {129.070351, 35.130768}, + {-76.825332641602, -12.005996704102}, + {128.589503, 35.842524}, + {72.837295532227, 21.200180053711}, + {136.84501647949, 35.123977661133}, + {-46.33635, -23.482041}, + {-95.930557, 36.138496}, + {72.644577, 23.239059}, + {-84.297409057617, 43.612289428711}, + {51.401596069336, 35.762557983398}, + {73.612599, 19.707421}, + {151.1368560791, -33.819351196289}, + {131.359406, 31.987381}, + {-60.660324, -32.933121}, + {51.720461, 32.653481}, + {72.568130493164, 23.041763305664}, + {47.531661987305, -18.891677856445}, + {-43.950119018555, -19.982070922852}, + {-118.527321, 34.278041}, + {34.812240600586, 50.912704467773}, + {81.079788208008, 16.212387084961}, + {77.642440795898, 12.906875610352}, + {14.499206, 35.876541}, + {79.935836791992, 23.107681274414}, + {77.316970825195, 28.659896850586}, + {106.86882, -6.215515}, + {29.84504699707, 62.620010375977}, + {100.41508, 5.373358}, + {106.11625671387, -6.0102081298828}, + {72.882614135742, 19.403915405273}, + {51.460458, 35.672085}, + {30.449295043945, 50.363388061523}, + {30.71228, 46.435776}, + {100.525023, 13.856557}, + {52.952041625977, 36.511001586914}, + {0.53627014160156, 48.535537719727}, + {2.2858428955078, 48.843154907227}, + {91.845016479492, 26.100082397461}, + {-119.649525, 36.624973}, + {2.058773, 48.788643}, + {106.810817, -6.246382}, + {-80.942459106445, 35.240707397461}, + {-82.472305297852, 34.762802124023}, + {-118.302843, 34.096033}, + {1.6362762451172, 46.924667358398}, + {30.331192016602, -23.617172241211}, + {135.612488, 34.542389}, + {-103.6402130127, 25.499954223633}, + {21.006546020508, 52.259902954102}, + {29.125017, 40.999896}, + {-2.3352813720703, 53.071517944336}, + {-98.23356628418, 19.031753540039}, + {8.557582, 47.981835}, + {14.531478881836, 53.434066772461}, + {23.62678527832, 46.766738891602}, + {-43.17745, -22.921635}, + {-66.889572143555, 10.49674987793}, + {14.209786, 40.936775}, + {10.344864, 55.419846}, + {151.06407165527, -33.846817016602}, + {21.587448120117, 47.958755493164}, + {-82.513504, 27.26944}, + {-103.236916, 47.810597}, + {130.43998718262, 33.573532104492}, + {-58.472671508789, -34.537582397461}, + {-99.130325, 19.354477}, + {-82.495576, 27.975727}, + {31.370773, 30.555496}, + {88.54362487793, 23.194198608398}, + {-58.421965, -34.811954}, + {79.717483520508, 27.024307250977}, + {-98.244927, 35.070847}, + {39.80827331543, 43.540878295898}, + {17.015762, 51.119385}, + {-0.21492004394531, 51.515579223633}, + {100.546358, 13.699825}, + {120.96702575684, 14.59602355957}, + {80.198135375977, 13.092269897461}, + {32.627334594727, 46.640396118164}, + {-6.381709, 57.534391}, + {-1.135025, 44.461899}, + {-7.99221, 31.658821}, + {137.168426, 35.351257}, + {10.033950805664, 36.840591430664}, + {78.596878051758, 17.464828491211}, + {38.125991821289, 56.260299682617}, + {-3.2595062255859, 12.350692749023}, + {-73.521194, 40.670242}, + {99.81634, 13.530025}, + {103.8338470459, 2.4396514892578}, + {121.49436950684, 31.274642944336}, + {113.96598815918, 22.547378540039}, + {35.890274047852, 31.847305297852}, + {-4.641438, 36.567225}, + {139.63279724121, 35.932846069336}, + {16.557083129883, 49.183731079102}, + {35.498886108398, 31.769027709961}, + {-97.780864, 30.443079}, + {103.91899108887, 30.412216186523}, + {-2.4698638916016, 50.638046264648}, + {-66.997375, 10.436325}, + {6.003857, 45.256462}, + {5.8756256103516, 50.415573120117}, + {136.25175476074, 35.53596496582}, + {117.27561950684, 39.143600463867}, + {139.89234924316, 38.704147338867}, + {-116.91993713379, 34.240951538086}, + {5.284008, 52.169576}, + {5.5075836181641, 46.40007019043}, + {100.35255432129, 14.807510375977}, + {10.978469, 50.227577}, + {39.931869506836, 59.216995239258}, + {10.593567, 50.011826}, + {-112.035141, 33.534393}, + {16.547470092773, 47.846145629883}, + {-86.342905, 12.098487}, + {-0.38658142089844, 50.857772827148}, + {121.02607727051, 14.607009887695}, + {-111.882706, 40.698853}, + {-113.531346, 53.549013}, + {-118.353284, 34.15436}, + {-88.656234741211, 32.377395629883}, + {-85.147476, 44.110107}, + {18.317642211914, 50.947036743164}, + {-65.97770690918, 18.423385620117}, + {106.50764465332, -6.9632720947266}, + {81.092147827148, 16.71501159668}, + {78.618850708008, 13.328475952148}, + {-7.6650238037109, 33.569412231445}, + {75.648422241211, 27.528305053711}, + {5.932622, 45.305562}, + {28.94416809082, 41.02912902832}, + {-110.9351348877, 32.220840454102}, + {22.562484741211, 51.262893676758}, + {141.28486633301, 38.619003295898}, + {8.7650299072266, 52.167892456055}, + {-121.84593200684, 37.411880493164}, + {12.483901977539, 41.888809204102}, + {70.841903686523, 22.874221801758}, + {3.599385, 47.836021}, + {3.4462738037109, 50.42106628418}, + {135.472412, 34.794732}, + {-119.532623, 35.497513}, + {-3.12561, 57.624664}, + {120.38475036621, 36.089401245117}, + {30.635897, 50.403381}, + {70.093460083008, 22.474594116211}, + {-76.541061401367, 38.558578491211}, + {-80.108871459961, 26.731796264648}, + {1.842251, 44.972789}, + {50.789566, 35.880661}, + {136.983032, 35.079346}, + {29.106216430664, 40.98518371582}, + {75.894241333008, 13.349075317383}, + {30.21172, 59.650317}, + {73.854904174805, 18.520889282227}, + {77.837448120117, 17.497787475586}, + {29.070510864258, 41.195297241211}, + {106.769017, -6.266506}, + {80.225143, 12.974625}, + {107.677191, -6.938212}, + {-96.243667602539, 36.096267700195}, + {44.630796, 48.924123}, + {-75.567009, 6.267092}, + {-1.051941, 51.279373}, + {121.48750305176, 24.939651489258}, + {-81.160662, 33.783241}, + {37.829360961914, 51.301345825195}, + {-79.360542, 43.720052}, + {12.052688598633, 44.164352416992}, + {-47.36711, -22.747205}, + {-81.539497, 28.366013}, + {8.6853790283203, 49.59846496582}, + {-111.9019317627, 40.769577026367}, + {27.091085, 38.492031}, + {27.54753112793, 52.788619995117}, + {11.572036743164, 3.8761138916016}, + {-115.19371032715, 36.093521118164}, + {3.0466461181641, 44.183578491211}, + {18.467330932617, -33.978652954102}, + {-98.536623, 34.625605}, + {0.21217346191406, 51.970138549805}, + {-3.445079, 56.022539}, + {10.885391235352, 45.919418334961}, + {-6.257675, 53.318573}, + {-102.50862121582, 20.278701782227}, + {100.38226, 14.914028}, + {96.181869506836, 19.380569458008}, + {-87.905044555664, 41.979446411133}, + {55.327835083008, 25.25276184082}, + {-43.276362, -22.826472}, + {-74.757098, 40.206424}, + {76.578140258789, 9.5903778076172}, + {77.289505004883, 28.427810668945}, + {55.327835, 25.185013}, + {101.69288635254, 2.8420257568359}, + {14.61544, 50.935744}, + {-3.671837, 40.401192}, + {36.990280151367, -1.1295318603516}, + {126.787317, 37.499797}, + {23.775100708008, 60.271682739258}, + {-73.491938, 45.56193}, + {37.957077026367, 59.126358032227}, + {3.3487701416016, 50.373001098633}, + {25.888595581055, 40.851974487305}, + {35.879974, 56.873474}, + {133.73039245605, 33.551559448242}, + {71.748275756836, 21.823654174805}, + {37.648086547852, -6.7984771728516}, + {141.181412, 40.204697}, + {51.501846313477, 25.28434753418}, + {80.546951293945, 16.624374389648}, + {-118.376018, 34.0842}, + {-3.2416534423828, 53.26789855957}, + {76.92008972168, 43.262100219727}, + {120.68550109863, 31.336441040039}, + {-123.65455627441, 46.166610717773}, + {78.506240844727, 17.403030395508}, + {-111.883994, 40.771505}, + {121.45042419434, 31.043930053711}, + {104.376178, 15.609041}, + {-3.6989593505859, 40.43586730957}, + {10.18913269043, 45.566482543945}, + {37.451705932617, 55.454177856445}, + {38.455581665039, 55.741195678711}, + {37.657152, 55.711161}, + {-98.184128, 19.093552}, + {34.966049194336, 32.014846801758}, + {-82.492379, 28.108109}, + {-0.30693054199219, 51.286239624023}, + {54.653549194336, 29.192733764648}, + {-96.792526, 32.643814}, + {9.3349456787109, 48.867874145508}, + {139.42268371582, 35.708999633789}, + {18.801876, 51.941377}, + {11.177215, 49.776993}, + {-118.40171813965, 33.885269165039}, + {73.297806, 55.049057}, + {80.213241577148, 13.05793762207}, + {-2.3696136474609, 51.271133422852}, + {0.190248, 51.045884}, + {12.108993530273, 55.934829711914}, + {-46.535094, -23.662122}, + {-2.9683685302734, 48.063125610352}, + {-82.201767, 23.174515}, + {-43.183923, -22.948711}, + {-57.634963989258, -25.281600952148}, + {-73.857650756836, 40.900039672852}, + {-81.616468, 41.235318}, + {121.01234436035, 16.263198852539}, + {6.822144, 49.540418}, + {100.510483, 13.872025}, + {101.744994, 3.061364}, + {61.401292, 54.388085}, + {129.062097, 35.131202}, + {77.057418823242, 28.551406860352}, + {83.95133972168, 21.499557495117}, + {140.86875915527, 38.272933959961}, + {113.23677062988, -7.7625274658203}, + {6.0939788818359, 44.594192504883}, + {102.563553, -3.460007}, + {-2.0194244384766, 53.313217163086}, + {5.6421661376953, 5.5281829833984}, + {151.207565, -33.914355}, + {18.453598022461, -34.201126098633}, + {135.515671, 34.624786}, + {28.929062, 41.081829}, + {-77.686386108398, 18.052597045898}, + {-95.349163, 29.9863}, + {3.882595, 51.449322}, + {12.880783081055, 50.219192504883}, + {-73.880996704102, 40.823135375977}, + {12.511367797852, 55.675277709961}, + {51.477814, 35.648575}, + {100.86753845215, 13.634719848633}, + {31.335754, 30.089493}, + {32.656173706055, 0.38932800292969}, + {-117.16026306152, 32.730331420898}, + {58.104629516602, 23.463363647461}, + {121.65229797363, 31.144180297852}, + {88.404922485352, 22.598190307617}, + {8.6551666259766, 52.993240356445}, + {0.078964233398438, 46.612930297852}, + {79.348068237305, 19.848861694336}, + {12.571792602539, 55.675277709961}, + {77.642440795898, 12.78190612793}, + {80.490646362305, 15.922622680664}, + {114.34776306152, 30.530319213867}, + {11.626282, 48.215561}, + {101.81648254395, 3.1139373779297}, + {3.1427764892578, 45.030899047852}, + {-6.2052154541016, 53.26789855957}, + {40.312271118164, 43.661727905273}, + {2.1196746826172, 41.394424438477}, + {30.321578979492, 59.865188598633}, + {-2.40075, 53.4533}, + {-2.1141815185547, 51.953659057617}, + {29.978256225586, -28.050155639648}, + {31.973648071289, 26.22917175293}, + {3.3034515380859, 48.968124389648}, + {-38.282099, -12.67478}, + {21.069717407227, 46.600570678711}, + {-90.568807, 30.438854}, + {121.253332, 14.062056}, + {-8.9902496337891, 38.958206176758}, + {141.37001, 43.151962}, + {106.35520935059, 11.04606628418}, + {-1.3382720947266, 47.140274047852}, + {75.891494750977, 11.179275512695}, + {73.425064086914, 17.714767456055}, + {-106.413541, 31.790804}, + {39.750595092773, 43.583450317383}, + {116.077278, -8.395226}, + {75.780258178711, 21.04362487793}, + {0.293411, 51.644249}, + {77.638320922852, 12.912368774414}, + {98.24592590332, 8.6647796630859}, + {0.954143, 51.941692}, + {-80.03059387207, 40.426254272461}, + {17.272089, 62.40556}, + {51.416473, 35.668488}, + {51.393356323242, 34.100875854492}, + {76.940689086914, 28.361892700195}, + {-80.810623168945, 32.13981628418}, + {50.981369018555, 35.847702026367}, + {106.631927, 10.765915}, + {6.1200714111328, 46.238021850586}, + {106.12312316895, 29.082870483398}, + {21.402054, 41.992722}, + {56.036453, 53.459473}, + {-80.802615, 35.21933}, + {-99.590594, 35.341119}, + {-0.68595886230469, 39.496536254883}, + {-43.70979309082, -22.721786499023}, + {13.417739868164, 47.990341186523}, + {127.052895, 37.544775}, + {46.986465454102, 35.312118530273}, + {55.309982299805, 25.25276184082}, + {3.8390350341797, 50.452651977539}, + {47.143020629883, 34.364547729492}, + {77.040939331055, 28.414077758789}, + {111.71653747559, 40.823135375977}, + {25.821017, 45.910989}, + {109.89692687988, -7.4027252197266}, + {111.72477722168, 40.813522338867}, + {7.4068450927734, 43.724899291992}, + {106.68754577637, 10.759048461914}, + {11.609115600586, 45.370101928711}, + {44.958114624023, 38.540725708008}, + {2.891464, 48.549271}, + {121.49711608887, 25.027542114258}, + {6.5361785888672, 48.877487182617}, + {-99.047222, 19.675577}, + {-79.632339477539, -2.3737335205078}, + {-84.135864, 33.978855}, + {37.416000366211, 55.873031616211}, + {0.78974, 45.198637}, + {25.929794311523, 44.864730834961}, + {-0.061111450195312, 51.339797973633}, + {-3.699388, 40.570652}, + {-0.33439636230469, 42.957229614258}, + {6.0980987548828, 50.783615112305}, + {135.753937, 35.003128}, + {10.323003, 47.700272}, + {120.31883239746, 16.624374389648}, + {-88.03825378418, 42.344741821289}, + {127.017508, 37.533586}, + {77.11784362793, 28.62419128418}, + {-117.47200012207, 33.828964233398}, + {74.435806274414, 31.469650268555}, + {5.5570220947266, 46.460494995117}, + {30.318832397461, 59.916000366211}, + {77.606735229492, 12.99201965332}, + {12.184018, 43.943346}, + {72.914199829102, 19.052352905273}, + {2.6003265380859, 48.683853149414}, + {5.6298065185547, 36.277542114258}, + {140.10520935059, 35.541458129883}, + {50.98274230957, 35.724105834961}, + {-87.826079, 42.033692}, + {83.079299926758, 54.860916137695}, + {-0.199127, 51.446915}, + {135.490608, 34.699631}, + {135.49781799316, 34.713363647461}, + {124.51698303223, 12.096633911133}, + {104.69627380371, 31.541061401367}, + {18.810912, 47.383419}, + {-2.754528, 52.692686}, + {126.90376281738, 37.948837280273}, + {90.370101928711, 22.70393371582}, + {-96.836929321289, 33.219223022461}, + {106.844115, -6.184109}, + {127.172066, 37.549156}, + {-80.557814, 35.034516}, + {-99.211349, 19.433441}, + {58.208999633789, 23.574600219727}, + {14.611129760742, 40.825881958008}, + {124.9976348877, 11.184768676758}, + {-104.985522, 39.900814}, + {5.3414154052734, 51.633682250977}, + {13.336715698242, 52.478256225586}, + {-119.40010070801, 36.309127807617}, + {37.590408325195, 55.765914916992}, + {6.013641, 49.77562}, + {23.70915, 38.079434}, + {21.331327, 47.329851}, + {9.8801422119141, 44.087448120117}, + {35.641708374023, 30.798110961914}, + {49.183731079102, 55.764541625977}, + {32.774276733398, 29.466018676758}, + {39.751968383789, 54.624710083008}, + {139.271164, 35.698929}, + {30.487747192383, 59.889907836914}, + {-0.631892, 44.791704}, + {-5.8097076416016, 35.790023803711}, + {23.958435, 49.822311}, + {21.425399780273, 41.998672485352}, + {-48.351516723633, -17.317886352539}, + {-0.291451, 51.488621}, + {121.70722961426, 29.816207885742}, + {-59.855575561523, 0.93452453613281}, + {-71.880913, -13.553018}, + {-1.822128, 51.604386}, + {51.643295288086, 32.669906616211}, + {-86.719071, 33.431259}, + {140.0269317627, 35.685653686523}, + {-92.92919, 34.462494}, + {-95.664831, 29.862845}, + {75.710220336914, 33.395004272461}, + {5.1258087158203, 52.020950317383}, + {115.83503723145, 27.439041137695}, + {116.86225891113, 36.712875366211}, + {79.60968, 11.566887}, + {17.743831, 54.439116}, + {9.1934967041016, 57.060928344727}, + {-0.83496, 51.733246}, + {5.078765, 45.84566}, + {-1.1034393310547, 52.899856567383}, + {100.50910949707, 13.711624145508}, + {-1.4316558837891, 43.650741577148}, + {73.024063, 19.04686}, + {-0.60768127441406, 46.220169067383}, + {5.6270599365234, 6.4070892333984}, + {-80.969756, 37.778588}, + {30.269393920898, 59.94758605957}, + {19.14436340332, 50.826187133789}, + {25.101699829102, 60.479049682617}, + {-2.7266693115234, 53.807601928711}, + {31.106415, 29.96933}, + {139.64378356934, 35.637588500977}, + {10.403366088867, 43.669967651367}, + {119.67063903809, -3.7964630126953}, + {-80.629378, 44.04023}, + {28.716201782227, 41.064834594727}, + {30.710220336914, 46.411056518555}, + {72.55989074707, 23.050003051758}, + {18.395919799805, 53.932571411133}, + {103.73634338379, 1.3780975341797}, + {113.999935, 22.367389}, + {122.13432312012, 29.997482299805}, + {16.530533, 50.572128}, + {44.45686340332, 33.341445922852}, + {54.326705932617, 29.191360473633}, + {8.476639, 44.309921}, + {101.69563293457, 3.1441497802734}, + {20.729777, 52.396238}, + {23.335647583008, 37.999649047852}, + {121.43257141113, 31.40510559082}, + {16.835144, 52.408662}, + {8.5356903076172, 50.936050415039}, + {110.775906, -7.551799}, + {4.013958, 49.246731}, + {8.4285736083984, 49.035415649414}, + {-80.389428, 37.786976}, + {23.556747436523, 46.071853637695}, + {-44.388198852539, -20.204544067383}, + {-98.409596, 33.882035}, + {87.749863, 21.829834}, + {-93.760757446289, 33.62434387207}, + {-115.11405944824, 36.289901733398}, + {30.402603149414, 50.482864379883}, + {-84.886543, 43.668873}, + {-76.986329, 38.806155}, + {-66.30729675293, -33.274154663086}, + {37.84309387207, 55.78239440918}, + {174.692549, -36.81568}, + {76.855545043945, 14.699020385742}, + {-85.201034545898, 41.045608520508}, + {-46.588572, -23.51732}, + {139.63691711426, 35.31623840332}, + {34.429092407227, 31.519088745117}, + {-81.067934, 29.190964}, + {13.283157348633, 52.340927124023}, + {1.164093, 48.997422}, + {16.126836, 47.669183}, + {-1.017965, 43.80997}, + {135.931435, 34.996262}, + {90.20393371582, 25.506820678711}, + {14.183482, 42.412326}, + {2.2405242919922, 48.69758605957}, + {120.32707214355, 30.217208862305}, + {81.017990112305, 26.884231567383}, + {-6.0706329345703, 54.711227416992}, + {73.238296508789, 19.173202514648}, + {72.835922241211, 19.149856567383}, + {100.628651, -0.225767}, + {72.857894897461, 19.178695678711}, + {-75.982131958008, 40.563583374023}, + {88.424835, 22.570725}, + {-92.255644, 34.811371}, + {6.099014, 48.832855}, + {10.723342895508, 34.727096557617}, + {7.0429229736328, 50.791854858398}, + {116.47911071777, 39.93049621582}, + {-61.498032, 10.678711}, + {6.234054, 46.200256}, + {-15.952835083008, 23.69270324707}, + {-3.293057, 54.662322}, + {101.67503356934, 3.1221771240234}, + {76.95442199707, 8.4972381591797}, + {37.441406, 55.72197}, + {-71.635665893555, -38.74397277832}, + {-1.460257, 53.365324}, + {3.1826019287109, 50.671005249023}, + {52.327194213867, 35.224227905273}, + {60.62873840332, 56.84944152832}, + {-3.8115692138672, 43.299179077148}, + {28.819198608398, -25.716934204102}, + {-79.674911499023, 44.452743530273}, + {10.120468139648, 54.352798461914}, + {77.577896118164, 13.049697875977}, + {-73.946914672852, 40.651473999023}, + {37.532730102539, 55.800247192383}, + {29.901351928711, 40.77507019043}, + {9.8856353759766, 53.55354309082}, + {10.214243, 56.127459}, + {-157.79731750488, 21.36360168457}, + {-9.5821380615234, 30.409469604492}, + {-43.096694, -22.863432}, + {7.929053, 50.888873}, + {100.374813, 13.718924}, + {-8.4203338623047, 43.33625793457}, + {7.0594024658203, 49.457015991211}, + {12.032089233398, 55.557174682617}, + {-80.22789, 25.754929}, + {138.814774, 37.552872}, + {-72.994274, 45.616596}, + {-1.565964, 12.303452}, + {121.42295837402, 31.244430541992}, + {99.072647, 2.959005}, + {-7.630692, 33.540573}, + {77.595748901367, 12.965927124023}, + {-6.1241912841797, 36.711502075195}, + {121.368942, 37.54097}, + {48.360443, 32.44812}, + {12.46467590332, 51.306838989258}, + {78.390884399414, 29.519577026367}, + {0.51017761230469, 40.656967163086}, + {74.218826293945, 16.697158813477}, + {9.764377, 47.874573}, + {8.996281, 50.849095}, + {153.077359, -26.681411}, + {121.48887634277, 25.065994262695}, + {113.51142883301, 27.40608215332}, + {15.268936157227, 45.780715942383}, + {12.530594, 55.667725}, + {121.09886169434, 14.27604675293}, + {0.097641, 53.176437}, + {4.9582672119141, 49.613571166992}, + {135.5623626709, 34.48127746582}, + {111.67808532715, 29.036178588867}, + {101.13670349121, 4.3416595458984}, + {51.608963012695, 25.27473449707}, + {-73.931829, 40.843416}, + {112.687748, -7.655805}, + {34.775526, 32.092633}, + {16.502838, 50.577621}, + {136.25587463379, 35.280532836914}, + {51.456527709961, 35.791397094727}, + {10.268078, 47.536486}, + {120.14717102051, 30.178756713867}, + {135.50193786621, 34.665298461914}, + {1.100421, 43.62479}, + {29.127811, 41.015317}, + {6.0527801513672, 47.333908081055}, + {121.5259552002, 25.063247680664}, + {106.02149963379, -2.4286651611328}, + {77.149429321289, 28.467636108398}, + {37.620620727539, 55.77278137207}, + {133.57246398926, 33.555679321289}, + {2.4506378173828, 51.039047241211}, + {49.31694, 37.300186}, + {23.641891479492, 62.365951538086}, + {-58.490524291992, -34.474411010742}, + {41.937561, 45.078278}, + {-0.015792846679688, 45.953750610352}, + {-65.473709, -33.69072}, + {139.47074890137, 35.770797729492}, + {7.8092193603516, 49.939041137695}, + {-1.2284088134766, 47.384719848633}, + {140.61332702637, 37.998275756836}, + {127.1042, 35.993118}, + {2.206795, 48.679898}, + {4.4474029541016, 51.926193237305}, + {-0.050125122070312, 43.930892944336}, + {-109.280154, 54.413223}, + {120.32157897949, 31.479263305664}, + {29.082870483398, 41.025009155273}, + {0.12702941894531, 45.327529907227}, + {-97.609841, 28.191267}, + {-121.35292053223, 44.812545776367}, + {-104.7745513916, 38.840103149414}, + {49.441909790039, 40.12825012207}, + {-121.34330749512, 38.356704711914}, + {-98.9661, 19.757427}, + {-81.361312866211, 36.313247680664}, + {-99.001923, 19.615402}, + {-122.57789611816, 45.633773803711}, + {-0.16685485839844, 50.922317504883}, + {-73.155899047852, 5.7424163818359}, + {-5.9154510498047, 35.718612670898}, + {-75.515213012695, 6.2395477294922}, + {126.948116, 37.364085}, + {55.428085327148, 25.31867980957}, + {-121.847898, 37.341843}, + {129.8233795166, 33.145065307617}, + {37.771682739258, 55.72883605957}, + {24.172325, 56.511612}, + {20.963973999023, 52.218704223633}, + {1.3217926025391, 44.098434448242}, + {2.3229217529297, 48.99284362793}, + {76.87614440918, 43.149490356445}, + {136.113052, 35.724792}, + {-1.4055633544922, 50.936050415039}, + {1.714554, 43.830643}, + {104.839205, 11.532792}, + {4.4185638427734, 7.6924896240234}, + {101.61735534668, 3.1029510498047}, + {70.799331665039, 21.965103149414}, + {77.380142211914, 28.617324829102}, + {77.343063354492, 28.672256469727}, + {-100.55717468262, 28.870010375977}, + {78.473281860352, 15.466690063477}, + {140.27961730957, 36.256942749023}, + {-1.371574, 50.897255}, + {124.02946472168, 9.6398162841797}, + {-79.537582397461, 9.0314483642578}, + {140.8715057373, 37.903518676758}, + {2.5426483154297, 41.847610473633}, + {33.186264038086, -3.8898468017578}, + {33.158798217773, -3.9488983154297}, + {77.608109, 12.982864}, + {78.375778198242, 17.44010925293}, + {21.027145385742, 52.173385620117}, + {3.2416534423828, 36.771926879883}, + {9.61235, 55.964355}, + {6.3480377197266, 4.6396636962891}, + {-3.2169342041016, 48.354263305664}, + {-83.230362, 42.243118}, + {101.71471, 15.147659}, + {11.697006225586, 50.098342895508}, + {-51.249160766602, -30.089492797852}, + {28.817825317383, 60.68229675293}, + {8.7815093994141, 34.435958862305}, + {-118.00621032715, 33.724594116211}, + {140.28923034668, 35.678787231445}, + {134.03389, 34.347153}, + {-35.550571, -9.228924}, + {11.053431, 45.343313}, + {127.001756, 37.560708}, + {4.3402862548828, 43.830642700195}, + {-51.743545532227, -29.378128051758}, + {-81.793185, 41.483649}, + {-58.366241, -34.604187}, + {121.03569030762, 14.744338989258}, + {-122.191315, 47.555008}, + {-76.311409, 37.045488}, + {11.512527, 48.133621}, + {-82.398051, 28.06365}, + {77.043685913086, 28.418197631836}, + {77.123336791992, 30.292739868164}, + {11.387189, 48.135201}, + {38.250961303711, 37.774429321289}, + {37.657804, 55.761244}, + {-1.011429, 50.878372}, + {113.034897, 23.091823}, + {15.978927612305, 45.879592895508}, + {7.5826263427734, 50.341415405273}, + {18.269577026367, 59.281539916992}, + {128.637489, 35.859349}, + {35.001754760742, 31.711349487305}, + {7.914359, 50.68153}, + {139.78248596191, 35.708999633789}, + {9.7730255126953, 52.427444458008}, + {139.67811584473, 35.494766235352}, + {103.94645690918, -5.2027130126953}, + {131.910324, 43.13942}, + {137.19245910645, 34.941329956055}, + {-58.427133, -34.761584}, + {-1.7722320556641, 4.9678802490234}, + {26.926379, 58.654298}, + {13.182907104492, 41.689682006836}, + {120.6031036377, 31.247177124023}, + {139.37049865723, 35.714492797852}, + {12.390518188477, 56.077651977539}, + {77.597122192383, 12.994766235352}, + {83.586044311523, 25.387344360352}, + {106.739398, -6.127152}, + {8.2967376708984, 50.165634155273}, + {-6.4221954345703, 53.347549438477}, + {7.8490447998047, 50.447158813477}, + {-5.8989715576172, 54.117965698242}, + {-60.279922485352, -29.88899230957}, + {8.615685, 50.227432}, + {89.249496459961, 25.71418762207}, + {8.6153411865234, 50.227432250977}, + {8.6153411865234, 50.227432250977}, + {73.804092407227, 18.497543334961}, + {2.3476409912109, 42.668838500977}, + {18.445358276367, -33.938827514648}, + {30.340805, 59.957199}, + {141.135178, 39.71077}, + {31.510848999023, 26.763381958008}, + {-79.369602, 43.82152}, + {36.980667114258, 55.601119995117}, + {31.848678588867, 26.334915161133}, + {131.21726989746, 33.977279663086}, + {0.41679382324219, 51.625442504883}, + {-2.1169281005859, 53.527450561523}, + {-6.7998504638672, 62.032241821289}, + {100.280224, 5.385683}, + {16.860580444336, 52.351913452148}, + {-96.959152, 32.99675}, + {78.340072631836, 17.434616088867}, + {-7.52615, 33.592724}, + {-97.750329, 32.962017}, + {37.581488, 55.841393}, + {105.10276794434, -5.0763702392578}, + {3.8925933837891, 43.60954284668}, + {12.504465, 41.89914}, + {117.2193145752, 36.65657043457}, + {18.432998657227, -33.926467895508}, + {8.578262, 49.446716}, + {-0.39756774902344, 39.474563598633}, + {72.84553527832, 19.244613647461}, + {101.013995, 14.129599}, + {-90.490951538086, 14.589157104492}, + {32.061888, -28.765214}, + {5.9154510498047, 50.528182983398}, + {104.72648620605, 31.77864074707}, + {141.06925964355, 38.745346069336}, + {135.43327331543, 34.66667175293}, + {8.2198333740234, 48.844528198242}, + {2.1183013916016, 48.782730102539}, + {48.288345336914, 54.297866821289}, + {-77.132607, 39.102402}, + {77.466659545898, 27.967758178711}, + {1.092128, 49.62886}, + {93.693466186523, 27.097091674805}, + {106.9800567627, -6.2477874755859}, + {101.24646, 12.679723}, + {9.4118499755859, 48.701705932617}, + {121.431373, -30.812621}, + {100.978999, 13.349924}, + {-0.098877, 51.507339}, + {31.31952, 30.080212}, + {106.80702209473, -6.2120819091797}, + {10.010604858398, 48.678359985352}, + {25.858383178711, 60.947341918945}, + {13.144454956055, 50.456771850586}, + {80.183029174805, 12.898635864258}, + {6.0211944580078, 50.887985229492}, + {50.236359, 30.591431}, + {14.075546264648, 50.66276550293}, + {100.475193, 5.246719}, + {-117.668227, 33.484987}, + {23.292618, 42.663345}, + {13.163681030273, 56.232833862305}, + {3.6234283447266, 50.871505737305}, + {5.686044, 52.656501}, + {2.4025726318359, 48.869247436523}, + {29.347915649414, 40.927505493164}, + {54.291001, 27.415009}, + {-0.742209, 52.07646}, + {-6.823916, 34.016836}, + {-1.2723541259766, 50.699844360352}, + {139.701757, 35.68337}, + {-79.846298, 43.247797}, + {4.4954681396484, 50.053024291992}, + {126.639028, 37.466531}, + {132.52601623535, 34.350814819336}, + {-98.570911, 29.528895}, + {35.882034301758, 34.885025024414}, + {72.518692016602, 23.036270141602}, + {-89.593557, 39.864556}, + {106.81114196777, -6.6103363037109}, + {-74.183120727539, 40.979690551758}, + {97.801286, 4.802462}, + {-74.031104, 40.668538}, + {85.376815795898, 22.507553100586}, + {3.268024, 50.847408}, + {18.108901977539, 59.311752319336}, + {10.871658325195, 48.453140258789}, + {51.635055541992, 32.782516479492}, + {10.908737182617, 48.41194152832}, + {101.724487, 3.1239}, + {-8.6222076416016, 41.243362426758}, + {12.161178588867, 48.00407409668}, + {27.922439575195, 43.207168579102}, + {101.5926361084, 3.1510162353516}, + {77.54768371582, 13.00163269043}, + {106.67655944824, 10.840072631836}, + {30.938186645508, 29.968643188477}, + {13.328475952148, 48.405075073242}, + {1.856918, 49.643326}, + {-79.893223, -2.180943}, + {-76.870558, 39.489228}, + {77.72346496582, 29.22981262207}, + {77.175521850586, 28.552780151367}, + {-77.015945, 39.543228}, + {37.878042, 56.007958}, + {75.388870239258, 31.396865844727}, + {13.472671508789, 48.847274780273}, + {-77.487488, 44.10795}, + {120.99174499512, 24.777603149414}, + {120.27076721191, 22.874221801758}, + {10.242691040039, 45.563735961914}, + {77.67951965332, 12.945327758789}, + {76.259536743164, 10.53108215332}, + {14.076919555664, 49.57649230957}, + {2.388284, 48.836235}, + {114.22554016113, 22.31803894043}, + {-100.2921295166, 25.777359008789}, + {14.417495727539, 50.087356567383}, + {9.0850067138672, 45.57746887207}, + {99.588844, 13.970487}, + {65.455856323242, 62.109146118164}, + {13.909378051758, 50.779495239258}, + {37.405014038086, 55.885391235352}, + {78.45817565918, 17.441482543945}, + {-76.852792, 39.598741}, + {35.942459106445, 32.377395629883}, + {10.710983276367, 49.272994995117}, + {-76.838404, 39.551468}, + {32.614974975586, 37.981796264648}, + {30.470248, 50.386135}, + {8.866302, 51.568276}, + {-43.941414, -19.912315}, + {30.301208, -29.556656}, + {19.476699829102, 51.760025024414}, + {51.309798, 35.725881}, + {22.217788696289, 52.172012329102}, + {36.258316040039, 49.991226196289}, + {22.096351, -34.150314}, + {121.0521697998, 14.622116088867}, + {-80.951745, 35.212173}, + {118.18061828613, 29.806594848633}, + {118.33030700684, 29.693984985352}, + {107.07893371582, 16.849594116211}, + {-96.924819946289, 32.649307250977}, + {-70.529034, -33.375319}, + {-118.229027, 33.874283}, + {100.96092224121, 12.950820922852}, + {55.455551147461, -4.6231842041016}, + {-76.556168, 3.453598}, + {-0.46211242675781, 49.064254760742}, + {-99.073883, 19.311768}, + {141.13105773926, 39.716262817383}, + {11.525344848633, 3.8884735107422}, + {-111.711269, 33.343849}, + {-8.0124664306641, 12.665176391602}, + {77.413101196289, 28.554153442383}, + {12.725601196289, 51.363143920898}, + {45.953750610352, 37.928237915039}, + {-81.682662963867, 36.219863891602}, + {46.722793579102, 22.309799194336}, + {37.520370483398, 55.754928588867}, + {120.94779968262, 31.420211791992}, + {32.554550170898, 15.55046081543}, + {11.532211303711, 52.045669555664}, + {75.649795532227, 30.793991088867}, + {11.641821, 48.242306}, + {120.668678, 15.455017}, + {-76.357972, 39.653239}, + {139.38697814941, 35.606002807617}, + {24.763870239258, 60.80451965332}, + {16.607894897461, 47.673110961914}, + {-77.514724731445, 36.68815612793}, + {-111.784828, 33.305659}, + {89.535140991211, 56.203994750977}, + {14.269180297852, 49.999465942383}, + {28.084346, -25.57949}, + {35.555869, 33.888487}, + {8.2074737548828, 48.825302124023}, + {27.62580871582, 53.92707824707}, + {4.875183, 45.782089}, + {11.567916870117, 48.175735473633}, + {50.437545776367, 53.512344360352}, + {-1.5181732177734, 52.351913452148}, + {-97.461889, 20.528319}, + {-69.375214, 10.049091}, + {-76.198613, 39.488047}, + {-0.238254, 52.329994}, + {0.68046569824219, 48.790969848633}, + {90.372848510742, 22.698440551758}, + {90.221786499023, 22.974472045898}, + {1.4138031005859, 43.679580688477}, + {2.601208, 48.777262}, + {12.37587, 41.920395}, + {106.600121, -6.254569}, + {73.937301635742, 18.531875610352}, + {-0.18196105957031, 51.451034545898}, + {105.73173522949, 34.584274291992}, + {-95.02555847168, 29.904098510742}, + {-94.219744, 36.358547}, + {-3.6756134033203, 53.292617797852}, + {1.9768524169922, 47.924423217773}, + {-78.956222, -2.887344}, + {-43.335298, -22.809542}, + {8.322144, 47.037964}, + {-122.987711, 44.960154}, + {39.812393188477, 21.393814086914}, + {10.17951965332, 36.844711303711}, + {-1.759458, 53.767543}, + {30.791244506836, 46.579971313477}, + {-120.47813415527, 47.494583129883}, + {75.18424987793, 12.284774780273}, + {147.43309020996, -42.84049987793}, + {30.581130981445, 59.948959350586}, + {-89.74246, 35.108484}, + {20.799179077148, 41.125259399414}, + {173.67530822754, -34.988021850586}, + {139.65339660645, 35.58952331543}, + {19.103164672852, 42.085189819336}, + {-81.482162475586, 41.119766235352}, + {13.13346862793, 55.616226196289}, + {35.246200561523, 49.889602661133}, + {72.848281860352, 19.177322387695}, + {107.642519, 51.825219}, + {101.71485900879, 3.1139373779297}, + {52.711715698242, 36.71012878418}, + {51.34391784668, 35.700759887695}, + {175.24635314941, -38.178176879883}, + {6.2889862060547, 43.150863647461}, + {1.613859, 50.722511}, + {77.494125366211, 13.815994262695}, + {14.730606079102, 57.72834777832}, + {-0.506541, 43.871418}, + {141.39610290527, 43.171463012695}, + {7.5469207763672, 51.006088256836}, + {-58.777542114258, -34.368667602539}, + {-87.749405, 41.798172}, + {-1.3588714599609, 43.632888793945}, + {114.1527557373, 22.243881225586}, + {76.641311645508, 30.750045776367}, + {106.33186340332, -6.2519073486328}, + {44.570846557617, 48.774490356445}, + {101.76567077637, 3.0370330810547}, + {10.058670043945, 53.601608276367}, + {128.737556, 35.838054}, + {30.984878540039, -17.882308959961}, + {7.4851226806641, 6.4785003662109}, + {78.476028442383, 17.397537231445}, + {23.308029, 42.710648}, + {28.03092956543, -26.171493530273}, + {22.96760559082, 44.802932739258}, + {47.048264, 34.28784}, + {-1.09472, 47.12188}, + {8.1649017333984, 52.236557006836}, + {15.978012, 45.809555}, + {4.9239349365234, 52.331314086914}, + {-72.77961730957, 43.59992980957}, + {-81.817114, 35.018858}, + {14.719619750977, 52.261276245117}, + {77.26203918457, 28.574752807617}, + {-100.04905700684, 41.480941772461}, + {-73.706588745117, 40.683059692383}, + {134.10942077637, 34.784774780273}, + {41.018142700195, 30.96565246582}, + {19.773330688477, 43.067092895508}, + {7.235141, 62.794029}, + {-8.408196, 43.361824}, + {17.865829467773, 46.823043823242}, + {114.23927307129, 30.506973266602}, + {-122.63008117676, 45.569229125977}, + {127.010859, 37.572335}, + {73.853530883789, 18.487930297852}, + {73.136672973633, 22.319412231445}, + {73.15315246582, 22.329025268555}, + {124.17091369629, 0.82878112792969}, + {126.826587, 35.941623}, + {18.38493347168, 46.382217407227}, + {3.842473, 44.833149}, + {100.50086975098, 13.912124633789}, + {3.9186859130859, 46.128158569336}, + {18.846402, 48.911719}, + {127.059691, 37.513579}, + {-8.5851287841797, 54.626083374023}, + {18.342361450195, 49.84016418457}, + {56.326352, 27.209036}, + {13.330784, 52.522734}, + {5.7273101806641, 5.9072113037109}, + {14.465560913086, 46.809310913086}, + {51.521072387695, 35.75569152832}, + {-76.994247436523, 36.976547241211}, + {132.28019714355, 43.462600708008}, + {103.20762634277, 18.391799926758}, + {132.550049, 32.950745}, + {139.13154602051, 34.88639831543}, + {74.233932, 17.054901}, + {121.3858795166, 37.53547668457}, + {121.05628967285, 14.656448364258}, + {9.7428131103516, 47.853012084961}, + {120.74592590332, 31.350173950195}, + {18.546206, 54.322111}, + {56.071472, 26.967316}, + {-2.975103, 53.403085}, + {107.66532897949, -6.9179534912109}, + {51.15852355957, 31.873397827148}, + {121.03294372559, 14.457321166992}, + {135.7202911377, 35.009994506836}, + {51.968771, 35.361567}, + {8.323298, 48.787405}, + {-105.12886047363, 39.727249145508}, + {135.79582214355, 34.934463500977}, + {7.3175811767578, 53.473892211914}, + {17.113265991211, 49.446029663086}, + {-0.784149, 50.826187}, + {9.210391, 49.407116}, + {142.75840759277, 46.963119506836}, + {28.262383, -25.730779}, + {7.2132110595703, 51.868515014648}, + {78.243942260742, 28.826065063477}, + {17.718887329102, 54.745559692383}, + {80.29426574707, 26.46125793457}, + {-2.067375, 53.489227}, + {88.34587097168, 22.502059936523}, + {16.423873901367, 45.447006225586}, + {67.018661499023, 24.898452758789}, + {30.336448, 59.957766}, + {-4.5256805419922, 55.921096801758}, + {52.86003112793, 36.351699829102}, + {9.707708, 48.086369}, + {-0.19569396972656, 52.610092163086}, + {-2.3435211181641, 34.630966186523}, + {103.463974, 1.693039}, + {-97.218704223633, 20.459976196289}, + {-7.4466705322266, 33.636703491211}, + {-7.0113372802734, 54.292373657227}, + {139.71794128418, 35.648574829102}, + {14.560317993164, 49.392471313477}, + {11.588516235352, 48.167495727539}, + {102.92335510254, 25.093460083008}, + {80.139083862305, 12.972793579102}, + {-48.802311, -26.31221}, + {12.515487670898, 41.947860717773}, + {139.60395812988, 36.296768188477}, + {88.385696411133, 22.613296508789}, + {17.799107, 46.95689}, + {-86.394424, 42.113113}, + {28.550033569336, 38.351211547852}, + {-52.770555, 47.508083}, + {77.047806, 28.574066}, + {73.217697143555, 19.184188842773}, + {29.105239, 41.100448}, + {15.984901, 45.830408}, + {39.71076965332, 47.239151000977}, + {9.7908782958984, 4.0848541259766}, + {100.4761505127, 13.681411743164}, + {-117.363982, 33.676293}, + {6.1502838134766, 46.209182739258}, + {15.472183227539, 46.972732543945}, + {103.89289855957, 1.3162994384766}, + {106.815125, -6.233021}, + {115.710602, -0.243331}, + {71.716690063477, 22.360610961914}, + {78.563919067383, 17.477188110352}, + {9.439021, 48.94367}, + {0.87513, 48.198738}, + {135.76011657715, 35.011367797852}, + {-0.0089263916015625, 50.914077758789}, + {22.728652954102, 48.468246459961}, + {10.206299, 44.750061}, + {75.756454, 26.93367}, + {-99.138565063477, 19.325637817383}, + {106.871277, -6.214677}, + {-78.191757202148, 43.041000366211}, + {54.032821655273, 26.524429321289}, + {12.636337280273, 51.250534057617}, + {13.935470581055, 50.958023071289}, + {51.394729614258, 28.657150268555}, + {131.387675, 31.929387}, + {-92.342714, 38.956807}, + {145.22758483887, -37.782669067383}, + {28.333053588867, -26.462631225586}, + {14.527359008789, 35.847702026367}, + {4.2935943603516, 50.855026245117}, + {50.804214477539, 30.36003112793}, + {50.86051940918, 34.765548706055}, + {77.363662719727, 28.574752807617}, + {9.9295806884766, 53.572769165039}, + {-95.162232, 29.679236}, + {21.014934, 52.227943}, + {4.529711, 8.471992}, + {-47.881851196289, -15.777053833008}, + {-3.3803558349609, 37.08366394043}, + {32.717971801758, 39.839859008789}, + {19.32014465332, 47.581100463867}, + {-2.3146820068359, 51.990737915039}, + {11.390762329102, 47.26936340332}, + {112.73551940918, -7.2901153564453}, + {138.40782165527, 34.981155395508}, + {78.190383911133, 26.236038208008}, + {12.139206, 54.109726}, + {135.30693054199, 34.75456237793}, + {37.534349, 55.758789}, + {11.955184936523, 51.085739135742}, + {-5.7946014404297, 54.72770690918}, + {29.165698, 40.91071}, + {51.37825012207, 35.688400268555}, + {136.134567, 35.048447}, + {-2.662125, 55.528336}, + {3.363517, 45.763933}, + {-63.22522, -17.826938}, + {-57.54020690918, -38.020248413086}, + {-116.972122, 32.495499}, + {-96.751099, 31.545181}, + {106.78504943848, 29.551162719727}, + {-51.155776977539, -30.041427612305}, + {120.59074401855, 24.29557800293}, + {35.379868, 33.491135}, + {11.635208129883, 48.233413696289}, + {72.797470092773, 19.174575805664}, + {80.12809753418, 13.115615844727}, + {88.317031860352, 22.489700317383}, + {115.057336, -8.145446}, + {-1.3231658935547, 47.22541809082}, + {1.583101, 47.731886}, + {77.215347290039, 28.681869506836}, + {37.593154907227, 55.71647644043}, + {2.2281646728516, 48.937911987305}, + {9.9542999267578, 48.350143432617}, + {79.831466674805, 11.949691772461}, + {37.638473510742, 55.761795043945}, + {-3.6495208740234, 55.874404907227}, + {25.141525268555, 49.079360961914}, + {-43.17786, -22.910706}, + {54.355545043945, 55.682144165039}, + {15.569579, 62.516626}, + {-2.997262, 53.349319}, + {-77.366409301758, 25.085220336914}, + {116.566866, 39.908828}, + {78.465042114258, 17.422256469727}, + {-8.7389373779297, 42.21565246582}, + {80.94108581543, 26.848526000977}, + {105.61363220215, 21.30729675293}, + {13.426885, 41.922964}, + {106.83174133301, -6.1763763427734}, + {-4.513666, 36.610322}, + {114.9520111084, 25.847396850586}, + {14.520007, 35.886395}, + {37.40364074707, 55.75080871582}, + {36.629104614258, -0.11604309082031}, + {114.169149, 22.37709}, + {-2.937819, 55.77438}, + {136.93634, 35.106125}, + {-60.972061157227, 14.050827026367}, + {5.763088, 50.445061}, + {-89.521408, 34.28009}, + {-81.76195, 41.486057}, + {-3.1262969970703, 53.160781860352}, + {-46.533865, -23.472725}, + {21.050491333008, 52.196731567383}, + {9.7949981689453, 48.980484008789}, + {109.06471252441, -6.8932342529297}, + {-78.638811, 38.884503}, + {11.396255493164, 47.276229858398}, + {31.006851196289, -29.850540161133}, + {15.452537, 47.067742}, + {1.6761016845703, 45.254745483398}, + {30.728073120117, 28.160018920898}, + {-2.455527, 53.420349}, + {3.7676239013672, 51.044540405273}, + {79.897384643555, 6.9770050048828}, + {4.356075, 50.844931}, + {29.696731567383, 40.779190063477}, + {113.943329, 22.584457}, + {-106.36619567871, 31.609725952148}, + {12.49871, 42.007126}, + {99.02442, 18.872871}, + {77.093468, 28.587799}, + {76.569900512695, 27.05451965332}, + {136.787143, -4.689778}, + {-104.702854, 38.715517}, + {-64.736251831055, -21.536636352539}, + {-96.525192260742, 17.024002075195}, + {121.0604095459, 14.829483032227}, + {88.406982, 22.581711}, + {76.707229614258, 28.17512512207}, + {-5.770798, 37.159195}, + {30.747665, 46.466766}, + {119.410629, 26.020432}, + {-3.6454010009766, 50.635299682617}, + {-0.535117, 51.994956}, + {30.366897583008, 59.884414672852}, + {120.98762512207, 14.543838500977}, + {120.86128234863, 40.729751586914}, + {121.57814025879, 25.083847045898}, + {-47.452011, -22.144928}, + {136.91093444824, 35.20637512207}, + {121.76490783691, 39.035110473633}, + {126.982573, 35.951929}, + {142.36839294434, 43.348617553711}, + {72.87712097168, 21.097183227539}, + {77.06428527832, 28.58024597168}, + {-3.7017059326172, 40.466079711914}, + {73.918075561523, 25.97785949707}, + {139.65476989746, 35.439834594727}, + {121.28288269043, 24.150009155273}, + {28.91664, 41.081647}, + {140.142411, 36.125312}, + {88.354110717773, 22.517166137695}, + {-88.492813110352, 13.263931274414}, + {-118.212891, 34.054873}, + {-1.71041, 48.059693}, + {-54.078549, -31.303428}, + {12.799758911133, 52.483749389648}, + {24.057457, 49.792872}, + {21.794128, 60.165939}, + {11.988143920898, 57.710494995117}, + {2.3448944091797, 48.899459838867}, + {34.841515, 31.903644}, + {5.59727, 58.96951}, + {13.483657836914, 55.991134643555}, + {7.4892425537109, 6.4647674560547}, + {8.522515, 52.012562}, + {16.848220825195, 40.909652709961}, + {30.842954, 40.79597}, + {2.3448944091797, 48.856887817383}, + {-4.2015838623047, 48.012313842773}, + {18.157292, 59.169616}, + {-6.159184, 54.724831}, + {121.16203308105, 24.805068969727}, + {0.25611877441406, 52.215957641602}, + {-99.028404, 19.679869}, + {20.967336, 52.199138}, + {-61.983502, -10.858766}, + {121.556168, 25.000534}, + {-95.553339, 29.866642}, + {100.2089, 25.622539}, + {140.93330383301, 39.602279663086}, + {-46.831491, -23.478839}, + {-117.050785, 32.557963}, + {-120.97526550293, 38.575057983398}, + {-73.897476196289, 40.832748413086}, + {105.207138, 21.406174}, + {126.835992, 37.639457}, + {30.918961, 30.078507}, + {-117.107542, 32.679877}, + {108.560357, -6.711481}, + {-121.409226, 38.712387}, + {75.542678833008, 25.515060424805}, + {21.157608032227, 52.805099487305}, + {30.547331, 50.411615}, + {29.534683227539, -27.145156860352}, + {20.996571, 52.19943}, + {11.756057739258, 52.133560180664}, + {72.88948059082, 19.103164672852}, + {0.50880432128906, 51.051406860352}, + {81.780166625977, 16.999282836914}, + {48.748397827148, 38.417129516602}, + {-43.934686, -19.941063}, + {17.078934, 51.127625}, + {100.477155, 13.710109}, + {54.431076049805, 36.837844848633}, + {39.191665649414, -6.1626434326172}, + {-1.3602447509766, 47.148513793945}, + {78.289260864258, 30.100479125977}, + {101.99089050293, 19.749984741211}, + {118.09684753418, 24.438400268555}, + {100.55168151855, 13.718490600586}, + {77.739944458008, 28.964767456055}, + {55.536575317383, 25.532913208008}, + {59.483413696289, 36.324234008789}, + {12.883255, 52.605972}, + {101.56242370605, 3.0960845947266}, + {1.8601226806641, 46.831283569336}, + {35.497512817383, 33.894882202148}, + {77.509231567383, 28.479995727539}, + {49.907473, 40.548808}, + {90.702438354492, 24.139022827148}, + {5.0200653076172, 45.727157592773}, + {39.539108276367, 37.212753295898}, + {2.748421, 50.554057}, + {17.30827331543, 62.392044067383}, + {5.001214, 45.763761}, + {8.3612823486328, 47.480850219727}, + {61.607894897461, 55.099868774414}, + {-3.7772369384766, 40.400161743164}, + {-100.36903381348, 25.727920532227}, + {37.407760620117, 54.731826782227}, + {119.451575, -5.145925}, + {83.307266235352, 17.73811340332}, + {121.082932, 14.625137}, + {-6.5979766845703, 54.319839477539}, + {-68.637771606445, 44.915542602539}, + {5.833498, 43.833848}, + {15.685043334961, 40.945358276367}, + {-117.550783, 33.883526}, + {115.2596282959, -8.6826324462891}, + {-2.716205, 54.893881}, + {101.70799255371, 26.584854125977}, + {106.63536071777, 23.941268920898}, + {128.785227, 36.048653}, + {-88.171463, 13.474503}, + {-73.971633911133, 40.67756652832}, + {51.521072387695, 25.336532592773}, + {82.740097045898, 22.403182983398}, + {-0.44975280761719, 47.362747192383}, + {112.76298522949, -7.3752593994141}, + {76.815719604492, 17.316513061523}, + {81.872177124023, 16.942977905273}, + {3.247914, 50.846182}, + {-98.483505249023, 29.435806274414}, + {8.8103485107422, 52.15690612793}, + {35.20637512207, 31.906356811523}, + {10.281143188477, 36.917495727539}, + {27.868477, -26.103931}, + {72.844161987305, 19.086685180664}, + {30.761032104492, 46.453628540039}, + {99.010848999023, 18.724136352539}, + {140.29197692871, 38.209762573242}, + {-79.143447875977, 44.367599487305}, + {88.42414855957, 22.585830688477}, + {135.2286529541, 34.887771606445}, + {77.150802612305, 28.985366821289}, + {-0.84114074707031, 10.797500610352}, + {121.4298248291, 31.215591430664}, + {48.166692, 28.875937}, + {106.844334, -6.394267}, + {135.58433532715, 34.62272644043}, + {13.519419, 52.399501}, + {100.38276672363, -0.98396301269531}, + {7.668877, 51.574619}, + {-1.6678619384766, 53.640060424805}, + {39.16777, 21.647324}, + {8.440475, 39.117508}, + {3.0562591552734, 42.075576782227}, + {-100.41847229004, 21.101303100586}, + {-73.988571, 40.745316}, + {8.2898712158203, 49.649276733398}, + {7.643927, 48.952924}, + {-73.965775, 45.593038}, + {73.751907348633, 19.950485229492}, + {0.29045104980469, 51.291732788086}, + {73.085861206055, 19.270706176758}, + {32.74543762207, 39.970321655273}, + {-0.011418, 51.457026}, + {173.92936706543, -36.035842895508}, + {132.54661560059, 33.518600463867}, + {-7.946091, 12.677536}, + {-0.26298522949219, 45.451126098633}, + {119.93705749512, 31.812973022461}, + {139.79759216309, 35.71174621582}, + {11.658554077148, 51.418075561523}, + {-7.650116, 33.530982}, + {11.289028, 49.100188}, + {-82.225293, 27.84033}, + {-99.128952026367, 19.318771362305}, + {-78.852725, 42.871477}, + {127.581491, 35.712807}, + {28.263016, -25.811005}, + {29.345856, 40.920639}, + {81.052322387695, 16.346969604492}, + {95.36750793457, 5.5721282958984}, + {116.109636, -8.563251}, + {78.081893920898, 17.61589050293}, + {-122.166228, 47.325997}, + {12.476542, 51.403847}, + {37.406387329102, 55.764541625977}, + {56.113357543945, 25.803451538086}, + {-89.787826538086, 35.261306762695}, + {22.591323852539, 60.642471313477}, + {6.127684, 49.347464}, + {21.408920288086, 47.881851196289}, + {5.8014678955078, 53.20198059082}, + {29.92057800293, 31.210098266602}, + {137.01805114746, 35.044326782227}, + {72.857894897461, 19.300918579102}, + {106.5406036377, 29.41520690918}, + {72.86750793457, 19.421768188477}, + {-1.7008209228516, 6.6982269287109}, + {4.7151947021484, 45.985336303711}, + {10.1346, 36.791524}, + {80.231094360352, 13.05793762207}, + {22.716293334961, 48.440780639648}, + {13.557815551758, 52.470016479492}, + {127.020037, 37.497328}, + {-87.64381, 40.175077}, + {7.710282, 48.697558}, + {78.035202026367, 27.189102172852}, + {25.602951049805, 60.98030090332}, + {-3.9873504638672, 5.3936004638672}, + {8.9545440673828, 56.121597290039}, + {6.2697601318359, 45.383834838867}, + {41.997299194336, 27.517318725586}, + {88.262100219727, 22.350997924805}, + {-89.986266, 32.345123}, + {44.493942260742, 48.779983520508}, + {100.63545227051, 13.815994262695}, + {-1.7900848388672, 38.086166381836}, + {116.61781311035, 40.272445678711}, + {48.692092895508, 31.335067749023}, + {7.381668, 10.522385}, + {88.431473, 22.360611}, + {19.030380249023, 50.366134643555}, + {10.019484, 53.550372}, + {35.268173217773, 32.918472290039}, + {30.450668334961, 50.437545776367}, + {106.73011779785, -6.1241912841797}, + {9.097366, 45.505371}, + {-0.088413, 39.991664}, + {51.38786315918, 35.726852416992}, + {-83.930740356445, 33.035202026367}, + {39.300155639648, 51.516952514648}, + {-0.44151306152344, 53.824081420898}, + {7.2832489013672, 43.69743347168}, + {-65.270462036133, -19.020767211914}, + {60.18928527832, 57.461929321289}, + {-73.615585, 45.620291}, + {105.15495300293, 14.839096069336}, + {-116.61506652832, 53.200607299805}, + {-48.304824829102, -18.910903930664}, + {30.72395324707, 46.47834777832}, + {-71.915817260742, 43.237380981445}, + {113.99070739746, 22.679214477539}, + {-71.187973022461, 42.384567260742}, + {-74.97688293457, -10.879898071289}, + {139.86213684082, 38.906021118164}, + {74.64729309082, 19.377822875977}, + {113.05274963379, 23.066482543945}, + {12.519607543945, 41.913528442383}, + {-5.5158233642578, 34.537582397461}, + {74.264144897461, 32.248306274414}, + {26.501083374023, 44.499435424805}, + {-2.137527, 51.359024}, + {2.4533843994141, 48.881607055664}, + {151.22337341309, 59.571304321289}, + {116.26762390137, 39.894790649414}, + {130.51826477051, 31.513595581055}, + {-75.263900756836, 2.9299163818359}, + {111.522902, 36.229477}, + {-1.5621185302734, 54.079513549805}, + {4.421319, 51.149783}, + {127.09053039551, 37.42561340332}, + {99.413477, 8.360483}, + {121.73057556152, 24.74739074707}, + {-73.182768, 41.184473}, + {-0.84251403808594, 51.338424682617}, + {76.885757446289, 43.234634399414}, + {-96.643556, 33.611817}, + {17.92350769043, 62.646102905273}, + {110.61103820801, -7.5386810302734}, + {15.053329467773, 50.769882202148}, + {121.55067443848, 25.179977416992}, + {-0.55549621582031, 51.698226928711}, + {-0.867883, 52.964403}, + {-95.263137817383, 38.923873901367}, + {121.13594055176, 14.063186645508}, + {121.52870178223, 25.037155151367}, + {54.369278, 31.904984}, + {51.498413, 25.915718}, + {34.099502563477, 53.107223510742}, + {90.434646606445, 23.761367797852}, + {42.685317993164, 16.819381713867}, + {77.60124206543, 12.990646362305}, + {15.722855, 51.728152}, + {55.459213, 25.387344}, + {2.0784759521484, 49.428176879883}, + {52.545547485352, 36.689529418945}, + {-8.127503, 43.239857}, + {-8.528173, 51.856158}, + {7.3917388916016, 51.788864135742}, + {83.570938110352, 26.019058227539}, + {19.611282348633, 50.26725769043}, + {-89.804309, 39.69361}, + {37.836882, 55.653432}, + {-0.55961608886719, 46.437149047852}, + {122.40760803223, 10.669784545898}, + {16.291552, 48.203363}, + {15.095901489258, 37.641220092773}, + {11.555099, 3.88298}, + {-3.1826019287109, 40.32600402832}, + {6.6144561767578, 36.381912231445}, + {-86.158929, 40.915245}, + {-1.527203, 12.366078}, + {-37.07771, -10.87724}, + {-9.8664093017578, 30.686874389648}, + {7.6183319091797, 47.549514770508}, + {-108.548602, 39.072669}, + {58.486404418945, 23.508682250977}, + {-83.363242, 36.046691}, + {105.81825256348, 21.003799438477}, + {127.273594, 36.555642}, + {12.119522, 42.412491}, + {-48.347001, -10.20145}, + {-118.87815, 37.630389}, + {0.48271179199219, 52.588119506836}, + {80.007247924805, 12.769546508789}, + {8.2157135009766, 47.16911315918}, + {14.049453735352, 37.69889831543}, + {73.014450073242, 33.632583618164}, + {25.089340209961, 58.217239379883}, + {116.60820007324, 32.775650024414}, + {90.361862182617, 22.706680297852}, + {72.477493286133, 23.019790649414}, + {105.1261138916, 12.174911499023}, + {54.90348815918, 56.996383666992}, + {34.538955688477, 36.756820678711}, + {139.52842712402, 35.811996459961}, + {16.922092, 52.796012}, + {72.566757202148, 23.074722290039}, + {-5.2713775634766, 6.7861175537109}, + {20.465469360352, 44.794692993164}, + {121.49711608887, 25.136032104492}, + {4.8896026611328, 44.94026184082}, + {24.467239379883, 41.828384399414}, + {112.2452545166, 30.949172973633}, + {0.640537, 51.951212}, + {20.381698608398, 45.085830688477}, + {-1.1336517333984, 53.693618774414}, + {-119.21333312988, 36.357192993164}, + {135.53901672363, 34.626846313477}, + {-75.075759887695, 40.321884155273}, + {85.389175415039, 25.850143432617}, + {12.614364624023, 51.44416809082}, + {92.899703979492, 26.804580688477}, + {-96.652908325195, 34.764175415039}, + {-0.48545837402344, 47.544021606445}, + {101.03370666504, 4.0106964111328}, + {55.39924621582, 25.28434753418}, + {12.207870483398, 51.426315307617}, + {100.503644, 5.356819}, + {-49.57282, -25.46522}, + {77.012100219727, 28.441543579102}, + {-58.380661010742, -34.608993530273}, + {127.030155, 37.541176}, + {6.6034698486328, 53.149795532227}, + {-60.756454467773, -31.311721801758}, + {11.681900024414, 51.794357299805}, + {8.5068511962891, 51.950912475586}, + {106.72462463379, 10.811233520508}, + {20.417404174805, 44.844131469727}, + {116.18522644043, -3.2608795166016}, + {2.3119354248047, 44.113540649414}, + {119.0389251709, 34.786148071289}, + {4.891474, 52.350456}, + {-0.83290100097656, 37.643966674805}, + {7.8861236572266, 48.546524047852}, + {14.38591003418, 40.628128051758}, + {45.008926, 10.433304}, + {-94.982986450195, 29.358901977539}, + {112.76298522949, -7.3697662353516}, + {-94.233169555664, 35.533218383789}, + {-73.962020874023, 40.915145874023}, + {39.968948364258, 31.31721496582}, + {18.69255065918, 45.550003051758}, + {16.103897094727, 65.416030883789}, + {29.379501342773, 40.860214233398}, + {29.365768432617, 40.813522338867}, + {-87.182578, 14.103699}, + {-46.548385620117, -23.534774780273}, + {-119.91645812988, 46.732406616211}, + {74.902725219727, 15.529861450195}, + {73.974380493164, 17.920761108398}, + {115.843277, -31.954079}, + {-82.326736450195, 27.856521606445}, + {108.531922, -6.764114}, + {13.225881, 52.507441}, + {91.98371887207, 21.441879272461}, + {112.55561828613, 37.888412475586}, + {113.42216491699, 29.378128051758}, + {124.54032897949, 7.2049713134766}, + {20.192184448242, 45.021286010742}, + {116.72218322754, 23.397445678711}, + {10.989761352539, 50.925064086914}, + {55.220118, 25.13689}, + {13.47541809082, 42.219772338867}, + {85.098037719727, 25.483474731445}, + {120.3050994873, 22.606430053711}, + {73.933181762695, 15.29914855957}, + {112.96760559082, 28.210830688477}, + {2.8282928466797, 36.478042602539}, + {72.993850708008, 22.529525756836}, + {9.1152191162109, 45.457992553711}, + {45.537643432617, 9.5244598388672}, + {7.220764, 45.821915}, + {-7.3450469970703, 54.17839050293}, + {107.59941101074, -6.9234466552734}, + {116.63841247559, 39.845352172852}, + {120.06477355957, 41.795425415039}, + {-115.2774810791, 32.127456665039}, + {72.842789, 18.919602}, + {2.1897125244141, 48.865127563477}, + {78.492947, 17.394901}, + {120.98762512207, 14.624862670898}, + {120.40534973145, 23.527908325195}, + {54.091415, 56.758804}, + {36.002883911133, 55.572280883789}, + {114.18983459473, 22.555618286133}, + {7.1541595458984, 52.851791381836}, + {108.50715637207, -6.7050933837891}, + {34.580249, 36.792587}, + {32.224960327148, 39.661331176758}, + {102.827367, 16.784155}, + {120.32432556152, 22.727279663086}, + {90.375595092773, 23.787460327148}, + {24.719924926758, 59.390029907227}, + {-78.592758178711, -1.0100555419922}, + {-65.232276, -19.008008}, + {18.132247924805, 59.277420043945}, + {30.259780883789, 38.465194702148}, + {-80.897484, 35.147324}, + {1.720519, 50.022096}, + {20.031509399414, 50.076370239258}, + {7.7007293701172, 48.758010864258}, + {16.227493286133, 40.398788452148}, + {-84.002151489258, 9.9021148681641}, + {-84.194412231445, 33.482894897461}, + {-73.917789, 40.739626}, + {11.587142944336, 50.930557250977}, + {15.025863647461, 50.798721313477}, + {41.599044799805, 41.612777709961}, + {37.840347290039, 55.732955932617}, + {119.83680725098, -0.87684631347656}, + {-46.501281, -23.482491}, + {-80.297661, 25.910551}, + {126.75537, 37.483115}, + {-74.095230102539, 4.6726226806641}, + {80.203628540039, 12.987899780273}, + {-106.656326, 52.118532}, + {-122.19337463379, 47.491836547852}, + {-105.21812438965, 39.756088256836}, + {37.583541870117, 55.797500610352}, + {77.690505981445, 12.986526489258}, + {130.32737731934, 33.548812866211}, + {101.71760559082, 2.8475189208984}, + {-92.394332885742, 41.913528442383}, + {58.886032104492, 36.18278503418}, + {51.390609741211, 35.706253051758}, + {73.057022094727, 19.296798706055}, + {103.7198638916, 29.739303588867}, + {13.839368, 41.449297}, + {85.802536010742, 20.557479858398}, + {32.055487, 46.955313}, + {85.803909301758, 20.554733276367}, + {13.182965, 52.536233}, + {9.9213409423828, 35.614242553711}, + {77.661666870117, 13.015365600586}, + {83.201522827148, 17.687301635742}, + {4.455976, 50.881933}, + {-43.181076049805, -22.966232299805}, + {60.78804, 56.78215}, + {9.13369, 48.709465}, + {135.97984313965, 35.25993347168}, + {103.92860412598, 30.980758666992}, + {32.540817260742, 0.30967712402344}, + {-96.736738, 33.023255}, + {5.3702545166016, 43.568344116211}, + {99.318466186523, 9.1371917724609}, + {72.643661499023, 23.06510925293}, + {120.58387756348, 27.772750854492}, + {2.0207977294922, 41.708908081055}, + {-51.479308, -23.556069}, + {4.403042, 43.788409}, + {39.758834838867, 54.516220092773}, + {28.158026, -26.050559}, + {133.21815490723, 34.419479370117}, + {10.169394, 36.836395}, + {-0.13664245605469, 44.531021118164}, + {73.107833862305, 33.629837036133}, + {1.3176727294922, 41.862716674805}, + {-2.8200531005859, 6.3535308837891}, + {77.355422973633, 28.615951538086}, + {-5.5377960205078, 30.02082824707}, + {15.822372436523, 50.746536254883}, + {102.074559, 14.975563}, + {32.831386, 39.900957}, + {-0.623485, 52.854561}, + {1.083644, 52.545483}, + {32.759170532227, 39.885177612305}, + {-73.870856, 40.867156}, + {-0.21217346191406, 51.430435180664}, + {-97.32254, 49.848101}, + {121.04530334473, 14.475173950195}, + {-1.1679840087891, 52.080001831055}, + {113.6693572998, 22.951126098633}, + {-102.712801, 34.642299}, + {-77.347183227539, 34.729843139648}, + {-74.356316, 4.811873}, + {75.844802856445, 30.888748168945}, + {-47.779676, -20.336695}, + {5.9978485107422, 51.669387817383}, + {74.80110168457, 31.720962524414}, + {72.846908569336, 19.178695678711}, + {73.047409057617, 19.280319213867}, + {9.532013, 48.206635}, + {55.367660522461, 25.302200317383}, + {36.101760864258, -0.27259826660156}, + {88.393936157227, 22.589950561523}, + {28.036422729492, -26.100082397461}, + {116.80046081543, 35.577163696289}, + {9.8787689208984, 52.360153198242}, + {99.580764770508, 3.1194305419922}, + {61.401901245117, 55.147933959961}, + {-8.449173, 41.545486}, + {-75.06477355957, 38.391036987305}, + {121.44905090332, 31.225204467773}, + {122.10273742676, 37.192153930664}, + {29.890365600586, 58.799514770508}, + {13.524856567383, 38.060073852539}, + {31.775894165039, 47.305068969727}, + {23.518295288086, 51.142044067383}, + {72.627182006836, 22.986831665039}, + {5.402447, 43.226855}, + {120.10185241699, 30.303726196289}, + {5.3098297119141, 46.181716918945}, + {100.231365, 13.540295}, + {28.8647, 41.014259}, + {106.897659, -6.91246}, + {-0.97297668457031, 47.62092590332}, + {-80.690926, 34.109751}, + {37.316457, 55.599271}, + {0.069351196289062, 43.240127563477}, + {-117.14296, 32.834326}, + {-97.236348, 31.275322}, + {-8.3544158935547, 43.310165405273}, + {24.757004, 42.133942}, + {77.035446166992, 28.60221862793}, + {43.992691040039, 36.225357055664}, + {10.339737, 55.425797}, + {153.047371, -27.414779}, + {-5.3139495849609, 34.87678527832}, + {-0.311075, 51.570908}, + {11.010360717773, 45.45524597168}, + {49.704208374023, 30.754165649414}, + {-43.296674, -23.00036}, + {18.332748413086, 39.856338500977}, + {-17.467018, 14.718459}, + {-120.838348, 37.48724}, + {139.67262268066, 35.666427612305}, + {24.843521118164, 60.165939331055}, + {-1.3314056396484, 53.310470581055}, + {5.869216, 43.086319}, + {26.686085, 41.242275}, + {111.00791931152, -6.8383026123047}, + {136.72691345215, 35.405502319336}, + {-58.504257202148, -34.559555053711}, + {-117.95539855957, 33.74382019043}, + {100.98976135254, 13.406753540039}, + {39.206805, 21.634286}, + {106.3565826416, 10.224838256836}, + {11.635208129883, 45.376968383789}, + {8.92868, 44.417496}, + {136.66374206543, 34.979782104492}, + {-59.932479858398, -3.0329132080078}, + {112.2534942627, 37.252578735352}, + {36.824111938477, -1.3066864013672}, + {114.09645080566, 23.018417358398}, + {109.029518, -7.698838}, + {106.36756896973, 10.238571166992}, + {46.645835, 24.76597}, + {10.370407104492, 56.339950561523}, + {135.5005645752, 34.663925170898}, + {18.641738891602, -33.992385864258}, + {28.892633, 41.040692}, + {80.563430786133, 16.421127319336}, + {88.145370483398, 25.016555786133}, + {139.19334411621, 35.283279418945}, + {106.670085, -6.220458}, + {3.3666229248047, 6.5842437744141}, + {9.777145, 50.573502}, + {139.66163635254, 35.581283569336}, + {76.579513549805, 30.772018432617}, + {101.64482116699, 3.1002044677734}, + {-8.0001068115234, 32.149429321289}, + {119.49211120605, -5.1848602294922}, + {76.771774291992, 9.6920013427734}, + {126.680526, 36.699438}, + {119.95903015137, 36.769180297852}, + {120.69374084473, 27.923812866211}, + {6.8932342529297, 49.474868774414}, + {28.139419555664, -26.115188598633}, + {104.52598571777, 30.361404418945}, + {7.5908660888672, 51.794357299805}, + {5.277557, 52.391739}, + {127.06443786621, 37.43522644043}, + {9.644623, 45.512924}, + {-123.17802429199, 49.194717407227}, + {12.461929321289, 41.818771362305}, + {-100.62171936035, 25.700454711914}, + {120.28999328613, 22.712173461914}, + {13.422304, 51.51604}, + {2.2061920166016, 41.408157348633}, + {-64.689435, 10.183846}, + {51.304092407227, 35.747451782227}, + {4.3938446044922, 45.415420532227}, + {3.7236785888672, 44.888076782227}, + {-56.214981079102, -34.632339477539}, + {9.1550445556641, 48.90495300293}, + {120.303726, 23.457871}, + {28.151779174805, -26.19758605957}, + {-78.83813, 41.153151}, + {-3.6852264404297, 39.920883178711}, + {-6.5375518798828, 40.578689575195}, + {-8.5095977783203, 41.338119506836}, + {29.098238, 41.041333}, + {39.575829, 24.51318}, + {-44.024825, -19.800937}, + {90.386581420898, 23.753128051758}, + {-49.114775, -26.512161}, + {-1.2792205810547, 52.945175170898}, + {14.429416, 50.064435}, + {-56.846694946289, -37.100143432617}, + {77.411727905273, 12.824478149414}, + {-103.42872619629, 20.73600769043}, + {108.07319641113, 30.72395324707}, + {106.84959411621, 30.995864868164}, + {-73.294061, 45.526917}, + {-73.691482543945, 45.448379516602}, + {11.840951, 45.448178}, + {-43.19297, -22.911601}, + {4.3251800537109, 51.91520690918}, + {10.414352416992, 59.282913208008}, + {-58.50700378418, -34.571914672852}, + {120.2954864502, 22.618789672852}, + {78.418350219727, 17.35221862793}, + {30.259780883789, 59.931106567383}, + {48.101577758789, 36.15119934082}, + {-3.6673736572266, 40.42350769043}, + {3.25551, 6.669595}, + {35.873437, 33.799742}, + {-104.34196472168, 23.950881958008}, + {-104.38179016113, 24.003067016602}, + {76.363906860352, 10.010604858398}, + {28.793576, 40.987426}, + {37.770309448242, 55.81672668457}, + {9.421463, 55.2705}, + {25.968246459961, 48.953018188477}, + {-76.720619, 39.379807}, + {15.06706237793, 38.616256713867}, + {-73.84391784668, 9.9913787841797}, + {77.213973999023, 28.723068237305}, + {61.393661499023, 54.899368286133}, + {-77.127457, -11.883774}, + {-99.940567016602, 20.38444519043}, + {-9.1577911376953, 38.752212524414}, + {14.36482, 50.245187}, + {88.334884643555, 22.486953735352}, + {23.713302612305, 38.06282043457}, + {114.0030670166, 22.447128295898}, + {74.792861938477, 19.21028137207}, + {88.356171, 22.543945}, + {13.394393920898, 52.501602172852}, + {39.629745483398, 50.175247192383}, + {26.394457, 42.528352}, + {2.1965789794922, 49.336166381836}, + {59.509506, 36.306839}, + {42.153854370117, 47.51106262207}, + {-0.10643005371094, 50.813827514648}, + {-42.816626, -5.040155}, + {13.568115, 52.674637}, + {9.4571685791016, 42.508163452148}, + {-81.454696655273, 28.397598266602}, + {-0.20256042480469, 51.061019897461}, + {-49.264755249023, -25.465621948242}, + {126.898996, 37.44204}, + {13.471298217773, 52.615585327148}, + {-73.424419, 45.645585}, + {-84.293703, 41.326444}, + {-96.451672, 35.096644}, + {-0.19706726074219, 51.084365844727}, + {-72.65739440918, 8.6071014404297}, + {-2.16774, 53.868027}, + {114.81880187988, 38.090286254883}, + {14.804763793945, 41.071701049805}, + {-55.40885925293, -27.143783569336}, + {-43.349391, -22.812313}, + {14.107131958008, 46.721420288086}, + {-70.741653442383, -34.157180786133}, + {-97.686279, 32.483503}, + {121.05628967285, 14.576797485352}, + {8.7238311767578, 48.552017211914}, + {2.2611236572266, 46.516799926758}, + {-58.362193, -34.608627}, + {-78.60237121582, -1.0457611083984}, + {12.568564, 56.02874}, + {109.81452941895, 30.479507446289}, + {19.087141, 47.542191}, + {106.35246276855, 10.294876098633}, + {27.890853881836, 40.968704223633}, + {1.3478851318359, 46.030654907227}, + {71.6185, 22.556305}, + {80.15007019043, 13.12385559082}, + {126.983928, 37.530004}, + {73.870010375977, 25.214309692383}, + {-8.3708953857422, 43.31428527832}, + {36.582412719727, 50.622940063477}, + {32.141189575195, 30.51383972168}, + {98.899612426758, 7.9987335205078}, + {16.826248168945, 41.097793579102}, + {-86.431503295898, 35.621109008789}, + {10.923843383789, 45.378341674805}, + {2.5920867919922, 9.3459320068359}, + {16.09977722168, 45.826034545898}, + {102.50587463379, 12.229843139648}, + {13.434219360352, 52.471389770508}, + {150.32112121582, -34.625473022461}, + {-68.882217407227, -32.85530090332}, + {-104.757949, 38.897287}, + {120.50559997559, 23.949508666992}, + {-97.62312, 35.472907}, + {120.182953, 22.901072}, + {-73.963394165039, 40.647354125977}, + {4.8195648193359, 44.879837036133}, + {-39.25895690918, -12.94807434082}, + {9.031028, 58.696441}, + {2.8461456298828, 45.585708618164}, + {51.434555053711, 35.805130004883}, + {3.9873504638672, 49.98161315918}, + {10.535202026367, 52.268142700195}, + {121.09336853027, 14.64958190918}, + {114.33952331543, 30.560531616211}, + {37.521743774414, 55.60661315918}, + {10.037965, 53.560131}, + {82.921829, 54.999161}, + {-84.109602, 10.015205}, + {107.590736, -6.945718}, + {-1.4920806884766, 47.678604125977}, + {13.432846069336, 48.47785949707}, + {-51.188864, -29.880392}, + {6.129527, 53.108098}, + {23.383712768555, 42.336502075195}, + {50.312576293945, 53.303604125977}, + {-8.4175872802734, 33.26042175293}, + {-71.648025512695, -33.026962280273}, + {-6.7380523681641, 34.144821166992}, + {-80.544204711914, 40.526504516602}, + {4.2990875244141, 52.029190063477}, + {-63.162460327148, -17.783432006836}, + {114.11979675293, 22.35237121582}, + {101.82334899902, 2.4053192138672}, + {120.57838439941, 23.955001831055}, + {120.76652526855, 14.306259155273}, + {-118.076582, 34.071088}, + {-79.447688, 43.722187}, + {-88.273174, 41.799041}, + {101.27952575684, 1.1363983154297}, + {-99.669987, 18.858532}, + {30.29411315918, 59.921493530273}, + {75.960846, 12.201004}, + {-123.25355529785, 39.186172485352}, + {98.727951049805, 3.5575103759766}, + {-90.444259643555, 38.514633178711}, + {0.11604309082031, 48.078231811523}, + {72.396469116211, 23.80256652832}, + {-122.060839, 38.694036}, + {13.434765, 52.496562}, + {8.971328, 48.354094}, + {0.096817016601562, 49.363632202148}, + {78.467788696289, 17.405776977539}, + {72.905960083008, 22.415542602539}, + {144.73182678223, 13.469924926758}, + {24.912185668945, 57.070541381836}, + {7.1417999267578, 51.42219543457}, + {3.8898468017578, 7.8119659423828}, + {77.452926635742, 28.610458374023}, + {9.188005, 47.750015}, + {-80.273666381836, 36.061935424805}, + {17.268447875977, 49.595718383789}, + {27.693099975586, 53.946304321289}, + {11.802749633789, 50.541915893555}, + {113.97422790527, 22.394943237305}, + {74.100723266602, 18.67057800293}, + {88.14811706543, 25.000076293945}, + {137.01805114746, 35.058059692383}, + {34.909075, 32.450275}, + {11.499252319336, 49.826431274414}, + {18.02375793457, 59.330978393555}, + {39.662704467773, -4.0573883056641}, + {112.90718078613, 22.643508911133}, + {0.30513, 51.484163}, + {4.6698760986328, 52.026443481445}, + {-86.630630493164, 35.397262573242}, + {11.740951538086, 48.167495727539}, + {78.187637329102, 9.9488067626953}, + {126.917441, 37.57317}, + {30.365524291992, 50.426559448242}, + {-0.179867, 53.106136}, + {114.33403015137, 30.487747192383}, + {1.771777, 49.768302}, + {-89.686973, 35.062327}, + {30.332565307617, 60.410385131836}, + {-96.879501342773, 18.860092163086}, + {12.229843139648, 45.655746459961}, + {-89.734268188477, 20.844497680664}, + {-22.712173461914, 16.066818237305}, + {32.628747, 39.957387}, + {9.5134735107422, 51.408462524414}, + {31.048049926758, 58.883285522461}, + {72.618942, 23.065109}, + {37.657699584961, 55.70686340332}, + {-83.556992, 40.295596}, + {-74.234107, 40.697398}, + {9.490965, 52.155253}, + {-82.91862487793, 40.120010375977}, + {12.419357299805, 41.824264526367}, + {106.947697, -6.276037}, + {-43.952865600586, -19.840621948242}, + {30.859909057617, 28.978500366211}, + {-47.063369750977, -22.828903198242}, + {-46.581723, -23.466437}, + {12.468795776367, 41.82975769043}, + {-80.10612487793, 26.10969543457}, + {-57.621231079102, -25.295333862305}, + {6.9152069091797, 50.963516235352}, + {16.187196, 48.814419}, + {37.860946655273, 56.420974731445}, + {32.049296, 49.390698}, + {-101.415392, 20.938477}, + {-101.33171081543, 20.749740600586}, + {3.267121, 48.465597}, + {116.3143157959, 32.614974975586}, + {42.48893737793, 18.229751586914}, + {76.413345336914, 10.112228393555}, + {65.28694152832, 55.433578491211}, + {76.328201293945, 10.01335144043}, + {77.282638549805, 28.626937866211}, + {112.766595, -7.342372}, + {74.61296081543, 42.880325317383}, + {100.425859, 6.430684}, + {9.8032379150391, 44.10530090332}, + {38.981648, 45.101545}, + {50.990982055664, 35.707626342773}, + {101.41960144043, 0.47721862792969}, + {29.739303588867, 60.422744750977}, + {91.790084838867, 26.145401000977}, + {127.090206, 37.596887}, + {42.930378, 16.59285}, + {5.2576446533203, 7.7172088623047}, + {88.290939331055, 26.506576538086}, + {8.457042, 49.492461}, + {-47.942276000977, -15.864944458008}, + {25.141525268555, 54.624710083008}, + {3.2018280029297, 39.953842163086}, + {120.50010681152, 22.698440551758}, + {10.318702, 47.785249}, + {-43.47770690918, -23.02116394043}, + {121.48338317871, 25.078353881836}, + {10.731582641602, 53.697738647461}, + {-73.765754, 41.020102}, + {-72.497157, 7.887083}, + {13.343582, 52.565231}, + {29.173237, 41.033769}, + {-78.970413208008, 43.969345092773}, + {8.7499237060547, 45.979843139648}, + {67.017288208008, 24.850387573242}, + {30.566024780273, 59.74983215332}, + {10.018636, 53.59469}, + {16.598281860352, 43.183822631836}, + {16.975768, 52.846957}, + {30.001602172852, 31.255416870117}, + {75.79948425293, 11.290512084961}, + {21.532516479492, 52.107467651367}, + {-46.639022827148, -23.597946166992}, + {137.08534240723, 35.075912475586}, + {-6.3480377197266, 53.407974243164}, + {14.302139282227, 40.864334106445}, + {142.760651, -34.581593}, + {35.059432983398, 32.624588012695}, + {9.867784, 53.55423}, + {-2.8186798095703, 53.262405395508}, + {-39.287796020508, -14.814376831055}, + {7.7158355712891, 44.969100952148}, + {-45.93864440918, -12.729721069336}, + {99.863662719727, 8.1237030029297}, + {-3.9626312255859, 51.626815795898}, + {106.81663513184, -6.1475372314453}, + {100.379254, 7.052507}, + {-74.178085, 40.56221}, + {-40.272445678711, -20.326766967773}, + {139.6671295166, 35.685653686523}, + {18.515872, 46.172855}, + {66.955490112305, 39.672317504883}, + {-3.942719, 50.307083}, + {120.70472717285, 40.630874633789}, + {102.72285461426, 25.004196166992}, + {-2.370113, 53.389589}, + {77.831954956055, 30.104598999023}, + {78.080520629883, 30.436935424805}, + {-9.136616, 38.707449}, + {104.64958190918, 30.122451782227}, + {-80.130832, 25.926486}, + {37.811508178711, 55.783767700195}, + {19.965591430664, 51.56364440918}, + {13.430099487305, 52.489242553711}, + {108.43849182129, 11.938705444336}, + {13.250198364258, -8.9476776123047}, + {106.93885803223, -6.2395477294922}, + {-121.225627, 38.720922}, + {21.601181030273, 42.054977416992}, + {27.871627807617, -26.157760620117}, + {135.069351, 48.505325}, + {-79.993874, 37.312414}, + {2.8969573974609, 50.90446472168}, + {109.31053161621, -7.0992279052734}, + {9.160712, 53.080027}, + {7.432027, 48.763178}, + {20.525062, 47.18692}, + {10.041314, 53.556732}, + {15.244216918945, 40.091171264648}, + {106.88255310059, -6.1612701416016}, + {6.0184478759766, 53.131942749023}, + {18.457717895508, 50.000839233398}, + {-72.664260864258, -40.757217407227}, + {-3.3419036865234, 56.044692993164}, + {83.956832885742, 28.209457397461}, + {-87.660796, 41.793625}, + {10.109345, 53.539622}, + {24.014053344727, 49.724807739258}, + {121.3062286377, 31.302108764648}, + {-115.06050109863, 36.088027954102}, + {-7.8929901123047, 41.47819519043}, + {73.875503540039, 19.986190795898}, + {107.08442687988, 10.337448120117}, + {-65.666565, 18.32134}, + {114.03327941895, 22.628402709961}, + {106.71363830566, 10.741195678711}, + {17.775192260742, 53.75129699707}, + {8.9572906494141, 44.393692016602}, + {33.890762329102, 27.069625854492}, + {30.420455932617, 59.896774291992}, + {22.127151489258, -30.968399047852}, + {10.053822, 53.553795}, + {18.665084838867, 52.96989440918}, + {0.41954040527344, 40.42350769043}, + {23.000566, 61.515448}, + {0.78620910644531, 40.873947143555}, + {15.904769897461, 50.356521606445}, + {-71.162338, 42.721024}, + {-90.141038, 30.751941}, + {39.238357543945, 51.324691772461}, + {46.668829, 24.718263}, + {-78.958976, 34.976007}, + {-111.75498962402, 33.22883605957}, + {99.914474487305, 12.88215637207}, + {-88.175582885742, 13.48503112793}, + {116.051281, 5.923137}, + {2.9395294189453, 30.517959594727}, + {-0.114823, 51.530467}, + {30.475507, 50.448417}, + {76.518402, 30.975266}, + {135.471054, 34.755252}, + {76.421585083008, 10.029830932617}, + {55.289308, 25.269054}, + {-1.963806, 42.291183}, + {31.400985717773, 30.148544311523}, + {27.612075805664, 53.924331665039}, + {106.79328918457, -6.6199493408203}, + {30.298159, 60.068774}, + {13.421708, 52.535869}, + {13.317489624023, 52.489242553711}, + {77.190628051758, 28.65852355957}, + {139.9390411377, 35.866928100586}, + {39.154586791992, 21.543502807617}, + {6.567265, 53.21778}, + {75.817337036133, 30.928573608398}, + {36.328353881836, 41.257095336914}, + {51.221694946289, 25.440902709961}, + {72.824935913086, 19.052352905273}, + {8.7100982666016, 49.411697387695}, + {-46.658359, -23.503091}, + {61.466445922852, 57.02522277832}, + {120.40397644043, 37.383041381836}, + {35.026473999023, 48.392715454102}, + {3.18571, 50.670315}, + {40.526318, 45.440403}, + {51.364517211914, 35.67741394043}, + {20.022152, 46.335891}, + {72.433547973633, 23.312301635742}, + {5.0640106201172, 51.556777954102}, + {52.351913452148, 36.479415893555}, + {60.654203, 56.843025}, + {-55.969161987305, -16.20002746582}, + {51.485366821289, 25.928421020508}, + {-101.657211, 21.099007}, + {-7.9932403564453, 43.549118041992}, + {14.511272, 35.893303}, + {33.503494262695, 26.671371459961}, + {-117.05863952637, 33.109359741211}, + {43.880081176758, 56.339950561523}, + {146.991989, -6.725967}, + {14.423136, 48.096089}, + {18.486557006836, -33.890762329102}, + {13.173336, 55.727627}, + {-2.6580047607422, 51.838302612305}, + {80.357437133789, 7.2461700439453}, + {37.84309387207, 55.761795043945}, + {-46.446645, -24.011387}, + {135.48820495605, 34.721603393555}, + {-6.9701385498047, 30.938186645508}, + {128.100986, 35.155615}, + {55.515975952148, 25.42854309082}, + {-2.3339080810547, 53.766403198242}, + {100.07514953613, 17.604904174805}, + {-96.867141723633, 32.995376586914}, + {-74.643572, 40.87255}, + {38.147964477539, 56.313858032227}, + {-82.652206420898, 27.496719360352}, + {117.22480773926, 31.818466186523}, + {19.878999, 49.493895}, + {17.135238647461, 50.823440551758}, + {76.48063659668, 10.108108520508}, + {-1.025396, 53.19246}, + {126.920743, 37.635702}, + {88.263473510742, 23.551254272461}, + {21.390209, 38.619003}, + {16.657883, 50.437546}, + {100.467809, 13.713462}, + {121.20185852051, 24.868240356445}, + {75.983505249023, 31.450424194336}, + {103.16230773926, -3.2375335693359}, + {77.012100219727, 11.015853881836}, + {1.731924, 43.08411}, + {28.001183, -26.024944}, + {10.164413452148, 36.681289672852}, + {10.171279907227, 36.653823852539}, + {-96.346195, 19.198805}, + {21.90934, 47.045677}, + {138.92280578613, 36.586532592773}, + {-83.945846557617, 30.861282348633}, + {4.5449066162109, 7.7968597412109}, + {20.17707824707, 63.768081665039}, + {121.77314758301, 24.674606323242}, + {14.260735, 58.312769}, + {0.168013, 52.686132}, + {24.942398071289, 44.985580444336}, + {3.285082, 6.639954}, + {76.212844848633, 10.492630004883}, + {55.937576293945, 54.730453491211}, + {27.54753112793, 53.902359008789}, + {39.157333374023, 21.608047485352}, + {-0.78071594238281, 51.398849487305}, + {31.162033081055, 30.98762512207}, + {114.06349182129, 22.540512084961}, + {-2.2322845458984, 43.300552368164}, + {4.9266815185547, 45.052871704102}, + {113.95500183105, 22.535018920898}, + {8.803306, 59.931469}, + {73.924942016602, 16.926498413086}, + {-100.400162, 20.590439}, + {7.652002, 47.944193}, + {112.768991, -7.326936}, + {-93.967486, 35.527473}, + {120.98762512207, 14.611129760742}, + {9.9391937255859, 54.185256958008}, + {-51.167959, -29.632645}, + {-6.5677642822266, 39.231491088867}, + {120.96565246582, 14.645462036133}, + {19.609909057617, 51.944046020508}, + {7.3436737060547, 10.675277709961}, + {-2.4053192138672, 57.052688598633}, + {6.109898, 48.937587}, + {5.3894805908203, 43.304672241211}, + {41.43424987793, 20.021896362305}, + {-9.1316986083984, 38.732986450195}, + {92.483596801758, 56.180648803711}, + {109.40940856934, 24.294204711914}, + {130.81077575684, 32.054672241211}, + {98.983383178711, 18.70491027832}, + {-97.076746, 32.661869}, + {12.626724243164, 41.85173034668}, + {-103.508202, 19.830312}, + {139.8868560791, 34.904251098633}, + {-4.7852325439453, 54.908981323242}, + {136.20918273926, 35.993270874023}, + {123.37577819824, 9.9803924560547}, + {141.12693786621, 39.705276489258}, + {-104.629227, 50.503774}, + {84.526748657227, 53.248672485352}, + {139.81544494629, 35.695266723633}, + {-81.077412, 33.932118}, + {110.82389831543, -7.5881195068359}, + {9.0232086181641, 50.254898071289}, + {85.374069213867, 23.400192260742}, + {137.33253479004, 35.423355102539}, + {51.420822143555, 35.706253051758}, + {135.39070129395, 34.76692199707}, + {2.4149322509766, 48.89533996582}, + {32.888259887695, -2.5261688232422}, + {39.650344848633, 47.309188842773}, + {56.274032592773, 58.015365600586}, + {2.14212, 48.441049}, + {110.878643, -6.823049}, + {72.74528503418, 23.567733764648}, + {8.5631561279297, 50.051651000977}, + {12.302628, 45.19043}, + {130.60340881348, 32.808609008789}, + {72.796096801758, 24.535903930664}, + {29.582748413086, 30.934066772461}, + {14.267807006836, 55.621719360352}, + {120.96153259277, 14.60563659668}, + {137.38334655762, 34.757308959961}, + {9.4846343994141, 53.933944702148}, + {7.8270721435547, 44.661483764648}, + {-73.891983032227, 40.842361450195}, + {12.809371948242, 56.109237670898}, + {3.8912200927734, 6.5142059326172}, + {114.33815002441, 30.976638793945}, + {12.659542, 56.059243}, + {11.438827514648, 44.429397583008}, + {75.627822875977, 14.620742797852}, + {105.2661895752, -5.3936004638672}, + {132.49992370605, 34.394760131836}, + {15.083394, 50.756222}, + {0.036392211914062, 43.79768371582}, + {139.6671295166, 35.599136352539}, + {8.4931182861328, 47.631912231445}, + {35.505752563477, 32.829208374023}, + {93.902206420898, 21.234512329102}, + {-0.010244, 51.513632}, + {94.798965454102, 20.903549194336}, + {119.81346130371, 31.422958374023}, + {29.067764282227, 40.971450805664}, + {20.196304321289, 47.156753540039}, + {59.538345336914, 36.344833374023}, + {7.3065948486328, 48.64128112793}, + {7.2118377685547, 48.667373657227}, + {13.062057495117, 52.588119506836}, + {9.599991, 45.672913}, + {5.4059600830078, 45.069351196289}, + {-5.6449127197266, 32.89924621582}, + {8.5453033447266, 47.390213012695}, + {5.257645, 51.795731}, + {8.6537933349609, 49.10270690918}, + {-84.37326, 33.849685}, + {-99.247081, 19.428085}, + {-95.178328, 29.638839}, + {26.96662902832, 41.57844543457}, + {-17.107772827148, 14.549331665039}, + {126.558659, 37.489107}, + {82.969436645508, 55.020217895508}, + {-83.228988647461, 42.615280151367}, + {-97.678325, 30.420095}, + {13.263931274414, 52.457656860352}, + {139.48036193848, 35.482406616211}, + {-99.130325317383, 19.359970092773}, + {-91.151504516602, 14.645462036133}, + {144.333053, -38.141729}, + {-75.638809204102, 4.5339202880859}, + {-87.653732299805, 41.947860717773}, + {77.087631225586, 28.845291137695}, + {-102.63359069824, 50.101089477539}, + {32.068405151367, 49.417190551758}, + {11.813735961914, 43.788070678711}, + {80.190473, 12.971366}, + {1.6967010498047, 52.46452331543}, + {73.187484741211, 22.319412231445}, + {139.6314239502, 35.665054321289}, + {17.404403686523, 52.799606323242}, + {75.744552612305, 26.940536499023}, + {30.280380249023, 59.983291625977}, + {-8.8364410400391, 41.875076293945}, + {59.672241, 36.292648}, + {131.90233, 43.120517}, + {114.00444030762, 32.976150512695}, + {72.791791, 21.212901}, + {-1.350302, 37.84286}, + {106.758776, -6.241435}, + {-73.857650756836, 45.76286315918}, + {5.282601, 51.758319}, + {105.93910217285, 9.7194671630859}, + {121.54518127441, 38.95133972168}, + {135.79856872559, 34.426345825195}, + {82.88703918457, 18.324508666992}, + {24.464492797852, 58.994522094727}, + {-82.94059753418, 42.716903686523}, + {101.583603, 3.309494}, + {47.998580932617, 29.33967590332}, + {67.290573120117, 36.729354858398}, + {83.428115844727, 18.773574829102}, + {10.767288208008, 44.230270385742}, + {75.409469604492, 27.392349243164}, + {6.241101, 46.170099}, + {5.7080841064453, 53.093490600586}, + {26.58073425293, 49.178237915039}, + {31.560287475586, 30.787124633789}, + {15.705642700195, 50.415573120117}, + {113.29582214355, 23.056869506836}, + {50.393706, 53.054896}, + {98.395001, 7.882782}, + {10.642318725586, 53.571395874023}, + {37.641220092773, 55.737075805664}, + {-4.5174407958984, 51.018447875977}, + {12.786026000977, 57.108993530273}, + {2.6209259033203, 50.787734985352}, + {28.913955688477, 41.085433959961}, + {30.057614, 59.711333}, + {-86.212795, 39.595934}, + {10.732955932617, 59.616622924805}, + {-44.06234, -19.944727}, + {-90.466232299805, 38.676681518555}, + {19.415515, 53.281767}, + {14.436721801758, 50.131301879883}, + {26.104202270508, 49.856643676758}, + {101.80000305176, 2.9766082763672}, + {12.485275268555, 41.787185668945}, + {-114.17198181152, 48.318557739258}, + {-103.05107116699, 20.553359985352}, + {-117.878653, 33.891934}, + {108.440622, -6.733792}, + {-90.513771, 14.615499}, + {-81.071548461914, 35.553817749023}, + {-121.92283630371, 37.252578735352}, + {-117.889321, 33.914591}, + {100.144138, 14.429833}, + {-90.08171081543, 30.007095336914}, + {121.92008972168, 39.378433227539}, + {-99.02458190918, 18.891677856445}, + {-57.082901000977, -33.289260864258}, + {-116.71806335449, 43.735885620117}, + {139.78797912598, 35.781784057617}, + {120.940347, 14.980681}, + {-8.5054779052734, 42.512283325195}, + {3.1537628173828, 42.116775512695}, + {36.302261352539, 52.787246704102}, + {35.84358215332, 31.981887817383}, + {27.973251342773, 43.229141235352}, + {-104.74708557129, 21.097183227539}, + {141.45652770996, 38.779678344727}, + {18.025131225586, 59.328231811523}, + {15.056854, 50.292564}, + {101.1270904541, 12.73796081543}, + {139.61769104004, 36.114120483398}, + {6.284548, 48.957695}, + {-47.003587, -22.998918}, + {117.207891, -0.774365}, + {74.754409790039, 18.290176391602}, + {47.824172973633, 52.018203735352}, + {4.670925, 52.284862}, + {137.03590393066, 35.071792602539}, + {-117.81257629395, 33.852310180664}, + {30.806011, 46.57856}, + {73.806838989258, 18.597793579102}, + {13.653945922852, 42.601547241211}, + {31.728593, 30.286998}, + {14.285708, 55.923778}, + {103.364337, 3.876476}, + {-99.237442016602, 19.501419067383}, + {108.53874206543, -6.9948577880859}, + {73.832931518555, 15.458450317383}, + {-4.0532684326172, 40.736618041992}, + {51.407089233398, 35.710372924805}, + {77.186508178711, 30.06477355957}, + {-2.18259, 52.506108}, + {4.1356658935547, 50.96076965332}, + {-8.4903717041016, 51.84928894043}, + {121.01097106934, 14.567184448242}, + {76.376266479492, 32.104110717773}, + {76.380386352539, 32.084884643555}, + {-7.2516632080078, 42.454605102539}, + {-100.320506, 21.04096}, + {-2.6964569091797, 36.792526245117}, + {-70.593338012695, -32.685012817383}, + {-9.4187164306641, 38.960952758789}, + {-6.3397979736328, 54.958419799805}, + {114.38621520996, 30.468521118164}, + {37.819747924805, 55.774154663086}, + {21.179977, 48.306418}, + {-76.720381, 39.417743}, + {-0.37696838378906, 51.249160766602}, + {111.46659851074, -7.8119659423828}, + {-116.209852, 43.632632}, + {21.262368, 48.196891}, + {107.62902, -6.924469}, + {-73.804567, 45.847081}, + {20.866697, 48.095336}, + {112.74925231934, -7.2447967529297}, + {-95.386734008789, 29.737930297852}, + {3.0617523193359, 36.70051574707}, + {-84.636904, 39.002725}, + {-76.948928833008, -12.239456176758}, + {77.233200073242, 28.666763305664}, + {72.56950378418, 23.044509887695}, + {-48.965192, -16.335222}, + {-117.20970153809, 32.875900268555}, + {2.6277923583984, 44.367599487305}, + {-43.176269, -22.906616}, + {36.877670288086, -1.2462615966797}, + {76.611099243164, 28.192977905273}, + {13.048324584961, 46.790084838867}, + {72.844161987305, 19.12239074707}, + {-72.970504760742, 41.318893432617}, + {-1.1254119873047, 50.717697143555}, + {66.974716186523, 30.213088989258}, + {-77.017586, 38.914969}, + {-119.774845, 39.507485}, + {-96.325784, 32.562869}, + {-99.260759, 20.042007}, + {-92.983559, 35.244778}, + {44.991142, 53.17802}, + {-87.436981, 41.537498}, + {19.219715, 50.893616}, + {-73.523842, 46.077393}, + {-96.947573, 32.919785}, + {-81.1624, 33.787566}, + {-120.148832, 39.351254}, + {18.797137, 52.50041}, + {-78.875328, 43.925697}, + {-119.707169, 36.930316}, + {-84.319137, 37.606049}, + {-112.210107, 33.479446}, + {-88.823753, 41.120785}, + {28.382463, 61.101093}, + {-77.567169, 43.178928}, + {18.704175, 54.111672}, + {-120.690307, 35.617642}, + {38.384894, 40.912441}, + {128.207407, 38.210414}, + {16.503046, 59.371838}, + {23.093641, 53.131378}, + {-111.074015, 32.342456}, + {-95.988251, 30.090195}, + {-87.916647, 43.037739}, + {-77.285515, 1.22982}, + {15.62869, 49.435153}, + {16.882957, 51.144791}, + {19.936864, 52.10443}, + {13.395098, 41.52071}, + {-74.17115, 40.747513}, + {-78.696472, 42.991978}, + {23.81772, 38.089809}, + {14.559583, 50.684582}, + {-86.907036, 36.092728}, + {-117.22501, 32.75945}, + {-83.86663, 30.824953}, + {-86.791595, 36.206726}, + {-105.919337, 35.013837}, + {114.270009, 22.285313}, + {-95.393186, 29.676676}, + {-105.31221, 39.576591}, + {18.714954, 51.588992}, + {19.180129, 50.349019}, + {-73.984711, 40.785507}, + {130.988037, -12.51085}, + {9.722926, 52.477861}, + {-111.781691, 34.662987}, + {-85.820355, 38.18783}, + {-116.165844, 33.687956}, + {27.992924, -26.191971}, + {-90.436455, 43.187382}, + {19.604046, 51.505791}, + {-92.343073, 34.742173}, + {-74.293304, 40.91732}, + {-105.790952, 53.197582}, + {3.394929, 6.462275}, + {-117.717949, 33.573853}, + {-78.584963, 38.85839}, + {-71.214836, 46.810818}, + {-99.130435, 19.307437}, + {144.355072, -38.084717}, + {-119.816286, 39.542638}, + {-87.38588, 34.066902}, + {20.466951, 49.984206}, + {23.75131, 37.977711}, + {27.325439, 37.807701}, + {106.92381, -6.351098}, + {18.141491, 59.459854}, + {-121.934471, 47.464958}, + {-79.808068, 43.247519}, + {-79.84817, 43.258537}, + {28.132254, -26.252882}, + {-94.084259, 30.043989}, + {-118.222496, 33.971394}, + {19.108088, 50.043953}, + {-79.523694, 43.800706}, + {19.957565, 49.287575}, + {-112.699257, 32.950588}, + {-118.277993, 34.023781}, + {-71.088651, 42.349911}, + {-123.193499, 45.196631}, + {9.687701, 48.274796}, + {46.620292, 24.706197}, + {-95.402955, 29.696713}, + {18.157118, 54.338785}, + {151.888753, -29.132489}, + {-99.436699, 18.92824}, + {-85.76313, 38.413128}, + {-86.373283, 39.70829}, + {19.861353, 51.093146}, + {11.039673, 50.972}, + {-113.424431, 53.440521}, + {14.44875, 53.343819}, + {-88.482512, 34.854139}, + {-86.092011, 39.676846}, + {-92.926926, 44.509049}, + {-104.778763, 38.78561}, + {144.948771, -37.810649}, + {-118.253436, 33.954065}, + {2.406764, 48.846924}, + {-73.641312, 45.528042}, + {17.891933, 54.045593}, + {-107.877958, 37.27527}, + {-118.100639, 34.568813}, + {-87.536305, 37.383337}, + {121.082817, 14.632379}, + {21.397964, 42.003075}, + {-73.978897, 40.715037}, + {-118.207459, 33.901775}, + {11.866809, 54.78867}, + {151.066284, -33.917856}, + {-71.226091, 46.798016}, + {10.728642, 59.924475}, + {3.904518, 6.80752}, + {20.346725, 49.68124}, + {-83.370472, 36.322039}, + {34.972767, 32.76189}, + {-83.789087, 35.71323}, + {-93.274872, 44.943233}, + {18.526027, 53.967536}, + {11.587588, 50.924637}, + {31.024506, -29.857576}, + {-118.128201, 34.071154}, + {-84.33214, 33.925612}, + {-93.263778, 44.964498}, + {-96.706338, 32.785832}, + {-92.168149, 46.748804}, + {13.629302, 52.503288}, + {23.789335, 38.02261}, + {-75.063389, 45.888004}, + {-73.826923, 40.753569}, + {-73.968063, 40.790672}, + {-118.407398, 34.070823}, + {-84.817062, 34.85564}, + {23.836201, 38.11945}, + {-90.564526, 41.533653}, + {28.746964, 61.192542}, + {-85.213423, 43.122956}, + {151.218681, -33.851998}, + {-72.374279, 40.900708}, + {-10.77598, 6.292697}, + {-85.891448, 30.224422}, + {-117.146307, 32.704328}, + {153.4375, -28.848045}, + {5.660925, 50.621277}, + {-111.835754, 40.744667}, + {-118.411926, 34.062829}, + {19.193449, 52.057488}, + {-87.57843, 41.64436}, + {-100.390002, 20.569277}, + {-118.453018, 34.410801}, + {-97.036833, 32.895211}, + {-121.504728, 38.589445}, + {-75.370447, 41.133616}, + {-83.894096, 44.635098}, + {-108.514122, 45.753849}, + {23.78264, 38.000488}, + {-79.016434, 33.851398}, + {-3.148111, 51.705626}, + {19.199496, 51.336476}, + {28.17462, -26.385153}, + {-90.501913, 38.773502}, + {-97.550334, 35.505252}, + {123.696304, 13.164507}, + {-86.368452, 35.873861}, + {25.313217, 58.331211}, + {-78.941917, 43.007721}, + {-64.711012, 46.102151}, + {151.092026, -33.872433}, + {-79.933243, 32.784054}, + {21.009109, 52.217243}, + {16.873728, 41.117584}, + {-80.091091, 26.306459}, + {-2.514012, 53.198135}, + {-96.58873, 32.703699}, + {151.207779, -33.86145}, + {-118.253941, 34.086141}, + {-86.642826, 41.672582}, + {-100.838788, 32.366084}, + {-64.790776, 46.072673}, + {-82.451843, 32.227482}, + {145.303406, -37.812389}, + {-3.14541, 51.508797}, + {-71.797974, 42.582859}, + {19.614546, 51.542328}, + {18.730828, 51.268518}, + {-90.256489, 38.748364}, + {-93.975287, 30.122767}, + {7.386684, 9.139888}, + {-93.428514, 43.685697}, + {-76.643962, 39.284359}, + {-81.948242, 28.115416}, + {-118.588539, 34.258598}, + {-81.721817, 29.616453}, + {-76.432823, 37.007553}, + {-118.333742, 34.074767}, + {-85.015429, 33.700425}, + {-84.270142, 34.08638}, + {-82.868544, 34.51854}, + {-7.096807, 52.252644}, + {-89.961578, 38.708035}, + {-82.348831, 29.075562}, + {-117.311828, 34.479568}, + {-0.110317, 50.96538}, + {-111.832118, 33.105969}, + {22.998495, 51.140057}, + {-98.540148, 29.403802}, + {144.697525, -36.364449}, + {-82.342812, 27.981318}, + {-122.327134, 40.482483}, + {-87.936279, 41.863754}, + {-85.849678, 41.517393}, + {19.314317, 51.817217}, + {-121.163824, 38.679899}, + {-121.266045, 38.848194}, + {-79.583221, 43.597202}, + {12.549738, 55.66238}, + {-0.214319, 51.490791}, + {16.775026, 52.414207}, + {28.816936, 40.98032}, + {-95.570409, 29.70474}, + {-99.09072, 19.365248}, + {-93.30201, 45.048779}, + {-90.276132, 38.539338}, + {46.651676, 24.752228}, + {-21.931421, 64.146835}, + {-81.450886, 41.53702}, + {-106.621452, 35.184628}, + {100.308528, 5.340555}, + {-104.938461, 39.938402}, + {-79.135948, 44.455238}, + {-111.815887, 33.409212}, + {27.262072, 61.692402}, + {-73.547768, 45.592232}, + {-122.956322, 49.240406}, + {19.593881, 51.579493}, + {26.118975, -28.216049}, + {20.905583, 52.217659}, + {-97.045978, 32.72102}, + {-96.375126, 35.09506}, + {-77.072279, -11.97386}, + {-91.314049, 39.679764}, + {-76.479942, 39.350349}, + {28.789883, -31.592253}, + {18.895502, 51.094556}, + {-122.055298, 37.680569}, + {-90.057114, 32.232304}, + {19.45763, 51.63435}, + {-82.47728, 34.663586}, + {-102.05022, 19.037978}, + {-117.992921, 33.760718}, + {120.642544, 15.000842}, + {-79.732221, 36.026456}, + {-98.479718, 29.363552}, + {-2.252716, 53.525188}, + {-84.503339, 38.104062}, + {150.050595, -30.716087}, + {6.144499, 49.589706}, + {-95.696462, 29.707229}, + {-113.251411, 53.44968}, + {3.263826, 50.771305}, + {18.508068, 54.459213}, + {-93.451966, 44.977619}, + {-82.552813, 35.476457}, + {-94.00896, 44.169883}, + {-86.857883, 41.734901}, + {20.943945, 52.287602}, + {-117.881512, 33.882598}, + {-87.456575, 30.296788}, + {-94.929367, 29.499681}, + {-82.955856, 42.479771}, + {-73.583133, 45.501714}, + {-118.355209, 33.901905}, + {-64.770314, 46.271809}, + {16.539667, 58.103466}, + {-80.068517, 32.955549}, + {-80.187202, 26.208243}, + {-97.069447, 32.691568}, + {-123.572484, 48.538248}, + {9.441932, 48.652344}, + {-75.360881, 41.10342}, + {-118.03231, 34.121792}, + {-87.31448, 41.538307}, + {-73.24791, 40.78146}, + {12.41647, 41.822365}, + {8.005259, 51.763074}, + {7.146095, 50.756275}, + {20.282253, 51.374502}, + {-96.021119, 36.159458}, + {-96.975616, 44.52447}, + {-94.998802, 29.491065}, + {-94.228067, 44.791484}, + {150.561198, -23.290684}, + {19.690452, 51.984863}, + {-85.855888, 37.704678}, + {-113.485934, 53.508644}, + {-73.983555, 40.768547}, + {-83.734825, 42.394276}, + {-77.916489, 38.679859}, + {30.379337, -29.607566}, + {-112.647331, 37.518368}, + {-77.031739, -12.046643}, + {-84.824088, 42.829019}, + {151.133682, -33.967331}, + {30.495514, -29.706373}, + {1.317134, 52.090336}, + {18.221173, 59.554274}, + {16.991847, 54.452408}, + {-97.07105, 49.860678}, + {28.011773, -32.942344}, + {-110.94561, 32.241478}, + {-73.566568, 45.496275}, + {30.721764, -25.998273}, + {-82.855389, 42.488244}, + {-111.721878, 42.402908}, + {-89.845341, 35.426217}, + {-93.569908, 30.282887}, + {-73.942711, 40.823078}, + {38.804363, 37.204163}, + {-71.216183, 46.824103}, + {-95.387836, 29.614965}, + {-77.06263, -11.92556}, + {-95.135209, 30.277876}, + {-2.256633, 53.523582}, + {-106.499559, 52.064241}, + {20.751673, 49.625938}, + {-74.193958, 40.853887}, + {-72.483917, 41.849239}, + {-114.048501, 51.066643}, + {176.223862, -38.115883}, + {-118.300499, 33.866307}, + {-89.061938, 42.879512}, + {-104.708033, 52.88302}, + {-86.23251, 36.541544}, + {27.680634, -26.697008}, + {-95.793368, 32.056008}, + {-97.172142, 31.66391}, + {-87.866482, 41.999675}, + {-104.463458, 39.322113}, + {-93.058733, 44.782452}, + {-83.183637, 42.603634}, + {10.349263, 43.466362}, + {146.72895, -19.365785}, + {2.380992, 48.864449}, + {-64.729462, 46.311115}, + {174.775993, -41.298676}, + {-122.400948, 47.662645}, + {-121.651347, 36.660573}, + {-90.28244, 38.74955}, + {7.216578, 51.229142}, + {-79.521584, 43.812435}, + {20.15767, 51.489067}, + {11.026356, 45.877758}, + {4.623704, 51.34803}, + {116.589463, -31.687053}, + {121.000786, 14.68945}, + {30.562052, 50.324312}, + {-88.42793, 36.006107}, + {-105.759372, 53.205373}, + {8.603629, 49.894605}, + {-89.814866, 30.314346}, + {-73.579704, 45.500709}, + {-1.452478, 50.95208}, + {-114.2836, 32.666386}, + {-117.477005, 34.313324}, + {-105.141712, 39.802208}, + {5.737651, 50.638454}, + {-76.567932, 44.275921}, + {-75.969208, 40.243576}, + {77.034843, 28.624466}, + {-0.05876, 51.517559}, + {-156.512314, 20.794336}, + {17.648224, 59.858826}, + {17.50148, 59.061012}, + {-73.946957, 40.809534}, + {-93.168678, 37.382175}, + {-95.363525, 46.825645}, + {-86.723559, 41.346991}, + {19.599459, 50.000805}, + {5.80998, 53.206768}, + {-82.532336, 35.572163}, + {-94.528961, 39.034734}, + {-71.208004, 46.86891}, + {151.199661, -33.873501}, + {16.229841, 53.555164}, + {-98.49384, 29.433364}, + {18.098852, 54.580853}, + {-83.655293, 32.824989}, + {-114.768602, 36.003972}, + {-97.706818, 18.8391}, + {-117.798592, 34.121284}, + {-81.003609, 32.043525}, + {23.763422, 37.991505}, + {-73.838892, 42.318018}, + {-77.068977, -12.05771}, + {-89.837048, 35.191061}, + {-87.644106, 45.099723}, + {-90.527832, 38.742054}, + {-118.942261, 34.976425}, + {-73.81356, 40.594648}, + {103.900073, 1.374219}, + {5.891869, 51.012169}, + {-73.247459, -3.74183}, + {-123.325989, 42.421099}, + {-85.476288, 38.221571}, + {-96.161826, 33.530607}, + {-94.36719, 45.966915}, + {-65.700073, 45.931099}, + {-80.386246, 25.696571}, + {-93.702873, 31.541664}, + {-121.143071, 38.116297}, + {-82.593676, 35.60099}, + {145.244477, -38.451625}, + {115.805779, -32.43531}, + {19.051589, 53.102256}, + {-77.770889, 38.733887}, + {174.61764, -36.827054}, + {123.895294, 10.288299}, + {-116.715332, 43.714001}, + {-1.193344, 52.463001}, + {-87.066116, 34.585655}, + {-79.512955, 43.757832}, + {-92.389413, 41.062721}, + {-77.205486, 38.916869}, + {11.093279, 55.67928}, + {10.081417, 48.4496}, + {-66.176376, 18.387169}, + {-95.520437, 31.319515}, + {-88.233567, 32.058763}, + {-88.483503, 39.464673}, + {-83.388605, 34.319839}, + {19.038088, 51.436977}, + {-79.851674, 36.070962}, + {-93.275169, 44.858133}, + {-122.809486, 45.493423}, + {15.218257, 37.709824}, + {-79.479492, 33.098377}, + {115.16946, -8.748327}, + {-73.871838, 40.761927}, + {-87.649762, 41.938646}, + {-81.094276, 35.270794}, + {10.540142, 52.281433}, + {-0.21392, 51.517871}, + {18.894817, 59.622446}, + {-77.234755, 39.223678}, + {-113.483593, 53.472698}, + {-118.404266, 34.056893}, + {106.713859, 11.027233}, + {-0.872035, 52.226817}, + {-83.124252, 42.690277}, + {14.069288, 46.574898}, + {-74.752853, -8.43942}, + {-87.598799, 41.726244}, + {120.338303, 16.039902}, + {9.893424, 53.603481}, + {6.252563, 52.687187}, + {-73.454771, 41.13086}, + {-87.797762, 41.698519}, + {-115.16188, 36.117342}, + {-92.593172, 34.570684}, + {-73.712357, 46.044132}, + {-0.101315, 50.987484}, + {-1.449735, 54.820793}, + {-73.520505, 45.51404}, + {-95.31577, 32.369059}, + {152.811966, -29.418303}, + {18.167683, 54.342556}, + {10.021124, 53.549784}, + {22.261917, 60.464115}, + {19.461819, 51.742626}, + {-87.170486, 37.185787}, + {-83.06201, 34.750808}, + {-84.391901, 33.736457}, + {-73.962855, 41.102234}, + {-81.310055, 28.477072}, + {21.063393, 52.131378}, + {-73.565407, 45.499462}, + {-117.415495, 34.367819}, + {5.711911, 58.928857}, + {-91.092, 30.40167}, + {-90.930271, 30.508322}, + {-96.79402, 32.925502}, + {5.69658, 52.44846}, + {-2.44581, 51.50705}, + {-97.105475, 32.75324}, + {-117.1497, 33.502269}, + {-112.425605, 33.613685}, + {-112.448784, 33.564266}, + {-119.989044, 36.722443}, + {144.966, -37.815436}, + {-64.59396, -33.628914}, + {16.742716, 53.135346}, + {-85.695847, 38.243015}, + {-73.977623, 40.72514}, + {-81.425779, 28.47489}, + {115.762068, -32.042766}, + {17.075632, 54.487834}, + {-85.666455, 42.87646}, + {-121.866065, 36.605444}, + {152.965897, -27.813259}, + {18.83874, 50.365549}, + {28.261974, -25.815931}, + {18.62781, 54.412846}, + {-79.295235, 43.728066}, + {10.455278, 61.120876}, + {-117.281944, 34.410519}, + {26.258621, 60.719959}, + {27.901072, -32.978867}, + {5.230529, 60.516937}, + {-79.23661, 35.318073}, + {-117.807571, 33.794682}, + {-77.268628, 38.799599}, + {-89.039238, 30.391253}, + {16.933409, 52.37022}, + {-122.923094, 46.980483}, + {-87.678517, 42.053414}, + {-82.017008, 27.972945}, + {21.643843, 60.908373}, + {-82.033692, 30.149935}, + {-96.001366, 36.126751}, + {-79.586159, 40.304226}, + {-73.97854, 40.767052}, + {-111.973747, 41.075634}, + {-88.026825, 42.0676}, + {-0.116181, 51.460427}, + {1.234354, 51.928913}, + {-96.731922, 40.820642}, + {-89.52108, 34.269736}, + {-87.427238, 37.768501}, + {100.559351, 13.739784}, + {-3.766666, 53.290604}, + {11.601749, 48.128083}, + {18.58516, 54.333642}, + {-88.228249, 42.908134}, + {-118.001151, 33.858181}, + {-98.623342, 29.469514}, + {-0.394943, 53.734643}, + {18.514769, -33.963322}, + {-94.55442, 39.024448}, + {-81.238769, 29.531149}, + {-87.520038, 33.169342}, + {10.744454, 59.91637}, + {18.436069, 54.450134}, + {18.483236, 54.535441}, + {-71.4347, 43.0256}, + {-111.988174, 43.481815}, + {-1.981292, 53.470463}, + {7.496682, 51.371986}, + {-2.476597, 53.441255}, + {6.796107, 51.230522}, + {6.71031, 49.364408}, + {-71.698766, 42.515518}, + {-0.434956, 51.937138}, + {13.66151, 45.747341}, + {16.060474, 49.882404}, + {18.530784, 52.616878}, + {-122.3218, 47.70834}, + {-122.875734, 45.505537}, + {-95.315013, 29.695163}, + {27.900518, -26.357237}, + {1.674771, 43.249676}, + {5.869345, 51.004163}, + {18.535288, 51.721314}, + {-81.999367, 27.959497}, + {114.153877, 22.282282}, + {115.934806, -31.967222}, + {103.775256, 1.380221}, + {-93.614622, 38.990769}, + {-2.582995, 51.439495}, + {-97.194538, 32.808989}, + {-77.064041, -11.95553}, + {-95.251488, 29.690845}, + {150.977815, -33.8539}, + {15.034802, 53.340238}, + {-77.444858, 38.393176}, + {-71.455971, 43.241837}, + {21.461611, 53.922946}, + {-64.83934, 43.954117}, + {-117.998807, 33.698778}, + {17.972488, 54.124832}, + {100.636435, 13.8521}, + {-82.675369, 29.833763}, + {-87.907432, 43.038465}, + {-97.156082, 32.722645}, + {7.504568, 51.484871}, + {-88.158417, 30.60997}, + {-92.939681, 44.691397}, + {-98.091173, 30.245118}, + {-71.996486, 46.722078}, + {-112.062485, 52.581871}, + {-83.911288, 34.114386}, + {13.375865, 52.518845}, + {20.581832, 49.661113}, + {9.961527, 48.453926}, + {-122.410797, 37.795696}, + {-82.086099, 34.344945}, + {-76.783966, 36.034607}, + {-112.026155, 40.718753}, + {-1.752125, 52.512562}, + {-74.071362, 39.941042}, + {-80.569489, 41.187798}, + {-113.507896, 53.527846}, + {-108.752396, 36.623211}, + {-87.929352, 43.041763}, + {5.203349, 46.259357}, + {-77.342716, 37.502713}, + {22.428674, 51.344771}, + {-82.868629, 39.869427}, + {-81.15004, 31.980963}, + {-117.548444, 33.860647}, + {103.799347, 1.547427}, + {-83.289304, 41.458452}, + {-96.809395, 32.882797}, + {-81.478332, 31.32069}, + {-115.169391, 36.065027}, + {-90.24393, 38.627213}, + {-81.041412, 43.053436}, + {-118.104481, 33.747389}, + {-76.981405, 38.891252}, + {-77.304427, 38.858022}, + {-90.241668, 38.809451}, + {-90.290047, 38.833595}, + {-82.990448, 42.305288}, + {145.587369, -37.747026}, + {103.875069, 1.694318}, + {-82.278732, 34.907005}, + {-104.92765, 39.779308}, + {151.02063, -33.882359}, + {-83.661224, 32.871063}, + {-3.736952, 56.062103}, + {28.217806, -26.344076}, + {114.187253, 22.264976}, + {7.878339, 53.582455}, + {-108.272385, 39.195637}, + {-113.575717, 37.085135}, + {24.555876, 61.014671}, + {29.376574, -25.857143}, + {-95.658948, 29.688579}, + {-75.367706, 40.059898}, + {-117.846653, 33.749111}, + {-81.829109, 27.900755}, + {8.732888, 53.060084}, + {-86.77362, 36.230258}, + {28.337149, -28.202078}, + {-87.812309, 42.810528}, + {-0.124009, 38.544147}, + {-86.693367, 39.023228}, + {20.531721, 52.126156}, + {27.845235, -26.124322}, + {-85.248061, 38.644163}, + {-117.136538, 32.943885}, + {-118.395824, 33.997838}, + {-79.389183, 43.661695}, + {22.311783, 62.991615}, + {120.478889, 23.69606}, + {-81.223946, 35.663311}, + {18.603723, 53.025779}, + {-94.362961, 38.046333}, + {-115.178429, 36.116528}, + {-87.255277, 35.554493}, + {-89.185711, 48.452726}, + {23.826183, 61.483856}, + {11.413431, 47.264855}, + {-98.348675, 29.515856}, + {-113.586845, 53.511778}, + {-93.2021, 44.915147}, + {10.545861, 55.374611}, + {12.157208, 49.538802}, + {8.582122, 48.187243}, + {-97.365659, 41.428156}, + {-73.553738, 45.50656}, + {-93.257095, 44.972549}, + {-83.312598, 42.221972}, + {-95.365334, 29.929995}, + {-106.553, 35.334202}, + {19.101568, 53.102412}, + {-95.307415, 29.45027}, + {30.044508, -1.924593}, + {13.340217, 52.501263}, + {11.598207, 48.108375}, + {-85.588037, 33.573174}, + {-97.352712, 32.738042}, + {-95.515045, 29.668854}, + {-85.755214, 38.318848}, + {145.140564, -37.820618}, + {-2.801303, 53.42634}, + {20.524019, 49.857609}, + {-1.704857, 48.556099}, + {-117.979465, 33.849185}, + {-84.861927, 35.211901}, + {-87.714781, 41.908394}, + {-4.239532, 57.457772}, + {28.210839, -25.752021}, + {-121.502963, 38.635143}, + {19.653878, 53.648328}, + {12.645811, 57.492695}, + {-90.189075, 41.789394}, + {11.068909, 49.469873}, + {-82.176604, 29.062077}, + {-76.465371, 37.092148}, + {-77.192516, 39.107686}, + {-82.139443, 29.759239}, + {-122.880844, 43.956131}, + {-105.058876, 40.550819}, + {-97.922721, 29.584567}, + {-120.868065, 38.725459}, + {16.416975, 50.099976}, + {-78.322431, 40.010016}, + {-87.549802, 41.730887}, + {-73.97481, 40.615794}, + {-68.478645, 48.500156}, + {107.207146, 34.34663}, + {-80.669551, 28.191674}, + {-96.666702, 29.520205}, + {-82.696917, 34.569119}, + {-86.566286, 36.247948}, + {-78.862099, 38.403194}, + {147.292953, -41.397892}, + {12.596555, 50.836568}, + {-90.221111, 38.660891}, + {21.024057, 52.180817}, + {-80.705995, 32.211313}, + {-75.981888, 46.475758}, + {-122.495338, 37.766495}, + {13.628914, 52.767065}, + {-73.585899, 45.601112}, + {10.083381, 53.576437}, + {-98.456825, 33.643578}, + {-95.403048, 29.686088}, + {-121.331704, 38.858537}, + {150.80751, -33.790947}, + {12.37064, 55.670724}, + {-3.6858, 51.530514}, + {-97.768547, 32.579239}, + {18.076394, 53.29508}, + {-79.898576, 37.387099}, + {4.28806, 48.910084}, + {-73.963669, 41.100945}, + {-89.93885, 35.162533}, + {9.139221, 49.181877}, + {-3.006247, 53.466873}, + {9.215864, 49.170614}, + {18.563606, 53.012035}, + {-122.391006, 37.742178}, + {-87.936394, 42.15324}, + {150.951704, -33.865362}, + {-77.062938, 39.081299}, + {16.350656, 48.212708}, + {5.226423, 60.369389}, + {-80.19205, 25.766851}, + {-120.656745, 45.966195}, + {2.896038, 47.580254}, + {-63.646824, 44.67437}, + {8.633349, 46.849495}, + {10.313528, 56.321026}, + {-77.459598, 37.468873}, + {-117.181446, 33.135101}, + {-158.023856, 21.338289}, + {145.400314, -37.873611}, + {-96.953066, 49.852866}, + {-122.050081, 37.373077}, + {-81.420372, 28.814933}, + {113.563309, 22.145464}, + {-70.60736, 46.092206}, + {-75.751732, 45.483177}, + {-90.826233, 29.594913}, + {12.932013, 52.443476}, + {-4.15957, 52.906132}, + {-81.969536, 27.996504}, + {20.962685, 41.550385}, + {-74.469787, 39.379586}, + {152.464592, -24.818763}, + {-89.740864, 30.297281}, + {-0.187431, 52.327072}, + {7.89681, 51.684403}, + {-3.795226, 55.544273}, + {-77.247055, 38.331264}, + {-83.681656, 42.24501}, + {-98.445497, 30.575884}, + {-117.657865, 34.116745}, + {8.330917, 49.957398}, + {-98.611921, 29.534952}, + {-73.835851, 45.473607}, + {15.420832, 47.058331}, + {3.246082, 47.92395}, + {3.139685, 50.61985}, + {6.971781, 50.93588}, + {-2.641778, 52.078293}, + {16.354897, 48.228048}, + {-73.347687, 41.677483}, + {-117.631294, 33.53227}, + {-96.659157, 40.856593}, + {21.654855, 60.202565}, + {10.81202, 48.107781}, + {24.946415, 60.167347}, + {-85.824278, 38.802932}, + {12.382975, 51.346176}, + {-117.8643, 33.893571}, + {18.553699, 52.970961}, + {21.850243, 51.684807}, + {-82.356483, 28.001678}, + {-87.121608, 41.608322}, + {2.758994, 50.374252}, + {-85.297836, 35.033873}, + {12.726001, 56.022122}, + {-81.883523, 34.930622}, + {19.073755, 52.662924}, + {-89.797409, 46.212334}, + {-95.472127, 29.722947}, + {-97.474689, 35.649859}, + {-116.740822, 36.637821}, + {105.343636, 11.22133}, + {-100.574906, 23.78452}, + {10.789997, 59.931496}, + {19.205077, 53.208184}, + {19.246117, 53.071983}, + {-0.155773, 51.483997}, + {-82.664959, 28.037598}, + {-79.526824, 37.660723}, + {9.957046, 52.199608}, + {-80.241158, 25.840832}, + {-88.541012, 42.601301}, + {-79.373195, 43.889295}, + {11.897272, 50.32881}, + {151.226594, -33.827976}, + {10.071693, 48.285632}, + {-77.818846, 34.224911}, + {4.643281, 45.876881}, + {21.448807, 51.724534}, + {-86.756858, 41.598575}, + {-81.584563, 30.350857}, + {-81.592773, 26.622244}, + {-117.118475, 33.131861}, + {5.497465, 50.620968}, + {-0.089194, 51.436573}, + {-98.296414, 30.517742}, + {17.89661, 59.473858}, + {-79.649712, 43.632584}, + {-78.00039, 39.468692}, + {152.981232, -27.503683}, + {150.930838, -33.870653}, + {-0.757273, 37.819141}, + {-73.995346, 40.731833}, + {13.370701, 52.539845}, + {16.397215, 48.257534}, + {18.537325, 54.330063}, + {-95.480539, 29.953955}, + {-90.41274, 41.918269}, + {115.964003, -33.301429}, + {-100.646233, 29.097139}, + {-73.987411, 40.724354}, + {18.562002, 54.477494}, + {-76.527603, 39.123258}, + {-87.839897, 34.923859}, + {-73.993711, 40.787191}, + {-123.009367, 49.27103}, + {-97.368042, 32.826255}, + {29.969859, 69.678355}, + {6.35178, 50.953346}, + {-82.7323, 28.012232}, + {20.970663, 52.200789}, + {28.319969, -26.262515}, + {-96.999397, 32.766098}, + {-61.35486, 10.625004}, + {28.471128, -26.16114}, + {4.338005, 52.075493}, + {-118.101143, 33.988125}, + {28.266191, -26.108635}, + {-97.043965, 49.817972}, + {19.236413, 52.679269}, + {6.654788, 51.196808}, + {-2.202053, 52.091967}, + {-97.229919, 27.591011}, + {8.705807, 50.289375}, + {28.171717, -25.666224}, + {-73.850287, 40.717117}, + {-91.804839, 29.974887}, + {-97.010788, 49.894265}, + {-122.302063, 47.250607}, + {-95.991551, 31.241514}, + {-121.153864, 38.025328}, + {-80.387743, 25.777478}, + {-96.814449, 33.10025}, + {-0.163675, 50.87734}, + {-112.098393, 33.606872}, + {-84.269027, 39.346022}, + {-97.068378, 49.934763}, + {-117.152148, 32.770177}, + {28.114609, -26.188477}, + {18.459255, 54.528278}, + {2.255052, 48.837399}, + {18.557104, 54.323549}, + {-95.565954, 29.611709}, + {-73.655609, 40.598995}, + {-77.52865, 37.608314}, + {20.698776, 49.621304}, + {11.386542, 53.603665}, + {-76.609476, 39.312416}, + {-83.928211, 33.630901}, + {18.275812, 52.807755}, + {-119.800771, 39.533217}, + {-66.267023, 45.846854}, + {-113.585957, 53.551034}, + {-111.971988, 41.194082}, + {8.015736, 50.869902}, + {-1.263748, 51.774452}, + {18.332129, 53.091991}, + {13.306447, 52.5779}, + {-122.324417, 47.708591}, + {-118.218156, 33.867461}, + {-79.065367, 35.978556}, + {-77.061241, -12.047389}, + {27.950848, -26.267298}, + {-0.720562, 53.757191}, + {28.11205, -26.180534}, + {-84.334673, 33.387093}, + {7.268625, 51.280934}, + {-72.95885, 45.621726}, + {-106.303594, 31.753853}, + {-118.249786, 33.848085}, + {143.855321, -37.577195}, + {19.543267, 52.027985}, + {-78.146545, 35.57872}, + {-75.450386, 45.545216}, + {18.048624, 53.106029}, + {-95.083809, 29.391018}, + {-111.890472, 33.70298}, + {-122.289321, 37.851183}, + {27.654419, -26.076736}, + {4.444837, 50.414199}, + {-95.803909, 29.552921}, + {19.53252, 51.643616}, + {-82.450928, 27.939985}, + {144.922083, -37.649984}, + {145.248901, -38.076374}, + {2.264097, 48.830929}, + {-109.533913, 45.70686}, + {101.705017, 3.159389}, + {-98.632313, 29.417981}, + {-64.680695, 32.380367}, + {-121.293988, 38.010137}, + {-73.860652, 40.713643}, + {18.953918, 51.898141}, + {-97.064714, 49.898488}, + {-122.958509, 49.222984}, + {-123.143371, 45.221194}, + {144.961944, -37.803095}, + {1.695982, 52.572952}, + {21.050154, 52.233772}, + {27.829346, -26.316368}, + {-94.534538, 39.065395}, + {-97.025221, 49.910867}, + {-121.272201, 38.000256}, + {-104.803352, 39.739512}, + {11.492752, 48.125328}, + {18.962883, 51.140442}, + {28.059199, -26.549875}, + {-84.490685, 38.049969}, + {-72.996354, 41.542746}, + {18.487233, -33.805221}, + {-112.396028, 33.6661}, + {-112.195848, 33.66721}, + {-85.892319, 37.37358}, + {31.263386, -25.422754}, + {-0.985544, 50.851253}, + {-90.167256, 30.003547}, + {18.508526, 52.701035}, + {27.97769, -26.268457}, + {-88.152285, 41.618262}, + {-96.722413, 32.960826}, + {-122.786205, 49.272052}, + {11.598819, 48.175573}, + {4.732238, 52.010204}, + {2.468293, 48.893552}, + {-73.784345, 40.640362}, + {-73.862409, 40.828153}, + {28.509018, -26.198992}, + {22.241283, 50.066109}, + {7.162491, 53.607832}, + {-73.981454, 40.756372}, + {-64.756984, 46.125891}, + {114.180458, 22.276436}, + {-98.508339, 29.455466}, + {-95.649718, 29.12213}, + {-88.077282, 37.33588}, + {-89.981322, 35.057835}, + {138.680344, -34.474117}, + {17.107496, 61.72551}, + {-100.053307, 35.226612}, + {114.177391, 22.37188}, + {-93.322767, 37.24151}, + {2.266196, 48.897536}, + {23.707109, 40.186832}, + {17.707331, 60.198803}, + {-80.283449, 25.763739}, + {-95.372191, 29.750666}, + {-157.996865, 21.477477}, + {100.08503, 15.239702}, + {18.398448, 47.197505}, + {49.28152, 52.998647}, + {-1.438393, 50.92639}, + {14.349593, 51.585835}, + {12.134635, 51.289177}, + {12.576937, 50.806396}, + {12.231724, 49.944234}, + {-75.235598, 4.436575}, + {-1.082662, 45.667659}, + {1.174453, 49.399552}, + {12.505128, 47.834152}, + {13.725395, 51.251972}, + {-102.281281, 21.79055}, + {106.7547, -6.288207}, + {-73.419861, 46.067837}, + {7.81913, 50.423705}, + {31.031591, -29.845279}, + {32.517192, -25.933593}, + {22.107977, -34.183269}, + {2.305842, 48.973339}, + {4.378915, 48.935643}, + {116.413112, 39.989401}, + {12.242209, 50.484126}, + {128.774411, 35.804838}, + {127.437745, 36.310686}, + {126.848962, 35.156376}, + {101.221478, 13.33974}, + {-47.583437, -20.906842}, + {27.911541, 39.650325}, + {126.898614, 37.575625}, + {-48.394836, -27.439988}, + {110.379597, -6.988751}, + {-43.073109, -22.876498}, + {14.353596, 46.608544}, + {128.088467, 35.084911}, + {126.73079, 37.456433}, + {126.706007, 37.459736}, + {129.422884, 35.516176}, + {126.843042, 35.587852}, + {36.027317, 31.995162}, + {127.590506, 34.968944}, + {126.62321, 33.468638}, + {129.026454, 35.155781}, + {126.732244, 37.4585}, + {100.790916, 13.763129}, + {110.410805, -6.979285}, + {-72.188145, 19.737614}, + {-51.056304, -29.689026}, + {-46.670661, -23.457416}, + {127.029192, 37.547879}, + {129.072609, 35.181017}, + {125.541756, -8.554368}, + {128.53859, 35.818231}, + {-47.859673, -15.807892}, + {127.140993, 37.546339}, + {101.204795, 13.010337}, + {126.93293, 37.633138}, + {28.645121, 41.017452}, + {104.421129, 17.298108}, + {100.70816, 14.232383}, + {127.272105, 37.004818}, + {-47.659859, -15.635304}, + {126.704059, 37.45632}, + {100.645972, 14.15533}, + {127.153634, 37.278245}, + {27.838355, 41.155513}, + {84.97139, 56.548183}, + {11.139599, 49.401254}, + {-44.014626, -19.792664}, + {104.098091, 1.196216}, + {101.082067, 13.039589}, + {127.075206, 37.205301}, + {-46.692151, -23.762808}, + {-46.942867, -22.886976}, + {128.556743, 35.85585}, + {129.003495, 35.206532}, + {127.070472, 37.327493}, + {-43.686565, -22.981579}, + {-46.668565, -23.473131}, + {129.128948, 35.187728}, + {-47.634884, -21.56023}, + {127.055701, 37.288929}, + {126.867786, 37.475522}, + {128.623179, 35.825891}, + {127.190497, 36.973651}, + {98.447626, 9.182026}, + {127.728462, 37.877154}, + {106.250939, -6.358894}, + {100.494316, 13.916263}, + {106.378288, -6.207886}, + {105.889772, 20.879057}, + {127.097323, 37.512906}, + {100.033287, 15.240792}, + {112.894489, -7.655113}, + {-46.684615, -23.621114}, + {19.18676, 47.40287}, + {126.790474, 37.862558}, + {126.556072, 36.034259}, + {-51.223932, -30.050695}, + {-71.346931, -17.657463}, + {127.095729, 37.587699}, + {129.126254, 35.187271}, + {127.362532, 36.338502}, + {101.131528, 13.006159}, + {129.259699, 35.860108}, + {-44.24168, -20.922553}, + {128.093465, 36.139796}, + {126.710385, 37.485205}, + {34.857456, 40.481856}, + {-3.591869, 40.487431}, + {106.64946, 10.980504}, + {129.160002, 35.246602}, + {127.137913, 36.813023}, + {36.199012, 36.965346}, + {-49.9838, -20.432205}, + {127.427218, 36.346425}, + {126.983676, 37.565575}, + {126.798897, 37.3117}, + {127.112385, 35.788021}, + {128.51215, 35.855791}, + {128.775835, 35.245234}, + {-80.93412, -2.229138}, + {129.364416, 36.031273}, + {127.098676, 36.19293}, + {127.128842, 37.360761}, + {128.529989, 35.854037}, + {-40.115268, -2.894398}, + {-37.082377, -6.472113}, + {99.552087, 14.306968}, + {126.464382, 35.291176}, + {-49.211372, -25.449276}, + {-48.929104, -27.116374}, + {35.267758, 37.003025}, + {32.727778, 39.963251}, + {39.217155, 21.470568}, + {129.069984, 35.178179}, + {-48.571248, -19.761136}, + {128.690926, 35.194385}, + {28.965054, 41.084164}, + {-74.103349, 4.605911}, + {127.430672, 36.71597}, + {-77.036868, -12.097361}, + {-48.636497, -27.242119}, + {127.06509, 37.638174}, + {-86.536556, 16.318645}, + {129.400009, 35.503135}, + {-58.348685, -34.722531}, + {-46.512862, -23.567061}, + {128.12282, 36.123461}, + {126.738046, 37.51857}, + {104.149335, 1.368677}, + {127.321468, 36.613245}, + {-45.551128, -23.013369}, + {127.064299, 37.663452}, + {-39.875273, -18.718053}, + {100.52256, 13.656822}, + {128.074042, 35.186679}, + {128.99395, 35.151616}, + {126.572042, 33.252088}, + {103.963616, 1.107054}, + {126.950653, 37.327423}, + {100.556826, 13.770066}, + {35.362436, 37.004631}, + {98.940918, 8.105349}, + {127.121122, 37.477338}, + {127.102274, 37.005744}, + {127.057515, 37.064188}, + {127.18869, 37.882053}, + {-42.361994, -22.0434}, + {129.004834, 35.153445}, + {127.713466, 36.938185}, + {-79.804537, 8.884653}, + {-88.189892, 40.107357}, + {126.69336, 36.117222}, + {106.785452, -6.322964}, + {-42.350285, -22.858456}, + {-48.357648, -21.604546}, + {98.678772, 3.610536}, + {127.571468, 35.427309}, + {100.281629, 13.7055}, + {105.264282, -5.43658}, + {100.70669, 13.944525}, + {39.221683, 38.676096}, + {36.063267, 32.034737}, + {-87.805595, 41.140663}, + {106.708873, -6.314635}, + {129.284305, 35.84531}, + {49.955337, 40.371976}, + {101.088128, 13.446428}, + {129.155303, 35.160473}, + {112.736906, -7.032115}, + {-52.681038, -26.225785}, + {126.90415, 37.485385}, + {126.68963, 37.400559}, + {126.733522, 37.488383}, + {101.075819, 13.690636}, + {98.650376, 3.59984}, + {-46.653083, -23.680067}, + {-51.026508, -30.018525}, + {100.461128, 13.836672}, + {127.144728, 36.669069}, + {99.195114, 10.263304}, + {102.670254, 2.831141}, + {-49.264088, -16.705875}, + {128.531162, 36.110758}, + {-43.438177, -22.808037}, + {100.465233, 13.837506}, + {3.90436, 7.387961}, + {101.177177, 13.072362}, + {127.123138, 37.480015}, + {128.533701, 35.940067}, + {100.461212, 13.838992}, + {126.469658, 33.483149}, + {127.058681, 37.528496}, + {102.802856, 17.286701}, + {128.631912, 35.883923}, + {98.957305, 18.804834}, + {76.613018, 30.758437}, + {39.221195, 38.675457}, + {126.709471, 37.456694}, + {127.007745, 37.303602}, + {100.610947, 13.718827}, + {102.552586, 13.666013}, + {126.423664, 34.800766}, + {129.324553, 36.026685}, + {128.340273, 36.130486}, + {128.523357, 35.805833}, + {48.062571, 29.250641}, + {-43.788006, -22.952135}, + {128.981326, 35.069405}, + {99.892708, 15.455728}, + {116.185679, 6.080667}, + {127.411876, 36.366571}, + {127.138145, 36.832497}, + {100.85512, 3.881103}, + {105.485044, 15.324637}, + {-46.645917, -23.545952}, + {101.78902, 2.962777}, + {126.631346, 36.521991}, + {126.714032, 35.676107}, + {129.055102, 35.126067}, + {129.045407, 35.0935}, + {127.206665, 37.565027}, + {126.635139, 36.89018}, + {126.698805, 37.41045}, + {101.359558, 14.053008}, + {127.008917, 35.308551}, + {126.735924, 37.349406}, + {-43.338509, -22.874305}, + {126.91293, 35.126134}, + {100.222196, 13.53786}, + {100.54291, 14.002488}, + {-45.916972, -23.251113}, + {-46.668232, -23.567352}, + {102.853476, 17.357435}, + {126.630342, 37.45055}, + {127.050772, 37.743872}, + {128.108963, 35.863754}, + {129.111282, 35.191944}, + {126.781636, 37.768042}, + {128.593692, 35.863332}, + {126.786399, 37.863532}, + {127.443032, 36.354994}, + {129.374992, 35.539807}, + {127.225639, 37.219376}, + {129.023581, 35.106161}, + {-42.890582, -20.407504}, + {-76.375505, -6.492547}, + {127.148053, 37.545767}, + {128.871623, 35.235371}, + {126.910792, 37.599535}, + {126.998875, 36.7814}, + {127.250092, 37.007427}, + {-49.802615, -15.158018}, + {126.619111, 37.640824}, + {103.734745, 1.507761}, + {127.450496, 36.616513}, + {101.577955, 15.083423}, + {27.394466, 37.759514}, + {115.396695, -8.554057}, + {103.661245, 16.977828}, + {129.110352, 35.10729}, + {29.785854, 41.079609}, + {-48.212954, -7.175067}, + {105.282172, 12.280502}, + {14.21039, 40.993968}, + {126.624815, 37.657204}, + {127.10147, 37.3143}, + {111.965343, -8.161579}, + {-80.582169, -5.994497}, + {128.539549, 35.84157}, + {129.038393, 35.213039}, + {126.502231, 33.48719}, + {129.420007, 35.532791}, + {40.417831, 21.359492}, + {127.125394, 37.518197}, + {-98.828697, 26.332559}, + {-99.06501, 19.346457}, + {104.19904, 14.506846}, + {126.977999, 37.3017}, + {127.034302, 37.466958}, + {27.172752, 38.391945}, + {127.039519, 37.557774}, + {-70.707186, 9.129154}, + {-51.322327, -29.69047}, + {127.066938, 37.197191}, + {126.968474, 37.537532}, + {126.711192, 35.966835}, + {128.287678, 36.434866}, + {128.612825, 35.88808}, + {106.846786, -6.325356}, + {100.665961, 13.546068}, + {-46.491524, -23.554043}, + {83.012632, 55.039761}, + {38.534497, 38.944107}, + {127.452038, 36.634232}, + {99.912203, 19.131215}, + {100.097909, 17.607587}, + {104.783627, -5.760993}, + {100.16679, 18.203851}, + {128.622293, 35.251319}, + {48.128242, 29.147827}, + {127.407687, 36.432416}, + {103.878622, 17.624752}, + {127.698551, 34.750624}, + {127.637524, 37.294058}, + {-104.624025, 24.744071}, + {101.030253, 13.43184}, + {126.806666, 35.162882}, + {-77.017282, -12.028602}, + {126.751696, 37.491074}, + {129.104864, 35.139327}, + {99.917183, 12.428052}, + {109.302482, -0.068047}, + {129.092917, 35.218035}, + {126.422148, 34.820628}, + {129.054182, 35.153525}, + {127.014102, 36.780726}, + {126.899783, 37.57066}, + {104.603943, 15.863276}, + {101.268394, 12.698717}, + {102.37969, 16.877298}, + {126.271513, 33.409106}, + {126.498141, 37.301219}, + {128.597829, 35.861209}, + {127.378063, 35.412671}, + {127.039345, 37.294862}, + {127.692262, 34.942802}, + {-46.486423, -23.467064}, + {128.622195, 35.841148}, + {126.864567, 37.545193}, + {100.529175, 13.844579}, + {126.77754, 37.479786}, + {128.967427, 35.103255}, + {126.651444, 35.017526}, + {101.255874, 6.198801}, + {127.025062, 37.619539}, + {99.939868, 13.586955}, + {129.113098, 35.250426}, + {127.091993, 37.734553}, + {127.430835, 36.369756}, + {100.095718, 15.686345}, + {104.085899, 17.182472}, + {127.082103, 37.5445}, + {99.585067, 15.532388}, + {102.365031, 16.385333}, + {76.555252, 60.945137}, + {98.301738, 7.81856}, + {126.748052, 37.774978}, + {-37.047935, -10.930835}, + {100.836671, 13.550805}, + {100.484984, 5.712675}, + {127.286034, 38.190365}, + {98.990318, 18.81279}, + {112.514267, -7.40266}, + {-80.663354, -1.041473}, + {115.994055, -3.414468}, + {127.120229, 37.530167}, + {127.009969, 37.491695}, + {127.11562, 37.361983}, + {102.064167, 14.992042}, + {126.819046, 35.55691}, + {-54.672816, -20.543896}, + {100.822754, 13.71707}, + {127.403564, 36.318271}, + {126.854815, 37.606683}, + {128.622902, 35.893117}, + {126.68998, 35.963414}, + {126.358103, 33.344393}, + {128.384241, 36.110312}, + {79.421516, 13.636908}, + {35.870628, 31.955366}, + {126.914329, 35.125804}, + {127.096548, 37.597653}, + {98.22612, 17.236834}, + {126.801203, 35.170141}, + {127.059753, 36.898223}, + {100.165253, 8.315303}, + {34.384052, 39.063682}, + {127.483025, 37.248414}, + {126.996587, 37.170839}, + {128.574333, 35.19841}, + {127.015981, 37.568512}, + {98.747375, 8.885255}, + {103.374022, 17.424072}, + {126.71255, 37.46599}, + {48.275223, 56.32172}, + {126.754933, 37.500116}, + {101.116086, 4.625087}, + {78.15352, 52.489425}, + {109.30378, 1.361065}, + {110.449821, -7.008769}, + {99.623019, 7.547988}, + {126.841861, 35.166561}, + {49.834675, 40.363171}, + {77.150817, 19.705484}, + {127.096089, 35.837426}, + {128.418584, 36.115433}, + {-45.252716, -19.734272}, + {129.325782, 35.520574}, + {-43.313957, -22.83866}, + {129.32863, 35.528373}, + {111.468264, -7.871703}, + {127.685567, 34.913584}, + {35.833585, 32.062516}, + {126.852627, 37.512818}, + {-98.394034, 29.51006}, + {99.61011, 7.569265}, + {126.510147, 33.496957}, + {129.429423, 35.496247}, + {-76.920737, -12.026276}, + {127.014236, 37.301697}, + {128.63786, 35.21329}, + {126.337405, 33.251044}, + {-71.627582, -33.036114}, + {39.762249, 47.148552}, + {-44.083776, -19.982426}, + {104.1109, 1.13988}, + {100.519345, 6.966363}, + {36.100784, 32.085323}, + {126.990582, 35.060831}, + {126.75226, 37.515194}, + {50.466804, 26.210422}, + {127.089561, 37.00084}, + {106.873047, -6.325714}, + {28.241333, 41.076514}, + {27.380846, 38.629124}, + {106.906988, -6.133103}, + {126.758046, 37.728107}, + {127.15901, 37.58586}, + {126.705689, 37.451619}, + {-43.462742, -22.882578}, + {127.73397, 36.412595}, + {101.102251, 12.972516}, + {126.979397, 37.487702}, + {127.30439, 35.346001}, + {27.364495, 37.04756}, + {101.382306, 13.494761}, + {128.356661, 36.105753}, + {47.966206, 29.362823}, + {100.121301, 15.168599}, + {106.640136, -6.39398}, + {103.076154, 16.421943}, + {105.03772, 15.981123}, + {127.055819, 37.171713}, + {129.239824, 35.841339}, + {99.317802, 9.116476}, + {-47.873444, -22.01043}, + {101.725753, 17.443328}, + {-38.3423, -12.846019}, + {100.301764, 14.335504}, + {126.638896, 37.449261}, + {-1.925178, 7.621994}, + {27.847137, 37.846696}, + {-76.879702, 18.25921}, + {101.005386, 14.580906}, + {99.043278, 18.63771}, + {-47.967385, -16.079793}, + {-46.610137, -23.473733}, + {100.366791, 14.154918}, + {101.909088, 15.059624}, + {127.101512, 37.5826}, + {-70.264021, 19.308248}, + {50.580341, 26.130983}, + {127.030743, 37.632453}, + {127.06112, 36.77112}, + {114.603916, -3.298398}, + {128.373922, 36.091176}, + {129.121876, 35.201132}, + {101.15802, 12.789508}, + {128.81296, 35.881319}, + {127.101095, 37.753761}, + {102.296465, 16.637281}, + {-59.992969, -3.128382}, + {127.04963, 37.746684}, + {-98.271957, 18.960461}, + {127.06799, 37.149305}, + {126.925461, 37.34395}, + {129.324091, 36.02835}, + {129.022658, 35.158104}, + {126.919346, 37.949916}, + {-48.644763, -27.511782}, + {-46.601485, -23.655165}, + {-51.146397, -29.726844}, + {129.09004, 35.13971}, + {100.672386, 13.514426}, + {127.110086, 37.274679}, + {100.117963, 14.534219}, + {-38.500267, -3.857399}, + {114.257553, 22.309241}, + {-45.375986, -22.904312}, + {126.675301, 37.592798}, + {126.785475, 37.684725}, + {-88.160774, 13.473141}, + {-47.987509, -16.05927}, + {127.13905, 36.824784}, + {127.070797, 37.602563}, + {-46.255313, -23.965844}, + {126.6558, 37.560884}, + {101.435188, 0.443713}, + {101.784751, 3.059656}, + {126.735682, 37.527166}, + {106.822701, -6.233643}, + {15.233343, 52.743757}, + {128.448776, 36.662246}, + {129.352567, 36.041761}, + {112.626152, -8.075596}, + {128.516699, 35.859347}, + {100.617067, 14.789934}, + {39.129387, 51.598892}, + {101.075712, 13.343577}, + {31.440147, 36.795625}, + {88.092422, 22.471511}, + {28.778872, 41.035581}, + {29.126468, 40.981481}, + {129.098666, 35.19909}, + {-46.322922, -23.444014}, + {114.204033, 22.290737}, + {-46.500492, -23.532455}, + {-46.594582, -23.719002}, + {126.58141, 35.955122}, + {127.120344, 36.44612}, + {102.874358, 17.280674}, + {117.149786, -0.516792}, + {102.29937, 12.048684}, + {127.015749, 37.606914}, + {-46.694122, -23.738939}, + {100.570926, 13.762809}, + {28.234438, 37.333754}, + {127.117826, 37.294364}, + {127.922882, 36.971389}, + {126.99643, 37.784742}, + {126.989009, 37.301447}, + {127.911803, 35.685872}, + {127.11885, 37.371944}, + {126.632935, 37.37274}, + {71.483038, 41.399205}, + {106.812908, -6.21701}, + {-35.965431, -8.283552}, + {35.84824, 31.907675}, + {-46.702218, -23.633868}, + {-46.320614, -23.49794}, + {106.821416, -6.507775}, + {109.17704, -0.058262}, + {126.559133, 33.496356}, + {102.803986, 16.743877}, + {127.4289, 36.640404}, + {100.180164, 16.855231}, + {34.945132, 48.409126}, + {101.82878, 17.192896}, + {11.486562, 3.87783}, + {100.39138, 13.666089}, + {101.281812, 14.214759}, + {128.968788, 37.135355}, + {1.13879, 49.45845}, + {-42.639114, -5.896383}, + {127.49485, 36.610935}, + {127.099911, 37.607268}, + {110.439707, -7.756968}, + {99.539647, 14.037053}, + {127.003439, 37.588097}, + {106.733024, -6.165667}, + {127.004027, 37.290645}, + {102.281807, 16.218073}, + {126.93194, 37.577454}, + {126.856275, 35.165671}, + {127.109514, 37.513366}, + {127.331649, 36.295666}, + {126.518127, 34.967878}, + {98.295158, 7.901976}, + {127.316159, 36.382846}, + {126.715363, 35.490639}, + {-43.434804, -21.683396}, + {-47.601528, -22.73061}, + {128.068424, 36.336351}, + {101.722488, 12.854875}, + {100.527589, 13.662585}, + {129.409419, 36.005322}, + {128.473803, 35.84702}, + {126.840823, 37.558455}, + {127.534466, 50.267832}, + {127.725979, 37.885225}, + {115.190437, -8.663393}, + {101.518944, 3.004585}, + {129.428696, 35.493033}, + {-48.226032, -18.923427}, + {-43.319756, -22.739408}, + {112.513779, -7.865728}, + {99.905128, 14.775862}, + {126.990526, 37.796378}, + {103.101138, 14.431225}, + {-34.835659, -6.977483}, + {129.06081, 35.160249}, + {126.915165, 37.475381}, + {126.946456, 37.508633}, + {129.337806, 35.561089}, + {100.522349, 13.967104}, + {126.989731, 36.790806}, + {121.026513, 14.425856}, + {-48.339694, -1.377082}, + {35.862514, 32.541606}, + {28.926071, 41.012501}, + {-45.004465, -19.869953}, + {126.77005, 37.688279}, + {102.115853, 14.9882}, + {129.030483, 35.101667}, + {127.003306, 36.782318}, + {127.010151, 37.568346}, + {101.075595, 13.077005}, + {31.995886, 36.546547}, + {127.066353, 37.565524}, + {-46.576219, -23.492864}, + {127.050081, 37.729345}, + {100.864721, 14.388706}, + {-45.568162, -21.094871}, + {126.950731, 36.801767}, + {100.632902, 13.641834}, + {-90.545566, 14.505868}, + {-43.410015, -22.757679}, + {-42.987385, -22.034998}, + {106.801636, -6.202889}, + {112.738112, -7.292362}, + {100.450079, 13.676704}, + {-46.693968, -23.576327}, + {127.738757, 37.399129}, + {127.433482, 36.311967}, + {-43.234342, -22.62995}, + {127.139675, 35.834631}, + {126.933791, 35.944187}, + {129.063698, 35.892705}, + {127.742977, 37.873679}, + {-55.091511, -25.807248}, + {126.69139, 37.426619}, + {30.537443, 38.785545}, + {100.760144, 13.619666}, + {-48.204185, -7.210275}, + {127.515522, 34.901033}, + {112.718975, -7.259869}, + {-49.718245, -15.350296}, + {100.417595, 6.93298}, + {40.508183, 41.034973}, + {36.113451, 32.060569}, + {124.844116, 1.49136}, + {106.784974, -6.17236}, + {-49.997109, -23.193172}, + {29.108061, 41.022764}, + {28.990317, 41.064196}, + {35.212685, 47.837784}, + {110.369631, 1.412316}, + {29.087969, 40.179966}, + {103.051352, 17.37584}, + {126.798504, 37.483545}, + {127.118335, 35.829247}, + {104.796692, -3.000744}, + {127.032824, 37.502}, + {110.41931, -7.690273}, + {31.482016, 30.048122}, + {106.625502, -6.132498}, + {126.948284, 37.488959}, + {128.614735, 35.884125}, + {39.204351, 21.46896}, + {128.500955, 35.828444}, + {110.204873, -7.607038}, + {101.032185, 13.46244}, + {101.164108, 16.410507}, + {107.648855, -6.94783}, + {101.549032, 3.085635}, + {111.463421, -8.237689}, + {128.177743, 36.108311}, + {106.726164, -6.333936}, + {101.684341, 14.919287}, + {-36.73859, -9.828486}, + {9.703268, 4.049849}, + {35.90308, 31.925731}, + {-46.41486, -23.545947}, + {129.094285, 35.186575}, + {126.303785, 33.258155}, + {-52.224357, -3.218672}, + {98.694241, 3.588912}, + {102.076309, 15.122326}, + {104.526608, 15.849076}, + {107.133864, -6.320311}, + {126.951219, 37.478537}, + {32.858795, 39.964708}, + {100.793678, 13.775351}, + {29.176893, 41.039921}, + {126.875592, 37.772365}, + {-3.475641, 40.630056}, + {103.553883, 18.405241}, + {126.779889, 35.139352}, + {-46.526006, -23.711431}, + {86.122975, 55.346249}, + {109.407643, -0.114265}, + {127.403045, 36.329945}, + {110.464336, -7.041225}, + {-91.008031, 14.339886}, + {-71.542649, -32.947194}, + {127.184517, 37.045328}, + {100.529963, 13.686733}, + {129.365732, 36.025492}, + {129.052921, 35.243418}, + {99.705483, 14.693391}, + {-77.689125, -10.862852}, + {126.992354, 37.548993}, + {-34.995914, -7.562157}, + {-46.231968, -23.555077}, + {-46.641337, -23.574053}, + {102.643814, 2.008854}, + {126.997067, 37.366099}, + {100.649312, 13.539688}, + {-48.520154, -25.772198}, + {100.008537, 15.366795}, + {105.360558, 14.577914}, + {127.083638, 37.557132}, + {100.132359, 17.646037}, + {100.766034, 18.77227}, + {-100.001289, 21.938681}, + {127.014623, 37.563098}, + {126.781122, 37.646506}, + {127.788395, 36.807746}, + {104.750374, -2.971829}, + {126.766737, 37.762793}, + {71.423847, 51.17228}, + {-122.324066, 47.323288}, + {129.261573, 35.393122}, + {28.67858, 41.029787}, + {100.929104, 13.326329}, + {127.974426, 37.493605}, + {-74.070135, 4.607289}, + {128.584705, 35.224149}, + {-38.514652, -11.094979}, + {76.910423, 28.364569}, + {127.089018, 37.500409}, + {127.099182, 37.275626}, + {102.099544, 14.985233}, + {127.103722, 37.29607}, + {-35.852812, -9.467825}, + {129.25068, 35.492483}, + {127.001723, 37.572669}, + {126.987173, 36.212028}, + {126.697812, 37.464801}, + {110.869511, -7.609472}, + {112.639505, -7.25074}, + {106.779463, -6.108776}, + {128.590616, 38.190245}, + {100.695737, 13.787925}, + {-68.117187, -16.479585}, + {100.620324, 13.751262}, + {127.146444, 37.466706}, + {110.843758, -6.805582}, + {37.004321, 39.746201}, + {129.30609, 35.534302}, + {102.289781, 12.224939}, + {127.093231, 37.595852}, + {100.152527, 14.937777}, + {-46.635185, -23.545357}, + {129.062927, 35.191938}, + {100.920107, 14.771718}, + {-43.831056, -22.465672}, + {128.091949, 35.194133}, + {104.762576, -2.988095}, + {129.07665, 35.144416}, + {126.67388, 37.416027}, + {22.896248, 62.832454}, + {126.962515, 37.487063}, + {126.612375, 37.571164}, + {128.572322, 35.874343}, + {36.079991, 32.028359}, + {27.630636, 39.180786}, + {100.653664, 13.794396}, + {-46.638332, -23.611726}, + {29.80073, 40.716564}, + {126.785579, 35.130144}, + {102.067399, 15.015897}, + {126.533225, 35.662013}, + {-43.042128, -22.819936}, + {-70.648308, -33.380192}, + {128.168913, 34.983696}, + {117.460667, 2.15153}, + {-48.464213, -1.467223}, + {101.014557, 14.483706}, + {106.064879, 21.13272}, + {99.165186, 14.028028}, + {99.604929, 7.549481}, + {-43.951576, -19.893791}, + {-63.84177, -8.757164}, + {-45.578079, -22.730782}, + {126.868034, 35.179264}, + {128.589153, 35.848201}, + {128.599435, 35.852493}, + {128.355703, 36.114957}, + {99.865341, 14.322638}, + {100.266361, 14.969208}, + {110.293758, -7.954764}, + {101.81353, 12.857198}, + {126.832198, 35.197562}, + {104.869328, 15.223543}, + {99.505359, 14.051648}, + {126.54673, 37.730591}, + {-46.461269, -23.55595}, + {-100.369636, 25.658105}, + {100.492242, 13.823211}, + {9.200762, 45.462292}, + {29.271653, 40.491813}, + {98.34725, 8.699869}, + {128.616586, 35.886573}, + {101.002563, 13.112195}, + {127.081114, 37.583589}, + {126.857739, 37.514309}, + {27.16811, 38.424431}, + {129.01909, 35.267356}, + {126.847473, 37.311584}, + {11.520972, 45.891434}, + {128.966926, 37.543995}, + {100.39983, 13.87344}, + {28.275827, 37.90757}, + {100.457234, 5.325404}, + {109.638035, -7.702557}, + {28.957458, 40.26062}, + {-102.586419, 21.678683}, + {-46.023457, -23.301809}, + {115.202579, -8.606645}, + {-94.459648, 18.125956}, + {103.318069, 2.049898}, + {127.290335, 37.390683}, + {126.703478, 37.527171}, + {29.638287, 31.016977}, + {100.578683, 13.771849}, + {-41.712971, -3.932085}, + {-45.429358, -21.554792}, + {127.131699, 37.386643}, + {-100.247546, 25.884843}, + {35.950547, 31.902927}, + {128.610689, 35.870471}, + {100.578762, 14.359175}, + {128.668724, 35.207997}, + {102.469727, 14.424811}, + {126.722074, 37.52656}, + {100.567818, 13.919575}, + {29.439863, 40.801517}, + {100.48737, 13.739543}, + {-102.028725, 19.414675}, + {100.69858, 15.244253}, + {126.918129, 37.516058}, + {-70.66737, 45.919329}, + {126.778628, 37.479761}, + {27.305598, 41.393113}, + {30.111979, 49.81089}, + {100.775145, 18.767045}, + {36.007052, 32.553991}, + {106.639334, -6.198104}, + {-45.256539, -19.747023}, + {127.638237, 36.835742}, + {128.742557, 35.80975}, + {-99.277489, 19.410601}, + {100.436668, 16.216148}, + {102.828495, 16.419069}, + {103.983475, 16.968021}, + {127.874422, 37.336569}, + {9.011545, 52.3354}, + {100.354264, 6.133234}, + {-35.027543, -8.279965}, + {38.355552, 38.350132}, + {-52.616509, -27.099514}, + {100.121826, 15.669707}, + {127.003599, 37.301397}, + {-46.448988, -23.664813}, + {69.51696, 40.20549}, + {102.666077, 16.444813}, + {101.179008, 13.064304}, + {127.465238, 36.625395}, + {28.070307, -26.288321}, + {-90.428139, 14.548628}, + {100.686788, 13.990151}, + {-49.11053, -16.69449}, + {-49.494438, -28.939705}, + {-42.777561, -14.22575}, + {-76.536385, 3.418879}, + {-39.483233, -13.745217}, + {35.558855, 33.860872}, + {126.639782, 37.450772}, + {-45.722217, -23.763912}, + {33.89854, 38.328754}, + {129.172253, 35.17512}, + {127.092346, 37.589223}, + {127.026877, 37.585276}, + {100.493294, 7.01199}, + {107.059906, -6.808445}, + {32.601577, 40.044541}, + {10.802824, 44.895615}, + {-105.648994, 26.940006}, + {39.596603, 24.484547}, + {127.369121, 37.070184}, + {100.546829, -1.307226}, + {-51.217179, -30.130201}, + {101.183138, 14.631221}, + {-97.796443, 25.670513}, + {129.052684, 35.180426}, + {127.03897, 37.665626}, + {101.161417, 16.751139}, + {126.72928, 37.699737}, + {77.183602, 28.765614}, + {106.522373, -6.037291}, + {107.550203, -7.068759}, + {36.240767, 32.181113}, + {-52.344002, -31.765927}, + {129.124713, 35.185264}, + {100.92952, 12.928387}, + {100.351464, 15.266013}, + {128.064764, 35.178564}, + {98.679787, 3.524167}, + {101.101591, 13.037159}, + {126.913789, 37.164118}, + {127.168354, 37.349886}, + {129.032394, 35.0989}, + {128.487443, 35.84871}, + {98.681633, 3.539896}, + {127.036295, 37.573882}, + {101.754438, 2.7883}, + {128.584533, 35.869096}, + {-89.613538, 14.607875}, + {30.540494, 38.756266}, + {126.871404, 35.177075}, + {-43.179104, -22.820358}, + {100.826724, 13.569253}, + {99.916298, 19.779718}, + {126.920752, 37.538405}, + {106.841404, -6.168601}, + {106.786943, -6.306376}, + {-60.318936, -33.230828}, + {127.666397, 34.832153}, + {127.032841, 37.638198}, + {100.459846, 7.031961}, + {113.985935, 4.389345}, + {-51.072094, -29.995346}, + {27.581704, 53.924643}, + {35.528985, 38.708654}, + {-45.381869, -3.663672}, + {126.840511, 37.299703}, + {100.351471, 7.347163}, + {108.233612, -7.343993}, + {-62.469619, -10.428239}, + {101.564795, 2.822189}, + {-80.973251, 34.065941}, + {-43.211368, -22.919309}, + {29.088939, 41.013032}, + {100.340774, 13.966885}, + {102.799542, 17.405854}, + {127.370325, 36.378826}, + {-52.083699, -32.048726}, + {31.169278, 40.836568}, + {104.711052, 15.550236}, + {101.297882, 12.759353}, + {128.594836, 38.21782}, + {98.597819, 3.633612}, + {100.736103, 13.587071}, + {30.551274, 37.787165}, + {-43.730789, -22.889525}, + {-47.793087, -20.334438}, + {128.31867, 36.142309}, + {39.32338, 21.459728}, + {99.954434, 13.441085}, + {126.595784, 36.351342}, + {31.417515, 41.28259}, + {115.203918, -8.679765}, + {-43.346643, -22.885492}, + {31.982157, 36.550472}, + {129.03273, 35.325722}, + {81.786987, 25.447613}, + {-1.205, 38.02212}, + {100.519859, 13.793578}, + {41.689907, 38.686256}, + {100.761555, 13.621699}, + {107.296436, -6.814992}, + {104.675728, 17.341915}, + {28.945086, 41.009541}, + {-49.31499, -16.685361}, + {-43.177025, -22.912251}, + {126.446587, 34.808204}, + {100.537724, 13.698569}, + {-48.436077, -1.381363}, + {-95.426317, 29.589419}, + {106.685503, -6.118615}, + {106.871826, -6.271805}, + {126.724861, 37.520101}, + {104.654171, 14.650038}, + {-52.430289, -28.239964}, + {126.687127, 35.947728}, + {99.884455, 16.576506}, + {106.818024, -6.300085}, + {-38.213257, -9.4446}, + {100.341324, 16.439865}, + {126.92287, 37.579267}, + {100.505271, 13.607561}, + {128.978156, 35.065309}, + {100.634615, 13.533931}, + {127.00695, 37.275312}, + {127.081392, 37.318573}, + {98.36515, 18.506357}, + {110.484894, -7.005651}, + {127.041332, 37.637608}, + {129.031673, 35.101882}, + {28.995411, 41.093208}, + {36.50464, 36.713401}, + {111.260162, -7.66918}, + {127.802925, 36.170736}, + {126.847608, 37.523936}, + {29.027262, 41.074608}, + {106.261911, -6.346052}, + {127.148628, 37.435867}, + {-8.638618, 41.168156}, + {128.885041, 37.74683}, + {-46.69729, -23.627251}, + {128.68194, 35.220323}, + {127.031496, 37.585409}, + {126.962849, 37.315181}, + {103.782029, 1.553972}, + {-39.607289, -13.031894}, + {-2.507066, 10.05888}, + {-48.215533, -7.19361}, + {30.671377, 36.893681}, + {128.98731, 35.166975}, + {-41.095847, -21.497512}, + {-43.18526, -22.949808}, + {-52.997314, -27.733957}, + {-35.222919, -8.362896}, + {28.273266, 36.854009}, + {100.45182, 13.669207}, + {-46.475964, -23.516514}, + {126.935539, 37.507388}, + {-43.146618, -22.463234}, + {127.032547, 37.016676}, + {109.244827, -7.062568}, + {99.158569, 8.561884}, + {29.926802, 40.768353}, + {-102.045988, 19.400794}, + {100.378372, 16.039574}, + {121.946717, 0.457096}, + {-42.750509, -5.114126}, + {126.717163, 37.686958}, + {30.638191, 36.894539}, + {-78.469824, -0.162687}, + {128.848004, 35.122571}, + {100.67674, 13.827605}, + {126.830727, 33.34794}, + {99.894159, 15.17132}, + {127.359149, 35.562354}, + {-99.131653, 19.436216}, + {127.116201, 36.782699}, + {102.88375, 16.884687}, + {100.565344, 13.588612}, + {100.03838, 13.904154}, + {107.60208, -6.890276}, + {127.262494, 36.822681}, + {-38.500109, -3.853665}, + {-74.699421, 7.08899}, + {127.431326, 36.328227}, + {35.238839, 36.994987}, + {115.182586, -8.595186}, + {128.623657, 36.810006}, + {43.980756, 38.657495}, + {126.782693, 37.64497}, + {-73.84288, 40.921345}, + {128.089153, 35.149805}, + {28.951454, 41.024452}, + {28.12056, -25.964209}, + {-56.104048, -15.593953}, + {48.069374, 29.300855}, + {-43.337167, -22.834586}, + {101.37001, 3.026619}, + {27.043852, 38.388461}, + {127.669908, 34.784575}, + {101.239372, 14.231203}, + {-46.372522, -23.515087}, + {27.969876, 41.318555}, + {127.384653, 36.312857}, + {-39.083918, -16.418712}, + {97.963162, 19.305949}, + {100.95914, 13.094238}, + {129.110586, 35.1258}, + {127.489688, 37.086862}, + {100.883335, 12.671616}, + {100.637093, 13.920821}, + {126.904323, 37.638885}, + {101.253718, 12.82466}, + {129.168728, 35.16574}, + {-43.555441, -22.716397}, + {116.782555, 6.506304}, + {-70.683208, 18.94878}, + {112.649406, -7.315256}, + {100.244122, 16.830598}, + {-49.105245, -22.309483}, + {-42.244892, -22.842338}, + {127.12935, 37.547401}, + {103.073502, 16.469595}, + {-52.593025, -27.093683}, + {-41.318413, -21.586018}, + {126.522714, 34.495977}, + {-53.396262, -27.357391}, + {100.508537, 13.895027}, + {-44.212801, -19.452583}, + {126.818188, 35.176215}, + {-77.114253, -11.984923}, + {-40.257195, -20.26276}, + {129.346106, 36.017677}, + {128.561195, 35.858026}, + {32.503948, 37.892445}, + {126.953851, 37.244811}, + {37.605869, 54.183254}, + {-73.14744, -41.75257}, + {126.52623, 36.305502}, + {106.770599, -6.161769}, + {100.28671, 7.117013}, + {-46.774551, -23.503992}, + {101.533914, 3.176649}, + {-79.89254, -2.138745}, + {126.993966, 37.56122}, + {-47.566887, -22.380383}, + {127.401204, 36.308326}, + {112.649495, -7.962187}, + {-38.475997, -12.864444}, + {128.633519, 35.840614}, + {128.565225, 35.213946}, + {102.718774, 17.22584}, + {126.435976, 34.911993}, + {101.399813, 0.469477}, + {-44.038127, -20.024858}, + {32.001915, 36.543457}, + {35.509869, 38.719444}, + {100.465955, 13.754922}, + {-47.490356, -5.520962}, + {-43.852513, -19.780277}, + {-46.520576, -23.461076}, + {35.294333, 37.039826}, + {100.363602, 13.728874}, + {99.317083, 13.797618}, + {100.84347, 14.378291}, + {37.330639, 37.052623}, + {104.684929, 14.85038}, + {101.399178, 0.465312}, + {21.15596, 42.645191}, + {112.606033, -7.931789}, + {6.05398, 49.367115}, + {-71.647613, -35.419176}, + {100.501902, 14.054522}, + {-90.494883, 14.661163}, + {-46.574207, -23.425688}, + {100.032669, 19.059278}, + {29.104101, 41.1294}, + {77.690758, 13.424448}, + {-43.640305, -22.802595}, + {106.768042, -6.150801}, + {114.580256, -3.283528}, + {-76.664342, -11.920431}, + {27.134292, 38.405728}, + {48.534115, 54.353889}, + {100.50593, 13.748398}, + {-51.210273, -30.028225}, + {41.984383, 41.280602}, + {100.190886, 17.002619}, + {-43.509552, -21.545195}, + {103.732475, 14.872693}, + {128.658451, 35.207931}, + {-48.019966, -15.801807}, + {-42.562792, -19.468433}, + {39.723831, 47.211536}, + {39.849335, 40.959118}, + {-59.971027, -3.005508}, + {110.385757, -7.816967}, + {-46.415831, -23.540807}, + {127.187184, 37.005671}, + {129.167968, 35.971315}, + {98.648224, 3.584979}, + {103.999876, 14.933189}, + {-42.781601, -5.095121}, + {100.435092, 6.675621}, + {28.678186, 41.045816}, + {-45.937181, -22.230791}, + {99.964422, 12.789256}, + {126.845764, 35.216785}, + {128.618318, 35.831468}, + {-44.558668, -7.238642}, + {-51.110332, -29.989315}, + {101.033236, 13.415513}, + {106.800241, -6.380625}, + {101.116866, 13.4661}, + {99.804121, 9.129954}, + {102.304786, -3.822643}, + {29.13638, 40.973248}, + {128.738969, 35.302863}, + {129.354786, 35.549306}, + {103.711014, 16.438946}, + {-38.52071, -12.992755}, + {100.935058, 13.265254}, + {-76.984751, -12.069935}, + {-75.746101, -14.078989}, + {-45.178852, -18.448643}, + {128.404159, 35.363385}, + {127.15371, 37.414689}, + {127.107719, 37.501293}, + {104.028145, 15.62681}, + {36.538506, 40.338371}, + {-48.44681, -1.417604}, + {-48.130529, -21.778617}, + {128.618677, 35.869846}, + {104.538836, 0.913338}, + {35.916095, 31.92861}, + {-74.076462, 4.732089}, + {35.310783, 29.807346}, + {103.150764, 17.311617}, + {48.005724, 29.239128}, + {103.309347, 18.12438}, + {-46.752048, -23.526328}, + {126.668346, 37.425041}, + {-47.919831, -1.285501}, + {100.540382, 13.72722}, + {127.114557, 37.39609}, + {-42.615034, -21.195022}, + {100.862389, 12.913077}, + {32.851505, 39.924721}, + {100.718063, 13.645342}, + {-51.685133, -20.758018}, + {127.06335, 36.819654}, + {129.206092, 35.991608}, + {127.1688, 37.567379}, + {116.832481, -1.256439}, + {99.748684, 13.954658}, + {128.62025, 38.077496}, + {112.802891, -7.336873}, + {101.154366, 4.659979}, + {126.743448, 37.678759}, + {110.386734, -7.773325}, + {100.82181, 13.809121}, + {-91.527496, 14.843672}, + {128.791785, 35.082675}, + {10.059443, 45.325558}, + {-79.941076, -2.153312}, + {-54.578258, -20.47533}, + {126.702338, 37.45984}, + {129.091498, 35.129637}, + {71.678631, 29.389885}, + {101.2894, 6.560546}, + {-98.684196, 32.444801}, + {38.237907, 38.324072}, + {56.9594, 57.425739}, + {-50.916023, -20.194624}, + {103.968658, 1.052907}, + {127.074091, 37.763167}, + {36.001654, 32.546022}, + {-78.015736, -7.833422}, + {29.813674, 40.7175}, + {99.78228, 12.727259}, + {129.410639, 35.485764}, + {32.871506, 39.923031}, + {-77.002876, -12.072068}, + {-35.765167, -7.852103}, + {104.782732, -2.976816}, + {101.216242, 12.67576}, + {126.942046, 35.057363}, + {50.051563, 26.462687}, + {112.756783, -7.255205}, + {127.447765, 36.323378}, + {126.899075, 35.15254}, + {126.519359, 33.517066}, + {-100.503426, 18.157976}, + {100.619422, 14.030385}, + {99.369698, 13.544635}, + {126.880571, 35.159516}, + {100.972046, 13.54295}, + {127.217559, 37.538552}, + {101.022243, 13.078051}, + {31.201927, 59.297489}, + {0.621032, 41.61953}, + {100.644173, 5.427678}, + {126.853488, 35.152154}, + {127.443633, 36.642034}, + {127.308727, 34.047877}, + {127.132019, 35.826047}, + {-42.740746, -5.069671}, + {126.781955, 37.338807}, + {99.047836, 18.591723}, + {37.721469, 55.884463}, + {112.515282, -7.011243}, + {128.088679, 35.177555}, + {-48.292109, -20.880003}, + {38.943903, 45.116834}, + {-58.671315, -34.864926}, + {103.462196, 14.849403}, + {127.011207, 37.283423}, + {-45.434029, -23.611919}, + {30.287268, 40.510773}, + {32.876792, 40.005914}, + {101.474022, 12.63392}, + {128.453329, 35.338171}, + {-44.026579, -19.953491}, + {103.978594, 16.291696}, + {-38.495973, -3.767538}, + {128.541931, 35.926632}, + {100.557924, 13.994566}, + {-46.690316, -23.59626}, + {-55.295457, -12.286908}, + {-50.130619, -29.96022}, + {29.010393, 41.077183}, + {126.841202, 35.207095}, + {127.525276, 34.947866}, + {-46.696657, -23.474093}, + {-1.389243, 52.924278}, + {128.674401, 37.637646}, + {100.357626, 16.883081}, + {-46.705741, -23.712514}, + {-40.561104, -4.717004}, + {-52.525295, -27.086954}, + {100.271054, 13.591118}, + {126.787461, 37.448141}, + {99.031414, 18.586816}, + {-99.169662, 19.554052}, + {128.105941, 35.1582}, + {100.299924, 13.726765}, + {128.718043, 35.405554}, + {26.229712, 40.649464}, + {76.24234, 20.267}, + {-88.040924, 41.585419}, + {112.105804, -8.073979}, + {77.044423, 28.452158}, + {99.593081, 17.033473}, + {-123.323357, 42.438704}, + {126.708881, 37.354321}, + {100.627072, 13.863651}, + {100.576848, 13.724855}, + {31.239695, 30.031712}, + {126.669542, 33.540654}, + {114.232259, 22.473955}, + {101.498611, 13.935792}, + {104.656755, 15.335551}, + {93.014134, 56.028264}, + {107.289612, -6.311228}, + {101.125511, 14.646183}, + {127.531462, 38.161409}, + {101.755777, 3.136082}, + {105.869431, 20.995343}, + {27.887609, 39.640547}, + {100.5905, 13.742579}, + {-80.366818, -2.648272}, + {106.680603, -6.21386}, + {-51.166041, -29.895355}, + {126.854614, 35.143337}, + {126.871567, 37.174271}, + {100.662314, 14.326951}, + {-54.611176, -20.527139}, + {101.69566, 3.144481}, + {28.875123, 41.016659}, + {-98.189347, 19.729625}, + {104.731094, -2.927539}, + {-115.485015, 32.611748}, + {-49.235449, -16.696755}, + {-86.272906, 15.616619}, + {-85.89824, 41.066615}, + {102.132057, 16.405037}, + {127.740775, 34.766608}, + {106.660164, -6.121138}, + {-66.34922, -17.452835}, + {127.710055, 38.107804}, + {112.723997, -7.369556}, + {126.482991, 33.492336}, + {126.85616, 37.534059}, + {100.453631, 13.696349}, + {127.708336, 38.105609}, + {126.511203, 37.73499}, + {104.107574, 17.164692}, + {101.737239, 2.966177}, + {100.449547, 13.652411}, + {49.599764, 25.391349}, + {-50.542678, -27.676488}, + {107.114698, -6.394848}, + {100.490112, 13.732497}, + {126.933138, 37.563828}, + {126.64339, 37.667999}, + {101.616207, 3.148613}, + {104.645866, 14.647503}, + {100.482552, 7.11398}, + {-87.1076, 12.619728}, + {125.702888, 37.664064}, + {28.634878, 41.038186}, + {126.969502, 37.083896}, + {127.085999, 37.233935}, + {26.565326, 41.677058}, + {-56.473627, -9.669165}, + {-47.123855, -22.978672}, + {127.439592, 36.868258}, + {35.013103, 29.54043}, + {77.544922, 13.010888}, + {-43.190827, -22.982748}, + {126.884207, 35.275425}, + {12.714491, 42.30238}, + {98.813301, 17.944782}, + {-51.13776, -30.133791}, + {100.526546, 13.761536}, + {-87.201132, 14.021976}, + {109.176389, -7.644082}, + {129.417224, 35.547551}, + {35.713365, 32.151818}, + {127.432353, 37.279253}, + {-97.543762, 25.872013}, + {127.494177, 36.180606}, + {-52.263775, -27.63353}, + {104.038808, 1.117902}, + {106.738174, -6.346152}, + {126.963715, 36.123016}, + {29.188612, 41.023862}, + {129.112424, 35.158083}, + {128.25095, 35.253748}, + {126.940942, 37.379399}, + {-86.801593, 15.767708}, + {25.067789, 52.543465}, + {-52.171835, -32.061253}, + {100.538448, 13.745266}, + {99.506653, 11.199991}, + {126.266262, 33.117335}, + {129.335787, 35.405766}, + {-72.281944, 18.576427}, + {-43.972993, -19.987855}, + {110.353166, -7.789584}, + {127.0219, 37.607202}, + {35.915811, 31.989264}, + {112.769305, -7.219906}, + {126.846496, 37.581495}, + {-47.9847, -16.0176}, + {126.797012, 35.141219}, + {100.524443, 14.575084}, + {106.872806, -6.24386}, + {27.40999, 37.040955}, + {-64.737747, 32.323265}, + {126.34801, 36.512206}, + {103.589568, 16.141217}, + {127.131296, 37.327917}, + {106.836688, -6.241924}, + {106.864853, -6.467238}, + {-49.103344, -22.35046}, + {20.950079, 52.230592}, + {106.747505, -6.200395}, + {-44.011401, -19.787816}, + {127.705645, 36.466564}, + {99.425329, 15.649365}, + {103.626981, 1.65032}, + {-43.123304, -22.894797}, + {27.790461, 41.163269}, + {126.856001, 37.478155}, + {99.821666, 13.891734}, + {101.061417, 13.686709}, + {-11.659497, 26.743462}, + {127.448601, 36.663278}, + {100.554149, 13.80862}, + {128.411007, 35.962288}, + {44.992386, 53.180168}, + {104.032742, 1.132262}, + {32.557099, -27.327826}, + {101.697683, 3.157895}, + {129.36498, 35.432485}, + {106.643871, -6.235266}, + {105.219528, 10.60638}, + {127.337718, 36.3049}, + {18.634552, -33.947052}, + {100.75082, 13.918272}, + {105.241013, -5.402545}, + {104.851799, 15.199752}, + {116.203808, 6.105524}, + {126.708219, 37.524149}, + {100.576303, 13.755333}, + {32.819939, 39.991243}, + {28.912664, 41.059471}, + {101.710892, 17.560493}, + {-44.439053, -18.756502}, + {28.867144, 41.093047}, + {100.644074, 13.684525}, + {39.779682, 40.994385}, + {35.797193, 31.719205}, + {104.363152, 15.621497}, + {127.928505, 37.092481}, + {140.154999, 36.082291}, + {99.465345, 15.732385}, + {103.702185, 1.341188}, + {128.422213, 36.139237}, + {77.52092, 28.480999}, + {129.025058, 35.160717}, + {101.533442, 3.200449}, + {7.361689, 48.097212}, + {127.246367, 36.963274}, + {28.144258, 39.842033}, + {107.461224, -6.531358}, + {101.717416, 3.031125}, + {100.716393, 13.880854}, + {99.1255, 9.07094}, + {128.917709, 36.570374}, + {99.961571, 8.378232}, + {29.060772, 40.187209}, + {126.775543, 37.43507}, + {-118.058609, 33.896433}, + {126.533053, 35.076105}, + {98.82437, 18.263888}, + {126.97121, 37.561401}, + {-39.266636, -14.806843}, + {102.613006, 15.82082}, + {-77.059858, -12.08713}, + {106.849335, -6.268904}, + {110.433363, -7.815391}, + {100.513007, 13.674119}, + {39.580318, 52.598392}, + {106.849113, -6.347494}, + {-38.576336, -3.737238}, + {106.875916, -6.489625}, + {-43.921505, -19.938772}, + {107.655899, -6.949217}, + {-52.236231, -31.758448}, + {129.034523, 35.15288}, + {100.59153, 13.954445}, + {127.815171, 35.631796}, + {100.446564, 13.849085}, + {128.603131, 34.903984}, + {-48.521238, -27.636047}, + {-48.844654, -26.301844}, + {-77.102293, 38.944594}, + {27.421179, 38.623978}, + {126.433067, 34.590828}, + {-7.620909, 33.588039}, + {112.081918, -6.902611}, + {100.425886, 14.299431}, + {129.027512, 35.334199}, + {39.889809, 21.319916}, + {127.510834, 37.299035}, + {127.458957, 36.322498}, + {126.923412, 37.584393}, + {100.675541, 13.559961}, + {106.648392, -6.222167}, + {123.543967, -5.347412}, + {127.290681, 37.221755}, + {127.558828, 37.005881}, + {99.43335, 8.221367}, + {129.021194, 35.153934}, + {100.557518, 13.85111}, + {126.937651, 37.522053}, + {114.198929, 22.291544}, + {-77.007381, -12.198083}, + {-67.497284, 10.167849}, + {98.383364, 7.883804}, + {127.057871, 37.500362}, + {-48.937704, -16.329509}, + {-48.354513, -22.381866}, + {106.833878, -6.340179}, + {110.010865, -7.712651}, + {-74.106956, 4.501145}, + {103.903595, 1.495215}, + {103.152289, 1.860384}, + {-38.445611, -12.94613}, + {-72.514867, 18.770866}, + {127.161138, 36.885118}, + {29.310038, 40.829357}, + {-44.214275, -2.481894}, + {127.069353, 37.25168}, + {100.593774, 13.77803}, + {101.161521, 13.507435}, + {28.338813, -28.195389}, + {127.163331, 35.531632}, + {33.033401, 40.232098}, + {129.10421, 37.525527}, + {98.975433, 10.317885}, + {-51.080632, -21.689339}, + {127.072286, 37.600422}, + {101.861945, 2.918301}, + {106.942131, -6.944691}, + {-38.751434, -12.328962}, + {-1.516055, 53.995495}, + {-46.60463, -23.546688}, + {-43.122451, -22.893301}, + {108.211075, 16.060358}, + {32.511104, 15.5245}, + {128.604676, 35.920299}, + {72.057334, 34.199176}, + {128.948551, 35.97541}, + {32.043924, 36.534456}, + {106.854911, -6.319358}, + {100.33659, 19.216916}, + {126.797272, 37.330873}, + {38.281544, 38.349836}, + {128.642032, 38.069263}, + {100.751282, 5.835725}, + {29.663478, -23.874074}, + {32.811424, 39.990311}, + {35.803648, 31.722413}, + {126.891041, 37.295764}, + {129.339111, 35.541824}, + {103.308976, 16.179057}, + {-34.912281, -8.121649}, + {-43.312082, -22.771724}, + {127.016371, 37.483031}, + {115.206512, -8.661876}, + {126.959305, 37.600491}, + {99.154713, 19.966668}, + {110.432106, -6.979433}, + {100.760609, 13.669097}, + {30.580225, 37.759315}, + {101.271004, 13.338967}, + {77.354157, 28.590357}, + {-46.926348, -23.453018}, + {140.519165, 38.759159}, + {100.462357, 13.722784}, + {-46.600424, -23.637531}, + {8.516614, 44.754349}, + {100.59947, 14.125841}, + {100.345139, 13.672408}, + {99.165529, 10.505676}, + {126.832776, 37.555267}, + {13.314038, -8.835422}, + {112.621365, -7.36495}, + {-43.931181, -19.883003}, + {99.531492, 14.013276}, + {129.121527, 35.153889}, + {99.024419, 18.814988}, + {128.54865, 35.831136}, + {128.542631, 38.199747}, + {103.931618, 2.33071}, + {129.018799, 35.082142}, + {128.754979, 36.338244}, + {31.817621, 31.42713}, + {-75.269138, 2.94028}, + {126.486418, 33.486279}, + {128.861432, 35.253362}, + {-74.054817, 4.676311}, + {100.852913, 13.839549}, + {102.271872, 5.948776}, + {128.984615, 35.350173}, + {128.912169, 37.758152}, + {127.823417, 37.311283}, + {126.871101, 35.16764}, + {112.741539, -7.772185}, + {21.277994, 52.002143}, + {-46.697819, -23.610456}, + {100.125053, 6.880344}, + {103.470825, 14.924167}, + {129.023835, 37.179777}, + {127.259923, 34.830045}, + {106.914135, 47.926512}, + {-75.471056, 1.454222}, + {129.296036, 35.531162}, + {126.92956, 37.027187}, + {-56.078736, -9.869803}, + {127.290009, 36.590336}, + {127.894968, 37.325435}, + {100.5021, 5.484044}, + {-51.187012, -30.055498}, + {129.05265, 35.126701}, + {100.888185, 12.708831}, + {100.540626, 13.720092}, + {48.266499, 52.714901}, + {-46.675658, -23.556913}, + {37.393276, 55.823425}, + {111.142929, -6.714147}, + {127.065255, 37.60124}, + {127.356884, 35.563565}, + {-0.466112, 11.942813}, + {126.833449, 37.307787}, + {102.254837, 2.244881}, + {-34.893383, -8.041249}, + {129.03735, 35.124457}, + {105.400768, 15.383562}, + {-60.687398, 2.812232}, + {100.266346, 16.832098}, + {102.537693, 3.78861}, + {103.326672, 17.884298}, + {-43.31292, -22.854197}, + {99.600212, 8.206059}, + {100.068112, 6.607796}, + {104.183464, 1.353679}, + {128.592363, 35.862058}, + {30.434913, 40.799}, + {101.712729, 3.2353}, + {97.991638, 17.994856}, + {99.362144, 9.128332}, + {106.77757, -6.129827}, + {102.120852, 2.287306}, + {102.006411, 16.615494}, + {106.819981, -6.725063}, + {-97.513496, 26.130613}, + {128.086485, 34.930666}, + {100.643807, 13.951832}, + {106.88886, -6.372181}, + {126.973255, 37.389694}, + {27.178721, 38.422726}, + {127.006272, 36.780682}, + {102.134245, 15.601116}, + {-43.522945, -22.881426}, + {126.729913, 37.530547}, + {5.397166, 47.216609}, + {105.671448, 18.666046}, + {128.34626, 36.168113}, + {-46.803415, -23.571207}, + {-51.199593, -29.946493}, + {143.168059, 42.892217}, + {100.552452, 13.852506}, + {126.702182, 37.321019}, + {48.085896, 46.410883}, + {117.477978, 0.135132}, + {110.372617, -6.984023}, + {-46.717594, -23.629946}, + {103.711976, 16.002974}, + {100.615875, 13.752272}, + {127.491898, 36.643402}, + {128.643032, 35.879209}, + {127.524419, 34.94783}, + {140.500397, -2.551452}, + {126.775433, 37.487846}, + {128.515118, 35.857651}, + {-43.651021, -20.29401}, + {-38.436315, -12.854484}, + {129.081789, 35.22207}, + {102.915538, 15.893474}, + {108.811676, -6.97207}, + {100.654457, 13.764041}, + {34.975197, 29.422576}, + {101.689157, 3.182355}, + {126.725782, 36.194575}, + {100.962207, 13.315583}, + {98.997344, 18.797498}, + {100.229698, 17.645536}, + {39.065475, 51.738811}, + {127.019056, 37.266371}, + {100.603162, 14.116334}, + {102.362905, 3.950837}, + {51.537167, 25.26644}, + {26.324473, 38.325245}, + {101.441066, 3.006353}, + {102.8834, 16.586198}, + {110.38842, -6.990811}, + {-84.072708, 9.880891}, + {30.797327, 36.970947}, + {127.143705, 36.347957}, + {127.68389, 37.644449}, + {-42.999469, -21.516299}, + {-66.065641, -11.015425}, + {107.540024, -6.859541}, + {100.975447, 14.359569}, + {127.034161, 37.507966}, + {100.891762, 12.907264}, + {99.921879, 7.568753}, + {110.636373, -7.350666}, + {126.970065, 37.355858}, + {126.787396, 37.656029}, + {98.972333, 18.924737}, + {100.434606, 13.938344}, + {128.694911, 35.218973}, + {-72.271927, 18.571074}, + {-43.053402, -22.805365}, + {106.876867, -6.406234}, + {-77.032975, -12.041035}, + {-46.69022, -23.590794}, + {-42.607321, -22.703778}, + {-47.492885, -23.48277}, + {28.041113, 37.308323}, + {100.310178, 13.799687}, + {100.397199, 1.706497}, + {112.657988, -7.89373}, + {100.797734, 13.717288}, + {-54.300528, -24.066473}, + {128.70974, 35.840316}, + {100.12426, 15.709668}, + {102.202801, 6.124953}, + {126.860393, 35.156476}, + {112.738213, -7.796655}, + {112.538834, -7.882007}, + {38.646923, 44.814202}, + {103.981824, 1.04576}, + {-43.015252, -22.592419}, + {100.632799, 14.317239}, + {76.657974, 10.775372}, + {101.676501, 3.201113}, + {127.099815, 37.599625}, + {28.878304, 41.024468}, + {99.351025, 8.639034}, + {27.191727, 38.376495}, + {106.820923, -6.235078}, + {128.818832, 35.174532}, + {100.660789, 14.020607}, + {117.932946, 4.254745}, + {127.035534, 37.302715}, + {35.450492, 31.853843}, + {-73.107876, 7.095057}, + {-45.05761, -21.944044}, + {-43.464754, -22.878745}, + {101.119061, 15.673961}, + {-48.041023, -15.853463}, + {126.433224, 34.810831}, + {126.680726, 37.461019}, + {36.088203, 32.077595}, + {-46.548854, -23.526511}, + {-51.171789, -23.331703}, + {100.93512, 13.116212}, + {126.872993, 37.498722}, + {126.914121, 37.509789}, + {34.866493, 36.938591}, + {104.93761, 14.575774}, + {-46.60639, -23.707742}, + {-100.909915, 22.157513}, + {-36.28569, -8.891506}, + {126.881465, 37.525172}, + {-63.213055, -17.805246}, + {126.864042, 37.670939}, + {103.618317, 1.530606}, + {100.634071, 13.784702}, + {100.698991, 14.175809}, + {-43.12219, -22.894587}, + {-46.616426, -23.587359}, + {29.98575, 36.242085}, + {127.137394, 37.372656}, + {114.162306, 22.303796}, + {-50.285994, -27.812268}, + {-46.613718, -23.541917}, + {38.290416, 38.351619}, + {100.078113, 19.572554}, + {-49.308357, -25.494063}, + {-44.003441, -22.518981}, + {32.024044, 36.539868}, + {37.710159, 55.548359}, + {29.062493, 40.18985}, + {-42.028495, -20.248382}, + {-87.22512, 14.0512}, + {-47.186794, -22.948259}, + {-79.933569, -2.085985}, + {102.246252, 14.520248}, + {-48.285824, -18.891268}, + {127.40115, 36.351253}, + {-46.828091, -24.179637}, + {100.48748, 6.996123}, + {127.725741, 37.861403}, + {99.088013, 10.760528}, + {-46.882113, -23.407224}, + {126.386212, 36.438074}, + {-69.921349, 18.482672}, + {-76.944463, -12.173527}, + {-51.365246, -20.906462}, + {-77.020152, -12.175005}, + {107.311989, -6.332141}, + {126.953709, 37.459641}, + {87.583405, 25.542702}, + {126.76918, 37.663575}, + {100.62285, 13.918725}, + {127.165978, 37.563315}, + {100.435549, 13.816287}, + {136.989868, 35.142323}, + {-101.515146, 22.466514}, + {-103.235466, 20.585377}, + {127.914864, 35.688175}, + {129.043194, 35.163145}, + {100.610483, 14.336658}, + {107.58573, -6.918302}, + {128.50238, 35.405544}, + {100.478922, 13.627763}, + {128.914656, 37.770863}, + {99.490021, 14.068938}, + {126.867783, 37.499115}, + {-47.403189, -2.991437}, + {128.65432, 35.23552}, + {-43.361439, -22.77887}, + {136.066697, -1.156879}, + {-46.51538, -23.443072}, + {129.327825, 36.013565}, + {106.763545, -6.255795}, + {111.624915, -7.568858}, + {34.724612, 31.387245}, + {100.762193, 13.756869}, + {44.573837, 37.304192}, + {100.091763, 19.611915}, + {31.464665, 30.196785}, + {128.258759, 37.909588}, + {32.876583, 39.931399}, + {36.172922, 36.236956}, + {126.638041, 37.451812}, + {-46.5378, -23.685574}, + {-48.618858, -17.780192}, + {-46.612083, -23.5453}, + {106.039947, -5.999458}, + {28.706015, 40.995289}, + {128.612035, 35.209408}, + {-46.664764, -23.564514}, + {99.368536, 10.990621}, + {100.525664, 13.733949}, + {127.078653, 37.206763}, + {106.900821, -6.194068}, + {107.00369, -6.228743}, + {100.519241, 5.395773}, + {-48.426241, -1.382935}, + {29.075993, 41.013454}, + {9.558988, 0.400114}, + {126.478719, 33.493256}, + {127.061507, 37.052947}, + {127.836192, 35.752859}, + {120.76664, 14.911877}, + {129.270508, 35.584145}, + {106.963165, -6.689336}, + {29.373126, 40.787978}, + {-43.459897, -22.692314}, + {-46.407224, -23.505451}, + {127.020263, 37.574601}, + {126.602663, 36.356072}, + {100.541435, 13.665395}, + {128.636203, 35.845151}, + {31.251117, 30.050286}, + {102.778729, 17.72118}, + {27.574199, 53.970769}, + {126.849755, 36.962978}, + {-43.207366, -22.90991}, + {102.189667, 17.769324}, + {121.400234, 31.195652}, + {110.020591, -7.710998}, + {36.143496, 36.159299}, + {11.160913, 53.96124}, + {-70.41413, 5.489375}, + {99.927714, 17.372018}, + {-46.68457, -23.537647}, + {100.124336, 14.474243}, + {98.345417, 8.081046}, + {100.042941, 17.663056}, + {102.796648, 17.397844}, + {47.893542, 29.285017}, + {102.16497, 16.165148}, + {-0.229433, 5.581454}, + {-47.304878, -22.705547}, + {129.092587, 35.134066}, + {101.700929, 12.770417}, + {-42.810116, -5.091145}, + {130.885498, 37.451965}, + {-38.563503, -3.775115}, + {39.234089, 51.666603}, + {127.183052, 37.719144}, + {101.236904, 6.869304}, + {98.338584, 7.931807}, + {-49.044624, -22.327978}, + {126.843323, 35.128504}, + {32.779594, 39.973563}, + {126.722208, 35.206669}, + {101.696971, 3.248444}, + {32.85392, 39.89696}, + {100.653518, 13.536466}, + {-46.694017, -23.581999}, + {37.323982, 37.031548}, + {101.549853, 15.345123}, + {127.142964, 37.588952}, + {-43.187843, -22.95265}, + {100.175667, 13.780458}, + {100.946088, 13.323847}, + {100.538925, 13.745188}, + {100.997971, 13.190472}, + {102.822922, 16.570919}, + {-90.520387, 14.625898}, + {127.724277, 37.886992}, + {100.586582, 14.205256}, + {-43.149503, -11.091219}, + {-46.668671, -23.564495}, + {48.092743, 29.339684}, + {99.807871, 13.649998}, + {100.494057, 13.750864}, + {126.769852, 37.489251}, + {102.084816, 13.660093}, + {100.576916, 13.744522}, + {126.717302, 37.533652}, + {129.105292, 35.138298}, + {-43.281343, -22.686152}, + {37.325485, 37.166718}, + {-86.878525, 12.43633}, + {-99.017037, 19.401475}, + {100.287796, 13.571235}, + {27.17808, 38.302153}, + {-36.915789, -10.374452}, + {127.090571, 37.279518}, + {92.02816, 22.85034}, + {129.060297, 35.140259}, + {100.203773, 19.578934}, + {98.519493, 8.486365}, + {32.757945, 39.952893}, + {72.522362, 23.039262}, + {110.437424, -7.785844}, + {129.312065, 35.439993}, + {-102.314629, 21.858518}, + {102.051371, 16.136246}, + {126.911687, 37.57361}, + {128.99142, 35.188498}, + {101.91217, 12.680819}, + {14.676069, 40.774169}, + {126.847397, 35.432949}, + {35.955853, 32.0099}, + {34.045001, 34.998974}, + {50.120247, 26.341125}, + {-38.957451, -12.432088}, + {126.991872, 37.572149}, + {99.591271, 17.337475}, + {126.862885, 35.116919}, + {41.27459, 39.909245}, + {99.492493, 14.063295}, + {100.60553, 13.805229}, + {100.372333, 13.83513}, + {106.664177, -6.303948}, + {-75.555054, 6.259799}, + {-99.512878, 27.485619}, + {127.250029, 37.415249}, + {26.307369, 38.319382}, + {127.242989, 36.515347}, + {28.898042, 40.992658}, + {100.487438, 14.093495}, + {127.129497, 37.452034}, + {-46.97683, -23.532909}, + {-54.665421, -20.507954}, + {71.354625, 50.975901}, + {99.480278, 18.534512}, + {101.821037, 12.739881}, + {-0.16808, 38.645039}, + {106.911469, -6.280769}, + {100.65395, 13.941015}, + {115.123047, -8.538034}, + {126.952592, 37.545937}, + {126.975346, 37.576157}, + {-46.197149, -23.978254}, + {99.366051, 9.076234}, + {127.783759, 35.29729}, + {-47.806377, -15.652246}, + {128.354374, 36.389543}, + {28.999413, 41.091315}, + {99.287925, 16.674133}, + {34.684711, 37.976778}, + {100.95015, 13.140865}, + {128.557162, 35.845659}, + {127.015366, 37.57503}, + {-57.647746, -19.043985}, + {128.860212, 35.23726}, + {127.455465, 36.335078}, + {-43.251492, -22.887566}, + {49.94836, 40.539724}, + {104.722755, -2.963383}, + {101.037414, 13.39427}, + {117.249273, 3.708156}, + {-46.009726, -4.885786}, + {-73.527492, 5.632892}, + {102.033531, 16.562242}, + {104.724113, 16.996346}, + {29.042188, 41.145363}, + {100.864675, 13.9019}, + {126.788284, 37.486948}, + {126.945036, 36.414524}, + {129.375168, 36.265357}, + {-50.647079, -21.243292}, + {100.282051, 13.562272}, + {127.302954, 35.541152}, + {129.22254, 35.568355}, + {-48.464968, -1.27048}, + {78.592873, 25.402925}, + {-76.562472, 3.223219}, + {127.942355, 37.352707}, + {126.678976, 35.409236}, + {35.520551, 33.448112}, + {28.872377, 41.034565}, + {100.923889, 14.540869}, + {28.990568, 41.099545}, + {100.617096, 14.115987}, + {100.66082, 4.180577}, + {112.553328, -8.185877}, + {126.05095, 34.560052}, + {99.237492, 18.962437}, + {126.801805, 37.336264}, + {35.920516, 31.870425}, + {100.615959, 13.681521}, + {76.969574, 52.275326}, + {102.586769, 14.822321}, + {100.534792, 13.745078}, + {128.044667, 37.155274}, + {99.451012, 14.691285}, + {126.922953, 37.487322}, + {99.125313, 16.875656}, + {76.638094, 27.558095}, + {103.76481, 15.883094}, + {128.595457, 35.866833}, + {-43.942343, -19.876493}, + {100.653019, 13.858277}, + {127.416318, 36.320308}, + {-56.021154, -28.639293}, + {-48.559025, -27.591652}, + {27.024927, 38.702755}, + {28.820227, 40.996532}, + {103.735159, 15.769849}, + {127.138885, 37.555943}, + {99.983072, 14.118461}, + {37.706367, 55.7817}, + {-75.577187, 6.250825}, + {126.480824, 37.747382}, + {18.44466, 54.597187}, + {126.793777, 37.643986}, + {102.280612, 6.051795}, + {98.384804, 7.930031}, + {104.660812, 15.693833}, + {116.849922, 6.884105}, + {54.405964, 24.451246}, + {96.18487, 4.348901}, + {112.651978, -7.915145}, + {-78.277351, -9.143294}, + {101.665962, 3.120095}, + {107.654569, -6.828968}, + {127.734636, 37.84643}, + {-43.429281, -21.039955}, + {129.004799, 36.033564}, + {126.551417, 33.486579}, + {103.925469, 12.538282}, + {100.656387, 13.854389}, + {-77.125901, -11.994338}, + {104.898232, 15.114251}, + {29.021307, 41.02737}, + {99.735578, 7.527519}, + {101.520132, 14.062661}, + {126.496279, 35.123111}, + {100.50071, 13.676726}, + {126.991528, 37.249335}, + {101.091726, 13.397051}, + {103.078255, 17.837492}, + {36.367421, 36.493419}, + {112.168635, -7.122016}, + {101.414742, 3.054223}, + {35.055248, 32.802479}, + {99.761566, 6.353147}, + {100.562012, 13.892249}, + {-103.562996, 19.365257}, + {102.246745, 2.214842}, + {99.865585, 16.562103}, + {100.463013, 13.852816}, + {112.792488, -7.246215}, + {100.948185, 12.665166}, + {127.480171, 36.631356}, + {34.570587, 36.773685}, + {99.951925, 8.431738}, + {117.876015, 4.263883}, + {-44.942156, -22.561451}, + {129.098007, 37.541622}, + {118.087082, 5.889349}, + {32.068546, 36.524754}, + {-94.902243, 17.962488}, + {107.052113, -6.169914}, + {113.999833, 22.461636}, + {-63.850023, -8.748631}, + {36.16487, 36.583534}, + {126.821129, 37.496899}, + {139.707298, 35.517296}, + {10.367852, 46.0327}, + {-98.361826, 20.100289}, + {103.669159, 1.539726}, + {28.869193, 40.382684}, + {36.244151, 41.33838}, + {-45.065144, -23.416046}, + {35.883352, 31.913429}, + {103.073326, 3.723186}, + {28.149222, 40.112104}, + {83.865539, 26.740398}, + {126.427959, 33.250231}, + {29.020879, 36.649431}, + {103.946363, 1.048326}, + {100.769707, 13.608205}, + {28.942266, 41.060925}, + {126.946417, 37.5864}, + {101.948897, 6.325988}, + {106.854482, -6.223643}, + {107.599846, -6.918899}, + {100.629288, 13.850403}, + {-48.334988, -10.278778}, + {128.084503, 36.06397}, + {36.030685, 33.964653}, + {101.481911, 6.864795}, + {102.203985, 12.751844}, + {-43.358276, -22.791988}, + {100.529206, 13.739242}, + {106.78385, -6.272683}, + {36.197499, 36.277655}, + {36.332302, 41.273867}, + {102.310499, 12.924575}, + {129.302121, 37.235562}, + {-47.910469, -19.779191}, + {99.841647, 18.352483}, + {103.174438, 15.108139}, + {115.218369, -8.54639}, + {-44.846931, -20.124392}, + {101.200851, 12.701765}, + {127.181431, 37.561025}, + {-55.512132, -11.897723}, + {-48.053248, -15.929269}, + {-46.315189, -23.967319}, + {106.79731, -6.506221}, + {126.61673, 35.925367}, + {128.900777, 37.806029}, + {126.979293, 37.574107}, + {107.557172, -7.095353}, + {102.134389, 5.823388}, + {100.439809, 6.983691}, + {106.962194, -6.245944}, + {29.092414, 41.016287}, + {-67.810864, -9.988823}, + {126.766602, 37.658165}, + {102.901533, 11.737484}, + {-44.115509, -22.524389}, + {100.538848, 13.648774}, + {127.533499, 36.129739}, + {126.661884, 37.595362}, + {126.935152, 37.563844}, + {-38.775261, -7.389284}, + {26.671133, 39.267792}, + {127.381644, 36.337785}, + {32.815773, 39.967133}, + {100.639943, 13.527084}, + {99.054993, 18.569733}, + {103.469551, 17.476337}, + {14.216068, 48.032864}, + {-35.174728, -5.877066}, + {126.826673, 33.336178}, + {104.375343, -3.885891}, + {99.148324, 10.11486}, + {35.70496, 32.041446}, + {99.154938, 14.36383}, + {102.26153, 14.947226}, + {114.187728, 22.282014}, + {77.752993, 29.003658}, + {107.598793, -6.880182}, + {-35.199892, -5.763926}, + {42.985294, 44.101013}, + {127.166436, 36.824603}, + {98.479403, 3.583546}, + {28.335147, 40.124697}, + {76.617108, 60.936753}, + {114.165344, 22.454535}, + {121.457724, 17.744414}, + {-76.978439, -12.167607}, + {-43.954033, -19.947901}, + {-79.687407, -3.677662}, + {99.986557, 13.841526}, + {99.896598, 17.041581}, + {101.672245, 3.198603}, + {9.382597, 45.657177}, + {28.878146, 40.991519}, + {108.220108, -7.301268}, + {-44.128829, -19.768715}, + {100.501318, 13.779496}, + {128.656724, 35.875246}, + {100.143695, 13.662989}, + {128.143884, 36.119346}, + {-8.642931, 41.207239}, + {30.343963, 40.648252}, + {51.845898, 55.659008}, + {100.598457, 13.929655}, + {126.608765, 34.876246}, + {115.267544, -2.41405}, + {126.745079, 37.303234}, + {103.897611, 1.733753}, + {100.863403, 13.837534}, + {42.545597, 18.223302}, + {-48.441352, -27.446571}, + {-84.354205, 34.431239}, + {101.732986, 3.20443}, + {27.202865, 38.443207}, + {-110.309959, 24.156265}, + {126.834765, 37.491975}, + {37.879258, 40.983469}, + {27.212355, 38.47522}, + {101.463562, 3.283798}, + {99.475145, 18.294978}, + {-58.38073, -34.604454}, + {100.522671, 13.902908}, + {35.191303, 39.81184}, + {128.198868, 35.224363}, + {79.913681, 7.560182}, + {-46.849946, -24.20371}, + {99.576812, 7.521965}, + {106.726596, -6.13145}, + {100.5047, 13.765012}, + {127.017459, 37.652017}, + {100.17701, 16.531975}, + {127.081116, 37.968262}, + {76.915961, 8.940562}, + {-52.238782, -15.902211}, + {99.51722, 15.08931}, + {102.406967, 15.79681}, + {103.366257, 3.92002}, + {127.126236, 37.300285}, + {27.987262, 41.332916}, + {-44.575062, -3.544118}, + {100.667168, 14.295668}, + {-46.550518, -23.720965}, + {-43.473339, -22.985084}, + {-101.598686, 17.660004}, + {-67.102318, -17.971251}, + {101.84903, 14.104733}, + {80.097237, 14.30113}, + {126.241069, 36.821556}, + {100.268028, 13.572685}, + {126.845469, 35.150752}, + {103.622589, 16.033751}, + {128.767674, 35.800845}, + {108.21775, -7.34775}, + {-51.446819, -23.571117}, + {128.552541, 38.140191}, + {100.5653, -0.117497}, + {100.787933, 13.534479}, + {106.762036, -6.848123}, + {28.897676, 41.180387}, + {101.85215, 16.668245}, + {100.754229, 13.521567}, + {100.582197, 13.823452}, + {35.997051, 32.567451}, + {112.728462, -7.948728}, + {100.748277, 13.94897}, + {126.839661, 37.330143}, + {-74.024323, 4.763648}, + {99.808928, 13.525289}, + {-38.910625, -12.293984}, + {104.104547, 14.950398}, + {104.916847, 11.558838}, + {128.559158, 38.190813}, + {75.784691, 30.830267}, + {37.797473, 38.349344}, + {-86.240316, 15.519774}, + {126.845936, 37.654254}, + {100.533247, 13.654443}, + {100.122875, 14.475086}, + {-71.915413, -13.530691}, + {-46.61631, -23.553842}, + {103.523435, 16.44721}, + {97.945839, 18.126511}, + {126.910896, 37.461651}, + {99.76327, 8.44116}, + {109.271089, -7.677188}, + {-63.16289, -17.828127}, + {103.437859, 14.774393}, + {100.813934, 14.425719}, + {100.602819, 14.35125}, + {115.248009, -8.686151}, + {112.720327, -7.447861}, + {-46.527346, -23.547567}, + {127.487716, 37.252596}, + {103.003471, 17.180147}, + {129.080582, 37.598797}, + {129.389715, 35.949829}, + {72.840126, 19.042463}, + {100.524875, 14.049022}, + {101.166161, 13.89623}, + {35.43132, 36.987797}, + {110.677403, -7.665748}, + {129.007546, 37.103882}, + {100.688832, 13.684439}, + {-63.10775, -17.746105}, + {129.433574, 36.834209}, + {101.44958, 3.055298}, + {-53.079781, -25.76054}, + {100.082779, 15.193327}, + {126.474329, 33.472206}, + {100.563868, 13.908333}, + {-89.212627, 13.734346}, + {-34.958625, -8.261238}, + {100.620851, 13.791714}, + {-47.118033, -23.040966}, + {142.381775, 43.776878}, + {29.067402, 40.196007}, + {-43.116299, -22.886761}, + {128.922059, 37.756729}, + {106.798278, -6.410009}, + {102.616646, 15.529974}, + {100.555522, 13.939449}, + {101.67567, 2.929319}, + {127.431088, 37.280215}, + {102.123123, 14.994184}, + {120.544634, 22.550306}, + {100.274219, 16.364561}, + {28.799848, 40.994717}, + {126.982773, 37.559761}, + {-46.570685, -23.507912}, + {-47.984581, -15.844668}, + {100.46196, 15.242807}, + {127.990915, 36.466803}, + {127.935699, 36.97913}, + {115.144367, -8.551038}, + {104.037488, 17.96493}, + {126.919716, 37.391739}, + {-43.965633, -19.885218}, + {103.31309, 2.057104}, + {116.822521, -1.270361}, + {99.95151, 8.414357}, + {128.07785, 34.931531}, + {101.269014, 4.208064}, + {103.406433, 4.224391}, + {100.779264, 14.582373}, + {100.593086, 13.576868}, + {103.408203, 15.797248}, + {-50.254547, -30.297518}, + {102.912434, 17.030849}, + {-16.551509, 28.08972}, + {102.70723, 16.388113}, + {30.704674, 41.100471}, + {104.801456, -2.968517}, + {28.360819, 40.211382}, + {26.376826, 38.284784}, + {-40.325649, -17.164671}, + {-57.552482, -37.993283}, + {35.400113, 32.937314}, + {-3.982877, 5.408379}, + {100.12075, 13.482855}, + {-51.505707, -27.175041}, + {126.916082, 37.488819}, + {43.89666, 56.315681}, + {-74.26945, 4.73889}, + {100.663319, 13.728424}, + {102.108795, 14.971887}, + {119.405852, -5.134095}, + {127.4545, 36.303244}, + {128.703552, 35.225718}, + {-42.933046, -22.911932}, + {100.311892, 13.715152}, + {127.310322, 36.390927}, + {100.914886, 13.285378}, + {-47.352645, -2.995565}, + {101.881447, 17.19112}, + {30.166021, -25.352644}, + {100.319385, 13.591155}, + {-46.69258, -23.601914}, + {29.229194, 37.804852}, + {104.104362, 15.674349}, + {32.313469, 36.268204}, + {103.610153, 1.570133}, + {-118.287181, 34.100604}, + {103.77105, 1.547349}, + {100.494286, 13.582493}, + {102.193641, 14.916303}, + {36.23039, 36.950719}, + {35.22094, 47.852951}, + {-42.996651, -22.849294}, + {113.909386, -7.701045}, + {101.234813, 12.730748}, + {100.430832, 7.020645}, + {101.041656, 13.316721}, + {129.218253, 35.790895}, + {106.080315, -6.321631}, + {37.395714, 55.835434}, + {100.546528, 13.691151}, + {46.797558, 24.684055}, + {126.720398, 37.400137}, + {-77.068497, -11.981168}, + {103.706882, 16.081494}, + {-46.745208, -23.6808}, + {-50.060667, -23.300904}, + {38.956038, 45.066502}, + {105.500952, 21.107217}, + {103.2637, 1.994041}, + {106.799217, -6.202001}, + {-68.015811, 10.462281}, + {102.254329, 5.962927}, + {106.795158, -6.456452}, + {97.977295, 19.304178}, + {128.179626, 36.120441}, + {100.010857, 14.501432}, + {100.352074, 14.233323}, + {7.898054, 47.344224}, + {127.120838, 37.535892}, + {32.79734, 39.962654}, + {28.658419, 41.022168}, + {103.235413, 4.128805}, + {-48.447241, -1.370394}, + {35.74838, 32.094655}, + {100.45504, 14.740017}, + {103.732464, 16.675461}, + {100.924065, 13.338067}, + {-44.187302, -20.055592}, + {76.910828, 8.596576}, + {26.367719, 53.48559}, + {29.800682, 40.714577}, + {-63.369907, -17.982716}, + {-52.354699, -31.727458}, + {101.08638, 13.700177}, + {-70.600906, 19.401764}, + {43.396494, 38.494993}, + {42.66013, 18.144247}, + {-77.004917, -11.965032}, + {32.913784, 39.951176}, + {100.622002, 7.094917}, + {-47.508072, -3.736145}, + {16.511173, 50.855618}, + {100.982704, 14.089599}, + {112.596864, -8.06704}, + {101.135017, 14.806222}, + {100.896622, 13.571617}, + {98.533846, 14.661272}, + {16.610191, 50.891674}, + {98.735222, 14.687013}, + {109.384827, -6.8863}, + {128.432499, 36.649418}, + {99.607107, 7.973653}, + {101.910308, 16.751983}, + {126.974966, 37.343156}, + {126.563468, 35.095812}, + {30.375679, 59.829605}, + {-99.629998, 20.541405}, + {-43.253283, -22.881407}, + {-46.312183, -23.963697}, + {100.369332, 13.689812}, + {105.323403, 15.946017}, + {100.844101, 13.832908}, + {-44.030674, -19.908677}, + {100.509432, 13.879372}, + {102.740356, 5.902017}, + {104.889168, 15.293165}, + {100.542091, 13.754341}, + {-10.80114, 6.313371}, + {127.011906, 37.541921}, + {98.280357, 8.399503}, + {-77.058121, -11.982906}, + {-53.484599, -23.091625}, + {-68.303309, -16.648705}, + {106.993965, -6.212886}, + {102.713157, 15.532419}, + {126.990671, 37.50687}, + {34.741837, 38.673393}, + {36.010704, 32.547092}, + {-122.134636, 47.795515}, + {-60.720952, -32.929076}, + {102.800621, 17.3988}, + {36.55508, 40.319881}, + {25.758678, 48.444985}, + {-35.695763, -9.663537}, + {101.517036, 3.042301}, + {-37.64823, -8.083988}, + {128.970139, 35.075194}, + {99.236122, 18.075134}, + {-43.390537, -22.948391}, + {35.262208, 37.000156}, + {69.614082, 42.345242}, + {106.647008, -6.345671}, + {100.684319, 13.717917}, + {-52.882718, -30.150197}, + {-96.693939, 17.071909}, + {100.446989, 13.79826}, + {-68.118744, -16.487556}, + {29.333096, 38.672691}, + {12.963951, 43.401394}, + {104.677826, 17.051744}, + {127.174301, 37.550354}, + {100.694925, 14.281572}, + {103.938878, 1.460857}, + {-43.33308, -22.842609}, + {128.736498, 35.469892}, + {100.636887, 14.114949}, + {126.998531, 37.533492}, + {-42.144637, -19.785913}, + {100.56712, 13.758428}, + {35.807531, 32.018438}, + {100.658546, 13.656126}, + {-76.940019, -12.182424}, + {77.675621, 12.964871}, + {27.133484, 40.438614}, + {37.808685, 37.010632}, + {100.578287, 13.918048}, + {101.58696, 12.664893}, + {100.329788, 16.495846}, + {34.616057, 36.79039}, + {106.852562, -6.23149}, + {102.765339, 17.825708}, + {106.999959, 47.932029}, + {126.734169, 37.500673}, + {106.82225, -6.120816}, + {32.87205, 39.960155}, + {-63.708351, -8.795933}, + {-43.3106, -15.794303}, + {103.679432, 14.456429}, + {100.624224, 14.331295}, + {43.878952, 56.22876}, + {46.623427, 51.625145}, + {126.943583, 37.132176}, + {29.091188, 37.789661}, + {102.242092, 2.206699}, + {110.368893, -7.759925}, + {128.471802, 50.910686}, + {127.210075, 37.732704}, + {99.95562, 12.552232}, + {35.732949, 32.182841}, + {103.895004, 1.717507}, + {-66.874845, 10.49919}, + {-63.819081, -8.77397}, + {37.381039, 37.089485}, + {-48.631608, -27.560153}, + {27.149223, 38.396538}, + {101.87117, 14.881523}, + {128.330661, 37.584577}, + {98.662201, 3.520499}, + {-74.348676, 4.80643}, + {126.453579, 35.398037}, + {112.770782, -7.226431}, + {126.703644, 37.446808}, + {-43.342605, -21.775218}, + {101.524952, 14.053866}, + {100.664619, 14.031398}, + {100.034113, 19.319562}, + {-89.153592, 42.035242}, + {107.33621, -6.347544}, + {99.11544, 10.580702}, + {100.483387, 13.641814}, + {105.115112, 14.58412}, + {100.92437, 12.615692}, + {101.044777, 13.056836}, + {-46.548361, -23.532421}, + {28.99157, 41.050881}, + {126.794307, 37.505547}, + {-46.509983, -23.646898}, + {72.05941, 40.232491}, + {102.045107, 13.553153}, + {100.550554, 13.785494}, + {99.99115, 12.400497}, + {115.203772, -8.618137}, + {102.923711, 17.055655}, + {109.009102, -7.707564}, + {98.81516, 16.742323}, + {126.507927, 34.44194}, + {102.803093, 16.219286}, + {126.857604, 35.567424}, + {100.462659, 15.592649}, + {105.245513, -5.446414}, + {100.005548, 14.63328}, + {75.781517, 26.953412}, + {128.486836, 36.622568}, + {101.100884, 13.042812}, + {100.358383, 6.85096}, + {24.242091, 50.390302}, + {106.788193, -6.380651}, + {-43.289097, -22.865113}, + {127.734024, 34.93853}, + {30.448713, 50.473782}, + {34.901768, 32.133919}, + {32.509087, 37.86747}, + {100.601402, 13.68728}, + {28.667872, 41.007348}, + {112.562714, -7.232185}, + {-103.878693, 18.998943}, + {36.578144, 40.676048}, + {-0.625621, 34.819352}, + {110.198367, -7.514923}, + {99.508496, 18.280228}, + {104.973997, -5.344343}, + {-46.794537, -23.498247}, + {100.279702, 13.774775}, + {103.764164, 1.539195}, + {100.644162, 13.858298}, + {127.147734, 37.603524}, + {127.169894, 35.827868}, + {111.278693, 2.144358}, + {-99.520119, 27.447651}, + {126.406477, 33.291361}, + {127.259161, 36.480461}, + {72.152487, 61.619545}, + {100.536909, 14.485045}, + {126.929626, 37.52858}, + {110.757133, -7.18283}, + {-46.731815, -23.534273}, + {78.442909, 17.358702}, + {114.194498, -8.423825}, + {126.919292, 37.549707}, + {-80.680985, -1.017124}, + {100.488312, 13.755932}, + {99.83244, 15.27322}, + {103.630271, -1.615595}, + {103.803574, 15.691756}, + {82.905219, 54.988472}, + {100.639542, 13.573098}, + {100.958931, 13.329038}, + {100.030899, 13.583436}, + {37.365692, 55.791084}, + {29.286892, 40.88356}, + {112.660726, -7.335645}, + {98.719185, 3.529438}, + {107.29306, -6.318031}, + {-60.719212, -32.824818}, + {32.888534, 39.933652}, + {-46.664479, -23.604347}, + {-99.042633, 19.637016}, + {100.68179, 13.66839}, + {108.300964, -6.408866}, + {-46.692059, -23.626316}, + {100.785973, 19.0889}, + {29.283148, 40.881069}, + {-51.73014, -17.872318}, + {35.3573, 37.058651}, + {28.874414, 40.377432}, + {104.628357, 14.491078}, + {99.778198, 13.568714}, + {99.858349, 9.200241}, + {100.81041, 13.729456}, + {129.0093, 35.323623}, + {127.09209, 37.504862}, + {126.981089, 37.496416}, + {17.011118, 51.096893}, + {38.841808, 58.035088}, + {126.714584, 35.984678}, + {29.577985, 40.687975}, + {100.579244, 13.706947}, + {106.991368, -6.280911}, + {98.610763, 3.550132}, + {-39.92114, -2.921512}, + {-47.448723, -22.145004}, + {103.458442, 4.244779}, + {104.87904, -4.819253}, + {-99.513386, 19.272988}, + {127.462519, 37.262548}, + {36.928829, 37.578472}, + {128.602132, 34.841935}, + {102.099144, 14.973895}, + {115.185186, -8.592587}, + {29.904756, 40.75735}, + {-63.135029, -17.795044}, + {128.036261, 34.818805}, + {100.793487, 13.584708}, + {-54.822769, -22.243653}, + {128.505943, 35.50776}, + {29.256987, 40.889545}, + {32.329875, 41.640949}, + {51.92873, 47.104099}, + {100.180558, 6.340215}, + {36.335185, 41.271104}, + {-99.041389, 19.314449}, + {37.832489, 55.760845}, + {101.667931, 14.878929}, + {40.539101, 37.828724}, + {99.405167, 13.620402}, + {99.337368, 18.203458}, + {36.27681, 32.126949}, + {130.186691, 32.43465}, + {99.749908, 7.019984}, + {114.103153, 22.349561}, + {-37.054241, -10.897558}, + {-90.532205, 14.566517}, + {39.713829, 40.998318}, + {106.82256, 47.911831}, + {19.437523, -33.644346}, + {104.332985, 15.10937}, + {-73.169022, 7.056375}, + {129.188248, 35.57365}, + {126.962506, 37.504148}, + {37.291069, 37.488102}, + {101.143232, 4.646187}, + {37.371056, 37.164867}, + {100.49411, 7.057183}, + {100.045469, 13.812759}, + {129.032603, 35.210363}, + {99.050745, 8.311474}, + {100.728863, 14.57503}, + {-76.840565, -12.311435}, + {100.450172, 13.78371}, + {100.679516, 13.788489}, + {-44.05961, -19.992648}, + {101.36088, 15.3012}, + {117.278843, -0.78148}, + {108.368332, 11.195036}, + {112.606878, -7.297168}, + {100.746055, 13.750109}, + {103.721672, 17.388744}, + {126.97859, 37.520979}, + {-47.944573, -1.290402}, + {100.288451, 13.790226}, + {-76.873452, -12.123823}, + {27.205627, 38.20209}, + {100.670273, 13.640906}, + {100.626548, 13.626079}, + {112.655881, -7.965264}, + {99.495968, 11.195935}, + {126.99553, 37.533005}, + {51.445788, 25.235132}, + {129.127555, 35.164951}, + {99.940571, 8.350943}, + {100.982904, 13.09018}, + {102.102789, 12.608716}, + {100.530315, 13.7285}, + {100.488839, 5.18828}, + {103.852287, 1.301218}, + {29.44174, 38.664234}, + {41.417263, 37.714949}, + {101.174616, 12.955819}, + {69.291504, 34.495972}, + {99.202789, 2.986917}, + {127.6383, 37.127068}, + {1.279872, 6.172874}, + {20.750702, 50.69908}, + {106.749008, -6.317043}, + {99.765026, 14.003578}, + {-41.960011, -20.353148}, + {-40.800739, -9.478157}, + {119.406742, -5.15187}, + {129.16553, 37.444175}, + {106.72015, -6.213478}, + {77.598541, 14.679941}, + {106.82415, -6.184212}, + {31.034362, -29.844015}, + {101.514107, 3.696997}, + {107.039128, -6.185996}, + {100.217855, 13.647176}, + {101.297203, 3.286847}, + {100.452003, 13.895355}, + {-76.929823, -12.221971}, + {28.999577, 41.070182}, + {109.340831, 12.805713}, + {-89.12448, 13.699526}, + {99.874763, 14.005658}, + {-104.836933, 39.680129}, + {106.869652, 17.206909}, + {-43.911656, -3.545245}, + {100.957214, 6.458287}, + {104.807968, -3.005314}, + {112.112823, -7.904492}, + {16.78219, 41.119129}, + {101.679176, 3.115856}, + {104.329748, 16.049192}, + {-117.884758, 33.788773}, + {126.91034, 37.589289}, + {129.118858, 37.51902}, + {103.351236, 15.619208}, + {102.742985, 16.839697}, + {35.839724, 32.061278}, + {101.089128, 13.004049}, + {110.360018, -6.9873}, + {127.034332, 37.502653}, + {-46.718436, -23.496449}, + {-1.935851, 7.595385}, + {40.416821, 37.723244}, + {-74.053544, 4.656506}, + {100.512787, 13.727909}, + {127.727749, 34.753727}, + {41.618107, 55.336918}, + {126.641778, 35.455535}, + {30.510401, 39.775356}, + {-43.191269, -22.893378}, + {35.822372, 37.031284}, + {119.447377, -5.19363}, + {114.186428, 22.273443}, + {76.935318, 11.08306}, + {126.266335, 33.116007}, + {104.614006, 14.958304}, + {100.939949, 13.220284}, + {107.677615, -6.931881}, + {-43.609169, -22.845915}, + {100.960001, 13.1669}, + {98.899918, 19.087261}, + {36.217487, 36.727002}, + {38.749416, 8.966876}, + {76.89151, 29.995226}, + {72.871674, 19.099417}, + {110.840019, -7.666445}, + {-46.810355, -23.007046}, + {-39.428847, -3.944936}, + {-43.340912, -22.764265}, + {126.762595, 37.663554}, + {101.258095, 12.682806}, + {100.993423, 13.404373}, + {107.427345, -6.248963}, + {101.771553, 17.294464}, + {56.019863, 54.724972}, + {36.17831, 36.54689}, + {103.310575, 3.808525}, + {111.367714, -2.5182}, + {102.199486, 12.404689}, + {100.426054, 13.719155}, + {115.223553, -8.660476}, + {-46.637625, -23.564155}, + {-49.125336, -26.507425}, + {100.488846, 13.735195}, + {99.223295, 8.549621}, + {102.113974, 14.98829}, + {127.148723, 37.436066}, + {32.550182, 0.391148}, + {28.986166, 41.243896}, + {-35.736791, -9.62248}, + {100.651794, 13.519551}, + {35.834118, 32.063785}, + {39.205153, 38.68024}, + {127.079824, 37.261401}, + {-42.735092, -5.10269}, + {106.799984, -6.444556}, + {127.194641, 37.7206}, + {-46.551913, -23.58378}, + {44.804942, 41.488728}, + {22.838766, 43.941326}, + {-54.513672, -22.372422}, + {44.507408, 40.17038}, + {101.081253, 4.622382}, + {101.056488, 13.030368}, + {127.169001, 36.276221}, + {-51.122576, -30.119134}, + {100.475397, 13.83182}, + {35.315716, 37.038284}, + {127.045427, 37.576944}, + {98.455872, 15.144069}, + {40.213165, 37.913174}, + {101.738682, 3.178516}, + {36.7318, -1.290779}, + {101.457283, 14.624649}, + {114.206551, 22.325983}, + {127.832849, 35.210041}, + {101.101521, 13.446112}, + {102.098275, 14.985043}, + {100.120834, 14.478169}, + {-38.431133, -12.915166}, + {127.113332, 36.82709}, + {98.884388, 19.199161}, + {34.572846, 36.775128}, + {31.041418, -17.802103}, + {-47.350617, -21.966395}, + {100.517181, 13.902617}, + {-43.111145, -22.907898}, + {128.106934, 35.177998}, + {110.758536, -6.744969}, + {31.140361, 40.84128}, + {33.459579, 44.584278}, + {-43.190041, -22.820009}, + {38.285511, 38.342444}, + {126.300125, 36.594505}, + {31.929228, 40.291624}, + {46.854771, 23.490774}, + {127.073498, 37.034967}, + {32.929152, 40.067067}, + {100.653545, 13.822413}, + {106.813332, -6.369795}, + {39.239166, 38.669697}, + {107.567393, -6.995895}, + {-48.891585, -10.163502}, + {-47.156801, -22.840743}, + {128.834763, 35.867825}, + {-50.834224, -29.627218}, + {47.937744, 29.278992}, + {100.538532, 13.746143}, + {107.005043, -6.443886}, + {127.397354, 36.289798}, + {-51.935753, -23.434811}, + {-46.700607, -23.528393}, + {100.701553, 13.851171}, + {-51.147663, -23.326734}, + {28.96974, 41.060703}, + {28.86612, 41.061441}, + {36.085629, 32.045715}, + {110.850471, -7.546359}, + {128.082722, 35.195832}, + {100.378616, 13.688027}, + {100.941715, 12.863458}, + {29.425845, 40.800206}, + {100.552931, 13.791838}, + {-36.027613, -9.158888}, + {103.625069, 1.639394}, + {101.078072, 13.027832}, + {103.647034, 18.357801}, + {104.720558, -2.966979}, + {28.649267, 41.0369}, + {102.244873, -3.129172}, + {113.98309, 4.373777}, + {-46.68087, -23.526072}, + {26.548569, 41.673708}, + {107.032664, -6.866885}, + {-80.157379, -5.087529}, + {-92.10971, 14.640669}, + {-46.542225, -23.625933}, + {28.711533, 36.966492}, + {68.287353, 25.40075}, + {127.23612, 38.004861}, + {129.289515, 35.823152}, + {99.629158, 7.312201}, + {-43.995846, -19.927809}, + {101.801892, 2.884984}, + {126.677194, 37.422568}, + {-49.301662, -16.785524}, + {-40.614959, -6.837406}, + {100.323506, 13.740971}, + {99.70314, 8.167839}, + {127.049881, 37.514308}, + {-46.56252, -23.615163}, + {-50.043514, -23.516615}, + {31.82049, 41.477135}, + {65.321434, 55.33811}, + {39.320545, 37.75267}, + {106.867271, -6.230095}, + {127.133059, 35.181572}, + {101.306587, 16.479145}, + {113.713638, -8.162173}, + {121.117203, 14.213825}, + {27.11025, 38.397251}, + {127.238724, 36.28054}, + {127.689551, 37.82244}, + {100.551277, 13.908954}, + {55.505852, 25.392296}, + {28.835846, 41.037052}, + {60.530125, 56.889837}, + {109.534561, -7.598647}, + {-46.710537, -23.299196}, + {115.239365, -8.684145}, + {13.231903, -8.946387}, + {-98.288544, 29.560289}, + {106.522873, -6.229171}, + {129.152759, 35.162305}, + {-43.31237, -22.764632}, + {115.208725, -8.683578}, + {101.095385, 12.886849}, + {99.536734, 18.158113}, + {128.361593, 37.611741}, + {120.994804, 14.638775}, + {99.295895, 8.113476}, + {105.24627, -5.4126}, + {-44.005257, -19.927061}, + {29.177389, 40.898399}, + {112.763977, -7.271382}, + {103.354614, 3.891639}, + {100.64328, 13.773948}, + {108.053368, 16.063034}, + {-76.988416, -12.037613}, + {-72.841393, 10.888066}, + {35.944618, 32.423586}, + {106.82086, -6.354387}, + {36.125058, 32.024309}, + {100.712835, 13.632716}, + {-46.467663, -23.64329}, + {128.395859, 34.746297}, + {99.679352, 15.900128}, + {103.072704, 18.013856}, + {105.723442, 9.284264}, + {128.212231, 37.138841}, + {-89.157982, 13.719182}, + {105.028306, 14.713424}, + {-3.1149, 55.939842}, + {-48.471348, -1.312296}, + {-87.182532, 14.058323}, + {-46.62442, -23.5347}, + {-48.442313, -1.35815}, + {100.500526, 13.757107}, + {110.595734, -7.408502}, + {-48.387758, -10.72546}, + {127.575518, 37.7281}, + {48.078674, 29.31226}, + {-43.21016, -22.983996}, + {-42.026188, -22.619583}, + {-101.548012, 27.062673}, + {103.999924, 16.291822}, + {-69.98188, 18.519993}, + {126.956972, 37.568528}, + {71.440081, 42.908914}, + {-40.323055, -20.381656}, + {99.604817, 7.680052}, + {28.542999, 41.013809}, + {104.199776, 14.708227}, + {128.954697, 37.764439}, + {98.795799, 3.545045}, + {98.907463, 8.239273}, + {-43.288169, -22.817543}, + {100.585129, 14.356072}, + {101.373292, 0.459969}, + {-48.329853, -21.493179}, + {99.787891, 6.923161}, + {75.477325, 31.738054}, + {100.583568, 13.749458}, + {101.905533, 12.73345}, + {-34.915136, -8.151482}, + {100.529663, 13.69026}, + {-46.508329, -23.555163}, + {-72.404915, 18.531267}, + {106.426048, -6.128287}, + {100.653908, 13.706556}, + {111.521753, -7.624682}, + {29.086082, 40.992943}, + {-56.096809, -15.597309}, + {-46.587263, -23.514248}, + {127.105687, 35.393791}, + {73.77108, 19.949203}, + {-48.919605, -16.347376}, + {-99.179016, 19.438637}, + {126.511589, 34.784649}, + {128.638733, 36.036808}, + {-90.429901, 14.668257}, + {106.93, 47.91148}, + {-52.338571, -31.757683}, + {28.898773, 41.101118}, + {28.89909, 41.100609}, + {120.978592, -8.787435}, + {-97.429524, 30.525479}, + {36.084415, 32.061184}, + {-41.345371, -21.766302}, + {120.955086, 14.433751}, + {104.007523, 1.171519}, + {76.946953, 43.256714}, + {101.189032, 13.007404}, + {100.711595, 15.065649}, + {129.055847, 35.156798}, + {99.737173, 6.317256}, + {50.104904, 26.406258}, + {-50.193978, -20.144096}, + {-43.415852, -22.758276}, + {103.018349, 14.377527}, + {-57.566356, -37.955601}, + {38.989937, 13.627459}, + {-47.10831, -22.824729}, + {36.253256, 37.07396}, + {-44.056105, -19.889417}, + {101.524881, 13.816323}, + {-42.12326, -21.20509}, + {12.520672, 41.891354}, + {-45.567219, -23.028259}, + {115.171978, -8.766942}, + {29.122951, 40.951155}, + {36.082885, 32.107789}, + {103.383576, 3.499466}, + {32.828239, 39.917728}, + {-63.154004, -17.833096}, + {127.112442, 35.004536}, + {127.109121, 37.522639}, + {100.68381, 13.652506}, + {100.627519, 13.782351}, + {27.798964, 38.097763}, + {126.882844, 35.204775}, + {-38.476612, -12.957634}, + {109.536301, -6.844547}, + {103.759615, 1.479432}, + {100.630417, 13.622039}, + {100.715156, 13.872022}, + {126.947826, 37.403527}, + {100.913445, 4.474768}, + {127.129174, 37.488892}, + {128.685348, 35.873706}, + {35.555614, 38.779514}, + {126.710539, 35.97371}, + {27.210965, 41.738344}, + {27.996582, 41.283134}, + {-98.976797, 19.43386}, + {-36.579029, -10.290016}, + {100.436378, 5.59511}, + {99.601265, 7.533318}, + {39.244572, 21.479786}, + {106.750156, -6.249664}, + {100.60585, 13.731069}, + {126.884841, 35.160754}, + {28.793808, 41.000904}, + {4.564383, 8.499344}, + {28.648943, 41.015843}, + {106.829132, -6.147525}, + {-75.5868, 6.21685}, + {126.810208, 34.627918}, + {101.073638, 14.260675}, + {26.693128, 41.267841}, + {26.264605, -29.177757}, + {30.520172, 39.790043}, + {80.271255, 13.039435}, + {27.615866, 39.1912}, + {127.088637, 36.196936}, + {29.068521, 40.981322}, + {11.581895, 3.872503}, + {150.816803, 59.562347}, + {-100.073933, 19.229007}, + {100.620888, 13.957916}, + {103.624649, 16.134626}, + {-38.138695, -6.123273}, + {-90.625849, 14.483876}, + {-46.633637, -23.547458}, + {-58.440735, -3.133153}, + {-34.839516, -7.992716}, + {27.919571, -32.955548}, + {126.929012, 37.072095}, + {37.401203, 37.059868}, + {129.047793, 35.174772}, + {114.84906, -3.461825}, + {102.550356, 15.505762}, + {27.135151, 38.386017}, + {28.785339, 41.005314}, + {126.642043, 37.485064}, + {37.452511, 55.715458}, + {-61.047066, -35.445702}, + {28.846163, 41.040997}, + {-76.492279, 3.537559}, + {-38.96693, -12.261383}, + {98.295647, 9.149332}, + {36.676262, 41.179283}, + {-35.015157, -8.266718}, + {-98.425697, 18.864138}, + {100.448408, -0.917176}, + {101.695267, 15.504326}, + {99.003067, 18.772229}, + {-60.02039, -3.080663}, + {129.391018, 36.932194}, + {37.581631, 55.760788}, + {27.775909, 37.31472}, + {110.60252, -7.766483}, + {103.874142, 1.492745}, + {101.695385, 2.760446}, + {100.426541, 14.013937}, + {100.670799, 13.678233}, + {-49.251205, -25.542307}, + {102.783467, 17.446385}, + {-54.62241, -20.524246}, + {-85.368042, 12.098183}, + {103.603138, 1.353259}, + {99.461313, 14.61512}, + {-47.167229, -1.187507}, + {100.827541, 13.808069}, + {128.709373, 37.483078}, + {127.795326, 35.365547}, + {-68.012524, 10.469629}, + {100.399177, 13.683408}, + {-110.916946, 27.917822}, + {16.376528, 48.183708}, + {-67.826626, -9.957288}, + {30.509691, 39.785667}, + {78.039413, 30.308416}, + {100.605439, 13.996274}, + {57.745495, 23.715767}, + {-43.261606, -22.857202}, + {32.904423, 39.908119}, + {128.571747, 35.849984}, + {37.632408, 55.642601}, + {107.829323, -7.007802}, + {136.277588, 36.287556}, + {99.703429, 14.842638}, + {-46.438217, -23.392239}, + {99.419543, 11.282929}, + {106.7794, -6.238278}, + {103.927582, -4.057894}, + {-43.321507, -22.861242}, + {-73.221855, 45.564861}, + {115.254311, -8.65568}, + {117.907215, 4.27937}, + {116.826447, -8.859111}, + {30.688591, 36.88423}, + {47.931652, 29.256805}, + {107.316799, -6.369595}, + {-43.209969, -22.928415}, + {36.480015, 45.365749}, + {46.616772, 24.664549}, + {127.133499, 35.848163}, + {100.704557, 13.59843}, + {-106.098167, 28.660116}, + {100.412718, -0.457191}, + {-0.959151, 5.935443}, + {126.691566, 37.54636}, + {126.900192, 36.182365}, + {114.245552, 22.265793}, + {36.263803, 41.338522}, + {103.145607, 5.331555}, + {100.411066, 13.755717}, + {100.569519, 13.937626}, + {-49.255635, -16.727081}, + {-83.782188, 10.215438}, + {127.446121, 36.190208}, + {127.46608, 37.317696}, + {100.166298, 19.526291}, + {28.844234, 37.471609}, + {100.972799, 13.146568}, + {104.319374, 15.278522}, + {107.436409, -6.690766}, + {101.716548, 3.179224}, + {-89.559314, 20.93095}, + {-51.065609, 0.031555}, + {106.840946, -6.240692}, + {101.519951, 12.643499}, + {100.579159, 6.989984}, + {102.209332, 2.443267}, + {6.765754, 53.421272}, + {100.68306, 14.273884}, + {100.291004, 16.606761}, + {100.76254, 13.622285}, + {106.858951, -6.139938}, + {-46.438496, -23.470292}, + {127.041252, 37.63969}, + {-43.315838, -22.82106}, + {106.893154, 47.910712}, + {99.898529, 8.934973}, + {112.694756, -7.282804}, + {-46.498436, -24.028395}, + {99.525805, 15.23628}, + {100.568451, 13.728284}, + {31.377218, 31.01515}, + {127.805658, 35.970967}, + {7.046975, 4.837871}, + {36.261818, 49.987769}, + {127.058841, 34.799355}, + {76.79393, 9.039715}, + {127.115504, 37.51122}, + {105.867744, 20.994408}, + {-84.992493, 33.62606}, + {26.244554, 43.970962}, + {-49.245598, -25.639265}, + {96.121132, 16.891062}, + {100.575829, 13.876425}, + {106.916809, -6.275401}, + {100.515022, 13.640218}, + {35.936438, 31.991193}, + {108.291458, -6.357177}, + {37.287835, 41.141756}, + {-79.303574, -0.405092}, + {128.28895, 35.986351}, + {-91.148732, 15.028701}, + {-76.306831, 3.677743}, + {-74.263924, 4.733844}, + {127.425833, 36.329786}, + {4.860497, 45.698128}, + {137.533508, 35.54184}, + {100.087155, 14.872127}, + {127.044474, 37.257549}, + {102.49913, 13.693875}, + {106.787506, -6.131523}, + {99.647087, 15.670168}, + {112.005302, -7.813039}, + {126.97642, 37.863879}, + {51.528923, 25.292402}, + {126.97482, 34.650684}, + {6.365414, 43.135462}, + {99.709054, 14.529393}, + {101.431252, 3.177997}, + {106.778664, -6.229024}, + {-45.90628, -23.202114}, + {100.411095, 20.253284}, + {126.980456, 37.433791}, + {60.825703, 56.499298}, + {-41.79504, -22.372784}, + {-43.340481, -22.952866}, + {29.23394, 40.881886}, + {100.857635, 13.487063}, + {-46.784588, -23.564674}, + {100.594889, 14.12337}, + {110.605858, -7.970155}, + {106.895713, 47.901957}, + {-51.321167, -26.426044}, + {-99.031758, 22.003653}, + {-98.174893, 18.962177}, + {-89.213654, 13.699531}, + {-44.854425, -22.671702}, + {103.472523, 14.859961}, + {30.410578, -29.566757}, + {48.571014, 54.374084}, + {98.457375, 8.41104}, + {142.950462, 53.591696}, + {103.649796, -1.614802}, + {100.469139, 13.781723}, + {105.693497, 18.679098}, + {127.009399, 37.549091}, + {127.650136, 37.540239}, + {-43.605965, -22.956617}, + {126.956291, 37.558327}, + {101.84832, 2.948886}, + {127.015335, 37.504128}, + {100.064453, 18.003916}, + {101.244453, 13.198925}, + {108.473351, -6.755456}, + {100.929977, 13.163085}, + {127.459511, 36.932602}, + {35.486095, 33.867458}, + {100.608506, 14.019531}, + {26.120944, 57.292216}, + {-49.194504, -16.64959}, + {127.615875, 36.307964}, + {99.8172, 13.868944}, + {101.295873, 15.075179}, + {105.923065, -6.056138}, + {106.929688, -6.262288}, + {99.690764, 16.375686}, + {126.514931, 36.148668}, + {107.922867, -6.850195}, + {35.839141, 32.562075}, + {127.053604, 37.544239}, + {107.607651, -6.894905}, + {-90.558111, 14.661047}, + {-76.540031, 3.372221}, + {44.798823, 41.727852}, + {-87.96032, 15.611724}, + {14.020235, 48.170341}, + {-46.645153, -23.546413}, + {-45.920105, -23.226759}, + {-38.467774, -12.808506}, + {114.188863, 22.317892}, + {56.012737, 58.019852}, + {-51.18809, -29.918488}, + {-77.008234, -12.079732}, + {103.201778, 3.754583}, + {-75.708252, 6.083408}, + {-39.319115, -7.203987}, + {29.009625, 41.031112}, + {29.258274, 40.90448}, + {101.805691, 2.552264}, + {112.600665, -8.003769}, + {129.16124, 37.406109}, + {99.844917, 13.532345}, + {-47.082867, -22.922855}, + {35.324471, 37.032459}, + {104.868584, 15.179848}, + {110.330718, 1.59028}, + {51.425655, 51.244957}, + {101.159485, 16.481859}, + {105.597527, -5.609333}, + {42.791546, 16.767689}, + {-42.340725, -22.878551}, + {115.544777, 5.067809}, + {-43.361549, -22.865002}, + {44.325001, 46.305393}, + {100.493457, 13.711733}, + {111.940551, -8.038228}, + {100.582008, 13.853369}, + {99.752315, 19.566186}, + {32.891808, 39.918758}, + {101.664398, 14.851234}, + {112.941315, -2.082696}, + {32.512901, 38.022499}, + {100.960953, 13.321296}, + {102.364795, 3.940049}, + {35.717338, 30.214217}, + {100.305334, 18.25785}, + {101.36466, 0.456298}, + {126.866426, 37.537382}, + {99.228294, 18.753109}, + {27.550058, 40.990379}, + {128.581796, 38.190758}, + {36.87228, 37.581322}, + {36.05079, 32.018063}, + {101.740446, 3.250608}, + {28.864711, 41.034939}, + {100.78464, 4.979376}, + {99.529514, 20.096483}, + {102.114143, 15.07251}, + {2.353241, 48.888598}, + {29.091581, 41.094532}, + {100.502823, 13.731688}, + {126.986352, 37.563622}, + {-49.093555, -5.346445}, + {106.871964, -6.324723}, + {55.227821, 25.15513}, + {126.978357, 37.564552}, + {101.032158, 13.425949}, + {98.727658, 3.540436}, + {29.510727, 40.073532}, + {27.978487, 38.232456}, + {27.137047, 38.322884}, + {103.417404, 16.560242}, + {106.849924, -6.271777}, + {-51.098038, -30.053459}, + {28.247362, 36.840759}, + {35.461735, 40.875416}, + {-35.220482, -7.089092}, + {128.474914, 34.877919}, + {128.831199, 37.254038}, + {32.491889, 37.835338}, + {32.652512, 41.233688}, + {-0.223282, 51.784863}, + {99.019218, 18.594982}, + {128.484337, 35.541615}, + {31.608974, 26.584747}, + {101.008545, 13.098753}, + {128.878204, 35.487129}, + {100.878181, 4.39957}, + {-43.01252, -22.824667}, + {100.403313, 14.101673}, + {100.063237, 15.824784}, + {-73.859016, 40.885036}, + {29.121439, 36.621893}, + {106.898293, -6.223179}, + {99.626694, 7.563866}, + {103.720551, 17.936775}, + {102.754913, 16.217781}, + {100.535769, 13.697465}, + {-43.151855, -22.704449}, + {28.608412, 41.013312}, + {100.883423, 12.905423}, + {102.047745, 13.864268}, + {-43.922572, -19.909111}, + {115.201846, -8.650336}, + {32.559368, 37.825794}, + {101.281595, 12.695531}, + {100.541481, 13.744096}, + {128.697604, 35.158691}, + {-106.07693, 28.615966}, + {107.961151, -6.337817}, + {32.842426, 39.931629}, + {99.707962, 7.55271}, + {-98.465248, 29.561647}, + {100.641729, 13.620873}, + {100.53207, 5.702892}, + {29.034136, 41.061741}, + {100.44169, 14.051011}, + {102.292885, 13.264235}, + {-46.80691, -23.418143}, + {-48.462601, -1.41897}, + {128.69226, 35.966173}, + {100.758362, 13.782491}, + {127.107808, 35.863642}, + {100.940174, 12.92667}, + {-43.30563, -22.77717}, + {98.974021, 18.552077}, + {41.569615, 19.866214}, + {29.155001, 37.734737}, + {127.525275, 37.806026}, + {-43.464135, -22.87556}, + {-70.745811, -34.169563}, + {-71.883766, 5.884758}, + {-51.13269, -30.000105}, + {-48.945225, -16.344894}, + {129.334457, 35.542332}, + {99.976328, 8.399267}, + {27.156806, 38.387661}, + {105.648125, 10.306634}, + {28.914833, 41.013947}, + {99.886547, 19.035775}, + {29.066902, 37.573021}, + {101.996338, 2.63635}, + {101.669571, 3.192995}, + {-96.342428, 19.197695}, + {-44.168825, -22.533497}, + {126.785176, 37.650269}, + {7.770487, 44.950726}, + {99.539955, 8.375892}, + {100.438091, 13.663756}, + {103.734146, 1.520358}, + {106.780678, -6.174001}, + {28.98077, 41.067696}, + {100.641869, 13.768651}, + {49.657089, 25.406954}, + {127.003741, 36.241248}, + {-86.86261, 12.434689}, + {-38.38862, -12.947342}, + {99.031059, 7.61839}, + {100.579338, 14.64824}, + {126.701838, 37.442358}, + {-74.791847, 10.999954}, + {-46.620728, -23.720512}, + {29.990379, 40.785339}, + {99.433067, 11.054193}, + {110.205132, -6.988108}, + {54.164852, 62.197994}, + {75.612747, 26.816586}, + {28.83469, 41.022171}, + {28.978875, 41.040572}, + {-42.023177, -22.846854}, + {123.074579, 0.547629}, + {110.558037, -7.723579}, + {127.129692, 35.372972}, + {-43.321041, -23.000291}, + {108.799637, -7.482378}, + {28.932058, 41.043152}, + {100.813293, 14.29867}, + {29.983693, 31.231994}, + {73.041451, 19.029602}, + {-43.606703, -22.954185}, + {20.495837, 44.790348}, + {126.727692, 37.453026}, + {-35.229324, -5.818447}, + {-48.879649, -10.168472}, + {104.517102, 16.114933}, + {108.234657, 16.084543}, + {100.365433, 13.800502}, + {106.671684, 11.163039}, + {100.314337, 13.702525}, + {101.734985, 3.204061}, + {107.585412, -6.898271}, + {-46.224364, -23.30699}, + {34.930986, 32.02345}, + {-47.990967, -21.112082}, + {-42.587788, -19.505697}, + {-81.127019, -4.176657}, + {126.873299, 34.910576}, + {100.889557, 12.944916}, + {28.643933, 41.004164}, + {49.446827, 53.514099}, + {-43.203171, -22.938423}, + {99.543266, 11.222727}, + {103.686356, 1.501353}, + {101.705276, 2.939428}, + {101.98452, 2.704245}, + {29.439249, 40.813965}, + {-100.408005, 20.583275}, + {127.035633, 37.250906}, + {-47.070431, -22.901376}, + {100.912629, 12.939853}, + {112.645195, -7.191646}, + {47.919811, 29.279522}, + {100.289844, 13.576829}, + {7.14607, 51.539997}, + {106.883321, -6.213055}, + {100.600101, 13.803479}, + {128.611391, 35.879686}, + {-38.30957, -12.877388}, + {126.986737, 37.582365}, + {-77.080002, -11.857155}, + {46.056198, 51.41917}, + {-52.141098, -32.051197}, + {-46.33189, -23.943153}, + {28.92692, 41.018719}, + {-42.489604, -13.545873}, + {-1.645325, 6.691508}, + {127.083046, 37.536583}, + {-46.642997, -23.664586}, + {101.179245, 13.452498}, + {106.798774, -6.368923}, + {100.609452, 14.122458}, + {29.069311, 41.021553}, + {112.798717, -7.324258}, + {100.585223, 13.826621}, + {-48.564812, -20.564863}, + {101.253433, 6.875004}, + {99.067551, 9.993997}, + {30.869549, 37.881908}, + {129.370026, 36.013069}, + {100.595245, 13.65015}, + {32.8619, 39.930038}, + {126.283089, 36.887539}, + {107.015327, -6.206207}, + {-40.236748, -15.255724}, + {112.741609, -7.305874}, + {28.781423, 41.005206}, + {102.339244, 15.692529}, + {105.239456, -5.372029}, + {126.791206, 35.834324}, + {-38.766872, -12.336768}, + {100.468925, 16.46685}, + {-46.259107, -23.990736}, + {74.63559, 24.889855}, + {-48.140507, -0.846078}, + {32.81012, 39.994045}, + {27.702808, 38.49396}, + {106.801842, -6.544528}, + {-49.939381, -21.224777}, + {-46.652934, -23.548798}, + {-98.160378, 19.260567}, + {-44.097655, -19.919756}, + {-43.181084, -22.937547}, + {27.135483, 38.367947}, + {104.823395, -2.995253}, + {100.148479, -0.632361}, + {-46.99271, -20.908932}, + {-45.259435, -22.835223}, + {126.989586, 37.493146}, + {106.824543, -6.415417}, + {46.62635, 24.750376}, + {-35.02882, -8.29316}, + {104.774155, 17.4077}, + {114.038628, 4.449788}, + {-74.806526, 4.301347}, + {110.463932, 1.454653}, + {127.364451, 36.356091}, + {-104.866074, 21.479218}, + {127.382882, 38.108599}, + {47.944241, 29.345438}, + {98.813433, 16.745504}, + {102.492492, 5.729418}, + {128.430267, 34.852558}, + {100.478996, 7.05026}, + {106.845305, -6.129868}, + {129.013157, 37.004445}, + {126.733604, 37.495655}, + {8.876233, 34.615921}, + {128.687592, 35.221775}, + {126.60582, 34.509394}, + {128.833642, 35.065615}, + {-70.790252, -33.377663}, + {77.54985, 12.999955}, + {128.25193, 37.24274}, + {100.394135, 6.203226}, + {100.613541, 13.803287}, + {29.287549, 40.914537}, + {-46.711974, -23.744974}, + {106.001445, -6.005121}, + {40.564941, 40.972248}, + {101.998383, 15.780212}, + {32.334231, 41.648421}, + {-48.47982, -1.413442}, + {101.058495, 12.67179}, + {2.571425, 42.144524}, + {115.136841, -8.503681}, + {31.6397, 40.735909}, + {-84.100974, 35.924694}, + {37.976147, 55.795025}, + {129.13385, 35.493214}, + {100.584297, 13.901213}, + {126.964028, 36.591794}, + {-46.591415, -23.52194}, + {-47.044468, -23.150036}, + {-7.500105, 33.587841}, + {-7.055335, 32.090077}, + {-42.67683, -22.051687}, + {-7.414985, 37.194984}, + {50.132881, 26.469143}, + {102.513066, 15.645065}, + {127.053829, 37.665767}, + {100.644104, 13.763602}, + {-50.036686, -29.762108}, + {32.293529, 31.265976}, + {109.235428, -7.164512}, + {106.828072, -6.325015}, + {-46.627361, -23.531996}, + {35.878468, 56.850849}, + {100.363748, 19.524842}, + {107.575996, -6.330443}, + {110.452114, 1.450793}, + {106.237732, 10.30343}, + {126.874324, 35.158561}, + {106.83062, -6.217224}, + {-76.940872, -12.198027}, + {106.912987, -6.129616}, + {-76.604988, 0.68355}, + {110.685989, -6.625168}, + {34.996689, 32.811581}, + {99.917655, 19.186761}, + {-77.245736, -11.589538}, + {32.854079, 39.904828}, + {116.143562, 6.03908}, + {104.264847, 14.592672}, + {100.435466, 13.976815}, + {115.394936, -8.540113}, + {100.505509, 13.699492}, + {102.593144, 5.667948}, + {100.572161, 13.814933}, + {27.185341, 38.379349}, + {41.002514, 30.953365}, + {27.350492, 41.39098}, + {103.607441, 15.156665}, + {73.032417, 44.295853}, + {-54.532198, -20.449465}, + {128.858261, 37.199025}, + {-46.471563, -23.590708}, + {127.487271, 36.650774}, + {38.395008, 40.915053}, + {-46.400929, -23.535238}, + {100.109478, 18.050916}, + {100.548111, 14.356296}, + {-84.40415, 33.747923}, + {-43.364498, -3.743333}, + {102.811913, 14.071328}, + {100.125092, 15.57653}, + {49.637718, 25.355862}, + {128.286102, 37.241749}, + {-46.296334, -23.538242}, + {128.571557, 36.840735}, + {106.798686, -6.394847}, + {28.857027, 41.108589}, + {34.976593, 32.109893}, + {-48.026076, -15.837115}, + {100.617409, 13.741731}, + {-38.503593, -12.985447}, + {106.9011, -6.114562}, + {128.039429, 37.713791}, + {99.455536, 8.389402}, + {27.426506, 38.610106}, + {50.217179, 26.290218}, + {126.991194, 37.481216}, + {50.21619, 26.301277}, + {101.906411, 5.876571}, + {98.965096, 9.691353}, + {127.44863, 36.975901}, + {100.259178, 13.65523}, + {102.222174, 2.435643}, + {126.739784, 37.512871}, + {127.722564, 34.500939}, + {-99.15468, 19.335686}, + {80.066589, 12.861547}, + {100.782555, 5.116133}, + {112.874456, -7.659829}, + {99.887798, 8.240494}, + {-47.939484, -19.744287}, + {114.160904, 22.321342}, + {106.820412, -6.769283}, + {35.585266, 32.314476}, + {79.073183, 21.09373}, + {32.896303, 39.920676}, + {102.027113, 14.934641}, + {76.931427, 52.031395}, + {-61.453354, -11.437631}, + {-96.599702, 16.336727}, + {38.08662, 55.757931}, + {127.015518, 37.578537}, + {-46.555052, -23.605108}, + {-46.435547, -23.511284}, + {28.853991, 41.057186}, + {107.778903, -6.897587}, + {128.964302, 35.049464}, + {35.444607, 38.703316}, + {40.317771, 55.146828}, + {-7.53623, 33.511387}, + {46.579731, 43.236073}, + {126.909292, 37.576072}, + {100.643405, 14.354605}, + {55.970001, 25.767}, + {127.489258, 37.106598}, + {-57.139931, -25.382191}, + {35.850456, 32.173165}, + {126.918312, 37.561909}, + {31.299292, 30.109015}, + {2.400433, 48.890514}, + {-101.397545, 20.100351}, + {98.672607, 3.531826}, + {100.40855, 13.882926}, + {-45.966827, -23.306849}, + {-46.399803, -23.973104}, + {103.442085, 4.498753}, + {100.600998, 13.709805}, + {100.16605, 13.981807}, + {32.698414, 39.889694}, + {106.888871, -6.313265}, + {-81.408704, 31.63071}, + {-78.939117, 35.077835}, + {100.142944, 13.795187}, + {99.212211, 8.789708}, + {101.078444, 13.057291}, + {-51.191146, -30.069667}, + {107.440849, -6.694973}, + {99.14753, 19.75511}, + {46.682455, 24.736839}, + {101.54431, 15.457187}, + {100.283424, 5.405388}, + {100.656105, 13.791142}, + {107.637634, -6.968121}, + {127.336308, 36.326895}, + {2.158461, 41.431796}, + {100.071114, 13.820649}, + {112.777534, -7.246086}, + {-35.199692, -5.771219}, + {25.901936, -28.960554}, + {-87.931099, 15.533869}, + {-86.314873, 44.233236}, + {108.696297, -6.831284}, + {103.644995, 1.544025}, + {99.844841, 13.56434}, + {100.558884, 13.715488}, + {100.453529, 6.285061}, + {96.105232, 16.862648}, + {106.823094, -6.139867}, + {108.216635, -7.312842}, + {126.861309, 37.523031}, + {-85.844337, 37.210587}, + {98.678702, 3.617032}, + {100.026622, 20.282072}, + {126.713933, 35.986477}, + {101.125645, 13.30308}, + {117.000305, -0.435646}, + {128.669907, 37.384754}, + {100.068565, 19.081631}, + {128.377655, 36.070129}, + {127.058182, 37.597004}, + {-45.762303, -23.759167}, + {-76.431578, -13.070886}, + {-43.730518, -19.522051}, + {-84.201691, 9.931532}, + {139.707489, 35.736987}, + {106.594215, -6.202848}, + {100.523847, 13.785971}, + {101.227889, 1.248384}, + {103.74497, 16.697539}, + {100.290475, 14.014667}, + {127.895815, 37.191012}, + {-48.591528, -27.614985}, + {126.919762, 37.360729}, + {-63.182411, -17.755058}, + {-51.151798, -29.855997}, + {-89.913246, 13.644938}, + {28.803606, 41.04847}, + {-43.463123, -22.754629}, + {-75.545143, 6.252288}, + {-69.924568, 18.482162}, + {140.498428, 36.432594}, + {-58.425716, -3.117948}, + {100.597313, 4.216068}, + {127.518181, 34.453602}, + {100.746338, 13.962301}, + {126.450302, 36.775283}, + {128.607468, 35.904724}, + {-43.43253, -22.742045}, + {112.645503, -7.824504}, + {100.686619, 14.781413}, + {128.629364, 34.71381}, + {35.738205, 32.51675}, + {8.383438, 49.006638}, + {100.906552, 12.761807}, + {100.870385, 14.096172}, + {27.515278, 40.977123}, + {128.560074, 36.229043}, + {100.435239, 5.355277}, + {74.376869, 30.098577}, + {102.89259, 16.969429}, + {-90.498358, 14.644528}, + {99.516294, 16.489875}, + {103.618614, -1.632866}, + {-47.352898, -22.335945}, + {39.162617, 21.625729}, + {100.113152, 14.119037}, + {-46.898113, -23.170795}, + {100.53228, 5.442055}, + {100.533822, 5.701994}, + {-49.24902, -16.604626}, + {-46.780321, -23.518418}, + {103.647036, 17.364728}, + {103.98066, 15.360736}, + {99.597628, 7.560594}, + {106.533422, -6.150926}, + {-51.20155, -30.123896}, + {80.272377, 13.09236}, + {129.066391, 35.083739}, + {100.323608, 13.710602}, + {116.863979, -1.263951}, + {28.96842, 41.010063}, + {-43.084312, -22.892035}, + {106.816364, -6.227388}, + {106.841324, -6.161036}, + {99.259331, 10.611387}, + {40.489776, 41.036534}, + {100.398302, 13.650786}, + {126.666351, 37.598984}, + {126.983636, 37.50186}, + {-38.501551, -12.931487}, + {116.06263, 5.87329}, + {46.675954, 24.787617}, + {100.047565, 14.233288}, + {127.398293, 36.38369}, + {126.975937, 35.955664}, + {100.421414, 13.763772}, + {111.022705, -6.73825}, + {102.758385, 16.686017}, + {35.717289, 32.032796}, + {106.625481, -6.199159}, + {100.569989, 13.645179}, + {26.651636, 39.273129}, + {76.948326, 28.362778}, + {101.077362, 14.255785}, + {-90.543953, 14.616362}, + {28.624428, 41.063835}, + {-58.781788, -34.630259}, + {127.252899, 36.349789}, + {98.3881, 8.670439}, + {99.963097, 8.460107}, + {78.827286, 24.745468}, + {-46.4448, -23.552036}, + {127.18389, 36.649839}, + {22.26576, 54.601795}, + {-43.375593, -22.778115}, + {100.196327, 15.089145}, + {126.950809, 37.581576}, + {35.463848, 40.870872}, + {-34.892288, -8.038402}, + {35.373608, 32.650749}, + {110.430931, -7.033568}, + {40.171267, 37.928333}, + {126.501929, 37.435409}, + {-49.090351, -22.31893}, + {127.100709, 35.825044}, + {105.225863, -5.355886}, + {-58.775379, -34.684444}, + {101.712624, 15.066105}, + {36.54995, 40.327526}, + {-90.785971, 14.308256}, + {100.442543, 13.735987}, + {76.114365, 31.683071}, + {106.780424, -6.643542}, + {28.807155, 40.980043}, + {-40.092113, -13.853935}, + {129.315526, 35.657137}, + {36.049023, 31.807886}, + {-63.818861, -8.804459}, + {-51.221592, -30.069767}, + {76.962685, 43.355934}, + {-47.498127, -4.953743}, + {99.857834, 9.193523}, + {101.400659, -2.065611}, + {-49.427152, -20.835963}, + {-104.365155, 19.776298}, + {29.827977, 40.708609}, + {27.047239, 40.027127}, + {-90.172165, 32.403366}, + {109.296334, -7.090084}, + {-83.370872, 42.252644}, + {106.746361, -6.146572}, + {-46.227974, -23.541349}, + {102.931629, 2.470558}, + {126.959778, 37.526084}, + {100.543503, 13.934824}, + {101.722054, 14.889924}, + {-46.694293, -23.515919}, + {27.060698, 38.504169}, + {127.696476, 37.694134}, + {-48.983414, -22.313837}, + {102.715889, 15.529696}, + {-89.711662, 20.491354}, + {99.128311, 10.470571}, + {-46.336548, -23.464329}, + {-72.693924, -12.875363}, + {28.830959, 41.007607}, + {106.805115, -6.442653}, + {129.33255, 35.542877}, + {-46.578087, -23.520748}, + {107.67852, -6.91822}, + {27.543839, 41.288696}, + {-49.096874, -16.488503}, + {100.891775, 12.868857}, + {-79.839418, -6.773035}, + {100.82826, 14.289994}, + {102.28231, -2.085531}, + {32.633179, 40.000446}, + {101.115207, 4.746203}, + {101.708267, 3.151397}, + {100.431189, 13.773309}, + {-42.673003, -21.409254}, + {40.149845, 37.927338}, + {101.419846, 3.232128}, + {35.794941, 33.725471}, + {27.196525, 38.475086}, + {28.973331, 40.21003}, + {99.03125, 8.99339}, + {101.269508, 12.672411}, + {100.392105, 6.981086}, + {28.503366, 41.00919}, + {110.216945, -7.460092}, + {34.960314, 40.533978}, + {-107.373192, 24.767323}, + {16.543168, 59.61128}, + {101.748337, -3.278939}, + {30.518373, 39.779732}, + {110.562454, -7.745142}, + {-47.896393, -15.762181}, + {127.792877, 36.427898}, + {-78.529775, -9.127584}, + {103.175976, 18.210117}, + {28.673374, 41.044331}, + {113.556358, 22.188129}, + {102.0259, 14.953103}, + {-43.351318, -22.896591}, + {-50.390671, -18.000692}, + {-90.582905, 14.662725}, + {100.489526, 13.756753}, + {75.846725, 26.938961}, + {127.069359, 37.205152}, + {126.903206, 37.448215}, + {30.225172, 59.864666}, + {-45.720829, -23.073725}, + {103.347, 4.005542}, + {-46.471624, -23.53933}, + {102.282678, 6.078618}, + {110.619797, -7.661155}, + {-56.118637, -15.60122}, + {-43.297169, -22.684343}, + {-50.906353, -29.821146}, + {-52.615025, -27.093758}, + {107.447853, -6.541293}, + {-43.865986, -16.755894}, + {103.651962, 18.366745}, + {127.095957, 37.538328}, + {100.651428, 13.99011}, + {102.160858, 14.972931}, + {36.123123, 32.047604}, + {107.137991, -6.263181}, + {100.583283, 14.20724}, + {99.594765, 15.772168}, + {44.678425, 42.998749}, + {105.460442, 9.985693}, + {111.78471, -6.783921}, + {88.194283, 69.358154}, + {110.350749, 1.492981}, + {101.141703, 4.637294}, + {29.189272, 41.006272}, + {-89.865925, 14.49697}, + {21.408856, 42.01149}, + {103.927931, 1.478632}, + {101.898469, 15.089992}, + {5.422514, 43.320141}, + {-46.646251, -23.509399}, + {100.407857, 13.935543}, + {104.892632, 11.53449}, + {112.710932, -7.348955}, + {122.866295, 0.789555}, + {114.170292, 22.306377}, + {100.779595, 13.58752}, + {28.904416, 41.040482}, + {-45.003849, -19.879485}, + {100.404976, 16.466387}, + {-47.587688, -20.886374}, + {104.716988, 16.542606}, + {-38.748571, -12.247677}, + {39.484812, -3.869269}, + {127.101227, 37.514442}, + {126.806185, 37.794178}, + {100.40863, 13.711655}, + {-47.903736, -16.240777}, + {128.767822, 35.834984}, + {99.829636, 13.344105}, + {27.876111, -33.000446}, + {-43.42297, -22.427263}, + {109.365463, -0.043791}, + {101.08828, 0.370692}, + {29.219101, 37.79858}, + {128.568396, 35.330418}, + {-46.63932, -23.648442}, + {105.64183, -5.726496}, + {91.37574, 53.848696}, + {28.858315, 41.060024}, + {106.92919, -6.24541}, + {-46.497501, -23.416018}, + {49.590321, 25.430998}, + {126.963417, 37.528652}, + {-47.417364, -22.562727}, + {126.706604, 37.515401}, + {41.942356, 57.226551}, + {99.813944, 19.936237}, + {-48.442822, -1.372342}, + {107.028827, -6.349451}, + {103.039338, 14.608782}, + {128.984879, 36.165529}, + {-43.001385, -22.845671}, + {-43.914759, -19.91994}, + {-48.938564, -20.025575}, + {-48.64104, -27.473708}, + {-48.663402, -27.491811}, + {11.318237, 1.628591}, + {-90.545059, 14.547144}, + {100.611168, 14.004098}, + {-77.11483, -12.053506}, + {100.612893, 13.551462}, + {-46.64843, -23.694857}, + {105.252712, -5.421772}, + {-38.533247, -3.808993}, + {100.558411, 13.818773}, + {100.170364, 18.176714}, + {100.268219, 13.575949}, + {35.903949, 31.978566}, + {101.897284, 15.089956}, + {27.116777, 38.433773}, + {102.289415, 6.17168}, + {-49.390711, -16.576996}, + {-43.925941, -19.87701}, + {-38.467293, -12.925629}, + {-76.134617, -13.433028}, + {-54.608725, -16.464196}, + {106.823753, -6.32656}, + {77.626549, 17.681768}, + {-66.164657, 18.437197}, + {106.773489, -6.173817}, + {-84.144386, 9.921479}, + {60.902542, 29.446959}, + {-42.019249, -22.866236}, + {129.160446, 35.190331}, + {2.511658, 50.470684}, + {27.203112, 38.424441}, + {-43.775333, -21.223423}, + {99.794884, 13.54246}, + {112.759858, -7.230419}, + {-99.071793, 19.4949}, + {76.350883, 9.996468}, + {100.25074, 16.212976}, + {-44.104953, -2.550576}, + {76.234329, 11.279236}, + {114.213051, 22.284227}, + {106.842728, -6.175992}, + {16.939026, 52.436176}, + {8.2541, 50.011974}, + {100.756119, 18.537743}, + {-46.5485, -23.439733}, + {-38.480434, -12.941105}, + {-46.845569, -23.554241}, + {105.248055, -5.395171}, + {-46.664593, -23.7551}, + {102.411731, 16.086697}, + {103.652008, 17.40218}, + {102.858849, 16.858622}, + {109.323441, -0.018768}, + {27.805269, 41.146086}, + {106.658791, -6.164036}, + {119.871323, -0.905373}, + {127.584641, 37.546253}, + {36.551811, 50.707878}, + {-45.880764, -23.174809}, + {29.189802, 40.215473}, + {101.264603, 12.67568}, + {100.514103, 13.761617}, + {28.882437, 41.183407}, + {100.501456, 13.677767}, + {54.377678, 24.472828}, + {99.382416, 8.998862}, + {100.907074, 12.941121}, + {100.482857, 13.688726}, + {100.19326, 7.491828}, + {102.779785, 17.435694}, + {100.595146, 13.907161}, + {29.074583, 37.765209}, + {31.711975, 36.643429}, + {116.857262, -8.742983}, + {128.687622, 34.869405}, + {100.264046, 13.590337}, + {106.81839, -6.203908}, + {101.180267, 14.629057}, + {106.628075, -6.206819}, + {-46.735508, -23.551893}, + {40.220276, 37.921806}, + {-43.155363, -22.124183}, + {106.776674, -6.222884}, + {-85.574776, 41.610725}, + {102.625954, 14.430153}, + {112.709801, -7.558513}, + {27.825586, 43.551609}, + {38.800522, 37.214222}, + {100.95976, 13.552433}, + {126.446515, 37.44929}, + {-99.596733, 19.286757}, + {-38.531586, -3.725936}, + {36.041679, 32.026199}, + {102.78688, 16.440526}, + {-35.311604, -8.120139}, + {36.929043, 56.20953}, + {113.133736, 28.193354}, + {-73.674228, 45.549248}, + {-49.057995, -26.930157}, + {102.094772, 12.630608}, + {-48.997546, -24.660106}, + {102.036677, 14.760331}, + {-50.181886, -30.100967}, + {99.976949, 13.072315}, + {106.836594, -6.241672}, + {120.314868, 22.619748}, + {103.938436, 16.044717}, + {99.861694, 12.606139}, + {100.588775, 13.981612}, + {112.730331, -7.440881}, + {14.411747, 40.631832}, + {103.621674, 1.565057}, + {-49.060914, -22.327907}, + {99.877495, 8.017793}, + {36.093842, 40.396107}, + {100.488441, 13.782147}, + {99.07296, 9.953816}, + {32.748531, 39.991673}, + {-46.464574, -23.554706}, + {102.928223, 14.492884}, + {29.131823, 36.624943}, + {100.306842, 13.6579}, + {111.536194, 2.122182}, + {77.278046, 28.667669}, + {92.926531, 55.993328}, + {-99.521545, 27.493067}, + {99.663192, 13.914718}, + {16.261585, 39.336273}, + {-59.127241, -3.579997}, + {-46.63459, -22.490719}, + {101.909401, 2.695063}, + {106.565804, -6.204503}, + {30.501776, 39.76503}, + {-74.82531, 10.980499}, + {107.038055, -6.221951}, + {99.403564, 7.736852}, + {107.135633, -6.309259}, + {100.443546, 13.683235}, + {29.126389, 40.954788}, + {100.331764, 14.983937}, + {99.963016, 7.790823}, + {101.86209, 3.329313}, + {107.613537, -6.906173}, + {127.028419, 37.60836}, + {126.734924, 35.727016}, + {112.716213, -7.285817}, + {-38.293017, -12.884209}, + {127.070799, 37.570026}, + {113.465752, 52.121159}, + {100.648427, 13.696542}, + {100.792114, 15.069575}, + {104.040608, 1.105221}, + {-52.427731, -29.725292}, + {25.681374, 62.244522}, + {107.5434, -6.877033}, + {39.170292, 51.716965}, + {126.67623, 37.52076}, + {100.429003, 13.918584}, + {-46.655555, -23.69365}, + {28.796699, 41.098849}, + {126.840641, 37.513618}, + {100.574379, 13.782972}, + {99.658727, 7.864818}, + {128.736984, 36.566059}, + {103.486057, 14.888309}, + {127.111748, 37.555424}, + {99.973679, 8.516025}, + {104.691399, -2.930133}, + {125.413634, 2.736405}, + {101.439911, 14.62549}, + {36.662708, 37.171551}, + {-46.637305, -23.584178}, + {99.980902, 8.004613}, + {35.357426, 37.024513}, + {107.045879, -6.1716}, + {100.357803, 13.92046}, + {-79.825165, 36.059128}, + {30.398048, 60.013344}, + {107.088542, -6.260629}, + {33.837878, 27.214965}, + {100.521, 13.786693}, + {110.792079, -7.570551}, + {107.667765, -6.92219}, + {126.653748, 37.454954}, + {103.097305, 15.183229}, + {105.330482, -5.377282}, + {110.415239, -7.05999}, + {-46.790524, -21.312653}, + {106.961075, -6.16143}, + {-43.476694, -22.869656}, + {101.842326, 2.945432}, + {15.529694, 41.455589}, + {119.547971, -5.18218}, + {128.340657, 35.235419}, + {110.993637, -7.814396}, + {28.938587, 41.075428}, + {81.187111, 52.346138}, + {101.280813, 6.547464}, + {35.648081, 51.662462}, + {-97.467514, 37.664616}, + {100.416656, 13.668595}, + {-52.62906, -27.075231}, + {-44.955191, -22.569921}, + {100.527502, 13.685732}, + {-86.978828, 12.547496}, + {-60.073063, -3.025276}, + {-67.113503, -17.956835}, + {-43.409203, -22.818782}, + {100.777267, 13.721274}, + {-43.398204, -22.85322}, + {106.848984, -6.146435}, + {9.028752, 52.351444}, + {89.940748, 23.757182}, + {99.85198, 14.167237}, + {-45.884919, -23.416359}, + {103.962212, 16.292442}, + {100.724189, 13.606622}, + {-57.087624, -29.769564}, + {-52.422653, -28.258602}, + {100.062416, 17.807536}, + {120.937866, 14.348847}, + {135.128769, 48.393183}, + {-50.440099, -20.669518}, + {-42.64192, -19.534311}, + {101.074448, 13.687288}, + {106.863281, -6.411736}, + {100.701378, 13.851358}, + {28.462465, -26.257641}, + {-46.603703, -23.239483}, + {99.33535, 16.366676}, + {-47.950988, -19.761488}, + {126.776604, 37.497154}, + {100.527463, 13.765848}, + {-52.19698, -26.862833}, + {-45.952049, -21.422069}, + {-103.191986, 20.28856}, + {-40.27437, -20.234818}, + {101.072771, 15.711909}, + {126.716055, 37.374981}, + {100.871778, 13.856275}, + {35.505634, 33.826492}, + {101.069641, 4.485562}, + {-44.250901, -21.134546}, + {32.606773, 39.962688}, + {-42.547096, -22.322548}, + {100.56045, 14.340614}, + {99.882034, 13.923652}, + {105.105064, 11.722152}, + {72.871872, 19.211861}, + {-113.672403, 53.563763}, + {110.22406, -7.45017}, + {127.749306, 37.925056}, + {100.630569, 7.083337}, + {99.003212, 18.792089}, + {102.538948, -0.373795}, + {102.014081, 12.649968}, + {127.055347, 37.651894}, + {-34.896858, -8.077621}, + {43.479549, 56.243332}, + {98.411745, 8.03412}, + {103.091492, 5.34659}, + {99.963143, 12.533369}, + {11.208705, 45.163467}, + {-34.895943, -7.93149}, + {101.518441, 2.966906}, + {100.056487, 17.985094}, + {98.992616, 8.67251}, + {-89.898336, 16.924377}, + {127.862068, 36.555328}, + {102.316101, 6.107706}, + {109.296547, -7.530428}, + {128.2137, 37.132648}, + {115.42984, -8.545021}, + {100.57667, 13.660904}, + {-76.644066, 2.459858}, + {36.586525, 28.342537}, + {100.590808, 14.35156}, + {100.705457, 7.040129}, + {112.674614, -7.389862}, + {5.042711, 51.576283}, + {99.258467, 8.273126}, + {38.251575, 37.753708}, + {100.041252, 9.474051}, + {-47.948611, -16.253758}, + {29.27593, 40.970844}, + {128.447327, 35.783733}, + {-77.082829, -12.074494}, + {-99.835892, 16.888222}, + {102.502991, 15.459272}, + {114.208307, 22.337731}, + {-75.313431, 40.144054}, + {127.455217, 36.654715}, + {109.192238, 12.239947}, + {34.594196, 31.4313}, + {12.59733, 42.140942}, + {109.292903, -7.394772}, + {100.621017, 13.667515}, + {28.255288, -25.682578}, + {72.597229, 23.036737}, + {129.09906, 35.113605}, + {-90.84729, 44.304295}, + {-57.599632, -25.324913}, + {102.729218, 15.825205}, + {34.563847, 36.804588}, + {111.930023, -7.146063}, + {126.966827, 37.547749}, + {29.466431, 40.802788}, + {-72.34053, -37.461346}, + {-46.416969, -23.523956}, + {99.803154, 14.058074}, + {121.073897, 14.574671}, + {100.590429, 13.858235}, + {127.183809, 36.841298}, + {133.270182, 44.1559}, + {-46.474286, -23.611883}, + {102.63209, 16.770028}, + {-58.437874, -34.7644}, + {32.545494, 37.920521}, + {27.023457, 39.578904}, + {114.144638, 22.285405}, + {102.059062, 14.955433}, + {-86.88784, 12.43589}, + {35.495537, 40.069295}, + {100.246054, 13.741711}, + {10.036065, 33.945697}, + {121.084351, 14.677699}, + {29.072333, 40.208828}, + {100.496593, 13.892303}, + {100.318375, 16.991413}, + {101.276428, 12.683438}, + {-50.103261, -25.104605}, + {-13.709042, 9.508409}, + {112.602173, -7.135734}, + {102.210412, 17.770995}, + {29.655491, 40.278824}, + {-48.476421, -1.31445}, + {128.832652, 37.518672}, + {-79.502449, 9.042139}, + {56.71541, 24.383581}, + {-89.542343, 14.769204}, + {106.907433, -6.228814}, + {99.971069, 13.547798}, + {100.148792, 13.691732}, + {29.241217, 40.87421}, + {103.758495, 17.57274}, + {101.254459, 13.277227}, + {113.675511, -8.189874}, + {-45.261478, -22.071348}, + {-44.458736, -18.400898}, + {110.366394, 1.521656}, + {127.030289, 37.615822}, + {107.695667, -6.65836}, + {114.85202, -3.48022}, + {-77.024055, -12.122836}, + {102.758003, 16.449778}, + {-49.21037, -25.461701}, + {126.79256, 37.45447}, + {-90.104225, 14.749575}, + {29.407593, 40.853512}, + {-35.249777, -5.760629}, + {100.618485, 13.628968}, + {30.54401, 38.75251}, + {-47.264527, -23.535607}, + {101.526861, 12.927018}, + {100.442432, 13.667344}, + {106.816723, -6.198634}, + {129.479919, 42.890053}, + {-119.423175, 36.421063}, + {119.498306, -5.131597}, + {108.140495, -7.620406}, + {100.931009, 13.053633}, + {100.00436, 13.937385}, + {106.792999, -6.131226}, + {100.400428, 14.325054}, + {100.14212, 14.571943}, + {40.489325, 41.002174}, + {28.939356, 41.022625}, + {-48.10891, -20.058969}, + {100.573036, 13.718719}, + {-38.364231, -12.949893}, + {76.906181, 43.323257}, + {-59.961257, -3.062854}, + {101.27948, 14.173626}, + {126.493446, 37.493027}, + {100.120657, 15.696704}, + {100.881001, 12.884203}, + {101.207062, 14.211593}, + {102.120487, -1.487747}, + {72.946303, 20.524625}, + {47.963051, 29.278837}, + {98.706851, 3.563872}, + {-43.323806, -22.889516}, + {106.755714, -6.577187}, + {128.693622, 35.964151}, + {-60.055545, -3.106912}, + {99.796326, 11.793587}, + {-43.222805, -22.903444}, + {100.630028, 13.863321}, + {-70.557149, -33.569767}, + {110.461403, -6.971242}, + {100.957123, 13.080697}, + {29.168718, 41.033497}, + {100.281174, 13.534431}, + {-99.098846, 19.694603}, + {129.113917, 35.563152}, + {100.107564, 14.036291}, + {100.683895, 13.557172}, + {35.974481, 31.97714}, + {101.896057, 14.285627}, + {-34.883043, -8.067714}, + {-47.991749, -21.137856}, + {-35.734844, -9.619214}, + {101.721423, 3.22375}, + {28.942266, 41.024654}, + {100.543692, 13.752872}, + {150.931046, -33.832832}, + {-87.931274, 15.821307}, + {-35.655621, -9.572873}, + {0.023714, 52.239478}, + {-47.188473, -22.894295}, + {19.039904, 47.41408}, + {107.596779, -6.82934}, + {107.293887, -6.380408}, + {105.456426, 14.878404}, + {100.869311, 13.998967}, + {48.072979, 29.310743}, + {126.236473, 33.381554}, + {-0.075238, 35.800846}, + {100.815858, 17.017817}, + {121.515701, 24.990396}, + {127.074615, 37.223118}, + {116.048225, 5.951069}, + {29.08782, 37.745505}, + {-34.885693, -8.039219}, + {112.75972, -7.230645}, + {119.421164, -5.112788}, + {-43.928995, -19.91945}, + {102.147722, 5.809491}, + {106.758598, -6.603685}, + {13.367131, 41.685078}, + {-76.523265, 3.393874}, + {32.801086, 39.893044}, + {100.569635, 13.729759}, + {-106.378619, 31.719312}, + {35.058662, 48.44994}, + {-44.023598, -19.94689}, + {32.86142, 39.901978}, + {113.250481, -8.11502}, + {-88.945511, 31.892014}, + {102.508183, 12.239972}, + {35.884209, 56.817993}, + {-103.359084, 25.497024}, + {44.323952, 33.316216}, + {100.893532, 12.951133}, + {36.20718, 36.75679}, + {101.097382, 13.669401}, + {128.378754, 36.09343}, + {66.97617, 30.111303}, + {103.283537, 3.825949}, + {80.26304, 7.011254}, + {112.759232, -7.24759}, + {33.420429, 35.2099}, + {28.400017, 40.03368}, + {104.715802, -3.007087}, + {117.124519, -0.549552}, + {49.525906, 27.178837}, + {106.802295, -6.602111}, + {127.149186, 36.812379}, + {-46.404812, -23.455717}, + {32.851284, 39.927124}, + {100.548111, 13.971074}, + {27.391321, 38.613052}, + {-3.592778, 38.059519}, + {99.541229, 16.475965}, + {37.331322, 37.072685}, + {10.065197, 55.471661}, + {113.04586, 3.170579}, + {-46.723652, -23.63983}, + {-72.488869, 7.88126}, + {30.360172, 59.936134}, + {73.956245, 15.264643}, + {100.609695, 13.612706}, + {99.866959, 6.857517}, + {-47.8862, -15.776899}, + {100.532249, 13.835534}, + {-49.334068, -25.990286}, + {115.251363, -8.64434}, + {-89.805862, 14.321476}, + {99.519405, 7.423736}, + {107.024616, -6.874775}, + {101.689499, 3.232156}, + {128.660574, 35.002652}, + {-48.076168, -16.017725}, + {88.354073, 22.705366}, + {99.982727, 14.998113}, + {103.835854, 1.282841}, + {100.852028, 14.823407}, + {100.566826, 13.913059}, + {128.993942, 35.31036}, + {-100.229995, 25.719372}, + {110.378578, -7.875244}, + {110.388039, -7.834345}, + {45.504528, 58.372303}, + {-39.268837, -12.96996}, + {108.316986, -6.374673}, + {99.473869, 11.194457}, + {99.908356, 12.99931}, + {32.127941, 36.547676}, + {19.174076, 53.752386}, + {30.768953, 36.863412}, + {-47.843731, -21.180987}, + {101.477394, 3.141154}, + {-96.864418, 32.424538}, + {112.079971, -7.958474}, + {128.467743, 35.846813}, + {99.124687, 18.793242}, + {46.79245, 24.59959}, + {107.168945, -6.242776}, + {114.227706, 22.276291}, + {-46.816608, -23.625271}, + {127.786195, 37.660601}, + {100.480795, 13.860361}, + {17.008062, 51.097363}, + {28.767944, 40.99445}, + {30.549999, 36.622833}, + {79.79903, 11.954499}, + {40.603966, 45.43512}, + {32.871426, 39.899879}, + {-44.022766, -19.974398}, + {48.066444, 29.171839}, + {103.583458, -1.649131}, + {33.441735, 47.940366}, + {129.082586, 35.061947}, + {127.109383, 37.248003}, + {100.71666, 13.910067}, + {-46.734947, -23.546289}, + {-99.660335, 19.869028}, + {114.169434, 22.305826}, + {104.524094, 11.457875}, + {100.60011, 13.85037}, + {-46.927933, -23.607071}, + {-37.351565, -5.170367}, + {32.822376, 39.978275}, + {102.821804, 17.392616}, + {43.527121, 55.123254}, + {102.908071, -2.717549}, + {100.647456, 14.822218}, + {-42.669174, -22.042601}, + {129.315047, 35.629984}, + {41.131506, 37.91992}, + {100.859355, 14.068746}, + {-86.247803, 12.111628}, + {100.862076, 13.882758}, + {100.804688, 18.780016}, + {76.960655, 11.021805}, + {69.643982, 42.330967}, + {107.217339, -6.71441}, + {-70.748627, 18.453394}, + {100.592679, 13.903568}, + {127.038521, 37.636471}, + {-44.09991, -22.508933}, + {-46.544399, -23.440384}, + {-37.06255, -10.93887}, + {107.869142, -6.859}, + {100.288656, 13.702893}, + {98.59613, 16.725092}, + {-38.33847, -12.91023}, + {107.331887, -6.293756}, + {109.640984, -6.966583}, + {17.743305, 40.460785}, + {-42.524095, -22.244238}, + {-46.697285, -23.525385}, + {-43.370754, -22.778141}, + {127.101021, 37.605976}, + {102.390541, 17.02858}, + {105.24099, 15.231407}, + {28.904699, 41.004738}, + {39.159691, 21.622038}, + {102.141533, 14.92778}, + {126.913, 37.547858}, + {99.000977, 18.791534}, + {-89.745394, 14.900939}, + {-49.174103, -25.50383}, + {-44.163541, -2.534485}, + {39.630882, 24.456419}, + {-48.966932, -28.520155}, + {100.323586, 14.803765}, + {-42.397982, -22.804186}, + {-51.22441, -30.034526}, + {126.84373, 37.535489}, + {-43.226244, -19.634141}, + {100.747576, 14.026121}, + {-103.346275, 20.577995}, + {-99.25441, 19.554588}, + {105.259605, -5.354668}, + {100.294327, 16.433916}, + {-48.19495, -7.175029}, + {126.976776, 37.583755}, + {-38.331844, -12.882924}, + {40.195093, 37.923138}, + {105.078232, 14.776002}, + {129.009742, 35.243586}, + {-47.897827, -15.734068}, + {-43.316325, -22.848305}, + {99.250747, 18.556493}, + {126.914841, 37.500088}, + {100.530327, 13.765078}, + {99.80367, 9.043785}, + {-38.475727, -12.975086}, + {128.647915, 35.863936}, + {107.230621, -6.353997}, + {100.690731, 13.777209}, + {99.888268, 19.200844}, + {127.697212, 34.822285}, + {129.346436, 37.230274}, + {106.796372, -6.419754}, + {100.545365, 13.764284}, + {29.183661, 41.015324}, + {100.643315, 13.680132}, + {128.907791, 37.78788}, + {-48.00037, -16.006088}, + {99.836253, 13.590242}, + {126.936684, 37.558487}, + {-43.341883, -23.001742}, + {107.159673, -6.298112}, + {-40.294781, -20.268797}, + {-77.010358, -11.989235}, + {110.433289, -7.032509}, + {-43.280102, -22.684353}, + {100.151825, 15.206109}, + {116.829407, 0.677283}, + {-34.832455, -6.982492}, + {-61.958794, -10.872386}, + {30.455042, 31.037535}, + {48.084229, 29.239044}, + {-49.300028, -25.650047}, + {102.54776, 13.662443}, + {101.267007, 12.696182}, + {104.167938, 17.530074}, + {114.171112, 22.376589}, + {100.204376, 13.744917}, + {99.15038, 9.151516}, + {15.550955, 41.132793}, + {100.491035, 13.883172}, + {-53.38571, -31.580807}, + {37.644051, 55.586674}, + {-46.873005, -17.174671}, + {104.886871, 11.501785}, + {-48.750031, -5.393939}, + {100.433006, 13.681791}, + {-85.831703, 11.438942}, + {100.593086, 14.658181}, + {-64.718648, 8.839551}, + {-37.223721, -9.724198}, + {24.678579, 47.211842}, + {-48.866869, -26.336596}, + {-51.044735, 0.047369}, + {29.968815, 40.192993}, + {-38.32607, -4.006999}, + {116.162346, 6.045141}, + {98.690346, 3.670205}, + {-43.556049, -22.904739}, + {137.40065, 35.45631}, + {100.893341, 14.0451}, + {-43.043707, -22.821428}, + {107.748394, -6.936062}, + {98.740982, 18.435069}, + {100.53492, 14.02544}, + {-42.946323, -21.117622}, + {103.728943, 1.638215}, + {-69.87719, 18.532372}, + {7.407204, 10.520114}, + {101.547005, 2.990176}, + {101.45047, 13.038817}, + {104.099632, 17.485739}, + {47.656178, 29.324467}, + {119.845587, -0.903738}, + {36.294336, 41.330944}, + {-34.829573, -7.751228}, + {-49.515987, -26.269374}, + {48.356808, 54.317757}, + {11.305818, 46.485753}, + {100.485869, 13.639619}, + {128.850479, 37.495739}, + {106.80722, 47.893124}, + {73.169762, 49.828278}, + {102.850945, 14.431476}, + {111.454529, -7.836403}, + {-76.376547, -6.47995}, + {12.376342, 58.33157}, + {112.72879, -7.299492}, + {30.67222, 50.133282}, + {100.627712, 13.618707}, + {-43.560921, -22.763071}, + {128.515226, 35.800615}, + {105.778648, 20.970863}, + {-78.489334, -0.187211}, + {47.921284, 29.275063}, + {100.53212, 13.715966}, + {35.879553, 32.562956}, + {107.815628, -7.271897}, + {19.848056, 43.906281}, + {105.219299, -5.372422}, + {99.900261, 8.907145}, + {30.962715, 38.138279}, + {27.236609, 38.470207}, + {127.808134, 37.307082}, + {100.130348, 15.159313}, + {-34.850032, -7.953459}, + {-46.322071, -23.38133}, + {102.736214, 14.072907}, + {104.697235, 16.641754}, + {77.649246, 12.94449}, + {101.087931, 4.809675}, + {100.851813, 14.307324}, + {32.567371, -25.909527}, + {-46.554749, -23.491611}, + {-77.027242, -12.116648}, + {100.913789, 14.862366}, + {11.79011, 48.354012}, + {30.529722, 59.661343}, + {112.902568, -7.675141}, + {91.463348, 53.724442}, + {-43.33931, -22.86521}, + {-43.287746, -22.794062}, + {86.099159, 20.479601}, + {34.118965, 44.494312}, + {28.743532, 41.184231}, + {100.480908, 13.787994}, + {48.007788, 29.241676}, + {37.554619, 55.744541}, + {101.712069, 2.749759}, + {115.173195, -8.599331}, + {112.945773, -2.524285}, + {103.492771, 14.887652}, + {100.069103, 13.821917}, + {-81.230933, 32.016789}, + {-48.637477, -28.033308}, + {-46.624291, -23.483813}, + {104.230911, 15.002023}, + {100.183037, 14.363576}, + {104.112504, 17.182918}, + {116.150028, -8.592118}, + {128.415163, 36.075431}, + {128.343239, 37.600512}, + {106.743036, -6.168728}, + {106.8237, -6.14082}, + {99.825203, 17.034985}, + {36.297634, 56.641937}, + {100.586052, 13.939766}, + {100.538574, 13.859215}, + {-98.127884, 22.521547}, + {-46.403904, -23.505154}, + {100.731441, 13.748372}, + {119.45945, -5.156421}, + {101.442521, 3.132103}, + {136.73349, 35.201439}, + {104.864021, 15.204362}, + {-35.014939, -8.391321}, + {51.523906, 25.24455}, + {-47.894236, -24.622542}, + {99.612213, 2.973704}, + {-8.807241, 37.59634}, + {100.56601, 13.98155}, + {-63.155903, -17.869122}, + {-80.768463, -5.385462}, + {12.803578, 52.9352}, + {112.680061, -8.183817}, + {102.184738, 17.180902}, + {37.430769, 55.721852}, + {-71.934761, 18.829947}, + {35.851513, 31.747189}, + {101.441238, 3.106675}, + {112.616717, -7.375904}, + {115.638664, -3.718396}, + {109.350624, -0.090161}, + {-60.021748, -3.133583}, + {78.465561, 17.356968}, + {-49.364036, -16.810244}, + {-43.351002, -23.003391}, + {-44.86565, -20.169836}, + {112.443207, -7.47191}, + {102.578029, 2.125541}, + {32.800205, 39.987576}, + {63.557415, 61.37719}, + {99.95153, 12.570336}, + {-47.884206, -22.014671}, + {100.987587, 14.104238}, + {106.802301, -6.357452}, + {-41.780415, -22.380156}, + {102.235764, 2.209175}, + {-50.538185, -20.26368}, + {101.261963, 6.877568}, + {100.043137, 14.020221}, + {-44.106392, -22.518265}, + {29.393081, 40.784653}, + {50.461014, 26.218275}, + {-51.167675, -29.832438}, + {100.56192, 13.77736}, + {103.940323, 16.032589}, + {-46.427143, -23.666916}, + {77.376236, 28.520145}, + {103.711937, 52.6973}, + {102.511696, 12.247809}, + {99.230728, 9.104377}, + {104.222687, 17.247924}, + {36.236431, 41.327248}, + {101.630687, 6.612407}, + {101.899511, 14.89027}, + {-43.354561, -22.896424}, + {-45.266659, -21.704658}, + {99.968043, 16.942891}, + {44.750431, 48.795508}, + {126.751099, 37.51265}, + {100.530846, 13.732675}, + {-45.562794, -23.039347}, + {129.044111, 35.162264}, + {110.633583, -6.908233}, + {-49.34761, -25.430937}, + {99.885162, 12.911977}, + {106.882927, -6.652013}, + {-74.822508, 10.992036}, + {128.255027, 35.707235}, + {102.229581, 6.15518}, + {-46.559444, -23.686623}, + {119.497993, -5.133653}, + {106.783081, -6.316848}, + {-35.261719, -5.929608}, + {-40.837466, -14.848}, + {106.486294, -6.244234}, + {-37.351654, -5.188287}, + {100.538139, 13.792119}, + {102.06201, 12.694673}, + {107.526291, -7.011446}, + {101.230606, 6.869181}, + {115.138336, -8.844325}, + {106.639816, -6.204565}, + {101.273955, 12.669888}, + {-52.18642, -29.613838}, + {111.881561, -7.157695}, + {-77.121422, 38.707699}, + {-117.850166, 33.633724}, + {-80.214256, 25.942459}, + {174.295135, -35.65177}, + {-111.127019, 32.400826}, + {7.797047, 49.447876}, + {-73.966023, 40.608397}, + {18.840468, 53.476669}, + {19.959403, 51.186366}, + {-79.623703, 43.65453}, + {-76.852401, 39.119076}, + {-120.684901, 35.253907}, + {-111.766643, 33.426638}, + {-79.140392, 40.161778}, + {-73.911903, 46.020195}, + {-84.170881, 33.92404}, + {20.199957, 49.608173}, + {-77.58725, 37.683048}, + {-86.14142, 39.808924}, + {-103.022105, 36.368738}, + {-149.443843, 61.587297}, + {8.647059, 50.113491}, + {-76.85376, 39.108196}, + {-79.62455, 43.792686}, + {11.101343, 59.604968}, + {10.988575, 44.576527}, + {-122.230003, 38.138187}, + {-121.133106, 37.586087}, + {-84.79818, 33.889424}, + {-66.046898, 44.40015}, + {5.036413, 51.589722}, + {-123.108437, 44.465408}, + {174.694107, -36.871742}, + {-116.480249, 43.535673}, + {8.926486, 50.27306}, + {-81.25795, 37.954735}, + {16.768282, 39.598579}, + {-97.08654, 33.005215}, + {153.201529, -27.604465}, + {-0.140007, 51.684679}, + {-76.818573, 39.206715}, + {-83.318909, 41.935804}, + {-88.414971, 41.413261}, + {-92.334427, 38.806908}, + {-81.167211, 42.937956}, + {31.017719, 36.925877}, + {10.92281, 49.87695}, + {7.119026, 50.879548}, + {9.943985, 51.528215}, + {10.3254, 48.557769}, + {9.937453, 52.155916}, + {2.343899, 50.384312}, + {5.795834, 43.208664}, + {6.772173, 51.4337}, + {99.526713, 7.410102}, + {106.819466, -6.197659}, + {104.869, 15.216167}, + {9.231075, 45.440519}, + {-85.157013, 41.052578}, + {-73.659656, 45.447246}, + {100.596032, 13.590092}, + {-46.523396, -23.660998}, + {106.6236, -6.254821}, + {-49.36323, -18.012078}, + {32.88821, 53.945858}, + {128.205609, 37.129061}, + {128.70787, 35.93141}, + {109.071345, -7.666965}, + {37.871483, 55.739677}, + {-48.498643, -1.457657}, + {-76.885467, 39.218044}, + {128.214328, 38.129071}, + {0.117202, 51.779056}, + {13.591505, 50.599651}, + {-47.302551, -22.700343}, + {110.331383, 1.635555}, + {100.613388, 14.746497}, + {121.451523, 25.172562}, + {121.213425, 13.634275}, + {-46.45234, -23.612484}, + {100.767964, 13.571373}, + {100.160385, 14.369183}, + {112.699141, -7.846612}, + {-46.404357, -23.491171}, + {128.562808, 35.184364}, + {37.750375, 55.781449}, + {100.512824, 13.742673}, + {-46.837961, -23.502105}, + {-46.708371, -23.450502}, + {-34.839137, -7.076159}, + {-2.242053, 53.477309}, + {-46.675294, -23.669957}, + {126.850868, 37.564479}, + {100.621826, -0.231426}, + {101.117806, 12.879473}, + {-68.145561, -16.497952}, + {126.909411, 37.647593}, + {34.880619, 32.093452}, + {127.006461, 37.267885}, + {-44.315432, -23.007454}, + {65.76717, 31.627698}, + {129.033689, 35.106034}, + {106.725939, -6.384171}, + {-51.915499, -23.440597}, + {-46.554314, -23.537601}, + {-49.108483, -4.446416}, + {-46.579969, -23.516168}, + {100.700215, 13.600931}, + {100.526787, 13.729354}, + {-34.918705, -8.185129}, + {2.427062, 48.879192}, + {112.906413, -7.64823}, + {-48.477303, -1.370074}, + {127.758447, 37.884866}, + {14.365982, 50.173046}, + {129.368074, 36.03908}, + {110.734058, -6.87259}, + {50.747478, 61.801303}, + {127.196433, 37.894744}, + {-5.114233, 37.802928}, + {-38.558724, -3.828562}, + {-43.171607, -22.525319}, + {35.934441, 31.974026}, + {104.773696, 14.666606}, + {107.654457, -6.932791}, + {110.797048, -6.792497}, + {33.410587, 47.891289}, + {126.736059, 37.506948}, + {103.846842, 16.40417}, + {29.391367, -3.370732}, + {-53.918717, -27.467389}, + {-58.419655, -34.613865}, + {20.463675, 44.803523}, + {107.418762, -6.413801}, + {-49.664936, -22.201419}, + {139.626269, 35.338412}, + {99.30368, 7.73966}, + {129.371704, 35.585018}, + {-77.535703, 38.285592}, + {25.018732, 60.376703}, + {-34.859695, -8.011651}, + {34.901093, 32.177807}, + {-84.766441, 33.736665}, + {-72.101858, 41.553637}, + {-46.568619, -23.503229}, + {-35.239292, -5.823215}, + {-38.503934, -12.93029}, + {126.472812, 34.993899}, + {126.972076, 35.958775}, + {-67.030663, 10.604848}, + {-98.882629, 19.272161}, + {102.778456, -3.864616}, + {-89.987789, 14.632281}, + {100.287534, 13.637575}, + {-46.670467, -23.584187}, + {126.293481, 33.439571}, + {106.948155, -6.385396}, + {109.338806, -7.355399}, + {104.787143, -3.045035}, + {126.749934, 33.427187}, + {101.02793, 12.952672}, + {-48.471972, -1.46641}, + {101.789685, 15.914015}, + {-47.304638, -23.29956}, + {-51.203764, -30.003374}, + {100.510317, 5.016583}, + {126.517197, 33.254768}, + {80.218002, 12.903566}, + {126.941029, 37.570844}, + {106.780785, -6.191081}, + {100.396695, 7.599207}, + {120.227654, -4.238801}, + {120.710007, 24.131484}, + {112.623242, -7.323725}, + {129.021303, 35.10476}, + {-43.938017, -19.938672}, + {10.158656, 36.833864}, + {12.483369, 41.903744}, + {106.793198, -6.179257}, + {127.448461, 36.835673}, + {126.556068, 35.409847}, + {129.107616, 35.143568}, + {-77.338302, 25.064061}, + {-35.102674, -7.66447}, + {-51.010708, -26.784248}, + {126.767341, 35.982634}, + {83.020169, 55.027616}, + {30.219218, 50.23944}, + {100.499695, 13.601328}, + {127.315174, 37.361796}, + {38.73019, 55.292614}, + {126.872903, 37.518835}, + {100.440666, 13.717224}, + {99.965137, 8.4208}, + {51.631703, 32.605731}, + {99.883583, 17.089226}, + {100.500078, 13.601128}, + {10.061954, 53.195786}, + {126.916571, 37.642271}, + {100.465492, 13.912881}, + {126.767174, 37.431913}, + {104.888083, 17.350704}, + {100.586465, 13.743691}, + {126.777876, 37.489526}, + {46.682352, 24.555359}, + {-45.968788, -23.305738}, + {100.472153, 13.580573}, + {39.778817, 47.078559}, + {110.474434, -7.17502}, + {-117.348877, 34.397907}, + {111.2586, -7.51729}, + {99.898617, 14.529148}, + {-43.083823, -22.858647}, + {-82.670456, 40.139694}, + {102.565071, 18.339328}, + {115.202068, -8.650807}, + {128.593599, 35.852934}, + {-73.784414, 40.712553}, + {-62.271567, -38.723303}, + {99.329697, 13.839399}, + {123.771, 10.236592}, + {126.70696, 35.967957}, + {-46.649231, -23.532426}, + {-49.325987, -25.513015}, + {127.637403, 35.814198}, + {102.224215, 2.256769}, + {121.562866, 25.291334}, + {126.921028, 35.146534}, + {113.968918, 22.400625}, + {-94.256942, 35.12031}, + {-46.44138, -23.501508}, + {-44.778335, -4.219091}, + {7.061934, 43.578777}, + {11.55081, 45.552879}, + {-46.665375, -23.542562}, + {121.49675, 25.05538}, + {8.778238, 40.900505}, + {-46.70496, -23.631882}, + {-49.867113, -22.994674}, + {41.407772, 52.763046}, + {-5.731381, 56.590031}, + {-104.6404, 24.03197}, + {-49.384976, -20.840959}, + {8.626264, 53.037113}, + {51.833736, 55.652946}, + {5.023935, 47.334759}, + {-46.390301, -23.487496}, + {129.024357, 35.09143}, + {126.927057, 36.984428}, + {120.290393, 23.482847}, + {103.470695, 15.98859}, + {-48.935739, -20.027996}, + {-34.945826, -8.088375}, + {106.969803, -6.39306}, + {-42.79895, -5.098762}, + {100.587303, 13.923767}, + {99.925346, 13.486471}, + {129.134013, 35.560668}, + {126.780098, 36.535355}, + {100.435616, 13.663509}, + {10.843894, 45.904793}, + {6.48587, 51.224991}, + {23.810551, 52.084866}, + {126.733187, 37.726239}, + {109.180992, -6.864747}, + {-8.061074, 31.651457}, + {-52.215323, -3.215155}, + {-49.852764, -6.079967}, + {112.63607, -7.147501}, + {111.428455, -6.691012}, + {100.564068, 13.815731}, + {-58.396828, -34.610104}, + {126.645773, 36.901816}, + {-45.891457, -23.213648}, + {-117.717308, 33.65765}, + {126.883673, 37.675775}, + {-46.979252, -23.034992}, + {41.779012, 52.799124}, + {100.352564, 14.042935}, + {129.115373, 35.160475}, + {-38.409552, -12.938588}, + {114.160469, 22.302458}, + {-34.933446, -8.169677}, + {100.515869, 13.875584}, + {111.907535, -7.180643}, + {105.79863, 19.649986}, + {127.124935, 37.538431}, + {100.63828, 14.318178}, + {-96.105827, 19.147177}, + {120.899086, 24.694183}, + {38.576572, 55.37072}, + {-111.920953, 33.389736}, + {126.710445, 35.975439}, + {126.890091, 37.464711}, + {126.737998, 37.509038}, + {126.382145, 34.811186}, + {98.803719, 18.428347}, + {117.113091, -0.524359}, + {-49.411793, -20.824404}, + {-76.982849, -12.118901}, + {129.051966, 35.159369}, + {100.638481, 13.698757}, + {-1.360164, 53.136352}, + {0.547705, 52.652462}, + {140.633911, -2.597254}, + {-55.853818, -27.352899}, + {120.553158, 24.21884}, + {103.440086, 3.51686}, + {112.101105, -8.058724}, + {128.622833, 36.824585}, + {126.774193, 37.758227}, + {8.650097, 50.114594}, + {127.487587, 36.627029}, + {48.067947, 29.339873}, + {0.142511, 48.033381}, + {126.729332, 37.493446}, + {129.058524, 35.158948}, + {-56.515423, -15.037818}, + {31.225035, 30.027831}, + {158.663132, 53.045086}, + {128.568436, 35.861259}, + {107.712082, -6.941181}, + {106.461332, -6.204114}, + {-118.419834, 34.013465}, + {128.738472, 37.469879}, + {127.011647, 37.602367}, + {-46.467546, -23.567451}, + {127.814022, 26.322474}, + {-38.481045, -12.946894}, + {129.074432, 35.179825}, + {-47.024017, -23.69338}, + {-47.550259, -23.335213}, + {-48.944344, -16.340647}, + {-1.994261, 52.531691}, + {128.80726, 35.813862}, + {-46.691975, -23.455792}, + {18.841595, -33.943493}, + {9.263454, 52.399029}, + {127.148662, 37.492907}, + {-47.0994, -22.827738}, + {128.582054, 35.206966}, + {102.100606, 14.979571}, + {106.825768, -6.186114}, + {11.604637, 52.064821}, + {11.984553, 48.160614}, + {9.514566, 49.764369}, + {12.985151, 47.940079}, + {8.799423, 50.109467}, + {9.961722, 52.163187}, + {9.638165, 52.861591}, + {11.0504, 50.199565}, + {10.957095, 49.476699}, + {7.569651, 51.612325}, + {11.828662, 47.956925}, + {11.84598, 48.818556}, + {11.038952, 49.673039}, + {28.320649, -15.410753}, + {9.185807, 48.956255}, + {4.899525, 46.820891}, + {8.741224, 49.874244}, + {12.255988, 48.072912}, + {8.769068, 48.91401}, + {11.301082, 49.08219}, + {11.481193, 49.676624}, + {128.74353, 36.720829}, + {-79.706777, 44.745503}, + {102.6391, 17.948864}, + {113.318508, -7.799583}, + {106.758618, -6.463576}, + {127.740463, 37.905793}, + {101.00985, 13.073692}, + {-54.598499, -16.488631}, + {101.742848, 3.14976}, + {128.460907, 38.120865}, + {103.795003, 16.294205}, + {114.03762, 4.451485}, + {101.911709, 14.900664}, + {126.982757, 37.233297}, + {-47.002322, -18.940817}, + {-43.326322, -22.931659}, + {107.700821, -7.078504}, + {100.81041, 13.853824}, + {57.131886, 30.266191}, + {102.690353, 17.877602}, + {105.200977, 16.235695}, + {100.706505, 14.792909}, + {-49.256511, -25.436145}, + {-48.802366, -26.272302}, + {-118.023325, 34.140707}, + {100.619012, 16.423385}, + {-122.326744, 47.701271}, + {-93.391352, 17.840256}, + {100.275664, 13.998677}, + {121.58284, 25.045048}, + {39.485849, 45.446232}, + {105.966922, 15.317175}, + {99.863617, 2.092672}, + {101.18989, 13.008314}, + {37.672188, 55.774319}, + {101.081383, 13.349814}, + {126.864922, 35.332668}, + {97.909302, 18.246307}, + {11.335276, 46.418245}, + {101.602394, 3.079269}, + {106.863041, -6.224401}, + {100.621569, 14.081321}, + {129.054431, 35.17733}, + {126.836163, 37.624315}, + {120.341209, 22.638252}, + {76.946838, 43.215649}, + {126.630344, 36.09785}, + {126.853192, 35.562035}, + {99.956055, 8.402664}, + {127.159008, 35.807455}, + {103.5002, 17.489272}, + {-73.786949, 40.646305}, + {-60.102905, -35.00317}, + {110.434399, -6.974303}, + {70.906197, 22.339931}, + {100.024925, 15.37713}, + {76.929077, 43.216294}, + {-104.25322, 31.064945}, + {37.980576, 55.793545}, + {83.69458, 53.342069}, + {120.621433, 24.204141}, + {106.863275, -6.512296}, + {-40.392537, -20.347907}, + {128.882386, 35.237938}, + {126.771418, 37.323217}, + {-54.573594, -16.473316}, + {106.236816, -6.421969}, + {-0.025516, 52.9744}, + {104.108882, 18.30022}, + {126.751199, 37.436431}, + {126.722794, 37.461224}, + {102.819206, 17.384624}, + {112.649101, -7.966035}, + {-123.023906, 43.86058}, + {102.071678, 12.93125}, + {101.765749, 3.195441}, + {121.647625, 25.061139}, + {126.680183, 37.48162}, + {78.43607, 17.240283}, + {-57.978642, -30.740462}, + {-60.280784, -33.455121}, + {104.505982, 0.94564}, + {100.341353, 13.616709}, + {-95.603455, 29.714226}, + {-71.54093, -16.398941}, + {126.94873, 37.265147}, + {80.792458, 53.245858}, + {126.897152, 37.515669}, + {115.20726, -8.596414}, + {-43.844012, -22.463346}, + {-45.795072, -12.08197}, + {100.676479, 13.561669}, + {99.998457, 15.98765}, + {35.200521, 47.879005}, + {106.883335, -6.201339}, + {99.812911, 19.852673}, + {-46.679043, -23.657597}, + {101.08583, 14.625546}, + {128.437033, 36.153366}, + {-64.736801, -21.531621}, + {35.73012, 31.169208}, + {-46.849857, -23.614569}, + {19.038622, 47.520187}, + {127.037114, 37.606082}, + {-98.332626, 19.197813}, + {121.699625, 25.06713}, + {27.397674, 63.361329}, + {127.009153, 37.268945}, + {28.865271, 40.988323}, + {126.710987, 37.526026}, + {117.272899, -33.269864}, + {32.446106, 37.862316}, + {105.395857, 14.793321}, + {102.374752, 16.641651}, + {35.571087, 36.91272}, + {2.090599, 49.06575}, + {100.890255, 12.953767}, + {23.997454, 49.83127}, + {101.488922, 3.035183}, + {108.472503, -6.93695}, + {-63.868664, -8.80356}, + {60.508039, 56.809774}, + {30.338655, 53.901478}, + {106.84424, -6.347075}, + {-43.09857, -22.927982}, + {126.984712, 35.055559}, + {60.761051, 56.896839}, + {88.601967, 25.376965}, + {101.262726, 13.845741}, + {126.923637, 37.579214}, + {-47.211973, -22.864656}, + {37.497866, 55.331078}, + {101.853264, 5.942696}, + {-43.204166, -22.898905}, + {107.423126, -6.401532}, + {37.339687, 55.697578}, + {120.277042, 22.72728}, + {104.778234, 17.403638}, + {128.767255, 35.248513}, + {128.612671, 35.846607}, + {129.065926, 35.184694}, + {111.432729, -7.623236}, + {126.735405, 37.539779}, + {108.456093, -6.624251}, + {101.156707, 12.651859}, + {104.033897, 1.164453}, + {100.298153, 13.715896}, + {106.826365, 14.814926}, + {105.941273, -6.031395}, + {100.546337, 13.643228}, + {102.635009, 17.935511}, + {128.626336, 36.820545}, + {100.404583, -0.340969}, + {101.713314, 17.415522}, + {102.533203, 17.891792}, + {104.052493, 20.416419}, + {101.075798, 4.551845}, + {54.344813, 27.675395}, + {-111.936965, 40.479832}, + {129.129008, 35.18792}, + {61.60861, 55.098123}, + {102.275176, 13.232451}, + {61.459419, 55.166672}, + {128.87321, 35.248477}, + {128.09197, 34.94574}, + {102.498991, 2.588638}, + {-43.704821, -22.718936}, + {-0.725352, 51.483463}, + {13.648237, 47.997967}, + {-44.056288, -20.332199}, + {100.761956, 18.692687}, + {112.404747, -7.326042}, + {128.461929, 37.183666}, + {121.588905, 25.047594}, + {128.710501, 35.832961}, + {128.124249, 35.188269}, + {102.103289, 14.990368}, + {-43.991535, -19.891947}, + {9.276325, 48.678457}, + {-122.381485, 37.617558}, + {39.149826, 21.596239}, + {-48.853341, -26.346961}, + {126.730534, 37.497956}, + {106.560201, -6.233346}, + {120.309558, 22.71959}, + {128.036911, 38.104546}, + {-93.734971, 38.760636}, + {100.65559, 13.788083}, + {-96.916939, 32.832245}, + {104.148605, 15.096399}, + {106.786591, -6.291122}, + {110.440712, -6.979953}, + {100.652519, 13.525604}, + {127.056927, 37.731068}, + {-90.44331, 14.731438}, + {100.411346, 13.645026}, + {126.787373, 37.365154}, + {-34.900681, -8.130829}, + {51.442169, 25.170959}, + {25.095656, 48.317023}, + {35.919369, 56.853926}, + {30.346159, 46.107698}, + {103.821027, 1.608395}, + {128.317271, 36.130187}, + {100.581675, 13.868254}, + {128.485263, 38.378905}, + {35.065662, 32.843536}, + {103.297627, 14.880878}, + {33.06135, 34.690498}, + {128.979822, 35.18561}, + {100.639702, 13.878111}, + {37.49276, 55.67923}, + {23.114673, 42.264492}, + {102.633186, 18.024175}, + {90.453781, 56.30941}, + {-95.550547, 29.594429}, + {106.806669, -6.596636}, + {100.628036, 14.288061}, + {104.787014, -2.98913}, + {99.752617, 13.343031}, + {129.130081, 35.57103}, + {127.134735, 36.894905}, + {-47.070533, -22.88038}, + {99.965245, 12.453718}, + {120.204964, -3.012102}, + {-90.065287, 14.411252}, + {-43.326611, -22.714928}, + {12.486039, 42.06385}, + {19.118567, 50.29303}, + {126.639242, 37.469946}, + {-43.496724, -22.859829}, + {101.054899, 13.692396}, + {100.797264, 13.850198}, + {-48.256526, -1.360047}, + {101.106868, 12.980274}, + {101.100113, 12.995849}, + {38.003342, 55.750446}, + {-38.594135, -12.940234}, + {-43.570016, -22.886054}, + {100.746634, 6.921184}, + {-80.85041, 35.3526}, + {112.734979, -7.312015}, + {106.958338, -6.245837}, + {-49.891693, -6.088658}, + {-47.658929, -15.626421}, + {37.519977, 55.769145}, + {44.51482, 40.206726}, + {-49.310177, -16.721107}, + {120.297221, 22.625537}, + {-48.731474, -22.075806}, + {120.328789, 22.608089}, + {127.689234, 37.002192}, + {100.546816, 13.689315}, + {-34.896596, -7.990266}, + {101.35215, 6.84061}, + {114.126625, 22.34326}, + {99.985983, 6.84218}, + {72.252548, 42.520741}, + {139.833694, 35.781418}, + {128.204208, 37.127932}, + {100.495552, 13.670698}, + {26.20208, -29.108248}, + {19.948385, 50.009014}, + {-115.28977, 36.172856}, + {-86.137256, 39.756998}, + {-111.629379, 33.42223}, + {-103.129341, 39.287365}, + {28.194054, -26.254473}, + {-0.047471, 51.48558}, + {-73.890372, 40.855514}, + {-77.428293, 37.248461}, + {121.798729, 31.150642}, + {-97.717986, 35.401098}, + {-2.673974, 53.877254}, + {-83.222084, 42.653851}, + {2.416529, 44.260437}, + {-122.478951, 37.770008}, + {144.442085, -37.663984}, + {-87.759611, 41.924001}, + {-87.624489, 41.87672}, + {140.121033, 35.608356}, + {-70.656441, -33.42474}, + {128.693276, 34.87481}, + {139.945772, 35.706212}, + {39.362389, 46.992344}, + {100.609699, 14.237382}, + {107.552157, -6.959442}, + {24.337639, 46.155301}, + {102.798649, 14.637851}, + {121.018723, 24.762751}, + {-99.242859, 20.478617}, + {101.06535, 15.451679}, + {108.481949, -6.888987}, + {102.076702, 12.919524}, + {101.071297, 13.448168}, + {38.748344, 55.78458}, + {127.319191, 36.312089}, + {101.392988, 4.41692}, + {128.506683, 35.812267}, + {128.150986, 36.115086}, + {-49.490997, -6.042622}, + {99.158448, 8.840028}, + {-65.114563, -24.38629}, + {101.105887, 12.971027}, + {-48.595446, -27.607122}, + {109.175186, -6.968485}, + {-74.252663, -15.851531}, + {-95.410965, 29.750486}, + {37.352734, 55.892262}, + {-48.567596, -25.55607}, + {99.778847, 7.480888}, + {114.131119, 22.335104}, + {126.72607, 37.492062}, + {38.615021, 55.750191}, + {129.178016, 35.17325}, + {127.01158, 37.793216}, + {10.741032, 49.954977}, + {-44.189961, -19.963973}, + {23.65589, 52.097292}, + {-46.591149, -23.567535}, + {129.096966, 35.198279}, + {126.86157, 37.577052}, + {129.334608, 35.455228}, + {109.354713, -7.33133}, + {30.543707, 56.340118}, + {101.880559, 2.860242}, + {104.847987, 15.681883}, + {100.940097, 13.563796}, + {-43.21627, -22.962938}, + {35.990108, 31.987808}, + {126.723284, 37.535076}, + {8.563529, 50.013416}, + {12.166526, 52.413461}, + {6.952812, 51.658199}, + {11.149931, 51.956866}, + {9.527948, 52.914288}, + {31.204154, -10.249146}, + {9.918919, 54.416788}, + {14.043667, 52.794879}, + {9.44914, 51.317738}, + {11.582472, 51.799788}, + {7.023852, 49.144543}, + {-117.863254, 33.702309}, + {103.622044, -1.601596}, + {-46.379149, -23.497665}, + {-7.968098, 31.613857}, + {-48.939925, -20.023753}, + {-70.704765, 19.466055}, + {101.045062, 13.392319}, + {107.710674, -6.287108}, + {126.569414, 33.255476}, + {-34.911489, -8.054704}, + {120.987846, 14.576873}, + {-46.774688, -23.680372}, + {128.734949, 36.568459}, + {28.697879, 50.264419}, + {129.048136, 35.184073}, + {128.688689, 35.253161}, + {100.474197, 13.546977}, + {17.659753, 46.778455}, + {30.483471, 50.502866}, + {102.562976, 17.819267}, + {-87.631393, 34.836134}, + {103.27241, 3.792479}, + {100.300574, 17.562175}, + {-49.340119, -25.587875}, + {74.119576, 32.428802}, + {119.445757, -5.222168}, + {35.516299, 32.718101}, + {-3.713026, 40.429785}, + {126.72185, 37.661424}, + {102.671585, 17.980705}, + {104.769447, -2.972355}, + {102.10046, 4.170638}, + {127.75809, 37.853746}, + {107.824188, -7.253728}, + {100.774872, 16.002363}, + {102.617752, 18.007357}, + {101.355021, -1.965943}, + {129.005178, 37.133371}, + {112.732247, -7.286484}, + {100.116974, 14.447613}, + {106.384916, 15.678357}, + {129.178273, 35.844912}, + {126.464391, 33.47382}, + {37.75425, 55.619678}, + {128.785394, 35.089032}, + {127.253066, 36.475924}, + {50.046974, 58.542043}, + {15.775127, 49.954545}, + {99.462743, 7.817776}, + {-43.461665, -22.742537}, + {99.126221, 9.616431}, + {113.200043, -8.130024}, + {104.234713, 1.555106}, + {100.349403, 14.034187}, + {127.417475, 35.784118}, + {104.699519, 16.98746}, + {-98.165801, 19.335484}, + {103.912259, 1.320941}, + {30.338652, 59.883659}, + {100.28792, 13.611346}, + {36.314523, 49.958746}, + {28.936029, 41.007872}, + {-3.564593, 54.621407}, + {128.706735, 35.830002}, + {30.22177, 55.180609}, + {100.598579, 14.068225}, + {127.494501, 37.498795}, + {99.901025, 19.031998}, + {127.133767, 37.485555}, + {78.475395, 17.394936}, + {100.487207, 7.023163}, + {99.977425, 12.784947}, + {114.072029, 22.371267}, + {99.997234, 13.761761}, + {-0.085276, 5.630474}, + {129.069631, 35.175478}, + {100.516426, 13.751155}, + {127.290838, 38.180187}, + {-47.174784, -1.198992}, + {116.074825, 5.94452}, + {127.484764, 35.278287}, + {-43.301064, -22.747478}, + {100.499558, 13.964344}, + {102.08992, 14.982102}, + {102.093912, 14.98965}, + {106.713351, -6.214292}, + {119.45475, -5.482963}, + {-52.499509, -31.765738}, + {115.008888, 4.756585}, + {103.111014, 1.866229}, + {128.536983, 35.884782}, + {-43.926201, -19.940052}, + {103.872656, 1.351698}, + {103.777226, 16.089636}, + {126.929265, 37.37486}, + {102.862938, 16.426276}, + {127.639193, 37.266109}, + {1.375648, 45.678751}, + {126.963666, 37.549042}, + {-91.54253, 14.858032}, + {126.658578, 37.482403}, + {58.983246, 53.428093}, + {101.99733, 2.712626}, + {7.120576, 43.597202}, + {-49.345404, -25.462168}, + {115.276665, -8.33399}, + {101.993887, 2.687175}, + {127.163918, 36.878502}, + {128.146485, 36.998209}, + {100.293287, 13.654302}, + {-43.457766, -22.74127}, + {106.733192, -6.362926}, + {103.314997, 2.051487}, + {126.692362, 37.465638}, + {106.694137, -6.540875}, + {106.209198, -6.230536}, + {99.095111, 18.856228}, + {100.264692, 7.138664}, + {126.970873, 37.57445}, + {-47.994192, -15.944244}, + {100.558627, 14.002344}, + {-46.395543, -23.589059}, + {100.928156, 13.294868}, + {12.374076, 44.237621}, + {102.776001, 17.386442}, + {-54.787384, -22.248833}, + {100.617543, 13.787956}, + {99.730478, 13.110059}, + {106.909294, -6.356968}, + {106.163288, -6.118809}, + {126.485641, 37.276279}, + {-80.633047, -5.169865}, + {-46.411427, -23.440981}, + {100.255821, 16.804619}, + {-53.836046, -29.728241}, + {127.490811, 36.968566}, + {129.683697, 62.028324}, + {-47.939996, -19.744572}, + {102.823982, 16.331512}, + {102.635102, 17.997931}, + {106.725109, -6.555795}, + {126.904884, 35.805884}, + {-61.47075, 16.23551}, + {100.650373, 14.579928}, + {127.985413, 37.491692}, + {87.128937, 53.756275}, + {38.117332, 55.903149}, + {24.243382, 44.987046}, + {-34.953602, -8.039762}, + {105.806099, 14.778079}, + {106.832716, -6.339795}, + {104.321028, 15.110306}, + {71.476445, 51.140073}, + {37.351261, 37.088116}, + {99.811699, 13.584361}, + {100.921326, 13.102098}, + {104.710645, 16.565739}, + {114.159649, 22.318566}, + {129.097972, 35.129948}, + {129.414734, 35.484612}, + {100.585259, 14.213267}, + {129.068959, 35.198192}, + {101.193848, 13.441462}, + {-35.141916, -6.215996}, + {103.658615, 1.609592}, + {-49.979084, -20.398598}, + {98.997879, 18.783901}, + {128.774174, 35.294292}, + {106.795118, -6.418412}, + {109.049965, -6.95421}, + {102.838257, 16.469643}, + {-0.423948, 39.511178}, + {108.353734, -6.533665}, + {77.095085, 52.396774}, + {98.9506, 18.474024}, + {36.292385, 56.502918}, + {101.16316, 16.41279}, + {78.487381, 17.389036}, + {128.38911, 36.14403}, + {100.547836, 13.916738}, + {38.944675, 45.039867}, + {114.830704, -3.438752}, + {104.130116, 15.813841}, + {127.963288, 37.760101}, + {-46.63684, -23.552105}, + {103.848198, 1.331176}, + {174.937698, -37.086887}, + {106.975415, -6.271097}, + {128.866414, 35.233529}, + {100.982292, 13.088715}, + {126.379275, 33.372783}, + {102.414955, 17.02544}, + {128.563166, 35.875458}, + {106.602238, -6.198421}, + {51.817848, 55.620102}, + {100.60733, 14.785658}, + {110.40612, -7.769487}, + {110.368286, -7.779165}, + {-48.477905, -1.462911}, + {105.908847, 21.046301}, + {110.505051, -7.325198}, + {100.257137, 13.621291}, + {49.749918, 55.827716}, + {126.495273, 34.622816}, + {106.840736, -6.244521}, + {104.636615, 15.485373}, + {113.995639, 22.37308}, + {28.476859, 49.234267}, + {108.53463, -7.36801}, + {128.554989, 36.219793}, + {-43.233075, -22.910168}, + {126.950268, 37.294309}, + {103.872286, 1.352219}, + {78.187256, 16.963264}, + {100.629608, 5.623602}, + {115.26179, -8.55874}, + {105.252416, -5.412359}, + {121.561455, 25.084511}, + {-47.298447, -23.261203}, + {101.244202, 16.872229}, + {102.936897, 5.063383}, + {106.982742, -6.242373}, + {126.350319, 37.001705}, + {126.784947, 37.865595}, + {1.05939, 52.148266}, + {37.748268, 55.637981}, + {113.865654, -1.103727}, + {107.112305, -6.326109}, + {112.745926, -7.289211}, + {100.36618, 13.711816}, + {27.569803, 53.863819}, + {49.489595, 53.487032}, + {101.756477, 14.841538}, + {126.534537, 37.237854}, + {-44.002192, -19.787988}, + {37.588997, 55.751858}, + {-46.46722, -23.404261}, + {128.745819, 36.594032}, + {-43.878364, -19.789758}, + {126.985047, 37.301029}, + {100.025113, 13.833677}, + {106.916869, -6.154464}, + {115.085335, -8.106867}, + {109.529579, -6.902708}, + {128.736618, 36.569874}, + {128.924713, 35.963486}, + {-46.59016, -23.255154}, + {20.06354, 50.086018}, + {73.406342, 61.324055}, + {112.856781, -8.221802}, + {103.592809, 1.560769}, + {103.220634, 3.763368}, + {27.476685, 53.85154}, + {109.580697, -7.142389}, + {127.054171, 37.905495}, + {102.831894, 16.384798}, + {106.665146, -6.299014}, + {-77.075394, -11.864153}, + {105.851418, -6.320303}, + {115.21418, -8.726124}, + {107.466405, -6.403415}, + {126.765358, 37.52367}, + {129.357064, 35.640919}, + {100.918289, 13.161961}, + {100.463596, 13.991052}, + {103.084293, 16.703253}, + {127.094322, 36.182953}, + {10.0781, 48.845774}, + {7.096547, 50.770726}, + {-1.825849, 46.581302}, + {-48.921079, -20.997244}, + {106.330374, 22.806394}, + {102.096756, 13.802983}, + {112.748141, -7.306026}, + {-79.535629, 43.849594}, + {112.583176, -7.091163}, + {-38.525842, -3.741195}, + {127.174553, 37.573466}, + {-41.944646, -18.838556}, + {100.454769, 13.825632}, + {109.303902, -0.058228}, + {3.387555, 6.510862}, + {100.567192, 13.782927}, + {-71.59492, -35.84204}, + {104.09263, 17.766183}, + {120.280601, 23.463918}, + {101.139881, 13.327238}, + {-43.178606, -22.905388}, + {128.26643, 37.190073}, + {-43.92923, -19.936668}, + {11.054825, 45.426769}, + {-46.718945, -23.510641}, + {120.282667, 23.483998}, + {-38.484033, -12.962618}, + {105.193298, 16.237356}, + {72.612622, 61.109707}, + {-46.620664, -23.522673}, + {-2.944465, 43.249183}, + {107.65493, -6.923274}, + {109.757937, -7.79388}, + {128.679403, 35.236693}, + {-38.656527, -3.731636}, + {123.168198, 41.311821}, + {-69.347954, 10.059928}, + {57.803277, 58.104788}, + {101.40464, 4.503239}, + {39.051037, 55.370393}, + {77.237465, 28.565233}, + {111.473809, -7.738342}, + {121.537613, 24.958027}, + {98.343051, 8.04581}, + {100.497737, 13.851113}, + {128.709488, 34.877934}, + {100.615997, 13.987062}, + {126.981851, 37.25105}, + {129.370499, 36.05789}, + {-43.562271, -22.716953}, + {151.199463, -33.882442}, + {126.730712, 37.506038}, + {109.647583, -6.943374}, + {25.943801, 44.571499}, + {-90.115786, 14.747302}, + {105.777847, 14.814741}, + {-45.263532, -22.209971}, + {-43.364774, -22.86372}, + {-99.80296, 16.821379}, + {103.226951, 14.429961}, + {99.962057, 12.548257}, + {102.619516, 14.663241}, + {102.538199, 18.420384}, + {102.622799, 18.133071}, + {100.594594, 13.839505}, + {127.591751, 36.991977}, + {120.748288, 23.993921}, + {126.838126, 33.53416}, + {100.575943, 13.752539}, + {-110.993328, 31.876631}, + {-6.21898, 36.676323}, + {99.657286, 13.966569}, + {100.415786, 14.243144}, + {-51.226189, -22.776888}, + {127.033929, 37.643266}, + {-74.764557, 10.935616}, + {107.100811, -6.320013}, + {100.577189, 13.745344}, + {98.374741, 7.862509}, + {98.982713, 14.197934}, + {138.173935, 36.606377}, + {114.177586, 22.326403}, + {127.149008, 35.799432}, + {102.516846, 18.024786}, + {128.5267, 35.808437}, + {106.904755, -6.163393}, + {100.45369, 13.690808}, + {100.936142, 13.276538}, + {100.618919, 14.132996}, + {128.568222, 36.589825}, + {30.492203, 50.408756}, + {100.670949, 13.897993}, + {106.495705, -6.129222}, + {99.251041, 10.693367}, + {-38.496709, -3.855953}, + {126.685104, 35.587215}, + {73.065077, 33.549145}, + {102.118866, 12.613161}, + {126.426921, 34.8037}, + {37.385742, 55.707382}, + {102.937508, 17.995703}, + {103.780517, 14.625397}, + {30.328279, 59.937126}, + {115.722553, -0.249641}, + {-93.67868, 41.651199}, + {100.651508, 13.997202}, + {-48.166046, -21.77573}, + {-63.170492, -17.729396}, + {100.531868, 13.796148}, + {-37.343839, -5.193106}, + {99.772553, 12.725033}, + {-48.522121, -25.519254}, + {-47.149488, -22.945769}, + {100.530358, 13.684425}, + {106.974019, -6.322914}, + {114.188358, 22.381664}, + {102.063443, 15.842761}, + {107.384075, -6.362827}, + {101.76273, 2.825363}, + {1.272404, 51.149484}, + {121.421387, 24.996401}, + {126.63356, 37.398708}, + {35.38377, 36.566369}, + {129.161789, 35.1652}, + {-69.864569, 18.481179}, + {100.928475, 17.057138}, + {-51.312304, -19.475457}, + {-0.213133, 39.660329}, + {128.587061, 35.2378}, + {100.677089, -0.785161}, + {129.165149, 35.161515}, + {28.671343, 60.533048}, + {111.938569, 2.748334}, + {39.130859, 45.052479}, + {115.178719, -8.741329}, + {45.525446, 54.722156}, + {27.595164, 53.911957}, + {-45.848862, -23.178994}, + {-66.837175, 10.469596}, + {-54.639675, -20.489866}, + {-86.678703, 33.543655}, + {102.64699, 17.932339}, + {105.843666, 21.051225}, + {101.436913, 13.047247}, + {126.804945, 37.52748}, + {30.462495, 50.46333}, + {-46.760571, -23.684507}, + {106.837129, -6.638912}, + {128.546896, 35.845294}, + {100.395241, -0.960809}, + {121.430187, 25.031119}, + {100.612663, 13.551253}, + {-43.400828, -22.840041}, + {111.553558, -7.627928}, + {120.878502, 24.687391}, + {27.258026, 37.862277}, + {-43.513985, -22.870202}, + {100.555559, 13.916666}, + {126.919308, 36.971624}, + {120.538414, 23.679455}, + {-74.046959, 4.680442}, + {-43.37809, -23.00005}, + {40.076042, 47.422294}, + {-46.59651, -23.585887}, + {29.103771, 40.962753}, + {-78.498236, -0.133025}, + {106.95372, -6.139182}, + {108.216133, -7.343484}, + {126.961663, 37.854882}, + {128.086662, 35.082144}, + {104.772568, -2.998035}, + {76.809998, 43.238396}, + {100.339439, 13.972972}, + {100.979324, 12.957156}, + {105.29047, -5.353465}, + {115.380989, -2.586525}, + {102.832893, 17.841196}, + {106.634526, 10.874627}, + {103.17318, 14.605187}, + {127.354645, 36.358932}, + {129.412709, 35.486073}, + {120.33622, 22.69115}, + {126.739174, 35.725319}, + {37.484764, 55.872578}, + {-99.099472, 19.380262}, + {104.499039, 16.657598}, + {-44.003526, -19.909885}, + {99.922859, 8.466768}, + {-52.430592, -29.753878}, + {100.593743, 14.21651}, + {-76.998248, -11.851208}, + {6.141716, 46.201752}, + {100.218124, 7.215225}, + {99.970085, 15.786712}, + {102.188278, 17.926441}, + {112.78883, -7.600046}, + {100.348045, 13.687959}, + {-71.264679, -29.967665}, + {-52.212624, -31.732147}, + {126.583843, 37.002284}, + {-95.633593, 29.876718}, + {121.539239, 24.994454}, + {110.841713, -7.559171}, + {104.794048, -2.96957}, + {44.048401, 56.234776}, + {-42.538097, -22.931841}, + {100.492228, 14.211616}, + {128.575073, 38.207361}, + {103.249306, 17.214537}, + {37.595033, 55.743724}, + {128.611286, 35.8976}, + {107.152698, -6.82064}, + {103.555227, -3.774778}, + {103.347298, 3.832591}, + {103.069, 15.997134}, + {127.14682, 37.537651}, + {107.576466, -6.442647}, + {101.597584, 15.369982}, + {102.800262, 14.736043}, + {-48.488111, -1.416427}, + {-99.164658, 19.370783}, + {106.147369, -6.127685}, + {-41.757999, -22.34618}, + {-0.315269, 39.608901}, + {101.690643, 6.263334}, + {39.205612, 51.680008}, + {128.534058, 35.856892}, + {-48.792847, -26.321569}, + {33.007744, 45.316666}, + {-56.076359, -15.625917}, + {99.862896, 12.165671}, + {115.30098, -8.494317}, + {100.927551, 13.283276}, + {101.211067, 13.707516}, + {113.322998, -7.804466}, + {30.407122, 50.401894}, + {126.796322, 37.476586}, + {10.169653, 45.528828}, + {-48.620238, -27.593429}, + {-3.533973, 40.505978}, + {103.772217, 1.390152}, + {127.820038, 37.302475}, + {101.01084, 12.935324}, + {-77.782578, 35.290363}, + {112.720078, -7.377233}, + {100.458099, 13.88164}, + {114.213852, 22.322697}, + {-38.468498, -12.930882}, + {35.944057, 31.988564}, + {75.193024, 12.100333}, + {37.431721, 55.685944}, + {101.467758, 13.713037}, + {105.232552, 14.54205}, + {106.888298, -6.362102}, + {127.125427, 35.935398}, + {106.452919, -6.289621}, + {108.192426, -7.264037}, + {-51.061107, 0.03134}, + {100.749069, 4.855136}, + {103.362717, 3.940875}, + {-44.399044, -22.456116}, + {103.646889, 16.044367}, + {101.578719, 6.354013}, + {35.847828, 32.020527}, + {38.141041, 56.32766}, + {-106.138062, 28.750195}, + {28.27535, -15.360197}, + {4.790609, 44.0151}, + {-98.886252, 19.481581}, + {-47.511675, -23.503706}, + {31.809189, 46.973362}, + {-43.234055, -22.922777}, + {100.262061, 16.847}, + {-49.85953, -22.954329}, + {-7.222337, 33.782599}, + {100.556129, 13.771942}, + {100.921082, 12.940421}, + {100.395183, 5.353496}, + {44.712706, 43.031892}, + {-34.969269, -8.074031}, + {-43.053192, -22.81485}, + {104.70888, 15.482476}, + {126.652078, 37.419133}, + {113.045652, 3.169937}, + {102.286217, 15.122252}, + {-47.626255, -1.128052}, + {38.232368, 37.733776}, + {-38.52835, -12.99706}, + {107.079966, -6.282869}, + {99.863977, 19.579136}, + {103.529991, 1.497537}, + {-56.732579, -2.63365}, + {-7.535044, 33.380022}, + {98.798498, 3.612344}, + {-46.667961, -23.485614}, + {100.382246, 6.885074}, + {99.166893, 19.732153}, + {100.888359, 14.664357}, + {-64.186867, -31.423836}, + {-36.331363, -5.110906}, + {-79.411644, 43.76629}, + {116.886716, -1.2388}, + {106.789277, -6.195019}, + {113.508173, 52.058966}, + {100.561559, 14.010129}, + {101.123741, 21.166057}, + {-96.167643, 39.066632}, + {100.712795, 13.604536}, + {102.62713, 17.906679}, + {106.563881, -6.170881}, + {-43.381721, -22.937124}, + {100.517952, 13.695247}, + {108.446037, -6.507303}, + {19.211312, 47.418968}, + {104.665886, 15.159899}, + {-0.016664, 51.475969}, + {-42.966755, -22.410809}, + {-43.21811, -22.984251}, + {-46.680406, -23.495971}, + {100.388081, 6.13955}, + {35.938156, 31.984261}, + {-43.868725, -19.883066}, + {100.9084, 13.573585}, + {78.545928, 17.404075}, + {128.572311, 35.225639}, + {51.149604, 43.731707}, + {-80.990921, 36.212179}, + {99.51811, 17.352501}, + {11.82219, 48.898285}, + {20.977514, 52.214983}, + {-46.514668, -23.587963}, + {-44.098259, -22.705006}, + {-50.804516, -29.58847}, + {2.558512, 48.877579}, + {-43.605839, -22.916177}, + {129.058217, 35.183325}, + {14.452073, 50.138077}, + {-90.403763, 14.522228}, + {126.35495, 33.353825}, + {28.980235, 41.055443}, + {-46.69398, -23.473905}, + {-47.412552, -22.553871}, + {104.411657, 17.688185}, + {120.985379, 24.807636}, + {-49.232684, -16.672376}, + {100.896311, 13.521975}, + {49.543212, 53.500934}, + {-54.571293, -20.474506}, + {-62.623482, 8.318825}, + {-46.604056, -23.601122}, + {128.628557, 35.877778}, + {103.473564, 14.953516}, + {37.553749, 55.431976}, + {128.613087, 36.809636}, + {-48.833738, -26.324931}, + {-56.744804, -2.633312}, + {-77.021444, -12.111083}, + {-38.520302, -3.809251}, + {110.375221, -8.024101}, + {98.805382, 3.590427}, + {103.391762, 15.346097}, + {110.481949, -7.76169}, + {-47.5016, -23.504995}, + {101.75219, 2.933808}, + {100.930344, 14.360638}, + {-54.959503, -25.091627}, + {121.509204, 25.051044}, + {-47.034003, -22.839869}, + {106.925103, -6.189631}, + {105.318047, -5.118592}, + {120.962882, 24.803621}, + {-73.983328, 40.747001}, + {106.778748, -6.213466}, + {-38.495041, -3.730941}, + {102.519219, 13.677049}, + {107.138091, -6.29464}, + {-43.972485, -19.802519}, + {8.636973, 50.112804}, + {25.0011, 43.44115}, + {-36.404769, -5.50849}, + {-89.729759, 14.427865}, + {14.539718, 50.075855}, + {-51.228106, -30.033231}, + {126.979905, 35.957004}, + {2.678357, 39.582705}, + {-48.547287, -10.681323}, + {-87.151413, 41.592496}, + {100.745791, 13.784042}, + {-44.248223, -19.1999}, + {-35.007163, -7.559619}, + {-48.342996, -18.941937}, + {12.544558, 42.057632}, + {15.183072, 59.280672}, + {127.306862, 37.449113}, + {22.735006, 38.006535}, + {-38.599259, -3.82306}, + {35.867271, 32.568539}, + {18.161012, 57.412442}, + {-76.523993, -8.186418}, + {119.879908, -8.498003}, + {-55.728679, -22.539856}, + {101.021472, 15.832743}, + {102.767639, 17.392979}, + {-43.33503, -22.716038}, + {-57.55555, -25.376719}, + {79.098946, 21.132624}, + {-80.410049, 25.708257}, + {98.368061, 7.891013}, + {9.197096, 45.487492}, + {100.55204, 13.805179}, + {-85.964546, 41.658962}, + {-59.878897, -3.044022}, + {129.101447, 35.133624}, + {-43.369597, -22.850312}, + {-43.220884, -22.907432}, + {-48.479195, -1.412045}, + {128.591736, 35.867844}, + {-46.599827, -23.663016}, + {128.681994, 37.269147}, + {127.001907, 37.272635}, + {100.561637, 14.432294}, + {-47.606709, -22.715666}, + {100.821938, 13.599069}, + {101.058456, 13.45917}, + {43.5864, 43.548842}, + {106.842903, -6.522639}, + {-51.146766, -30.047557}, + {98.660229, 3.58474}, + {129.085899, 35.214607}, + {-42.323074, -22.871784}, + {35.843845, 32.555363}, + {55.609482, 25.13252}, + {-43.215941, -22.895347}, + {-70.745392, 7.079201}, + {-48.492763, -1.46471}, + {-45.475844, -22.944561}, + {112.607758, -7.675928}, + {107.028567, -6.231999}, + {30.620405, 38.676659}, + {106.773461, -6.652478}, + {8.60975, 50.103565}, + {126.796922, 35.146847}, + {-46.529903, -23.650534}, + {-51.452961, -25.360184}, + {-46.747864, -23.59968}, + {9.959058, 57.02457}, + {-46.565843, -23.583731}, + {-38.570614, -3.769945}, + {-44.234656, -2.607505}, + {46.715672, 24.807951}, + {-99.145058, 19.314644}, + {177.432434, -17.801153}, + {127.194127, 35.82797}, + {117.13977, -0.501601}, + {103.687126, 1.509473}, + {-45.403217, -23.802698}, + {128.56761, 35.865971}, + {-38.398462, -12.908293}, + {30.565321, 50.422948}, + {-50.640748, -25.461304}, + {46.753191, 24.644891}, + {28.152042, 37.367575}, + {-43.998123, -19.983574}, + {-74.808128, 10.960755}, + {-95.51413, 29.72909}, + {103.822516, 1.280987}, + {127.096969, 37.005308}, + {106.41993, -6.295101}, + {126.965027, 36.893253}, + {106.991399, -6.263669}, + {61.474219, 55.121691}, + {126.477853, 34.752729}, + {99.125642, 10.458389}, + {99.528587, 7.592092}, + {100.081398, 13.813616}, + {128.190628, 37.176865}, + {99.551559, 13.983186}, + {-105.99398, 28.669472}, + {31.238491, 29.970358}, + {34.908447, 32.002464}, + {29.190613, 53.126306}, + {-48.457251, -10.196568}, + {-46.336231, -23.518421}, + {37.682259, 55.710835}, + {128.744507, 37.935715}, + {100.647758, 13.784259}, + {-40.5364, -19.014902}, + {109.841202, -7.722695}, + {99.775566, 13.568493}, + {12.821104, 48.196824}, + {8.800524, 50.138177}, + {16.381598, 48.184755}, + {10.755431, 50.979345}, + {9.814312, 48.501254}, + {10.882649, 48.426242}, + {10.939817, 47.897343}, + {10.032958, 48.457073}, + {112.907944, 0.688133}, + {-43.715323, -22.636141}, + {127.392058, 36.352241}, + {107.615868, -6.901862}, + {12.013785, 45.311381}, + {114.23011, 22.423191}, + {37.581959, 55.778122}, + {121.265337, 25.065956}, + {126.839701, 37.619307}, + {-90.539203, 14.581341}, + {129.004456, 35.10625}, + {100.427544, 5.011458}, + {-96.366673, 19.403996}, + {120.793548, 24.481889}, + {27.901028, 53.899544}, + {100.999056, 13.082845}, + {100.333283, 13.747979}, + {105.898537, 18.356719}, + {-59.990448, -3.013736}, + {99.469073, 11.03548}, + {110.426518, -7.064485}, + {-96.366376, 19.40368}, + {114.005702, -7.702149}, + {-70.530113, 19.390554}, + {32.496521, 37.964146}, + {101.163172, 12.755387}, + {107.479538, -6.925078}, + {99.404373, 8.343916}, + {101.398254, 13.33853}, + {44.340424, 40.250353}, + {127.204773, 37.540165}, + {-87.80735, 43.746731}, + {113.213928, -7.766985}, + {-89.609711, 14.01835}, + {99.842514, 9.219749}, + {106.066937, -6.002645}, + {102.119189, 12.580427}, + {126.913381, 37.580369}, + {100.219125, 14.778908}, + {128.64398, 35.231203}, + {-51.196027, -30.029017}, + {100.506714, 16.349438}, + {-81.750563, 30.373578}, + {99.724444, 16.651124}, + {128.53952, 35.819759}, + {-38.488472, -3.756484}, + {107.616106, -6.970181}, + {121.027771, 24.783524}, + {110.160472, -6.992368}, + {100.440077, 13.985563}, + {77.929085, 10.33202}, + {127.45964, 37.184606}, + {-65.933838, -17.590876}, + {100.059104, 6.53895}, + {-99.080296, 19.663367}, + {106.201653, 15.187797}, + {99.766296, 14.203149}, + {-72.697685, -16.616125}, + {100.919991, 14.51663}, + {128.214087, 36.348383}, + {128.023328, 35.683437}, + {116.146976, 6.025145}, + {120.288313, 23.102334}, + {107.227905, -6.356061}, + {2.182965, 41.37569}, + {3.911717, 47.853551}, + {127.09266, 36.995524}, + {106.036323, -5.999559}, + {106.486053, -6.268662}, + {-97.597023, 35.400581}, + {40.683552, -14.572131}, + {127.424666, 35.441743}, + {110.517847, -7.407899}, + {99.676025, 15.246853}, + {105.298564, 14.689784}, + {109.311828, -0.03809}, + {102.398115, 14.550891}, + {8.974505, 44.409138}, + {100.678978, 4.210363}, + {-43.357367, -21.745658}, + {110.360207, -7.724941}, + {100.579483, 0.965174}, + {100.54557, 13.78166}, + {100.695396, 13.661696}, + {15.82643, 45.871226}, + {22.455572, -34.012074}, + {126.735908, 37.819079}, + {99.736898, 19.655736}, + {-98.824371, 19.546633}, + {99.725824, 8.162328}, + {126.995445, 37.534603}, + {43.332064, 54.329998}, + {100.569405, 13.731298}, + {103.647682, 16.051031}, + {100.617744, 13.648493}, + {77.639977, 13.025655}, + {84.929213, 53.70359}, + {100.498154, 6.998987}, + {-46.562965, -23.587629}, + {100.959904, 13.092046}, + {129.108398, 35.116352}, + {120.508816, -5.813596}, + {127.506233, 36.605643}, + {77.505508, 13.04567}, + {126.919927, 35.165148}, + {110.646873, -7.608644}, + {103.879596, 1.350286}, + {101.095146, 12.854879}, + {30.49491, 59.910754}, + {100.083527, 13.817778}, + {128.661355, 35.242956}, + {-47.934696, -18.154713}, + {100.936089, 13.276573}, + {7.535545, 48.230831}, + {126.531355, 35.941446}, + {103.364786, 3.888489}, + {106.851784, -6.658709}, + {101.377238, 0.464595}, + {106.143507, -6.088087}, + {116.11869, -8.563788}, + {104.810091, 15.272641}, + {32.54073, 0.344944}, + {121.454346, 25.023926}, + {38.1087, 54.786816}, + {28.903547, 46.978479}, + {100.485164, 7.020059}, + {-103.485184, 25.570871}, + {61.079291, 55.315558}, + {110.079399, -7.260821}, + {99.253402, 16.902921}, + {127.11002, 37.325863}, + {-46.642861, -23.485218}, + {-63.190075, -15.881183}, + {-45.211735, -21.464745}, + {-48.464589, -1.352665}, + {-38.491582, -12.943824}, + {-43.273098, -22.850726}, + {102.555428, 17.958776}, + {-43.331371, -22.872826}, + {106.81282, -6.303979}, + {101.242287, 6.547062}, + {-46.462795, -23.504047}, + {102.635938, 17.974975}, + {-46.778327, -23.558227}, + {100.487681, 13.696389}, + {74.843506, 12.862256}, + {100.550236, 13.76251}, + {100.50975, 13.756443}, + {-43.212913, -16.275232}, + {103.820564, 1.608927}, + {112.027306, -7.951261}, + {99.321682, 7.76979}, + {104.590294, 16.144991}, + {20.337224, 53.029222}, + {82.991257, 25.309721}, + {-44.101139, -22.524214}, + {120.970901, 14.22562}, + {36.800143, 55.872907}, + {100.273857, 13.664935}, + {100.508617, 13.865397}, + {105.850327, 15.119021}, + {127.642789, 37.113489}, + {100.995234, 13.107691}, + {47.989834, 29.270287}, + {20.299711, 44.90303}, + {-51.207853, -30.006372}, + {101.076065, 16.321665}, + {124.847824, 1.470483}, + {-66.620125, 17.99943}, + {127.027863, 37.625664}, + {-46.797291, -23.518127}, + {135.641815, 34.739124}, + {135.496172, -3.364985}, + {126.93505, 36.821943}, + {108.558141, -6.746085}, + {104.32859, 17.562788}, + {100.891632, 12.958808}, + {106.828255, -6.624396}, + {103.803406, 15.609848}, + {-44.022358, -19.89695}, + {122.477684, -4.040581}, + {-45.960548, -23.299135}, + {39.197296, 38.663025}, + {113.26418, -7.172943}, + {126.394911, 33.408349}, + {112.629364, -7.476089}, + {100.562575, 13.742475}, + {128.791611, 36.122406}, + {77.035264, 52.139019}, + {-49.046277, -26.483656}, + {-45.412575, -23.756325}, + {100.265291, 16.816236}, + {106.854095, -6.366486}, + {5.482941, 43.512754}, + {99.779424, 15.4359}, + {99.300041, 11.01258}, + {112.562854, -7.271918}, + {127.5444, 35.877792}, + {103.417503, 4.248384}, + {34.819523, 31.887482}, + {49.592676, 37.26846}, + {128.300934, 37.202152}, + {129.083065, 35.182443}, + {126.839654, 36.995205}, + {-68.317272, -31.673675}, + {100.530525, 13.905388}, + {104.850754, 15.61861}, + {100.412827, 20.280472}, + {48.395569, 54.313854}, + {99.841267, 7.312391}, + {-49.2628, -25.479769}, + {-48.467636, -1.403338}, + {-66.8022, 10.468343}, + {-46.623901, -23.462797}, + {99.297646, 8.055119}, + {10.307871, 36.748737}, + {99.959602, 12.727064}, + {103.146408, 5.261057}, + {-77.094879, -12.01319}, + {-6.137359, 53.245157}, + {101.290192, 13.630158}, + {116.13884, 6.018317}, + {101.137411, 12.983024}, + {-43.559231, -22.725683}, + {41.462946, 52.685567}, + {-38.319977, -12.928716}, + {32.706738, 39.809307}, + {100.253807, 6.534912}, + {100.519096, 13.921876}, + {105.996864, -5.936172}, + {21.465237, 41.99099}, + {-59.935394, -3.020424}, + {101.723213, 17.476362}, + {50.107458, 53.197454}, + {-1.116936, 53.342362}, + {100.788658, 18.806286}, + {9.114825, 47.789507}, + {8.617218, 49.81487}, + {8.6577, 48.14427}, + {9.93356, 51.535514}, + {10.931662, 49.256532}, + {23.784324, -26.1343}, + {11.454725, 49.33218}, + {44.546684, 48.739052}, + {103.873821, 17.551639}, + {-21.942263, 64.139093}, + {114.170441, 22.315372}, + {-34.943256, -8.048946}, + {31.009646, 30.551509}, + {93.703079, 25.906403}, + {-43.180071, -22.904833}, + {37.571735, 55.837555}, + {-46.40224, -23.53478}, + {139.33577, 35.69128}, + {-43.179504, -22.899426}, + {-43.327797, -22.746142}, + {-43.702325, -22.744831}, + {106.896202, -6.123248}, + {-51.180832, -30.029406}, + {16.538011, 45.997549}, + {-71.984226, -13.513989}, + {77.348053, 28.534101}, + {-44.052062, -12.973678}, + {36.792213, -1.238898}, + {-48.609257, -1.511955}, + {-56.140907, -15.610842}, + {-87.946754, 15.471708}, + {99.894214, 8.077314}, + {-43.985847, -20.060265}, + {101.832153, 14.074}, + {-92.095909, 14.879659}, + {-84.466998, 33.891108}, + {100.642433, 13.824733}, + {-56.518033, -33.37386}, + {-0.219707, 51.553066}, + {-62.249729, -10.716037}, + {-0.131553, 51.525333}, + {-3.362277, 50.901269}, + {23.966765, 54.872406}, + {-48.040302, -15.854088}, + {-43.458065, -23.006533}, + {-46.705784, -23.716127}, + {37.329251, 55.80094}, + {36.265064, 54.531258}, + {126.794907, 34.587631}, + {-35.011701, -7.940503}, + {-80.679589, -5.269484}, + {99.505905, 16.335836}, + {100.748962, 13.93561}, + {124.83672, 1.477628}, + {102.628061, 16.739069}, + {37.340553, 37.072899}, + {-72.726204, 41.727254}, + {65.645505, 57.174603}, + {-68.154967, -16.537374}, + {71.285522, 42.793418}, + {-60.045746, -3.077862}, + {37.345012, 37.081757}, + {102.438584, 15.801597}, + {-38.358223, -12.845873}, + {106.972778, -6.176408}, + {-79.863153, 40.44788}, + {-78.12245, 0.345557}, + {127.977776, 37.413158}, + {100.880398, 3.774507}, + {100.549632, 13.733908}, + {120.418297, 23.424213}, + {107.34092, -6.296859}, + {112.774662, -7.312728}, + {14.83737, 40.965015}, + {-34.897876, -8.007009}, + {-53.241617, -29.641627}, + {-97.588116, 30.46655}, + {-44.020609, -19.783264}, + {129.068412, 35.15304}, + {8.930534, 45.975388}, + {-111.909035, 40.621014}, + {-59.992855, -3.017392}, + {127.139961, 36.889454}, + {127.070326, 37.059431}, + {14.487636, 35.924135}, + {-47.784479, -21.175607}, + {-46.936424, -23.549145}, + {-35.197105, -5.863325}, + {56.104872, 25.426184}, + {36.312009, 49.984158}, + {-51.941714, -23.450009}, + {-34.823503, -7.916338}, + {-48.913653, -23.096081}, + {34.994232, 32.121178}, + {-87.21019, 13.295661}, + {110.126147, -0.051464}, + {-70.714454, -33.469542}, + {100.978874, 14.64522}, + {6.480808, 50.801111}, + {100.204292, 16.787865}, + {-44.232449, -2.516405}, + {37.706861, 55.778122}, + {128.701955, 37.669814}, + {16.572847, 38.785404}, + {76.999792, 11.064809}, + {-7.497715, 41.936165}, + {-51.162219, -15.245442}, + {103.557248, 16.419739}, + {-45.882435, -23.225776}, + {35.886627, 31.965471}, + {-67.028363, -17.977964}, + {35.922396, 31.866653}, + {-94.359245, 44.911903}, + {127.717697, 37.872175}, + {71.33812, 42.842686}, + {60.569273, 56.974041}, + {105.827534, -6.373584}, + {-51.105302, -29.955914}, + {104.72606, 16.958029}, + {128.413162, 34.955125}, + {-43.90961, -19.91434}, + {-54.669376, -20.481722}, + {127.312756, 36.953087}, + {100.48154, 6.979264}, + {-57.958221, -34.913292}, + {-41.330395, -21.755423}, + {-79.850512, -6.769246}, + {99.99372, 13.990877}, + {100.69471, 13.987775}, + {6.618054, 51.368912}, + {-43.169951, -22.509462}, + {-46.487003, -23.483976}, + {-87.182388, 14.060464}, + {101.418765, 0.438234}, + {103.904922, 1.31952}, + {-42.991466, -22.55557}, + {-44.090691, -22.504105}, + {67.06311, 24.884979}, + {-43.354744, -22.923731}, + {-49.256542, -16.651518}, + {29.080719, 41.05064}, + {-73.582297, 45.488726}, + {100.106445, 13.599306}, + {-47.117942, -22.891326}, + {-35.699184, -9.65237}, + {-43.326138, -22.813295}, + {-43.206537, -22.981804}, + {99.295708, 8.904795}, + {127.155315, 35.827707}, + {47.677796, 29.351475}, + {-44.201838, -2.537115}, + {29.029623, 41.02453}, + {138.625206, -34.91276}, + {23.592396, 52.736874}, + {100.740184, 16.009485}, + {102.774033, 16.25555}, + {100.385643, 14.321275}, + {99.237983, 8.006158}, + {-41.960302, -18.841008}, + {-45.854481, -23.741976}, + {100.614379, 13.804099}, + {174.695237, -36.754969}, + {-115.178925, 36.073994}, + {100.103162, 13.590126}, + {-56.096607, -15.64412}, + {69.440033, 53.266922}, + {105.346489, -4.956217}, + {129.403836, 36.009988}, + {-58.425379, -34.579115}, + {114.209602, 22.389706}, + {31.268099, 30.095764}, + {-48.482786, -1.451135}, + {120.25291, 23.185197}, + {102.12561, 14.990098}, + {59.588777, 36.301252}, + {-43.822235, -22.67597}, + {-2.566561, 51.535007}, + {-48.908466, -27.091995}, + {120.323401, 22.640876}, + {15.090752, 50.796589}, + {-100.980965, 25.532507}, + {77.098694, 28.428558}, + {-92.096989, 14.794531}, + {126.839226, 37.53285}, + {-71.146523, 42.361874}, + {127.196208, 37.891806}, + {100.900757, 13.055704}, + {111.945678, -7.68993}, + {-51.172977, -23.290733}, + {114.136688, 22.329691}, + {-43.36071, -22.946023}, + {-100.40078, 20.636686}, + {107.066696, -6.272413}, + {101.662621, 2.941027}, + {106.616609, -6.139661}, + {72.831276, 18.997057}, + {-87.138084, 13.312197}, + {106.112701, -2.113509}, + {108.571278, -6.978749}, + {73.022835, 19.194641}, + {106.922028, -6.326803}, + {-54.559488, -25.969271}, + {100.343506, 13.610546}, + {-56.057985, -15.567268}, + {-0.153741, 51.516964}, + {9.21094, 45.486548}, + {103.927997, 1.308685}, + {-41.309551, -21.70582}, + {139.792191, 35.816435}, + {-47.471477, -23.426752}, + {-46.807281, -23.50099}, + {-67.151726, 18.424246}, + {101.147069, 13.33033}, + {26.045225, 52.134838}, + {1.196835, 49.393203}, + {8.828576, 47.828581}, + {9.678884, 48.692357}, + {12.690558, 48.184708}, + {9.222677, 48.55796}, + {9.5041, 42.454054}, + {-46.519913, -23.552155}, + {-47.778917, -15.894957}, + {-46.433709, -23.495095}, + {-44.889841, -20.146502}, + {-38.467578, -4.177734}, + {39.036705, 22.740112}, + {104.505749, 14.919489}, + {107.406563, -6.641449}, + {-49.000429, -28.478898}, + {129.324799, 35.55077}, + {-49.273752, -16.711541}, + {-46.822695, -23.540844}, + {127.059445, 36.924582}, + {-46.64143, -23.568386}, + {-38.507359, -3.843471}, + {30.525487, 50.463902}, + {-43.303821, -22.729029}, + {-48.497676, -1.470992}, + {106.83416, -6.432287}, + {100.525474, 13.791752}, + {99.342211, 3.317516}, + {-71.54126, -16.36104}, + {101.052292, 13.05691}, + {101.397347, 0.565795}, + {126.762089, 35.151205}, + {106.904282, -6.342354}, + {107.010821, -6.273201}, + {-41.789915, -22.397659}, + {100.727728, 4.831966}, + {120.476982, 24.049763}, + {-48.328574, -10.184835}, + {72.846565, 19.035601}, + {-46.639912, -23.544563}, + {101.702039, 3.099431}, + {-55.848206, -27.359655}, + {103.883113, 15.844482}, + {-47.40601, -23.497856}, + {-75.572624, 6.249742}, + {-43.412827, -22.999793}, + {102.466911, 15.948756}, + {128.465198, 35.078471}, + {127.951404, 37.013479}, + {103.639839, 1.52306}, + {-86.330994, 33.833569}, + {-51.179836, -30.074882}, + {-46.030338, -23.802172}, + {-68.531091, -31.512259}, + {-49.967611, -20.418258}, + {126.276606, 33.266009}, + {-46.642326, -23.531099}, + {101.090029, 13.470178}, + {-73.690735, 42.571266}, + {103.085891, 5.100144}, + {100.559326, 14.001406}, + {103.089791, 5.40121}, + {99.283605, 8.901006}, + {100.608642, 13.670154}, + {-70.322658, -27.37412}, + {-43.957147, -19.85932}, + {109.169986, -6.926979}, + {-48.654095, -27.6724}, + {-45.88612, -23.201519}, + {121.529414, 25.053133}, + {2.533553, 48.938332}, + {-39.078808, -16.43933}, + {99.964931, 13.541768}, + {35.920235, 31.942616}, + {-35.548292, -8.694351}, + {128.639389, 35.839485}, + {-87.642223, 14.435815}, + {-46.371777, -23.970676}, + {-70.272348, 19.309598}, + {-40.334953, -20.355015}, + {-117.115318, 32.91734}, + {-113.792088, 52.302483}, + {100.005028, 8.24375}, + {20.945915, 49.977364}, + {-100.480279, 25.685243}, + {-38.5077, -3.782765}, + {-46.804525, -23.641347}, + {112.228469, -7.53419}, + {-46.5744, -23.490402}, + {100.990564, 12.692289}, + {-38.489834, -3.832509}, + {-47.413067, -23.423628}, + {-95.235977, 16.328804}, + {-91.46815, 15.313987}, + {-47.065252, -18.904029}, + {120.665825, 15.0529}, + {-46.37785, -23.497278}, + {127.241267, 37.660241}, + {103.357697, 3.895169}, + {-49.624359, -27.049355}, + {-35.739494, -9.629843}, + {99.398972, 9.163359}, + {126.600498, 37.452043}, + {34.838917, -19.836065}, + {-51.917824, -23.428853}, + {127.288848, 38.174992}, + {38.11087, 45.283516}, + {-73.767359, 42.647524}, + {39.910986, 59.22691}, + {-1.739129, 39.180607}, + {-122.683807, 45.470615}, + {-46.538887, -23.541847}, + {109.005386, -6.865313}, + {119.532753, -5.106968}, + {-44.284534, -2.541836}, + {-43.952469, -19.642162}, + {-48.411956, -1.363494}, + {105.176462, 17.581901}, + {99.085464, 18.52302}, + {121.024193, 14.600217}, + {-43.166229, -22.912348}, + {-41.959459, -18.840014}, + {-44.302006, -22.986418}, + {-58.469879, -34.626133}, + {-49.084263, -26.892229}, + {30.172316, 59.832642}, + {-1.15016, 53.051729}, + {-48.448437, -1.418986}, + {-74.429719, 9.250784}, + {99.345489, 8.396684}, + {-43.976692, -19.922075}, + {106.833618, -6.433461}, + {-47.987573, -16.098419}, + {-42.805795, -5.092652}, + {-43.363684, -22.80612}, + {100.564863, -0.512991}, + {100.54229, 14.021742}, + {110.692688, -6.92626}, + {-99.142162, 19.432261}, + {108.366592, -6.381342}, + {-99.110512, 19.378765}, + {-49.212966, -16.665958}, + {103.600002, 16.004282}, + {100.610949, 13.692801}, + {-51.381596, 0.694008}, + {-43.61038, -22.889231}, + {127.67408, 37.829102}, + {106.935562, -6.248624}, + {99.121574, 7.804248}, + {18.168226, 54.615614}, + {-58.180737, -26.133844}, + {-116.241131, 43.625845}, + {141.774037, 40.194556}, + {35.721294, 31.133446}, + {-43.945568, -19.924044}, + {-56.130257, -15.603213}, + {-43.36195, -22.771158}, + {-81.552497, 41.568463}, + {98.40387, 7.904477}, + {107.029572, -6.351335}, + {52.983801, 67.638821}, + {26.056011, 52.125294}, + {-81.974297, 28.824209}, + {100.11274, 15.685526}, + {30.544807, 50.418293}, + {129.184784, 35.546463}, + {-88.954267, 15.31708}, + {-52.113113, -21.758823}, + {12.658394, 41.459698}, + {-51.815151, -30.852664}, + {-43.363867, -22.980409}, + {114.188202, 22.322751}, + {-46.671739, -23.52033}, + {-69.844589, 18.588072}, + {3.131056, 41.852921}, + {-45.17976, -22.784203}, + {127.136421, 37.534519}, + {-35.22101, -5.813747}, + {128.550904, 35.827782}, + {-58.621256, -18.82338}, + {-56.444698, -14.849251}, + {126.551312, 35.217506}, + {112.690161, -7.356839}, + {-5.908273, 34.99868}, + {100.364983, -0.948553}, + {112.780909, -7.24049}, + {100.548775, 13.918497}, + {121.500969, 25.077412}, + {25.629512, 42.430444}, + {-38.513539, -3.740547}, + {-51.738209, -17.887997}, + {100.436317, 13.664908}, + {102.8349, 14.746063}, + {103.209644, 16.927134}, + {13.056762, 54.338188}, + {101.52356, 15.788402}, + {126.470747, 33.484899}, + {133.85611, 34.312164}, + {112.648727, -8.101097}, + {108.812141, -7.522948}, + {8.165143, 48.781695}, + {6.451967, 51.162664}, + {1.259274, 45.832278}, + {6.96171, 50.943091}, + {10.656951, 49.190779}, + {-46.386432, -23.589412}, + {27.221905, 61.689601}, + {106.875458, -6.165034}, + {-52.170219, -3.175561}, + {127.136386, 37.277233}, + {102.257652, -3.801311}, + {17.330399, 50.468156}, + {-63.118721, -17.784773}, + {7.496964, 50.57644}, + {-75.515311, 6.350018}, + {-47.749917, -20.051662}, + {100.228206, 13.747691}, + {105.039816, 14.903155}, + {-50.178196, -20.317635}, + {104.852211, 15.256851}, + {114.637886, -3.358598}, + {-96.800179, 32.771534}, + {101.276573, 6.443978}, + {127.425748, 35.786676}, + {101.155876, 12.838654}, + {-46.519733, -23.470387}, + {121.451706, 25.102331}, + {-79.051264, -8.053551}, + {101.232719, 16.735722}, + {100.49704, 13.743295}, + {-42.799281, -5.018515}, + {-38.4151, -12.972659}, + {102.894848, 16.977351}, + {102.319725, -3.838213}, + {103.636597, 1.392623}, + {99.110512, 10.512502}, + {-54.588703, -20.456608}, + {-87.800316, 15.365652}, + {128.621917, 34.884903}, + {102.541396, 18.420072}, + {98.957214, 18.786942}, + {126.909424, 37.615027}, + {19.406369, 41.881306}, + {-46.848076, -23.505005}, + {-45.522751, -20.032291}, + {103.84922, 1.324024}, + {59.524647, 36.29855}, + {101.008137, 13.148171}, + {2.967035, 36.749854}, + {-90.538162, 14.661527}, + {-95.252987, 16.318795}, + {-122.445915, 37.761909}, + {34.977736, 48.458663}, + {99.542488, 8.38257}, + {-59.998753, -3.095226}, + {106.82087, -6.622622}, + {47.739239, 37.406001}, + {-49.152744, -23.026296}, + {24.027614, 35.516512}, + {-46.65646, -23.620014}, + {-3.234458, 40.590212}, + {-46.585097, -23.521278}, + {6.638479, 51.664604}, + {-49.263687, -16.664891}, + {107.442413, -6.392863}, + {101.141039, 3.449172}, + {-90.564987, 14.679592}, + {100.960441, 13.202194}, + {104.09644, 1.128212}, + {57.335104, 37.465741}, + {-46.75634, -23.694963}, + {-46.608821, -23.563412}, + {-100.369931, 25.806142}, + {100.443361, 14.579422}, + {132.870224, 42.795975}, + {-94.790414, 37.027965}, + {135.056046, 34.647083}, + {99.863293, 12.653327}, + {100.956506, 13.32164}, + {30.266422, 60.032872}, + {-43.387897, -23.000364}, + {99.87896, 20.041115}, + {-69.907439, 18.505544}, + {-116.647591, 43.65818}, + {36.090912, 32.07264}, + {16.976286, 40.705814}, + {126.844368, 35.283268}, + {-43.253723, -22.84029}, + {-47.098313, -22.860314}, + {-45.559396, -23.03317}, + {-57.284698, -14.780519}, + {-53.445221, -22.302298}, + {105.709944, -5.783979}, + {106.938947, -6.253956}, + {105.318848, -5.11295}, + {101.629953, 6.67394}, + {37.570587, 55.920177}, + {-46.811515, -23.347669}, + {100.95285, 13.316043}, + {-87.940073, 15.164704}, + {-34.910409, -8.106448}, + {100.308443, 13.652343}, + {127.057785, 37.897211}, + {127.823639, 37.416863}, + {100.554854, 7.220268}, + {128.804011, 35.173737}, + {71.285538, 42.792961}, + {-74.226841, 4.709429}, + {-67.026939, 10.609383}, + {-51.200714, -30.039078}, + {128.565624, 35.876514}, + {110.811491, -7.589919}, + {-49.059811, -26.482126}, + {106.753502, -6.549637}, + {-46.661064, -23.755133}, + {107.700729, -6.915473}, + {-122.291142, 37.813624}, + {35.691881, 31.986565}, + {103.596356, 15.657107}, + {-46.376631, -23.546437}, + {-53.147762, -24.003729}, + {-78.801056, 42.907223}, + {30.412094, 60.007217}, + {99.798004, 11.812129}, + {-91.783859, 14.97412}, + {31.047665, -25.786383}, + {37.391026, 37.074276}, + {99.65966, 8.166164}, + {100.53471, 13.796969}, + {127.123222, 37.420586}, + {-73.639222, 45.442609}, + {127.192497, 37.523964}, + {113.720336, -8.178406}, + {100.487312, 14.221559}, + {39.224061, 21.514756}, + {-111.877541, 40.6241}, + {100.64167, 13.771183}, + {101.268501, 1.00051}, + {-43.335405, -22.800232}, + {-46.660058, -23.555567}, + {102.506683, 17.502956}, + {138.567667, 35.097703}, + {121.038696, 14.708043}, + {-58.216114, -34.772022}, + {-47.225647, -23.119246}, + {129.01073, 35.118961}, + {100.352448, 13.910857}, + {129.35171, 35.610036}, + {129.061364, 35.153513}, + {101.859919, 6.420389}, + {-42.023842, -22.868956}, + {100.420517, 6.425316}, + {127.17469, 35.828505}, + {-45.389858, -3.674922}, + {107.181099, -6.380081}, + {-46.531887, -23.530531}, + {-89.066256, 42.319909}, + {106.894663, 10.936034}, + {-35.014751, -8.088558}, + {126.59848, 35.964085}, + {-46.550746, -23.558827}, + {-43.923227, -19.943883}, + {-65.413452, -24.786736}, + {100.771271, 13.564922}, + {-46.661336, -23.598537}, + {-111.635314, 33.386075}, + {127.030136, 37.49509}, + {-49.282761, -25.444748}, + {30.249193, 60.032192}, + {104.009789, 1.140735}, + {-43.890053, -19.852581}, + {-43.201728, -22.527121}, + {-34.853127, -7.957504}, + {106.132362, -6.324166}, + {127.069471, 37.540619}, + {47.964783, 29.26684}, + {-39.677956, -13.262014}, + {-46.488049, -23.603327}, + {30.000702, 31.252729}, + {28.686783, 41.030937}, + {124.607178, 1.237591}, + {92.847107, 56.079895}, + {-46.278099, -23.958523}, + {12.178602, -5.570346}, + {108.334702, -6.316116}, + {-0.003344, 5.640276}, + {127.117629, 37.47814}, + {-86.002701, 13.092807}, + {-7.571431, 43.014038}, + {-79.864208, -6.783008}, + {8.979919, 39.178299}, + {106.686886, -6.337391}, + {7.379985, 53.08561}, + {8.692479, 48.565084}, + {6.403101, 51.251437}, + {122.563318, 10.719542}, + {106.860527, -6.338401}, + {-46.81242, -23.597235}, + {-81.695639, 41.417569}, + {-77.693804, 39.844227}, + {28.841734, 47.036491}, + {-51.057346, -29.996752}, + {99.616145, 7.277991}, + {-48.089778, -15.808863}, + {-47.308789, -23.058577}, + {30.231409, 55.160817}, + {110.463514, -6.986428}, + {106.992758, 10.967536}, + {-41.343178, -21.765501}, + {-115.173159, 36.111102}, + {76.310257, 10.004174}, + {51.660076, 32.627632}, + {121.74068, 25.13328}, + {-84.702, 12.221425}, + {35.780601, 31.920792}, + {-89.418243, 16.337589}, + {7.79617, 51.383168}, + {85.397728, 26.125671}, + {23.363279, 42.786097}, + {77.142349, 28.777952}, + {23.157372, 42.711311}, + {75.906967, 17.683144}, + {100.22195, 13.556371}, + {121.497566, 25.090662}, + {100.694791, 6.621909}, + {110.434364, -7.738912}, + {103.092415, 17.283676}, + {128.967667, 35.315804}, + {110.830681, -6.813303}, + {99.085239, 3.027789}, + {-43.190388, -22.937206}, + {119.012169, 5.161796}, + {-99.087681, 19.39926}, + {102.671165, 14.44265}, + {102.843956, 16.329107}, + {106.910261, -6.159297}, + {104.133584, 15.671994}, + {-48.042443, -15.86991}, + {121.466364, 25.085705}, + {-74.91816, 39.916938}, + {-60.737959, -32.695451}, + {117.584219, 3.306744}, + {106.067833, -6.70383}, + {-84.180736, 39.847256}, + {112.73494, -7.272732}, + {-84.128815, 39.865748}, + {9.732617, 4.04835}, + {-43.906792, -19.646442}, + {100.777099, 13.556911}, + {100.553345, 13.719565}, + {48.790665, 31.393978}, + {110.433537, -7.745946}, + {-99.239428, 19.578562}, + {-43.222858, -22.977745}, + {33.521624, 44.570848}, + {106.889622, 47.927442}, + {101.348531, 6.466552}, + {-87.804066, 15.410627}, + {-77.100834, -12.022032}, + {-49.243861, -25.481305}, + {-49.245808, -25.476868}, + {8.677752, 50.096966}, + {112.731777, -7.434343}, + {-49.315079, -25.67062}, + {-47.188591, -23.426977}, + {100.292686, 14.638883}, + {-102.334245, 21.24405}, + {-88.274902, 18.54631}, + {127.033897, 37.651325}, + {121.54639, 25.072449}, + {11.308423, 44.514648}, + {35.791544, 31.722264}, + {-46.73896, -23.526213}, + {98.556085, 3.598413}, + {111.741905, -0.338743}, + {115.667417, -3.678055}, + {124.839821, 1.485512}, + {102.617493, 16.463655}, + {-43.92905, -19.92789}, + {103.564639, -3.781723}, + {101.628098, 6.710392}, + {100.381566, 13.63007}, + {-37.963715, -7.737982}, + {-49.229923, -25.427595}, + {-117.101015, 33.127407}, + {99.513893, 19.243614}, + {111.779649, 0.841309}, + {106.831795, -6.204216}, + {59.020194, 53.421401}, + {-66.736066, 45.981269}, + {-93.28067, 44.972424}, + {-71.232056, -34.993633}, + {105.50124, 15.316861}, + {100.072129, 13.811695}, + {100.594148, 15.461193}, + {101.507614, 3.067451}, + {77.075691, 28.463845}, + {100.071907, 13.811412}, + {129.36657, 36.021454}, + {-43.705366, -22.606602}, + {110.464752, -7.053334}, + {99.083885, 8.33569}, + {51.431116, 35.605698}, + {-74.554092, -8.373108}, + {-42.811989, -5.071068}, + {99.251709, 8.010729}, + {-77.022796, -12.057083}, + {129.103538, 35.171175}, + {108.547491, -7.453703}, + {44.511635, 33.306261}, + {100.72506, 13.764857}, + {102.617598, 17.964173}, + {102.154678, 12.607998}, + {115.285057, -8.566377}, + {11.86725, 51.699595}, + {34.047714, 45.198284}, + {20.463698, 44.758978}, + {102.96479, 3.476802}, + {-46.67823, -21.842941}, + {127.087349, 36.991183}, + {102.94487, 2.045939}, + {-46.580641, -23.128694}, + {111.688156, -6.752373}, + {139.660614, 35.577831}, + {129.183023, 35.159142}, + {-49.069252, -25.451433}, + {-77.07226, -12.011527}, + {-60.02367, -3.093062}, + {110.772545, -7.776819}, + {121.50367, 25.088278}, + {-46.650458, -23.602312}, + {-95.605751, 30.036886}, + {100.530203, 13.720584}, + {-38.6231, -3.742763}, + {60.577812, 56.789783}, + {107.633781, -6.917431}, + {100.965492, 13.545118}, + {-73.330537, 9.566018}, + {-70.792557, 10.947293}, + {-43.172874, -22.907198}, + {106.806043, -6.191271}, + {110.454046, -7.020278}, + {106.846046, -6.209393}, + {100.963074, 13.342677}, + {99.427338, 18.225546}, + {-99.216561, 19.292963}, + {-43.205555, -22.984428}, + {106.826515, -6.148635}, + {9.317185, 45.58004}, + {-75.232651, -12.061617}, + {127.012537, 37.533085}, + {-43.34726, -23.000763}, + {72.643017, 23.058164}, + {-66.631004, 45.944155}, + {107.183136, -6.303001}, + {25.474417, 54.845791}, + {-44.014439, -19.988995}, + {106.673904, -6.248059}, + {101.066566, 13.399491}, + {-46.590227, -23.468536}, + {12.446253, 55.714598}, + {-43.445055, -22.991203}, + {101.823853, 6.409658}, + {-84.402237, 33.756287}, + {28.666021, 50.246014}, + {112.605522, -8.260055}, + {-35.302944, -5.705761}, + {101.147507, 16.435883}, + {100.093857, 13.790538}, + {-77.064181, -12.042606}, + {127.059837, 35.292706}, + {129.032486, 35.110027}, + {-48.584859, -27.588992}, + {30.185049, 55.195499}, + {120.349282, 22.634231}, + {-117.099675, 32.576859}, + {101.541031, 3.240651}, + {50.161082, 53.210684}, + {102.616722, 17.96393}, + {-43.188307, -22.955352}, + {127.75169, 36.799416}, + {76.542503, 9.255656}, + {106.910387, -6.423706}, + {5.546555, 45.177473}, + {14.871169, 47.067982}, + {-118.280098, 34.055096}, + {-4.145384, 50.370584}, + {18.632872, -33.886635}, + {-113.470889, 53.555074}, + {-79.378708, 43.653938}, + {4.724739, 43.946126}, + {112.584663, -8.153}, + {-46.691036, -23.599592}, + {-71.440392, -32.929611}, + {98.675985, 3.5361}, + {46.681568, 24.596376}, + {99.525475, 8.284028}, + {101.124237, 15.232753}, + {-16.677304, 13.478643}, + {-46.962609, -23.086285}, + {37.926884, 55.717083}, + {102.122766, 12.615402}, + {-79.500419, 9.075697}, + {174.493372, -36.7701}, + {99.992781, 16.936277}, + {126.726271, 37.516773}, + {-9.131877, 39.51403}, + {-97.328122, 20.438796}, + {127.91882, 37.337885}, + {111.500562, -7.848824}, + {101.477219, 6.679154}, + {-44.188183, -2.575408}, + {-48.122705, -15.804278}, + {-58.672705, -34.649977}, + {128.033554, 35.605556}, + {111.524122, -7.613755}, + {-76.961945, -12.174685}, + {46.684425, 24.754551}, + {101.832345, 6.4257}, + {-38.96648, -12.252328}, + {-77.005467, -12.104}, + {101.275788, 12.685546}, + {103.683853, 14.974629}, + {126.976845, 37.554192}, + {-43.958727, -19.923997}, + {107.107615, -6.279571}, + {107.909113, -7.270518}, + {6.774344, 43.427195}, + {76.488922, 9.602007}, + {127.775935, 36.00889}, + {-43.080305, -22.881329}, + {-43.465816, -22.743266}, + {-46.818571, -23.567681}, + {128.487786, 35.772536}, + {-44.721616, -23.22089}, + {114.107857, 22.345032}, + {100.706795, 13.81293}, + {104.783475, 17.427778}, + {72.796836, 21.163354}, + {-39.048619, -14.794486}, + {-47.868485, -20.713232}, + {128.721313, 35.865658}, + {8.887738, 52.165317}, + {100.271469, 16.806908}, + {-50.382204, -25.841311}, + {-43.581977, -22.16725}, + {38.042486, 53.894725}, + {106.739258, -6.219979}, + {-43.991982, -19.96501}, + {-38.470524, -13.006046}, + {106.90128, -6.211041}, + {127.489342, 37.253735}, + {35.867016, 31.957151}, + {101.624669, 13.903158}, + {-97.554123, 35.461559}, + {-49.296174, -25.258412}, + {-0.52595, 51.368175}, + {127.973462, 36.80436}, + {-84.428421, 34.1878}, + {107.625473, -6.997124}, + {-91.870654, 14.706007}, + {-45.96303, -23.260005}, + {50.075532, 53.16933}, + {99.885895, 14.342598}, + {114.209251, 22.325583}, + {100.514408, 13.615097}, + {48.019445, 29.328328}, + {99.572422, 16.295134}, + {-46.650387, -23.469885}, + {-42.035152, -20.257839}, + {100.587196, 13.932452}, + {-47.445198, -22.550634}, + {-0.073525, 51.49584}, + {-51.196186, -29.993561}, + {100.68296, 14.274795}, + {107.709579, -6.921689}, + {-74.790863, 10.964457}, + {106.984261, -6.308986}, + {-39.071589, -13.369835}, + {107.891072, -7.169067}, + {-100.014824, 25.272413}, + {-79.525391, 8.984999}, + {100.058285, 13.822279}, + {-49.051274, -21.309473}, + {-102.222072, 17.969}, + {-73.27478, 42.296989}, + {103.348801, 3.913189}, + {-73.039707, 41.955094}, + {126.936119, 37.518555}, + {103.561064, 14.832197}, + {-68.009186, 10.258639}, + {-49.802773, -23.708789}, + {-76.54584, 2.863385}, + {110.458669, 1.450205}, + {106.882057, -6.126548}, + {-101.887215, 21.317896}, + {126.759636, 37.559284}, + {129.705215, 61.986191}, + {102.911186, -3.26927}, + {-73.996295, 40.723904}, + {51.636349, 51.907791}, + {32.581816, 39.966145}, + {-73.987762, 40.700684}, + {-73.760101, 43.494446}, + {-95.443659, 30.314011}, + {106.774162, -6.440802}, + {110.953002, -7.157759}, + {101.790085, 2.958983}, + {99.940994, 13.051452}, + {100.274559, 19.655386}, + {44.68227, 43.273945}, + {73.045677, 49.879471}, + {100.922989, 12.825556}, + {-54.615997, -25.530092}, + {2.277947, 48.879688}, + {107.012421, -6.230109}, + {127.583388, 35.380119}, + {-98.981129, 19.382492}, + {100.421013, 5.485552}, + {110.965225, -7.604752}, + {-38.426946, -12.141158}, + {-49.231979, -16.676805}, + {-99.033973, 19.413706}, + {-43.057095, -22.908161}, + {-58.480652, -34.842182}, + {-1.157261, 45.783581}, + {106.166245, -2.633026}, + {101.251137, 12.663883}, + {-110.281921, 24.143452}, + {-46.531937, -23.466539}, + {-43.177537, -22.931797}, + {-58.396565, -34.819454}, + {25.633893, 45.656239}, + {-47.698292, -0.703959}, + {127.055135, 37.65452}, + {-64.475742, -32.183672}, + {100.190536, 14.193779}, + {100.650803, 15.598405}, + {-47.748417, -20.727818}, + {-34.880932, -7.126104}, + {-42.805241, -5.044909}, + {106.703602, -6.347233}, + {107.493774, -6.456188}, + {98.975071, 18.78825}, + {-51.221119, -30.026603}, + {103.754207, 16.654652}, + {-48.389702, -1.354411}, + {99.546796, 19.700011}, + {102.876831, -3.285658}, + {74.588249, 16.848433}, + {-51.959404, -23.421216}, + {99.917521, 13.793744}, + {28.131498, -26.146301}, + {-42.758314, -5.041853}, + {103.526222, 16.486923}, + {102.652504, 18.024651}, + {48.587749, 54.381294}, + {-86.873693, 21.132567}, + {11.271506, 45.185589}, + {-50.439468, -21.22155}, + {-46.618607, -23.602333}, + {114.170609, 22.311867}, + {31.15756, 29.991834}, + {-43.343166, -22.832215}, + {128.575769, 36.765722}, + {105.066258, -5.378558}, + {35.755295, 32.530804}, + {-63.900799, -8.772677}, + {52.270206, 52.778744}, + {37.716106, 55.894341}, + {129.092072, 35.26387}, + {101.804199, 2.849315}, + {-105.094849, 39.680916}, + {-91.815002, 30.048944}, + {-0.087252, 50.834961}, + {57.517654, -20.081843}, + {3.242517, 43.261765}, + {-96.809223, 32.855985}, + {106.763237, -6.169261}, + {106.957581, -6.219247}, + {-75.228525, 41.970639}, + {100.621693, 14.112171}, + {106.639829, -6.329188}, + {101.625243, 3.079711}, + {104.745338, -2.987324}, + {-47.079697, -22.817142}, + {-86.126899, 39.638904}, + {-35.89822, -9.739897}, + {-46.283634, -23.990875}, + {-34.948204, -8.082815}, + {-48.099173, -15.82791}, + {-70.142177, -20.224301}, + {101.007202, 15.862774}, + {-93.129013, 16.763073}, + {-51.145553, -30.030014}, + {7.676164, 8.987408}, + {120.979569, 24.79028}, + {104.717232, -2.984083}, + {121.369072, 25.073671}, + {114.213509, 22.324767}, + {-73.896929, 40.731823}, + {-73.97023, 40.768641}, + {110.485578, 1.458866}, + {15.325657, -4.318339}, + {106.85552, -6.356516}, + {128.703918, 36.965275}, + {-44.013098, -15.930172}, + {100.626485, 13.772095}, + {51.407536, 35.716133}, + {-75.739293, -14.060305}, + {113.782595, -7.75421}, + {100.434493, 13.767596}, + {-87.177498, 14.096219}, + {-40.245813, -15.25484}, + {-1.893898, 37.213402}, + {117.281443, 3.012171}, + {119.414803, -5.183616}, + {20.491077, 41.564136}, + {-73.850258, 7.056226}, + {100.319162, 5.403347}, + {127.539574, 37.877708}, + {9.130153, 39.198322}, + {109.513155, -7.607041}, + {40.414031, 56.132318}, + {-43.24247, -22.875334}, + {-89.891525, 16.913542}, + {100.965074, 13.846849}, + {100.47092, 14.580245}, + {-90.553004, 14.515491}, + {17.665888, 59.785172}, + {100.561475, 13.73715}, + {100.535767, 5.607959}, + {114.04808, 22.472771}, + {133.849393, 35.453153}, + {102.004189, 12.763772}, + {-47.644455, -15.604265}, + {-43.101254, -22.910658}, + {3.295622, 6.59171}, + {-98.451668, 19.147943}, + {128.313601, 37.932991}, + {-49.271946, -25.546309}, + {101.241031, 12.896242}, + {100.266922, 16.843496}, + {106.89109, -6.209672}, + {-46.889555, -23.565804}, + {-116.636299, 31.878546}, + {-59.955588, -3.035793}, + {103.785396, 1.536967}, + {-35.705009, -9.651091}, + {37.153046, 56.008278}, + {-65.781989, -28.473571}, + {-90.809738, 14.657738}, + {107.559517, -6.932879}, + {-55.745209, -22.549267}, + {106.662173, -6.043391}, + {-58.382382, -34.606478}, + {-53.455787, -24.792222}, + {101.001984, 13.69099}, + {109.564952, -7.050017}, + {102.716506, 15.311312}, + {110.483264, -7.063423}, + {-91.398338, 14.854185}, + {127.539707, 36.72068}, + {100.433159, 13.712547}, + {-38.460873, -12.901996}, + {100.442039, 13.655437}, + {37.777878, 55.420391}, + {-84.290268, 39.104912}, + {130.76358, 32.840645}, + {103.491464, 14.554867}, + {101.597298, 13.123663}, + {37.630319, 47.099585}, + {-65.745918, -19.590227}, + {-49.238037, -16.747526}, + {-90.039803, 38.795528}, + {-83.457438, 42.3667}, + {106.93232, -6.272598}, + {106.830757, -6.218461}, + {110.767973, -7.676348}, + {102.858486, 14.112502}, + {-101.589594, 21.119841}, + {101.499413, 14.709616}, + {-77.039986, -11.926981}, + {100.612942, 13.756475}, + {100.130302, 13.782795}, + {-46.597385, -23.545248}, + {126.493331, 37.264127}, + {126.973175, 37.248896}, + {126.991501, 37.560871}, + {126.516281, 35.176857}, + {10.033287, 55.421603}, + {1.886364, 41.251781}, + {-49.258251, -25.448162}, + {-64.970268, -14.869628}, + {-94.133453, 46.388997}, + {102.631546, 17.947277}, + {-46.519027, -23.529905}, + {-90.847818, 14.202378}, + {126.502708, 36.778858}, + {103.910591, 1.494347}, + {120.489281, 22.590172}, + {104.767873, -2.937119}, + {76.586799, 29.986341}, + {-34.922234, -8.157561}, + {106.835327, -6.322538}, + {127.695053, 34.941277}, + {114.17627, 22.319584}, + {107.763069, -6.950832}, + {-43.222366, -22.922852}, + {-43.451887, -22.717866}, + {-58.667328, -34.634644}, + {101.781761, 3.402509}, + {-37.276989, -9.917988}, + {126.660171, 37.530299}, + {-46.461952, -23.633345}, + {50.624531, 26.305243}, + {126.742714, 37.708286}, + {-72.417122, -35.383488}, + {-46.40786, -23.486292}, + {68.758781, 38.552052}, + {105.255259, -5.005421}, + {101.987557, 2.690394}, + {68.806849, 38.563728}, + {105.228647, 15.269883}, + {-38.489315, -13.006488}, + {-99.068214, 19.469044}, + {139.718359, 35.725328}, + {101.041384, 13.035692}, + {35.906937, 56.863513}, + {-48.609928, -23.100977}, + {121.436157, 25.0049}, + {102.246841, 16.164072}, + {110.409286, -7.782689}, + {-46.51392, -23.652073}, + {34.892558, 50.301282}, + {-65.067177, -42.781397}, + {36.322231, 33.553455}, + {30.158792, 59.99316}, + {133.770294, 34.500767}, + {100.354935, -0.956825}, + {-43.289417, -22.721724}, + {110.235012, -7.615051}, + {-49.078115, -5.368432}, + {32.662888, 40.023602}, + {-0.379397, 5.546022}, + {-58.324867, -34.734673}, + {139.803726, 35.840729}, + {-46.896233, -21.846478}, + {76.953369, 52.269402}, + {103.882683, 1.483067}, + {-51.218143, -29.918779}, + {120.193733, 23.143301}, + {100.254331, 13.680804}, + {-49.232075, -25.486245}, + {-72.521423, 41.776379}, + {127.336082, 37.099392}, + {22.709637, 54.637779}, + {-96.803337, 32.926823}, + {153.418172, -27.996402}, + {14.249566, 53.178226}, + {28.355247, -15.376467}, + {-87.822838, 41.849949}, + {25.780553, 66.506204}, + {2.283671, 48.880768}, + {-105.023064, 39.861549}, + {-111.850502, 40.537521}, + {18.068254, 53.123058}, + {12.670213, 41.919849}, + {-2.509787, 47.292347}, + {99.950874, 16.642727}, + {100.092693, 19.666227}, + {99.809525, 13.868934}, + {69.19635, 34.522351}, + {112.674761, -7.951516}, + {112.740005, -7.284248}, + {106.86525, -6.372233}, + {-37.09066, -10.909179}, + {71.839057, 51.037091}, + {75.523125, 19.867266}, + {31.149277, 47.090547}, + {-87.957739, 15.574715}, + {129.126516, 35.175532}, + {-74.193825, 11.222271}, + {-83.439507, 39.897991}, + {-49.281796, -28.746023}, + {-51.802271, -13.991259}, + {-55.180069, 5.784109}, + {-45.764181, -21.241319}, + {-87.720863, 41.883701}, + {106.765297, -6.492419}, + {110.617821, -7.602395}, + {-40.836502, -14.895148}, + {114.810684, 4.803692}, + {108.050417, -7.416867}, + {106.688866, -6.318387}, + {-46.921086, -23.552718}, + {106.080617, 21.031161}, + {99.458528, 7.786979}, + {91.790352, 26.145329}, + {101.308037, 13.61448}, + {100.584297, 17.112143}, + {38.284, 55.576622}, + {99.9571, 14.773779}, + {65.509018, 57.040684}, + {116.348749, 39.869883}, + {100.916312, 13.990537}, + {28.275547, 57.81075}, + {119.492943, -5.135289}, + {106.939602, -6.210844}, + {101.046768, 13.714066}, + {100.638916, 13.836798}, + {137.163437, 35.08778}, + {107.620506, -6.901422}, + {128.478149, 35.153912}, + {115.578278, -8.425089}, + {100.18502, 18.104343}, + {75.742157, 26.905825}, + {99.223671, 18.251525}, + {128.601028, 35.187019}, + {106.940725, -6.184676}, + {101.971721, 2.61107}, + {104.295692, 52.228703}, + {-90.609695, 14.648934}, + {30.337698, 60.060971}, + {126.751106, 37.747425}, + {98.797961, 7.866946}, + {116.981003, -0.421182}, + {51.662419, 32.59891}, + {-41.789974, -4.271958}, + {107.466675, -6.408902}, + {10.123491, 36.797695}, + {112.031756, -7.661383}, + {102.318298, -3.83517}, + {-86.305218, 12.122202}, + {-114.849255, 31.021666}, + {-88.103994, 41.786356}, + {-44.451361, -22.465861}, + {140.449288, 39.276829}, + {105.704865, 15.028922}, + {109.694214, -6.916664}, + {100.966164, 13.312154}, + {-77.079956, 38.987126}, + {60.791766, 54.359623}, + {-51.954483, -29.445472}, + {106.960359, -6.105014}, + {35.049911, 48.439602}, + {104.921806, 17.095221}, + {102.629604, 17.975005}, + {103.095116, -1.015144}, + {12.431576, 51.884682}, + {100.386458, 13.87703}, + {120.472002, 23.453373}, + {107.645221, -6.986191}, + {112.709053, -7.288295}, + {77.283535, 30.135876}, + {106.829971, -6.211582}, + {77.283646, 30.13918}, + {107.842117, -6.897462}, + {-47.601257, -0.798449}, + {-77.024093, -12.118854}, + {140.119949, 35.669651}, + {100.446042, 14.708986}, + {100.596354, 14.106755}, + {-54.108482, -31.324732}, + {101.608101, 3.205399}, + {-43.58548, -22.86833}, + {103.554359, 15.855018}, + {103.357991, 16.1694}, + {101.292734, 13.586265}, + {-74.182739, 4.603783}, + {98.682854, 3.763143}, + {101.756592, 17.47716}, + {106.898581, -6.131242}, + {11.929125, 48.294081}, + {101.888992, 13.127274}, + {100.788892, 14.25976}, + {106.792618, -6.394303}, + {-46.73407, -23.543852}, + {99.395376, 11.229037}, + {-57.772422, -18.982349}, + {126.837646, 37.168915}, + {-63.109665, -17.738846}, + {114.181836, 22.524089}, + {73.511306, 4.174876}, + {-99.128006, 19.431141}, + {101.120131, 4.569717}, + {43.829952, 43.809308}, + {37.485492, 55.651062}, + {99.523987, 13.649578}, + {-73.248142, -14.295014}, + {54.379352, 24.502921}, + {100.02935, 13.583206}, + {126.436943, 37.7724}, + {109.10714, -6.846021}, + {104.802231, -3.486556}, + {102.68795, 14.55219}, + {-77.020938, 3.880641}, + {100.494286, 13.951631}, + {39.766026, 47.285183}, + {99.815563, 16.29884}, + {110.341492, -6.989321}, + {35.875092, 31.987926}, + {31.233152, 29.990812}, + {118.21386, 4.673662}, + {-59.953228, -3.101594}, + {126.628052, 36.891251}, + {-44.771283, -3.453121}, + {98.442151, 19.356835}, + {101.328751, 13.539765}, + {104.801506, 17.416088}, + {14.683705, 46.136671}, + {103.472374, 15.115049}, + {36.077957, 32.032143}, + {32.654713, 39.897671}, + {34.402733, 31.314301}, + {-48.019579, -15.83775}, + {99.464767, 17.342794}, + {-46.258715, -23.548063}, + {106.613998, 11.125093}, + {106.764046, -6.526486}, + {20.777143, 40.617443}, + {20.445571, 44.790299}, + {-43.221767, -22.910124}, + {98.333229, 7.911799}, + {110.450787, 1.460932}, + {100.470815, 13.732285}, + {99.429596, 8.308466}, + {-45.552125, -23.510959}, + {106.745755, -6.291341}, + {102.790932, 3.590273}, + {100.286028, 6.399306}, + {-46.328281, -23.966314}, + {27.09459, 38.478806}, + {100.586582, 13.837472}, + {84.930344, 56.44865}, + {100.613495, 13.675201}, + {-36.651005, -10.130734}, + {139.990967, 35.852782}, + {-46.476467, -23.423431}, + {-54.818504, -22.629784}, + {98.921997, 18.657242}, + {98.971031, 7.989378}, + {106.870873, 47.944615}, + {29.06601, 41.00584}, + {127.618515, 35.482922}, + {102.831734, 16.428329}, + {102.466217, 3.271692}, + {-46.44311, -23.440373}, + {100.508347, 13.723636}, + {23.344673, 42.668476}, + {100.37088, 6.136394}, + {-46.660233, -23.593794}, + {106.92454, -6.313502}, + {103.644058, 1.525012}, + {128.903671, 37.770988}, + {7.284339, 51.283855}, + {-122.416122, 37.77763}, + {100.069016, 13.811537}, + {126.400112, 34.821848}, + {106.853378, -6.338213}, + {5.582189, 45.331448}, + {112.67215, -7.885589}, + {115.217537, -8.577383}, + {6.689227, 50.864472}, + {3.677874, 43.995869}, + {6.816381, 50.954889}, + {7.02931, 43.546485}, + {39.680672, 24.456795}, + {31.003225, -29.719027}, + {-96.850342, 33.023373}, + {-104.794831, 38.92514}, + {-113.813828, 52.131119}, + {-84.505103, 33.652548}, + {114.265289, 30.598612}, + {-81.503434, 28.280125}, + {18.695774, 54.353348}, + {19.642599, 51.442608}, + {-86.898987, 37.808052}, + {121.048126, 14.734233}, + {9.664409, 47.358265}, + {73.507828, 4.178198}, + {-95.114225, 33.16503}, + {-74.628883, 41.007932}, + {-78.288303, 35.850113}, + {28.328253, -15.445403}, + {2.317089, 48.823545}, + {129.11792, 35.212315}, + {-91.681339, 14.600089}, + {114.153633, 22.471006}, + {-49.550794, -25.44961}, + {107.739662, -7.078092}, + {6.859427, 49.140181}, + {-48.710258, -1.502445}, + {99.302367, 9.100367}, + {-55.119605, -10.597479}, + {127.133064, 37.775623}, + {-74.062645, 4.659738}, + {112.731737, -7.262329}, + {-73.968658, 40.579536}, + {106.874332, -6.41354}, + {103.902248, 1.297331}, + {76.637062, 43.205978}, + {99.056782, 17.709852}, + {50.108529, 26.385931}, + {102.625357, 18.00093}, + {102.423865, 15.010765}, + {-77.036896, -12.100847}, + {99.818812, 2.31367}, + {101.447815, 13.585672}, + {-45.375704, -22.901183}, + {128.668564, 37.159447}, + {101.413048, 3.070672}, + {-79.812139, -3.336178}, + {-77.09816, -12.051635}, + {100.375675, 5.389098}, + {99.991116, 18.267783}, + {102.398313, -3.942405}, + {-77.105534, -12.022597}, + {100.932917, 12.943053}, + {101.29451, 12.674337}, + {37.46484, 55.648894}, + {106.937101, -6.185557}, + {120.701502, 24.088924}, + {106.807343, -6.223434}, + {33.527542, 44.564365}, + {66.972885, 24.884716}, + {100.281761, 13.536247}, + {-43.331758, -21.775428}, + {104.358683, 16.304183}, + {-46.983859, -23.544319}, + {31.202619, 30.087779}, + {80.149223, 13.040519}, + {74.842778, 12.848156}, + {110.433655, -7.761013}, + {34.584717, 31.666173}, + {140.402908, 36.556213}, + {77.340405, 28.690636}, + {-46.350108, -23.484465}, + {104.910825, 11.572559}, + {121.772736, 24.671194}, + {102.787048, 11.932318}, + {120.30059, 22.649532}, + {121.050171, 14.57612}, + {100.380116, 6.86676}, + {103.87094, 15.62444}, + {104.513641, 0.90492}, + {126.930815, 37.056289}, + {103.090911, 14.538211}, + {100.667671, 14.79631}, + {110.523347, -7.249491}, + {106.728706, -6.135267}, + {107.487683, -6.407381}, + {100.573117, 13.754368}, + {-115.033374, 32.70815}, + {129.11646, 35.167895}, + {127.007178, 37.669772}, + {100.767612, 15.676133}, + {107.572113, -6.920694}, + {47.464939, 42.995682}, + {98.753448, 8.36361}, + {35.158421, 47.831451}, + {-106.404335, 31.689739}, + {55.263027, 51.765125}, + {-51.741854, -30.837502}, + {101.208758, 12.970633}, + {110.657856, -7.79563}, + {-48.939442, -16.3265}, + {100.189941, 13.758501}, + {100.213021, 5.455138}, + {73.723724, 24.572872}, + {54.381321, 24.493999}, + {-34.909817, -8.045591}, + {100.302223, 18.253134}, + {102.459221, 20.629148}, + {100.628349, 7.164014}, + {101.805057, 16.081242}, + {-46.688324, -23.722697}, + {-45.195705, -18.251808}, + {110.767935, -6.519712}, + {107.001724, -6.28122}, + {127.16333, 37.769676}, + {-34.937706, -8.030412}, + {-43.83911, -19.894485}, + {100.741763, 13.9473}, + {-43.418144, -22.916054}, + {102.833527, 14.855769}, + {-70.24956, -18.016266}, + {100.298752, 5.316087}, + {128.469445, 36.162529}, + {-40.498891, -9.46808}, + {31.255577, 30.084521}, + {104.742516, 17.489286}, + {99.23896, 10.432056}, + {-60.001198, -3.046744}, + {-76.985573, -12.017232}, + {128.540931, 35.850717}, + {113.489324, -7.723325}, + {99.745988, 13.334609}, + {106.851479, -6.426153}, + {126.980148, 35.057312}, + {128.621689, 37.201515}, + {108.25753, -6.737563}, + {100.232475, 13.613892}, + {-44.074923, -22.534276}, + {126.912285, 36.033722}, + {80.243729, 13.063782}, + {126.896484, 36.034065}, + {100.626167, 13.675727}, + {-71.968345, -36.421855}, + {102.640583, 18.04698}, + {-46.282307, -23.910458}, + {56.247848, 57.997458}, + {102.53376, 17.890846}, + {120.494799, 22.459965}, + {106.593727, -6.044515}, + {100.304443, 13.743613}, + {104.076988, 14.640732}, + {127.135742, 35.276489}, + {106.6092, -6.228568}, + {128.000137, 37.369781}, + {49.052441, 30.438334}, + {-77.025304, -12.095189}, + {29.403173, 48.789398}, + {-99.613422, 19.305687}, + {103.589066, 15.85138}, + {100.559662, 13.720399}, + {108.545052, -6.700852}, + {100.034233, 8.379704}, + {100.554344, 13.803091}, + {117.15109, -0.501524}, + {101.564622, 3.374326}, + {-104.509636, 24.165459}, + {104.739502, -2.972523}, + {124.83223, 1.364799}, + {39.051868, 45.0364}, + {101.711449, 3.212599}, + {127.786592, 36.168409}, + {-40.848301, -14.850553}, + {107.162666, -6.303903}, + {101.048623, 15.151509}, + {-56.047787, -15.604553}, + {76.27887, 11.255024}, + {104.919365, -5.238381}, + {13.509171, -8.840624}, + {101.836037, 15.536541}, + {12.246278, 58.078068}, + {100.390564, 5.722501}, + {102.751762, 18.070204}, + {137.543417, 34.713213}, + {-4.13851, 47.994763}, + {139.76889, 35.543831}, + {100.139343, 15.277261}, + {101.272316, 12.702713}, + {140.799637, -2.678503}, + {-51.963757, -29.463816}, + {101.640493, 12.680107}, + {104.72821, 16.940117}, + {116.094063, -8.575898}, + {100.523354, 13.757331}, + {24.235441, 53.586437}, + {-46.626119, -23.538321}, + {77.503784, 10.840537}, + {101.412094, 0.566526}, + {37.529255, 55.690762}, + {110.870796, -6.837535}, + {100.006081, 19.802656}, + {-97.17485, 32.766651}, + {39.620361, 24.492361}, + {15.441613, 47.08108}, + {105.778671, 21.004053}, + {-46.673382, -23.503622}, + {9.219548, 48.489308}, + {11.78374, 48.109376}, + {6.781715, 51.282271}, + {1.165203, 47.342854}, + {-44.029655, -19.937441}, + {-51.067135, -29.986848}, + {121.521344, 25.114412}, + {-43.170395, -22.517811}, + {18.684059, -33.859186}, + {29.064447, 40.978334}, + {109.921705, -7.663701}, + {-65.130844, -26.87631}, + {66.948578, 39.689213}, + {31.157619, 30.945745}, + {99.962402, 13.375904}, + {98.663834, 3.524725}, + {-9.188364, 38.753123}, + {-85.222229, 12.92816}, + {1.553759, 43.403231}, + {-58.577839, -34.620983}, + {-38.962288, -12.231739}, + {-50.269695, -29.891313}, + {-101.008675, 22.186239}, + {-49.32515, -25.549322}, + {177.524107, 64.733342}, + {-38.476866, -13.010482}, + {7.971405, 52.267781}, + {32.97579, 60.977019}, + {-46.503417, -23.611878}, + {-122.302752, 47.444285}, + {100.353828, 5.973904}, + {-98.855139, 19.303606}, + {-49.288826, -16.690176}, + {-38.708595, -4.224401}, + {106.268578, -6.083668}, + {100.617941, 13.780097}, + {-38.588562, -3.826143}, + {-49.941494, -18.692848}, + {114.221405, 22.293663}, + {-2.976921, 43.321007}, + {110.73851, -7.342227}, + {-2.205752, 53.463997}, + {-77.616229, 43.106588}, + {-76.544525, 3.327178}, + {-52.300295, -27.854997}, + {34.629459, 31.788046}, + {35.872484, 32.02223}, + {-2.953186, 43.268689}, + {-58.358628, -34.796313}, + {126.960434, 36.786133}, + {-39.447768, -6.101707}, + {100.440672, 13.88873}, + {103.990551, 1.356178}, + {103.146282, -0.312468}, + {-43.063473, -22.941748}, + {-43.170746, -22.903859}, + {-46.608856, -23.590393}, + {139.737427, 35.674034}, + {49.590237, 25.373985}, + {-47.192089, -22.953243}, + {-10.726696, 6.316795}, + {-99.660774, 19.223253}, + {21.540315, 61.137741}, + {-51.218561, -23.296883}, + {-79.888275, -2.194657}, + {-43.223305, -22.925346}, + {-44.348827, -3.405155}, + {37.761665, 55.707207}, + {60.563347, 56.866447}, + {37.440849, 55.84911}, + {83.675568, 25.428329}, + {98.674576, 3.572417}, + {99.397316, 7.734751}, + {-64.865746, -27.501024}, + {101.328877, 12.900221}, + {-2.951031, 35.284463}, + {-63.158478, -17.728094}, + {-73.628014, 4.119783}, + {-74.014954, 40.644024}, + {80.133537, 13.102671}, + {101.365268, 3.032927}, + {30.898304, 50.944731}, + {30.968834, -29.780148}, + {79.018417, 10.856466}, + {-3.687179, 40.397429}, + {-35.702686, -9.64293}, + {126.637936, 37.484212}, + {78.096748, 9.810201}, + {41.950878, 50.808746}, + {-85.969736, 40.476376}, + {37.609197, 55.474644}, + {102.190254, 17.546826}, + {30.838781, -29.729076}, + {28.221584, -26.101958}, + {115.130577, -8.543577}, + {102.211807, 17.296502}, + {-42.649863, -22.227471}, + {-80.045601, 40.41317}, + {80.185425, 26.435783}, + {-46.41769, -23.551523}, + {112.695788, -7.936283}, + {50.593254, 26.179058}, + {37.406639, 55.710644}, + {28.889898, 41.074121}, + {-44.783236, -4.234644}, + {35.154199, 31.818906}, + {98.47303, 3.515244}, + {23.092394, 42.611328}, + {-91.458122, 15.348815}, + {101.188911, 13.888234}, + {46.478138, 50.47588}, + {101.790634, 22.122843}, + {110.248405, 18.663145}, + {-77.097221, -11.959343}, + {39.716457, 24.548672}, + {-84.133965, 9.967151}, + {37.836167, 47.992642}, + {-47.137897, -23.010012}, + {127.551751, 36.700525}, + {6.739805, 49.34417}, + {-47.191143, -23.435806}, + {27.982117, 40.343468}, + {39.613388, 24.472658}, + {-115.384209, 32.613331}, + {-46.616394, -22.473907}, + {100.073372, 6.62219}, + {-43.416134, -22.998801}, + {48.39175, 32.387451}, + {100.549782, 13.742417}, + {101.306702, 12.652937}, + {106.839607, -6.174987}, + {33.562065, -16.151342}, + {-46.735191, -23.491035}, + {-76.980225, -12.098258}, + {107.051178, -6.407744}, + {-85.460144, 15.165802}, + {-10.71663, 6.264496}, + {101.210811, 13.52144}, + {-46.678352, -23.687559}, + {127.13591, 37.442822}, + {-66.813225, 10.482837}, + {99.327286, 8.877867}, + {77.321404, 28.446856}, + {135.473312, 34.687336}, + {78.188118, 9.511728}, + {98.660973, 3.541327}, + {-47.07896, -22.833733}, + {22.052278, 50.583108}, + {60.127937, 66.041336}, + {101.097168, 13.03233}, + {-80.634369, -5.169349}, + {99.988747, 13.374827}, + {30.683826, 46.51675}, + {-46.431055, -23.433199}, + {31.638504, 31.209967}, + {-43.36433, -22.864096}, + {-96.780151, 29.91748}, + {100.009806, 13.89643}, + {97.959796, 18.940691}, + {37.625229, 55.760216}, + {-51.226813, -30.033209}, + {106.782288, -6.117298}, + {-43.932041, -19.862944}, + {-43.272415, -22.877155}, + {-95.209755, 16.230736}, + {-43.29459, -22.81428}, + {86.991253, 23.686137}, + {83.226084, 25.266206}, + {80.876344, 25.878535}, + {8.304317, 50.687465}, + {78.45858, 27.122986}, + {13.341443, 52.600124}, + {2.597366, 48.852096}, + {22.982456, 40.578521}, + {-43.275249, -22.661227}, + {-87.644073, 41.862858}, + {103.75209, 17.380423}, + {-87.740128, 41.744263}, + {101.245674, 12.677622}, + {-51.174072, -29.151644}, + {100.161083, 14.477491}, + {114.174942, 22.297123}, + {-48.414478, -9.633103}, + {120.704489, 23.793053}, + {60.723358, 56.874207}, + {37.500191, 55.700741}, + {103.342655, 18.215384}, + {31.24305, 30.038305}, + {-38.505387, -12.925078}, + {106.005839, -6.088895}, + {-46.809489, -23.660751}, + {103.965706, 17.671206}, + {103.063871, 5.408783}, + {108.496096, -6.741379}, + {-78.827859, 38.56086}, + {125.596992, 7.074396}, + {26.935817, 43.267168}, + {76.297386, 9.976234}, + {27.893299, 39.663681}, + {-46.797084, -23.526849}, + {99.677818, 14.493701}, + {13.006005, 41.74597}, + {106.951645, 10.767122}, + {117.10495, -0.543978}, + {100.635748, 4.270057}, + {100.290687, 14.1855}, + {101.651697, 12.773618}, + {128.406738, 34.944832}, + {-52.642727, -27.072548}, + {-74.531502, -8.381244}, + {103.610039, 1.662585}, + {100.915901, 15.365789}, + {102.543155, 14.684483}, + {101.419754, 14.709086}, + {-34.901546, -8.123318}, + {113.974976, 22.30245}, + {-47.089787, -23.012932}, + {102.073266, 14.966061}, + {-64.186562, -31.415094}, + {-43.220284, -22.923029}, + {-43.199477, -22.489771}, + {127.927536, 37.311663}, + {128.881561, 35.229095}, + {109.672028, -6.8724}, + {128.273911, 36.680199}, + {-47.116756, -22.925358}, + {109.517685, -7.618154}, + {140.301895, 35.822788}, + {120.806305, 24.513296}, + {103.05027, 15.736468}, + {119.574373, 23.557793}, + {101.002309, 19.263103}, + {108.943258, -7.621557}, + {105.877998, 9.97604}, + {-71.360458, 41.812798}, + {101.196037, 12.964431}, + {107.554306, -7.010213}, + {-46.825007, -23.535678}, + {99.49662, 19.448771}, + {-76.635266, 2.453604}, + {102.821922, 16.473042}, + {105.193889, 15.59671}, + {-72.523079, 7.879358}, + {110.367294, -7.776354}, + {-49.096114, -17.729633}, + {128.308182, 37.025082}, + {34.47665, 49.614178}, + {-83.088531, 39.839989}, + {106.801576, -6.151599}, + {106.838519, 20.886066}, + {106.661888, -6.23981}, + {39.547937, 57.879007}, + {-39.572899, -16.362648}, + {103.798569, 1.318247}, + {-47.454065, -23.512155}, + {25.975646, 50.46722}, + {101.648834, 12.791159}, + {-8.484673, 51.732269}, + {20.92967, 52.315758}, + {-47.140018, -23.516409}, + {-87.819923, 41.828178}, + {81.846794, 7.350609}, + {-43.344685, -22.791491}, + {103.105381, 14.99934}, + {98.339863, 7.821747}, + {100.787161, 13.580435}, + {-35.038353, -8.298351}, + {-77.026077, 38.888012}, + {109.364502, -7.381622}, + {107.572784, -6.931335}, + {-40.335775, -20.319037}, + {-42.572136, -22.382248}, + {116.266238, -8.700447}, + {104.765816, 16.566492}, + {23.729998, 38.032025}, + {74.401062, 31.559441}, + {29.369003, 53.091774}, + {100.946518, 12.913161}, + {101.975751, 15.422649}, + {101.192543, 12.994201}, + {100.900482, 14.403536}, + {-47.112679, -15.597363}, + {101.026611, 13.080611}, + {-67.557991, 10.226642}, + {35.102634, 32.853149}, + {121.584213, 25.078457}, + {-80.277939, 26.300863}, + {102.125252, 15.003809}, + {-81.125847, 34.052078}, + {-49.380912, -20.748489}, + {101.736977, 17.491236}, + {106.795837, -6.228248}, + {-71.81971, -16.424801}, + {-51.156631, -0.053167}, + {-97.149077, 49.808695}, + {-117.127953, 33.583549}, + {-81.567345, 41.10873}, + {9.239583, 48.785652}, + {14.982708, 51.156034}, + {-1.437208, 48.250675}, + {-82.438471, 27.996873}, + {-82.252998, 34.50196}, + {-93.720025, 41.6225}, + {7.460105, 48.046798}, + {19.499885, 47.113084}, + {2.33845, 48.868592}, + {24.816663, 46.229412}, + {10.062353, 49.988815}, + {8.691447, 52.183383}, + {9.381158, 54.978756}, + {6.978144, 52.192418}, + {8.23151, 50.189636}, + {-0.105398, 51.518042}, + {-0.137314, 51.492564}, + {-86.268272, 32.362789}, + {-117.110454, 33.005011}, + {-73.785217, 40.909809}, + {-86.766351, 33.519142}, + {33.360853, 69.063207}, + {7.12065, 51.00449}, + {4.089798, 45.590914}, + {121.008965, 24.018909}, + {-0.144643, 51.495313}, + {5.089803, 46.071104}, + {23.117306, -31.403978}, + {11.734813, 49.167441}, + {7.265632, 50.997166}, + {9.007287, 47.552711}, + {12.703856, 48.909957}, + {19.338918, 47.590597}, + {19.756139, 47.694231}, + {6.171963, 51.395954}, + {-4.493643, 55.93251}, + {1.343065, 51.097956}, + {9.894528, 47.903855}, + {-1.806653, 47.097357}, + {19.721641, 48.081856}, + {8.181737, 50.587646}, + {6.801651, 51.182569}, + {25.107645, -13.138431}, + {8.395717, 48.470085}, + {-8.567534, 41.124531}, + {-3.200904, 47.370897}, + {11.410242, 53.874133}, + {6.784955, 50.599129}, + {7.703316, 50.503063}, + {17.143425, 45.690493}, + {30.051747, -23.822162}, + {11.170063, 46.690125}, + {8.656762, 49.862161}, + {7.405443, 52.189017}, + {2.336034, 48.754387}, + {2.223767, 48.777267}, + {14.704553, 57.650004}, + {12.698946, 59.052509}, + {0.118049, 51.751522}, + {-86.072297, 39.639703}, + {-84.050923, 33.957714}, + {2.011872, 48.579406}, + {10.118827, 53.642553}, + {9.722442, 48.288028}, + {73.517204, 4.174445}, + {-0.385702, 53.792145}, + {-121.301704, 38.582596}, + {-90.596008, 33.493584}, + {109.945279, 24.011245}, + {-104.654214, 38.193215}, + {1.9818, 48.982712}, + {13.077224, 47.714712}, + {28.877063, -15.952326}, + {30.37229, -23.950009}, + {-121.260891, 44.057493}, + {-122.732988, 49.287611}, + {16.954834, 52.438202}, + {43.653206, 36.586506}, + {-86.674589, 40.311436}, + {23.70949, 43.133404}, + {39.666789, 47.252446}, + {3.761433, 47.902615}, + {30.09909, -25.426868}, + {8.35714, 49.617739}, + {7.424773, 51.546134}, + {10.847467, 49.117352}, + {10.518373, 52.26408}, + {-73.853619, 45.446098}, + {15.666234, 49.603038}, + {10.393482, 50.307143}, + {11.898028, 51.510941}, + {6.851273, 49.776134}, + {8.862276, 48.685121}, + {6.719395, 60.553572}, + {0.15384, 49.013841}, + {3.079255, 50.520704}, + {16.601103, 49.19243}, + {11.553307, 49.96942}, + {30.941675, -24.359494}, + {31.055853, -24.607691}, + {14.935362, 46.645867}, + {3.109345, 43.75545}, + {19.878294, 47.911986}, + {10.137091, 48.077545}, + {42.694031, 37.138901}, + {28.17211, -26.116612}, + {-80.200493, 25.928263}, + {-77.23805, 38.725377}, + {-118.446276, 34.173286}, + {2.960735, 6.464101}, + {-84.580565, 33.706991}, + {1.729846, 52.575916}, + {-78.701587, 35.864838}, + {9.092791, 49.145009}, + {-0.409104, 46.326214}, + {18.561245, 53.930378}, + {-85.874257, 37.714716}, + {-76.51146, 39.03589}, + {-118.343006, 34.191665}, + {13.82582, 50.626719}, + {7.221614, 50.802859}, + {7.475907, 9.080702}, + {17.926473, 53.094826}, + {-80.343185, 41.993229}, + {-87.933091, 42.200476}, + {-78.521896, 40.973232}, + {-80.141029, 26.237264}, + {13.788075, 50.495262}, + {-85.446501, 43.986832}, + {-83.555128, 41.59736}, + {-78.923882, 43.922665}, + {-97.143615, 49.901224}, + {51.416, 35.698002}, + {121.006355, 22.621056}, + {10.639255, 50.603935}, + {12.146893, 52.407876}, + {27.925776, -26.104275}, + {6.583069, 51.865774}, + {-112.032189, 33.506608}, + {-84.259743, 33.870354}, + {-100.468285, 22.963612}, + {21.03709, 52.195618}, + {-84.280975, 39.565563}, + {-75.045709, 40.041676}, + {-77.011198, 35.179285}, + {115.165398, -8.658888}, + {28.245728, -25.790995}, + {-84.10063, 34.175173}, + {-84.408759, 34.256407}, + {-3.876779, 5.353815}, + {10.989678, 49.478493}, + {-71.205421, 46.802132}, + {-84.479569, 39.28452}, + {18.467157, 54.538145}, + {10.989525, 49.478786}, + {139.611755, 35.509274}, + {-79.51889, 43.716614}, + {10.711246, 59.92984}, + {-4.447382, 48.429771}, + {-1.195982, 46.161615}, + {2.29423, 48.782057}, + {5.788203, 49.671057}, + {-97.097982, 32.914505}, + {8.749053, 50.114643}, + {10.259611, 50.617655}, + {-93.799221, 45.179793}, + {77.325882, 28.569368}, + {-121.064583, 49.605564}, + {-85.923086, 39.271648}, + {5.915389, 45.692303}, + {-98.546227, 41.7822}, + {1.711148, 49.19535}, + {0.304283, 46.700203}, + {13.932264, 52.597836}, + {13.499385, 52.499027}, + {-113.190708, 46.685058}, + {95.143738, 22.106514}, + {12.606635, 50.830867}, + {13.314928, 52.479298}, + {5.958906, 49.477297}, + {10.034264, 53.425224}, + {106.83268, -6.350262}, + {29.632069, -15.072058}, + {-0.376979, 51.698687}, + {5.137304, 44.220099}, + {8.823894, 48.654176}, + {0.00977, 51.445808}, + {2.319223, 48.841224}, + {11.469486, 48.782306}, + {29.164818, -15.239783}, + {9.705115, 49.328487}, + {6.36298, 47.374092}, + {11.906214, 48.585887}, + {11.537597, 48.166645}, + {15.44333, 47.077667}, + {6.206815, 53.136253}, + {-0.401348, 51.69925}, + {2.949356, 42.936496}, + {23.540634, 60.007412}, + {13.34877, 52.456715}, + {74.448044, 31.137604}, + {8.409025, 51.924271}, + {6.229108, 51.055634}, + {-4.859051, 37.622695}, + {4.015375, 48.968023}, + {16.583432, 49.241254}, + {13.247968, 48.34838}, + {-0.426752, 49.17735}, + {9.358456, 54.020738}, + {11.577849, 48.142502}, + {-0.310875, 52.553771}, + {7.969229, 50.882645}, + {11.113513, 47.483948}, + {-1.238619, 44.697702}, + {12.180953, 44.790582}, + {139.53792, 35.551094}, + {8.092389, 48.521353}, + {27.410215, 59.358749}, + {-82.021221, 33.450293}, + {11.014064, 49.810388}, + {28.471736, -26.287362}, + {-91.860901, 43.439045}, + {-0.127284, 51.473286}, + {-79.218241, 44.113631}, + {-111.849556, 40.667221}, + {145.152313, -37.706139}, + {-85.703497, 38.096938}, + {7.872945, 49.848267}, + {28.127884, -26.146094}, + {11.579936, 53.876696}, + {15.113721, 58.297131}, + {15.12625, 57.301273}, + {7.429516, 43.745094}, + {-96.835144, 33.031025}, + {-111.742142, 33.417519}, + {5.443549, 50.638868}, + {-81.014333, 41.769065}, + {14.117214, 55.965458}, + {-78.944309, 42.906956}, + {-80.241198, 26.145964}, + {-74.466671, 40.774729}, + {-112.215389, 42.056583}, + {-96.572565, 32.295181}, + {13.600833, 56.159439}, + {-95.224876, 29.623117}, + {-98.414247, 29.622526}, + {11.835932, 50.918167}, + {5.223367, 43.440512}, + {-95.398652, 29.768568}, + {11.979319, 51.367174}, + {9.736467, 52.374648}, + {103.821121, 1.265301}, + {21.560465, 53.646053}, + {-73.676173, 40.66292}, + {-73.89547, 40.854458}, + {-0.06953, 51.641834}, + {-79.355563, 43.761436}, + {-111.931428, 40.532217}, + {-84.464166, 34.261707}, + {9.978277, 48.436459}, + {-0.203873, 51.551115}, + {-78.944351, 36.671001}, + {-80.70029, 35.073433}, + {-89.423757, 34.729017}, + {-0.749349, 46.443095}, + {-84.407082, 33.938164}, + {4.005306, 51.080594}, + {9.407259, 53.909285}, + {17.977655, 53.142666}, + {4.96002, 50.745841}, + {-77.118931, 38.858153}, + {17.832521, 53.121461}, + {-1.750085, 52.492367}, + {-86.505753, 41.720547}, + {-149.867691, 61.188275}, + {-122.272455, 40.559142}, + {20.940504, 52.193729}, + {-79.958742, 32.902145}, + {-90.25864, 38.678366}, + {-122.343172, 47.489289}, + {-86.217964, 42.616192}, + {-76.196465, 45.397617}, + {-66.054057, 18.445768}, + {-77.376299, 37.551709}, + {23.788757, 61.499419}, + {-8.16866, 41.451593}, + {13.464457, 50.731968}, + {14.727405, 48.116295}, + {14.50459, 50.034061}, + {16.930307, 64.827354}, + {17.016273, 49.277835}, + {12.354058, 47.804127}, + {14.478783, 48.556334}, + {12.520657, 43.072331}, + {37.559617, 55.843889}, + {1.565537, 48.253164}, + {8.411567, 48.937471}, + {9.327514, 48.045096}, + {9.658128, 47.585388}, + {30.856371, 54.68308}, + {13.104543, 52.361987}, + {31.472183, -28.650787}, + {13.971887, 48.143917}, + {4.779287, 45.994796}, + {27.508986, -21.196781}, + {8.537043, 47.375713}, + {28.349499, -15.352572}, + {-75.210522, 4.44649}, + {2.150258, 48.831784}, + {106.852165, -6.388711}, + {15.035276, 50.779075}, + {5.2128, 47.783335}, + {8.912825, 39.545727}, + {18.476837, 47.514846}, + {13.58428, 52.360574}, + {8.543515, 49.744034}, + {10.336359, 48.763126}, + {6.973664, 49.235562}, + {4.418404, 50.434991}, + {37.385906, 55.857857}, + {-121.897522, 36.610317}, + {1.277776, 45.855019}, + {11.739141, 52.631011}, + {21.00113, 52.237519}, + {-97.751598, 30.363837}, + {-91.8285, 29.967681}, + {-118.119164, 34.569721}, + {25.894212, 60.947723}, + {-84.533938, 34.067352}, + {-1.720774, 54.959511}, + {-97.66447, 30.402753}, + {14.849787, 50.143767}, + {1.184676, 52.648605}, + {-157.848909, 21.303076}, + {27.991549, -25.99515}, + {-95.272939, 29.792094}, + {-2.885434, 54.925434}, + {-93.325623, 44.880528}, + {151.135681, -33.715748}, + {-70.20108, 42.044449}, + {14.564001, 50.054684}, + {-78.354698, 44.677311}, + {-80.252318, 26.222981}, + {-93.168289, 36.703484}, + {-83.0963, 40.044371}, + {21.081688, 52.250454}, + {16.437, 46.392676}, + {10.750463, 59.928875}, + {-93.979622, 32.444344}, + {-97.738855, 30.264031}, + {-80.384976, 25.820404}, + {1.065232, 45.758031}, + {-114.03487, 51.063508}, + {-89.321496, 43.691319}, + {-82.951004, 42.410545}, + {27.693533, -26.22134}, + {7.714415, 51.072223}, + {-76.823624, 36.657368}, + {-93.038393, 34.118922}, + {1.153369, 6.233268}, + {-95.321571, 29.145857}, + {-83.949268, 33.931141}, + {28.345408, -25.777868}, + {13.192122, 55.685715}, + {103.824791, 1.449269}, + {-79.690079, 39.46331}, + {-87.039602, 40.667004}, + {24.976938, 45.039562}, + {-0.09839, 51.521927}, + {153.017751, -27.469251}, + {-111.721251, 40.069021}, + {151.214067, -33.894767}, + {1.705024, 48.989219}, + {-84.100166, 35.916035}, + {-88.851832, 44.237703}, + {120.968078, 15.471689}, + {-97.746329, 30.303381}, + {-95.516932, 29.945838}, + {127.060249, 37.637856}, + {10.507288, 50.971719}, + {26.670668, 60.870884}, + {1.456179, 48.401656}, + {11.974408, 51.478598}, + {-0.12566, 51.439636}, + {-79.245476, 43.823082}, + {-90.56485, 41.595222}, + {-49.304619, -25.450108}, + {150.928818, -34.368607}, + {30.494614, -29.705582}, + {12.556524, 55.666409}, + {21.024744, 52.465397}, + {-83.443964, 42.193263}, + {-123.815643, 40.116173}, + {-81.627891, 28.115642}, + {-81.052521, 28.452129}, + {-117.248688, 32.758041}, + {-75.350396, 40.566051}, + {-97.240896, 34.707737}, + {31.758041, 36.633265}, + {0.486294, 44.850871}, + {-114.080498, 51.05418}, + {4.359221, 50.831444}, + {-0.241447, 51.612267}, + {5.718035, 45.188377}, + {-77.332282, 38.671442}, + {116.37944, 39.935997}, + {0.285274, 47.993816}, + {21.018373, 52.119019}, + {-75.369825, 39.707439}, + {33.958504, 1.451098}, + {-98.464356, 29.412857}, + {123.881767, 10.282387}, + {21.135778, 51.954803}, + {-94.686344, 38.93349}, + {-82.354953, 29.710391}, + {7.196796, 49.277905}, + {-97.941377, 29.882958}, + {25.964916, -25.746967}, + {0.217524, 47.828455}, + {-117.12767, 32.960025}, + {8.704961, 49.410708}, + {-88.109451, 44.509457}, + {-81.207405, 42.926544}, + {-71.841242, 42.270953}, + {115.990501, -32.206001}, + {31.750781, -0.323762}, + {28.151217, -26.259621}, + {6.122932, 43.115707}, + {-117.162323, 33.147938}, + {-81.345554, 29.748764}, + {-49.301983, -25.435144}, + {-82.994537, 32.376328}, + {-118.234634, 34.026585}, + {-73.943916, 40.837646}, + {10.610292, 50.845264}, + {-73.935371, 40.827663}, + {-80.681313, 35.063683}, + {19.45594, 51.733829}, + {-114.052998, 51.098171}, + {-122.478805, 37.696666}, + {-49.300842, -25.470909}, + {-117.149543, 33.531666}, + {-123.202026, 43.985558}, + {-90.444191, 41.507141}, + {-87.064217, 30.625834}, + {18.38298, 53.407955}, + {-88.610466, 35.189316}, + {14.737921, 56.42094}, + {-74.996922, 40.054716}, + {-74.070755, 40.922321}, + {145.012783, -37.949886}, + {-1.576024, 47.247382}, + {20.575588, 50.167206}, + {-0.008085, 51.426487}, + {-117.847747, 33.895219}, + {118.088486, 24.435014}, + {-1.295554, 48.33238}, + {100.511238, 13.734815}, + {-79.509921, 43.721642}, + {-111.959112, 40.533114}, + {-2.962857, 43.406219}, + {5.443288, 43.502007}, + {-114.077677, 32.673106}, + {-122.810089, 45.481776}, + {16.056686, 47.440946}, + {-84.494596, 33.66545}, + {16.612844, 53.88171}, + {8.104921, 51.797785}, + {-0.234261, 51.680937}, + {12.247382, 41.797005}, + {-79.392919, 43.686969}, + {-81.259117, 28.549381}, + {4.812695, 45.68891}, + {4.583173, 45.752042}, + {-76.547585, 38.238358}, + {-111.835761, 40.412471}, + {11.306344, 50.979255}, + {-98.434297, 29.371126}, + {-73.988556, 40.77486}, + {127.325668, 38.059902}, + {13.795343, 51.020196}, + {-73.906479, 40.823307}, + {11.993021, 50.961637}, + {-75.048064, 40.02975}, + {-74.434067, 40.617352}, + {21.007914, 52.249834}, + {-73.805328, 40.698696}, + {-122.447217, 37.626322}, + {18.061977, 59.333141}, + {0.482378, 51.411228}, + {-80.143494, 26.096504}, + {-0.199104, 51.542934}, + {39.136045, 51.663395}, + {-97.011391, 32.727253}, + {144.620918, -37.517107}, + {-75.331598, 40.062405}, + {-4.057293, 51.087204}, + {-0.708256, 51.341726}, + {20.396597, 49.720039}, + {-73.99735, 40.71189}, + {-97.12336, 34.665024}, + {11.918494, 57.728842}, + {-104.743721, 39.773033}, + {-157.93205, 21.378896}, + {13.150737, 45.692951}, + {-73.823555, 40.86644}, + {-73.299343, 45.532002}, + {-113.562458, 53.546451}, + {-75.956958, 39.699682}, + {107.501945, 31.191433}, + {-77.253799, 39.128796}, + {-90.916504, 38.699402}, + {0.3472, 52.669388}, + {-73.941704, 40.844364}, + {125.135958, -9.094795}, + {-98.619983, 29.506732}, + {-74.964079, 39.966593}, + {-75.646408, 39.668763}, + {11.823191, 58.071123}, + {106.8088, -6.274099}, + {72.833644, 19.021428}, + {-76.788476, 39.310034}, + {-80.277902, 25.843381}, + {-87.888225, 41.851266}, + {-97.124382, 32.738743}, + {18.628029, -34.006256}, + {6.215735, 53.28447}, + {151.178595, -33.896512}, + {-96.988573, 32.957177}, + {-93.998023, 32.221415}, + {-2.803477, 55.613918}, + {-84.518346, 42.858859}, + {-77.502442, 38.240604}, + {-79.520824, 43.808473}, + {17.57504, 59.461291}, + {-73.875832, 40.823914}, + {-77.054573, 38.935215}, + {-83.150017, 32.688389}, + {9.229385, 45.453194}, + {8.710543, 51.656181}, + {27.930149, -26.044931}, + {-71.535249, 42.189168}, + {-123.02112, 46.190004}, + {-87.650948, 41.889566}, + {23.764809, 61.498723}, + {28.519421, -26.277431}, + {9.934022, 49.403084}, + {-109.515735, 40.54267}, + {-74.192956, 40.90399}, + {1.525058, 43.663895}, + {-121.414901, 38.622993}, + {-80.089974, 26.728782}, + {-87.84617, 42.567953}, + {-98.660246, 29.394558}, + {9.226935, 54.112934}, + {12.060939, 50.887103}, + {8.540167, 48.941941}, + {-96.342987, 30.585566}, + {-84.641258, 38.935814}, + {9.39984, 54.774683}, + {-91.239331, 30.281598}, + {-112.867249, 49.672791}, + {-96.8991, 32.907248}, + {-98.490115, 29.354819}, + {-118.314512, 34.096342}, + {7.941535, 48.667583}, + {-114.115708, 51.141683}, + {0.984517, 45.2514}, + {-107.876343, 37.255562}, + {-95.409833, 29.62762}, + {8.613841, 48.960329}, + {17.034152, 54.474865}, + {-94.768553, 38.835664}, + {11.348257, 44.494385}, + {-80.789182, 35.2906}, + {-75.339227, 40.330106}, + {-73.889725, 40.8447}, + {-123.056572, 49.285648}, + {9.060934, 48.093805}, + {-117.08224, 32.592921}, + {-73.423887, 45.523687}, + {-121.896291, 37.335555}, + {17.572937, 53.009114}, + {-78.982414, 33.611064}, + {-111.832468, 41.76372}, + {-95.494986, 29.735382}, + {-90.370659, 43.061993}, + {-73.857506, 40.927822}, + {28.194643, -25.759331}, + {-121.848868, 37.30906}, + {28.118098, -25.974745}, + {-122.185837, 47.715176}, + {5.36319, 43.293861}, + {-98.615519, 29.560783}, + {-63.580497, 44.636405}, + {115.933595, -31.994451}, + {-96.515348, 32.877729}, + {9.639438, 48.313429}, + {14.50726, 56.318558}, + {14.45704, 46.066614}, + {-107.249412, 32.243001}, + {146.297444, -36.34538}, + {-118.317998, 33.841822}, + {-75.153027, 39.822176}, + {16.242952, 47.839327}, + {-0.015537, 51.57725}, + {20.988068, 52.182785}, + {-82.956992, 39.919377}, + {-74.639977, 40.505375}, + {4.339195, 50.836681}, + {-63.566813, 44.705882}, + {-76.967918, 39.006168}, + {-55.21629, 5.703355}, + {20.890336, 49.362841}, + {-55.232059, 5.90082}, + {-84.408455, 36.034782}, + {74.876518, 31.62126}, + {-97.408637, 27.727691}, + {-77.732236, 44.05662}, + {138.798013, -33.331755}, + {17.867908, 59.370548}, + {9.216762, 45.389565}, + {7.905188, 48.471355}, + {3.845606, 50.674965}, + {-76.679977, -12.579563}, + {13.057442, 52.397654}, + {16.414053, 47.898254}, + {27.975325, -25.936269}, + {30.38763, -29.604394}, + {13.429798, 52.501074}, + {-73.91214, 40.861809}, + {-122.168461, 37.746687}, + {37.53875, 55.736931}, + {145.055374, -37.661556}, + {-110.956014, 53.346607}, + {28.007706, -26.101316}, + {11.787425, 50.020557}, + {15.365264, 40.845505}, + {-98.486009, 29.632724}, + {-96.644872, 43.603142}, + {20.800629, 52.167717}, + {19.476212, 51.734226}, + {-87.618381, 41.891825}, + {17.938589, 53.136311}, + {-97.921974, 35.501423}, + {9.178741, 45.46526}, + {4.780816, 52.950028}, + {-76.094937, 36.840561}, + {-83.21523, 42.701395}, + {-86.476039, 36.381314}, + {-0.940917, 53.306359}, + {-113.463415, 53.523106}, + {-75.470795, 39.785801}, + {-4.089397, 5.309168}, + {6.885339, 50.969172}, + {12.999763, 51.582623}, + {-71.065617, 42.34095}, + {-85.366856, 40.221476}, + {-97.726746, 30.31544}, + {-89.661307, 30.303799}, + {153.050189, -26.730199}, + {-0.122363, 51.608626}, + {28.239372, -26.049084}, + {10.100552, 53.645218}, + {-94.423026, 39.000439}, + {16.198786, 58.880688}, + {-75.330961, 40.113621}, + {-79.708254, 35.710346}, + {4.876191, 45.743565}, + {120.274343, 23.056182}, + {31.857156, -25.67955}, + {-71.06577, 42.328233}, + {-90.371101, 14.433597}, + {-73.968521, 40.854954}, + {25.678536, 66.497239}, + {-82.932776, 39.287411}, + {19.609998, 51.389167}, + {4.589462, 52.467506}, + {-84.040183, 41.91524}, + {121.053516, 14.579329}, + {28.274406, -15.406066}, + {-84.087292, 39.531255}, + {-4.204968, 40.383516}, + {-89.519445, 43.500557}, + {-122.32962, 47.697578}, + {-111.594253, 40.347938}, + {28.01505, -26.105725}, + {15.724365, 56.315662}, + {-100.525566, 28.711008}, + {-113.508798, 53.542919}, + {-115.06286, 36.137034}, + {-107.272594, 33.378745}, + {-89.744202, 43.471951}, + {28.270714, -25.703648}, + {-115.131275, 36.187854}, + {145.023683, -37.779089}, + {15.162372, 48.140112}, + {11.225717, 45.75109}, + {6.236833, 47.973842}, + {-118.316447, 33.830946}, + {-97.77855, 30.260961}, + {-87.461479, 37.101639}, + {106.877556, -6.270295}, + {-95.78614, 32.036729}, + {-111.726115, 40.291149}, + {-76.349578, 37.018891}, + {-1.420499, 53.567833}, + {-95.963132, 36.040674}, + {-117.641022, 33.463421}, + {-123.095306, 49.264487}, + {151.008006, -33.890573}, + {20.688759, 49.601284}, + {1.951872, 48.942303}, + {-79.429298, 43.834076}, + {151.146787, -33.74825}, + {-97.15073, 49.892794}, + {13.039062, 55.566721}, + {144.440201, -37.783817}, + {1.758832, 48.803841}, + {-114.30162, 53.006588}, + {12.750379, 50.796178}, + {2.383839, 48.825428}, + {-157.733841, 21.36266}, + {-114.131551, 51.070584}, + {-95.397957, 29.029598}, + {110.317719, -7.812166}, + {-75.615604, 39.663606}, + {-84.192389, 39.92781}, + {6.087409, 43.456408}, + {-105.912292, 53.589546}, + {-91.088258, 30.419762}, + {28.197354, -25.74587}, + {-87.634214, 41.885679}, + {-2.666017, 54.284489}, + {5.403987, 43.26171}, + {-75.702481, 45.418323}, + {150.85965, -34.004726}, + {-71.022516, 42.475079}, + {-93.608638, 44.816743}, + {16.174212, 38.950554}, + {-91.092079, 30.462347}, + {2.40616, 48.800863}, + {-80.13459, 36.015518}, + {9.959497, 53.549716}, + {9.972057, 53.510028}, + {10.085797, 53.537794}, + {9.111089, 48.854509}, + {13.35686, 52.49843}, + {13.413167, 52.508683}, + {-73.824539, 40.920311}, + {6.108787, 50.961262}, + {-2.681886, 53.743774}, + {9.544608, 49.815411}, + {9.107555, 48.734883}, + {-98.544539, 29.504703}, + {-97.135988, 49.894255}, + {-97.85244, 30.252415}, + {-90.28952, 38.618576}, + {10.158122, 53.537868}, + {9.518268, 49.76612}, + {14.037529, 40.934097}, + {-111.674449, 40.313476}, + {-81.503343, 41.071117}, + {-83.044816, 42.335883}, + {-71.260718, 42.635155}, + {-96.700974, 32.811443}, + {-98.540578, 29.4853}, + {7.532173, 51.60913}, + {7.468734, 51.51564}, + {-80.11137, 26.703776}, + {-70.994164, 42.428004}, + {0.598308, 50.93687}, + {2.165382, 48.684606}, + {55.630253, -21.379705}, + {-97.733221, 30.330457}, + {-115.241934, 36.190199}, + {115.85786, -31.937318}, + {14.296911, 48.295124}, + {9.62962, 47.334785}, + {72.823555, 18.987139}, + {-73.914955, 40.872173}, + {14.259239, 50.632468}, + {2.284683, 48.869057}, + {72.84269, 19.077271}, + {-84.605138, 33.768426}, + {5.48236, 49.871326}, + {5.450148, 43.524923}, + {-74.148766, 40.922657}, + {37.540273, 55.867762}, + {-102.104988, 32.027502}, + {-97.202053, 49.886326}, + {-73.895889, 45.81727}, + {-124.225895, 49.300478}, + {9.081816, 51.882379}, + {7.016185, 50.531026}, + {-79.287245, 43.720655}, + {-79.519241, 39.437901}, + {1.783463, 41.411308}, + {-86.490117, 32.066224}, + {-8.418368, 42.893131}, + {27.433057, 61.488876}, + {-81.058152, 34.006588}, + {10.280575, 50.006162}, + {9.931969, 49.779922}, + {20.965482, 52.197213}, + {-80.375255, 25.720542}, + {-76.717152, 39.390236}, + {-123.279884, 44.115166}, + {10.183105, 53.767961}, + {14.062155, 50.501709}, + {-114.119832, 51.169026}, + {28.089041, -26.070414}, + {-94.590486, 39.087987}, + {3.895017, 43.566582}, + {-113.109718, 37.665726}, + {-113.533194, 53.586795}, + {121.176674, 14.076889}, + {103.853001, 1.30622}, + {47.905899, 29.291409}, + {121.021385, 14.608318}, + {19.02045, 50.260367}, + {9.665764, 49.767841}, + {-74.688896, 39.469948}, + {-92.040634, 44.381859}, + {-95.302158, 32.308748}, + {-79.53678, 43.637629}, + {103.956588, 1.357856}, + {-75.239323, 39.386483}, + {-73.978783, 40.753109}, + {13.49827, 52.438731}, + {-117.915644, 33.707303}, + {2.33544, 48.852959}, + {-83.714127, 42.515617}, + {-100.941513, 22.107861}, + {-88.164936, 41.989771}, + {121.008583, 14.509703}, + {-1.18526, 52.631702}, + {12.419277, 41.896084}, + {15.309037, 47.386028}, + {-79.2721, 43.802245}, + {-80.320966, 36.064778}, + {-96.803604, 32.885917}, + {-113.271357, 53.561371}, + {-75.936134, 45.344151}, + {5.069204, 34.43486}, + {9.459396, 54.021115}, + {14.656829, 51.076562}, + {103.742546, 1.376045}, + {-80.196598, 25.779016}, + {-73.942711, 40.843281}, + {-102.391838, 35.876511}, + {1.903385, 47.264902}, + {106.958562, -6.370827}, + {-71.504845, 41.683653}, + {-78.939785, 33.648674}, + {-73.895898, 40.606295}, + {4.105493, 45.346027}, + {-95.246179, 29.645296}, + {-70.997726, 41.845692}, + {21.274815, 52.369724}, + {8.985813, 50.644154}, + {-75.576096, 39.865723}, + {-93.405822, 45.059802}, + {146.81719, -34.549661}, + {3.460177, 36.76321}, + {-79.246878, 43.712595}, + {6.185724, 48.680172}, + {-81.227722, 42.994893}, + {43.847786, 33.140324}, + {-115.107439, 36.215177}, + {144.933201, -37.806182}, + {6.963728, 50.852316}, + {12.449665, 47.516113}, + {-78.881424, 35.83308}, + {-117.157663, 32.704993}, + {-122.390918, 37.736296}, + {-74.224839, -13.154732}, + {13.451756, 52.507132}, + {114.15596, 22.249882}, + {5.036037, 52.230595}, + {-75.08507, 40.029545}, + {16.34679, 48.217468}, + {10.213874, 36.719746}, + {5.522842, 46.778766}, + {-52.717148, 47.548328}, + {-95.686256, 39.00037}, + {-66.064888, 18.33753}, + {-115.1357, 36.179832}, + {121.916725, 11.972195}, + {3.803516, 50.678257}, + {-2.973702, 56.456929}, + {-3.585085, 48.674057}, + {-96.707965, 36.052664}, + {-95.524303, 29.693675}, + {-105.643057, 35.052476}, + {14.859069, 53.024788}, + {107.004249, -6.43177}, + {2.326663, 48.882826}, + {-90.598361, 43.939477}, + {-79.418554, 43.669742}, + {-122.129155, 47.658824}, + {-82.177513, 34.977274}, + {4.753409, 52.304298}, + {5.142765, 46.997681}, + {16.959338, 53.993157}, + {-119.170519, 34.172003}, + {16.439773, 47.78073}, + {-73.902297, 40.675408}, + {25.797354, -17.862337}, + {-76.750369, 39.342784}, + {6.338474, 48.331784}, + {-84.550901, 39.167174}, + {2.256312, 48.89643}, + {15.288594, 53.713011}, + {103.747006, 1.346848}, + {-80.05619, 26.803008}, + {11.091485, 49.440355}, + {-87.952379, 42.629562}, + {18.263436, 49.830415}, + {18.219101, 59.309044}, + {-113.493797, 53.574522}, + {27.879402, -26.0903}, + {-77.265088, 45.888623}, + {-97.694821, 30.344941}, + {-71.095109, 42.268148}, + {-66.003792, 18.413038}, + {-0.496466, 44.87442}, + {8.254819, 51.876978}, + {6.444212, 51.192792}, + {9.159217, 45.539012}, + {-110.881493, 53.246994}, + {14.422862, 50.076034}, + {-80.311463, 25.885199}, + {-121.188721, 44.274151}, + {-115.224052, 36.23035}, + {-5.263777, 6.81216}, + {60.647113, 56.854231}, + {120.449638, 37.359692}, + {-80.273465, 25.785741}, + {-21.850266, 64.132112}, + {3.538285, 48.872293}, + {-97.630936, 36.397766}, + {103.842275, 1.337544}, + {-128.519165, 54.504177}, + {17.818712, 51.648369}, + {-87.266532, 41.069768}, + {-103.411493, 20.66294}, + {144.983462, -37.826768}, + {1.245016, 52.104513}, + {16.338243, 39.300739}, + {-81.952614, 35.073463}, + {-96.858871, 32.892719}, + {-122.420782, 37.784618}, + {17.577832, 40.49223}, + {-1.172787, 46.760391}, + {11.70849, 52.889683}, + {27.41408, -16.482411}, + {-84.409392, 33.692976}, + {21.024677, 52.232655}, + {145.127426, -37.900433}, + {120.69902, 24.287638}, + {12.303269, 51.383177}, + {28.318981, -25.796164}, + {-76.663694, 38.756266}, + {1.386759, 48.192795}, + {-84.517421, 39.092199}, + {4.709938, 50.902847}, + {24.959946, 60.173981}, + {3.36004, 46.48697}, + {7.478448, 51.163311}, + {18.597664, 53.033903}, + {5.096178, 43.639627}, + {-82.58432, 42.062466}, + {39.779167, 21.422817}, + {8.278683, 50.517026}, + {11.905365, 57.65653}, + {-81.44381, 30.596207}, + {-77.204923, 42.248242}, + {-121.520665, 38.621923}, + {-82.969431, 39.392734}, + {10.052166, 53.53187}, + {-84.548925, 39.212559}, + {-117.760853, 33.744944}, + {-4.182634, 48.304485}, + {3.387067, 7.175208}, + {-123.250343, 49.264801}, + {151.500788, -33.115329}, + {120.827241, 23.817775}, + {60.761726, 56.928267}, + {-9.087125, 39.485941}, + {-71.068733, 42.292687}, + {-71.503979, 42.321574}, + {-73.903961, 40.876614}, + {-83.097934, 39.981279}, + {4.365802, 50.8983}, + {-87.608213, 41.691744}, + {-0.100913, 47.496345}, + {-95.310571, 29.945326}, + {-118.395657, 33.899496}, + {-1.202594, 51.075741}, + {-108.927986, 35.471939}, + {-69.654251, 44.273975}, + {-83.257011, 34.361679}, + {103.98851, 1.35563}, + {-118.277863, 33.942202}, + {5.250499, 51.834145}, + {5.345877, 51.708736}, + {12.516658, 55.737534}, + {21.015934, 52.206322}, + {-102.270424, 33.198978}, + {103.83955, 1.3073}, + {120.264915, 30.328033}, + {121.515175, 31.242144}, + {-77.688103, 35.309551}, + {29.940773, -26.517937}, + {-115.291014, 36.168021}, + {-94.286513, 35.999009}, + {72.906639, 19.12038}, + {-73.926602, 40.817497}, + {4.338762, 50.844692}, + {4.358498, 50.85601}, + {118.182381, 24.532616}, + {-86.271908, 39.816725}, + {-106.501877, 35.071545}, + {24.122965, 56.93834}, + {120.678624, 24.451797}, + {-76.620804, 40.301037}, + {-73.950015, 40.810884}, + {-85.890733, 37.719383}, + {-88.111411, 34.768354}, + {106.484154, 20.818415}, + {148.775964, -26.546502}, + {-98.770958, 19.13427}, + {-81.277391, 42.926902}, + {36.954502, 26.853495}, + {13.740436, 51.058255}, + {-74.337603, 40.228169}, + {-92.51432, 44.02253}, + {-73.854058, 41.062029}, + {-73.471427, 45.59183}, + {-55.663811, 48.948792}, + {8.209485, 48.288363}, + {16.408075, 47.815639}, + {-1.142715, 48.032631}, + {114.202454, 22.334663}, + {2.772102, 49.707947}, + {-86.757294, 40.342739}, + {8.922288, 49.918806}, + {8.258154, 48.745447}, + {-72.92428, 41.309318}, + {-83.282929, 42.490277}, + {-77.02531, -12.075452}, + {-90.224205, 30.017944}, + {128.211809, 36.086208}, + {20.426737, 49.966812}, + {9.919906, 53.637154}, + {20.632545, 50.870678}, + {8.570427, 48.098412}, + {-98.403786, 29.498519}, + {-78.259529, 0.235042}, + {-7.11705, 52.257153}, + {-115.994057, 36.214317}, + {12.203727, 44.115425}, + {8.628243, 49.54731}, + {13.51917, 52.504055}, + {6.627673, 49.448685}, + {10.501301, 53.744442}, + {9.756919, 4.089867}, + {12.436838, 51.342747}, + {18.680207, 53.028059}, + {9.028418, 54.179366}, + {-95.400738, 29.711638}, + {-84.269087, 39.66012}, + {-122.687625, 45.523576}, + {121.025299, 14.560918}, + {8.372438, 50.018391}, + {13.470045, 52.525418}, + {8.690533, 50.615912}, + {-73.96676, 40.802337}, + {8.806965, 53.076057}, + {18.509023, 54.55885}, + {1.547996, 43.480585}, + {36.548898, 28.45062}, + {-75.613168, 39.712038}, + {10.000243, 53.634453}, + {5.255928, 46.199277}, + {-3.472101, 57.637189}, + {6.793417, 51.218468}, + {11.626082, 48.21864}, + {151.267756, -33.89281}, + {10.229701, 53.482018}, + {-77.102485, 38.842644}, + {15.760704, 48.450789}, + {-77.965223, 39.48827}, + {-7.703007, 52.383629}, + {-80.620535, 28.201411}, + {-83.317802, 42.369545}, + {13.387463, 52.452682}, + {8.594197, 51.40214}, + {46.675967, 24.574505}, + {-86.667877, 30.429232}, + {18.536453, 54.552779}, + {7.52136, 51.399215}, + {-1.224687, 45.880346}, + {151.140723, -33.919527}, + {8.008934, 50.932984}, + {12.467904, 41.815697}, + {9.878431, 51.512272}, + {-1.48652, 54.916653}, + {18.376015, 54.574486}, + {17.760093, 54.399124}, + {-70.994668, 41.64176}, + {6.824511, 50.969749}, + {9.978408, 53.6858}, + {-2.772348, 53.551502}, + {-95.691322, 29.784365}, + {9.214588, 45.485981}, + {2.09334, 48.896313}, + {-95.973694, 36.146317}, + {150.900074, -33.726475}, + {144.998596, -37.819095}, + {-79.37582, 43.667506}, + {7.21995, 50.80917}, + {-0.248169, 51.51384}, + {51.67057, 32.66769}, + {-86.947051, 35.892428}, + {-95.494155, 29.732096}, + {106.304932, 10.401021}, + {4.888537, 52.341994}, + {-2.112407, 52.456581}, + {-75.779683, 45.325581}, + {-75.49844, 46.550721}, + {9.230103, 48.678032}, + {-84.598714, 33.85329}, + {-82.78455, 34.554513}, + {10.428286, 48.412573}, + {-21.893771, 64.125483}, + {30.330412, -24.675314}, + {-71.298899, 46.818765}, + {-77.53143, 37.534437}, + {-98.492774, 29.433681}, + {-106.52002, 35.116825}, + {19.415205, 51.773525}, + {-93.298035, 37.037853}, + {-73.915461, 42.849337}, + {-1.331106, 50.924881}, + {-122.293724, 47.550861}, + {18.565675, 54.442381}, + {16.616987, 49.227388}, + {22.049938, 51.431915}, + {127.906866, 37.356837}, + {15.253675, -4.26199}, + {-83.359931, 30.904433}, + {13.341402, 52.524643}, + {2.480475, 48.756883}, + {7.516432, 50.399131}, + {11.456443, 48.140587}, + {-79.416375, 43.662836}, + {3.017109, 36.752653}, + {-117.266018, 32.960545}, + {-87.943021, 42.111928}, + {11.758329, 55.259149}, + {10.308775, 53.172604}, + {18.33317, 54.452492}, + {-77.034954, -12.076257}, + {-117.132889, 33.929034}, + {25.067268, 60.350918}, + {6.892471, 51.150502}, + {-118.502821, 34.448325}, + {17.971972, 59.259521}, + {8.362784, 49.230583}, + {-84.282402, 39.822929}, + {-87.063522, 30.749134}, + {-122.647433, 42.157235}, + {-82.682602, 41.403329}, + {145.184433, -37.93676}, + {13.759737, 51.042267}, + {-75.557371, 39.749319}, + {-79.692457, 44.391592}, + {-90.688341, 29.573591}, + {21.03368, 52.160202}, + {8.594151, 53.531544}, + {91.265076, 23.770626}, + {7.569114, 45.146349}, + {7.919924, 52.209904}, + {34.809857, 32.119721}, + {19.047419, 49.849084}, + {9.606109, 49.186958}, + {-119.107651, 36.373783}, + {29.54283, -23.383976}, + {31.707523, 26.559983}, + {-80.73997, 36.117594}, + {-83.94281, 33.892609}, + {-89.64148, 42.294482}, + {27.686567, -25.972992}, + {28.679953, -13.977692}, + {25.607162, -33.937}, + {9.255299, 48.737175}, + {18.060575, 51.317955}, + {-61.561394, 10.674728}, + {121.017998, 14.551478}, + {9.137511, 45.463394}, + {13.10534, 51.306281}, + {-98.468349, 29.53118}, + {2.356594, 51.011814}, + {147.371401, -42.870598}, + {-97.444977, 31.054345}, + {27.58836, 47.166239}, + {-2.316658, 7.331945}, + {7.855532, 48.0107}, + {9.056281, 48.962284}, + {-87.656866, 41.852026}, + {28.113288, -26.085653}, + {150.994426, -33.820004}, + {-74.530125, 39.391789}, + {11.543631, 48.157559}, + {-84.731521, 33.893816}, + {31.035706, -29.704683}, + {21.522795, 37.949036}, + {-0.025096, 45.106688}, + {25.695141, 60.380886}, + {-76.979767, -12.048277}, + {12.030704, 50.846298}, + {34.76601, 32.073128}, + {15.057083, 48.279808}, + {18.65674, -33.88523}, + {-122.247911, 47.437877}, + {38.786637, 51.864957}, + {-79.623925, 43.79614}, + {-82.882416, 42.447044}, + {12.10934, 54.030232}, + {12.205072, 51.492271}, + {10.282958, 36.845843}, + {-80.254211, 25.953279}, + {15.118744, 53.678652}, + {-80.231854, 40.176795}, + {-88.54805, 41.377151}, + {-88.13048, 41.988029}, + {24.569511, 46.543574}, + {120.65139, 22.70693}, + {114.256714, 22.309616}, + {9.984221, 48.388027}, + {-122.494048, 37.729437}, + {-87.061333, 41.573261}, + {11.46515, 53.995215}, + {3.548664, 51.383766}, + {-5.018573, 33.991167}, + {25.980663, -27.178887}, + {-89.897731, 38.794913}, + {21.751553, 61.488586}, + {-122.038712, 47.358219}, + {9.714865, 50.551778}, + {28.103901, -25.972809}, + {4.463248, 51.222618}, + {4.42707, 51.194239}, + {-73.83342, 45.659233}, + {-73.911332, 40.807629}, + {3.947335, 51.065924}, + {16.198692, 54.199975}, + {-2.412089, 53.347262}, + {7.13183, 51.517071}, + {-117.480179, 33.378754}, + {-74.615265, 39.247942}, + {-117.314197, 34.109783}, + {-112.743704, 41.97113}, + {37.65646, 55.765232}, + {-92.658192, 32.245392}, + {26.201115, -29.13858}, + {-80.034046, 40.424886}, + {106.872536, -6.14307}, + {144.319027, -36.677812}, + {106.954857, -6.356375}, + {11.47046, 53.538246}, + {5.101275, 51.181411}, + {-81.812553, 41.313576}, + {19.399337, 51.856442}, + {-96.696541, 33.198669}, + {35.390255, 32.928368}, + {18.750029, 53.091201}, + {-73.79489, 40.720997}, + {1.089594, 51.279514}, + {-113.514582, 53.60506}, + {21.018015, 52.248573}, + {20.873783, 52.202251}, + {4.242934, 51.536587}, + {-81.791799, 28.058053}, + {-83.729274, 32.655055}, + {106.720581, 10.908315}, + {4.546045, 51.036457}, + {-0.173828, 51.486952}, + {27.744287, -29.152439}, + {-87.66179, 30.595695}, + {-95.499367, 29.629814}, + {-80.962502, 35.116707}, + {22.667836, 61.486315}, + {23.772209, 62.245876}, + {8.785765, 50.602452}, + {-91.639828, 31.614546}, + {19.484457, 51.717865}, + {-75.558935, 39.818309}, + {-98.547592, 33.843825}, + {7.783134, 49.945852}, + {17.047325, 51.109501}, + {16.54303, 53.977566}, + {-97.621338, 34.863335}, + {-82.314164, 27.939686}, + {-118.186985, 33.758007}, + {21.002449, 52.222771}, + {14.601927, 40.942651}, + {34.736573, 31.887213}, + {5.68865, 50.34272}, + {-78.951343, 43.914315}, + {-118.253532, 33.897489}, + {7.48249, 50.430715}, + {20.975218, 52.191449}, + {8.504083, 49.507418}, + {7.061737, 50.684331}, + {22.972716, 40.632757}, + {7.641039, 51.953255}, + {-72.757902, 46.284332}, + {-87.463949, 36.001554}, + {17.993052, 53.121952}, + {18.908672, 42.231331}, + {-7.571873, 33.569427}, + {-2.196399, 53.486149}, + {5.680333, 36.806072}, + {176.823746, -39.623951}, + {-6.339415, 33.886845}, + {22.800212, 37.565846}, + {34.901768, 32.322994}, + {8.056418, 48.302795}, + {20.974855, 52.208881}, + {14.508259, 40.933033}, + {16.93417, 51.104553}, + {-78.865913, 37.788235}, + {8.834893, 50.151079}, + {-82.457088, 27.976021}, + {16.292625, 50.819763}, + {6.24666, 50.824394}, + {15.438153, 47.06715}, + {-73.295494, 45.318272}, + {-73.241112, 45.325291}, + {-116.366982, 33.759007}, + {-74.033758, 40.729154}, + {18.01028, -33.018299}, + {153.366922, -28.009994}, + {-96.553026, 32.870013}, + {27.887145, -33.032752}, + {-118.293335, 34.061543}, + {-117.58923, 33.646714}, + {37.44429, 55.651981}, + {12.429607, 48.562798}, + {11.079214, 60.180225}, + {16.428075, 48.250428}, + {-71.125549, 42.263699}, + {-91.154389, 30.503472}, + {-83.794762, 33.764286}, + {14.306716, 46.620759}, + {117.077049, -0.555754}, + {13.373511, 52.409241}, + {-74.197068, 40.667859}, + {-82.786333, 27.832691}, + {-96.017794, 41.219358}, + {-97.057731, 32.77532}, + {15.565467, 52.267081}, + {-2.69782, 53.760437}, + {7.352883, 44.841071}, + {-75.774101, 45.261181}, + {-88.626496, 33.617457}, + {-77.460463, 37.893252}, + {-123.107624, 49.281089}, + {-84.43962, 33.73524}, + {-73.063316, 43.133259}, + {-117.103095, 33.126438}, + {-87.627113, 41.880745}, + {-118.309852, 33.957166}, + {10.15827, 48.675541}, + {7.613123, 51.567001}, + {-87.279816, 36.600163}, + {13.491354, 52.531747}, + {-118.41156, 34.018974}, + {6.981607, 49.579358}, + {9.748941, 52.562352}, + {9.422612, 54.26778}, + {9.896639, 51.498088}, + {7.5967, 53.313904}, + {9.843732, 53.606022}, + {8.107914, 53.585088}, + {8.425059, 49.515998}, + {-78.190819, 40.709538}, + {8.93718, 53.071674}, + {10.554144, 36.625412}, + {-97.200564, 32.862859}, + {-73.575246, 45.538852}, + {4.395981, 52.079795}, + {-73.911136, 40.823502}, + {7.321437, 53.246988}, + {7.89778, 49.886169}, + {79.973129, 14.456512}, + {106.919533, -6.421629}, + {24.896979, 60.162761}, + {8.960915, 53.039447}, + {7.512317, 53.267741}, + {-84.180413, 33.811251}, + {-83.312775, 36.128628}, + {-102.280006, 49.640175}, + {8.694539, 50.419442}, + {8.834236, 49.858155}, + {-73.294623, 45.286094}, + {8.711301, 50.048464}, + {-81.53642, 28.326902}, + {-66.018211, 18.399416}, + {7.476142, 51.440243}, + {-85.074745, 35.12203}, + {-94.915004, 29.400207}, + {-96.888184, 32.721981}, + {16.925734, 52.413211}, + {7.338321, 51.316616}, + {8.264908, 49.969993}, + {-122.334145, 47.626898}, + {-114.206505, 51.089827}, + {10.862103, 43.704247}, + {-76.830795, 39.2775}, + {-95.405845, 29.914973}, + {8.656432, 49.320949}, + {-81.385071, 28.67042}, + {-73.875689, 40.94893}, + {-21.836588, 64.127849}, + {12.505165, 45.788784}, + {-74.013878, 40.707424}, + {34.848461, 32.169029}, + {-79.755907, 43.242396}, + {-96.642572, 32.687743}, + {-74.251828, 40.936983}, + {10.837884, 52.433911}, + {18.475786, 54.257084}, + {13.610555, 54.400745}, + {106.8573, -6.22541}, + {-122.531525, 47.588558}, + {83.786217, 24.142857}, + {36.87394, -1.32933}, + {12.292051, 51.413691}, + {6.997882, 52.078248}, + {7.05993, 51.45869}, + {7.044573, 52.086956}, + {13.325563, 53.905234}, + {12.203361, 54.034923}, + {11.63159, 51.859084}, + {-1.802066, 48.545156}, + {7.589585, 48.45288}, + {10.515603, 52.297655}, + {7.012586, 51.965805}, + {-118.305161, 34.067334}, + {-71.941078, 45.405857}, + {9.937267, 52.627445}, + {7.714017, 51.653596}, + {16.933071, 52.416464}, + {8.060315, 51.789629}, + {-122.435443, 37.797088}, + {-97.201562, 32.842415}, + {-97.14219, 32.846419}, + {-96.812322, 32.637037}, + {151.211159, -33.829845}, + {7.663962, 51.55449}, + {11.392656, 53.609902}, + {12.356603, 51.322834}, + {11.648219, 52.187476}, + {12.766505, 51.310788}, + {28.750455, -9.662654}, + {9.375073, 54.02955}, + {7.839284, 51.679628}, + {12.310866, 50.589475}, + {8.61589, 50.117946}, + {-108.559311, 39.090091}, + {-122.234807, 37.499777}, + {-80.155681, 26.128006}, + {7.252319, 52.314758}, + {8.484548, 49.50591}, + {12.102356, 54.094329}, + {7.076543, 51.158162}, + {-2.123917, 52.584221}, + {7.174388, 51.398338}, + {12.481968, 51.376244}, + {-0.071557, 51.543077}, + {-80.192623, 26.164018}, + {-0.220948, 43.750148}, + {-79.913534, 43.209087}, + {9.967901, 52.210269}, + {12.820114, 50.746643}, + {10.566966, 51.982996}, + {-74.118126, 40.561917}, + {11.603214, 52.135209}, + {10.105331, 53.539288}, + {9.088317, 45.533091}, + {28.061325, -26.08227}, + {151.634367, -32.988513}, + {-122.141518, 37.414257}, + {22.954161, 40.587833}, + {-79.401337, 43.670281}, + {8.646061, 49.481204}, + {46.760536, 24.715023}, + {46.768764, 24.727566}, + {-73.198753, 45.576763}, + {-97.129527, 32.741174}, + {-82.208196, 34.930312}, + {-73.725494, 45.387222}, + {37.735207, 55.799511}, + {-90.545441, 14.653205}, + {11.12601, 50.973366}, + {7.525261, 51.274763}, + {8.442185, 50.555718}, + {7.540323, 50.389221}, + {9.145711, 49.981109}, + {8.505304, 53.560728}, + {-83.319989, 43.057705}, + {3.236998, 36.782696}, + {-87.716183, 41.895468}, + {-86.256162, 39.708996}, + {-122.083293, 48.239277}, + {145.029266, -37.839798}, + {12.095842, 51.35004}, + {11.020812, 50.117952}, + {8.113301, 51.556063}, + {-95.27386, 29.661396}, + {-80.190256, 25.873593}, + {-103.011778, 49.546183}, + {20.898204, 52.201922}, + {5.947488, 50.506959}, + {11.989328, 52.562573}, + {8.36312, 51.689648}, + {4.576439, 51.200945}, + {16.942606, 52.690415}, + {11.681467, 51.042632}, + {-83.026867, 39.993673}, + {153.113067, -26.796369}, + {9.75845, 54.433807}, + {11.363968, 53.653631}, + {-83.690462, 32.45122}, + {0.017674, 51.566479}, + {8.678669, 49.981632}, + {12.814435, 51.34926}, + {-111.61544, 33.321342}, + {2.587332, 48.859683}, + {9.23588, 45.546574}, + {-91.02758, 38.474998}, + {8.716537, 50.121024}, + {18.464732, -33.721792}, + {14.090472, 51.089478}, + {-111.862495, 39.55864}, + {-3.964902, 55.735584}, + {4.830031, 45.075798}, + {31.328739, 30.103357}, + {13.802848, 45.607471}, + {-96.971615, 32.82863}, + {-95.650468, 29.580949}, + {21.340954, 41.019726}, + {-84.149185, 33.707903}, + {-96.773203, 32.871549}, + {8.502683, 53.055573}, + {-77.394348, 34.776497}, + {31.075008, 29.97197}, + {5.931449, 46.701378}, + {-84.615417, 33.898009}, + {-78.722084, 35.868568}, + {76.696966, 12.42887}, + {-95.275971, 30.150919}, + {-79.491035, 43.705151}, + {-82.219294, 27.095859}, + {8.371583, 49.488445}, + {-96.808355, 32.908547}, + {-94.610087, 38.936108}, + {106.880274, -6.151115}, + {14.989967, 51.164081}, + {9.207555, 49.384209}, + {4.872404, 51.008461}, + {106.86263, -6.13925}, + {-90.756233, 34.656422}, + {4.888437, 45.741862}, + {8.677032, 53.036148}, + {-91.82993, 30.010197}, + {-77.401311, 38.987859}, + {2.359468, 48.892597}, + {12.242669, 54.174338}, + {7.209614, 51.580515}, + {34.788769, 31.338303}, + {-3.623838, 40.010513}, + {-106.596074, 35.104496}, + {-96.692733, 32.90899}, + {20.874977, 52.287498}, + {23.790749, 61.49736}, + {6.363567, 45.415539}, + {-66.060295, 18.241116}, + {120.295204, 23.463833}, + {1.342056, 52.115871}, + {144.820404, 13.51187}, + {-79.568141, 43.655458}, + {-76.684999, 37.281386}, + {-81.328384, 28.324918}, + {26.936808, -27.202845}, + {10.223907, 53.518455}, + {7.371787, 49.229748}, + {0.466466, 51.57584}, + {-81.319463, 29.899283}, + {-73.920792, 40.687187}, + {-122.244608, 37.788614}, + {4.825001, 44.096207}, + {20.209883, 50.027851}, + {148.693176, -21.141919}, + {20.50046, 49.817081}, + {-74.079666, 41.500876}, + {11.56049, 48.165762}, + {19.412289, 54.181542}, + {20.94598, 52.294006}, + {20.98877, 52.237862}, + {-118.709244, 35.274754}, + {16.201765, 54.191637}, + {-71.185761, 46.81291}, + {20.969343, 52.186481}, + {4.61967, 52.373715}, + {21.043711, 52.237366}, + {21.082515, 52.225998}, + {-86.854933, 35.941842}, + {-96.784482, 32.934997}, + {4.694314, 52.018576}, + {1.442714, 43.60281}, + {26.743593, -27.964613}, + {-70.666321, -33.5005}, + {5.692075, 52.346138}, + {-118.396706, 34.438457}, + {21.030184, 52.266563}, + {-122.056366, 37.593494}, + {4.758069, 50.620385}, + {106.904465, -6.284838}, + {25.866282, 47.536484}, + {9.178629, 48.783641}, + {15.189592, 53.719151}, + {4.487255, 52.223217}, + {-67.560066, -15.841704}, + {121.328522, 31.415728}, + {11.172038, 51.28676}, + {7.075028, 51.273374}, + {8.651921, 53.764437}, + {-0.741369, 49.295238}, + {-97.284981, 32.835821}, + {3.483026, 44.522623}, + {-121.984282, 37.527795}, + {-85.621952, 38.129195}, + {19.930246, 53.73123}, + {11.046855, -1.890766}, + {18.509839, 54.459821}, + {-121.833088, 37.287163}, + {-122.987269, 49.25071}, + {2.785453, 43.2335}, + {-88.435776, 37.037229}, + {115.863901, -31.954883}, + {16.929247, 48.02735}, + {21.000414, 52.209454}, + {-84.09895, 34.018586}, + {13.951806, 53.393114}, + {13.532777, 52.420259}, + {-121.826974, 37.308586}, + {-0.467199, 47.622712}, + {-0.076801, 51.580967}, + {26.76992, -10.993048}, + {-77.008489, 38.90245}, + {18.688865, 53.380954}, + {12.752564, 51.191352}, + {-82.798958, 39.984337}, + {-124.040213, 44.860481}, + {-69.111809, 18.448076}, + {-86.163193, 40.437507}, + {-109.483496, 49.754707}, + {8.430738, 48.993168}, + {7.31841, 51.49523}, + {6.982136, 51.570635}, + {-98.44232, 32.860529}, + {-76.9655, 39.025234}, + {-77.109871, 39.092591}, + {7.029134, 50.977269}, + {28.800647, 41.076754}, + {21.056617, 52.140616}, + {-5.928609, 54.626722}, + {0.076327, 49.087157}, + {-93.021595, 34.506881}, + {3.312083, 43.863888}, + {8.535772, 53.650302}, + {-75.397904, 39.851389}, + {13.506391, 52.5947}, + {21.007978, 52.207714}, + {-75.125095, 39.980971}, + {-82.957474, 42.46519}, + {-73.827553, 40.709259}, + {-121.863127, 37.282937}, + {-121.853313, 37.336569}, + {-104.245754, 35.332452}, + {-121.881199, 37.4183}, + {14.359049, 48.258289}, + {1.352739, 48.722505}, + {-96.615546, 32.32358}, + {-118.663556, 34.039608}, + {-86.580521, 34.721935}, + {13.533929, 52.516985}, + {10.115633, 54.306973}, + {9.499665, 47.147333}, + {11.574272, 48.144322}, + {-75.63045, 41.438218}, + {-0.677475, 46.546057}, + {0.090809, 35.637836}, + {-96.624141, 32.924437}, + {-77.022067, 38.936137}, + {51.431154, 25.244877}, + {23.743456, 37.986206}, + {12.412734, 51.204714}, + {-77.038362, 38.905261}, + {-1.235354, 47.360769}, + {4.725062, 44.583172}, + {-11.675817, 26.739933}, + {-121.950249, 49.17149}, + {-77.172867, 39.115883}, + {-79.342545, 43.782}, + {12.332329, 55.631364}, + {-77.115807, 38.880775}, + {2.119591, 48.444698}, + {0.732846, 47.441783}, + {16.387876, 48.226658}, + {18.930232, 50.290137}, + {-3.970562, 5.30458}, + {-78.865913, 35.044266}, + {-82.153725, 39.311749}, + {103.879166, 1.492284}, + {12.573062, 55.674207}, + {120.831242, 24.247683}, + {17.039186, 54.468866}, + {-122.270955, 47.510904}, + {-121.91201, 38.014023}, + {34.820156, 32.167809}, + {35.095386, 32.990446}, + {144.349945, -38.131359}, + {28.977474, 41.065296}, + {13.314998, 52.500562}, + {-115.150063, 36.196816}, + {-0.589445, 44.780788}, + {21.022474, 52.075249}, + {11.329387, 50.941772}, + {35.980585, 31.913215}, + {7.443496, 49.543806}, + {-118.292086, 34.018812}, + {-74.984786, 40.066698}, + {7.111, 47.691234}, + {-79.704912, 43.525349}, + {-80.817177, 34.17115}, + {120.207825, 23.102077}, + {13.105891, 51.303554}, + {-73.871892, 40.867485}, + {-73.999357, 40.723484}, + {6.676845, 47.432662}, + {-94.870112, 36.861279}, + {-122.113358, 37.693848}, + {8.173844, 51.559894}, + {-71.970625, 42.41412}, + {18.018296, 59.301283}, + {28.136589, -25.954428}, + {-82.509041, 43.006283}, + {-122.330498, 47.598637}, + {-80.448479, 25.714626}, + {-93.295577, 39.404273}, + {-73.896427, 40.898737}, + {7.106277, 51.214287}, + {27.553804, -26.772343}, + {-81.736244, 40.636246}, + {20.466623, 52.111656}, + {6.01036, 50.881004}, + {27.703991, 64.224052}, + {7.283742, 43.945218}, + {-92.725095, 44.858771}, + {-73.845688, 40.834891}, + {46.702389, 24.763988}, + {15.420495, 48.353281}, + {-73.969574, 45.578059}, + {-112.128355, 33.676954}, + {-73.832815, 40.849721}, + {15.421197, 47.001663}, + {-73.976208, 40.767407}, + {13.248886, 51.352578}, + {11.452171, 48.282744}, + {7.12253, 51.248268}, + {9.675513, 50.568415}, + {28.984711, 41.038361}, + {-96.29923, 32.743679}, + {-96.897657, 33.04529}, + {28.105606, -26.248236}, + {11.971959, 51.481722}, + {-0.278785, 51.12164}, + {-111.867234, 33.443456}, + {-111.637551, 40.127878}, + {-78.148698, 38.221944}, + {-76.977194, 39.07889}, + {7.153233, 49.654289}, + {-5.953018, 54.59457}, + {13.732688, 51.080424}, + {-90.428169, 42.736656}, + {-118.252144, 34.00153}, + {-4.807532, 33.997786}, + {-122.023045, 37.547315}, + {6.380813, 51.103668}, + {7.170981, 7.489421}, + {-80.412174, 27.352208}, + {-79.841774, 37.816967}, + {-77.004611, 38.825292}, + {-93.394791, 44.808605}, + {12.636135, 52.717256}, + {9.143622, 49.981827}, + {11.166926, 47.200272}, + {-84.314562, 30.481708}, + {45.368407, 35.56893}, + {8.167215, 47.152287}, + {12.55349, 41.845158}, + {-80.529793, 41.179935}, + {115.780712, -32.066156}, + {6.128876, 51.341458}, + {-105.935154, 51.194619}, + {-114.040821, 50.884086}, + {-120.646286, 35.259541}, + {-98.420744, 29.332187}, + {8.139074, 49.367279}, + {-89.666115, 38.970299}, + {13.392809, 53.568109}, + {-104.848679, 39.906982}, + {37.90435, 55.680029}, + {-81.526334, 32.128512}, + {-79.782186, 43.223045}, + {20.365948, 53.378353}, + {19.340556, 54.166669}, + {20.1381, 54.116949}, + {150.542053, -34.358711}, + {-90.958304, 30.461342}, + {120.702347, 24.185612}, + {73.854966, 18.46928}, + {-88.920959, 38.072044}, + {-98.003212, 35.146301}, + {10.400925, 43.716595}, + {120.295296, 23.086609}, + {28.788082, -16.029367}, + {8.661148, 50.212734}, + {10.111524, 53.378625}, + {-123.142082, 49.258911}, + {9.909601, 51.530133}, + {-73.97794, 40.690527}, + {2.267347, 48.841739}, + {-84.394839, 33.777041}, + {28.067312, -26.137671}, + {11.804598, 49.612328}, + {3.531103, 50.82746}, + {-96.569962, 30.610369}, + {21.017717, 52.143318}, + {34.168236, 1.125999}, + {-87.832936, 41.878788}, + {-80.926347, 32.589416}, + {9.893953, 51.52998}, + {33.208973, 35.347294}, + {29.387047, -25.095238}, + {16.44198, 48.248638}, + {8.392807, 51.916634}, + {35.49176, 32.963348}, + {-17.459309, 14.731705}, + {106.833115, -6.2277}, + {-117.423164, 34.121985}, + {16.57403, 49.169385}, + {2.488329, 48.833415}, + {-84.372501, 33.81085}, + {-66.225487, 18.406084}, + {1.873366, 44.183634}, + {-84.879189, 33.896641}, + {-122.321001, 47.542595}, + {-82.184921, 34.487446}, + {6.222751, 52.705949}, + {12.585107, 50.841427}, + {7.651691, 51.732277}, + {-4.388003, 55.895584}, + {4.843842, 45.715794}, + {16.334363, 48.202973}, + {-79.527069, 43.854654}, + {-118.282012, 34.04772}, + {-85.951683, 42.429671}, + {2.533687, 44.284245}, + {31.036476, -29.825809}, + {4.274421, 52.102553}, + {-85.134062, 41.111879}, + {20.910112, 52.220093}, + {-122.953882, 45.515132}, + {39.652586, 24.411771}, + {-8.542945, 40.057552}, + {15.554986, 46.810692}, + {7.267611, 51.326223}, + {45.078021, 56.024673}, + {-86.142244, 39.668251}, + {9.274401, 52.236977}, + {47.526993, -18.911291}, + {8.026833, 50.891521}, + {21.057438, 52.129696}, + {-94.799668, 39.124185}, + {21.159698, 52.212921}, + {-121.450409, 38.507282}, + {-84.193306, 34.254535}, + {1.292955, 44.68919}, + {5.057757, 50.989571}, + {-3.134349, 55.921623}, + {-93.702294, 36.122932}, + {17.022505, 51.014805}, + {6.92028, 51.219902}, + {46.660393, 24.578113}, + {16.351853, 48.197259}, + {5.024272, 52.103043}, + {-81.911469, 32.161766}, + {21.240499, 45.759311}, + {2.418421, 50.952305}, + {106.875805, -6.244593}, + {-80.889057, 34.084957}, + {8.761457, 52.205371}, + {0.722149, 47.407246}, + {74.310501, 31.559013}, + {-83.091408, 42.611188}, + {-122.669235, 47.739307}, + {22.317857, 53.025347}, + {-106.767683, 51.952221}, + {30.032097, 69.705063}, + {-117.140515, 32.903805}, + {2.314206, 48.858858}, + {5.69323, 48.282791}, + {-82.686324, 30.175465}, + {-97.730399, 32.930508}, + {80.057861, 13.558063}, + {5.494413, 51.916107}, + {-79.304543, 43.768769}, + {8.829549, 50.058747}, + {10.819643, 51.492741}, + {-84.450142, 33.751289}, + {-85.360696, 34.466889}, + {152.983623, -27.442501}, + {-73.524346, 45.451909}, + {5.914248, 48.514201}, + {-92.06366, 30.265059}, + {-90.1769, 31.461562}, + {7.875847, 51.343799}, + {-73.890572, 40.747032}, + {-96.751626, 32.78395}, + {10.10301, 45.487555}, + {-97.74264, 30.269252}, + {150.588781, -34.939166}, + {74.273174, 31.443952}, + {1.244135, 6.195327}, + {32.522855, 0.295713}, + {6.783755, 51.429901}, + {-74.260742, 40.715569}, + {-97.215313, 33.020216}, + {25.394697, 45.753788}, + {-77.085997, 38.754729}, + {21.052917, 52.324715}, + {-76.808415, 39.129273}, + {-122.186846, 47.316718}, + {-122.266998, 37.523464}, + {-77.433252, 38.908666}, + {-97.635928, 30.261743}, + {16.029617, 49.352175}, + {106.95536, -6.213752}, + {145.138733, -37.915985}, + {-2.267409, 53.407948}, + {28.154389, -25.753782}, + {47.975845, 29.378553}, + {-81.418726, 28.311356}, + {-73.906342, 40.710974}, + {31.356483, 29.997202}, + {144.732306, -37.909095}, + {-105.013161, 39.822285}, + {5.082639, 47.243695}, + {26.165289, -29.086061}, + {-96.777156, 32.598037}, + {151.004211, -33.792374}, + {8.532606, 52.03001}, + {-88.093803, 41.480446}, + {1.870399, 46.185291}, + {-107.883713, 40.279102}, + {141.855202, -12.65686}, + {9.711224, 50.563607}, + {-73.910456, 40.850809}, + {19.197214, 47.370442}, + {14.222336, 41.094971}, + {-84.624458, 39.935043}, + {7.191535, 51.91296}, + {-82.661412, 28.329086}, + {-1.434136, 43.685023}, + {-77.101219, 38.732592}, + {-74.871078, 40.130882}, + {18.906694, 50.356503}, + {5.582271, 50.616257}, + {20.401001, 44.770412}, + {6.108806, 50.770504}, + {9.646737, 48.709162}, + {-77.740114, 37.568204}, + {-88.057312, 42.212193}, + {-117.159018, 33.700557}, + {-17.510456, 14.74046}, + {20.946985, 52.267487}, + {-99.205933, 19.557261}, + {-77.098754, 38.909065}, + {-76.901329, 38.891215}, + {-7.689739, 33.552618}, + {12.230632, 44.664948}, + {27.77224, -15.842156}, + {-76.871492, 38.963053}, + {-79.467363, 43.640176}, + {147.154468, -42.980199}, + {-111.607826, 40.12862}, + {-73.946285, 40.726873}, + {61.520986, 57.510431}, + {3.040158, 44.13418}, + {-67.15065, 18.169773}, + {10.756145, 48.189705}, + {-66.891449, 18.098848}, + {-78.604385, 38.056667}, + {-98.648604, 29.127724}, + {28.806704, -30.341717}, + {8.223336, 50.092722}, + {5.056752, 50.950504}, + {106.941492, -6.267908}, + {-122.168846, 37.813423}, + {-93.833373, 35.501024}, + {7.979872, 48.898425}, + {34.956001, 32.165569}, + {-80.026703, 33.817692}, + {24.834032, -14.825901}, + {13.337474, 43.612331}, + {8.534074, 49.904731}, + {32.749919, 0.504796}, + {11.817402, 53.42606}, + {14.308795, 47.566582}, + {-75.491633, 46.547708}, + {-95.100147, 30.314153}, + {-82.389923, 34.651482}, + {114.160202, 22.319984}, + {153.082657, -27.250866}, + {17.605539, 51.302274}, + {151.111763, -33.945018}, + {-7.112071, 52.255917}, + {-81.952217, 27.930187}, + {35.541588, 33.89336}, + {-74.037989, 41.134565}, + {-95.40168, 29.950613}, + {-87.157755, 37.271611}, + {-122.447281, 37.723022}, + {108.195908, -7.343155}, + {107.001251, -6.228443}, + {13.393865, 52.489342}, + {10.08275, 52.654781}, + {20.920973, 52.271759}, + {-94.742516, 38.919954}, + {-87.621345, 41.843434}, + {-84.217827, 33.977722}, + {-85.092003, 33.571838}, + {-74.076096, 41.540359}, + {77.375801, 15.173719}, + {-113.400898, 53.528188}, + {-82.92317, 42.13019}, + {-116.989231, 32.844109}, + {-73.894756, 40.710222}, + {9.938364, 51.53953}, + {-89.624385, 39.784657}, + {8.401971, 49.424088}, + {-93.162537, 45.205967}, + {-75.137304, 39.903071}, + {17.010269, 51.083458}, + {-86.395744, 43.775398}, + {34.765808, 32.073509}, + {-91.138704, 30.523827}, + {-112.070789, 33.491085}, + {-122.34087, 37.584524}, + {153.002785, -27.470999}, + {17.315174, 48.900661}, + {11.384036, 44.493366}, + {-97.714533, 30.327481}, + {9.944803, 57.15454}, + {-117.643255, 34.017913}, + {-77.302095, 38.609958}, + {-97.220329, 32.810597}, + {-122.245748, 47.122959}, + {16.362371, 48.213623}, + {-73.942021, 40.678201}, + {8.294241, 51.843537}, + {-88.075333, 43.098316}, + {46.750523, 24.601685}, + {-95.440956, 32.4695}, + {-91.130825, 30.483619}, + {9.210617, 48.806324}, + {8.631268, 50.223684}, + {30.370461, -30.857264}, + {-86.745167, 33.524956}, + {9.068674, 52.225998}, + {-107.41059, 36.195499}, + {-68.362739, 18.563269}, + {-119.635971, 34.421963}, + {-80.234047, 25.741709}, + {-96.789344, 33.1749}, + {-3.718943, 40.598755}, + {9.662502, 53.744133}, + {15.700314, 59.610741}, + {4.433481, 51.922806}, + {-114.578552, 52.319218}, + {-84.155113, 33.79052}, + {-4.341093, 48.383047}, + {-85.140853, 41.095095}, + {-74.092987, 40.895786}, + {9.913207, 53.579704}, + {9.889897, 51.356939}, + {114.170883, 22.293983}, + {-82.184067, 42.405807}, + {-73.944843, 40.71197}, + {-81.622354, 43.709899}, + {-61.035144, 14.537512}, + {-88.062546, 42.983008}, + {-106.421871, 31.978443}, + {25.066828, 60.252632}, + {5.106155, 52.070809}, + {-6.859453, 52.896942}, + {-80.133293, 26.601822}, + {-76.339404, 37.024092}, + {-94.578791, 39.095745}, + {-80.109184, 32.797581}, + {-81.406441, 30.294588}, + {-83.171768, 42.607952}, + {114.185616, 22.307463}, + {-0.399277, 51.871792}, + {-90.393758, 38.691512}, + {-119.170032, 34.245708}, + {-98.397263, 29.601882}, + {7.108337, 51.571274}, + {-118.173118, 34.159361}, + {-85.720344, 40.404319}, + {-118.28587, 33.959078}, + {106.892281, -6.152644}, + {-112.010831, 33.48967}, + {12.702882, 51.203346}, + {-85.658802, 42.964672}, + {51.457893, 35.642719}, + {-79.887198, 35.969409}, + {-79.470566, 43.788925}, + {149.056061, -35.237898}, + {-122.938855, 46.916689}, + {8.548663, 50.156834}, + {-75.283574, 43.091111}, + {-96.906955, 32.842034}, + {-81.6362, 41.282089}, + {-95.504333, 29.878344}, + {29.548752, 49.224762}, + {-84.468019, 35.652059}, + {60.896497, 57.04843}, + {12.562078, 50.541489}, + {-70.545113, -33.394981}, + {-96.497765, 32.886116}, + {-123.036987, 44.051701}, + {-122.798736, 49.051356}, + {-79.493557, 43.936786}, + {126.636099, 37.456304}, + {146.713486, -19.260499}, + {-90.458844, 41.530112}, + {-77.479698, 38.746565}, + {8.135491, 51.39644}, + {-73.992851, 40.757465}, + {-94.600906, 39.05278}, + {-67.112885, -15.985227}, + {12.591791, 48.261529}, + {-73.993721, 40.736401}, + {31.046413, -29.748493}, + {-81.526051, 40.797432}, + {-107.846447, 37.230407}, + {5.091831, 52.080406}, + {-73.591362, 45.476463}, + {-95.682968, 38.798203}, + {34.630573, 36.849396}, + {-121.851612, 39.759632}, + {13.038089, 47.809685}, + {-76.623445, 39.416265}, + {16.828094, 52.414772}, + {-90.683793, 35.696215}, + {-117.152877, 32.74447}, + {39.167606, 55.389452}, + {-118.090783, 33.959658}, + {-85.333926, 31.196073}, + {15.171458, 50.023912}, + {-73.895172, 40.697564}, + {114.175552, 22.294724}, + {17.138131, 59.073395}, + {-7.488576, 33.302334}, + {-96.684011, 40.883513}, + {-94.17927, 41.511417}, + {120.569657, 24.210601}, + {-84.844635, 34.235371}, + {-87.703316, 41.692455}, + {30.959846, -29.83429}, + {1.237104, 43.594066}, + {31.751781, -28.943583}, + {-73.571891, 45.494098}, + {9.323744, 36.327602}, + {-71.228447, 46.821651}, + {6.962108, 49.281704}, + {13.78129, 52.838174}, + {139.62793, 35.648556}, + {6.189528, 43.113866}, + {-117.093954, 32.960129}, + {-117.805246, 34.051204}, + {-79.382812, 43.806183}, + {3.260162, 6.663681}, + {15.622495, 48.176655}, + {7.03984, 50.165398}, + {-88.832487, 30.443797}, + {-0.088035, 51.573433}, + {8.03066, 51.562877}, + {-86.164528, 39.525642}, + {31.203741, 29.984537}, + {4.791232, 51.171123}, + {-98.654999, 29.425531}, + {-73.984581, 40.761715}, + {-87.659369, 41.788702}, + {-81.842814, 26.45926}, + {-122.711767, 49.235285}, + {-79.160803, 43.800511}, + {-95.652007, 35.943554}, + {39.860016, 21.422926}, + {-99.95768, 49.825741}, + {9.20466, 45.485617}, + {20.998914, 52.31715}, + {14.240656, 58.834896}, + {22.165706, 53.036289}, + {20.9991, 52.205528}, + {-122.523999, 38.242529}, + {106.862007, -6.258118}, + {70.12318, 28.317613}, + {20.952955, 52.403996}, + {153.00158, -27.469061}, + {21.048813, 52.323261}, + {13.60287, 56.460473}, + {-1.166931, 52.662361}, + {2.807714, 50.595829}, + {14.646275, 50.981855}, + {-82.557646, 38.091342}, + {-82.343353, 36.116425}, + {-76.741859, 45.834885}, + {25.865269, 66.389938}, + {-71.219124, 42.791889}, + {107.439545, -6.460555}, + {59.722268, 55.114311}, + {55.320408, 25.270477}, + {-87.749091, 41.99487}, + {21.006764, 52.21272}, + {106.824585, -6.235039}, + {149.069427, -35.242102}, + {139.621933, 35.436413}, + {139.595457, 35.445107}, + {106.709908, 10.738932}, + {-1.565054, 54.629802}, + {16.331587, 48.068848}, + {-73.582205, 45.190024}, + {7.137458, 43.740875}, + {5.327376, 45.5893}, + {6.940667, 50.237882}, + {103.839149, 1.357599}, + {12.278935, 45.46761}, + {15.02415, 48.130795}, + {106.939454, -6.215869}, + {-68.810669, 44.689465}, + {8.628427, 50.10488}, + {-92.852992, 44.951731}, + {-118.125885, 34.101626}, + {16.328216, 48.211857}, + {16.641609, 43.601815}, + {8.044256, 52.154477}, + {107.074746, -6.206541}, + {44.538677, 40.180031}, + {139.547292, 35.335374}, + {-94.198647, 38.995457}, + {-3.494035, 50.720055}, + {22.260921, 41.831407}, + {8.077423, 58.163344}, + {27.962942, -25.623674}, + {-97.285915, 33.00206}, + {-84.041733, 35.077744}, + {-96.605103, 33.86034}, + {-123.034691, 44.031036}, + {152.860443, -30.644597}, + {9.258022, 54.936535}, + {20.863419, 42.90733}, + {51.315979, 35.740578}, + {27.27053, -23.712992}, + {6.652612, 51.380517}, + {3.23853, 50.840862}, + {-90.440773, 38.543368}, + {34.802608, 32.031845}, + {-93.31294, 45.078361}, + {-84.806907, 41.152866}, + {12.193318, 45.470383}, + {51.31596, 35.713661}, + {-87.662911, 41.89741}, + {51.455395, 35.724701}, + {11.919909, 57.641628}, + {-78.906245, 33.714594}, + {-97.29007, 32.739101}, + {-1.480559, 53.682653}, + {60.850091, 56.992188}, + {2.368083, 48.788673}, + {-84.589653, 37.892124}, + {-121.273237, 38.665538}, + {-88.749138, 35.887753}, + {-1.243062, 53.155946}, + {-80.139058, 41.959132}, + {-121.492407, 38.693851}, + {151.09287, -33.868957}, + {-79.410999, 43.643932}, + {-84.570808, 31.184963}, + {-96.009514, 36.131537}, + {-1.464486, 53.546963}, + {9.533647, 48.8114}, + {39.279932, 44.287016}, + {17.922003, 59.431574}, + {13.124141, 60.170553}, + {120.204338, 22.999158}, + {-79.012999, 33.697267}, + {-96.50467, 32.699838}, + {-118.490241, 34.271048}, + {25.242782, 45.758148}, + {-73.583023, 45.534351}, + {6.64173, 46.781448}, + {6.068407, 43.723115}, + {1.971447, 48.627007}, + {139.624336, 35.591887}, + {67.121788, 24.886288}, + {-6.410254, 53.92321}, + {-82.859886, 41.269768}, + {-96.94508, 33.208091}, + {-92.993027, 44.620869}, + {-73.597328, 45.526081}, + {121.119949, 22.782446}, + {8.573609, 51.583515}, + {3.320303, 6.497423}, + {10.295983, 59.879275}, + {-8.448657, 54.256939}, + {-112.448391, 42.891483}, + {-98.582821, 29.507794}, + {-86.828781, 40.473011}, + {-99.151558, 19.45122}, + {12.487425, 55.752865}, + {6.107012, 51.930519}, + {7.964417, 50.67271}, + {-75.673416, 45.385872}, + {-97.708565, 30.318075}, + {-78.54451, 35.371344}, + {5.983515, 43.139229}, + {5.471369, 49.207122}, + {120.532784, 31.318861}, + {-76.929949, 38.818731}, + {-76.464081, 37.097546}, + {-82.62243, 39.947051}, + {22.762222, 38.460846}, + {16.053061, 53.96199}, + {151.236645, -33.90766}, + {-90.541623, 38.290635}, + {-7.486548, 40.306271}, + {-3.600941, 40.340969}, + {103.775092, 1.438346}, + {-90.187508, 38.889221}, + {12.031678, 44.27403}, + {19.006033, 47.328955}, + {5.721241, 58.974869}, + {28.290637, -28.239306}, + {-79.348099, 43.735149}, + {24.889081, 45.226558}, + {14.211138, 47.871705}, + {-89.89503, 35.355672}, + {12.126828, 49.220944}, + {103.781044, 1.440989}, + {3.716617, 36.753098}, + {-81.988318, 26.450607}, + {-74.271614, 40.765618}, + {34.888629, 32.392176}, + {7.010898, 43.584207}, + {7.089889, 43.579677}, + {11.894419, 49.160143}, + {-82.792267, 34.703167}, + {115.561936, -33.566577}, + {25.111412, 35.324253}, + {11.72404, 51.810905}, + {126.948613, 37.392946}, + {-90.212381, 38.618077}, + {5.828114, 59.526649}, + {21.094486, 52.070541}, + {149.068985, -23.582365}, + {9.957142, 53.571663}, + {3.081792, 45.774596}, + {9.131799, 48.867278}, + {-121.72094, 38.56057}, + {19.539347, 51.417568}, + {-91.180237, 30.449705}, + {-65.824654, 18.148903}, + {2.519133, 48.827758}, + {-111.976829, 40.672367}, + {7.489059, 51.443668}, + {145.545547, -38.497429}, + {145.749039, -16.985332}, + {9.093819, 58.650747}, + {-76.797905, 42.09314}, + {-74.003731, 40.623497}, + {-71.033396, 42.804794}, + {-88.826149, 42.933723}, + {-96.736937, 33.004115}, + {-91.244415, 43.831541}, + {-113.511696, 53.522984}, + {4.528993, 49.901174}, + {-97.472916, 37.658813}, + {28.274406, -25.407328}, + {-75.553234, 39.706041}, + {18.010365, 54.45723}, + {-91.245748, 30.297354}, + {10.275307, 51.710925}, + {-85.25444, 35.101643}, + {126.912571, 37.570379}, + {-46.633449, -23.593475}, + {145.278725, -38.010122}, + {3.224535, 6.716886}, + {151.248326, -33.916071}, + {18.775966, 54.091296}, + {-80.609299, 34.272087}, + {-83.875556, 34.235272}, + {19.439389, 47.571566}, + {40.231634, 59.445506}, + {77.350851, 11.128049}, + {8.630318, 39.052189}, + {-84.428177, 42.262051}, + {-79.512253, 43.854919}, + {-118.173537, 33.977633}, + {153.043917, -27.501373}, + {-1.568443, 54.776821}, + {2.26432, 48.624445}, + {15.758648, 51.292878}, + {-75.015707, 39.40623}, + {3.551341, 48.844549}, + {-84.215935, 35.987743}, + {126.838425, 37.627121}, + {-123.138313, 49.217337}, + {8.934627, 45.607353}, + {-3.793992, 56.124336}, + {151.149669, -33.823096}, + {139.721588, 35.644234}, + {139.75177, 35.669599}, + {15.928556, 58.83091}, + {-1.566879, 48.815009}, + {-97.127251, 49.886009}, + {-88.13604, 41.509926}, + {128.501236, 35.520603}, + {7.756427, 51.17308}, + {12.69646, 43.973763}, + {28.047226, -26.206066}, + {-96.836945, 28.695688}, + {7.473334, 43.77639}, + {-86.714516, 36.210922}, + {-77.052877, 39.021641}, + {-66.035147, 45.31361}, + {2.25714, 48.72297}, + {-92.999344, 45.053968}, + {10.009194, 53.475642}, + {-81.558612, 30.267253}, + {6.239382, 49.119083}, + {-2.367341, 51.449629}, + {-0.066887, 53.564281}, + {-74.188573, 40.911652}, + {51.652584, 32.680908}, + {29.206469, -25.813394}, + {151.005951, -33.806605}, + {17.861933, 59.408428}, + {20.344971, 67.928719}, + {-79.019356, 33.764904}, + {-111.902834, 33.607245}, + {-83.777863, 36.001053}, + {-4.464208, 36.706611}, + {-79.682869, 43.537815}, + {8.67018, 50.139351}, + {24.139636, 65.846661}, + {12.294997, 57.778072}, + {-77.135944, 39.022669}, + {4.808177, 49.73953}, + {-83.857954, 33.530152}, + {-99.532188, 42.57822}, + {-118.264771, 34.044632}, + {-1.856512, 46.883249}, + {21.129124, 54.031066}, + {6.105964, 52.815029}, + {-77.010102, 38.869955}, + {4.440274, 44.37466}, + {19.445794, 54.147617}, + {-94.666573, 17.957438}, + {-118.229874, 33.840445}, + {-97.709558, 30.324708}, + {-65.952353, 18.270737}, + {-46.638995, -23.577017}, + {3.711, 51.031007}, + {-6.424288, 53.402859}, + {-78.889877, 36.688168}, + {-81.622444, 38.349842}, + {19.479188, 51.753891}, + {-97.401612, 37.290339}, + {-158.118195, 21.344004}, + {32.448537, -10.237859}, + {-2.238726, 47.289989}, + {-0.223646, 49.164051}, + {-3.981407, 50.741211}, + {18.740511, 52.111511}, + {-73.565048, 45.50757}, + {11.248709, 44.491215}, + {144.954956, -37.754391}, + {37.762657, 54.102937}, + {10.200571, 49.494129}, + {103.797474, 1.288813}, + {115.23278, -8.648692}, + {48.526702, 56.756149}, + {140.73172, 41.77132}, + {21.540428, 52.719135}, + {-120.654854, 35.645471}, + {5.908301, 49.571357}, + {-122.327393, 47.502061}, + {145.189077, -38.194524}, + {-88.168296, 30.72146}, + {2.325406, 48.851143}, + {18.000474, 49.712659}, + {6.8134, 51.484638}, + {-120.89399, 38.665649}, + {11.78871, 51.504484}, + {-122.583122, 45.360678}, + {-1.767872, 46.511379}, + {-118.291305, 33.913414}, + {-7.44468, 33.545074}, + {103.740799, 1.309547}, + {18.68685, -33.886951}, + {-112.131981, 33.68478}, + {-3.009909, 35.141907}, + {-0.176986, 5.631361}, + {-81.024841, 33.328217}, + {0.596444, 42.789016}, + {-0.27802, 5.663869}, + {-82.506638, 36.422981}, + {-73.920612, 40.849973}, + {-73.933374, 40.69412}, + {18.69503, -33.963263}, + {12.493645, 42.314714}, + {34.968387, 31.83058}, + {10.913843, 45.318985}, + {-7.473606, 53.282838}, + {-79.497879, 9.007791}, + {-121.764069, 38.52515}, + {-117.223539, 33.817229}, + {-97.105017, 49.871054}, + {-79.474737, 33.412297}, + {-98.650772, 29.463474}, + {7.089834, 50.914816}, + {-85.181873, 34.26161}, + {7.924077, 51.763778}, + {9.774256, 52.222232}, + {-118.206251, 34.032838}, + {-76.941322, 38.838017}, + {-87.941184, 43.060637}, + {-73.936426, 40.698136}, + {145.328923, -38.103384}, + {-82.333839, 35.10152}, + {16.386094, 50.84611}, + {-0.120572, 5.681958}, + {34.962559, 32.147522}, + {34.782726, 32.120232}, + {17.334337, 50.798184}, + {-99.503273, 27.584842}, + {-97.607337, 31.412976}, + {-118.291582, 33.923026}, + {-118.162805, 34.043538}, + {14.620632, 67.232956}, + {13.712848, 66.855202}, + {2.311672, 48.72201}, + {-75.092579, 39.87525}, + {16.908171, 52.435795}, + {39.251854, 21.43309}, + {11.056196, 49.461443}, + {-115.823149, 53.613507}, + {-79.735126, 43.398623}, + {29.165213, -25.870373}, + {3.65949, 50.005936}, + {126.929874, 37.388663}, + {13.399585, 52.559814}, + {-77.937767, 35.377419}, + {12.612526, 56.035587}, + {-88.799234, 42.876759}, + {-97.208034, 32.775478}, + {15.607616, 44.889851}, + {-7.580507, 33.256979}, + {139.744949, 35.630039}, + {-84.762777, 33.352051}, + {9.726558, 52.394802}, + {14.196655, 48.059086}, + {8.845696, 48.837273}, + {8.88353, 53.031956}, + {-74.096626, 40.894528}, + {-90.078934, 29.957989}, + {-110.039015, 53.270468}, + {-114.917343, 36.336979}, + {-123.070542, 44.069806}, + {-118.332437, 33.922028}, + {7.814073, 48.164847}, + {-0.765843, 51.226257}, + {22.401279, 50.644115}, + {22.375686, 51.06937}, + {23.353364, 50.841296}, + {6.44476, 53.364902}, + {-79.682947, 43.777387}, + {-121.761546, 38.616492}, + {-88.717628, 34.201328}, + {-116.187959, 33.658802}, + {-75.98184, 42.122222}, + {150.787593, -34.081573}, + {-112.117265, 33.627794}, + {-79.449548, 43.664473}, + {106.929817, -6.248361}, + {1.705277, 41.249428}, + {29.895317, -28.573013}, + {-80.3462, 26.001629}, + {-0.161628, 51.632725}, + {27.983353, -26.261839}, + {-94.12972, 36.290221}, + {-99.118462, 19.30191}, + {62.605429, 53.67101}, + {12.096654, 41.998053}, + {16.604579, 49.117843}, + {-3.147457, 53.361179}, + {-81.542848, 41.271421}, + {-71.29177, 46.858993}, + {-122.376335, 47.534441}, + {0.675567, 45.420302}, + {-116.972535, 33.928055}, + {-118.265733, 33.765006}, + {-79.271461, 43.002014}, + {-95.920998, 36.118458}, + {-96.550378, 49.169782}, + {-90.088715, 38.614964}, + {-2.624596, 53.008091}, + {6.819324, 51.511157}, + {-76.96752, 38.872507}, + {18.555349, 51.148708}, + {6.484023, 50.620308}, + {16.925524, 52.433571}, + {-81.544388, 39.767128}, + {-70.158463, 18.615955}, + {-85.190354, 33.494275}, + {121.049095, 14.553976}, + {7.501927, 46.816104}, + {13.653366, 47.590485}, + {19.151128, 47.454794}, + {-104.758041, 37.998123}, + {-70.532585, -33.619102}, + {-72.907608, 47.114616}, + {-101.763321, 35.193694}, + {-106.795512, 52.220645}, + {-102.286903, 39.304157}, + {151.960099, -32.445343}, + {2.577759, 48.834114}, + {10.910462, 51.085899}, + {-97.231608, 31.326187}, + {-69.94281, 18.483086}, + {4.095718, 50.882488}, + {-71.407678, 42.669818}, + {-79.786903, 36.063052}, + {31.379816, 29.991732}, + {127.062119, 37.477802}, + {127.111484, 37.291194}, + {126.927032, 37.600914}, + {127.437282, 37.309786}, + {126.99973, 37.732771}, + {-73.854696, 40.869779}, + {-123.036648, 49.275675}, + {9.879443, 56.979904}, + {16.337281, 48.205576}, + {12.594589, 45.495064}, + {8.61213, 48.150311}, + {-87.787857, 41.985664}, + {16.511621, 53.888927}, + {-114.683258, 33.606808}, + {12.437879, 41.902393}, + {171.255188, -44.397911}, + {-97.391779, 32.7345}, + {116.302501, 39.952979}, + {-101.530407, 33.631146}, + {126.608437, 45.775429}, + {-71.622554, -16.489321}, + {-73.268242, 40.813864}, + {-0.606663, 51.71703}, + {-73.447082, 40.708271}, + {20.616854, 50.867687}, + {-78.330837, 33.966873}, + {-73.415968, 45.795622}, + {-89.880341, 44.944592}, + {-117.63114, 33.443509}, + {30.501843, 50.447796}, + {-0.198445, 51.198887}, + {19.337622, 47.493988}, + {-71.281273, 46.770115}, + {144.683624, -37.873463}, + {32.761335, -9.321464}, + {3.806888, 49.844193}, + {-78.232384, 44.112583}, + {145.364923, -36.382256}, + {-118.471887, 34.234895}, + {-111.00989, 32.269204}, + {-73.10642, -36.800508}, + {11.021874, 45.872838}, + {144.955402, -37.741982}, + {22.449254, 51.285858}, + {-76.643837, 39.361874}, + {-81.251717, 42.986282}, + {-1.786126, 53.795708}, + {2.868716, 50.193186}, + {-95.473785, 29.848604}, + {-80.258385, 36.065601}, + {-106.382132, 35.128029}, + {100.574722, 14.413323}, + {-89.121155, 31.688349}, + {-111.435389, 44.184895}, + {41.830884, 54.234796}, + {-118.046928, 34.137707}, + {115.636916, -33.324698}, + {13.732949, 51.976545}, + {37.571358, 55.744739}, + {114.062622, 22.542579}, + {-86.876404, 33.344055}, + {1.86415, 48.621398}, + {-97.111695, 49.918762}, + {20.003729, 53.837448}, + {-122.091309, 37.612556}, + {-109.56459, 53.113556}, + {-1.30163, 48.729228}, + {100.99395, 12.810444}, + {17.580811, 53.68248}, + {126.892629, 37.406655}, + {126.929342, 37.401796}, + {4.078151, 51.842693}, + {7.420474, 53.650381}, + {-118.438313, 34.200675}, + {17.022261, 51.107716}, + {18.155054, 49.822649}, + {16.14817, 51.221891}, + {-121.99132, 38.016505}, + {-74.001953, 45.776131}, + {121.095398, 22.874351}, + {121.018471, 14.630369}, + {9.463516, 47.659931}, + {-71.215411, 41.69081}, + {0.377956, 49.247307}, + {4.805688, 45.691616}, + {-118.341538, 33.936414}, + {42.256743, 54.75911}, + {-111.790147, 33.434883}, + {-101.925865, 33.565381}, + {-81.237403, 42.953038}, + {151.061142, -33.8465}, + {151.45573, -29.771793}, + {20.634535, 49.76033}, + {7.221054, 51.472336}, + {-119.525377, 46.828319}, + {6.832342, 49.553568}, + {126.714111, 37.435184}, + {-71.794828, -16.531502}, + {16.478264, 48.157227}, + {-122.800488, 49.191498}, + {-81.605443, 41.517964}, + {-76.181177, 36.904599}, + {-97.817618, 30.113007}, + {-84.598423, 33.527633}, + {12.465646, 55.717373}, + {0.054098, 51.78472}, + {-1.945351, 50.77561}, + {-118.512564, 34.349537}, + {18.630898, 50.317274}, + {144.749817, -37.727082}, + {0.547815, 46.943668}, + {-82.449686, 43.018524}, + {-122.842291, 47.057956}, + {138.799707, 35.498235}, + {139.738583, 35.258888}, + {127.116341, 37.386429}, + {6.939307, 50.968021}, + {15.993372, 46.699013}, + {-79.61835, 43.717539}, + {29.822559, -24.260042}, + {73.953011, 18.555178}, + {-81.602026, 41.491045}, + {-95.040595, 29.415062}, + {-87.654376, 41.882573}, + {-65.427917, -24.823051}, + {-118.275899, 33.958831}, + {-90.066804, 29.961226}, + {-86.00668, 39.473236}, + {4.703017, 52.018772}, + {17.056983, 51.159665}, + {13.835682, 51.465384}, + {12.529298, 42.016267}, + {5.218296, 52.286865}, + {-82.228035, 33.509233}, + {11.264203, 50.188272}, + {-96.332074, 30.606418}, + {-105.083869, 39.654952}, + {-118.45448, 34.259055}, + {18.968706, 50.577148}, + {2.019671, 48.583946}, + {151.210852, -33.871309}, + {-95.222327, 29.576213}, + {-90.974165, 43.128584}, + {28.649391, 44.009644}, + {-1.759015, 53.809344}, + {-118.209861, 33.946754}, + {-74.891365, 45.34874}, + {-75.160827, 39.921955}, + {145.17778, -37.870381}, + {-113.494935, 53.590806}, + {20.963123, 52.333282}, + {22.419966, 49.69995}, + {-112.13515, 33.389672}, + {144.90184, -37.802265}, + {-71.085487, 42.302887}, + {-81.678994, 41.505865}, + {-75.31015, 39.946388}, + {-105.145798, 40.523251}, + {-81.204104, 26.829336}, + {127.098699, 37.514854}, + {126.952487, 37.476953}, + {126.641421, 37.431488}, + {-115.260139, 35.991158}, + {15.175496, 50.052434}, + {15.684773, 43.814607}, + {9.813532, 55.8368}, + {2.347156, 51.052334}, + {3.222444, 48.269203}, + {-118.584301, 55.308829}, + {-84.934926, 41.020708}, + {-73.969884, 40.762553}, + {139.592007, 35.49887}, + {126.9893, 37.42929}, + {7.610462, 43.791428}, + {8.610889, 49.649141}, + {-118.130543, 33.953828}, + {-1.423242, 43.696961}, + {-97.103458, 49.938494}, + {19.448689, 51.734947}, + {-115.285332, 36.197006}, + {-97.131772, 32.687963}, + {-96.822736, 32.797245}, + {-115.230326, 36.100403}, + {8.649109, 49.458584}, + {18.84747, 50.245953}, + {-97.125041, 49.921678}, + {-117.150291, 32.717577}, + {-96.80277, 32.94275}, + {-68.174842, 48.57671}, + {-66.049576, 18.363123}, + {-80.816483, 41.257153}, + {-122.858665, 49.236571}, + {28.153277, -25.763023}, + {8.534649, 45.008842}, + {12.618244, 51.158569}, + {-75.030302, 40.267743}, + {124.252823, 8.311606}, + {7.517365, 51.371807}, + {-116.442174, 34.324326}, + {18.839607, 50.269703}, + {11.169858, 45.225494}, + {16.574645, 49.168247}, + {-112.143363, 33.458864}, + {-84.596443, 39.184408}, + {7.643731, 48.138554}, + {-71.057907, 42.325958}, + {-73.946745, 40.820366}, + {-5.879143, 54.578136}, + {-73.547714, 45.387421}, + {-95.520042, 29.718304}, + {-73.097819, -36.79173}, + {-81.786942, 34.939789}, + {-118.08857, 52.870093}, + {116.410835, 39.947983}, + {-111.885764, 40.76844}, + {32.100388, -28.771292}, + {-96.332708, 32.837269}, + {-97.64671, 38.857241}, + {21.217457, 51.930119}, + {-112.265698, 33.450893}, + {144.844597, -38.408207}, + {-121.341309, 38.605762}, + {116.429535, 39.947937}, + {-73.61956, 45.629105}, + {16.01784, 50.780733}, + {-8.057919, 12.593569}, + {-79.528496, 8.973711}, + {153.02698, -27.456464}, + {5.007344, 36.40324}, + {-123.169868, 49.160736}, + {-82.184937, 29.184942}, + {13.63333, 52.386292}, + {-3.312119, 47.792067}, + {-2.857468, 57.690852}, + {10.719705, 52.415958}, + {13.96619, 50.69125}, + {15.464426, 51.669308}, + {-73.723451, 45.458238}, + {12.144921, 50.177684}, + {153.415961, -28.006071}, + {-57.570732, -25.297017}, + {-92.986003, 45.318707}, + {-0.947736, 50.999527}, + {12.694288, 48.905197}, + {8.716384, 53.000743}, + {-4.166368, 55.742748}, + {-97.338875, 37.690338}, + {-73.686357, 41.226597}, + {21.02014, 52.234152}, + {-95.631882, 29.61956}, + {-99.216446, 19.73259}, + {151.116937, -33.670886}, + {16.594263, 38.902023}, + {20.70352, 39.552254}, + {-97.210731, 49.911905}, + {-90.555993, 32.585286}, + {-118.496586, 34.253856}, + {-83.054794, 39.900795}, + {7.000705, 49.241951}, + {-96.629417, 32.91695}, + {-80.720451, 41.184857}, + {-86.594609, 35.98984}, + {124.223536, 8.210272}, + {3.925355, 45.871311}, + {10.462069, 43.364697}, + {4.395798, 51.860062}, + {-118.044647, 33.973606}, + {-87.641747, 40.170273}, + {-122.712235, 45.516865}, + {71.312454, 21.413292}, + {-122.278033, 38.287076}, + {-79.524651, 8.991824}, + {-97.121813, 49.953956}, + {8.94122, 53.166724}, + {8.676207, 44.406033}, + {19.955257, 49.304283}, + {-3.122032, 52.672604}, + {-71.759682, 42.27356}, + {-1.476055, 52.380528}, + {-67.147369, 18.205502}, + {3.114819, 46.057049}, + {-1.526332, 53.720686}, + {7.4514, 51.504967}, + {-84.137634, 36.369797}, + {-122.258059, 37.851351}, + {153.132126, -27.663918}, + {-0.197672, 39.036663}, + {-83.403777, 34.456446}, + {25.567427, 60.992992}, + {5.998236, 53.007469}, + {-84.652452, 39.300458}, + {-80.1868, 26.180589}, + {-73.802605, 40.784272}, + {149.123734, -35.29858}, + {100.999924, 13.08261}, + {10.780144, 59.917526}, + {131.013717, -12.559847}, + {-6.533637, 33.9864}, + {-79.413246, 43.633873}, + {22.908201, 52.741152}, + {-73.562332, 45.541592}, + {127.023865, 37.543034}, + {126.710266, 37.433807}, + {12.531183, 48.237717}, + {20.32323, 50.656286}, + {116.855775, -1.271095}, + {8.131285, 53.326298}, + {7.996492, 58.149096}, + {14.954568, 51.066841}, + {-8.00784, 31.661682}, + {2.325967, 48.820168}, + {-115.040552, 36.159084}, + {-80.014614, 32.937063}, + {-108.953758, 37.779003}, + {55.342262, 25.185276}, + {15.224751, 46.955814}, + {17.845321, 59.246985}, + {13.407, 52.553957}, + {106.7827, -6.189909}, + {-97.156138, 49.890289}, + {47.256008, 24.116954}, + {9.972791, 36.71228}, + {-85.003662, 39.321307}, + {10.036856, 53.611838}, + {-76.294092, 36.863708}, + {8.568352, 50.038857}, + {101.622292, 14.84389}, + {12.552883, 55.722504}, + {-91.038712, 30.563284}, + {-78.514265, 36.016369}, + {-4.018353, 5.31704}, + {-81.256081, 32.132338}, + {-117.759392, 33.651722}, + {-118.29513, 33.737301}, + {-0.330882, 51.485735}, + {34.787336, 32.06024}, + {-2.590098, 51.463932}, + {9.653661, 54.296063}, + {5.253256, 50.701194}, + {13.431211, 52.535204}, + {-3.975987, 5.337933}, + {-104.992875, 40.499845}, + {11.698936, 54.077454}, + {-78.871453, 35.679565}, + {116.826759, -1.21774}, + {-124.114967, 40.933571}, + {-89.203682, 30.524775}, + {-78.976013, 35.05093}, + {-97.639866, 30.485015}, + {2.680061, 36.634219}, + {1.686402, 50.803047}, + {-121.955048, 37.497677}, + {-114.076174, 51.038547}, + {-6.290491, 53.343128}, + {-98.476557, 29.401158}, + {-112.223644, 33.580567}, + {-112.230946, 33.507512}, + {144.701965, -37.883396}, + {-119.603905, 39.535103}, + {28.063643, -26.067249}, + {12.387441, 51.344408}, + {-77.022018, 38.913673}, + {9.645885, 54.36055}, + {-123.841312, 45.464199}, + {90.392906, 23.749853}, + {149.016424, -35.217172}, + {8.674601, 50.297098}, + {-118.231941, 34.060249}, + {3.694127, 51.047405}, + {17.310638, 60.503656}, + {-1.807948, 53.928753}, + {-2.736104, 54.075298}, + {-149.809197, 61.207283}, + {8.985574, 50.137758}, + {10.977532, 49.611256}, + {-112.117591, 33.580043}, + {-73.971952, 40.76036}, + {17.033848, 51.106167}, + {-118.261408, 34.077934}, + {-73.958324, 40.670818}, + {-73.904251, 40.688709}, + {149.129476, -35.282959}, + {-0.029631, 51.510589}, + {-1.732597, 51.59573}, + {18.051981, 59.315041}, + {0.461512, 51.051618}, + {-88.450401, 43.606483}, + {-117.088069, 32.640084}, + {-6.386559, 53.290028}, + {17.005379, 43.311845}, + {34.889359, 32.323273}, + {-80.773308, 35.106129}, + {-6.352818, 53.286304}, + {-81.956413, 26.615143}, + {-80.371651, 43.451336}, + {-80.662918, 41.917297}, + {144.990067, -37.807011}, + {10.966448, 50.671619}, + {126.957125, 37.389146}, + {-90.252924, 29.983104}, + {-90.091559, 30.009874}, + {12.041689, 57.616942}, + {-81.589271, 41.41842}, + {18.066523, 59.325081}, + {-84.389232, 33.737016}, + {-66.976265, 18.07958}, + {28.944059, 46.343807}, + {0.066371, 49.510391}, + {-118.377281, 34.072826}, + {0.93394, 51.875553}, + {-97.463548, 30.138406}, + {150.602182, -33.725341}, + {5.862586, 52.603311}, + {-88.551674, 42.155548}, + {106.844009, -6.128148}, + {-74.076637, 40.601738}, + {4.053553, 48.233109}, + {-122.821976, 46.57547}, + {-80.600281, 43.47052}, + {-73.572505, 45.503377}, + {77.985742, 19.077334}, + {-79.775833, 36.093607}, + {-104.668159, 38.725193}, + {-122.215445, 37.780926}, + {-81.239658, 41.194637}, + {16.436502, 43.327106}, + {19.382549, 53.260464}, + {-97.612606, 37.513283}, + {2.31702, 48.837121}, + {-81.442897, 40.940884}, + {147.310486, -42.862045}, + {-0.141524, 51.689094}, + {144.9128, -38.355268}, + {-72.645203, 41.901627}, + {-79.369839, 43.793263}, + {-1.644518, 54.947388}, + {16.311951, 48.247807}, + {-122.682065, 38.449986}, + {76.803463, 30.691699}, + {-71.978798, 45.131496}, + {-78.841705, 35.71441}, + {-78.860459, 38.460533}, + {127.142257, 37.500398}, + {-117.090442, 32.975441}, + {144.961792, -37.691868}, + {76.772453, 30.752033}, + {-80.646712, 28.159167}, + {35.842619, 31.967781}, + {-86.82045, 21.158449}, + {-79.706391, 40.322181}, + {20.872936, 52.194866}, + {106.892662, -6.231846}, + {13.656044, 52.055118}, + {13.373886, 52.497587}, + {22.368032, 51.969536}, + {-83.075301, 42.343265}, + {-115.159548, 36.143975}, + {116.167473, -31.901925}, + {26.936963, -16.830074}, + {-73.774986, 42.653244}, + {-116.160515, 33.598438}, + {-112.197289, 33.538389}, + {-73.978135, 40.741503}, + {21.02895, 52.288033}, + {-65.385315, 46.433125}, + {127.011698, 37.293416}, + {-2.93255, 53.437157}, + {-81.514447, 41.405818}, + {-82.721887, 28.245766}, + {-74.146686, 40.924601}, + {-0.41926, 49.15324}, + {-80.617011, 44.578676}, + {12.966646, 50.984279}, + {-105.077263, 39.674221}, + {-79.467812, 46.358566}, + {-73.953337, 41.100136}, + {68.249191, 27.653196}, + {4.873419, 52.314789}, + {10.025656, 53.5626}, + {20.727045, 52.418423}, + {10.913549, 43.923111}, + {5.629994, 52.305756}, + {-121.310246, 38.836313}, + {-122.117981, 37.6842}, + {-97.336642, 36.124549}, + {121.027611, 14.575703}, + {12.63392, 41.779076}, + {12.618831, 41.754223}, + {-97.254814, 49.893749}, + {-84.340344, 33.993961}, + {55.368217, 25.307308}, + {-72.387437, 41.861592}, + {121.029388, 14.638992}, + {-88.229105, 41.900548}, + {115.90119, -32.072141}, + {13.399102, 52.511219}, + {9.459003, 47.654213}, + {151.840868, -27.585339}, + {-115.207573, 36.091671}, + {61.46679, 55.193179}, + {9.423481, 45.290727}, + {4.340374, 52.085855}, + {30.902037, -30.029838}, + {2.36844, 44.186216}, + {-73.928062, 40.830605}, + {-122.242342, 38.128159}, + {-117.90775, 33.900527}, + {-97.194458, 49.914139}, + {-71.834648, 46.870632}, + {-117.902936, 34.073898}, + {11.271598, 54.42511}, + {18.466503, -33.807114}, + {145.009064, -37.663891}, + {31.046345, -29.79704}, + {3.89645, 49.227573}, + {37.456491, 55.639057}, + {-76.902518, -12.015433}, + {-73.725732, 40.741431}, + {121.033432, 14.615858}, + {19.437147, 51.819424}, + {-97.792656, 35.500759}, + {-73.251525, -3.762738}, + {2.784578, 35.788979}, + {-72.692733, -12.865485}, + {-79.832128, -6.7711}, + {8.638038, 53.053636}, + {7.062997, 51.575253}, + {8.164469, 49.881912}, + {16.03851, 45.817784}, + {1.292044, 52.594505}, + {10.97469, 59.200032}, + {144.304031, -38.204924}, + {-113.615742, 53.539386}, + {-75.619777, 45.422122}, + {55.284543, 25.218237}, + {19.451691, 51.730951}, + {-82.153168, 28.0762}, + {-112.116142, 33.588619}, + {-86.127701, 40.584892}, + {103.978751, 1.384874}, + {139.657406, 35.272093}, + {11.869697, -4.813937}, + {-93.907059, 29.933638}, + {9.742257, 47.483093}, + {-84.318868, 39.491026}, + {-80.250702, 25.847034}, + {9.166859, 41.651424}, + {-81.805659, 26.60443}, + {-75.63263, 45.510116}, + {-95.077124, 30.815618}, + {12.498685, 41.899929}, + {5.443507, 49.842114}, + {103.830596, 1.42353}, + {45.468796, 35.583839}, + {4.016215, 50.232383}, + {3.242597, 49.175128}, + {-97.347021, 37.661536}, + {-0.58396, 35.696957}, + {-118.021805, 33.846413}, + {10.068607, 48.842066}, + {150.11597, -36.190688}, + {-0.342871, 51.62064}, + {-117.353399, 47.533084}, + {12.629895, 41.844204}, + {44.356888, 33.392414}, + {-79.636513, 43.51403}, + {174.854947, -36.935283}, + {3.117646, 36.701221}, + {-58.381163, -34.617228}, + {19.162082, 50.762894}, + {35.930422, 31.865883}, + {29.284971, -26.212475}, + {-71.464512, 42.299113}, + {-77.536201, 37.611244}, + {-72.629996, 41.782737}, + {-114.075447, 51.040411}, + {-77.090518, 38.739142}, + {11.806783, 50.308932}, + {-122.992299, 44.944473}, + {54.457589, 24.438279}, + {-79.717734, 43.821852}, + {-73.784882, -12.62031}, + {3.430749, 6.439379}, + {-111.929703, 33.435799}, + {-79.835804, -6.77548}, + {-115.069092, 36.165954}, + {18.857565, 49.661213}, + {11.694166, 48.136978}, + {-84.475685, 33.622989}, + {-95.476624, 29.728359}, + {-4.069238, 5.443548}, + {174.650477, -36.868125}, + {-73.890335, 40.860996}, + {20.005317, 48.39446}, + {113.937508, 22.311359}, + {-78.610611, 42.76791}, + {-73.914352, 40.844795}, + {-0.060939, 47.946697}, + {-118.370285, 33.914713}, + {-82.880043, 42.544449}, + {-109.005086, 44.562452}, + {51.533329, 25.325057}, + {2.220795, 48.856399}, + {124.305458, 7.277607}, + {-79.962654, 40.441163}, + {24.677787, 61.720264}, + {-85.765906, 38.251872}, + {-116.190582, 43.620689}, + {7.196847, 51.525525}, + {-94.579124, 39.078163}, + {-95.593996, 29.703041}, + {-2.375356, 37.32926}, + {35.936088, 31.978452}, + {18.504641, 52.043388}, + {8.818037, 51.248798}, + {-71.128342, 41.693577}, + {44.299169, 35.509792}, + {151.05318, -33.847028}, + {-77.190053, 38.791059}, + {144.844131, 13.493863}, + {-86.07402, 39.624729}, + {-1.782327, 51.603382}, + {-73.400169, 40.68211}, + {-0.458136, 51.470795}, + {21.717, 49.682944}, + {24.844967, 60.307542}, + {-122.210534, 47.603852}, + {-72.087799, 45.609024}, + {114.459267, 36.406462}, + {-0.17775, 51.169155}, + {13.3159, 59.50032}, + {10.764188, 59.932201}, + {9.155464, 55.937256}, + {-98.463348, 29.438583}, + {-87.290466, 34.5131}, + {-117.962067, 34.036728}, + {-79.351219, 43.649307}, + {34.884285, 32.32333}, + {-81.508148, 28.203585}, + {4.7167, 49.269334}, + {151.229218, -33.924206}, + {-91.994701, 30.266773}, + {-79.647831, 41.938948}, + {20.254241, 52.22368}, + {-1.880799, 54.960591}, + {29.761051, -28.460781}, + {-83.505274, 42.781745}, + {2.252359, 48.885625}, + {-95.994041, 36.151234}, + {-117.151586, 32.821925}, + {-97.317597, 32.739195}, + {151.297763, -33.745598}, + {13.503963, 45.492564}, + {28.060677, -26.10408}, + {-81.064829, 41.746301}, + {-88.919983, 44.271679}, + {-70.212624, 44.584976}, + {39.194948, 21.532628}, + {-70.653999, -33.438046}, + {-8.349394, 53.189693}, + {151.210175, -33.866203}, + {-6.307117, 54.863808}, + {-1.836674, 52.526558}, + {6.978237, 50.971991}, + {-6.468514, 53.801193}, + {-118.357162, 34.140511}, + {-117.803253, 33.700536}, + {-79.394061, 43.803412}, + {-75.158547, 39.975407}, + {-123.099984, 45.070597}, + {-7.695859, 54.931442}, + {139.699283, 35.524834}, + {139.739918, 35.628233}, + {-73.731544, 40.77494}, + {-73.832822, 40.757282}, + {-1.532454, 54.991291}, + {-97.437611, 32.797428}, + {-95.417865, 29.70759}, + {-94.886269, 36.874573}, + {151.192785, -33.90517}, + {120.630074, 24.204197}, + {-8.898388, 53.431465}, + {3.146739, 36.726881}, + {3.650126, 49.588731}, + {174.31813, -35.695679}, + {-97.119574, 32.665843}, + {-95.496163, 29.663925}, + {-118.332497, 34.035049}, + {151.234825, -23.863434}, + {14.401153, 48.239964}, + {26.812249, -25.644323}, + {-80.866826, 35.202113}, + {6.147948, 51.355072}, + {-82.650097, 28.465192}, + {-119.811509, 39.520844}, + {-70.851875, 48.441956}, + {-96.787699, 32.678801}, + {-71.328171, 46.684096}, + {-79.485512, 44.075401}, + {-6.088293, 33.805801}, + {25.000333, 42.597975}, + {-77.036694, 38.909876}, + {24.765791, 59.438049}, + {47.938244, 29.30183}, + {-61.697446, 16.027014}, + {-81.762123, 30.349609}, + {-71.899902, 42.161682}, + {4.440098, 51.220982}, + {7.153801, 50.701279}, + {7.151791, 50.688873}, + {16.715992, 46.637677}, + {10.138911, 54.319967}, + {-93.808144, 32.46886}, + {151.105896, -33.81266}, + {27.913366, -25.748543}, + {-0.46093, 39.429787}, + {1.280185, 47.29479}, + {-72.597626, 41.989853}, + {-83.032951, 42.369026}, + {-112.015065, 41.255157}, + {-100.479637, 20.662781}, + {11.763859, 55.227428}, + {153.364372, -28.006589}, + {-74.40495, 40.594832}, + {-118.018955, 33.708874}, + {-7.541647, 33.358295}, + {-97.443741, 29.47154}, + {-0.714765, 35.630195}, + {46.784637, 24.571617}, + {-73.832559, 40.861077}, + {-96.801109, 43.525803}, + {9.920003, 48.82028}, + {153.387863, -27.925114}, + {13.639095, 52.536727}, + {-81.821439, 26.450497}, + {21.136272, 52.268998}, + {8.028429, 45.281288}, + {126.949799, 37.595139}, + {13.300115, 52.5072}, + {-71.055102, 42.332354}, + {126.989784, 37.570099}, + {72.199844, 22.55633}, + {21.118551, 52.142327}, + {-105.109215, 39.725773}, + {-79.223991, 35.465721}, + {13.818071, 50.622172}, + {51.521168, 25.363686}, + {-98.535866, 33.868671}, + {-71.136559, 42.297128}, + {72.129799, 21.761608}, + {35.057032, 48.457731}, + {121.582391, 31.313903}, + {8.390578, 49.490363}, + {2.501659, 43.142746}, + {-99.451591, 27.552805}, + {138.59996, -34.911736}, + {12.225509, 49.323504}, + {47.895485, 29.267574}, + {102.591675, 24.972219}, + {100.535258, 25.507688}, + {3.341774, 46.221333}, + {-80.846069, 46.630917}, + {43.914531, 56.162633}, + {-88.054085, 42.100077}, + {23.180634, 53.125721}, + {121.048126, 14.570049}, + {-8.004096, 53.413452}, + {13.330543, 52.506049}, + {-0.187568, 51.540211}, + {12.465033, 41.916767}, + {12.772286, 52.140816}, + {100.217031, 26.907902}, + {43.941727, 56.225947}, + {151.207658, -33.878015}, + {126.973457, 37.475969}, + {-82.981636, 42.535271}, + {-73.042641, 40.787025}, + {-76.82119, 38.810886}, + {153.027921, -27.286361}, + {11.781926, 47.388523}, + {16.330688, 48.130799}, + {-87.636455, 41.888972}, + {-98.475228, 29.419767}, + {-121.267786, 38.682843}, + {22.08776, 51.475558}, + {127.078949, 37.576199}, + {-87.656889, 41.950414}, + {26.933517, 61.901875}, + {102.538729, 24.944014}, + {-86.37117, 42.203106}, + {44.080666, 56.216203}, + {2.502096, 36.552524}, + {-87.681046, 41.822994}, + {-95.413004, 29.700132}, + {-74.277084, 40.585915}, + {-98.154859, 29.673568}, + {18.993099, 50.231022}, + {51.49992, 25.277346}, + {37.584986, 55.759224}, + {-84.931831, 42.46909}, + {-81.709946, 41.455186}, + {-83.557255, 41.658558}, + {21.082658, 52.285026}, + {-73.951073, 40.613853}, + {-90.073168, 29.966487}, + {-71.264765, 42.341995}, + {120.766487, 30.727194}, + {-2.120584, 52.540092}, + {-117.220615, 33.005312}, + {-90.052208, 29.968191}, + {-87.941862, 41.847901}, + {-121.377377, 38.689151}, + {30.453848, -22.7923}, + {-81.351683, 40.84487}, + {-97.449799, 25.925082}, + {-1.627559, 47.583023}, + {4.089311, 47.14979}, + {-95.373578, 29.799794}, + {-94.341921, 32.590801}, + {35.00732, -15.78559}, + {14.299007, 48.431569}, + {-85.758575, 38.380348}, + {-116.642725, 43.633106}, + {1.316968, 43.642365}, + {-116.358718, 43.562893}, + {-95.681129, 37.699554}, + {19.747913, 51.803471}, + {39.227858, 21.567102}, + {39.206684, 21.515916}, + {9.711761, 51.005952}, + {-70.61499, -33.393578}, + {-0.46788, 47.617603}, + {-97.764259, 30.430874}, + {-117.724289, 33.674734}, + {-122.896427, 49.131588}, + {-117.245984, 33.843651}, + {139.538045, 35.513249}, + {21.017659, 52.152755}, + {-121.461288, 38.301353}, + {-2.731327, 48.400756}, + {-87.708765, 41.920788}, + {-117.878738, 33.876064}, + {6.825591, 51.127045}, + {23.056307, 51.0524}, + {100.549721, 13.767341}, + {-122.922754, 47.037098}, + {31.012585, 30.022052}, + {20.956632, 52.186903}, + {151.038061, -33.869013}, + {-76.727221, 39.157987}, + {11.678439, 49.579325}, + {-92.209279, 38.578193}, + {15.862583, 45.79537}, + {1.087464, 52.495194}, + {-83.249382, 42.942322}, + {15.198495, 50.029777}, + {-97.39724, 32.679836}, + {-92.930281, 44.899811}, + {8.878298, 44.910161}, + {80.746559, 7.299195}, + {-2.131817, 53.263191}, + {-72.553436, 42.353683}, + {-96.00901, 36.088734}, + {-117.739967, 34.05531}, + {-123.12812, 49.286636}, + {9.91439, 53.581818}, + {16.303448, 50.853821}, + {-118.47761, 34.417662}, + {150.791092, -33.880241}, + {-122.087318, 37.642005}, + {8.942885, 54.142847}, + {8.271733, 47.059459}, + {16.462515, 63.540485}, + {21.048885, 52.152191}, + {-91.109303, 30.34669}, + {-76.77816, 37.371349}, + {4.374077, 50.693507}, + {36.012161, 31.883593}, + {-88.621743, 39.712081}, + {-84.245773, 33.715283}, + {8.365047, 49.496536}, + {-83.244919, 34.206257}, + {-80.29422, 25.925167}, + {46.714249, 24.894573}, + {-77.07288, 38.946875}, + {-94.50024, 38.892042}, + {-85.680484, 30.202265}, + {-79.593071, 43.671585}, + {20.920076, 52.154974}, + {-75.206444, 39.771378}, + {-81.444656, 41.144336}, + {-81.694946, 41.49765}, + {15.377198, 48.196339}, + {20.920192, 52.232031}, + {46.766716, 24.57819}, + {9.98494, 53.555586}, + {-2.853873, 48.439103}, + {41.099121, 19.120087}, + {-97.800193, 27.568433}, + {-97.689896, 30.441576}, + {-94.31972, 38.866447}, + {9.255938, 45.494324}, + {3.086878, 36.746246}, + {12.350102, 55.640671}, + {2.793498, 49.255664}, + {-96.709152, 32.880455}, + {-80.201729, 25.784163}, + {51.484859, 25.369776}, + {-121.310361, 38.697219}, + {8.685825, 44.776188}, + {-83.593765, 42.514893}, + {11.999611, 45.887066}, + {-156.442749, 20.719233}, + {14.220528, 56.02216}, + {-112.072268, 33.447866}, + {16.298637, 48.129322}, + {35.895184, 31.973095}, + {22.240246, 49.83449}, + {-87.67666, 41.957816}, + {4.368173, 50.811623}, + {-83.976456, 35.736221}, + {-80.91584, 28.950544}, + {115.806046, -31.699907}, + {-117.888345, 33.781636}, + {12.052373, 57.609764}, + {1.430018, 43.550868}, + {-1.914751, 54.836849}, + {-80.825813, 35.897316}, + {138.626129, -34.91156}, + {-0.276372, 51.547604}, + {11.504229, 48.112202}, + {-84.345856, 46.497887}, + {-112.130913, 33.488285}, + {37.701483, 55.581754}, + {-97.194237, 49.895968}, + {7.158907, 50.695766}, + {18.187515, 48.982464}, + {11.935881, 55.132511}, + {26.225254, -29.04038}, + {-0.945449, 43.700476}, + {-87.679169, 42.033428}, + {-123.405255, 48.567259}, + {35.246265, 32.91621}, + {28.112923, -25.963251}, + {12.379889, 55.683582}, + {-0.028641, 51.777622}, + {15.612533, 48.050064}, + {-121.246719, 37.957156}, + {-71.185226, 43.608051}, + {116.84722, -1.213612}, + {116.821903, -1.255408}, + {31.213806, 30.015362}, + {21.17651, 52.157444}, + {2.112649, 47.216682}, + {3.658327, 43.425625}, + {-77.744675, 39.218315}, + {-114.071739, 51.046299}, + {-68.201655, 48.584603}, + {-86.978676, 33.352219}, + {-86.914452, 33.465633}, + {9.646879, 47.685825}, + {-79.280663, 43.711697}, + {-84.442273, 33.974978}, + {14.771371, 40.679101}, + {116.43322, 39.953018}, + {-73.698463, 42.743037}, + {26.838308, 46.650223}, + {-82.980913, 42.619511}, + {7.258825, 51.370939}, + {-117.058265, 33.145521}, + {151.052803, -33.882848}, + {-77.366196, 39.220646}, + {8.629217, 49.873001}, + {-1.560462, 47.20249}, + {-95.568146, 30.221945}, + {-93.610695, 41.620605}, + {3.371072, 51.112371}, + {13.371851, 52.492604}, + {24.748442, 42.121521}, + {-87.647423, 41.568935}, + {2.384833, 48.886589}, + {-81.417819, 40.755652}, + {-119.235001, 35.471031}, + {114.205231, 22.331469}, + {-95.372004, 29.64424}, + {-79.988295, 37.34813}, + {38.729252, 14.10911}, + {-89.070333, 42.302404}, + {4.472481, 52.159556}, + {16.91783, 52.406931}, + {8.932845, 45.611099}, + {7.011678, 51.425539}, + {-0.967701, 47.168674}, + {-95.099937, 31.721994}, + {127.103981, 37.260471}, + {126.968419, 37.232991}, + {126.796499, 37.482089}, + {126.950317, 37.392597}, + {126.75396, 37.527786}, + {126.948862, 37.286851}, + {11.029349, 52.011713}, + {2.338903, 36.263435}, + {-121.3076, 38.484663}, + {6.348306, 48.963966}, + {-92.142471, 38.547187}, + {16.936581, 53.964335}, + {7.102293, 44.207278}, + {-74.042704, 40.712491}, + {-97.843277, 30.18951}, + {6.69676, 51.167839}, + {8.332073, 47.059863}, + {-92.470886, 34.630596}, + {-90.822662, 38.797974}, + {-96.961784, 32.762276}, + {-120.849254, 38.682032}, + {0.137737, 51.741657}, + {32.443379, 34.776749}, + {9.779095, 55.510979}, + {-3.710039, 41.643241}, + {-77.06176, 44.671799}, + {-80.17675, 26.459785}, + {-88.076195, 38.315166}, + {-95.363658, 29.768666}, + {103.903235, 1.307792}, + {-94.318424, 36.869736}, + {-82.744915, 39.638964}, + {-97.489021, 35.294991}, + {7.399485, 50.864661}, + {115.85774, -31.954936}, + {-0.444193, 38.362652}, + {-71.446365, 42.694622}, + {-84.745572, 33.726061}, + {-86.678867, 36.148563}, + {-117.71108, 33.5289}, + {-121.498184, 38.563633}, + {21.087791, 52.261017}, + {-80.258308, 25.797743}, + {-82.961487, 39.978709}, + {1.292778, 43.56302}, + {-87.829402, 41.982533}, + {-104.939979, 39.89671}, + {10.133485, 51.387429}, + {18.505641, -33.925471}, + {-72.710045, 41.757263}, + {18.772299, 50.380047}, + {-97.272167, 32.791304}, + {-38.535526, -3.761269}, + {-122.547203, 37.906647}, + {-101.069206, 50.51902}, + {35.049232, 48.466236}, + {-121.273498, 37.620096}, + {-84.636525, 35.899882}, + {-8.808348, 39.745956}, + {-81.758064, 33.635788}, + {-115.14749, 36.174533}, + {-77.082528, -12.076874}, + {-118.224685, 34.069262}, + {106.71933, -6.191909}, + {24.319216, -27.114168}, + {2.990993, 42.772552}, + {4.87607, 45.769514}, + {-81.352448, 28.369045}, + {44.023457, 36.166889}, + {8.87473, 50.150036}, + {-7.817847, 33.515087}, + {-76.689049, 37.271233}, + {3.038272, 50.613286}, + {28.219007, -25.748525}, + {-97.135765, 49.916794}, + {9.79681, 48.800221}, + {8.224692, 52.592006}, + {-6.098713, 55.837166}, + {-97.40466, 32.732567}, + {-77.002946, 38.862774}, + {-83.944069, 35.952572}, + {-99.0886, 19.433589}, + {-70.703812, 43.138592}, + {-111.98439, 41.247864}, + {-82.938666, 40.103487}, + {12.364697, 53.654877}, + {1.09785, 49.406162}, + {-73.925977, 40.863498}, + {-74.172394, 40.734062}, + {13.916373, 51.840683}, + {128.388824, 36.067883}, + {13.362388, 52.381365}, + {71.223167, 21.748322}, + {-6.384329, 55.810428}, + {-71.312271, 42.657555}, + {-0.049284, 51.50954}, + {-73.990402, 40.710262}, + {-98.177048, 29.662884}, + {138.810364, 37.021038}, + {-1.478402, 53.340485}, + {129.114532, 35.181927}, + {-79.968628, 40.862719}, + {6.158777, 49.102814}, + {2.675199, 48.509912}, + {-87.681723, 35.884311}, + {-113.490468, 53.616074}, + {129.18541, 35.180298}, + {14.134501, 66.324743}, + {-98.611632, 29.472831}, + {-1.422388, 53.359066}, + {2.309349, 48.835925}, + {2.84731, 50.434029}, + {-75.468914, 40.481639}, + {-85.80574, 38.304497}, + {116.762745, 6.47463}, + {-91.189796, 39.717876}, + {-73.942467, 40.837635}, + {-73.920364, 40.66169}, + {7.15132, 43.678358}, + {-121.535797, 38.113197}, + {174.800858, -36.999268}, + {103.862048, 1.289833}, + {-6.547273, 53.707691}, + {16.336367, 51.301025}, + {114.170166, 22.27742}, + {-104.932905, 40.413402}, + {153.040955, -27.431501}, + {2.769254, 48.557194}, + {10.846523, 48.232165}, + {-0.362719, 51.608807}, + {-118.456076, 34.233518}, + {14.370231, 50.02591}, + {-121.407482, 38.695033}, + {-89.634642, 21.074697}, + {-104.89063, 40.233381}, + {2.551595, 48.840927}, + {21.156002, 51.959129}, + {-117.028998, 32.758908}, + {21.033039, 52.188698}, + {-74.143837, 40.703236}, + {-71.095402, 42.479092}, + {-112.13394, 33.525008}, + {100.541744, 13.764417}, + {15.170022, 48.608542}, + {-75.600754, 40.026237}, + {9.517322, 47.902981}, + {2.552617, 48.965557}, + {-85.590315, 42.207889}, + {-82.115204, 40.929123}, + {-80.337064, 25.736589}, + {2.223027, 48.730408}, + {6.34676, 46.923504}, + {-95.916717, 36.164442}, + {-0.795685, 47.914337}, + {-1.07783, 45.035018}, + {-97.147385, 49.731293}, + {-117.072052, 33.052235}, + {16.464989, 48.238968}, + {139.620903, 35.586846}, + {140.38361, 35.763787}, + {12.080749, 53.791219}, + {-73.806276, 45.547704}, + {22.694567, 62.77062}, + {-115.173912, 36.071121}, + {-115.180374, 36.094952}, + {2.366738, 48.732456}, + {-121.638362, 37.886907}, + {-119.224485, 34.263827}, + {115.564362, -30.729975}, + {-96.742279, 32.709957}, + {37.583348, 55.744911}, + {-82.905026, 40.026289}, + {-105.121484, 40.583567}, + {-122.371918, 37.728359}, + {-97.157822, 49.887051}, + {-117.097164, 32.734457}, + {-96.919151, 33.040554}, + {-8.026184, 12.64456}, + {-97.561798, 32.718063}, + {14.070712, 63.03096}, + {-103.050203, 35.181729}, + {-121.325522, 38.648526}, + {-71.256209, 42.351569}, + {4.88523, 44.896574}, + {21.023304, 52.250924}, + {30.337486, -30.897366}, + {-79.527725, 8.973666}, + {-84.933418, 34.758743}, + {-87.617249, 41.871883}, + {-122.986076, 49.146149}, + {26.981541, -25.301918}, + {7.604497, 47.524269}, + {7.312644, 47.746521}, + {34.048813, -14.111748}, + {-105.231705, 39.580807}, + {126.964146, 37.351639}, + {-77.449936, 37.620403}, + {-92.174172, 46.808397}, + {3.773848, 43.676613}, + {-100.020193, 32.476344}, + {7.591601, 47.562782}, + {-7.801074, 53.734947}, + {10.582004, 35.787033}, + {-81.155449, 40.914318}, + {28.255589, -15.48886}, + {39.118877, 21.716465}, + {-73.986828, 40.711733}, + {-77.050797, 38.842793}, + {1.785715, 49.264183}, + {-117.670357, 33.468624}, + {153.518845, -28.792929}, + {5.095604, 43.680908}, + {5.747453, 52.364835}, + {103.837326, 1.390784}, + {-80.104836, 26.117205}, + {18.756561, 50.37281}, + {19.633272, 51.404881}, + {-119.897133, 39.643957}, + {-120.863088, 37.481898}, + {11.582112, 53.748487}, + {5.045174, 47.346432}, + {120.19558, 22.950741}, + {30.599753, 50.464785}, + {15.055076, 50.760452}, + {37.407944, 55.806876}, + {30.553524, 50.422676}, + {-0.337543, 51.751366}, + {174.725174, -36.884521}, + {-102.497768, 20.297223}, + {72.921059, 20.364336}, + {22.568316, 50.132933}, + {3.2772, 49.84306}, + {3.048058, 48.955528}, + {-74.55723, 45.496139}, + {108.009018, 16.270708}, + {74.830635, 15.198259}, + {1.89011, 50.941679}, + {103.737605, 1.35728}, + {-78.35289, 38.240372}, + {-123.039, 44.099114}, + {-73.991002, 40.75849}, + {-114.061089, 51.038544}, + {153.51182, -28.164087}, + {9.189854, 47.415398}, + {-95.445442, 32.091225}, + {-22.706814, 64.04422}, + {-78.180763, 39.707397}, + {-0.144618, 51.52776}, + {107.582565, -6.898744}, + {-84.550427, 38.219939}, + {-90.87459, 32.316812}, + {-77.133717, 38.86918}, + {-77.05825, -12.005855}, + {-84.326942, 33.835781}, + {-87.115532, 34.695084}, + {18.515445, 54.362984}, + {-91.543106, 41.925594}, + {-16.511692, 15.984455}, + {-88.201791, 42.046025}, + {-98.234398, 19.075151}, + {-101.190941, 19.722553}, + {-76.486715, 39.330761}, + {15.05181, 50.75872}, + {-87.641841, 41.946442}, + {-90.089157, 29.961233}, + {-80.139893, 39.498775}, + {-117.229584, 33.084538}, + {21.038597, 52.160206}, + {28.002077, -26.005274}, + {-86.777374, 33.463745}, + {30.272514, 59.998392}, + {-79.701714, 43.606709}, + {-88.091956, 41.905663}, + {-78.846596, 34.962748}, + {127.122986, 37.44101}, + {-88.134476, 41.905994}, + {-3.379103, 50.732342}, + {-73.909622, 40.66349}, + {-120.890939, 37.533243}, + {-87.619408, 33.954342}, + {-90.165564, 29.995778}, + {-88.449924, 43.764641}, + {5.880233, 46.097256}, + {-94.914101, 39.922882}, + {28.203037, -25.757061}, + {-74.986633, 39.906052}, + {-117.099594, 34.084167}, + {-84.089149, 9.934709}, + {-94.888214, 36.211803}, + {-96.056374, 30.256938}, + {-84.128845, 9.939138}, + {37.542231, 55.796017}, + {13.245214, 52.450375}, + {38.745553, 55.8498}, + {19.207664, 47.432733}, + {11.568707, 51.786959}, + {4.6214, 51.813137}, + {15.829316, 53.297705}, + {-90.220913, 38.683325}, + {-98.383794, 29.559305}, + {27.915377, -33.009884}, + {72.669975, 23.049804}, + {-79.475052, 9.015862}, + {-79.985506, 36.623771}, + {-94.148127, 36.345993}, + {2.922461, 49.857793}, + {126.898947, 37.478974}, + {127.054512, 37.513287}, + {-73.966714, 40.750634}, + {13.217639, 47.926481}, + {9.401447, 52.332951}, + {31.838787, -28.050432}, + {37.73481, 55.742142}, + {4.334685, 50.834331}, + {-106.179524, 34.651531}, + {151.103104, -33.769802}, + {28.173766, -25.9897}, + {28.718372, 41.000713}, + {-74.430809, 40.865523}, + {-92.386535, 42.51832}, + {-0.065552, 51.43186}, + {5.079208, 47.367142}, + {-85.655311, 42.282486}, + {-120.979952, 37.618867}, + {8.660366, 50.11895}, + {-77.043327, -11.918916}, + {-73.477501, 41.12289}, + {-121.28737, 38.811866}, + {-122.918326, 42.366959}, + {16.46806, 48.157076}, + {139.641033, 35.279212}, + {-106.228004, 31.7059}, + {145.989868, -16.929779}, + {-118.158531, 33.912354}, + {-118.235204, 34.143011}, + {151.202164, -33.811035}, + {23.770544, 37.880703}, + {12.453921, 55.64846}, + {103.697687, 1.348808}, + {-104.916444, 39.674282}, + {34.92434, 32.439146}, + {110.795052, -7.552176}, + {28.150415, -26.360142}, + {12.473449, 55.712078}, + {31.19002, 30.082752}, + {-115.20639, 36.158623}, + {-79.93982, 41.199083}, + {-110.9357, 32.15271}, + {150.964233, -33.793571}, + {-121.275034, 38.78226}, + {11.139764, 46.07111}, + {20.236425, 52.626965}, + {-1.407614, 43.789411}, + {-86.577423, 36.020229}, + {114.19474, 22.238663}, + {122.854618, 11.178256}, + {7.634977, 43.799641}, + {8.684974, 50.595885}, + {13.328367, 52.613857}, + {-120.930953, 37.578628}, + {-106.291588, 39.244255}, + {16.378581, 48.209938}, + {-87.416214, 39.416367}, + {-77.008774, 38.794965}, + {24.979464, 60.240196}, + {7.069148, 50.702956}, + {-74.070824, 4.607513}, + {10.152083, 53.488979}, + {126.994431, 37.520203}, + {-118.448524, 33.959373}, + {-83.161484, 43.005268}, + {-82.04684, 29.062667}, + {2.775913, 48.856518}, + {26.202587, 41.847317}, + {14.61962, 50.103758}, + {35.361315, 32.804302}, + {2.550124, 49.004785}, + {-95.30584, 30.313507}, + {151.352066, -32.773537}, + {40.989855, 64.417259}, + {36.441586, 33.650372}, + {-84.587994, 42.733516}, + {0.94824, 45.25631}, + {-97.680038, 30.495043}, + {-82.693498, 34.526644}, + {-89.621689, 33.77256}, + {145.256744, -37.895252}, + {-0.112737, 51.450934}, + {-2.129805, 51.945103}, + {3.180268, 49.708623}, + {-84.916649, 34.487555}, + {-95.571683, 30.728605}, + {71.443604, 21.035639}, + {-80.748001, 35.157612}, + {-99.811105, 29.20141}, + {-75.471176, 42.45686}, + {-111.814877, 33.415045}, + {-81.574371, 38.34005}, + {-111.601998, 40.145991}, + {15.13156, 37.602383}, + {15.166176, 37.701756}, + {-72.096413, 41.355469}, + {-84.518562, 42.672656}, + {0.490815, 44.852745}, + {-111.947289, 41.031284}, + {-75.540848, 6.152785}, + {7.86115, 58.147476}, + {19.909169, 50.794683}, + {126.849762, 37.303154}, + {16.989294, 51.122635}, + {-79.494491, 43.669975}, + {-89.842148, 35.17728}, + {-108.467362, 41.638899}, + {-87.667653, 41.960828}, + {-106.616272, 32.070158}, + {12.351081, 50.876892}, + {10.415841, 50.584099}, + {101.119118, 13.33858}, + {-115.286063, 36.089603}, + {-95.733866, 29.578096}, + {-96.646814, 32.857167}, + {-117.372251, 33.199578}, + {-97.331465, 32.750746}, + {-122.305439, 47.502358}, + {-93.06044, 34.491203}, + {37.617603, 55.779491}, + {5.348111, 43.349539}, + {-121.215272, 38.652162}, + {-82.462959, 42.944042}, + {-78.861282, 43.867413}, + {-73.878097, 40.652264}, + {38.159374, 55.603024}, + {22.569035, 51.251545}, + {-87.926483, 14.642437}, + {-82.48728, 34.789573}, + {-83.201881, 35.362244}, + {-85.720093, 10.256007}, + {-99.594696, 39.926071}, + {-0.111028, 51.485332}, + {-74.16235, 41.092438}, + {-0.475672, 51.348743}, + {-0.618255, 53.20858}, + {-102.281204, 36.209095}, + {-122.48233, 37.699341}, + {-88.689369, 30.584475}, + {126.975075, 37.387951}, + {103.699456, 1.348064}, + {9.846186, 63.29586}, + {3.590665, 36.552954}, + {-118.358185, 33.812662}, + {30.211287, 60.001083}, + {14.016384, 42.275536}, + {139.629174, 35.292567}, + {-111.74556, 33.337952}, + {-97.621958, 27.828088}, + {-84.392712, 33.746177}, + {106.660782, -6.163215}, + {-76.919296, 38.962311}, + {-111.93778, 40.620507}, + {-115.122969, 36.18699}, + {-97.366653, 27.699598}, + {1.075077, 51.260258}, + {-0.138788, 51.534607}, + {-119.072464, 35.362705}, + {-82.867538, 35.457817}, + {-117.319427, 33.183371}, + {-82.994426, 36.974135}, + {16.281292, 48.162472}, + {30.10886, 31.220282}, + {-96.998664, 33.025189}, + {-73.991823, 40.749865}, + {-112.411637, 33.668276}, + {-72.08545, 41.362389}, + {-104.980044, 40.223062}, + {-123.50042, 39.674046}, + {153.081579, -27.250602}, + {28.237957, 62.892044}, + {2.370303, 48.853298}, + {-106.766164, 32.29151}, + {-71.398537, 41.872734}, + {6.935356, 48.283047}, + {-81.518287, 41.046927}, + {-75.14341, 39.918755}, + {-97.516434, 25.992531}, + {27.488651, -11.635554}, + {35.0604, 48.450389}, + {4.933538, 45.721076}, + {11.063627, 47.300672}, + {46.730194, 24.554277}, + {151.009019, -33.85344}, + {28.672194, 41.054958}, + {-79.757636, 40.350715}, + {11.378952, 47.258872}, + {0.950385, 45.356194}, + {-88.355105, 42.089479}, + {27.262651, -25.601791}, + {106.638118, -6.133098}, + {5.329537, 45.135841}, + {-97.206444, 49.923519}, + {-86.039825, 39.999568}, + {2.926683, 47.098782}, + {14.533589, 53.422157}, + {-98.527649, 29.483944}, + {27.790476, -26.595696}, + {-75.770717, 45.38412}, + {10.874915, 55.304024}, + {152.380353, -27.606577}, + {3.210542, 43.366509}, + {-123.089638, 44.040546}, + {73.466446, 22.065304}, + {70.79174, 21.781933}, + {-121.835114, 42.80682}, + {112.674301, -7.304272}, + {11.946154, 49.319223}, + {-79.618217, 43.733665}, + {3.086966, 45.77153}, + {-95.357682, 29.691205}, + {2.758261, 36.645066}, + {-112.016464, 33.469334}, + {-121.910914, 37.234703}, + {29.901205, -27.776827}, + {149.136994, -35.330293}, + {-86.692772, 41.509487}, + {27.74645, -15.85757}, + {37.531197, 55.634544}, + {23.809834, 47.20956}, + {-90.492195, 30.483038}, + {-88.081352, 42.064178}, + {-1.585677, 53.845959}, + {19.467578, 50.47707}, + {37.653347, 55.656685}, + {-81.378471, 38.730404}, + {28.307896, -25.746862}, + {-97.526245, 32.628933}, + {-73.84843, 40.799216}, + {8.539474, 47.378227}, + {-73.66716, 45.558441}, + {5.271629, 60.382961}, + {-86.796702, 36.134987}, + {-80.175819, 26.13317}, + {9.800463, 57.404751}, + {-72.255994, 41.333938}, + {-88.425125, 44.23555}, + {1.998121, 48.949799}, + {-83.445004, 42.533765}, + {50.158398, 36.239468}, + {-95.852623, 32.227167}, + {13.735478, 52.423402}, + {114.182381, 22.279875}, + {71.458229, 51.129696}, + {18.819135, -34.078839}, + {0.078515, 49.204556}, + {-105.00032, 39.72747}, + {-84.679681, 42.670948}, + {7.947581, 49.962912}, + {-92.966064, 45.027359}, + {8.80208, 47.201774}, + {55.459438, 25.392525}, + {-73.98227, 40.748778}, + {-75.987016, 38.897169}, + {-80.294841, -3.50674}, + {-79.92469, 35.917461}, + {9.812305, 52.281396}, + {39.216244, 21.576773}, + {-83.27837, 30.851435}, + {-81.273518, -4.571488}, + {-96.680855, 32.891163}, + {38.019989, 55.743397}, + {-96.858772, 32.828812}, + {18.790073, 47.499368}, + {-74.169685, 40.68919}, + {-79.402473, 43.89642}, + {-80.655617, -3.66899}, + {-121.034402, 37.665893}, + {10.237087, 50.023693}, + {17.831287, 59.425396}, + {2.868777, 43.297977}, + {6.13031, 49.100597}, + {-85.132217, 41.048546}, + {-81.097099, 29.159655}, + {-72.31312, 41.321799}, + {39.191063, 21.768293}, + {30.217731, 59.902098}, + {-77.475014, 43.069782}, + {-97.647598, 30.411022}, + {-3.286803, 47.779018}, + {63.592285, 53.170061}, + {-87.774864, 41.902046}, + {16.35055, 48.257099}, + {-0.076362, 51.50751}, + {-76.92673, -12.037244}, + {43.924449, 56.262668}, + {15.846083, 45.77663}, + {-90.473106, 38.761036}, + {-95.073082, 29.528654}, + {-119.757233, 39.362965}, + {-104.786438, 33.375916}, + {13.909221, 52.048431}, + {7.002065, 51.039333}, + {6.762342, 51.434807}, + {1.122753, 51.095368}, + {18.935195, 47.452042}, + {4.366558, 36.342415}, + {15.959277, 45.813284}, + {-97.590109, 35.45866}, + {13.331847, 51.328296}, + {-71.161153, 42.504077}, + {11.302075, 50.354696}, + {-81.766814, 28.628128}, + {120.57312, 24.0434}, + {21.06926, 52.22562}, + {-116.697144, 35.252466}, + {-97.31855, 32.781981}, + {46.610336, 24.805227}, + {28.125252, -26.238405}, + {32.338112, -10.599055}, + {-73.987968, 40.749924}, + {9.901005, 48.419716}, + {2.431945, 48.877048}, + {-111.645874, 33.247719}, + {-79.424526, 43.635305}, + {-122.404648, 37.744593}, + {6.58093, 51.529363}, + {18.3929, 48.38969}, + {2.899754, 42.779144}, + {6.932483, 51.480991}, + {6.36352, 46.061157}, + {14.857212, 53.548642}, + {-117.425411, 47.661881}, + {19.13265, 47.661861}, + {6.087487, 50.768969}, + {12.21102, 51.701573}, + {46.55525, 25.012798}, + {-82.981911, 39.768421}, + {19.679874, 50.239861}, + {20.738644, 52.137238}, + {151.276954, -33.794293}, + {3.03663, 42.548187}, + {23.578701, 46.765675}, + {-106.690315, 35.259609}, + {-118.37281, 33.767609}, + {-118.294597, 34.060782}, + {-90.777012, 38.344759}, + {-98.562474, 29.536546}, + {18.135881, 48.230972}, + {19.485317, 51.712714}, + {-121.505806, 38.615775}, + {5.257195, 43.391621}, + {-73.898485, 40.758083}, + {152.987061, -27.204367}, + {30.928553, -29.813225}, + {6.076426, 50.843583}, + {-122.14312, 47.625727}, + {31.208462, 30.051571}, + {-81.863965, 34.176304}, + {-119.360184, 36.325851}, + {8.889556, 45.596723}, + {-90.358609, 38.517753}, + {-1.477096, 12.385563}, + {-97.940626, 29.872666}, + {-116.967346, 32.554878}, + {138.644058, -35.005127}, + {18.588587, 51.199036}, + {72.399963, 22.877821}, + {-98.172165, 26.262822}, + {-81.752647, 26.334664}, + {4.904231, 45.739772}, + {3.207912, 43.369239}, + {-95.45678, 30.218462}, + {-117.277486, 34.07402}, + {-3.780929, 48.163864}, + {8.269144, 52.753191}, + {0.640262, 47.305424}, + {28.124519, -25.443235}, + {-86.408501, 37.751274}, + {-117.868729, 33.638855}, + {-98.351088, 29.580171}, + {-104.972879, 39.658718}, + {139.802925, 35.743111}, + {8.513372, 50.056898}, + {126.620003, 37.54142}, + {-90.124203, 32.279023}, + {30.933895, 29.964725}, + {6.390134, 51.692041}, + {-87.717917, 41.97484}, + {-75.592232, 6.177012}, + {-86.66629, 33.374859}, + {7.966444, 50.411809}, + {-73.84185, 40.940483}, + {-82.953226, 42.541811}, + {-111.969551, 33.361176}, + {-92.391472, 34.783001}, + {7.573591, 47.080244}, + {-2.77818, 54.032421}, + {9.227836, 48.464832}, + {-75.825615, 5.982348}, + {-100.031204, 49.609386}, + {2.333953, 48.850494}, + {147.384742, -35.151984}, + {13.469796, 52.504608}, + {-84.256022, 38.974668}, + {126.905239, 37.385344}, + {139.743805, 35.990868}, + {34.438587, -13.770274}, + {-105.076101, 39.497805}, + {-84.546822, 33.980747}, + {-1.157766, 52.645939}, + {16.360417, 48.210005}, + {-84.359016, 33.632446}, + {145.838943, -31.498037}, + {5.026266, 47.32349}, + {9.09347, 48.835333}, + {-86.130947, 39.848149}, + {8.814878, 49.25082}, + {-73.939201, 40.657546}, + {-79.529137, 8.97341}, + {-117.849811, 33.812067}, + {10.043285, 53.636925}, + {28.186699, -25.863085}, + {-112.949493, 52.579845}, + {-86.411728, 36.372791}, + {-81.482668, 28.406706}, + {55.56763, 24.203046}, + {-98.48452, 31.31406}, + {46.802185, 24.818689}, + {11.589014, 48.439544}, + {60.629752, 56.84591}, + {-2.709468, 51.373871}, + {-71.124901, 41.741104}, + {-1.576673, 46.41457}, + {-73.587044, 45.521103}, + {-118.276386, 34.066405}, + {-117.298431, 34.094841}, + {144.990773, -38.288408}, + {27.938795, -26.166428}, + {-96.099228, 30.120197}, + {-0.802279, 45.248425}, + {-84.171867, 33.996544}, + {30.345544, 60.00573}, + {50.121861, 26.372086}, + {-82.40228, 28.183769}, + {-90.693291, 38.5588}, + {10.932045, 59.215481}, + {-8.004146, 12.640632}, + {-97.464296, 32.80284}, + {28.194667, -26.174403}, + {23.589329, 38.393276}, + {-84.400742, 33.689606}, + {16.080399, 45.741776}, + {-63.085732, 18.066629}, + {37.513613, 55.626691}, + {-118.251747, 34.062897}, + {20.975658, 52.172218}, + {4.127278, 46.471165}, + {42.016102, 42.088203}, + {-84.425148, 33.810898}, + {10.31322, 50.375954}, + {-0.816428, 35.585007}, + {-87.746418, 41.795826}, + {115.931802, -31.957317}, + {28.036325, -26.194908}, + {6.184941, 49.372658}, + {-86.296657, 39.779106}, + {38.088104, 55.588891}, + {-79.782954, 43.667624}, + {-77.255195, 38.908819}, + {-91.332405, 40.396236}, + {-94.527557, 39.112656}, + {50.146188, 53.21267}, + {150.9961, -34.106793}, + {4.477784, 51.938602}, + {-86.362307, 39.762239}, + {-81.318108, 28.630537}, + {-91.561157, 29.835466}, + {-102.405617, 34.831509}, + {50.141711, 53.212555}, + {14.56449, 45.28112}, + {13.384203, 52.464259}, + {9.127011, 53.094868}, + {0.498079, 46.810644}, + {-73.974487, 40.753258}, + {-90.370455, 38.742337}, + {153.019685, -27.472043}, + {-85.471138, 34.989624}, + {-117.504217, 34.131252}, + {6.646637, 45.553181}, + {15.462202, 48.176478}, + {-84.534354, 42.8104}, + {48.422684, 32.366432}, + {-1.571789, 53.816551}, + {-95.640984, 30.110107}, + {-83.886626, 39.504811}, + {0.10615, 51.48484}, + {-95.41993, 29.612654}, + {50.208025, 53.19232}, + {5.07475, 52.00001}, + {6.002645, 51.174496}, + {-0.303382, 49.173065}, + {21.025694, 52.242012}, + {-104.349803, 19.104927}, + {-87.941002, 42.055519}, + {-99.6287, 44.078835}, + {9.492513, 47.663212}, + {150.851659, -34.662905}, + {-118.158329, 33.938569}, + {-93.743843, 32.511536}, + {-83.152344, 42.412235}, + {-80.205543, 25.797063}, + {-82.822022, 27.889717}, + {-0.938266, 52.208118}, + {106.721558, -6.290719}, + {-97.244718, 37.661102}, + {16.542591, 48.207554}, + {-84.497898, 38.068306}, + {174.96434, -41.174774}, + {24.992436, 60.286509}, + {72.822647, 19.144981}, + {-83.038033, 42.366695}, + {0.265698, 46.447485}, + {-98.675613, 29.433861}, + {-96.89222, 32.706913}, + {-79.861663, 40.135137}, + {127.094185, 37.598442}, + {4.452859, 51.862779}, + {72.831055, 19.13685}, + {-82.998662, 42.45665}, + {13.779426, 52.81057}, + {127.030371, 37.542896}, + {13.558582, 42.315449}, + {-81.388899, 28.516037}, + {153.02684, -27.469647}, + {8.937966, 48.802082}, + {14.335076, 51.49775}, + {-117.8526, 33.726742}, + {-101.71093, 21.076658}, + {-79.750316, 35.276722}, + {-122.18904, 47.621135}, + {-71.162994, 42.373753}, + {-82.461681, 27.992054}, + {4.764766, 52.309107}, + {-1.477602, 53.372692}, + {-87.56942, 37.976063}, + {-98.196526, 31.16503}, + {150.956739, -33.697908}, + {10.140606, 50.147207}, + {-77.771843, 34.315903}, + {18.485138, 53.741833}, + {25.741903, 62.247913}, + {-95.193939, 29.544909}, + {-71.118637, 42.341141}, + {106.798683, -6.218727}, + {8.77435, 49.357025}, + {-84.353711, 33.810618}, + {103.906724, 1.386157}, + {-79.663017, 44.016052}, + {37.648776, 55.82792}, + {-118.58978, 34.200346}, + {19.191046, 50.760094}, + {110.416058, -7.009365}, + {7.013063, 51.016155}, + {-74.096057, 40.6337}, + {-81.453725, 40.952836}, + {-123.143115, 44.294457}, + {37.306582, 55.887222}, + {-84.998227, 41.732853}, + {9.102199, 52.669252}, + {-122.513573, 45.509636}, + {-97.734083, 30.424572}, + {-72.636486, 41.763909}, + {153.154373, -27.454952}, + {-110.932186, 32.249262}, + {11.518298, 48.526318}, + {-75.296589, 39.59053}, + {39.726208, 21.444782}, + {-85.792267, 37.765999}, + {-82.079698, 28.745406}, + {-74.164524, 40.624226}, + {-0.267792, 44.875031}, + {150.868408, -33.679741}, + {36.288578, 33.514526}, + {3.258653, 6.575708}, + {-121.643909, 38.561926}, + {-82.401276, 27.892149}, + {106.899143, -6.213887}, + {-121.14451, 38.692584}, + {127.108253, 37.363998}, + {-84.290253, 30.38273}, + {10.232724, 44.919186}, + {-85.314766, 35.063137}, + {-111.819412, 33.463165}, + {18.67547, 54.193825}, + {23.627132, 37.95808}, + {103.745884, 1.390835}, + {14.542081, 53.462433}, + {-95.361343, 29.877441}, + {-117.126093, 32.755615}, + {106.833954, -6.205338}, + {18.670176, -34.070805}, + {30.668358, -24.372069}, + {-110.312175, 41.308}, + {-84.562737, 33.855827}, + {-103.274339, 20.647533}, + {-95.529423, 29.796364}, + {8.562454, 49.378189}, + {5.587413, 47.459083}, + {21.247151, 48.73632}, + {12.704715, 41.952496}, + {7.101253, 45.132694}, + {3.847194, 43.62131}, + {-84.995453, 34.795586}, + {-76.866905, 38.89595}, + {106.872765, -6.271681}, + {106.816112, -6.228653}, + {-75.741928, 45.360439}, + {-94.616158, 35.923382}, + {5.372593, 43.34079}, + {-116.967094, 33.173373}, + {-84.089455, 39.823521}, + {-117.976372, 33.879022}, + {-85.152077, 34.331944}, + {12.791382, 52.928058}, + {23.761341, 61.327957}, + {-95.489056, 29.985894}, + {-115.112687, 36.080353}, + {-75.488647, 5.054819}, + {-95.266205, 29.599573}, + {16.374105, 48.210567}, + {106.651402, -6.242553}, + {31.939905, 30.628736}, + {-81.703758, 41.29903}, + {-100.431335, 25.664145}, + {37.401491, 55.701154}, + {-82.566257, 28.036622}, + {-89.762779, 30.273233}, + {-117.012627, 32.530483}, + {9.892618, 53.597687}, + {-1.514777, 47.140831}, + {59.64996, 36.310711}, + {20.923004, 52.169743}, + {-87.914322, 43.068978}, + {-73.678452, 45.437866}, + {106.912811, -6.274803}, + {9.989414, 53.557114}, + {21.371931, 50.875847}, + {13.21825, 32.901886}, + {117.473377, 0.147273}, + {-81.959724, 31.578585}, + {-88.28093, 41.756523}, + {-119.836527, 39.52779}, + {103.842026, 1.326248}, + {14.849358, 53.348492}, + {-98.496141, 29.511226}, + {-88.299835, 41.890583}, + {-0.563169, 44.824505}, + {12.277691, 57.778767}, + {14.267951, 57.84523}, + {37.430164, 55.8758}, + {32.5728, 0.311043}, + {73.156456, 22.326117}, + {12.296781, 51.383921}, + {-66.176327, -17.376985}, + {38.358822, 55.863095}, + {7.093229, 50.929806}, + {47.528282, -18.903351}, + {8.293548, 50.004176}, + {76.972051, 10.997902}, + {7.741733, 48.584085}, + {76.949653, 11.165942}, + {73.180405, 22.304621}, + {-122.206228, 47.791076}, + {77.39242, 13.093433}, + {37.631875, 55.68763}, + {99.545313, 8.334633}, + {77.600478, 12.995511}, + {8.122365, 47.907404}, + {30.223147, 60.040546}, + {-0.486037, 51.473961}, + {-99.100874, 18.987818}, + {104.653371, 11.423516}, + {122.097758, 11.630233}, + {104.842099, 11.582549}, + {116.174225, 23.291919}, + {30.319203, 59.9014}, + {5.253204, 52.337479}, + {-84.675997, 33.492771}, + {12.058265, 42.775695}, + {21.011772, 52.222653}, + {20.990437, 52.234719}, + {18.910163, 50.306598}, + {53.276249, 56.875817}, + {23.788746, 52.099242}, + {8.477074, 49.999417}, + {37.64634, 55.793429}, + {11.966148, 51.487114}, + {-74.159058, 4.614896}, + {30.265029, 60.06568}, + {82.834294, 52.549998}, + {30.336343, 60.054572}, + {-81.365018, 28.546625}, + {33.467148, 47.94577}, + {-80.704808, 35.127816}, + {6.919089, 50.648589}, + {116.168421, 23.282899}, + {-76.853179, 38.922843}, + {-83.93064, 33.039618}, + {26.119331, 44.427552}, + {-84.41307, 33.800097}, + {139.652615, 35.668962}, + {51.498757, 35.785854}, + {120.480094, 23.965528}, + {-7.974969, 12.637684}, + {-74.131027, 4.665165}, + {-58.459243, -34.55169}, + {11.57591, 48.13755}, + {10.988233, 49.578402}, + {12.933921, 57.719264}, + {116.184827, 23.308936}, + {7.208402, 48.458609}, + {72.813138, 18.955455}, + {13.351222, 52.716759}, + {28.1835, -25.82593}, + {20.839141, 53.837748}, + {-86.172526, 39.734778}, + {9.463917, 53.595919}, + {9.219969, 50.711658}, + {-70.595383, -33.392624}, + {23.182673, 53.109741}, + {-92.543774, 38.312118}, + {-116.98616, 33.89827}, + {13.266762, 52.331309}, + {151.283386, -33.888786}, + {-95.125234, 29.650219}, + {7.646024, 49.434102}, + {-80.425911, 25.470995}, + {-79.282209, 43.767237}, + {-72.56485, 43.283379}, + {-87.989426, 42.196873}, + {-80.192161, 26.803826}, + {106.870361, -6.279138}, + {-79.876869, 43.122826}, + {-91.680489, 36.602233}, + {17.835359, 53.074804}, + {-71.43462, 41.810579}, + {-123.507459, 48.461859}, + {5.700056, 58.976196}, + {16.134355, 54.282213}, + {-74.158806, 4.63266}, + {-16.98264, 14.447267}, + {-97.377828, 32.936358}, + {-118.481003, 33.996162}, + {8.244466, 50.015763}, + {7.36369, 47.912998}, + {-88.274856, 42.259679}, + {-79.729271, 43.565304}, + {23.892145, 55.076176}, + {106.699638, -6.216724}, + {-66.181821, -17.333948}, + {106.878495, -6.299022}, + {18.634922, 54.29896}, + {-76.754379, 42.176399}, + {31.234472, 30.364391}, + {5.368237, 44.756287}, + {-121.903599, 37.425909}, + {-84.233838, 39.751827}, + {7.095434, 50.796735}, + {11.617385, 52.070128}, + {12.258554, 41.800211}, + {12.244427, 51.803779}, + {11.49037, 48.186622}, + {-118.708817, 34.28751}, + {-84.413719, 34.073677}, + {4.692201, 45.37082}, + {153.012886, -27.471758}, + {8.662559, 49.031994}, + {10.56995, 53.554076}, + {-80.481293, 39.283062}, + {10.872973, 59.959682}, + {-84.384765, 33.753003}, + {-86.674097, 33.545277}, + {137.793172, -34.909406}, + {30.473494, 50.450054}, + {116.121452, -31.566809}, + {28.430646, 37.040578}, + {7.625086, 51.008826}, + {-95.300659, 29.64356}, + {-108.726972, 37.08964}, + {2.336002, 48.915863}, + {126.734261, 37.36821}, + {35.960763, 31.982418}, + {35.973606, 32.004814}, + {1.031275, 48.233673}, + {16.493011, 48.278809}, + {106.951485, -6.299963}, + {100.499756, 13.842281}, + {10.281109, 44.852852}, + {103.758509, 1.326976}, + {-75.627335, 39.676647}, + {11.316764, 45.419939}, + {11.260294, 46.315856}, + {4.311883, 52.100594}, + {-104.648041, 38.312222}, + {-95.452393, 29.256042}, + {18.704754, 46.350613}, + {-83.045532, 29.153973}, + {11.460115, 46.874932}, + {-111.875677, 33.71612}, + {-92.136932, 38.955116}, + {-86.333542, 33.599342}, + {103.960312, 1.361466}, + {10.94777, 59.939119}, + {13.06898, 52.632755}, + {16.230701, 39.741112}, + {-82.890584, 34.551179}, + {7.451872, 58.023788}, + {21.589418, 51.878469}, + {-117.0732, 33.1389}, + {-97.698418, 32.471951}, + {100.615257, 13.907014}, + {12.386098, 51.2692}, + {54.990373, 51.176452}, + {-92.177666, 31.695938}, + {-84.121876, 39.733153}, + {-97.443119, 35.201094}, + {-118.925766, 46.118057}, + {10.685664, 62.250017}, + {9.053776, 63.571253}, + {12.477018, 50.733204}, + {-82.677626, 39.73806}, + {26.342436, -29.085443}, + {2.469333, 48.839799}, + {-89.194588, 34.827518}, + {2.473018, 48.899635}, + {-97.401098, 30.515383}, + {0.60386, 44.413399}, + {21.728952, 52.34523}, + {10.453307, 61.103722}, + {-73.975929, 40.88924}, + {-6.241827, 53.287838}, + {-117.83609, 33.69194}, + {-71.119439, 42.382395}, + {28.868013, -31.163242}, + {-79.911547, 40.458342}, + {-98.681666, 29.406774}, + {28.558458, -31.562057}, + {151.208145, -33.840305}, + {10.392197, 44.659665}, + {9.256024, 45.511554}, + {20.862464, 52.345641}, + {-117.239761, 47.686218}, + {-81.222748, 29.557831}, + {-96.864313, 18.862898}, + {-99.220803, 18.859802}, + {9.327564, 39.198918}, + {144.982309, -37.815048}, + {31.342743, 30.069393}, + {8.878186, 55.17798}, + {6.467505, 51.230018}, + {145.347569, -37.846981}, + {-82.168626, 29.06076}, + {-77.134674, 38.880241}, + {0.010306, 51.267704}, + {-85.040215, 33.631466}, + {-80.837865, 35.205404}, + {-119.753288, 36.838284}, + {145.077438, -37.986355}, + {-94.624535, 37.328812}, + {7.96045, 49.9615}, + {-6.532178, 53.506996}, + {126.868459, 37.398588}, + {4.668384, 51.001839}, + {14.490664, 50.02047}, + {-104.992554, 39.770782}, + {50.58393, 61.445222}, + {-71.071342, 42.349739}, + {139.624682, 35.468734}, + {139.629669, 35.599339}, + {139.621505, 35.320187}, + {-96.82194, 33.141313}, + {-117.106949, 34.022835}, + {-8.027822, 12.626442}, + {25.707287, 47.776324}, + {-89.043465, 39.844177}, + {31.276504, 30.01912}, + {40.015582, 59.079282}, + {37.639735, 55.819373}, + {6.974243, 48.758138}, + {115.849894, -31.852022}, + {1.031804, 49.541748}, + {-96.929042, 34.908341}, + {-7.242415, 33.657776}, + {-76.973053, 39.189571}, + {-76.356954, 42.501584}, + {8.306933, 51.827087}, + {-97.360458, 32.714157}, + {16.591443, 49.179461}, + {-101.757904, 37.761578}, + {5.265788, 50.531708}, + {28.135481, -26.124066}, + {31.23001, 30.067135}, + {31.249229, 30.097786}, + {-95.486151, 29.922631}, + {11.852103, 47.347713}, + {48.861654, 54.400763}, + {37.608681, 55.754517}, + {-80.978408, 35.254221}, + {-112.082504, 33.46693}, + {-93.598509, 41.612066}, + {151.577928, -33.1043}, + {11.2922, 44.487247}, + {30.881962, -30.056616}, + {-82.679149, 27.465067}, + {31.360562, 30.076491}, + {-118.460663, 34.06625}, + {-119.019939, 34.211151}, + {4.81586, 45.734455}, + {-110.75483, 32.048484}, + {87.645658, 56.082074}, + {139.667615, 35.584726}, + {150.902944, -33.705116}, + {111.314117, -7.903271}, + {28.165991, -25.888786}, + {83.888663, 53.495698}, + {-83.44442, 42.302151}, + {16.479458, 49.211349}, + {116.007828, -31.894419}, + {8.090618, 52.289349}, + {29.678345, -23.891525}, + {28.285895, -26.150337}, + {-95.459846, 33.622658}, + {1.039561, 47.081577}, + {4.87797, 44.088223}, + {39.715843, 54.624958}, + {-84.695671, 39.05827}, + {-97.522997, 41.191882}, + {151.629898, -33.162975}, + {37.620919, 55.756851}, + {-106.429196, 31.851347}, + {-7.082896, 52.238852}, + {-75.12426, 40.001198}, + {1.010678, 49.280319}, + {10.817072, 43.698628}, + {11.295481, 44.528469}, + {11.137037, 43.851285}, + {10.949438, 43.485266}, + {11.71602, 42.682525}, + {11.046351, 43.869188}, + {-73.487239, 40.694569}, + {12.828282, 46.828786}, + {-1.392124, 35.29877}, + {3.111985, 36.685165}, + {-56.676362, -36.699294}, + {-81.58251, 28.553063}, + {55.504448, -20.892774}, + {-1.542959, 53.795055}, + {11.309735, 43.38865}, + {-97.82457, 30.2841}, + {-84.567329, 42.745518}, + {-87.624382, 41.794312}, + {146.819336, -19.269011}, + {-73.836266, 40.812126}, + {31.175469, 30.070772}, + {7.092278, 51.170866}, + {-118.661034, 34.236179}, + {-99.390534, 19.29971}, + {131.938477, 43.17408}, + {-1.45896, 52.961601}, + {-117.369911, 33.720913}, + {-7.095417, 52.135233}, + {-91.12706, 30.325565}, + {7.068413, 47.577573}, + {-71.065155, 42.313656}, + {37.603189, 55.794283}, + {-118.265045, 34.032261}, + {-91.126259, 30.526903}, + {123.818181, 10.316591}, + {16.071882, 47.729633}, + {19.073738, 50.821533}, + {2.831622, 44.301575}, + {135.19278, 34.699875}, + {-121.856452, 37.245493}, + {9.690371, 54.417976}, + {-99.605911, 18.554972}, + {17.493083, 62.530769}, + {-74.202099, 40.574406}, + {23.523137, 60.619489}, + {-90.535301, 30.534771}, + {-118.076279, 34.071232}, + {-90.757835, 38.233219}, + {11.253917, 48.737068}, + {-95.475456, 29.802717}, + {114.166252, 22.304958}, + {4.861573, 45.526478}, + {11.458176, 48.215455}, + {-96.549757, 30.971295}, + {-95.027395, 36.687054}, + {-0.482132, 46.846542}, + {16.966659, 51.139738}, + {-78.793119, 38.042253}, + {-117.69532, 33.505184}, + {-95.851883, 36.093723}, + {-80.340187, 36.068935}, + {106.804142, -6.195645}, + {31.309528, -29.362988}, + {6.57606, 51.431557}, + {-90.182301, 29.966301}, + {103.93904, 1.360387}, + {32.147682, -28.461155}, + {-81.488136, 28.409515}, + {37.48715, 55.739746}, + {37.730039, 55.754033}, + {36.489029, 56.011178}, + {16.997927, 52.353008}, + {-4.01237, 55.773731}, + {29.675085, -25.638081}, + {151.166519, -33.922268}, + {-74.031631, 40.774578}, + {11.522142, 3.848851}, + {-80.8101, 36.174021}, + {-84.309006, 33.571262}, + {4.878025, 44.998416}, + {151.195879, -33.88378}, + {37.416348, 55.97974}, + {14.285075, 51.707211}, + {7.863426, 50.485596}, + {7.850332, 50.475197}, + {-84.216964, 39.703261}, + {-1.384598, 35.298161}, + {126.90802, 37.384018}, + {55.505409, 25.298857}, + {17.942375, 52.24433}, + {6.935143, 50.942604}, + {35.827697, 58.602305}, + {10.16664, 53.542191}, + {0.574041, 51.772261}, + {-117.322235, 33.137933}, + {9.182952, 48.898243}, + {120.970612, 14.60363}, + {-84.058803, 33.854599}, + {-79.396988, 43.819378}, + {22.379717, 51.928467}, + {30.253977, -30.917488}, + {36.09276, 32.05036}, + {-7.229907, 52.236266}, + {-122.294906, 37.835859}, + {-7.88079, 43.437255}, + {14.426234, 57.991435}, + {-84.734985, 33.734917}, + {-6.555841, 34.259315}, + {-84.118417, 35.912376}, + {24.271456, 59.116596}, + {120.973567, 14.626775}, + {-103.234177, 44.082322}, + {-118.098787, 33.877539}, + {8.916717, 45.602604}, + {-96.764572, 33.056095}, + {-94.661186, 47.381187}, + {-73.904823, 40.846141}, + {-0.488861, 51.380924}, + {12.398812, 50.888288}, + {14.436951, 63.131053}, + {-85.705254, 38.223335}, + {-81.694817, 30.380669}, + {5.023563, 45.770061}, + {136.062241, -16.446028}, + {-85.752601, 34.945419}, + {35.975773, 31.990881}, + {3.534929, 36.580975}, + {-84.423321, 33.903717}, + {-74.349237, 40.557806}, + {1.672974, 46.220688}, + {-85.658162, 42.971797}, + {-77.500145, 38.295223}, + {4.525687, 51.18537}, + {31.448174, 30.010798}, + {30.999137, 30.013266}, + {44.756182, 14.414878}, + {31.004059, -29.900234}, + {-0.406239, 49.272472}, + {-71.068741, 42.304806}, + {-79.87479, 40.407965}, + {9.413131, 42.184342}, + {15.841714, 50.415961}, + {39.817827, 54.583008}, + {-96.007166, 41.258767}, + {-1.108898, 44.624348}, + {-83.639141, 41.532492}, + {-79.633675, 43.731674}, + {151.099258, -33.714249}, + {150.988939, -33.706546}, + {120.994911, 14.563357}, + {-85.564319, 42.909908}, + {-106.493385, 35.309044}, + {120.626282, 13.924784}, + {-118.307411, 34.060667}, + {-95.581474, 30.000229}, + {39.272022, 21.476463}, + {-87.628168, 41.906853}, + {106.823662, -6.137198}, + {-0.721782, 44.846416}, + {16.42024, 45.949162}, + {35.864701, 31.987852}, + {-90.398239, 38.65501}, + {8.013983, 49.839157}, + {16.905425, 49.203087}, + {18.457315, -34.077976}, + {3.154029, 51.077062}, + {-84.537874, 39.374165}, + {-113.79332, 52.370453}, + {174.937119, -37.047623}, + {18.492897, -33.919498}, + {28.024134, -12.63717}, + {22.901682, 47.311518}, + {12.576063, 55.680323}, + {-117.93053, 33.616352}, + {-96.851415, 32.637879}, + {9.207723, 45.264503}, + {-118.206841, 33.950073}, + {3.823677, 43.624809}, + {22.316534, 61.667892}, + {-77.034819, 38.912577}, + {-81.779434, 41.109035}, + {-122.090538, 37.620731}, + {-84.122223, 33.83046}, + {-118.179008, 33.877117}, + {31.425325, 30.013884}, + {8.694885, 48.877605}, + {-81.673035, 29.647138}, + {18.589943, 54.408627}, + {107.330403, -6.331372}, + {7.545949, 45.117562}, + {1.405378, 43.581824}, + {9.111435, 49.735043}, + {-82.524506, 36.450752}, + {-7.604233, 33.537501}, + {23.72036, 37.99017}, + {-79.179524, 37.362695}, + {153.043167, -27.447781}, + {26.085365, 44.447239}, + {-0.164378, 51.152382}, + {-96.747139, 32.834091}, + {-79.56517, 43.776218}, + {16.476078, 48.216072}, + {15.412799, 49.101917}, + {152.874799, -25.299682}, + {60.610018, 56.889854}, + {-96.644798, 32.859795}, + {77.238815, 28.576752}, + {75.568268, 23.862611}, + {6.279516, 51.929279}, + {-79.509407, 8.978848}, + {20.032808, 50.112156}, + {12.006957, 52.55686}, + {31.455792, 30.045027}, + {-89.726288, 44.953175}, + {-98.397461, 29.558321}, + {9.973572, 53.545113}, + {30.490362, 50.573745}, + {-81.878151, 28.697861}, + {26.688191, 58.354731}, + {-77.006332, -12.190094}, + {-2.519077, 47.36447}, + {-112.04451, 43.503237}, + {6.861025, 43.434113}, + {148.232461, -30.635105}, + {7.188087, 51.739435}, + {10.132952, 51.88354}, + {103.855592, 1.30197}, + {25.580254, 45.655674}, + {-81.642082, 30.3221}, + {37.583107, 55.752274}, + {-122.45882, 37.690094}, + {-113.502586, 53.534096}, + {25.404873, -33.777317}, + {9.809472, 52.326168}, + {-104.716934, 39.602386}, + {-83.441315, 44.670738}, + {153.120422, -27.604422}, + {-76.695003, 39.154104}, + {2.429346, 48.917385}, + {26.19425, 44.493771}, + {24.807118, 46.556617}, + {132.951043, 35.421152}, + {19.045755, 47.379013}, + {21.612595, 47.895847}, + {23.000296, 47.230956}, + {-73.766724, 42.814754}, + {-89.502014, 43.08707}, + {14.138591, 49.302778}, + {-114.99867, 36.018046}, + {150.56427, -30.454017}, + {18.650408, -34.021614}, + {2.295514, 48.845381}, + {77.652908, 12.840133}, + {-1.440852, 50.925777}, + {30.764887, -30.177908}, + {-82.465164, 38.924896}, + {18.328173, 54.604237}, + {138.519343, -34.924655}, + {150.955327, -31.118717}, + {19.041313, 47.512002}, + {-73.860626, 40.747082}, + {30.241679, 60.008958}, + {8.594931, 50.085629}, + {-83.732623, 34.218159}, + {-73.981804, 40.672215}, + {6.55509, 51.323961}, + {8.540391, 49.449747}, + {-73.324447, 40.753926}, + {-73.405304, 40.805439}, + {-97.575218, 35.413811}, + {-117.804447, 33.874863}, + {10.82634, 63.53426}, + {37.394847, 55.860924}, + {9.970296, 53.564733}, + {-81.980583, 35.647278}, + {-85.128777, 35.08374}, + {-102.425339, 31.900658}, + {-77.019412, 38.901574}, + {30.379308, -29.751396}, + {18.549049, 54.521694}, + {4.713678, 50.884113}, + {-81.668365, 26.643272}, + {-2.907669, 48.242619}, + {144.968155, -37.817743}, + {-81.488823, 30.031296}, + {30.359945, -30.849562}, + {111.404166, -7.414799}, + {-112.010571, 33.462016}, + {15.71487, 47.095374}, + {-71.330753, 41.485072}, + {0.521511, 45.323696}, + {-111.890532, 33.389009}, + {-106.88459, 41.441742}, + {7.547659, 49.987841}, + {76.756073, 18.12771}, + {47.411141, 55.781002}, + {-82.106529, 39.307461}, + {31.048203, 31.074509}, + {-98.66848, 33.498238}, + {-87.411919, 33.175301}, + {11.468212, 48.178761}, + {16.371143, 48.206173}, + {31.285008, 30.014195}, + {30.432924, -30.747617}, + {-96.833328, 32.836315}, + {8.630992, 49.871301}, + {-83.762642, 43.078991}, + {-117.172354, 33.751995}, + {13.998046, 40.977478}, + {14.64665, 50.560497}, + {31.047016, -28.04907}, + {12.572044, 55.671759}, + {13.2533, 52.537451}, + {7.070712, 48.065971}, + {18.629566, 53.883093}, + {-90.864757, 39.133339}, + {-116.987885, 32.74248}, + {60.61098, 56.818281}, + {28.338873, -26.388145}, + {9.362112, 55.06583}, + {11.709985, 48.340274}, + {106.86805, -6.258032}, + {16.035181, 47.772926}, + {-81.686775, 35.749546}, + {38.949059, 22.800489}, + {18.56755, 54.444243}, + {-123.214767, 47.429054}, + {-79.39296, 43.701103}, + {69.188019, 41.217249}, + {37.941391, 55.112736}, + {-115.19239, 36.158447}, + {-83.626137, 42.990475}, + {18.150249, 47.207794}, + {138.707379, -35.040498}, + {9.809078, 46.161772}, + {8.011663, 47.207896}, + {-97.353905, 32.924213}, + {153.051337, -27.401968}, + {-84.753799, 33.720066}, + {17.518737, 52.240379}, + {31.311285, 30.149965}, + {-80.113312, 26.623219}, + {2.886924, 47.515335}, + {-122.968887, 45.288898}, + {145.00383, -37.929245}, + {44.011828, 26.102203}, + {11.770994, 48.27585}, + {122.635944, 41.601591}, + {144.98674, -37.906261}, + {-79.382202, 43.651606}, + {1.863602, 41.247189}, + {30.521034, 50.438072}, + {-122.205914, 47.946651}, + {-80.609116, 24.941017}, + {24.024954, 49.843552}, + {115.215034, -8.634414}, + {-83.68055, 42.226913}, + {5.10449, 51.77768}, + {30.416122, -30.750553}, + {-93.091942, 44.901081}, + {20.28273, 49.023743}, + {-111.963585, 43.494522}, + {144.357376, -38.15321}, + {4.400442, 51.138271}, + {-92.194427, 46.719164}, + {-3.82542, 5.321287}, + {9.359057, 52.100611}, + {-95.345337, 29.755877}, + {-73.686974, 45.435822}, + {-55.123734, 5.837068}, + {-121.502747, 38.475742}, + {116.313606, 39.932522}, + {26.144373, 44.418277}, + {69.35463, 41.217754}, + {35.848408, 32.555637}, + {103.858536, 1.306693}, + {-113.541636, 53.339131}, + {-79.436958, 43.640454}, + {11.285526, 50.708187}, + {-112.578804, 46.968601}, + {3.896367, 43.584667}, + {116.168876, 23.302524}, + {12.401476, 51.786621}, + {18.3479, 54.328644}, + {9.991487, 53.555351}, + {-97.034957, 50.627031}, + {-86.159042, 39.59763}, + {-91.547333, 41.489178}, + {149.157649, -21.159513}, + {-112.112799, 33.540172}, + {29.829987, -23.704395}, + {75.569382, 13.91651}, + {18.321052, 49.92258}, + {-95.955137, 36.173461}, + {-117.12822, 32.747959}, + {-112.06019, 33.572231}, + {-121.258308, 38.6921}, + {-0.431533, 52.134888}, + {8.717547, 53.327003}, + {14.731665, 51.012745}, + {-86.891926, 41.72098}, + {-98.28154, 29.337811}, + {-99.501137, 30.294436}, + {18.01976, 46.900888}, + {18.610891, 60.029346}, + {-70.732719, 42.84836}, + {-71.92953, 42.390178}, + {2.962525, 36.770937}, + {7.27546, 47.684988}, + {-77.427979, 37.473797}, + {-94.364474, 35.340038}, + {-117.898415, 33.703579}, + {29.321388, 40.837285}, + {-84.567375, 33.417854}, + {22.188061, 48.439327}, + {9.456342, 54.808382}, + {-84.003768, 35.942026}, + {-39.713158, -3.750638}, + {-110.782112, 43.260399}, + {9.969943, 53.451364}, + {33.853588, 34.9674}, + {3.812307, 35.837277}, + {-89.056928, 35.322051}, + {12.884904, 59.082888}, + {-84.581001, 40.736038}, + {-93.292612, 44.850094}, + {153.109115, -27.787435}, + {150.668778, -33.754751}, + {-0.143769, 51.508668}, + {-95.353088, 29.703598}, + {16.691748, 49.183376}, + {-84.428757, 42.32695}, + {44.82333, 14.413727}, + {-111.644028, 40.229671}, + {-0.144914, 51.509003}, + {24.821457, 43.420761}, + {61.308444, 54.527752}, + {127.097404, 37.535555}, + {-104.68295, 40.416456}, + {11.490421, 48.023472}, + {-87.988274, 42.962864}, + {37.712333, 55.778936}, + {-119.67038, 36.75227}, + {-122.588966, 45.640015}, + {144.464404, -37.243003}, + {18.571714, -33.90744}, + {-84.080796, 39.713115}, + {11.257568, 43.772873}, + {170.530197, -45.894733}, + {-0.48955, 52.120636}, + {-84.349205, 33.761398}, + {9.135417, 49.186397}, + {4.808201, 45.903404}, + {2.565461, 39.5392}, + {106.825011, 11.345731}, + {16.560061, 48.120083}, + {-89.705574, 39.073853}, + {-122.067787, 37.99366}, + {-122.071908, 37.881286}, + {120.417847, 22.600594}, + {-118.25795, 33.998199}, + {22.603662, 52.05751}, + {114.203568, 22.384007}, + {13.198676, 57.500607}, + {-75.150551, 40.016903}, + {-0.748247, 51.397953}, + {3.236125, 47.826141}, + {9.213469, 45.50312}, + {-79.780075, 42.234219}, + {-93.277428, 44.970924}, + {-84.029174, 33.984904}, + {8.951412, 33.678871}, + {34.673594, 31.693304}, + {13.770121, 47.976025}, + {71.638237, 41.017058}, + {18.578123, -33.972507}, + {-103.716958, 19.228418}, + {-1.148087, 38.036685}, + {-0.454201, 51.507658}, + {-68.490921, 48.491028}, + {15.405479, 47.01881}, + {-113.517604, 53.607333}, + {28.27408, -25.783154}, + {-97.575659, 27.842062}, + {-6.375432, 53.313549}, + {1.603128, 43.642977}, + {-113.822876, 51.050659}, + {-0.242668, 51.552437}, + {126.909716, 37.318676}, + {-93.230324, 44.933525}, + {120.646859, 24.164388}, + {2.166723, 49.053012}, + {20.343416, 63.808044}, + {-84.520927, 34.63834}, + {77.69911, 12.947539}, + {75.762976, 12.925047}, + {55.417927, 25.226683}, + {61.365837, 55.154037}, + {10.041798, 47.884842}, + {28.639423, -31.763544}, + {-97.721538, 30.221781}, + {174.957306, -37.064068}, + {20.095193, 47.247341}, + {128.774879, 37.67487}, + {-83.322182, 43.903828}, + {-13.556495, 29.115408}, + {-74.161011, 40.749355}, + {-93.306885, 45.190071}, + {106.747284, -6.312699}, + {72.812726, 19.014774}, + {9.475663, 53.602303}, + {106.847858, 11.407924}, + {-113.112389, 50.856586}, + {-79.393539, 43.975845}, + {2.551976, 49.07336}, + {9.345951, 39.184444}, + {12.19412, 51.5397}, + {-81.423607, 30.106958}, + {6.705619, 51.392794}, + {8.046678, 47.3594}, + {-73.828893, 45.61706}, + {126.918106, 37.517036}, + {38.134384, 56.301388}, + {37.716849, 55.779686}, + {-87.005958, 33.340064}, + {-86.995544, 33.312222}, + {10.275568, 53.920925}, + {56.371738, 56.486314}, + {18.761014, 47.492118}, + {139.636245, 35.289796}, + {139.721802, 35.602139}, + {139.66075, 35.490957}, + {37.903821, 56.096782}, + {-73.798442, 42.740205}, + {-87.374557, 46.510471}, + {-76.678269, 40.304248}, + {106.700933, 10.733696}, + {39.199187, 21.577316}, + {112.79519, -7.084585}, + {-90.145935, 46.463272}, + {31.241327, 30.043022}, + {-1.751376, 53.792942}, + {8.350609, 36.865494}, + {13.11051, 52.375668}, + {-94.723534, 38.962097}, + {12.057669, 57.571335}, + {15.175132, 52.704527}, + {12.522412, 56.929188}, + {-80.19509, 26.084888}, + {-96.820992, 33.219028}, + {139.696915, 35.701324}, + {-79.980637, 42.155876}, + {5.102182, 52.095589}, + {-83.174908, 42.710009}, + {9.497445, 50.820915}, + {-82.507177, 27.347046}, + {151.174225, -33.765221}, + {-121.024849, 49.627438}, + {7.78195, 44.55984}, + {14.735174, 47.122947}, + {22.075256, 65.597189}, + {-0.148375, 51.512829}, + {-93.467926, 44.918816}, + {37.844636, 55.77435}, + {-82.650146, 39.043213}, + {-93.004471, 45.330379}, + {145.193687, -37.978089}, + {34.37288, 53.493732}, + {-5.41397, 33.058785}, + {20.946636, 52.267884}, + {-97.582375, 27.849653}, + {37.707358, 55.799341}, + {-157.890184, 21.333342}, + {-85.329829, 35.027287}, + {-80.193039, 26.270058}, + {103.740561, 1.391255}, + {-123.486893, 48.461521}, + {17.696709, 59.816956}, + {-77.007206, 39.725657}, + {77.593594, 12.967079}, + {21.071817, 52.198416}, + {-95.569946, 29.939267}, + {6.917269, 49.97427}, + {10.481714, 61.122842}, + {18.928803, 47.418237}, + {18.87559, 47.34588}, + {31.440409, 30.028187}, + {-6.265243, 53.347683}, + {6.097095, 46.221555}, + {16.466418, 48.257887}, + {-84.14925, 34.110733}, + {77.680795, 12.920531}, + {55.39769, 25.197653}, + {28.224499, -25.675449}, + {6.996289, 50.936161}, + {120.968605, 14.283805}, + {-83.470757, 42.580971}, + {-81.509277, 30.254028}, + {115.87928, -31.867854}, + {-83.420151, 41.843719}, + {31.609088, 30.179309}, + {4.660485, 50.972622}, + {39.163778, 21.580452}, + {6.711343, 43.405718}, + {5.459726, 31.927091}, + {103.678698, 1.338805}, + {17.362323, 49.308059}, + {2.268216, 48.896935}, + {9.100037, 54.945728}, + {-82.512577, 27.891536}, + {2.242468, 48.848442}, + {61.342898, 55.147602}, + {77.625197, 13.038849}, + {-111.898277, 40.760616}, + {153.593938, -28.63776}, + {-85.49424, 31.931353}, + {133.107846, 35.410925}, + {21.46267, 54.048988}, + {0.051667, 51.449654}, + {2.560359, 48.642509}, + {9.258441, 45.986602}, + {-0.391379, 51.545381}, + {121.668508, 25.078578}, + {-82.72831, 28.253819}, + {33.637086, 58.116293}, + {16.224661, 53.583565}, + {6.989667, 58.28025}, + {11.680723, 58.474697}, + {39.212379, -6.721855}, + {-71.298508, 46.830166}, + {17.014171, 51.097942}, + {-111.993665, 33.631056}, + {-81.505917, 41.545352}, + {-86.611799, 36.041527}, + {106.795375, -6.28899}, + {8.260558, 49.674114}, + {2.090271, 41.325123}, + {-87.763176, 41.904993}, + {18.849345, 48.573083}, + {-95.937667, 36.168118}, + {-98.794151, 19.073425}, + {6.987406, 51.033403}, + {31.351379, -11.786645}, + {-97.261696, 32.756317}, + {2.496087, 44.052492}, + {-96.335615, 36.370007}, + {-101.969287, 33.653332}, + {103.922462, 13.403351}, + {4.398078, 45.872169}, + {39.144588, 21.644278}, + {11.467175, 58.569226}, + {44.359753, 33.37212}, + {-81.444409, 28.482533}, + {54.584043, 24.330231}, + {-96.116039, 30.435897}, + {8.647749, 50.162005}, + {12.206887, 51.679611}, + {114.848133, -3.4398}, + {114.593025, -3.319581}, + {-119.300038, 34.278465}, + {-74.412804, 40.619587}, + {-103.802383, 40.249859}, + {-73.924774, 40.828419}, + {-87.166385, 38.610763}, + {8.248145, 53.158823}, + {-89.57563, 37.106644}, + {6.900522, 49.673721}, + {16.396325, 50.852332}, + {16.294371, 48.205802}, + {-73.988731, 40.697441}, + {-75.913177, 4.747027}, + {103.855705, 13.383724}, + {37.305323, 48.13751}, + {6.108622, 48.914326}, + {-2.282062, 52.993992}, + {151.226517, -33.884727}, + {112.647705, -7.186106}, + {4.328352, 50.90374}, + {61.313286, 55.210039}, + {-118.166529, 33.943189}, + {8.083871, 52.279373}, + {152.882321, -27.549948}, + {-84.369904, 39.317352}, + {-86.08785, 40.465934}, + {13.762948, 48.047928}, + {4.785788, 44.133682}, + {-103.403038, 20.650574}, + {37.665196, 55.739589}, + {-76.920275, 40.203569}, + {6.899757, 46.503152}, + {-82.770588, 27.859562}, + {61.368669, 55.162943}, + {-75.873741, 41.277283}, + {10.804988, 35.568516}, + {9.712216, 48.528458}, + {13.330278, 52.492525}, + {-91.322983, 44.920757}, + {10.356581, 53.428191}, + {-92.857765, 38.098309}, + {144.936798, -37.829109}, + {8.309003, 47.002911}, + {107.260326, 10.963822}, + {5.797034, 52.943474}, + {6.930655, 50.924824}, + {0.023508, 51.5737}, + {-7.516479, 33.605015}, + {-117.282419, 34.232598}, + {7.897251, 52.170318}, + {-121.995827, 37.331608}, + {23.680535, 53.109715}, + {-122.704971, 45.468929}, + {-89.984421, 38.66109}, + {-83.091588, 39.416964}, + {-74.156512, 40.251135}, + {4.337088, 52.037}, + {120.996102, 14.558363}, + {15.146282, 48.209675}, + {11.570774, 48.121367}, + {-86.801292, 39.788303}, + {-71.212655, -35.193598}, + {-118.264595, 34.045101}, + {115.937024, -32.020508}, + {120.995246, 14.561954}, + {4.782977, 52.344681}, + {-76.103341, 38.954189}, + {-79.044011, 43.848269}, + {-82.126694, 27.020273}, + {-73.582092, 45.487453}, + {-111.902008, 40.725494}, + {25.287109, 60.280916}, + {12.706084, 51.354604}, + {-6.091277, 53.527666}, + {37.344043, 55.726228}, + {30.399608, 59.88625}, + {24.999611, 60.25721}, + {-87.801483, 41.615906}, + {25.573999, 45.644932}, + {13.783891, 51.944774}, + {-84.839279, 38.792685}, + {-93.028061, 45.233215}, + {138.906906, -35.265396}, + {106.642728, 10.735944}, + {11.481775, 43.62261}, + {2.056389, 49.053558}, + {-87.893079, 43.050594}, + {-113.578011, 53.517685}, + {30.363906, 59.952902}, + {113.315842, 23.430696}, + {9.225177, 45.641922}, + {25.033758, 60.28215}, + {-75.463425, 38.382648}, + {-80.236488, 35.927189}, + {-96.382187, 30.44836}, + {13.082532, 48.259541}, + {-117.038081, 47.710974}, + {121.000288, 14.655676}, + {-82.99939, 39.974194}, + {34.807446, 32.160191}, + {11.762791, 48.444099}, + {8.633528, 50.158119}, + {20.984764, 54.015702}, + {18.588345, 54.42812}, + {-117.285995, 33.185097}, + {-122.396927, 37.789021}, + {30.394629, 59.891815}, + {6.805322, 51.224219}, + {19.782, 51.528267}, + {10.437065, 49.326791}, + {-8.522712, 41.056194}, + {-83.198048, 42.287439}, + {-115.118028, 36.142238}, + {-113.512581, 53.520027}, + {-118.124603, 49.895454}, + {5.613665, 50.626933}, + {-79.984146, 36.083694}, + {174.661346, -36.897175}, + {105.793421, 21.00357}, + {29.925476, 31.21164}, + {16.404663, 50.904738}, + {-86.844586, 33.428177}, + {63.10175, 52.962926}, + {18.429449, -34.082325}, + {61.261061, 55.668618}, + {28.288782, -15.453588}, + {20.329762, 48.028463}, + {-71.22139, 46.816448}, + {11.760295, 43.400466}, + {2.687757, 48.835526}, + {15.715381, 48.566858}, + {-87.682594, 42.047169}, + {-94.631248, 39.091736}, + {11.089953, 49.424786}, + {110.946743, 21.813442}, + {21.750759, 51.768288}, + {8.63704, 49.549526}, + {13.316025, 48.39917}, + {24.060687, 51.207671}, + {6.25163, 48.930313}, + {-96.086527, 31.471315}, + {-82.661331, 34.596966}, + {105.753158, 21.086921}, + {21.116554, 52.276752}, + {-121.387524, 36.475583}, + {106.649589, 10.778081}, + {7.894619, 48.005314}, + {61.373054, 55.134906}, + {0.163933, 48.104239}, + {-98.068508, 29.764225}, + {-73.745026, 40.700302}, + {-111.6101, 40.170071}, + {27.930132, -26.243711}, + {18.520487, -34.015667}, + {43.369354, 36.349106}, + {103.754821, 1.338134}, + {7.110387, 50.882259}, + {5.64756, 51.015839}, + {151.193726, -33.858446}, + {134.236252, -20.7959}, + {9.511753, 0.356541}, + {-89.990234, 34.863968}, + {11.537554, 48.161165}, + {13.818297, 51.004461}, + {13.354947, 52.409199}, + {-95.56739, 33.674702}, + {17.58737, 54.083263}, + {10.86831, 48.420166}, + {9.159195, 53.919396}, + {9.964309, 54.155819}, + {151.081894, -33.861397}, + {11.242785, 52.739109}, + {9.975195, 53.576187}, + {-81.54052, 41.508739}, + {-118.144417, 34.039204}, + {151.14152, -33.880167}, + {9.494842, 51.286579}, + {11.427566, 51.269158}, + {114.982978, 27.111846}, + {3.727736, 51.70845}, + {-0.419636, 51.88295}, + {14.844486, 53.179562}, + {-80.162285, 26.138796}, + {19.005531, 50.290039}, + {25.580509, 41.920441}, + {14.209286, 49.427042}, + {9.371595, 52.084732}, + {20.209978, 51.5241}, + {103.838691, 1.331449}, + {10.4108, 53.779854}, + {6.599435, 51.394771}, + {119.459824, -5.10102}, + {139.741467, 35.641089}, + {139.738156, 35.622113}, + {-73.69342, 40.671181}, + {11.041467, 43.715017}, + {-90.04382, 41.288617}, + {-73.07132, 41.552338}, + {103.836967, 1.291102}, + {-100.900269, 18.621378}, + {-114.019569, 50.994057}, + {-75.767921, 45.4715}, + {-113.840302, 52.301648}, + {170.3564, -45.893394}, + {-123.060898, 49.215137}, + {1.435087, 49.30926}, + {60.610389, 56.83233}, + {-95.332306, 29.93025}, + {-70.854286, 42.042915}, + {-76.787689, 18.00565}, + {0.269602, 44.304695}, + {-79.520424, 43.636551}, + {-86.159081, 39.741848}, + {-118.307237, 34.174206}, + {4.606144, 43.85231}, + {31.398245, 30.363616}, + {-76.594551, 39.331406}, + {103.886932, 1.341419}, + {-88.64431, 32.471134}, + {37.706272, 55.717583}, + {151.208084, -33.874773}, + {113.968178, 22.395496}, + {150.840347, -33.722965}, + {-74.02808, 40.753062}, + {6.250527, 50.823696}, + {-15.390264, 27.966729}, + {83.295563, 25.657909}, + {-77.577194, 39.354397}, + {16.311721, 50.85444}, + {-77.042664, 38.90847}, + {144.985794, -37.849628}, + {13.315148, 52.383564}, + {17.594987, 42.932055}, + {3.313281, 39.55222}, + {-106.559303, 52.1404}, + {-80.129791, 25.954344}, + {-117.429805, 33.96161}, + {-86.609924, 34.170673}, + {12.616507, 55.676372}, + {30.600954, 59.756793}, + {12.449642, 51.350204}, + {108.990508, 11.581149}, + {-97.735471, 30.262387}, + {-86.302139, 32.33876}, + {-93.756172, 45.284733}, + {-117.929346, 33.851514}, + {8.342567, 51.67487}, + {16.85227, 58.174351}, + {-80.315666, 25.759043}, + {176.072906, -38.742493}, + {-119.005089, 37.769066}, + {2.219107, 48.841532}, + {-81.599899, 28.932903}, + {-4.442267, 36.727699}, + {5.023343, 43.69142}, + {-122.939301, 49.255341}, + {27.174694, -27.708086}, + {-85.428713, 34.968503}, + {34.877762, 32.117672}, + {-86.527199, 33.695999}, + {-72.080841, 45.092793}, + {-123.864046, 46.44206}, + {7.926896, 58.088223}, + {10.768769, 59.926098}, + {60.532039, 56.933043}, + {29.72423, 31.090121}, + {-85.711885, 38.117391}, + {-84.536751, 30.53091}, + {-92.06985, 30.516261}, + {-77.106991, 39.055485}, + {28.324723, -15.454628}, + {8.128031, 51.586212}, + {37.682388, 55.855044}, + {24.934232, 60.714096}, + {-81.519844, 41.523127}, + {20.583517, 44.694664}, + {11.528554, 52.105165}, + {14.548839, 50.109511}, + {-114.089218, 51.041813}, + {109.336945, 13.05892}, + {28.329853, -26.145327}, + {-73.520416, 45.470001}, + {-98.76577, 29.468}, + {-7.35484, 40.868185}, + {-98.690178, 29.460918}, + {-122.239055, 40.188739}, + {-99.138075, 19.474473}, + {16.332844, 50.980026}, + {51.371689, 25.239479}, + {51.433838, 25.223248}, + {-121.106972, 38.351349}, + {-71.240119, 46.872955}, + {5.448291, 52.169067}, + {-1.891907, 47.074104}, + {5.422007, 43.32534}, + {-81.685318, 41.498726}, + {37.812172, 55.751938}, + {2.92286, 50.333965}, + {13.773207, 51.007728}, + {3.574052, 47.777004}, + {-75.497566, 44.763111}, + {1.357434, 47.63998}, + {-100.416565, 20.935175}, + {16.522887, 51.837136}, + {-99.250778, 19.416811}, + {-70.846367, 43.149704}, + {6.891458, 50.880936}, + {12.48129, 51.330243}, + {76.125656, 28.052725}, + {103.739545, 1.345726}, + {-4.226708, 47.866368}, + {28.532974, 38.360625}, + {-118.300041, 33.887451}, + {69.325087, 41.28771}, + {64.49516, 39.952467}, + {60.37092, 41.379664}, + {10.971343, 45.399357}, + {176.157842, -37.703302}, + {-99.473694, 19.283266}, + {25.042582, 60.320297}, + {-122.221649, 37.775307}, + {-77.138626, -11.734105}, + {-97.074753, 37.606949}, + {-114.229568, 52.640488}, + {144.954788, -37.808479}, + {60.730347, 56.887631}, + {8.486708, 49.039207}, + {29.203152, 40.983185}, + {2.401861, 48.929306}, + {-97.655273, 30.328737}, + {-104.696526, 40.425953}, + {-79.961098, 40.44017}, + {13.387229, 52.510281}, + {-111.998242, 40.663937}, + {77.772541, 10.175242}, + {16.215378, 52.012241}, + {4.859423, 51.836165}, + {77.699222, 10.156447}, + {37.969355, 56.112816}, + {77.255733, 11.002065}, + {76.95137, 11.025704}, + {-118.792488, 34.284214}, + {-114.143524, 51.037678}, + {17.522467, 53.683411}, + {13.231724, 53.838254}, + {18.604263, 51.17416}, + {9.540544, 53.746082}, + {-83.140602, 29.640083}, + {17.01733, 51.167248}, + {103.849335, 1.349153}, + {-99.775848, 32.433006}, + {-84.143074, 33.718662}, + {16.324124, 48.206714}, + {-76.963201, -12.231549}, + {11.783314, 51.402236}, + {55.143829, 25.068293}, + {-84.421683, 33.722531}, + {34.83778, 32.144176}, + {105.181549, 21.827408}, + {147.11245, -41.373337}, + {8.393089, 58.266026}, + {4.366325, 51.855667}, + {-4.045778, 5.446554}, + {99.284789, 13.953336}, + {11.178019, 46.669496}, + {-74.073524, 40.633438}, + {-84.365524, 33.845207}, + {-111.868713, 41.703014}, + {-2.743967, 53.8685}, + {-82.313245, 27.936882}, + {13.320655, 42.370026}, + {106.65439, 10.719004}, + {-103.351662, 20.675492}, + {37.555101, 55.827295}, + {106.657036, -6.228151}, + {117.286026, 31.800276}, + {8.54383, 47.374754}, + {44.194534, 36.218573}, + {4.658644, 51.861778}, + {35.851723, 56.034196}, + {16.902057, 50.942862}, + {-76.66703, 38.785992}, + {47.970806, 56.659185}, + {19.16251, 47.514142}, + {19.31778, 47.592404}, + {15.271984, 46.984646}, + {37.548229, 54.092726}, + {17.830862, 46.832001}, + {-1.451746, 51.279247}, + {-93.801025, 36.121269}, + {-83.269545, 42.208787}, + {-90.005865, 29.930845}, + {-94.172333, 36.224964}, + {12.854203, 50.83385}, + {35.051388, 32.502186}, + {13.351028, 52.408104}, + {-74.444115, 40.555336}, + {-73.637455, 45.552864}, + {54.465716, 24.537566}, + {8.582581, 47.409872}, + {17.289391, 52.414089}, + {-82.554268, 28.038136}, + {-106.072968, 39.616508}, + {-71.2239, 46.813156}, + {139.507019, 35.337914}, + {139.397745, 35.535516}, + {-82.183548, 34.575481}, + {4.903358, 51.837521}, + {-7.224882, 55.02879}, + {-1.79912, 47.874871}, + {-3.90421, 47.894299}, + {100.519243, 13.62474}, + {-118.225204, 33.968822}, + {-86.191971, 12.135849}, + {5.303803, 51.739273}, + {-80.060913, 44.446239}, + {103.848129, 1.278557}, + {24.115492, 56.957447}, + {60.781377, 41.43884}, + {67.085477, 39.70861}, + {60.565674, 41.523819}, + {69.204483, 41.273769}, + {-86.581779, 36.021717}, + {152.814835, -31.656252}, + {12.750437, 48.741013}, + {9.261103, 52.940205}, + {48.381572, 33.48505}, + {32.576359, 0.333917}, + {-70.475955, -27.721306}, + {0.082577, 40.066586}, + {7.929742, 52.561959}, + {-97.852462, 30.479851}, + {9.174439, 48.830769}, + {-96.509857, 33.869469}, + {103.775699, 1.424614}, + {64.483215, 39.921833}, + {63.625659, 40.151766}, + {11.620591, 46.674936}, + {21.878252, 51.806828}, + {7.791345, 47.977822}, + {17.792431, 46.360508}, + {46.712826, 24.645834}, + {-90.386469, 38.409615}, + {-122.332825, 47.515015}, + {88.024355, 23.176702}, + {88.004112, 23.195953}, + {-71.496185, 42.874355}, + {103.86343, 1.345894}, + {31.227162, 30.064876}, + {39.218876, 21.601368}, + {-1.728695, 52.544987}, + {5.034664, 47.264225}, + {-122.275852, 47.201103}, + {-106.734993, 52.143852}, + {5.382857, 43.291451}, + {17.909476, 40.625514}, + {32.55341, 0.2959}, + {10.468121, 50.88468}, + {7.744851, 44.907419}, + {15.102774, 36.881182}, + {17.074277, 51.116484}, + {-104.719849, 38.87212}, + {-96.83847, 32.933071}, + {-47.292716, -22.725685}, + {11.217154, 51.954345}, + {30.368864, -30.866394}, + {14.254102, 40.840625}, + {-82.22591, 34.278296}, + {-84.422943, 33.721258}, + {-121.004237, 37.694574}, + {-122.995781, 44.05925}, + {0.063905, 51.621628}, + {9.182481, 45.543468}, + {-80.808624, 43.060272}, + {61.305012, 55.357665}, + {4.204102, 45.095661}, + {9.883808, 44.424467}, + {8.895753, 44.428036}, + {9.331549, 48.456043}, + {-92.178963, 32.511089}, + {-73.550003, 41.079277}, + {61.119065, 56.750425}, + {-6.57692, 37.35257}, + {13.401475, 52.511016}, + {2.401898, 48.84815}, + {-109.356384, 38.973}, + {-4.072601, 52.382248}, + {10.122119, 56.22366}, + {8.344713, 48.753381}, + {10.326185, 51.167948}, + {152.849037, -27.634423}, + {-80.141327, 33.050198}, + {103.875025, 1.411445}, + {-104.034264, 31.111797}, + {8.918629, 50.135033}, + {15.051615, 37.516792}, + {13.470582, 52.503737}, + {11.507773, 53.684639}, + {13.785088, 45.656685}, + {-74.617653, 40.324551}, + {101.710686, 3.143085}, + {22.526303, 49.166059}, + {20.015668, 51.332146}, + {22.16822, 50.0904}, + {20.183106, 51.222766}, + {115.821437, 28.746029}, + {28.2286, -12.570097}, + {31.034396, -29.846076}, + {-87.935173, 41.628998}, + {27.403606, 37.033333}, + {1.819245, 45.750333}, + {6.937251, 50.941322}, + {-97.682968, 30.429926}, + {-97.759448, 30.431257}, + {8.92675, 38.993972}, + {10.112464, 54.344775}, + {29.258774, 40.440556}, + {37.170368, 55.976815}, + {1.247771, 45.7949}, + {-86.988167, 40.079399}, + {121.324112, 31.063867}, + {139.639175, 35.945621}, + {15.168303, 36.95092}, + {153.00663, -27.401398}, + {32.587425, 0.31967}, + {135.528328, 34.665366}, + {-94.426959, 37.075224}, + {120.754008, 30.667199}, + {120.34372, 31.576612}, + {-6.232997, 53.329622}, + {-86.391617, 39.977978}, + {-76.594162, 39.281487}, + {8.644806, 50.52264}, + {109.185251, -7.387857}, + {16.135529, 48.007065}, + {23.636986, 37.93534}, + {-81.39669, 30.279095}, + {-6.894657, 32.892334}, + {107.471657, -6.848597}, + {16.207845, 51.382218}, + {-84.427381, 33.77813}, + {100.259384, 16.887423}, + {131.343895, 33.564457}, + {13.882043, 51.230702}, + {99.057484, 18.503258}, + {29.144697, -30.830538}, + {46.26849, 38.108463}, + {-7.453983, 53.523832}, + {26.188045, 58.615971}, + {-0.131038, 51.48999}, + {18.186641, 40.353723}, + {17.624611, 40.302425}, + {174.766396, -36.848685}, + {57.054379, 21.375891}, + {28.113785, -26.186932}, + {5.629017, 43.189266}, + {50.199215, 36.225388}, + {19.051732, 47.520957}, + {23.638478, 37.96673}, + {11.37374, 46.495895}, + {11.877238, 48.193765}, + {2.567527, 36.424067}, + {27.541383, 37.124758}, + {-84.363243, 42.162571}, + {-87.650481, 41.974042}, + {35.979359, 34.426003}, + {130.408439, 33.591095}, + {28.270453, 36.83519}, + {18.037383, 59.400515}, + {2.373317, 42.593708}, + {-113.479156, 37.154343}, + {-118.14624, 34.043056}, + {113.954216, 22.582741}, + {23.655475, 37.974018}, + {145.741798, -16.898561}, + {28.116102, -26.088968}, + {102.284332, 6.121075}, + {30.756729, 36.852074}, + {9.528724, 50.806238}, + {18.921329, 50.295654}, + {-121.52504, 36.99913}, + {-115.068947, 36.193054}, + {-2.587105, 42.922962}, + {7.046089, 51.252094}, + {12.473896, 41.899128}, + {-85.882187, 37.431795}, + {22.93025, 40.653584}, + {-98.482521, 29.519365}, + {14.220156, 40.828316}, + {-84.138435, 33.924042}, + {16.582012, 52.031159}, + {-17.470918, 14.724909}, + {-121.948517, 38.491199}, + {45.86819, 41.702836}, + {50.069679, 26.426281}, + {19.088358, 52.655251}, + {14.114529, 52.732534}, + {-58.045403, -35.436924}, + {15.269559, 44.104971}, + {11.483454, 48.39313}, + {126.902199, 37.304485}, + {10.14817, 53.569691}, + {38.220395, 53.152612}, + {-95.733244, 29.961485}, + {13.236193, 52.406624}, + {9.069223, 54.09166}, + {121.943751, 29.211804}, + {18.169333, 42.627994}, + {20.936789, 52.201676}, + {8.595238, 50.133266}, + {-118.202751, 34.065525}, + {47.811947, 29.295498}, + {19.241483, 51.752199}, + {120.991959, 14.584919}, + {105.850334, 21.0233}, + {19.980887, 49.316905}, + {19.936995, 50.021568}, + {19.936781, 50.021366}, + {15.238059, 37.042396}, + {-81.223801, 35.529301}, + {19.936861, 50.021572}, + {121.968506, 29.416962}, + {120.403202, 30.112916}, + {144.906647, -37.584541}, + {31.022938, -29.821524}, + {-6.315279, 53.328228}, + {9.123793, 49.903761}, + {-95.121983, 29.528506}, + {11.879888, 48.310852}, + {10.101098, 53.511124}, + {-84.474983, 39.423103}, + {-59.66308, -29.215284}, + {11.646335, 48.160784}, + {-91.436974, 30.714329}, + {40.03773, 50.737997}, + {38.830818, 45.595416}, + {36.451561, 45.352389}, + {37.937359, 55.504056}, + {-1.531808, 47.256512}, + {-117.29007, 34.243076}, + {-118.083916, 34.167122}, + {39.178036, 21.467068}, + {4.872249, 45.752582}, + {19.940286, 49.553514}, + {-98.360359, 30.043856}, + {20.305685, 50.625723}, + {6.137318, 47.609962}, + {-122.962575, 46.742123}, + {150.854416, -33.987747}, + {9.612248, 47.460248}, + {115.832676, -31.82058}, + {-5.678507, 35.689169}, + {-82.525978, 27.447281}, + {7.246532, 47.14227}, + {-122.403336, 37.784821}, + {8.772217, 49.367817}, + {153.128036, -27.085617}, + {36.316559, 45.312795}, + {-79.261147, 43.899109}, + {-84.967896, 32.57346}, + {-117.150243, 47.685913}, + {115.809586, -31.769476}, + {-76.711807, 39.154846}, + {37.562588, 55.762935}, + {-7.633147, 33.481461}, + {-64.536095, -31.368351}, + {-0.140989, 51.265553}, + {-1.575, 53.790798}, + {10.079891, 53.199429}, + {11.040839, 49.321042}, + {23.354782, 42.69736}, + {-91.450485, 46.034012}, + {-118.081131, 34.040833}, + {150.934387, -33.799046}, + {6.770728, 51.196152}, + {2.355979, 6.461269}, + {3.179515, 48.897653}, + {-96.772652, 32.923859}, + {115.250839, -8.700479}, + {-91.54686, 41.705227}, + {25.337817, 43.971844}, + {8.527547, 47.374954}, + {12.834565, 61.886749}, + {7.562704, 51.021788}, + {-86.072594, 12.01187}, + {37.615137, 55.90268}, + {-80.062457, 26.715384}, + {8.661308, 50.111351}, + {8.307646, 40.586422}, + {-74.535156, 39.457172}, + {24.972142, 60.290361}, + {-5.484853, 57.55915}, + {151.274658, -33.749607}, + {7.970403, 52.15506}, + {139.603515, 35.321282}, + {139.531228, 35.353388}, + {-82.611244, 28.00713}, + {-84.102726, 33.688286}, + {39.188816, 21.552052}, + {-6.61555, 52.979149}, + {-80.083664, 26.513391}, + {60.550418, 56.97863}, + {7.090944, 49.248321}, + {51.331127, 35.713082}, + {35.269866, 32.946314}, + {7.402824, 35.720146}, + {-98.481674, 29.437872}, + {-75.247117, 43.096907}, + {-6.782844, 53.409322}, + {103.807442, 1.278103}, + {28.029037, -25.883835}, + {-6.446214, 53.275446}, + {-112.004122, 41.21262}, + {-49.031705, -22.351953}, + {-78.127008, 0.344171}, + {37.643258, 54.226511}, + {18.645436, -33.872658}, + {-81.904276, 35.36296}, + {4.893952, 45.76693}, + {10.600734, 44.762943}, + {-106.277908, 31.567764}, + {-81.822861, 26.256037}, + {2.33899, 48.76208}, + {13.581909, 52.501645}, + {11.816576, 51.158641}, + {5.241878, 43.439432}, + {-79.660965, 34.229561}, + {-85.714344, 31.326324}, + {4.829558, 47.325796}, + {16.358471, 48.167122}, + {-118.295914, 33.790623}, + {-70.218198, -17.990232}, + {6.550777, 46.229611}, + {-73.996284, 40.624813}, + {20.265882, 49.99052}, + {-82.521317, 27.996178}, + {-77.114364, 44.195832}, + {100.267998, 6.476}, + {151.23204, -33.906937}, + {-119.423927, 46.296501}, + {19.293962, 50.030006}, + {1.129498, 6.216769}, + {2.402312, 48.85656}, + {-149.90658, 61.181612}, + {81.62939, 21.252879}, + {11.1688, 46.669224}, + {2.926048, 36.710149}, + {8.258673, 49.999702}, + {21.807578, 51.54034}, + {14.137388, 49.311039}, + {-72.558807, 42.127003}, + {17.039473, 48.429407}, + {141.456081, 42.592049}, + {12.376642, 50.722939}, + {-102.075211, 32.003582}, + {-112.896584, 43.506958}, + {9.140146, 48.709671}, + {-84.410469, 33.68218}, + {-85.131378, 35.059078}, + {146.734833, -19.266186}, + {145.312072, -37.830464}, + {30.37575, -29.710255}, + {81.62686, 21.248181}, + {13.334007, 51.320028}, + {2.321442, 48.769112}, + {15.23514, 44.108249}, + {50.198776, 26.28997}, + {66.995522, 39.705734}, + {60.274216, 41.665009}, + {-76.293884, 39.576023}, + {-81.303375, 28.991514}, + {19.048893, 47.502722}, + {-0.056193, 49.002029}, + {51.399227, 35.805939}, + {2.139397, 48.836811}, + {13.381438, 52.487108}, + {-104.844566, 39.679205}, + {18.681934, -33.840164}, + {13.872463, 51.165314}, + {10.65914, 53.488438}, + {1.645496, 45.729552}, + {-80.380318, 27.601955}, + {-6.859985, 33.981947}, + {120.600104, 31.278783}, + {37.399362, 55.86166}, + {0.4059, 46.865902}, + {35.932922, 32.001461}, + {6.616578, 36.372671}, + {15.713406, 59.398575}, + {-82.40728, 38.642632}, + {-82.822482, 39.982889}, + {121.492358, 31.169205}, + {20.519144, 54.708834}, + {26.276272, 50.6167}, + {23.435165, 38.022945}, + {14.376841, 49.992355}, + {-81.410941, 28.482257}, + {-97.423576, 32.810782}, + {3.9269, 50.922722}, + {-77.356969, 37.458613}, + {120.982979, 14.627447}, + {-9.501501, 52.057377}, + {3.081888, 46.851412}, + {9.109158, 49.192272}, + {-88.775703, 35.678337}, + {139.767522, 35.665072}, + {28.023793, 53.896288}, + {28.739264, 40.977261}, + {-84.015282, 43.466496}, + {14.005912, 51.948043}, + {13.077006, 45.938803}, + {-105.000374, 39.711312}, + {-96.949211, 50.108032}, + {88.440166, 22.643503}, + {4.894866, 45.063999}, + {15.681375, 48.230469}, + {11.64214, 50.075344}, + {13.970395, 51.829796}, + {15.58697, 52.172211}, + {8.508991, 49.482235}, + {-85.756248, 39.390995}, + {100.593487, 13.742712}, + {42.74917, 18.286615}, + {-6.381364, 53.326822}, + {7.716833, 47.550083}, + {34.357078, 44.613484}, + {33.869532, 44.751441}, + {33.617545, 45.130777}, + {39.468321, 46.318782}, + {38.148569, 54.254778}, + {-102.886139, 20.365864}, + {30.286556, 59.947062}, + {-96.790482, 32.813058}, + {20.49588, 54.71003}, + {-70.950554, 42.181859}, + {145.221756, -37.846203}, + {13.415134, 49.72427}, + {9.169939, 47.768961}, + {16.52331, 50.822217}, + {30.932356, -29.97336}, + {35.901875, 35.079271}, + {35.790864, 35.511222}, + {-95.669819, 30.050927}, + {20.623357, 55.019707}, + {-96.40581, 43.795672}, + {33.954432, 50.982663}, + {12.966402, 37.614113}, + {12.090471, 49.013239}, + {18.460232, -34.078629}, + {-84.428154, 33.830883}, + {-80.795761, 33.509594}, + {-77.198885, 37.512652}, + {11.373214, 61.135994}, + {-71.140068, 41.687939}, + {121.481821, 31.178777}, + {-21.890879, 64.12777}, + {11.600453, 45.584532}, + {20.349628, 54.714786}, + {-117.565552, 47.52161}, + {16.757245, 48.927934}, + {-86.34359, 41.671825}, + {149.588989, -32.597948}, + {151.238846, -33.953491}, + {-74.224997, 11.183058}, + {47.885382, 56.62273}, + {-0.583637, 51.560898}, + {-81.447823, 38.157841}, + {36.649094, 34.668362}, + {36.460524, 33.615708}, + {36.244351, 33.494743}, + {-120.502296, 37.302776}, + {-98.678267, 29.546763}, + {-79.28554, 37.889789}, + {-118.543106, 34.257351}, + {-115.145004, 36.174648}, + {7.132246, 46.805891}, + {5.259965, 45.391509}, + {-83.433578, 36.038124}, + {103.849579, 1.291506}, + {21.225691, 52.254452}, + {30.393228, 59.984614}, + {78.050184, 30.339926}, + {2.302093, 49.897364}, + {-98.635388, 29.515053}, + {-86.7892, 36.155876}, + {143.832291, -37.573441}, + {-6.258501, 53.340336}, + {-1.550809, 53.807167}, + {-94.591469, 39.045067}, + {-89.738556, 37.196003}, + {-82.656387, 27.621627}, + {7.663156, 51.217157}, + {8.674655, 50.131992}, + {2.602698, 49.287929}, + {-110.824615, 32.206516}, + {11.901078, 49.086029}, + {-75.708496, 45.41555}, + {-84.119789, 35.909569}, + {10.171945, 49.753863}, + {-97.365113, 31.076906}, + {46.572231, 24.578003}, + {12.335476, 41.778137}, + {8.903541, 44.463276}, + {-96.717308, 32.973183}, + {114.179703, 22.2792}, + {121.512123, 25.035109}, + {-92.700073, 38.190445}, + {-83.976959, 33.98082}, + {-81.991501, 33.471066}, + {46.696114, 24.722599}, + {16.479376, 49.759716}, + {31.057339, -29.724253}, + {17.9779, 59.338364}, + {-87.642534, 41.874598}, + {17.034199, 51.128162}, + {106.81382, -6.610319}, + {21.010499, 52.211651}, + {151.8853, -27.415949}, + {-81.224327, 42.988377}, + {20.936922, 51.684391}, + {-83.371979, 33.955872}, + {-71.008434, 42.230173}, + {106.859093, -6.359753}, + {39.607053, 24.493403}, + {15.882524, 46.196565}, + {30.341116, 60.002668}, + {9.462295, 52.428513}, + {12.481999, 55.912441}, + {55.44952, 25.27198}, + {2.112423, 46.042488}, + {16.972685, 53.133919}, + {-115.140251, 36.181408}, + {-8.072529, 40.651158}, + {0.710815, 47.400627}, + {6.550522, 46.545189}, + {-80.425507, 41.294762}, + {-123.150655, 49.254644}, + {-117.279221, 33.065197}, + {-76.306997, 40.22792}, + {-79.825176, 36.061421}, + {46.610601, 24.813553}, + {46.59635, 24.77854}, + {98.766235, 23.671293}, + {6.67245, 36.315929}, + {22.391152, 37.492665}, + {-116.159654, 35.179581}, + {3.573896, 46.535216}, + {-97.034416, 32.92094}, + {21.1693, 52.002914}, + {35.38768, 31.684011}, + {15.732663, 50.863205}, + {24.006147, 49.805779}, + {-81.084007, 40.403347}, + {-97.519297, 35.459985}, + {20.87657, 52.287796}, + {-111.985628, 40.780825}, + {22.42893, 37.117673}, + {10.504099, 43.843531}, + {30.622405, 60.014517}, + {32.890961, 24.060932}, + {11.469337, 48.224448}, + {-0.155277, 52.958691}, + {106.668587, 10.815291}, + {-78.967103, 35.061848}, + {13.330503, 52.534466}, + {-111.764397, 33.314098}, + {-117.092384, 33.130722}, + {21.582829, 54.012798}, + {34.820446, 32.095711}, + {4.372022, 50.837296}, + {-82.753569, 8.414178}, + {-122.547256, 45.573025}, + {-92.13047, 32.02404}, + {-84.925003, 34.425144}, + {2.828742, 36.70067}, + {-106.338364, 31.790865}, + {18.054911, 59.330784}, + {2.945095, 36.748081}, + {174.756393, -36.852692}, + {-83.308222, 40.21452}, + {13.052099, 37.539303}, + {39.673306, 24.472811}, + {6.393286, 51.825714}, + {-123.123276, 49.212334}, + {-95.302002, 29.926458}, + {100.674042, 13.84724}, + {4.241668, 45.560371}, + {-6.451589, 53.360748}, + {10.891915, 48.404789}, + {-106.490486, 31.763367}, + {19.040427, 47.541289}, + {2.645683, 48.555749}, + {11.01033, 45.436641}, + {-0.83945, 44.494638}, + {150.781113, -33.841862}, + {149.6757, -34.782302}, + {55.378513, 24.201984}, + {136.499618, 34.949751}, + {106.846565, -6.132515}, + {0.980803, 36.155603}, + {137.053683, 35.152391}, + {11.552813, 48.142052}, + {-2.111376, 53.628056}, + {-65.195869, -26.806513}, + {-97.017754, 29.941019}, + {116.032906, -31.55394}, + {8.921787, 45.568162}, + {-93.317959, 44.907294}, + {54.615162, 24.304117}, + {79.777327, 12.87911}, + {-84.141296, 39.730652}, + {-84.505015, 39.343604}, + {18.531003, 54.512333}, + {8.633112, 49.806686}, + {7.414218, 51.371857}, + {-123.067741, 49.045246}, + {-94.526146, 37.088036}, + {-87.397186, 36.641233}, + {14.350052, 52.911274}, + {34.836506, 31.269634}, + {113.273438, 23.131466}, + {9.881351, 48.415293}, + {1.843268, 48.53203}, + {13.528002, 43.513035}, + {14.306374, 40.958658}, + {-85.937848, 39.116553}, + {1.139482, 52.672964}, + {16.005617, 53.646957}, + {20.238422, 51.733909}, + {-84.5214, 39.079052}, + {1.973554, 48.791116}, + {-97.218172, 32.834157}, + {-80.207191, 25.793526}, + {2.342637, 48.875108}, + {18.415924, -33.924309}, + {39.512926, 24.450636}, + {4.327564, 52.079163}, + {73.530716, 19.933075}, + {72.922539, 19.152462}, + {2.132695, 48.901847}, + {23.328363, 42.690878}, + {-99.146294, 19.434671}, + {-0.101797, 51.37965}, + {100.33638, 13.69543}, + {-72.926826, 41.365204}, + {-105.063805, 39.876003}, + {13.225391, 52.46008}, + {-116.919106, 32.498566}, + {-77.021675, -12.154688}, + {-121.803421, 38.016155}, + {153.428329, -28.001158}, + {-88.262466, 34.438259}, + {77.939907, 12.992568}, + {-112.235977, 33.513153}, + {-77.533452, 39.475485}, + {79.124658, 12.810165}, + {113.236529, 23.073917}, + {-77.102287, -12.028973}, + {-76.946976, 40.370243}, + {4.763268, 45.721846}, + {83.094032, 54.866933}, + {-87.855812, 41.821781}, + {2.320499, 48.740252}, + {10.149668, 53.530404}, + {10.675601, 48.107749}, + {-6.195166, 53.278888}, + {9.233974, 45.80242}, + {33.822964, 27.097113}, + {-83.386551, 42.30175}, + {-8.486453, 37.558237}, + {39.645332, 24.462643}, + {-4.59035, 41.809326}, + {2.318636, 48.839275}, + {-94.631065, 39.240921}, + {7.588053, 47.547241}, + {121.039417, 31.331221}, + {6.870341, 51.161749}, + {79.606655, 11.907623}, + {8.408861, 49.939583}, + {0.71598, 47.368019}, + {-48.906949, -26.163639}, + {78.921822, 12.938692}, + {-85.030159, 32.475456}, + {-118.260399, 34.028851}, + {-1.429372, 53.223351}, + {-0.031974, 51.473875}, + {37.577244, 55.760964}, + {2.219516, 48.860303}, + {-104.68998, 40.024651}, + {-97.46637, 27.790367}, + {-122.065718, 38.280502}, + {116.00468, 29.771748}, + {113.141991, 22.995401}, + {15.483691, 51.94442}, + {12.074134, 48.991154}, + {-90.235947, 30.041515}, + {144.991226, -37.863346}, + {22.3957, 47.037613}, + {2.684881, 49.173534}, + {46.664225, 24.821527}, + {136.771423, 35.213161}, + {113.021207, 25.467555}, + {9.548911, 48.820147}, + {1.875215, 48.893348}, + {60.602383, 56.828127}, + {79.982791, 13.124387}, + {-115.145592, 36.159208}, + {121.284543, 24.896016}, + {72.809419, 18.971817}, + {-118.36853, 33.947002}, + {7.280275, 43.735627}, + {-58.43549, -34.620136}, + {2.944197, 48.027069}, + {-118.260323, 34.048424}, + {-1.29613, 51.089935}, + {100.54361, 13.742045}, + {79.997398, 13.123856}, + {9.553835, 46.967113}, + {-73.381264, 45.410583}, + {77.652767, 12.991332}, + {-73.906136, 40.752846}, + {0.714844, 47.367912}, + {6.941642, 50.829731}, + {14.753543, 45.346577}, + {9.960458, 37.246614}, + {18.417559, 54.4426}, + {9.572968, 50.892158}, + {-96.24015, 33.380268}, + {9.212276, 51.844826}, + {-82.458824, 28.224375}, + {-96.705528, 31.714321}, + {15.184704, 59.30344}, + {176.53797, -37.823778}, + {148.64743, -32.251175}, + {-104.913048, 39.656208}, + {10.802735, 59.78751}, + {-75.200588, 40.078938}, + {8.472965, 48.998154}, + {-96.459099, 32.093597}, + {72.873901, 19.426241}, + {-96.762741, 32.027447}, + {-89.067252, 42.289141}, + {9.442485, 0.40832}, + {5.779009, 46.157468}, + {4.869409, 53.154217}, + {-88.309, 36.615264}, + {-75.57869, 6.224188}, + {-95.372036, 30.039636}, + {-59.966777, -3.077717}, + {-86.694699, 41.613215}, + {10.143582, 36.931895}, + {-95.397552, 29.760729}, + {-55.172112, 5.794559}, + {-83.623734, 32.574394}, + {4.836113, 45.74409}, + {151.581249, -33.038266}, + {-101.985275, 33.680069}, + {-116.270683, 33.746791}, + {30.373186, 59.93645}, + {35.88394, 32.020508}, + {13.81311, 56.173912}, + {-3.710117, 40.480862}, + {6.897285, 50.885235}, + {14.5824, 46.000351}, + {14.572005, 46.002898}, + {14.540846, 46.014294}, + {-87.688118, 41.953754}, + {-80.152168, 25.911993}, + {106.654861, -6.302012}, + {40.733102, -14.944845}, + {151.213333, -33.938709}, + {3.884342, 43.57675}, + {-57.55645, -37.987771}, + {-93.142616, 44.929848}, + {-94.751602, 38.949547}, + {11.468967, 48.412791}, + {-79.506119, 35.779999}, + {-74.119334, 4.678855}, + {16.600662, 41.130619}, + {5.800848, 50.699868}, + {-84.029198, 33.804474}, + {-101.951759, 32.740089}, + {103.892158, 1.388741}, + {-91.814316, 34.15601}, + {8.552987, 49.55637}, + {8.834547, 52.913029}, + {6.945915, 51.13137}, + {-111.686485, 32.900173}, + {-0.136577, 51.565842}, + {18.603617, -33.889569}, + {145.363571, -37.920185}, + {6.584052, 51.534996}, + {-80.706261, 28.189865}, + {-115.290146, 36.159138}, + {7.091897, 51.167397}, + {46.954758, 25.575361}, + {139.755472, 35.660817}, + {139.670059, 35.274518}, + {21.446747, 50.085346}, + {49.296839, 53.513204}, + {-97.478165, 35.649303}, + {13.304951, 52.435487}, + {-86.335323, 11.987372}, + {-91.151001, 30.404396}, + {123.854351, 8.156105}, + {176.178024, -37.718697}, + {-0.029278, 39.980694}, + {11.514655, 48.220621}, + {29.758139, 60.319099}, + {4.714601, 47.110005}, + {-6.703582, 32.300073}, + {-96.997574, 32.446564}, + {15.979887, 45.822792}, + {-93.078552, 44.908806}, + {18.627209, -33.906315}, + {17.986116, 59.294765}, + {-2.110406, 49.183498}, + {7.338491, 44.886158}, + {51.286684, 35.731539}, + {48.225738, 33.441041}, + {50.447517, 34.494724}, + {14.49247, 52.772862}, + {-97.240474, 27.54328}, + {-96.918328, 32.965549}, + {-75.165306, 39.945606}, + {120.566108, 23.626282}, + {5.367542, 43.278675}, + {-84.024529, 35.97588}, + {-95.470779, 29.819452}, + {1.030276, 45.731614}, + {2.676013, 46.471232}, + {6.062433, 50.816076}, + {-90.170464, 32.298149}, + {121.459305, 31.256158}, + {13.320285, 52.588411}, + {34.855202, 32.328995}, + {39.246384, 21.509895}, + {6.284816, 51.282459}, + {-123.096901, 49.272186}, + {-3.164524, 55.890923}, + {9.194991, 45.465546}, + {16.079934, 48.854674}, + {-75.794333, 39.834233}, + {5.063096, 43.636162}, + {-1.46932, 52.924793}, + {105.758682, 20.965649}, + {6.685921, 51.413141}, + {1.656508, 44.399305}, + {-77.496936, 39.10922}, + {-55.170401, -27.006403}, + {100.569249, 13.760021}, + {46.742462, 24.564451}, + {4.217077, 43.687853}, + {10.982785, 33.850895}, + {-67.669098, -53.877019}, + {13.261921, 45.884044}, + {9.169008, 45.539224}, + {40.217518, 29.88722}, + {77.829683, 12.735182}, + {77.125099, 11.084085}, + {-76.607308, 39.463288}, + {-0.310147, 51.489586}, + {7.151373, 48.893515}, + {9.076988, 49.991293}, + {-122.94059, 49.226795}, + {-120.354561, 50.667194}, + {12.844837, 47.822388}, + {-97.60813, 35.511124}, + {-97.579776, 35.518233}, + {12.869241, 41.485973}, + {76.849177, 11.440169}, + {11.093386, 42.804211}, + {10.631642, 48.799457}, + {-105.639236, 27.126581}, + {28.142794, -32.333099}, + {0.648665, 47.363115}, + {-93.253174, 38.679783}, + {-74.302841, 40.231052}, + {49.272045, 53.499821}, + {-88.686241, 35.973808}, + {-87.860634, 41.752117}, + {8.715506, 51.583454}, + {-73.574097, 45.550449}, + {18.04722, 59.3339}, + {-81.041314, 32.351554}, + {78.136028, 12.12955}, + {-84.426048, 33.639431}, + {27.920197, -33.013031}, + {-2.412805, 53.576668}, + {72.868324, 19.116825}, + {9.172578, 48.811493}, + {0.494942, 45.674179}, + {172.641668, -43.522193}, + {-95.253204, 29.655964}, + {120.648563, 31.272887}, + {-89.532112, 36.799099}, + {103.820379, 1.387019}, + {23.531534, 45.990253}, + {-93.541542, 17.631172}, + {-90.090469, 35.641674}, + {-91.984871, 34.802504}, + {78.523689, 12.595671}, + {-97.454239, 35.450245}, + {151.224991, -33.914181}, + {30.84274, 50.511896}, + {7.169693, 43.726972}, + {-0.002697, 48.69047}, + {-92.324329, 34.742501}, + {-93.26783, 30.237432}, + {-77.424133, 39.220428}, + {-79.343338, 43.775162}, + {28.211067, -25.746138}, + {5.195587, 7.842927}, + {-82.041298, 28.970665}, + {39.552479, 24.36957}, + {39.850216, 21.421459}, + {14.749571, 52.416812}, + {15.605596, 51.92384}, + {78.940351, 13.204309}, + {-47.166285, -22.889443}, + {67.928999, 24.74746}, + {-111.507195, 40.65303}, + {-1.080196, 50.787003}, + {17.94825, 59.446819}, + {-9.589985, 30.424511}, + {49.530941, 25.307755}, + {-118.308914, 34.010731}, + {-84.567261, 33.685513}, + {-84.397266, 33.828709}, + {54.607548, 24.491554}, + {30.958685, -29.840502}, + {30.871281, -29.824316}, + {30.879799, -29.846497}, + {30.812489, -29.749185}, + {30.92393, -29.877941}, + {123.817769, 10.300613}, + {139.756609, 35.666104}, + {30.838757, 50.501587}, + {25.292625, -30.663273}, + {35.020226, 47.827057}, + {-0.655202, 35.660789}, + {-122.389717, 37.77396}, + {44.017994, 26.07572}, + {-106.155212, 28.737584}, + {20.5873, 47.664121}, + {20.187706, 47.193361}, + {21.058081, 46.693726}, + {21.456512, 52.199657}, + {18.995791, 50.2712}, + {-70.968623, 42.247772}, + {-1.143988, 52.958097}, + {-84.635323, 33.808964}, + {10.125318, 36.786507}, + {-102.043541, 19.420923}, + {77.455505, 29.510084}, + {-4.363054, 36.718529}, + {5.576263, 51.953793}, + {23.852708, 38.200057}, + {-106.298599, 31.772671}, + {-117.348465, 34.107082}, + {10.255878, 53.633972}, + {-95.628036, 29.946793}, + {-73.917107, 40.826073}, + {-55.118389, 5.80403}, + {-96.443863, 28.729809}, + {-81.332977, 28.495083}, + {-70.940605, 42.213245}, + {-47.061382, -22.91748}, + {19.93697, 52.100803}, + {-86.543037, 36.681503}, + {103.905889, 1.328137}, + {-97.714943, 30.217339}, + {15.912719, 45.796263}, + {-77.714622, 36.959538}, + {-116.96627, 33.967051}, + {-21.82073, 64.084244}, + {-46.687862, -23.594528}, + {-96.812553, 32.856159}, + {15.196352, 60.12241}, + {10.601294, 49.579187}, + {-71.049286, 42.346127}, + {9.218047, 48.704082}, + {-95.317924, 29.812815}, + {9.876149, 56.006403}, + {-81.714622, 41.480747}, + {16.371214, 48.208828}, + {-66.087189, 18.403515}, + {-96.878128, 29.913769}, + {150.95405, -33.773375}, + {-117.076637, 33.033348}, + {36.234619, 35.859343}, + {-80.202126, 26.287642}, + {10.111323, 36.935387}, + {-86.340477, 39.70768}, + {-46.654232, -23.637888}, + {114.166992, 22.325594}, + {7.399335, 50.982288}, + {-81.211548, 37.28701}, + {72.886663, 18.796484}, + {-78.842072, 35.024513}, + {-80.828835, 35.104626}, + {-92.065068, 30.195078}, + {19.057349, 47.502513}, + {139.535969, 35.466602}, + {78.478954, 17.386088}, + {17.163159, 51.173087}, + {-84.586258, 37.034782}, + {37.388586, 55.711089}, + {-122.974291, 49.248666}, + {-96.605873, 33.260815}, + {12.814488, 52.202145}, + {121.456146, 31.069426}, + {100.489815, 14.572876}, + {100.750031, 13.694042}, + {-84.097214, 33.259979}, + {-75.095184, 39.844124}, + {-86.1035, 39.507648}, + {115.477101, -30.842531}, + {-0.210626, 51.555916}, + {4.63927, 52.438042}, + {17.812582, 46.82553}, + {-96.777283, 33.248829}, + {-75.136139, 40.007298}, + {-92.149658, 34.831158}, + {-46.618491, -23.677447}, + {-121.474983, 38.620117}, + {15.321268, -4.305175}, + {23.760192, 52.079354}, + {106.834923, -6.218973}, + {-81.518944, 41.586704}, + {54.613033, 24.405251}, + {13.337626, 52.488503}, + {-84.426208, 33.639372}, + {7.740229, 48.494628}, + {15.734831, 50.912582}, + {-3.048068, 51.534652}, + {44.188916, 56.102839}, + {43.999008, 13.578246}, + {23.742916, 37.989754}, + {-6.948716, 33.931885}, + {-81.317383, 29.903856}, + {21.136725, 52.246735}, + {81.647303, 21.244155}, + {8.008578, 52.299724}, + {-96.5839, 33.759014}, + {-105.024811, 39.846371}, + {55.359322, 25.213936}, + {77.977947, 16.612417}, + {-89.519447, 34.368885}, + {13.370566, 52.493481}, + {72.824565, 19.043361}, + {-88.010872, 15.409042}, + {-0.783448, 43.478119}, + {1.403165, 43.582592}, + {65.558708, 57.107227}, + {-101.871295, 33.621342}, + {-60.049489, -3.076784}, + {103.022403, 13.53709}, + {104.91678, 11.611642}, + {77.044092, 10.043845}, + {30.385038, -29.626675}, + {-70.97892, 42.261364}, + {80.284683, 16.759553}, + {21.168931, 52.316746}, + {-106.392303, 31.93231}, + {-79.254868, 43.969547}, + {28.338146, -26.174479}, + {-77.455307, 37.270939}, + {2.379599, 48.857199}, + {28.230574, -26.13608}, + {-82.680847, 42.235245}, + {-59.939484, -3.004365}, + {6.885922, 50.909153}, + {-89.534072, 34.372834}, + {-117.074158, 32.748302}, + {-96.596008, 33.666958}, + {-111.839157, 40.394047}, + {2.831272, 36.570053}, + {16.727329, 52.35043}, + {129.487396, 42.90539}, + {-101.955193, 35.871773}, + {39.645508, 24.465113}, + {10.092651, 45.547006}, + {-111.098647, 52.903817}, + {-71.490211, 41.662487}, + {5.916929, 43.133012}, + {-97.044044, 32.70433}, + {152.988754, -26.429392}, + {1.957424, 46.840196}, + {-0.04509, 51.459763}, + {14.532738, 53.427971}, + {-69.232985, -53.253889}, + {42.784248, 17.624632}, + {-82.833916, 32.506817}, + {-98.046623, 43.709377}, + {120.591629, 31.350015}, + {13.541077, 52.435616}, + {-86.269608, 39.895878}, + {-69.840607, 18.480934}, + {-88.151054, 42.06673}, + {37.473398, 55.689238}, + {-74.165855, 40.576122}, + {103.740051, 1.37863}, + {11.221107, 45.928307}, + {-10.641647, 6.229303}, + {-77.509926, 1.243134}, + {39.587876, 24.477507}, + {-89.266853, 13.669941}, + {4.824164, 45.761669}, + {-110.724808, 32.331196}, + {110.371109, -7.801507}, + {-94.364258, 44.891949}, + {16.172994, 50.912121}, + {1.321856, 49.34798}, + {30.30528, 59.8608}, + {2.828197, 49.465454}, + {-117.921013, 34.144611}, + {139.62149, 35.906983}, + {139.447919, 35.636272}, + {35.57613, 33.074715}, + {-98.456985, 29.367853}, + {152.346558, -29.375059}, + {46.776081, 24.78676}, + {12.874524, 50.768486}, + {14.64242, 51.116419}, + {-79.013329, 38.209415}, + {74.509537, 42.920194}, + {-106.385933, 31.831724}, + {-99.12352, 19.357801}, + {51.457268, 25.33828}, + {8.953544, 46.007788}, + {-84.443359, 33.644821}, + {39.125645, 21.551823}, + {-46.351974, -23.858746}, + {-90.433998, 38.746368}, + {30.312078, 59.935707}, + {30.582584, -30.473804}, + {-117.544777, 33.85511}, + {-97.625298, 30.580776}, + {-46.347122, -23.863239}, + {14.897802, 58.880352}, + {12.637733, 51.454983}, + {-73.672653, 40.668839}, + {-9.165531, 39.343704}, + {-87.932999, 43.017017}, + {-104.910194, 39.540165}, + {15.789414, 60.002598}, + {-84.781708, 33.868469}, + {31.020147, -29.83287}, + {11.269367, 51.875248}, + {103.284912, -1.663405}, + {-3.144419, 48.554777}, + {3.675695, 45.539575}, + {31.249653, 29.992105}, + {-89.618629, 20.979137}, + {144.969243, -37.815249}, + {9.782652, 53.657619}, + {-0.198956, 51.889197}, + {13.213613, 52.551338}, + {17.219128, 40.99522}, + {-80.840522, 35.260914}, + {7.024117, 43.55019}, + {34.922024, 32.166031}, + {9.191133, 48.787584}, + {-0.055137, 51.502523}, + {-73.835808, 42.381603}, + {1.376014, 48.725945}, + {23.306419, 42.669331}, + {-96.800285, 32.784969}, + {5.550038, 52.165619}, + {14.660041, 48.050987}, + {31.955666, -28.721216}, + {14.687632, 49.395046}, + {-59.984541, -3.00043}, + {-80.961929, 35.024055}, + {-80.757401, 35.290615}, + {-112.099808, 33.541451}, + {-82.71257, 27.499842}, + {1.137427, 52.028149}, + {-80.769066, 35.502285}, + {7.587955, 50.348995}, + {-84.24498, 30.494411}, + {2.407775, 48.887314}, + {77.63038, 13.00145}, + {2.244348, 41.451719}, + {51.461563, 25.243696}, + {14.43068, 50.064015}, + {-86.584587, 39.164619}, + {-89.955353, 35.204651}, + {51.473133, 25.304939}, + {2.366706, 48.826672}, + {7.164881, 50.887074}, + {10.097324, 54.346753}, + {1.216672, 6.155661}, + {-0.130304, 51.516286}, + {118.850872, 32.004936}, + {-60.941071, 14.644409}, + {14.534648, 53.415947}, + {3.303361, 51.306895}, + {-78.58046, 35.846455}, + {76.547645, 18.335233}, + {1.560335, 36.526394}, + {-97.352509, 32.715759}, + {81.639051, 21.25321}, + {-2.135905, 52.979679}, + {72.862752, 19.058745}, + {7.882106, 47.386623}, + {12.926482, 45.807374}, + {12.97469, 45.811355}, + {-92.568275, 34.59325}, + {-81.38314, 28.712156}, + {4.485126, 51.257352}, + {8.737099, 50.176544}, + {-97.186081, 33.5966}, + {13.514633, 45.833147}, + {9.861197, 47.653451}, + {126.805099, 37.334797}, + {13.47764, 48.575598}, + {3.060017, 36.771499}, + {51.494732, 25.680538}, + {-87.411295, 30.333684}, + {-122.942871, 46.643299}, + {-117.376816, 47.657276}, + {-112.133575, 33.631222}, + {26.717455, 44.062813}, + {13.241283, 52.164741}, + {51.421046, 35.729774}, + {-97.393318, 32.680912}, + {-65.313285, -24.198965}, + {-82.502174, 27.955427}, + {7.638195, 45.067795}, + {2.786478, 36.670437}, + {-51.938112, -23.42367}, + {-76.632919, 39.303619}, + {3.05873, 50.644901}, + {-97.841125, 30.494705}, +} diff --git a/idk/datagen/merck.go b/idk/datagen/merck.go new file mode 100644 index 000000000..d16afcce6 --- /dev/null +++ b/idk/datagen/merck.go @@ -0,0 +1,721 @@ +package datagen + +import ( + "io" + "math" + "math/rand" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +// Ensure Merck implements interface. +var _ Sourcer = (*Merck)(nil) + +// Merck implements Sourcer, and returns a very basic +// data set. It can be used as an Merck for writing +// additional custom Sourcers. +type Merck struct{} + +// NewMerck returns a new instance of Merck. +func NewMerck(cfg SourceGeneratorConfig) Sourcer { + return &Merck{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (e *Merck) Source(cfg SourceConfig) idk.Source { + src := &MerckSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(19)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, //0 + idk.StringField{NameVal: "image_location"}, //1 + idk.StringField{NameVal: "image_tag"}, //2 + idk.StringField{NameVal: "algorithm_name"}, //3 + idk.StringField{NameVal: "start_time"}, //4 + idk.StringField{NameVal: "analysis_region"}, //5 + idk.IntField{NameVal: "total_cells", Min: intptr(1000), Max: intptr(1000000)}, //6 + idk.IntField{NameVal: "dye_1_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //7 + idk.IntField{NameVal: "dye_2_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //8 + idk.IntField{NameVal: "dye_3_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //9 + idk.IntField{NameVal: "dye_4_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //10 + idk.IntField{NameVal: "dye_5_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //11 + idk.IntField{NameVal: "dye_6_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //12 + idk.IntField{NameVal: "dye_7_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //13 + idk.IntField{NameVal: "dye_8_positive_cells", Min: intptr(0), Max: intptr(1000000)}, //14 + idk.IntField{NameVal: "dye_1_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //15 + idk.IntField{NameVal: "dye_2_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //16 + idk.IntField{NameVal: "dye_3_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //17 + idk.IntField{NameVal: "dye_4_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //18 + idk.IntField{NameVal: "dye_5_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //19 + idk.IntField{NameVal: "dye_6_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //20 + idk.IntField{NameVal: "dye_7_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //21 + idk.IntField{NameVal: "dye_8_positive_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //22 + idk.IntField{NameVal: "negative_nuclei_cells", Min: intptr(0), Max: intptr(1000000)}, //23 + idk.IntField{NameVal: "dye_1_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //24 + idk.IntField{NameVal: "dye_2_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //25 + idk.IntField{NameVal: "dye_3_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //26 + idk.IntField{NameVal: "dye_4_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //27 + idk.IntField{NameVal: "dye_5_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //28 + idk.IntField{NameVal: "dye_6_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //29 + idk.IntField{NameVal: "dye_7_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //30 + idk.IntField{NameVal: "dye_8_positive_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //31 + idk.IntField{NameVal: "negative_cytoplasm_cells", Min: intptr(0), Max: intptr(1000000)}, //32 + idk.IntField{NameVal: "dye_1_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //33 + idk.IntField{NameVal: "dye_2_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //34 + idk.IntField{NameVal: "dye_3_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //35 + idk.IntField{NameVal: "dye_4_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //36 + idk.IntField{NameVal: "dye_5_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //37 + idk.IntField{NameVal: "dye_6_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //38 + idk.IntField{NameVal: "dye_7_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //39 + idk.IntField{NameVal: "dye_8_positive_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //40 + idk.IntField{NameVal: "negative_membrane_cells", Min: intptr(0), Max: intptr(1000000)}, //41 + idk.DecimalField{NameVal: "dye_1_per_positive_cells", Scale: 6}, //42 + idk.DecimalField{NameVal: "dye_2_per_positive_cells", Scale: 6}, //43 + idk.DecimalField{NameVal: "dye_3_per_positive_cells", Scale: 6}, //44 + idk.DecimalField{NameVal: "dye_4_per_positive_cells", Scale: 6}, //45 + idk.DecimalField{NameVal: "dye_5_per_positive_cells", Scale: 6}, //46 + idk.DecimalField{NameVal: "dye_6_per_positive_cells", Scale: 6}, //47 + idk.DecimalField{NameVal: "dye_7_per_positive_cells", Scale: 6}, //48 + idk.DecimalField{NameVal: "dye_8_per_positive_cells", Scale: 6}, //49 + idk.DecimalField{NameVal: "dye_1_per_positive_nuclei_cells", Scale: 6}, //50 + idk.DecimalField{NameVal: "dye_2_per_positive_nuclei_cells", Scale: 6}, //51 + idk.DecimalField{NameVal: "dye_3_per_positive_nuclei_cells", Scale: 6}, //52 + idk.DecimalField{NameVal: "dye_4_per_positive_nuclei_cells", Scale: 6}, //53 + idk.DecimalField{NameVal: "dye_5_per_positive_nuclei_cells", Scale: 6}, //54 + idk.DecimalField{NameVal: "dye_6_per_positive_nuclei_cells", Scale: 6}, //55 + idk.DecimalField{NameVal: "dye_7_per_positive_nuclei_cells", Scale: 6}, //56 + idk.DecimalField{NameVal: "dye_8_per_positive_nuclei_cells", Scale: 6}, //57 + idk.DecimalField{NameVal: "dye_1_per_positive_cytoplasm_cells", Scale: 6}, //58 + idk.DecimalField{NameVal: "dye_2_per_positive_cytoplasm_cells", Scale: 6}, //59 + idk.DecimalField{NameVal: "dye_3_per_positive_cytoplasm_cells", Scale: 6}, //60 + idk.DecimalField{NameVal: "dye_4_per_positive_cytoplasm_cells", Scale: 6}, //61 + idk.DecimalField{NameVal: "dye_5_per_positive_cytoplasm_cells", Scale: 6}, //62 + idk.DecimalField{NameVal: "dye_6_per_positive_cytoplasm_cells", Scale: 6}, //63 + idk.DecimalField{NameVal: "dye_7_per_positive_cytoplasm_cells", Scale: 6}, //64 + idk.DecimalField{NameVal: "dye_8_per_positive_cytoplasm_cells", Scale: 6}, //65 + idk.DecimalField{NameVal: "dye_1_per_positive_membrane_cells", Scale: 6}, //66 + idk.DecimalField{NameVal: "dye_2_per_positive_membrane_cells", Scale: 6}, //67 + idk.DecimalField{NameVal: "dye_3_per_positive_membrane_cells", Scale: 6}, //68 + idk.DecimalField{NameVal: "dye_4_per_positive_membrane_cells", Scale: 6}, //69 + idk.DecimalField{NameVal: "dye_5_per_positive_membrane_cells", Scale: 6}, //70 + idk.DecimalField{NameVal: "dye_6_per_positive_membrane_cells", Scale: 6}, //71 + idk.DecimalField{NameVal: "dye_7_per_positive_membrane_cells", Scale: 6}, //72 + idk.DecimalField{NameVal: "dye_8_per_positive_membrane_cells", Scale: 6}, //73 + idk.DecimalField{NameVal: "dye_1_positive_nuclei_avg_intensity", Scale: 6}, //74 + idk.DecimalField{NameVal: "dye_1_positive_cytoplasm_avg_intensity", Scale: 6}, //75 + idk.DecimalField{NameVal: "dye_1_positive_membrane_avg_intensity", Scale: 6}, //76 + idk.DecimalField{NameVal: "dye_2_positive_nuclei_avg_intensity", Scale: 6}, //77 + idk.DecimalField{NameVal: "dye_2_positive_cytoplasm_avg_intensity", Scale: 6}, //78 + idk.DecimalField{NameVal: "dye_2_positive_membrane_avg_intensity", Scale: 6}, //79 + idk.DecimalField{NameVal: "dye_3_positive_nuclei_avg_intensity", Scale: 6}, //80 + idk.DecimalField{NameVal: "dye_3_positive_cytoplasm_avg_intensity", Scale: 6}, //81 + idk.DecimalField{NameVal: "dye_3_positive_membrane_avg_intensity", Scale: 6}, //82 + idk.DecimalField{NameVal: "dye_4_positive_nuclei_avg_intensity", Scale: 6}, //83 + idk.DecimalField{NameVal: "dye_4_positive_cytoplasm_avg_intensity", Scale: 6}, //84 + idk.DecimalField{NameVal: "dye_4_positive_membrane_avg_intensity", Scale: 6}, //85 + idk.DecimalField{NameVal: "dye_5_positive_nuclei_avg_intensity", Scale: 6}, //86 + idk.DecimalField{NameVal: "dye_5_positive_cytoplasm_avg_intensity", Scale: 6}, //87 + idk.DecimalField{NameVal: "dye_5_positive_membrane_avg_intensity", Scale: 6}, //88 + idk.DecimalField{NameVal: "dye_6_positive_nuclei_avg_intensity", Scale: 6}, //89 + idk.DecimalField{NameVal: "dye_6_positive_cytoplasm_avg_intensity", Scale: 6}, //90 + idk.DecimalField{NameVal: "dye_6_positive_membrane_avg_intensity", Scale: 6}, //91 + idk.DecimalField{NameVal: "dye_7_positive_nuclei_avg_intensity", Scale: 6}, //92 + idk.DecimalField{NameVal: "dye_7_positive_cytoplasm_avg_intensity", Scale: 6}, //93 + idk.DecimalField{NameVal: "dye_7_positive_membrane_avg_intensity", Scale: 6}, //94 + idk.DecimalField{NameVal: "dye_8_positive_nuclei_avg_intensity", Scale: 6}, //95 + idk.DecimalField{NameVal: "dye_8_positive_cytoplasm_avg_intensity", Scale: 6}, //96 + idk.DecimalField{NameVal: "dye_8_positive_membrane_avg_intensity", Scale: 6}, //97 + idk.DecimalField{NameVal: "avg_nucleus_area_um2", Scale: 6}, //98 + idk.DecimalField{NameVal: "avg_cytoplasm_area_um2", Scale: 6}, //99 + idk.DecimalField{NameVal: "avg_cell_area_um2", Scale: 6}, //100 + idk.IntField{NameVal: "area_analyzed_um2"}, //101 + idk.IntField{NameVal: "image_zoom"}, //102 + idk.BoolField{NameVal: "classifier"}, //103 + idk.StringField{NameVal: "class_list"}, //104 + idk.BoolField{NameVal: "classify_registered"}, //105 + idk.StringField{NameVal: "classifier_output_type"}, //106 + idk.StringField{NameVal: "dye_1"}, //107 + idk.BoolField{NameVal: "dye_1_membrane_segmentation"}, //108 + idk.DecimalField{NameVal: "dye_1_nucleus_weight", Scale: 3}, //109 + idk.DecimalField{NameVal: "dye_1_nucleus_positive_threshold", Scale: 3}, //110 + idk.DecimalField{NameVal: "dye_1_cytoplasm_positive_threshold", Scale: 3}, //111 + idk.DecimalField{NameVal: "dye_1_membrane_positive_threshold", Scale: 3}, //112 + idk.StringField{NameVal: "dye_1_nucleus_mask"}, //113 + idk.StringField{NameVal: "dye_1_cytoplasm_mask"}, //114 + idk.StringField{NameVal: "dye_1_membrane_mask"}, //115 + idk.StringField{NameVal: "dye_2"}, //116 + idk.BoolField{NameVal: "dye_2_membrane_segmentation"}, //117 + idk.DecimalField{NameVal: "dye_2_nucleus_weight", Scale: 3}, //118 + idk.DecimalField{NameVal: "dye_2_nucleus_positive_threshold", Scale: 3}, //119 + idk.DecimalField{NameVal: "dye_2_cytoplasm_positive_threshold", Scale: 3}, //120 + idk.DecimalField{NameVal: "dye_2_membrane_positive_threshold", Scale: 3}, //121 + idk.StringField{NameVal: "dye_2_nucleus_mask"}, //122 + idk.StringField{NameVal: "dye_2_cytoplasm_mask"}, //123 + idk.StringField{NameVal: "dye_2_membrane_mask"}, //124 + idk.StringField{NameVal: "dye_3"}, //125 + idk.BoolField{NameVal: "dye_3_membrane_segmentation"}, //126 + idk.DecimalField{NameVal: "dye_3_nucleus_weight", Scale: 3}, //127 + idk.DecimalField{NameVal: "dye_3_nucleus_positive_threshold", Scale: 3}, //128 + idk.DecimalField{NameVal: "dye_3_cytoplasm_positive_threshold", Scale: 3}, //129 + idk.DecimalField{NameVal: "dye_3_membrane_positive_threshold", Scale: 3}, //130 + idk.StringField{NameVal: "dye_3_nucleus_mask"}, //131 + idk.StringField{NameVal: "dye_3_cytoplasm_mask"}, //132 + idk.StringField{NameVal: "dye_3_membrane_mask"}, //133 + idk.StringField{NameVal: "dye_4"}, //134 + idk.BoolField{NameVal: "dye_4_membrane_segmentation"}, //135 + idk.DecimalField{NameVal: "dye_4_nucleus_weight", Scale: 3}, //136 + idk.DecimalField{NameVal: "dye_4_nucleus_positive_threshold", Scale: 3}, //137 + idk.DecimalField{NameVal: "dye_4_cytoplasm_positive_threshold", Scale: 3}, //138 + idk.DecimalField{NameVal: "dye_4_membrane_positive_threshold", Scale: 3}, //139 + idk.StringField{NameVal: "dye_4_nucleus_mask"}, //140 + idk.StringField{NameVal: "dye_4_cytoplasm_mask"}, //141 + idk.StringField{NameVal: "dye_4_membrane_mask"}, //142 + idk.StringField{NameVal: "dye_5"}, //143 + idk.BoolField{NameVal: "dye_5_membrane_segmentation"}, //144 + idk.DecimalField{NameVal: "dye_5_nucleus_weight", Scale: 3}, //145 + idk.DecimalField{NameVal: "dye_5_nucleus_positive_threshold", Scale: 3}, //146 + idk.DecimalField{NameVal: "dye_5_cytoplasm_positive_threshold", Scale: 3}, //147 + idk.DecimalField{NameVal: "dye_5_membrane_positive_threshold", Scale: 3}, //148 + idk.StringField{NameVal: "dye_5_nucleus_mask"}, //149 + idk.StringField{NameVal: "dye_5_cytoplasm_mask"}, //150 + idk.StringField{NameVal: "dye_5_membrane_mask"}, //151 + idk.StringField{NameVal: "dye_6"}, //152 + idk.BoolField{NameVal: "dye_6_membrane_segmentation"}, //153 + idk.DecimalField{NameVal: "dye_6_nucleus_weight", Scale: 3}, //154 + idk.DecimalField{NameVal: "dye_6_nucleus_positive_threshold", Scale: 3}, //155 + idk.DecimalField{NameVal: "dye_6_cytoplasm_positive_threshold", Scale: 3}, //156 + idk.DecimalField{NameVal: "dye_6_membrane_positive_threshold", Scale: 3}, //157 + idk.StringField{NameVal: "dye_6_nucleus_mask"}, //158 + idk.StringField{NameVal: "dye_6_cytoplasm_mask"}, //159 + idk.StringField{NameVal: "dye_6_membrane_mask"}, //160 + idk.StringField{NameVal: "dye_7"}, //161 + idk.BoolField{NameVal: "dye_7_membrane_segmentation"}, //162 + idk.DecimalField{NameVal: "dye_7_nucleus_weight", Scale: 3}, //163 + idk.DecimalField{NameVal: "dye_7_nucleus_positive_threshold", Scale: 3}, //164 + idk.DecimalField{NameVal: "dye_7_cytoplasm_positive_threshold", Scale: 3}, //165 + idk.DecimalField{NameVal: "dye_7_membrane_positive_threshold", Scale: 3}, //166 + idk.StringField{NameVal: "dye_7_nucleus_mask"}, //167 + idk.StringField{NameVal: "dye_7_cytoplasm_mask"}, //168 + idk.StringField{NameVal: "dye_7_membrane_mask"}, //169 + idk.StringField{NameVal: "dye_8"}, //170 + idk.BoolField{NameVal: "dye_8_membrane_segmentation"}, //171 + idk.DecimalField{NameVal: "dye_8_nucleus_weight", Scale: 3}, //172 + idk.DecimalField{NameVal: "dye_8_nucleus_positive_threshold", Scale: 3}, //173 + idk.DecimalField{NameVal: "dye_8_cytoplasm_positive_threshold", Scale: 3}, //174 + idk.DecimalField{NameVal: "dye_8_membrane_positive_threshold", Scale: 3}, //175 + idk.StringField{NameVal: "dye_8_nucleus_mask"}, //176 + idk.StringField{NameVal: "dye_8_cytoplasm_mask"}, //177 + idk.StringField{NameVal: "dye_8_membrane_mask"}, //178 + idk.DecimalField{NameVal: "nuclear_contrast_threshold", Scale: 3}, //179 + idk.DecimalField{NameVal: "minimum_nuclear_intensity", Scale: 3}, //180 + idk.DecimalField{NameVal: "nuclear_segmentation_aggressiveness", Scale: 3}, //181 + idk.DecimalField{NameVal: "fill_nuclear_holes", Scale: 3}, //182 + idk.DecimalField{NameVal: "minimum_nuclear_size", Scale: 3}, //183 + idk.DecimalField{NameVal: "maximum_nuclear_size", Scale: 3}, //184 + idk.DecimalField{NameVal: "minimum_nuclear_roundness", Scale: 3}, //185 + idk.DecimalField{NameVal: "maximum_cytoplasm_radius", Scale: 3}, //186 + idk.DecimalField{NameVal: "membrane_segmentation_agressiveness", Scale: 3}, //187 + idk.DecimalField{NameVal: "minimum_cell_size", Scale: 3}, //188 + idk.DecimalField{NameVal: "maximum_cell_size", Scale: 3}, //189 + idk.StringField{NameVal: "output_image"}, //190 + idk.DecimalField{NameVal: "store_object_cell_data"}, //191 + idk.DecimalField{NameVal: "nuclear_size_minimum", Scale: 3}, //192 + idk.DecimalField{NameVal: "nuclear_size_maximum", Scale: 3}, //193 + idk.DecimalField{NameVal: "cell_size_minimum", Scale: 3}, //194 + idk.DecimalField{NameVal: "cell_size_maximum", Scale: 3}, //195 + idk.IDField{NameVal: "subject_id"}, //196 + idk.StringField{NameVal: "su_species"}, //197 + idk.StringField{NameVal: "su_sex"}, //198 + idk.StringField{NameVal: "su_date_of_birth"}, //199 + idk.IDField{NameVal: "case_id"}, //200 + idk.IntField{NameVal: "c_age"}, //201 + idk.IntField{NameVal: "c_weight"}, //202 + idk.IDArrayField{NameVal: "procedure_id"}, //203 + idk.StringArrayField{NameVal: "p_name"}, //204 + idk.StringArrayField{NameVal: "p_description"}, //205 + idk.IntField{NameVal: "p_ontology_code"}, //206 + idk.IDField{NameVal: "diagnosis_id"}, //207 + idk.StringField{NameVal: "dx_comments"}, //208 + idk.IDField{NameVal: "disease_id"}, //209 + idk.StringField{NameVal: "dz_disease_name"}, //210 + idk.StringField{NameVal: "dz_etiology"}, //211 + idk.StringField{NameVal: "dz_morphology"}, //212 + idk.IntField{NameVal: "dz_ontology_code"}, //213 + idk.IDField{NameVal: "specimen_id"}, //214 + idk.StringField{NameVal: "sp_tissue_type"}, //215 + idk.IntField{NameVal: "sp_sample_volume"}, //216 + idk.StringField{NameVal: "sp_sample_location"}, //217 + }, + } + src.Z = gen.New(gen.OptGenSeed(cfg.seed)) + src.algZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(alg))-1) + src.maskZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(mask))-1) + src.analysisregionZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(analysisregion))-1) + src.classifierTypeZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(classifierType))-1) + src.classListZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(classList))-1) + src.outputTypeZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(outputType))-1) + src.dyeZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(dye))-1) + src.outputImageZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(outputImage))-1) + src.speciesZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(species))-1) + src.sexZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(sex))-1) + src.commentsZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(comments))-1) + src.locationTissueZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(locationTissue))-1) + src.tissuetypeZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(tissuetype))-1) + src.etiologyZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(etiology))-1) + src.morphologyZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(morphology))-1) + src.procedures_descZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(procedures_desc))-1) + src.diseaseZipf = rand.NewZipf(src.rand, 1.01, 4, uint64(len(disease))-1) + src.record = make([]interface{}, len(src.schema)) + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (e *Merck) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (e *Merck) DefaultEndAt() uint64 { + return 100 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (e *Merck) Info() string { + return "Generates data representative of Merck's pharmaceutical operations." +} + +var alg = []string{"NSCLC T", "TC1_28", "NSCLC-LY-21-LA", "NSCLC-LY-22-LA", "NSCLC-LY-23-LA", "NSCLC-LY-24-LA", "NSCLC-LY-25-LA", "NSCLC-LY-37-LA", "NSCLC-LY-38-LA", "NSCLC-LY-39-LA", "NSCLC-LY-40-LA", "NSCLC-LY-41-LA", "NSCLC-LY-42-LA", "NSCLC-LY-43-LA", "NSCLC-LY-44-LA", "NSCLC-LY-45-LA", "NSCLC-LY-46-LA", "NSCLC-LY-47-LA", "NSCLC-LY-48-LA", "NSCLC-LY-59-LA", "NSCLC-LY-60-LA"} + +var mask = []string{"not set", "OR Negative", "OR Positive"} + +var species = []string{"Homo sapiens", "Rattus", "Sus scrofa"} + +var sex = []string{"M", "F", "U"} + +var etiology = []string{"Smoking", "Sun light", "Diet Coke", "Sneezing", "Open Cut"} + +var morphology = []string{"Lungs", "Skin", "Blood", "Liver", "Stomach"} + +var locationTissue = []string{"US", "UK", "CAN", "IND"} + +var disease = []string{"Cancer", "Diabetes", "Thyroid", "Leukemia"} + +var tissuetype = []string{"MUSC", "NERV", "EPIT", "CONN"} + +var procedures_desc = []string{"Cut muscle", "Stich muscle", "Remove skin", "Add oil", "Triple bypass ", "Tape bone", "Remove organ", "Unplug", "Sedate", "Apply bandaid"} + +var comments = []string{"aliquip ex ea commodo consequat", "cupidatat non proident, sunt in culpa", "Lorem ipsum dolor sit amet, consectetur", "Excepteur sint occaecat cupidatat non proident", "sunt in culpa qui officia", "deserunt mollit anim id est laborum", "Duis aute irure dolor"} + +var analysisregion = []string{"Layer 1", "Layer 2", "Layer 3", "Layer 4", "Layer 5", "Layer 6", "Layer 7", "Layer 8", "Layer 9", "Layer 10"} + +var classifierType = []string{"A", "B", "C", "D"} + +var classList = []string{"1", "2", "3", "4"} + +var outputType = []string{"MASK", "MASK-RCNN", "MASK-NMS"} + +var dye = []string{"DAPI", "Autofluorescence", "Opal 690", "Opal 650", "Opal 620", "Opal 570", "Opal 540", "Opal 520"} + +var outputImage = []string{"Dye 1", "Dye 2", "Dye 3", "Dye 4", "Dye 5", "Dye 6", "Dye 7", "Dye 8"} + +// Ensure MerckSource implements interface. +var _ idk.Source = (*MerckSource)(nil) + +// MerckSource is an instance of a source generated +// by the Sourcer implementation Merck. +type MerckSource struct { + cur uint64 + endAt uint64 + Z *gen.Gen + rand *rand.Rand + algZipf *rand.Zipf + maskZipf *rand.Zipf + analysisregionZipf *rand.Zipf + classListZipf *rand.Zipf + classifierTypeZipf *rand.Zipf + outputTypeZipf *rand.Zipf + dyeZipf *rand.Zipf + outputImageZipf *rand.Zipf + speciesZipf *rand.Zipf + sexZipf *rand.Zipf + commentsZipf *rand.Zipf + tissuetypeZipf *rand.Zipf + locationTissueZipf *rand.Zipf + morphologyZipf *rand.Zipf + etiologyZipf *rand.Zipf + procedures_descZipf *rand.Zipf + diseaseZipf *rand.Zipf + schema []idk.Field + record record +} + +// Record implements idk.Source. +func (e *MerckSource) Record() (idk.Record, error) { + if e.cur >= e.endAt { + return nil, io.EOF + } + imageName := e.String(5) + ".tif" + imageLocation := "\\myserver\\" + imageName + + // ID allocation + total_records := e.endAt - 1 + subjectID := int(math.Ceil(float64(total_records) / float64(128))) + caseID := int(math.Ceil(float64(total_records) / float64(32))) + specimenID := int(math.Ceil(float64(total_records) / float64(8))) + + //<-- CELLS BEGIN --> + dye_1_p := e.generate10(1000000, 0) + dye_2_p := e.generate10(1000000, 0) + dye_3_p := e.generate10(1000000, 0) + dye_4_p := e.generate10(1000000, 0) + dye_5_p := e.generate10(1000000, 0) + dye_6_p := e.generate10(1000000, 0) + dye_7_p := e.generate10(1000000, 0) + dye_8_p := e.generate10(1000000, 0) + dye_1_p_n := e.generate10(1000000, 0) + dye_2_p_n := e.generate10(1000000, 0) + dye_3_p_n := e.generate10(1000000, 0) + dye_4_p_n := e.generate10(1000000, 0) + dye_5_p_n := e.generate10(1000000, 0) + dye_6_p_n := e.generate10(1000000, 0) + dye_7_p_n := e.generate10(1000000, 0) + dye_8_p_n := e.generate10(1000000, 0) + dye_1_p_c := e.generate50(1000000, 0) + dye_2_p_c := e.generate50(1000000, 0) + dye_3_p_c := e.generate50(1000000, 0) + dye_4_p_c := e.generate50(1000000, 0) + dye_5_p_c := e.generate50(1000000, 0) + dye_6_p_c := e.generate50(1000000, 0) + dye_7_p_c := e.generate50(1000000, 0) + dye_8_p_c := e.generate50(1000000, 0) + dye_1_p_m := e.generate50(1000000, 0) + dye_2_p_m := e.generate50(1000000, 0) + dye_3_p_m := e.generate50(1000000, 0) + dye_4_p_m := e.generate50(1000000, 0) + dye_5_p_m := e.generate50(1000000, 0) + dye_6_p_m := e.generate50(1000000, 0) + dye_7_p_m := e.generate50(1000000, 0) + dye_8_p_m := e.generate50(1000000, 0) + total_cells := e.generateRandomInt(1000000, 1000) + //<-- CELLS END --> + + e.record[0] = e.cur + e.record[1] = imageLocation + e.record[2] = imageName + e.record[3] = alg[e.algZipf.Uint64()] + e.record[4] = startTime.Add(time.Duration(e.Z.R.Int63n(int64(timeSpan)))) + e.record[5] = analysisregion[e.analysisregionZipf.Uint64()] + e.record[6] = total_cells + e.record[7] = dye_1_p + e.record[8] = dye_2_p + e.record[9] = dye_3_p + e.record[10] = dye_4_p + e.record[11] = dye_5_p + e.record[12] = dye_6_p + e.record[13] = dye_7_p + e.record[14] = dye_8_p + e.record[15] = dye_1_p_n + e.record[16] = dye_2_p_n + e.record[17] = dye_3_p_n + e.record[18] = dye_4_p_n + e.record[19] = dye_5_p_n + e.record[20] = dye_6_p_n + e.record[21] = dye_7_p_n + e.record[22] = dye_8_p_n + e.record[23] = e.generate50(1000000, 0) + e.record[24] = dye_1_p_c + e.record[25] = dye_2_p_c + e.record[26] = dye_3_p_c + e.record[27] = dye_4_p_c + e.record[28] = dye_5_p_c + e.record[29] = dye_6_p_c + e.record[30] = dye_7_p_c + e.record[31] = dye_8_p_c + e.record[32] = e.generate50(1000000, 0) + e.record[33] = dye_1_p_m + e.record[34] = dye_2_p_m + e.record[35] = dye_3_p_m + e.record[36] = dye_4_p_m + e.record[37] = dye_5_p_m + e.record[38] = dye_6_p_m + e.record[39] = dye_7_p_m + e.record[40] = dye_8_p_m + e.record[41] = e.generate50(1000000, 0) + e.record[42] = float64(dye_1_p) / float64(total_cells) + e.record[43] = float64(dye_3_p) / float64(total_cells) + e.record[44] = float64(dye_3_p) / float64(total_cells) + e.record[45] = float64(dye_4_p) / float64(total_cells) + e.record[46] = float64(dye_5_p) / float64(total_cells) + e.record[47] = float64(dye_6_p) / float64(total_cells) + e.record[48] = float64(dye_7_p) / float64(total_cells) + e.record[49] = float64(dye_8_p) / float64(total_cells) + e.record[50] = float64(dye_1_p_n) / float64(total_cells) + e.record[51] = float64(dye_2_p_n) / float64(total_cells) + e.record[52] = float64(dye_3_p_n) / float64(total_cells) + e.record[53] = float64(dye_4_p_n) / float64(total_cells) + e.record[54] = float64(dye_5_p_n) / float64(total_cells) + e.record[55] = float64(dye_6_p_n) / float64(total_cells) + e.record[56] = float64(dye_7_p_n) / float64(total_cells) + e.record[57] = float64(dye_8_p_n) / float64(total_cells) + e.record[58] = float64(dye_1_p_c) / float64(total_cells) + e.record[59] = float64(dye_2_p_c) / float64(total_cells) + e.record[60] = float64(dye_3_p_c) / float64(total_cells) + e.record[61] = float64(dye_4_p_c) / float64(total_cells) + e.record[62] = float64(dye_5_p_c) / float64(total_cells) + e.record[63] = float64(dye_6_p_c) / float64(total_cells) + e.record[64] = float64(dye_7_p_c) / float64(total_cells) + e.record[65] = float64(dye_8_p_c) / float64(total_cells) + e.record[66] = float64(dye_1_p_m) / float64(total_cells) + e.record[67] = float64(dye_2_p_m) / float64(total_cells) + e.record[68] = float64(dye_3_p_m) / float64(total_cells) + e.record[69] = float64(dye_4_p_m) / float64(total_cells) + e.record[70] = float64(dye_5_p_m) / float64(total_cells) + e.record[71] = float64(dye_6_p_m) / float64(total_cells) + e.record[72] = float64(dye_7_p_m) / float64(total_cells) + e.record[73] = float64(dye_8_p_m) / float64(total_cells) + e.record[74] = e.float50(50, 0) + e.record[75] = e.float50(50, 0) + e.record[76] = e.float50(50, 0) + e.record[77] = e.float50(50, 0) + e.record[78] = e.float50(50, 0) + e.record[79] = e.float50(50, 0) + e.record[80] = e.float50(50, 0) + e.record[81] = e.float50(50, 0) + e.record[82] = e.float50(50, 0) + e.record[83] = e.float50(50, 0) + e.record[84] = e.float50(50, 0) + e.record[85] = e.float50(50, 0) + e.record[86] = e.float50(50, 0) + e.record[87] = e.float50(50, 0) + e.record[88] = e.float50(50, 0) + e.record[89] = e.float50(50, 0) + e.record[90] = e.float50(50, 0) + e.record[91] = e.float50(50, 0) + e.record[92] = e.float50(50, 0) + e.record[93] = e.float50(50, 0) + e.record[94] = e.float50(50, 0) + e.record[95] = e.float50(50, 0) + e.record[96] = e.float50(50, 0) + e.record[97] = e.float50(50, 0) + e.record[98] = e.floatRand(500, 5) + e.record[99] = e.floatRand(500, 5) + e.record[100] = e.floatRand(500, 5) + e.record[101] = e.generateRandomInt(1000000000, 10000000) + e.record[102] = e.generateRandomInt(5, 1) + e.record[103] = e.Z.R.Intn(2) == 0 + e.record[104] = classList[e.classListZipf.Uint64()] + e.record[105] = e.Z.R.Intn(2) == 0 + e.record[106] = outputType[e.outputTypeZipf.Uint64()] + e.record[107] = dye[e.dyeZipf.Uint64()] + e.record[108] = e.Z.R.Intn(2) == 0 + e.record[109] = e.floatRand(1, 0) + e.record[110] = e.floatRand(1, 0) + e.record[111] = e.floatRand(1, 0) + e.record[112] = e.floatRand(1, 0) + e.record[113] = mask[e.maskZipf.Uint64()] + e.record[114] = mask[e.maskZipf.Uint64()] + e.record[115] = mask[e.maskZipf.Uint64()] + e.record[116] = dye[e.dyeZipf.Uint64()] + e.record[117] = e.Z.R.Intn(2) == 0 + e.record[118] = e.floatRand(1, 0) + e.record[119] = e.floatRand(1, 0) + e.record[120] = e.floatRand(1, 0) + e.record[121] = e.floatRand(1, 0) + e.record[122] = mask[e.maskZipf.Uint64()] + e.record[123] = mask[e.maskZipf.Uint64()] + e.record[124] = mask[e.maskZipf.Uint64()] + e.record[125] = dye[e.dyeZipf.Uint64()] + e.record[126] = e.Z.R.Intn(2) == 0 + e.record[127] = e.floatRand(1, 0) + e.record[128] = e.floatRand(1, 0) + e.record[129] = e.floatRand(1, 0) + e.record[130] = e.floatRand(1, 0) + e.record[131] = mask[e.maskZipf.Uint64()] + e.record[132] = mask[e.maskZipf.Uint64()] + e.record[133] = mask[e.maskZipf.Uint64()] + e.record[134] = dye[e.dyeZipf.Uint64()] + e.record[135] = e.Z.R.Intn(2) == 0 + e.record[136] = e.floatRand(1, 0) + e.record[137] = e.floatRand(1, 0) + e.record[138] = e.floatRand(1, 0) + e.record[139] = e.floatRand(1, 0) + e.record[140] = mask[e.maskZipf.Uint64()] + e.record[141] = mask[e.maskZipf.Uint64()] + e.record[142] = mask[e.maskZipf.Uint64()] + e.record[143] = dye[e.dyeZipf.Uint64()] + e.record[144] = e.Z.R.Intn(2) == 0 + e.record[145] = e.floatRand(1, 0) + e.record[146] = e.floatRand(1, 0) + e.record[147] = e.floatRand(1, 0) + e.record[148] = e.floatRand(1, 0) + e.record[149] = mask[e.maskZipf.Uint64()] + e.record[150] = mask[e.maskZipf.Uint64()] + e.record[151] = mask[e.maskZipf.Uint64()] + e.record[152] = dye[e.dyeZipf.Uint64()] + e.record[153] = e.Z.R.Intn(2) == 0 + e.record[154] = e.floatRand(1, 0) + e.record[155] = e.floatRand(1, 0) + e.record[156] = e.floatRand(1, 0) + e.record[157] = e.floatRand(1, 0) + e.record[158] = mask[e.maskZipf.Uint64()] + e.record[159] = mask[e.maskZipf.Uint64()] + e.record[160] = mask[e.maskZipf.Uint64()] + e.record[161] = dye[e.dyeZipf.Uint64()] + e.record[162] = e.Z.R.Intn(2) == 0 + e.record[163] = e.floatRand(1, 0) + e.record[164] = e.floatRand(1, 0) + e.record[165] = e.floatRand(1, 0) + e.record[166] = e.floatRand(1, 0) + e.record[167] = mask[e.maskZipf.Uint64()] + e.record[168] = mask[e.maskZipf.Uint64()] + e.record[169] = mask[e.maskZipf.Uint64()] + e.record[170] = dye[e.dyeZipf.Uint64()] + e.record[171] = e.Z.R.Intn(2) == 0 + e.record[172] = e.floatRand(1, 0) + e.record[173] = e.floatRand(1, 0) + e.record[174] = e.floatRand(1, 0) + e.record[175] = e.floatRand(1, 0) + e.record[176] = mask[e.maskZipf.Uint64()] + e.record[177] = mask[e.maskZipf.Uint64()] + e.record[178] = mask[e.maskZipf.Uint64()] + e.record[179] = e.floatRand(1, 0) + e.record[180] = e.floatRand(1, 0) + e.record[181] = e.floatRand(1, 0) + e.record[182] = e.floatRand(1, 0) + e.record[183] = e.floatRand(50, 0) + e.record[184] = e.floatRand(1000, 100) + e.record[185] = e.floatRand(0.5, 0) + e.record[186] = e.floatRand(100, 1) + e.record[187] = e.floatRand(0.5, 0) + e.record[188] = e.floatRand(10, 0) + e.record[189] = e.floatRand(1000, 15) + e.record[190] = outputImage[e.outputImageZipf.Uint64()] + e.record[191] = e.generateRandomInt(1, 0) + e.record[192] = e.floatRand(50, 0) + e.record[193] = e.floatRand(1000, 100) + e.record[194] = e.floatRand(50, 0) + e.record[195] = e.floatRand(1000, 100) + e.record[196] = e.generateRandomInt(subjectID, 0) + e.record[197] = species[e.speciesZipf.Uint64()] + e.record[198] = sex[e.sexZipf.Uint64()] + e.record[199] = startTime.Add(time.Duration(e.Z.R.Int63n(int64(timeSpan)))) + e.record[200] = e.generateRandomInt(caseID, 0) + e.record[201] = e.generateRandomInt(95, 0) + e.record[202] = e.generateRandomInt(200, 1) + set := e.generateRandomInt(10, 0) + procedureIDs := make([]uint64, 0, set) + procedureNames := make([]string, 0, set) + procedureDesc := make([]string, 0, set) + for v := 0; v < set; v++ { + procedureIDs = append(procedureIDs, uint64(e.generateRandomInt(10000, 0))) + procedureNames = append(procedureNames, "P"+strconv.Itoa(v)) + procedureDesc = append(procedureDesc, procedures_desc[e.procedures_descZipf.Uint64()]) + } + e.record[203] = procedureIDs + e.record[204] = procedureNames + e.record[205] = procedureDesc + e.record[206] = e.generateRandomInt(10000, 1) + e.record[207] = e.generateRandomInt(20000, 1) + e.record[208] = comments[e.commentsZipf.Uint64()] + e.record[209] = e.generateRandomInt(10000, 1) + e.record[210] = disease[e.diseaseZipf.Uint64()] + e.record[211] = etiology[e.etiologyZipf.Uint64()] + e.record[212] = morphology[e.morphologyZipf.Uint64()] + e.record[213] = e.generateRandomInt(10000, 1) + e.record[214] = e.generateRandomInt(specimenID, 0) + e.record[215] = tissuetype[e.tissuetypeZipf.Uint64()] + e.record[216] = e.generateRandomInt(500, 1) + e.record[217] = locationTissue[e.locationTissueZipf.Uint64()] + e.cur++ + + return e.record, nil +} + +// Schema implements idk.Source. +func (e *MerckSource) Schema() []idk.Field { + return e.schema +} + +func (e *MerckSource) Seed(seed int64) { + e.rand.Seed(seed) +} + +var _ Seedable = (*MerckSource)(nil) + +const charset = "abcdefghijklmnopqrstuvwxyz" + + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +// returns a string with random characters from a predefined charset of a specified length +func (e *MerckSource) StringWithCharset(length int, charset string) string { + b := make([]byte, length) + for i := range b { + b[i] = charset[e.rand.Intn(len(charset))] + } + return string(b) +} + +//returns a string with random English alphabets of the specified length +func (e *MerckSource) String(length int) string { + return e.StringWithCharset(length, charset) +} + +//returns a random int between a range with a 50% chance of returning a zero. +func (e *MerckSource) generate50(max int, min int) int { + num := e.rand.Intn(100) + numbertoReturn := e.rand.Intn(max-min) + min + switch { + case num < 50: + return 0 + default: + return numbertoReturn + } +} + +//returns a random int between a range with a 10% chance of returning a zero. +func (e *MerckSource) generate10(max int, min int) int { + num := e.rand.Intn(100) + numbertoReturn := e.rand.Intn(max-min) + min + switch { + case num < 10: + return 0 + default: + return numbertoReturn + } +} + +//returns a random float between a range with a 50% chance of returning a zero. +func (e *MerckSource) float50(max float64, min float64) float64 { + numbertoReturn := min + e.rand.Float64()*(max-min) + num := e.rand.Intn(100) + switch { + case num < 50: + return 0 + default: + return numbertoReturn + } +} + +//returns a random float between a range +func (e *MerckSource) floatRand(max float64, min float64) float64 { + return min + e.rand.Float64()*(max-min) +} + +//returns a random int between a range +func (e *MerckSource) generateRandomInt(max int, min int) int { + return e.rand.Intn(max-min) + min +} + +func (e *MerckSource) Close() error { + return nil +} diff --git a/idk/datagen/network.go b/idk/datagen/network.go new file mode 100644 index 000000000..58bd5238f --- /dev/null +++ b/idk/datagen/network.go @@ -0,0 +1,248 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Network implements interface. +var _ Sourcer = (*Network)(nil) + +// Network implements Sourcer. +type Network struct { + schema []idk.Field +} + +// NewNetwork returns a new instance of Network. +func NewNetwork(cfg SourceGeneratorConfig) Sourcer { + return &Network{ + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.IDField{NameVal: "qos_tier"}, // 1 + idk.IntField{NameVal: "source_equip_id"}, // 2 + idk.IntField{NameVal: "dest_equip_id"}, // 3 + idk.IntField{NameVal: "data_size"}, // 4 + idk.StringField{NameVal: "data_type"}, // 5 + idk.StringField{NameVal: "customer"}, // 6 + idk.IntField{NameVal: "timestamp"}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (n *Network) Source(cfg SourceConfig) idk.Source { + src := &NetworkSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: n.schema, + } + + src.typeZipf = rand.NewZipf(src.rand, 1.03, 4, uint64(len(dataTypeStrings))-1) + + src.record = make([]interface{}, len(src.schema)) + src.record[7] = int(1420070400 + cfg.startFrom) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (n *Network) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (n *Network) DefaultEndAt() uint64 { + return 100000000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (n *Network) Info() string { + return "Generates timeseries network transmission data (from_ip, to_ip, bytes) - references data in sites, manufacturer, and equipment." +} + +// Ensure NetworkSource implements interface. +var _ idk.Source = (*NetworkSource)(nil) + +type NetworkSource struct { + Log logger.Logger + + rand *rand.Rand + typeZipf *rand.Zipf + + schema []idk.Field + + cur, endAt uint64 + + record record +} + +func (s *NetworkSource) Record() (idk.Record, error) { + // ID + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + s.cur++ + + // QOS + s.record[1] = s.qos() + + // TODO - equipment et. al + dataType := s.dataType() + s.record[5] = dataType + + s.record[2] = s.srcEquip(dataType) + s.record[3] = s.dstEquip(dataType) + + s.record[4] = s.size(dataTypes[dataType]) + + s.record[6] = s.customer(dataType) + + // timestamp + s.record[7] = s.record[7].(int) + s.rand.Intn(3) + + return s.record, nil +} + +func (s *NetworkSource) customer(dataType string) string { + if dataType == "Transaction" { + return customers[s.rand.Intn(4)] + } + return customers[s.rand.Intn(len(customers))] +} + +func (s *NetworkSource) size(dt dataType) int64 { + return s.rand.Int63n(dt.maxSize-dt.minSize) + dt.minSize +} + +type dataType struct { + minSize int64 + maxSize int64 +} + +var dataTypes = map[string]dataType{ + "Wireless Internet": { + minSize: 51, + maxSize: 22000000, // 22MB + }, + "Wired Internet": { + minSize: 63, + maxSize: 40000000, // 40MB + }, + "Wired Video": { + minSize: 73, + maxSize: 150000000, // 150MB + }, + "Transaction": { + minSize: 12, + maxSize: 1200, // 7MB + }, + "Wireless Video": { + minSize: 75, + maxSize: 50000000, // 50MB + }, + "Wireless Voice": { + minSize: 17, + maxSize: 7000000, // 7MB + }, + "Wired Voice": { + minSize: 19, + maxSize: 10000000, // 10MB + }, +} +var dataTypeStrings []string + +func init() { + for name := range dataTypes { + dataTypeStrings = append(dataTypeStrings, name) + } +} + +func (s *NetworkSource) dataType() string { + return dataTypeStrings[s.typeZipf.Uint64()] +} + +func (s *NetworkSource) srcEquip(typ string) int64 { + switch typ { + case "Transaction": + return s.rand.Int63n(1000000) + 35000000 // POS device + case "Wired Video": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wired Internet": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wired Voice": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wireless Video": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + case "Wireless Internet": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + case "Wireless Voice": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + default: + panic("srcEquip: unknown type " + typ) + } +} +func (s *NetworkSource) dstEquip(typ string) int64 { + switch typ { + case "Transaction": + return s.rand.Int63n(15000000) + 18000000 // server and router + case "Wired Video": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wired Internet": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wired Voice": + return s.rand.Int63n(28000000) + 5000000 // all non BTS devices + case "Wireless Video": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + case "Wireless Internet": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + case "Wireless Voice": + return s.rand.Int63n(17000000) + 18000000 // all non CPE devices + default: + panic("dstEquip: unknown type " + typ) + } +} + +func (s *NetworkSource) Schema() []idk.Field { + return s.schema +} + +func (s *NetworkSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*NetworkSource)(nil) + +// qos returns a QoS value from 1-5 with a 5%/25%/40%/25%/5% weighting. +func (s *NetworkSource) qos() uint64 { + num := s.rand.Intn(100) + switch { + case num < 5: + return 1 + case num < 30: + return 2 + case num < 70: + return 3 + case num < 95: + return 4 + default: + return 5 + } +} + +func (s *NetworkSource) Close() error { + return nil +} diff --git a/idk/datagen/palo_alto.go b/idk/datagen/palo_alto.go new file mode 100644 index 000000000..ce8558df6 --- /dev/null +++ b/idk/datagen/palo_alto.go @@ -0,0 +1,348 @@ +package datagen + +import ( + "io" + "strconv" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" + "github.com/molecula/featurebase/v3/pql" +) + +// Ensure PaloAlto implements interface. +var _ Sourcer = (*PaloAlto)(nil) + +// PaloAlto implements Sourcer. +type PaloAlto struct { + schema []idk.Field +} + +// NewPaloAlto returns a new instance of PaloAlto. +func NewPaloAlto(cfg SourceGeneratorConfig) Sourcer { + return &PaloAlto{ + schema: []idk.Field{ + idk.StringField{NameVal: "vlan_source"}, // 0) "unknown" + idk.StringField{NameVal: "severity_level"}, // 1) "Normal" + idk.StringField{NameVal: "display_profile_type"}, // 2) "IoT" + idk.BoolField{NameVal: "keep"}, // 3) true + idk.StringField{NameVal: "internal_risk_level"}, // 4) "Low" + idk.IntField{NameVal: "ml_progress"}, // 5) 100 + idk.StringField{NameVal: "tenantid"}, // 6) "gjtu7ldl" + idk.StringField{NameVal: "display_oscombined"}, // 7) "Windows CE" + idk.StringField{NameVal: "profileid"}, // 8) "Zebra Technologies Tracking Device" + idk.StringField{NameVal: "risk_main_contributors"}, // 9) "Application Usage" + idk.IntField{NameVal: "profile_date"}, // 10) "2019-03-14T06:09:00.000Z" + idk.StringField{NameVal: "risk_level"}, // 11) "low" + idk.StringArrayField{NameVal: "baseline-learning_category"}, // 12) "payload" + idk.StringField{NameVal: "baseline-state"}, // 13) "stable" + idk.StringField{NameVal: "baseline-protected"}, // 14) "profile model" + idk.IntField{NameVal: "baseline-progress"}, // 15) 100 + idk.IntField{NameVal: "baseline-pi"}, // 16) 98 + idk.StringArrayField{NameVal: "baseline-invalid_category"}, // 17) "ext_inbound", "ext_outbound" + idk.DecimalField{NameVal: "baseline-anomaly_score-application", Scale: 1}, // 18) 0.1 + idk.DecimalField{NameVal: "baseline-anomaly_score-internal", Scale: 4}, // 19) 0.4097 + idk.DecimalField{NameVal: "baseline-anomaly_score-protocol", Scale: 4}, // 20) 0.3736 + idk.DecimalField{NameVal: "baseline-anomaly_score-external", Scale: 4}, // 21) 0.3548 + idk.DecimalField{NameVal: "baseline-anomaly_score-payload", Scale: 4}, // 22) 0.2944 + idk.IntField{NameVal: "profile_confidence"}, // 23) 86 + idk.StringField{NameVal: "display_osgroup"}, // 24) "Windows CE" + idk.IntField{NameVal: "ml_risk-risk_score"}, // 25) 10 + idk.IntField{NameVal: "ml_risk-progress"}, // 26) 100 + idk.StringField{NameVal: "ml_risk-severity_level"}, // 27) "Low" + idk.DecimalField{NameVal: "ml_risk-anomaly_score-application", Scale: 2}, // 28) 0.25 + idk.DecimalField{NameVal: "ml_risk-anomaly_score-internal", Scale: 2}, // 29) 0.25 + idk.DecimalField{NameVal: "ml_risk-anomaly_score-protocol", Scale: 2}, // 30) 0.25 + idk.DecimalField{NameVal: "ml_risk-anomaly_score-external", Scale: 2}, // 31) 0.25 + idk.DecimalField{NameVal: "ml_risk-anomaly_score-payload", Scale: 2}, // 32) 0.25 + idk.IntField{NameVal: "ml_risk-date"}, // 33) "2020-09-22T00:00:00Z" + idk.StringField{NameVal: "risk_level_source"}, // 34) "offline_analytics" + idk.IntField{NameVal: "risk_score"}, // 35) 40 + idk.StringField{NameVal: "source"}, // 36) "" + idk.IntField{NameVal: "internal_risk_score"}, // 37) 10 + idk.StringField{NameVal: "connect_evtcontent-username"}, // 38) "unknown" + idk.StringField{NameVal: "connect_evtcontent-hostname"}, // 39) "unknown" + idk.BoolField{NameVal: "connect_evtcontent-monitored"}, // 40) true + idk.StringField{NameVal: "connect_evtcontent-ossource"}, // 41) "inspector" + idk.StringField{NameVal: "connect_evtcontent-roles"}, // 42) "" + idk.StringField{NameVal: "connect_evtcontent-osgroup"}, // 43) "Embedded" + idk.StringField{NameVal: "connect_evtcontent-ip"}, // 44) "10.2.171.9" + idk.IntField{NameVal: "connect_evtcontent-vlan"}, // 45) 0 + idk.StringField{NameVal: "connect_evtcontent-useragent"}, // 46) "unknown" + idk.StringField{NameVal: "connect_evtcontent-os"}, // 47) "Palm OS" + idk.StringField{NameVal: "connect_evtcontent-osver_src"}, // 48) "offline" + idk.StringField{NameVal: "display_vendor"}, // 49) "Zebra Technologies" + idk.StringField{NameVal: "profile_vendor"}, // 50) "Zebra Technologies" + idk.IntField{NameVal: "ml_risk_score"}, // 51) 10 + idk.StringField{NameVal: "subnets"}, // 52) "10.2.170.0/23" + idk.StringField{NameVal: "ml_risk_level"}, // 53) "Low" + idk.StringField{NameVal: "profile_type"}, // 54) "IoT" + idk.IntField{NameVal: "profile_type_score"}, // 55) 100 + idk.StringField{NameVal: "display_hostname"}, // 56) "unknown" + idk.StringField{NameVal: "display_os"}, // 57) "Palm OS" + idk.StringField{NameVal: "vendor"}, // 58) "Zebra Technologies" + idk.StringField{NameVal: "siteid"}, // 59) "6" + idk.IntField{NameVal: "progress"}, // 60) 100 + idk.IntField{NameVal: "date"}, // 61) "2019-02-09T03:31:08.590Z" + idk.IntField{NameVal: "risk_date"}, // 62) "2018-10-28T00:41:17.534012Z" + idk.StringField{NameVal: "display_vlan"}, // 63) "unknown" + idk.IntField{NameVal: "filter_last_modified"}, // 64) "2017-08-05T01:35:35.429Z" + idk.StringField{NameVal: "profile_category"}, // 65) "Patient Tracking" + idk.StringField{NameVal: "applianceid"}, // 66) "000000000000000000000CC47ADB6556" + idk.StringField{NameVal: "profile_vertical"}, // 67) "Medical" + idk.DecimalField{NameVal: "anomaly_score-application", Scale: 4}, // 68) 0.1442 + idk.DecimalField{NameVal: "anomaly_score-internal", Scale: 4}, // 69) 0.1587 + idk.DecimalField{NameVal: "anomaly_score-protocol", Scale: 4}, // 70) 0.11750000000000001 + idk.DecimalField{NameVal: "anomaly_score-payload", Scale: 1}, // 71) 0.1 + idk.DecimalField{NameVal: "anomaly_score-external", Scale: 1}, // 72) 0.1 + idk.StringField{NameVal: "profile_osgroup"}, // 73) "Windows CE" + idk.StringField{NameVal: "user_profile_type"}, // 74) "IoT" + idk.StringField{NameVal: "display_dhcp"}, // 75) "Yes" + idk.StringField{NameVal: "profile_type_source"}, // 76) "profiler" + idk.IntField{NameVal: "baseline_update_date"}, // 77) "2019.04.20" + idk.StringField{NameVal: "deviceid"}, // 78) "40:83:de:9e:7d:8c" + idk.StringField{NameVal: "profile_classifier"}, // 79) "OuiClassifier" + idk.StringField{NameVal: "dhcp"}, // 80) "Yes" + idk.StringField{NameVal: "display_profile_category"}, // 81) "Patient Tracking" + idk.StringField{NameVal: "display_profileid"}, // 82) "Macbook Pro" + idk.BoolField{NameVal: "unique"}, // 83) true + idk.BoolField{NameVal: "pii"}, // 84) true + idk.IntField{NameVal: "pii_ts"}, // 85) "2019-01-01T20:15:07.294Z" + idk.StringField{NameVal: "display_osverfirmwarever"}, // 86) "" + idk.StringField{NameVal: "display_wirewireless"}, // 87) "wireless" + idk.StringField{NameVal: "wirewireless"}, // 88) "wireless" + idk.StringField{NameVal: "display_epp_safety"}, // 89) "not_protected" + idk.StringField{NameVal: "mac"}, // 90) "40:83:de:9e:7d:8c" + idk.StringField{NameVal: "foreignaccess"}, // 91) "No" + idk.DecimalField{NameVal: "ai_vendor_confidence", Scale: 2}, // 92) 98.52 + idk.IntField{NameVal: "subnets_date"}, // 93) "2020-09-17T18:42:28.691Z" + idk.StringField{NameVal: "display_profile_confidence_source"}, // 94) "profiler" + idk.IntField{NameVal: "display_profile_confidence_date"}, // 95) "2019-03-14T06:09:00Z" + idk.IntField{NameVal: "display_profile_confidence"}, // 96) 86 + idk.StringField{NameVal: "display_profile_confidence_level"}, // 97) "70_Medium" + idk.BoolField{NameVal: "filtered"}, // 98) + idk.BoolField{NameVal: "routed"}, // 99) + idk.StringField{NameVal: "object_id"}, // 100) + idk.StringField{NameVal: "country_access_country_code"}, // 101) + idk.BoolField{NameVal: "country_access_malicious"}, // 102) + idk.IntField{NameVal: "country_access_ts"}, // 103) + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (k *PaloAlto) Source(cfg SourceConfig) idk.Source { + + src := &PaloAltoSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + schema: k.schema, + } + + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + src.record = make([]interface{}, len(src.schema)) + src.record[17] = []string{} + src.record[5] = make([]byte, 12) + src.record[78] = []byte("40:83:de:9e:7d:8c") + src.record[90] = []byte("40:83:de:9e:7d:8c") + + // add object IDs + // there'll be 10,000 unique Object IDs + numUniqueObjectIDs := 10000 + objectIDLen := 10 + charset := "abcdefghijklmnopqrstuvwxyz0123456789" + objectIDs := make([]string, numUniqueObjectIDs) + for i := 0; i < numUniqueObjectIDs; i++ { + randID := make([]byte, objectIDLen) + for j := range randID { + randID[j] = charset[src.g.R.Intn(len(charset))] + } + objectIDs[i] = string(randID) + } + src.objectIDs = objectIDs + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (k *PaloAlto) PrimaryKeyFields() []string { + return nil +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (k *PaloAlto) DefaultEndAt() uint64 { + return 20000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (k *PaloAlto) Info() string { + return "Generates data representative of Palo Alto Networks' IoT/medical device security operations. 105 fields of various types, unkeyed." +} + +// Ensure PaloAltoSource implements interface. +var _ idk.Source = (*PaloAltoSource)(nil) + +// PaloAltoSource is a data generator which generates +// data for all Pilosa field types. +type PaloAltoSource struct { + g *gen.Gen + + cur, endAt uint64 + + schema []idk.Field + record record + + objectIDs []string +} + +func (k *PaloAltoSource) Record() (idk.Record, error) { + if k.cur >= k.endAt { + return nil, io.EOF + } + + company := k.g.StringFromListWeighted(gen.Animals) + " " + k.g.StringFromListWeighted([]string{"Technologies", "Systems", "Associates"}) + os := k.g.StringFromListWeighted([]string{"Palm OS", "OSI", "FreeBSD", "BeOS"}) + baseTime := time.Date(2014, time.January, 1, 0, 0, 0, 0, time.UTC) + curTime := time.Date(2020, time.November, 1, 0, 0, 0, 0, time.UTC) + durationSeconds := curTime.Sub(baseTime) / time.Second + + // Increment the ID. + k.cur++ + k.record[0] = k.g.StringFromListWeighted([]string{"unknown", "switch", "router", "gateway"}) + k.record[1] = k.g.StringFromListWeighted([]string{"Normal", "Low", "Zero", "Elevated", "High", "Critical"}) + k.record[2] = k.g.StringFromListWeighted([]string{"IoT", "Fixed", "Server"}) + k.record[3] = k.g.R.Intn(2) == 0 + k.record[4] = k.g.StringFromListWeighted([]string{"Low", "Normal", "Zero", "Elevated", "High", "Critical"}) + k.record[5] = k.g.R.Int63n(101) + k.record[6] = k.g.StringFromListWeighted([]string{"gjtu7ldl", "C6RKKn", "9pFooX", "SvNzWU", "jCdISA", "y4fsPI", "ID5qFL", "zMpvSO", "DR4pCh", + "5BbmPh", "gjTU0F", "DclwrO", "dpsZkt", "5vGgIy", "FQzIDE", "TW8d5P", + "sxKStY", "1YULKk", "Gpn6r9", "HXy0Ju", "2EVpvj", "3wOt4J", "iXkNkv"}) + k.record[7] = k.g.StringFromListWeighted([]string{"Windows CE", "Windows 2000", "Windows XP", "Windows 95", "Mac OS 8", "Solaris", "MS Bob", "Plan 9", "Windows ME Professional Plus Ultimate Turbo Edition"}) + k.record[8] = company + " " + k.g.StringFromListWeighted([]string{"Tracking Device", "Pointing Device", "Input Device", "Display", ""}) + k.record[9] = k.g.StringFromListWeighted([]string{"Application Usage", "Automated Processes", "Background Scans"}) + k.record[10] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[11] = k.g.StringFromListWeighted([]string{"low", "normal", "zero", "elevated", "high", "critical"}) + k.record[12] = "payload" + k.record[13] = k.g.StringFromListWeighted([]string{"stable", "unstable"}) + k.record[14] = "profile model" + k.record[15] = k.g.R.Int63n(101) + k.record[16] = k.g.R.Int63n(101) + k.record[17] = k.g.StringSliceFromList(k.record[17].([]string), []string{"ext_inbound", "ext_outbound", "int_over", "int_under", "ext_across", "int_through"}) + k.record[18] = pql.NewDecimal(k.g.R.Int63n(10), 1) + k.record[19] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[20] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[21] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[22] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[23] = k.g.R.Int63n(100) + k.record[24] = k.g.StringFromListWeighted([]string{"Windows CE", "Windows 2000", "Windows XP", "Windows 95", "Mac OS 8", "Solaris", "MS Bob", "Plan 9", "Windows ME Professional Plus Ultimate Turbo Edition"}) + k.record[25] = k.g.R.Int63n(100) + k.record[26] = k.g.R.Int63n(101) + k.record[27] = k.g.StringFromListWeighted([]string{"Low", "Normal", "Zero", "Elevated", "High", "Critical"}) + k.record[28] = pql.NewDecimal(k.g.R.Int63n(100), 2) // 0.25 + k.record[29] = pql.NewDecimal(k.g.R.Int63n(100), 2) // 0.25 + k.record[30] = pql.NewDecimal(k.g.R.Int63n(100), 2) // 0.25 + k.record[31] = pql.NewDecimal(k.g.R.Int63n(100), 2) // 0.25 + k.record[32] = pql.NewDecimal(k.g.R.Int63n(100), 2) // 0.25 + k.record[33] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[34] = "offline_analytics" + k.record[35] = k.g.R.Int63n(100) + k.record[36] = k.g.StringFromListWeighted([]string{"snmp", "arp", "wlc", "cmms", "splunk", "bgp", "dhcp", "dns", "ftp", "http", "https", + "imap", "ldap", "mgcp", "mqtt", "nntp", "ntp", "pop", "ptp", "onc/rpc", "rtp", + "rtsp", "rip", "sip", "smtp", "ssh", "telnet", "tls/ssl"}) + k.record[37] = k.g.R.Int63n(100) + k.record[38] = "unknown" + k.record[39] = k.g.StringFromListWeighted([]string{"macbook.com", "imac.org", "google.com", "youtube.com", "fb.com", "csdn.net", "apple.com", "stackoverflow.com", "aws.com"}) + k.record[40] = k.g.R.Intn(2) == 0 + k.record[41] = k.g.StringFromListWeighted([]string{"offline", "inspector", "online", "SNMP", "nmap"}) + k.record[42] = "" + k.record[43] = k.g.StringFromListWeighted([]string{"Embedded", "Desktop", "Server", "Workstation", "Handheld", "Hobbyist"}) + k.record[44] = "10.2.171.9" + k.record[45] = k.g.R.Int63n(10) + k.record[46] = k.g.StringFromListWeighted([]string{"unknown", "Firefox", "Chrome", "Safari", "Edge", "Internet Explorer", "Netscape Navigator", "Opera", "Iceweasel", "lynx", "IE6"}) + k.record[47] = os + k.record[48] = k.g.StringFromListWeighted([]string{"offline", "inspector", "online", "SNMP", "nmap"}) + k.record[49] = company + k.record[50] = company + k.record[51] = k.g.R.Int63n(101) + k.record[52] = "10.2.170.0/23" + k.record[53] = k.g.StringFromListWeighted([]string{"Low", "Normal", "Zero", "Elevated", "High", "Critical"}) + k.record[54] = k.g.StringFromListWeighted([]string{"IoT", "Fixed", "Server"}) + k.record[55] = k.g.R.Int63n(101) + k.record[56] = "unknown" + k.record[57] = os + k.record[58] = company + k.record[59] = strconv.Itoa(k.g.R.Intn(10)) //"6" + k.record[60] = k.g.R.Int63n(101) + k.record[61] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[62] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[63] = "unknown" + k.record[64] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[65] = k.g.StringFromListWeighted([]string{"Patient Tracking", "Doctor Tracking", "Equipment", "Droids You're Looking For"}) + k.record[66] = "000000000000000000000CC47AD" + strconv.Itoa(10000+k.g.R.Intn(89000)) + k.record[67] = k.g.StringFromListWeighted([]string{"medical", "technology", "retail", "manufacturing", "transportation", "mining", "hospitality"}) + k.record[68] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[69] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[70] = pql.NewDecimal(k.g.R.Int63n(10000), 4) + k.record[71] = pql.NewDecimal(k.g.R.Int63n(10), 1) + k.record[72] = pql.NewDecimal(k.g.R.Int63n(10), 1) + k.record[73] = k.g.StringFromListWeighted([]string{"Windows CE", "Windows 2000", "Windows XP", "Windows 95", "Mac OS 8", "Solaris", "MS Bob", "Plan 9", "Windows ME Professional Plus Ultimate Turbo Edition"}) + k.record[74] = k.g.StringFromListWeighted([]string{"IoT", "Fixed", "Server"}) + k.record[75] = k.g.StringFromListWeighted([]string{"Yes", "No", "Unknown"}) + k.record[76] = "profiler" + k.record[77] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + // semi-randomize mac address, cardinality 10k + k.record[78].([]byte)[0] = 48 + byte(k.g.R.Intn(10)) + k.record[78].([]byte)[3] = 48 + byte(k.g.R.Intn(10)) + k.record[78].([]byte)[12] = 48 + byte(k.g.R.Intn(10)) + k.record[78].([]byte)[15] = 48 + byte(k.g.R.Intn(10)) + k.record[79] = "OuiClassifier" + k.record[80] = k.g.StringFromListWeighted([]string{"Yes", "No", "Unknown"}) + k.record[81] = k.g.StringFromListWeighted([]string{"Patient Tracking", "Doctor Tracking", "Equipment", "Droids You're Looking For"}) + k.record[82] = k.g.StringFromListWeighted([]string{"iPhone", "iPad", "Mac-Macbook", "Mac-MacbookPro", "Mac-iMac", + "Google Pixel 5", "Samsung Galaxy Note 20", "OnePlus 8 Pro", + "Mac-MacMini", "Dell G3", "Microsoft Surface Pro", "Thinkpad", + "HP Pavilion x360", "Dell Inspiron 7577", "HP Notebook", "HP Envy", "Asus Zenbook"}) + k.record[83] = k.g.R.Intn(2) == 0 + k.record[84] = k.g.R.Intn(2) == 0 + k.record[85] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[86] = "" + k.record[87] = k.g.StringFromListWeighted([]string{"wireless", "wired", "bluetooth", "Qi", "unplugged"}) + k.record[88] = k.record[87] + k.record[89] = k.g.StringFromListWeighted([]string{"not_protected", "protected", "double_coverage", "sacked"}) + k.record[90] = k.record[78] + k.record[91] = k.g.StringFromListWeighted([]string{"Yes", "No", "Unknown"}) + k.record[92] = pql.NewDecimal(k.g.R.Int63n(10000), 2) // 98.52 + k.record[93] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[94] = "profiler" + k.record[95] = baseTime.Unix() + k.g.R.Int63n(int64(durationSeconds)) + k.record[96] = k.g.R.Int63n(100) // 86 + k.record[97] = k.g.StringFromListWeighted([]string{"70_Medium", "50_Medium", "30_Medium", "10_Low", "90_High"}) + k.record[98] = k.g.R.Intn(4) != 0 // weight towards true + k.record[99] = k.g.R.Intn(4) != 0 // weight towards true + k.record[100] = k.g.StringFromListWeighted(k.objectIDs) + k.record[101] = k.g.StringFromListWeighted([]string{"US", "AT", "AU", "BR", "CA", "CH", "CN", "DE", + "DK", "EC", "EG", "FR", "GB", "IE", "IN", "IT", "JP", "MX", "NL", + "PL", "SA", "SG", "TR", "UG", "ZM"}) + k.record[102] = k.g.R.Intn(4) == 0 // weight towards false + // the first value, 15778080, is the timestamp value for 2000-01-01 at + // the minute resolution. The second value used for the int range, 10999979, + // is the duration in minutes between 2000-01-01 and 2020-11-30 + k.record[103] = 15778080 + k.g.R.Intn(10999979) + + return k.record, nil +} + +func (k *PaloAltoSource) Schema() []idk.Field { + return k.schema +} + +func (k *PaloAltoSource) Close() error { + return nil +} diff --git a/idk/datagen/power_scenario.data.go b/idk/datagen/power_scenario.data.go new file mode 100644 index 000000000..bb45689ca --- /dev/null +++ b/idk/datagen/power_scenario.data.go @@ -0,0 +1,91 @@ +package datagen + +var equip_ids = []int64{170, 6705, 8998, 15391, 15612, 15749, 21428, 24546, 35501, 36452, 37747, 39447, 39628, 40909, + 40946, 44663, 46444, 50279, 55768, 56147, 57967, 58219, 64503, 65026, 67258, 77028, 80852, 86930, + 88973, 92380, 94568, 98395, 103641, 105764, 110400, 111418, 125796, 133270, 134283, 136292, 155972, 156180, + 164954, 166068, 169949, 175969, 181630, 188810, 189121, 189617, 193660, 194865, 196097, 199576, 205504, 212633, + 218376, 219822, 221515, 223200, 225797, 228749, 229343, 230417, 233263, 234602, 240299, 246835, 256838, 257725, + 264436, 275532, 278068, 279703, 279957, 283968, 285540, 288279, 289852, 290472, 291381, 297128, 297533, 305117, + 307597, 308817, 308882, 311756, 312139, 315301, 317090, 323370, 327423, 329640, 338642, 344825, 356295, 362713, + 365282, 365828, 369949, 376736, 377181, 381091, 384663, 387357, 403746, 404146, 411349, 413003, 417046, 417612, + 418187, 418659, 422010, 422178, 422750, 426108, 427228, 434152, 438524, 438951, 450396, 452910, 459978, 460929, + 466267, 471529, 472060, 479897, 484332, 485665, 495865, 495963, 496292, 498195, 504239, 513424, 514008, 514727, + 514742, 518221, 520923, 534051, 535252, 544738, 547757, 548327, 553520, 554143, 554893, 556179, 558376, 559910, + 563382, 564769, 572059, 579761, 584028, 587525, 590231, 590471, 595030, 602503, 604893, 605096, 609045, 610622, + 615951, 616828, 625267, 625405, 627804, 628584, 645590, 649410, 654265, 655748, 658598, 661862, 662717, 669859, + 674301, 681368, 683068, 683443, 689674, 696713, 698216, 720728, 724265, 724466, 735765, 736057, 739503, + 741869, 747205, 748781, 752084, 754638, 756812, 759629, 776519, 778482, 780346, 784260, 785979, 787758, 792069, + 792128, 792668, 796483, 798071, 799332, 812631, 820151, 830777, 835937, 843404, 848141, 854779, 856719, 864956, + 865928, 868442, 877958, 879508, 880188, 888684, 891619, 897742, 898677, 902482, 903074, 903836, 904116, 906172, + 910796, 915183, 915622, 921337, 924944, 927204, 927524, 929183, 931793, 933467, 933744, 939942, 940675, 943807, + 952816, 961784, 973155, 983443, 990418, 991467, 996985, 1004994, 1006876, 1012563, 1018871, 1021258, 1024536, 1027764, + 1035367, 1042971, 1043520, 1045410, 1045909, 1046982, 1061690, 1063084, 1064184, 1064490, 1065741, 1066062, 1067023, 1067144, + 1078285, 1080073, 1080681, 1086342, 1099190, 1100930, 1102386, 1103079, 1106776, 1106794, 1113178, 1116643, 1117586, 1121897, + 1125231, 1150824, 1151526, 1156509, 1168490, 1169113, 1174033, 1175969, 1177760, 1181016, 1189303, 1194194, 1199435, 1199913, + 1205437, 1206431, 1207118, 1207588, 1213100, 1213774, 1216535, 1216671, 1219600, 1229116, 1230334, 1231457, 1240198, 1244987, + 1248359, 1248693, 1249288, 1249679, 1252185, 1252192, 1257594, 1258588, 1258837, 1259426, 1264695, 1270705, 1272356, 1275256, + 1276195, 1276355, 1286770, 1288261, 1289084, 1295310, 1297805, 1297867, 1300449, 1309905, 1311154, 1314725, 1316373, 1318509, + 1323662, 1323872, 1331279, 1341503, 1343486, 1355830, 1360519, 1368186, 1369393, 1377044, 1377355, 1379828, 1384774, 1385131, + 1390649, 1390752, 1392016, 1393066, 1397828, 1398403, 1402644, 1407699, 1408193, 1420595, 1421282, 1426560, 1428828, 1447146, + 1448096, 1454426, 1456991, 1459313, 1461845, 1464368, 1464775, 1469022, 1471894, 1477498, 1478516, 1479990, 1482303, 1487983, + 1489744, 1490877, 1495792, 1504572, 1511350, 1518125, 1518264, 1541773, 1545286, 1547050, 1548522, 1552861, 1564290, 1566414, + 1566431, 1577479, 1578614, 1580210, 1586196, 1592158, 1592803, 1609831, 1611124, 1613701, 1618272, 1623993, 1626796, 1630208, + 1630632, 1637402, 1640581, 1646833, 1649651, 1653907, 1661388, 1663303, 1677561, 1679624, 1684783, 1687466, 1689207, 1695593, + 1699313, 1703642, 1709621, 1711464, 1714225, 1714747, 1718371, 1719938, 1721880, 1722213, 1722378, 1726578, 1731519, 1732614, + 1737693, 1738711, 1740693, 1741217, 1741943, 1743220, 1744512, 1750249, 1753969, 1755937, 1756579, 1757821, 1765271, 1771636, + 1793789, 1798396, 1806097, 1809291, 1812137, 1824242, 1831634, 1837719, 1842044, 1842278, 1847888, 1850588, 1852475, 1852888, + 1856616, 1858738, 1862498, 1866149, 1867368, 1871306, 1871988, 1873287, 1874539, 1883931, 1885816, 1894204, 1894681, 1895614, + 1901123, 1903282, 1905423, 1909084, 1923727, 1930663, 1931956, 1932833, 1934820, 1937587, 1940728, 1941918, 1944165, 1946568, + 1947987, 1953801, 1953968, 1955186, 1956283, 1970037, 1970939, 1971283, 1971634, 1972028, 1974020, 1982146, 1984706, 1986285, + 1988839, 1994294, 1999537, 2001366, 2006323, 2019744, 2020244, 2021998, 2023253, 2024820, 2038708, 2043133, 2050415, 2054573, + 2055318, 2055641, 2060181, 2064735, 2066973, 2073400, 2076179, 2077647, 2082933, 2088378, 2091256, 2092254, 2095927, 2096728, + 2097256, 2098417, 2104590, 2107812, 2111894, 2113006, 2113172, 2115923, 2123194, 2124775, 2126841, 2127455, 2135914, 2138248, + 2138895, 2148831, 2152933, 2154423, 2157534, 2158772, 2165956, 2185189, 2188928, 2189922, 2191770, 2192335, 2197772, 2204293, + 2206929, 2207872, 2208524, 2212434, 2213670, 2216288, 2219663, 2222810, 2234302, 2236121, 2244474, 2245406, 2245618, 2247416, + 2256856, 2259832, 2266976, 2287105, 2292613, 2300919, 2308247, 2311442, 2317940, 2323171, 2328913, 2332308, 2338815, 2341978, + 2342680, 2343207, 2343258, 2347349, 2348530, 2356060, 2357599, 2366448, 2372157, 2373974, 2389857, 2397914, 2408614, 2409025, + 2413054, 2415388, 2418060, 2418287, 2431357, 2436957, 2437995, 2440135, 2448182, 2449312, 2450671, 2456767, 2458398, 2465373, + 2467950, 2471083, 2478256, 2479620, 2484480, 2485642, 2499422, 2501830, 2503617, 2507695, 2507924, 2514244, 2515993, 2517670, + 2521572, 2521758, 2521860, 2522431, 2523551, 2536359, 2542693, 2543890, 2544783, 2551368, 2553326, 2554384, 2555943, 2559870, + 2559978, 2560138, 2561731, 2562964, 2563032, 2566555, 2569629, 2572846, 2573293, 2577194, 2587236, 2591677, 2597597, 2598767, + 2603379, 2603936, 2610863, 2611226, 2612116, 2617492, 2623462, 2626900, 2627684, 2628938, 2629376, 2630167, 2630971, 2634686, + 2635285, 2638959, 2643208, 2650402, 2674968, 2675700, 2682692, 2686250, 2688569, 2698489, 2698756, 2701002, 2708988, 2711781, + 2721639, 2722444, 2728982, 2734144, 2736990, 2743465, 2746010, 2746122, 2750772, 2752595, 2760961, 2765330, 2766876, 2768977, + 2776873, 2780155, 2783415, 2785459, 2787728, 2789811, 2801913, 2810016, 2821657, 2825572, 2828022, 2835510, 2839090, 2841082, + 2845456, 2848734, 2853772, 2860625, 2862994, 2877543, 2877600, 2880718, 2882184, 2883714, 2887228, 2887901, 2889678, 2897354, + 2899312, 2904629, 2907542, 2916110, 2925284, 2927109, 2928100, 2929921, 2935813, 2947739, 2948218, 2949067, 2951839, 2952812, + 2958330, 2962633, 2969330, 2973762, 2974039, 2977915, 2981914, 2981974, 2993186, 3001478, 3009979, 3010958, 3017945, 3018092, + 3021502, 3023793, 3030820, 3048756, 3064636, 3066186, 3069757, 3074327, 3077454, 3082404, 3082597, 3082846, 3090844, 3092798, + 3097517, 3117732, 3120551, 3121731, 3123206, 3125144, 3129880, 3134051, 3138887, 3139269, 3146691, 3162623, 3167976, 3171680, + 3172092, 3174668, 3176520, 3178406, 3180494, 3181366, 3187286, 3192368, 3195066, 3207053, 3207135, 3213132, 3216378, 3222117, + 3235457, 3237770, 3238110, 3239629, 3254968, 3260403, 3271650, 3274503, 3278170, 3279265, 3281370, 3285205, 3287787, 3288274, + 3294659, 3297964, 3299741, 3304286, 3304555, 3306973, 3307749, 3318074, 3318193, 3321012, 3332069, 3333286, 3336583, 3357759, + 3366036, 3369940, 3373922, 3374020, 3380601, 3380834, 3385680, 3386484, 3388907, 3392291, 3392815, 3402052, 3410562, 3414439, + 3420520, 3423275, 3424701, 3425584, 3432973, 3433481, 3435264, 3439456, 3442491, 3447445, 3456075, 3458649, 3466648, 3470869, + 3475382, 3476606, 3476621, 3479464, 3487342, 3491444, 3493965, 3499913, 3504016, 3505277, 3510610, 3515067, 3521723, 3525368, + 3526858, 3533427, 3539037, 3543634, 3549370, 3554771, 3556188, 3556719, 3557106, 3558716, 3566081, 3568789, 3570470, 3577210, + 3577279, 3579450, 3580297, 3581380, 3584824, 3595719, 3596320, 3597828, 3599609, 3600356, 3610056, 3615088, 3615771, 3627152, + 3632238, 3633626, 3634000, 3634056, 3638155, 3641404, 3648305, 3650521, 3657979, 3663691, 3668525, 3671821, 3675056, 3690557, + 3691160, 3692120, 3699218, 3699407, 3700585, 3702982, 3707485, 3708256, 3708693, 3713871, 3714877, 3719320, 3722712, 3730939, + 3732068, 3736951, 3740221, 3742276, 3743132, 3744197, 3747296, 3752418, 3755690, 3760012, 3762328, 3762562, 3764389, 3766506, + 3770138, 3774772, 3777522, 3778852, 3782958, 3786682, 3790994, 3798517, 3806492, 3807916, 3812458, 3814356, 3817554, 3819970, + 3844018, 3847499, 3853682, 3858273, 3859005, 3859243, 3878788, 3886767, 3888247, 3894022, 3901758, 3905768, 3909665, 3913315, + 3916506, 3916508, 3921890, 3932260, 3933067, 3941306, 3945750, 3946479, 3948043, 3948982, 3953119, 3957406, 3963990, 3968883, + 3972848, 3973261, 3974825, 3976601, 3977770, 3977958, 3979475, 3984819, 3986007, 3992267, 3993561, 3994389, 4000917, 4001181, + 4014442, 4019390, 4022195, 4028877, 4029954, 4032587, 4037102, 4046403, 4048083, 4050063, 4056429, 4059822, 4064935, 4067753, + 4068991, 4074173, 4076051, 4078426, 4080941, 4086632, 4089832, 4093462, 4120531, 4126517, 4126989, 4128083, 4134362, 4135763, + 4136946, 4142396, 4153635, 4154133, 4155775, 4156353, 4159885, 4163437, 4173644, 4175669, 4175716, 4178444, 4182202, 4188460, + 4193633, 4195957, 4196111, 4200175, 4201044, 4203923, 4207626, 4211609, 4212894, 4219233, 4225031, 4227480, 4227943, 4235608, + 4237879, 4238186, 4242063, 4246550, 4254375, 4273300, 4273376, 4279125, 4288501, 4292289, 4303360, 4314767, 4319891, 4322988, + 4323330, 4331224, 4331940, 4332937, 4338874, 4351993, 4354255, 4367565, 4367809, 4379534, 4391845, 4401627, 4406904, 4409375, + 4416007, 4420605, 4422058, 4428228, 4428440, 4429111, 4430316, 4433444, 4442834, 4445844, 4450002, 4459236, 4462603, 4465108, + 4470150, 4470783, 4474314, 4477799, 4480164, 4485288, 4499664, 4502245, 4503453, 4515953, 4516662, 4518057, 4518154, 4523451, + 4525325, 4528875, 4534950, 4535080, 4536380, 4537342, 4541059, 4542658, 4557608, 4561213, 4564417, 4570249, 4580957, 4581770, + 4585987, 4588300, 4601158, 4602739, 4602774, 4604514, 4607159, 4610051, 4616441, 4619168, 4620611, 4623445, 4626226, 4628480, + 4637825, 4644310, 4647256, 4660825, 4669516, 4670709, 4677429, 4677486, 4678820, 4679973, 4690245, 4690275, 4695766, 4699852, + 4702631, 4704632, 4712369, 4715789, 4719854, 4722861, 4722918, 4725870, 4729612, 4734176, 4741068, 4743653, 4757745, 4760132, + 4763429, 4763479, 4771243, 4772347, 4779714, 4779717, 4784801, 4790225, 4790556, 4793134, 4798198, 4799146, 4799455, 4800860, + 4811057, 4821071, 4823592, 4834250, 4838501, 4841596, 4842353, 4844741, 4851381, 4855034, 4857285, 4863730, 4864267, 4866872, + 4869466, 4869896, 4872492, 4874296, 4877102, 4883864, 4888686, 4891102, 4891984, 4913401, 4913731, 4922248, 4925341, 4927279, + 4929436, 4938404, 4955445, 4958196, 4963007, 4963658, 4964288, 4968824, 4970773, 4982366, 4991538, 4991817, 4993291, 4995733, + 4996460, 4999789} diff --git a/idk/datagen/power_scenario_1.go b/idk/datagen/power_scenario_1.go new file mode 100644 index 000000000..896fbb233 --- /dev/null +++ b/idk/datagen/power_scenario_1.go @@ -0,0 +1,147 @@ +package datagen + +import ( + "io" + "sync" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Power1 implements interface. +var _ Sourcer = (*Power1)(nil) + +// Power1 implements Sourcer. +type Power1 struct { + startEnds []startEnd + + mu sync.Mutex + sourceCall int +} + +// NewPower1 returns a new instance of Power1. +func NewPower1(cfg SourceGeneratorConfig) Sourcer { + start := cfg.StartFrom + end := cfg.EndAt + if start == 0 { + start = 100000000 + if end == 0 { + end = start + 630 + } else { + end += 100000000 + } + } + // We need to adjust end to be exclusive. + end++ + + customCfg := SourceGeneratorConfig{ + StartFrom: start, + EndAt: end, + Concurrency: cfg.Concurrency, + } + + _, ses, _ := startEnds(customCfg) + + return &Power1{ + startEnds: ses, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (p *Power1) Source(cfg SourceConfig) idk.Source { + p.mu.Lock() + i := p.sourceCall + p.sourceCall++ + p.mu.Unlock() + src := &Power1Source{ + // We're goind to ignore the passed in start/end, + // and instead used that calculated by NewPower1. + cur: p.startEnds[i].start, + endAt: p.startEnds[i].end, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "data_type"}, // 1 + idk.IntField{NameVal: "equip_id"}, // 2 + idk.StringField{NameVal: "group"}, // 3 + idk.IntField{NameVal: "int_value"}, // 4 + idk.StringField{NameVal: "string_value"}, // 5 + idk.IntField{NameVal: "timestamp"}, // 6 + idk.StringField{NameVal: "type"}, // 7 + }, + } + + src.record = make([]interface{}, len(src.schema)) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (p *Power1) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (p *Power1) DefaultEndAt() uint64 { + return 100000630 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (p *Power1) Info() string { + return "Generates data representative of Power Analytics operations (#1)." +} + +// Ensure Power1Source implements interface. +var _ idk.Source = (*Power1Source)(nil) + +type Power1Source struct { + Log logger.Logger + + cur, endAt uint64 + + schema []idk.Field + + record record +} + +func (s *Power1Source) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + + // timestamp + s.record[6] = int(509100000 + (10 * s.cur)) + + // type + s.record[7] = "Amperage" + + // group + s.record[3] = "single" + + // equip_id + s.record[2] = 712278 // breaker at a retail site + + // data type and string or int value + s.record[1] = "int" + s.record[4] = 30 + s.record[5] = nil + + s.cur++ + + return s.record, nil +} + +func (s *Power1Source) Schema() []idk.Field { + return s.schema +} + +func (s *Power1Source) Close() error { + return nil +} diff --git a/idk/datagen/power_scenario_1_2.go b/idk/datagen/power_scenario_1_2.go new file mode 100644 index 000000000..1c1ab8dcd --- /dev/null +++ b/idk/datagen/power_scenario_1_2.go @@ -0,0 +1,125 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Power1_2 implements interface. +var _ Sourcer = (*Power1_2)(nil) + +// Power1_2 implements Sourcer. +type Power1_2 struct{} + +// NewPower1_2 returns a new instance of Power1_2. +func NewPower1_2(cfg SourceGeneratorConfig) Sourcer { + return &Power1_2{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (p *Power1_2) Source(cfg SourceConfig) idk.Source { + src := &Power1_2Source{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(22)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "data_type"}, // 1 + idk.IntField{NameVal: "equip_id"}, // 2 + idk.StringField{NameVal: "group"}, // 3 + idk.IntField{NameVal: "int_value"}, // 4 + idk.StringField{NameVal: "string_value"}, // 5 + idk.IntField{NameVal: "timestamp"}, // 6 + idk.StringField{NameVal: "type"}, // 7 + }, + } + + src.record = make([]interface{}, len(src.schema)) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (p *Power1_2) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (p *Power1_2) DefaultEndAt() uint64 { + return 3*uint64(len(equip_ids)) - 1 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (p *Power1_2) Info() string { + return "Generates data representative of Power Analytics operations (#2)." +} + +// Ensure Power1_2Source implements interface. +var _ idk.Source = (*Power1_2Source)(nil) + +type Power1_2Source struct { + Log logger.Logger + + rand *rand.Rand + + cur, endAt uint64 + + schema []idk.Field + + record record +} + +func (s *Power1_2Source) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = 101000000 + s.cur + + // timestamp + //s.record[6] = timestamp + + // type + s.record[7] = "Amperage" + + // group + s.record[3] = "free" + + // equip_id + s.record[2] = equip_ids[s.cur%uint64(len(equip_ids))] + + // timestamp + s.record[6] = int(1509100001) + 3600*int(s.cur/uint64(len(equip_ids))) + + // data type and string or int value + s.record[1] = "int" + s.record[4] = s.rand.Intn(10000) + 50 + s.record[5] = nil + + s.cur++ + + return s.record, nil +} + +func (s *Power1_2Source) Schema() []idk.Field { + return s.schema +} + +func (s *Power1_2Source) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*Power1_2Source)(nil) + +func (s *Power1_2Source) Close() error { + return nil +} diff --git a/idk/datagen/shared.go b/idk/datagen/shared.go new file mode 100644 index 000000000..f984884ed --- /dev/null +++ b/idk/datagen/shared.go @@ -0,0 +1,28 @@ +package datagen + +import "time" + +var customers = []string{"CVS", "McDonald's", "Walmart", "Visa", "Sprint", "Comcast"} +var inStorePayments = []string{"Credit Card", "Debit Card", "Cash", "ACH", "Return"} +var ecomPayments = []string{"Credit Card", "Debit Card", "ACH", "Return"} +var tsTypes = []string{"Voltage", "VoltageRMS", "Amperage", "Resistance", "Frequency", "Message"} + +var startDayInt int64 +var todayInt int64 + +var startDate = time.Date(2015, time.January, 1, 0, 0, 0, 0, time.UTC) +var today = time.Date(2019, time.November, 19, 0, 0, 0, 0, time.UTC) +var currentDur = today.Sub(startDate) + +var daysSinceStart = int(currentDur / (time.Hour * 24)) + +func init() { + epoch := time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC) + start := time.Date(today.Year()-10, today.Month(), today.Day(), today.Hour(), today.Minute(), today.Second(), today.Nanosecond(), today.Location()) + startDayInt = int64(start.Sub(epoch) / (time.Hour * 24)) + todayInt = int64(today.Sub(epoch) / (time.Hour * 24)) +} + +func intptr(i int64) *int64 { + return &i +} diff --git a/idk/datagen/sites.data.go b/idk/datagen/sites.data.go new file mode 100644 index 000000000..2d37d1923 --- /dev/null +++ b/idk/datagen/sites.data.go @@ -0,0 +1,37 @@ +package datagen + +var maintainerDomains = []string{"@datafoundry.com", "@digitalrealty.com", "@globalswitch.us", "@ironmountain.com", "@cyrusone.com", "@chinatelecom-h.com", "@equinix.com", "@chinaunicom.com.hk", "@telehouse.com", "@ntt.com"} + +var serviceProviders = []string{"Data Foundry", "Digital Realty Trust", "Global Switch", "Iron Mountain", "CyrusOne", "China Telecom", "Equinix", "China Unicom", "Telehouse", "NTT Communications"} + +var lastNames = []string{"smith", "johnson", "williams", "jones", "brown", "davis", "miller", "wilson", + "moore", "taylor", "anderson", "thomas", "jackson", "white", "harris", "martin", "thompson", + "garcia", "martinez", "robinson", "clark", "rodriguez", "lewis", "lee", "walker", "hall", + "allen", "young", "hernandez", "king", "wright", "lopez", "hill", "scott", "green", + "adams", "baker", "gonzalez", "nelson", "carter", "mitchell", "perez", "roberts", "turner", + "phillips", "campbell", "parker", "evans", "edwards", "collins", "stewart", "sanchez", "morris", + "rogers", "reed", "cook", "morgan", "bell", "murphy", "bailey", "rivera", "cooper", + "richardson", "cox", "howard", "ward", "torres", "peterson", "gray", "ramirez", "james", + "watson", "brooks", "kelly", "sanders", "price", "bennett", "wood", "barnes", "ross", + "henderson", "coleman", "jenkins", "perry", "powell", "long", "patterson", "hughes", "flores", + "washington", "butler", "simmons", "foster", "gonzales", "bryant", "alexander", "russell", "griffin", + "diaz", "hayes", "myers", "ford", "hamilton", "graham", "sullivan", "wallace", "woods", + "cole", "west", "jordan", "owens", "reynolds", "fisher", "ellis", "harrison", "gibson", + "mcdonald", "cruz", "marshall", "ortiz", "gomez", "murray", "freeman", "wells", "webb", + "simpson", "stevens", "tucker", "porter", "hunter", "hicks", "crawford", "henry", "boyd", + "mason", "morales", "kennedy", "warren", "dixon", "ramos", "reyes", "burns", "gordon", + "shaw", "holmes", "rice", "robertson", "hunt", "black", "daniels", "palmer", "mills", + "nichols", "grant", "knight", "ferguson", "rose", "stone", "hawkins", "dunn", "perkins", + "hudson", "spencer", "gardner", "stephens", "payne", "pierce", "berry", "matthews", "arnold", + "wagner", "willis", "ray", "watkins", "olson", "carroll", "duncan", "snyder", "hart", + "cunningham", "bradley", "lane", "andrews", "ruiz", "harper", "fox", "riley", "armstrong", + "carpenter", "weaver", "greene", "lawrence", "elliott", "chavez", "sims", "austin", "peters", + "kelley", "franklin", "lawson", "fields", "gutierrez", "ryan", "schmidt", "carr", "vasquez", + "castillo", "wheeler", "chapman", "oliver", "montgomery", "richards", "williamson", "johnston", "banks", + "meyer", "bishop", "mccoy", "howell", "alvarez", "morrison", "hansen", "fernandez", "garza", + "harvey", "little", "burton", "stanley", "nguyen", "george", "jacobs", "reid", "kim", + "fuller", "lynch", "dean", "gilbert", "garrett", "romero", "welch", "larson", "frazier", + "burke", "hanson", "day", "mendoza", "moreno", "bowman", "medina", "fowler", "brewer", + "hoffman", "carlson", "silva", "pearson", "holland", "douglas", "fleming", "jensen", "vargas", + "byrd", "davidson", "hopkins", "may", "terry", "herrera", "wade", "soto", "walters", + "curtis", "neal", "caldwell", "lowe"} diff --git a/idk/datagen/sites.go b/idk/datagen/sites.go new file mode 100644 index 000000000..b0d85f398 --- /dev/null +++ b/idk/datagen/sites.go @@ -0,0 +1,211 @@ +package datagen + +import ( + "errors" + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Site implements interface. +var _ Sourcer = (*Site)(nil) + +// Site implements Sourcer. +type Site struct{} + +// NewSite returns a new instance of Site. +func NewSite(cfg SourceGeneratorConfig) Sourcer { + return &Site{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (s *Site) Source(cfg SourceConfig) idk.Source { + src := &SiteSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.DecimalField{NameVal: "latitude", Scale: 4}, // 1 + idk.DecimalField{NameVal: "longitude", Scale: 4}, // 2 + idk.StringField{NameVal: "maintainer"}, // 3 + idk.StringField{NameVal: "classification"}, // 4 + idk.StringField{NameVal: "type"}, // 5 + idk.StringField{NameVal: "service_provider"}, // 6 + idk.StringField{NameVal: "region"}, // 7 + idk.DateIntField{NameVal: "last_inspection"}, // 8 + }, + } + + src.providerZipf = rand.NewZipf(src.rand, 1.03, 3, uint64(len(serviceProviders))-1) + + src.record = make([]interface{}, len(src.schema)) + src.record[7] = int(1420070400) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (s *Site) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (s *Site) DefaultEndAt() uint64 { + return 4688000 - 1 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (s *Site) Info() string { + return "Generates site data (customer, size, location) - includes a foreign key for network_ts, power_ts, transaction_ts." + +} + +// Ensure SiteSource implements interface. +var _ idk.Source = (*SiteSource)(nil) + +type SiteSource struct { + Log logger.Logger + + rand *rand.Rand + providerZipf *rand.Zipf + + schema []idk.Field + + cur, endAt uint64 + + record record +} + +func (s *SiteSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + + // lat/lon + longitude, latitude := s.location() + s.record[1] = latitude + s.record[2] = longitude + + // service provider + var domain string + s.record[6], domain = s.serviceProviderDomain() + + // maintainer + s.record[3] = s.emailName() + domain + + // classification + s.record[4] = s.classification() + + // type + s.record[5] = s.siteType(s.cur) + if s.record[5].(string) == "" { + return nil, errors.New("exhausted sites data set") + } + + // region + s.record[7] = region(latitude, longitude) + + // last_inspection + s.record[8] = startDayInt + s.rand.Int63n(365*10-200) + + s.cur++ + + return s.record, nil +} + +func (s *SiteSource) classification() string { + num := s.rand.Intn(100) + switch { + case num < 3: + return "Tier 1" + case num < 20: + return "Tier 2" + case num < 40: + return "Tier 3" + case num < 75: + return "Tier 4" + default: + return "Tier 5" + } +} + +func (s *SiteSource) serviceProviderDomain() (string, string) { + idx := s.providerZipf.Uint64() + return serviceProviders[idx], maintainerDomains[idx] +} + +func (s *SiteSource) emailName() string { + idx := s.rand.Intn(len(lastNames)) + lastName := lastNames[idx] + initial := uint8(s.rand.Intn(26) + 97) + return string([]byte{initial, '.'}) + lastName +} + +func (s *SiteSource) siteType(id uint64) string { + switch { + case id < 1000: + return "MSC" // 1k + case id < 8000: + return "Headend" // 7k + case id < 33000: + return "Central Office" // 25k + case id < 88000: + return "Substation" // 55k + case id < 488000: + return "Retail" // 400k + case id < 888000: + return "Cell Site" // 400k + case id < 1688000: + return "NOC" // 800k + case id < 4688000: + return "Data Center" // 3M + default: + return "" + } +} + +func (s *SiteSource) location() (lon float64, lat float64) { + loc := locations[s.rand.Intn(len(locations))] + off1, off2 := (s.rand.Float64()-0.5)/50, (s.rand.Float64()-0.5)/50 + return loc.lon + off1, loc.lat + off2 +} + +func region(latitude, longitude float64) string { + if longitude < 80 { + return "East" + } + if longitude > 105 { + return "West" + } + if latitude < 39 { + return "South" + } + return "North" +} + +func (s *SiteSource) Schema() []idk.Field { + return s.schema +} + +func (s *SiteSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*SiteSource)(nil) + +func (s *SiteSource) Close() error { + return nil +} diff --git a/idk/datagen/sizing.go b/idk/datagen/sizing.go new file mode 100644 index 000000000..bfded35c9 --- /dev/null +++ b/idk/datagen/sizing.go @@ -0,0 +1,124 @@ +package datagen + +import ( + "io" + "math/rand" + + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Sizing implements interface. +var _ Sourcer = (*Sizing)(nil) + +// Sizing implements Sourcer. +type Sizing struct{} + +// NewSizing returns a new instance of Sizing. +func NewSizing(cfg SourceGeneratorConfig) Sourcer { + return &Sizing{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (s *Sizing) Source(cfg SourceConfig) idk.Source { + src := &SizingSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(22)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.IntField{NameVal: "eightbit_random"}, + idk.IntField{NameVal: "sixteenbit_random"}, + idk.IntField{NameVal: "thirtytwobit_random"}, + idk.IntField{NameVal: "sixtythreebit_random"}, + idk.IntField{NameVal: "eightbit_zipf"}, + idk.IntField{NameVal: "sixteenbit_zipf"}, + idk.IntField{NameVal: "thirtytwobit_zipf"}, + idk.IntField{NameVal: "sixtythreebit_zipf"}, + }, + } + src.record = make([]interface{}, len(src.schema)) + src.zipf8 = rand.NewZipf(src.rand, 1.01, 4, 255) + src.zipf16 = rand.NewZipf(src.rand, 1.01, 4, 65535) + src.zipf32 = rand.NewZipf(src.rand, 1.01, 4, 4294967295) + src.zipf63 = rand.NewZipf(src.rand, 1.01, 4, 9223372036854775807) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (s *Sizing) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (s *Sizing) DefaultEndAt() uint64 { + return pilosaclient.DefaultShardWidth - 1 // one shard width +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (s *Sizing) Info() string { + return "Generates data for estimating index size relative to original data size." +} + +// Ensure SizingSource implements interface. +var _ idk.Source = (*SizingSource)(nil) + +// SizingSource is an idk.Source meant to generate data which is +// helpful in determining the on-disk footprint of different types of +// data which can be extrapolated to help estimate necessary +// infrastructure size for various data. Typically one shard width of +// data is generated. +type SizingSource struct { + Log logger.Logger + + cur, endAt uint64 + + rand *rand.Rand + zipf8 *rand.Zipf + zipf16 *rand.Zipf + zipf32 *rand.Zipf + zipf63 *rand.Zipf + + schema []idk.Field + record record +} + +func (s *SizingSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + s.record[1] = s.rand.Intn(255) + s.record[2] = s.rand.Intn(65535) + s.record[3] = s.rand.Intn(4294967295) + s.record[4] = s.rand.Intn(9223372036854775807) + s.record[5] = int64(s.zipf8.Uint64()) + s.record[6] = int64(s.zipf16.Uint64()) + s.record[7] = int64(s.zipf32.Uint64()) + s.record[8] = int64(s.zipf63.Uint64()) + s.cur++ + return s.record, nil +} + +func (s *SizingSource) Schema() []idk.Field { + return s.schema +} + +func (s *SizingSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*SizingSource)(nil) + +func (s *SizingSource) Close() error { + return nil +} diff --git a/idk/datagen/skills.data.go b/idk/datagen/skills.data.go new file mode 100644 index 000000000..07a36ce86 --- /dev/null +++ b/idk/datagen/skills.data.go @@ -0,0 +1,218 @@ +package datagen + +var skills = []string{ + "Data Entry", + "Answering Phones", + "Billing", + "Bookkeeping (Excel, Turbotax)", + "Scheduling", + "Ms Office", + "Office Equipment", + "Quickbooks", + "Shipping", + "Welcoming Visitors", + "Salesforce", + "Calendar Management", + "Organization", + "Time Management", + "Problem Solving", + "Attention To Detail", + "Adaptability", + "Written Communication", + "Email Platforms (E.G., Gmail And iCloud Mail)", + "Word Processing Software (E.G., Google Docs)", + "Spreadsheet Software", + "Databases", + "Digital Calendars", + "Prioritization", + "Product Knowledge", + "Lead Qualification", + "Lead Prospecting", + "Customer Needs Analysis", + "Referral Marketing", + "Contract Negotiation", + "Self Motivation", + "Increasing Customer Lifetime Value (Clv)", + "Reducing Customer Acquisition Cost (Cac)", + "CRM Software (Salesforce, Hubspot, Zoho, Freshsales)", + "POS Skills", + "Cashier Skills", + "Problem Solving", + "Patience", + "Knowledge Of Products And Services", + "Adaptability", + "Customer Service", + "Communication", + "Math Skills", + "Organization", + "Time Management", + "Negotiation", + "Persuasion", + "Patience", + "Diplomacy", + "Cold Calling", + "Customer Relationship Management (CRM)", + "Lead Generation", + "Buyer-responsive Selling", + "Buyer Engagement", + "Teamwork", + "Patient Assessment", + "Taking Vital Signs", + "Patient Care", + "Recording Patient Medical History", + "Wound Dressing And Care", + "Urgent And Emergency Care", + "Record-keeping", + "Patient Education", + "NIH Stroke Scale Patient Assessment", + "Electronic Medical Record (EMR)", + "Medicine Administration", + "Blood Pressure Monitoring", + "Phlebotomy", + "Rehabilitation Therapy", + "Hygiene Assistance", + "Use Of X-ray, MRI, Cat Scans", + "Meditech", + "Glucose Checks", + "Electronic Heart Record (EHR)", + "Time Management", + "Prioritization", + "Decision-Making Ability", + "Critical Thinking", + "Leadership", + "Thorough Understanding Of HIPPA And Privacy Policies", + "Ability To Take And Record Vital Signs", + "CPR And First-Aid Certifications", + "Perform And Evaluate Diagnostic Tests", + "Maintain Patient Charts", + "Programming Languages", + "Web Development", + "Data Structures", + "Open Source Experience", + "Security", + "Machine Learning", + "Debugging", + "UX/UI", + "Front-End & Back-End Development", + "Cloud Management", + "Agile Development", + "HTML/CSS", + "CSS Preprocessors", + "Javascript", + "Wordpress", + "Graphic User Interfaces (GUI)", + "Git/Version Control (Github, gitlab)", + "Search Engine Optimization (SEO)", + "Application Programming Interface (API)", + "Adobe Photoshop, InDesign", + "Content Management Systems (CMS)", + "Testing/Debugging", + "Responsive Design Principles", + "Mobile and Web Development (e.g. iOS, Android)", + "STEM Skills", + "CAD", + "Design", + "Prototyping", + "Testing", + "Troubleshooting", + "Project Launch", + "Lean Manufacturing", + "Workflow Development", + "Computer Skills", + "SolidWorks", + "Budgeting", + "Technical Report Writing", + "Programming Languages HTML, CSS, CRM tools", + "SEO (SEMRush, WordPress, and Ahrefs)", + "SEM (i.e., Google Adwords)", + "PPC", + "CRO and A/B Testing", + "Social Media Marketing and Paid Social Media Advertising", + "Sales Funnel Management", + "CMS Tools (WordPress, Weebly)", + "Graphic Design Skills (Adobe Creative Suite)", + "Email Marketing (MailChimp, Constant Contact)", + "Email Automation", + "Data Visualization", + "CPC", + "Typography", + "Print Design", + "Photography and Branding", + "Communication", + "Creativity", + "Data Analytics (Google Analytics )", + "Web Analytics", + "Adaptability", + "Organized", + "Email Writing", + "Google Adwords", + "Social Media And Mobile Marketing", + "Paid Social Media Advertisements", + "Consumer Behavior Drivers", + "Brand Management", + "B2b Marketing", + "Writing Advertising Copy", + "Soliciting Feedback From Customers", + "Cutting Costs", + "Leadership skills", + "Task Delegation", + "Strategic Management", + "Negotiation", + "Planning", + "Proposal writing", + "Problem-solving", + "Innovation", + "Charisma", + "Problem solving", + "Personable", + "Website Management", + "Social Media Outreach", + "Video Production", + "Data Visualization", + "Campaign Management", + "Photo Editing", + "Editing", + "Typography", + "Logo Creation", + "Digital Printing", + "Interactive Media Design", + "Color Sense & Theory", + "Ad Design", + "Social Media Publishing", + "UX Design", + "Storytelling", + "Financial Analysis", + "Consumer Research", + "Statistical Analysis", + "Drawing", + "Design", + "Videography", + "Technical Writing", + "Mobile and Web Development (e.g. iOS, Android)", + "Agile Project Management (Kanban)", + "Managing Cross-Functional Teams", + "Scrum Management", + "Performance Tracking", + "Financial Modelling", + "Ideation Leadership", + "Feature Definition", + "Forecasting", + "Profit and Loss", + "Scope Management", + "Project Lifecycle Management", + "Meeting Facilitation", + "Leadership", + "Communication", + "Critical Thinking", + "Time Management", + "Mentoring", + "Risk Management", + "Negotiation", + "Cost Management", + "Data Analysis", + "Collaborative", + "Collaborative Programs (Slack, WhatsApp, Dropbox)", + "Wordpress", + "Adobe Creative Suite", + "Performance Tracking", +} diff --git a/idk/datagen/stringpk.go b/idk/datagen/stringpk.go new file mode 100644 index 000000000..d20564d74 --- /dev/null +++ b/idk/datagen/stringpk.go @@ -0,0 +1,94 @@ +package datagen + +import ( + "io" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +// Ensure StringPK implements interface. +var _ Sourcer = (*StringPK)(nil) + +// StringPK implements Sourcer. +type StringPK struct{} + +// NewStringPK returns a new instance of StringPK. +func NewStringPK(cfg SourceGeneratorConfig) Sourcer { + return &StringPK{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (s *StringPK) Source(cfg SourceConfig) idk.Source { + sps := &StringPKSource{ + record: make(record, 2), + n: cfg.startFrom, + endAt: cfg.endAt, + } + + sps.record[0] = make([]byte, 12) + sps.g = gen.New(gen.OptGenSeed(cfg.seed)) + + return sps +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (s *StringPK) PrimaryKeyFields() []string { + return []string{"pk"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (s *StringPK) DefaultEndAt() uint64 { + return 10000000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (s *StringPK) Info() string { + return "TODO" +} + +// Ensure StringPKSource implements interface. +var _ idk.Source = (*StringPKSource)(nil) + +type StringPKSource struct { + g *gen.Gen + + endAt uint64 + n uint64 + + record record +} + +func (s *StringPKSource) Record() (idk.Record, error) { + if s.n >= s.endAt { + return nil, io.EOF + } + s.g.AlphaUpper(s.record[0].([]byte)) + s.record[1] = s.g.R.Intn(10) + s.n++ + return s.record, nil +} + +func (s *StringPKSource) Schema() []idk.Field { + return []idk.Field{ + idk.StringField{NameVal: "pk"}, + idk.IDField{NameVal: "field1"}, + } +} + +func (s *StringPKSource) Seed(seed int64) { + s.g.R.Seed(seed) +} + +var _ Seedable = (*StringPKSource)(nil) + +func (s *StringPKSource) Close() error { + return nil +} diff --git a/idk/datagen/testdata/custom.yaml b/idk/datagen/testdata/custom.yaml new file mode 100644 index 000000000..d3dace666 --- /dev/null +++ b/idk/datagen/testdata/custom.yaml @@ -0,0 +1,119 @@ +fields: + - name: "an_id" + type: "uint" # (default IDField (non-mutex)) + distribution: "sequential" + min: 0 + max: 1000000 + repeat: false # if false, data generation stops when we hit >= max. only available with sequential + step: 1 + - name: "an_int" + type: "int" # (default IntField) + distribution: "uniform" # uniform or zipfian + min: 0 + max: 5 + null_chance: 0.01 + - name: "a_zipf_int" + type: "int" # (default IntField) + distribution: "zipfian" + min: 0 + max: 100 + s: 1.1 + v: 5.1 + - name: "a_string_from_file" + type: "string" # (default StringField (non-mutex)) + source_file: "testdata/file_with_line_delimited_values" # this will be used if not empty + distribution: "zipfian" # uniform or zipfian + s: 1.1 # s and v are used for zipfian + v: 5.1 + - name: "a_random_string" + type: "string" # (default StringField (non-mutex)) + generator_type: "random-string" # used to generate random strings rather than pulling from known set + min_len: 8 + max_len: 12 + charset: "AB" # set of possible characters to pull from when generating random string + - name: "a_string_set" + type: "string-set" # (default StringArrayField) + generator_type: "random-string" # used to generate random strings rather than pulling from known. "distribution" is ignored. + min_len: 4 + max_len: 4 + charset: "0123456789ABCDEF" + min_num: 0 # minimum number of strings in each value (default 0) + max_num: 10 # max number of strings (default to cardinality of source) + - name: "a_string_set_from_file" + type: "string-set" # (default StringArrayField) + source_file: "testdata/file_with_line_delimited_values" # this will be used if not empty + generator_type: "random-string" # used to generate random strings rather than pulling from known + min_num: 0 # minimum number of strings in each value (default 0) + max_num: 10 # max number of strings (default to cardinality of source) + - name: "an_id_set" + type: "uint-set" # (default IDArrayField) + min: 0 + max: 1000 + distribution: "uniform" + min_num: 1 + max_num: 3 + - name: "a_timestamp_field" + type: "timestamp" # (default TimestampField) + min_date: 2006-01-02T15:04:05.001Z # RFC3339Nano + max_date: 2010-01-02T15:04:05.001Z # RFC3339Nano + distribution: "increasing" # only "increasing" is supported right now + min_step_duration: "1s" + max_step_duration: "1h" # generated values will add randomly between 1s and 1h to previous value starting at min_date. + repeat: false # stop at > max_date unless repeat=true... then go back to min. + - name: "a_decimal_field" + type: "float" # use idk_params to choose a scale + min_float: 0.2 + max_float: 1.5 + distribution: "uniform" # only supported value + - name: "gender" + type: string + source_file: "testdata/gender.txt" + distribution: "fixed" + - name: "shifting_key" + type: string + # The shifting distribution is meant to simulate a set of strings + # that evolves over time. We always generate a number in a + # particular range defined by the cardinality, but we always add + # an amount to that number which starts at 0 and increases over + # time. In this way, some numbers will fall out and never be + # generated again, and new numbers will come in. We map each + # number to a string by formatting it and padding with zeros to + # get the desired length. + distribution: "shifting" + step: 10 # step for "shifting" distribution means how often do we shift. Every time we generate a value, we'll add an amount to it, every generations, we'll increase the amount by one. + cardinality: 123123123 + max_len: 32 + s: 1.01 + v: 200 + null_chance: 0 + +# idk_params describe how data from "fields" should be ingested by IDK +idk_params: + primary_key_config: + field: "id" # if this is a single field named "id" then we'll use uint IDs, if it's empty we'll autogen ids, and if it's anything else we'll do string keys... yes this is a bit hacky, needs to be cleaned up. + # fields is keyed by names of fields from top level "fields". It is + # not required that all fields appear here, those that don't will + # use the default ingestion. + fields: + an_id: + - type: "ID" + mutex: false + name: "id" + a_decimal_field: + - type: "Decimal" + scale: 4 + a_timestamp_field: + - type: "RecordTime" + layout: "2006-01-02T15:04:05Z" + epoch: 1970-01-01T00:00:00.0Z + name: "na" + - type: "Timestamp" + name: "a_timestamp_field" + # a_string: + # - type: "StringField" + # keyed: true + # mutex: true + a_string_set: + - type: "StringArray" + time_quantum: "YMD" + ttl: "0s" diff --git a/idk/datagen/testdata/file_with_line_delimited_values b/idk/datagen/testdata/file_with_line_delimited_values new file mode 100644 index 000000000..e44b8092d --- /dev/null +++ b/idk/datagen/testdata/file_with_line_delimited_values @@ -0,0 +1,5 @@ +blah +blee +bloo +bleh +blin \ No newline at end of file diff --git a/idk/datagen/testdata/gender.txt b/idk/datagen/testdata/gender.txt new file mode 100644 index 000000000..416f3f4ee --- /dev/null +++ b/idk/datagen/testdata/gender.txt @@ -0,0 +1,5 @@ +Male,0.48 +Female,0.48 +Transgender,0.01 +Other,0.01 +Unspecified,0.02 diff --git a/idk/datagen/testdata/schema.json b/idk/datagen/testdata/schema.json new file mode 100644 index 000000000..0a844593c --- /dev/null +++ b/idk/datagen/testdata/schema.json @@ -0,0 +1,37 @@ +[ + { + "name": "uuid", + "path": [ + "uuid" + ], + "type": "string" + }, + { + "name": "type", + "path": [ + "type" + ], + "type": "id" + }, + { + "name": "segid", + "path": [ + "slice" + ], + "type": "ids" + }, + { + "name": "timestamp", + "path": [ + "ts" + ], + "type": "recordTime" + }, + { + "name": "lastupdated", + "path": [ + "lastupdated" + ], + "type": "timestamp" + } +] \ No newline at end of file diff --git a/idk/datagen/testdata/tremor_keys.yaml b/idk/datagen/testdata/tremor_keys.yaml new file mode 100644 index 000000000..de94d30a3 --- /dev/null +++ b/idk/datagen/testdata/tremor_keys.yaml @@ -0,0 +1,48 @@ +fields: + - name: "uuid" + type: string + distribution: "shifting" + step: 10 # step for "shifting" distribution means how often do we shift. Every time we generate a value, we'll add an amount to it, every generations, we'll increase the amount by one. + cardinality: 400000000 + max_len: 32 + s: 1.01 + v: 200 + null_chance: 0 + - name: "type" + type: "int" # (default IntField) + min: 0 + max: 3 + distribution: "zipfian" + s: 1.1 + v: 5.1 + - name: "ts" + type: "timestamp" + min_date: 2006-01-02T15:04:05.001Z # RFC3339Nano + max_date: 2022-01-02T15:04:05.001Z # RFC3339Nano + distribution: "increasing" # only "increasing" is supported right now + min_step_duration: "1ms" + max_step_duration: "200ms" + - name: "lastupdated" + type: "timestamp" + min_date: 2006-01-02T15:04:05.001Z # RFC3339Nano + max_date: 2022-01-02T15:04:05.001Z # RFC3339Nano + distribution: "increasing" # only "increasing" is supported right now + min_step_duration: "1ms" + max_step_duration: "200ms" + - name: "slice" + type: "uint-set" # (default IDArrayField) + min: 0 + max: 35000 + distribution: "zipfian" + s: 1.1 + v: 5.1 + min_num: 1 + max_num: 50 + +# idk_params describe how data from "fields" should be ingested by IDK +idk_params: + primary_key_config: + field: "uuid" # if this is a single field named "id" then we'll use uint IDs, if it's empty we'll autogen ids, and if it's anything else we'll do string keys... yes this is a bit hacky, needs to be cleaned up. + # fields is keyed by names of fields from top level "fields". It is + # not required that all fields appear here, those that don't will + # use the default ingestion. diff --git a/idk/datagen/texas_health.go b/idk/datagen/texas_health.go new file mode 100644 index 000000000..a2237ca47 --- /dev/null +++ b/idk/datagen/texas_health.go @@ -0,0 +1,258 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/datagen/gen" +) + +// Ensure TexasHealth implements interface. +var _ Sourcer = (*TexasHealth)(nil) + +// TexasHealth implements Sourcer +type TexasHealth struct{} + +// NewTexasHealth returns a new instance of NewTexasHealth. +func NewTexasHealth(cfg SourceGeneratorConfig) Sourcer { + return &TexasHealth{} +} + +type ciscoNetworkEvent struct { + id string + possibleTypes []string + protocol string +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (t *TexasHealth) Source(cfg SourceConfig) idk.Source { + + startTime := time.Date(2020, time.December, 1, 0, 0, 0, 0, time.UTC) + + src := &TexasHealthSource{ + cur: cfg.startFrom, + recordsGenForBucket: 20, + currBucketSize: 0, + currTimestamp: startTime, + endAt: cfg.endAt, + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.IDField{NameVal: "event_id"}, // 1 + idk.StringField{NameVal: "type"}, // 2 + idk.StringField{NameVal: "protocol"}, // 3 + idk.IntField{NameVal: "probe"}, // 4 + idk.IntField{NameVal: "severity"}, // 5 + idk.StringField{NameVal: "level"}, // 6 + idk.StringField{NameVal: "from_interface"}, // 7 + idk.StringField{NameVal: "from_address"}, // 8 + idk.StringField{NameVal: "from_port"}, // 9 + idk.StringField{NameVal: "to_interface"}, // 10 + idk.StringField{NameVal: "to_address"}, // 11 + idk.StringField{NameVal: "to_port"}, // 12 + idk.IntField{NameVal: "duration_time"}, // 13 + idk.IntField{NameVal: "bytes"}, // 14 + idk.StringField{NameVal: "hostname"}, // 15 + idk.TimestampField{NameVal: "timestamp", Unit: "s"}, // 16 + idk.StringField{NameVal: "timestamp_str"}, // 17 + }, + } + + src.g = gen.New(gen.OptGenSeed(cfg.seed)) + src.possibleEvents = []ciscoNetworkEvent{ + { + id: "302013", + possibleTypes: []string{"Built inbound", "Built outbound"}, + protocol: "TCP", + }, + { + id: "302014", + possibleTypes: []string{"Teardown"}, + protocol: "TCP", + }, + { + id: "302015", + possibleTypes: []string{"Built inbound", "Built outbound"}, + protocol: "UDP", + }, { + id: "302016", + possibleTypes: []string{"Teardown"}, + protocol: "UDP", + }, { + id: "302020", + possibleTypes: []string{"Built inbound", "Built outbound"}, + protocol: "ICMP", + }, { + id: "302021", + possibleTypes: []string{"Teardown"}, + protocol: "ICMP", + }, + } + src.possibleLogLevels = []string{"Debug", "Informational", "Notification", "Warning", "Error", "Critical"} + + // generate hostnames + var hostnames []string + prefixes := []string{"dbprdfw", "dbrwanasa", "dbdgstsw", "dbrrassa", + "phdasa", "dbrprdfw", "hfwasa", "phamasa", "thdrasa", "thalasa", + } + for _, prefix := range prefixes { + for i := 1; i <= 10; i++ { + hostnames = append(hostnames, fmt.Sprintf("%s%02d", prefix, i)) + } + } + src.possibleHostnames = hostnames + + // generate ip addresses + var ipAddrs []string + for i := 1; i <= 100; i++ { + ipAddrs = append(ipAddrs, fmt.Sprintf("10.164.124.%d", i)) + } + src.possibleIPAddrs = ipAddrs + + // ports + src.possiblePorts = []string{"443", "80", "22", "23", "40", "8080", + "53", "88", "115", "123", "143", "20", "21", "25", "101", + } + + // interfaces + src.possibleFromInterfaces = []string{"faddr", + "Security_Cameras_250", "LAB", "PROD", + "INSIDE", "provider", "OUTSIDE", "management", + "Inside-DataCenter-DBR", "ATT_SBC_Outside", "Outside-WAN-DBR"} + src.possibleToInterfaces = []string{"laddr", + "OUTSIDE", "Inside-DataCenter", "DBR", "ATT_SBC_Inside", "Outside-WAN-DBR"} + + // rand.Zipf for generating bytes and duration + src.randBytes = rand.NewZipf(src.g.R, 1.1, 10, 199) + src.randDuration = rand.NewZipf(src.g.R, 1.1, 10, 9999) + + // rest + src.record = make([]interface{}, len(src.schema)) + src.record[0] = uint64(0) + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (t *TexasHealth) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (t *TexasHealth) DefaultEndAt() uint64 { + return 20000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (t *TexasHealth) Info() string { + return "Generates sample data for the Texas Health POC." +} + +// Ensure TexasHealthSource implements interface. +var _ idk.Source = (*TexasHealthSource)(nil) + +// TexasHealthSource is an instance of a source generated +// by the Sourcer implementation TexasHleath. +type TexasHealthSource struct { + g *gen.Gen + + cur uint64 + endAt uint64 + + schema []idk.Field + record record + + recordsGenForBucket int + currBucketSize int + currTimestamp time.Time + + randBytes *rand.Zipf + randDuration *rand.Zipf + + possibleEvents []ciscoNetworkEvent + possibleLogLevels []string + possibleHostnames []string + possibleIPAddrs []string + possiblePorts []string + possibleFromInterfaces []string + possibleToInterfaces []string +} + +func (s *TexasHealthSource) genTimestamp() time.Time { + return s.currTimestamp +} + +// advanceTick is a helper method to do some housekeeping +// after a record is generated. For one, it increments cur +// which keeps track of the number of records generated. +// Additionally, it advances the 'time-slot buckets' for +// lack of better naming. Each record generated belongs to +// a given time bucket and within that time bucket, all the +// records bear the same timestamp value (at second resolution). +// The bucket sizes are randomized and generally range between 1 +// to 200. Currently, the bucket size value is generated randomly +// from a uniform distribution but a more realistic datagen should +// weight this value. +func (s *TexasHealthSource) advanceTick() { + s.cur++ + s.recordsGenForBucket++ + + if s.recordsGenForBucket >= s.currBucketSize { + // reset bucket size to a random value between 1 and 200 + s.currBucketSize = s.g.R.Intn(200) + 1 + s.recordsGenForBucket = 0 + oneSecond := time.Duration(1e9) + s.currTimestamp = s.currTimestamp.Add(oneSecond) + } +} + +// Record implements idk.Source. +func (s *TexasHealthSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + + selectEventIndex := s.g.R.Intn(len(s.possibleEvents)) + event := s.possibleEvents[selectEventIndex] + logLevelIndex := s.g.R.Intn(len(s.possibleLogLevels)) + timestamp := s.genTimestamp() + + s.record[0] = s.cur // id + s.record[1] = event.id // event_id + s.record[2] = s.g.StringFromList(event.possibleTypes) // type + s.record[3] = event.protocol // protocol + s.record[4] = 3457177187 + s.cur // probe + s.record[5] = logLevelIndex + 1 // severity + s.record[6] = s.possibleLogLevels[logLevelIndex] // level + s.record[7] = s.g.StringFromList(s.possibleFromInterfaces) // from_interface + s.record[8] = s.g.StringFromListWeighted(s.possibleIPAddrs) // from_address + s.record[9] = s.g.StringFromListWeighted(s.possiblePorts) // from_port + s.record[10] = s.g.StringFromList(s.possibleToInterfaces) // to_interface + s.record[11] = s.g.StringFromListWeighted(s.possibleIPAddrs) // to_address + s.record[12] = s.g.StringFromListWeighted(s.possiblePorts) // to_port + s.record[13] = s.randDuration.Uint64() + 1 // duration_time + s.record[14] = s.randBytes.Uint64() + 1 // bytes + s.record[15] = s.g.StringFromList(s.possibleHostnames) // hostname + s.record[16] = timestamp.Unix() // timestamp + s.record[17] = timestamp.String() // timestamp_str + + s.advanceTick() + + return s.record, nil +} + +// Schema implements idk.Source. +func (s *TexasHealthSource) Schema() []idk.Field { + return s.schema +} +func (s *TexasHealthSource) Close() error { + return nil +} diff --git a/idk/datagen/timeseries.go b/idk/datagen/timeseries.go new file mode 100644 index 000000000..a4da34c67 --- /dev/null +++ b/idk/datagen/timeseries.go @@ -0,0 +1,188 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Timeseries implements interface. +var _ Sourcer = (*Timeseries)(nil) + +// Timeseries implements Sourcer. +type Timeseries struct { + schema []idk.Field +} + +// NewTimeseries returns a new instance of Timeseries. +func NewTimeseries(cfg SourceGeneratorConfig) Sourcer { + return &Timeseries{ + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "data_type"}, // 1 + idk.IntField{NameVal: "equip_id"}, // 2 + idk.StringField{NameVal: "group"}, // 3 + idk.IntField{NameVal: "int_value"}, // 4 + idk.StringField{NameVal: "string_value"}, // 5 + idk.IntField{NameVal: "timestamp"}, // 6 + idk.StringField{NameVal: "type"}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (t *Timeseries) Source(cfg SourceConfig) idk.Source { + src := &TimeseriesSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: t.schema, + } + + src.typeZipf = rand.NewZipf(src.rand, 1.03, 4, uint64(len(tsTypes))-1) + src.tsZipf = rand.NewZipf(src.rand, 3, 1.3, uint64(len(tsStrings))-1) + + src.record = make([]interface{}, len(src.schema)) + src.record[6] = int(1420070400 + cfg.startFrom) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (t *Timeseries) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (t *Timeseries) DefaultEndAt() uint64 { + return 100000000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (t *Timeseries) Info() string { + return "Generates timeseries device power state data (device, alert, status) - references data in sites, manufacturer, and equipment." +} + +// Ensure TimeseriesSource implements interface. +var _ idk.Source = (*TimeseriesSource)(nil) + +type TimeseriesSource struct { + Log logger.Logger + + rand *rand.Rand + typeZipf *rand.Zipf + tsZipf *rand.Zipf + + schema []idk.Field + + cur, endAt uint64 + + record record +} + +func NewTimeseriesSource(start, end uint64) *TimeseriesSource { + src := &TimeseriesSource{ + cur: start, + endAt: end, + + rand: rand.New(rand.NewSource(22)), + + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "data_type"}, // 1 + idk.IntField{NameVal: "equip_id"}, // 2 + idk.StringField{NameVal: "group"}, // 3 + idk.IntField{NameVal: "int_value"}, // 4 + idk.StringField{NameVal: "string_value"}, // 5 + idk.IntField{NameVal: "timestamp"}, // 6 + idk.StringField{NameVal: "type"}, // 7 + }, + } + + src.typeZipf = rand.NewZipf(src.rand, 1.03, 4, uint64(len(tsTypes))-1) + src.tsZipf = rand.NewZipf(src.rand, 3, 1.3, uint64(len(tsStrings))-1) + + src.record = make([]interface{}, len(src.schema)) + src.record[6] = int(1420070400 + start) + + return src +} + +func (s *TimeseriesSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + + s.record[0] = s.cur + + // type + s.record[7] = tsTypes[s.typeZipf.Uint64()] + groups, ok := groupsPerType[s.record[7].(string)] + if !ok { + s.Log.Printf("no %v in groups", s.record[7]) + } + + // group + if len(groups) != 0 { + s.record[3] = groups[s.rand.Intn(len(groups))] + } else { + s.record[3] = nil + } + + // equip_id + s.record[2] = int64(s.rand.Intn(5000000)) + + // data type and string or int value + if s.rand.Intn(1000) > 995 { + s.record[1] = "string" + s.record[4] = nil + s.record[5] = tsStrings[s.tsZipf.Uint64()] + } else { + s.record[1] = "int" + s.record[4] = s.rand.Intn(100000) + s.record[5] = nil + } + + // timestamp + s.record[6] = s.record[6].(int) + s.rand.Intn(3) + + s.cur++ + + return s.record, nil +} + +func (s *TimeseriesSource) Schema() []idk.Field { + return s.schema +} + +func (s *TimeseriesSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*TimeseriesSource)(nil) + +var tsStrings = []string{"on", "off", "alarm", "safe"} + +var groupsPerType = map[string][]string{ + "Voltage": {"calculated", "single", "moving"}, + "VoltageRMS": {"calculated", "single", "moving"}, + "Amperage": {"calculated", "single", "effective"}, + "Resistance": {"fixed", "variable"}, + "Frequency": {"sampled", "digital", "analog"}, + "Message": {"event", "alert", "alarm"}, +} + +func (s *TimeseriesSource) Close() error { + return nil +} diff --git a/idk/datagen/titles.data.go b/idk/datagen/titles.data.go new file mode 100644 index 000000000..e555f50ae --- /dev/null +++ b/idk/datagen/titles.data.go @@ -0,0 +1,5005 @@ +package datagen + +var titles = []string{ + "title", + "owner", + "manager", + "president", + "director", + "ceo", + "teacher", + "project manager", + "partner", + "principal", + "intern", + "consultant", + "vice president", + "founder", + "general manager", + "student", + "executive", + "administrator", + "sales manager", + "administrative assistant", + "account manager", + "sales associate", + "software engineer", + "retired", + "managing director", + "assistant manager", + "sales", + "chairman", + "coo", + "board member", + "office manager", + "engineer", + "associate", + "supervisor", + "accountant", + "sales representative", + "account executive", + "operations manager", + "chief executive", + "customer service representative", + "gerente", + "executive director", + "cashier", + "realtor", + "professor", + "research assistant", + "executive officer", + "marketing manager", + "business development manager", + "software developer", + "senior consultant", + "sales executive", + "chief executive officer", + "executive assistant", + "attorney", + "registered nurse", + "receptionist", + "store manager", + "member", + "project engineer", + "secretary", + "graphic designer", + "business analyst", + "internship", + "branch manager", + "server", + "analyst", + "customer service", + "senior software engineer", + "principle", + "lecturer", + "designer", + "product manager", + "controller", + "marketing", + "team leader", + "assistant", + "trainee", + "docente", + "manager or supervisor", + "assistant professor", + "cfo", + "marketing director", + "business owner", + "senior manager", + "instructor", + "sales assistant", + "technician", + "teaching assistant", + "project coordinator", + "program manager", + "volunteer", + "auxiliar administrativo", + "sales consultant", + "business manager", + "rn", + "financial analyst", + "religious leader", + "senior project manager", + "production manager", + "co-founder", + "cto", + "директор", + "researcher", + "web developer", + "managing partner", + "bartender", + "photographer", + "office assistant", + "diretor", + "summer intern", + "senior associate", + "self employed", + "real estate agent", + "finance manager", + "regional sales manager", + "chief financial officer", + "waitress", + "key account manager", + "architect", + "editor", + "marketing intern", + "propietario", + "director of operations", + "english teacher", + "financial advisor", + "driver", + "recruiter", + "human resources manager", + "agent", + "professora", + "paralegal", + "chief operating officer", + "site manager", + "barista", + "associate professor", + "mechanical engineer", + "business development", + "team lead", + "legal assistant", + "design engineer", + "research associate", + "marketing executive", + "developer", + "senior accountant", + "senior engineer", + "administrador", + "marketing assistant", + "nurse", + "vendedor", + "marketing coordinator", + "hr manager", + "system engineer", + "programmer", + "estagiário", + "artist", + "chef", + "it manager", + "administrativo", + "buyer", + "systems engineer", + "senior vice president", + "staff accountant", + "area manager", + "system administrator", + "auditor", + "full", + "electrical engineer", + "network engineer", + "tutor", + "substitute teacher", + "md", + "service manager", + "charge", + "clerk", + "creative director", + "assistente administrativo", + "stagiaire", + "sales engineer", + "regional manager", + "doctor", + "senior account manager", + "lawyer", + "producer", + "management trainee", + "property manager", + "phd student", + "office administrator", + "area sales manager", + "treasurer", + "pastor", + "physician", + "coordinator", + "geschäftsführer", + "art director", + "sales director", + "electrician", + "information technology manager", + "territory manager", + "purchasing manager", + "district manager", + "educator", + "senior account executive", + "presidente", + "human resources", + "менеджер", + "secretaria", + "proprietário", + "cook", + "associate director", + "none", + "customer service manager", + "pharmacist", + "analista", + "civil engineer", + "bookkeeper", + "officer", + "writer", + "process engineer", + "senior management", + "vendedora", + "security officer", + "gerente comercial", + "hostess", + "team member", + "directeur", + "co-owner", + "trainer", + "staff", + "consultor", + "accounting manager", + "operator", + "employee", + "general/technical", + "independent consultant", + "director of sales", + "superintendent", + "graduate student", + "adjunct professor", + "recepcionista", + "proprietor", + "gerente general", + "senior analyst", + "it consultant", + "finance executive", + "profesor", + "admin", + "graduate research assistant", + "relationship manager", + "contractor", + "personal assistant", + "coach", + "network administrator", + "plant manager", + "insurance agent", + "counselor", + "销售经理", + "production assistant", + "data analyst", + "merchandiser", + "medical assistant", + "assistant director", + "assistant store manager", + "journalist", + "lifeguard", + "social worker", + "freelancer", + "crew member", + "boss", + "specialist", + "financial controller", + "advisor", + "case manager", + "program coordinator", + "technical support", + "estagiária", + "broker", + "engineering manager", + "director of marketing", + "technical manager", + "business development executive", + "law clerk", + "it director", + "personal trainer", + "program director", + "business consultant", + "estudante", + "management", + "production supervisor", + "student assistant", + "hr", + "empleado", + "teller", + "recruitment consultant", + "associate consultant", + "co founder", + "advogado", + "interior designer", + "assistant vice president", + "graduate assistant", + "executive vice president", + "pharmacy technician", + "impiegato", + "co owner", + "police officer", + "research intern", + "reporter", + "sales coordinator", + "accounting", + "vp", + "web designer", + "medical doctor", + "waiter", + "systems analyst", + "research analyst", + "marketing specialist", + "entrepreneur", + "sales rep", + "mechanic", + "deputy manager", + "quality engineer", + "truck driver", + "quality manager", + "comercial", + "unemployed", + "technical consultant", + "operations supervisor", + "it specialist", + "operations", + "senior business analyst", + "human resources executive", + "model", + "legal intern", + "captain", + "special education teacher", + "salesman", + "principal consultant", + "account director", + "graduate teaching assistant", + "administrativa", + "owner/operator", + "abogado", + "freelance writer", + "brand manager", + "actor", + "programmer analyst", + "site engineer", + "senior financial analyst", + "gérant", + "psychologist", + "senior software developer", + "system analyst", + "shift supervisor", + "personal banker", + "contributor", + "inside sales", + "director of business development", + "technical lead", + "loan officer", + "technical support engineer", + "community manager", + "research scientist", + "faculty", + "ceo & founder", + "contador", + "tecnico", + "systems administrator", + "assistant general manager", + "proprietario", + "legal secretary", + "department manager", + "test engineer", + "gm", + "business", + "warehouse manager", + "service engineer", + "technical director", + "manufacturing engineer", + "resident assistant", + "asistente administrativo", + "accounting assistant", + "machine operator", + "shift manager", + "socio", + "profesora", + "project assistant", + "dentist", + "california", + "human resources benefits director", + "scientist", + "administration", + "associate attorney", + "mortgage broker", + "finance", + "estimator", + "eigenaar", + "titolare", + "field engineer", + "impiegata", + "project leader", + "hr executive", + "analista de sistemas", + "ventas", + "information technology", + "freelance", + "administradora", + "construction manager", + "national sales manager", + "bank teller", + "inside sales representative", + "marketing consultant", + "engineering intern", + "staff nurse", + "caregiver", + "product specialist", + "internal auditor", + "brand ambassador", + "research fellow", + "carpenter", + "finance director", + "assistant project manager", + "translator", + "event coordinator", + "laborer", + "comptable", + "team manager", + "adjunct faculty", + "service technician", + "logistics manager", + "district sales manager", + "physical therapist", + "asst manager", + "commercial manager", + "director general", + "propriétaire", + "information technology director", + "musician", + "advogada", + "purchasing agent", + "chief technology officer", + "customer service associate", + "maintenance", + "executive administrative assistant", + "york", + "sales and marketing manager", + "security", + "freelance graphic designer", + "hr assistant", + "médico", + "foreman", + "admin assistant", + "customer service specialist", + "laboratory technician", + "restaurant manager", + "staff member", + "librarian", + "medico", + "генеральный директор", + "flight attendant", + "national account manager", + "senior designer", + "técnico", + "adjunct instructor", + "production engineer", + "human resources assistant", + "undergraduate research assistant", + "management consultant", + "credit analyst", + "commercial", + "school staff", + "delivery driver", + "sales advisor", + "assistant principal", + "representante comercial", + "author", + "executive chef", + "pilot", + "project director", + "инженер", + "chief engineer", + "dispatcher", + "technical recruiter", + "maintenance manager", + "бухгалтер", + "客户经理", + "nanny", + "quality assurance", + "event manager", + "purchasing", + "senior auditor", + "webmaster", + "project lead", + "chef de projet", + "director of human resources", + "estudiante", + "social media manager", + "territory sales manager", + "accounts payable", + "业务经理", + "real estate broker", + "customer service rep", + "application engineer", + "sous chef", + "sales specialist", + "stylist", + "senior developer", + "assistant accountant", + "sales agent", + "executive secretary", + "advisory board member", + "financial consultant", + "senior systems engineer", + "field service engineer", + "个体经营", + "phd candidate", + "java developer", + "postdoctoral fellow", + "accounting clerk", + "planner", + "operations director", + "maintenance supervisor", + "independent contractor", + "attorney at law", + "inspector", + "chief information officer", + "human resources generalist", + "end developer", + "sr software engineer", + "asistente", + "president and chief executive officer", + "homemaker", + "fellow", + "camp counselor", + "it analyst", + "user interface", + "gerente administrativo", + "banker", + "development manager", + "student worker", + "doctor of medicine", + "account representative", + "front desk receptionist", + "teacher assistant", + "directora", + "underwriter", + "summer associate", + "qa engineer", + "emergency", + "facilities manager", + "quality assurance manager", + "line cook", + "principal engineer", + "account coordinator", + "host", + "application developer", + "empresario", + "program assistant", + "руководитель", + "operation manager", + "maintenance technician", + "database administrator", + "logistics coordinator", + "项目经理", + "copywriter", + "hr generalist", + "regional director", + "representative", + "student intern", + "production coordinator", + "worker", + "training manager", + "independent distributor", + "customer service supervisor", + "senior executive", + "sergeant", + "marketing associate", + "independent business owner", + "economist", + "director of finance", + "hr business partner", + "portfolio manager", + "it project manager", + "owner-operator", + "technical specialist", + "firefighter", + "senior project engineer", + "summer internship", + "accounts assistant", + "computer operator", + "postdoctoral researcher", + "welder", + "sales supervisor", + "founder & ceo", + "jefe", + "audit manager", + "senior lecturer", + "freelance photographer", + "hr specialist", + "solicitor", + "customer service agent", + "chemist", + "retraité", + "inhaber", + "promoter", + "deputy director", + "vice president of operations", + "comerciante", + "asesor", + "computer technician", + "front desk", + "product engineer", + "corporate secretary", + "medical representative", + "public relations intern", + "communications manager", + "occupational therapist", + "skills", + "trustee", + "quality control", + "senior director", + "human resources director", + "travel consultant", + "senior product manager", + "hair stylist", + "science teacher", + "call", + "coordenador de", + "hr consultant", + "it technician", + "data entry", + "front desk agent", + "student ambassador", + "abogada", + "assistant controller", + "自由职业", + "maintenance engineer", + "associate software engineer", + "administrative officer", + "arquitecto", + "coordenador", + "human resources coordinator", + "gerant", + "senior sales executive", + "dental assistant", + "supply chain manager", + "administrative coordinator", + "apprentice", + "senior buyer", + "security guard", + "massage therapist", + "accounts manager", + "avvocato", + "blogger", + "service advisor", + "housekeeper", + "technical writer", + "nurse practitioner", + "general counsel", + "lead engineer", + "motorista", + "mentor", + "practice manager", + "front office manager", + "engenheiro", + "certified nursing assistant", + "therapist", + "atendente", + "project officer", + "assistante de direction", + "software test engineer", + "chef d'entreprise", + "senior graphic designer", + "managing editor", + "comprador", + "associate manager", + "publisher", + "empleada", + "accounting intern", + "warehouse worker", + "stage", + "programador", + "director of development", + "human resource manager", + "trader", + "human resources specialist", + "insegnante", + "psicóloga", + "assistant engineer", + "sócio", + "dueño", + "commercial director", + "operations executive", + "housewife", + "lean", + "vice president of sales", + "operations coordinator", + "technical support specialist", + "start", + "副总经理", + "advocate", + "structural engineer", + "director of sales and marketing", + "asesor comercial", + "president & ceo", + "financial manager", + "financial accountant", + "freelance designer", + "logistics", + "research engineer", + "shop assistant", + "senior scientist", + "sócio proprietário", + "quantity surveyor", + "director comercial", + "information technology specialist", + "assistant branch manager", + "gerente de ventas", + "country manager", + "export manager", + "owner operator", + "gerente de vendas", + "financial representative", + "hr officer", + "senior sales manager", + "consultora", + "founder and ceo", + "operaio", + "head coach", + "secretária", + "staff engineer", + "senior system engineer", + "менеджер по продажам", + "credit manager", + "medical director", + "production", + "painter", + "business development director", + "encargado", + "diretora", + "président", + "independiente", + "empresas", + "salesperson", + "warehouse supervisor", + "procurement manager", + "administratief medewerker", + "investigator", + "chief marketing officer", + "technicien", + "public relations", + "quality assurance engineer", + "tax manager", + "tech", + "senior advisor", + "software development engineer", + "executive producer", + "solutions architect", + "visual merchandiser", + "audit senior", + "auxiliar", + "kindergarten teacher", + "project administrator", + "fisioterapeuta", + "customer service officer", + "quality analyst", + "autonomo", + "legal counsel", + "field service technician", + "surveyor", + "finance intern", + "proprietário(a)", + "facilities/plant director", + "hr coordinator", + "paraprofessional", + "office coordinator", + "licensed realtor", + "business developer", + "staff writer", + "главный бухгалтер", + "sales support", + "directeur général", + "assistant teacher", + "professeur", + "engineering technician", + "broker associate", + "tour guide", + "president/ceo", + "board of directors", + "assistante commerciale", + "assistente", + "ejecutivo de ventas", + "lab technician", + "contadora", + "positions", + "support engineer", + "site supervisor", + "retail sales associate", + "chief accountant", + "account supervisor", + "vendas", + "operations analyst", + "administrative manager", + "it support", + "ingeniero", + "quality assurance analyst", + "data scientist", + "work experience", + "stagiair", + "technical assistant", + "physician assistant", + "sales administrator", + "enfermera", + "nutricionista", + "enseignant", + "self-employed", + "board of trustees member", + "math teacher", + "junior engineer", + "sales and marketing", + "engineering", + "consultor de vendas", + "management accountant", + "training coordinator", + "paramedic", + "student teacher", + "cleaner", + "self", + "учитель", + "service delivery manager", + "chairman of the board", + "distributor", + "sr project manager", + "retail manager", + "teaching", + "psicologa", + "technical analyst", + "mechanical design engineer", + "safety officer", + "enfermeira", + "accounts payable specialist", + "director of engineering", + "coordinador", + "finance officer", + "deputy general manager", + "service coordinator", + "customer service advisor", + "it engineer", + "associate broker", + "junior consultant", + "managing consultant", + "communications specialist", + "physiotherapist", + "praktikant", + "farmer", + "library assistant", + "music teacher", + "facility manager", + "various", + "cajera", + "laboratory assistant", + "vendeuse", + "director of information technology", + "compliance officer", + "contracts manager", + "founding partner", + "digital marketing manager", + "undergraduate researcher", + "operations specialist", + "duty manager", + "custodian", + "client services manager", + "pasante", + "outside sales representative", + "sr manager", + "machinist", + "private tutor", + "sales officer", + "workforce", + "imprenditore", + "graphic artist", + "field technician", + "graphic design intern", + "unternehmensinhaber", + "outros", + "maestra", + "preschool teacher", + "travel agent", + "management assistant", + "senior program manager", + "senior", + "senior recruiter", + "ambassador", + "managing member", + "solution architect", + "editor in chief", + "software architect", + "diretor comercial", + "audit associate", + "marketing analyst", + "geologist", + "senior network engineer", + "engenheiro civil", + "project architect", + "contract manager", + "human resources intern", + "president chief executive officer", + "auxiliar de escritório", + "vice president operations", + "ambiental", + "cio", + "service", + "crew", + "design intern", + "accounts", + "company director", + "industrial engineer", + "counsel", + "assistant editor", + "associate producer", + "financial planner", + "analista de recursos humanos", + "hr administrator", + "specialized medical practice", + "concierge", + "customer service assistant", + "secrétaire", + "shift leader", + "projektleiter", + "outside sales", + "sales account manager", + "mortgage loan officer", + "art teacher", + "administrative secretary", + "it administrator", + "analista de suporte", + "audit assistant", + "öğretmen", + "chef de partie", + "school counselor", + "dependienta", + "san francisco", + "editorial intern", + "diseñador gráfico", + "mathematics teacher", + "parts manager", + "video editor", + "category manager", + "r&d engineer", + "group leader", + "senior design engineer", + "pair", + "auxiliar contable", + "assistant coach", + "regional vice president", + "enseignante", + "freelance translator", + "operador", + "operations assistant", + "bar manager", + "senior administrative assistant", + "fresher", + "junior accountant", + "program analyst", + "speech language pathologist", + "chair", + "pharmacy intern", + "office clerk", + "vice-president", + "general sales manager", + "php developer", + "vice president sales", + "payroll specialist", + "development engineer", + "contract administrator", + "senior pastor", + "lab assistant", + "baker", + "marketing officer", + "architetto", + "technical project manager", + "communications intern", + "accounts executive", + "regional account manager", + "assistente comercial", + "head chef", + "accounts receivable", + "analyst programmer", + "product marketing manager", + "supervisora", + "business development consultant", + "commerciale", + "sales & marketing manager", + "assistant sales manager", + "registrar", + "geometra", + "owner/manager", + "lieutenant", + "unit manager", + "clinical research associate", + "senior sales representative", + "assistant property manager", + "hr director", + "data entry clerk", + "shop manager", + "assistente financeiro", + "amministratore", + "analista financeiro", + "president and ceo", + "accounts officer", + "administration manager", + "construction", + "business systems analyst", + "software engineering intern", + "accounting supervisor", + "pediatrician", + "libero professionista", + "insurance seller", + "executive board member", + "sole proprietor", + "training specialist", + "editorial assistant", + "york city", + "english language teacher", + "purchaser", + "recursos humanos", + "independent beauty consultant", + "pres", + "sandwich artist", + "aposentado", + "consulente", + "accounting specialist", + "customer service executive", + "senior marketing manager", + "преподаватель", + "process associate", + "representante", + "client manager", + "android developer", + "accounts payable clerk", + "support worker", + "responsable", + "credit controller", + "interpreter", + "plumber", + "gerente de operaciones", + "procurement specialist", + "sap consultant", + "contributing writer", + "programme manager", + "cabin crew", + "socio gerente", + "correctional officer", + "assembler", + "fashion designer", + "pensionato", + "部门经理", + "practicante", + "sr engineer", + "facilitator", + "principal software engineer", + "assistant buyer", + "dancer", + "customer support", + "conductor", + "senior partner", + "chief operations officer", + "manger", + "chief", + "contract specialist", + "head of marketing", + "business development representative", + "director of communications", + "esl teacher", + "юрист", + "material handler", + "leader", + "специалист", + "trainee solicitor", + "regional sales director", + "retail store manager", + "administrative", + "phlebotomist", + "pharmacy manager", + "sr consultant", + "hr intern", + "analista programador", + "billing specialist", + "summer analyst", + "housekeeping", + "verkoopmedewerker", + "small business owner", + "head of operations", + "marketing representative", + "quality assurance specialist", + "finance assistant", + "design manager", + "qa analyst", + "asistente contable", + "audit intern", + "tax consultant", + "aux administrativo", + "content writer", + "production operator", + "associate editor", + "medical technologist", + "angestellter", + "test analyst", + "education", + "division manager", + "software consultant", + "periodista", + "company owner", + "technical support representative", + "production planner", + "senior researcher", + "właściciel", + "postdoctoral research fellow", + "human resources business partner", + "warehouse associate", + "research", + "safety manager", + "software tester", + "payroll administrator", + "payroll manager", + "qa manager", + "stagista", + "recruitment specialist", + "sales & marketing", + "high school teacher", + "administration assistant", + "claims adjuster", + "responsable commercial", + "home mom", + "veterinarian", + "automation engineer", + "säljare", + "chauffeur", + "net developer", + "package handler", + "freelance journalist", + "committee member", + "medical receptionist", + "shareholder", + "technical support analyst", + "operario", + "vendeur", + "licensed practical nurse", + "member of the board", + "bus driver", + "retail", + "销售代表", + "analista de marketing", + "communications coordinator", + "gerente geral", + "customer care representative", + "leasing consultant", + "auxiliar administrativa", + "gerente de projetos", + "applications engineer", + "communications officer", + "karyawan", + "soldier", + "becario", + "empresaria", + "caixa", + "member board of directors", + "administrateur", + "project management", + "warehouse", + "senior programmer", + "senior systems analyst", + "actress", + "senior editor", + "expert", + "technology analyst", + "professional engineer", + "volunteer coordinator", + "lead developer", + "sales intern", + "titular", + "investment analyst", + "call center representative", + "retail assistant", + "document controller", + "business development officer", + "product designer", + "company secretary", + "clinical research coordinator", + "barman", + "docent", + "autônomo", + "head of department", + "senior technician", + "materials manager", + "electronic technician", + "prof", + "resident physician", + "campaign manager", + "vice president of marketing", + "agente", + "proprietária", + "logistics specialist", + "optometrist", + "research technician", + "senior web developer", + "owner human resources executives", + "operations officer", + "development director", + "graduate", + "summer camp counselor", + "yoga instructor", + "financial services representative", + "mechanical designer", + "summer trainee", + "vice president finance", + "dental hygienist", + "account assistant", + "forklift operator", + "risk manager", + "postdoc", + "dirigente", + "social media intern", + "certified public accountant", + "senior mechanical engineer", + "psychotherapist", + "strategic account manager", + "builder", + "it recruiter", + "real estate", + "empresário", + "licensed massage therapist", + "compras", + "installer", + "zaakvoerder", + "representante de ventas", + "associate engineer", + "argentina", + "executive manager", + "of counsel", + "tax preparer", + "tech lead", + "account specialist", + "hr advisor", + "encargada", + "trainee engineer", + "market manager", + "technical architect", + "spanish teacher", + "design consultant", + "environmental engineer", + "avocat", + "content manager", + "vice president marketing", + "ejecutivo de cuentas", + "active member", + "directeur commercial", + "ingénieur", + "product development manager", + "business development specialist", + "public relations manager", + "human resources administrator", + "manager operations", + "kitchen manager", + "administrative specialist", + "digital marketing specialist", + "projectleider", + "jubilado", + "recruiting manager", + "medical officer", + "коммерческий директор", + "investor", + "tax associate", + "hr recruiter", + "floor manager", + "asset manager", + "genaral manager", + "project analyst", + "stajyer", + "guest service agent", + "agente di commercio", + "chief of staff", + "elementary school teacher", + "electrical technician", + "lead consultant", + "account officer", + "technology consultant", + "account", + "marketing communications manager", + "lead software engineer", + "production intern", + "courier", + "business unit manager", + "talent acquisition specialist", + "event planner", + "telemarketer", + "certified pharmacy technician", + "semi retired", + "directrice", + "accounts receivable specialist", + "president/owner", + "assistant superintendent", + "customer support engineer", + "graduate trainee", + "senior architect", + "tester", + "program specialist", + "manufacturing manager", + "projektmanager", + "executive recruiter", + "client relationship manager", + "loan processor", + "stocker", + "head of sales", + "cad designer", + "technical engineer", + "teacher's assistant", + "fleet manager", + "business development intern", + "architectural designer", + "planning engineer", + "derivatives", + "client services", + "toronto", + "staff pharmacist", + "communications director", + "tax intern", + "senior sales consultant", + "onsite", + "internee", + "field supervisor", + "lead teacher", + "head cashier", + "projetista", + "makeup artist", + "administracion", + "mgr", + "senior electrical engineer", + "expertise", + "detective", + "senior art director", + "employed", + "investment advisor", + "customer assistant", + "elementary teacher", + "english instructor", + "sales clerk", + "member of technical staff", + "animator", + "home health aide", + "senior officer", + "it intern", + "delivery manager", + "it support specialist", + "ingegnere", + "civil servant", + "procurement officer", + "daglig leder", + "journaliste", + "program officer", + "tax accountant", + "business partner", + "product development engineer", + "real estate consultant", + "head", + "vice president business development", + "ninguno", + "sales professional", + "legal advisor", + "network manager", + "director business development", + "assistant account executive", + "project accountant", + "wissenschaftlicher mitarbeiter", + "business development associate", + "assistante", + "computer programmer", + "investment banking analyst", + "project consultant", + "master", + "gestor", + "security manager", + "ingenieur", + "junior designer", + "fitness instructor", + "quality control manager", + "retail sales consultant", + "student researcher", + "camarera", + "nurse manager", + "radiologic technologist", + "resident advisor", + "staff rn", + "заместитель директора", + "customer care", + "sr executive", + "compliance manager", + "cosmetologist", + "research manager", + "greater new york city area | professional profile", + "ingeniero de proyectos", + "director-human resources", + "owner / operator", + "instructional designer", + "chargée de communication", + "ios developer", + "janitor", + "network technician", + "propietaria", + "asistente administrativa", + "senior loan officer", + "houston", + "vigilante", + "secretaresse", + "staff assistant", + "дизайнер", + "technical advisor", + "recruitment manager", + "gerente de recursos humanos", + "retail sales", + "yönetici", + "technical officer", + "medical secretary", + "laboratory manager", + "night auditor", + "owner/photographer", + "article assistant", + "hardware engineer", + "senior process engineer", + "eletricista", + "clinical psychologist", + "general laborer", + "key holder", + "videographer", + "assistent", + "business controller", + "product owner", + "tirocinante", + "social media specialist", + "estagiario", + "owner/president", + "senior technical consultant", + "au pair", + "singer", + "minister", + "founder and president", + "senior research associate", + "corporate account manager", + "начальник отдела", + "eng", + "communications", + "supervisor de vendas", + "analista de rh", + "events manager", + "senior specialist", + "deputy sheriff", + "field manager", + "clinical pharmacist", + "investment manager", + "professional", + "engagement manager", + "landscaper", + "events coordinator", + "staff attorney", + "purchasing assistant", + "banquet server", + "medical student", + "hairdresser", + "it support technician", + "colombia", + "school secretary", + "certified personal trainer", + "etudiant", + "counsellor", + "seller", + "architecte", + "officer (not vice president)", + "architectural intern", + "business office manager", + "school psychologist", + "electronics technician", + "corporate controller", + "project trainee", + "director of nursing", + "human resources consultant", + "project specialist", + "computer engineer", + "chartered accountant", + "bar staff", + "dishwasher", + "software development manager", + "information technology consultant", + "full stack developer", + "illustrator", + "nursing assistant", + "区域经理", + "monitor", + "commissioner", + "programmer/analyst", + "coordenadora", + "heavy equipment operator", + "доцент", + "estagiaria", + "health safety", + "frontend developer", + "guru", + "classroom teacher", + "vp of sales", + "ceo and founder", + "customer success manager", + "graduate engineer", + "stay at home mom", + "estágio", + "academic advisor", + "assistante administrative", + "senior business development manager", + "subject matter expert", + "администратор", + "student internship", + "resident", + "international sales manager", + "tech support", + "diretor executivo", + "diseñador", + "coordinadora", + "studio manager", + "pr manager", + "admin officer", + "advance", + "guest services", + "senior internal auditor", + "vp sales", + "technical account manager", + "产品经理", + "risk analyst", + "artistic director", + "medewerker", + "administration officer", + "england", + "insurance broker", + "mortgage consultant", + "analista administrativo", + "research scholar", + "planning manager", + "ux designer", + "senior customer service representative", + "editor-in-chief", + "nursing", + "auxiliar de produção", + "project superintendent", + "cnc machinist", + "copy editor", + "social media coordinator", + "financeiro", + "social studies teacher", + "recruiting coordinator", + "environmental scientist", + "assistant lecturer", + "procurement", + "cost accountant", + "missionary", + "security supervisor", + "graduate student researcher", + "food and beverage manager", + "collaboratore", + "direct support professional", + "camarero", + "design director", + "sales lead", + "addetta", + "finance analyst", + "scheduler", + "senior test engineer", + "balconista", + "franchise owner", + "support analyst", + "investigador", + "sócio/proprietário", + "it support engineer", + "konsulent", + "lead", + "promotor", + "associate vice president", + "enfermeiro", + "corretor", + "service desk analyst", + "research officer", + "postdoctoral research associate", + "customer advisor", + "pharmaceutical sales representative", + "project executive", + "главный специалист", + "экономист", + "psicólogo", + "senior counsel", + "food server", + "junior project manager", + "operadora de caixa", + "drummer", + "gerente de ti", + "development intern", + "associate partner", + "dean", + "respiratory therapist", + "gerente de marketing", + "vp operations", + "gérante", + "inventory manager", + "amsterdam", + "financial director", + "formateur", + "front office supervisor", + "jornalista", + "representante de vendas", + "associate project manager", + "commerciante", + "предприниматель", + "sales person", + "senior research scientist", + "代表取締役", + "assistente social", + "assessor", + "projektledare", + "jefe de ventas", + "assistant consultant", + "emergency medical technician", + "étudiant", + "customer service coordinator", + "chaplain", + "ama de casa", + "cajero", + "corporate recruiter", + "asesor financiero", + "retail associate", + "sydney", + "chef de cuisine", + "human resources officer", + "assistant marketing manager", + "软件工程师", + "associate pastor", + "director of technology", + "arquiteta", + "gerente de contas", + "freelance consultant", + "encarregado de", + "marketer", + "senior sales engineer", + "angestellte", + "dependiente", + "secretary treasurer", + "mechanical engineering intern", + "software engineer intern", + "director human resources", + "manager sales", + "quality inspector", + "school bus driver", + "budget analyst", + "chiropractor", + "supply chain analyst", + "automotive technician", + "data entry operator", + "vice president sales and marketing", + "labourer", + "visiting professor", + "memur", + "draftsman", + "dance instructor", + "dueña", + "rf engineer", + "network analyst", + "junior software developer", + "director business development", + "mecanico", + "support", + "human resources information systems", + "technology manager", + "shift lead", + "veterinary technician", + "chargé d'affaires", + "vice chairman", + "academic tutor", + "music director", + "accounting staff", + "licensed real estate salesperson", + "chemical engineer", + "activation", + "certified medical assistant", + "senior operations manager", + "design", + "corporate trainer", + "clerical assistant", + "hotel manager", + "financial assistant", + "first officer", + "almoxarife", + "assistant system engineer", + "aprendiz", + "group manager", + "development officer", + "retired teacher", + "security consultant", + "owner and operator", + "realtor associate", + "销售总监", + "babysitter", + "executive assistant to ceo", + "microbiologist", + "phd researcher", + "senior underwriter", + "inside sales manager", + "credit officer", + "intern architect", + "research coordinator", + "project supervisor", + "military", + "staffing manager", + "physical education teacher", + "ведущий специалист", + "verpleegkundige", + "family nurse practitioner", + "medical transcriptionist", + "san francisco bay area | professional profile", + "admissions counselor", + "property consultant", + "dealer", + "militar", + "runner", + "columnist", + "vice president of business development", + "müdür", + "media planner", + "front desk manager", + "région de paris france | profil professionnel", + "file clerk", + "r&d manager", + "developpement", + "technical support manager", + "esthetician", + "relationship officer", + "first grade teacher", + "外贸业务员", + "social work intern", + "analista comercial", + "promotora", + "pastry chef", + "technical sales representative", + "non executive director", + "softwareentwickler", + "guidance counselor", + "patient care technician", + "mba candidate", + "socio fundador", + "business director", + "senior programmer analyst", + "jefe de operaciones", + "crew trainer", + "catering manager", + "mortgage banker", + "processor", + "training", + "disabled", + "undergraduate student", + "sr business analyst", + "educational consultant", + "regional operations manager", + "admin asst", + "exploration", + "veterinary assistant", + "information technology analyst", + "sale", + "school nurse", + "assistant operations manager", + "production technician", + "wiraswasta", + "especialista", + "test lead", + "section manager", + "application specialist", + "educadora", + "distribution manager", + "senior business consultant", + "maestro", + "communications consultant", + "visiting lecturer", + "front end developer", + "front desk clerk", + "research and development engineer", + "consultora de vendas", + "client service representative", + "ejecutiva de ventas", + "licensed real estate agent", + "collector", + "development associate", + "junior architect", + "clinical director", + "trainee accountant", + "business administrator", + "senior planner", + "commessa", + "secretaire", + "telemarketing", + "information technology project manager", + "clerical", + "human resources bp", + "sound engineer", + "quality control inspector", + "retraite", + "svp", + "electrical supervisor", + "research consultant", + "junior software engineer", + "accounting associate", + "packer", + "general assistant", + "sales development representative", + "owner/ president", + "pricing analyst", + "qa tester", + "cadre", + "vice president of finance", + "sr financial analyst", + "jefe de obra", + "graduate engineering trainee", + "faculty member", + "accounts payable manager", + "beauty advisor", + "operations intern", + "scrum master", + "implementation manager", + "producto", + "analista contable", + "bedrijfsleider", + "management analyst", + "creator", + "entertainer", + "sap business", + "six sigma", + "design assistant", + "fonctionnaire", + "3d artist", + "sales and marketing director", + "corretor de imóveis", + "ejecutiva de cuentas", + "implementation consultant", + "executive consultant", + "fotografo", + "senior system analyst", + "graphiste", + "group fitness instructor", + "senior relationship manager", + "communications assistant", + "geschäftsführender gesellschafter", + "muhasebe", + "system admin", + "test manager", + "head of business development", + "client service manager", + "call center agent", + "sales and leasing consultant", + "arquitecta", + "front office", + "retail sales manager", + "senior recruitment consultant", + "backup", + "guitarist", + "promotional", + "english tutor", + "inventory specialist", + "instructional assistant", + "técnico em segurança do trabalho", + "asesor de ventas", + "business intelligence analyst", + "recruitment coordinator", + "studying", + "industrial trainee", + "anesthesiologist", + "sales and marketing executive", + "colaborador", + "news editor", + "safety coordinator", + "gerente financeiro", + "it business analyst", + "bookseller", + "busser", + "asistente de gerencia", + "student research assistant", + "london united kingdom | professional profile", + "director information technology", + "production worker", + "support specialist", + "escrow officer", + "patient care coordinator", + "senior java developer", + "territory sales representative", + "visiting researcher", + "sales and marketing coordinator", + "guest lecturer", + "general dentist", + "juriste", + "directeur technique", + "mayor", + "sales analyst", + "primary care", + "litigation paralegal", + "market research analyst", + "undergraduate teaching assistant", + "contrôleur de gestion", + "audio engineer", + "proprietaria", + "lead technician", + "beauty consultant", + "owner/ceo", + "student volunteer", + "mechanical technician", + "director human resources", + "senior sales associate", + "sr account executive", + "retraitée", + "creative", + "socia", + "office", + "traffic manager", + "impiegata amministrativa", + "yoga teacher", + "performer", + "banking", + "it executive", + "admin manager", + "prácticas", + "owner/designer", + "business operations manager", + "intensive care", + "arquiteto", + "administrative support", + "vice president human resources", + "general director", + "software", + "presenter", + "consultor comercial", + "industrial designer", + "projects manager", + "agent commercial", + "carer", + "executive administrator", + "administrative intern", + "electronic engineer", + "mortgage loan originator", + "retail sales representative", + "information technology executive", + "assistant brand manager", + "internet sales manager", + "development coordinator", + "aircraft mechanic", + "geschäftsführerin", + "promotor de vendas", + "it officer", + "data manager", + "dentista", + "global account manager", + "center manager", + "correspondent", + "psychiatrist", + "leasing agent", + "senior research analyst", + "chairperson", + "web application developer", + "market analyst", + "animatrice", + "merchandise manager", + "optician", + "technologist", + "event staff", + "claims representative", + "总经理助理", + "accounts receivable clerk", + "continuity", + "compliance analyst", + "curator", + "stage manager", + "adviseur", + "senior producer", + "technology lead", + "visiting scholar", + "voorzitter", + "cofounder", + "vertrieb", + "founding member", + "senior administrator", + "staff registered nurse", + "athletic director", + "administratief medewerkster", + "organizer", + "statistician", + "serveuse", + "customer care specialist", + "principal owner", + "administrator executive", + "dietary aide", + "asesora comercial", + "entwicklungsingenieur", + "designer gráfico", + "electronics engineer", + "national account executive", + "junior associate", + "news reporter", + "owner/director", + "technical team lead", + "architectural assistant", + "technical services manager", + "программист", + "infirmière", + "systems manager", + "founder chief executive officer", + "music producer", + "administración", + "direktur", + "commercial account manager", + "digital marketing intern", + "sr account manager", + "landscape architect", + "консультант", + "accounting analyst", + "talent acquisition", + "financial adviser", + "funzionario", + "lab tech", + "oracle dba", + "lab manager", + "training consultant", + "legal administrative assistant", + "technical sales engineer", + "graduate intern", + "maintenance mechanic", + "asst professor", + "creative designer", + "food service", + "it assistant", + "corporal", + "crew leader", + "customer relations manager", + "chofer", + "gestionnaire", + "sales and marketing assistant", + "facilities coordinator", + "steward", + "station manager", + "artigiano", + "plant engineer", + "jefe de proyectos", + "adviser", + "assistente de marketing", + "diseñadora", + "equipment operator", + "sales and marketing intern", + "contador general", + "soldador", + "pharmacy assistant", + "aposentada", + "front-end developer", + "employé", + "врач", + "senior technical recruiter", + "conseiller commercial", + "operations engineer", + "training officer", + "media specialist", + "commercial assistant", + "front desk supervisor", + "broker/owner", + "factory manager", + "accounts clerk", + "employment specialist", + "associate scientist", + "trabajadora social", + "manager business development", + "principal scientist", + "graphic design", + "fundraiser", + "registered dietitian", + "reservations agent", + "segretaria", + "human resources representative", + "corps member", + "san diego", + "general contractor", + "registered representative", + "analista de ti", + "direttore", + "associate creative director", + "gerente de proyectos", + "kitchen staff", + "technology specialist", + "enterprise architect", + "analista contábil", + "hospitality", + "assistant supervisor", + "practices", + "council member", + "resident engineer", + "senior marketing executive", + "software programmer", + "radiologist", + "special agent", + "student employee", + "advertising manager", + "pr", + "contable", + "resource manager", + "vp marketing", + "participant", + "senior estimator", + "businessman", + "production associate", + "manager assistant", + "founder and director", + "construction project manager", + "reception", + "bestuurslid", + "consultante", + "clinical supervisor", + "analista fiscal", + "claims specialist", + "vp business development", + "executive sous chef", + "project associate", + "исполнительный директор", + "transportation manager", + "assistant front office manager", + "desktop support technician", + "desktop support", + "registered dental hygienist", + "embedded software engineer", + "online marketing manager", + "contracts administrator", + "medicina", + "network specialist", + "ведущий инженер", + "research specialist", + "vacation", + "waiting staff", + "environmental specialist", + "founder and chief executive officer", + "fotógrafo", + "owner and founder", + "responsabile commerciale", + "support staff", + "speech-language pathologist", + "data engineer", + "field representative", + "corporate sales manager", + "lead designer", + "director of education", + "assurance associate", + "general accountant", + "gestor comercial", + "logistics analyst", + "ejecutivo comercial", + "co-manager", + "it professional", + "assistant producer", + "professional photographer", + "senior research fellow", + "service representative", + "master student", + "системный администратор", + "werkstudent", + "operations associate", + "actuarial analyst", + "mother", + "claims manager", + "vp of operations", + "food service worker", + "clinician", + "gallery", + "swim instructor", + "implementation specialist", + "member of the board of directors", + "various positions", + "data processing executive", + "helper", + "oficial", + "support manager", + "deli clerk", + "owner/partner", + "logistics officer", + "réceptionniste", + "process manager", + "customer care executive", + "management intern", + "member service representative", + "inginer", + "judge", + "security specialist", + "business system analyst", + "instalaciones", + "instrument technician", + "marine engineer", + "plant operator", + "sale manager", + "president and founder", + "freelance artist", + "cad technician", + "key account executive", + "purchase manager", + "seasonal sales associate", + "technical trainer", + "vice president of sales and marketing", + "hse officer", + "security analyst", + "индивидуальный предприниматель", + "shipping manager", + "usher", + "policy analyst", + "business development coordinator", + "clinical dietitian", + "service consultant", + "channel manager", + "housekeeping supervisor", + "front desk associate", + "catering assistant", + "childcare provider", + "digital marketing consultant", + "area director", + "adjunct lecturer", + "市场经理", + "pedagoga", + "mathematics tutor", + "customer services", + "service tech", + "informaticien", + "client advisor", + "educational assistant", + "purchasing specialist", + "process operator", + "math tutor", + "media manager", + "responsable technique", + "financial services professional", + "administrative director", + "physical therapist assistant", + "supplier quality engineer", + "director of admissions", + "make-up artist", + "billing manager", + "education coordinator", + "staffing coordinator", + "electrical design engineer", + "teamleider", + "devops engineer", + "direktor", + "relationship banker", + "gis analyst", + "drafter", + "asesora", + "comptroller", + "fundador", + "teacher of english", + "dance teacher", + "audit supervisor", + "freelance web developer", + "cooperation", + "international sales", + "sachbearbeiter", + "junior graphic designer", + "past", + "camera operator", + "经理助理", + "sales support specialist", + "diseñadora gráfica", + "hse manager", + "technical sales", + "public relations officer", + "profesional", + "nothing", + "medical sales representative", + "private banker", + "research student", + "customer support specialist", + "logistics supervisor", + "insurance advisor", + "chef de rang", + "maneger", + "senior supervisor", + "project intern", + "washington dc", + "referee", + "medical biller", + "sales associate cashier", + "leerkracht", + "junior analyst", + "peer tutor", + "commerce manager", + "ski instructor", + "sr accountant", + "chief administrative officer", + "construction superintendent", + "internist", + "freelance copywriter", + "charge nurse", + "commander", + "senior systems administrator", + "youth worker", + "fund accountant", + "sourcing manager", + "courtesy clerk", + "conducteur de travaux", + "masters student", + "head of finance", + "gerente de proyecto", + "пенсионер", + "working student", + "supervisor de produção", + "clinical social worker", + "staff software engineer", + "guide", + "it support analyst", + "system developer", + "product development", + "esteticista", + "lærer", + "cmo", + "digital marketing executive", + "pr intern", + "program associate", + "product developer", + "director of client services", + "summer student", + "inventory control", + "senior copywriter", + "freelance illustrator", + "senior system administrator", + "gerente regional", + "assistant designer", + "atención al cliente", + "biologist", + "general foreman", + "project designer", + "client executive", + "development assistant", + "business process analyst", + "asistente comercial", + "technical associate", + "sócia", + "salgsassistent", + "call center", + "customer support representative", + "sr systems engineer", + "process technician", + "admissions representative", + "senior staff accountant", + "information systems manager", + "etudiante", + "server/bartender", + "maintenance planner", + "intelligence analyst", + "nutritionist", + "administrative associate", + "residential counselor", + "founder/ceo", + "gerente operacional", + "assistant product manager", + "controls engineer", + "assistente administrativa", + "cadet", + "executive engineer", + "doctoral student", + "staffing specialist", + "site coordinator", + "compliance specialist", + "legal officer", + "senior quality engineer", + "house manager", + "computer", + "accounting technician", + "teacher/coach", + "company", + "construction engineer", + "dono", + "senior application developer", + "software development intern", + "financial specialist", + "director of sales & marketing", + "contenidos", + "founder ceo", + "becaria", + "chief executive offi", + "redactor", + "subsea", + "floor supervisor", + "manufacturing supervisor", + "purchasing coordinator", + "analytical chemist", + "vice principal", + "clinical coordinator", + "manager marketing", + "销售主管", + "freelance editor", + "benefits specialist", + "temp", + "letter carrier", + "4th grade teacher", + "french teacher", + "pedagogisch medewerker", + "cashier customer service", + "sourcing specialist", + "tekniker", + "building manager", + "student manager", + "research and development", + "formatrice", + "selbständig", + "ui designer", + "auditor interno", + "territory account manager", + "peer mentor", + "repórter", + "real estate investor", + "everything", + "head teacher", + "education specialist", + "module lead", + "president and owner", + "night manager", + "overnight stocker", + "jurist", + "monitora", + "assistant general counsel", + "director ejecutivo", + "surgeon", + "enterprise account manager", + "владелец", + "practice administrator", + "sales operations manager", + "campus ambassador", + "office staff", + "project controller", + "engineering assistant", + "quality technician", + "founder and owner", + "qc inspector", + "child care provider", + "field sales representative", + "primary school teacher", + "staff auditor", + "ingeniero civil", + "operador de telemarketing", + "area supervisor", + "sales promoter", + "legal consultant", + "software analyst", + "studente", + "junior developer", + "technical sales manager", + "clinical manager", + "sr analyst", + "jovem aprendiz", + "store associate", + "clinical instructor", + "sales and marketing specialist", + "monteur", + "market researcher", + "assistente de vendas", + "domestic engineer", + "agency manager", + "help desk", + "agent administratif", + "rn case manager", + "it coordinator", + "staff scientist", + "caseworker", + "assistant office manager", + "caterer", + "tax analyst", + "deputy", + "dirigeant", + "solutions consultant", + "virtual assistant", + "patron", + "licensed insurance agent", + "chief human resources officer", + "gerencia", + "administrative clerk", + "clinical nurse", + "barber", + "engineering supervisor", + "handyman", + "environmental consultant", + "shipping clerk", + "commissioning engineer", + "sócio diretor", + "land surveyor", + "purchasing officer", + "agency owner", + "salgskonsulent", + "esl instructor", + "administrative assistant ii", + "customer relations", + "production director", + "promotora de vendas", + "marketing communications specialist", + "claims examiner", + "service supervisor", + "consultor técnico", + "5th grade teacher", + "piano teacher", + "research director", + "media director", + "director of purchasing", + "air traffic controller", + "general practitioner", + "retiree", + "développeur web", + "associate product manager", + "quality specialist", + "youth pastor", + "construction supervisor", + "patient service representative", + "chef de service", + "showroom manager", + "talent acquisition manager", + "business objects", + "care giver", + "director marketing", + "manager in training", + "director técnico", + "rentner", + "radiographer", + "rechtsanwalt", + "senior brand manager", + "personnel manager", + "sachbearbeiterin", + "warehouse assistant", + "national accounts manager", + "crew chief", + "quadro", + "operational manager", + "information specialist", + "cocinero", + "pipefitter", + "assistant restaurant manager", + "senior merchandiser", + "senior data analyst", + "internship student", + "collections specialist", + "human resources exec", + "psicologo", + "manager of operations", + "konsult", + "desktop support engineer", + "secretaria administrativa", + "conferente", + "orientation leader", + "technical leader", + "abteilungsleiter", + "jefe de producción", + "bediende", + "chief officer", + "técnico em informática", + "property management", + "shipping", + "national sales director", + "superviseur", + "manufacturing technician", + "assistente técnico", + "corporate counsel", + "главный инженер", + "life coach", + "insurance specialist", + "encarregado", + "house wife", + "media consultant", + "pharmacy tech", + "consulting", + "second grade teacher", + "peoplesoft", + "associate general counsel", + "billing coordinator", + "administrativo de oficina", + "销售顾问", + "internal audit manager", + "руководитель отдела продаж", + "ejecutivo", + "qa lead", + "registered respiratory therapist", + "research executive", + "visual designer", + "chief manager", + "compradora", + "extern", + "conseillère de vente", + "security engineer", + "professor emeritus", + "information security analyst", + "caretaker", + "inventory analyst", + "manufacturing director", + "independent sales representative", + "chef de secteur", + "client service associate", + "construction worker", + "agente administrativo", + "treasury analyst", + "telecommunications engineer", + "seo specialist", + "verkäuferin", + "user experience designer", + "senior property manager", + "information technology influencer", + "care assistant", + "graduate engineer trainee", + "funcionario", + "trade marketing manager", + "engineering trainee", + "swasta", + "outreach coordinator", + "field sales manager", + "técnico de segurança do trabalho", + "miembro del cuerpo docente", + "cso", + "education consultant", + "technology coordinator", + "social media", + "department supervisor", + "genel müdür", + "gerente de compras", + "public relations coordinator", + "co-founder & ceo", + "safety engineer", + "team assistant", + "ceo & president", + "safety director", + "accounts payable supervisor", + "coordinador de proyectos", + "senior credit analyst", + "strategy consultant", + "transport manager", + "electrical apprentice", + "gepensioneerd", + "military police", + "practicum student", + "university lecturer", + "shop foreman", + "finance controller", + "empresária", + "chargé de mission", + "payroll", + "beauty therapist", + "technicien informatique", + "null", + "freelance makeup artist", + "senior quantity surveyor", + "supervisor de ventas", + "project co-ordinator", + "technical", + "director operations", + "front of house", + "avukat", + "mortgage loan processor", + "avionics technician", + "logistica", + "professional sales representative", + "visiting assistant professor", + "co-director", + "third grade teacher", + "resourcing", + "kitchen assistant", + "teamleiter", + "senior qa engineer", + "senior legal counsel", + "electrical designer", + "legal", + "servicio de atención al cliente", + "care manager", + "real estate manager", + "customer support manager", + "associate analyst", + "medical coder", + "system architect", + "software engineer ii", + "catering sales manager", + "управляющий", + "economista", + "supervisor de operaciones", + "vice president of human resources", + "program administrator", + "secretario", + "referent", + "financial administrator", + "private", + "crane operator", + "data entry specialist", + "gallery assistant", + "driller", + "job seeker", + "major account manager", + "summer research intern", + "corrections officer", + "ingénieur commercial", + "技术总监", + "revenue manager", + "conseiller", + "farm manager", + "berater", + "computer specialist", + "jefe de departamento", + "operativa", + "vp of marketing", + "video producer", + "quality assurance technician", + "diretor geral", + "senior finance manager", + "guest service representative", + "rigger", + "manager finance", + "back office", + "accounts payable coordinator", + "communication specialist", + "marketing internship", + "jefe de proyecto", + "ayudante", + "auxiliar de escritorio", + "payroll coordinator", + "merchandising manager", + "payroll clerk", + "teachers aide", + "contratista", + "quality assurance supervisor", + "sales account executive", + "director of administration", + "human resource director", + "porter", + "assurance intern", + "technical coordinator", + "past president", + "teleoperadora", + "student nurse", + "insurance", + "investment banking summer analyst", + "principal investigator", + "photographe", + "chargée de recrutement", + "business associate", + "marketing and communications manager", + "business executive", + "fashion stylist", + "location manager", + "business advisor", + "contributing editor", + "athletic trainer", + "teaching fellow", + "sr associate", + "restaurant supervisor", + "biomedical engineer", + "reconciliation", + "reliability engineer", + "hr supervisor", + "underwriting assistant", + "contador publico", + "senior managing director", + "store director", + "sr software developer", + "landscape designer", + "consulting engineer", + "investment consultant", + "project management intern", + "residente de obra", + "appraiser", + "resident manager", + "running", + "soporte técnico", + "verkoopster", + "prep cook", + "selección", + "agente comercial", + "impiegato tecnico", + "store supervisor", + "funcionário público", + "produktmanager", + "junior account manager", + "assistant service manager", + "junior researcher", + "staffing consultant", + "manufacturing", + "animateur", + "quality control engineer", + "owner and president", + "factory worker", + "director of it", + "mba student", + "instrutor", + "technical supervisor", + "director of photography", + "production specialist", + "terminal manager", + "judicial intern", + "help desk specialist", + "infantry", + "置业顾问", + "wissenschaftliche mitarbeiterin", + "social media marketing intern", + "senior it consultant", + "chargée de mission", + "chargé de clientèle", + "analista de sistema", + "child care", + "ramp agent", + "procurement analyst", + "adjuster", + "millwright", + "business head", + "coordenador de projetos", + "bolsista", + "asesor inmobiliario", + "senior staff engineer", + "singer-songwriter", + "leasing manager", + "director sales", + "care coordinator", + "associate lawyer", + "vrijwilliger", + "assistant account manager", + "hr associate", + "probation officer", + "subgerente", + "production artist", + "general medical", + "demand planner", + "market development manager", + "sócio gerente", + "customer relationship manager", + "redactora", + "gerente de produção", + "butikkmedarbeider", + "managing principal", + "athlete", + "web programmer", + "senior executive assistant", + "franchisee", + "junior account executive", + "professional driver", + "юрисконсульт", + "regional sales representative", + "marketing communications", + "sahip", + "interviewer", + "desarrollador de software", + "master thesis", + "analista de negócios", + "pesquisador", + "legislative assistant", + "legislative intern", + "branch head", + "en prácticas", + "educatrice", + "technico-commercial", + "digital project manager", + "medecin", + "home mortgage consultant", + "stock controller", + "gerante", + "event specialist", + "operador de produção", + "marketing trainee", + "audit", + "enterprise account executive", + "desarrollador", + "proyectista", + "communication manager", + "руководитель проекта", + "engineering consultant", + "ingeniero de proyecto", + "analista de logística", + "quality control analyst", + "gerente administrativa", + "lead pastor", + "gardener", + "food service director", + "escrow assistant", + "admin clerk", + "co manager", + "senior clinical research associate", + "safety supervisor", + "health educator", + "soldado", + "infographiste", + "director of public relations", + "major", + "senior paralegal", + "addetto alle vendite", + "project manager assistant", + "estudiante en prácticas", + "self emp", + "dy manager", + "projektingenieur", + "responsabile", + "police", + "водитель", + "verkäufer", + "werkvoorbereider", + "sales team leader", + "customer care manager", + "special education paraprofessional", + "food and beverage attendant", + "responsable d'agence", + "助理工程师", + "supply chain", + "audit trainee", + "human resources services", + "testing engineer", + "dietitian", + "director creativo", + "electricista", + "export sales manager", + "transportation", + "site director", + "sales & marketing director", + "mental health counselor", + "school social worker", + "business intelligence consultant", + "principal architect", + "estilista", + "quality supervisor", + "recruitment officer", + "manager human resources", + "quality", + "mantenimiento", + "operations administrator", + "junior auditor", + "midwife", + "physical therapy aide", + "marketing project manager", + "gerente de loja", + "president chief executive officer", + "research internship", + "event assistant", + "artisan", + "executive editor", + "jubilada", + "技术员工", + "regional business manager", + "customer service consultant", + "senior manufacturing engineer", + "center director", + "composer", + "payroll supervisor", + "digital designer", + "early childhood educator", + "department head", + "team coordinator", + "atendimento ao cliente", + "junior manager", + "asstmanager", + "adminstrative assistant", + "help desk analyst", + "jefe de recursos humanos", + "secretary general", + "gis specialist", + "lärare", + "product analyst", + "florist", + "технический директор", + "mahasiswa", + "contracting officer", + "human resource assistant", + "ejecutivo de cuenta", + "regional marketing manager", + "special events coordinator", + "storekeeper", + "consultor senior", + "advertising", + "verkoper", + "visual artist", + "farm hand", + "dipendente", + "publicist", + "round", + "senior technical writer", + "area business manager", + "projektleder", + "sales man", + "call center supervisor", + "mobile application developer", + "soporte tecnico", + "application consultant", + "change manager", + "jefe de equipo", + "human resource", + "process executive", + "adjointe administrative", + "sales marketing manager", + "senior tax accountant", + "director of facilities", + "staf", + "vice president business development", + "data specialist", + "psicóloga clínica", + "productor", + "fire chief", + "amministratore delegato", + "head of human resources", + "actuary", + "field service manager", + "assistente de recursos humanos", + "seo executive", + "data architect", + "solutions engineer", + "student mentor", + "hr trainee", + "volunteering", + "general secretary", + "director of research", + "workshop manager", + "system specialist", + "directeur d'agence", + "research and teaching assistant", + "human resource specialist", + "benefits manager", + "qa/qc engineer", + "directeur adjoint", + "tax senior", + "sales development manager", + "produce clerk", + "3rd grade teacher", + "business relationship manager", + "quality controller", + "guest services manager", + "quality control technician", + "billing clerk", + "content editor", + "diretor administrativo", + "desempregado", + "database developer", + "software developer intern", + "administrative executive", + "web editor", + "human resources analyst", + "judicial law clerk", + "mental health therapist", + "service crew", + "senior audit associate", + "board director", + "executive housekeeper", + "medical social worker", + "manager information technology", + "service specialist", + "chief technical officer", + "gerente de relacionamento", + "adjunct assistant professor", + "application analyst", + "qc engineer", + "ejecutiva comercial", + "work placement", + "猎头顾问", + "présidente", + "продавец", + "analista financiero", + "project management consultant", + "director de operaciones", + "customer service engineer", + "hr analyst", + "studentermedhjælper", + "2nd grade teacher", + "assistant administrator", + "valet", + "infermiere", + "infantryman", + "key account", + "senior civil engineer", + "personal care assistant", + "acheteur", + "labor", + "fitter", + "ceo & co-founder", + "documentary", + "cast member", + "centre manager", + "sales and marketing representative", + "executivo de contas", + "public relations assistant", + "group sales manager", + "student consultant", + "first vice president", + "new york new york | professional profile", + "development", + "assistante marketing", + "logistic manager", + "chief medical officer", + "attaché commercial", + "head bartender", + "business analyst intern", + "customer experience manager", + "administrator assistant", + "finance administrator", + "suporte técnico", + "jefe de mantenimiento", + "commercieel", + "director de proyectos", + "bartender/server", + "real estate professional", + "owner / president", + "special projects manager", + "maintenance coordinator", + "empreendedor", + "gerente de negócios", + "vice chair", + "around", + "fraud analyst", + "pilates", + "admin executive", + "operation executive", + "assistant production manager", + "brand representative", + "profesora de inglés", + "comms", + "senior quality assurance engineer", + "geotechnical engineer", + "filmmaker", + "home maker", + "técnico administrativo", + "faculty/staff", + "help desk technician", + "artista", + "plant controller", + "room attendant", + "detailer", + "verkoopmedewerkster", + "client services representative", + "praktikantin", + "customer engineer", + "运营总监", + "collections", + "officer manager", + "junior programmer", + "senior application engineer", + "supervisor comercial", + "medic", + "full time student", + "installation technician", + "safety specialist", + "real estate salesperson", + "clinic manager", + "unit secretary", + "it supervisor", + "front end supervisor", + "bar supervisor", + "geophysicist", + "chief of police", + "inventory control specialist", + "cost controller", + "verkaufsleiter", + "部门主管", + "senior associate consultant", + "food and beverage supervisor", + "benefits administrator", + "atendimento", + "instrumentation engineer", + "branch sales manager", + "game designer", + "software quality assurance engineer", + "senior project coordinator", + "chargée de clientèle", + "mühendis", + "facilities engineer", + "representante legal", + "software qa engineer", + "contract attorney", + "营销经理", + "journeyman electrician", + "fondateur", + "flight instructor", + "accounts receivable manager", + "senior database administrator", + "elektriker", + "gis technician", + "diseñador grafico", + "grocery clerk", + "emekli", + "middle school teacher", + "insurance producer", + "piping engineer", + "owner / manager", + "public relations specialist", + "директор предприятия", + "software specialist", + "cost analyst", + "supervisor de producción", + "admissions coordinator", + "atencion al cliente", + "police sergeant", + "ui developer", + "desenvolvedor", + "human resources advisor", + "key accounts manager", + "sale associate", + "application support analyst", + "assistant commercial", + "financial analyst intern", + "财务经理", + "podiatrist", + "post-doctoral fellow", + "executive assistant to the president", + "information officer", + "sr vice president", + "field service representative", + "cashier customer service", + "jefa", + "senior account director", + "speech pathologist", + "service director", + "cameraman", + "butikschef", + "network admin", + "market access", + "selbstständig", + "solutions specialist", + "ceo/founder", + "it system administrator", + "lead business analyst", + "telecom engineer", + "autonoma", + "professional actor", + "process analyst", + "tax specialist", + "computer teacher", + "responsable marketing", + "marketing supervisor", + "consulting manager", + "catering", + "ui/ux designer", + "ebusiness", + "receptioniste", + "media coordinator", + "infrastructure engineer", + "head of it", + "purchasing supervisor", + "vice president and general manager", + "practical", + "analista de compras", + "développeur", + "support technician", + "gerente de rh", + "senior process associate", + "strategic planner", + "senior structural engineer", + "sr project engineer", + "vp finance", + "marketing and communications intern", + "insurance consultant", + "group financial controller", + "accounting coordinator", + "accounting officer", + "teacher aide", + "engineering project manager", + "internal sales", + "asistente de investigación", + "采购经理", + "inversiones", + "tattoo artist", + "nursing student", + "inspetor de qualidade", + "traffic coordinator", + "front office assistant", + "psychologue", + "responsable qualité", + "administrador de sistemas", + "dietetic intern", + "study student", + "direktør", + "professeur des écoles", + "it helpdesk", + "branch operations manager", + "médecin", + "store assistant", + "commercial sales", + "doktor", + "assistant merchandiser", + "clinical assistant professor", + "law student", + "studio assistant", + "clinical specialist", + "photo editor", + "computer lab assistant", + "mortgage specialist", + "sales leader", + "inhaberin", + "operation", + "business advisory", + "diretor presidente", + "营销总监", + "software designer", + "call center manager", + "senior sales", + "senior technical support engineer", + "senior key account manager", + "validation engineer", + "credit risk analyst", + "responsable logistique", + "reporting analyst", + "vice president information technology", + "graphic and web designer", + "fabricator", + "field officer", + "information analyst", + "sports editor", + "senior software development engineer", + "маркетолог", + "assistante rh", + "store keeper", + "warehouse operative", + "studentische hilfskraft", + "assistante de gestion", + "employer", + "ingeniero de procesos", + "conseiller clientèle", + "network support engineer", + "amministratore unico", + "senior attorney", + "assistant district attorney", + "disc jockey", + "farmacêutica", + "logistics assistant", + "responsable ressources humaines", + "rådgiver", + "tour manager", + "begeleider", + "noc engineer", + "process specialist", + "magazziniere", + "customer account manager", + "expeditor", + "administração", + "project planner", + "strategist", + "terapeuta", + "psicólogo clínico", + "staff sergeant", + "dean of students", + "army", + "collaboratrice", + "purchasing executive", + "bank manager", + "notary public", + "高级工程师", + "founder president", + "work study", + "auxiliar financeiro", + "scheduling coordinator", + "human resources associate", + "inside sales account manager", + "stock associate", + "assistant director of admissions", + "заместитель генерального директора", + "vice president of engineering", + "client services coordinator", + "media buyer", + "fire fighter", + "helpdesk technician", + "pensionist", + "social media strategist", + "legal extern", + "barrister", + "singapore | professional profile", + "msc student", + "associate lecturer", + "vertriebsleiter", + "medica", + "telecommunications executive", + "english language instructor", + "helpdesk analyst", + "administrator execut", + "vendedor externo", + "gerente de sucursal", + "quality coordinator", + "sales area manager", + "cocktail waitress", + "senior technical analyst", + "medical billing specialist", + "diesel mechanic", + "pc technician", + "pintor", + "workshops", + "speaker", + "associate principal", + "web master", + "asistente de marketing", + "information technology intern", + "head teller", + "management associate", + "house counsel", + "magasinier", + "supply chain specialist", + "product design engineer", + "pensionär", + "regional coordinator", + "player", + "cnc programmer", + "fotograf", + "equity research analyst", + "student athlete", + "technicien de maintenance", + "vendor", + "greater los angeles area | professional profile", + "production executive", + "directora comercial", + "realtor®", + "senior financial advisor", + "greater boston area | professional profile", + "channel sales manager", + "docente catedrático", + "front of house manager", + "programme officer", + "quality assurance officer", + "test technician", + "architekt", + "groundskeeper", + "senior technical specialist", + "information technology technician", + "banquet manager", + "менеджер по персоналу", + "graphics designer", + "lead analyst", + "mechanical fitter", + "it systems", + "agente de ventas", + "photojournalist", + "sales support manager", + "chargé de projet", + "pensioner", + "city manager", + "sales trainee", + "ayudante de cocina", + "senior interior designer", + "member technical staff", + "estoquista", + "reservations manager", + "менеджер по работе с клиентами", + "intake coordinator", + "social media consultant", + "health coach", + "hvac technician", + "funcionario publico", + "press officer", + "high school english teacher", + "examiner", + "electrical", + "cardiologist", + "servidor público", + "head waiter", + "systems architect", + "reservoir engineer", + "cad engineer", + "chiropractic assistant", + "claims analyst", + "lead teller", + "sgt", + "student representative", + "gerente técnico", + "corporate accountant", + "medical", + "football coach", + "building engineer", + "community assistant", + "asistente de dirección", + "line support", + "event organizer", + "ingeniero de sistemas", + "press operator", + "senior tax manager", + "director of accounting", + "bi consultant", + "enumerator", + "chercheur", + "summer law clerk", + "assistente de rh", + "information technology administrator", + "product consultant", + "import manager", + "faturista", + "petroleum engineer", + "treasury manager", + "director of product management", + "program supervisor", + "roofer", + "gerente de operações", + "founder & director", + "hvac engineer", + "medical records clerk", + "documentation specialist", + "qc manager", + "software trainee", + "special education", + "production designer", + "finance specialist", + "division director", + "founding director", + "new business development", + "senior geologist", + "medical laboratory technician", + "funeral director", + "nauczyciel", + "financial services manager", + "branch administrator", + "property accountant", + "stock clerk", + "junior web developer", + "talent manager", + "collections manager", + "printer", + "giornalista", + "engenheiro eletricista", + "history teacher", + "post doc", + "chef d'équipe", + "lehrerin", + "prosjektleder", + "junior art director", + "supply chain coordinator", + "seaman", + "online marketing", + "sommelier", + "nada", + "uzman", + "network consultant", + "chef de projets", + "recruitment", + "electrical engineering intern", + "ehs manager", + "mice", + "assistentin", + "accounting department", + "operacional", + "head of production", + "associé", + "senior test analyst", + "analista de suporte técnico", + "financial services", + "investment associate", + "telefonista", + "audiologist", + "control de calidad", + "licensed clinical social worker", + "руководитель проектов", + "empresa", + "it architect", + "creative consultant", + "demonstrator", + "order picker", + "paraeducator", + "desktop engineer", + "senior solutions architect", + "responsable communication", + "customer service and sales representative", + "business man", + "sales negotiator", + "co-chair", + "student tutor", + "general partner", + "адвокат", + "aircraft technician", + "assistant golf professional", + "auxiliar de recursos humanos", + "loader", + "associate system engineer", + "geen", + "forman", + "cuisinier", + "environmental manager", + "community volunteer", + "undergraduate student researcher", + "directiesecretaresse", + "public servant", + "lighting designer", + "supervisor de operações", + "мастер", + "founder & president", + "delegate", + "consultor de negócios", + "laboratory analyst", + "business account manager", + "miss", + "sabbatical", + "database analyst", + "digital marketing", + "content creator", + "superviser", + "independent representative", + "commercial analyst", + "consultor independiente", + "campus representative", + "digital strategist", + "sr recruiter", + "passenger service agent", + "reading specialist", + "rep", + "director of training", + "qa specialist", + "business development analyst", + "cake decorator", + "venezuela", + "school administrator", + "assistente fiscal", + "práctica profesional", + "assistant internship", + "superintendente", + "montador", + "docencia", + "clerical officer", + "chief compliance officer", + "guest relations", + "mechanical supervisor", + "quality control supervisor", + "topografo", + "accountant assistant", + "senior secretary", + "independent agent", + "services", + "patient access representative", + "energy consultant", + "administrasi", + "media", + "technology director", + "executivo de vendas", + "regulatory affairs manager", + "technical designer", + "trabajador", + "server/ bartender", + "escriturário", + "facilities", + "sr network engineer", + "pr assistant", + "técnico de informática", + "account associate", + "application manager", + "human resources supervisor", + "bus operator", + "test", + "hse advisor", + "lead software developer", + "analista de projetos", + "student caller", + "self employee", + "bassist", + "surgical technologist", + "executive offr", + "ouvrier", + "payroll officer", + "secrétaire de direction", + "postdoctoral associate", + "trainee lawyer", + "vice president operations", + "research assistant professor", + "mediator", + "hôtesse d'accueil", + "aux adm", + "hse supervisor", + "autónomo", + "liaison officer", + "mede-eigenaar", + "personalreferentin", + "محاسب", + "colaboradora", + "student trainee", + "laboratory supervisor", + "master thesis student", + "assistant treasurer", + "bank", + "system manager", + "impiegato amministrativo", + "internal audit", + "kontorassistent", + "dispatch", + "biology teacher", + "job coach", + "archivist", + "chemistry teacher", + "patient care assistant", + "proposal manager", + "field coordinator", + "responsable informatique", + "chief financial offi", + "maintenance electrician", + "cinematographer", + "accounts administrator", + "product line manager", + "sr administrative assistant", + "secretaris", + "junior product manager", + "collaborator", + "caissière", + "club manager", + "manager it", + "intervention specialist", + "shipping coordinator", + "mail carrier", + "paraprofessional instructional aide", + "mortgage advisor", + "menager", + "policy advisor", + "research chemist", + "commodity manager", + "musico", + "assistente contábil", + "educador", + "systems consultant", + "oracle database administrator", + "artiste", + "adjoint administratif", + "analista de qualidade", + "coordenadora pedagógica", + "recruiting specialist", + "rn bsn", + "owner/founder", + "billing", + "logística", + "bid manager", + "sr systems analyst", + "field organizer", + "support intern", + "doctoral research", + "store clerk", + "customer representative", + "operador de caixa", + "rector", + "senior business manager", + "front office executive", + "asistente de producción", + "socio director", + "billing analyst", + "ophthalmologist", + "trained", + "projectmedewerker", + "menor aprendiz", + "office supervisor", + "human resource officer", + "transportation coordinator", + "vp sales and marketing", + "information technology professional", + "торговый представитель", + "gerente propietario", + "purchasing director", + "marketing and sales manager", + "government", + "process developer", + "assistante ressources humaines", + "senior research engineer", + "sap fi", + "writing tutor", + "france | profil professionnel", + "safety", + "proofreader", + "front office receptionist", + "segurança", + "técnico informático", + "costumer service", + "transportation specialist", + "geschäftsführung", + "senior surveyor", + "supervisor de obra", + "business specialist", + "cadre commercial", + "senior business systems analyst", + "senior economist", + "auxiliar técnico", + "chief executive officer (ceo)", + "jefe de compras", + "farmacista", + "aide", + "game developer", + "independent associate", + "drilling engineer", + "hse engineer", + "brand partner", + "senior member of technical staff", + "regional account executive", + "financial coordinator", + "scientific officer", + "product management", + "vice president sales", + "piping designer", + "family practitioner", + "qualità", + "floor staff", + "business coordinator", + "court reporter", + "inventory control manager", + "mis executive", + "stock broker", + "administrative supervisor", + "psicoterapeuta", + "family physician", + "media assistant", + "special projects coordinator", + "critical care registered nurse", + "auxiliar de contabilidad", + "us army", + "chief architect", + "инженер-программист", + "technico commercial", + "sap abap consultant", + "group account director", + "대표이사", + "project delivery", + "volunteer work", + "audio visual technician", + "owner and manager", + "cs", + "assistant football coach", + "agent immobilier", + "co-founder and ceo", + "risk management", + "contact centre", + "head lifeguard", + "elearning", + "promotions assistant", + "application architect", + "supervisor administrativo", + "food service manager", + "senior instructor", + "pædagog", + "asistente de recursos humanos", + "creative manager", + "vice president engineering", + "analista de processos", + "corretora", + "long term substitute teacher", + "1st grade teacher", + "assistente jurídico", + "delegado comercial", + "forklift driver", + "директор по развитию", + "vocalist", + "зам директора", + "teachers assistant", + "database manager", + "aluno", + "assistent manager", + "real estate appraiser", + "software engg", + "compensation analyst", + "medical faculty/staff", + "commercieel medewerker", + "engenheira civil", + "techniker", + "market research intern", + "senior teller", + "analista funcional", + "membership director", + "networking", + "diretor técnico", + "delineante", + "dirigente medico", + "post doctoral fellow", + "property administrator", + "öğrenci", + "evp", + "teleoperador", + "bagger", + "clinical research assistant", + "directeur general", + "licensed agent", + "food runner", + "sekretärin", + "financial officer", + "multimedia designer", + "school teacher", + "director of marketing and communications", + "algemeen directeur", + "general superintendent", + "content developer", + "moderator", + "serveur", + "member services", + "liasion", + "compliance", + "debt collector", + "systems programmer", + "subdirector", + "company commander", + "responsable de secteur", + "united nations", + "diretor de arte", + "instrument engineer", + "real estate sales", + "impiegato d'ufficio", + "crna", + "hôtesse de caisse", + "client relations manager", + "administrative assistant iii", + "diretor financeiro", + "técnico comercial", + "major account executive", + "junior research fellow", + "sr program manager", + "contabilista", + "enfermero", + "housekeeping manager", + "arbetsledare", + "technical support executive", + "ricercatore", + "draughtsman", + "assistent accountant", + "private investigator", + "corretora de imóveis", + "supervisor de manutenção", + "performance analyst", + "agente immobiliare", + "senior territory manager", + "greater chicago area | professional profile", + "deputy clerk", + "formador", + "maître d", + "associate buyer", + "sonographer", + "sydney australia | professional profile", + "odontologa", + "autista", + "functional consultant", + "farmacêutico", + "internship trainee", + "архитектор", + "dozent", + "e-commerce manager", + "administrativo contable", + "odontologo", + "financial associate", + "技术经理", + "postmaster", + "field operations manager", + "operaciones", + "financial service representative", + "checker", + "level support", + "assitant manager", + "photography", + "chief investment officer", + "storeman", + "creative intern", + "community liaison", + "personnel officer", + "post-doc", + "ingénieur d'études", + "director of product development", + "salon manager", + "critical care rn", + "vice president marketing", + "national account", + "市场部经理", + "estudante universitário", + "vicepresidente", + "bartender/ server", + "maintenance worker", + "senior engineering manager", + "desempleado", + "gestora", + "associé gérant", + "estimation", + "seo analyst", + "picker", + "consultor imobiliário", + "human resources recruiter", + "desenhista", + "restaurant general manager", + "toronto canada area | professional profile", + "bussiness", + "engineering director", + "gerente industrial", + "software engineering manager", + "equipment manager", + "инженер-конструктор", + "mommy", + "lehrer", + "licensed professional counselor", + "founder/owner", + "customer service representative csr", + "senior product engineer", + "sap basis consultant", + "sr product manager", + "health care assistant", + "member team", + "manager human resources", + "porteiro", + "市场总监", + "président directeur général", + "packaging engineer", + "assembly", + "band director", + "técnico em eletrônica", + "patent attorney", + "chargé de communication", + "senior financial accountant", + "accounts payable administrator", + "fourth grade teacher", + "substance abuse counselor", + "board of advisors member", + "management information systems manager", + "human resource generalist", + "freelance art director", + "senior portfolio manager", + "associate account manager", + "региональный менеджер", + "attendant", + "auxiliar contábil", + "patient account representative", + "teacher's aide", + "dottore commercialista", + "formadora", + "lektor", + "ceo/owner", + "instructional aide", + "production officer", + "hospital corpsman", + "membership coordinator", + "deckhand", + "peer advisor", + "director gerente", + "финансовый директор", + "inhouse", + "operation supervisor", + "quantitative analyst", + "programmation", + "receiving clerk", + "executive chairman", + "business technology analyst", + "tennis coach", + "coordenador de ti", + "оператор", + "infirmiere", + "client", + "network security engineer", + "sales & marketing executive", + "universal banker", + "mobile developer", + "behavior therapist", + "business account executive", + "responsable commerciale", + "technical expert", + "platoon leader", + "home", + "landman", + "commis", + "shipping supervisor", + "visiting scientist", + "ägare", + "benefits coordinator", + "administratör", + "director of food and beverage", + "agronomist", + "field coach", + "founder and managing director", + "praktykant", + "vice president human resources", + "systems specialist", + "shift engineer", + "airline pilot", + "equity analyst", + "sr sales executive", + "account administrator", + "channel account manager", + "assistant librarian", + "managing broker", + "senior writer", + "student advisor", + "senior tax consultant", + "writer/editor", + "fisioterapista", + "office admin", + "assistant marketing", + "senior chemist", + "digitador", + "nursing supervisor", + "office worker", + "ingeniero residente", + "primary teacher", + "hse coordinator", + "board of governors member", + "customer manager", + "kenya", + "maternity leave", + "auxiliar de enfermeria", + "clinical assistant", + "account clerk", + "advertising consultant", + "computer scientist", + "qc analyst", + "senior trainer", + "md/ceo", + "quality assurance coordinator", + "software engineer internship", + "infermiera", + "diploma", + "konstrukteur", + "prop", + "assistant quantity surveyor", + "talent acquisition consultant", + "soccer coach", + "business support manager", + "pathologist", + "career counselor", + "part owner", + "titolare unico", + "education officer", + "direttore commerciale", + "territory business manager", + "responder", + "strategic account executive", + "engineer ii", + "fiscal", + "loss prevention", + "regulatory affairs specialist", + "research and development intern", + "cad drafter", + "dermatologist", + "assistante comptable", + "auxiliar de contabilidade", + "srengineer", + "social media marketing manager", + "student supervisor", + "graduate researcher", + "site administrator", + "loan originator", + "secretária executiva", + "policy officer", + "responsabile amministrativo", + "operaia", + "ген директор", + "counseling intern", + "desarrollador web", + "cad operator", + "installation manager", + "assembly line worker", + "activities director", + "conseiller financier", + "divisional manager", + "психолог", + "fitness trainer", + "analista de crédito", + "assistant attorney general", + "senior human resources manager", + "ecommerce manager", + "assistant researcher", + "undergraduate", + "psicopedagoga", + "bediening", + "director de arte", + "tax professional", + "mortgage underwriter", + "art instructor", + "办公室主任", + "customer support executive", + "it operations manager", + "make up artist", + "operation director", + "patrol officer", + "commercial executive", + "f&b manager", + "game advisor", + "accounts payable analyst", + "assistant secretary", + "marketing administrator", + "财务总监", + "electrical foreman", + "director of maintenance", + "technical service engineer", + "engineering specialist", + "zelfstandig ondernemer", + "telecommunications specialist", + "client services director", + "manager trainee", + "finance associate", + "directora general", + "events assistant", + "interaction designer", + "asistente de ventas", + "经理网络服务", + "recruitment assistant", + "supply chain planner", + "marine", + "founder & managing director", + "construction coordinator", + "tecnico informatico", + "jefe de planta", + "apprenticeship", + "physics teacher", + "student attorney", + "internet manager", + "external consultant", + "transportation engineer", + "claims supervisor", + "material planner", + "sub gerente", + "general", + "interior design intern", + "admissions", + "industrial electrician", + "ict manager", + "co-president", + "marketing and sales", + "reference librarian", + "washington dc metro area | professional profile", + "correspondence", + "president / ceo", + "retail merchandiser", + "employment consultant", + "mitarbeiter", + "srexecutive", + "coder", + "law enforcement", + "junior", + "freelance blogger", + "manager accounts", + "docente universitario", + "spa manager", + "head of school", + "legal manager", + "erp consultant", + "секретарь", + "library media specialist", + "materials coordinator", + "integration engineer", + "senior network administrator", + "pe teacher", + "executiva de contas", + "telecommunications technician", + "hospitalist", + "transportation supervisor", + "public relations director", + "construction laborer", + "consultant senior", + "public information officer", + "senior it project manager", + "analyste", + "customer service representative (csr)", + "hotline", + "produtor", + "kierownik", + "customer services manager", + "equipment engineer", + "general manager operations", + "telesales", + "oracle developer", + "jewelry designer", + "business assistant", + "visual merchandising manager", + "nursing director", + "行政助理", + "pianist", + "summer legal intern", + "普通员工", + "technical services", + "investigadora", + "chefe", + "warehouseman", + "empleado en prácticas", + "onderzoek", + "medico veterinario", + "contabile", + "ejecutiva de cuenta", + "financial counselor", + "mecânico", + "software design engineer", + "dibujante", + "academic coordinator", + "assistant comptable", + "assistant manager hr", + "reviewer", + "junior executive", + "sistemas", + "programmer analyst trainee", + "key-account-manager", + "radio presenter", + "continuous improvement manager", + "medical laboratory technologist", + "director of hr", + "sales support representative", + "freelance producer", + "praktikum", + "intercedent", + "health and safety manager", + "united states | professional profile", + "sælger", + "senior analyst programmer", + "desktop support analyst", + "portfolio analyst", + "networker", + "sócia proprietária", + "deputy project manager", + "nenhum", + "news director", + "procurement coordinator", + "assistant instructor", + "dental surgeon", + "control room operator", + "editora", + "selger", + "aide soignante", + "eletricista de manutenção", + "medical office assistant", + "unilever", + "pro bono", + "meteorologist", + "operations planning", + "purchase agent", + "business development assistant", + "fotógrafa", + "lecture", + "freelance video editor", + "class teacher", + "music", + "auditeur", + "asistente legal", + "junior buyer", + "accountant ii", + "firmware engineer", + "tax director", + "supervisor de mantenimiento", + "project estimator", + "loan consultant", + "senior support engineer", + "procurement engineer", + "ceo/president", + "environmental technician", + "travel coordinator", + "medical scribe", + "commis chef", + "client account manager", + "cameriera", + "litigation associate", + "transcriptionist", + "linux system administrator", + "设计总监", + "education assistant", + "transaction coordinator", + "prokurist", + "sports reporter", + "national key account manager", + "squad leader", + "part-time lecturer", + "directeur artistique", + "bibliotecaria", + "ingeniero de software", + "position in sales", + "legal adviser", + "inventory controller", + "communication officer", + "médica", + "ingénieur d'affaires", + "head of hr", + "functional analyst", + "structural designer", + "business banker", + "front desk assistant", + "senior management consultant", + "operaio specializzato", + "account management", + "information technology support specialist", + "venditore", + "specjalista", + "senior software architect", + "legal associate", + "mover", + "professional musician", + "kitchen designer", + "fashion consultant", + "étudiante", + "analyste programmeur", + "tennis instructor", + "mimar", + "assistant systems engineer", + "patient coordinator", + "software developer internship", + "progettista", + "doctoral candidate", + "direttore tecnico", + "销售工程师", + "student engineer", + "senior technical lead", + "board of trustees", + "assistant to the president", + "senior software test engineer", + "coordenador de vendas", + "product support specialist", + "sales floor team member", + "chief strategy officer", + "mechanical engineering", + "senior travel consultant", + "lead cashier", + "responsable de magasin", + "youth counselor", + "servicio al cliente", + "advertising director", + "client services specialist", + "operations consultant", + "client service specialist", + "staff photographer", + "legislative aide", + "emergency room rn", + "candidate attorney", + "book keeper", + "estate agent", + "peon", + "vice president digital", + "quality auditor", + "structural design engineer", + "kundenberater", + "dosen", + "client partner", + "contract analyst", + "professor universitário", + "vorstand", + "free", + "senior web designer", + "loss prevention manager", + "students", + "screenwriter", + "training supervisor", + "betriebsleiter", + "choreographer", + "technical program manager", + "medical doctor phd", + "exploration geologist", + "field application engineer", + "visiting faculty", + "real estate sales agent", + "temporary administrative assistant", + "country director", + "digital account manager", + "mail clerk", + "engineering/technical", + "engenheiro mecânico", + "managing owner", + "school program", + "advocaat", + "journeyman", + "sr technical recruiter", + "training and development manager", + "engineer in training", + "mecânico de manutenção", + "director financiero", + "civil engineering intern", + "site civil engineer", + "customer service administrator", + "warranty administrator", + "técnico de laboratorio", + "técnico de manutenção", + "stage ouvrier", + "agente de seguros", + "collection officer", + "redacteur", + "ingeniero industrial", + "strength and conditioning coach", + "talent acquisition coordinator", + "systems developer", + "senior field engineer", + "cabeleireiro(a)", + "floral designer", + "asst prof", + "pharmacien", + "education manager", + "editorial director", + "apprentice electrician", + "admissions advisor", + "master scheduler", + "senior marketing specialist", + "full-stack developer", + "finance consultant", + "właściciel firmy", + "it developer", + "affiliate", + "senior tax associate", + "corporate communications", + "responsabile tecnico", + "materials engineer", + "assembly technician", + "retention specialist", + "claims processor", + "wealth manager", + "head of development", + "maintenance tech", + "adjunct faculty member", + "united kingdom | professional profile", + "attachée commerciale", + "front desk coordinator", + "basketball coach", + "seguridad", + "leasing specialist", + "advisory board", + "cabeleireira", + "manager business development", + "service assistant", + "zumba instructor", + "aircraft maintenance technician", + "sr design engineer", + "прораб", + "inside sales executive", + "employe", + "taxi driver", + "auxiliar/assistente", + "praticante avvocato", + "sports writer", + "director/owner", + "srmanager", + "marketing staff", + "combat engineer", + "fund manager", + "park ranger", + "chief financial offr", + "various roles", + "corporate sales executive", + "exchange student", + "information technology and services professional", + "chairman and chief executive officer", + "chief executive officer founder", + "orthopedic surgeon", + "customer care agent", + "agente de viajes", + "quality assurance inspector", + "owner principal", + "techniek", + "head of design", + "ekonomiassistent", + "merchandising", + "government employee", + "customer service professional", + "jefe de sistemas", + "web manager", + "corporate sales", + "regional sales executive", + "senior human resources generalist", + "senior clerk", + "public health nurse", + "office administration", + "residente", + "behavior specialist", + "farmaceutica", + "repositor", + "architecture", + "intership", + "transporter", + "associate veterinarian", + "community organizer", + "nail technician", + "conseiller ventes", + "grafiker", + "neurologist", + "pricing manager", + "doctor of chiropractic", + "attending physician", + "benefits analyst", + "gerente de sistemas", + "mining engineer", + "recruitment executive", + "mental health worker", + "oficial administrativo", + "dirección", + "administrador de redes", + "office associate", + "cost engineer", + "revisor", + "repair technician", + "promotions manager", + "responsable de production", + "advertising account executive", + "retail sales assistant", + "seamstress", + "cliente", + "member services representative", + "bénévole", + "профессор", + "work study student", + "front office coordinator", + "tax advisor", + "responsable administratif et financier", + "service writer", + "applications developer", + "area sales executive", + "operaria", + "supply chain management", + "chief commercial officer", + "bar tender", + "customer consultant", + "director finance", + "special events intern", + "investor relations", + "human resources recruitment", + "butikssäljare", + "procurement assistant", + "freelance videographer", + "senior counselor", + "communication", + "vp engineering", + "directivo", + "technical intern", + "project", + "postgraduate student", + "doctorant", + "gymnastics coach", + "it staff", + "stewardess", + "lifeguard/swim instructor", + "production scheduler", + "arquitecto técnico", + "commercial sales manager", + "interior architect", + "научный сотрудник", + "inspecteur", + "músico", + "technical product manager", + "chief estimator", + "sponsoring", + "corretor de imoveis", + "dyrektor", + "начальник", + "credit specialist", + "underwriting manager", + "personal support worker", + "cnc operator", + "business intelligence developer", + "bakery clerk", + "technical service representative", + "director of quality", + "supply teacher", + "benefits consultant", + "lead sales associate", + "senior assistant", + "cameriere", + "firefighter/paramedic", + "internal medicine resident", + "free lance", + "assistant auditor", + "media intern", + "lineman", + "asociado", + "teller supervisor", + "логист", + "boilermaker", + "finance supervisor", + "corporate communications manager", + "sales department", + "wealth management intern", + "costureira", + "computer tech", + "financial professional", + "senior net developer", + "direccion", + "senior product specialist", + "direttore generale", + "directeur régional", + "instructional coach", + "singer/songwriter", + "assembly line", + "digital marketing coordinator", + "barmaid", + "vestigingsmanager", + "director of security", + "vice president credit", + "direct sales representative", + "pr consultant", + "senior hr business partner", + "receiver", + "associate account executive", + "shipping and receiving clerk", + "старший преподаватель", + "teaching artist", + "assistant coordinator", + "operations technician", + "quality assurance tester", + "shipping and receiving", + "estagiário de engenharia", + "counter manager", + "architectural technician", + "mis manager", + "tirocinio", + "food and beverage assistant", + "legal clerk", + "legal trainee", + "solutions manager", + "penningmeester", + "coordinador de proyecto", + "head of communications", + "vikar", + "sales co-ordinator", + "locutor", + "tour operator", + "warehouse clerk", + "engineering co-op", + "magazijnmedewerker", + "priest", + "assistente de compras", + "producer/director", + "terapeuta ocupacional", + "product executive", + "logistics account executive", + "administrator staff", + "managing attorney", + "learning specialist", + "普通劳动者", + "assistente de departamento pessoal", + "release manager", + "laborant", + "фотограф", + "lead programmer", + "food & beverage manager", + "pesquisadora", + "judicial extern", + "special projects", + "tesorero", + "general surgeon", + "merchandise planner", + "six sigma black belt", + "gerente de logística", + "cad manager", + "chief editor", + "начальник отдела продаж", + "hôtesse", + "empleada administrativa", + "genius", + "songwriter", + "lead project manager", + "front office agent", + "president and chief operating officer", + "sargento", + "client support specialist", + "senior team leader", + "councillor", + "programer", + "allround medewerker", + "assistant to the director", + "microbiology researcher", + "adminstrator", + "new business manager", + "directrice générale", + "argentina | perfil profesional", + "senior quality assurance analyst", + "marketing & sales", + "corretor imobiliário", + "executive team leader", + "almacenista", + "life guard", + "interior design", + "film director", + "quality control specialist", + "metrology", + "production controller", + "dir", + "marketing head", + "hr administrative assistant", + "personal shopper", + "aerospace engineer", + "resident director", + "ajudante geral", + "costume designer", + "assistant registrar", + "associate designer", + "client associate", + "analyst intern", + "customer advocate", + "afstudeerstage", + "investment banking associate", + "platoon sergeant", + "sr programmer analyst", + "interim manager", + "content producer", + "area coordinator", + "dueño principal", + "greeter", + "page", + "chef de produit", + "fifth grade teacher", + "auditora", + "supply chain intern", + "army officer", + "seo manager", + "pastry cook", + "civil engineering", + "graduate research and teaching assistant", + "pædagogmedhjælper", + "mri technologist", + "stagehand", + "data processor", + "product support engineer", + "content specialist", + "co-fondateur", + "gestor de área", + "obrero", + "facilities supervisor", + "undersköterska", + "headhunter", + "assistant language teacher", + "account management intern", + "healthcare assistant", + "coordinador administrativo", + "director of pharmacy", + "programme coordinator", + "social work", + "firefighter/emt", + "senior development engineer", + "senior business development executive", + "text real estate agent", + "general worker", + "associate marketing manager", + "asesor jurídico", + "sap fico consultant", + "assistante communication", + "hotel", + "shop supervisor", + "sales trainer", + "umpire", + "nurse assistant", + "administrator assist", + "school", + "president / owner", + "业务主管", + "crm manager", + "serbest", + "tenho uma empresa e tenho funcionários", + "vakkenvuller", + "closer", + "coordenador de produção", + "manager customer service", + "freelance reporter", + "chairman & ceo", + "certified financial planner", + "ondernemer", + "manufacturing engineering manager", + "data analyst intern", + "jefe administrativo", + "slave", + "intake specialist", + "wellness coach", + "master electrician", + "headmaster", + "executive account manager", + "medical laboratory scientist", + "senior lawyer", + "офис-менеджер", + "planning", + "sales and marketing consultant", + "auxiliar de enfermagem", + "niederlassungsleiter", + "assistant finance manager", + "agente de viagens", + "senior account representative", + "web administrator", + "bank officer", + "deli", + "co-op student", + "воспитатель", + "radiation therapist", + "sr developer", + "coordenador administrativo", + "zone manager", + "finance coordinator", + "artesã", + "fysiotherapeut", + "regional director of operations", + "junior officer", + "pensionado", + "executive sales", + "tax assistant", + "marketing strategist", + "salon owner", + "cco", + "instrumentation technician", + "hr representative", + "actuarial intern", + "sales manger", + "spa 经理", + "etl developer", + "responsable magasin", + "professional services consultant", + "commercial officer", + "director of manufacturing", + "commercial underwriter", + "orthodontist", + "banking officer", + "executive creative director", + "deputy editor", + "desktop support specialist", + "高级经理", + "recording artist", + "unix system administrator", + "community outreach coordinator", + "deck cadet", + "ux/ui designer", + "youth director", + "senior process executive", + "profesor de inglés", + "solution consultant", + "website developer", + "professora de inglês", + "head of sales and marketing", + "reservation agent", + "telephone interviewer", + "clinical social", + "orthopaedic surgeon", + "travel manager", + "asst general manager", + "education director", + "route sales representative", + "siniestros", + "lead graphic designer", + "independent insurance agent", + "dhs human services", + "director of finance and administration", + "web content manager", + "chargée de projet", + "docente invitado", + "koordinator", + "mental health technician", + "hardware design engineer", + "purchase executive", + "secrétaire médicale", + "parts specialist", + "fotografa", + "communications associate", + "customer service team leader", + "entrenador", + "media supervisor", + "warehouse employee", + "conference coordinator", + "field director", + "senior it specialist", + "demi chef de partie", + "line producer", + "education teacher", + "welding inspector", + "learning and development manager", + "account development manager", + "exercise physiologist", + "guest services associate", + "childcare worker", + "senior hr manager", + "supervisora de vendas", + "executive coordinator", + "head cook", + "desk assistant", + "senior php developer", + "beautician", + "desenhista projetista", + "payroll assistant", + "jefe de produccion", + "secretaria ejecutiva", + "analista de calidad", + "research and development manager", + "sprzedawca", + "account analyst", + "case worker", + "sale representative", + "junior java developer", + "information technology recruiter", + "3d animator", + "sound designer", + "assistant relationship manager", + "claims assistant", + "ride operator", + "运营经理", + "book author", + "senior financial consultant", + "saler", + "life insurance agent", + "sales staff", + "formacion", + "geschäftsleitung", + "organisational development", + "bi developer", + "infrastructure manager", + "trial attorney", + "senior service engineer", + "cashier/customer service", + "secrétaire général", + "state manager", + "senior field service engineer", + "event director", + "senior policy advisor", + "director of programs", + "first sergeant", + "servidor publico", + "engg", + "daycare provider", + "sygeplejerske", + "graduate student research assistant", + "farmaceutico", + "team supervisor", + "credentialing specialist", + "merchandising assistant", + "operations lead", + "sap human resources", + "records clerk", + "nurse case manager", + "staff consultant", + "beleidsmedewerker", + "delivery", + "理财经理", + "congressional intern", + "butiksbiträde", + "owner/ operator", + "bilingual customer service representative", + "callcenter agent", + "professional athlete", + "corporate account executive", + "trade marketing", + "library director", +} diff --git a/idk/datagen/transactions.go b/idk/datagen/transactions.go new file mode 100644 index 000000000..d7c6b9360 --- /dev/null +++ b/idk/datagen/transactions.go @@ -0,0 +1,207 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Transaction implements interface. +var _ Sourcer = (*Transaction)(nil) + +// Transaction implements Sourcer. +type Transaction struct { + schema []idk.Field +} + +// NewTransaction returns a new instance of Transaction. +func NewTransaction(cfg SourceGeneratorConfig) Sourcer { + return &Transaction{ + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "transaction_type"}, // 1 + idk.StringField{NameVal: "payment_type"}, // 2 + idk.IntField{NameVal: "site_id"}, // 3 + idk.IntField{NameVal: "equip_id"}, // 4 + idk.StringField{NameVal: "customer"}, // 5 + idk.DecimalField{NameVal: "transaction_value", Scale: 2}, // 6 + idk.IntField{NameVal: "timestamp"}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (t *Transaction) Source(cfg SourceConfig) idk.Source { + src := &TransactionSource{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: t.schema, + } + + src.typeZipf = rand.NewZipf(src.rand, 1.03, 4, uint64(len(tsTypes))-1) + src.instoreZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(inStorePayments))-1) + src.ecomZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(ecomPayments))-1) + src.valueZipf = rand.NewZipf(src.rand, 1.2, 4, 50000) + + src.record = make([]interface{}, len(src.schema)) + src.record[7] = int(1420070400 + cfg.startFrom) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (t *Transaction) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (t *Transaction) DefaultEndAt() uint64 { + return 100000000 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (t *Transaction) Info() string { + return "Generates timeseries transaction data (transaction_amount, POS, site) - references data in sites, manufacturer, and equipment." +} + +// Ensure TransactionSource implements interface. +var _ idk.Source = (*TransactionSource)(nil) + +type TransactionSource struct { + Log logger.Logger + + rand *rand.Rand + typeZipf *rand.Zipf + instoreZipf *rand.Zipf + ecomZipf *rand.Zipf + valueZipf *rand.Zipf + + schema []idk.Field + + cur, endAt uint64 + + record record +} + +var transactionTypes = []string{"Ecommerce", "In-store"} + +func (s *TransactionSource) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.cur + s.cur++ + + // transaction type + transType := transactionTypes[s.rand.Intn(2)] + s.record[1] = transType + + // payment type + paymentType := s.paymentType(transType) + s.record[2] = paymentType + + // site id + s.record[3] = s.siteID(transType) + + // equipment id + s.record[4] = s.equipID(transType) + + // customer + s.record[5] = s.customer() + + // transaction_value + s.record[6] = s.value(paymentType) + + // timestamp + s.record[7] = s.record[7].(int) + s.rand.Intn(3) + + return s.record, nil +} + +func (s *TransactionSource) Schema() []idk.Field { + return s.schema +} + +func (s *TransactionSource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*TransactionSource)(nil) + +func (s *TransactionSource) paymentType(transType string) string { + switch { + case transType == "Ecommerce": + return ecomPayments[s.ecomZipf.Uint64()] + case transType == "In-store": + return inStorePayments[s.instoreZipf.Uint64()] + default: + panic("unknown transaction type " + transType) + } +} + +func (s *TransactionSource) siteID(transType string) int64 { + switch { + case transType == "Ecommerce": + num := s.rand.Int63n(500000) + if num < 400000 { + return num + 88000 // retail locations + } else { + return num + 4000000 // subset of data centers + } + case transType == "In-store": + return s.rand.Int63n(400000) + 88000 + default: + panic("unknown transaction type (siteid)" + transType) + } +} + +func (s *TransactionSource) equipID(transType string) int64 { + switch { + case transType == "Ecommerce": + return s.rand.Int63n(3000000) + 20000000 // subset of servers + case transType == "In-store": + return s.rand.Int63n(1000000) + 35000000 // POS devices + default: + panic("unknown transaction type (equipid)" + transType) + + } +} + +func (s *TransactionSource) customer() string { + return customers[s.rand.Intn(len(customers))] +} + +func (s *TransactionSource) value(paymentType string) float64 { + val := float64(s.valueZipf.Uint64() + 15) // 15-50k + + // 25% go lower ... to get some below $15 + if s.rand.Intn(4) == 0 { + val -= float64(s.rand.Intn(14)) + } + + // half the time add cents + if s.rand.Intn(2) == 1 { + val = val + s.rand.Float64() + } + + if paymentType == "Return" { + val = val * -1 + } + return val +} + +func (s *TransactionSource) Close() error { + return nil +} diff --git a/idk/datagen/transactions_scenario_1.go b/idk/datagen/transactions_scenario_1.go new file mode 100644 index 000000000..07b382ab1 --- /dev/null +++ b/idk/datagen/transactions_scenario_1.go @@ -0,0 +1,203 @@ +package datagen + +import ( + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Transaction1 implements interface. +var _ Sourcer = (*Transaction1)(nil) + +// Transaction1 implements Sourcer. +type Transaction1 struct { + schema []idk.Field +} + +// NewTransaction1 returns a new instance of Transaction1. +func NewTransaction1(cfg SourceGeneratorConfig) Sourcer { + return &Transaction1{ + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "transaction_type"}, // 1 + idk.StringField{NameVal: "payment_type"}, // 2 + idk.IntField{NameVal: "site_id"}, // 3 + idk.IntField{NameVal: "equip_id"}, // 4 + idk.StringField{NameVal: "customer"}, // 5 + idk.DecimalField{NameVal: "transaction_value", Scale: 2}, // 6 + idk.IntField{NameVal: "timestamp"}, // 7 + }, + } +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (t *Transaction1) Source(cfg SourceConfig) idk.Source { + src := &Transaction1Source{ + cur: cfg.startFrom, + endAt: cfg.endAt, + + rand: rand.New(rand.NewSource(22)), + + schema: t.schema, + } + + src.instoreZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(inStorePayments))-1) + src.ecomZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(ecomPayments))-1) + src.valueZipf = rand.NewZipf(src.rand, 1.8, 4, 400) + + src.record = make([]interface{}, len(src.schema)) + src.record[7] = int(1509100000 + uint64(59.5*float64(cfg.startFrom))) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (t *Transaction1) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (t *Transaction1) DefaultEndAt() uint64 { + return 23682459 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (t *Transaction1) Info() string { + return "TODO" +} + +// Ensure Transaction1Source implements interface. +var _ idk.Source = (*Transaction1Source)(nil) + +type Transaction1Source struct { + Log logger.Logger + + cur, endAt uint64 + + rand *rand.Rand + instoreZipf *rand.Zipf + ecomZipf *rand.Zipf + valueZipf *rand.Zipf + + schema []idk.Field + + record record +} + +func NewTransaction1Source(start, end uint64) *Transaction1Source { + src := &Transaction1Source{ + cur: start, + endAt: end, + + rand: rand.New(rand.NewSource(22)), + + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, // 0 + idk.StringField{NameVal: "transaction_type"}, // 1 + idk.StringField{NameVal: "payment_type"}, // 2 + idk.IntField{NameVal: "site_id"}, // 3 + idk.IntField{NameVal: "equip_id"}, // 4 + idk.StringField{NameVal: "customer"}, // 5 + idk.DecimalField{NameVal: "transaction_value", Scale: 2}, // 6 + idk.IntField{NameVal: "timestamp"}, // 7 + }, + } + + src.instoreZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(inStorePayments))-1) + src.ecomZipf = rand.NewZipf(src.rand, 1.3, 1.3, uint64(len(ecomPayments))-1) + src.valueZipf = rand.NewZipf(src.rand, 1.8, 4, 400) + + src.record = make([]interface{}, len(src.schema)) + src.record[7] = int(1509100000 + uint64(59.5*float64(start))) + + return src +} + +func (s *Transaction1Source) Record() (idk.Record, error) { + if s.cur >= s.endAt { + return nil, io.EOF + } + s.record[0] = 100000000 + s.cur + + // timestamp + timestamp := s.record[7].(int) + s.rand.Intn(120) + if timestamp > 1509106300 { + return nil, io.EOF + } + s.record[7] = timestamp + + // transaction type + transType := "In-store" + s.record[1] = transType + + // payment type + paymentType := s.paymentType(transType) + s.record[2] = paymentType + + // site id + s.record[3] = 88002 // Retail site which has breaker 712278 + + // equipment id + s.record[4] = []uint64{35100914, 35138991, 35144935, 35329399, 35894415}[s.cur%5] // POSs + + // customer + s.record[5] = "CVS" + + // transaction_value + s.record[6] = s.value(paymentType) + + s.cur++ + + return s.record, nil +} + +func (s *Transaction1Source) Schema() []idk.Field { + return s.schema +} + +func (s *Transaction1Source) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*Transaction1Source)(nil) + +func (s *Transaction1Source) paymentType(transType string) string { + switch { + case transType == "Ecommerce": + return ecomPayments[s.ecomZipf.Uint64()] + case transType == "In-store": + return inStorePayments[s.instoreZipf.Uint64()] + default: + panic("unknown transaction type " + transType) + } +} + +func (s *Transaction1Source) value(paymentType string) float64 { + val := float64(s.valueZipf.Uint64() + 15) // 15-50k + + // 25% go lower ... to get some below $15 + if s.rand.Intn(4) == 0 { + val -= float64(s.rand.Intn(14)) + } + + // add cents + val = val + s.rand.Float64() + + if paymentType == "Return" { + val = val * -1 + } + return val +} + +func (s *Transaction1Source) Close() error { + return nil +} diff --git a/idk/datagen/uscities.data.go b/idk/datagen/uscities.data.go new file mode 100644 index 000000000..9819947c1 --- /dev/null +++ b/idk/datagen/uscities.data.go @@ -0,0 +1,28342 @@ +package datagen + +var uscities = []string{ + "New York", + "Los Angeles", + "Chicago", + "Miami", + "Dallas", + "Philadelphia", + "Houston", + "Atlanta", + "Washington", + "Boston", + "Phoenix", + "Seattle", + "San Francisco", + "Detroit", + "San Diego", + "Minneapolis", + "Tampa", + "Denver", + "Brooklyn", + "Queens", + "Riverside", + "Baltimore", + "Las Vegas", + "Portland", + "San Antonio", + "St. Louis", + "Sacramento", + "Orlando", + "San Jose", + "Cleveland", + "Pittsburgh", + "Austin", + "Cincinnati", + "Kansas City", + "Manhattan", + "Indianapolis", + "Columbus", + "Charlotte", + "Virginia Beach", + "Bronx", + "Milwaukee", + "Providence", + "Jacksonville", + "Salt Lake City", + "Nashville", + "Richmond", + "Memphis", + "Raleigh", + "New Orleans", + "Louisville", + "Oklahoma City", + "Bridgeport", + "Buffalo", + "Fort Worth", + "Hartford", + "Tucson", + "Omaha", + "El Paso", + "Honolulu", + "McAllen", + "Albuquerque", + "Birmingham", + "Sarasota", + "Dayton", + "Rochester", + "Fresno", + "Allentown", + "Tulsa", + "Cape Coral", + "Concord", + "Colorado Springs", + "Charleston", + "Springfield", + "Grand Rapids", + "Mission Viejo", + "Albany", + "Knoxville", + "Bakersfield", + "Ogden", + "Baton Rouge", + "Akron", + "New Haven", + "Columbia", + "Mesa", + "Palm Bay", + "Provo", + "Worcester", + "Murrieta", + "Greenville", + "Wichita", + "Toledo", + "Staten Island", + "Des Moines", + "Long Beach", + "Port St. Lucie", + "Denton", + "Madison", + "Reno", + "Harrisburg", + "Little Rock", + "Oakland", + "Durham", + "Winston-Salem", + "Bonita Springs", + "Indio", + "Palm Coast", + "Chattanooga", + "Spokane", + "Syracuse", + "Lancaster", + "Arlington", + "Stockton", + "Poughkeepsie", + "Augusta", + "Boise", + "Oxnard", + "Scranton", + "Modesto", + "Kissimmee", + "Aurora", + "Youngstown", + "Fayetteville", + "Anaheim", + "Pensacola", + "Victorville", + "Lancaster", + "Greensboro", + "Corpus Christi", + "Fort Wayne", + "Santa Ana", + "Flint", + "Fayetteville", + "Jackson", + "Santa Rosa", + "Lansing", + "San Juan", + "Lexington", + "Ann Arbor", + "Henderson", + "Huntsville", + "Mobile", + "Fort Collins", + "Asheville", + "Santa Clarita", + "St. Paul", + "Antioch", + "Lakeland", + "Trenton", + "Lincoln", + "Springfield", + "Anchorage", + "Plano", + "Irvine", + "Davenport", + "Rockford", + "Newark", + "South Bend", + "Shreveport", + "Round Lake Beach", + "Savannah", + "Myrtle Beach", + "Chula Vista", + "Eugene", + "Canton", + "Lubbock", + "Reading", + "Winter Haven", + "Salem", + "St. Petersburg", + "Lafayette", + "Laredo", + "Jersey City", + "Concord", + "Columbus", + "Chandler", + "McKinney", + "Scottsdale", + "Killeen", + "Tallahassee", + "Peoria", + "Wilmington", + "Montgomery", + "Gilbert", + "Glendale", + "North Las Vegas", + "Chesapeake", + "Barnstable", + "Norfolk", + "Fremont", + "Kennewick", + "Garland", + "Irving", + "Visalia", + "Atlantic City", + "Paradise", + "Nashua", + "Arlington", + "Hialeah", + "York", + "Evansville", + "Avondale", + "Brownsville", + "Gulfport", + "Appleton", + "Bremerton", + "Hickory", + "Tacoma", + "San Bernardino", + "College Station", + "Kalamazoo", + "Thousand Oaks", + "Roanoke", + "Fontana", + "Moreno Valley", + "North Port", + "Fargo", + "Green Bay", + "Spring Valley", + "Amarillo", + "Portland", + "Santa Barbara", + "Gainesville", + "Olympia", + "Frisco", + "Yonkers", + "Norwich", + "Glendale", + "Huntington Beach", + "Deltona", + "Aurora", + "Tempe", + "Overland Park", + "Grand Prairie", + "Sunrise Manor", + "Waco", + "Salinas", + "Waterbury", + "Clarksville", + "Cedar Rapids", + "Sioux Falls", + "Huntington", + "Ontario", + "Hagerstown", + "Erie", + "Vancouver", + "Nampa", + "Spartanburg", + "Gastonia", + "Fort Lauderdale", + "Lorain", + "Murfreesboro", + "High Point", + "Newport News", + "Rancho Cucamonga", + "Hemet", + "Santa Cruz", + "Danbury", + "Peoria", + "Oceanside", + "Elk Grove", + "Pembroke Pines", + "Vallejo", + "Garden Grove", + "Enterprise", + "Medford", + "Cary", + "Marysville", + "Corona", + "Ocala", + "Fredericksburg", + "Gainesville", + "Manchester", + "Bayamón", + "Champaign", + "Alexandria", + "Hayward", + "Springfield", + "Lakewood", + "Lafayette", + "Frederick", + "Lake Charles", + "Odessa", + "Tuscaloosa", + "Warner Robins", + "Palmdale", + "Hollywood", + "Midland", + "Leesburg", + "Port Arthur", + "Muskegon", + "Macon", + "Kansas City", + "Sunnyvale", + "Pomona", + "Escondido", + "Pasadena", + "New Bedford", + "Fairfield", + "Naperville", + "Bellevue", + "Binghamton", + "Elkhart", + "Topeka", + "Joliet", + "Beaumont", + "Paterson", + "Merced", + "Pueblo", + "Tyler", + "Torrance", + "Yuma", + "Metairie", + "Surprise", + "Columbia", + "Athens", + "Roseville", + "Thornton", + "Miramar", + "Pasadena", + "Mesquite", + "Olathe", + "Santa Maria", + "Houma", + "Carrollton", + "Grand Junction", + "Charleston", + "Orange", + "Fullerton", + "Greeley", + "Carolina", + "Las Cruces", + "Panama City", + "Harlingen", + "West Valley City", + "Hampton", + "Warren", + "Mauldin", + "Bloomington", + "Coral Springs", + "Round Rock", + "Yakima", + "Sterling Heights", + "Kent", + "Burlington", + "Bellingham", + "Santa Clara", + "Racine", + "Greenville", + "Stamford", + "Elizabeth", + "Johnson City", + "Lynchburg", + "Simi Valley", + "Fort Smith", + "Kenosha", + "Norman", + "South Lyon", + "Boulder", + "Abilene", + "Lehigh Acres", + "Pearland", + "Berkeley", + "Richardson", + "Redding", + "Arvada", + "East Los Angeles", + "St. George", + "Billings", + "Yuba City", + "Rochester", + "Leominster", + "Kingsport", + "Duluth", + "Rock Hill", + "Gilroy", + "Cambridge", + "Sugar Land", + "Texas City", + "Iowa City", + "Saginaw", + "Chico", + "Dover", + "Clearwater", + `Coeur d'Alene`, + "Seaside", + "Independence", + "West Jordan", + "Brandon", + "Bloomington", + "El Monte", + "North Charleston", + "Carlsbad", + "St. Cloud", + "Temecula", + "Clovis", + "Meridian", + "The Woodlands", + "Ponce", + "Westminster", + "Costa Mesa", + "Monroe", + "Utica", + "Pompano Beach", + "West Palm Beach", + "Waterloo", + "Everett", + "El Centro", + "Santa Fe", + "Downey", + "Spring Hill", + "Lowell", + "Centennial", + "Elgin", + "Richmond", + "Broken Arrow", + "Miami Gardens", + "Bend", + "Burlington", + "Jurupa Valley", + "Sandy Springs", + "Gresham", + "Lewisville", + "Hillsboro", + "San Buenaventura", + "Jacksonville", + "Pottstown", + "Inglewood", + "League City", + "Eau Claire", + "Turlock", + "Temple", + "Sioux City", + "Salisbury", + "Davie", + "Daly City", + "Highlands Ranch", + "Allen", + "West Covina", + "Sparks", + "Wichita Falls", + "San Mateo", + "Columbia", + "Norwalk", + "Rialto", + "Manteca", + "Arden-Arcade", + "El Cajon", + "Burbank", + "Longmont", + "Renton", + "Vista", + "Logan", + "Prescott Valley", + "Vacaville", + "Edinburg", + "Carmel", + "Spokane Valley", + "San Angelo", + "La Crosse", + "Idaho Falls", + "Holland", + "Charlottesville", + "Longview", + "Tracy", + "Boca Raton", + "Lafayette", + `Lee\'s Summit`, + "Rio Rancho", + "South Fulton", + "Beaverton", + "Lawrence", + "Bismarck", + "Orem", + "Middletown", + "San Tan Valley", + "San Marcos", + "Sandy", + "Federal Way", + "Mandeville", + "Hesperia", + "Brockton", + "Compton", + "Riverview", + "Fishers", + "Sunrise", + "Bowling Green", + "Roswell", + "Menifee", + "Plantation", + "Dover", + "Quincy", + "Portsmouth", + "Chino", + "Lynn", + "Edmond", + "Hanford", + "Dearborn", + "Livonia", + "South Gate", + "Vineland", + "Florence", + "Portsmouth", + "Slidell", + "Lawton", + "Kirkland", + "Missoula", + "Auburn", + "Rapid City", + "Terre Haute", + "Suffolk", + "Blacksburg", + "Mount Pleasant", + "Carson", + "Conroe", + "Alafaya", + "Livermore", + "Westminster", + "Germantown", + "Santa Monica", + "New Braunfels", + "Fall River", + "Albany", + "Miami Beach", + "Norwalk", + "San Leandro", + `O'Fallon`, + "Newton", + "Muncie", + "Citrus Heights", + "State College", + `Town 'n' Country`, + "Decatur", + "Jackson", + "Fort Myers", + "Goodyear", + "Dalton", + "Bryan", + "Waukegan", + "Hawthorne", + "Anderson", + "Redwood City", + "Hoover", + "Lake Forest", + "Napa", + "Whittier", + "Clifton", + "Largo", + "Bloomington", + "Johns Creek", + "Newport Beach", + "Mission", + "Milpitas", + "Troy", + "Madera", + "Joplin", + "Chino Hills", + "Alhambra", + "Franklin", + "Melbourne", + "Port Huron", + "Springfield", + "Mountain View", + "Zephyrhills", + "St. Augustine", + "Flagstaff", + "Buena Park", + "Pleasanton", + "Silver Spring", + "Atascocita", + "Westland", + "Auburn", + "Cranston", + "Somerville", + "Folsom", + "Springdale", + "Deerfield Beach", + "Warwick", + "Cicero", + "Farmington Hills", + "Newark", + "Williamsburg", + "Brooklyn Park", + "Hattiesburg", + "Alexandria", + "Lawrence", + "Florence", + "Valdosta", + "Plymouth", + "Buckeye", + "Georgetown", + "Cheyenne", + "Cedar Park", + "The Villages", + "Kokomo", + "Tustin", + "Lakewood", + "Perris", + "St. Joseph", + "Flower Mound", + "Pharr", + "Pine Hills", + "Alton", + "Loveland", + "Boynton Beach", + "New Rochelle", + "Anderson", + "Jonesboro", + "Lebanon", + "Parma", + "Layton", + "Elizabethtown", + "Texarkana", + "Alameda", + "Kankakee", + "Watsonville", + "Porterville", + "Baytown", + "Upland", + "Davis", + "Camarillo", + "South Jordan", + "Battle Creek", + "Bellflower", + "San Marcos", + "San Ramon", + "Lake Jackson", + "Bethlehem", + "Wyoming", + "Oshkosh", + "Hammond", + "Waldorf", + "Missouri City", + "Pasco", + "Wheeling", + "Kendall", + "Baldwin Park", + "Rancho Cordova", + "Conway", + "Gary", + "Altoona", + "Lodi", + "Arlington Heights", + "Bolingbrook", + "Rochester Hills", + "Winchester", + "Framingham", + "Hilton Head Island", + "Centreville", + "Union City", + "Owensboro", + "Jackson", + "Cleveland", + "Wausau", + "Camden", + "Anniston", + "Evanston", + "Apple Valley", + "Mansfield", + "Caguas", + "Schaumburg", + "Pocatello", + "Woodbury", + "Southfield", + "Ellicott City", + "Dale City", + "Maple Grove", + "Pittsburg", + "New Britain", + "Morgantown", + "Mansfield", + "Hammond", + "Dothan", + "Harrisonburg", + "Wenatchee", + "Waukesha", + "Pawtucket", + "Redmond", + "Lauderhill", + "Sumter", + "Redlands", + "Daphne", + "Mount Vernon", + "Weston", + "St. Charles", + "Janesville", + "Sherman", + "North Richland Hills", + "Broomfield", + "El Paso de Robles", + "Bristol", + "Wilmington", + "Casas Adobes", + "Walnut Creek", + "Poinciana", + "Lynwood", + "Glen Burnie", + "Lehi", + "Passaic", + "Homestead", + "West Bend", + "Delray Beach", + "Sheboygan", + "Lake Elsinore", + "Daytona Beach", + "Los Lunas", + "Lima", + "Decatur", + "Rocklin", + "Rogers", + "Castle Rock", + "Hanover", + "Bossier City", + "Dubuque", + "Rockville", + "Victoria", + "Saratoga Springs", + "Guaynabo", + "Gaithersburg", + "Union City", + "Ames", + "West Des Moines", + "South San Francisco", + "Yorba Linda", + "Casper", + "Palatine", + "Corvallis", + "Ankeny", + "Mount Vernon", + "Rowlett", + "Lakeville", + "Alpharetta", + "Longview", + "DeKalb", + "Petaluma", + "Redondo Beach", + "Tamarac", + "Laguna Niguel", + "Eagan", + "Kenner", + "Bay City", + "North Little Rock", + "Sammamish", + "Shawnee", + "Jupiter", + "Doral", + "Florence-Graham", + "Carbondale", + "Blaine", + "Weirton", + "Tulare", + "Wellington", + "Pflugerville", + "Palo Alto", + "Schenectady", + "Great Falls", + "Michigan City", + "Bayonne", + "Eden Prairie", + "Port Orange", + "Dublin", + "Grand Forks", + "Noblesville", + "San Clemente", + "Brentwood", + "Carmichael", + "East Orange", + "Eastvale", + "Chapel Hill", + "Rocky Mount", + "Haverhill", + "Beloit", + "Glens Falls", + "Brentwood", + "Fairbanks", + "Springfield", + "Bethesda", + "Johnstown", + "Dundalk", + "Castro Valley", + "Coon Rapids", + "Elmira", + "Mankato", + "Albany", + "North Miami", + "Encinitas", + "Skokie", + "Leander", + "Parkersburg", + "Waltham", + "Port Charlotte", + "Palm Harbor", + "San Luis Obispo", + "Sebring", + "Council Bluffs", + "Hamilton", + "Moore", + "Pico Rivera", + "Casa Grande", + "Monessen", + "Montebello", + "Rome", + "The Hammocks", + "Millcreek", + "Sanford", + "National City", + "Mayagüez", + "Burnsville", + "Coconut Creek", + "Morristown", + "Reston", + "Lakewood", + "Spring", + "Gadsden", + "Taylor", + "Novi", + "Marietta", + "Hot Springs", + "Woodland", + "Fountainebleau", + "La Habra", + "Malden", + "South Whittier", + "Commerce City", + "South Hill", + "Bristol", + "Columbus", + "West Allis", + "Taylorsville", + "Bangor", + "Monterey Park", + "Greenwood", + "Bartlett", + "Bradenton", + "Pontiac", + "Staunton", + "Meriden", + "Gardena", + "Apex", + "Royal Oak", + "Cupertino", + "La Mesa", + "Benton Harbor", + "St. Clair Shores", + "Des Plaines", + "Lewiston", + "Margate", + "Midland", + "Carson City", + "Bowie", + "Middletown", + "Caldwell", + "San Rafael", + "Richland", + "St. Peters", + "Wesley Chapel", + "Hendersonville", + "White Plains", + "Huntersville", + "Santee", + "Jefferson City", + "Beckley", + "Arcadia", + "Titusville", + "Cartersville", + "Walla Walla", + "Orland Park", + "Towson", + "Weymouth", + "Parker", + "Palm Beach Gardens", + "Bozeman", + "East Stroudsburg", + "Huntington Park", + "Taunton", + "Midwest City", + "Medford", + "Goldsboro", + "Euless", + "Manhattan", + "Shoreline", + "Lake Havasu City", + "Smyrna", + "Cape Girardeau", + "Tamiami", + "Kendale Lakes", + "Grants Pass", + "Blue Springs", + "Southaven", + "Tinley Park", + "Diamond Bar", + "Pittsfield", + "Eagle Pass", + "New Brunswick", + "Lenexa", + "Hazleton", + "Twin Falls", + "Brookhaven", + "Novato", + "Tigard", + "Highland", + "Fountain Valley", + "Dearborn Heights", + "Grapevine", + "Fond du Lac", + "Hacienda Heights", + "Ithaca", + "Apple Valley", + "Chicopee", + "Oak Lawn", + "Cathedral City", + "Delano", + "Bentonville", + "Stonecrest", + "Kettering", + "Colton", + "Kingston", + "West Haven", + "St. Cloud", + "Normal", + "Berwyn", + "Milford", + "Aloha", + "Arroyo Grande", + "Minnetonka", + "Rosemead", + "Paramount", + "Yucaipa", + "Brunswick", + "Williamsport", + "Elyria", + "Leesburg", + "Mount Prospect", + "Pinellas Park", + "Bellevue", + "West Sacramento", + "Apopka", + "Lewiston", + "Grand Island", + "Palm Desert", + "Milford city ", + "Watertown", + "Little Elm", + "Chambersburg", + "Revere", + "Peabody", + "Wylie", + "Beaufort", + "Aspen Hill", + "DeSoto", + "Helena", + "Edina", + "Wheaton", + "West New York", + "Hoboken", + "Lacey", + "Summerville", + "Oak Park", + "Maricopa", + "Lompoc", + "Kentwood", + "Levittown", + "Sierra Vista", + "Levittown", + "Madison", + "Smyrna", + "Glendora", + "Burien", + "Perth Amboy", + "Herriman", + "Farmington", + "New Bern", + "Placentia", + "Hinesville", + "Beaumont", + "Collierville", + "West Lafayette", + "Florissant", + "Hoffman Estates", + "Queen Creek", + "Aliso Viejo", + "Kannapolis", + "Methuen Town", + "Sahuarita", + "Traverse City", + "Severn", + "Catalina Foothills", + "Galveston", + "Country Club", + "Cookeville", + "Mishawaka", + "Rowland Heights", + "Plainfield", + "Bullhead City", + "Stillwater", + "Forney", + "Wheaton", + "Azusa", + "North Bethesda", + "Cerritos", + "Ashburn", + "Bloomsburg", + "Morehead City", + "Coral Gables", + "Enid", + "Lakewood", + "Oroville", + "Wilson", + "Lawrence", + "Portage", + "Minot", + "Dunwoody", + "Poway", + "San Jacinto", + "Troy", + "Newark", + "Cuyahoga Falls", + "Downers Grove", + "Bedford", + "Reedley", + "Dublin", + "Marana", + "Cypress", + "Hollister", + "Murray", + "Roswell", + "Pascagoula", + "Tuckahoe", + "Ceres", + "St. Louis Park", + "Rio Grande City", + "Draper", + "Palm Springs", + "Paducah", + "Findlay", + "University", + "Bel Air South", + "Antelope", + "Kyle", + "Monroe", + "Lincoln", + "Ocoee", + "Burleson", + "La Mirada", + "Farmers Branch", + "East Lansing", + "Uniontown", + "Jeffersonville", + "Winder", + "Wauwatosa", + "Littleton", + "Cumberland", + "Cedar Hill", + "Carrollton", + "Rancho Santa Margarita", + "Beavercreek", + "Niagara Falls", + "McLean", + "North Highlands", + "East Providence", + "Florin", + "East Honolulu", + "Chesterfield", + "Covina", + "Bothell", + "Glenview", + "Mentor", + "Keller", + "Danville", + "Spring Hill", + "Roseville", + "Elmhurst", + "New Philadelphia", + "Sandusky", + "El Dorado Hills", + "Salina", + "Euclid", + "Kingman", + "Everett", + "Farmington", + "Weatherford", + "Middletown", + "Roseburg", + "Biloxi", + "Leavenworth", + "Fort Pierce", + "Winter Garden", + "Oro Valley", + "Morgan Hill", + "Potomac", + "Pinehurst", + "Danville", + "Rockwall", + "Coachella", + "Wake Forest", + "Pearl City", + "Tupelo", + "Attleboro", + "Pine Bluff", + "Oakland Park", + "Marion", + "Hilo", + "Lufkin", + "Altadena", + "Manitowoc", + "Lake Ridge", + "Selma", + "Strongsville", + "Danville", + "Quincy", + "Lancaster", + "Riverton", + "The Colony", + "Urbandale", + "Plainfield", + "Lombard", + "Prescott", + "North Lauderdale", + "Eureka", + "Hackensack", + "Sayreville", + "Altamonte Springs", + "Del Rio", + "Cleveland Heights", + "Bountiful", + "Desert Hot Springs", + "Peachtree Corners", + "Haltom City", + "Ormond Beach", + "Cutler Bay", + "Trujillo Alto", + "Adrian", + "Goose Creek", + "Moorhead", + "Westfield", + "Concord", + "Annandale", + "Rohnert Park", + "Brea", + "Klamath Falls", + "Salem", + "Channelview", + "North Miami Beach", + "Whitney", + "Freeport", + "Centralia", + "Gallatin", + "Stevens Point", + "San Bruno", + "Burke", + "Brentwood", + "North Fort Myers", + "Hicksville", + "West Babylon", + "Edmonds", + "Apache Junction", + "Fairfield", + "Oakley", + "Hutchinson", + "Greenwood", + "Richmond", + "Linden", + "Puyallup", + "Huntsville", + "Urbana", + "Beverly", + "Clovis", + "Statesboro", + "Hobbs", + "McMinnville", + "Schertz", + "Bell Gardens", + "Oviedo", + "Odenton", + "Grove City", + "Campbell", + "Wentzville", + "Woonsocket", + "La Quinta", + "Weslaco", + "Zanesville", + "Newnan", + "Shakopee", + "Brighton", + "Catonsville", + "Rancho Palos Verdes", + "Mableton", + "Coppell", + "Linton Hall", + "Moline", + "Delaware", + "Westfield", + "Shelton", + "Greenacres", + "Westerville", + "Manassas", + "Kearny", + "Los Banos", + "Richmond", + "Spanish Fork", + "Belleville", + "Maplewood", + "Wilkes-Barre", + "Pottsville", + "Columbia", + "Bartlett", + "Bluefield", + "Fitchburg", + "Marion", + "Cedar Falls", + "Buffalo Grove", + "Jamestown", + "Woodlawn", + "Clarksburg", + "Royal Palm Beach", + "Marion", + "Covington", + "Coram", + "Friendswood", + "Indian Trail", + "Woburn", + "The Acreage", + "Holyoke", + "Montclair", + "South Valley", + "Torrington", + "Cedar City", + "San Gabriel", + "Hallandale Beach", + "Crystal Lake", + "Calexico", + "Lake Oswego", + "Amherst", + "Muskogee", + "Romeoville", + "Plant City", + "Keizer", + "New Berlin", + "Chelsea", + "La Puente", + "Roy", + "Security-Widefield", + "Marlborough", + "Milton", + "Issaquah", + "Waipahu", + "Essex", + "Bartlesville", + "Lancaster", + "Streamwood", + "Germantown", + "Annapolis", + "Carol Stream", + "Asheboro", + "Culver City", + "Kalispell", + "Arecibo", + "Lynnwood", + "Mooresville", + "Brookfield", + "Crestview", + "Horizon West", + "Clinton", + "Moses Lake", + "New Castle", + "Olive Branch", + "Enterprise", + "Sun City", + "Frankfort", + "Northglenn", + "Warren", + "Duncanville", + "Hurst", + "Clermont", + "Wheeling", + "Fort Lee", + "Pacifica", + "Lake Worth", + "Lebanon", + "Kendall West", + `Land O' Lakes`, + "Eagle Mountain", + "Reynoldsburg", + "Oxford", + "Rosenberg", + "Martinez", + "Pleasant Grove", + "La Presa", + "Severna Park", + "Huber Heights", + "Stanton", + "East Meadow", + "Menomonee Falls", + "Granbury", + "Waxahachie", + "Valrico", + "Mission Bend", + "Holly Springs", + "Butler", + "Albertville", + "London", + "Egypt Lake-Leto", + "Cottage Grove", + "Kailua", + "St. Marys", + "Mechanicsville", + "Richmond West", + "Cleburne", + "Valley Stream", + "Hanover Park", + "Oswego", + "Navarre", + "Oregon City", + "Winter Springs", + "Parkland", + "Pahrump", + "Carpentersville", + "Wildomar", + "Greenfield", + "Braintree", + "Rock Island", + "South Miami Heights", + "Evans", + "West Fargo", + "Mount Juliet", + "San Juan", + "Oakton", + "Georgetown", + "Portage", + "Aventura", + "Owasso", + "Commack", + "Park Ridge", + "Foley", + "New Albany", + "Benton", + "Meridian", + "Bettendorf", + "Dunedin", + "Hilliard", + "Merritt Island", + "Phenix City", + "Addison", + "West Hollywood", + "Roseville", + "Oakville", + "Tucker", + "Moorpark", + "Richfield", + "Monrovia", + "Kearns", + "Oak Creek", + "Lincoln Park", + "Claremont", + "Oswego", + "Post Falls", + "Peachtree City", + "Lauderdale Lakes", + "French Valley", + "Portsmouth", + "Shawnee", + "Gillette", + "Tooele", + "Prattville", + "Woodburn", + "Watertown Town", + "Calumet City", + "San Juan Capistrano", + "Foothill Farms", + "Elmont", + "Franklin", + "Temple City", + "Cooper City", + "El Mirage", + "Meadow Woods", + "LaGrange", + "La Vergne", + "Middletown", + "Mount Pleasant", + "Carrollwood", + "Junction City", + "Inver Grove Heights", + "Chillum", + "Monroe", + "Randallstown", + "Bell", + "Gahanna", + "Sanford", + "Riviera Beach", + "Wildwood", + "Upper Arlington", + "Auburn", + "Plainfield", + "Westmont", + "Oak Harbor", + "Olney", + "Manhattan Beach", + "New City", + "Owings Mills", + "La Porte", + "Englewood", + "Brunswick", + "East Point", + "DeLand", + "Martinez", + "Pleasant Hill", + "Orangevale", + "Merrillville", + "Stow", + "Buenaventura Lakes", + "San Luis", + "Oildale", + "Calhoun", + "Leawood", + "Menlo Park", + "Sun Prairie", + "Dakota Ridge", + "Arcata", + "Lockport", + "Pullman", + "Boardman", + "Nacogdoches", + "Kearney", + "Vestavia Hills", + "North Ridgeville", + "Socorro", + "Randolph", + "Norristown", + "Montgomery Village", + "Redmond", + "Firestone", + "Goshen", + "Butte", + "Russellville", + "Grass Valley", + "Parkland", + "University City", + "Midvale", + "Golden Glades", + "Franklin", + "Kennesaw", + "Adelanto", + "Ken Caryl", + "Carlsbad", + "University Place", + "Chester", + "Douglasville", + "Salisbury", + "Laramie", + "Lake Stevens", + "Foster City", + "Valparaiso", + "Fairborn", + "Estero", + "Mason", + "Cottonwood Heights", + "Kaneohe", + "Sonoma", + "Beverly Hills", + "Galesburg", + "Warsaw", + "San Dimas", + "Glendale Heights", + "Dana Point", + "Midlothian", + "Newark", + "Alamogordo", + "Alabaster", + "Pikesville", + "Fair Oaks", + "Deer Park", + "Long Beach", + "Woodridge", + "Bridgeton", + "Greer", + "Springville", + "Saratoga Springs", + "Copperas Cove", + "American Fork", + "Franklin", + "Andover", + "Matthews", + "Woodstock", + "Florence", + "Northbrook", + "West Little River", + "Fair Lawn", + "St. Charles", + "Huntington Station", + "Fairmont", + "Ridgecrest", + "Massillon", + "Spanaway", + "Starkville", + "Harker Heights", + "Elk Grove Village", + "Kaysville", + "Lawndale", + "Southlake", + "Ferry Pass", + "Savage", + "Des Moines", + "Bethel Park", + "Princeton", + "Dania Beach", + "Spring Valley", + "Bowling Green", + "Springfield", + "East Lake", + "College Park", + "Coos Bay", + "Smithfield", + "Rome", + "Clearfield", + "Liberty", + "Eastpointe", + "Franklin Square", + "Pekin", + "Westlake", + "Uniondale", + "Chillicothe", + "La Verne", + "Juneau", + "Prairieville", + "Placerville", + "Bel Air North", + "Redan", + "Martinsville", + "Pueblo West", + "Garfield", + "Fallbrook", + "Spring Valley", + "Hopkinsville", + "Rochester", + "South Riding", + "Centereach", + "Milledgeville", + "Syracuse", + "Parkville", + "Sherwood", + "Garner", + "Key West", + "Miami Lakes", + "Petersburg", + "North Olmsted", + "Kahului", + "Wheat Ridge", + "Fruit Cove", + "Cibolo", + "Alliance", + "Banning", + "Laguna Hills", + "Central Islip", + "Athens", + "Princeton", + "Orcutt", + "Naugatuck", + "Eldersburg", + "Columbus", + "Mundelein", + "Fair Oaks", + "San Pablo", + "Rexburg", + "Nogales", + "Nicholasville", + "Goleta", + "Opelika", + "Algonquin", + "Marrero", + "Burlingame", + "Aiken", + "Lawrenceville", + "Winter Park", + "Lake Magdalene", + "Fitchburg", + "Granger", + "Wooster", + "Fountain", + "Brooklyn Center", + "Kerrville", + "Barstow", + "Oceanside", + "Canton", + "Auburn", + "Crown Point", + "Windsor", + "Lakeside", + "Gloucester", + "Gurnee", + "Orangeburg", + "Holladay", + "Fuquay-Varina", + "Chamblee", + "Carney", + "Peru", + "Sterling", + "Cornelius", + "North Tonawanda", + "Long Branch", + "Santa Paula", + "Los Gatos", + "South Lake Tahoe", + "San Carlos", + "Clinton", + "Saratoga", + "Los Altos", + "Ballwin", + "Atascadero", + "North Royalton", + "Somerset", + "Seguin", + "Fortuna Foothills", + "Milford Mill", + "Pasadena", + "Stockbridge", + "East Liverpool", + "Rahway", + "Madison Heights", + "Williston", + "Bay Shore", + "Eagle", + "Westchester", + "Maryville", + "Walnut", + "Suisun City", + "Garden City", + "Texarkana", + "Kent", + "West Falls Church", + "North Chicago", + "Greenville", + "Duluth", + "Aberdeen", + "Winona", + `O'Fallon`, + "Drexel Heights", + "Ukiah", + "Atwater", + "Golden Gate", + "Sanford", + "Highland Park", + "Westfield", + "Hermiston", + "Oak Park", + "Central", + "East Lake-Orient Park", + "Chicago Heights", + "East Palo Alto", + "Newberg", + "Lewes", + "North Attleborough", + "Washington", + "Port Chester", + "Oak Ridge", + "Crofton", + "Athens", + "Laplace", + "SeaTac", + "Raytown", + "Paragould", + "Graham", + "Southgate", + "Harrison", + "Niles", + "Fernandina Beach", + "Big Spring", + "Bella Vista", + "Milton", + "Morrisville", + "Greenville", + "Casselberry", + "Plattsburgh", + "Wasco", + "South Laurel", + "Fleming Island", + "Belle Glade", + "Lake in the Hills", + "Agawam", + "Shirley", + "Burton", + "Geneva", + "Schererville", + "Independence", + "West Springfield", + "Austintown", + "Burlington", + "Shamokin", + "New Iberia", + "Northampton", + "Englewood", + "Vineyard", + "Zionsville", + "Short Pump", + "Burbank", + "Lumberton", + "Perry Hall", + "Aberdeen", + "Benicia", + "Oakleaf Plantation", + "Jacksonville", + "Winchester", + "Rockledge", + "Henderson", + "Monterey", + "Converse", + "Granite City", + "Yukon", + "Sonora", + "Melrose", + "Mehlville", + "Wisconsin Rapids", + "Galt", + "Hutto", + "Bixby", + "Hobart", + "Drexel Hill", + "Oakdale", + "Sunbury", + "Summerlin South", + "New Smyrna Beach", + "Tualatin", + "Forest Hills", + "Fridley", + "East Chicago", + "Kirkwood", + "Sanger", + "Morgan City", + "Ramsey", + "Ruston", + "Jeffersontown", + "Glen Ellyn", + "Isla Vista", + "Cañon City", + "Monticello", + "Ashtabula", + "Temescal Valley", + "Bridgewater", + "Mint Hill", + "Mililani Town", + "Statesville", + "Gloversville", + "Gladstone", + "Deer Park", + "Fremont", + "Garfield Heights", + "Imperial Beach", + "Seneca", + "Florence", + "Bayonet Point", + "Lansing", + "Millville", + "Monroeville", + "St. Helens", + "Bergenfield", + "Ladera Ranch", + "Horn Lake", + "Prior Lake", + "Huntley", + "Maple Valley", + "Easton", + "Oak Forest", + "Glen Cove", + "Indiana", + "Shoreview", + "Windsor", + "Sterling", + "Dodge City", + "Colleyville", + "Wilmette", + "Plum", + "Mount Pleasant", + "McHenry", + "Waterville", + "Norfolk", + "Shaker Heights", + "Citrus Park", + "Reisterstown", + "Erie", + "Brownsburg", + "Chaska", + "Ilchester", + "Shelby", + "Maywood", + "Maryland Heights", + "Magna", + "Xenia", + "Belmont", + "Allen Park", + "Mason City", + "New Lenox", + "Hanahan", + "Kinston", + "Searcy", + "New London", + "West Islip", + "West Chicago", + "Kiryas Joel", + "Lemon Grove", + "Lindenhurst", + "McDonough", + "West Linn", + "Cortland", + "Lemoore", + "Alvin", + "Waynesboro", + "Marshalltown", + "Lebanon", + "West Whittier-Los Nietos", + "Leisure City", + "Thomasville", + "Temple Terrace", + "Lafayette", + "University Park", + "Norco", + "Immokalee", + "Vernon Hills", + "Pearl", + "Bethany", + "Marquette", + "Sedalia", + "Bessemer", + "Plainview", + "Batavia", + "Garden City", + "Chanhassen", + "Cabot", + "Vicksburg", + "Brawley", + "Neenah", + "Snoqualmie", + "Troy", + "Hercules", + "Lake City", + "Paramus", + "Okeechobee", + "Soledad", + "Muscatine", + "Boone", + "Moscow", + "Cliffside Park", + "Sebastian", + "Northport", + "Natchez", + "Winchester", + "Twentynine Palms", + "Holt", + "East St. Louis", + "Sachse", + "Paris", + "Haines City", + "Cave Spring", + "Superior", + "West Odessa", + "Medina", + "Conway", + "Barberton", + "Española", + "Dix Hills", + "Rock Springs", + "Mercer Island", + "Heber", + "White Bear Lake", + "Laurel", + "Holbrook", + "Bay Point", + "Woodstock", + "Lochearn", + "Green", + "Cloverleaf", + "Owatonna", + "Decatur", + "Pooler", + "Madison", + "Lancaster", + "Ewa Gentry", + "Laurel", + "Austin", + "Lockport", + "Franklin", + "South Salt Lake", + "Tarpon Springs", + "Edgewood", + "San Lorenzo", + "Bluffton", + "Sevierville", + "Forest Grove", + "Sun City West", + "South Portland", + "Ruskin", + "Denison", + "El Cerrito", + "Keystone", + "Coral Terrace", + "Claremore", + "Homewood", + "Farmington", + "Columbine", + "South Pasadena", + "Canyon Lake", + "Kingsville", + "Forest City", + "Salem", + "Bainbridge Island", + "Caledonia", + "Champlin", + "Edwardsville", + "South Bradenton", + "Fairland", + "Palm Springs", + "Elk River", + "Rosemount", + "Fountain Hills", + "Belvidere", + "Riverside", + "Middle River", + "Muskego", + "Levittown", + "Hazelwood", + "Scottsbluff", + "Fresno", + "Ridgewood", + "Yucca Valley", + "Branson", + "Balch Springs", + "University Park", + "Timberwood Park", + "De Pere", + "Socastee", + "Terrytown", + "Fajardo", + "Marysville", + "Derby", + "Wilsonville", + "Clayton", + "Brookings", + "Riverbank", + "North Laurel", + "Walker", + "Wyandotte", + "Grandview", + "Forest Lake", + "Chesapeake Beach", + "Palm City", + "Hudson", + "Clarksburg", + "South Elgin", + "Auburn Hills", + "Baldwin", + "North Tustin", + "Ontario", + "Melrose Park", + "Ardmore", + "Hastings", + "Burlington", + "Norton Shores", + "Kernersville", + "Sugar Hill", + "Herndon", + "Emporia", + "Prosper", + "Rockville Centre", + "Palmetto Bay", + "Suitland", + "Somerset", + "Avon Lake", + "Lathrop", + "Loma Linda", + "Watauga", + "Homer Glen", + "Tifton", + "Dinuba", + "Bloomingdale", + "Westmont", + "Clinton", + "Ashland", + "Opelousas", + "Camas", + "Harvey", + "Medford", + "Trotwood", + "West Memphis", + "Collinsville", + "Mequon", + "Ellensburg", + "Ottumwa", + "Chantilly", + "Shelbyville", + "Woodlawn", + "Lodi", + "Orchards", + "Newport", + "San Fernando", + "Saginaw", + "Peekskill", + "Port Angeles", + "Mill Creek East", + "Brandon", + "Sun City Center", + "Inkster", + "Thomasville", + "Ponca City", + "Cataño", + "Tysons", + "West Melbourne", + "Faribault", + "San Benito", + "Fort Washington", + "Lincolnton", + "West Springfield", + "Simpsonville", + "Waverly", + `Bailey's Crossroads`, + "Okemos", + "Ridgeland", + "Elmwood Park", + "North Platte", + "Charles Town", + "Freeport", + "Waukee", + "South Plainfield", + "Wadsworth", + "Tumwater", + "Fairfax", + "Candler-McAfee", + "Oak Ridge", + "Venice", + "Wright", + "Lincolnia", + "Westchase", + "Edgewater", + "North Potomac", + "Pelham", + "Corsicana", + "Seal Beach", + "Fort Dodge", + "Dunkirk", + "Calabasas", + "Chalmette", + "North Augusta", + "Palm River-Clair Mel", + "Mount Pocono", + "Farragut", + "Jenks", + "Palatka", + "Coronado", + "Valinda", + "Centerville", + "Van Buren", + "Greeneville", + "Waycross", + "Half Moon Bay", + "Belton", + "Jacksonville Beach", + "North Lynnwood", + "Ilion", + "Rosemont", + "Seymour", + "Oakdale", + "Madisonville", + "Romulus", + "Cudahy", + "Copiague", + "Winter Gardens", + "Leland", + "Rolling Meadows", + "Wekiwa Springs", + "Northdale", + "Fort Hood", + "Benbrook", + "Zion", + "Watertown", + "Montrose", + "Hialeah Gardens", + "Columbus", + "Plainview", + "Auburn", + "Carteret", + "Arnold", + "Avon", + "West Puente Valley", + "Loves Park", + "Vero Beach South", + "Lisle", + "Greenbelt", + "Granite Bay", + "Maywood", + "Dickinson", + "Oxford", + "Kenmore", + "Allison Park", + "Farmington", + "Monsey", + "Hastings", + "Rockingham", + "Greenfield", + "Auburn", + "Frederickson", + "Willoughby", + "Mustang", + "Patterson", + "Gallup", + "Radcliff", + "West Rancho Dominguez", + "Blue Island", + "Crystal", + "Belton", + "Pace", + "Marshall", + "Laguna Beach", + "Webster Groves", + "Acworth", + "Griffin", + "Willowbrook", + "Morton Grove", + "Keene", + "Marina", + "Solon", + "New Brighton", + "Mandan", + "Pittsburg", + "Elizabeth City", + "Harriman", + "Ives Estates", + "Greenfield", + "Fairhope", + "Cottage Lake", + "Machesney Park", + "Braidwood", + "Hurricane", + "Trussville", + "Waynesboro", + "Johnston", + "Corcoran", + "Meadville", + "Landover", + "Happy Valley", + "East Peoria", + "Hopewell", + "Fort Walton Beach", + "Nixa", + "Clinton", + "Munster", + "Christiansburg", + "Anthem", + "Roselle", + "Garden City", + "The Crossings", + "Warrensburg", + "Kihei", + "Union City", + "Millbrae", + "Florida Ridge", + "Silver Firs", + "Dolton", + "Duncan", + "Brent", + "Northfield", + "Highland", + "Sequim", + "Prairie Village", + "Kuna", + "Coralville", + "Fort Mill", + "Rose Hill", + "Hudson", + "Lutz", + "Taylors", + "Roanoke Rapids", + "Vega Baja", + "Raymore", + "Ensley", + "Fremont", + "Mukwonago", + "Watertown", + "East Patchogue", + "Lebanon", + "Pickerington", + "Lexington", + "Arvin", + "Lino Lakes", + "Augusta", + "Milford", + "Shelbyville", + "Corinth", + "Naples", + "West Carson", + "Maple Heights", + "Lealman", + "Chester", + "Gardner", + "Union Hill-Novelty Hill", + "Hayesville", + "Siloam Springs", + "Piqua", + "Fish Hawk", + "Port Hueneme", + "Lakeside", + "Summit", + "Secaucus", + "Golden Valley", + "Jasmine Estates", + "Mount Vernon", + "Bloomington", + "Camp Springs", + "Lennox", + "Roselle", + "Geneva", + "Sunny Isles Beach", + "Rancho San Diego", + "Massapequa", + "Bloomingdale", + "Shafter", + "Eastmont", + "Katy", + "Brownwood", + "Del City", + "Jacksonville", + "North Bay Shore", + "Silverdale", + "Kapolei", + "Allendale", + "Darien", + "Perrysburg", + "Lewistown", + "Hamtramck", + "La Porte", + "Clarksville", + "New Castle", + "Bellview", + "Biddeford", + "McNair", + "Villa Park", + "Fernley", + "Elkridge", + "Mukilteo", + "Atoka", + "Prichard", + "Hays", + "Birmingham", + "Easley", + "Brambleton", + "Mountlake Terrace", + "Ramona", + "Owosso", + "King of Prussia", + "DeBary", + "Eustis", + "South Euclid", + "South Holland", + "Palm Valley", + "North Plainfield", + "Ashland", + "Sapulpa", + "Duarte", + "Marietta", + "Battle Ground", + "Stephenville", + "Amsterdam", + "Oxford", + "Park Forest", + "Evans", + "Alexandria", + "Fort Atkinson", + "Hazel Dell", + "Carrboro", + "Bardstown", + "East Ridge", + "Elko", + "Covington", + "Gaffney", + "Sun Valley", + "Sidney", + "Bonney Lake", + "Dickinson", + "Martha Lake", + "Bothell West", + "Arnold", + "Ballenger Creek", + "Rolla", + "West Pensacola", + "Harvey", + "Johnstown", + "Cockeysville", + "Pleasant Prairie", + "Shelbyville", + "Sweetwater", + "St. Andrews", + "Milwaukie", + "Bryant", + "Salmon Creek", + "Kill Devil Hills", + "North Salt Lake", + "Apollo Beach", + "Guayama", + "Cornelia", + "Suwanee", + "New Hope", + "Wade Hampton", + "Green Valley", + "Mill Creek", + "Universal City", + "Montclair", + "Lorton", + "Clemmons", + "Rosamond", + "Bear", + "Dyersburg", + "Oneida", + "Hunters Creek", + "Holiday", + "Louisville", + "Dixon", + "Murray", + "Golden", + "Olean", + "Clifton", + "Grayslake", + "North Bellmore", + "Palisades Park", + "South Milwaukee", + "Gardner", + "Havelock", + "Lake Ronkonkoma", + "Lebanon", + "East Moline", + "Norwalk", + "Yorkville", + "Logansport", + "Dublin", + "North Ogden", + "South El Monte", + "Lynn Haven", + "Ferguson", + "Arlington", + "Willmar", + "Alice", + "Swansboro", + "Murphy", + "Culpeper", + "Ozark", + "American Canyon", + "Papillion", + "The Dalles", + "Columbia Heights", + "Barre", + "Amherst Center", + "Crest Hill", + "Punta Gorda", + "Neabsco", + "Newton", + "Poplar Bluff", + "Ennis", + "Tukwila", + "Prunedale", + "Lomita", + "Payson", + "Mountain Brook", + "Glassboro", + "Bayshore Gardens", + "Ashland", + "Shelton", + "Shenandoah", + "Cherry Hill", + "Henderson", + "Linda", + "Agoura Hills", + "East Hemet", + "Libertyville", + "Durango", + "East Northport", + "Howard", + "Monmouth", + "Ypsilanti", + "Mokena", + "Pleasantville", + "Affton", + "Bartow", + "Ashland", + "Mead Valley", + "Miamisburg", + "Merrick", + "Charleston", + "Germantown", + "Escanaba", + "Selden", + "Bayou Cane", + "Mililani Mauka", + "Snellville", + "Sulphur", + "Harrison", + "South St. Paul", + "Oregon", + "Middleton", + "Ferndale", + "West Chester", + "Forest Park", + "La Cañada Flintridge", + "Hauppauge", + "Safford", + "Rocky River", + "South San Jose Hills", + "Elmwood Park", + "El Reno", + "Saco", + "Fairwood", + "Greenwood", + "West St. Paul", + "Valley", + "Orinda", + "Helena", + "Cullman", + "Alamo", + "Sand Springs", + "Vernal", + "Laurinburg", + "Painesville", + "Sherwood", + "Lake Zurich", + "West Hempstead", + "Rosedale", + "Ottawa", + "Meadowbrook", + "Casa de Oro-Mount Helix", + "Lake Shore", + "Parma Heights", + "Old Jamestown", + "Norwood", + "Monroe", + "Selma", + "Makakilo", + "Tahlequah", + "Brockport", + "Rockport", + "Mesquite", + "Franconia", + "Front Royal", + "West Mifflin", + "Albany", + "La Crescenta-Montrose", + "Somerton", + "Blythe", + "Horizon City", + "Montgomery", + "Stillwater", + "Eloy", + "Brigham City", + "Murrysville", + "Brainerd", + "Rio Rico", + "Central Falls", + "Haslett", + "Tullahoma", + "Baldwin", + "Anna", + "Danville", + "Langley Park", + "South Burlington", + "North Liberty", + "Lake Butler", + "Schofield Barracks", + "Vincennes", + "Sienna Plantation", + "Holtsville", + "Abbeville", + "Bourbonnais", + "Syosset", + "Matteson", + "Lynbrook", + "Lake Forest", + "Angleton", + "Castaic", + "Canby", + "Wendell", + "Frankfort", + "Laconia", + "Silverthorne", + "Altamont", + "Sheridan", + "Hermosa Beach", + "Durant", + "Sylvania", + "Corning", + "Arbutus", + "White Oak", + "Morristown", + "Pinole", + "Erlanger", + "Altoona", + "Bethany", + "Sherrelwood", + "Mineola", + "Carlisle", + "Stevenson Ranch", + "Highland", + "Liberal", + "Cameron Park", + "Pinecrest", + "Evergreen Park", + "Tiffin", + "Mount Airy", + "Broadview Heights", + "Westbrook", + "Red Bluff", + "Arcadia", + "White Oak", + "Fox Crossing", + "McKeesport", + "Bellaire", + "Troy", + "Onalaska", + "Lexington", + "Springboro", + "Whitehall", + "Sartell", + "Badger", + "Five Corners", + "McAlester", + "La Follette", + "Terrell", + "Natchitoches", + "Twinsburg", + "Central Point", + "Seminole", + "Coldwater", + "St. John", + "Point Pleasant", + "Grandview", + "Marshfield", + "Hawthorne", + "Cimarron Hills", + "Alsip", + "Avon", + "Homewood", + "Port Isabel", + "Bellwood", + "Marinette", + "Bay City", + "North Valley Stream", + "Ansonia", + "Deerfield", + "Westminster", + "Creve Coeur", + "Seabrook", + "Berea", + "Cocoa", + "Moultrie", + "Avenel", + "Forest Park", + "Sudley", + "Anacortes", + "Winthrop", + "Rancho Mirage", + "Gibsonton", + "Lynden", + "North Massapequa", + "Gautier", + "Mayfield Heights", + "Breaux Bridge", + "Hopkins", + "Defiance", + "Iron Mountain", + "Berea", + "Altus", + "Bryn Mawr-Skyway", + "Uvalde", + "Brushy Creek", + "Brook Park", + "North Amityville", + "Wallingford Center", + "Sunnyside", + "World Golf Village", + "Sycamore", + "Franklin Farm", + "Chowchilla", + "Brookfield", + "Ronkonkoma", + "Rutherford", + "Merrifield", + "Newburyport", + "Idylwood", + "Kilgore", + "Radford", + "Palestine", + "Crawfordsville", + "Springfield", + "Boerne", + "Hyattsville", + "Lake Placid", + "St. Michael", + "Maumelle", + "Niles", + "Iselin", + "Menomonie", + "Trenton", + "Rutland", + "Imperial", + "Orange", + "Otsego", + "Madison", + "St. Matthews", + "Alton", + "Cudahy", + "Round Lake", + "Oxon Hill", + "Manchester", + "Beeville", + "Cary", + "North Wilkesboro", + "North Aurora", + "Lithia Springs", + "Bon Air", + "Bensenville", + "Eastlake", + "Beaver Dam", + "Safety Harbor", + "Mattoon", + "Macomb", + "North Druid Hills", + "West Columbia", + "Fayetteville", + "Sunland Park", + "Estelle", + "Mountain House", + "San Carlos Park", + "Zachary", + "Kingsland", + "Marco Island", + "Huntington", + "Ingleside", + "Humacao", + "Wantagh", + "Lenoir", + "Concord", + "Easton", + "Burke Centre", + "Perry", + "Hannibal", + "Menasha", + "Oak Grove", + "Scarsdale", + "Brenham", + "Ocean Springs", + "Dallas", + "Woodcrest", + "White Settlement", + "Five Forks", + "Knightdale", + "Shenandoah", + "Ada", + "Crossville", + "Beltsville", + "Colonia", + "Moraga", + "Midway", + "Steubenville", + "Tavares", + "Belgrade", + "Takoma Park", + "Dover", + "Lackawanna", + "Melville", + "Wailuku", + "Buckhall", + "El Dorado", + "Valle Vista", + "Cedar Mill", + "Albert Lea", + "Madison", + "Maitland", + "Gretna", + "Greenfield", + "Hinsdale", + "Santa Fe Springs", + "Franklin Park", + "Bethpage", + "East Massapequa", + "Kirksville", + "Nipomo", + "Centerville", + "Butner", + "Salem", + "Tillmans Corner", + "Upper Grand Lagoon", + "Anoka", + "Pinewood", + "Laurel", + "Amesbury", + "Marion", + "Tallmadge", + "Kingstowne", + "Nanuet", + "Dumont", + "Maryland City", + "Shorewood", + "Vero Beach", + "Clemson", + "Country Walk", + "Spanish Lake", + "Lake Mary", + "Manassas Park", + "Woodmere", + "Lakeport", + "Knik-Fairview", + "Martinsburg", + "Tinton Falls", + "South Houston", + "Jenison", + "Redland", + "Burlington", + "Godfrey", + "Pendleton", + "Taylor", + "Pecan Grove", + "Nederland", + "Colonial Heights", + "Stafford", + "Willimantic", + "Ocean Acres", + "La Marque", + "Versailles", + "Morris", + "Lemont", + "Gainesville", + "Sayre", + "Portland", + "Lindenwold", + "Clive", + "Oneonta", + "Shippensburg", + "Pampa", + "McKinleyville", + "Ferndale", + "South Ogden", + "Albemarle", + "Coalinga", + "North Canton", + "La Vista", + "Ashwaubenon", + "Dickson", + "North Adams", + "Waxhaw", + "Massapequa Park", + "North Babylon", + "Wahiawa", + "Bastrop", + "Ammon", + "Yelm", + "Lansdale", + "Parole", + "Hybla Valley", + "Glenvar Heights", + "Palos Hills", + "Brownsville", + "Camano", + "Streator", + "Buffalo", + "Lincoln", + "Sylacauga", + "Oconomowoc", + "Fort Hunt", + "Phoenixville", + "East Cleveland", + "Mountain Home", + "Americus", + "Republic", + "Glassmanor", + "Lemay", + "Buda", + "Roosevelt", + "Cutlerville", + "Calverton", + "Gainesville", + "Southbridge", + "Myrtle Grove", + "Lake St. Louis", + "Seagoville", + "Crescent City", + "Live Oak", + "Picayune", + "Rosedale", + "North Myrtle Beach", + "Wayne", + "Bemidji", + "Goodlettsville", + "Ham Lake", + "Fairburn", + "Bristol", + "Lake Wales", + "Clayton", + "New Port Richey", + "Truckee", + "Lindsay", + "North Decatur", + "Cohoes", + "McComb", + "Highland Village", + "Glenmont", + "Bull Run", + "Athens", + "Auburndale", + "El Segundo", + "Mercedes", + "Bostonia", + "Artesia", + "Norcross", + "Yauco", + "Batavia", + "Morganton", + "Harrisburg", + "Murraysville", + "Donaldsonville", + "Solvang", + "Los Osos", + "Groveton", + "Washington", + "Live Oak", + "Lock Haven", + "Vienna", + "Country Club Hills", + "Streetsboro", + "Jasper", + "Eden", + "Pearl River", + "Douglas", + "Crowley", + "Highland Springs", + "Cinco Ranch", + "Wolf Trap", + "Chickasha", + "New Milford", + "Kings Park", + "Groveland", + "Ojus", + "East Riverdale", + "Mount Pleasant", + "River Falls", + "Four Corners", + "Hernando", + "Hillcrest Heights", + "Ripon", + "Monroe", + "Adelphi", + "Rio Linda", + "Bluffdale", + "Storrs", + "Hazel Park", + "Burley", + "Aurora", + "Donna", + "Stanford", + "Red Wing", + "Fallon", + "Fairview Heights", + "Celina", + "Gun Barrel City", + "Morton", + "Port Jervis", + "Red Hill", + "Kaukauna", + "Addison", + "Fort Thomas", + "Mebane", + "Mount Holly", + "Conyers", + "East San Gabriel", + "Centerton", + "Stuart", + "Sikeston", + "Sulphur Springs", + "Vincent", + "Boulder City", + "Centralia", + "Dixon", + "Troutdale", + "Mount Clemens", + "Fairview Park", + "Discovery Bay", + "Stallings", + "Cambridge", + "Frankfort", + "Westchester", + "Center Point", + "Canyon", + "West Haven", + "Washougal", + "Bridgeview", + "Troy", + "Cherryland", + "Lebanon", + "Griffith", + "Villa Rica", + "Alma", + "Fort Leonard Wood", + "Long Beach", + "Lady Lake", + "Aberdeen", + "Welby", + "Indianola", + "Washington", + "Phelan", + "Lakeway", + "Dyer", + "Archer Lodge", + "Niceville", + "Clearlake", + "Fillmore", + "Hood River", + "Bellevue", + "Spanish Springs", + "New Haven", + "New River", + "Sayville", + "Millbrook", + "Walnut Park", + "Carthage", + "Prospect Heights", + "King City", + "Opa-locka", + "Pataskala", + "Sunset", + "Grandville", + "Hibbing", + "Sarasota Springs", + "Laguna Woods", + "Hope Mills", + "Floral Park", + "Sierra Vista Southeast", + "White Center", + "Wilmington Island", + "Easthampton", + "Humble", + "Parkway", + "Payson", + "Port Washington", + "Circleville", + "East Rancho Dominguez", + "Fullerton", + "Sterling", + "South River", + "Powder Springs", + "Flowing Wells", + "Purcellville", + "Greenwood Village", + "Eggertsville", + "Farmingville", + "Andrews", + "Blytheville", + "Shively", + "North Arlington", + "Mitchell", + "McFarland", + "Graham", + "Palmetto Estates", + "Tanque Verde", + "Elkton", + "Parlier", + "Three Lakes", + "Fate", + "Riverdale", + "Fort Mohave", + "Chubbuck", + "West University Place", + "Newton", + "Miami", + "McMinnville", + "Longwood", + "Overland", + "Dunn", + "Houghton", + "Ladson", + "Blackfoot", + "Buford", + "Lake Geneva", + "Harrison", + "La Grande", + "East Highland Park", + "Glen Allen", + "Seven Oaks", + "Groves", + "Mastic", + "Hermitage", + "Cloverly", + "Talladega", + "Hartford", + "Holly Springs", + "Belvedere Park", + "Hayden", + "Middleburg Heights", + "La Palma", + "Mount Vernon", + "Avocado Heights", + "Pacific Grove", + "Asbury Park", + "Pulaski", + "Northview", + "Bellmore", + "Berkley", + "Washington", + "Westbury", + "Grosse Pointe Woods", + "Hueytown", + "La Grange", + "Aldine", + "Bradley", + "Southchase", + "Wilkinsburg", + "Kerman", + "Hugo", + "Fords", + "Damascus", + "South Farmingdale", + "Mineral Wells", + "Bay Village", + "Candelaria", + "Elk Plain", + "Weston", + "Hereford", + "Galion", + "College Park", + "Dentsville", + "Grovetown", + "Pleasanton", + "Great Bend", + "Gantt", + "Rossville", + "Englewood", + "West Park", + "Jamestown", + "North New Hyde Park", + "West Richland", + "Park City", + "Oldsmar", + "Washington Court House", + "Coto de Caza", + "Seaford", + "Kenmore", + "Depew", + "Susanville", + "Vandalia", + "Willow Grove", + "Ocean Pointe", + "Fort Carson", + "Beech Grove", + "Hewitt", + "Newport", + "Tehachapi", + "Astoria", + "Alamo", + "Taft", + "Ferndale", + "Livingston", + "Whitewater", + "Clarksdale", + "West Lealman", + "Franklin Park", + "Ramsey", + "New Freedom", + "Alpine", + "Great Falls", + "Yankton", + "London", + "New Cassel", + "Salem Lakes", + "Brooklyn Park", + "Hampton Bays", + "Jackson", + "Yazoo City", + "Mount Washington", + "Jacksonville", + "California", + "Grimes", + "Bellair-Meadowbrook Terrace", + "Lamont", + "Lebanon", + "Hot Springs Village", + "St. Simons", + "Campbellsville", + "Bedford", + "Nocatee", + "Tonawanda", + "Cambridge", + "Lemon Hill", + "Kemp Mill", + "Calera", + "Youngsville", + "Royse City", + "Azalea Park", + "Hartsville", + "Worthington", + "Las Vegas", + "Pierre", + "Southern Pines", + "Hershey", + "Berea", + "Saraland", + "El Dorado", + "Manor", + "Williamstown", + "Paradise Valley", + "Pewaukee", + "Falls Church", + "Gonzalez", + "Port Orchard", + "Forest City", + "Muscle Shoals", + "Jennings", + "Henderson", + "Connersville", + "Royal Kunia", + "Metuchen", + "Grain Valley", + "Mount Dora", + "Glasgow", + "Fraser", + "Ewa Beach", + "Sun Lakes", + "Corinth", + "Hartselle", + "Thonotosassa", + "Fostoria", + "Tenafly", + "Halawa", + "Chaparral", + "Scottsboro", + "Lockhart", + "Thibodaux", + "Washington", + "Bradley Gardens", + "Greenlawn", + "Robbinsdale", + "Clewiston", + "North Fair Oaks", + "Warren", + "Chippewa Falls", + "Ocean View", + "Glasgow", + "Bridgetown", + "Warrington", + "Cayey", + "Midlothian", + "Summerfield", + "Hollins", + "Mountain Home", + "Alexander City", + "Camden", + "Toppenish", + "Ozark", + "Douglas", + "North Auburn", + "Mill Valley", + "Tamaqua", + "Destin", + "Salida", + "Lewisville", + "Kings Park West", + "Stone Ridge", + "East Wenatchee", + "Lindenhurst", + "Phillipsburg", + "Covington", + "Jefferson Valley-Yorktown", + "Rincon", + "California City", + "Taos", + "Fairview", + "Hopatcong", + "Hidalgo", + "Cambridge", + "Gardendale", + "Antioch", + "Johnson City", + "Hawaiian Gardens", + "Hendersonville", + "Norridge", + "Seabrook", + "Crowley", + "Sauk Rapids", + "Greendale", + "Lockhart", + "New Franklin", + "Chelsea", + "Ionia", + "Pineville", + "Iona", + "Cleveland", + "Greensburg", + "Middleburg", + "Willowick", + "Harrison", + "Chesterton", + "Steamboat Springs", + "Black Forest", + "Fort Payne", + "Cherry Hill Mall", + "Fruitville", + "Lakewood Park", + "Callaway", + "Oatfield", + "Waunakee", + "Wixom", + "Luling", + "Canton", + "Pell City", + "Waimalu", + "Pecos", + "Bay St. Louis", + "Belle Chasse", + "Havre de Grace", + "Monroe", + `D'Iberville`, + "Cayce", + "Effingham", + "Santaquin", + "Hobe Sound", + "Wauchula", + "Colesville", + "Dayton", + "Reidsville", + "Hutchinson", + "Dallas", + "Franklin Park", + "Beacon", + "Dumas", + "Raymondville", + "Frederick", + "Olympia Heights", + "Artesia", + "North Mankato", + "Glenpool", + "Oil City", + "Hammonton", + "New Kingman-Butler", + "Chicago Ridge", + "Deming", + "Big Rapids", + "Miami Springs", + "Fulshear", + "South Venice", + "Allouez", + "Princeton", + "Baraboo", + "Jericho", + "Collingswood", + "El Sobrante", + "Cahokia", + "Springdale", + "Oak Island", + "Gramercy", + "Atlantic Beach", + "Teays Valley", + "Ephrata", + "Oak Park", + "Richmond Hill", + "Brandermill", + "Forrest City", + "Sun Village", + "Moorestown-Lenola", + "Fergus Falls", + "Whitefish Bay", + "Bexley", + "Conneaut", + "Thomaston", + "Levelland", + "Palmetto", + "Harper Woods", + "Piney Green", + "Fort Campbell North", + "Princeton Meadows", + "Highland Park", + "Hickory Hills", + "Forest Park", + "Beach Park", + "East Milton", + "Sharonville", + "West Freehold", + "Middlesex", + "Spring Creek", + "St. James", + "Maumee", + "Lawrenceburg", + "Brevard", + "Soddy-Daisy", + "Moberly", + "Port Clinton", + "Canton", + "Waianae", + "Vadnais Heights", + "Wood Dale", + "Brecksville", + "New Providence", + "Roselle Park", + "Shiloh", + "Rantoul", + "Colonial Park", + "Broadlands", + "Washington", + "Hazel Crest", + "Price", + "LaBelle", + "Alpena", + "Conway", + "Kettering", + "Rocky Point", + "Elizabethton", + "Wauconda", + "Lake Forest Park", + "Avenal", + "Rogers", + "Marshall", + "Jensen Beach", + "Fruita", + "Homosassa Springs", + "Middlesborough", + "Red Oak", + "Olivehurst", + "Big Bear City", + "Grover Beach", + "Marion", + "Fortuna", + "Santa Fe", + "North Valley", + "Lindale", + "Englewood", + "Lakeland South", + "Washington", + "Jasper", + "Short Hills", + "Huron", + "Sault Ste. Marie", + "Andover", + "Brookside", + "South Park Township", + "Mountain Park", + "Carpinteria", + "Glenn Heights", + "Powell", + "Lyndhurst", + "Artondale", + "Edgewater", + "Glenn Dale", + "Western Springs", + "Okmulgee", + "DeRidder", + "Azle", + "Vidalia", + "Swansea", + "Moss Point", + "Fort Morgan", + "Dardenne Prairie", + "River Ridge", + "Huntington", + "Newark", + "Mounds View", + "Jefferson", + "Rochester", + "Solana Beach", + "Nesconset", + "Richton Park", + "Palos Verdes Estates", + "Woodinville", + "Manorville", + "Bellefontaine", + "Timberlake", + "Channahon", + "Port Royal", + "Verona", + "Bensville", + "Clayton", + "East Islip", + "New Ulm", + "Newington", + "Baker", + "Cedar Lake", + "Globe", + "La Grange Park", + "Newton", + "Warrenville", + "Hockessin", + "Rendon", + "Sandpoint", + "Loveland", + "Shorewood", + "Trenton", + "Coolidge", + "North Palm Beach", + "Stoughton", + "Mount Vernon", + "Warrensville Heights", + "Worthington", + "Plover", + "Martinsville", + "Mahomet", + "Superior", + "Lone Tree", + "Montgomeryville", + "South Daytona", + "Riverdale", + "Lumberton", + "Villas", + "Coatesville", + "Moody", + "McPherson", + "Fort Lewis", + "Davidson", + "Edgewood", + "Suamico", + "San Marino", + "Portland", + "Fort Drum", + "Chatham", + "Lakeland Village", + "Bellefonte", + "Forest Hill", + "Vail", + "Cypress Lake", + "Gladeview", + "Monfort Heights", + "Braselton", + "Lapeer", + "Sugarland Run", + "Dunmore", + "Georgetown", + "Kittanning", + "Vinings", + "Sharon", + "Claremont", + "New Carrollton", + "Oakland", + "Verde Village", + "Ridgefield Park", + "Irondale", + "Lake Wylie", + "Sturgis", + "Loganville", + "Lawrenceburg", + "Lakeland North", + "West Carrollton", + "Finneytown", + "Ridge", + "Glen Carbon", + "Key Biscayne", + "Marshall", + "Lake Tapps", + "Spearfish", + "Federal Heights", + "Cornelius", + "Cedartown", + "Cloquet", + "Weigelstown", + "Kingston", + "Lilburn", + "South Sioux City", + "Maryville", + "Ardmore", + "Franklin", + "University Heights", + "College", + "Lahaina", + "Glendale", + "Terryville", + "Othello", + "Gulf Shores", + "Wilton Manors", + "Yulee", + "Athens", + "Jupiter Farms", + "Tarboro", + "Wickliffe", + "Elgin", + "Mercerville", + "La Homa", + "Dover", + "Greenville", + "Borger", + "Bonita", + "Charlotte", + "Broussard", + "Dorado", + "Herrin", + "Manatí", + "Choctaw", + "Manvel", + "Los Alamos", + "Oregon", + "Commerce", + "Taylorville", + "Riviera Beach", + "Port Neches", + "Prineville", + "Lakeland", + "Peru", + "White House", + "Clarkston", + "Keokuk", + "St. Ann", + "Mastic Beach", + "Justice", + "Elfers", + "Fulton", + "Minneola", + "Oskaloosa", + "Urbana", + "Grand Terrace", + "Panama City Beach", + "Woodland Park", + "Lantana", + "Richmond", + "Jackson", + "Fredericksburg", + "Muscoy", + "Belmont", + "Annapolis Neck", + "Jacksonville", + "Endicott", + "Cheney", + "Palos Heights", + "Boone", + "North St. Paul", + "Ocean Pines", + "Cherry Creek", + "Río Grande", + "Paris", + "Irmo", + "San Anselmo", + "Marysville", + "Woodhaven", + "Bedford", + "Trophy Club", + "Riverton", + "Shepherdsville", + "Plymouth", + "Manchester", + "Waconia", + "Stony Brook", + "St. Peter", + "Kelso", + "Elkhorn", + "Gatesville", + "Goldenrod", + "Virginia", + "Chino Valley", + "Lakeside", + "Newington Forest", + "Blue Ash", + "Lewisburg", + "Wilmington", + "Harrison", + "Holly Hill", + "Lansdowne", + "Minnehaha", + "New Baltimore", + "Gulfport", + "Forestville", + "Derby", + "Kewanee", + "Orange City", + "Lakeland Highlands", + "Bastrop", + "Gladstone", + "Patchogue", + "Winnetka", + "Markham", + "Marion", + "Oak Hills", + "Leon Valley", + "Joppatowne", + "West Plains", + "Delhi", + "Winchester", + "Newcastle", + "New Kensington", + "Beatrice", + "Poquoson", + "Clayton", + "St. Marys", + "Ottawa", + "Larkspur", + "Cottonwood", + "Mays Chapel", + "Shady Hills", + "Lincolnwood", + "Arkansas City", + "Elon", + "Palmer", + "West Monroe", + "Parker", + "Batesville", + "Amherst", + "Grenada", + "Ishpeming", + "Jesup", + "Ringwood", + "Overlea", + "Speedway", + "Enumclaw", + "Neosho", + "Wells Branch", + "Lincoln City", + "North Merrick", + "Northlake", + "Eatontown", + "Newport", + "Home Gardens", + "Freeport", + "Webb City", + "Salisbury", + "Woodward", + "Melissa", + "Brock Hall", + "James Island", + "Kingsburg", + "Platteville", + "Eureka", + "Lovington", + "Emeryville", + "Little Chute", + "Bainbridge", + "Sedro-Woolley", + "Minden", + "Grantsville", + "Somerville", + "Middle Valley", + "Union Park", + "South Charleston", + "Fairfax Station", + "Leeds", + "Holiday City-Berkeley", + "East Bethel", + "Festus", + "Riverview", + "Smithfield", + "Weatherford", + "Miller Place", + "Spring Lake", + "Folkston", + "Macedonia", + "Carnot-Moon", + "Jerome", + "Prairie Ridge", + "Hasbrouck Heights", + "Union", + "Hamilton Square", + "Moncks Corner", + "Goulds", + "Newton", + "Maltby", + "Garden City", + "Somersworth", + "Norton", + "Red Bank", + "Ellwood City", + "Glenwood Springs", + "Greensburg", + "Tucson Estates", + "Macclenny", + "Echelon", + "East Grand Rapids", + "Newberry", + "Lansing", + "Brookhaven", + "Winfield", + "Norwalk", + "Camp Pendleton South", + "Hudson", + "Robinson", + "Newport East", + "Portales", + "Port Washington", + "South Miami", + "Waimea", + "Green River", + "Tremonton", + "Cottage Grove", + "Valley Falls", + "Berkley", + "Robertsville", + "Delavan", + "Vineyard", + "Richfield", + "Port Lavaca", + "Otsego", + "Malvern", + "Cadillac", + "Lake Station", + "Healdsburg", + "Clawson", + "Sandy", + "East Renton Highlands", + "Red Bank", + "Brown Deer", + "Crestwood", + "Grants", + "Malibu", + "Smyrna", + "Bucyrus", + "Valencia West", + "Viera East", + "Newman", + "Tomball", + "Naranja", + "Florida City", + "Wanaque", + "Scotts Valley", + "View Park-Windsor Hills", + "Robstown", + "Georgetown", + "Lake Los Angeles", + "Arlington", + "Somerset", + "Excelsior Springs", + "Diamond Springs", + "Kalaoa", + "North Wantagh", + "Cordele", + "Mendota", + "Grafton", + "Eufaula", + "Glen Rock", + "Cocoa Beach", + "Clute", + "Tamalpais-Homestead Valley", + "Port St. John", + "Endwell", + "Plano", + "Madison Heights", + "Bothell East", + "Guthrie", + "Dranesville", + "El Campo", + "Accokeek", + "Evanston", + "Pontiac", + "Franklin", + "Gold Canyon", + "Cedarburg", + "Claiborne", + "Beachwood", + "Seven Hills", + "Upper Montclair", + "Martinsville", + "Elk City", + "Scottdale", + "Silver City", + "Wakefield", + "Alum Rock", + "Mitchellville", + "Spirit Lake", + "Woodland Park", + "Bridgeton", + "Mexico", + "Archdale", + "Westwood Lakes", + "Bogalusa", + "Newport", + "Elwood", + "Yeadon", + "Florham Park", + "Wallington", + "Trinity", + "Mack", + "Roma", + "Mountain Top", + "Port Salerno", + "Magalia", + "Waipio", + "Magnolia", + "Emmaus", + "Jackson", + "Nanakuli", + "Webster", + "Elizabethtown", + "Show Low", + "Maili", + "River Edge", + "Woods Cross", + "Byram", + "North Bellport", + "Fort Bliss", + "Highland", + "Lyndon", + "Signal Hill", + "Hailey", + "Scottsburg", + "Urbana", + "Schiller Park", + "Fenton", + "Bayou Blue", + "Los Alamitos", + "Destrehan", + "Minooka", + "Gardere", + "Cascades", + "Hillsborough", + "Gardnerville Ranchos", + "Collegedale", + "Summerfield", + "Snyder", + "Tarrytown", + "Viera West", + "Wyandanch", + "Fairfield", + "Mount Sterling", + "Ravenna", + "Bellmawr", + "Angola", + "Coshocton", + "Mendota Heights", + "Haysville", + "Tega Cay", + "Dent", + "Haddonfield", + "Beachwood", + "Bradford", + "North Vernon", + "Travilah", + "Kaneohe Station", + "Winton", + "Celina", + "Hartsville", + "Canyon Lake", + "Burkburnett", + "Lighthouse Point", + "Eunice", + "Greentree", + "Westview", + "DuBois", + "Lamesa", + "North Logan", + "Berlin", + "Waupun", + "Big Lake", + "Hillsdale", + "Broomall", + "Gloucester City", + "Grand Rapids", + "Hawaiian Paradise Park", + "Arizona City", + "Seymour", + "Hormigueros", + "Camp Verde", + "Weddington", + "Ridgefield", + "Poulsbo", + "Stayton", + "Springdale", + "Brookings", + "Damascus", + "Niles", + "Fuller Heights", + "Mango", + "Piedmont", + "Fitzgerald", + "Huntingdon", + "Selma", + "Satellite Beach", + "Rossmoor", + "Mayfield", + "Guttenberg", + "Lanham", + "Franklin Lakes", + "Gulf Gate Estates", + "Summit", + "Yorktown", + "Town and Country", + "Fulton", + "Mount Sinai", + "Princess Anne", + "Jefferson Hills", + "Lindon", + "Maysville", + "South Yarmouth", + "Campton Hills", + "Woodbury", + "Rifle", + "Bennettsville", + "Walden", + "Grove City", + "Lexington Park", + "Merriam", + "Westwood", + "Lower Burrell", + "Valley Center", + "Silverton", + "Wahpeton", + "Bolivar", + "Storm Lake", + "Whitehall", + "Orange Cove", + "Lake Grove", + "Moss Bluff", + "Grosse Pointe Park", + "Four Corners", + "Grand Haven", + "Two Rivers", + "Lawrenceburg", + "Clinton", + "Dobbs Ferry", + "Coamo", + "Suffern", + "Shiloh", + "Munhall", + "Lake Morton-Berrydale", + "Florence", + "Browns Mills", + "Guymon", + "Pike Creek Valley", + "Pompton Lakes", + "Millsboro", + "Kings Mountain", + "Sussex", + "Pearsall", + "Ocean City", + "Largo", + "West Point", + "Gonzales", + "Liberty Lake", + "Spencer", + "Chalco", + "Saddlebrooke", + "Decatur", + "Heath", + "New Albany", + "Vermillion", + "Manchester", + "Cusseta", + "Walker Mill", + "Elkins", + "Halfway", + "Soquel", + "Fort Meade", + "Montgomery", + "Lake Monticello", + "Lowes Island", + "Kearney", + "Bacliff", + "Essex Junction", + "La Riviera", + "Pleasant View", + "Wasilla", + "Forest", + "Oak Grove", + "River Forest", + "Cheval", + "The Pinery", + "Panthersville", + "Smithville", + "Mount Kisco", + "Sierra Madre", + "Totowa", + "San Germán", + "Highland Park", + "North Branch", + "Winnemucca", + "Castle Pines", + "Burr Ridge", + "Galena Park", + "Myrtle Grove", + "Ludington", + "Camden", + "Bellmead", + "Little Ferry", + "Aguadilla", + "Muskegon Heights", + "Mapleton", + "Fruitland Park", + "Arkadelphia", + "Rochelle", + "Gig Harbor", + "Crestwood", + "Farmersville", + "Darby", + "Smithfield", + "Gateway", + "Raceland", + "Sweet Home", + "DeForest", + "Cleveland", + "Avon Park", + "Northbrook", + "Van Wert", + "Garden City", + "Hornell", + "Pacific", + "Newcastle", + "Ketchikan", + "Alamosa", + "Lansdowne", + "Toccoa", + "Brooklyn", + "Saks", + "Millington", + "Georgetown", + "Ogdensburg", + "Wyomissing", + "Petal", + "Anderson", + "North Lindenhurst", + "Monroe", + "Atchison", + "Highland City", + "Kapaa", + "Waterloo", + "Wyndham", + "Norton", + "Fairfield", + "Greencastle", + "Covington", + "Three Rivers", + "Timonium", + "Lincoln Village", + "Morro Bay", + "Lowell", + "Paris", + "Ironton", + "Star", + "Fairview", + "Pasadena Hills", + "Richmond Heights", + "Milton", + "San Diego Country Estates", + "Columbia", + "Roscoe", + "Jefferson", + "Little Canada", + "Rosaryville", + "Wapakoneta", + "Alpine", + "Farmington", + "Doctor Phillips", + "Exeter", + "Martin", + "Gifford", + "Bernalillo", + "Pine Castle", + "Point Pleasant", + "Cape Canaveral", + "Sweetwater", + "Fairview Shores", + "Jacinto City", + "Worth", + "Portage", + "Tanaina", + "Bedford Heights", + "Fox Lake", + "Oak Hills", + "Linthicum", + "Fountain Inn", + "New Baltimore", + "Wellington", + "Kendallville", + "Sumner", + "Pine Hill", + "Forestville", + "Hudson", + "Shasta Lake", + "Dayton", + "Rodeo", + "West Point", + "Vidor", + "New Port Richey East", + "Bellefontaine Neighbors", + "Vermilion", + "Bonham", + "Kennett", + "Troy", + "Fort Bragg", + "Lyons", + "Miami Shores", + "East Whittier", + "Columbia", + "Beverly Hills", + "Lexington", + "Richmond Heights", + "Sedona", + "Summerville", + "Union City", + "Vernon", + "South Huntington", + "Fort Madison", + "Nanticoke", + "Hillsdale", + "Comstock Park", + "Fredonia", + "Helena-West Helena", + "Park Forest Village", + "Forest Acres", + "Reading", + "Vashon", + "Arden Hills", + "Pine Ridge", + "Medulla", + "Independence", + "Doraville", + "Boulder Hill", + "Cypress Gardens", + "Pebble Creek", + "Melvindale", + "Sauk Village", + "Clearfield", + "Pella", + "Lake Stickney", + "Sparta", + "Box Elder", + "Middle Island", + "Barrington", + "Great Neck", + "Fort Lupton", + "Victoria", + "Gunbarrel", + "Bluffton", + "Waverly", + "West Haverstraw", + "Fife", + "Bound Brook", + "Somers Point", + "Woodmere", + "Gages Lake", + "Asbury Lake", + "Pike Road", + "Havre", + "Snohomish", + "Citrus", + "Waynesville", + "Clarion", + "Kutztown", + "Danville", + "Vienna", + "Manville", + "Bel Air", + "Warr Acres", + "Franklin", + "Tipp City", + "Struthers", + "Lincoln Park", + "Waldwick", + "Shawano", + "Red Bank", + "Progress", + "Fairmount", + "Cedar Hills", + "Hobart", + "Le Mars", + "Cresson", + "Harrisonville", + "Clinton", + "Brandon", + "Nolensville", + "Isabela", + "Wood River", + "Friendly", + "Charter Oak", + "Sleepy Hollow", + "Fair Oaks Ranch", + "Holmen", + "Croydon", + "Coweta", + "Fairmont", + "Warrenton", + "Progress Village", + "Pleasant Hill", + "Waggaman", + "Capitola", + "Laurens", + "Midland", + "Bull Mountain", + "Flat Rock", + "Quartz Hill", + "Molalla", + "Scotchtown", + "Fort Oglethorpe", + "Del Aire", + "Alcoa", + "Country Club", + "Lake Arbor", + "Garden Acres", + "Orland", + "Helotes", + "Bee Ridge", + "Key Largo", + "Timberlane", + "Westphalia", + "Wabash", + "Winterville", + "Clay", + "Celebration", + "St. Albans", + "Mission", + "Berwick", + "Watervliet", + "Alachua", + "Kinnelon", + "Ventnor City", + "Rockcreek", + "Inwood", + "White City", + "Emmett", + "Sugar Grove", + "River Grove", + "Pingree Grove", + "Fort Irwin", + "Northampton", + "Ellisville", + "Madera Acres", + "Gloucester Point", + "Marina del Rey", + "Brandywine", + "Stonegate", + "Carroll", + "Port Townsend", + "Coffeyville", + "West Perrine", + "Chillicothe", + "Lake Barcroft", + "Burtonsville", + "Franklin", + "Robertsdale", + "East Rockaway", + "Baker City", + "New Hyde Park", + "Itasca", + "Brookdale", + "Jennings", + "Woodbury", + "Mentone", + "Little River", + "Cody", + "Vega Alta", + "Mooresville", + "Conning Towers Nautilus Park", + "Westgate", + "George Mason", + "Fort Salonga", + "Russellville", + "North Bend", + "Clarksville", + "Philipsburg", + "Denham Springs", + "Scaggsville", + "Corte Madera", + "Jewett City", + "Cuero", + "Budd Lake", + "Columbia City", + "Blacklick Estates", + "East Aurora", + "Rio Vista", + "Alexandria", + "Eidson Road", + "Pájaros", + "West Athens", + "Boaz", + "Chesapeake Ranch Estates", + "Countryside", + "St. Francis", + "Holualoa", + "East Rutherford", + "Fort Valley", + "Commerce", + "West Tawakoni", + "Warrenton", + "Marysville", + "Marlton", + "Greenville", + "Rio del Mar", + "Picture Rocks", + "Cameron", + "Waterford", + "Memphis", + "Fort Stewart", + "Port Wentworth", + "Yorkshire", + "Aiea", + "Hermantown", + "Winfield", + "Oxford", + "Cold Springs", + "Keansburg", + "Powdersville", + "La Plata", + "Merrill", + "Bithlo", + "Chevy Chase", + "Wilmore", + "Maywood", + "Rainbow City", + "Howell", + "Pleasant Grove", + "Blackhawk", + "Hope", + "Roxboro", + "Bishop", + "Middletown", + "Greenville", + "St. Pete Beach", + "Rice Lake", + "North Gates", + "Alderwood Manor", + "Ecorse", + "Harleysville", + "Fairview", + "The Village", + "Eagle Point", + "Craig", + "Willoughby Hills", + "Walterboro", + "White Meadow Lake", + "Mount Vista", + "Lowell", + "Silsbee", + "Harvard", + "Central City", + "Tell City", + "Lambertville", + "Roxborough Park", + "Rye Brook", + "Reedsburg", + "Laurel", + "Fair Oaks", + "DuPont", + "Mound", + "Jessup", + "Boiling Springs", + "Wakefield-Peacedale", + "Erwin", + "Rigby", + "Fort Stockton", + "Airway Heights", + "Parsons", + "Fayetteville", + "Meadowbrook", + "Lititz", + "Siler City", + "Platte City", + "Lantana", + "Woodfield", + "Mount Airy", + "Carencro", + "Winslow", + "Ruidoso", + "Hondo", + "Miles City", + "Brownsville", + "Manistee", + "Rayne", + "Augusta", + "New Richmond", + "Greenwood", + "Monticello", + "Bladensburg", + "St. Stephens", + "Little Falls", + "Bryan", + "Amityville", + "Tomah", + "Brunswick", + "Roanoke", + "Francisville", + "Hickam Housing", + "Navasota", + "Flowood", + "Pryor Creek", + "Bardmoor", + "Bloomfield", + "Cairo", + "Dayton", + "Boonville", + "Louisville", + "Beverly Hills", + "Brownfield", + "Hackettstown", + "Stuarts Draft", + "Bay Minette", + "Golden Hills", + "Edwards", + "Woodmoor", + "Saline", + "St. Augustine Shores", + "Madras", + "Clinton", + "Heath", + "Claymont", + "Stansbury Park", + "Rotonda", + "Marlboro Village", + "Lenoir City", + "Birch Bay", + "Hartland", + "Waihee-Waiehu", + "College Place", + "Liberty", + "Zimmerman", + "Wesley Chapel", + "Wood-Ridge", + "Detroit Lakes", + "Fultondale", + "North College Hill", + "Cross Lanes", + "Marathon", + "Westwood", + "Brentwood", + "Lexington", + "Bohemia", + "Hernando", + "Cheat Lake", + "Harahan", + "Washington Terrace", + "Sultan", + "Muncy", + "Madeira", + "Anthony", + "Gridley", + "Kendall Park", + "Girard", + "Hillview", + "Burlington", + "Steger", + "Sans Souci", + "White Marsh", + "Spanish Fort", + "Lake Elmo", + "Bethalto", + "Cloverdale", + "Independent Hill", + "Good Hope", + "Lynwood", + "Basalt", + "Ivins", + "Wagoner", + "St. Marys", + "Elwood", + "Woodlyn", + "South Amboy", + "Bloomingdale", + "Sabana Grande", + "Sullivan", + "Rensselaer", + "Audubon", + "Calimesa", + "Dunn Loring", + "Flossmoor", + "Beckett Ridge", + "Plymouth", + "Ridgefield", + "Hooper", + "Rathdrum", + "Thief River Falls", + "Fairview", + "Fairview", + "Anaconda", + "Murrells Inlet", + "Union", + "Woodburn", + "Monett", + "Grinnell", + "Jersey Shore", + "Grosse Pointe Farms", + "Rapid Valley", + "Linganore", + "Edgewater", + "Atmore", + "Economy", + "Plymouth", + "Burton", + "Berthoud", + "Whitestown", + "San Elizario", + "Dillon", + "Clinton", + "Tiburon", + "Monmouth", + "Highland Park", + "Sugarmill Woods", + "Golden Valley", + "Northwest Harborcreek", + "Jeannette", + "Marlton", + "Sutherlin", + "Picnic Point", + "Seaside", + "Livingston", + "Fort Polk South", + "Micco", + "Chanute", + "Beecher", + "Leisure World", + "Indianola", + "North Kensington", + "Leonia", + "Brewer", + "La Grange", + "Corozal", + "McFarland", + "Silver Springs Shores", + "Shelby", + "Pineville", + "Woodway", + "Oakbrook", + "Valley Cottage", + "Lindstrom", + "Shiprock", + "St. Anthony", + "Presque Isle", + "Farmingdale", + "Manteno", + "Lake Mohawk", + "Dexter", + "Delta", + "Mechanicsburg", + "Albion", + "Haiku-Pauwela", + "Skidaway Island", + "LaSalle", + "Fairfield Glade", + "Waseca", + "Murphysboro", + "Plainedge", + "Fallston", + "Triangle", + "Chester", + "Derby", + "Lacombe", + "Felida", + "Summit", + "Clinton", + "Stony Brook University", + "Lake Arrowhead", + "Oakwood", + "Sturgeon Bay", + "Harrisburg", + "Independence", + "Forestdale", + "Boonton", + "Oak Grove", + "Harrodsburg", + "Sheffield Lake", + "Folsom", + "Cedar Hills", + "Aledo", + "Sellersburg", + "Blanchard", + "Southside", + "Whitehouse", + "Merrydale", + "Sheffield", + "St. Albans", + "Oakland", + "West Haven-Sylvan", + "Innsbrook", + "Evergreen", + "Logan", + "Gresham Park", + "Poteau", + "Cabo Rojo", + "New Prague", + "Woodbury", + "Kodiak", + "Aliquippa", + "Bridgeport", + "Berkeley", + "Riverdale", + "Covington", + "Rhinelander", + "Ville Platte", + "Olmsted Falls", + "Glencoe", + "Orange Park", + "Canal Winchester", + "Absecon", + "Glens Falls North", + "Palm Beach", + "North Sarasota", + "Franklin", + "Richmond Heights", + "Oakville", + "Clanton", + "Collingdale", + "Airmont", + "Quakertown", + "Citrus Springs", + "Villas", + "Frankfort Square", + "West Miami", + "Wharton", + "Redlands", + "New Square", + "South Kensington", + "Canonsburg", + "Edgewood", + "Graham", + "New Albany", + "Clarendon Hills", + "Needles", + "Pitman", + "Rock Falls", + "Perkasie", + "Clayton", + "Cortez", + "Princeton", + "Olney", + "Sanger", + "Seven Corners", + "Cape St. Claire", + "Kirby", + "Glenwood", + "Dumbarton", + "Garden City", + "Crestline", + "Jerseyville", + "Thompsonville", + "Nevada", + "Des Peres", + "Perryville", + "Corrales", + "Fort Knox", + "Greenville", + "Park Ridge", + "Fern Park", + "Greenbriar", + "Coral Hills", + "Montesano", + "Pleasant Hill", + "Andalusia", + "Scott", + "Incline Village", + "Glenshaw", + "Mount Pleasant", + "Cresskill", + "Earlimart", + "Hawthorn Woods", + "Hoquiam", + "Brigantine", + "Fishersville", + "Swissvale", + "Kings Grant", + "Kennedale", + "Matawan", + "San Sebastián", + "Monahans", + "Audubon", + "North Madison", + "Prairie du Sac", + "York", + "Salem", + "Hyrum", + "Richlands", + "Ladue", + "Rockland", + "Alamo Heights", + "Reserve", + "Orting", + "Tuba City", + "Signal Mountain", + "Fairmount", + "Riverside", + "Corning", + "Orrville", + "Elsmere", + "Farmville", + "Sheridan", + "Sanatoga", + "Kalifornsky", + "Willowbrook", + "Springfield", + "Green Cove Springs", + "White Horse", + "Perry Heights", + "Lake Villa", + "Guntersville", + "Montvale", + "Aspen", + "Ione", + "Brooksville", + "Riverside", + "Wyoming", + "West Frankfort", + "Indian Harbour Beach", + "Lake Park", + "Lucas", + "Piedmont", + "Franklin", + "Conover", + "Wetumpka", + "East Grand Forks", + "Park Hills", + "Laurel", + "Edgemere", + "Morrisville", + "Rawlins", + "Succasunna", + "Perryton", + "Closter", + "St. Johns", + "Terrace Heights", + "Frostburg", + "Rolesville", + "Booneville", + "Sallisaw", + "East York", + "Sitka", + "Stuttgart", + "Malverne", + "Mystic Island", + "Willow Street", + "Lansdowne", + "Hillsboro", + "Summit View", + "Corona de Tucson", + "Middleton", + "Tuscumbia", + "Mason", + "Humboldt", + "Helena Valley Southeast", + "Sunset Hills", + "University of Virginia", + "Prien", + "Onalaska", + "Pine Lake Park", + "Los Altos Hills", + "Santa Clara", + "Monticello", + "Ogden", + "Lake of the Woods", + "Congers", + "Ashland", + "August", + "Makaha", + "Spring Valley Lake", + "Bayport", + "Savoy", + "Fair Lakes", + "Tecumseh", + "North Haledon", + "Paris", + "Gaylord", + "Aransas Pass", + "Carbondale", + "Arab", + "Long Branch", + "Fairless Hills", + "Highland Heights", + "Somers", + "Charlestown", + "Fletcher", + "Druid Hills", + "Baxter", + "Seffner", + "Millersville", + "Wimauma", + "Miramar Beach", + "Hempstead", + "Gulf Hills", + "Buckhannon", + "Kulpsville", + "Socorro", + "West Livingston", + "Tallulah", + "Midway City", + "Orono", + "Bath", + "Clover", + "Bogota", + "Garden City Park", + "Petoskey", + "Grandview Heights", + "Harwood Heights", + "Beaver Falls", + "Tillamook", + "Oak Hills Place", + "Westwego", + "Flowery Branch", + "St. Joseph", + "Holly", + "Quincy", + "Larkfield-Wikiup", + "Frostproof", + "Dalhart", + "Garrison", + "Gonzales", + "Orosi", + "Runnemede", + "Bel Aire", + "Milton", + "Aurora", + "Firebaugh", + "Whitefish", + "Mahtomedi", + "Haledon", + "West Vero Corridor", + "Floris", + "Savannah", + "Dormont", + "Mount Joy", + "McRae-Helena", + "Trinidad", + "Kenton", + "Carl Junction", + "Alondra Park", + "Southeast Arcadia", + "Paw Paw", + "Lake City", + "Colorado City", + "Oak Grove", + "Moundsville", + "Cumberland Hill", + "Four Corners", + "Montecito", + "Denison", + "Locust Grove", + "Half Moon", + "Lugoff", + "Fort Mitchell", + "Manhattan", + "North Weeki Wachee", + "Mammoth Lakes", + "Johnstown", + "Spotswood", + "Waynesburg", + "Thomson", + "Irondale", + "Westlake Village", + "Castle Shannon", + "Chester", + "Cheviot", + "Napoleon", + "Upper Saddle River", + "Mahopac", + "Temperance", + "Oberlin", + "Twin Lakes", + "Lake Norman of Catawba", + "Jefferson City", + "Country Club Estates", + "Kenilworth", + "Ellsworth", + "Wedgefield", + "Monona", + "Center Line", + "Venice Gardens", + "Broadview Park", + "Pismo Beach", + "Beebe", + "Milliken", + "Black Mountain", + "Crestwood Village", + "Meadow Lakes", + "Center Moriches", + "Port Jefferson", + "Middleport", + "Eaton", + "Tuskegee", + "South San Gabriel", + "Ephrata", + "Rockwood", + "Leesville", + "Oradell", + "Minnetrista", + "Gering", + "Harrison", + "Hazard", + "Summit Park", + "Cherry Valley", + "Omak", + "Vandenberg Village", + "West Dundee", + "Blandon", + "Duvall", + "Vinton", + "Joshua", + "Oak Hill", + "Monument", + "Croton-on-Hudson", + "Bellevue", + "Briarcliff Manor", + "Mount Rainier", + "Alliance", + "Maplewood", + "Wickenburg", + "Selah", + "Shorewood", + "Helena Valley West Central", + "Applewood", + "Kronenwetter", + "Gilberts", + "Bargersville", + "Hampton", + "Sudden Valley", + "Hollymead", + "Rockmart", + "Lake Carmel", + "Lockwood", + "Wyoming", + "Lake Dallas", + "Bloomingdale", + "Rolling Hills Estates", + "North Bay Village", + "South Cleveland", + "Willits", + "Clinton", + "Skiatook", + "Decorah", + "Brookhaven", + "Diamondhead", + "Conshohocken", + "Floresville", + "Ripley", + "Chardon", + "Morehead", + "Ripon", + "Odessa", + "Bellevue", + "Mayo", + "Northfield", + "Menominee", + "Pleasant Hills", + "Pahokee", + "Ahuimanu", + "Crete", + "Loudoun Valley Estates", + "Chestnut Ridge", + "Laurel Hill", + "Island Lake", + "Oak Brook", + "Seaford", + "Evergreen", + "Mascoutah", + "Brazil", + "Aberdeen", + "Jennings Lodge", + "Jefferson", + "Paloma Creek South", + "Manhasset", + "Green", + "Lampasas", + "Village Green-Green Ridge", + "Kensington", + "Fort Belvoir", + "Brentwood", + "Laughlin", + "Aztec", + "St. Martin", + "La Junta", + "Murphy", + "Southwest Ranches", + "Quincy", + "Richland Hills", + "Maryville", + "Baltimore Highlands", + "Caldwell", + "Hillside", + "Columbiana", + "Logan", + "Batesville", + "Glastonbury Center", + "Sheboygan Falls", + "Temple Hills", + "Wytheville", + "St. Francis", + "Hitchcock", + "Catalina", + "Bonner Springs", + "Long Grove", + "Camp Hill", + "Mansfield Center", + "Wilmington Manor", + "Topanga", + "Downingtown", + "Grand Ledge", + "Old Forge", + "Lincolnshire", + "Blair", + "Jersey Village", + "Lexington", + "Richfield", + "Centerville", + "West Long Branch", + "Flushing", + "Middletown", + "Ashland", + "Fruitvale", + "Seminole", + "Altoona", + "Grand Blanc", + "Abingdon", + "Bridge City", + "Woodlake", + "Hastings-on-Hudson", + "Bryans Road", + "York", + "Ashland", + "Princeton", + "Sangaree", + "Templeton", + "Los Fresnos", + "South Weber", + "Watford City", + "Crookston", + "Madison Park", + "Covington", + "Latrobe", + "DeFuniak Springs", + "Williamsburg", + "Olivette", + "Baldwinsville", + "Sound Beach", + "Winters", + "Aibonito", + "Glenside", + "Breckenridge", + "Interlaken", + "Southgate", + "Medina", + "Strathmore", + "Greenville", + "Seville", + "Kenai", + "Wilson", + "Carnegie", + "Aubrey", + "Pittston", + "Holly Springs", + "Rio Bravo", + "Withamsville", + "Kaufman", + "Campbell", + "Guadalupe", + "Providence", + "Milan", + "Oroville East", + "Estes Park", + "Waite Park", + "Antigo", + "Park City", + "Forsyth", + "McGregor", + "Cheraw", + "Swainsboro", + "Jasper", + "Wynne", + "Round Lake Park", + "Quarryville", + "Salida", + "South Boston", + "Citrus Hills", + "Albion", + "Wading River", + "Salem", + "Boyes Hot Springs", + "Payette", + "Grove", + "Gettysburg", + "Highlands", + "Welcome", + "Kasson", + "Granite Falls", + "Creston", + "Clear Lake", + "Steele Creek", + "Fort Scott", + "Fanwood", + "Pukalani", + "Hornsby Bend", + "Carbondale", + "Robinwood", + "Perry", + "Sebastopol", + "Webster City", + "Hastings", + "Plain City", + "Indiantown", + "Fort Dix", + "Collinsville", + "Holtville", + "Wellington", + "Piñon Hills", + "Auburn", + "Thurmont", + "Old Jefferson", + "North Patchogue", + "Brighton", + "Oakdale", + "San Antonio", + "Lamar", + "Butler", + "Chehalis", + "Etowah", + "East Franklin", + "Waller", + "Windsor", + "Scotia", + "Marshfield", + "Devils Lake", + "River Oaks", + "Waupaca", + "Wapato", + "South Beloit", + "Baldwin Harbor", + "Kula", + "Broadview", + "Cushing", + "Pike Creek", + "Milan", + "Senatobia", + "Juncos", + "Sioux Center", + "Calumet Park", + "Escalon", + "Luquillo", + "Lake Shore", + "Pulaski", + "Emerson", + "Bernardsville", + "Caribou", + "Tuttle", + "LaFayette", + "Palmyra", + "Joshua Tree", + "Leola", + "Dayton", + "Inwood", + "Glen Ridge", + "Plumas Lake", + "Hales Corners", + "Hughson", + "Scappoose", + "McCook", + "Lago Vista", + "Columbia Falls", + "Dry Run", + "Jackson", + "Marshall", + "Montrose", + "Albertville", + "Porters Neck", + "Gold River", + "Berlin", + "Delafield", + "Mount Horeb", + "Big Stone Gap", + "Gonzales", + "Pikeville", + "Haddon Heights", + "Page", + "Fairfax", + "Yreka", + "Benton", + "Norwich", + "Marengo", + "Fairlawn", + "Robinson", + "Gurabo", + "Tyrone", + "North Star", + "Purcell", + "Lowell", + "Hatboro", + "Landen", + "Dos Palos", + "Oceano", + "Sappington", + "McCordsville", + "Silvis", + "Newport", + "Southwood Acres", + "Mount Shasta", + "Ojai", + "Monticello", + "Villa Hills", + "St. Gabriel", + "Lander", + "Palmer", + "Dock Junction", + "Keystone Heights", + "Waikele", + "White Oak", + "Hillcrest", + "Rockton", + "Park City", + "Ashland", + "Florence", + "Old Town", + "Edgerton", + "New London", + "North Bend", + "Hiawatha", + "Hubbard", + "River Rouge", + "Sandwich", + "Belen", + "Marion", + "Inverness", + "Cotati", + "Wauseon", + "Mills River", + "Saranac Lake", + "Sanibel", + "Farmington", + "Soldotna", + "Port Jefferson Station", + "Greenville", + "West Concord", + "New Bremen", + "Mentor-on-the-Lake", + "Ancient Oaks", + "Farr West", + "South Apopka", + "Pembroke", + "Canóvanas", + "Providence Village", + "Inverness", + "Gypsum", + "Clarkston", + "Tolleson", + "Montpelier", + "New Roads", + "Ponchatoula", + "Camp Pendleton North", + "Smithville", + "Eden Isle", + "Pomona", + "Charles City", + "Stanwood", + "St. Rose", + "St. Joseph", + "Hudsonville", + "Spring Hill", + "Philadelphia", + "Bellbrook", + "Mexia", + "Kenwood", + "Middleborough Center", + "Mantua", + "Makawao", + "Gibsonville", + "Dade City", + "Red Chute", + "Village St. George", + "Winooski", + "Sky Lake", + "Valley Center", + "Umatilla", + "Oak Grove", + "Strasburg", + "Geneva", + "Whiteville", + "University of California-Davis", + "Sabana Seca", + "Ephraim", + "Lochbuie", + "North Springfield", + "Longboat Key", + "Dahlonega", + "Nebraska City", + "Hardeeville", + "Connellsville", + "Torrington", + "New Cumberland", + "Pinehurst", + "Huron", + "Alta Sierra", + "Northridge", + "Moab", + "Wildwood", + "Baywood", + "Northport", + "Ralston", + "Madison", + "Tanglewilde", + "Ormond-by-the-Sea", + "Delphos", + "Stevensville", + "Lihue", + "Murillo", + "St. Louis", + "Hobart", + "Pleasantville", + "Neptune Beach", + "Crystal City", + "Williston Park", + "Union Grove", + "Richland", + "Bedford", + "Belle Isle", + "Woodstock", + "Franklin", + "Collinsville", + "Willow Oak", + "Emmitsburg", + "Willows", + "Parkville", + "Roosevelt", + "East Hills", + "Acton", + "La Feria", + "Washington", + "Tappan", + "Cochituate", + "Whitinsville", + "Batesville", + "Lake Lorraine", + "Seward", + "Midland Park", + "Moapa Valley", + "Middletown", + "Corbin", + "Dunellen", + "Jackson", + "Riverdale Park", + "Knoxville", + "Unionville", + "Gunnison", + "Morrow", + "Sandston", + "Belle Plaine", + "Nuevo", + "Enoch", + "Pacific", + "Utuado", + "Canfield", + "Independence", + "Elsa", + "Centerville", + "Commerce", + "Austell", + "Glenolden", + "Parkville", + "Hillsborough", + "Crozet", + "Pollock Pines", + "Nyack", + "Tyrone", + "Larose", + "Lawrenceville", + "Brook Highland", + "Cottage Grove", + "De Soto", + "Palmyra", + "Nappanee", + "Atherton", + "Nibley", + "Kingsland", + "Walled Lake", + "San Lorenzo", + "Winsted", + "Bonne Terre", + "Live Oak", + "Rockville", + "Calipatria", + "Mead", + "Parkwood", + "Russellville", + "Pinson", + "Selma", + "Marble Falls", + "Decatur", + "Fort Myers Beach", + "Dunbar", + "Byron Center", + "Homestead Meadows South", + "Portage Lakes", + "Meridianville", + "Homeland", + "Osceola", + "Syracuse", + "Souderton", + "Flatwoods", + "Fair Plain", + "Gateway", + "Mount Ivy", + "Milton-Freewater", + "River Park", + "Yabucoa", + "Sausalito", + "South Lockport", + "Ridley Park", + "Highland Heights", + "Woodlake", + "Barnesville", + "Berrien Springs", + "St. Helena", + "Hudson Falls", + "Noble", + "Gulf Park Estates", + "Oak Ridge", + "Rochester", + "San Isidro", + "Orange City", + "Seminole", + "Groesbeck", + "Springs", + "Marksville", + "Truth or Consequences", + "Laurium", + "Archbald", + "Willis", + "Great Neck Plaza", + "Rancho Calaveras", + "Orland Hills", + "Kentfield", + "Kiel", + "Mount Carmel", + "Crete", + "Meraux", + "Garden Home-Whitford", + "St. Augustine Beach", + "Zuni Pueblo", + "Mendota", + "Cos Cob", + "Adel", + "Heathrow", + "Calverton", + "Galliano", + "Eagle", + "Hillsboro", + "Oakdale", + "Barberton", + "Keyport", + "Beacon Square", + "Brier", + "Trumann", + "Milltown", + "Hamilton", + "Leitchfield", + "Creswell", + "Bondurant", + "Stratford", + "Prairie View", + "Catoosa", + "Paintsville", + "Plymouth Meeting", + "Bremen", + "Ocean City", + "Vandalia", + "Edgemoor", + "Westmere", + "Fort Meade", + "Osprey", + "Franklin", + "Fort Pierce North", + "Sturgis", + "West Samoset", + "Treasure Island", + "Spring Lake Park", + "Black Jack", + "Lewisburg", + "Heber Springs", + "West Slope", + "Woodland", + "Gulf Breeze", + "Viola", + "Freeland", + "Lake Mills", + "Byron", + "Latimer", + "Thermalito", + "Whitemarsh Island", + "Colusa", + "Union", + "Junction City", + "Ben Lomond", + "University Park", + "Gleneagle", + "Mountainside", + "Moores Mill", + "Perry", + "Chestertown", + "St. Martinville", + "Harrisville", + "Twin Rivers", + "Huron", + "Mechanicstown", + "Loomis", + "King", + "West Glens Falls", + "Youngtown", + "Lemoore Station", + "Lutherville", + "Milford", + "Greenbrier", + "Lecanto", + "Eldridge", + "Old Greenwich", + "Idabel", + "South Patrick Shores", + "Sunnyvale", + "Bee Cave", + "Lovejoy", + "Fircrest", + "Las Piedras", + "Huntertown", + "Crossett", + "Taneytown", + "Mount Vernon", + "Fort Myers Shores", + "Kirtland", + "Lakes of the Four Seasons", + "Marion", + "San Martin", + "Kimberly", + "Hewlett", + "Taylor Mill", + "Yardville", + "East Shoreham", + "Valley Park", + "Thousand Palms", + "Amory", + "Columbus", + "Lake Mathews", + "Marvin", + "Fowler", + "Fishhook", + "Breinigsville", + "Lincoln", + "Myers Corner", + "South Valley Stream", + "Millersville", + "Cortland", + "Guánica", + "Desert Palms", + "Indian River Estates", + "Pembroke Park", + "Lake Hallie", + "Ellettsville", + "Prairie Grove", + "Napili-Honokowai", + "Montevallo", + "Mount Healthy", + "Clover Creek", + "Allendale", + "Rupert", + "Snowflake", + "Bayville", + "Litchfield", + "Maple Glen", + "Eatonton", + "Bellwood", + "Lacy-Lakeview", + "Kosciusko", + "Orchard Mesa", + "Roaring Spring", + "Woodfin", + "Rumson", + "Broadway", + "Medina", + "Harrisburg", + "Bermuda Dunes", + "Clifton Heights", + "Wescosville", + "Roeland Park", + "Dayton", + "Lucas Valley-Marinwood", + "Cherryville", + "Belfast", + "Nevada", + "Dunlap", + "Lauderdale-by-the-Sea", + "Church Hill", + "Potomac Mills", + "Linwood", + "Ashville", + "Valley Falls", + "Sandersville", + "Blairsville", + "Bridgeport", + "Sturtevant", + "Litchfield", + "Cherry Hills Village", + "Notre Dame", + "Pocahontas", + "Morrilton", + "Barrington", + "Belle Haven", + "Juana Díaz", + "Tecumseh", + "Mecca", + "Mira Monte", + "Cedarhurst", + "Folcroft", + "Pea Ridge", + "Belmont", + "Green Knoll", + "Guadalupe", + "Veneta", + "North Syracuse", + "Manorhaven", + "Battlefield", + "Puerto Real", + "North Caldwell", + "Beaver Dam", + "Ladera Heights", + "Winthrop Harbor", + "Whitmore Lake", + "Hillsboro", + "Brewton", + "Kermit", + "Demopolis", + "Talent", + "Hamilton", + "Trinity", + "Normandy Park", + "Bridge City", + "Ambridge", + "Amite City", + "Catasauqua", + "Cocoa West", + "Forestbrook", + "Bethel", + "Ewa Villages", + "Northgate", + "Oneonta", + "Mont Belvieu", + "South Monrovia Island", + "Cold Spring", + "Keene", + "Walnut Ridge", + `Thompson's Station`, + "Stickney", + "Green Hill", + "Rossford", + "Blackwell", + "Contra Costa Centre", + "Lawrence", + "Roslyn Heights", + "South Hill", + "Tuckahoe", + "Waikoloa Village", + "Keyes", + "Cumming", + "Portage", + "Fox Point", + "Slippery Rock", + "Clairton", + "Oakmont", + "Fairview", + "Plaquemine", + "Elkin", + "Plattsmouth", + "De Queen", + "Hapeville", + "Laurence Harbor", + "Atlantic", + "Castroville", + "Russells Point", + "Martins Ferry", + "West View", + "Milford", + "Kingston", + "Air Force Academy", + "De Soto", + "Avon", + "Heathcote", + "Naples Manor", + "Rittman", + "Bangor Base", + "Anadarko", + "Schriever", + "Harrah", + "Monticello", + "Williamston", + "Homeacre-Lyndora", + "Pratt", + "Basehor", + "Geneseo", + "Severance", + "Ocean Shores", + "La Habra Heights", + "Prospect Park", + "Ambler", + "East Rochester", + "Mulvane", + "Camilla", + "Lynchburg", + "Hillandale", + "Stratmoor", + "Buena Vista", + "Prairie du Chien", + "Silver Lake", + "Irvington", + "Prestonsburg", + "Moraine", + "Penn Yan", + "Forest Glen", + "Scenic Oaks", + "Columbia", + "Genoa", + "Otis Orchards-East Farms", + "Sidney", + "Darnestown", + "Hebron", + "Glendive", + "Yorketown", + "Lake Murray of Richland", + "Ironwood", + "Sealy", + "Emporia", + "Carrollton", + "Inverness Highlands South", + "East Falmouth", + "Upper Sandusky", + "Vine Grove", + "Litchfield Park", + "Devine", + "Orange Lake", + "Oelwein", + "Carthage", + "Crystal Lake", + "Hurricane", + "North Riverside", + "Cheverly", + "Savage", + "Bridgeport", + "Valley City", + "Salem", + "Douglas", + "Greenville", + "Orlovista", + "Eudora", + "Walkersville", + "Garrett", + "Bowleys Quarters", + "Littlestown", + "Bronxville", + "Kingston Estates", + "Burnet", + "Lincroft", + "Jordan", + "Hampstead", + "Carolina Beach", + "Mount Vernon", + "Lionville", + "Ramtown", + "Rockford", + "Steilacoom", + "Opp", + "Abilene", + "Rhome", + "Aptos", + "Belpre", + "Crockett", + "Ellenville", + "East End", + "Rushville", + "International Falls", + "Rogersville", + "Prosser", + "West Point", + "Nephi", + "Richboro", + "Cullowhee", + "Mims", + "Village of Oak Creek", + "Jasper", + "Nitro", + "Wharton", + "Johnsburg", + "Fort Riley", + "Sunbury", + "Wollochet", + "Keyser", + "Kathleen", + "Combee Settlement", + "Henderson", + "Cynthiana", + "Tabor City", + "North Fort Lewis", + "West Hattiesburg", + "Allegan", + "Dacula", + "Schuyler", + "Tipton", + "Clarkston Heights-Vineland", + "Galax", + "Jan Phyl Village", + "Swarthmore", + "Carmel Hamlet", + "Gladewater", + "Iowa Park", + "Yaphank", + "St. John", + "Theodore", + "Pepper Pike", + "Red Lion", + "Hamlet", + "White Oak", + "Comstock Northwest", + "Islamorada", + "Mascotte", + "Pass Christian", + "Jeanerette", + "Delano", + "Waveland", + "North Hobbs", + "Forest Hills", + "El Rio", + "Lely Resort", + "East Porterville", + "Ranchettes", + "Boiling Spring Lakes", + "Stone Mountain", + "Covedale", + "California", + "St. Robert", + "New Castle", + "Howland Center", + "Pigeon Forge", + "Huntington Woods", + "Richmond", + "Fairwood", + "East Glenville", + "Lake Alfred", + "Snyderville", + "Morris Plains", + "Powell", + "Hampshire", + "Enola", + "Salton City", + "Blue Bell", + "Corcoran", + "Ocean City", + "Walker", + "St. James", + "Camp Swift", + "South Run", + "Pecan Plantation", + "New Whiteland", + "Cameron Park", + "Sylvester", + "Boonville", + "Boothwyn", + "Orange Beach", + "Buena Vista", + "Solvay", + "Champion Heights", + "East Foothills", + "South Gate Ridge", + "Newberry", + "Saranap", + "Glenwood", + "Kenedy", + "Pimmit Hills", + "Edinboro", + "Fruit Heights", + "Addis", + "Wailea", + "Chelan", + "Pea Ridge", + "Blakely", + "Grayson Valley", + "Corry", + "Twin Lakes", + "Avra Valley", + "Kennett Square", + "Everman", + "Union Gap", + "Satsuma", + "Sheridan", + "Leonardtown", + "Eastman", + "High Springs", + "University at Buffalo", + "Huntingburg", + "Pontotoc", + "East Farmingdale", + "Clyde", + "Eagar", + "Branford Center", + "Rib Mountain", + "Henryetta", + "Montgomery", + "Simsbury Center", + "Clinton", + "Evansville", + "Lanett", + "Raleigh Hills", + "Bridgewater", + "Glenarden", + "East Pasadena", + "Pelican Bay", + "West Loch Estate", + "Tequesta", + "Elm Grove", + "Carlstadt", + "North Windham", + "Cochran", + "Lakeview", + "Binghamton University", + "Eucalyptus Hills", + "Arlington Heights", + "Independence", + "Laurel Bay", + "Garrettsville", + "Gardnerville", + "Isanti", + "Punxsutawney", + "Country Homes", + "Wailua Homesteads", + "Fruitridge Pocket", + "Sidney", + "Princeton", + "Bartonville", + "Chena Ridge", + "Pauls Valley", + "Munford", + "Tarrant", + "Los Chaves", + "Los Ranchos de Albuquerque", + "Edgewood", + "Aquia Harbour", + "Indian Hills", + "El Granada", + "Stewartville", + "Bensley", + "Shrewsbury", + "Alpine", + "Harlan", + "Larchmont", + "Willard", + "Ontario", + "Wheelersburg", + "Cheshire Village", + "Pleasure Point", + "Arroyo", + "Clifton Springs", + "South Williamsport", + "Nelsonville", + "Childress", + "Deschutes River Woods", + "Brookhaven", + "Carrizo Springs", + "Riverside", + "Barbourville", + "Dacono", + "Union", + "Tea", + "Rensselaer", + "Pinehurst", + "Finley", + "Cumberland", + "Chillicothe", + "Fort Shawnee", + "Metropolis", + "Maquoketa", + "Watchung", + "Davenport", + "Portland", + "Williamsburg", + "Du Quoin", + "Baldwin", + "Elburn", + "Ashton-Sandy Spring", + "Kingston", + "Homeland Park", + "Lewistown", + "Durham", + "Winfield", + "Cut Off", + "District Heights", + "Louisville", + "Northern Cambria", + "Pevely", + "South Monroe", + "Naval Academy", + "North Hills", + "Lakemoor", + "Trooper", + "Vail", + "Inniswold", + "Steelton", + "Northville", + "Johnson Lane", + "Lucerne Valley", + "St. Clair", + "East Alton", + "Rocky Mount", + "Savannah", + "Barnhart", + "Mila Doce", + "Gowanda", + "Shields", + "Progreso", + "Gray", + "Westville", + "Yoakum", + "Darlington", + "Raton", + "Goodrich", + "Countryside", + "Sullivan City", + "Penn Wynne", + "Paradise", + "Pagosa Springs", + "Woodcreek", + "Dumfries", + "Homer", + "Wesley Hills", + "Mineola", + "Finderne", + "Zebulon", + "Cresaptown", + "Granville", + "Staunton", + "Taylor", + "Roanoke", + "Greenacres", + "Eagleton Village", + "Selinsgrove", + "Hampstead", + "Norwood", + "Sweetwater", + "Old Tappan", + "Willard", + "Madisonville", + "Loudon", + "Slaton", + "Chamberlayne", + "Montezuma", + "Jamesburg", + "Massanetta Springs", + "Gustine", + "Nolanville", + "Windcrest", + "Spring Ridge", + "Brookville", + "Mayflower Village", + "Marlow Heights", + "Elsmere", + "Turpin Hills", + "Luling", + "Glendale", + "Hutchins", + "Chester", + "Belton", + "Margate City", + "Posen", + "Dowagiac", + "Alma", + "Las Flores", + "Franklin Center", + "McKees Rocks", + "Paulsboro", + "New Martinsville", + "Breese", + "Mount Arlington", + "Old Fig Garden", + "Silver Lakes", + "Harris Hill", + "Carterville", + "Orchard Homes", + "Littlefield", + "Prospect Park", + "Willow Park", + "Hartwell", + "Woodcliff Lake", + "Cave Creek", + "Chelsea", + "Roseland", + "Cidra", + "Greenwood", + "Moosic", + "Hellertown", + "South Hooksett", + "Berne", + "West Clarkston-Highland", + "Eldorado at Santa Fe", + "Mattydale", + "Harvest", + "Lebanon", + "Brookshire", + "Bright", + "Volo", + "Ramblewood", + "Lake Mohegan", + "Beardstown", + "Manasquan", + "Marianna", + "West Bountiful", + "Fellsmere", + "Mount Zion", + "Piedmont", + "Plymouth", + "Bay Harbor Islands", + "Norwood", + "Patterson", + "Villa Park", + "Highgrove", + "The Village of Indian Hill", + "Conley", + "Little Silver", + "Edna", + "Peoria Heights", + "Hilton", + "Granite Shoals", + "Palmview", + "Fountainhead-Orchard Hills", + "Eaton", + "Gas City", + "Brownfields", + "Attalla", + "Belding", + "Crafton", + "Washingtonville", + "Brush", + "White City", + "Trenton", + "Fort Lee", + "Oak Point", + "West Modesto", + "Dickson City", + "Hilmar-Irwin", + "Violet", + "White Rock", + "Flanders", + "Sansom Park", + "North Manchester", + "Asbury", + "Fort Wright", + "Rancho Murieta", + "West Yarmouth", + "Warrenton", + "Sinton", + "Fair Haven", + "Fabens", + "Lee Acres", + "Naples Park", + "Benton", + "Fort Washington", + "Crosspointe", + "Mount Carmel", + "Oceanport", + "Bellevue", + "South Haven", + "Paola", + "Monroeville", + "Zapata", + "South Tucson", + "Grafton", + "Rio Pinar", + "Ulysses", + "Lewisburg", + "Dripping Springs", + "Grafton", + "Highland", + "Douglass Hills", + "Spring Grove", + "Woods Creek", + "Laie", + "Belle Fourche", + "Chickasaw", + "Nazareth", + "Elmwood", + "Sharon Hill", + "Wrightsville", + "Linglestown", + "Media", + "New Brighton", + "Princeton", + "Hollidaysburg", + "Loughman", + "Manchester", + "Dove Valley", + "Tellico Village", + "Estherville", + "Philomath", + "Greenbrier", + "Wilton", + "Mathis", + "Hartford City", + "Wayne", + "Eastwood", + "Richmond", + "Gardiner", + "Wilmington", + "Surfside", + "Paoli", + "Starke", + "East Flat Rock", + "Dandridge", + "Cambria", + "Corydon", + "Pontoon Beach", + "Byron", + "Wyndmoor", + "Samsula-Spruce Creek", + "Zephyrhills South", + "Lakehills", + "Alva", + "Milton", + "Oreland", + "Groveport", + "Olivarez", + "Willow Springs", + "Jonesborough", + "Kingstree", + "Anna", + "Lake Delton", + "Dayton", + "Cottleville", + "Bowling Green", + "Blaine", + "Lackland AFB", + "Elverta", + "Mansfield", + "Rusk", + "Linton", + "Semmes", + "Palmview South", + "Honesdale", + "Warren", + "Tonganoxie", + "Marlin", + "Oxford", + "Islip Terrace", + "Bessemer City", + "Siesta Key", + "New Carlisle", + "Deer Park", + "Slinger", + "Lake Bluff", + "Waterford", + "Frankenmuth", + "Eureka", + "Stroudsburg", + "Duquesne", + "Preston", + "Tracyton", + "Nashville", + "Leadville", + "Ceiba", + "Berryville", + "Vinita", + "Connell", + "Belmar", + "Buckner", + "Taylorsville", + "Glencoe", + "Wappingers Falls", + "Lake Park", + "Ada", + "Exeter", + "Hidden Valley Lake", + "Waterville", + "Waimanalo", + "Anamosa", + "Zeeland", + "Forest", + "Pelham Manor", + "Monticello", + "Colorado City", + "Weldon Spring", + "Hidden Valley", + "Shaw Heights", + "Falcon Heights", + "Strawberry", + "Atlanta", + "Palm Springs North", + "Weiser", + "Yosemite Lakes", + "Clare", + "Highland Lakes", + "Germantown", + "Baxley", + "Santa Teresa", + "Carlinville", + "Sherwood Manor", + "Elberton", + "Kayenta", + "Winston", + "Wellston", + "Rockdale", + "Holdenville", + "Swartz Creek", + "Mena", + "Stokesdale", + "Fort Plain", + "Kalaheo", + "Wolfforth", + "Fairview", + "Manteo", + "Peculiar", + "Muldrow", + "Breckenridge", + "Somerdale", + "Sparta", + "Dulles Town Center", + "Indian Wells", + "Williams", + "Charleston", + "Cameron", + "New Holland", + "Pana", + "Woodside", + "Adel", + "Waipio Acres", + "Jim Thorpe", + "Terrell Hills", + "Carlisle", + "Colby", + "Centerville", + "Jamul", + "East Moriches", + "Springhill", + "South Pittsburg", + "Eaton Rapids", + "Gilbertsville", + "Robbins", + "South Highpoint", + "Northwood", + "St. Augustine South", + "Black River Falls", + "Honeoye Falls", + "Fruitland", + "Rockwood", + "Coraopolis", + "Shady Side", + "Waynesboro", + "Monaca", + "Jackson", + "Lafayette", + "Angier", + "Batesburg-Leesville", + "Denver City", + "Chadron", + "Ferriday", + "New Hempstead", + "Coal City", + "Canal Fulton", + "Holdrege", + "East Port Orchard", + "Salamanca", + "Valparaiso", + "Valatie", + "Algona", + "Mocksville", + "Friendship Heights Village", + "Palermo", + "Floral City", + "Centerport", + "Pinckneyville", + "New Castle", + "Smiths Station", + "Warm Mineral Springs", + "Manitou Springs", + "Northfield", + "Berlin", + "Central", + "La Grange", + "Winterset", + "Lemmon Valley", + "Exton", + "Bellows Falls", + "Orwigsburg", + "Citrus Park", + "Caldwell", + "Cleveland", + "Lisbon", + "Polson", + "Cavalero", + "Kaser", + "Estacada", + "Chackbay", + "Manchester", + "Clarinda", + "Sunset", + "Wind Lake", + "Penn Estates", + "St. Paul Park", + "Simonton Lake", + "Ward", + "Hockinson", + "Añasco", + "Englewood Cliffs", + "James City", + "Anthony", + "Shepherdstown", + "North Oaks", + "Mattawa", + "Caruthersville", + "Port LaBelle", + "Williamson", + "Travelers Rest", + "Rincon Valley", + "East Quogue", + "Macon", + "Morganfield", + "Apple Valley", + "Palmerton", + "San Leon", + "Edgewater", + "Jonesboro", + "Morris", + "McGregor", + "Westernport", + "Kensington", + "Wake Village", + "Avondale", + "Hawaiian Beaches", + "Shillington", + "McKenzie", + "Uhrichsville", + "Lehighton", + "Minot AFB", + "Fort Rucker", + "Fruitland", + "Savannah", + "Fairport", + "Union Beach", + "Pawcatuck", + "Hightstown", + "Brady", + "Brent", + "Eagleville", + "Bulverde", + "Paxtonia", + "Waynesville", + "Mount Carmel", + "Kings Point", + "Bear Valley Springs", + "Orange", + "Kahaluu-Keauhou", + "Iola", + "Zephyrhills West", + "Garnet", + "Lake Fenton", + "Old Bethpage", + "South Sarasota", + "Midway", + "Big Bear Lake", + "Titusville", + "St. Clair", + "Grayson", + "Red Oak", + "Cave Springs", + "Wadesboro", + "Ripley", + "Hawkinsville", + "Forsyth", + "Rothschild", + "Delhi Hills", + "Belvedere", + "Pecan Acres", + "Giddings", + "Venus", + "Perry", + "Carlyss", + "Santa Isabel", + "Calistoga", + "Odessa", + "Poolesville", + "Livingston", + "Walkertown", + "Osceola", + "Yarmouth Port", + "Briar", + "Ranson", + "Salem", + "Lake Wildwood", + "Hendron", + "Bangor", + "Hollywood", + "Byron", + "Ballston Spa", + "Bisbee", + "Albertson", + "Springfield", + "Highwood", + "Chisago City", + "Union City", + "Myrtletown", + "Gilmer", + "Williamsville", + "Layhill", + "Elmsford", + "Center", + "Cutler", + "Farmers Loop", + "Naguabo", + "Montrose", + "Pinardville", + "Aberdeen", + "Diboll", + "Hutchinson Island South", + "Williamston", + "Ravena", + "Ettrick", + "Thatcher", + "South Bay", + "Ocean Bluff-Brant Rock", + "Springfield", + "Timber Pines", + "West Wendover", + "Obetz", + "Twin Lakes", + "DeWitt", + "Sawmills", + "Paulden", + "Attica", + "Mount Olive", + "Boulder Creek", + "Tichigan", + "Parker", + "Dunlap", + "Doffing", + "Collegeville", + "West Pleasant View", + "Broadmoor", + "Grandwood Park", + "Creve Coeur", + "Sterling", + "Crawfordville", + "Lake City", + "River Ridge", + "Erwin", + "Grosse Pointe", + "Blauvelt", + "Hanamaulu", + "Bliss Corner", + "Grambling", + "Bret Harte", + "Ottawa", + "Birdsboro", + "Bristol", + "Peñuelas", + "St. Clairsville", + "Ayden", + "Glendale", + "Turtle Creek", + "Margaret", + "Colville", + "Carle Place", + "Primera", + "Humboldt", + "Sergeant Bluff", + "Homestead Meadows North", + "Spring Valley", + "Flagler Beach", + "Canutillo", + "Rainsville", + "Kenneth City", + "Lone Grove", + "Silver Hill", + "Colona", + "Tara Hills", + "Battlement Mesa", + "Post", + "Bowie", + "McGuire AFB", + "Carmi", + "Kings Park", + "Quantico Base", + "Coco", + "Utica", + "Schuylkill Haven", + "Scott City", + "Portland", + "Poplar Grove", + "Buellton", + "Daleville", + "Belleview", + "Denair", + "Highland Lakes", + "Johnstown", + "South Pasadena", + "South Haven", + "Hugo", + "Tice", + "Town and Country", + "Lakeview", + "Morganville", + "New Burlington", + "Holbrook", + "Four Corners", + "Rio Hondo", + "Sheldon", + "North Fond du Lac", + "Crestwood", + "Fox Chapel", + "Vinton", + "De Motte", + "Silver Springs", + "Maplewood", + "Glencoe", + "Shanor-Northvue", + "Massac", + "Munroe Falls", + "Saltillo", + "Monee", + "Iowa Falls", + "Roseburg North", + "Buckley", + "Gretna", + "Stewartstown", + "West Hills", + "Glen Head", + "Salinas", + "Clifton", + "Offutt AFB", + "Berkeley", + "Carver", + "Dundee", + "North Scituate", + "Montevideo", + "Sulphur", + "Summit", + "Amelia", + "Mechanicville", + "Barling", + "Krum", + "Terryville", + "La Crescent", + "Worland", + "Olyphant", + "Stafford Springs", + "Whiskey Creek", + "Doney Park", + "Glennville", + "Sea Cliff", + "Abbeville", + "Muleshoe", + "West Salem", + "Guerneville", + "Hawaiian Ocean View", + "West Sayville", + "Mullins", + "Swoyersville", + "Hoopeston", + "Greenfield", + "Hudson", + "Ridgeland", + "Dwight", + "Oak Park Heights", + "Gillespie", + "Midfield", + "Westvale", + "Timnath", + "Dellwood", + "South Barrington", + "Pine Manor", + "Milan", + "Orangetree", + "Pittsburg", + "Concordia", + "Manchester", + "Montrose-Ghent", + "Gibson", + "Huxley", + "Princeton", + "Alexandria", + "Winnsboro", + "Medical Lake", + "Redwood Falls", + "Adairsville", + "White Hall", + "Jonesboro", + "Polk City", + "Parker", + "Carrollton", + "Everson", + "Clementon", + "Raeford", + "Wellington", + "Becker", + "Cicero", + "Kingsford", + "Richland Center", + "Westlake", + "Mayfair", + "Wildwood", + "Beckett", + "Alvarado", + "Centreville", + "Blue Point", + "Wheatley Heights", + "Jasper", + "Vancleave", + "Circle Pines", + "Fairfield", + "Bolivar", + "Maize", + "Pleasant Garden", + "Mount Carmel", + "Cold Spring Harbor", + "Kanab", + "Long View", + "Sheridan", + "Blackwood", + "Farmville", + "Northvale", + "Crystal Springs", + "Raynham Center", + "Toronto", + "Rutherford", + "Salem", + "Glasgow Village", + "Firthcliffe", + "Midway", + "St. Joseph", + "Buena Vista", + "Bay Hill", + "Kingfisher", + "New Haven", + "Prospect", + "Sugarcreek", + "Bridgeville", + "Seven Lakes", + "Winona Lake", + "King George", + "Mount Pleasant", + "Centreville", + "Big Pine Key", + "Lake Worth", + "Telford", + "Demarest", + "Cashmere", + "Mayville", + "Flower Hill", + "Suncook", + "Pleasant Run", + "Island Park", + "Smithville", + "Desloge", + "Davison", + "Benson", + "West Columbia", + "East Freehold", + "Chinle", + "New Lexington", + "Vandergrift", + "Bealeton", + "Denton", + "Thiells", + "Hunters Creek Village", + "Cherokee", + "Shenandoah", + "Middlefield", + "Lake Barrington", + "Tucumcari", + "Berlin", + "Clarks Summit", + "Wahneta", + "Lincoln Village", + "Chittenango", + "Flora", + "Duryea", + "Palmetto", + "Glendora", + "Nashville", + "Chisholm", + "Manheim", + "Luray", + "Whitehouse", + "Sawgrass", + "Normandy", + "Bluefield", + "Perry", + "Childersburg", + "Porter", + "Marseilles", + "Green Tree", + "Arnold", + "Rockford", + "West Milton", + "Stone Park", + "Chattahoochee", + "Hummelstown", + "Caro", + "Forest Hills", + "Ridge Manor", + "Falfurrias", + "Edgefield", + "Windsor Heights", + "DeWitt", + "Waynesboro", + "Three Points", + "West Bay Shore", + "Nassau Village-Ratliff", + "Chesterbrook", + "Magnolia", + "Michigan Center", + "West Jefferson", + "Hyde Park", + "Dallas", + "Goddard", + "East Harwich", + "Pleasant View", + "Temple", + "Hickory Creek", + "Schlusser", + "Dillon", + "Midway North", + "Middletown", + "Olympia Fields", + "Lindale", + "Manchester", + "DeQuincy", + "Wolverine Lake", + "Wamego", + "Carthage", + "Black Diamond", + "Clifton Forge", + "Landrum", + "Elko New Market", + "Monticello", + "Bells", + "Wilmer", + "New Boston", + "Watseka", + "Ashland City", + "Harlan", + "Potosi", + "Whiting", + "Crooksville", + "Dansville", + "Weston", + "Ahoskie", + "Benton City", + "Shelley", + "West Pittston", + "Forked River", + "Ligonier", + "Royal Pines", + "Penns Grove", + "Mount Plymouth", + "Shelbyville", + "Dodgeville", + "Royersford", + "Ford City", + "Lake Sarasota", + "Cherry Grove", + "Madisonville", + "Bloomfield", + "Lincoln", + "Rockwell", + "McLoud", + "Port Allen", + "Evansdale", + "Nowthen", + "Baxter Springs", + "Seat Pleasant", + "Palos Park", + "Manning", + "Columbia", + "Candlewick Lake", + "Campanilla", + "Winnfield", + "Mead", + "Santa Bárbara", + "Harrington Park", + "Archbold", + "Silverton", + "Medina", + "Madill", + "El Jebel", + "Campbelltown", + "Grandyle Village", + "Edwardsville", + "Chula Vista", + "Camino Tassajara", + "Emerald Lake Hills", + "Weston Lakes", + "Indian Mountain Lake", + "Butler Beach", + "Penitas", + "Dexter", + "Highlands", + "Lake San Marcos", + "Headland", + "Summit", + "Westwood", + "Eldon", + "Deale", + "Winchester", + "Castroville", + "Crystal City", + "Baldwin City", + "Fountain Hill", + "Gladstone", + "Miami Heights", + "Broad Brook", + "Mountain Grove", + "Falmouth", + "Cheboygan", + "Bishopville", + "Placitas", + "Westmont", + `Morgan's Point Resort`, + "Lexington", + "Sierra View", + "Lake View", + "Wayland", + "Sherman", + "Mountain Lake Park", + "Smith Mills", + "Mattituck", + "Brookdale", + "Connerton", + "Brisbane", + "North Braddock", + "June Park", + "South Lebanon", + "Bigfork", + "Osage Beach", + "Brielle", + "Summerside", + "Spurgeon", + "Tuscola", + "Cherokee Village", + "Sandy Oaks", + "Carolina Shores", + "Granite Falls", + "Hawthorne", + "Chester", + "Millis-Clicquot", + "Wayzata", + "Tama", + "Madison", + "Paradise Hills", + "Tulia", + "West Elmira", + "Phoenix", + "Reiffton", + "Danville", + "Little Falls", + "Boalsburg", + "Woodruff", + "Galeville", + "Jackson", + "Pea Ridge", + "Kaplan", + "Lemoyne", + "Durand", + "East Palestine", + "Gardnertown", + "Wanamassa", + "Spruce Pine", + "Swartz", + "Hebbronville", + "Daingerfield", + "Hampton", + "Comerío", + "Vilonia", + "Auburn", + "Rock Hill", + "Cape May Court House", + "Blountstown", + "Vandercook Lake", + "Hazardville", + "Edenton", + "Old Westbury", + "Daytona Beach Shores", + "Creedmoor", + "Higginsville", + "Coldwater", + "Woodmore", + "Spotsylvania Courthouse", + "Winnsboro", + "Bushnell", + "Haskell", + "Village of Four Seasons", + "Altavista", + "Newport", + "Dundee", + "Cold Spring", + "Oak View", + "North Sea", + "Neptune City", + "Lajas", + "Pascoag", + "Wingate", + "Williamstown", + "Montebello", + "Searingtown", + "Hollister", + "Suncoast Estates", + "Newport", + "Meadows Place", + "Edinburgh", + "Verdigris", + "Fort Defiance", + "Spry", + "Mount Ephraim", + "Plain City", + "Coopertown", + "Montgomery", + "Lower Grand Lagoon", + "Farrell", + "Flemington", + "Kahaluu", + "Beattystown", + "Peppermill Village", + "Buffalo", + "Fox River Grove", + "North Kansas City", + "West York", + "Blakely", + "Bridgeport", + "Portola Valley", + "Scottsville", + "Breckenridge Hills", + "Belfair", + "Vamo", + "Benton", + "Gray", + "Louisburg", + "Donora", + "Whitfield", + "Byram", + "Sullivan", + "Ellisville", + "Perezville", + "Castle Pines Village", + "Gang Mills", + "Rio Communities", + "Point Pleasant Beach", + "Okauchee Lake", + "Hartsdale", + "Columbiana", + "Fox Farm-College", + "Wahoo", + "Eastwood", + "Aurora", + "Union Springs", + "Leisure Village", + "Bremen", + "Santa Ynez", + "Oconto", + "Social Circle", + "Canastota", + "Harrington", + "Dardanelle", + "Wiggins", + "Dilley", + "Avalon", + "Gunnison", + "Boiling Springs", + "Piedmont", + "Palacios", + "East Hampton North", + "Paxton", + "Lexington", + "Whiteland", + "Luverne", + "Watertown", + "Laureles", + "Hazlehurst", + "Moses Lake North", + "Negaunee", + "Surfside Beach", + "Wrightsboro", + "Pilot Point", + "Buhl", + "Chain Lake", + "Spring Lake Heights", + "Piney", + "South Hill", + "Gibraltar", + "Winfield", + "Bonneauville", + "South Bound Brook", + "Reminderville", + "Oak Hill", + "Smithville", + "Capitol Heights", + "Lake Holiday", + "Phoenix Lake", + "North Westport", + "Mount Vernon", + "Hancock", + "Sauk Centre", + "Lake Wisconsin", + "Ludlow", + "Laguna Beach", + "East Petersburg", + "Silver Summit", + "Ardsley", + "Tallassee", + "Guayanilla", + "Crystal River", + "Hazlehurst", + "Ogallala", + "Bayshore", + "Edwardsville", + "Fremont", + "Florence", + "Orangeburg", + "Ottawa Hills", + "Jamestown", + "Sayre", + "Pine Level", + "Ebensburg", + "Fussels Corner", + "Medina", + "San Diego", + "Santa Venetia", + "Williamstown", + "Shady Hollow", + "Rosedale", + "Walhalla", + "Newton Falls", + "Castle Hills", + "Pinetop-Lakeside", + "Goodland", + "Huber Ridge", + "Woodville", + "Berryville", + "Millersburg", + "Utqiagvik", + "Helena Valley Northwest", + "Holiday City South", + "White City", + "Sunnyside", + "Algood", + "Mount Holly Springs", + "Horse Cave", + "High Ridge", + "Cramerton", + "Oak Grove", + "Bonsall", + "Minerva", + "Whiteville", + "West Peoria", + "Beaufort", + "Grayson", + "San Carlos", + "East Merrimack", + "Holtville", + "Mountain View Acres", + "La Verkin", + "Mount Hood Village", + "Pupukea", + "Reedsport", + "Lake Tansi", + "Coquille", + "Armonk", + "Mary Esther", + "Saukville", + "Unalaska", + "The Meadows", + "Tazewell", + "Beecher", + "Crestline", + "Enon", + "Russell", + "Dilworth", + "Valdese", + "Marlow", + "Jenkintown", + "Perryville", + "Berwick", + "Planada", + "Towanda", + "California", + "Ste. Genevieve", + "Stock Island", + "Brookridge", + "Churchville", + "Senoia", + "Cortland", + "King City", + "Kensington Park", + "Armona", + "Jourdanton", + "Sheffield", + "Viroqua", + "Jessup", + "St. James", + "Ashdown", + "Sparta", + "Montoursville", + "Walworth", + "Samoset", + "McSwain", + "Carlisle", + "Suquamish", + "Stanford", + "Ely", + "Hallsville", + "Holts Summit", + "Clintonville", + "Clarkdale", + "Church Point", + "Brookville", + "Redland", + "Hurstbourne", + "Mount Olive", + "Coopersville", + "Arabi", + "Windom", + "Nashville", + "Kingsville", + "Larksville", + "Jacksboro", + "West Laurel", + "Argyle", + "Van Alstyne", + "Cortez", + "Cornwall", + "Fetters Hot Springs-Agua Caliente", + "Caldwell", + "Woodbridge", + "Albion", + "Noyack", + "Heeia", + "Pendleton", + "Wonder Lake", + "Fort Branch", + "Long Hill", + "Pittsboro", + "Grottoes", + "Euharlee", + "Tarentum", + "Camanche", + "Todd Creek", + "Deer Park", + "Balm", + "Pacheco", + "Lake Providence", + "Copperopolis", + "Isle of Palms", + "Tontitown", + "Laurel", + "Hamburg", + "Mauston", + "West Hazleton", + "Hearne", + "Garwood", + "Shallotte", + "Atlantic Highlands", + "Sullivan", + "Harrogate", + "Argo", + "Canton", + "American Falls", + "Cedarville", + "Brices Creek", + "Greendale", + "French Island", + "North Terre Haute", + "East Troy", + "St. Bernard", + "Eldorado", + "Narberth", + "Elk Ridge", + "Bayside", + "Flourtown", + "Dyersville", + "Lake Montezuma", + "Forks", + "Fulton", + "Wallace", + "Cokato", + "Taylor", + "Dumas", + "Spring Valley Village", + "Del Mar", + "Montgomery", + "Bayou Vista", + "Nikiski", + "Glassport", + "Humboldt Hill", + "Larned", + "Moon Lake", + "Bethel Manor", + "Indian River Shores", + "West Ocean City", + "Wright City", + "Slatington", + "Aumsville", + "Holmes Beach", + "Springville", + "Pennside", + "Madeira Beach", + "Whitesboro", + "Whiteriver", + "Slaughterville", + "National Harbor", + "West Reading", + "Prescott", + "Lamar", + "Wauna", + "La Joya", + "Middlebury", + "Barnwell", + "Priceville", + "Selmer", + "Chatsworth", + "Crane", + "Geneva", + "Melwood", + "Crittenden", + "Springville", + "Ridge Wood Heights", + "Nelson", + "Cross Plains", + "Grant-Valkaria", + "Hayfield", + "Indian Rocks Beach", + "Osawatomie", + "Buena", + "Sellersville", + "Medford", + "Mifflinburg", + "Three Oaks", + "Adamsville", + "Justin", + "Fayette", + "Kenmar", + "Lytle", + "Coleman", + "Sparta", + "Morgan", + "Magnolia", + "Mather", + "Centralia", + "Chalfont", + "Quebradillas", + "Oneida", + "Port Aransas", + "Beaver", + "Travis Ranch", + "Lafayette", + "Reidland", + "Kewaskum", + "Park Layne", + "Clearwater", + "Buchanan", + "Blanchester", + "Belleair", + "Williamston", + "Florida", + "Imperial", + "Barboursville", + "Adjuntas", + "Mulberry", + "Hokes Bluff", + "Newport", + "Mifflintown", + "Pittsfield", + "Ellisburg", + "Groesbeck", + "Edgewood", + "Stafford Courthouse", + "Garden City South", + "Parker", + "Mitchell", + "Mystic", + "Mount Repose", + "Barclay", + "Pleasant Run Farm", + "Farley", + "Georgetown", + "Freeburg", + "Cotulla", + "Raymond", + "Sissonville", + "East Tawas", + "Lebanon", + "Waverly", + "Park Rapids", + "Fort Pierce South", + "Lyons", + "Pocomoke City", + "Verona", + "Venersborg", + "Bethlehem", + "Deer Park", + "Dorneyville", + "Hiram", + "Mountain Lakes", + "Mount Pleasant", + "Lake Darby", + "Masontown", + "China Grove", + "Bellville", + "Broken Bow", + "Singac", + "Fredericktown", + "McMurray", + "Ivanhoe", + "Brookfield", + "Mayodan", + "Moyock", + "Lonsdale", + "Central Gardens", + "Libby", + "Hampton", + "Greenville", + "Esperance", + "Red Rock", + "Woodstock", + "Spindale", + "Lancaster", + "Bristow", + "South Brooksville", + "Comanche", + "Silver Lake", + "Ellenton", + "Barrington Hills", + "Prairie Heights", + "Lonoke", + "Sebring", + "Thornwood", + "Malden", + "Golden Triangle", + "University Gardens", + "Trenton", + "Monte Vista", + "Malmstrom AFB", + "Hometown", + "Scandia", + "Carlyle", + "Westover", + "Mountain Home", + "Moosup", + "Captain Cook", + "El Cerro Mission", + "Bluffton", + "Whiteman AFB", + "Ovilla", + "Columbus", + "Lochmoor Waterway Estates", + "Fortville", + "Ketchum", + "Aldan", + "West Menlo Park", + "Otisville", + "Tiffin", + "Minersville", + "Grafton", + "Heritage Village", + "Oakwood", + "Fruit Hill", + "Harbison Canyon", + "Cockrell Hill", + "Carmel Valley Village", + "Tri-City", + "Blythewood", + "Burgaw", + "Virden", + "Bradley Beach", + "Barnesville", + "Waverly", + "Camdenton", + "Westville", + "Imbéry", + "Constantine", + "Mulberry", + "Haleyville", + "Louisville", + "Chariton", + "Taft", + "Rice Lake", + "Herculaneum", + "Charlevoix", + "Dewey-Humboldt", + "Northwest Harwich", + "Peotone", + "Riverdale", + "South Greeley", + "Etowah", + "Riva", + "Garden Ridge", + "Columbus", + "Swannanoa", + "Dawson", + "Rockville", + "Maeser", + "Peaceful Valley", + "Herricks", + "Lenwood", + "New Carlisle", + "Pocola", + "Benton Heights", + "Stanton", + "Christopher", + "Austin", + "Westport", + "Falls City", + "New Tazewell", + "Grant", + "Walthourville", + "Waverly", + "Randleman", + "Cassville", + "Woodstown", + "Burns", + "Heritage Hills", + "St. Marys", + "Caseyville", + "Goodview", + "Forest Oaks", + "Sinking Spring", + "Wadena", + "Del Monte Forest", + "Fleetwood", + "Sparks", + "Moxee", + "Perry", + "Jefferson", + "Monongahela", + "Pearl River", + "Dimmitt", + "Magee", + "West Milwaukee", + "Holloman AFB", + "Presidio", + "Bonifay", + "Scottdale", + "Wood Village", + "Lathrup Village", + "North Plymouth", + "Burnham", + "Rutherfordton", + "Marietta-Alderwood", + "North Richmond", + "Lorane", + "Pemberwick", + "Charlotte Harbor", + "Camuy", + "Austin", + "Whispering Pines", + "Newcomerstown", + "Waimanalo Beach", + "Northwoods", + "Waverly", + "Beavercreek", + "Sharpsville", + "Punta Santiago", + "Brewerton", + "Ripley", + "Mosinee", + "Boyertown", + "Running Springs", + "Narrows", + "Aguilita", + "Alexandria", + "New Lebanon", + "University", + "Rosemont", + "Rising Sun-Lebanon", + "Ho-Ho-Kus", + "West Bradenton", + "Rosewood Heights", + "La Paloma", + "Desoto Lakes", + "Stilwell", + "Marine City", + "Walton", + "Crescent Springs", + "Le Sueur", + "Rio Dell", + "Ridgway", + "Kimberly", + "Spackenkill", + "Shrewsbury", + "Egg Harbor City", + "Empire", + "Cannon Falls", + "Livingston", + "Hampton", + "Lake Belvedere Estates", + "Pipestone", + "Marienville", + "County Center", + "Spring House", + "Fayetteville", + "Forty Fort", + "Jamestown", + "Loch Lomond", + "Sunset Beach", + "Woodson Terrace", + "Algonac", + "Goulding", + "St. James", + "Redwood", + "Red Springs", + "Vandalia", + "Trevose", + "Belzoni", + "Hatillo", + `Lake Land'Or`, + "Weaverville", + "Fenton", + "Crooked River Ranch", + "Forest City", + "Horseshoe Bay", + "Gentry", + "San Joaquin", + "Trent Woods", + "San Carlos", + "Lisbon Falls", + "Crandall", + "Butte", + "Akron", + "Bellaire", + "Southgate", + "Danielson", + "Louisa", + "Kildeer", + "Rocky Ford", + "Rayville", + "Taylor Creek", + "Turners Falls", + "Rossville", + "Saylorville", + "University Center", + "India Hook", + "Ashburn", + "South Chicago Heights", + "Centerville", + "Park Hill", + "Lakewood", + "Butler", + "Bloomfield Hills", + "Gamewell", + "Mabank", + "Parkesburg", + "Lawnton", + "Jena", + "Shannon Hills", + "Southside", + "Richwood", + "Morrison", + "Greencastle", + "Marshall", + "Wrightwood", + "Clay Center", + "Louisburg", + "Fulton", + "Mills", + "Pocono Woodland Lakes", + "Shavano Park", + "Madison", + "High Point", + "Lyncourt", + "Longbranch", + "Harrisburg", + "Nassau Bay", + "Tiptonville", + "West DeLand", + "Meridian", + "Manchester", + "Rose Hill", + "Ashland", + "Spencer", + "Bardonia", + "Southport", + "Blackshear", + "Burney", + "Le Claire", + "Whitmore Village", + "Winona", + "Washington", + "Lolo", + "Fairway", + "Sykesville", + "Fort Gibson", + "Buckingham", + "Barceloneta", + "Angels", + "Brazoria", + "Crewe", + "Oaklyn", + "Tyro", + "Roselawn", + "Holt", + "Kalama", + "Mount Hermon", + "Lawrenceville", + "Elroy", + "Elverson", + "Mahanoy City", + "Hephzibah", + "Metter", + "West Nyack", + "Carroll Valley", + "Wellsville", + "Chagrin Falls", + "Linden", + "Bunk Foss", + "Nichols Hills", + "Bunker Hill Village", + "Ball", + "North El Monte", + "Village Shires", + "Clearlake Riviera", + "Mount Angel", + "Skyline View", + "Bayard", + "Deephaven", + "Jefferson", + "Maytown", + "Carefree", + "Richwood", + "Lares", + "Montpelier", + "Benson", + "Brookmont", + "Dana", + "Fox Island", + "Highland Beach", + "Pageland", + "Medford Lakes", + "Boardman", + "Roland", + "Genesee", + "Roebling", + "Laureldale", + "Lake Park", + "New Hope", + "Hardin", + "Mount Gilead", + "Hazel Green", + "Charleroi", + "Ravenswood", + "Andrews", + "Fairview", + "Green Oaks", + "Grand Bay", + "Belleville", + "Throop", + "Odenville", + "Apalachicola", + "Elkton", + "Iroquois Point", + "Vineyards", + "Bosque Farms", + "Vine Hill", + "Metzger", + "Wolf Lake", + "North Great River", + "Level Green", + "Monticello", + "Baden", + "Clyde", + "Dupo", + "Waikapu", + "North River Shores", + "Wheatland", + "Niwot", + "Nome", + "Rochester", + "Washington Park", + "Menands", + "Port Reading", + "Grantley", + "Rogersville", + "Bridgeville", + "Citronelle", + "Umatilla", + "Canton", + "Gatlinburg", + "St. James", + "Chilton", + "Leo-Cedarville", + "Swanton", + "Bunkie", + "Millstadt", + "Dallastown", + "Shrewsbury", + "Valdez", + "Pennsburg", + "Mojave", + "Rock Valley", + "Wurtsboro", + "Mount Sterling", + "Mountain Green", + "Yellow Springs", + "Cle Elum", + "Denver", + "Bethel", + "Larch Way", + "Puhi", + "Eastland", + "Chipley", + "Shingle Springs", + "Smithton", + "Glenwood Landing", + "Mission Hills", + "French Camp", + "South Point", + "Palmer Heights", + "Thomasville", + "Huntingdon", + "St. Augusta", + "Abbotsford", + "Level Park-Oak Park", + "Meadow Lake", + "Granger", + "Leesburg", + "Highland Falls", + "Nash", + "Saxon", + "LaGrange", + "River Road", + "Honea Path", + "Mogadore", + "Pleasant Hills", + "Houtzdale", + "Lincoln", + "Ossian", + "Windber", + "Leland", + "Greentown", + "Vidalia", + "Panther Valley", + "Hohenwald", + "North Hudson", + "Carmel-by-the-Sea", + "Marshall", + "Elba", + "Arbuckle", + "Winneconne", + "Friona", + "Barrett", + "Key Center", + "Midland", + "Warminster Heights", + "Elmira Heights", + "Oakhurst", + "Welcome", + "Independence", + "Longview Heights", + "Lansford", + "Indian Head", + "Fowlerville", + "Lambertville", + "Brooktrails", + "Avenue B and C", + "Lillington", + "Roosevelt Park", + "North Muskegon", + "Forestdale", + "Grayling", + "Carter Lake", + "Booneville", + "Valley Green", + "Cedar Springs", + "Cisco", + "Mirrormont", + "Grifton", + "Gibbstown", + "Eagle Lake", + "Plainwell", + "Freedom", + "Hugoton", + "Lake Goodwin", + "Colonial Beach", + "Norwood Young America", + "Waldport", + "Toledo", + "Country Lake Estates", + "West Liberty", + "Graceville", + "Bayport", + "Quartzsite", + "Port St. Joe", + "Stanley", + "Centre", + "Merton", + "Eastover", + "Fulton", + "Imlay City", + "Forestville", + "Melody Hill", + "North Wildwood", + "Celada", + "Bystrom", + "St. Charles", + "Madison", + "Haleiwa", + "San Castle", + "Brownsville", + "Calcutta", + "Manti", + "Harbour Heights", + "Scott City", + "Franklinton", + "Mamou", + "Irwin", + "South Russell", + "Whitfield", + "Agua Dulce", + "Johnson", + "Hesston", + "Sumiton", + "White Hall", + "Cresco", + "Cross City", + "Farmerville", + "West Point", + "Cozad", + "Madison", + "North Webster", + "Ocilla", + "La Cienega", + "Turnersville", + "Village Green", + "Boyne City", + "Jackson", + "Bagdad", + "Bullard", + "Itta Bena", + "North Alamo", + "Upland", + "Trappe", + "Lavon", + "Coal Valley", + "Pulaski", + "Indian Head Park", + "Lyman", + "Comfort", + "Boulevard Park", + "Sweeny", + "Lowell", + "Maiden", + "St. Anthony", + "Metamora", + "Stanley", + "St. Pauls", + "Hudson", + "Rochester", + "Bryn Mawr", + "Belvidere", + "Flagler Estates", + "Fordyce", + "Sunnyslope", + "Livonia", + "Lancaster", + "Mountain View", + "Ellijay", + "Merchantville", + "Battle Mountain", + "Plymouth", + "Emerald Isle", + "SUNY Oswego", + "Candelaria Arenas", + "San Manuel", + "Clarcona", + "Mount Union", + "Leisure Village East", + "Wolf Point", + "Montauk", + "South Toms River", + "Woodbourne", + "Emmetsburg", + "McGehee", + "Lake of the Woods", + "Maybrook", + "Beach Haven West", + "Pine Ridge", + "Albia", + "Avalon", + "Meadow Vista", + "Potosi", + "Aurora", + "Lely", + "Sagamore", + "Brookland", + "Arlington", + "Feather Sound", + "Hebron", + "Wintersville", + "Milan", + "Ranlo", + "Muttontown", + "Moca", + "Auburn Lake Trails", + "Northfield", + "Royal Palm Estates", + "Millvale", + "Mullica Hill", + "Lloyd Harbor", + "Fritch", + "Spencerport", + "Melrose", + "Oracle", + "Troy", + "Thorndale", + "Boonsboro", + "Juno Beach", + "Mora", + "White Bluff", + "Quitman", + "Port Vue", + "Wills Point", + "Wadsworth", + "Fairbury", + "Squaw Valley", + "Perham", + "Old River-Winfree", + "Horicon", + "Richfield", + "Northlake", + "North East", + "Shenandoah Farms", + "Ballinger", + "Maple Heights-Lake Desire", + "Shady Cove", + "Meridian", + "Society Hill", + "Wildwood Lake", + "Heavener", + "Ponderosa Park", + "Westway", + "South Glens Falls", + "Felton", + "Blanding", + "Camden", + "Clearview", + "Ringgold", + "Farmersville", + "South Duxbury", + "Dell Rapids", + "Lake Clarke Shores", + "Paoli", + "Duncan", + "Bolivar", + "Fairbury", + "Beloit", + "Waukon", + "Oakwood", + "Las Animas", + "Pajaro", + "New London", + "Cedaredge", + "Manhasset Hills", + "Northchase", + "Pittsboro", + "Dover Base Housing", + "Clayton", + "Dunean", + "El Dorado Springs", + "Whitesboro", + "Frackville", + "Century", + "Tarpey Village", + "Mercer", + "Northumberland", + "Romeo", + "Brookville", + "Saluda", + "Cayuga Heights", + "Kutztown University", + "Heber", + "Moss Beach", + "Zelienople", + "Bonanza", + "Delta", + "Ridgecrest", + "Lake Cassidy", + "Gooding", + "Palmyra", + "Lake of the Pines", + "McCall", + "Gordon Heights", + "Ozark", + "Scissors", + "Narragansett Pier", + "Unicoi", + "Combined Locks", + "Kimberly", + "Pine Lawn", + "Loxahatchee Groves", + "Goldstream", + "Southern Shops", + "Elm Creek", + "Newport", + "North Baltimore", + "Peralta", + "Omro", + "Woodbridge", + "Saw Creek", + "Stallion Springs", + "Christiana", + "Darien", + `O'Neill`, + "Orofino", + "Osceola", + "Golf Manor", + "Thompsonville", + "Sandia Heights", + "Taylor Lake Village", + "Kitty Hawk", + "Valley Grande", + "Volcano", + "Hubbard", + "Meiners Oaks", + "Eveleth", + "Greenhills", + "Rineyville", + "Dixmoor", + "Lake Erie Beach", + "Riverwoods", + "Newtown Grant", + "Kelseyville", + "Cambridge City", + "Canton", + "Oglesby", + "Hainesville", + "Brittany Farms-The Highlands", + "Helena Valley Northeast", + "Long Lake", + "Northwest Harbor", + "Oxford", + "Gallipolis", + "Pen Argyl", + "Oregon", + "Osage", + "Carey", + "Annandale", + "Dublin", + "Nowata", + "Camden", + "Vienna", + "Baltimore", + "Shadyside", + "Mission Hills", + "Marlboro", + "Boiling Springs", + "Knox", + "Frederick", + "Windermere", + "Nanty-Glo", + "Frontenac", + "Amberley", + "Mississippi State", + "Sloan", + "Centerville", + "Breñas", + "Robins", + "Valhalla", + "Willcox", + "Lead", + "Berwyn", + "Momence", + "Mount Pleasant", + "Two Harbors", + "Piggott", + "Buzzards Bay", + "Morton", + "Evergreen", + "Unadilla", + "Indianola", + "Rockfish", + "Lockeford", + "Holden Heights", + "West Liberty", + "Paw Paw Lake", + "Harrison", + "Golden Grove", + "Mariemont", + "Reliez Valley", + "Southern Gateway", + "Gravette", + "Teague", + "Silver Creek", + "Brimfield", + "St. Johns", + "La Conner", + "Clayton", + "Wrightstown", + "Poteet", + "Hanover", + "Riverside", + "Goldendale", + "Bloomer", + "Lyons", + "Seymour", + "Amity Gardens", + "Hot Springs", + "Valley Springs", + "Hanover", + "Nellis AFB", + "Zumbrota", + "Vassar", + "Granite Hills", + "Broken Bow", + "Llano", + "Moscow Mills", + "Emerald Lakes", + "Lake Isabella", + "Glen Raven", + "Grasonville", + "Le Roy", + "East Prairie", + "Newaygo", + "St. James City", + "Waller", + "West Monroe", + "Elkins", + "Huntingtown", + "Lake Royale", + "Sauk City", + "Myrtle Creek", + "Kane", + "Vicksburg", + "Delshire", + "Vivian", + "Locust Valley", + "Three Lakes", + "Watkins Glen", + "Red Bud", + "Forsyth", + "Yuma", + "Raymond", + "Balmville", + "Cienegas Terrace", + "Carrollton", + "Alturas", + "Pine Island", + "Middleville", + "East Sandwich", + "Emerald Mountain", + "Brentwood", + "Marlboro Meadows", + "Red Oak", + "Pelham", + "Hicksville", + "Johnston City", + "Cedar Grove", + "Hidden Meadows", + "Wheatland", + "Hanceville", + "Hodgenville", + "Shannondale", + "North Pembroke", + "Sunset", + "Brodhead", + "Alexander", + "Loyalhanna", + "Malvern", + "Putnam Lake", + "McLendon-Chisholm", + "Carlton", + "Elim", + "Wilkesboro", + "Cross Mountain", + "Pawhuska", + "Doolittle", + "Rollingwood", + "Gothenburg", + "Hannahs Mill", + "Jasper", + "Mineral Ridge", + "Heyburn", + "Oakhurst", + "Clifton", + "Moore Haven", + "Highland Acres", + "Aguas Buenas", + "Mono Vista", + "Aledo", + "Mount Orab", + "Piney Point Village", + "Mobridge", + "Dillonvale", + "Kekaha", + "Oaklawn-Sunview", + "Point Baker", + "Lockland", + "Rochester", + "Treasure Lake", + "Cottonport", + "Tierra Verde", + "Landmark", + "Iowa", + "Riverton", + "Canyon Creek", + "Riverdale", + "Hoosick Falls", + "San Miguel", + "Ross", + "Yadkinville", + "La Vale", + "Gibson City", + "South Beach", + "Dennis Port", + "Monte Sereno", + "Houston", + "Hobart", + "Ingenio", + "Montura", + "Freeland", + "Smithville-Sanders", + "Germantown Hills", + "Paulding", + "Cape May", + "Harlem", + "Claxton", + "Cuthbert", + "Tutwiler", + "Minoa", + "Oliver Springs", + "Baldwin", + "Meadowbrook", + "Hansville", + "Leisure Village West", + "High Bridge", + "Heflin", + "Campo", + "Eagle Grove", + "New Hampton", + "Calcium", + "Lake Lakengren", + "La Center", + "Woodlawn", + "Dunkirk", + "Marianna", + "Concordia", + "Richwood", + "Newcastle", + "Toa Alta", + "Haworth", + "Trinity", + "South Dennis", + "Tolono", + "South Vacherie", + "Ladonia", + "Tipton", + "Leavenworth", + "Hominy", + "Tuckerton", + "Frontenac", + "Pantops", + "Nyssa", + "Vandenberg AFB", + "Clyde Hill", + "Crosby", + "Crisfield", + "Dewey", + "Flat Rock", + "Old Mystic", + "Karnes City", + "Coronita", + "Sylvan Beach", + "Mountain View", + "Keego Harbor", + "McChord AFB", + "Alma", + "Oakridge", + "Elizabethtown", + "Cleves", + "Pine Hills", + "Glasgow", + "Waldron", + "Windsor", + "Grand Mound", + "Churchville", + "Casa Conejo", + "Georgetown", + "Arcadia", + "Skidway Lake", + "Mar-Mac", + "Loyola", + "Big Lake", + "Shady Spring", + "Paris", + "North Yelm", + "Jefferson", + "Culloden", + "Tiger Point", + "Port Monmouth", + "Eastlawn Gardens", + "Cactus", + "Bethel", + "Burbank", + "Manila", + "Kennedy", + "Ahtanum", + "Sleepy Eye", + "Ely", + "Nokomis", + "Delmar", + "Mattapoisett Center", + "Hartford", + "Experiment", + "Cornville", + "Elma", + "North Lakeport", + "Houghton Lake", + "Loíza", + "Lincoln Heights", + "Northlake", + "Pixley", + "Lake Placid", + "Howe", + "Reno", + "Shallowater", + "Peshtigo", + "Oak Valley", + "Manor", + "Corunna", + "Crestview Hills", + "Hollywood Park", + "Mansfield", + "Kinsey", + "Auburn", + "Mayfield", + "Schnecksville", + "Fairchild AFB", + "Mackinaw", + "Dade City North", + "Nicholls", + "Waterloo", + "Lake Holm", + "Blennerhassett", + "Kingwood", + "Inwood", + "Blackstone", + "Hardwick", + "Lake California", + "Pottsgrove", + "Sherwood", + "Collinsville", + "Pottsville", + "Carthage", + "Hemlock Farms", + "Upland", + "Bajadero", + "Bainbridge", + "Laurel Lake", + "Kamas", + "Winchester", + "Barron", + "Story City", + "Graniteville", + "Desert Edge", + "Sharpsburg", + "Cherryvale", + "Chattahoochee Hills", + "Chandler", + "Ellsworth", + "Alamo", + "South Nyack", + "Fulton", + "Port Ewen", + "Salem Heights", + "New Baden", + "Edcouch", + "Patillas", + "Chesnee", + "Pleasant Gap", + "Islandia", + "Etna", + "Waialua", + "Ponce Inlet", + "Lake Junaluska", + "Taylor Creek", + "Wellsville", + "Stanhope", + "Greensboro", + "Goshen", + "Moreland Hills", + "Manistique", + "Spring City", + "Santo Domingo", + "Elma Center", + "Long Prairie", + "Haviland", + "Winnsboro", + "Shark River Hills", + "Plainview", + "Paloma Creek", + "Melbourne Beach", + "Balcones Heights", + "Haughton", + "Grantville", + "El Verano", + "Cloverdale", + "Pretty Bayou", + "Littleton Common", + "Hillsboro", + "Newbern", + "Cuba", + "Pagedale", + "Lindsborg", + "Orange", + "Carthage", + "Citrus City", + "Springdale", + "Medina", + "Blue Ridge", + "West Lake Hills", + "Seacliff", + "Pendleton", + "Ohioville", + "West Point", + "Lincoln Park", + "Lakeland", + "Mount Oliver", + "Ainaloa", + "Tybee Island", + "Essexville", + "Pine Grove", + "Lagrange", + "Sonterra", + "Grand Point", + "Summersville", + "West End-Cobb Town", + "Dundee", + "Grand Saline", + "Howards Grove", + "Esparto", + "Jones Creek", + "Montrose", + "White Pine", + "Marysville", + "Hahnville", + "Agua Dulce", + "Baldwyn", + "Mauriceville", + "Blissfield", + "Crockett", + "Carrollton", + "North Wales", + "Somerville", + "Rural Hall", + "Hilliard", + "Leisuretowne", + "Pomona", + "Denver", + "Livingston", + "Sugar Creek", + "Lordstown", + "Cambrian Park", + "Philippi", + "Spencer", + "West Point", + "Chickamauga", + "Spearman", + "West Wyomissing", + "Berwyn Heights", + "Water Valley", + "Newburgh", + "Myerstown", + "Nesquehoning", + "North Shore", + "Bad Axe", + "Williams", + "Annetta", + "Cabán", + "Franklin", + "Dawsonville", + "Four Bridges", + "Kotzebue", + "Grangeville", + "Sleepy Hollow", + "Cottonwood", + "Yerington", + "Uniontown", + "Moulton", + "Monmouth Beach", + "Locust", + "Tipton", + "Bay Pines", + "Garnett", + "Kemmerer", + "Vinton", + "Greenbriar", + "Iowa Colony", + "Hauula", + "Verona", + "Wimberley", + "Enochville", + "Port Angeles East", + "Russell", + "Norris", + "Eielson AFB", + "Silt", + "Wellsboro", + "Welsh", + "Bedford Hills", + "Linwood", + "Wewoka", + "West Orange", + "Tipton", + "Mount Morris", + "Sharpes", + "Hinton", + "Port Hadlock-Irondale", + "Rush City", + "Canterwood", + "Coquí", + "Pistakee Highlands", + "Watergate", + "East Dundee", + "Fairfield", + "Coplay", + "Warm Springs", + "West Portsmouth", + "Three Rivers", + "Orchard City", + "New York Mills", + "Warrior", + "Wanakah", + "Holton", + "Lowesville", + "Algona", + "Louisiana", + "Steeleville", + "Wareham Center", + "Mingo Junction", + "Colfax", + "Williston", + "Central Park", + "Cumberland", + "Bandon", + "El Cerro", + "Hoopa", + "Millersburg", + "Cutchogue", + "Springdale", + "Port Washington North", + "Ingram", + "Lake Panasoffkee", + "Mannford", + "Bethel Acres", + "Walkerton", + "San Antonio Heights", + "Springtown", + "Bamberg", + "Athens", + "Lake Orion", + "Burgettstown", + "Chattanooga Valley", + "Glenville", + "Capitanejo", + "Tallapoosa", + "Beaver", + "Superior", + "Malabar", + "Georgetown", + "South Hempstead", + "Lutcher", + "Elgin", + "Terra Bella", + "Waynesville", + "Sparta", + "Chandler", + "Laguna Vista", + "North Middletown", + "Jackson", + "Angwin", + "Macungie", + "Loma Rica", + "Colonial Heights", + "Acushnet Center", + "Frisco", + "Hideaway", + "Red Oaks Mill", + "Union City", + "Saddle River", + "San Saba", + "Breckenridge", + "Ingalls Park", + "Pickens", + "Underwood-Petersville", + "Salmon", + "Jones", + "Cold Spring", + "Tunkhannock", + "Morada", + "Madison", + "Zellwood", + "Parowan", + "Williamsburg", + "Greentown", + "Hidden Springs", + "Amesti", + "East Richmond Heights", + "Oak Ridge North", + "Cadiz", + "West Union", + "North Brooksville", + "El Cenizo", + "South Eliot", + "Early", + "Monte Grande", + "Weaverville", + "Pitcairn", + "Kings Bay Base", + "Galena", + "Rockwood", + "Ladysmith", + "Boscobel", + "Dakota Dunes", + "South Blooming Grove", + "Newton", + "Delta", + "Liberty", + "Wynantskill", + "Lucedale", + "Walbridge", + "Haskell", + "Moose Lake", + "Minden", + "Meadowdale", + "Tierras Nuevas Poniente", + "Homestead", + "Soperton", + "High Bridge", + "Nevada City", + "Lebanon", + "Pine City", + "Eleele", + "Lake Success", + "Reamstown", + "Pleasant Valley", + "Zillah", + "Blanchard", + "Granville", + "Tomahawk", + "Burlington", + "Salunga", + "Beulah", + "Nokomis", + "Orchidlands Estates", + "Versailles", + "Centerville", + "Sheridan", + "Landis", + "Cottondale", + "Petersburg", + "Brackenridge", + "Denmark", + "Bicknell", + "Okemah", + "Hamburg", + "Netcong", + "Yorkville", + "Heron Bay", + "Avondale Estates", + "Hogansville", + "Greenwood", + "Marin City", + "Rochester", + "Cleveland", + "Thiensville", + "Needville", + "Oakland", + "Marion", + "Mount Penn", + "San Andreas", + "Henrietta", + "Hiawatha", + "Lake Pocotopaug", + "Wesleyville", + "Paddock Lake", + "Gosnell", + "Abingdon", + "North Lakeville", + "Kellogg", + "Bean Station", + "Shackle Island", + "Island Walk", + "Mineral Springs", + "Arcadia", + "Beechwood", + "Blue Earth", + "Wallburg", + "Jamestown", + "North Cape May", + "Beechwood Trails", + "Milbank", + "South Jacksonville", + "New Holstein", + "Blountville", + "Oak Trail Shores", + "Acres Green", + "Vado", + "Olney", + "Federalsburg", + "Bonny Doon", + "Checotah", + "Sloatsburg", + "Dahlgren", + "Lodi", + "Ocean Grove", + "Buffalo", + "Cadiz", + "McSherrystown", + "Morongo Valley", + "Warsaw", + "Brownstown", + "Greenwood Lake", + "Eagle Lake", + "Fiskdale", + "East Rockingham", + "Chandler", + "Red Bay", + "Sonora", + "Filer", + "Watertown", + "Tishomingo", + "Hartville", + "Andrews AFB", + "Cleveland", + "Brillion", + "Anza", + "Licking", + "Moriches", + "Eatonville", + "Clarksville", + "Lakemore", + "Jefferson", + "Cut Bank", + "Savanna", + "Double Oak", + "Fairport Harbor", + "Doylestown", + "Lake Arrowhead", + "Biscayne Park", + "Navy Yard City", + "Bethany", + "Paramount-Long Meadow", + "Dyer", + "Monterey", + "Weaver", + "Golden Beach", + "Brightwaters", + "Big Sky", + "Blackhawk", + "Dalzell", + "Bishop", + "Wilder", + "Corning", + "Wormleysburg", + "Richville", + "Dadeville", + "Columbus", + "Montgomery", + "Loxley", + "Wildwood Crest", + "Algoma", + "Beechwood", + "Ocean Grove", + "Fayetteville", + "Sherwood", + "Johnson Creek", + `Hill 'n Dale`, + "Wellton", + "Kings Beach", + "Benson", + "Heyworth", + "DeCordova", + "McDonald", + "Kimberling City", + "Cordaville", + "Trafford", + "Genoa", + "Eunice", + "Greenfield", + "Kaunakakai", + "Atkins", + "Mazomanie", + "Roosevelt Gardens", + "Penrose", + "Garner", + "Day Valley", + "Strathmore", + "Carrizales", + "Emigsville", + "Vails Gate", + "Boutte", + "Hahira", + "Thermopolis", + "Walsenburg", + "Proctor", + "Ferrysburg", + "Luyando", + "Afton", + "Oostburg", + "River Bend", + "Edgecliff Village", + "Pleasant Valley", + "Lido Beach", + "Petersburg", + "Delphi", + "Shelby", + "Soda Springs", + "Jarrettsville", + "Buckner", + "Dermott", + "Everett", + "Mohnton", + "Santa Rosa Valley", + "Atoka", + "Lesslie", + "Kenvil", + "Strasburg", + "Granite Quarry", + "Hamilton", + "Milton", + "Nashville", + "Wyoming", + "Vieques", + "Northwest Harwinton", + "Choccolocco", + "Mountain Home AFB", + "Tularosa", + "Sutter", + "Calais", + "DeWitt", + "K. I. Sawyer", + "Edgewood", + "Edgewood", + "Byrnes Mill", + "Nocona", + "Indian Hills", + "Staples", + "Midway", + "Stanton", + "Providence", + "Milford", + "Iron River", + "Palmer Lake", + "Wisconsin Dells", + "Dry Ridge", + "Winnebago", + "Prescott", + "Royston", + "Villalba", + "Havana", + "Shenandoah", + "West", + "Penbrook", + "Genoa City", + "Fobes Hill", + "Park Hills", + "Luis Lloréns Torres", + "Combes", + "Lake Nacimiento", + "Tonkawa", + "Sumner", + "Day Heights", + "Woodlawn Beach", + "Hawaiian Acres", + "Tangelo Park", + "Nags Head", + "Sherrill", + "Ferris", + "Smithsburg", + "Lochsloy", + "Fort Hall", + "Bayfield", + "Redwood", + "Clarence Center", + "Akron", + "Hayti", + "Indian Hills", + "Yountville", + "Gloverville", + "New Richmond", + "Newberry", + "Irvine", + "Woodbury Heights", + "Evansville", + "Ellsworth", + "Kenova", + "Murfreesboro", + "Springfield", + "Lula", + "Bal Harbour", + "Hartley", + "East Norwich", + "Southern Shores", + "Lopezville", + "Lykens", + "South Alamo", + "Summit Hill", + "Alva", + "North Barrington", + "Minden", + "Deer Lodge", + "Flemingsburg", + "Ramseur", + "Graymoor-Devondale", + "The Plains", + "Westville", + "University Park", + "Horace", + "Portageville", + "National Park", + "Bunnell", + "Lake Cherokee", + "Trenton", + "Stamford", + "Pioneer Village", + "East Greenville", + "Galateo", + "Malakoff", + "Dover", + "Munsons Corners", + "Dresden", + "Iuka", + "Newton", + "Watkinsville", + "Seagraves", + "Niantic", + "Venetian Village", + "Port Richey", + "Keeseville", + "Kachina Village", + "Elgin", + "Liberty Hill", + "Sterlington", + "Ozona", + "Milaca", + "Holiday Shores", + "Barton Creek", + "Prince Frederick", + "North Sioux City", + "Cumberland Center", + "Williston", + "Weedsport", + "Allendale", + "Las Lomas", + "Simpsonville", + "Churchill", + "Somerset", + "East Syracuse", + "Cutten", + "Florida", + "Cornwall-on-Hudson", + "Loogootee", + "Chaffee", + "Hooks", + "New Hope", + "Woodlynne", + "Wailua", + "Lakeview", + "Swift Trail Junction", + "Cabana Colony", + "Castle Rock", + "Blue Hills", + "Schulenburg", + "Girard", + "Hortonville", + "Seaside Heights", + "La Fayette", + "Braddock Heights", + "Brighton", + "Indialantic", + "Natalbany", + "Louisville", + "Womelsdorf", + "Monmouth Junction", + "South Oroville", + "New Madrid", + "Wise", + "Sands Point", + "Spring Lake", + "Eagle Lake", + "Channel Islands Beach", + "Roslyn", + "Wyncote", + "Jacksonwald", + "Lodi", + "Jacksonville", + "Poplarville", + "Six Mile Run", + "Grape Creek", + "Davis", + "Lucerne", + "Hildale", + "Gladwin", + "Scott AFB", + "Pocasset", + "Marks", + "Cliffwood Beach", + "Valley", + "West Burlington", + "Alderton", + "Woodbury", + "Bowling Green", + "Lawnside", + "Halfway House", + "Great Neck Estates", + "Pemberton Heights", + "Cherry Valley", + "Brandenburg", + "Chincoteague", + "Central City", + "Bartlett", + "Colfax", + "Williamson", + "Ridgemark", + "Aberdeen Proving Ground", + "Pearl Beach", + "Montana City", + "Buckeye Lake", + "Lake Wilderness", + "La Villa", + "Williamstown", + "Bald Knob", + "Fearrington Village", + "Bushnell", + "Harbor Bluffs", + "Shady Shores", + "Homestead Valley", + "Ava", + "Mountain View", + "Knightstown", + "North Browning", + "Shrub Oak", + "Brackettville", + "Lawrenceville", + "Meadow Glade", + "Zephyrhills North", + "Galena", + "Belle Meade", + "Oasis", + "Covington", + "Youngwood", + "Fairfax", + "Chenango Bridge", + "Lake City", + "Montalvin Manor", + "David City", + "Rushville", + "Roebuck", + "Gold Beach", + "Kelly Ridge", + "Swartzville", + "Norco", + "Crown Heights", + "Biscoe", + "Kewaunee", + "Clayton", + "Mountville", + "Meadowood", + "Eufaula", + "Chico", + "Poplar", + "Lake Wissota", + "Almont", + "Kingman", + "Mount Morris", + "Shell Point", + "Ajo", + "Watonga", + "Marion", + "De Leon Springs", + "Hypoluxo", + "Statham", + "East Oakdale", + "West Grove", + "Eagle Crest", + "Jean Lafitte", + "Gambrills", + "Whitesboro", + "Thayer", + "Ashland", + "Stigler", + "Holly Hills", + "Drumright", + "Mountain Iron", + "Rio Grande", + "Hanapepe", + "Homer", + "Hacienda San José", + "Winner", + "Canadian", + "Riverview", + "Arcola", + "North Catasauqua", + "St. Clair", + "Carson", + "Lake City", + "Chatfield", + "Port Ludlow", + "Holly Ridge", + "Oxoboxo River", + "Big Coppitt Key", + "Black Canyon City", + "Shorewood Forest", + "Wilton", + "Moscow", + "Lyndonville", + "Homedale", + "Castle Point", + "Carrabelle", + "Potala Pastillo", + "Park View", + "Perkins", + "Minster", + "Owensville", + "Hillsboro", + "Country Squire Lakes", + "Clearbrook Park", + "Amery", + "Tilton Northfield", + "Warden", + "Bar Nunn", + "Aguada", + "Cache", + "Bayview", + "Northeast Ithaca", + "Osage City", + "Pleasant Hill", + "Gleed", + "Penngrove", + "Monument Beach", + "Douglas", + "Daleville", + "Kenhorst", + "Roseau", + "Richmond", + "North Crossett", + "Lake Helen", + "Brockway", + "Oak Grove", + "Wernersville", + "Fraser", + "Bennett", + "Linden", + "Lakewood", + "Seward", + "Oconto Falls", + "Lake Arthur", + "Delhi", + "Village of Grosse Pointe Shores", + "Rosita", + "North Kingsville", + "Guntown", + "Beach City", + "Circle D-KC Estates", + "Park City", + "McGovern", + "Poydras", + "Winnie", + "Marshville", + "Little Flock", + "Sneads Ferry", + "Knob Noster", + "Windsor", + "Heritage Lake", + "Rising Sun", + "Sale Creek", + "Sisters", + "Munising", + "Greenwood", + "Tyndall AFB", + "Garden View", + "South Padre Island", + "West Hammond", + "Lindsay", + "Brighton", + "Norton Center", + "Harveys Lake", + "Central Heights-Midland City", + "Pine Mountain Lake", + "Sublimity", + "Bethel Heights", + "Voorheesville", + "Rose Hills", + "Plainsboro Center", + "Clever", + "Fairfield Harbour", + "Albany", + "Troutman", + "Dodge Center", + "Fairmount", + "Marietta", + "Hudson", + "Ithaca", + "Millen", + "Kalkaska", + "Crest", + "Ford City", + "Onawa", + "West Simsbury", + "Pawnee", + "Lakeside Park", + "Gervais", + "Loris", + "Westminster", + "Talty", + "Platteville", + "Windsor", + "Westworth Village", + `Wilson's Mills`, + "North Shore", + "East Gaffney", + "Kulpmont", + "Sisco Heights", + "Woodville", + "Caledonia", + "Potterville", + "Dulce", + "Green Forest", + "Lakewood", + "Norway", + "Herald Harbor", + "Burnettown", + "South Rosemary", + "Sixteen Mile Stand", + "McLeansboro", + "Pinch", + "Longtown", + "Refugio", + "Ballville", + "Luverne", + "Dayton", + "Chester Heights", + "Van", + "Odem", + "Coeburn", + "Manchester", + "Gilman", + "Oak Harbor", + "Vista Santa Rosa", + "Koloa", + "Petersburg", + "West Ishpeming", + "Mount Vernon", + "Osseo", + "Wind Gap", + "Sylva", + "Weatogue", + "Crescent City", + `Cajah's Mountain`, + "Palisade", + "Seven Fields", + "Agua Fria", + "Val Verde", + "New Cordell", + "West Bishop", + "Springdale", + "North Hartsville", + "Palmhurst", + "Snowmass Village", + "Val Verde Park", + "El Paso", + "Electra", + "Pearisburg", + "Kingston Springs", + "Evendale", + "Knoxville", + "Hartford", + "Weed", + "Cohasset", + "Reynoldsville", + "Mount Healthy Heights", + "Polk City", + "Apison", + "Ashley", + "Santa Rosa", + "Tangerine", + "Norton", + "Youngsville", + "Ravenel", + "Wentworth", + "Fayetteville", + "Hopkins", + "Lena", + "Monticello", + "Wellford", + "Piedra Aguza", + "Butler", + "Tobaccoville", + "Skippers Corner", + "Cambridge", + "Hamilton", + "Wendell", + "Desert Aire", + "Hayfork", + "Munsey Park", + "Halesite", + "Bonners Ferry", + "Follansbee", + "Clarion", + "Bermuda Run", + "Newport", + "Lakehurst", + "Valentine", + "Abernathy", + "Lanai City", + "Pine Ridge", + "Brooklyn", + "Jesup", + "Moonachie", + "Devola", + "Inez", + "Ridgeway", + "Arcadia", + "Stroud", + "White Mountain Lake", + "Glen Rose", + "St. Marys", + "Fairmont", + "Gray Summit", + "Mangum", + "Granite Falls", + "Havana", + "Collierville", + "West Sand Lake", + "Bawcomville", + "Many", + "Heber-Overgaard", + "North Boston", + "Aspinwall", + "La Luisa", + "Hyde Park", + "White Salmon", + "Timberville", + "Bohners Lake", + "Solon", + "Guilford Center", + "Fayette", + "England", + "Tusculum", + "Strasburg", + "Seminole Manor", + "Hawthorne", + "Bloomingdale", + "Tilton", + "Kilauea", + "Lexington Hills", + "Riverton", + "Hampton Beach", + "Abbeville", + "Healdton", + "Dupont", + "Grand Forks AFB", + "Ford Heights", + "Clayton", + "Casey", + "Como", + "La Selva Beach", + "Bloomfield", + "Montgomery City", + "Big Lake", + "Muse", + "West Brattleboro", + "Stanley", + "Dalton", + "Floydada", + "West Wyoming", + "Chewelah", + "Hernando Beach", + "Bel-Ridge", + "Avery Creek", + "Mohave Valley", + "Cambridge Springs", + "Foley", + "Jemison", + "East Lansdowne", + "Girard", + "St. Helen", + "Washoe Valley", + "Manatee Road", + "Morton", + "Grundy Center", + "Newtown", + "Chetek", + "Bath", + "Walton Park", + "Desert View Highlands", + "Juneau", + "Hokendauqua", + "Oronogo", + "Las Lomas", + "Freer", + "Trenton", + "Dixon Lane-Meadow Creek", + "Wilburton", + "Arcola", + "El Lago", + "Blasdell", + "Terre du Lac", + "Fords Prairie", + "Malvern", + "Hillsville", + "Summerset", + "Folly Beach", + "Milford", + "Townsend", + "Liberty", + "St. Maries", + "Warsaw", + "West Fork", + "Clifton", + "Rogers City", + "Point Clear", + "Lexington", + "Merrimac", + "Preston Heights", + "Fillmore", + "Lake City", + "Tahoka", + "Mountain View", + "Cetronia", + "Middlebush", + "Castle Dale", + "Crosby", + "Hallam", + "Round Lake Heights", + "Marquette Heights", + "Reidsville", + "Rossmoor", + "Dogtown", + "Chimayo", + "Port Barre", + "Williams Bay", + "Sandstone", + "Lakeview", + "Russell Springs", + "Alturas", + "Dunkirk", + "Hallettsville", + "Brush Prairie", + "South Creek", + "Santa Rosa", + "Alburtis", + "Erda", + "Hedwig Village", + "La Dolores", + "Stansberry Lake", + "White Island Shores", + "Whittingham", + "Dawson Springs", + "University Park", + "Cayucos", + "Avoca", + "Freemansburg", + "Chuluota", + "Sewaren", + "Sand Hill", + "Glouster", + "Mariano Colón", + "New Concord", + "Pembroke", + "Wolfdale", + "Westhampton", + "Thunderbolt", + "Macon", + "Sutter Creek", + "Green Island", + "Spencer", + "Riverview Park", + "La Grange", + "Green Park", + "Loudonville", + "Merkel", + "Brusly", + "Wayne Heights", + "Desert Hills", + "Missouri Valley", + "Abita Springs", + "Bridgeport", + "Thomaston", + "Horseheads North", + "Keaau", + "Verona Walk", + "Eldora", + "Salina", + "Moundville", + "Glenwood", + "Pearl River", + "Centreville", + "Sells", + "Sandusky", + "Trenton", + "Irrigon", + "Hayward", + "Clarkson Valley", + "Marietta", + "Meadow Oaks", + "Warm Beach", + "Eutaw", + "Villa Ridge", + "Hamburg", + "Massanutten", + "Valley View", + "Barnesville", + "Whitesboro", + "Hoxie", + "East Newark", + "McConnelsville", + "Davis Junction", + "Peapack and Gladstone", + "Fairmont", + "Mountain City", + "Moorefield", + "Edisto", + "Dennison", + "Fairview", + "Bluewell", + "New Town", + "Hartford", + "Dayton", + "East Douglas", + "Westminster", + "Okolona", + "Brinkley", + "Rugby", + "Garland", + "East Prospect", + "Okanogan", + "Cabazon", + "Inverness Highlands North", + "Frazier Park", + "Vergennes", + "Rothsville", + "Cordes Lakes", + "Lake Kiowa", + "Rockville", + "Wales", + "Buies Creek", + "Dublin", + "Sabetha", + "Huguley", + "Dillsburg", + "Belmont", + "Eminence", + "Hooverson Heights", + "Curwensville", + "Gap", + "Plumsteadville", + "Coalfield", + "Deenwood", + "Sabina", + "Centerville", + "Crab Orchard", + "Hartford", + "Carlisle-Rockledge", + "Georgetown", + "Pennington", + "Brownstown", + "Glenrock", + "Escobares", + "East Dennis", + "Effort", + "Ruidoso Downs", + "St. Paul", + "Maine", + "Sibley", + "Canadian Lakes", + "Homerville", + "White Sulphur Springs", + "Lake Mary Jane", + "Feasterville", + "Lakeland", + "Spooner", + "Luxemburg", + "Winter Beach", + "Lake Meade", + "Williamsburg", + "Huntsville", + "Yorkville", + "Swedesboro", + "Leonardo", + "North Rock Springs", + "Coopersburg", + "Freeport", + "Forest Heights", + "Mondovi", + "Bellevue", + "Villano Beach", + "Lawson Heights", + "Martinsburg", + "George West", + "Riverbend", + "Friday Harbor", + "Tappahannock", + "Sylvania", + "Polkton", + "Mount Vernon", + "Abbeville", + "Quitman", + "Marysville", + "New Palestine", + "Myrtle Point", + "Indian Springs Village", + "Turley", + "Caruthers", + "Pima", + "Argentine", + "Delavan Lake", + "Millersburg", + "Ruleville", + "Wrightsville Beach", + "Center Point", + "St. Henry", + "Brownville", + "Donalsonville", + "Carthage", + "Clearwater", + "Pelican Rapids", + "Colwyn", + "Mathews", + "Pacolet", + "East Williston", + "Seymour", + "Elmwood", + "Madrid", + "Bolivar Peninsula", + "Bakerstown", + "Putney", + "Edneyville", + "Broad Creek", + "New Lisbon", + "Edwards AFB", + "Eddyville", + "Burlington", + "Premont", + "Maugansville", + "Jay", + "Ironton", + "Jamestown West", + "Nixon", + "Pine Crest", + "Lyford", + "Selbyville", + "Glenville", + "Montpelier", + "Kalona", + "Leisure Knoll", + "Konterra", + "Haw River", + "Nicholson", + "Spirit Lake", + "Milton", + "Lynchburg", + "Imperial", + "Deerfield", + "Piermont", + "Wellsburg", + "Coventry Lake", + "New Hope", + "Rockledge", + "Lincolnville", + "Holly Lake Ranch", + "Brookville", + "Owings", + "Nice", + "Delmont", + "Fredericktown", + "Mays Landing", + "Osburn", + "Downs", + "Rock Rapids", + "York Harbor", + "Burlington", + "Lauderdale", + "Clinton", + "Sheridan", + "Pantego", + "Kent Acres", + "West Lafayette", + "Paynesville", + "Jayuya", + "Le Center", + "North Falmouth", + "Mabton", + "Yardley", + "Ahwahnee", + "Derry", + "Adamstown", + "Chase City", + "Poynette", + "Idyllwild-Pine Cove", + "Commerce", + "Rancho Santa Fe", + "Indian Springs", + "Mission Canyon", + "White House Station", + "Diamond", + "Halls", + "Calvert City", + "Sewanee", + "Montara", + "Overton", + "Victor", + "Wrangell", + "Bunker Hill", + "Lake Wynonah", + "Coats", + "Alderson", + "Covington", + "Toftrees", + "Country Club", + "Clio", + "Gibsonburg", + "Geneva", + "Lake Crystal", + "Charleston", + "Tainter Lake", + "Silver Lake", + "Antón Ruíz", + "West Branch", + "Raoul", + "State Line", + "Matoaca", + "Oakland City", + "Pottsboro", + "St. Hedwig", + "South Hutchinson", + "Quanah", + "Long Neck", + "The Hills", + "Isle of Hope", + "Gambier", + "Río Lajas", + "Hart", + "Spring Lake", + "Wautoma", + "Bono", + "South Congaree", + "Osceola", + "San José", + "South Sumter", + "Lincoln", + "Walnut Hill", + "Cumings", + "Brooks", + "Essex Village", + "Richwood", + "West Newton", + "Bentleyville", + "Bourg", + "Hudson Oaks", + "Bayou La Batre", + "Lennox", + "Beverly", + "Telluride", + "Aromas", + "Galva", + "Conrad", + "Versailles", + "Chesterfield", + "Trinity", + "Hebron", + "Kenilworth", + "Casselton", + "Cannon AFB", + "Orchard Lake Village", + "Wabasha", + "Elm Springs", + "Lake Katrine", + "Hoisington", + "Phillipsburg", + "Ranger", + "Midland", + "Surf City", + "Hudson", + "Charleston", + "Greenville", + "Wallace", + "Nicoma Park", + "Marengo", + "Gloucester Courthouse", + "Olmos Park", + "Stonewall", + "Mineral Point", + "Belleville", + "Strafford", + "Rancho Viejo", + "New Egypt", + "Geneva", + "Windy Hills", + "Gastonville", + "Weatherly", + "Carthage", + "Warren AFB", + "Oliver", + "Fennimore", + "Bellevue", + "Goldsby", + "Liberty", + "Window Rock", + "Avilla", + "Fairmont City", + "Grissom AFB", + "Alianza", + "H. Rivera Colón", + "Harriman", + "Ross", + "Middletown", + "Parksdale", + "Lomira", + "Norwood", + "Newmanstown", + "Winters", + "Lakeview Estates", + "Blue Mound", + "Hawarden", + "Woodside", + "Combine", + "Rural Hill", + "Belle Plaine", + "Monroe City", + "Kentwood", + "Trucksville", + "Shadow Lake", + "Claryville", + "Morgantown", + "Deltana", + "Inman", + "Wyldwood", + "Stormstown", + "Wayne", + "Maynardville", + "Taylor", + "Bella Vista", + "Lavaca", + "Woodside East", + "Cathcart", + "Cave City", + "Fall City", + "Collins", + "Pleasant Ridge", + "Melrose Park", + "Panorama Village", + "Ingalls", + "Three Rivers", + "Anchorage", + "North Zanesville", + "Nekoosa", + "Prairie Creek", + "Midway South", + "Marked Tree", + "Pinckney", + "Crownpoint", + "Waynesboro", + "Cowpens", + "Villa Grove", + "Tiburones", + "Barnum Island", + "Woodbine", + "Lawson", + "Allyn", + "Westmoreland", + "Laporte", + "Shepherd", + "Breezy Point", + "Eddystone", + "Houston", + "Perryman", + "Santa Claus", + "Verona", + "Dalton Gardens", + "Bloomfield", + "Spring Valley", + "Arlington Heights", + "Neillsville", + "Monticello", + "Chauvin", + "Coudersport", + "Lake of the Woods", + "Lockport", + "Junction", + "Spring Arbor", + "Marcus Hook", + "Charlotte Park", + "Thornton", + "Enfield", + "Meyersdale", + "North Seekonk", + "Lordsburg", + "El Portal", + "East Dublin", + "Sisseton", + "Lapel", + "Campo Rico", + "Carrollton", + "Bolindale", + "St. Ignace", + "Colonial Pine Hills", + "Danville", + "Hide-A-Way Lake", + "Purvis", + "Madison", + "Glasco", + "Reed City", + "Mayflower", + "Hunter", + "Mendenhall", + "Buckhorn", + "Seneca", + "Wright-Patterson AFB", + "Enon", + "Conneaut Lakeshore", + "Hallowell", + "Johnston", + "New Miami", + "Barranquitas", + "Virginia Gardens", + "Susquehanna Depot", + "Odell", + "Icard", + "Paden City", + "Poland", + "Riverside", + "Harlem", + "Craigsville", + "St. Bonifacius", + "Kimball", + "Highspire", + "Fruitland", + "Albion", + "Mount Vernon", + "Hickman", + "Decherd", + "Whidbey Island Station", + "Calera", + "Dalworthington Gardens", + "Salado", + "Newton", + "Pine Canyon", + "Ponder", + "Chester", + "Kinder", + "Horse Shoe", + "Fife Heights", + "Prague", + "Lake Heritage", + "Lovell", + "Chamberlain", + "Timmonsville", + "Concordia", + "Pine Ridge", + "Ashville", + "Henagar", + "Riverside", + "Good Hope", + "Matamoras", + "Montague", + "Red Hill", + "Dillingham", + "Rainbow", + "Monroe", + "New London", + "Midland City", + "Walters", + "Brewster", + "Hinton", + "East Brewton", + "Raceland", + "Deep River Center", + "Carleton", + "Iona", + "Crosslake", + "Llano Grande", + "Holiday Island", + "Gold Bar", + "McCormick", + "Winfield", + "Byesville", + "Winamac", + "Emsworth", + "Crompond", + "New Wilmington", + "Wray", + "East Jordan", + "Lyman", + "Colorado City", + "Oxford", + "Moline Acres", + "Maxton", + "Eureka", + "Hartshorne", + "Belgium", + "Emporium", + "Leith-Hatfield", + "Ely", + "Hermann", + "La Salle", + "East Bernard", + "Excelsior", + "Altamont", + "Anahuac", + "West Sharyland", + "Neodesha", + "Hardinsburg", + "Belle Rose", + "Darlington", + "Brewster", + "Mosheim", + "Eastpoint", + "Princeton Junction", + "Wofford Heights", + "Olivia", + "Mulino", + "Olga", + "St. Paul", + "Shenandoah", + "Rogue River", + "Wheeler AFB", + "Lithonia", + "Sun Valley", + "Laurel Park", + "Parkside", + "Cascade", + "Edgemont Park", + "Kensington", + "McQueeney", + "Dousman", + "Abram", + "Green Level", + "Shenorock", + "Bridgetown", + "West Belmar", + "Winnsboro Mills", + "Campbell", + "Fairlawn", + "Amboy", + "Antlers", + "Bethlehem", + "Kershaw", + "Weldon", + "Lebanon South", + "South Paris", + "Kiln", + "Bath", + "Petersburg", + "Pine Air", + "Shawnee Hills", + "Richgrove", + "Flandreau", + "La Blanca", + "Liberty City", + "Marshfield Hills", + "La Mesilla", + "Riverview", + "Portola", + "Coal Creek", + "Panhandle", + "Hazen", + "Anahola", + "Twain Harte", + "Wilberforce", + "Ferrum", + "Nedrow", + "Mascot", + "Harrisburg", + "Churchill", + "Star Valley", + "Idalou", + "Navassa", + "Junction City", + "West Union", + "Mason", + "Hollandale", + "Whetstone", + "Burley", + "Red Lodge", + "Bronson", + "Fowler", + "Tool", + "Canton", + "Honaunau-Napoopoo", + "Milton", + "Pequot Lakes", + "Hull", + "Anson", + "Bridgeport", + "Wrightsville", + "Old Saybrook Center", + "Gibsonia", + "Romoland", + "Terrace Park", + "Salmon Brook", + "Orchard Hills", + "Woodland Beach", + "Redington Shores", + "Pine Ridge at Crestwood", + "Santo Domingo Pueblo", + "Lincoln Park", + "Arnold", + "Johnsonburg", + "Weedpatch", + "Clinton", + "Parsons", + "Gumlog", + "Rainier", + "Texanna", + "Croswell", + "Wellston", + "Poth", + "Oceana", + "Slippery Rock University", + "Greenport West", + "Sag Harbor", + "Ludowici", + "Carnation", + "Vernonia", + "Boquerón", + "Brice Prairie", + "Ina", + "Hughesville", + "Brogden", + "Trowbridge Park", + "East Sonora", + "North Spearfish", + "Denmark", + "Carlin", + "Alamo", + "Cass City", + "Tazewell", + "Guin", + "Pablo", + "Egypt", + "Redfield", + "Sleepy Hollow", + "Oakhurst", + "Geistown", + "Belcourt", + "Calabash", + "Walton Hills", + "Herington", + "Greensboro", + "Brinckerhoff", + "Quail Ridge", + "Skyline Acres", + "Mayer", + "Aguas Claras", + "Clearlake Oaks", + "Center", + "Fairdale", + "Rangely", + "Fort Polk North", + "Belmond", + "Wilson-Conococheague", + "Durant", + "Utica", + "Tunica Resorts", + "Poplar-Cotton Center", + "Waterloo", + "West Wareham", + "Mitchellville", + "Zion", + "Escatawpa", + "Spencer", + "Splendora", + "Ogdensburg", + "Oak Hills", + "Westby", + "Alpha", + "Four Oaks", + "Westmorland", + "Oyster Bay Cove", + "Madelia", + "Aliceville", + "Honalo", + "New Market", + "Fredonia", + "Grove City", + "Watsontown", + "Janesville", + "Tompkinsville", + "Meeker", + "Seneca", + "Aptos Hills-Larkin Valley", + "Hunter", + "Willamina", + "Lamoni", + "Lakeside", + "Los Prados", + "Lineville", + "Paia", + "Keokea", + "Falconer", + "Ferdinand", + "Lisbon", + "Spring Mount", + "Colstrip", + "Shingletown", + "Fairmount", + "Los Llanos", + "Laughlin AFB", + "Leadville North", + "Franklinton", + "Vista Center", + "Phoenix", + "Lake Hamilton", + "La Porte City", + "Newtown", + "Winsted", + "Grand Canyon Village", + "York", + "Mulberry", + "East Berwick", + "Garfield", + "Plattsburg", + "Chesaning", + "Royal City", + "Westbrook Center", + "La Fermina", + "Holden", + "West Dennis", + "Jefferson", + "Sugarcreek", + "Oakwood", + "Buchanan", + "Jackson", + "Park Falls", + "North Prairie", + "Hope", + "Drum Point", + "Sky Valley", + "Uniontown", + "Weimar", + "Guyton", + `Sewall's Point`, + "Centerburg", + "Columbia", + "Elwood", + "Fredonia", + "Pulaski", + "Southworth", + "Brownsville", + "Farmington", + "Hennessey", + "Mount Pleasant", + "Dolan Springs", + "Boron", + "Union", + "North Eagle Butte", + "Grenelefe", + "Baldwin", + "Cleona", + "Henderson", + "Lumberton", + "Gibbsboro", + "Woodsfield", + "Central", + "Gates Mills", + "Cape Neddick", + "Fort Pierre", + "San Felipe Pueblo", + "Soulsbyville", + "Jonesville", + "Jonesville", + "Amelia", + "Chesterland", + "Oak Hill", + "South Fulton", + "Eatonville", + "Green Meadows", + "Vincent", + "Magnolia", + "Bridgman", + "New Llano", + "Wenonah", + "Hudson", + "East Quincy", + "Henry", + "Evarts", + "Sterling", + "White River Junction", + "Holyoke", + "West Terre Haute", + "Hudson Bend", + "Gaylord", + "South Pottstown", + "Elmwood Place", + "Crimora", + "Olimpo", + "Dry Ridge", + "Liverpool", + "Fox Lake Hills", + "Lake Village", + "North Plains", + "Wynnewood", + "St. George", + "Shinnecock Hills", + "Windham", + "Cimarron", + "Long Valley", + "Cecil-Bishop", + "Moorhead", + "Arthur", + "Lavonia", + "Lovettsville", + "De Leon", + "Hawley", + "Madison Center", + "Brewster Hill", + "Valle Vista", + "Ball Ground", + "Monserrate", + "Kingston", + "Palmas del Mar", + "Corazón", + "Fremont", + "Waskom", + "Blackville", + "Fairfield Bay", + "Lyons", + "Crystal Lake", + "Ravensworth", + "Murphys", + "Lemont", + "Belleair Bluffs", + "Old Brookville", + "Chiefland", + "Old Orchard", + "Arial", + "Lexington", + "Pine Beach", + "Parkwood", + "Pink", + "Marionville", + "Ashford", + "Glendale", + "Tullytown", + "Rio Verde", + "Erwinville", + "Hoschton", + "Amherst", + "North Conway", + "Pierre Part", + "Earle", + "Spring Grove", + "Ranchos de Taos", + "East Uniontown", + "Pine Island Center", + "Upper Nyack", + "Croom", + "Cibecue", + "Boles Acres", + "Polo", + "Newkirk", + "Lakeshore", + "Creston", + "Cordova", + "Wells", + "South Fallsburg", + "Kearny", + "Cheney", + "Schofield", + "Jellico", + "Adamsville", + "Pymatuning Central", + "Shiner", + "Whitney", + "Bethel Island", + "Chinchilla", + "Spencerville", + "Corralitos", + "Rockwell", + "Eagle", + "Spiro", + "Messiah College", + "Gassville", + "Patton Village", + "Penndel", + "Union City", + "Carlisle", + "McAdoo", + "Plainview", + "Walden", + "Helmetta", + "Farmington", + "Glendale", + "Garyville", + "Reed Creek", + "Bottineau", + "Ware Shoals", + "Manchester", + "Freeland", + "Brewster", + "Townsend", + "Eglin AFB", + "New Ellenton", + "New Glarus", + "Stonybrook", + "Evansburg", + "Millville", + "Lake Wazeecha", + "Elmendorf", + "Morris", + "Maple Lake", + "Caryville", + "Laymantown", + "Albany", + "Parma", + "Marlborough", + "Berkeley Lake", + "Barahona", + "Morenci", + "Lewistown", + "Arlington", + "Chester", + "Cloverdale", + "Borrego Springs", + "Rockport", + "Kingsbury", + "Long Beach", + "Toledo", + "Haverhill", + "Lafourche Crossing", + "Fannett", + "Lakin", + "Piketon", + "Coaldale", + "Lorenz Park", + "Clinton", + "Varnell", + "Lipscomb", + "Rising Sun", + "Granby", + "Cherryvale", + "Malad City", + "Ridgetop", + "Howard Lake", + "China Lake Acres", + "Aviston", + "Santa Nella", + "Emajagua", + "Dublin", + "Wewahitchka", + "Montegut", + "Tavernier", + "Solomons", + "Wrightsville", + "Brighton", + "Johnson City", + "Liberty", + "Reinholds", + "Owens Cross Roads", + "Atlantis", + "Elkton", + "Anchor Point", + "Belford", + "Glenwood", + "Redgranite", + "North Beach Haven", + "Rouses Point", + "Salt Creek Commons", + "Demorest", + "Orleans", + "Palmer", + "Vineyard Haven", + "Tennille", + "Jasonville", + "Council Grove", + "Cabin John", + "Turner", + "Tremont", + "Mason City", + "Country Knolls", + "Kahuku", + "Mount Jackson", + "Welch", + "Jal", + "Cedar Grove", + "Landisville", + "Watchtower", + "Madison", + "Ciales", + "Vinita Park", + "Ronan", + "Maple Plain", + "Hamilton City", + "Arnold Line", + "Hertford", + "Stanfield", + "Huntington", + "East Missoula", + "Wilmerding", + "Quitman", + "Montz", + "Unionville", + "Horseshoe Bend", + "Breckinridge Center", + "Lake Lotawana", + "Bell Canyon", + "Hickman", + "Kountze", + "West Hamburg", + "Pawnee", + "Jamestown", + "Williston Highlands", + "Eureka Springs", + "Helper", + "Cudjoe Key", + "Conesus Lake", + "Braddock", + "Jonestown", + "Belvedere", + "Shinnston", + "San Juan Bautista", + "Belville", + "East Helena", + "Maysville", + "Cumberland", + "Falmouth", + "Angola", + "Smoke Rise", + "Hanley Hills", + "Gila Bend", + "Westport", + "Bowdon", + "Willow Springs", + "New Boston", + "Poquonock Bridge", + "Oakbrook Terrace", + "Kure Beach", + "Nisswa", + "South Zanesville", + "North Pole", + "Josephine", + "Manahawkin", + "Chouteau", + "Graysville", + "Malone", + "Milford", + "Laguna Heights", + "Williamsport", + "Calwa", + "Essex Fells", + "Walnutport", + "Greenock", + "Lame Deer", + "Greenfield", + "Geneva", + "Gurdon", + "Marceline", + "Granby", + "Patterson Tract", + "Astatula", + "New Eagle", + "Fairbanks Ranch", + "Lake Holiday", + "Versailles", + "Cairo", + "Auburn", + "Houston", + "Rockwell City", + "Naples", + "Mineralwells", + "Galesburg", + "Cabool", + "Horse Pasture", + "Cowarts", + "Spencerville", + "Columbus Grove", + "Fifth Street", + "Columbus", + "Honokaa", + "Cambridge", + "Pecatonica", + "Tracy", + "Elsberry", + "Southmont", + "Ord", + "River Heights", + "Seneca", + "Oakley", + "Fritz Creek", + "Coal Grove", + "Morrisville", + "Holcomb", + "Weatherby Lake", + "Stevensville", + "Lincoln Beach", + "New Haven", + "Cardington", + "Blanco", + "Lyman", + "Anthony", + "Topton", + "Kirbyville", + "Dolgeville", + "Wellington", + "Seneca Knolls", + "Sac City", + "Pegram", + "Robesonia", + "Conway", + "Greensburg", + "Porter Heights", + "Glen Rock", + "Fairplains", + "Shadybrook", + "Drexel", + "Colfax", + "Stephens City", + "Pardeeville", + "Marshall", + "Las Marías", + "Midway", + "Midway", + "Cape Carteret", + "McCamey", + "Olton", + "New Stanton", + "San Ysidro", + "Simmesport", + "Kohler", + "St. George", + "Jacksboro", + "Stratford", + "Lake Summerset", + "Kerhonkson", + "Burnt Store Marina", + "Thorsby", + "Wilsonville", + "Chevy Chase Village", + "Bellerose Terrace", + "Ganado", + "Imperial", + "Three Forks", + "Leonard", + "Hale Center", + "Buena Vista", + "Jermyn", + "Rosemount", + "Postville", + "Tigerville", + "Clancy", + "Ida Grove", + "Lisbon", + "Yorktown", + "West Branch", + "Hinckley", + "Snow Hill", + "McDonald", + "Bellevue", + "Newburgh Heights", + "Bellport", + "Veedersburg", + "Lawai", + "Raven", + "St. Croix Falls", + "West End", + "Cherokee", + "Hanscom AFB", + "Troup", + "Hopwood", + "Esko", + "Pearson", + "Ninety Six", + "Aquebogue", + "East McKeesport", + "Afton", + "South Deerfield", + "Gotha", + "Halstead", + "Lake Odessa", + "North Beach", + "Erath", + "Little River-Academy", + "Mountain Lake", + "Homosassa", + "Rafael González", + "Creola", + "Fairview-Ferndale", + "Washburn", + "Banks", + "Ocean Gate", + "North Corbin", + "Estill Springs", + "Gwinn", + "Seabrook Farms", + "West Hill", + "Eddington", + "Laurel Hollow", + "Rouse", + "Flying Hills", + "Star City", + "Bodfish", + "Sea Isle City", + "Cuba City", + "Hughesville", + "Kahoka", + "Oakwood Hills", + "Jonestown", + "Volga", + "Pennville", + "Woodlands", + "Rankin", + "Pojoaque", + "North York", + "Beresford", + "Lexington", + "Jarales", + "Hurlock", + "Mannington", + "Columbia City", + "Vinton", + "Leipsic", + "Hamlin", + "Tyler Run", + "Kiefer", + "Pine Level", + "Kemah", + "Haynesville", + "East Cleveland", + "Mangonia Park", + "South Temple", + "Valencia", + "Easton", + "Southwest Greensburg", + "Jemez Pueblo", + "Sigourney", + "Woodville", + "Troy", + "Walla Walla East", + "Sparks", + "Sharpsburg", + "Shelby", + "Memphis", + "Hillsboro Beach", + "El Mangó", + "Ellis", + "Rainier", + "Seeley", + "St. Paris", + "Crow Agency", + "Seymour", + "Hildebran", + "Lathrop", + "Collinsville", + "Auberry", + "Tonopah", + "El Valle de Arroyo Seco", + "Arcanum", + "Roman Forest", + "Kechi", + "Pelican Bay", + "Eupora", + "Springfield", + "Goliad", + "Copeland", + "Level Plains", + "Albany", + "Flora", + "Eyota", + "Napavine", + "Shorewood Hills", + "Laton", + "Girard", + "Jonesville", + "Wapello", + "Choctaw Lake", + "Edgerton", + "Port Allegany", + "Taft Heights", + "Valley View", + "Fern Acres", + "Fránquez", + "Enterprise", + "South Greensburg", + "Wickerham Manor-Fisher", + "Bethlehem Village", + "Judsonia", + "Wedgefield", + "Ossun", + "Cooper", + "Burnham", + "Salem", + "Trail Creek", + "South Roxana", + "Martorell", + "Preston", + "Roanoke", + "Leechburg", + "Saugerties South", + "Bertsch-Oceanview", + "Belmont", + "Tome", + "Beverly Hills", + "Kenilworth", + "Willow", + "Carlisle", + "Mason Neck", + "Piperton", + "Liberty", + "Aitkin", + "Sussex", + "Lake Mills", + "Batavia", + "Mattawan", + "Shavertown", + "Carrington", + "Ogden", + "South Bloomfield", + "Churubusco", + "Hayden", + "Springerville", + "Epworth", + "Grill", + "Yorklyn", + "Aberdeen", + "Cave Junction", + "Maunawili", + "Varnville", + "Moorefield Station", + "Battle Ground", + "Minonk", + "Slayton", + "Loveland Park", + "Livingston", + "Camden", + "Badin", + "Lofall", + "Coupeville", + "Houserville", + "Arcade", + "Coleraine", + "Perry Park", + "Hodgkins", + "West Falmouth", + "Atkins", + "McColl", + "San Pasqual", + "Devens", + "Custer", + "Monticello", + "Mill City", + "Carterville", + "Caney", + "Monte Alto", + "Coto Laurel", + "Canyonville", + "Somerset", + "Trexlertown", + "Waretown", + "Yanceyville", + "Mart", + "Sumner", + "Lebanon Junction", + "Groveville", + "Clyde", + "Mowbray Mountain", + "Quail Creek", + "Syracuse", + "Golden Meadow", + "Mokuleia", + "Collinsville", + "Davisboro", + "Kouts", + "Fern Prairie", + "Willard", + "Harbor", + "Bowmansville", + "Ogden", + "Carbon Cliff", + "Granite", + "Harlem Heights", + "Stewart Manor", + "Chenoweth", + "Ocean Ridge", + "Northwood", + "Britt", + "Manchester", + "Silver Lake", + "Waverly", + "Quincy", + "Limon", + "Stevenson", + "Weyers Cave", + "Colby", + "Three Rivers", + "Shelby", + "Cricket", + "Frenchtown", + "Star City", + "Augusta", + "Hoyt Lakes", + "Sparta", + "Baraga", + "Bull Shoals", + "Inkerman", + "Krebs", + "Heritage Pines", + "Ellinwood", + "Warren", + "Prudenville", + "Goshen", + "New Chicago", + "Wrens", + "Prophetstown", + "Mars Hill", + "Mount Olive", + "Brookdale", + "Lima", + "Fisher", + "Zwolle", + "Shippensburg University", + "First Mesa", + "Farmer City", + "Blooming Prairie", + "West Carthage", + "Huntington", + "Albany", + "Stockton", + "Patrick Springs", + "Bellville", + "Prairie Grove", + "North Puyallup", + "Mayer", + "Haskell", + "Rolling Fork", + "La Pine", + "Jenkins", + "Tchula", + "Parkersburg", + "Hinckley", + "Durham", + "Cave City", + "Valley Hill", + "Catlin", + "Princeville", + "Sour Lake", + `Sullivan's Island`, + "Painted Post", + "Italy", + "Haslet", + "Manchester Center", + "Kealakekua", + "Springfield", + "Merlin", + "Enetai", + "Sheldon", + "Masury", + "West Hurley", + "Plainfield Village", + "Stagecoach", + "Anderson", + "Nettleton", + "Queensland", + "Kingstown", + "Cecilia", + "Eastport", + "Doniphan", + "Shadeland", + "Privateer", + "Scottsville", + "Linden", + "Jefferson", + "North Liberty", + "Englishtown", + "St. Matthews", + "Oakboro", + "Glen Gardner", + "Hampton Manor", + "Ixonia", + "Rockdale", + "Georgetown", + "St. Bonaventure", + "Phoenix", + "Athens", + "Chelsea", + "Hopewell", + "Florala", + "Manhattan", + "Dora", + "Wild Peach Village", + "Richmond", + "Unionville", + "Alta", + "Camino", + "Holiday Heights", + "Eudora", + "Belington", + "Atlantic Beach", + "Brundidge", + "Calhoun Falls", + "Buffalo", + "Alorton", + "Saltville", + "Burns Flat", + "Minneapolis", + "Hopewell", + "Victory Lakes", + "Albion", + "Union Point", + "Arkoma", + "Lake Dunlap", + "Brooklawn", + "Charlotte", + "Leslie", + "Audubon", + "Slocomb", + "Marriott-Slaterville", + "Las Carolinas", + "Warson Woods", + "Jobos", + "Union", + "St. Charles", + "Ashland", + "Sylvania", + "Monroe", + "McAlmont", + "Baker", + "Adams", + "Pierson", + "Trion", + "Midway", + "Priest River", + "Independence", + "Waterville", + "Carbon Hill", + `Bayou L'Ourse`, + "Leesport", + "Enterprise", + "Hurstbourne Acres", + "Derwood", + "Hidden Hills", + "Aceitunas", + "Piedmont", + "Lookout Mountain", + "Steele", + "Lynnwood-Pricedale", + "Roberts", + "Graton", + "East Atlantic Beach", + "San Augustine", + "Fairchance", + "Gregory", + "Hammond", + "East Ithaca", + "Waurika", + "Lookout Mountain", + "New Athens", + "Southside Place", + "Indian River", + "Evart", + "Lake Ripley", + "Remsenburg-Speonk", + "Monson Center", + "Blacksburg", + "Adamstown", + "Bernie", + "Youngstown", + "Linden", + "Arden on the Severn", + "Biggs", + "Belleville", + "Barview", + "Henryville", + "Spencer", + "Prince George", + "Berino", + "Greensboro", + "Great Falls", + "Erma", + "Mount Cobb", + "Amboy", + "Warm Springs", + "New Johnsonville", + "Slater-Marietta", + "Hollis", + "Lake Mohawk", + "Pinedale", + "Elk Point", + "Ault", + "Somonauk", + "Suárez", + "Yale", + "Van Horn", + "Shannon", + "Moundridge", + "Nicholson", + "Devon", + "Gate City", + "Gibbon", + "Daniels", + "Melbourne", + "New Buffalo", + "Ellaville", + "Sumrall", + "Conyngham", + "Lavallette", + "Laurel Springs", + "Bradford", + "Seabrook Island", + "Tenino", + "Charlotte Hall", + "West Homestead", + "Lakesite", + "South Connellsville", + "Leachville", + "Durant", + "Haines", + "Elysburg", + "Flora", + "Malta", + "Canton", + "Langston", + "Ledbetter", + "Lakemont", + "Sesser", + "Moriarty", + "Blaine", + "Dakota City", + "Wadley", + "Venice", + "Sylvan Lake", + "Edgewood", + "Merrionette Park", + "North Belle Vernon", + "Gordon", + "Crossville", + "Estill", + "Peosta", + "Point of Rocks", + "Big Beaver", + "North Vacherie", + "Denver", + "Foresthill", + "Richwood", + "Drexel", + "Samson", + "Riverside", + "Plain View", + "Glenmoor", + "Williamsport", + "Rivanna", + "Spring City", + "Wilber", + "Vernon", + "Ingram", + "Roundup", + "Wakarusa", + "Cordova", + "Delcambre", + "Five Points", + "Morrisville", + "Milan", + "Brookwood", + "Merriam Woods", + "Doe Valley", + "Andrews", + "Rolling Hills", + "Hooker", + "Alpine", + "Whitesburg", + "Eagleview", + `L'Anse`, + "Langley", + "G. L. García", + "Milam", + "Scotland Neck", + "Dunnellon", + "St. Lawrence", + "Roseville", + "New London", + "Myersville", + "Greybull", + "Greenfield", + "Capac", + "Corcovado", + "Delaware City", + "Olathe", + "Columbus Junction", + "Frankton", + "Trainer", + "Krugerville", + "Morgan", + "Medicine Lodge", + "Sulligent", + "Colquitt", + "Lincoln University", + "Brass Castle", + "Cedar Hill", + "Memphis", + "Jacobus", + "Bangor", + "Bloomfield", + "Goldthwaite", + "Christmas", + "Jarrell", + "Leetonia", + "Upper Pohatcong", + "Clatskanie", + "Presidential Lakes Estates", + "Howard City", + "Cienega Springs", + "Washington Heights", + "Arapahoe", + "Mesilla", + "Lovelock", + "Parchment", + "Burns Harbor", + "Lake Ozark", + "Campbellsport", + "Fort Hancock", + "Pahala", + "Cross Plains", + "Beaver Dam Lake", + "Seth Ward", + "East Bronson", + "Sacaton", + "Lusby", + "Hope Valley", + "Second Mesa", + "Wilder", + "Leon", + "Brownsville", + "Cedar Bluff", + "Delmar", + "Clarkesville", + "South Wenatchee", + "Bay", + "Susquehanna Trails", + "Cana", + "Lyndhurst", + "Nambe", + "Lakeland", + "Briarcliff", + "Bayou Gauche", + "Gardendale", + "Vale", + "Clearwater", + "Bruce", + "Driggs", + "Pine", + "Bryant", + "Long Lake", + "Braham", + "Oriole Beach", + "Oakland", + "Olivet", + "Rossmoyne", + "Prosperity", + "Crystal Lawns", + "Weston", + "Brooklet", + "St. Stephen", + "Mount Zion", + "Hudson", + "Stateburg", + "Arenas Valley", + "New Oxford", + "Morton", + "Sunray", + "Navarre", + "South Park", + "Selmont-West Selmont", + "Lake Dalecarlia", + "East Pepperell", + "East Washington", + "Maunabo", + "Hemby Bridge", + "Harwich Port", + "Campbell", + "Noel", + "Mona", + "Lone Pine", + "North Warren", + "Superior", + "Lepanto", + "Ralls", + "Shelburne Falls", + "Marissa", + "Piru", + "Lawton", + "Alum Creek", + "Plainville", + "Guttenberg", + "Inola", + "Jackson", + "Elida", + "Mayville", + "Moravian Falls", + "Kenyon", + "Plymouth", + "Kapaau", + "Millwood", + "Durand", + "Crandon", + "West Liberty", + "Browns Lake", + "Lewiston", + "Orion", + "Grandview", + "Butler", + "Lakeside", + "Westhampton Beach", + "Elgin", + "Cologne", + "Weweantic", + "Spinnerstown", + "Lithopolis", + "Yacolt", + "Richland", + "Henderson", + "Warroad", + "Arroyo Seco", + "Appomattox", + "Mount Sterling", + "Village of the Branch", + "Coalgate", + `Golden's Bridge`, + "Cridersville", + "Jamestown", + "Buena Vista", + "Decatur", + "South Floral Park", + "King", + "Port Sulphur", + "Beech Mountain Lakes", + "Cameron", + "Red Corral", + "Coushatta", + "Red Lake", + "Bonneau Beach", + "Idaho Springs", + "Bartonville", + "Sea Breeze", + "Castlewood", + "Edgard", + "Spring Park", + "Edgerton", + "Basile", + "Weston", + "Las Palmas II", + "Avon-by-the-Sea", + "Evadale", + "Braddock Hills", + "Bloomington", + "Tawas City", + "Ortonville", + "Sturgis", + "Clarendon", + "Wellsville", + "Miami", + "Gilbert", + "Galena", + "Sneads", + "French Lick", + "Bovina", + "Kearney Park", + "Dallas Center", + "Orchard Grass Hills", + "Folsom", + "Port Carbon", + "Milan", + "Marion", + "Allentown", + "Wabasso Beach", + "Sardis City", + "Morgantown", + "Lake City", + "Big Lake", + "Bagdad", + "Zolfo Springs", + "Glencoe", + "Ravensdale", + "Sabana Hoyos", + "Loretto", + "Lagunitas-Forest Knolls", + "Stinnett", + "Forsyth", + "Southport", + "Humboldt", + "Kiawah Island", + "Fort Denaud", + "Duson", + "South Taft", + "Cannon Beach", + "Marlette", + "Mountain Lodge Park", + "Sea Girt", + "Camden", + "Mechanicsville", + "WaKeeney", + "Lattingtown", + "McCleary", + "Shamrock", + "Shannon", + "Port Edwards", + "Woodville", + "Boronda", + "Stony Point", + "Olivet", + "Silver Bay", + "Slater", + "Anna Maria", + "Pine Grove", + "North Newton", + "Santa Clara", + "Weyauwega", + "Katonah", + "Surgoinsville", + "Danbury", + "Belleville", + "Lincoln Park", + "Butler", + "Luther", + "Elkhart", + "Pomeroy", + "East Pittsburgh", + "Palmyra", + "Salem", + "South Dos Palos", + "Dover Beaches North", + "Morovis", + "Lorena", + "Lake Camelot", + "Río Blanco", + "Questa", + "Bourbon", + "Cooperstown", + "Jeffersonville", + "Wright", + "Langdon", + "Bellwood", + "Pine Mountain Club", + "Tri-Lakes", + "Central Square", + "Farley", + "Rafter J Ranch", + "Gallatin", + "Randolph", + "Catlettsburg", + "Lewisburg", + "Calico Rock", + "Elberta", + "Los Molinos", + "Monon", + "Ocean Park", + "Davenport", + "Upper Brookville", + "Elizabeth Lake", + "Osakis", + "Mio", + "Baden", + "Middleport", + "Unionville", + "Detroit Beach", + "Hampton", + "Ko Olina", + "Fort Washakie", + "City View", + "Fontana-on-Geneva Lake", + "Pikeville", + "Forest City", + "Bradley", + "South Whitley", + "Fall River", + "Oakley", + "Lacon", + "Elkland", + "Le Grand", + "Grove Hill", + "Monroe North", + "Gruetli-Laager", + "Honey Grove", + "Buna", + "Huachuca City", + "Vázquez", + "Baldwinville", + "Toquerville", + "Itasca", + "Eaton", + "Louisa", + "Stafford", + "Nissequogue", + "Plentywood", + "Wanchese", + "Rector", + "Decatur", + "Pine Bush", + "Baiting Hollow", + "McEwen", + "Ben Avon", + "West Pasco", + "Makaha Valley", + "Whitwell", + "El Tumbao", + "Pineville", + "Oberlin", + "Hampden-Sydney", + "Estell Manor", + "Kirkland", + "Mont Alto", + "Cherryville", + "Pierce", + "Bridgeport", + "Stella", + "Stuart", + "Toro Canyon", + "Lillian", + "Lester Prairie", + "Lowry Crossing", + "Merritt Park", + "Harpersville", + "Sandy Valley", + "Westover", + "Webster", + "South Willard", + "Lost Hills", + "Fredericksburg", + "Town Line", + "Coal City", + "Manitou Beach-Devils Lake", + "Amity", + "Crested Butte", + "Dravosburg", + "Chenoa", + "Akron", + "Sparta", + "Las Maravillas", + "Lamar", + "Ragland", + "Wesson", + "Deshler", + "Pennington Gap", + "Butler", + "Whitewright", + "Lewisville", + "Warrenton", + "Reynolds Heights", + "Holley", + "Greenvale", + "Prairie City", + "Prudhoe Bay", + "Trumansburg", + "Peebles", + "Sun Prairie", + "Meridian Hills", + "Armada", + "Moweaqua", + "Stonewood", + "East Palatka", + "Redwood Valley", + "Frewsburg", + "Stockton", + "Zeigler", + "North Judson", + "Chadbourn", + "Maroa", + "Industry", + "Roanoke", + "Choteau", + "Duchesne", + "Evans City", + "Westlake", + "Hughes Springs", + "Bear Creek", + "Tekamah", + "Nanawale Estates", + "Bessemer", + "Clinton", + "Bartonsville", + "Syracuse", + "Keeler Farm", + "Shamokin Dam", + "Biola", + "Whiting", + "Bridgeport", + "Montverde", + "Decatur", + "Ridgeville", + "Sorrento", + "Kayak Point", + "Meadowlakes", + "Warsaw", + "Rosebud", + "Richlands", + "Chilhowie", + "Archer City", + "Twin City", + "Scenic", + "Fairfax", + "Big Timber", + "La Grulla", + "Oakes", + "Oberlin", + "Jonesboro", + "Cassopolis", + "Gaston", + "Caddo Mills", + "Labadieville", + "Glen Lyon", + "South Bend", + "McMechen", + "Teaticket", + "North Bennington", + "Ripley", + "Bruceville-Eddy", + "Haubstadt", + "Punta Rassa", + "Pleasantville", + "Cheswold", + "El Paraiso", + "Wind Point", + "Mayfield", + "Wilson", + "Romney", + "Rushford", + "Jauca", + "Kualapuu", + "Pumpkin Center", + "Bristol", + "Mapleton", + "Mulberry", + "Plantsville", + "Angola on the Lake", + "Wilder", + "White Castle", + "Spencer", + "Minorca", + "Dresden", + "Fort Montgomery", + "Heritage Lake", + "London", + "Des Allemands", + "Lewisport", + "Searles Valley", + "Temple", + "Smackover", + "Flora Vista", + "Three Way", + "Bunker Hill", + "Mammoth", + "Bylas", + "Rocky Point", + "King Arthur Park", + "Upper Fruitland", + "Brownlee Park", + "Tonto Basin", + "Shaw", + "Washington Park", + "Horton", + "Nashville", + "Hamilton", + "Antwerp", + "Holley", + "Shawneeland", + "De Pue", + "Steep Falls", + "East Lexington", + "Hato Candal", + "Mundys Corner", + "Tuckerman", + "Lake Como", + "Westwood Shores", + "Panguitch", + "Rancho Tehama Reserve", + "Summerdale", + "Kersey", + "Culver", + "MacArthur", + "South Point", + "Oswego", + "Denton", + "Island Heights", + "Commercial Point", + "Roodhouse", + "Freeport", + "Lake Sherwood", + "Osseo", + "Haymarket", + "Peridot", + "Lake Isabella", + "North Fork", + "Fairfax", + "Cheswick", + "Gunter", + "South Amherst", + "Oroville", + "Albany", + "Kingston", + "Pleak", + "Harrisville", + "Elkview", + "Sabinal", + "Hagerstown", + "Walnut Grove", + "Cascade Valley", + "Stanley", + "John Day", + "Princeville", + "West Unity", + "Daguao", + "Joseph City", + "Canby", + "Blountsville", + "Ronceverte", + "Holliday", + "Bluff City", + "Altamont", + "Princeville", + "Calhoun City", + "Wakefield", + "Gadsden", + "Kentland", + "Dayton", + "Columbus AFB", + "Bement", + "Decatur", + "Bent Creek", + "Perryopolis", + "Tremont", + "Parcelas de Navarro", + "Knollwood", + "Uvalde Estates", + "Trempealeau", + "Coaling", + "Cementon", + "Playita", + "Cosmopolis", + "Arcadia", + "Blue Grass", + "Young Harris", + "Southport", + "Channel Lake", + "Blackwater", + "Star Valley Ranch", + "Munfordville", + "Cowan", + "Terrebonne", + "Bay Springs", + "Sedgwick", + "Douglass", + "Salyersville", + "Murphy", + "South Rockwood", + "Rehobeth", + "Ridgely", + "Kaibito", + "Tillson", + "Muhlenberg Park", + "Black Rock", + "Plains", + "Cade", + "Holland", + "Vance", + "Metlakatla", + "Ritzville", + "Del Rey Oaks", + "Elk Creek", + "Montpelier", + "Juarez", + "Rock Creek", + "La Playa", + "Canton Valley", + "Hatch", + "Steelville", + "Lazy Mountain", + "Church Hill", + "Stockdale", + "Daleville", + "Vevay", + "Minco", + "Burnsville", + "Weston", + "Edgeworth", + "Greilickville", + "Duck Hill", + "Harvey", + "Watervliet", + "Dundas", + "Pole Ojea", + "Annandale", + "Homer", + "Carnegie", + "Muenster", + "Franklin", + "Westwood", + "Honeyville", + "Connelly Springs", + "Richland", + "Jonesboro", + "McArthur", + "Lake City", + "Teutopolis", + "Westwood", + "Spring Green", + "Thoreau", + "Intercourse", + "Woodburn", + "Houghton", + "Duquesne", + "Los Ranchos", + "Garden City", + "McComb", + "Boaz", + "Hudson Lake", + "Dayton", + "Caledonia", + "Landover Hills", + "Kettle Falls", + "Moville", + "Charlotte", + "New Berlinville", + "Walcott", + "Pocahontas", + "Stewartville", + "Gearhart", + "Buckhead Ridge", + "Los Alamos", + "Bayou Vista", + "Chapin", + "Marbury", + "Wilderness Rim", + "Congress", + "Boulevard Gardens", + "Sebewaing", + "Water Mill", + "Nooksack", + "Lockney", + "Dundee", + "South Lancaster", + "Georgetown", + "Topaz Ranch Estates", + "Canyon Day", + "Pinewood Estates", + "Shiremanstown", + "East Bangor", + "Smith Valley", + "Victoria", + "Pinehurst", + "Aurora", + "Reinbeck", + "Perry", + "Penn State Erie", + "Argos", + "St. Francisville", + "Kingsley", + "San Antonio", + "Marfa", + "Springfield", + "Hillsboro", + "Gordonsville", + "Waterflow", + "Ridgely", + "Mitchell", + "Harlan", + "Jagual", + "Black Point-Green Point", + "Ester", + "Luis M. Cintrón", + "Temelec", + "Wellington", + "West Glendive", + "Ainsworth", + "Siesta Acres", + "Wilkinson Heights", + "Mount Ayr", + "Pinebluff", + "South Charleston", + "Rose Hill", + "Chesilhurst", + "Remsen", + "Quincy", + "Kensett", + "Columbus", + "Concord", + "Delavan", + "Key Vista", + "Lakefield", + "Tryon", + "Elk Rapids", + "Saratoga", + "Gordo", + "Ovid", + "Bladenboro", + "El Negro", + "Sawyerwood", + "Bokeelia", + "Oglala", + "Crosbyton", + "North Eastham", + "Richland", + "Mars", + "Fox Chase", + "Corrigan", + "Thorp", + "Senath", + "Lake Bryan", + "Bethel", + "Falmouth Foreside", + "Maurice", + "Spencerville", + "Drew", + "Ashley", + "Mill Hall", + "Georgiana", + "La Huerta", + "Port Byron", + "Ladera", + "Fish Lake", + "Ballplay", + "Aberdeen", + "Montour Falls", + "Peach Lake", + "Grand Ronde", + "Belleair Beach", + "Soap Lake", + "Waverly", + "Neoga", + "Leavittsburg", + "Towamensing Trails", + "Espy", + "Stevenson", + "Trevorton", + "Corydon", + "Monterey Park", + "Atlanta", + "South Browning", + "Naranjito", + "Bowman", + "Saxapahaw", + "Eureka Mill", + "Adrian", + "Brooklyn", + "Emerson", + "Galesville", + "Coalville", + "Spring Valley", + "Rocky Point", + "Traer", + "Monette", + "Edmonton", + "Astor", + "Bernice", + "Orwell", + "Lakeside", + "Shoreacres", + "De Kalb", + "Calumet", + "Linn", + "New Hope", + "Emigration Canyon", + "Eagle River", + "Mayville", + "Midway", + "Del Rio", + "Crooked Lake Park", + "Aberdeen", + "Cressona", + "Mechanicsburg", + "Woodland Hills", + "Darien", + "Warner", + "Avon", + "Natalia", + "Nashua", + "Shelbina", + "Palomas", + "Woodland Park", + "Jerome", + "Union City", + "Lockport Heights", + "Homer City", + "Rosedale", + "McCord", + "West Milton", + "Eleanor", + "Earlville", + "Kalida", + "Harbor Beach", + "Tecumseh", + "Murfreesboro", + "Sparkill", + "Paradis", + "Albion", + "Osgood", + "Coarsegold", + "Clark Mills", + "Rollingwood", + "Kenly", + "Prestbury", + "Tuolumne City", + "Bourbon", + "Des Arc", + "Sardis", + "Hamilton", + "Langhorne", + "Sturgeon", + "Graysville", + "Belhaven", + "Eldorado", + "Oakland", + "Foscoe", + "Brookside Village", + "Stratford", + "Hallsville", + "Morenci", + "East Canton", + "Runaway Bay", + "Banner Hill", + "Leilani Estates", + "Wayne", + "River Hills", + "Lookout Mountain", + "Francis", + "Hartley", + "Central Garage", + "Alvord", + "Owingsville", + "Thorntown", + "Adwolf", + "Shasta", + "Pirtleville", + "Whitehall", + "Warren Park", + "New Paris", + "Mount Carroll", + "Leona Valley", + "Wacousta", + "Estancia", + "Southern View", + "Smith Center", + "Summit", + "Pewee Valley", + "Blossom", + "East Dubuque", + "Tonka Bay", + "Del Norte", + "Descanso", + "Genola", + "West Lawn", + "Inverness", + "Fairlea", + "Sausal", + "Manson", + "Elizabeth", + "Chester Center", + "Milford", + "Random Lake", + "Grayville", + "Chester", + "Toast", + "Union City", + "Dunsmuir", + "Ada", + "Crescent", + "LeChee", + "Baidland", + "Norwood", + "Wardsville", + "Comanche", + "Franklin Furnace", + "Sharon", + "Olive Hill", + "Belle Plaine", + "Ames Lake", + "Manton", + "New Plymouth", + "Ransomville", + "Oak Grove", + "Vonore", + "Woodmont", + "Carrier Mills", + "Reform", + "Moroni", + "Warren", + "McMillin", + "Westville", + "East Spencer", + "Schoolcraft", + "Sarcoxie", + "Bay Park", + "New Middletown", + "Duque", + "Worthington Hills", + "Wyoming", + "Montrose", + "Cedar Glen Lakes", + "Stanfield", + "Bressler", + "Shawsville", + "Wagner", + "Linden", + "Lewiston", + "Judson", + "Dover", + "Rehoboth Beach", + "Paxtang", + "Crothersville", + "Miranda", + "East Berlin", + "Hines", + "Three Oaks", + "Rossville", + "North Pekin", + "Nescopeck", + "New Fairview", + "Niagara", + "Chatmoss", + "Tipton", + "Seaside Park", + "East Valley", + "Newfield", + "Hillsdale", + "Fort Belknap Agency", + "Roseto", + "Rosepine", + "Dobson", + "Fairforest", + "Collings Lakes", + "Chapel Hill", + "Logansport", + "Pleasant Grove", + "Rheems", + "Neuse Forest", + "Kodiak Station", + "Ramos", + "Fort Covington Hamlet", + "Harvey", + "Sumas", + "Gallitzin", + "Englewood", + "Hasson Heights", + "Owenton", + "Patrick AFB", + "Appalachia", + "Walnut Cove", + "Coldwater", + "Nederland", + "Brookston", + "Mercersburg", + "Passapatanzy", + "McConnell AFB", + "Mason", + "Baxter", + "Sebree", + "Smethport", + "Chepachet", + "Crownsville", + "Fair Grove", + "Zilwaukee", + "Tariffville", + "Hancock", + "Contoocook", + "Grandview Plaza", + "White Pigeon", + "Stony Point", + "Mescal", + "Bangs", + "Crugers", + "Lusk", + "Edgewood", + "Augusta", + "Port Dickinson", + "Rome", + "Stratford", + "Oronoco", + "Big Pine", + "Kremmling", + "Quinlan", + "McConnellstown", + "Lake Caroline", + "Watertown", + "Kerens", + "Salisbury", + "Apollo", + "Meade", + "Fort Loramie", + "Fairmount Heights", + "Lac du Flambeau", + "Salem", + "Limestone", + "Hawthorne", + "Oak Hill", + "Gordon", + "East Brooklyn", + "Avoca", + "Seven Points", + "Bennington", + "Home Garden", + "Plum Creek", + "Powhatan Point", + "Shreve", + "Coal Run Village", + "Anna", + "Rainelle", + "Bainbridge", + "Dewart", + "Nellieburg", + "Boyd", + "Stacy", + "Pepeekeo", + "Laguna Park", + "Waterville", + "Mediapolis", + "Cross Roads", + "Rock Hill", + "Meridian", + "Dallesport", + "Bells", + "Sebastian", + "Claycomo", + "Redfield", + "Roseland", + "Miamitown", + "Twin Lake", + "Chisholm", + "Winchester", + "Willow Creek", + "Nutter Fort", + "Atlantic Beach", + "Hilldale", + "Aurora", + "Chualar", + "Snow Hill", + "West Salem", + "Kings Mills", + "Bass Lake", + "Harbor Hills", + "Russell", + "Pilot Rock", + "Northlakes", + "University of Pittsburgh Johnstown", + "Granger", + "Rock Creek", + "Marathon City", + "Huntsville", + "Collinsville", + "Granville South", + "Bannockburn", + "Granger", + "Worthington", + "Highland Park", + "Mora", + "Herscher", + "Monrovia", + "Lincolnton", + "Lucasville", + "Buxton", + "New Paris", + "Clinton", + "Stanton", + "De Soto", + "Shoshone", + "Neligh", + "Oakland", + "Charenton", + "Terra Alta", + "Waterman", + "Depoe Bay", + "LaBarque Creek", + "Erie", + "Winfield", + "Columbine Valley", + "Gold Key Lake", + "Orfordville", + "Ackley", + "Russell", + "East Hazel Crest", + "Lukachukai", + "St. Regis Park", + "Toa Baja", + "Rand", + "Kittitas", + "Brooklyn Heights", + "Lake Hamilton", + "Parks", + "Long Beach", + "Rafael Capó", + "Mount Vernon", + "Marion", + "Ferndale", + "Ferron", + "Centerfield", + "Booker", + "Elizabethville", + "Urbana", + "Guthrie Center", + "Rapid City", + "Copper Canyon", + "Seadrift", + "Sylvan Springs", + "Cacao", + "Dale", + "Edmonston", + "Greenup", + "Avis", + "Blue Ridge", + "Murphys Estates", + "Audubon Park", + "Baldwin", + "Duncannon", + "Wendover", + "Cherokee", + "Colma", + "McCrory", + "Port Barrington", + "Au Sable", + "Fulton", + "Sun Valley", + "Shepherd", + "Baird", + "Legend Lake", + "Pine Knot", + "Bonner-West Riverside", + "Manito", + "Warsaw", + "Ethete", + "Lacoochee", + "Oakwood", + "Windsor", + "Williamsville", + "Johnsonville", + "North Granby", + "Oak Leaf", + "La Alianza", + "Quinebaug", + "Babbitt", + "Lynchburg", + "Glen Alpine", + "Blossburg", + "Lone Star", + "Justice", + "Cannelton", + "Warsaw", + "Wolfe City", + "Paisley", + "Bunkerville", + "Airport", + "Belle", + "Brilliant", + "Porterdale", + "Bismarck", + "Pine Valley", + "Parkston", + "Montrose", + "Wheeler", + "Home", + "Webb", + "Elizabeth", + "Bertram", + "North Redington Beach", + "Birch Run", + "Sandia Knolls", + "San Antonio", + "Groton", + "Bartolo", + "Pittsville", + "Cordova", + "Green Valley", + "Hebron", + "Talahi Island", + "Freedom", + "Monticello", + "Bridgeport", + "Lebec", + "Monona", + "Interlachen", + "Redington Beach", + "Bon Aqua Junction", + "Richmond", + "Victory Gardens", + "Navesink", + "Weldon", + "South Palm Beach", + "Porcupine", + "Paonia", + "Mayo", + "Indian Shores", + "Benson", + "Colwich", + "Winchester", + "Rockvale", + "Omao", + "Radium Springs", + "Plandome", + "Monument Hills", + "Catawissa", + "La Pryor", + "Montello", + "Stamps", + "Brooklyn", + "Central Aguirre", + "Somerville", + "North Lewisburg", + "Big Bend", + "Jackson Center", + "Marble Hill", + "Burkesville", + "Mount Pulaski", + "Fosston", + "Leland Grove", + "Hastings", + "Hartington", + "New Haven", + "Colfax", + "Ardmore", + "Cumberland Head", + "Akron", + "Cambria", + "Malvern", + "Clermont", + "Yaurel", + "Pine Grove Mills", + "Wilson", + "Garrison", + "Castleton-on-Hudson", + "Versailles", + "Wagon Wheel", + "Culver", + "Blue Ridge", + "Harrisville", + "Brodheadsville", + "Center Hill", + "Lakewood Shores", + "South Windham", + "Dunnigan", + "Slater", + "Perryville", + "Fort Recovery", + "Wauregan", + "Sutton-Alpine", + "Head of the Harbor", + "Burns", + "South Coatesville", + "Newton", + "Mineville", + "Somerset", + "Eatons Neck", + "Shorewood-Tower Hills-Harbert", + "China Spring", + "Whitmire", + "Towanda", + "Lake Catherine", + "Blades", + "Gower", + "Crump", + "Cleveland", + "Colmar Manor", + "Pine Prairie", + "Benítez", + "Lexington", + "Fivepointville", + "Roaming Shores", + "Billington Heights", + "Sugar City", + "Bryson City", + "Bangor", + "Bremen", + "Monarch Mill", + "Burton", + "Navajo", + "Guayabal", + "Dixon", + "Paul", + "Stony Prairie", + "Kimball", + "Dassel", + "Fox Lake", + "Woodward", + "Vernon Valley", + "Leoti", + "Batesville", + "El Ojo", + "Ackerman", + "Dunlap", + "Rural Retreat", + "Westlake", + "West Liberty", + "Irwindale", + "Hudson", + "Walford", + "Koontz Lake", + "Friedens", + "Ash Grove", + "Harleigh", + "Grapeland", + "Buttonwillow", + "Ortonville", + "Awendaw", + "Woxall", + "Raubsville", + "Edgar", + "Arlington", + "Woodbranch", + "Fayette", + "Dover", + "Vienna", + "Girardville", + "Northwest Ithaca", + "Hoback", + "Purdy", + "Saxonburg", + "Keshena", + "Cut and Shoot", + "Grand Isle", + "Rotan", + "Laflin", + "Dunnstown", + "Huntington Bay", + "Pinetop Country Club", + "Queens Gate", + "State Center", + "Fayette", + "Ivanhoe", + "Gretna", + "Queen City", + "Hurley", + "Virginia", + "Terre Hill", + "St. Peter", + "Roxana", + "Sutton", + "Chappaqua", + "Corning", + "Iota", + "Darmstadt", + "Noank", + "Oakdale", + "Tarkio", + "West Conshohocken", + "Fort Benton", + "Flatonia", + "Capitan", + "Forest", + "Las Ollas", + "Mancos", + "Cinnamon Lake", + "Cassville", + "Fennville", + "Tylertown", + "Winlock", + "Piedra Gorda", + "La Vernia", + "Washington Mills", + "Thompson Falls", + "Chatham", + "Midpines", + "Castle Hill", + "Mountain Village", + "Taos Pueblo", + "Sundown", + "Chevy Chase Heights", + "Cadott", + "Langhorne Manor", + "West Baraboo", + "Centreville", + "Westport", + "Presquille", + "Ten Mile Run", + "Greenville", + "Greenwich", + "Stanton", + "Benld", + "Oakland", + "Eldridge", + "Manning", + "New Beaver", + "Darrington", + "Stapleton", + "Linntown", + "Celina", + "Walls", + "Pemberville", + "Arma", + "Morris", + "Moody", + "Rustburg", + "Black Earth", + "San Antonio", + "The Pinehills", + "Logan", + "Red Lake Falls", + "Bonduel", + "Pine Mountain", + "Biltmore Forest", + "Rockaway Beach", + "Aristocrat Ranchettes", + "Olmito", + "Chesterfield", + "Helena", + "Chesapeake", + "Clintondale", + "Felton", + "Verona", + "Hico", + "San Rafael", + "Pilot Mountain", + "Mount Gay-Shamrock", + "Montezuma", + "Sweet Springs", + "Big Sandy", + "Raleigh", + "Coloma", + "Woodsboro", + "Earlham", + "Dillsboro", + "Hill City", + "Lake Brownwood", + "Cedarville", + "Guthrie", + "Janesville", + "Atglen", + "Millers Creek", + "Claremont", + "South Woodstock", + "Sand Lake", + "Lomas", + "Worthington", + "Cornell", + "Glade Spring", + "Bagley", + "Benavides", + "Millbrook", + "Centreville", + "Silver Lake", + "Eureka", + "Dunes City", + "Hubbard", + "Harwich Center", + "Great River", + "Shortsville", + "Bay City", + "Bryn Athyn", + "Serenada", + "Menard", + "St. Elmo", + "Greenland", + "Fall Branch", + "Brookfield Center", + "Kingsley", + "Crystal Lakes", + "Shenandoah Heights", + "Markesan", + "Pelzer", + "Twin Grove", + "Dawson", + "Philo", + "New California", + "Lake Waccamaw", + "Crainville", + "Avondale", + "North DeLand", + "Vanceburg", + "Madison", + "Brooklyn", + "Whitley City", + "Falling Waters", + "Pioneer", + "Beaver", + "Wetherington", + "Avon", + "Moose Wilson Road", + "New Windsor", + "Aetna Estates", + "Gridley", + "Princeton", + "Montague", + "Indian Hills", + "South Carthage", + "Bel-Nor", + "Tracy City", + "Rome City", + "Sackets Harbor", + "Buffalo", + "Mendon", + "Luna Pier", + "Lake Lorelei", + "Elmore", + "Cleora", + "Edison", + "Mountain Mesa", + "Middletown", + "Locust Grove", + "Pomeroy", + "Brocton", + "Bruceton", + "Wellman", + "Irwin", + "Clarks Green", + "Olivet", + "Milford", + "Donovan Estates", + "Salina", + "Durand", + "Kilmarnock", + "Palmarejo", + "Hillsboro", + "Five Points", + "Loving", + "Surrey", + "New Castle Northwest", + "Apache", + "Flomaton", + "Yorktown Heights", + "Gasport", + "West Marion", + "Frazee", + "Russellton", + "Woodway", + "Moodus", + "Rice", + "Parsons", + "Elmo", + "Wolf Creek", + "New Pekin", + "Williams", + "Lakeshire", + "Lenox", + "New Sarpy", + "Shoemakersville", + "Mishicot", + "Allendale", + "Blawnox", + "White Cloud", + "Kingsford Heights", + "Pioneer", + "East Griffin", + "Mashpee Neck", + "Woodbine", + "The Hideout", + "Odon", + "Mount Wolf", + "Adams Center", + "Swepsonville", + "Hackberry", + "Tatum", + "Bedford", + "Lewiston", + "Grandview", + "Standish", + "Tallaboa Alta", + "Pelahatchie", + "Sanborn", + "Gardner", + "Lone Tree", + "Masonville", + "Auburn", + "Schwenksville", + "Duenweg", + "Wildwood", + "Stanleytown", + "Salome", + "Fayetteville", + "Watts Mills", + "West Yellowstone", + "Shoal Creek", + "Gleason", + "New Market", + "Springfield", + "Olla", + "Maury", + "Youngsville", + "Tubac", + "Buchanan Dam", + "Godley", + "Cypress Quarters", + "Glyndon", + "Cactus Flats", + "Kincaid", + "Exmore", + "Vernon Center", + "Oblong", + "Glen Dale", + "St. Leo", + "Northville", + "Ringgold", + "Holstein", + "Mound Bayou", + "Fort Ashby", + "Apple Mountain Lake", + "Carbondale", + "Heidelberg", + "Sleepy Hollow", + "Oakland", + "Bell Acres", + "Vian", + "Eaton Estates", + "Marmet", + "Mancelona", + "Centennial Park", + "Parcelas La Milagrosa", + "Glide", + "Pierz", + "Maple Park", + "Reese", + "Lluveras", + "Holiday Valley", + "Tsaile", + "Crystal Falls", + "Walnut Grove", + "Grayson", + "Wakefield", + "Valencia", + "Panama", + "Capron", + "Leupp", + "Clarendon", + "Callahan", + "Velda City", + "La Croft", + "Okawville", + "Skidmore", + "Lake Marcel-Stillwater", + "Tripoli", + "Montgomery", + "Powells Crossroads", + "Geneva", + "Fairview", + "Ravenna", + "Indios", + "Redway", + "Lampeter", + "Coats Bend", + "Nashotah", + "Crane", + "Grand Marais", + "Walnut Grove", + "Minneota", + "Cottage City", + "Piney Mountain", + "Lavalette", + "Rutledge", + "Dunlap", + "Sheridan", + "Lower Lake", + "Farmingdale", + "Lake Riverside", + "Charlack", + "Barker Heights", + "Pioche", + "Nora Springs", + "Willacoochee", + "Uintah", + "Woodville", + "Emory", + "Kinsley", + "Mansura", + "Ferndale", + "Woodbine", + "Frenchtown", + "Rosenhayn", + "Monroeville", + "Enigma", + "Beechwood Village", + "Sneedville", + "Beaver Dam", + "Hughestown", + "Rosebud", + "Gueydan", + "Spring Valley", + "Elmore", + "Munford", + "Plano", + "Tangent", + "Owensville", + "Newville", + "Cerro Gordo", + "Winthrop", + "Inglis", + "Eagle Butte", + "Clarksville", + "Blair", + "Carbonville", + `Prince's Lakes`, + "Trafalgar", + "Hazen", + "Parker City", + "Byers", + "Robersonville", + "Hayden", + "Lambert", + "Johnson City", + "Shell Ridge", + "Forreston", + "Monroeville", + "Hartford", + "Claypool Hill", + "Penn Valley", + "Chapman", + "Morristown", + "Wood River", + "Winnebago", + "Sublette", + "Tioga", + "Robins AFB", + "New Rockford", + "Sea Bright", + "Sperry", + "Cresson", + "Park River", + "Stottville", + "Claysburg", + "Weissport East", + "Hayfield", + "Marshall", + "Phillips", + "Manson", + "Aragon", + "Advance", + "Wymore", + "Wade", + "North Utica", + "Shokan", + "Lincolndale", + "Dauphin Island", + "Ruckersville", + "Milan", + "Inman", + "The Galena Territory", + "Miller", + "Mogul", + "New Berlin", + "Fincastle", + "Tye", + "Thermal", + "Lanark", + "Robinhood", + "Beverly", + "Tennessee Ridge", + "Earlington", + "Litchfield", + "Okarche", + "Funny River", + "Bridgeport", + "Nokesville", + "Oriskany", + "Redstone Arsenal", + "Brookside", + "Laverne", + "Stone Ridge", + "Saranac", + "Crooks", + "Forest Meadows", + "Forest Lake", + "Pine Knoll Shores", + "Arlington", + "Flemington", + "Orangeville", + "South Uniontown", + "Morrow", + "Iva", + "West Alexandria", + "Mullens", + "Appleton", + "Pocono Springs", + "Blowing Rock", + "Bridgehampton", + "Lone Jack", + "Lake Holiday", + "Leesburg", + "Flippin", + "Killian", + "Minerva Park", + "Hawkins", + "China Grove", + "Yates Center", + "Clifton", + "Troy", + "Sutherland", + "Pecos", + "St. Jacob", + "Marsing", + "Honaker", + "Ruhenstroth", + "Rich Hill", + "Boston", + "Harper", + "Schuylerville", + "Frazeysburg", + "Arlington", + "Goodwater", + "West Jefferson", + "Conashaugh Lakes", + "Beaver", + "Boston Heights", + "Deville", + "Duluth", + "Bull Run Mountain Estates", + "Dysart", + "Gerald", + "Babson Park", + "Naples", + "Sharon", + "Greenfield", + "Arnolds Park", + "Loganville", + "Berry Creek", + "Port Gibson", + "Glenmora", + "Lakeview", + "Fairview Park", + "Robie Creek", + "Avila Beach", + "Maple Bluff", + "Yutan", + "Spring Hope", + "Elephant Butte", + "Webberville", + "Brickerville", + "Shell Lake", + "Pierce City", + "La Plata", + "Granville", + "Elmer", + "Taylorsville", + "Tieton", + "Harold", + "Black Creek", + "Bloomfield", + "Ranchitos del Norte", + "Cleveland", + "Louisville", + "Green Springs", + "Playita Cortada", + "Walnut", + "Siletz", + "St. Vincent College", + "Ansted", + "Nellysford", + "Carnuel", + "Clyde", + "Discovery Harbour", + "Rutherford College", + "Warren", + "Cedar Point", + "Rodney Village", + "Byron", + "Tombstone", + "Bradford", + "Independence", + "Ness City", + "Wallis", + "Glenns Ferry", + "Elroy", + "Bellevue", + "Menahga", + "Orange Grove", + "Jordan", + "Thorndale", + "Urania", + "Springville", + "Wainaku", + "Roan Mountain", + "Peach Springs", + "Cedar Glen West", + "Stryker", + "Elkhart", + "Coosada", + "Fairchilds", + "Richlandtown", + "Swede Heaven", + "Meggett", + "Waukomis", + "Central City", + "Gold Hill", + "Plattsburgh West", + "Gillett", + "Alamosa East", + "Maharishi Vedic City", + "Golden Valley", + "Herlong", + "Wathena", + "Eden", + "Milton", + "Uhland", + "Fairacres", + "Sunriver", + "Encantada-Ranchito-El Calaboz", + "Henry Fork", + "New Sharon", + "Deadwood", + "Beulaville", + "Winona", + "St. Francis", + "Prosperity", + "Lakewood Club", + "Harristown", + "Elm City", + "Hurley", + "Van Meter", + "Sundance", + "Farwell", + "Cornersville", + "Frankfort", + "Lyons", + "Livermore", + "Tok", + "Preston", + "Potomac Heights", + "Lewiston", + "Asotin", + "Fall Creek", + "Colony Park", + "Larimore", + "Browntown", + "Parshall", + "Wheaton", + "Colchester", + "Verdi", + "Buffalo", + "Von Ormy", + "Broadway", + "Seeley Lake", + "Buckeystown", + "Higganum", + "Limestone Creek", + "Latta", + "Salem", + "Crosby", + "Laingsburg", + "Roscoe", + "Hansen", + "Clintwood", + "Schall Circle", + "Newell", + "Millers Falls", + "New Union", + "Enosburg Falls", + "Kenwood Estates", + "Redkey", + "Olcott", + "Basin", + "Sistersville", + "Caraway", + "Manasota Key", + "Toughkenamon", + "Grantsburg", + "Fredonia", + "Erin", + "Bushyhead", + "Entiat", + "Falling Water", + "Paulina", + "Garrett", + "Bradenton Beach", + "Brownsboro", + "Vardaman", + "Morningside", + "Barrackville", + "Buhler", + "Benton", + "Benwood", + "Manly", + "Hays", + "Tower City", + "Snyder", + "Melville", + "Boulder", + "De Graff", + "Clara City", + "Freeman", + "Walker Valley", + "Shell Rock", + "Munday", + "Florence", + "Rock Hall", + "Clio", + "Ravenna", + "Germantown", + "Mount Hope", + "Tiltonsville", + "Britton", + "Palestine", + "Ceredo", + "Long Creek", + "Somerset", + "Wyoming", + "Breckenridge", + "Loch Sheldrake", + "Stowell", + "Osborne", + "Hewlett Harbor", + "Salix", + "Manawa", + "Hagaman", + "Buffalo", + "West Buechel", + "Dike", + "Twin Lakes", + "Cleary", + "Stuart", + "Markham", + "Starbuck", + "Middleburg", + "Enhaut", + "Goodwell", + "Río Cañas Abajo", + "Woodsboro", + "Huntsville", + "Lake Winnebago", + "Mayo", + "Waymart", + "Toluca", + "North Bend", + "Lake Medina Shores", + "Calverton Park", + "Joanna", + "Clymer", + "Lumpkin", + "Hummels Wharf", + "Spring Grove", + "Westfield", + "Heppner", + "Geary", + "Eastport", + "Otterbein", + "Waldo", + "Fairfax", + "Mount Airy", + "Chrisman", + "Nixon", + "Washburn", + "Fuig", + "Onarga", + "Point MacKenzie", + "Taft", + "Wallace", + "Mabscott", + "Palm Beach Shores", + "Roseland", + "Clear Lake", + "Craig", + "Fremont", + "Mounds", + "Midtown", + "Hemlock", + "New Brockton", + "North Charleroi", + "Del Rey", + "Pinopolis", + "Harkers Island", + "Buffalo", + "Galveston", + "Smithville", + "Lauderdale Lakes", + "Mount Hermon", + "Gnadenhutten", + "Platte", + "Morrisonville", + "Hampton", + "Cripple Creek", + "Hackleburg", + "Pastos", + "Philmont", + "Falkville", + "Nevada", + "Lumber City", + "Utica", + "Dimondale", + "Fort Valley", + "Shattuck", + "Stoneville", + "Stockton", + "Mission", + "Bloomfield", + "Rush Springs", + "Fort Clark Springs", + "Ohkay Owingeh", + "Medford", + "West Canton", + "Cottonwood", + "Hillsboro", + "Coldstream", + "Fellsburg", + "Faxon", + "Emerald Bay", + "Manchaca", + "Roland", + "Pleasant Hill", + "Chinook", + "Colbert", + "Watson", + "Wells", + "Oquawka", + "Rolla", + "Lawtell", + "Rogers", + "Palmdale", + "West Blocton", + "Moenkopi", + "Crandon Lakes", + "Rogersville", + "Barneveld", + "Farmland", + "Marmaduke", + "Clinton", + "Stockbridge", + "Barbourmeade", + "West Easton", + "Holiday Lakes", + "Brown City", + "Ontonagon", + "Grant Park", + "Goodman", + "Meadowlands", + "Arivaca Junction", + "Dickson", + "Valmeyer", + "Alton", + "Cortland West", + "Millbury", + "Mitchell", + "Fort Totten", + "LaCoste", + "Barry", + "Ellendale", + "White Sands", + "Country Club Hills", + "Milroy", + "Bethany Beach", + "Bally", + "Taylorsville", + "Mansfield", + "Blue Lake", + "Gordonsville", + "Diamond Ridge", + "Hemphill", + "Mescalero", + "Jackpot", + "Kamiah", + "Melcher-Dallas", + "Dexter", + "Muscoda", + "Dover Beaches South", + "Verplanck", + "Saticoy", + "Gregory", + "Six Shooter Canyon", + "Black River", + "Earlston", + "Fayette", + "Marion", + "Bayboro", + "Alto", + "Curtice", + "Palm Valley", + "Haverford College", + "Bethany", + "Mapleton", + "Houston", + "Cavalier", + "Edwardsburg", + "Haskins", + "Maggie Valley", + "Baltic", + "Keenesburg", + "Winterville", + "Deatsville", + "Algonquin", + "Beggs", + "Talkeetna", + "South Gull Lake", + "Cottonwood", + "Avalon", + "Kemp", + "Whitaker", + "Pinetops", + "Mississippi Valley State University", + "Fort Thompson", + "Bon Secour", + "Monteagle", + "St. David", + "Loyal", + "Roslyn Estates", + "Troy", + "Cascade-Chipita Park", + "Royalton", + "West Mountain", + "La Crosse", + "Newark", + "Lannon", + "Coon Rapids", + "Moody AFB", + "Moreland", + "Canyon Creek", + "Waitsburg", + "Sophia", + "Mahnomen", + "Martindale", + "Vienna Bend", + "Pinconning", + "Omega", + "Atkinson", + "Centre Hall", + "Averill Park", + "Ak-Chin Village", + "Zebulon", + "Ore City", + "New Vienna", + "Niverville", + "Hooper Bay", + "Marshallville", + "Cottonwood Shores", + "Terry", + "Green Valley", + "Suffield Depot", + "Telford", + "Mountain View", + "Belmont Estates", + "Tower Lakes", + "Hillcrest", + "Bevil Oaks", + "Topeka", + "Yale", + "South Coventry", + "Hurt", + "New York Mills", + "Van Vleck", + "Cohoe", + "Rancho Alegre", + "Redland", + "Fullerton", + "Iraan", + "Converse", + "Lexington", + "La Luz", + "Fowler", + "Spicer", + "Empire", + "Keedysville", + "Robbins", + "Tidmore Bend", + "Ardmore", + "Beattyville", + "Groveton", + "Riddle", + "West Leechburg", + "Homer", + "Hagerman", + "Pamplico", + "Latta", + "Jewett", + "Hazel Green", + "Mulberry", + "Greenback", + "Biglerville", + "Strawberry Point", + "Adrian", + "Salineville", + "Conway Springs", + "Atwood", + "Bowling Green", + "Harper", + "Rossville", + "Elkader", + "Shelburn", + "Brushy", + "Balfour", + "Hughes", + "Arcola", + "Callender", + "Clear Lake Shores", + "Geronimo", + "Oran", + "Courtland", + "Harbor Isle", + "Brush Fork", + "Sandoval", + "Waterville", + "Victoria", + "Bethesda", + "Rison", + "Las Quintas Fronterizas", + "Scottville", + "Onancock", + "Weber City", + "Warren", + "Meadview", + "Auburn", + "Mantorville", + "Claude", + "Byhalia", + "Halifax", + "Basin City", + "Newburg", + "Ola", + "Clinton", + "Palmona Park", + "Fulda", + "Diaz", + "DeLisle", + "Clearview Acres", + "Newcastle", + "Heidelberg", + "Harmony", + "Highland", + "China", + "Iola", + "Bogart", + "Pasatiempo", + "Paincourtville", + "Theresa", + "Beach Haven", + "Pocono Ranch Lands", + "Renovo", + "Harbor Springs", + "Highpoint", + "McCaysville", + "Cayuco", + "Hanover", + "Due West", + "Maysville", + "Coleman", + "Hallstead", + "Monticello", + "Archie", + "Molino", + "Wetumka", + "Ames", + "Glenwood City", + "Marthasville", + "Burlington", + "North Apollo", + "New Madison", + "Hillside Lake", + "César Chávez", + "Barataria", + "Avilla", + "Spur", + "Geneva-on-the-Lake", + "Newark", + "Morton", + "Surf City", + "Kurtistown", + "Laytonville", + "Archer", + "Byng", + "Alto", + "Thomas", + "Konawa", + "Locust Fork", + "Lake Telemark", + "Kenbridge", + "Charlestown", + "Broxton", + "Crocker", + "Haliimaile", + "Ashaway", + "Kenton", + "Ladd", + "Brightwood", + "St. Martins", + "Grizzly Flats", + "Laurel Hill", + "Lincoln", + "Waverly", + "Woodbury Center", + "Drain", + "Hoxie", + "Harriston", + "St. Anne", + "Gilbert Creek", + "Atoka", + "Shullsburg", + "Oyster Creek", + "Plainview", + "Elwood", + "Maricopa", + "Tyhee", + "Plymptonville", + "Hanna City", + "Franklin Springs", + "Edmore", + "French Settlement", + "Rincón", + "Grand Meadow", + "Rock Port", + "Sidney", + "Ashland", + "Loretto", + "Helena", + "Minier", + "Stearns", + "Blue Jay", + "Lake Michigan Beach", + "Gretna", + "Toledo", + "Velva", + "Weston Mills", + "Kensington", + "Sulphur Springs", + "Port Byron", + "Renville", + "Irvington", + "Dalton", + "Como", + "Muniz", + "Logan Elm Village", + "Haven", + "Many Farms", + "Dilkon", + "Franklinville", + "Kent City", + "Clay", + "East Sumter", + "Battle Creek", + "Richfield Springs", + "Tornado", + "Boswell", + "Silver Grove", + "Harris", + "Malaga", + "Mariposa", + "Saucier", + "Kingston", + "El Rancho", + "Hebron", + "Curtisville", + "Chatom", + "Cornwells Heights", + "Hayes", + "Georgetown", + "New Richland", + "Howey-in-the-Hills", + "West Fairview", + "Anderson Island", + "Lincoln Center", + "Valley Mills", + "New Waterford", + "Apple Creek", + "Brodhead", + "Axis", + "Westfield Center", + "Oakland", + "Beaverton", + "Baltic", + "Comer", + "Holly Hill", + "Bear Creek", + "Marion", + "Chico", + "Quinnesec", + "Coto Norte", + "Hebron Estates", + "Williamsburg", + "Goodhue", + "Memphis", + "Bray", + "Krotz Springs", + "Knightsen", + "Claypool", + "Buchanan", + "Hurley", + "St. John", + "Reno", + "Stanberry", + "Oologah", + "Palenville", + "Bowling Green", + "Tatamy", + "Sabana Eneas", + "Vienna", + "Boley", + "Buchanan", + "Madison Lake", + "Shell Valley", + "Lemmon", + "Dryden", + "Lowell", + "Jeffersonville", + "Ama", + "Springmont", + "Milford", + "Christiana", + "Woodacre", + "Holland", + "Duboistown", + "Animas", + "Coburg", + "Wisner", + "Frankston", + "Cuba", + "New Summerfield", + "Farm Loop", + "Little Rock", + "Marion", + "Silverhill", + "Rose Lodge", + "Duncan Falls", + "Nicollet", + "Yosemite Valley", + "Kingston", + "Terrytown", + "Mooreland", + "Yamhill", + "Princeton", + "Hometown", + "Paris", + "Roseboro", + "Factoryville", + "Hawi", + "Fountain Green", + "Clarksville", + "Stiles", + "Leadwood", + "North Ballston Spa", + "Bellefonte", + "West Mayfield", + "Central High", + "Goodman", + "Sunnyside-Tahoe City", + "Wiggins", + "Duncansville", + "Bellerose", + "Pleasanton", + "Hyde", + "Boling", + "Dutch Island", + "Burwell", + "Coldstream", + "Cascade Locks", + "Ucon", + "Toulon", + "West Crossett", + "Marshallton", + "Lecompte", + "Sibley", + "Millbourne", + "Ehrenberg", + "Homer", + "Pine Bluffs", + "Pine Island", + "Albany", + "Hiram", + "Ponderosa Pine", + "Wellsville", + "Bratenahl", + "Doña Ana", + "Atwood", + "Tahoe Vista", + "Malta", + "Long Beach", + "Conehatta", + "Botkins", + "Colfax", + "Lake Secession", + "Colon", + "Advance", + "Palm Shores", + "Mapleton", + "Leetsdale", + "Ponderay", + "Coal Fork", + "Panaca", + "Yellville", + "Oglethorpe", + "Remington", + "Hettinger", + "Emory", + "Midway", + "Fort Deposit", + "Tresckow", + "Dulac", + "Hastings", + "Lake Lure", + "Lamar", + "West Chatham", + "Frisco City", + "Port Orford", + "Valley Falls", + "Hawley", + "Ship Bottom", + "Elbow Lake", + "Taos", + "Lyles", + "Ohatchee", + "Towaoc", + "Elkhorn", + "Cloverport", + "Ranchos Penitas West", + "Grabill", + "Clarkton", + "Lucama", + "Julesburg", + "Republic", + "Webster", + "Windsor", + "Norris City", + "San Antonito", + "Griggsville", + "Great Neck Gardens", + "Whitehall", + "Navarre Beach", + "Barnsdall", + "Southmont", + "Nortonville", + "Lindsay", + "Oxford", + "Monongah", + "Yarrow Point", + "Big River", + "Fruitport", + "Banner Elk", + "Riverside", + "Helena Flats", + "Augusta", + "Mineral Springs", + "Bingham Farms", + "Andalusia", + "Bronson", + "Reedsville", + "Garretson", + "Gilbert", + "Union Springs", + "Third Lake", + "Kellyville", + "Bayou Country Club", + "Tenaha", + "Chester Gap", + "Minturn", + "Alpaugh", + "Grass Lake", + "Hasley Canyon", + "Gorman", + "Athena", + "Elk Run Heights", + "Killdeer", + "Camargo", + "Fletcher", + "Boonville", + "La Harpe", + "Palo Cedro", + "Redby", + "McKinney Acres", + "Banks Springs", + "Mount Gilead", + "Woodworth", + "Villisca", + "Skyland Estates", + "Alma", + "Fowler", + "Meeker", + "Elton", + "Bradford Woods", + "Mountain Ranch", + "Nahunta", + "Langley", + "Gerber", + "Light Oak", + "Covelo", + "Kempner", + "Oakland", + "Camanche North Shore", + "Stromsburg", + "Greenwood", + "Great Bend", + "Washington", + "Marcellus", + "Plains", + "Payne", + "Birchwood Lakes", + "Okeene", + "Runge", + "Lorenzo", + "Weeki Wachee Gardens", + "Southmayd", + "Lapwai", + "Plantersville", + "Springville", + "Andrews", + "Matheny", + "Sardinia", + "Kettleman City", + "Yemassee", + "South Henderson", + "Owyhee", + "Rocksprings", + "La Monte", + "Gruver", + "Pheasant Run", + "Albers", + "Dane", + "Lake Koshkonong", + "Forrest", + "Cole Camp", + "Oolitic", + "Sea Ranch", + "Timpson", + "Acalanes Ridge", + "Horine", + "Culebra", + "Fairbank", + "Heritage Creek", + "Waelder", + "Pierce", + "Johnstonville", + "Petersburg", + "Red Boiling Springs", + "Baxter", + "Kaaawa", + "Fairfax", + "Cordry Sweetwater Lakes", + "Satanta", + "North Grosvenor Dale", + "Cool Valley", + "Stevensville", + "Big Rock", + "Mifflinville", + "Yalaha", + "Cavetown", + "Mechanicsville", + "Midway", + "Woodland Heights", + "Alamo", + "Purdy", + "Petersburg", + "Liborio Negrón Torres", + "Boyceville", + "Calvert", + "Dellwood", + "Lone Oak", + "Dale", + "Belle", + "Warrensburg", + "Lubeck", + "Clear Lake", + "Edgerton", + "St. Michaels", + "Rock Island", + "Sabana", + "Ransom Canyon", + "Rossville", + "Daisetta", + "Edina", + "Guernsey", + "Joseph", + "Arbon Valley", + "Wamac", + "Randolph AFB", + "Lake Park", + "Wallenpaupack Lake Estates", + "New Market", + "Santa Margarita", + "Tonasket", + "Liberty Center", + "Ansonia", + "Pigeon", + "Laurens", + "St. Ansgar", + "Knox City", + "South Windham", + "La Cygne", + "Russiaville", + "Atwater", + "Puget Island", + "Gholson", + "Lemannville", + "Schaefferstown", + "Lexington", + "Crescent Beach", + "Royalton", + "Hamilton", + "Shafer", + "Garrochales", + "Arizona Village", + "Twin Lakes", + "Point Roberts", + "Parachute", + "Chatsworth", + "Sykesville", + "Rosharon", + "Phillipsburg", + "Central City", + "Grant", + "Malvern", + "Siesta Shores", + "Mexico Beach", + "Lewisville", + "Simpson", + "Hill Country Village", + "Kenwood", + "Greenup", + "Wooster", + "Georgetown", + "Macon", + "Cashton", + "Riverview", + "Clint", + "Billings", + "Mantachie", + "Carson City", + "Marbleton", + "Quebrada del Agua", + "Wildwood", + "Craig Beach", + "Westhaven-Moonstone", + "Prospect", + "Energy", + "Catawba", + "Roslyn Harbor", + "Mountain City", + "Mucarabones", + "Bouse", + "Pender", + "Merryville", + "Maineville", + "Walnut Creek", + "Riceville", + "Highland", + "Lenape Heights", + "Pandora", + "Lonaconing", + "Olinda", + "Lakeview", + "Gilcrest", + "Glidden", + "Sheffield", + "Burt", + "Divernon", + "Tornillo", + "South Barre", + "Fairmead", + "Akron", + "Dash Point", + "Union Hall", + "Dooms", + "Taft Mosswood", + "Caddo", + "Cayuga", + "Rockford", + "East Conemaugh", + "Sweetser", + "Browns Point", + "Glasgow", + "Ellport", + "Clear Lake", + "Elwood", + "Rochelle", + "Rosendale Hamlet", + "Leonville", + "Floyd Hill", + "Redwater", + "Gratton", + "Peabody", + "Continental", + "Cedarville", + "Jonestown", + "White Haven", + "Clendenin", + "Danvers", + "Lost Creek", + "Fort Davis", + "Princeton", + "Big Bass Lake", + "Ash Flat", + "Vinco", + "Despard", + "Point Marion", + "Nashville", + "Brookneal", + "Fort Dick", + "Hotevilla-Bacavi", + "Inverness", + "Eagle", + "Hebron", + "Mansfield", + "Yoncalla", + "Clay", + "Dover Plains", + "Louisville", + "Anton", + "Berry", + "Somers", + "Weeping Water", + "Andover", + "Powers Lake", + "Stover", + "Paducah", + "Clay City", + "Morocco", + "Chapmanville", + "Ray City", + "White Plains", + "Avonia", + "Kyle", + "South Pekin", + "Camp Point", + "Atwater", + "Markle", + "Ballard", + "Lowellville", + "Challis", + "Livingston Manor", + "Shell Knob", + "Strum", + "West Kittanning", + "Winter Park", + "Coyote Acres", + "Frederic", + "Steele", + "Winfield", + "Ogden Dunes", + "Glenvar", + "Oakfield", + "Oakland", + "Martinsville", + "Hoopers Creek", + "Erie", + "Sherburn", + "Creighton", + "Occoquan", + "Foster Brook", + "West Hills", + "Hebron", + "Boise City", + "Shandon", + "Pueblito del Río", + "Lake View", + "Talihina", + "Jefferson Heights", + "Glasgow", + "Moorcroft", + "Bayard", + "South Corning", + "Bull Valley", + "Thomasboro", + "Buena", + "Pylesville", + "Brooksville", + "Dierks", + "Washburn", + "Marianne", + "Hilbert", + "Pembroke", + "Gettysburg", + "Maysville", + "Tivoli", + "Tom Bean", + "Spring City", + "Van Wyck", + "Appleton City", + "Coulee Dam", + "Luttrell", + "Little Round Lake", + "Baldwin", + "Elgin", + "Remerton", + "Jamaica Beach", + "Wanamingo", + "Ryland Heights", + "Crowley Lake", + "Conrad", + "Athens", + "New Columbia", + "Chevak", + "Daniel", + "Shawneetown", + "Hackberry", + "Captains Cove", + "Galeton", + "Piney View", + "Rennerdale", + "Milesburg", + "Caliente", + "Plymouth", + "Stedman", + "Pacific City", + "Cochranton", + "Maxwell", + "Mooreville", + "Marion Center", + "Lake St. Croix Beach", + "Rio Vista", + "Laguna", + "Palouse", + "Hustisford", + "Indian Hills", + "Millersport", + "Estherwood", + "Oak Grove Heights", + "Williamsport", + "Bolinas", + "Belview", + "Blue Mound", + "Flat Lick", + "New Waverly", + "Susitna North", + "Punaluu", + "Phil Campbell", + "West Park", + "Farmersburg", + "Cave Spring", + "Edinburg", + "Angel Fire", + "Bradbury", + "Ashippun", + "Forest Park", + "Tyler", + "Osceola Mills", + "Knox", + "Bear Creek", + "Dudleyville", + "Panora", + "London", + "Rutherford", + "Start", + "Altamont", + "Texico", + "Kersey", + "Palo", + "Republic", + "Bellaire", + "Assumption", + "Bloomfield", + "Cullen", + "Speers", + "Bracey", + "Bassett", + "Tiki Island", + "Sand Point", + "St. Paul", + "Flanagan", + "Cobden", + "Berryville", + "Amelia Court House", + "Powderly", + "Greene", + "Nauvoo", + "Hydesville", + "Bogata", + "Double Springs", + "Wister", + "Absarokee", + "Maud", + "Clark", + "Lydia", + "Donald", + "Hamburg", + "Elliston", + "Choctaw", + "Washington", + "Los Indios", + "Warren", + "Goreville", + "Skagway", + "Holgate", + "Convoy", + "Chadwicks", + "Humansville", + "Lake Shore", + "Meadow View", + "Caledonia", + "Prospect", + "Cherry Tree", + "Quinter", + "Oskaloosa", + "Cando", + "South Shore", + "Lilbourn", + "New Franklin", + "Grandview", + "Upton", + "Riner", + "Franklin Park", + "Greenfields", + "Falls City", + "Shelton", + "Skyline-Ganipa", + "Clayton", + "Marcus", + "Ordway", + "Catahoula", + "Shinglehouse", + "Homestead Base", + "Stillman Valley", + "Tuscarawas", + "Penhook", + "New Hope", + "De Smet", + "Aurora", + "Port Republic", + "St. Paul", + "Greenville", + "Northfield", + "Highlandville", + "Tioga", + "Bessemer", + "Luck", + "Hector", + "Deltaville", + "Ashton", + "Roscommon", + "Aplington", + "Canaan", + "Lake Nebagamon", + "Neah Bay", + "Garrett Park", + "Baxter Estates", + "Keuka Park", + "Queen Anne", + "Frankfort", + "Gifford", + "Robert Lee", + "Grand Coulee", + "Hamlin", + "Norlina", + "Sidney", + "New Hartford Center", + "Ninnekah", + "Mountainhome", + "Strodes Mills", + "Rawls Springs", + "Campti", + "Arnaudville", + "Califon", + "McClellan Park", + "Amherst", + "Martin", + "Fyffe", + "Auxier", + "Lakeview", + "Wolcottville", + "Dodson Branch", + "Reading", + "Luckey", + "McLeansville", + "Beach", + "Saylorsburg", + "Maud", + "Alamance", + "Truman", + "Foxfire", + "George", + "Rainbow City", + "Ranchester", + "Fairfield Beach", + "Worden", + "Akutan", + "Obion", + "Elwood", + "St. Michaels", + "Concord", + "Lakeville", + "Parklawn", + "Aurora", + "Mound City", + "Crocker", + "Clermont", + "Town Creek", + "Newport", + "Ridgway", + "Rio", + "Helena West Side", + "Eden Valley", + "East Gull Lake", + "Asherton", + "Eagle Lake", + "Port Norris", + "Ecru", + "Riesel", + "Apalachin", + "Sweet Home", + "Poseyville", + "Candelero Arriba", + "Wolfhurst", + "Astoria", + "Westfield", + "Knights Landing", + "Kissee Mills", + "Churchill", + "Lompico", + "Gorman", + "Chauncey", + "Egypt", + "Ouray", + "Taylors Falls", + "Milford Square", + "Island City", + "Point Venture", + "Riverdale Park", + "Carlton", + "Thornton", + "Sunman", + "Fairhope", + "Maypearl", + "Wakeman", + "Hill City", + "Potter Lake", + "New Bedford", + "Rosendale", + "Meigs", + "New Philadelphia", + "Fairland", + "Belle Vernon", + "Horatio", + "Fanning Springs", + "Arp", + "St. Jo", + "Velda Village Hills", + "Central City", + "Melville", + "Plummer", + "Kibler", + "Alexandria Bay", + "Wink", + "Newark", + "Castle Hayne", + "Celoron", + "Lynn", + "Luxora", + "University Heights", + "Lovington", + "Abbottstown", + "Point Lookout", + "Wurtland", + "Schurz", + "Glandorf", + "Cascade", + "De Soto", + "Pen Mar", + "Rhodhiss", + "Dickeyville", + "Lily Lake", + "Callender Lake", + "Groveton", + "Pocono Pines", + "Parker", + "Overbrook", + "Riverside", + "Lake Waynoka", + "Royalton", + "Bolivar", + "Paradise", + "Delevan", + "Mallory", + "Tyndall", + "Lincoln", + "Lyndon", + "Thompson", + "Pierceton", + "Plains", + "Kenmare", + "Hart", + "Afton", + "Mantua", + "Gaston", + "Beale AFB", + "Watterson Park", + "McCloud", + "Baudette", + "Altamont", + "Cape Charles", + "Heath Springs", + "San Pablo", + "Julian", + "Plandome Heights", + "Chetopa", + "Silverado Resort", + "Bradner", + "Kingston", + "Shongopovi", + "Elkhart Lake", + "María Antonia", + "Gray", + "Friars Point", + "Walton", + "Cedar Ridge", + "Dasher", + "Danville", + "Seabrook Beach", + "Browning", + "Rosiclare", + "New London", + "Rapids", + "Yoe", + "Peggs", + "Oilton", + "Quogue", + "Colfax", + "Keewatin", + "Leesburg", + "Grimsley", + "Eclectic", + "Alleghenyville", + "Alexandria", + "Edinburg", + "Belfield", + "Pinesdale", + "Palmer", + "Ramsey", + "Coal Hill", + "Lemont Furnace", + "Cyril", + "Cobb", + "Red Lick", + "Seelyville", + "Goshen", + "Enterprise", + "Odin", + "Willards", + "Wilhoit", + "Cherokee", + "Richton", + "Beckemeyer", + "Tesuque", + "Thornville", + "Waldo", + "Eddyville", + "McCullom Lake", + "North Bonneville", + "Santa Anna", + "North English", + "De Kalb", + "Worthing", + "Eustace", + "North Branch", + "Winfield", + "New Cumberland", + "Masaryktown", + "Winchester", + "Vander", + "Salcha", + "Pala", + "Rushmere", + "Mount Ida", + "Chalfant", + "Tilghman Island", + "Edwards", + "Yorkville", + "Wanatah", + "South Waverly", + "Grand Rapids", + "Tolar", + "Casa Blanca", + "Talmage", + "Tuttletown", + "Pennsboro", + "Farmersville", + "Beaverdale", + "Lakeview", + "Cambridge", + "McConnellsburg", + "Sultana", + "Audubon Park", + "Scio", + "Electric City", + "Cedar Bluff", + "Manassa", + "West Cape May", + "Halsey", + "Trappe", + "Bude", + "Clarks", + "King Cove", + "Solomon", + "McAlisterville", + "Cove Creek", + "Bronte", + "Erick", + "Hulmeville", + "Shady Point", + "Falls Creek", + "Lucerne Mines", + "East Marion", + "Oxford", + "Enlow", + "Washington Boro", + "Nickerson", + "Sedan", + "St. George", + "Wattsville", + "Greenwood", + "Columbus", + "Morrisonville", + "Sterling City", + "Hideout", + "Parkers Prairie", + "Millington", + "Ladoga", + "Waverly", + "Thornport", + "Dexter", + "Scobey", + "Wortham", + "Athens", + "Pastoria", + "Lakeport", + "Pickens", + "Highland", + "Spring Glen", + "Morristown", + "Chumuckla", + "Maringouin", + "Chelyan", + "Doe Run", + "La Union", + "Aspen Park", + "Ennis", + "Albany", + `Martin's Additions`, + "Urbancrest", + "Poipu", + "Round Hill Village", + "Libertytown", + "Kidron", + "Wayne City", + "West Kennebunk", + "Rowland", + "King City", + "Chama", + "Burgin", + "Littleville", + "Almedia", + "Salamatof", + "Penryn", + "Turtle Lake", + "Ilwaco", + "Parkin", + "Rockwell", + "Hawesville", + "Goodland", + "Payson", + "Rolling Hills", + "New Salem", + "March ARB", + "Tabor", + "Wittenberg", + "Saddle Rock", + "North Randall", + "Sutton", + "Macy", + "Greenfield", + "Frankford", + "Sloan", + "Andale", + "Caldwell", + "New London", + "Harmony", + "Greene", + "Sanborn", + "Harlowton", + "Montezuma", + "Sedillo", + "Muldraugh", + "Cross Plains", + "Blue Mounds", + "Goodfield", + "Ruch", + "Janesville", + "Gulf Stream", + "Quinton", + "East Tawakoni", + "Henderson", + "Quebrada", + "Kittery Point", + "Tumbling Shoals", + "Lookingglass", + "Chums Corner", + "Etna", + "Hollywood", + "Seneca", + "Morgantown", + "Ironville", + "Lime Ridge", + "Cooleemee", + "Summitville", + "Hillburn", + "Milford", + "Fruitland", + "Balsam Lake", + "Taft Southwest", + "Coyne Center", + "Highlands", + "Beach City", + "Squirrel Mountain Valley", + "Mustang Ridge", + "Choudrant", + "Ashley", + "Machias", + "Westlake Corner", + "Omaha", + "Bristol", + "Chevy Chase View", + "Stoneboro", + "Fort Calhoun", + "Fairton", + "Millport", + "Ganado", + "Lawton", + "Boyce", + "Accoville", + "Taylorsville", + "Whitewood", + "Scotts Hill", + "Logan", + "Henefer", + "Lazy Acres", + "Lightstreet", + "Linton", + "San Miguel", + "Bradford", + "Sunflower", + "Palo Alto", + "Tulelake", + "Auxvasse", + "Kootenai", + "Cane Savannah", + "Elsie", + "Ellerbe", + "Mexico", + "Bay Head", + "Monte Rio", + "Paullina", + "Sterrett", + "Hightsville", + "Thrall", + "Bennet", + "Linesville", + "Corvallis", + "Arapahoe", + "Lawrence", + "Belmont", + "Clarence", + "McGraw", + "Stonewall", + "Wanblee", + "Buffalo Soapstone", + "Kaumakani", + "Napoleon", + "Derma", + "Rice", + "Poca", + "Alcorn State University", + "Bluewater", + "Tahoma", + "Dunlap", + "Roberta", + "Allison", + "Loup City", + "St. Joseph", + "Buhl", + "Laurys Station", + "Shellsburg", + "Sunrise Lake", + "Jasper", + "Meredosia", + "Gideon", + "Earth", + "Keota", + "Papaikou", + "Chebanse", + "Franklin", + "Jamesport", + "Oil City", + "Laurel", + "South Lebanon", + "Scotland", + "Wolcott", + "Biwabik", + "Collinsburg", + "Mentone", + "Cleone", + "Westley", + "Healy", + "Sunnyside", + "Chase", + "Mazon", + "Powell", + "Woodlawn Park", + "Rapids City", + "Laurie", + "Aynor", + "Herald", + "Mill Neck", + "Dillon", + "Mount Vernon", + "Bremond", + "Marion", + "Houston", + "Hagan", + "Genesee", + "Green Lake", + "Springville", + "Vanceboro", + "Treynor", + "Friend", + "White Mills", + "Metcalfe", + "Montezuma", + "Troy", + "Odell", + "Leroy", + "Kittredge", + "Ottoville", + "Harvard", + "Coker", + "Atkinson", + "Lakewood Village", + "Farmington", + "Waleska", + "Beavertown", + "Newellton", + "Fort Gaines", + "Mantua", + "Dortches", + "Five Points", + "Ellsworth", + "Louise", + "Union Bridge", + "Hargill", + "Twisp", + "Mertztown", + "Coahoma", + "Magnolia", + "Sugar Notch", + "Naalehu", + "Norman Park", + "Rossville", + "Kenesaw", + "Waynetown", + "Mesa del Caballo", + "Swansea", + "Mendon", + "Blue Rapids", + "Marlinton", + "Playa Fortuna", + "Fruitdale", + "Cerrillos Hoyos", + "Calvert Beach", + "Saugatuck", + "Reynolds", + "Troy", + "Sardis", + "Fort Chiswell", + "Lynnville", + "Highland Hills", + "La Honda", + "Benjamin", + "Mammoth Spring", + "Scanlon", + "La Center", + "Dubois", + "Pleasantville", + "Gainesboro", + "Arendtsville", + "Preston", + "Oak Creek", + "Bird Island", + "West Brownsville", + "Aurelia", + "Little Falls", + "Benton", + "Roslyn", + "Parcelas Peñuelas", + "Butte Creek Canyon", + "Minkler", + "Lakeside City", + "Glasford", + "Dunnavant", + "Sequoyah", + "Vaiden", + "Aquasco", + "Ashland", + "Chicora", + "Underwood", + "Southwest City", + "Westminster", + "Poncha Springs", + "Palmyra", + "Linden", + "Faison", + "Terramuggus", + "Germanton", + "White Deer", + "Dolores", + "Maurertown", + "Brook", + "Killen", + "Ellicott", + "Norwood Court", + "Ringling", + "Lake Kathryn", + "Levan", + "Startex", + "Weleetka", + "Belwood", + "Buffalo City", + "Rafael Hernández", + "Oakland", + "Gowrie", + "Basye", + "Branchville", + "Watkins", + "Coolidge", + "Swisher", + "Hiller", + "Magnolia", + "Riley", + "Avonmore", + "Nashwauk", + "Milledgeville", + "Mountain Gate", + "La Puebla", + "Tuscarora", + "Millersburg", + "Gore", + "Hoagland", + "New Tripoli", + "Ramblewood", + "Sam Rayburn", + "Seven Mile", + "Stateline", + "Cotter", + "Onsted", + "Camp Hill", + "Bechtelsville", + "Sheldon", + "Stafford", + "Vandiver", + "Triana", + "Silver City", + "Elm Creek", + "Newport", + "Mansfield", + "Hinton", + "Blue Mountain", + "Rose Valley", + "Genoa", + "Silver Ridge", + "Ferguson", + "Boonville", + "Sturgeon", + "Shenandoah Shores", + "Strawberry", + "Russell Gardens", + "West Pelzer", + "Saegertown", + "Princeton", + "Lake Linden", + "Timberlane", + "Bernville", + "Buchanan Lake Village", + "Golden Shores", + "Collinwood", + "Plain Dealing", + "Drexel", + "Griswold", + "Wallace", + "Carrollton", + "Odebolt", + "Wayland", + "Crivitz", + "Raymond", + "Bow Mar", + "Zena", + "Goldsboro", + "Ivyland", + "Pringle", + "Homeland", + "Loma", + "Orlinda", + "Bloomfield", + "Cottonwood", + "Parcelas Nuevas", + "Spiceland", + "South Canal", + "Medford", + "Jeffersonville", + "Mansfield Center", + "Napanoch", + "McIntosh", + "Central Lake", + "New Castle", + "Zia Pueblo", + "Franklin Grove", + "Wenona", + "Magas Arriba", + "Dryden", + "Camptown", + "Gwinner", + "Parrish", + "Hydro", + "Wallace Ridge", + "Borden", + "Mason", + "Addyston", + "Cotton Valley", + "Green River", + "Carrizozo", + "Trumbauersville", + "Lamar", + "Hardin", + "Farmersville", + "Maysville", + "Grace", + "Paint", + "Sister Bay", + "Cannon Ball", + "Santa Susana", + "Lansing", + "Lake Bosworth", + "Miner", + "Utica", + "Walker", + "Clarksville City", + "Elliott", + "Burnsville", + "Talpa", + "Hondah", + "Lynnview", + "Brunswick", + "Prentiss", + "Shellman", + "Golden Beach", + "Westphalia", + "Saybrook Manor", + "Lake Quivira", + "Grandfield", + "Clarkrange", + "Le Roy", + "Coldspring", + "Eden", + "White Sulphur Springs", + "Lake of the Woods", + "Craigsville", + "Naco", + "Kiowa", + "Henning", + "Henderson", + "Palmas", + "Deer River", + "Crawford", + "Hays", + "Uniontown", + "Tilden", + "Kaanapali", + "West Point", + "Liberty", + "Cameron", + "Greens Landing", + "Hesperia", + "Jupiter Island", + "Battle Lake", + "Black Hammock", + "Linnell Camp", + "Owen", + "Jonesville", + "Ellington", + "Poquott", + "Toomsuba", + "Delta Junction", + "Boston", + "Hotchkiss", + "Pine River", + "Dagsboro", + "Summerton", + "Gun Club Estates", + "Pettit", + "Chilchinbito", + "Stockertown", + "Jolivue", + "Point", + "Foreman", + "Allen", + "Blue Ridge", + "Big Point", + "Walnut Grove", + "Hubbell", + "Pleasant Hill", + "Millerton", + "Upper Bear Creek", + "Pine Brook Hill", + "Vega", + "Wartburg", + "Old Fort", + "Alpine", + "South Ashburnham", + "Jamestown", + "Beloit", + "Philipsburg", + "Fredericksburg", + "Wyanet", + "Silver Lake", + "Black Eagle", + "DeLand Southwest", + "Fremont Hills", + "Marine", + "Millville", + "Quinby", + "Village of Clarkston", + "McClure", + "Wayne", + "Blue River", + "Appling", + "North Enid", + "Hallock", + "Minersville", + "Wakefield", + "Hopland", + "Shabbona", + "Las Croabas", + "Valders", + "Pomona Park", + "New Washington", + "Glenwillow", + "Atwood", + "Percy", + "Adelino", + "Woodville", + "Killbuck", + "Necedah", + "Garysburg", + "Helenwood", + "Pound", + "Elkhart", + "Greenleaf", + "New Bethlehem", + "Calmar", + "Sharon", + "Spring Ridge", + "Prices Fork", + "Yeagertown", + "Mahinahina", + "Laurel", + "Grant", + "Marvell", + "Red Cloud", + "Waterloo", + "Eldon", + "Warrenville", + "Marueño", + "Langdon Place", + "Goshen", + "Komatke", + "Bloomingburg", + "Waynoka", + "Port Gamble Tribal Community", + "Washington", + "Ivey", + "Leland", + "Beaumont", + "Le Grand", + "Fordoche", + "Garberville", + "Shiocton", + "Altoona", + "DeSales University", + "Mesa Verde", + "Hilltop", + "Ponca", + "Mount Olive", + "Grawn", + "Lost City", + "Coleman", + "Hiawassee", + "Swayzee", + "Clay City", + "Wessington Springs", + "Sherwood Shores", + "Garden Grove", + "Pearlington", + "Bloomville", + "Perry", + "Centuria", + "Panacea", + "Diamond", + "Tunnel Hill", + "Morrice", + "Franklin", + "High Rolls", + "Barker Ten Mile", + "Garden Plain", + "Old Field", + "Pinnacle", + "Tellico Plains", + "Marshall", + "Keystone", + "Port Royal", + "Puako", + "Ignacio", + "Keosauqua", + "Osceola", + "Waynesburg", + "Temple", + "Walhalla", + "Bayside Gardens", + "Pimaco Two", + "Fieldale", + "Centerville", + "Celeste", + "Dubach", + "Cedar Grove", + "Springer", + "East Brady", + "Howard", + "East Bernstadt", + "Slaughter", + "Grand Coteau", + "Carpendale", + "Arrington", + "Schoeneck", + "North Haverhill", + "McGill", + "Butte des Morts", + "Cattaraugus", + "Haxtun", + "Maxwell", + "Hopedale", + "Piedmont", + "Monrovia", + "Cooperstown", + "Camanche Village", + "Paraje", + "Friendsville", + "Rivesville", + "Far Hills", + "Inkom", + "Milford Center", + "Plandome Manor", + "Woodbury", + "Womens Bay", + "Dyer", + "Belmont", + "Dighton", + "Eton", + "Brady", + "Ray", + "Burlingame", + "Lake Don Pedro", + "Texhoma", + "Stanaford", + "Stratford", + "Bandera", + "Antelope", + "Anita", + "Hardin", + "Glidden", + "Wisner", + "Hide-A-Way Hills", + "Santee", + "Sandia", + "Dennehotso", + "Lake Mack-Forest Hills", + "Moulton", + "Augusta", + "Lockwood", + "Grundy", + "Gales Ferry", + "Danville", + "Ceresco", + "Chamita", + "New Baltimore", + "Sugar Grove", + "Dotsero", + "Ossineke", + "Bear River City", + "Roseville", + "Geraldine", + "McRoberts", + "Goochland", + "Seville", + "Fort Sumner", + "Kekoskee", + "Norris Canyon", + "Glendale", + "Dorris", + "Lower Brule", + "Mikes", + "White Plains", + "Athens", + "Brent", + "West Swanzey", + "Upper Lake", + "Lake Madison", + "Northwood", + "Seaman", + "Reddell", + "Sudan", + "Cottondale", + "Troy", + "Shepherd", + "Coulterville", + "Council", + "Hubbard Lake", + "Solana", + "Leakesville", + "Odessa", + "New Haven", + "Butler", + "Rupert", + "Hagerman", + "Empire City", + "Annville", + "Williamsdale", + "Independence", + "North Haven", + "La Grange", + "Bodega", + "Garrett", + "McKenna", + "Albany", + "Iron Ridge", + "Pasadena Hills", + "Larchwood", + "Neola", + "Ipswich", + "Ashton", + "Wishek", + "Clinton", + "Memphis", + "Randolph", + "Whitewater", + "Whitney Point", + "Elkhorn City", + "Pinon", + "Rouzerville", + "Carthage", + "Morrill", + "Diablo Grande", + "Pembroke", + "Curtis", + "Lake Ketchum", + "Allenton", + "Montandon", + "Viola", + "Aguila", + "Lobelville", + "Bowman", + "Shirley", + "Avella", + "Church Rock", + "Sanford", + "Plainview", + "Lebo", + "Ivalee", + "Clarkson", + "Lake Tanglewood", + "North Tunica", + "Bellemeade", + "Parker Strip", + "Truesdale", + "Greenleaf", + "Fort Lawn", + "North Key Largo", + "Adairville", + "Hankinson", + "Shelby", + "Mayville", + "Seabeck", + "Fuller Acres", + "Grant", + "North Perry", + "Gallatin Gateway", + "Simonton", + "Bowmanstown", + `Port O'Connor`, + "Welcome", + "LaMoure", + "Medley", + "Central", + "Utica", + "Monroe", + "Allenwood", + "Pleasureville", + "Birchwood Village", + "Elk Mound", + "Baroda", + "Elsinore", + "Fair Bluff", + "Kykotsmovi Village", + "Tilden", + "Dixon", + "Rimersburg", + "Cimarron", + "Teviston", + "Cassville", + "Indian Springs", + "Fieldbrook", + "Lilly", + "Munds Park", + "Arco", + "Galatia", + "Millheim", + "North Edwards", + "Mi-Wuk Village", + "Las Ochenta", + "Rushville", + "Americus", + "Blende", + "Gardiner", + "Delton", + "Fouke", + "Magdalena", + "Crescent", + "Soda Bay", + "Oklahoma", + "Kapp Heights", + "Gibsland", + "Kirby", + "Milltown", + "Roachdale", + "Mountain Village", + "Argenta", + "Prairie City", + "West Point", + "Quapaw", + "Mount Crested Butte", + "Durhamville", + "Galva", + "Cactus Forest", + "Wall", + "Adair Village", + "Patagonia", + "Mosses", + "Dover", + "Reid Hope King", + "Arcadia Lakes", + "Brilliant", + "Garrison", + "Benton", + "Lake Waukomis", + "Mountainair", + "Wheatfield", + "Gaston", + "Leeds", + "North Bend", + "Miles", + "Denali Park", + "Cleveland", + "Dugger", + "Centerville", + "Long Grove", + "Savoy", + "Dallas City", + "Grand Ridge", + "Benton", + "Autaugaville", + "Houck", + "Whitecone", + "Farwell", + "Funkstown", + "Cashion", + "Poulan", + "Montreat", + "Trinidad", + "Rockaway Beach", + "Deer Park", + "Gloster", + "East Bank", + "St. Mary of the Woods", + "Orocovis", + "Linn Valley", + "Walnut Springs", + "Airport Drive", + "Victor", + "Tilghmanton", + "Reeds Spring", + "Superior", + "Black Diamond", + "Dresser", + "Blue Hill", + "Hingham", + "New Knoxville", + "Bajandas", + "Inverness", + "Knik River", + "Silkworth", + "Matamoras", + "Grantsville", + "Port Trevorton", + "Morehouse", + "St. Stephen", + "Dorchester", + "Graniteville", + "Tunica", + "Onamia", + "Fairview", + "Marblehead", + "Hamden", + "Harwick", + "Ventress", + "St. George Island", + "Sheffield", + "Rib Lake", + "Albany", + "Stony Creek Mills", + "Elkville", + "Cottonwood Falls", + "Belmont", + "Jennings", + "Decaturville", + "Folsom", + "Darbydale", + "Darlington", + "Scranton", + "Mannsville", + "Fountain City", + "Vineland", + "Attica", + "Lometa", + "Dibble", + "East Mountain", + "Walnut Creek", + "Midway", + "Edgewood", + "Sciotodale", + "Oriental", + `Chain O' Lakes`, + "Wilbur", + "Lake Panorama", + "Burrton", + "Brantleyville", + "Lake Santee", + "West Siloam Springs", + "Arlington", + "Hi-Nella", + "Taylortown", + "Newhall", + "Sodus Point", + "Harrisville", + "Felicity", + "Gladbrook", + "Bearden", + "Rocky Ridge", + "Walker", + "Schleswig", + "Hyndman", + "Moreauville", + "Lincoln", + "Deerfield", + "Grantwood Village", + "New Preston", + "Vista West", + "Greers Ferry", + "Hillside", + "Paxton", + "Marion", + "Export", + "Primghar", + "Mendocino", + "Buffalo Center", + "West Winfield", + "Merrill", + "Seiling", + "Indian Lake", + "Oakland", + "La Fargeville", + "Silverdale", + "Plantation", + "Donnellson", + "McBee", + "Oljato-Monument Valley", + "Woodmere", + "Tangipahoa", + "East Tulare Villa", + "Chester", + "Dollar Bay", + "Rio", + "Dewar", + "Lake Arrowhead", + "Lasara", + "Brandon", + "Annawan", + "Wiley Ford", + "Pine Hill", + "Rockford", + "Newell", + "Riegelsville", + "Rocky Boy West", + "New Holland", + "White Swan", + "Rankin", + "West Salem", + "Woodsville", + "Alamo", + "St. Paul", + "Longport", + "Mendon", + "Bunker Hill", + "Blacklake", + "Lenox", + "Indian Springs", + "White Plains", + "Mignon", + "Sunol", + "Mission", + "Spaulding", + "Winthrop", + "Gouldsboro", + "Dunkerton", + "Maywood Park", + "Inwood", + "Star", + "Frederica", + "Chappell", + "McLouth", + "Mount Jewett", + "Log Lane Village", + "Inman Mills", + "Colcord", + "South Wallins", + "Madisonville", + "Talbotton", + "Pentwater", + "Neffs", + "Paw Paw", + "Naches", + "Hailesboro", + "Stonington", + "Puxico", + "Bentleyville", + "Gassaway", + "Readlyn", + "Fordland", + "Braymer", + "Lilydale", + "Cobb Island", + "Caspian", + "Maguayo", + "Sentinel", + "Crenshaw", + "Greenville", + "Valley View", + "Ruston", + "Mazeppa", + "Heidlersburg", + "Huntland", + "Summerland", + "Isleton", + "Lake Latonka", + "Hackett", + "Elephant Head", + "Happy Camp", + "Fincastle", + "Bruno", + "Sanford", + "Apple Valley", + "Rich Square", + "Gratis", + "Minor", + "Forest Hill", + "Pellston", + "Witt", + "Burnside", + "Cameron", + "Betances", + "Osceola", + "Paris", + "Illiopolis", + "Rutledge", + "South Fork", + "Gayle Mill", + "Kenansville", + "Seligman", + "Laurel Park", + "Togiak", + "Lake Victoria", + "Potrero", + "Eastover", + "Crystal Springs", + "Selawik", + "Malott", + "Maben", + "Harmony", + "Dunkirk", + "Morgan", + "Emily", + "Riegelwood", + "South Weldon", + "Lumberport", + "Armstrong", + "Loreauville", + "Alger", + "Dobbins Heights", + "Bloomsbury", + "Supreme", + "McGregor", + "Jonesville", + "Teec Nos Pos", + "Trezevant", + "Waverly", + "Elizabeth", + "Snead", + "Hooper", + "Enderlin", + "Hatfield", + "Skyline", + "Lake City", + "Wagener", + `O'Donnell`, + "Wallowa", + "Ninilchik", + "Crawford", + "Plainfield", + "Rushford Village", + "Shalimar", + "Roosevelt", + "Otisville", + "Blooming Grove", + "Aspermont", + "Franklin", + "Casper Mountain", + "Orient", + "Lone Rock", + "Copperton", + "Harlem", + "Simsboro", + "Coalmont", + "Alton", + "Aurora", + "Middletown", + "Beaver Meadows", + "Pond Creek", + "Middleburg", + "Calhan", + "Royal Center", + "Gallant", + "Hazleton", + "Glasgow", + "Newman", + "Warrenton", + "Matinecock", + "Blackduck", + "Penney Farms", + "Malin", + "Pawnee City", + "Shoreham", + "Ellenboro", + "North Walpole", + "Flushing", + "Luthersville", + "Sully", + "McCammon", + "Utica", + "Spring Hill", + "Richland", + "Footville", + "Marrowstone", + "Chester Hill", + "Stoddard", + "Doniphan", + "Magazine", + "Lamboglia", + "Chula Vista", + "St. Joseph", + "New Union", + "Harwood", + "Au Gres", + "Fabrica", + "Edmundson", + "Tatum", + "Owensville", + "Brimfield", + "La Fontaine", + "Dayton", + "Onaway", + "Cheyenne Wells", + "St. Ignatius", + "Winslow", + "Pleasant Hills", + "Attica", + "Esmont", + "Crawford", + "Arena", + "Sand Springs", + `Jacksons' Gap`, + "Baconton", + "Clay City", + "New Deal", + "Pigeon Creek", + "Blue Ball", + "Coffeeville", + "Sarepta", + "Smithfield", + "Highland", + "Brownsville", + "Island Pond", + "New Berlin", + "Mortons Gap", + "Brookport", + "Holly Pond", + "Stephenson", + "Eureka", + "Crab Orchard", + "Middlesex", + "Hopedale", + "Elrod", + "Mesita", + "San Felipe", + "Dakota City", + "St. Clair", + "Norris", + "Pittsville", + "Greenville", + "Magnolia Springs", + "Juniata", + "Occidental", + "Beckville", + "Notasulga", + "Fort Loudon", + "Langley", + "Veyo", + "Roy", + "Brookfield", + "Rockford", + "Bellefonte", + "Garibaldi", + "Russellville", + "Polkville", + "Lake Andes", + "Hazelton", + "Gray Court", + "Rising Star", + "Cowiche", + "Mossyrock", + "Arlington", + "Santa Clara Pueblo", + "Rockwood", + "Pomona", + "Colo", + "Emmonak", + "Fertile", + "Belle Center", + "Claysville", + "East Camden", + "Penryn", + "Potomac Park", + "Purple Sage", + "Waynesfield", + "La Jara", + "Greenville", + "Crowell", + "Newton", + "Candor", + "Humphrey", + "Weidman", + "Lafitte", + "Redfield", + "Avoca", + "Killona", + "Woods Hole", + "Mankato", + "Syracuse", + "Friedensburg", + "Juno Ridge", + "Castalia", + "Afton", + "Wilson", + "Red Butte", + "Lime Lake", + "Silver Lake", + "Brunswick", + "Potlatch", + "Rural Valley", + "Downs", + "Sycamore", + "Atlas", + "Epps", + "Pioneer Junction", + "Park City", + "Shickshinny", + "Jetmore", + "Ringwood", + "Oakley", + "Ridge Farm", + "Pleasantville", + "Peconic", + "Van Buren", + "Gurley", + "Adair", + "La Veta", + "Altheimer", + "Argyle", + "Loch Lloyd", + "Selma", + "Oreana", + "Morgandale", + "Milltown", + "Hamel", + "Mulga", + "Riverside", + "Stone Harbor", + "Woods Bay", + "Mountain City", + "Annabella", + "Humboldt", + "East Newnan", + "Edon", + "Benton", + "Juncal", + "Fifth Ward", + "Tranquillity", + "Highfield-Cascade", + "Camden", + "Carson", + "Hilshire Village", + "Henning", + "Hilltop", + "Hartrandt", + "Parksley", + "Bowman", + "El Rito", + "Garber", + "Lyons", + "Davenport", + "Sewickley Heights", + "Marengo", + "Waverly Hall", + "Mora", + "Vaughn", + "Pineville", + "Walnut Grove", + "Hollow Creek", + "Martin Lake", + "Soudersburg", + "Faith", + "Burr Oak", + "Correctionville", + "Colver", + "South Webster", + "Joaquin", + "Aguanga", + "Dollar Point", + "Limestone", + "Junction City", + "Wellington", + "Harrison", + "Earlville", + "Lakes of the North", + "Pahoa", + "Davidsville", + "Scotland", + "Livingston", + "Orrick", + "Menan", + "Beatty", + "Lewisburg", + "Mountainaire", + "Hills", + "Carolina", + "Saltsburg", + "Resaca", + "Key Colony Beach", + "West Middlesex", + "Arapaho", + "San Ildefonso Pueblo", + "Parker", + "Bethany", + "Piedmont", + "Stamping Ground", + "Morse", + "Flordell Hills", + "Shrewsbury", + "Paragon Estates", + "Hubbard", + "Metolius", + "Mount Hope", + "Sonoita", + "Dawson", + "Dauphin", + "Flint Creek", + "Wiconsico", + "Granite", + "Ogden", + "Deer Trail", + "Kansas", + "Pineland", + "Lakeville", + "Diamond City", + "Grassflat", + "Freelandville", + "East Sparta", + "Lyons", + "Rutledge", + "Scribner", + "Vassar", + "West Union", + "Tekoa", + "Tecumseh", + "Cumby", + "Escalante", + "Lakeville", + "Smiths Grove", + "Walthill", + "Kimball", + "Darby", + "Ferrelview", + "Isle", + "East Orosi", + "Van Buren", + "Gobles", + "Elmwood", + "Francesville", + "Bromley", + "Prospect", + "Gosport", + "Hollins", + "Sunrise Beach Village", + "Cambridge", + "Brasher Falls", + "Morning Sun", + "Grazierville", + "Culbertson", + "Cedar Point", + "McLean", + "Perdido", + "Lakewood Park", + "Graettinger", + "Mackinaw City", + "Moose Creek", + "Bear Rocks", + "Zayante", + "Eden", + "Chevy Chase Section Three", + "Wedowee", + "Melbourne", + "Piney Point", + "Goshen", + "Raymond", + "Morrisdale", + "Manila", + "Roscoe", + "Lake Park", + "Cairo", + "Athol", + "Okoboji", + "Wells", + "Wadsworth", + "Clyde", + "Oxford", + "Emerson", + "Arkport", + "Hoonah", + "New Salem", + "Grant City", + "Pleasant Plains", + "Blanchardville", + "Los Olivos", + "Benkelman", + "Smithfield", + "Hilltop Lakes", + "Adams", + "Walker", + "Buras", + "Spencer", + "Minatare", + "Interlaken", + "Howe", + "Campbellsburg", + "Vass", + "Stronghurst", + "Shoals", + "East Freedom", + "Chocowinity", + "Duncan", + "Wonewoc", + "Wye", + "Wilton Center", + "Gary", + "Guy", + "North Irwin", + "Morningside", + "Clarkfield", + "Coon Valley", + "Fern Forest", + "Klawock", + "Winnebago", + "Springport", + "Turbeville", + "Horseshoe Bend", + "Stephens", + "Fairplay", + "Lake Camelot", + "Belle Terre", + "Dammeron Valley", + "Littlerock", + "Wataga", + "Hurst", + "Clayton", + "Northwest", + "Canon", + "Ubly", + "Willow Valley", + "Brinnon", + "Enterprise", + "Grapeview", + "Carrolltown", + "Bovey", + "Seven Mile", + "Yachats", + "Spearville", + "Hayneville", + "Tierra Amarilla", + "Aulander", + "Woodhull", + "Mountain Pine", + "Knippa", + "Fultonville", + "Newborn", + "Climax", + "Alhambra Valley", + "Pearl City", + "Anacoco", + "Gila Crossing", + "Byrdstown", + "Mountain Road", + "Wallace", + "Windfall City", + "Norphlet", + "Steinhatchee", + "Doyline", + "Foxfield", + "Indio Hills", + "Sheatown", + "Birnamwood", + "Manns Harbor", + "Hana", + "Pepin", + "Walnut Grove", + "Lyndonville", + "Kindred", + "Rio Grande", + "Scurry", + "Keysville", + "Allentown", + "Deckerville", + "Gibraltar", + "Beulah Valley", + "Woodsburgh", + "Meriden", + "Loon Lake", + "Alma", + "Millersburg", + "Savona", + "Marion", + "Worden", + "Branchville", + "Stantonsburg", + "Virginia City", + "Belgrade", + "Cissna Park", + "McKee", + "Greensburg", + "Riceboro", + "Beaverdale", + "Hewitt", + "Lesage", + "Netarts", + "Douglas", + "Montrose", + "Ossian", + "Middle Amana", + "Stokes", + "Alexis", + "Wagram", + "Maricao", + "Flint Hill", + "Hartford", + "Blue Ridge Manor", + "Oshkosh", + "Hugo", + "Woodridge", + "Loma Linda", + "Conway", + "Seligman", + "Marshallville", + "Wrightstown", + "Garrison", + "Baltic", + "York Springs", + "Susan Moore", + "Neopit", + "Ashland", + "Damascus", + "Dayton", + "Sawmill", + "North Hills", + "Bishopville", + "Warsaw", + "Wellston", + "Holly", + "East Galesburg", + "Siren", + "Alakanuk", + "Sanderson", + "Cheyenne", + "Happy Valley", + "Grand Junction", + "Breesport", + "Sterling", + "Hemingford", + "Lowden", + "Atlantic", + `Bailey's Prairie`, + "Somerville", + "Cedar Hill", + "Lake Village", + "Log Cabin", + "Kirklin", + "Plumerville", + "Copenhagen", + "Patoka", + "Biron", + "Forest Ranch", + "Blue Ridge Shores", + "Vernon", + "Earlville", + "Hermitage", + "Valley Brook", + "Bucklin", + "Coward", + "Screven", + "Phelps", + "Toledo", + "Vermontville", + "Valle Vista", + "Central City", + "Chalfant", + "Black Creek", + "Espino", + "Round Lake", + "Dover", + "Norvelt", + "Wall Lake", + "Walnut", + "Boswell", + "Pleasant Hill", + "Exira", + "Hanna", + "White Lake", + "Exeter", + "Schroon Lake", + "Payne Springs", + "Hanover", + "Lamberton", + "Polk", + "Brantley", + "West Concord", + "Jeffersonville", + "St. Georges", + "Quiogue", + "Finzel", + "Linden", + "Knightsville", + "Viborg", + "Kraemer", + "Ashland Heights", + "Tiskilwa", + "Raleigh", + "White Springs", + "Plain", + "May Creek", + "Philip", + "Hardy", + "Geyserville", + "Elysian", + "Eden", + "Oregon", + "Lancaster", + "Riceville", + "Cluster Springs", + "Eden Roc", + "Hannawa Falls", + "Dunseith", + "Miracle Valley", + "Sierra Blanca", + "Alanson", + "Tickfaw", + "Mamers", + "Columbiaville", + "Port Deposit", + "Powellton", + "Eagleville", + "Andersonville", + "Corinne", + "Homecroft", + "Lopatcong Overlook", + "Triadelphia", + "Garza-Salinas II", + "Kwethluk", + "Shindler", + "Kiowa", + "Milo", + "Pilot Grove", + "Throckmorton", + "Hymera", + "Moyie Springs", + "Red Cross", + "Eldred", + "Hamlet", + "Cowley", + "Sharon Springs", + "Grass Valley", + "New Site", + "Montgomery", + "Tipton", + "La Farge", + "Meadow Vale", + "Columbia", + "Braceville", + "Bixby", + "Comunas", + "Lake View", + "Essex", + "Riverdale", + "Alliance", + "Scarbro", + "Cuba", + "Diamondville", + "Howard", + "Hilltop", + "Tetherow", + "Clinton", + "Knoxville", + "Ooltewah", + "Ringtown", + "Leighton", + "Raymond", + "Upper Exeter", + "Godley", + "Fountain City", + "Misenheimer", + "Gratz", + "Cass Lake", + "Port Vincent", + "Twin Valley", + "Peru", + "Boomer", + "Kinmundy", + "Chiloquin", + "Bridger", + "Alcester", + "Hobson City", + "Patterson", + "Gibbon", + "Hedrick", + "Traver", + "Pine Lake", + "Walnut", + "Round Valley", + "Onset", + "Kasilof", + "Ravine", + "Church Hill", + "New Harmony", + "Housatonic", + "Montreal", + "Mount Calvary", + "Napoleon", + "Olympian Village", + "Orangeville", + "Fonda", + "Gettysburg", + "Point Blank", + "Robin Glen-Indiantown", + "Delaware Water Gap", + "Greenwood", + "Axtell", + "Haileyville", + "White Hall", + "Santa Clara", + "Crab Orchard", + "Slatedale", + "Hernandez", + "Loami", + "Ryan", + "Brooten", + "Hessmer", + "Mooringsport", + "Carlton", + "Piper City", + "Clarence", + "St. Nazianz", + "East Alto Bonito", + "Washingtonville", + "Atkins", + "Renningers", + "Mabel", + "Perryville", + "Ostrander", + "Iberia", + "Ashmore", + "Elkton", + "Osmond", + "Everson", + "Pray", + "Cambria", + "West Bend", + "Palatine Bridge", + "High Shoals", + "Ridge Spring", + "Greeley Hill", + "Ridgeville", + "Dublin", + "Burneyville", + "Wickes", + "Green Spring", + "Redmond", + "Renova", + "Drayton", + "Ridgway", + "Milford", + "Mount Savage", + "Antonito", + "Parcelas Viejas Borinquen", + "Driscoll", + "Concord", + "Iron Mountain Lake", + "Bainbridge", + "Estelline", + "Manilla", + "Woodruff", + "Tribune", + "Chippewa Lake", + "Atlanta", + "Cottageville", + "South Vinemont", + "Hancock", + "Carlsborg", + "Midvale", + "McLean", + "Parma", + "Sioux Rapids", + "Browerville", + "Oppelo", + "North Topsail Beach", + "Mertzon", + "Bertrand", + "Hatton", + "Maple Ridge", + "Bootjack", + "Rosedale", + "El Duende", + "Oscoda", + "Blair", + "Bingen", + "Langeloth", + "Sheridan", + "Oak Ridge", + "Galena", + "Westmoreland", + "Lott", + "Ponemah", + "Lakeshore Gardens-Hidden Acres", + "Lakeside", + "Riverton", + "Tohatchi", + "Duck Key", + "Tyrone", + "Rich Creek", + "Arlington Heights", + "Whitelaw", + "Teton", + "Clarkston", + "Section", + "Parkdale", + "Ariton", + "Hauser", + "Essex", + "Yarnell", + "Middletown", + "Amagansett", + "Tuscola", + "Indianola", + "Edgewater", + "Alden", + "Amanda", + "Marion", + "Middlebourne", + "Woodland Hills", + "New Market", + "Valliant", + "Clarkton", + "Glasgow", + "Cleveland", + "Concrete", + "Cherry Grove", + "Grand View Estates", + "Falcon Lake Estates", + "Copan", + "Ty Ty", + "Deshler", + "Stockton", + "Columbia", + "North Hornell", + "Pueblo Nuevo", + "Smithville", + "Powderly", + "Fairmount", + "Doerun", + "Ector", + "Bradford", + "Butte Valley", + "Nittany", + "Coldwater", + "Crystal Beach", + "Underwood", + "Wauzeka", + "Mountain View", + "Carbonado", + "Caseville", + "Wright City", + "Bucksport", + "Mocanaqua", + "Chilton", + "Calhoun", + "Lake Tomahawk", + "St. James", + "Montgomery", + "Anmoore", + "Smithers", + "Swifton", + "Glen Ellen", + "South Coffeyville", + "Oxford", + "Stewartsville", + "Millville", + "La Parguera", + "Concorde Hills", + "Leon", + "Niota", + `D'Hanis`, + "Hot Sulphur Springs", + "Watson", + "Branford", + "Silver Springs", + "New Market", + "Burnside", + "Marble Cliff", + "Jefferson", + "Eastborough", + "Higginson", + "Camp Wood", + "Merrill", + "Pocahontas", + "Pocono Mountain Lake Estates", + "Tucker", + "Fairdealing", + "Shelter Island Heights", + "Peña Blanca", + "Valley Springs", + "Wayne", + "Plankinton", + "Conway", + "South Range", + "Tampico", + "Altus", + "Philadelphia", + "Nevada", + "Conneautville", + "Rougemont", + "Philo", + "Napi Headquarters", + "Gilbertville", + "Sandersville", + "Landfall", + "Confluence", + "Burke", + "Bantam", + "Bethel Springs", + "Como", + "Brownstown", + "Clarks Hill", + "Highmore", + "Elkton", + "Plum Grove", + "Orleans", + "White", + "Lawtey", + "Bethlehem", + "Wyocena", + "Tekonsha", + "Rancho Chico", + "Lanesboro", + "Edenburg", + "Gould", + "Gordon", + "Wilson", + "Kreamer", + "Greenview", + "New London", + "Clay Center", + "Mott", + "Oakman", + "Lockesburg", + "Garnavillo", + "Bella Villa", + "Low Mountain", + "Whiting", + "Schaller", + "Gallipolis Ferry", + "Merrill", + "Gainesville", + "Fairfield", + "Salem", + "Delta", + "Wheatland", + "Gilberton", + "Arivaca", + "Woodville", + "Mohall", + "Jerome", + "Green Mountain Falls", + "Heuvelton", + "Morrison", + "Elizabeth", + "Winton", + "Coalville", + "Grayland", + "Gaston", + "Noonday", + "Stewardson", + "North High Shoals", + "Holdingford", + "Whitewater", + "Bulls Gap", + "Tyronza", + "Fremont", + "Koppel", + "Shipshewana", + "Búfalo", + "Berlin", + "Liberal", + "Cedar Key", + "Peletier", + "Brownton", + "Forest Junction", + "New Washington", + "Alma", + "Golden City", + "Grandview", + "Cammack Village", + "Edgemont", + "Lakeview", + "Lake Tapawingo", + "Karlstad", + "Quitman", + "Deal", + "Kansas", + "Challenge-Brownsville", + "Buckley", + "Etna", + "New Florence", + "San Jose", + "Addison", + "Ider", + "Fair Haven", + "Kadoka", + "Flemington", + "Glen Ullin", + "Perrysville", + "Welaka", + "Parmelee", + "Lyons", + "Scio", + "Cleveland", + "Kenwood", + "Plains", + "Courtdale", + "Allenhurst", + "Hinckley", + "Wilton", + "Point Hope", + "Mayesville", + "Petros", + "Pilot Knob", + "Hunting Valley", + "Tonica", + "Delft Colony", + "Pine Harbor", + "Jonesburg", + "Pateros", + "Ventura", + "Wadley", + "Avon", + "La Rue", + "West Hamlin", + "Nucla", + "Williamsburg", + "Roff", + "Mount Morris", + "Berlin Heights", + "North Philipsburg", + "Adair", + "Ventura", + "Hickman", + "Hillcrest", + "East Dailey", + "Hawk Point", + "Marine on St. Croix", + "Elmore City", + "Jefferson", + "Vicksburg", + "Crabtree", + "Blythe", + "Pelion", + "Riverview", + "Steele", + "Rome", + "East Barre", + "Zavalla", + "Hanson", + "New Straitsville", + "Echo", + "Moapa Town", + "New Seabury", + "Lexington", + "Faulkton", + "Moncure", + "Bertrand", + "New Kingstown", + "Seneca Gardens", + "Cherokee", + "Mineral City", + "Nicholson", + "Walkerville", + "North", + "Avondale", + "Clear Lake", + "Woodall", + "Crofton", + "Eureka", + "Eastview", + "Udall", + "Morrison", + "Quinhagak", + "Rosedale", + "Vernon", + "Livingston Wheeler", + "Ocracoke", + "Normangee", + "Kerkhoven", + "Savoonga", + "Hennepin", + "Vandling", + "Tigerton", + "Bruce", + "Adena", + "Grover", + "Algodones", + "Big Thicket Lake Estates", + "Quincy", + "Lake Shore", + "Victor", + "Sherman", + "Rockport", + "Hosford", + "New River", + "Vici", + "Cordova", + "Westbrook", + "Preston", + "Bay Shore", + "Newman Grove", + "Bogue", + "Woodland", + "Atlanta", + "Forestville", + "Okay", + "Big Wells", + "Chippewa Park", + "Chevy Chase Section Five", + "Whitakers", + "Murray", + "Chesapeake", + "Loyalton", + "Shelby", + "Porum", + "Seymour", + "Tangier", + "Corfu", + "Unionville", + "Cloudcroft", + "Trimont", + "Walnut Grove", + "Gambell", + "Maplesville", + "Scalp Level", + "Motley", + "Wiscon", + `Reile's Acres`, + "Stratford", + "Alburnett", + "New Milford", + "Harleyville", + "Parks", + "Upton", + "Brooklyn", + "Wood Heights", + "Holiday Beach", + "Collbran", + "East Fork", + "Greenbush", + "Ash Fork", + "Buffalo", + "North Creek", + "Charleston", + "North Freedom", + "Saluda", + "Vaughn", + "Hampton", + "East Williston", + "Deemston", + "Condon", + "Quilcene", + "Medora", + "Hospers", + "Courtland", + "Bloomington", + "Science Hill", + "Inyokern", + "Bancroft", + "Perry", + "Mellen", + "Frankfort", + "Pueblito del Carmen", + "Unalakleet", + "Canton", + "Queenstown", + "Wartrace", + "San Ygnacio", + "Foot of Ten", + "River Road", + "Pecan Hill", + "Melbourne Village", + "West Wood", + "Jackson Heights", + "Loretto", + "Battle Creek", + "Holden", + "Warsaw", + "York Haven", + "Ridgeway", + "Kenefick", + "Linn", + "Wittmann", + "Ashkum", + "Lorain", + "Mullan", + "Corydon", + "Lone Oak", + "Pisgah", + "Oakville", + "Cascade", + "Fort Jones", + "West Lebanon", + "Natural Steps", + "Portal", + "McCoole", + "Bevier", + "Chesapeake City", + "Brownsdale", + "Springer", + "Cedar Crest", + "Town of Pines", + "Mill Creek", + "Pleasant View", + "Mokelumne Hill", + "Cohassett Beach", + "Sewickley Hills", + "Oriskany Falls", + "Deerfield", + "Potomac", + "Bairdford", + "Opal", + "Algoma", + "Lakeside", + "Mount Aetna", + "Falls City", + "Wallace", + "Cedarville", + "Crossville", + "Fort Gay", + "Hollister", + "Bardwell", + "Shannon", + "Wheaton", + "Our Town", + "Pleasant Hill", + "Copake Lake", + "Gordonville", + "Coleman", + "Montfort", + "Calumet", + "Clarks Grove", + "Bokchito", + "Olin", + "Wellsburg", + "York", + "Scooba", + "Harrodsburg", + "Thaxton", + "Buffalo Lake", + "Silverton", + "Madison", + "Newland", + "Sand Ridge", + "Tenkiller", + "Taconic Shores", + "North Gate", + "Gasquet", + "War", + "Amity", + "Blackwells Mills", + "Mounds", + "Wild Rose", + "Sedalia", + "Nemacolin", + "East Butler", + "North Pearsall", + "Tallaboa", + "Westover Hills", + "Chesterfield", + "Passamaquoddy Pleasant Point", + "Tres Pinos", + "Trenton", + "Detroit", + "Spring Valley", + "Elwood", + "Bloomdale", + "Bradford", + "Santa Ana Pueblo", + "Woodlawn", + "Porter", + "Scranton", + "Calpella", + "Boswell", + "Stockton", + "Onaga", + "Aroma Park", + "Ruthven", + "Hoffman", + "Wayne Lakes", + "Junction City", + "Saxton", + "Wilton", + "Millerstown", + "Ririe", + "Kress", + "Miller", + "Maple Rapids", + "McDade", + "Waubeka", + "San Jose", + "Gillett", + "McClure", + "Reeseville", + "Tyrone", + "Powers", + "Ochlocknee", + "Rocky Fork Point", + "Minneola", + "Twinsburg Heights", + "Colfax", + "Boyden", + "Hollis Crossroads", + "Kingston", + "Cascade", + "Van Bibber Lake", + "La Moille", + "Hollow Rock", + "Oxford", + "West Pittsburg", + "Timber Hills", + "Hindman", + "Mound City", + "West Mansfield", + "Dongola", + "Millville", + "Paragon", + "Reidville", + "Ohio City", + "Nuangola", + "Point Comfort", + "Fleming-Neon", + "Kingstown", + "Beasley", + "Sardis", + "Keiser", + "Elnora", + "Kiowa", + "Rockland", + "Morgantown", + "West Alto Bonito", + "Ingold", + "Hendricks", + "Salisbury", + "Leawood", + "Andrews", + "Noorvik", + "Tuntutuliak", + "Hebron", + "Alapaha", + "Pennville", + "Kirkwood", + "Pe Ell", + "Weiner", + "Pikeville", + "Pine Valley", + "Nocona Hills", + "Penns Creek", + "Ricardo", + "Clayton", + "New Bloomfield", + "Toksook Bay", + "Upper Marlboro", + "Kimball", + "Bardwell", + "McAdenville", + "Chillicothe", + "Carrizo Hill", + "Lytle Creek", + "New Underwood", + "Haviland", + "Sunset Valley", + "Brownsboro Farm", + "Kasota", + "McNary", + "Blue Ridge Summit", + "Ellendale", + "Six Mile", + "Rowes Run", + "Sunset Village", + "Adams", + "Farmersville", + "Strawn", + "South Hills", + "Marble", + "Morley", + "Kuttawa", + "Petrolia", + "Watkins", + "Cecilton", + "St. Florian", + "Lakehead", + "Vader", + "Waterloo", + "Hillman", + "Walnut Creek", + "Armour", + "McRae", + "Oak Grove", + "Rocky Hill", + "Hull", + "Colton", + "Freeport", + "Bluford", + "Osmond", + "Palmer", + "McBain", + "South Royalton", + "Saybrook", + "Bristow Cove", + "Caroleen", + "Happy", + "Adrian", + "Chattaroy", + "Efland", + "Coggon", + "Silver Cliff", + "Liberty", + "Peñasco", + "Sligo", + "Beverly", + "Rushville", + "Sebeka", + "La Tina Ranch", + "Cloverdale", + "White Hall", + "Canyon City", + "Forest View", + "Eckhart Mines", + "Potosi", + "Turbotville", + "Albert City", + "Chemung", + "Eleva", + "Sullivan", + "Taholah", + "Bodega Bay", + "Ocean Isle Beach", + "Auburndale", + "Cliffside", + "Pleasant Hill", + "Mathiston", + "Thompsontown", + "South New Castle", + "Russia", + "Loretto", + "Holden Beach", + "Potters Hill", + "Joppa", + "Racine", + "Friendship", + "Center City", + "Sycamore", + "Kooskia", + "Bolt", + "Deer Creek", + "Kernville", + "Crofton", + "Silverton", + "St. Leon", + "Oldenburg", + "Two Rivers", + "James Town", + "Puryear", + "Addison", + "Vayas", + "Lake Winola", + "Greenwood", + "Matherville", + "Viola", + "Mountain Lakes", + "Oneida", + "Austinburg", + "Alda", + "Bay View", + "Rolling Fields", + "Loghill Village", + "Strykersville", + "Timber Lakes", + "Manzanita", + "Cleveland", + "Ashley", + "Thunderbird Bay", + "Elmwood", + "Mechanicsburg", + "Strathmoor Village", + "La Prairie", + "New Cuyama", + "Arroyo Colorado Estates", + "Flovilla", + "Meridian Station", + "Agency", + "Cisne", + "Parkway Village", + "Motley", + "Welling", + "Amherst", + "Story", + "Deer Lake", + "St. Edward", + "Genoa", + "Heidelberg", + "Palmyra", + "Millington", + "Pippa Passes", + "Dalzell", + "Blairstown", + "Maury City", + "Taylor Springs", + "Bluffs", + "Wabasso", + "Santa Clara", + "Clio", + "San Luis", + "Stanwood", + "Ona", + "Sharptown", + "Remington", + "Clyde", + "Virgin", + "St. Meinrad", + "Carlisle", + "Wampum", + "San Simeon", + "Friendship", + "Milan", + "Elberfeld", + "McDowell", + "Van Horne", + "Hershey", + "Valley Acres", + "Round Hill", + "Fulton", + "Thayer", + "Beemer", + "Joliet", + "Shueyville", + "Niantic", + "Greendale", + "Milner", + "Lecompton", + "Round Rock", + "Justice", + "Eldorado Springs", + "Monroe", + "Clarissa", + "Pennsbury Village", + "Lemitar", + "Cove", + "Bendersville", + "Sycamore Hills", + "McLaughlin", + "Bluetown", + "Schenevus", + "Yates City", + "Grantsboro", + "El Rancho Vela", + "Rocky Ripple", + "Greensburg", + "Glenwood", + "Oak Level", + "Jewett", + "Verlot", + "Weston", + "Fremont", + "Viburnum", + "Summertown", + "Hills", + "Allgood", + "New Boston", + "Sheridan", + "Crawford", + "Holland", + "Alhambra", + "Yakutat", + "Welcome", + "Perdido Beach", + "Pretty Prairie", + "Melrose", + "Oak City", + "Wickliffe", + "Birch Tree", + "Hanover", + "Lake Roesiger", + "Heron Lake", + "Port Leyden", + "Woonsocket", + "Timberlake", + "Dauberville", + "Ottertail", + "New Hope", + "Sharpsburg", + "Little Hocking", + "Vicksburg", + "Waldron", + "Creston", + "Norwood", + "Norborne", + "Gallaway", + "Evansville", + "Lake Arthur Estates", + "Busby", + "Greenevers", + "New Florence", + "Asharoken", + "North Middletown", + "Clarence", + "East Pecos", + "New Chapel Hill", + "Woodlawn", + "Satsop", + "Galesville", + "Savanna", + "Cordova", + "Carey", + "Stephen", + "North San Pedro", + "Minnesota Lake", + "South Wilmington", + "Shoshoni", + "Minford", + "North Springfield", + "Kirtland Hills", + "Taycheedah", + "Barlow", + "Lynch", + "Picture Rocks", + "Alexandria", + "Nenahnezad", + "Coffeen", + "Remy", + "Sunset", + "Gilbert", + "Stanton", + "Agency", + "Green Valley", + "Blairsville", + "Rock Island", + "Florence", + "Washburn", + "Winslow West", + "Rossiter", + "Shawnee", + "Palo Seco", + "Vineyard Lake", + "Franklin", + "Caddo Valley", + "Huntsville", + "Redwater", + "Argyle", + "Elloree", + "Dustin Acres", + "Noble", + "Frost", + "Castlewood", + "Mendon", + "Almena", + "Flintville", + "Bolton", + "Harmony", + "Tidioute", + "Arlee", + "Jennerstown", + "Clayton", + "Simla", + "Malta", + "Francis Creek", + "Vermont", + "Harrah", + "Grafton", + "Brighton", + "Halaula", + "Rollingstone", + "Whitsett", + "Roxton", + "Cannonsburg", + "Dufur", + "Lost Nation", + "Stratton", + "Crowder", + "Saluda", + "Cardwell", + "Alden", + "Notus", + "Findlay", + "St. Lucie Village", + "West City", + "Kotlik", + "La Mesa", + "Bryantown", + "Roberts", + "Cohutta", + "Paukaa", + "Iron River", + "Ojo Amarillo", + "Aquadale", + "Valier", + "Tacna", + "Robbinsville", + "Waterville", + "Ducor", + "Weir", + "Smithville", + "East Avon", + "Moravia", + "Canistota", + "Roseland", + `O'Brien`, + "Bull Creek", + "Alpha", + "Lake Benton", + "Lynn", + "Micanopy", + "Highfill", + "Lake Milton", + "East Vandergrift", + "Winchester", + "Middleton", + "Cochranville", + "Dove Creek", + "Elgin", + "Thatcher", + "Jay", + "Milnor", + "Onida", + "Hungry Horse", + "Livingston", + "Clarkson", + "Tees Toh", + "Downey", + "Taconite", + "Dicksonville", + "Excel", + "Campbell", + "Klamath", + "Binger", + "Norwalk", + "Rose City", + "Loleta", + "Nelsonville", + "Ackermanville", + "Wingo", + "Golconda", + "Davis", + "The Lakes", + "Niland", + "Nisqually Indian Community", + "Cohasset", + "Mangham", + "Brooksville", + "Hayden", + "Gibson", + "Hoyt", + "Jefferson", + "Pinckard", + "Selma", + "Man", + "Ridgeway", + "Patton Village", + "Geronimo", + "Candlewood Lake", + "Melrose", + "Springdale", + "Grosse Tete", + "Johnson City", + "Mermentau", + "Hartford", + "Hamilton", + "Risingsun", + "Dahlgren Center", + "New Hope", + "Westcliffe", + "Santa Maria", + "Firth", + "Winterstown", + "Graford", + "Selby", + "Laurel Hill", + "Reece City", + "Lovelady", + "Westwood", + "Boyce", + "Ladonia", + "Davis", + "Allardt", + "Stockton", + "Kirtland", + "Arcadia University", + "Shenandoah Retreat", + "Fairfield", + "Wanamie", + "Cartwright", + "Millville", + "West College Corner", + "Queen City", + "Sharon", + "La Belle", + "Lakota", + "Pilot Station", + "Michie", + "English", + "Atlasburg", + "Parker School", + "Anguilla", + "Douglas City", + "Chamberino", + "Randall", + "Balaton", + "Derby Line", + "Catawba", + "Trout Lake", + "New Berlin", + "What Cheer", + "Groveland", + "Hayden Lake", + "Dodge City", + "Peters", + "Waverly", + "Hawley", + "New Market", + "Tripp", + "Bradley Junction", + "Carney", + "Camp Douglas", + "Pultneyville", + "Avoca", + "Blue Berry Hill", + "St. Francisville", + "Farmington", + "Oneida Castle", + "Glenville", + "Lake Buckhorn", + "Bettsville", + "Fontanelle", + "Port Austin", + "Doyle", + "Hammondsport", + "Richfield", + "Paul Smiths", + "Zanesville", + "Earlsboro", + "Smelterville", + "Peterstown", + "East Randolph", + "Huntington", + "Patterson Springs", + "Imboden", + "Foots Creek", + "Burlington", + `St. Mary's`, + "Mifflin", + "Cushing", + "Ozawkie", + "Pattison", + "Holiday Lakes", + "North Courtland", + "Pardeesville", + "Ridgeley", + "Inez", + "Enoree", + "Baileyton", + "Shiloh", + "Lolita", + "Parma", + "Webster", + "Sea Ranch Lakes", + "Grove City", + "St. Charles", + "Roby", + "Camden", + "Conneaut Lake", + "Suttons Bay", + "Walnuttown", + "Scottsville", + "Cygnet", + "Glorieta", + "Madison", + "Moores Hill", + "Cecilia", + "Elgin", + "Garden City", + "Trafford", + "Adams", + "Garland", + "Oak Hill", + "Lahoma", + "Muddy", + "Golden", + "Smallwood", + "Riviera", + "Crescent", + "Magnolia", + "Edgerton", + "Egan", + "Elmore", + "Idamay", + "McConnell", + "Lidgerwood", + "Artemus", + "Rosman", + "Bergholz", + "Greensboro", + "Pleasant Valley", + "Stockbridge", + "Havre North", + "Redwood", + "Menno", + "Sankertown", + "Wanship", + "Seville", + "Hunterstown", + "Irvington", + "Trimble", + "Mountainburg", + "Paoli", + "Pomeroy", + "Lowry City", + "Sunday Lake", + "Shishmaref", + "La Paloma-Lost Creek", + "Fairfield", + "Bennington", + "Dry Tavern", + "Lawrenceville", + "Villa Pancho", + "Shelby", + "Gates", + "Ava", + "Keystone", + "Jacksonville", + "Cordova", + "Griggstown", + "Irvona", + "Isola", + "Mooresburg", + "Whitesburg", + "Matador", + "Trimble", + "Yatesville", + "Wampsville", + "Muir", + "Alto", + "Bunnlevel", + "Winfall", + "Reardan", + "Nortonville", + "Elk Horn", + "Lyndon", + "Bartelso", + "Curlew Lake", + "Garfield", + "Skokomish", + "Sandy Hook", + "West Point", + "Fort Cobb", + "Calvert", + "Paradise Heights", + "Caspar", + "Winona", + "Sanders", + "Metamora", + "Montvale", + "Bell Hill", + "Caneyville", + "Provencal", + "Rosa Sánchez", + "Ingleside on the Bay", + "New Houlka", + "Cuyahoga Heights", + "Glencoe", + "Hartville", + "Hopkins", + "West Milford", + "Maricopa Colony", + "Stotonic Village", + "Upper Santan Village", + "Mount Victory", + "Hometown", + "Elsah", + "Howard", + "Maple Hill", + "Cedarville", + "Seven Mile Ford", + "Oxford", + "Myton", + "Foristell", + "North Washington", + "Chaplin", + "Circle", + "Ursa", + "McIntyre", + "Murray Hill", + "Miranda", + "Fallston", + "Cokeburg", + "McIntosh", + "Calumet", + "Harrisville", + "Los Luceros", + "Byron", + "Bedford Park", + "Cattle Creek", + "Catheys Valley", + "Hardin", + "Pleasant Hope", + "Pavo", + "Albion", + "Reedsville", + "Thurston", + "Friant", + "Burlington", + "Millington", + "Henrietta", + "Ridgecrest", + "Villa Heights", + "Plum City", + "Fairchild", + "Jasper", + "Independence", + "Poplar", + "Elgin", + "Marion", + "St. Libory", + "Oxford", + "Chenequa", + "Eads", + "Danville", + "Bay View", + "Dumont", + "Tall Timbers", + "Black Rock", + "Mi Ranchito Estate", + "Forest Home", + "Masthope", + "Loyall", + "Carnesville", + "Natchez", + "Doolittle", + "New Augusta", + "Eureka", + "Doon", + "Juliaetta", + "East Bend", + "Star Lake", + "Milton", + "Verona", + "Washington", + "Claflin", + "Barnum", + "Fort White", + "Oconomowoc Lake", + "New England", + "Arlington", + "Tuxedo Park", + "Heart Butte", + "Stinson Beach", + "Interlaken", + "Florien", + "Ireton", + "Beverly Shores", + "Murchison", + "Marquette", + "Knoxville", + "Niederwald", + "Cole", + "Quentin", + "Rule", + "Volente", + "Walden", + "Big Run", + "Grindstone", + "Minden", + "Colbert", + "Hopkins Park", + "Leadington", + "Stanford", + "Bayview", + "Evansville", + "Franklin", + "Prentice", + "Eau Claire", + "Hopkinton", + "St. Paul", + "Hatley", + "Tamaroa", + "Patterson Heights", + "Johnson Siding", + "Newell", + "Varnamtown", + "Clarktown", + "Sutherland", + "Fairmount", + "Park Crest", + "Bath", + "Babbie", + "Kanawha", + "Harmony", + "Portland", + "Blandinsville", + "Matthews", + "Cranesville", + "Dieterich", + "Greenwood", + "Diablock", + "Nome", + "Balmorhea", + "Peck", + "Velma", + "Oaktown", + "North Chevy Chase", + "Kewanna", + "Buena Vista", + "Hartford City", + "Lansing", + "Hornersville", + "San Jose", + "Danielsville", + "Sherrard", + "Vienna", + "Boothville", + "Fort Duchesne", + "Rodey", + "Hooversville", + "Plantersville", + "Unionville", + "Grant Town", + "Rock Point", + "Scotts Corners", + "Rolette", + "Dodge", + "Webbers Falls", + "Como", + "Briarcliffe Acres", + "Racine", + "Goldfield", + "Cassadaga", + "Campobello", + "Piltzville", + "Heilwood", + "Grand Mound", + "Stagecoach", + "Littlefork", + "Swink", + "Lucas", + "Blairs", + "Wibaux", + "Orderville", + "Solon Springs", + "Bucoda", + "Lawndale", + "Clark", + "Stonewall", + "Sunset Bay", + "Minto", + "Oak Grove", + "Bancroft", + "Fairlee", + "Mayersville", + "Ossipee", + "Colmesneil", + "Encinal", + "Ulm", + "Selma", + "Avon", + "Madrone", + "Pierce", + "Napoleonville", + "Summit", + "New Salisbury", + "Shenandoah Junction", + "Franklin", + "Roland", + "Pomeroy", + "Hurtsboro", + "Ansonville", + "Butterfield", + "Sunfield", + "Hayden", + "Mohrsville", + "Green City", + "Etna Green", + "Golinda", + "Canton", + "Worthington", + "Littleton", + "Kellogg", + "Innsbrook", + "Happy Valley", + "Courtland", + "Arcadia", + "Pitkin", + "Fancy Farm", + "Boyle", + "Tower Hill", + "Pajonal", + "Forkland", + "Nelson", + "Willisville", + "Orleans", + "Oakwood", + "Post Oak Bend City", + "Barnegat Light", + "Kelso", + "Shipman", + "Rauchtown", + "La Hacienda", + "Wainwright", + "Port Matilda", + "Horseshoe Bend", + "Simpson", + "Akins", + "Burke", + "Gardiner", + "Revloc", + "Paauilo", + "Hill City", + "Clayhatchee", + "Casco", + "Meadow", + "Dexter", + "Cheneyville", + "Welch", + "Kevil", + "Yukon", + "Brownsville", + "Stuart", + "Dubois", + "Cedar Bluffs", + "Cherry Valley", + "St. Ann Highlands", + "Clermont", + "Addison", + "Butler", + "Naylor", + "Wade", + "Altamont", + "Kinsman Center", + "Hulbert", + "Uvalda", + "Cold Springs", + "Hot Springs", + "Galena", + "Leming", + "Wheatland", + "Tribes Hill", + "Richmond Dale", + "Minnetonka Beach", + "Port Sanilac", + "Warrior Run", + "Madison", + "White City", + "Jefferson City", + "Beaver Springs", + "Keithsburg", + "Mingoville", + "Tusayan", + "Goodville", + "South Dayton", + "Bernice", + "Shelter Cove", + "Bolton Landing", + "Iron Station", + "Surfside Beach", + "Pangburn", + "Fairland", + "Holiday Hills", + "Ainsworth", + "Presque Isle Harbor", + "Clark Fork", + "Norwood", + "Plainview", + "Esperanza", + "Colman", + "Cowden", + "Campbellsburg", + "Petersburg", + "Briny Breezes", + "Marion Heights", + "Moulton", + "Chaumont", + "Kerby", + "Center", + "Eminence", + "Garfield", + "Copalis Beach", + "Pickensville", + "Spanish Valley", + "Doyle", + "Holland", + "Glenaire", + "Hot Springs", + "Kieler", + "Dugway", + "Palestine", + "New Auburn", + "Bedford", + "Holcomb", + "Fonda", + "Loa", + "Morganza", + "Mulberry Grove", + "Corsica", + "Beaver City", + "Brookside", + "La Crosse", + "Stebbins", + "Allensworth", + "Newton", + "Fairfax", + "Richland", + "Acomita Lake", + "Dorchester", + "Cotton Plant", + "White River", + "Wellington", + "Pineville", + "Wyano", + "Kimmell", + "Desert Shores", + "Grannis", + "North Troy", + "Emlenton", + "Newcastle", + "Fountain Lake", + "La Villita", + "Annetta South", + "Jamestown", + "Startup", + "New Hamilton", + "Sugar Grove", + "Akiachak", + "Stannards", + "McDonald Chapel", + "Bristol", + "Andover", + "Mimbres", + "Cathlamet", + "Jarratt", + "Hillsboro Pines", + "Hoffman", + "Rowlesburg", + "Salt Creek", + "Newark", + "Wakefield", + "Collins", + "Rancho Mesa Verde", + "Bowmans Addition", + "Smithton", + "Copper Mountain", + "Converse", + "Central Valley", + "Pittman Center", + "Nelliston", + "Smiley", + "Dana", + "Verndale", + "Sutersville", + "South Williamson", + "Wellton Hills", + "Lafayette", + "Rebersburg", + "Gilbertsville", + "Gillis", + "La Barge", + "East Ellijay", + "Dansville", + "East Nassau", + "North City", + "Sand Rock", + "Trego", + "Sherando", + "Mathews", + "Roeville", + "Arnold", + `St. Mary's`, + "Stacey Street", + "Dillard", + "Annetta North", + "Corning", + "Honeoye", + "Petersburg", + "Overton", + "Humboldt", + "Buchtel", + "Sharpsville", + "Harveysburg", + "Ponce de Leon", + "Stem", + "Lewis Run", + "Mead", + "Taylor", + "Wilson", + "White Earth", + "Alta", + "St. Francis", + "River Pines", + "Bird-in-Hand", + "Freeburg", + "Newell", + "Carroll", + "Dayton", + "Queen Valley", + "Stoutsville", + "Meyers Lake", + "Good Thunder", + "Palmyra", + "Medaryville", + "Newton Grove", + "Riverlea", + "Lanesville", + "Port Washington", + "Chief Lake", + "Spring Gardens", + "Chicopee", + "Vanderbilt", + "Belvoir", + "Loraine", + "Gresham", + "Bonanza", + "Arabi", + "Howells", + "Grey Forest", + "Coulee City", + "Fish Springs", + "Belle Fontaine", + "Belt", + "Quasqueton", + "Coatesville", + "Grand Tower", + "Ralston", + "Peter", + "Myrtle Springs", + "Canal Point", + "Sidell", + "Fostoria", + "Metamora", + "Bairoa La Veinticinco", + "Lind", + "Britton", + "Pendergrass", + "Cook", + "Grayhawk", + "Boys Town", + "Bailey", + "Oakland", + "Dexter", + "Big Sandy", + "Middle Point", + "Mulliken", + "Dudley", + "Washington Grove", + "Anthon", + "Hickory", + "West Baden Springs", + "Paradise", + "West Valley", + "Richardton", + "Avery", + "Waubay", + "Hostetter", + "Andersonville", + "Helen", + "La Plena", + "Accord", + "Lily Lake", + "Graceville", + "St. John", + "Leary", + "Matthews", + "Park City", + "Wausa", + "Brooks", + "Cove", + "Cairnbrook", + "Culbertson", + "Ravenna", + "Arcadia", + "Beechmont", + "Wickett", + "South Cle Elum", + "Corriganville", + "Sabin", + "Melba", + "Deport", + "Green Isle", + "Westfield", + "Subiaco", + "Rosalia", + "Amalga", + "Emlyn", + "Prairie du Rocher", + "Lincoln Park", + "Kilmichael", + "Wall", + "Attica", + "Caledonia", + "Olanta", + "Carlock", + "Hammon", + "Hawk Cove", + "Buffalo Gap", + "Rawson", + "Dante", + "Moscow", + "San Perlita", + "Star Prairie", + "Crescent City", + "Evans Mills", + "State Line", + "Grimes", + "Wauneta", + "Ironton", + "Big Delta", + "Hartman", + "Ranier", + "Leeton", + "Oak Run", + "Pratt", + "Dushore", + "Edgeley", + "Avalon", + "Pleasant Hill", + "Terry", + "Whitesville", + "Fawn Lake Forest", + "Hollyvilla", + "Waterproof", + "De Valls Bluff", + "Olustee", + "Ontario", + "Bloomsdale", + "Hamler", + "Turrell", + "Lake Preston", + "Irwinton", + "Sanbornville", + "Belleplain", + "Berlin", + "Lyle", + "Standing Pine", + "Sabula", + "Cokeville", + "Beverly Hills", + "Wausaukee", + "Peninsula", + "Francisco", + "Hopeland", + "Turtle Lake", + "New Lothrop", + "Junction City", + "Spring Lake", + "Martin", + "Halstad", + "Martin", + "Gauley Bridge", + "Concow", + "Gilbert", + "Union", + "Wilsonville", + "Quantico", + "Bogue Chitto", + "Aneth", + "Fieldsboro", + "Odessa", + "Kirkersville", + "Danforth", + "Trail", + "Fredericktown", + "Leesburg", + "Trenton", + "Claverack-Red Mills", + "Ribera", + "Enfield", + "Mayfield", + "Fayette City", + "North Brentwood", + "Dale", + "Cecil", + "Carlsbad", + "Neosho", + "Liverpool", + "Pittsburg", + "Thomson", + "Benns Church", + "Reddick", + "Hickory Grove", + "Indianola", + "Chatham", + "West Wildwood", + "Everly", + "Thomas", + "Phillipsburg", + "Groom", + "Higbee", + "Miami", + "Allenport", + "Hickory Flat", + "Paradise Park", + "Schram City", + "Edroy", + "Morven", + "Riverside", + "Valley Head", + "Clarksville", + "Batavia", + "Glenwood", + "Derby Center", + "Jeromesville", + "Mer Rouge", + "Keota", + "Flagler", + "Lyons Falls", + "Byron", + "Aniak", + "Chili", + "La Paz", + "Bauxite", + "Pine Haven", + "Traskwood", + "Murrayville", + "Slovan", + "Vesper", + "Alex", + "Yah-ta-hey", + "Camden Point", + "Lyons", + "Clayton", + "Hemlock", + "Kinston", + "Patoka", + "Lake Mystic", + "Sinclairville", + "Hokah", + "Hayti Heights", + "Collegeville", + "Lacona", + "Millwood", + "Vienna Center", + "Margaretville", + "Scotia", + "Oceanside", + "Rudolph", + "Rote", + "Frenchburg", + "Ramona", + "Seco Mines", + "Paragonah", + "Clayton", + "Williamsfield", + "Waverly", + "Ashley", + "Wheatland", + "Alba", + "Onalaska", + "Richmond", + "Kake", + "Ulen", + "Sunfish Lake", + "Pierron", + "Mandaree", + "Magnet Cove", + "Polkville", + "Pembina", + "Glenview", + "Seaboard", + "Downieville-Lawson-Dumont", + "Bell Buckle", + "Valparaiso", + "Augusta", + "San Lucas", + "Kasigluk", + "Mettawa", + "San Ardo", + "Bridgeport", + "Alexandria", + "Laurel", + "McClellanville", + "Buckley", + "Proctorville", + "Alba", + "Sunrise Beach", + "Promised Land", + "Baker", + "Soldiers Grove", + "Thorntonville", + "Blanchard", + "Snook", + "Nuremberg", + "Madison", + "McKinley Heights", + "Castleberry", + "Achille", + "Union", + "Bassett", + "Lake Seneca", + "Pine Lakes", + "Hay Springs", + "Cadwell", + "Meadow View Addition", + "Weston", + "Marne", + "Fort Washington", + "Pleasant Plains", + "Pryor", + "Saxtons River", + "Roper", + "Mark", + "Stewart", + "Lena", + "Texline", + "Eagletown", + "Cedarville", + "Lenkerville", + "LeRoy", + "Elizabethtown", + "Saltillo", + "East Dunseith", + "Masontown", + "Launiupoko", + "North Salem", + "Ballico", + "Pennwyn", + "Graeagle", + "Glen Osborne", + "Blessing", + "Pin Oak Acres", + "Pettisville", + "Veblen", + "Verden", + "Micro", + "Mountain View", + "Geneva", + "Garden City", + "Elizabeth", + "New Meadows", + "Hardin", + "Parkers Settlement", + "Matlacha", + "Claremont", + "Bryson", + "Norfork", + "Wellsburg", + "Russell", + "Hoboken", + "Callaway", + "Ghent", + "K-Bar Ranch", + "Ailey", + "Cynthiana", + "Santa Rosa", + "Trenton", + "Olpe", + "South Boardman", + "Cedar Grove", + "Juniata Terrace", + "Quonochontaug", + "Tumalo", + "River Falls", + "Indian Creek", + "Arapahoe", + "Tijeras", + "Scammon Bay", + "Baneberry", + "Burleigh", + "Cape Royale", + "Pinewood", + "Fort Yukon", + "Logan", + "Covington", + "North Fairfield", + "Marion", + "Dill City", + "Wintergreen", + "Allison", + "Fillmore", + "Titusville", + "Foreston", + "Shady Grove", + "Deerwood", + "Hawk Run", + "Saddle Rock Estates", + "Maybee", + "Homeworth", + "Dearing", + "Badger", + "Rolfe", + "Painted Hills", + "Naturita", + "Boyd", + "Siracusaville", + "Lake City", + "Shoreham", + "Minor Hill", + "Pikes Creek", + "Waikane", + "East Rochester", + "Bayou Goula", + "Ashford", + "Noblestown", + "Ivanhoe", + "Lowell", + "Bolton", + "Austin", + "South Bethany", + "Nunapitchuk", + "Weir", + "South La Paloma", + "El Prado Estates", + "La Harpe", + "Rushsylvania", + "Loch Lynn Heights", + "Bismarck", + "Makanda", + "Fordsville", + "Modena", + "Macksville", + "Wabasso", + "Yankeetown", + "Galien", + "Gasburg", + "Coolidge", + "Iberia", + "Hickory", + "Forgan", + "Wishram", + "Rockleigh", + "Switzer", + "Ballard", + "Plum Springs", + "Reynolds", + "Monroe City", + "Norway", + "Society Hill", + "Linden", + "Browns Valley", + "Holly Grove", + "Bland", + "Polo", + "Los Berros", + "Huttig", + "Laupahoehoe", + "Bradley", + "Verdigre", + "Creal Springs", + "West Alton", + "St. David", + "Tivoli", + "Englewood", + "Elma", + "Thompsonville", + "Merrillan", + "Towner", + "Springfield", + "Spring Lake", + "New Alexandria", + "Calypso", + "Dell City", + "Winchester", + "Boykins", + "Burden", + "Grandview", + "Northport", + "Gloucester", + "Dellwood", + "Grand Ridge", + "High Falls", + "Sharon Springs", + "Centralia", + "Downsville", + "Ravia", + "Fairgrove", + "Pesotum", + "Horntown", + "Lincoln Park", + "Scranton", + "Waco", + "Thornton", + "Radcliffe", + "Malone", + "Elkton", + "Junction City", + "Cairo", + "Indian Point", + "Waldron", + "Clay Springs", + "Dearborn", + "Mineral", + "Cullom", + "Buckholts", + "Solomon", + "Lake Norden", + "Suring", + "Floodwood", + "Little River", + "Bluffview", + "Center Ossipee", + "Devers", + "Redbird Smith", + "Effingham", + "Exeter", + "Hutsonville", + "Atlantic", + "Symsonia", + "Wapella", + "Nazlini", + "Homer", + "Clifton", + "Clearbrook", + "Big Sandy", + "Canadohta Lake", + "Stonewall", + "Oak Grove", + "Paris", + "Hillsboro", + "Peeples Valley", + "Mulberry", + "Stony Ridge", + "Valley City", + "Lewisville", + "Lake Poinsett", + "Lake Hughes", + "Sheldon", + "Winfield", + "Republic", + "Bancroft", + "Republic", + "Arcadia", + "Sonora", + "La Paz Valley", + "Audubon", + "Bay Port", + "Roscoe", + "Stetsonville", + "Rockvale", + "Eagle Bend", + "Ettrick", + "Cayuga", + "Canute", + "Ashland", + "Pine Forest", + "Amherstdale", + "Sunbright", + "Morgan", + "Osino", + "Pomfret", + "Wilkerson", + "Fairfield", + "Dupree", + "Stillmore", + "Fillmore", + "Zearing", + "Union", + "Deweyville", + "De Beque", + "Labish Village", + "Hepzibah", + "Equality", + "Seabrook", + "Reinerton", + "Fowler", + "Bentley", + "Fox River", + "Avoca", + "Big Piney", + "Hamburg", + "Hardwood Acres", + "Cedar Creek", + "Lockwood", + "George", + "Tannersville", + "Deary", + "Hudson", + "Chadwick", + "Yettem", + "Walsh", + "Caroga Lake", + "Oakwood", + "Early", + "Jamesport", + "La Crosse", + "Stanfield", + "Fairmont", + "Wyoming", + "Easton", + "Shonto", + "Placedo", + "Tropic", + "Advance", + "Rocky Mountain", + "Lyerly", + "Williamson", + "Wilkeson", + "Thackerville", + "Mole Lake", + "Rankin", + "Portland", + "Grayson", + "Sarita", + "Grantsville", + "Shelbyville", + "Gates", + "Pennock", + "Markleville", + "Altona", + "Trout Valley", + "Felton", + "Lewistown", + "Russellville", + "East Cathlamet", + "Adell", + "Bancroft", + "Stockton", + "Utica", + "Newville", + "Monroe", + "Mount Vernon", + "Franklin", + "Charlotte Court House", + "Apple Canyon Lake", + "Carlisle", + "Polonia", + "Gays Mills", + "Jefferson", + "Courtland", + "Smock", + "Seven Valleys", + "Kent Narrows", + "New Bloomington", + "Milroy", + "Milford", + "Cañada de los Alamos", + "Big Water", + "Kipnuk", + "Coinjock", + "Elkmont", + "Moran", + "Bergman", + "Staunton", + "Aurora", + "Highland Holiday", + "Hopewell Junction", + "Avon", + "Dayton", + "Gadsden", + "Mulford", + "Horton Bay", + "Willernie", + "Eolia", + "Laurel Run", + "Ringwood", + "New Stuyahok", + "Canaseraga", + "Round Valley", + "Lovilia", + "Parkway", + "Cromwell", + "Randolph", + "Franklintown", + "Cedar Vale", + "Winchester", + "Berry Hill", + "Hydetown", + "Mesa", + "New Melle", + "San Leanna", + "Reynolds", + "Amboy", + "Allerton", + "Otho", + "Rock Creek", + "Groton Long Point", + "Swea City", + "Briaroaks", + "The Silos", + "Pink Hill", + "Eastlake", + "St. Joseph", + "Newell", + "Rock Springs", + "Benzonia", + "Sargent", + "Bear River", + "Grand Lake", + "Center", + "Ranchitos East", + "Green Lane", + "Bonnetsville", + "Clifton", + "Cankton", + "Hillsdale", + "Summerville", + "Brownsville", + "Cross Hill", + "Saguache", + "Cross Roads", + "Christiansburg", + "Eskridge", + "Strong", + "Dows", + "Lockhart", + "Mound City", + "Forman", + "Sorrel", + "Houston Acres", + "Runnells", + "South Philipsburg", + "Metompkin", + "Liberty", + "Ryderwood", + "Laurelville", + "Northport", + "Granada", + "Minong", + "Odum", + "Wheelwright", + "La Plata", + "Sacred Heart", + "Dahlgren", + "Leary", + "McCurtain", + "Holt", + "Jayton", + "Central City", + "Hamersville", + "Hampton", + "Parryville", + "Robards", + "Bethel", + "Drakes Branch", + "Goessel", + "Gas", + "Mackay", + "Solis", + "Lemon Grove", + "Buda", + "Dalton City", + "Red Mesa", + "Wilmot", + "Tryon", + "Garden City", + "Oakland", + "Wayland", + "Hillsboro", + "Camden", + "Cawood", + "Waldo", + "Olive Branch", + "Van Buren", + "Byromville", + "Mattawana", + "Freeport", + "Leola", + "Triumph", + "Onley", + "Secretary", + "Gem Lake", + "Wilton", + "Joiner", + "Gibson", + "Calhoun", + "Sanostee", + "Byrnedale", + "Elaine", + "Sterling", + "Eva", + "Spring Valley", + "Darlington", + "Timber Lake", + "Rough and Ready", + "New Albin", + "Farina", + "Stockdale", + "Firth", + "Hot Springs", + "Richfield", + "Burt", + "Plainville", + "Drakesboro", + "Bend", + "Wrigley", + "Cowan", + "Strattanville", + "Smith River", + "Laddonia", + "De Witt", + "Myrtle", + "Prinsburg", + "Bell", + "Potter Valley", + "Clinton", + "Bancroft", + "Delbarton", + "Clallam Bay", + "Bokoshe", + "Altona", + "Talco", + "Dow City", + "New Eucha", + "Valley Bend", + "Millry", + "La Puerta", + "Tignall", + "Hartley", + "Richfield", + "Schulter", + "Brunson", + "Sun River Terrace", + "Yonah", + "McIntosh", + "Billings", + "Hamilton Branch", + "Green Ridge", + "Hammondville", + "Carsonville", + "Rush Valley", + "Park Ridge", + "Lovingston", + "Dayton", + "Crestview", + "Georgetown", + "Coolville", + "Bay City", + "Hoyleton", + "St. Leonard", + "Laura", + "Brenda", + "Chandlerville", + "West Elizabeth", + "Alma Center", + "Lafayette", + "Chalmers", + "Fairgarden", + "Elmwood Park", + "Morley", + "Lake Colorado City", + "South Van Horn", + "Golf", + "Rock Mills", + "Garwin", + "Lisman", + "Paw Paw", + "Westminster", + "Brooks", + "Wilmot", + "Reedsville", + "Congerville", + "McKenzie", + "Sopchoppy", + "Altha", + "Darrtown", + "Zeb", + "New Virginia", + "Coalport", + "Bruin", + "Sandy Level", + "Corbin City", + "Truro", + "Carlos", + "Page Park", + "Summersville", + "Albion", + "Alsace Manor", + "Paxton", + "Red Creek", + "Refton", + "Buckatunna", + "Freeville", + "Ashley", + "Kachemak", + "Wilson", + "Four Lakes", + "Lavelle", + "Cumberland Gap", + "Eldorado", + "Presho", + "East Middlebury", + "Craigmont", + "Damiansville", + "Sun", + "White", + "McKenney", + "Lizton", + "Fort Towson", + "Circleville", + "Falkner", + "Manistee Lake", + "Ellsworth", + "Pineview", + "Knollwood", + "Blucksberg Mountain", + "Garden Valley", + "Rose Bud", + "Maynard", + "Jasper", + "New Hartford", + "Mayking", + "Jumpertown", + "Pine Hollow", + "Lipan", + "Fort Jennings", + "Honomu", + "Ponderosa Pines", + "Green Valley Farms", + "Grapeville", + "Mappsville", + "Shiloh", + "Fox Chase", + "Middleville", + "Miltonvale", + "Lenzburg", + "Aaronsburg", + "Kelayres", + "McGuffey", + "Charleston", + "Beacon", + "Cochiti Lake", + "New Troy", + "Rosholt", + "Mount Blanchard", + "Woodland", + "Ethridge", + "Shiloh", + "Valier", + "Quaker City", + "Western Lake", + "Otis", + "Center Point", + "Crystal Lake Park", + "Toomsboro", + "Rockford", + "Brecon", + "Gordon", + "Smith Corner", + "Bonneau", + "Tower", + "Junior", + "Webberville", + "Woodson", + "Brandon", + "Wilmar", + "Murray", + "Accomac", + "Freeman", + "Kanosh", + "Bowersville", + "New Kent", + "College Station", + "Humeston", + "Rose City", + "Clarence", + "Pewamo", + "Gilman", + "Urich", + "Lyndon Station", + "Haring", + "West Farmington", + "Springfield", + "Rancho Banquete", + "New Odanah", + "Owensburg", + "Fletcher", + "Lilesville", + "Stockport", + "Hayesville", + "Hoffman", + "Lake Meredith Estates", + "Oxford Junction", + "Delmar", + "Pillager", + "Fair Play", + "Big Horn", + "Pleasant View", + "Allenhurst", + "Lewiston Woodville", + "Ehrhardt", + "Melbourne", + "Dawson", + "Pine Grove", + "Bertha", + "Fielding", + "Newport", + "Deercroft", + "Clearview", + "Young", + "Simpson", + "Tabernash", + "Lennon", + "St. Paul", + "Kandiyohi", + "Monterey", + "Arnett", + "Fort Garland", + "Bobtown", + "Scotch Meadows", + "Berthold", + "Lacomb", + "Old Hundred", + "Burlington Junction", + "Auburn", + "Kaneville", + "Ohio", + "Aguilar", + "Lostant", + "Buffalo", + "Fife Lake", + "Portage", + "Amber", + "Glen Allen", + "Lefors", + "Jacksonville", + "Bear Creek", + "Los Ebanos", + "Collins", + "Pettus", + "Arnot", + "Humphrey", + "Orangeville", + "Pollock", + "Depew", + "Hammond", + "Fairview Beach", + "Friendsville", + "Lake Ivanhoe", + "West Alexander", + "Lyons", + "Old Forge", + "Bellefonte", + "Red Oak", + "Cooper Landing", + "Omar", + "Nassawadox", + "Charter Oak", + "Loganton", + "Hecker", + "Verona", + "Red Level", + "Onyx", + "Falmouth", + "Icehouse Canyon", + "Smyer", + "Webb", + "Chapin", + "Star Harbor", + "Burnsville", + "Gateway", + "Melrose", + "Allendale", + "Bliss", + "Mather", + "Delleker", + "Glenwood", + "Breda", + "Whittemore", + "Withee", + "Nances Creek", + "Josephville", + "Bennett", + "Altura", + "Sledge", + "Tovey", + "Summit", + "Hopkins", + "Pleasant Grove", + "Prospect", + "Erskine", + "Morning Glory", + "Dover", + "Bruceville", + "Neapolis", + "Dyckesville", + "Cement", + "Enterprise", + "Taylor", + "White Haven", + "Butterfield", + "Baumstown", + "Wauhillau", + "Lime Springs", + "Brazos Country", + "Neelyville", + "Tallula", + "Fair Play", + "Sudlersville", + "Scotland", + "San Fidel", + "Coalton", + "Lyman", + "South Wayne", + "Corwin", + "St. Joe", + "Shaver Lake", + "Crawfordville", + "Rouseville", + "East Carondelet", + "Winthrop", + "Amsterdam", + "Ione", + "Tamms", + "Corn", + "Coopers Plains", + "Hewlett Neck", + "Oak Grove Village", + "Chrisney", + "Cortland", + "Kenvir", + "Millsboro", + "Kendall", + "Argonia", + "Unionville", + "Marianna", + "Mackinac Island", + "Fairview", + "Timbercreek Canyon", + "Rothsay", + "Chefornak", + "Bayfield", + "Glen Park", + "Oacoma", + "East Millstone", + "Mountain Lake", + "Bedias", + "Thayer", + "McNeil", + "St. Marie", + "Oak Park", + "Naplate", + "Weston", + "Hornbeak", + "Wheatland", + "Prue", + "Chance", + "Wounded Knee", + "Latimer", + "University Park", + "Thompson", + "Rawlings", + "Shartlesville", + "Franklin", + "Gilmore City", + "Jenkins", + "Delhi", + "Foxworth", + "Sorento", + "Beech Bottom", + "Grand View", + "Mercer", + "East Kingston", + "Warner", + "Hallsburg", + "Bowdle", + "Cowen", + "Dakota", + "Argusville", + "Palmyra", + "South Toledo Bend", + "Gustine", + "North Hampton", + "Naknek", + "Thorne Bay", + "Ducktown", + "Palmer", + "Denver", + "Blum", + "Idaho City", + "Potts Camp", + "Harrisville", + "Spokane Creek", + "Sulphur Rock", + "Maysville", + "Wamsutter", + "East Arcadia", + "Brewster", + "Collins", + "Mammoth", + "Roxie", + "Plymouth", + "Millingport", + "Lynd", + "Junction City", + "Manalapan", + "North Rose", + "Clintonville", + "Pinal", + "Riverwood", + "Kosse", + "Midway", + "Bancroft", + "Bellamy", + "Morven", + "St. Cloud", + "Wilbur Park", + "Forestville", + "Takilma", + "Hector", + "Endeavor", + "Penn", + "Great Cacapon", + "Oglesby", + "Weedville", + "Sicily Island", + "Beallsville", + "West Point", + "Haysi", + "Waterford", + "Knapp", + "Fromberg", + "North Lynbrook", + "Hermitage", + "Gadsden", + "Coleville", + "Lyle", + "Glenbeulah", + "Nunn", + "Sidon", + "Iuka", + "Lost Creek", + "Fort Johnson", + "Whigham", + "Turkey Creek", + "Mosier", + "West Nanticoke", + "Petersburg", + "Yampa", + "Allensville", + "Pathfork", + "Alford", + "Decatur", + "Munnsville", + "Rolling Prairie", + "Red River", + "Mullen", + "Stacyville", + "Dean", + "Greenville", + "Allen", + "Tremont", + "Klemme", + "Fairview", + "St. Bernice", + "Protection", + "Big Chimney", + "Naytahwaush", + "Spring Bay", + "Arbyrd", + "Louisville", + "Tull", + "Irving", + "Townsend", + "Ferndale", + "Crescent Valley", + "Lucerne", + "Eureka", + "Seward", + "Kiester", + "Robinette", + "Towanda", + "Eighty Four", + "Broadus", + "Marshall", + "Emmet", + "Millsap", + "Bridgewater", + "Ephesus", + "Abrams", + "Kingman", + "Lafe", + "Martensdale", + "North Adams", + "El Refugio", + "Beersheba Springs", + "North Powder", + "Leeds", + "Hatley", + "Salesville", + "Leitersburg", + "Glen St. Mary", + "Plymouth", + "Kaleva", + "Berlin", + "Sprague", + "Emden", + "Alta", + "Hatteras", + "Sterling", + "Norwood", + "Cushman", + "Ocheyedan", + "Ivanhoe", + "Angoon", + "Greentop", + "Ivy", + "Hawthorn", + "Hayesville", + "Forest Hills", + "Danube", + "Nezperce", + "Colton", + "Mesquite Creek", + "Urbanna", + "Mad River", + "Gisela", + "Versailles", + "Mount Crawford", + "Lamont", + "Lockhart", + "Butte Falls", + "Bowen", + "Summersville", + "Florence", + "Caldwell", + "Big Stone City", + "Lingle", + "Richmond", + "Paden", + "Dumas", + "Clarksburg", + "Qulin", + "Crawfordsville", + "Pasadena Park", + "Menlo", + "Ellsworth", + "South Mills", + "Strong City", + "Drummond", + "Fontanet", + "Valley Falls", + "Waite Hill", + "Cornell", + "Glasco", + "Fredonia", + "Jerome", + "St. Paul", + "Gilt Edge", + "White Pine", + "Kendleton", + "Jackson", + "Proctor", + "Greasewood", + "Bryant", + "Orchid", + "Laketon", + "Wilkinson", + "West Point", + "Lanesboro", + "Mecosta", + "Nelsonia", + "Kellogg", + "Calhoun", + "Beecher City", + "Chattanooga", + "Otterville", + "Allen", + "Cherry", + "Jupiter Inlet Colony", + "Ashley Heights", + "Thompsonville", + "Kanopolis", + "Medicine Park", + "Byers", + "Martinsville", + "Lane", + "Alleman", + "Michigantown", + "Wimer", + "Crooked Creek", + "Avondale", + "Fawn Grove", + "Lake Hart", + "Roann", + "Carnelian Bay", + "Baileyton", + "Mount Lena", + "Highland Meadows", + "Island", + "Ravenden", + "Cousins Island", + "Reyno", + "Peña Pobre", + "Falls Village", + "Bayard", + "Carolina", + "Newfield Hamlet", + "Emery", + "Edgar", + "Funston", + "Fernville", + "Galena", + "Holton", + "Coleridge", + "Pleasanton", + "Vanderbilt", + "Mount Auburn", + "Hallsboro", + "Fithian", + "Cobb", + "Cosmos", + "Skellytown", + "Norbourne Estates", + "Rutledge", + "Senecaville", + "Emerson", + "Point Arena", + "Arlington", + "Lake Petersburg", + "Touchet", + "Emerado", + "Bass Lake", + "Cheriton", + "Montcalm", + "Fox", + "Coloma", + "Rothbury", + "Elgin", + "Lattimore", + "Ualapue", + "Essex", + "Diablo", + "Gustavus", + "Wacissa", + "Lodge Grass", + "Tildenville", + "Jamesville", + "Broad Top City", + "Camargo", + "Henry", + "Keytesville", + "South Bethlehem", + "Randolph", + "Lauderdale", + "Milton", + "Alberton", + "Woodland", + "Branson West", + "Richmond", + "Convent", + "Farragut", + "Kennard", + "Carter Springs", + "Appleby", + "Marston", + "Springboro", + "Terminous", + "Fries", + "Point Place", + "West Manchester", + "Huntsville", + "Brownsdale", + "Kopperston", + "McArthur", + "Wilroads Gardens", + "Hudson", + "Gloria Glens Park", + "Cinco Bayou", + "Nelson", + "Atlantic Beach", + "Gouglersville", + "Moorland", + "Briarwood", + "Cochiti", + "Fenwick Island", + "Bakersville", + "Calion", + "Weippe", + "Taylor", + "Clarksburg", + "Evening Shade", + "Scammon", + "Avery", + "Holland Patent", + "Moreland", + "Elk Park", + "Panama", + "Robinson", + "Bransford", + "Ripley", + "Summerhill", + "Greenview", + "Mount Pleasant", + "South Prairie", + "Sigurd", + "Montrose", + "Titonka", + "Winchester", + "Akeley", + "Highland Haven", + "Edison", + "Wapanucka", + "South Heights", + "Leedey", + "Lashmeet", + "Douglassville", + "JAARS", + "Mount Sidney", + "Bigfork", + "Grimesland", + "Harrison", + "Buffalo Springs", + "Shippenville", + "River Bluff", + "Mansfield", + "La Grange", + "Carmichaels", + "Dillwyn", + "Spottsville", + "Ashby", + "Heeney", + "St. Stephens", + "Clay", + "Maupin", + "Follett", + "Ridgeside", + "Bridgeton", + "Bigfoot", + "Offerman", + "Tierra Verde", + "Spalding", + "Arden", + "Arjay", + "Sacramento", + "Herman", + "Max Meadows", + "Dix", + "Teton Village", + "Merrimac", + "Irondale", + "Manokotak", + "Neola", + "Roanoke", + "New Era", + "Fort Thomas", + "Wheeler", + "Norwich", + "Cleveland", + "Buckner", + "Strasburg", + "Oak Island", + "Parkton", + "Stewartsville", + "Bloomingdale", + "Oakesdale", + "Junction City", + "Ideal", + "DISH", + "Prairie Farm", + "New Village", + "Fossil", + "Grover", + "Bear Creek", + "Dry Prong", + "Chase", + "Leakey", + "McMullin", + "Murdo", + "Manuel Garcia", + "Cunningham", + "Stouchsburg", + "Montrose Manor", + "Industry", + "San Pedro", + "Bitter Springs", + "Nettie", + "Noxapater", + "Fallon Station", + "Sextonville", + "Dalmatia", + "Galena", + `D'Lo`, + "Potwin", + "New Auburn", + "Kensington", + "Miles", + "Marysvale", + "Hornbeck", + "North Omak", + "Sidman", + "Martins Creek", + "Meadville", + "Neponset", + "Huntington", + "Jerry City", + "Hodge", + "Bucklin", + "McLain", + "Rockford", + "Newburg", + "Bolivar", + "Clara", + "Shuqualak", + "Mount Enterprise", + "Drysdale", + "Rose Hill Acres", + "Floyd", + "Kennedyville", + "Garceno", + "Batavia", + "Mount Vernon", + "Mechanicsville", + "Fountain", + "Riverdale", + "Guys", + "Fairplay", + "Murray City", + "Kismet", + "West Decatur", + "Hunts Point", + "Florence", + "Gibbsville", + "Monroe Center", + "Stockwell", + "Gallatin", + "Karnak", + "Keys", + "New Goshen", + "Manitou", + "Coram", + "Dateland", + "Claypool", + "Raft Island", + "Ellendale", + "Matagorda", + "Belmont", + "Wynona", + "Laona", + "Websterville", + "Tasley", + "Lake Viking", + "Zephyr Cove", + "Allenspark", + "Little Rock", + "Kongiganak", + "Hampton", + "Crawford", + "Perrysville", + "Novinger", + "Marquette", + "Three Springs", + "Converse", + "Cawker City", + "Fessenden", + "Green Acres", + "Sedalia", + "Hull", + "French Gulch", + "York Hamlet", + "Brushton", + "Lava Hot Springs", + "Bird City", + "Almond", + "Ridgeway", + "Long Branch", + "Washburn", + "Garrett", + "B and E", + "Beaver", + "Waltonville", + "California Pines", + "Cuyamungue", + "Ernest", + "Amo", + "Caswell Beach", + "Bondville", + "Clarksville", + "Herrick", + "Leonardville", + "Centertown", + "Beverly Beach", + "Wykoff", + "Keyport", + "Glenburn", + "Chestertown", + "Shidler", + "Ewing", + "Silas", + "Picacho", + "Edgewood", + "Oak Glen", + "Alcolu", + "Denmark", + "Rosholt", + "Ellsinore", + "Ramey", + "Spavinaw", + "South Heart", + "McCool Junction", + "Oklee", + "Angus", + "Rhinecliff", + "Neshkoro", + "Vanderbilt", + "Springwater Hamlet", + "Bangor", + "Stevens", + "Hewlett Bay Park", + "Sturgeon Lake", + "Brethren", + "North Carrollton", + "Union", + "Greeley Center", + "Washington Park", + "Purcell", + "Beaver Creek", + "Churchtown", + "Rough Rock", + "Fruitvale", + "Yantis", + "Lago", + "Birchwood", + "Castalian Springs", + "Williams Creek", + "Eden", + "Hulett", + "Whitesville", + "Conesville", + "West Goshen", + "Troutville", + "Hanover", + "Cement City", + "Leola", + "Topsail Beach", + "Weir", + "Coloma", + "Ramah", + "Ropesville", + "Oneida", + "Turkey Creek", + "South Renovo", + "Encampment", + "Prospect", + "Niangua", + "Bonanza", + "Macclesfield", + "Sugar Grove", + "Anderson", + "Victor", + "Christine", + "Lydia", + "Delta", + "Artesia", + "Attapulgus", + "Nuiqsut", + "German Valley", + "Ansley", + "Benham", + "De Land", + "Lowgap", + "Hermosa", + "South Fork", + "Rose Creek", + "Iola", + "Alta Vista", + "Hixton", + "Upsala", + "St. Helena", + "Rio Lucio", + "Wrenshall", + "Muir", + "Savageville", + "Miltona", + "Rices Landing", + "Matewan", + "Oden", + "Ochelata", + "Uplands Park", + "Winslow", + "Rolling Hills", + "Starbrick", + "Morrison", + "North Vandergrift", + "Sumner", + "Orland", + "New Jerusalem", + "Clarendon", + "Au Sable Forks", + "Williston", + "Minnesott Beach", + "Benoit", + "Abbeville", + "Glen Elder", + "Goldonna", + "Freeburg", + "Pleasant City", + "Poplar Hills", + "Teachey", + "Barton", + "Palmer", + "Mexican Colony", + "Chilcoot-Vinton", + "Pueblo of Sandia Village", + "Campton", + "Hytop", + "Haines", + "Chauncey", + "Buckland", + "Vanleer", + "Lindsey", + "Bell City", + "Fort Coffee", + "New Pittsburg", + "Sacaton Flats Village", + "Blue River", + "Kennedy", + "Broomes Island", + "New Hebron", + "Ipava", + "Fortine", + "Avinger", + "Naselle", + "Birmingham", + "Meadville", + "Ascutney", + "Oak Valley", + "Sublette", + "Ketchum", + "West Jefferson", + "Avon", + "Milano", + "Robbins", + "Everglades", + "Lake Arthur", + "Bellwood", + "Stovall", + "Rosslyn Farms", + "Stanton", + "Meadow Valley", + "Parsonsburg", + "Pioneer", + "Cooperstown", + "Marlin", + "Ashton", + "Brady", + "Somerset", + "Linwood", + "Fisher", + "New Germany", + "Vermillion", + "Lawler", + "Galva", + "Bentonia", + "Haydenville", + "Mud Lake", + "Richburg", + "Harrington", + "Humboldt", + "Sandyfield", + "Belleville", + "Marion Center", + "Waveland", + "Vail", + "Birdseye", + "Lafayette", + "Baggs", + "Twin Bridges", + "Maynard", + "Prospect", + "Port Gibson", + "Raysal", + "Union Star", + "College Corner", + "Manzanola", + "Leigh", + "Wyoming", + "Weekapaug", + "Riggins", + "Spencer", + "Wheatfields", + "Hackneyville", + "Readstown", + "Beaver Crossing", + "Commodore", + "Strausstown", + "Herreid", + "Rosburg", + "Rudolph", + "Finley", + "El Chaparral", + "Belfonte", + "Fairhaven", + "Lewis", + "Harlingen", + "Parkerfield", + "Mount Pleasant", + "Long Beach", + "Urbana", + "Frizzleburg", + "Holyrood", + "Noatak", + "Golden", + "Salley", + "Savannah", + "Snydertown", + "Laurelton", + "Joffre", + "Hissop", + "Leslie", + "Tiger", + "Nevis", + "St. Michael", + "Colony", + "Spreckels", + "Salemburg", + "Beckwourth", + "Huntley", + "Tribbey", + "Plainfield", + "Mapleton", + "Kinde", + "Glen", + "Raisin City", + "Mount Hood", + "Midland", + "Deepwater", + "Thornburg", + "Bussey", + "Randlett", + "Ruth", + "Forbestown", + "Clinton", + "Cutler", + "Fort Jesup", + "Finley Point", + "Engelhard", + "Richlawn", + "Bloomingburg", + "Boys Ranch", + "Whiteface", + "Mattoon", + "Turpin", + "Carlisle", + "Wasco", + "Asher", + "Fredericksburg", + "Weldon", + "Elberta", + "McCune", + "Bay View Gardens", + "South Shaftsbury", + "Cochrane", + "Glennallen", + "Ronda", + "Romeo", + "New Vienna", + "Union Deposit", + "Osyka", + "Boydton", + "Kirkwood", + "Oliver", + "Stewart", + "Faith", + "Dowling", + "Harmonsburg", + "Melvin", + "Evant", + "Napaskiak", + "Weaubleau", + "Highland Lake", + "Cedar Creek", + "Hartford", + "Burlison", + "Middleway", + "Waynesville", + "Martin", + "Earling", + "Mystic", + "Royal", + "Kingston", + "Ripley", + "Kurten", + "Centre Island", + "Kelly", + "Brewer", + "Leonard", + "Benson", + "Crawfordsville", + "Lindisfarne", + "Peak Place", + "Gunnison", + "Halchita", + "Pelham", + "Hawkeye", + "Gage", + "Williamsburg", + "Lake Almanor Country Club", + "Hilda", + "Assaria", + "Mesquite", + "Andrew", + "Dunlevy", + "Forestville", + "Basalt", + "Three Lakes", + "Barrett", + "St. Rose", + "Glendale", + "Maceo", + "Orchard", + "Rocky Ridge", + "Kanarraville", + "Osborn", + "Long Hollow", + "Eldorado", + "Lost Nation", + "Wyndmere", + "Shubuta", + "Altmar", + "Irene", + "Leaf River", + "Blanca", + "Malcolm", + "Edisto Beach", + "New Haven", + "Lisbon", + "Platte Woods", + "Warm Springs", + "Boulevard", + "Hancock", + "Waubun", + "Cumming", + "Portia", + "Mesick", + "Houston", + "Lanagan", + "Fanshawe", + "Rome", + "Keyesport", + "Rosebud", + "Powers", + "Sedley", + "Kane", + "Saunemin", + "Crowder", + "Fifty Lakes", + "Orestes", + "Fairview", + "Cooter", + "Derby", + "Sandborn", + "Saratoga", + "Fleming", + "Trimble", + "Beech Grove", + "Onekama", + "Pleasant Groves", + "Elfrida", + "Grandfalls", + "Garden Farms", + "Bonaparte", + "Mirando City", + "Stringtown", + "Hazel", + "Orbisonia", + "Harrod", + "Westhope", + "Eastman", + "Axtell", + "Corral Viejo", + "Holmesville", + "Jewell", + "Tabor", + "Thornton", + "Edna", + `Rocky Boy's Agency`, + "Crown City", + "Dowelltown", + "Elmo", + "Marshallberg", + "Isleta Village Proper", + "Cedro", + "Green Bluff", + "Peachland", + "Grand River", + "Holley", + "Casey", + "Clyman", + "Skillman", + "Yarborough Landing", + "Wood Lake", + "New Market", + "Corder", + "Winside", + "Tuppers Plains", + "Calamus", + "Ravenwood", + "Brevig Mission", + "La Yuca", + "Manilla", + "Lomax", + "Tununak", + "Sipsey", + "South Vienna", + "Topawa", + "Molena", + "Clearwater", + "Harbor Hills", + "Platea", + "Martell", + "Hubbardston", + "Pigeon Falls", + "Ullin", + "Rosser", + "Dewey Beach", + "Hartsville", + "Willow River", + "Kingsland", + "Watersmeet", + "Azure", + "Ranchitos Las Lomas", + "Kwigillingok", + "Lone Wolf", + "Delaware", + "Sand City", + "Jacksonboro", + "St. Regis Falls", + "Fountain", + "Lake Bridgeport", + "Wolsey", + "Arlington", + "Tyonek", + "Hurley", + "Wausau", + "Burkeville", + "San Geronimo", + "Lewis", + "Harts", + "Swan Quarter", + "Milton", + "Grenada", + "Cameron", + "Holiday Pocono", + "Troy", + "Union Valley", + "Remer", + "Staley", + "Keokee", + "Loda", + "Jamestown", + "Ranburne", + "Misquamicut", + "Irvington", + "West Chazy", + "Hopewell", + "Vaughn", + "Idaville", + "Weissport", + "Estral Beach", + "Allport", + "La Crosse", + "Alpena", + "Hale", + "Shelby", + "Holiday Lake", + "Stanhope", + "Clarksville", + "Old Green", + "Gayville", + "Twin Oaks", + "Glen Fork", + "Fredonia", + "Cumberland", + "Duck", + "Hemingway", + "Sinclair", + "Worthington", + "Lattimer", + "Summerfield", + "Reklaw", + "Shorter", + "Fairfield", + "Bostwick", + "Cedar Fort", + "Gopher Flats", + "Jamestown", + "Oak Grove", + "Lake City", + "Soso", + "Akiak", + "McDermott", + "Midwest", + "Tushka", + "Thayne", + "Loop", + "Bancroft", + "Wylandville", + "Shedd", + "Littlefield", + "Rayland", + "Stapleton", + "Holden", + "Lynnville", + "Bloomburg", + "Scotts Mills", + "Finleyville", + "Chloride", + "Howardwick", + "Wiley", + "Canal Lewisville", + "Lamont", + "Perrinton", + "Hoytsville", + "Gilman", + "St. Marys Point", + "Edom", + "Morrisville", + "Twin", + "Logan", + "Lehigh", + "Mildred", + "Medora", + "Nespelem", + "Pine Springs", + "Higgins", + "Edmondson", + "Williamsburg", + "Grady", + "Westwood Hills", + "Stanford", + "Lucas", + "Patterson", + "Lagro", + "Gypsum", + "Barnhill", + "Tullos", + "Richland", + "Hobart", + "Advance", + "Vann Crossroads", + "Sadorus", + "Oakview", + "Montross", + "Ellerslie", + "Marble", + "Elkhart", + "Otwell", + "Kingsley", + "June Lake", + "Dodd City", + "Zeba", + "Bayview", + "Lohrville", + "Quitaque", + "Orick", + "Mount Carbon", + "Hanoverton", + "Hatfield", + "Pueblo Pintado", + "Cove City", + "Hookerton", + "Bowlegs", + "Huntleigh", + "Brisbin", + "Midlothian", + "Camargito", + "Oktaha", + "Portland", + "Tonyville", + "McHenry", + "Vallonia", + "Maitland", + "East Glacier Park Village", + "Webster", + "East Duke", + "Gilbert", + "Salix", + "Whitefield", + "Greens Fork", + "Oval", + "Worthington Springs", + "Melfa", + "Jacona", + "Warwick", + "Montezuma Creek", + "St. Louisville", + "Barstow", + "Derby Acres", + "Marathon", + "Dover", + "Gibson", + "Jane Lew", + "Chokio", + "Reliance", + "Stanardsville", + "Jordan", + "Bagtown", + "Johnson Village", + "Dowell", + "Dixon", + "East Fultonham", + "Bunn", + "Saxman", + "Manorville", + "Kila", + "Charlton Heights", + "Union Grove", + "Calhoun", + "Mill Village", + "Ethel", + "Mount Pleasant Mills", + "McElhattan", + "Lakewood", + "Wallsburg", + "Alma", + "Terral", + "Red Feather Lakes", + "Retreat", + "Concord", + "Chireno", + "Berwind", + "Delanson", + "Montague", + "Salem", + "Martin City", + "Martin", + "Vinegar Bend", + "Callisburg", + "Sadler", + "Duncombe", + "Wells River", + "Fisher Island", + "Alma", + "Braswell", + "Naschitti", + "Thornton", + "Jasper", + "Relampago", + "Amherst Junction", + "Table Grove", + "Hayti", + "Culdesac", + "Damascus", + "Kilbourne", + "Kennedy", + "Morral", + "Princeton", + "Perry", + "Joy", + "Tutuilla", + "Norwood", + "New Haven", + "Linn", + "Stonerstown", + "Huxley", + "Woodville", + "Sardis", + "Tontogany", + "Salem", + "Wattsburg", + "Union", + "Mountain Park", + "Thomaston", + "Wayland", + "Acacia Villas", + "Willshire", + "Laytonsville", + "Banquete", + "Ocean Breeze", + "Bonnie", + "Greeleyville", + "Hillsboro", + "Tharptown", + "Brookford", + "New Strawn", + "Atlanta", + "Southview", + "Shannon", + "Mineral Bluff", + "Midland", + "Beallsville", + "Duncan", + "Custer City", + "Windsor Heights", + "Ambrose", + "Bostic", + "Altoona", + "Centerville", + "Paguate", + "Chamois", + "Westphalia", + "Emmons", + "Clarksburg", + "Dearing", + "Bunker", + "Hydaburg", + "Callery", + "Cantua Creek", + "Windthorst", + "Bell", + "Alta", + "Kivalina", + "Almena", + "Rutland", + "Hato Arriba", + "Indian Lake", + "Louviers", + "Turkey", + "Foyil", + "Maddock", + "North Woodstock", + "Bennett", + "Montrose", + "Soudan", + "Bruni", + "Otter Lake", + "Bowerston", + "Crenshaw", + "Fairview", + "Orient", + "Plymouth", + "Smithville Flats", + "Dillard", + "Bordelonville", + "Williston", + "Quenemo", + "Middleport", + "Big Springs", + "Garcon Point", + "Carbon", + "Merigold", + "Centralhatchee", + "Peavine", + "East New Market", + "Colesburg", + "Fountain Springs", + "Grover Hill", + "Empire", + "Tazlina", + "Jenkinsburg", + "Loomis", + "Newtonsville", + "North Hodge", + "Westover", + "Hermleigh", + "London Mills", + "Bandana", + "Empire", + "Macks Creek", + "Whittemore", + "Alexander", + "Adelphi", + "Vintondale", + "Wenden", + "San Patricio", + "Trenton", + "Sparkman", + "Hamilton", + "Hanska", + "Rhine", + "Akron", + "Melvern", + "Watauga", + "Forest Hills", + "Mondamin", + "Stirling City", + "Vienna", + "Tibes", + "Ogilvie", + "Laguna Seca", + "Bowers", + "Morton", + "Medicine Lake", + "Barrville", + "Between", + "Cove", + "Eustis", + "Letts", + "West Falls", + "Deweyville", + "Gilbertsville", + "Tehama", + "Smithton", + "Wales", + "Pine Point", + "Grays Prairie", + "Mound Valley", + "Ekalaka", + "Rennert", + "Optima", + "Chacra", + "Coyle", + "Columbus City", + "Rivergrove", + "Ewing", + "Bonney", + "Pinos Altos", + "Barwick", + "Farnham", + "Turon", + "Berrysburg", + "Beaverdam", + "Gordonville", + "Spring Ridge", + "Gowen", + "Leslie", + "Orleans", + "Elberta", + "Sulphur Springs", + "Maytown", + "Hartford", + "Virginville", + "Seventh Mountain", + "Draper", + "Meridian", + "Dustin", + "Ringsted", + "Gilgo", + "Hamilton", + "Lakeview", + "Napakiak", + "Embarrass", + "Henderson", + "Zihlman", + "Manvel", + "Fairfield", + "Hustonville", + "Redford", + "White Lake", + "Buffalo", + "Cofield", + "Hickory Hills", + "Nickerson", + "Duncan", + "Pomona", + "Declo", + "Abbott", + "Samak", + "Bell Arthur", + "Mount Charleston", + "Crucible", + "Blanket", + "Seama", + "Deer Park", + "Clover", + "Holcomb", + "Mount Aetna", + "St. Maurice", + "Mentone", + "North Miami", + "Donahue", + "St. Petersburg", + "Davenport", + "Round Lake", + "Xenia", + "Bear Lake", + "Carp Lake", + "Snover", + "Goshen", + "Holy Cross", + "Sparland", + "Grand Rivers", + "Kaw City", + "Bronwood", + "Ages", + "Boone", + "Giltner", + "Friendship", + "Bagley", + "Arenzville", + "Bud", + "Madison", + "Belgium", + "Mexico", + "Lakeridge", + "Fairmount", + "Dalton", + "Koyuk", + "Sterling", + "Glencoe", + "Wetmore", + "Bloxom", + "Verdunville", + "Capon Bridge", + "Bellflower", + "Sorrento", + "Kennard", + "Old Brownsboro Place", + "Wheatland", + "Lake Almanor Peninsula", + "Hoven", + "Bennington", + "Turah", + "Arnoldsville", + "Sibley", + "Woodson", + "Columbia", + "Ghent", + "South Mountain", + "Underwood", + "Silo", + "Farmington", + "Pitsburg", + "Ridgeville Corners", + "Northmoor", + "Bailey Lakes", + "Wesley", + "Rincon", + "Woodburn", + "New Richmond", + "Center Ridge", + "Arimo", + "Westport", + "McClusky", + "Plumas Eureka", + "Pleasant Plains", + "Good Hope", + "Bethania", + "South Solon", + "Bradenville", + "Latham", + "King William", + "Churdan", + "West Logan", + "Clarington", + "Centerport", + "Newfolden", + "Merna", + "Ben Avon Heights", + "Coyote Flats", + "New Home", + "Ellenboro", + "Langleyville", + "Havana", + "Boody", + "Gagetown", + "Dyess", + "McGregor", + "Bullhead", + "Clear Spring", + "Nichols", + "Livermore", + "Alto Pass", + "Remington", + "Strasburg", + "Sadieville", + "Red Jacket", + "Norman", + "Alvarado", + "Hardyville", + "Plymouth", + "Taneyville", + "Parcelas Mandry", + "Rockhill", + "Rosebush", + "Sharpsburg", + "Western Grove", + "Charlotte", + "Pound", + "Umapine", + "Port Jefferson", + "Easton", + "La Valle", + "Racine", + "King Salmon", + "Lake Sherwood", + "Nickelsville", + "Chataignier", + "Cuyuna", + "Clarkedale", + "Rock Springs", + "Odessa", + "Spokane", + "Cash", + "Glen White", + "Yatesville", + "Cedar Rapids", + "Bland", + "Fertile", + "Central Bridge", + "Florence", + "Garrison", + "Pedricktown", + "Pleasanton", + "Newcomb", + "Jeffersonville", + "Fenton", + "Mineral", + "Spring Mills", + "Wardell", + "Fairmount", + "Wanette", + "Ila", + "Centerville", + "Belfry", + "Carmen", + "Chester", + "Joseph", + "Trapper Creek", + "Grandview", + "Irondale", + "Mahtowa", + "Pilger", + "Hunters Hollow", + "Gamaliel", + "Mariaville Lake", + "Wilcox", + "Amboy", + "Glendon", + "Gaines", + "Bunceton", + "Tremont City", + "South Mansfield", + "Henrietta", + "Silver Creek", + "Nenana", + "Iron Gate", + "Cobbtown", + "Gilman City", + "Limestone", + "Chewton", + "St. George Island", + "Viola", + "Fairwater", + "Walland", + "Woodland Mills", + "Adams", + "Edmundson Acres", + "Cerulean", + "Brazos Bend", + "Ransom", + "Rose", + "Atkinson", + "Tishomingo", + "Esto", + "Vernon", + "Rolla", + "Scales Mound", + "Vina", + "Lewisberry", + "Satilla", + "Ludlow", + "Russellville", + "Bonfield", + "Sussex", + "Norway", + "Cashion Community", + "Trinidad", + "Crystal Lakes", + "Green Camp", + "Secor", + "Enola", + "Pinehurst", + "Sigel", + "Badger", + "Smoketown", + "Vanlue", + "Olivet", + "Butternut", + "Bethpage", + "Cibola", + "Mineral Point", + "Katie", + "Athalia", + "Blunt", + "Milan", + "Jennings", + "Belview", + "Scottsville", + "Conesus Hamlet", + "Christoval", + "Boneau", + "Freeburn", + "Malcolm", + "Pierson", + "Comfrey", + "Hooven", + "Sabillasville", + "Birch Hill", + "Askov", + "Darwin", + "Breckenridge", + "Grubbs", + "Woodland", + "Palisades", + "Gwynn", + "Barryton", + "Pocahontas", + "Cumbola", + "Sugarloaf", + "Mooreland", + "Minburn", + "Raymondville", + "Mowrystown", + "Hildreth", + "Lacona", + "White Lake", + "Scandinavia", + "Renner Corner", + "Vergas", + "Eschbach", + "Rising City", + "Mahaffey", + "New Galilee", + "Anchor Bay", + "Pakala Village", + "Winkelman", + "Mardela Springs", + "East Germantown", + "Anderson", + "Shaft", + "Fronton Ranchettes", + "Downing", + "Calumet", + "Oberlin", + "Prairie City", + "Sangrey", + "Grant", + "Elrama", + "White Oak", + "Deal Island", + "Bethune", + "St. John", + "Coaldale", + "Ford Cliff", + "Tolchester", + "Thompsons", + "Clarksburg", + "Belle Rive", + "Lewisville", + "Roca", + "Garfield", + "Manton", + "Castle Valley", + "Carpenter", + "Rio Oso", + "Freeport", + "Buckhorn", + "Titanic", + "Wheeler", + "Max", + "Wainscott", + "Trent", + "Cumberland", + "Warrens", + "Fredonia", + "Nipinnawasee", + "Lowell", + "Allen", + "Kermit", + "Montmorenci", + "Ellis Grove", + "Puckett", + "Mesa", + "Gladstone", + "Jeffers Gardens", + "St. Martin", + "Laceyville", + "Valley Grove", + "Chamisal", + "Oak Shores", + "Powhatan", + "Menlo", + "Wilton", + "Hume", + "Dexter", + "Varna", + "Bemus Point", + "Del Muerto", + "Bellevue", + "Turin", + "Ellsworth", + "Dawson", + "Kukuihaele", + "Mindenmines", + "Leroy", + "San Mateo", + "Somerville", + "Hersey", + "New Canton", + "Jeffers", + "Dobbins", + "Ryan", + "Arona", + "Rudd", + "St. Mary", + "South Haven", + "Meadow Bridge", + "Grangeville", + "St. Elizabeth", + "Mayetta", + "Newcastle", + "Callender", + "Krakow", + "Defiance", + "South Glastonbury", + "St. Michael", + "Wilcox", + "Wahpeton", + "Brimhall Nizhoni", + "Friesland", + "Dallas", + "Lohrville", + "Bigelow", + "Sodaville", + "Harvey Cedars", + "Pattonsburg", + "Grand Detour", + "Hudson", + "Orchard", + "Beulah", + "Arley", + "Betsy Layne", + "Crystal", + "Maynard", + "Spillville", + "Agra", + "Channing", + "Clarks", + "Marlboro", + "Granton", + "Corsica", + "Wallace", + "Farnhamville", + "Sale City", + "Napier Field", + "Canton", + "Uniontown", + "Fargo", + "Fort McDermitt", + "Universal", + "Nelson", + "Clear Lake", + "Bellflower", + "Cincinnati", + "Frazer", + "Castorland", + "Orient", + "Big Clifty", + "Keystone", + "Russian Mission", + "Lorimor", + "Neche", + "Wallins Creek", + "Emerson", + "St. Pierre", + "Earl Park", + "Anaktuvuk Pass", + "Martinton", + "Conesville", + "Mansfield", + "Clearfield", + "Apple River", + "Annapolis", + "Lawrence", + "Grantfork", + "New Ross", + "Evaro", + "Swanville", + "Simms", + "Fair Oaks", + "Russell", + "Neeses", + "Pacific Junction", + "White Plains", + "Creighton", + "Mount Gretna Heights", + "Tennyson", + "Greigsville", + "Iredell", + "Alba", + "Burlington", + "Wallula", + `Morgan's Point`, + "Scandia", + "Darrouzett", + "Libertyville", + "Strathmoor Manor", + "Enchanted Oaks", + "Elim", + "Briggs", + "Nectar", + "St. Peter", + "Ney", + "New Point", + "Marengo", + "Branch", + "Malden", + "Harrisburg", + "Dietrich", + "Fincastle", + "Buffalo", + "Cameron", + "Patrick", + "Danbury", + "Santee", + "Cazadero", + "Lost Lake Woods", + "Olney Springs", + "Baldwin", + "Anderson", + "Clacks Canyon", + "Chokoloskee", + "Gardner", + "Wyoming", + "Cressey", + "Clayville", + "Ruby", + "Biggers", + "Ceylon", + "Camptonville", + "Ute", + "Wineglass", + "Stanton", + "Fayetteville", + "Wallace", + "Eastville", + "Mount Calm", + "Bulger", + "Burnettsville", + "Mitchellville", + "Zuehl", + "Howardville", + "Sharpsburg", + "Kiana", + "Wharton", + "Franklin", + "Chuichu", + "New Albany", + "El Nido", + "Amana", + "Flat Top Mountain", + "Niobrara", + "Aquilla", + "La Paloma Addition", + "East Rocky Hill", + "Vincent", + "Davy", + "Aberdeen Gardens", + "Butteville", + "Twin Groves", + "Scotland", + "Gorham", + "Kratzerville", + "So-Hi", + "Cornish", + "Forest", + "Stilesville", + "Sandy Ridge", + "Nordic", + "Canjilon", + "Bramwell", + "Wilsall", + "Winchester Bay", + "Broadlands", + "Bricelyn", + "Freetown", + "Tracy", + "North La Junta", + "Monaville", + "Goodland", + "Lake Lafayette", + "Beal City", + "Brooker", + "Northfork", + "Terril", + "Jeffersonville", + "Bicknell", + "Claremont", + "Platte Center", + "Mason", + "Bowbells", + "Bridge Creek", + "Belleview", + "Trilby", + "Muir Beach", + "Mount Olivet", + "Massena", + "Reader", + "Villa del Sol", + "Maunaloa", + "Edith Endave", + "Cruger", + "Flint Hill", + "Drummond", + "Newburg", + "Carbon Hill", + "Mannsville", + "Rushmore", + "Elderton", + "Middletown", + "Tolani Lake", + "Lynchburg", + "Nichols", + "Clipper Mills", + "Camp Dennison", + "Chewsville", + "Ballou", + "Kulm", + "Varnado", + "Toone", + "West Union", + "Buffalo", + "Blandburg", + "Tierra Grande", + "Manlius", + "Templeton", + "Cleo Springs", + "Orr", + "Fisk", + "Lancaster", + "Cane Beds", + "Lueders", + "Altenburg", + "San Mar", + "Felts Mills", + "Windsor Place", + "Cotton City", + "New Richmond", + "Maribel", + "Hyden", + "Grenora", + "Keysville", + "Kingston", + "Snoqualmie Pass", + "Lehigh", + "Scipio", + "Shipman", + "Arthur", + "Williamsville", + "Branchdale", + "Sunburst", + "Dinosaur", + "Quinby", + "Honor", + "Tunnelhill", + "Donalds", + "Mount Summit", + "Montgomery", + "White Stone", + "McVeytown", + "Alexandria", + "Saltillo", + "West Waynesburg", + "Cubero", + "Chase Crossing", + "West Liberty", + "Liberty", + "Unity", + "Delphos", + "Palisade", + "Clayton", + "Polk", + "Weston", + "Ruffin", + "Nanticoke", + "Eubank", + "Cedar Valley", + "Reserve", + "Pine Lakes Addition", + "Indiahoma", + "Koosharem", + "Glenview Hills", + "Dellroy", + "Sand Hill", + "Bascom", + "Pleasant Valley", + "Bowersville", + "New Marshfield", + "Frystown", + "Colt", + "Bloomingdale", + "Starr School", + "Epes", + "Hope", + "Raleigh", + "Roberts", + "Grey Eagle", + "Ridgeway", + "Arpelar", + "Meadow", + "West Burke", + "Dupont", + "Millfield", + "Midway", + "Nebo", + "Portage Des Sioux", + "Rockford Bay", + "Ione", + "Akron", + "Lee", + "Benton", + "Millbrook", + "Sunshine", + "Moro", + "Salt Lick", + "Morgan Farm", + "Hester", + "Virgil", + "Bellewood", + "Twain", + "Little Eagle", + "Fulton", + "Lee", + "Evening Shade", + "Dennard", + "Moshannon", + "Avon", + "Chauncey", + "Oso", + "Cherry Fork", + "Beaverville", + "Sawyer", + "Brownsboro Village", + "Kunkle", + "Johnson", + "Shoal Creek Drive", + "Nett Lake", + "Mecca", + "Wakita", + "McLemoresville", + "Adak", + "Minocqua", + "Langford", + "Arboles", + "Inchelium", + "Wilmont", + "Ivanhoe", + "Blue Diamond", + "Grampian", + "Industry", + "Eakly", + "Havana", + "Gaastra", + "Skamokawa Valley", + "Lowell", + "Garden Prairie", + "Beulah", + "Kennard", + "Seymour", + "Leasburg", + "Berrydale", + "La Jara", + "Spelter", + "Gordon", + "Hannibal", + "Stratton", + "St. Marks", + "Lake", + "Beech Mountain", + "Dyer", + "Beauregard", + "Hiltonia", + "Gridley", + "Fiddletown", + "Beaux Arts Village", + "New Munich", + "Parkdale", + "Luther", + "Waldo", + "Wyandotte", + "Harpers Ferry", + "Proctorsville", + "West Pocomoke", + "Diggins", + "Moline", + "Sagaponack", + "Riverland", + "Texhoma", + "Mize", + "Central", + "Armington", + "Goodrich", + "Lyman", + "Jaconita", + "Midland", + "Chilhowee", + "Meeteetse", + "Morganton", + "Greasy", + "Oslo", + "Coffeeville", + "Laclede", + "Bison", + "Rosemont", + "Spring Grove", + "Ethan", + "McVille", + "Aristes", + "Unadilla", + "Bucyrus", + "Hanaford", + "Troxelville", + "West Union", + "Copperhill", + "Amazonia", + "Helenville", + "Bluejacket", + "Deer Creek", + "Gloster", + "Sanctuary", + "Thebes", + "Sheldahl", + "Casnovia", + "Skyland", + "Arcola", + "Lawn", + "Kino Springs", + "Williams", + "Coahoma", + "Georgetown", + "Lazy Y U", + "Kingston", + "Cambridge", + "Dozier", + "Sterling", + "Fort Supply", + "Creekside", + "Inglewood", + "Pineland", + "Francis", + "Bayside", + "Tonalea", + "Clarks Hill", + "Buxton", + "East Liberty", + "Pulpotio Bareas", + "Fort Atkinson", + "McCallsburg", + "Brandon", + "Cottontown", + "Bronson", + "Imbler", + "Leeds", + "Catherine", + "Ralston", + "Rosa", + "Spangle", + "Ranshaw", + "Panama", + "Shickley", + "Garretts Mill", + "Dutton", + "Brockton", + "Panorama Park", + "Mill Creek", + "Clifford", + "Rowe", + "Blue Springs", + "Stoystown", + "LaCrosse", + "Junction City", + "Las Palomas", + "Milburn", + "Glen Aubrey", + "Altamahaw", + "Tuluksak", + "Schellsburg", + "Uriah", + "Elliott", + "Plainville", + "Delta", + "Searchlight", + "Hico", + "Humbird", + "Urie", + "Augusta", + "Turtle Lake", + "Downsville", + "Kellnersville", + "Tesuque Pueblo", + "Mill Creek", + "Vernon", + "Marshall", + "Harrisonburg", + "De Tour Village", + "Etowah", + "Hoytville", + "Staatsburg", + "Kidder", + "Holloway", + "Coupland", + "Hobgood", + "Menifee", + "Yorktown", + "Nightmute", + "Osage", + "Garden City", + "Diagonal", + "Cromberg", + "Fargo", + "Wabeno", + "Betterton", + "Steamboat", + "Blooming Valley", + "Burdett", + "Kinta", + "Makemie Park", + "McGrath", + "Ivor", + "Marty", + "Fayetteville", + "Kistler", + "Bainville", + "Glidden", + "Granjeno", + "Packwood", + "Uniondale", + "Chunky", + "Newburg", + "Cheyney University", + "Dublin", + "Top-of-the-World", + "Eek", + "McConnells", + "Millerton", + "Pittman", + "Vadito", + "Rossmore", + "Newtok", + "Arkansas City", + "Arnold City", + "Floyd", + "Moose Pass", + "Nesika Beach", + "Newdale", + "Vineland", + "Lincoln", + "Hume", + "Lester", + "Frankford", + "Waco", + "Lower Kalskag", + "Dutton", + "Latexo", + "West Stewartstown", + "Brainard", + "Pueblitos", + "The Highlands", + "Singer", + "Tira", + "Deep Water", + "Watts", + "Druid Hills", + "City of Creede", + "Farber", + "Vernon Center", + "Kenney", + "Alma", + "Hop Bottom", + "Sawyer", + `Parker's Crossroads`, + "Hood", + "Wheeler", + "Diamondhead Lake", + "Burns", + "Petersburg", + "Taloga", + "Cross Timber", + "Bowie", + "Lakeland Shores", + "Dunlo", + "Winslow", + "Accident", + "Mooresboro", + "Nord", + "Cedar Hill", + "Idaville", + "Jane", + "Arlington", + "Higgston", + "Handley", + "Superior", + "Artois", + "Salem", + "St. Thomas", + "Kelleys Island", + "Hillsdale", + "Little York", + "McCausland", + "Irwin", + "Rives", + "Chester", + "Clyde Park", + "Manzano Springs", + "Walker Lake", + "Fleischmanns", + "Hiwassee", + "Campbell Hill", + "Fillmore", + "Liberty", + "Mitiwanga", + "Risco", + "Cazenovia", + "Sanborn", + "Blackwell", + "Hamilton", + "Hackensack", + "Richland Springs", + "Mingo", + "Townville", + "Peterson", + "Rushville", + "Arpin", + "Kempton", + "Villanueva", + "Arcadia", + "Four Bears Village", + "Prague", + "Hollister", + "Norway", + "Penn Lake Park", + "Sportsmen Acres", + "Bristol", + "Longton", + "Centennial", + "Lodge Pole", + "Rienzi", + "Lore City", + "Lisbon", + "New Athens", + "Maitland", + "Juliustown", + "Atalissa", + "Bath", + "Midland", + "Imperial", + "La Feria North", + "Cumberland City", + "Flat Rock", + "Eureka", + "New Douglas", + "Sherwood", + "Finlayson", + "Avant", + "Marshall", + "Port Clinton", + "Hartsburg", + "Rochester", + "Barton Hills", + "Reed Point", + "Lake Angelus", + "Manila", + "Rensselaer Falls", + "Jacumba", + "Plumwood", + "Cold Brook", + "Oxbow", + "Dakota", + "Prattsville", + "Oretta", + "Poynor", + "Gracemont", + "Hartland", + "Flemington", + "Elco", + "San Carlos II", + "Hadar", + "Pukwana", + "Polk", + "Deseret", + "Bailey", + "Grahamtown", + "Arcadia", + "Lynnville", + "Endicott", + "Brule", + "Warren City", + "Bronson", + "Bliss", + "Prescott", + "Kendrick", + "Youngstown", + "Greenleaf", + "Dannebrog", + "East Lynne", + "Grimes", + "Keams Canyon", + "Auburn", + "Ghent", + "Crows Landing", + "Belfry", + "Kampsville", + "Ruma", + "Rutland", + "Sandy Creek", + "Clifton", + "Plato", + "Weott", + "Granville", + "Coalmont", + "Belmont", + "Wallaceton", + "Hysham", + "Wilmot", + "Beaver Creek", + "Boston", + "Empire", + "Middletown", + "Montrose", + "Kensington", + "Alma", + "Disney", + "Keachi", + "Nordheim", + "Goose Creek", + "Starks", + "Joppa", + "Tupelo", + "Butte", + "Freedom Plains", + "Kitzmiller", + "Dupont", + "Gerton", + "Richville", + "Clay Center", + "Cook", + "Velarde", + "Loraine", + "Southampton Meadows", + "Lester", + "Saginaw", + "Steamboat Rock", + "Butlertown", + "San Carlos I", + "Pisinemo", + "Gans", + "Arlington", + "Vicco", + "Cove Neck", + "Campbell", + "Salisbury Mills", + "Middle River", + "Mercer", + "McClure", + "Northport", + "Canalou", + "Blevins", + "New Falcon", + "Goldston", + "Farley", + "East Side", + "Indian Wells", + "Good Hope", + "Kelley", + "Lowry", + "Donaldson", + "Cedar Rock", + "Gary City", + "Eagleville", + "Springdale", + "Dodson", + "Ray", + "Poy Sippi", + "Skyline", + "Ovid", + "Tennyson", + "Herndon", + "Winter", + "Yaak", + "Richfield", + "Soldier Creek", + "Sunbury", + "Juda", + "Delaware Park", + "Mapleville", + "McCord Bend", + "Burnt Ranch", + "Gatesville", + "Hoskins", + "Uniopolis", + "Reynolds", + "Hosston", + "Hollandale", + "Amargosa", + "Lac La Belle", + "Weogufka", + "Moscow", + "Everton", + "Speculator", + "Elizabethtown", + "Hanalei", + "Roberts", + "Stapleton", + "Damon", + "Phillips", + "North Cleveland", + "Quechee", + "Hillcrest Heights", + "Millerton", + "Garland", + "Goldfield", + "Loganville", + "Magnetic Springs", + "Wheatley", + "Dungannon", + "Short", + "Breathedsville", + "Kellerton", + "Glenmont", + "Newsoms", + "Woodland", + "Doylestown", + "Bradfordsville", + "Edwardsport", + "Michiana Shores", + "Potsdam", + "Rhodes", + "Pymatuning South", + "Bombay Beach", + "Nakaibito", + "Boyne Falls", + "Pillow", + "Nehalem", + "Lower Elochoman", + "Grand View-on-Hudson", + "Rockholds", + "Hedgesville", + "Copeland", + "Missouri City", + "Ewing", + "Rattan", + "Spring Mill", + "Paint Rock", + "Westport", + "Hindsboro", + "South Komelik", + "Seatonville", + "Haworth", + "Preston-Potter Hollow", + "Eau Claire", + "Vesta", + "Grier City", + "Loma Linda East", + "Greeley", + "Ramer", + "Sandy Hollow-Escondidas", + "Wilton", + "North Light Plant", + "Tunnelton", + "Martinsburg", + "Carolina", + "Maxwell", + "Carthage", + "Natoma", + "Mine La Motte", + "Butler", + "Suissevale", + "Hanna", + "Beclabito", + "Friendship", + "Wakonda", + "Nerstrand", + "Little Mountain", + "Nadine", + "Daisytown", + "Templeton", + "Goldsmith", + "Prichard", + "Durbin", + "Clinchco", + "Olmsted", + "Coffee City", + "Mays Lick", + "Pitts", + "Glendale", + "Sutcliffe", + "Fire Island", + "Parrottsville", + "Liscomb", + "Callao", + "Cameron", + "Oakdale", + "Oakdale", + "Lupton", + "Franklin", + "Abeytas", + "Witmer", + "Casar", + "Brocton", + "Turkey", + "North Loup", + "Goofy Ridge", + "Clifton", + "Oswego", + "Elk City", + "Orwin", + "Halfway", + "Glenvil", + "Americus", + "San Miguel", + "Sierra Brooks", + "Silex", + "Potter", + "Quimby", + "Bazine", + "Bloomfield", + "Brewster", + "Chaseburg", + "Benton Ridge", + "Lebanon", + "Lost Bridge Village", + "Burton", + "Chickasaw", + "Post Lake", + "Tescott", + "West Okoboji", + "Woodstock", + "Parker", + "Kapalua", + "Goodyear Village", + "Norwood", + "Caryville", + "Nazareth", + "Freedom", + "Progreso Lakes", + "Waverly", + "Plummer", + "Medina", + "Odell", + "Ridgeway", + "Carbon Hill", + "La Sal", + "Whites Landing", + "Tarlton", + "Cuba", + "Eutawville", + "Vredenburgh", + "Bosworth", + "Bode", + "Madrid", + "Bertram", + "Lockridge", + "Kinloch", + "Iglesia Antigua", + "Tilden", + "Copake Falls", + "Bowler", + "Clark", + "Graham", + "Switz City", + "Hedley", + "Ingalls", + "Lytton", + "Red Rock", + "Summit", + "Roscoe", + "Omer", + "Westside", + "Bedford", + "Iron City", + "Magnolia", + "Opdyke", + "Conception", + "Alderson", + "Natural Bridge", + "Creekside", + "Foster Center", + "Snyder", + "Pulaski", + "Dexter", + "Snow Lake Shores", + "Scotia", + "Somerville", + "Rachel", + "Meadow Grove", + "Victoria", + "Keswick", + "Colony", + "Evergreen", + "Morristown", + "Davidson", + "Lyon", + "Annona", + "Long Pine", + "Finger", + "Meridian", + "Smithland", + "Silver City", + "Point Reyes Station", + "Cherokee Pass", + "Tetonia", + "Charlton", + "Persia", + "Hall Summit", + "Plumville", + "Nashua", + "Ridgeway", + "Marble Rock", + "Colburn", + "Schlater", + "Chapman", + "Belleville", + "Millport", + "Hager City", + "Centertown", + "Easton", + "Pleasure Bend", + "Oak City", + "Wagon Mound", + "Old Monroe", + "Lindcove", + "Sims", + "Yankee Hill", + "East Cape Girardeau", + "Rembert", + "Newry", + "Spartansburg", + "Bagley", + "Applewold", + "Coalton", + "Piffard", + "Harrisburg", + "Charlo", + "Maplewood Park", + "Powers Lake", + "Nichols", + "Stonefort", + "Blakesburg", + "Custer", + "Garner", + "Jansen", + "Willisburg", + "Rentz", + "Alpena", + "Davis", + "Granada", + "Ross", + "Manns Choice", + "Lumber City", + "Seminary", + "Enon Valley", + "Pine Ridge", + "Jugtown", + "Encinal", + "Larwill", + "Pajaro Dunes", + "Clayville", + "Cecil", + "Wyatt", + "Rockland", + "Hodges", + "Dunfermline", + "Carytown", + "Davenport", + "Deferiet", + "Loma Vista", + "New Trenton", + "Compton", + "Rock City", + "Monson", + "Malone", + "Callaghan", + "Oaks", + "Potlicker Flats", + "Tynan", + "Lancaster", + "Delta", + "Red Cliff", + "Cranfills Gap", + "Rewey", + "Payne Gap", + "Canby", + "Vandalia", + "Poyen", + "Ellenton", + "Rayville", + "Broeck Pointe", + "Osgood", + "Albright", + "Kylertown", + "Harpers Ferry", + "Monroe", + "Eugenio Saenz", + "Kingston Mines", + "Bear Dance", + "Rader Creek", + "Perry", + "Vergennes", + "Markleysburg", + "Hendrum", + "Westwood", + "Lawrence", + "Shiloh", + "Pollocksville", + "Neilton", + "Merino", + "Westville", + "Grand Beach", + "Seltzer", + "Fruithurst", + "Prairie Home", + "Whatley", + "Dixie", + "Cave-In-Rock", + "Beaver Creek", + "Ephraim", + "Sherrodsville", + "Almira", + "Waukeenah", + "Rushville", + "Strawberry", + "West Harrison", + "Boligee", + "River Bottom", + "Kimballton", + "Colome", + "Empire", + "Railroad", + "Ebro", + "Lenapah", + "Hawkins", + "Trenton", + "New Hampshire", + "Finesville", + "De Soto", + "Cairo", + "Gonvick", + "West Peavine", + "Rowesville", + "Lakota", + "Bowlus", + "Airport Road Addition", + "Luana", + "Yankee Hill", + "Covington", + "Tehuacana", + "Manderson-White Horse Creek", + "East Laurinburg", + "Freeman Spur", + "Riverton", + "Wedgewood", + "Sautee-Nacoochee", + "Casstown", + "Talala", + "Harcourt", + "Buckingham", + "Pacific Beach", + "Simms", + "Dorrington", + "Waiohinu", + "Biggsville", + "Lacassine", + "Kaycee", + "Dalton", + "Damascus", + "Burlington", + "Hartleton", + "La Carla", + "Cuylerville", + "Anthoston", + "Gordonville", + "Quantico", + "Beatrice", + "Goodnews Bay", + "Hickory", + "Climax Springs", + "Coleman", + "Nicut", + "Staples", + "Royal", + "Saline", + "Siloam", + "Keyes", + "Altamont", + "Reserve", + "Hanley Falls", + "Holland", + "Sparta", + "Lake George", + "Leach", + "Laketown", + "Le Raysville", + "Oakford", + "Armstrong", + "Buckman", + "Malverne Park Oaks", + "Chula Vista", + "Stockport", + "Utica", + "Crosby", + "Ridgeland", + "Redvale", + "Sebastopol", + "Depauville", + "Cyrus", + "Arrowsmith", + "Olde West Chester", + "Kilbourne", + "Browntown", + "Lamoille", + "Albion", + "Matheny", + "Seldovia", + "Stratton", + "Yarrowsburg", + "Whiterocks", + "Ionia", + "East Hodge", + "Double Spring", + "Timberon", + "Shirley", + "Hollandale", + "Cape May Point", + "Calvin", + "White Oak", + "Washingtonville", + "Lodgepole", + "Chesterhill", + "Madaket", + "Ladora", + "Dexter", + "Annex", + "Freeborn", + "Bishop", + "Panama", + "Marquez", + "Cromwell", + "Oakley", + "Reeltown", + "Donovan", + "St. Francisville", + "Humnoke", + "Numidia", + "Star Junction", + "Weston", + "Oil Trough", + "Everest", + "Haugen", + "Loma Grande", + "Crown", + "Fall River Mills", + "Richland", + "Catawba", + "Portage", + "Cainsville", + "Egan", + "Rippey", + "Bonesteel", + "Sky Valley", + "Gackle", + "Mitchell Heights", + "Riverside", + "North Acomita Village", + "Byars", + "Centerview", + "Lerna", + "Burkettsville", + "East Nicolaus", + "Elizabethtown", + "Scott", + "New Deal", + "Navajo Mountain", + "Hunker", + "Davenport", + "Stickney", + "McEwensville", + "Pryorsburg", + "Silver Creek", + "Malcom", + "Riverbend", + "Carbon", + "Waldo", + "Bowles", + "Cary", + "Horseshoe Lake", + "Monterey Park Tract", + "Toms Brook", + "Bayside", + "Spring Creek", + "Delight", + "Newport Center", + "Allenwood", + "Herman", + "Leland", + "Bradshaw", + "Pamelia Center", + "Kenton", + "Emigrant", + "St. Thomas", + "Grand Junction", + "Zaleski", + "Maurice", + "New Hampton", + "Lake Ann", + "Rollinsville", + "Alberta", + "Stonewall", + "Ardentown", + "Rowley", + "Glen Echo", + "Blue Mound", + "Deep River", + "Searles", + "Arcadia", + "Castalia", + "Protivin", + "Falcon", + "Howe", + "St. Charles", + "Elliott", + "Boykin", + "Hays", + "Grays River", + "Wildwood", + "Rockville", + "Thompson", + "Bartley", + "Narrowsburg", + "Lyons Switch", + "Carson", + "Mapleton", + "Manchester", + "Athens", + "Bruning", + "Homeland", + "Princeton", + "Winston", + "Golf", + "Conroy", + "Savage", + "Brodnax", + "Cedar Crest", + "Emery", + "Georgetown", + "Fidelity", + "Freedom", + "Prescott", + "Old Washington", + "New Holland", + "Lake Lorraine", + "Drake", + "Paxtonville", + "Farmersburg", + "Bradshaw", + "Iliff", + "Hazleton", + "Interlochen", + "Michigan City", + "Fowlerton", + "Westfir", + "Bush", + "Garden City", + "Jemez Springs", + "Oakhurst", + "Lewistown", + "Newcastle", + "Anderson", + "Augusta", + "Palco", + "Roseland", + "Smartsville", + "Kelliher", + "Theodosia", + "Sumner", + "Bellmont", + "Milton", + "Hallam", + "Island Park", + "Milligan", + "Parker", + "Sobieski", + "Sawyerville", + "Mentasta Lake", + "Wingate", + "Jennings", + "Kiron", + "Tajique", + "Lewistown Heights", + "Auburntown", + "Conetoe", + "Hiddenite", + "Allerton", + "Sylvan Grove", + "Crayne", + "Pajarito Mesa", + "Navajo Dam", + "Ragsdale", + "Fairfield", + "Gumbranch", + "Groveland Station", + "County Line", + "Gentryville", + "Crawfordsville", + "Longdale", + "Flatwoods", + "Lead Hill", + "Henry", + "Rockport", + "Big Spring", + "Tower City", + "Vienna", + "Woodbury", + "Gladstone", + "Bonnieville", + "James City", + "Uniontown", + "Courtland", + "Wadsworth", + "Miamiville", + "Lynn", + "East Springfield", + "Modale", + "Days Creek", + "Parnell", + "Milledgeville", + "Shungnak", + "Chancellor", + "St. Hilaire", + "Black Oak", + "Barry", + "Mount Clare", + "Toronto", + "Fayette", + "Blain", + "Dixie Inn", + "Defiance", + "Climax", + "Pulaski", + "Braden", + "Wheeling", + "Coulter", + "Sturgis", + "Jamestown", + "Murdock", + "Ashland", + "Quinwood", + "Stoney Point", + "Gifford", + "Cragsmoor", + "Greensboro Bend", + "Downing", + "Los Alvarez", + "High Bridge", + "Newington", + "Langston", + "Worley", + "Brookside", + "Ambler", + "Lindsay", + "La Escondida", + "Cove", + "Neosho Rapids", + "New Ringgold", + "Hundred", + "Hornsby", + "Renwick", + "Climax", + "Almyra", + "East Gillespie", + "Tiro", + "Garden", + "Maalaea", + "Knobel", + "Stantonville", + "Glencoe", + "Genoa", + "Los Altos", + "Donnelsville", + "Walterhill", + "Vanduser", + "Longville", + "Milladore", + "Rodessa", + "Salton Sea Beach", + "Free Union", + "El Moro", + "Bayard", + "Westport", + "Donaldson", + "Schneider", + "Ransom", + "Berry", + "Carlton", + "Hillrose", + "Cornfields", + "Emmett", + "Chidester", + "Otis", + "McNabb", + "Shiloh", + "Melrose", + "Maquon", + "Richburg", + "Earl", + "Robertsville", + "Moran", + "Orrstown", + "Walkerville", + "Prado Verde", + "Medicine Bow", + "Louin", + "Henderson", + "Linneus", + "Lake Tekakwitha", + "Dickens", + "Dwight", + "Mulhall", + "Sammons Point", + "Kingsville", + "Shaktoolik", + "Gulfcrest", + "Iroquois", + "Perrytown", + "White Oak", + "Brashear", + "East Point", + "Mallard", + "Brule", + "Alpine", + "Toccopola", + "Easton", + "Bovill", + "Eckley", + "Rowena", + "Temperanceville", + "Glenbrook", + "Dripping Springs", + "Snelling", + "Huslia", + "Wardensville", + "Itmann", + "Klagetoh", + "Repton", + "Willow Creek", + "Talmo", + "Dryville", + "Hendricks", + "Fayetteville", + "Lyman", + "Skidmore", + "Geneseo", + "Mingus", + "Dubberly", + "Floridatown", + "Indianola", + "Copake Hamlet", + "Corunna", + "Johnson", + "Walker", + "Halbur", + "Bay View", + "Plattville", + "Dedham", + "Cedar Point", + "Hewitt", + "Heath", + "Lucky", + "Chambers", + "Kensett", + "Matlacha Isles-Matlacha Shores", + "Witherbee", + "Waterloo", + "Parrott", + "Marietta", + "Greenhorn", + "Scranton", + "Plainville", + "Bushton", + "Arcadia", + "Sasser", + "Garvin", + "Goshen", + "Yorkville", + "Deloit", + "Clarksdale", + "Ponderosa", + "Kremlin", + "Fulton", + "Charleston Park", + "Valle", + "Rocheport", + "Diller", + "Freedom Acres", + "Corwith", + "Echo", + "Howell", + "Herminie", + "Albion", + "Morrison Crossroads", + "Glenwood", + "Sanford", + "Wolbach", + "Wellsville", + "La Motte", + "Davenport Center", + "Midville", + "Rock River", + "Trowbridge", + "Kaktovik", + "Prescott", + "Spring Branch", + "Gays", + "White Hills", + "Long", + "Alice Acres", + "Cairo", + "Dillon Beach", + "Tecolotito", + "Benjamin", + "Rufus", + "Buck Run", + "Greensburg", + "Waggoner", + "Amherst", + "Fowlerton", + "Parmele", + "Moscow", + "Winston", + "Linn Creek", + "Granville", + "Braggs", + "Wixon Valley", + "Villard", + "Goltry", + "Trinity Village", + "Jefferson", + "Soper", + "Fairview", + "Brookville", + "Sugar City", + "Table Rock", + "Tuleta", + "Centertown", + "Bakerhill", + "Malinta", + "Parkdale", + "Ironton", + "Carmine", + "Backus", + "Avoca", + "Sibley", + "Hunter", + "Hope", + "New Alexandria", + "Ivesdale", + "Delta", + "Alta Vista", + "Le Roy", + "Carter", + "Clifford", + "Keo", + "Fresno", + "Fields Landing", + "Metaline Falls", + "Eagle Nest", + "Collinston", + "Utica", + "Dixon", + "Swall Meadows", + "Walcott", + "Highland", + "Tollette", + "Ten Sleep", + "Martelle", + "Castleford", + "Boulder Flats", + "Platter", + "Bartow", + "Sheep Springs", + "Big Cabin", + "Santa Rita", + "New Suffolk", + "Delco", + "Redfield", + "Maywood", + "Litchfield", + "Mantoloking", + "Aniwa", + "Geraldine", + "Lula", + "Alvan", + "Bear Creek Village", + "Lu Verne", + "Chelsea", + "Jamestown", + "New Effington", + "Eitzen", + "Abercrombie", + "Port Hope", + "Venango", + "Dalton", + "Cheraw", + "Angie", + "Tanana", + "Lebanon", + "Cruzville", + "Lockbourne", + "Marble City", + "Brandonville", + "Three Rocks", + "Santa Cruz", + "Elcho", + "Fairview", + "Perry", + "Dillsboro", + "Ostrander", + "Wynnedale", + "Port William", + "Dover", + "Denning", + "Harrell", + "Harveyville", + "Elmer City", + "McFarland", + "Pope", + "Magnolia", + "Belcher", + "Atqasuk", + "Summerfield", + "Denton", + "Canada Creek Ranch", + "Perla", + "La Plant", + "Kennebec", + "Little Meadows", + "Luxemburg", + "Houston Lake", + "Murdock", + "Peoa", + "Cunningham", + "Decker", + "Vera", + "Cumberland", + "Cassel", + "Condon", + "Low Moor", + "Porcupine", + "Groveland", + "Galt", + "Irwin", + "Pinesburg", + "Mashantucket", + "Dendron", + "Lewisville", + "Gilmore", + "Chandler", + "Fulton", + "Silver City", + "Wellston", + "Two Strike", + "Widener", + "Streetman", + "Bonita", + "Yellow Pine", + "Pinedale", + "Forest City", + "Wortham", + "Cabery", + "Greencastle", + "Eugene", + "Jacob City", + "Nikolaevsk", + "Woodland", + "Breckenridge", + "Browning", + "Lyon Mountain", + "Frohna", + "Bryant", + "Waucoma", + "Ewing", + "Copper Center", + "Bluff", + "Swan Valley", + "Okreek", + "Eastport", + "Grainfield", + "Grafton", + "Baskin", + "Henderson", + "Saddlebrooke", + "Thawville", + "Sweet Water", + "Anamoose", + "Powellsville", + "Letona", + "Edgemont", + "Vandemere", + "Reeves", + "Torrey", + "Daggett", + "Noble", + "Harvey", + "White Signal", + "Elmira", + "Westbrook", + "Drowning Creek", + "Fallston", + "Pecktonville", + "Hiouchi", + "Mosquito Lake", + "Sandy Hook", + "Emerald Beach", + "Macedonia", + "Wall Lane", + "Nulato", + "Spickard", + "Richview", + "Millican", + "Willow Lake", + "Newtown", + "Humptulips", + "Montour", + "Lane", + "Oconee", + "Glen Ridge", + "Mulat", + "Klickitat", + "Union", + "Iaeger", + "Hinsdale", + "Higginsport", + "Dix", + "Modoc", + "Hayward", + "Hamilton", + "Willard", + "Castor", + "La Liga", + "Anderson", + "Cisco", + "Poston", + "Greeley", + "Agency Village", + "Paisley", + "Old Fort", + "Mullinville", + "Steward", + "Woodson", + "Bath", + "Agra", + "Vansant", + "Hilltop", + "Montpelier", + "Boynton", + "Boulder", + "Connorville", + "Madison", + "Talmage", + "Blue Springs", + "Slaughter Beach", + "Pemberton", + "Schuyler", + "Thorp", + "Keswick", + "Central Pacolet", + "Ames", + "Hickory Ridge", + "Greensboro", + "Pottersville", + "Pace", + "Boon", + "Pisgah", + "Sims", + "Wadena", + "Partridge", + "Monetta", + "Taylor Landing", + "Lansford", + "Young Place", + "Kappa", + "Gillsville", + "Menominee", + "Womelsdorf", + "Briarcliff", + "Grand Cane", + "Watha", + "Yale", + "Raiford", + "Zumbro Falls", + "Kingsbury", + "Homa Hills", + "Sweetwater", + "Nettle Lake", + "Hardinsburg", + "Crossnore", + "Leamington", + "Marquette", + "Fort Peck", + "Malta Bend", + "Schubert", + "Hopewell", + "Harmon", + "Union Dale", + "Ranchette Estates", + "Severn", + "Fontana", + "Winesburg", + "Troy Grove", + "Holstein", + "East Thermopolis", + "Schell City", + "Lexa", + "Meservey", + "Woodlawn", + "Flintstone", + "Taft", + "Livonia Center", + "Addieville", + "Edesville", + "Hillsboro", + "Ebony", + "Morgan City", + "Bowers", + "Mountain", + "Country Acres", + "Ste. Marie", + "Potter", + "Meno", + "Prescott", + "Rosston", + "Blackburn", + "Milroy", + "Teller", + "Guinda", + "Bentonville", + "Peoria", + "North Sultan", + "Sandia Park", + "Constableville", + "Del Mar Heights", + "Saratoga", + "Brainards", + "Garland", + "Midway", + "Shady Dale", + "Waco", + "Berkey", + "Sandy Point", + "The Plains", + "Parc", + "Springview", + "New Riegel", + "Glenwood", + "Lexington", + "Michigamme", + "Peoria", + "Newtown", + "Bluebell", + "Lake Lillian", + "Upper Kalskag", + "Carl", + "Fredonia", + "Gorst", + "Bethune", + "Cashtown", + "Bronaugh", + "Little Creek", + "Cypress", + "Interlaken", + "Sanders", + "Williams", + "Peetz", + "Twin Lakes", + "Orient", + "Twin Lakes", + "New Harmony", + "Mount Eaton", + "North Bay", + "Radisson", + "Wolverine", + "Sandy Hook", + "Ryegate", + "Henning", + "Creswell", + "Liberty", + "Vallecito", + "Candelero Abajo", + "Donnelly", + "Prompton", + "Bone Gap", + "Alsea", + "Galisteo", + "Kangley", + "Easton", + "Walton", + "Pachuta", + "Boones Mill", + "E. Lopez", + "Fenton", + "Martinsburg", + "Kipton", + "Concord", + "Nason", + "Manor Creek", + "Bison", + "Denton", + "Leavenworth", + "Oak Ridge", + "McCutchenville", + "Summer Shade", + "Mount Carmel", + "Rabbit Hash", + "Clyde", + "Aspers", + "Duane Lake", + "Bessemer Bend", + "Western", + "Crystal Lake", + "Woodland Hills", + "Applegate", + "Gilby", + "Pontiac", + "Orchard Hill", + "Cromwell", + "Venice", + "Stites", + "Bardolph", + "Chesterville", + "Coldiron", + "Springfield", + "Rogersville", + "Alto Bonito Heights", + "Macdona", + "Basin", + "New Post", + "Jennings", + "Ackerly", + "Staplehurst", + "Lemon Cove", + "Bigelow", + "Warfield", + "Severy", + "Nixon", + "Kit Carson", + "Saxis", + "Pawnee Rock", + "Rico", + "Jerico Springs", + "Branch", + "Center Point", + "Tamaha", + "Madrid", + "Elm Grove", + "Laurel", + "Hobson", + "Roaring Springs", + "Callaway", + "Leonard", + "Vina", + "Pavillion", + "Crossgate", + "Goldsboro", + "Darling", + "Rensselaer", + "Lenora", + "Oliver", + "Kistler", + "Roosevelt", + "Fitzhugh", + "White City", + "Grinnell", + "Pyatt", + "Pungoteague", + "Page", + "Trent", + "Scranton", + "Paton", + "Greenview", + "Seneca", + "Cullomburg", + "Roopville", + "Plaucheville", + "Pease", + "Forsan", + "Yorkana", + "Fredonia", + "Rockford", + "Kings Point", + "Dos Palos Y", + "Unionville Center", + "Buckner", + "Emma", + "Amsterdam", + "Creston", + "Grandin", + "Nilwood", + "Campbell Station", + "Miguel Barrera", + "Olancha", + "Seagrove", + "Darbyville", + "Gary", + "Horn Hill", + "Caroline", + "Orason", + "Lexington", + "St. Francis", + "Benedict", + "Summit", + "Olar", + "Pamplin City", + "North Hartland", + "Momeyer", + "Catarina", + "Mesa Vista", + "Elrosa", + "Holcombe", + "Spring Lake", + "Keene", + "Kirbyville", + "Barrera", + "Omaha", + "Sperryville", + "Willow Hill", + "Napoleon", + "Clam Gulch", + "Walnut", + "Kite", + "Fort Laramie", + "Lima", + "Frontenac", + "Phippsburg", + "Smithland", + "Cedar Hill Lakes", + "Packwood", + "Lake Wilson", + "New Columbus", + "Glen Campbell", + "Flensburg", + "Hoople", + "Morrill", + "Creola", + "Marathon", + "Bakersfield", + "Point Lay", + "La Presa", + "Ambia", + "Belknap", + "Reading", + "Waldorf", + "Valle Crucis", + "Nebo", + "Lanare", + "Greenwood", + "Darden", + "Sherwood", + "Elbing", + "Fort Green", + "Leland", + "Blanford", + "Gratiot", + "Sweden Valley", + "Bonanza Mountain Estates", + "Wakarusa", + "Blue", + "Gila", + "Corinth", + "East Pleasant View", + "Asbury", + "Snake Creek", + "Ravenna", + "Louisville", + "Elba", + "Munson", + "Rexford", + "Avera", + "Maxeys", + "Three Mile Bay", + "Nisland", + "Salladasburg", + "Griffithville", + "Robinson", + "Forest City", + "Henrieville", + "Detroit", + "East Hope", + "Minnewaukan", + "Twilight", + "Kawela Bay", + "Troutville", + "Lane", + "Fronton", + "Ballantine", + "Pollock", + "Rifton", + "Owendale", + "Portersville", + "Mehama", + "Painter", + "Lakeview Heights", + "Taylorsville", + "Pottawattamie Park", + "Bethany", + "Rogers", + "Creedmoor", + "Walloon Lake", + "Dadeville", + "Burna", + "Pymatuning North", + "Losantville", + "Cobalt", + "Hubbard", + "Mineola", + "Lake Almanor West", + "La Ward", + "Damascus", + "Whitley Gardens", + "Goodman", + "Mackville", + "Pineville", + "Owaneco", + "Pickstown", + "Lignite", + "Curryville", + "New Providence", + "Craig", + "Tetlin", + "Wachapreague", + "Harrisville", + "Fostoria", + "Healy", + "Madisonburg", + "Washta", + "Olds", + "Keystone", + "Mentor", + "Harrison", + "Marland", + "Medicine Lake", + "Bourneville", + "Hanover", + "Noxon", + "Bath", + "Burnside", + "Lostine", + "Riverdale", + "Kelford", + "Rupert", + "Dudley", + "Dougherty", + "Jensen", + "Uehling", + "Winger", + "Mineral", + "De Kalb", + "Mountain Meadows", + "Bryce Canyon City", + "Buckland", + "Norwood", + "Chester", + "Malden-on-Hudson", + "Gilmore", + "West Havre", + "Greenwald", + "Sheppton", + "Harborton", + "Burdett", + "Lismore", + "Heflin", + "Hills and Dales", + "North Star", + "Berger", + "Rutledge", + "East Salem", + "Ruthton", + "Taylors Island", + "Smithfield", + "Campbellton", + "Andersonville", + "Lake Ka-Ho", + "Jeddito", + "Skykomish", + "Gratiot", + "Clatonia", + "Highland Park", + "Glacier View", + "Chunchula", + "Goose Lake", + "Navarro", + "Jewett", + "Lineville", + "Caney City", + "Meta", + "Hanksville", + "Clear Lake", + "Hanlontown", + "McCook", + "Aleknagik", + "Wyola", + "Detroit", + "Askewville", + "Waukau", + "Sun Valley Lake", + "Lynch", + "Moore Station", + "El Portal", + "Sumner", + "Landisburg", + "Preston", + "Wahkon", + "Gorham", + "Stuckey", + "Welch", + "Bladen", + "Fisher", + "Thedford", + "Calvin", + "Pescadero", + "Houstonia", + "Gilman", + "East Enterprise", + "Belle Valley", + "Teasdale", + "Hornick", + "Furman", + "Van Dyne", + "Posen", + "Merom", + "Oakland", + "Surry", + "Loma Linda West", + "Stinesville", + "Wabbaseka", + "Douglassville", + "Madrid", + "Fieldon", + "Donnelly", + "Imlay", + "Valley Hi", + "Manchester", + "Jamaica", + "Windsor", + "Joplin", + "Clarksville", + "Sandyville", + "Olsburg", + "Phoenicia", + "Bates City", + "Mendota", + "Cusick", + "Russell", + "Tustin", + "Limestone", + "Smoot", + "Kenefic", + "Delmont", + "Cushing", + "Zap", + "Lakeline", + "Jet", + "Cuyamungue Grant", + "Stotts City", + "Graball", + "Hartstown", + "Riley", + "Scotsdale", + "Upper Stewartsville", + "Whitesboro", + "Ardencroft", + "Seven Devils", + "Cleghorn", + "Harrison", + "Rockdale", + "Idaville", + "Chugcreek", + "Hollansburg", + "Taylorstown", + "Ford", + "Virginia City", + "Perrin", + "Currie", + "Shamrock Lakes", + "Hecla", + "Wellington", + "Mount Hope", + "Dixon", + "Ludlow Falls", + "Desert Center", + "Toad Hop", + "Jenera", + "Asbury", + "Victor", + "Gantt", + "Wilson Creek", + "Livingston", + "Slickville", + "Weyerhaeuser", + "Old Harbor", + "Paxico", + "Avalon", + "Roswell", + "Virgie", + "Williamson", + "South Shore", + "McIntosh", + "Gasconade", + "Hebron", + "Oden", + "Camp Sherman", + "Pine Hill", + "Grand River", + "Southern Ute", + "Florida", + "Meansville", + "Coffee Springs", + "Dennison", + "Long Point", + "Thurman", + "Bluffton", + "Elderon", + "Mantee", + "New Burnside", + "Hambleton", + "Sheldon", + "Mellette", + "Jesterville", + "Bier", + "Cherokee Strip", + "Lower Santan Village", + "Napoleon", + "Straughn", + "Phenix", + "Frontier", + "Seibert", + "Garland", + "Fisher", + "Pierrepont Manor", + "Lutsen", + "Villa Verde", + "Northrop", + "Carroll", + "Bryant", + "Dunmor", + "Ocean City", + "Realitos", + "Oxbow Estates", + "Deer Park", + "Stout", + "Bassfield", + "Nehawka", + "Tillar", + "Curtiss", + "Jalapa", + "Reliance", + "Aline", + "Roxobel", + "Gresham", + "Beardsley", + "Sunizona", + "Samoa", + "Shanksville", + "San Luis", + "Montrose", + "Larkspur", + "Stanwood", + "Danville", + "Delmita", + "St. Charles", + "Woodruff", + "Little River", + "Elk Garden", + "Maxwell", + "Parral", + "Mayview", + "Nanwalek", + "White Shield", + "Garden", + "Kansas", + "Burnett", + "Roy", + "Magness", + "Selden", + "Tulare", + "La Vina", + "Wind Ridge", + "Grygla", + "Hornbrook", + "Harvel", + "Index", + "Wyaconda", + "Radom", + "Cross Timbers", + "Hazelton", + "Rodríguez Hevia", + "Mulberry", + "Hitterdal", + "Alsey", + "Huttonsville", + "Ashville", + "Aneta", + "McNary", + "Ehrenfeld", + "St. Regis", + "Chickaloon", + "Little Browning", + "Mesic", + "Mobile City", + "Ollie", + "Clear Creek", + "Arkansaw", + "Colp", + "Vinton", + "Hardesty", + "Sylvania", + "Joice", + "Keller", + "Daviston", + "Augusta Springs", + "Jim Falls", + "Sand Coulee", + "Organ", + "Hanging Rock", + "St. Martin", + "Burns", + "Buffalo", + "Toronto", + "Rake", + "Lucas", + "Gotebo", + "Richvale", + "Daphnedale Park", + "Patriot", + "Bloomington", + "Caulksville", + "Magnolia", + "Union", + "Burr Oak", + "Morristown", + "Fountain Run", + "Helena", + "Mount Gretna", + "Dundee", + "Washtucna", + "Big Falls", + "Ida", + "Ursina", + "Linden", + "Argyle", + "Panama", + "Rackerby", + "Hatfield", + "Pocasset", + "St. Johns", + "Walstonburg", + "Anniston", + "Woodloch", + "Pleasant Dale", + "Conconully", + "Ukiah", + "Kinderhook", + "Gordon", + "Gilson", + "Kossuth", + "Franks Field", + "Eastvale", + "Plaza", + "Jackson Center", + "Garrison", + "Arriba", + "Nunam Iqua", + "South English", + "Kell", + "Cantril", + "Low Moor", + "South Lima", + "Curran", + "Bynum", + "Rio", + "Elliston", + "Monroe", + "Oakdale", + "Geddes", + "Dubois", + "Topaz Lake", + "Penelope", + "Malden", + "Sumpter", + "Falls View", + "Denton", + "Albin", + "Glenwood", + "Ramona", + "New Leipzig", + "New Minden", + "Browndell", + "Jacksonville", + "Elizabeth", + "Adona", + "Knox City", + "Napeague", + "Gail", + "Chapman", + "Woden", + "Verona", + "Port Royal", + "Kempton", + "Milton Mills", + "Milford", + "Black Butte Ranch", + "Reydon", + "Salt Point", + "Aurora", + "Malta", + "Mineral", + "Schoenchen", + "Lake Bronson", + "Sylvia", + "Stollings", + "Slaughters", + "Palmer", + "Leipsic", + "Elgin", + "Birmingham", + "Frierson", + "Ute Park", + "Wilmore", + "Whittier", + "Mekoryuk", + "McBride", + "Noma", + "Flasher", + "Litchfield", + "Bruce", + "Slayden", + "Chatham", + "Stillwater", + "Chula", + "Hanover", + "Little Sturgeon", + "Windom", + "Adair", + "Hiseville", + "Halliday", + "Van Wert", + "Kenilworth", + "Edgerton", + "Blodgett", + "Chupadero", + "Storden", + "Reevesville", + "Spurgeon", + "Clutier", + "Karns City", + "Smolan", + "Moorhead", + "Pennington", + "Gold Hill", + "Summit", + "Belk", + "Madison", + "Halifax", + "Acampo", + "Belle Mead", + "Canadian", + "Froid", + "Buncombe", + "Frederika", + "Benedict", + "Creston", + "Cameron", + "Pollard", + "Black", + "Jackson", + "Standard", + "Goree", + "Hayes Center", + "Tuscumbia", + "Wellman", + "Big Island", + "Lunenburg", + "Yeehaw Junction", + "College Springs", + "Brinson", + "Falling Spring", + "Gary", + "Vermilion", + "Guide Rock", + "Nauvoo", + "Braman", + "Industry", + "Cottonwood", + "Fort Yates", + "Haywood City", + "Bluewater Acres", + "Yellow Bluff", + "Egg Harbor", + "Tappen", + "Matoaka", + "Koliganek", + "Capulin", + "Surrency", + "Elbert", + "Trail Side", + "De Smet", + "Pine Village", + "Seaton", + "San Jon", + "St. Johns", + "Garland", + "Highwood", + "Bethel", + "Monterey", + "White Mountain", + "Barnett", + "Glendo", + "Bulpitt", + "Oldtown", + "Hanston", + "Altamont", + "Glenfield", + "Rollins", + "Chugwater", + "Haviland", + "Hull", + "Alvord", + "Stoutland", + "Grantville", + "Samburg", + "Keensburg", + "Des Lacs", + "Baileyville", + "Blanchard", + "Garfield", + "Sobieski", + "South Salem", + "Nathalie", + "Danville", + "Gibson Flats", + "Koshkonong", + "Macedonia", + "Tenstrike", + "Tokeland", + "Sellers", + "Mosby", + "Oakdale", + "Torreon", + "La Paloma Ranchettes", + "Blairsburg", + "Belvue", + "Barkeyville", + "Parkersburg", + "Hallwood", + "Westcreek", + "Taylor", + "La Fayette", + "Norris", + "Amasa", + "Moore", + "Jacksonport", + "Lyden", + "Phillipsburg", + "Wakulla", + "Macy", + "Lewellen", + "Elkton", + "Autryville", + "Belspring", + "Butters", + "Blodgett Mills", + "Edenborn", + "Hancocks Bridge", + "Mount Sterling", + "Melvin", + "Grayling", + "Kellyton", + "Barnard", + "Independence", + "Peterson", + "Thompsonville", + "Caney", + "Big Creek", + "Oakwood", + "Fordville", + "Goodlow", + "Silver Creek", + "Jeff", + "Westgate", + "Aucilla", + "Batchtown", + "Burbank", + "Cañon", + "Lebanon", + "Ellsworth", + "Loachapoka", + "Bienville", + "North Robinson", + "Ewing", + "Taylorsville", + "Bay Center", + "Petrolia", + "Fountain", + "Trenton", + "New Edinburg", + "Paint Rock", + "Pittsburg", + "Mill Shoals", + "Broaddus", + "Oakwood Park", + "Fishing Creek", + "Vaughnsville", + "Eland", + "Coffee Creek", + "Waterloo", + `O'Kean`, + "Marquand", + "Altona", + "Harrells", + "Garden Grove", + "Lilly", + "Scotia", + "Blencoe", + "Providence", + "Holland", + "Glen Jean", + "Bradley", + "Bear Valley", + "Meire Grove", + "Sugar Mountain", + "Tyro", + "Iola", + "Pecan Gap", + "Pine Glen", + "Raemon", + "Summit Station", + "Newton Hamilton", + "Mount Cory", + "Spillertown", + "Frederick", + "Dalton", + "Mitchellville", + "Eureka", + "Trumbull", + "Radar Base", + "Volga", + "Zanesfield", + "Plessis", + "Sugartown", + "Edwardsville", + "Baylis", + "Glenview Manor", + "Hancock", + "Peck", + "Marklesburg", + "Ramos", + "Fulton", + "Russellville", + "Donnellson", + "Burket", + "Shumway", + "Okabena", + "Edgar Springs", + "Neck City", + "Hendersonville", + "Cerro Gordo", + "Cokesbury", + "Norwood", + "Scraper", + "Winifred", + "Munich", + "Newtonia", + "Epworth", + "Montrose", + "Eden", + "Lincolnville", + "Nash", + "Jonesville", + "Woodburn", + "Wentworth", + "Rembrandt", + "Opdyke West", + "Baileys Harbor", + "Millersburg", + "Ruthville", + "Arthur", + "Nelson", + "Rosewood", + "Holbrook", + "Port Wing", + "Woodside", + "Caledonia", + "Poneto", + "Munjor", + "Mission Woods", + "Hortonville", + "Hollis", + "Lincolnville", + "South Haven", + "Tipton", + "Homer", + "Lowrys", + "Yolo", + "Inger", + "Tonto Village", + "Mellott", + "Okahumpka", + "Onslow", + "Gilbertown", + "Beecher Falls", + "Kahlotus", + "Atwood", + "Dunbar", + "Copemish", + "Union", + "Scotland", + "Union Center", + "Patch Grove", + "Edgefield", + "Enville", + "Haralson", + "Pittsboro", + "Leota", + "Fort Bidwell", + "Harpster", + "Callensburg", + "Beason", + "Bloomington", + "Queets", + "Winterhaven", + "Reader", + "Woody Creek", + "Hooppole", + "Stockton", + "Newry", + "Pickrell", + "Farrell", + "Tomales", + "Franklin", + "Moscow", + "Sheyenne", + "Dunn Center", + "Garey", + "Breedsville", + "Iron Horse", + "Iron Post", + "Rail Road Flat", + "Wimbledon", + "Dwight", + "Forada", + "Friendship", + "Kamrar", + "Allen", + "Laredo", + "Eunola", + "Sunset", + "Drakesville", + "Exeland", + "Little York", + "Steptoe", + "Gilliam", + "Long Creek", + "Starr", + "Amador City", + "Bremen", + "West Leipsic", + "Morganville", + "Dixie", + "Buford", + "Radnor", + "Fort Apache", + "Diamond Beach", + "Big Bay", + "Wawona", + "Hughesville", + "Bolckow", + "Beattie", + "Atmautluak", + "Mooreton", + "Greenway", + "Shippingport", + "Herron", + "Register", + "Du Bois", + "Brave", + "Sidney", + "Tiawah", + "Kalihiwai", + "Watson", + "East Waterford", + "Mitchell", + "Tedrow", + "Study Butte", + "Verdi", + "Bloomingdale", + "Prairieburg", + "Grenola", + "Negley", + "Elberon", + "Hustler", + "Megargel", + "Fillmore", + "Onaway", + "Olmito and Olmito", + "Golden", + "Camden", + "Lake Tomahawk", + "Northome", + "Heckscherville", + "West Elkton", + "Lopeño", + "Dell", + "Lequire", + "Gurley", + "Water Valley", + "Saco", + "Coral", + "Nashville", + "Newhalen", + "Beaverton", + "Craig", + "Spring Garden", + "Stronach", + "Cool", + "Locustdale", + "Minnesota City", + "Thornhill", + "Latah", + "Wren", + "Howard City", + "New Cambria", + "Alligator", + "Benson", + "Boxholm", + "Dent", + "Broughton", + "Millerville", + "Culloden", + "Clawson", + "Onycha", + "Emmett", + "Hosmer", + "Crane", + "Eldred", + "Tse Bonito", + "Rantoul", + "Broadway", + "Worthville", + "Deep River", + "Oljato-Monument Valley", + "Wing", + "Franklin", + "Franktown", + "Homestead", + "Henderson", + "Elk Mountain", + "Ashton", + "Maysville", + "Ogema", + "Rayle", + "Rossburg", + "St. Lawrence", + "Royal Lakes", + "Raymond", + "Wilson", + "Arctic Village", + "Blockton", + "Valley Home", + "Newberry", + "Blythedale", + "Twin Forks", + "Winnett", + "Mount Croghan", + "Boykin", + "Dewy Rose", + "Raymond", + "Palestine", + "Port Lions", + "Bee", + "Milton", + "Ophir", + "Decatur City", + "Luray", + "Helix", + "Minden City", + "Roseville", + "Crystal Bay", + "Buffalo", + "San Cristobal", + "Davis City", + "Custar", + "Fort Seneca", + "Hyannis", + "Fairview", + "Easton", + "Alger", + "Maryhill Estates", + "Trinway", + "Johnstown", + "Garden City", + "Broadview", + "Crouch", + "Rudyard", + "Funk", + "Hardwick", + "Gainesville", + "Danbury", + "Ratcliff", + "San Simon", + "Offerle", + "Amberg", + "Howard", + "Latty", + "Elk Creek", + "Nelson", + "Ensign", + "Wynot", + "Grayridge", + "Sugar Bush Knolls", + "Medon", + "Nageezi", + "Buckhead", + "Glenwood", + "Alpine", + "Metaline", + "Middle Village", + "Beaman", + "Choptank", + "Whiting", + "Carney", + "Calpine", + "Dune Acres", + "Slick", + "Cowgill", + "Hebron", + "Woodland", + "Banner", + "Mina", + "Macksburg", + "Hebo", + "Frost", + "Layton", + "Deer Creek", + "Proberta", + `Fountain N' Lakes`, + "Cleveland", + "Weldona", + "Green Bank", + "Conception Junction", + "Columbia", + "New Grand Chain", + "Warba", + "Copper City", + "Greenbush", + "Bald Head Island", + "Los Cerrillos", + "Comanche Creek", + "Modoc", + "West Sunbury", + "Barnum", + "Bellerive Acres", + "Centerville", + "Mokane", + "Butlerville", + "Valley Head", + "Camargo", + "Michiana", + "Deaver", + "Edinburg", + "Doland", + "Kline", + "Fort Bridger", + "Atlanta", + "Arlington", + "Thor", + "Bendon", + "Sayner", + "Riverview", + "Gravity", + "Mulkeytown", + "Gilboa", + "Leona", + "Blacksville", + "Watson", + "Kennedy", + "Loch Arbour", + "Brookhurst", + "Port Costa", + "Iron Belt", + "Amoret", + "Nespelem Community", + "Maple Grove", + "El Combate", + "Winthrop", + "Dudley", + "South Carrollton", + "Tygh Valley", + "Dale", + "Gerrard", + "Stockett", + "Kokhanok", + "Cambridge", + "Barnesville", + "The Rock", + "Point Isabel", + "Crane", + "Elko", + "Walton", + "Brant Lake South", + "Dorrance", + "Braxton", + "Anawalt", + "Van Voorhis", + "Shambaugh", + "Shelly", + "Sheridan", + "Courtland", + "Riverdale", + "Cooksville", + "Lake Cavanaugh", + "Bennett Springs", + "Paxville", + "Douglas", + "Gotham", + "Finland", + "Yoder", + "Chewey", + "Wilburton Number One", + "Moro", + "Cantwell", + "Ali Chuk", + "Bishop Hills", + "Lasana", + "Modesto", + "Van", + "Millville", + "Cecil", + "Dutch Flat", + "Sherrill", + "Portsmouth", + "Trout Creek", + "Stony Creek", + "Detroit", + "Otoe", + "Zoar", + "Chatfield", + "Spruce Pine", + "West Point", + "North San Juan", + "Palominas", + "Amherst", + "La Rosita", + "Colerain", + "Ramona", + "Halfway", + "Power", + "Silver Plume", + "Denison", + "Jordan Valley", + "Richland", + "Port Graham", + "Flat Rock", + "Hillview", + "Pomaria", + "Purdin", + "Lozano", + "Chesterfield", + "Fairhaven", + "High Hill", + "Lowell Point", + "Wasola", + "Hurley", + "Moore", + "Quemado", + "Kennerdell", + "Congress", + "Cloverdale", + "Wessington", + "Minto", + "Hillsboro", + "Alfarata", + "Stevinson", + "Arroyo Hondo", + "Gregory", + "Mill Spring", + "Coffman Cove", + "Trego", + "Pantego", + "Rickardsville", + "Mullin", + "West Millgrove", + "Magnolia", + "Geuda Springs", + "McCracken", + "Elida", + "Abanda", + "Los Barreras", + "De Witt", + "Wardner", + "Edmore", + "Carrollton", + "Alcan Border", + "Letcher", + "Ferryville", + "Broomtown", + "Delia", + "Government Camp", + "Jakes Corner", + "Truchas", + "Campo Verde", + "Rosine", + "Driftwood", + "Shevlin", + "Westboro", + "Lucan", + "Mapleview", + "Lamar Heights", + "Economy", + "Captiva", + "Le Flore", + "Cimarron City", + "Cleaton", + "Pierson", + "Arnegard", + "Kirkville", + "Rochester", + "Philo", + "Pena", + "Plainville", + "Crowley", + "Cleveland", + "Houston", + "Pulaski", + "Stamford", + "Sacate Village", + "North Henderson", + "Bessie", + "Williams", + "Coin", + "Kranzburg", + "Chinese Camp", + "Orangeville", + "Salineño", + "Fifty-Six", + "Berlin", + "Bellechester", + "Gu-Win", + "Quitman", + "Carrsville", + "Foxburg", + "Jackson Lake", + "Churchville", + "Wallingford", + "White Mesa", + "Newbern", + "Kaltag", + "Spaulding", + "Holland", + "Amsterdam", + "Tingley", + "Cannonville", + "Good Hope", + "Omaha", + "Foley", + "Adrian", + "Ogdensburg", + "Hunnewell", + "Petersburg", + "Snowville", + "De Soto", + "Beards Fork", + "New Paris", + "Alpine Northwest", + "Dry Creek", + "Cataract", + "Oconee", + "Felton", + "Millstone", + "Kettle River", + "Allen", + "Whitesville", + "Boulder Junction", + "Manley", + "Murtaugh", + "Edna", + "Junction", + "Teresita", + "Loma Mar", + "Marcus", + "El Quiote", + "Allen", + "Farmington", + "Lidderdale", + "Packwaukee", + "Elizabeth", + "Star City", + "Adin", + "Halltown", + "Syracuse", + "Dickens", + "Mount Briar", + "Tallulah Falls", + "Sparks", + "Stone Creek", + "Woodford", + "Lenhartsville", + "Wellersburg", + "St. James", + "Beaver Bay", + "Parnell", + "Porter", + "East Globe", + "Fernan Lake Village", + "Richey", + "Hettick", + "Gargatha", + "Strathmere", + "New Lebanon", + "Alexandria", + "Metcalf", + "Glen Acres", + "Gildford", + "West Mineral", + "Christine", + "Claremont", + "Adrian", + "Conway", + "Glen Echo Park", + "Leslie", + "Diamond Bluff", + "Sanborn", + "College City", + "Taylor", + "Ruth", + "Eagle Rock", + "Kettlersville", + "Moore", + "Notchietown", + "Neahkahnie", + "Garfield", + "Miami", + "Louise", + "Lambs Grove", + "Barnes City", + "Griffin", + "Seboyeta", + "Glenford", + "Valley Springs", + "Utica", + "Renick", + "Dunreith", + "Tupelo", + "Grandin", + "Round Mountain", + "Morgan Heights", + "Sierra Village", + "Sisquoc", + "Big Arm", + "Mason City", + "Hillsboro", + "Norris", + "Sarahsville", + "Linndale", + "Albrightsville", + "Lehigh", + "Binford", + "Palisade", + "Brenton", + "Oakville", + "Keller", + "Eldon", + "Lodoga", + "White Cloud", + "Tecopa", + "Pine Valley", + "Twining", + "Roslyn", + "Pleasant Plain", + "Standing Rock", + "Orrville", + "Marietta", + "Melvin", + "El Camino Angosto", + "Fredericksburg", + "Washington", + "New Baltimore", + "Pilot Mound", + "Shongaloo", + "Newtown", + "Melvin", + "Horseshoe Beach", + "Sunshine", + "Idledale", + "Fort Dodge", + "Sauget", + "Swan Lake", + "Old Mill Creek", + "Casa", + "Silverstreet", + "Soham", + "Sedgewickville", + "Orlando", + "McDougal", + "Haverhill", + "Hunter", + "Tooleville", + "Lavina", + "McIntosh", + "Meadowview Estates", + "Winton", + "Utopia", + "Winstonville", + "Muscotah", + "Burdette", + "La Tour", + "Iron City", + "Woolsey", + "Sedgwick", + "Lisbon", + "Bromide", + "San Lorenzo", + "Delavan", + "Rondo", + "Antares", + "Monument", + "Selfridge", + "Calhoun", + "Lohman", + "Wainiha", + "Force", + "Robeline", + "St. Libory", + "Stuart", + "Falcon Mesa", + "West Glacier", + "Salt Rock", + "Troutdale", + "Hessville", + "Florissant", + "Parkdale", + "Pump Back", + "Dargan", + "Gene Autry", + "Rebecca", + "Grass Valley", + "Butler", + "Danbury", + "Rye", + "Coxton", + "Riverside", + "Woodbine", + "Barclay", + "Steen", + "Sycamore", + "Smithboro", + "Starrucca", + "Ball Club", + "Mansfield", + "French Camp", + "Elmo", + "Farnam", + "Burkittsville", + "Viola", + "Rhame", + "Old Shawneetown", + "Albert", + "North Lawrence", + "Lewisville", + "Mockingbird Valley", + "Bern", + "Soldier", + "Combs", + "Holy Cross", + "Burgoon", + "Neskowin", + "Richland", + "Alvordton", + "Coburn", + "Banks", + "Corning", + "Cannelburg", + "Peever", + "Mission Hill", + "Coffey", + "Manitou", + "Evergreen", + "Deming", + "Randall", + "Golden Valley", + "Dundee", + "West Point", + "Vernon", + "Rose Hill", + "Huey", + "Loomis", + "Jolly", + "Corona", + "Wendell", + "Bluewater", + "Volin", + "Lime Ridge", + "Rehrersburg", + "Scotland", + "McKnightstown", + "Istachatta", + "Westphalia", + "Adamsburg", + "Des Arc", + "Weinert", + "Georgetown", + "Baring", + "Buck Creek", + "Catlett", + "Lookeba", + "Barronett", + "Longstreet", + "Pinion Pines", + "Rosalie", + "Maeystown", + "Streeter", + "Kingston", + "Fidelis", + "Kittrell", + "Ogema", + "Butlerville", + "Ferdinand", + "Whitehorse", + "Alexander", + "Little Sioux", + "Mendon", + "Burr Oak", + "Junction City", + "Ward", + "Aurora", + "Blue Eye", + "Mount Carmel", + "Woolstock", + "Foster", + "Golovin", + "St. George", + "Hannasville", + "Circleville", + "Freistatt", + "Allakaket", + "St. Louis", + "Reedy", + "Fultonham", + "Idanha", + "Patterson", + "Alder", + "Vincent", + "Venango", + "Salamonia", + "Ada", + "Rulo", + "Palmetto", + "Green Spring", + "Littleton", + "Sparta", + "Lonepine", + "Rhodell", + "Cloverdale", + "Seldovia Village", + "Lake Leelanau", + "Wainwright", + "Cordova", + "Argyle", + `Miller's Cove`, + "Arlington", + "Moonshine", + "Longfellow", + "LaFayette", + "Willapa", + "Lamy", + "Blanco", + "Alcalde", + "Burlington", + "Tabiona", + "Winchester", + "Oakland Acres", + "Santa Claus", + "Talladega Springs", + "Bassett", + "Prestonville", + "Nelson", + "Frannie", + "Daykin", + "Fort Green Springs", + "Midvale", + "Hickory Corners", + "Winona", + "Ulysses", + "Alston", + "McNeal", + "Pike", + "Ellison Bay", + "Rew", + "Fountain Hill", + "Redmon", + "Humboldt River Ranch", + "Goehner", + "Bloomville", + "Page", + "Booneville", + "Fenwick", + "Rexford", + "Plainfield", + "Hardtner", + "Verdon", + "Leighton", + "Garrett", + "Pine Grove", + "Templeton", + "Paradise", + "Scipio", + "Chili", + "Blomkest", + "Northwood", + "Castalia", + "Lutak", + "Swaledale", + "Silver City", + "Downieville", + "Summertown", + "Kohls Ranch", + "Greenbush", + "La Platte", + "Kickapoo Tribal Center", + "Chester", + "Boyd", + "McDonald", + "Rockville", + "Campus", + "Regent", + "Reddick", + "Rockbridge", + "Montezuma", + "Calumet", + "Cedar Crest", + "Harris", + "Mettler", + "Clontarf", + "Hurdland", + "Page", + "Washington", + "Clearmont", + "Villarreal", + "Twin Oaks", + "Rush Center", + "Gillham", + "Maxville", + "Gulf", + "Randolph", + "Bowman", + "Bieber", + "Coldfoot", + "Grayson", + "Iuka", + "Rutland", + "Alderpoint", + "Sanford", + "Arkdale", + "Kirwin", + "Elba", + "Hillsboro", + "Coates", + "Hobson", + "Pentress", + "Moorland", + "Brooktree Park", + "Tall Timber", + "Kensal", + "Avon", + "Randolph", + "Clearmont", + "Marquette", + "Allensville", + "Ronco", + "Cornish", + "Yogaville", + "Osage", + "Ogden", + "Henderson Point", + "Fulton", + "Monroe", + "Reasnor", + "McClelland", + "Fenwood", + "Haena", + "Graham", + "Flournoy", + "Pitkas Point", + "Kingston", + "Havensville", + "Crab Orchard", + "Cranberry Lake", + "Ulm", + "Bear Lake", + "Bolivia", + "Middletown", + "Redbird", + "Monmouth", + "Ruby", + "Alpine", + "Davey", + "Manter", + "Comfort", + "Yoder", + "Glencoe", + "Harding-Birch Lakes", + "Westby", + "Thynedale", + "Hartline", + "Exline", + "Lake McMurray", + "Kanorado", + "Bogard", + "Norge", + "Allentown", + "Chinook", + "Gakona", + "Laurel Mountain", + "Concord", + "Republican City", + "White Heath", + "Parkman", + "Dawn", + "Trinity Center", + "Blue Sky", + "Little Bitterroot Lake", + "Center Sandwich", + "Lewis", + "Winthrop", + "Hillsboro", + "Webster", + "Glacier", + "Williamson", + "Elvaston", + "Kobuk", + "Ouzinkie", + "Sycamore", + "Amesville", + "Mount Union", + "Steely Hollow", + "New Castle", + "Columbus", + "Brunsville", + "Stella", + "Montrose", + "Kimball", + "Vance", + "Houlton", + "Lansing", + "Grover", + "Wheatcroft", + "Cody", + "Farmington", + "Grasston", + "Oilton", + "Dover", + "Fairview", + "Geneva", + "St. Charles", + "Tanacross", + "Dickerson City", + "Barnes", + "Boardman", + "Collins", + "Braddyville", + "Osage", + "Coleta", + "Isabel", + "Slabtown", + "Gilliam", + "Concord", + "Rocky", + "Admire", + "Colfax", + "Cowlington", + "Pax", + "Salem", + "Hemlock", + "Farmington", + "Cedar Grove", + "Tolna", + "Hastings", + "Woodlawn Park", + "Homestead", + "Crabtree", + "Arbovale", + "Leeper", + "Brandsville", + "Geiger", + "Council Hill", + "Crandall", + "Delaware", + "Sprague", + "Beaver Valley", + "Capron", + "Rochester", + "Diehlstadt", + "Frankfort", + "Eros", + "Metamora", + "Indianola", + "Ozora", + "Wales", + "Campbell", + "Nelsonville", + "Ridott", + "Louann", + "Summit Lake", + "Melvin Village", + "Volant", + "Abiquiu", + "Navarino", + "Bridgewater", + "Green Mountain", + "Blackwater", + "Warwick", + "Crowheart", + "Waltham", + "Rowan", + "Lincolnshire", + "Litchville", + "Lamar", + "Longville", + "Popponesset", + "Waterloo", + "Dana", + "Redings Mill", + "Cable", + "St. Clement", + "Hall", + "Bellingham", + "Buckhorn", + "Connerville", + "Jerusalem", + "Willow City", + "Landingville", + "Elmo", + "Alexandria", + "Ekron", + "Rudy", + "Papineau", + "Germantown", + "Mount Vernon", + "Brady", + "Tatums", + "Martha", + "Tecolote", + "Waukena", + "Tallapoosa", + "McKeansburg", + "West", + "Wildrose", + "Bristow", + "Palmer", + "Kiskimere", + "Dola", + "Smith Island", + "Anon Raices", + "Lewis", + "Turney", + "Flemington", + "Spray", + "Meriden", + "Genoa", + "Lima", + "Gravois Mills", + "Lincoln", + "Longview", + "Excelsior Estates", + "Sand Fork", + "Nicolaus", + "Ithaca", + "Reeder", + "Girard", + "Hodges", + "Tina", + "Elkton", + "Leon", + "Tyaskin", + "Worthington", + "Bear Creek", + "Welton", + "Goodwin", + "Hordville", + "Why", + "Whiteash", + "Pine River", + "Spencer", + "Plevna", + "Pioneer", + "Anthonyville", + "Peterman", + "Mentor", + "Reed", + "Searsboro", + "Deer Island", + "Rarden", + "Beverly", + "Palo Pinto", + "Barlow", + "Clifton", + "Milton", + "Edison", + "Morrowville", + "West Chester", + "Big Creek", + "Normandy", + "Summerfield", + "Pottery Addition", + "Elk City", + "Gallatin River Ranch", + "Harrietta", + "Powell", + "Linn Grove", + "Nesbitt", + "Maple Falls", + "Boaz", + "Hills and Dales", + "Milton Center", + "Dunnell", + "National", + "Crary", + "Smithfield", + "Rosendale", + "Dayville", + "Morland", + "Springbrook", + "Atlanta", + "Preston", + "Pine Flat", + "Hardy", + "Jakin", + "Wheeler", + "Jersey", + "Erhard", + "Timblin", + "Leesville", + "Banks Lake South", + "Olney", + "Emhouse", + "Fall River", + "Standard City", + "Big Lake", + "Whitten", + "Windsor", + "Fairfield", + "Nunez", + "Foss", + "Austwell", + "Montgomery Creek", + "Alba", + "Jacksonville", + "Northville", + "Lawrence Creek", + "Grand Marsh", + "Snyder", + "North Johns", + "Camden-on-Gauley", + "Mount Auburn", + "Mona", + "Waterville", + "Cloud Lake", + "Sharon", + "Staves", + "Kemp", + "Buffalo Gap", + "Oconto", + "Wilkesville", + "Drummond", + "Casmalia", + "New Liberty", + "Cuba", + "Kilkenny", + "Henlopen Acres", + "Makoti", + "Summerville", + "Ahmeek", + "Keener", + "Omena", + "Brookeville", + "Belmore", + "Waverly", + "Dennis", + "Fort Greely", + "Jamison City", + "Wentworth", + "Tupman", + "LaPlace", + "Conger", + "Norcatur", + "Free Soil", + "Limaville", + "Stella", + "Henderson", + "Farson", + "West Rushville", + "Rush Hill", + "Rock Falls", + "Herbst", + "Pawnee", + "Alamillo", + "Floris", + "Redfield", + "Ferris", + "Blackey", + "Five Points", + "Kinney", + "Falcon", + "Siglerville", + "Wyeville", + "Kimmswick", + "Godwin", + "Wilsey", + "Quemado", + "Jette", + "Morse Bluff", + "Strasburg", + "Portal", + "Everetts", + "Billingsley", + "Nemaha", + "Blenheim", + "Conde", + "Ben Lomond", + "Pickering", + "Kendrick", + "Millersburg", + "Lake Sumner", + "Miller City", + "Carpio", + "Alden", + "Meadowbrook Farm", + "Hatch", + "Elizaville", + "Silver Peak", + "Coatsburg", + "Makena", + "Fairfield", + "Vickery", + "East Rochester", + "Brandywine", + "Dutch John", + "Denton", + "Willisville", + "Brookston", + "Tustin", + "Watch Hill", + "Devol", + "Marietta", + "Gaylesville", + "Clements", + "Clemons", + "Yeoman", + "Edmund", + "Rodanthe", + "Kanauga", + "Pine Level", + "Utica", + "Put-in-Bay", + "Felsenthal", + "Heron", + "Allenville", + "Daisy", + "Timber Cove", + "Cats Bridge", + "Pony", + "Haigler", + "C-Road", + "Rozel", + "Lloyd", + "Cuney", + "Ezel", + "Chest Springs", + "Crestone", + "Sehili", + "Anchor", + "Markham", + "Springport", + "Nogal", + "Yorkshire", + "Whittlesey", + "Gu Oidak", + "Lone Rock", + "Wahak Hotrontk", + "Ames", + "Stone Lake", + "Burbank", + "Romeville", + "Gardners", + "Julian", + "Christie", + "Marydel", + "Buckhorn", + "Shirleysburg", + "Fowlerville", + "Newald", + "State Line City", + "Harman", + "Big Sandy", + "Zena", + "Box", + "Columbus", + "Viola", + "Columbia", + "Roosevelt", + "Woodlawn", + "Muncie", + "Walthall", + "Hookstown", + "Cassville", + "Ringgold", + "Shubert", + "Dorchester", + "Aubrey", + "Anselmo", + "North Washington", + "Hardwick", + "Joyce", + "Brick Center", + "Latham", + "Haivana Nakya", + "Roy", + "Weskan", + "Upham", + "Middleburg", + "San Pedro", + "Iroquois", + "Alvo", + "Summit", + "Netawaka", + "Neosho Falls", + "Okolona", + "Greensboro", + "Jerseytown", + "Cashiers", + "Artesian", + "Rocky Ford", + "Brooks", + "Sasakwa", + "Sedgwick", + "Hanover", + "Virgilina", + "Normanna", + "Marmarth", + "Cherokee", + "Maish Vaya", + "Du Bois", + "La Cueva", + "Bee", + "Crystal Beach", + "Pine Lake", + "San Isidro", + "Lena", + "Burtrum", + "Houghton", + "Rockville", + "Pontoosuc", + "Parrott", + "Dooling", + "St. Xavier", + "Hunt", + "Birch River", + "Glen Hope", + "Bogue", + "Iola", + "Pollard", + "Monterey", + "St. Lucas", + "Kevin", + "Sylvester", + "Pullman", + "Pick City", + "Thurston", + "Lockington", + "Ranger", + "Broadwell", + "Cadiz", + "Stark City", + "Huntersville", + "Hackberry", + "Gordon", + "Marksboro", + "Gilmanton", + "Indian Village", + "Castine", + "Clare", + "Everton", + "Forksville", + "Ricketts", + "Astoria", + "Harper", + "Langlois", + "Kirkpatrick", + "Dawson", + "Edgar", + "Tenakee Springs", + "Moorefield", + "Montrose", + "Pageton", + "Cliff", + "Wolf Summit", + "Avoca", + "Kenny Lake", + "Raywick", + "New Schaefferstown", + "Peoria", + "Smeltertown", + "Mifflin", + "Llano del Medio", + "Mead", + "Hoodsport", + "Cassandra", + "Epping", + "Alpha", + "Bairdstown", + "Oaks", + "Sharon", + "Hamilton", + "Willow", + "Upland", + "Monument", + "Marenisco", + "Empire", + "Rock Hill", + "Hunter", + "New Salem", + "Klondike", + "Ayrshire", + "Bladensburg", + "Pointe a la Hache", + "Hammond", + "Otter Creek", + "Marble", + "Bendena", + "Port Alsworth", + "Prathersville", + "Modest Town", + "Whiting", + "Camp Three", + "Ronks", + "Sedalia", + "Crumpler", + "Monterey", + "Custer", + "Venedy", + "Nondalton", + "Success", + "Taunton", + "Bradley", + "Luther", + "Valentine", + "West Middletown", + "Brook Park", + "Cantrall", + "Lansing", + "Sheakleyville", + "Sinking Spring", + "Westport", + "Patterson", + "West Brooklyn", + "Castana", + "Hanna", + "Acequia", + "North Westminster", + "Galestown", + "Jacksonville", + "Chester", + "Woodward", + "Bannock", + "Rohrsburg", + "Kingsbury", + "Linden", + "Needmore", + "Glasgow", + "Big Bend", + "Pine Apple", + "Cordova", + "Mackey", + "White Water", + "Franklin", + "Norman", + "Erin Springs", + "Novelty", + "Atlanta", + "Hastings", + "Glendora", + "Pyote", + "Frankclay", + "Cayuga", + "Cumminsville", + "Tumacacori-Carmen", + "Pearl", + "Brunswick", + "Myers Flat", + "Georgetown", + "Holliday", + "Soldier", + "Markleeville", + "Kings Valley", + "La Grange", + "Ruth", + "Garvin", + "Old Bennington", + "Ekwok", + "Collins", + "Hepler", + "Rhineland", + "Kirvin", + "Bragg City", + "Lester", + "Sumatra", + "Odessa", + "Bearden", + "Nellie", + "Coal Center", + "Miller", + "Pritchett", + "Brussels", + "Oxly", + "Iona", + "Central City", + "East Peru", + "Boston", + "Fairmont", + "Lesterville", + "Orviston", + "Fordyce", + "Larrabee", + "Sawyer", + "Marion", + "Dimock", + "Downsville", + "Cliffdell", + "Carthage", + "Boston", + "Morrison", + "Shepardsville", + "Homestown", + "Mulberry", + "Chapin", + "Ramah", + "Addy", + "Meadow Acres", + "Kingdom City", + "Maunie", + "La Rose", + "Bennington", + "Wolverton", + "Faxon", + "Herndon", + "Hoehne", + "Millhousen", + "Kaibab", + "Mitchell", + "Penfield", + "Stone City", + "Catharine", + "Coronaca", + "Hasty", + "Avilla", + "Woodland", + "Goodridge", + "Seven Oaks", + "Woodston", + "Medora", + "Gould", + "Merriman", + "New Weston", + "Wagner", + "Estelline", + "Woodman", + "Ithaca", + "Del Sol", + "Hat Creek", + "St. Donatus", + "Kapowsin", + "Browns", + "Perkins", + "Geyser", + "Colony", + "Fleming", + "Virden", + "Marietta", + "Glen Arbor", + "Rainsburg", + "Claremont", + "Goodell", + "Washington Park", + "Home", + "St. Mary", + "Novice", + "Chain-O-Lakes", + "Scottsburg", + "Blountsville", + "Granger", + "Cheshire", + "Westfield", + "Starbuck", + "Black Hawk", + "Alicia", + "Centralia", + "Sallis", + "Lewis and Clark Village", + "Crystal", + "New Centerville", + "Powhatan", + "Webb", + "Volta", + "Viola", + "Brownville", + "Mertens", + "Bodcaw", + "Zoar", + "Bonanza Hills", + "East Shore", + "Rock Creek Park", + "Pinhook Corner", + "Quamba", + "Baring", + "Jameson", + "New Buffalo", + "Lorraine", + "Forestville", + "Spearsville", + "Meadowlands", + "Whitewater", + "Lynxville", + "St. Marys", + "Ludlow", + "Wright", + "Java", + "Washington", + "Calzada", + "Pensacola", + "Midland", + "Westboro", + "Caledonia", + "Kimberly", + "Phillips", + "Deer Park", + "Georgetown", + "Ohlman", + "Chuathbaluk", + "Columbia", + "Hoffman", + "Morriston", + "Northwest Stanwood", + "Camak", + "Sierra City", + "Topaz", + "Narcissa", + "Sharon", + "Parkman", + "Filley", + "Levering", + "Polvadera", + "Bisbee", + "Dawson", + "Jamestown", + "Naukati Bay", + "Ulen", + "McDermitt", + "Springhill", + "New Cambria", + "Pistol River", + "Gypsy", + "Judith Gap", + "McIntire", + "St. Joe", + "Mountain View", + "Cold Bay", + "Fishers Island", + "Monument", + "Randsburg", + "Deer Creek", + "Venetie", + "Haynes", + "Cosby", + "Sheldon", + "Damar", + "Endicott", + "Peach Orchard", + "Alden", + "Casa Colorada", + "Hudson", + "Bingham Lake", + "Rentiesville", + "Peru", + "Odin", + "Hallett", + "Cusseta", + "Utting", + "Harrold", + "Havelock", + "Heidelberg", + "Sinai", + "Guthrie", + "Windom", + "McCool", + "St. Paul", + "Archer", + "Ashton", + "Las Nutrias", + "Hilltop", + "Noonan", + "Anton Chico", + "Adamsville", + "Vernonburg", + "Toxey", + "Mazie", + "Dutchtown", + "West Union", + "Pence", + "Christopher Creek", + "Edison", + "Deering", + "Summitville", + "Oelrichs", + "McKinley", + "Corinne", + "Harding", + "Bena", + "Oak Ridge", + "Liverpool", + "Perkinsville", + "Watrous", + "De Graff", + "Luray", + "Eldridge", + "Livonia", + "Cavour", + "Bobtown", + "Leonore", + "Browning", + "Kaka", + "Cassoday", + "Burlington", + "Southside Chesconessex", + "Higden", + "Wiota", + "Elk River", + "Whitewater", + "Dallas", + "Kelly", + "Steuben", + "Bouton", + "Dexter City", + "Ferguson", + "Allenville", + "Bishop Hill", + "Raritan", + "Ayr", + "Rutland", + "Miesville", + "Methow", + "Morningside", + "Montreal", + "Frankfort Springs", + "Rosedale", + "Farmington", + "Porter", + "Ormsby", + "Hillsdale", + "Knowlton", + "Livingston", + "Maysville", + "Inman", + "Sula", + "Des Moines", + "Long Island", + "Miramiguoa Park", + "Eden", + "Church Creek", + "Gann", + "Forest River", + "North Buena Vista", + "Friendly", + "Redford", + "Sikes", + "Moskowite Corner", + "Ravenden Springs", + "Dora", + "Mitchell", + "Shelocta", + "Olean", + "Antimony", + "Green", + "Tensed", + "Salvisa", + "Chester", + "Pierpont", + "Stanley", + "Seven Hills", + "Gunn City", + "Cokedale", + "Octavia", + "Custer", + "Downsville", + "Flaming Gorge", + "Pella", + "Bowdon", + "Lafferty", + "Alton", + "Ledyard", + "Hockingport", + "Moundville", + "Wann", + "Masonville", + "Deepstep", + "Lillie", + "Arrowhead Springs", + "Geneva", + "Gallina", + "Petronila", + "Brice", + "Eagarville", + "Eagle", + "Oldham", + "Kennan", + "Mount Hermon", + "Hamburg", + "Venedocia", + "Moffat", + "Leshara", + "Duncan", + "Alpha", + "Landess", + "Fort Smith", + "Adams", + "Diomede", + "Lowndesville", + "Snelling", + "Dry Creek", + "Superior", + "Flute Springs", + "Indian Beach", + "Galesburg", + "Trego-Rohrersville Station", + "Almont", + "Chaparrito", + "Hingham", + "La Junta Gardens", + "Orchard", + "Naples", + "Prairie View", + "Johannesburg", + "La Russell", + "Darlington", + "Moffett", + "Goff", + "Hannaford", + "Macksburg", + "Smoaks", + "Guys Mills", + "Blue Mountain", + "Emison", + "Retsof", + "Otterville", + "Allport", + "Hickory Hill", + "Bellville", + "Westphalia", + "Dupuyer", + "H. Cuellar Estates", + "Loco", + "Bernard", + "Woodstock", + "Fairfield", + "Effie", + "Center Junction", + "Vernon", + "Arthur", + "Green Valley", + "Matthews", + "Grafton", + "Osnabrock", + "Bartow", + "Benbow", + "Owl Ranch", + "Broadwater", + "San Acacio", + "Roscoe", + "Dodson", + "Dodge", + "Du Pont", + "Roosevelt", + "Toronto", + "Ratliff City", + "Templeville", + "Farwell", + "Mount Ayr", + "Forest Hill Village", + "Maiden Rock", + "Glen Ferris", + "Elmdale", + "Lucien", + "De Witt", + "Cascadia", + "Lynndyl", + "Mount Laguna", + "Rohrersville", + "South Amana", + "Fort Shaw", + "Kincaid", + "Oxbow", + "McKittrick", + "Rome", + "Segundo", + "Laporte", + "Chimney Rock Village", + "Wilson", + "Lumberton", + "Jennette", + "Armstrong", + "Bluff City", + "Honcut", + "Myrtlewood", + "Nelchina", + "Banks", + "Nora", + "Louisburg", + "Littleton", + "Bushnell", + "Brownsville", + "Mound Station", + "Stoy", + "Bascom", + "Chelsea", + "Blawenburg", + "McKinney", + "Tar Heel", + "Hyampom", + "Starkweather", + "Y-O Ranch", + "Branchville", + "Fairfax", + "Marengo", + "Weldon", + "Yale", + "Arroyo Gardens", + "Cache", + "Princeton", + "Middlebrook", + "Vale", + "Belgrade", + "Malaga", + "Culver", + "Delaplaine", + "Bartlett", + "Animas", + "Smithfield", + "Ironton", + "Batesland", + "Kempton", + "Deering", + "Proctorville", + "Hitchcock", + "Todd Mission", + "Malmo", + "Belleair Shore", + "Mud Bay", + "Mapletown", + "Minidoka", + "Park", + "Ross", + "Roscoe", + "Gum Springs", + "West Sullivan", + "Lodge", + "Aquilla", + "Riverton", + "Ruskin", + "Manderson", + "Libertyville", + "Paden", + "Austin", + "Calvary", + "Lublin", + "Pringle", + "St. Paul", + "Wheaton", + "Bradley", + "Eagles Mere", + "Broughton", + "Maple City", + "Morley", + "Woods Landing-Jelm", + "Neibert", + "Fence Lake", + "Picuris Pueblo", + "Grand Falls Plaza", + "Oriska", + "Oakvale", + "St. Augustine", + "Raymer", + "Derby", + "Huetter", + "Argonne", + "Marne", + "Love Valley", + "Gerty", + "Jansen", + "Fidelity", + "New Woodville", + "St. Onge", + "Bethel", + "Rye", + "Wilson City", + "Isabella", + "Scottsburg", + "Talmage", + "Bridgeville", + "Eagle River", + "Liberty", + "Monmouth", + "Harmon", + "Rose Farm", + "Parksville", + "Cal-Nev-Ari", + "Junction", + "Foxhome", + "Lake Henry", + "Galloway", + "East Verde Estates", + "Orrtanna", + "Pie Town", + "Barneston", + "Foster", + "Sycamore", + "Seven Springs", + "Lynnville", + "Chickamaw Beach", + "Roderfield", + "Bell Center", + "Woodruff", + "Sulphur Springs", + "Scottville", + "Floyd", + "Terlingua", + "Westwood", + "Memphis", + "Harper", + "Melstone", + "Ware Place", + "Federal Dam", + "Highland Beach", + "Macon", + "Ridgeville", + "Stanley", + "Orme", + "Donegal", + "Buchanan", + "Kirby", + "St. Charles", + "Brayton", + "Birney", + "Rutledge", + "Biscay", + "Benjamin Perez", + "Taylor", + "Daisy", + "Fairford", + "Bon Air", + "Hartsburg", + "Crisman", + "Tullahassee", + "Melvina", + "Vernon", + "Egypt", + "Waverly", + "Lanesboro", + "Belden", + "Port Heiden", + "New Haven", + "Chalkyitsik", + "Opal", + "Marietta", + "Crook", + "Williams", + "Clifton Hill", + "Milledgeville", + "Durham", + "Roscoe", + "Aldora", + "Martinsburg", + "Bridgeport", + "Aripeka", + "Alder", + "Detmold", + "Heathsville", + "Loretto", + "Frenchtown-Rumbly", + "Smithville", + "West Amana", + "Bivalve", + "Minneiska", + "McDonald", + "Acme", + "McFarlan", + "Tunnel City", + "Buckeye", + "Toyah", + "Spaulding", + "South Fork Estates", + "Newburg", + "Cromwell", + "Tennessee", + "Melbeta", + "Kenton Vale", + "Baldwin", + "Dacoma", + "Herbster", + "Promise City", + "Chical", + "Rosalia", + "Pawleys Island", + "Seville", + "Emington", + "Comstock", + "Furnace Creek", + "Antoine", + "Vidette", + "Addington", + "Dodson", + "Brandt", + "Vilas", + "Ventana", + "Stockholm", + "Dotyville", + "Crane", + "Marseilles", + "Arion", + "Mayfield", + "Bock", + "Republic", + "Wiota", + "Minturn", + "Dwale", + "Friendsville", + "Humphreys", + "Calverton", + "Blackburn", + "Tioga", + "Felt", + "Terlton", + "Loomis", + "Blanco", + "Celeryville", + "Pulaski", + "Fallon", + "Hope", + "Corona", + "Corn Creek", + "Cornucopia", + "Cedar", + "Harbor View", + "Leadore", + "Lasker", + "Squaw Lake", + "Ohiowa", + "Somers", + "Neville", + "Plato", + "Girdletree", + "Belknap", + "Brooklyn Heights", + "Interior", + "Carpenter", + "Cowlic", + "Brock", + "Ridgely", + "New Trier", + "Pueblito", + "Deerfield", + "Clitherall", + "Sims", + "Spring Hill", + "Turnerville", + "Colon", + "Loma Linda", + "Atkinson Mills", + "Century", + "Egegik", + "Revillo", + "Pisek", + "Hidalgo", + "Torboy", + "Gaylord", + "Ten Broeck", + "Pocahontas", + "Odin", + "Grass Range", + "King and Queen Court House", + "Barstow", + "Brandonville", + "Glenham", + "Iago", + "Ackworth", + "Sykeston", + "Tradewinds", + "Sarben", + "Blodgett Landing", + "Havana", + "Homewood", + "Tobias", + "Olmitz", + "Pindall", + "East Brooklyn", + "Elsie", + "West Scio", + "Mount Etna", + "Lund", + "Gabbs", + "Palmer", + "Vona", + "Walnut Hill", + "Big Flat", + "Frisco", + "Millerville", + "Fish Lake", + "Mount Auburn", + "Jericho", + "Hamer", + "Brownington", + "Belmar", + "Salem", + "Hatton", + "Nobleton", + "Fruitdale", + "Silver Lake", + "Sylvarena", + "Mountville", + "Melrose", + "St. Joseph", + "South Bend", + "Slate Springs", + "Cardwell", + "Valley", + "Grady", + "Truxton", + "Oberon", + "Fraser", + "Borup", + "New Hope", + "Wann", + "Harrison", + "Union Level", + "Ronald", + "Atwood", + "Castle", + "Marrowbone", + "Herrick", + "Edmonson", + "Pinetown", + "Nessen City", + "Darfur", + "Edinburg", + "Weatherby", + "Savonburg", + "Campo Bonito", + "Bryce", + "Dayton Lakes", + "McCartys Village", + "Oto", + "Nodaway", + "Palmyra", + "Beaver", + "Centerville", + "Gibbs", + "Turner", + "Mutual", + "Springerton", + "Benton City", + "Springlake", + "Dover", + "Tony", + "Galesburg", + "Campo", + "Oyens", + "Bickleton", + `O'Brien`, + "Northway", + "Vermillion", + "Leisure Lake", + "Tampa", + "Lithium", + "Hope", + "Paskenta", + "Chalkhill", + "Wikieup", + "Long Barn", + "Lemoyne", + "Canova", + "Percival", + "Morse", + "Zinc", + "Alpine Village", + "Badger", + "Sardis", + "Rodriguez Camp", + "St. George", + "Sageville", + "Winslow", + "Coalmont", + "Jeisyville", + "Aullville", + "Viking", + "Emerald", + "Beltrami", + "Fair Oaks", + "Smiths Ferry", + "St. Olaf", + "Norwich", + "Lonsdale", + "West Line", + "Moccasin", + "McGrew", + "Fairview", + "Naponee", + "Canova", + "Darwin", + "Lake Annette", + "Chain of Rocks", + "Rockville", + "Haleburg", + "Reeds", + "Collyer", + "Curlew", + "Eden", + "Robbins", + "West York", + "Henry", + "Seba Dalkai", + "Longtown", + "Warfield", + "Mercer", + "Primrose", + "Big Lagoon", + "Lake View", + "Albion", + "Catawba", + "Hooper", + "Overland", + "Nottoway Court House", + "Oak Hall", + "Trommald", + "Leon", + "Ravanna", + "Alfordsville", + "Fox Lake", + "Monomoscoy Island", + "Old Ripley", + "Alberta", + "Lakeview North", + "Cresbard", + "Troy", + "Manchester", + "Vivian", + "Bruno", + "Fremont", + "Sunburg", + "Silerton", + "Comptche", + "Etowah", + "Bryceland", + "Dodge", + "Dunning", + "Lastrup", + "St. Anthony", + "Batesville", + "Bath Corner", + "Maybeury", + "Thompson Springs", + "Tylersburg", + "Crystal Rock", + "Pine Grove", + "Willey", + "California", + "Frank", + "Onward", + "Spiritwood Lake", + "Richville", + "Eddyville", + "Harrellsville", + "Rocklake", + "Penton", + "Andover", + "South Lead Hill", + "Graceton", + "Palermo", + "Conner", + "Lee Vining", + "Falkland", + "Fairburn", + "Foosland", + "Causey", + "Tippecanoe", + "Johnsonburg", + "Pleasant Plain", + "Plevna", + "Woodsville", + "North Hurley", + "Dayton", + "Day", + "Bairoil", + "Spofford", + "Glen Lyn", + "Springtown", + "Arispe", + "Esmond", + "Neylandville", + "Kinsman", + "Keomah Village", + "Chillicothe", + "Cullison", + "McCaskill", + "Sanford", + "Hyattville", + "Bloomington", + "Sumner", + "Wright", + "Millston", + "Nolic", + "Perryville", + "Beedeville", + "Midland", + "Geneva", + "Manchester", + "Baldwin Park", + "Valmont", + "Herrings", + "Williston", + "Columbus", + "Roe", + "Hayward", + "Mainville", + "Haddam", + "Tselakai Dezza", + "Fulton", + "Lake Valley", + "Amenia", + "Mono City", + "Bagnell", + "Richards", + "Unionville", + "Danbury", + "Kincaid", + "Poole", + "Solway", + "Eagle Harbor", + "Whipholt", + "Rome", + "Shell", + "White Bird", + "Mobeetie", + "Hitchcock", + "Westdale", + "Beaver", + "Plush", + "Brumley", + "Daniel", + "Elk Creek", + "Eddyville", + "Tuttle", + "Dorchester", + "Mason", + "Townsend", + "Shoal Creek Estates", + "Sleetmute", + "Parcoal", + "Dixon", + "Glenfield", + "Quintana", + "Tamarack", + "Blairstown", + "Bunker Hill", + "Kildare", + "Oscarville", + "Rogers", + "Kingston", + "Media", + "Slater", + "Pembine", + "Dixonville", + "Liebenthal", + "Strawn", + "Putnam", + "Zurich", + "Hunter", + "Sailor Springs", + "Wilburton Number Two", + "Franklin", + "Datto", + "Apache Creek", + "Elk Falls", + "Hickory Valley", + "Casselman", + "La Minita", + "Ward", + "New Bavaria", + "Cogswell", + "Luzerne", + "Tuskahoma", + "Luray", + "Coy", + "Dazey", + "Crescent Mills", + "Aragon", + "Pascola", + "Centrahoma", + "Lowndesboro", + "Brian Head", + "Windmill", + "Leopolis", + "Prince", + "Fish Camp", + "Defiance", + "Portland", + "Zalma", + "Munden", + "Angelica", + "New Church", + "Costilla", + "Zwingle", + "Maytown", + "Bluffton", + "Tryon", + "Rothville", + "Uncertain", + "Black Springs", + "Koyukuk", + "Faunsdale", + "Jeddo", + "Bruno", + "Craig", + "Horntown", + "Conrath", + "Jennings", + "Esbon", + "Cañones", + "Cantu Addition", + "South Gorin", + "Ellisville", + "Carrick", + "Vale Summit", + "Monticello", + "Amanda Park", + "Stonyford", + "Lake Aluma", + "Valmy", + "Waco", + "Gorman", + "Saulsbury", + "Saltillo", + "Halibut Cove", + "Goodrich", + "Coyanosa", + "Alton", + "Spring Hill", + "Lone Oak", + "St. Leo", + "St. Helena", + "Chautauqua", + "Salvo", + "Portis", + "Morrison", + "Bejou", + "Fort Indiantown Gap", + "Swanton", + "McFall", + "White Earth", + "Elgin", + "Symerton", + "Wisdom", + "Oakville", + "Dodge", + "Allisonia", + "Blakeslee", + "Oceola", + "Olowalu", + "Round Top", + "Cedar Springs", + "Willard", + "Henlawson", + "Hayfield", + "Sharon", + "Ericson", + "Klingerstown", + "Burns City", + "Tilleda", + "Woodbury", + "Severance", + "Glade", + "Weldon Spring Heights", + "Zemple", + "Amagon", + "Coolidge", + "Mooresville", + "Lankin", + "Danvers", + "Hansell", + "Maramec", + "Ravalli", + "Ratamosa", + "Newark", + "Grand View", + "Watson", + "Theba", + "Cornland", + "Cayce", + "Brutus", + "Numa", + "Orin", + "Domino", + "Elmer", + "Bethany", + "Fort Hill", + "Beryl Junction", + "Salesville", + "Shade Gap", + "Franklin", + "Strang", + "Round Mountain", + "Rio en Medio", + "Greenfield", + "Weingarten", + "Chignik", + "Ocotillo", + "Indian Creek", + "Springfield", + "Cearfoss", + "Foundryville", + "Basco", + "Mercersville", + "Lumber Bridge", + "Auburn", + "Riddleville", + "Doddsville", + "Dumont", + "Kerrtown", + "Martinsburg", + "Davis", + "Comstock", + "Chelan Falls", + "New Pine Creek", + "Revere", + "Harrisburg", + "Brazos", + "Learned", + "Keene", + "Gattman", + "Rutherford", + "Georgetown", + "Headrick", + "Big Pool", + "Arrow Point", + "Wallace", + "Gate", + "Carleton", + "Blue Springs", + "Orrum", + "Pelican", + "Ionia", + "Blandville", + "Milo", + "Holt", + "Lengby", + "New Middletown", + "Rock House", + "Manville", + "Matlock", + "Center", + "Corwin Springs", + "Port Mansfield", + "Newport", + "Carter", + "Esterbrook", + "Wilsonville", + "Lebam", + "Solen", + "De Borgia", + "Hazelton", + "Yorktown", + "Movico", + "Russellville", + "La Esperanza", + "Dante", + "Nikolai", + "Sattley", + "Vandervoort", + "Couderay", + "Glen Flora", + "San Pierre", + "Hollowayville", + "Narka", + "Fingal", + "Sacramento", + "Los Nopalitos", + "Cottage Grove", + "Mount Carbon", + "Verona", + "Formoso", + "Hazel", + "Iron Junction", + "Vera Cruz", + "Stockton", + "Rathbun", + "Nelson Lagoon", + "Karlsruhe", + "Yznaga", + "Loma", + "Mosquero", + "Helvetia", + "Tarrytown", + "Whelen Springs", + "Mauckport", + "Hendrix", + "Whites City", + "Needham", + "Rock Point", + "Sierraville", + "Holloway", + "Garber", + "Gem", + "Sharpsburg", + "Copper Harbor", + "Altoona", + "Abbyville", + "New Alluwe", + "Willowbrook", + "Upper Elochoman", + "Turner", + "Millard", + "Manassas", + "Yale", + "La Salle", + "Red Dog Mine", + "Mount Leonard", + "South Greenfield", + "Carrier", + "Babcock", + "Kirby", + "Bruceton Mills", + "Max", + "Riverview Estates", + "Vowinckel", + "Tampico", + "Riverton", + "Hungerford", + "Montpelier", + "Gulkana", + "Evan", + "Ebro", + "Big Creek", + "Falun", + "Crellin", + "Mount Erie", + "Sombrillo", + "Larsen Bay", + "Greycliff", + "Eagle", + "Sheridan Lake", + "Bradgate", + "Hitchita", + "Guion", + "Waumandee", + "McCarr", + "Ocean Beach", + "Luis Lopez", + "Pulcifer", + "Loyal", + "Opheim", + "Hughes", + "Como", + "Barrelville", + "Grant", + "Carlos", + "Sun Valley", + "Leggett", + "Duffield", + "Perley", + "Sweetwater", + "Old Appleton", + "Joes", + "Gruver", + "Parshall", + "Rochester", + "Ripley", + "Wasta", + "Orient", + "Levasy", + "Linwood", + "Seaforth", + "Bearcreek", + "Nielsville", + "Coleharbor", + "Andover", + "Cambridge", + "Jamestown", + "Mountain", + "Belpre", + "Otway", + "Cylinder", + "Wallace", + "Anvik", + "Worthington", + "Palo Blanco", + "Carrizo", + "Lower Salem", + "Dawson", + "New Pine Creek", + "Bluewater Village", + "Glen Allen", + "Wet Camp Village", + "High Amana", + "Hebgen Lake Estates", + "Graf", + "Ozan", + "Halsey", + "Detroit", + "Whiteside", + "East Burke", + "Piqua", + "Gay", + "Odessa", + "Nemaha", + "Mapleton", + "Tibbie", + "Atka", + "Dixon", + "Sidney", + "Chatsworth", + "Reserve", + "Rose Hill", + "Edgewater Estates", + "Douds", + "Isabel", + "Tuttle", + "Menoken", + "Princeton", + "Siasconset", + "Fairview", + "Aldrich", + "Danville", + "Chistochina", + "Brentford", + "Hill View Heights", + "Ritchey", + "Williford", + "Turtle River", + "Westside", + "Nescatunga", + "Paradise Hill", + "Cape Meares", + "Kirkwood", + "Sereno del Mar", + "Adeline", + "Gutierrez", + "Fargo", + "Berwyn", + "Struble", + "Bingham", + "Hartwick", + "Keenes", + "Byron", + "Mount Moriah", + "Kirk", + "Agar", + "Oak Springs", + "Wanda", + "Randlett", + "Garrison", + "Worton", + "Trosky", + "Elgin", + "Simpson", + "Anegam", + "Pollock", + "Lucerne", + "Hartwell", + "Clyde", + "Eva", + "Antioch", + "Murphy", + "Brooksburg", + "Kilgore", + "Union Grove", + "Maxbass", + "King Lake", + "Camden", + "Vining", + "Lowes", + "Zenda", + "Bradley", + "Spivey", + "Gapland", + "Melmore", + "Alamo", + "Spade", + "Redding", + "Dwight", + "Milan", + "Smith Village", + "Morrison Bluff", + "Shageluk", + "Wellfleet", + "Encino", + "Deerfield", + "Country Club Heights", + "Ashley", + "Ryder", + "Ardoch", + "Paynes Creek", + "Alleghany", + "Sylvanite", + "Hutchinson", + "Watkins", + "Hublersburg", + "Lebanon", + "Gratz", + "Knoxville", + "Spragueville", + "Johnsonville", + "Elmer", + "Sun Valley", + "Sherman", + "Truesdale", + "Sedan", + "Antietam", + "Cobbtown", + "Mendes", + "Bow Valley", + "New Witten", + "Crystal Downs Country Club", + "Climbing Hill", + "Woodlawn Heights", + "Tindall", + "Coats", + "Hassell", + "Benedict", + "Naper", + "Paderborn", + "Cleveland", + "Hurdsfield", + "Toco", + "New Morgan", + "Snowville", + "Raymond", + "Butte", + "Chamizal", + "Mahaska", + "Whispering Pines", + "Blackgum", + "Hartly", + "Keddie", + "El Dara", + "Saddle Ridge", + "Box Canyon", + "Coney Island", + "St. Clairsville", + "Dundarrach", + "Revere", + "Thornton", + "Fort Ransom", + "Speed", + "Rocky Mound", + "Pierpont", + "Popejoy", + "Claire City", + "Zeeland", + "Yankee Lake", + "Deersville", + "Paynesville", + "Crooked Creek", + "Swan", + "Stafford", + "Bark Ranch", + "Hartman", + "Crows Nest", + "Zapata Ranch", + "Port Colden", + "Kent", + "Montezuma", + "Lamont", + "Stratford", + "Plum Branch", + "Sour John", + "Old Agency", + "Fairview", + "Gardner", + "Irwin", + "Golconda", + "Burchard", + "Clio", + "McGrath", + "Beurys Lake", + "Parker", + "Haysville", + "Baskerville", + "Wamic", + "Kerr", + "Naomi", + "Guilford", + "Sherrill", + "Nile", + "Unity Village", + "Ralston", + "Liberty", + "Veguita", + "Ethelsville", + "Crown Point", + "Ingram", + "Niotaze", + "Camas", + "Merrifield", + "Huron", + "Ulmer", + "Country Life Acres", + "Fort Ritchie", + "Hickory", + "Toston", + "Silver Springs", + "Bartlett", + "Tatitlek", + "Forestburg", + "Hutton", + "Longford", + "Graysville", + "Babb", + "Branson", + "Yeager", + "Winston", + "Valley Park", + "Richland", + "Kinross", + "San Acacia", + "Prosser", + "Coyote", + "Powhattan", + "Escudilla Bonita", + "Rosebud", + "Whitney", + "Oneida", + "Takotna", + "Klukwan", + "Mount Hebron", + "Valentine", + "Canaan", + "La Coma", + "Briarwood", + "Rosedale", + "Gracey", + "Maskell", + "Igiugig", + "Havana", + "Marie", + "Livonia", + "St. Rosa", + "Orchard", + "Rodeo", + "Olivet", + "LaGrange", + "Raynham", + "Talking Rock", + "Webster", + "Nicasio", + "Taos Ski Valley", + "Kingvale", + "Westphalia", + "Freeport", + "Unity", + "Steinauer", + "Dennis Acres", + "Hatton", + "Strandburg", + "Gove City", + "Twin Brooks", + "Grand Lake Towne", + "Kim", + "Beaver", + "Hope", + "Gentry", + "Mount Lebanon", + "Colwell", + "Whitewater", + "New Bedford", + "Martin", + "Jud", + "Cope", + "Manning", + "Lehr", + "Rockingham", + "Topeka", + "Norcross", + "Imogene", + "Phillipsville", + "Rachel", + "Kickapoo Site 2", + "Bowmore", + "Bevington", + "Pinehill", + "Cale", + "Duchess Landing", + "Pitkin", + "Shannon City", + "Lee Mont", + "Henriette", + "Tatum", + "Padroni", + "Stanley", + "Clarita", + "Yuba", + "Atwood", + "El Castillo", + "Vandiver", + "Englewood", + "Crookston", + "Smithville", + "Regina", + "Eagle Harbor", + "Big Falls", + "Aredale", + "Balltown", + "Marysville", + "Heartwell", + "Arco", + "Homewood Canyon", + "Twin Lakes", + "Englevale", + "Plover", + "Ramireno", + "Chignik Lagoon", + "Akhiok", + "Strandquist", + "Dana", + "La Bolt", + "Rossie", + "Butte City", + "Chenega", + "Golva", + "Marblemount", + "Stanchfield", + "Mount Carmel", + "Kent", + "Rangerville", + "Haswell", + "Teterboro", + "Greenville", + "Conkling Park", + "Cedar Highlands", + "Happys Inn", + "Pettibone", + "Morristown", + "Weldon", + "Antelope", + "Kickapoo Site 1", + "Fruitdale", + "Sunny Slopes", + "Corinth", + "Scarville", + "Stark", + "Platinum", + "Plano", + "Roseland", + "Waterbury", + "Genola", + "Chilo", + "Walters", + "Dundee", + "Fort Ripley", + "Twin Hills", + "Draper", + "Levelock", + "Nassau", + "Flaxville", + "Olivet", + "Lost Springs", + "Longoria", + "Elsmore", + "Divide", + "Utica", + "Atlantic", + "Buena Vista", + "Oasis", + "McNab", + "Warwick", + "Manhattan Beach", + "Camp Crook", + "Kenneth", + "Horace", + "Reynolds", + "Gully", + "Labette", + "Kremlin", + "Linwood", + "Hazard", + "Bradford", + "Benedict", + "Hornitos", + "Bear Grass", + "Oakwood", + "Driscoll", + "Whalan", + "Bentley", + "Agenda", + "Ihlen", + "Katherine", + "Winnetoon", + "Mound City", + "Commerce", + "Saddle Butte", + "Deweese", + "Worthville", + "Kimbolton", + "Peaceful Village", + "Timken", + "Dawson", + "Palo Verde", + "Mappsburg", + "Climax", + "Jacksonburg", + "Jordan Hill", + "Abie", + "Varina", + "Golden Gate", + "Spring Hill", + "Weeksville", + "Mount Eagle", + "Bushnell", + "Mantador", + "Hindsville", + "Pilot Point", + "Yucca", + "Pekin", + "Hubbell", + "Inavale", + "Taopi", + "Pancoastburg", + "Circle", + "Whitehaven", + "Jacksonburg", + "Delhi", + "Reubens", + "Mill Creek", + "Nimrod", + "Ravinia", + "Nimmons", + "Grand Pass", + "Stockholm", + "Whitestone", + "Nashua", + "North Escobares", + "Flaxton", + "Alamo", + "Hunnewell", + "Ovando", + "Arkoe", + "Rockbridge", + "Clinchport", + "Sunol", + "Ortley", + "Albany", + "Orovada", + "Virgil", + "Douglas", + "Wood Lake", + "Barnard", + "Bassett", + "Hague", + "Lewiston", + "Muddy", + "Sentinel Butte", + "Fourche", + "Los Arcos", + "Oketo", + "Dwight Mission", + "Powhatan", + "Turin", + "Ashland", + "Prescott", + "Peak", + "Saxon", + "Rest Haven", + "Kerrick", + "Hat Island", + "Big Spring", + "Cooke City", + "Wood", + "Murphy", + "Macedonia", + "Redstone", + "Randall", + "Cherry Valley", + "Walshville", + "Keystone", + "St. Vincent", + "House", + "Thornburg", + `Clark's Point`, + "Seward", + "Puerto de Luna", + "Sekiu", + "Bent", + "Vivian", + "Flowing Springs", + "Maryhill", + "New Blaine", + "Hiko", + "Tennant", + "Falconaire", + "Cross Village", + "Tierra Bonita", + "Hainesburg", + "Chitina", + "Concepcion", + "Pingree", + "Quinn", + "Westport", + "Johnstown", + "Ali Molina", + "Penermon", + "Mutual", + "Parkerville", + "Webb City", + "Antreville", + "Boyd", + "Brimson", + "Lynn", + "Mooresville", + "Kirkman", + "Oak", + "Welda", + "Orient", + "Badger Lee", + "Chestnut", + "Halma", + "Radersburg", + "Savage Town", + "Baileyville", + "Santa Cruz", + "Ross Corner", + "Sargeant", + "Wallace", + "Patmos", + "Butterfield", + "Exeter", + "Ethel", + "Simpson", + "Charles City", + "Catron", + "Gibson", + "Brooksville", + "Coulterville", + "Brant Lake", + "Blyn", + "Encino", + "Waverly", + "Luke", + "Lane", + "Hartville", + "Guernsey", + "Tightwad", + "Apple Grove", + "Menlo", + "Valeria", + "Taft", + "Bluff City", + "Oakhaven", + "Dolliver", + "Tonopah", + "Bondurant", + "Balta", + "Ong", + "Burr", + "Alexander", + "Martinez Lake", + "Worth", + "Buckingham Courthouse", + "Rives", + "Bristow", + "Montello", + "El Rancho", + "Rye", + "Clio", + "Steele City", + "Moquino", + "Glasgow", + "Octa", + "Thayer", + "Grace City", + "West Hampton Dunes", + "Ree Heights", + "McKittrick", + "Royal", + "Kysorville", + "Wooldridge", + "Knierim", + "Brookview", + "Waldenburg", + "New Freeport", + "Garden City", + "West Kootenai", + "Milton", + "Bathgate", + "Driftwood", + "Bayport", + "Primrose", + "Sweet Grass", + "Baker", + "Caberfae", + "Eldorado", + "Folsom", + "Wilder", + "Union Hill", + "Rodney", + "Belvidere", + "Merwin", + "Hazel Green", + "Hoberg", + "Placerville", + "Flor del Rio", + "Virginia", + "Nashville", + "Dougherty", + "Leonard", + "Adamsville", + "Spring Gap", + "Ali Chukson", + "Hadley", + "Gray", + "Regino Ramirez", + "Lancaster", + "Rampart", + "Filer City", + "Randalia", + "Greenwater", + "Lock Springs", + "Hamilton", + "Ohiopyle", + "Huson", + "Point of Rocks", + "Lake City", + "Great Bend", + "Hamlet", + "Colona", + "Mayhill", + "Northboro", + "Sciota", + "Pine Bend", + "Waves", + "Hensley", + "Wolf Lake", + "Washington", + "Hazel Run", + "Winfred", + "Aurora", + "Sun River", + "Osterdock", + "Nome", + "Elgin", + "Quesada", + "Govan", + "Eyers Grove", + "Petrey", + "Harris", + "Gazelle", + "Haigler Creek", + "Randolph", + "Alpine Northeast", + "Leggett", + "Thayer", + "Curlew", + "Bibo", + "Julian", + "Tintah", + "Manchester", + "Clayton", + "Cardiff", + "New Washington", + "Iatan", + "Iliamna", + "California Junction", + "Whaleyville", + "Magnet", + "Ginger Blue", + "Chilili", + "Raymond", + "Powersville", + "North River", + "Brocket", + "Hunter", + "Starkville", + "Macdoel", + "Fancy Gap", + "Playas", + "Goldville", + "Mohawk Vista", + "Alton", + "Bergoo", + "Weston", + "Jackson Junction", + "Glen Haven", + "Moss Landing", + "Donnybrook", + "McHenry", + "Smyrna", + "Harrison", + "Smithfield", + "Leonidas", + "Fullerton", + "Klein", + "Robinson Mill", + "Sandyville", + "Colorado Acres", + "Bakersville", + "Indian Falls", + "Irwin", + "Bay Lake", + "Elbe", + "Amity", + "Arcola", + "Belva", + "Hard Rock", + "Panola", + "Ward", + "Lake City", + "Port Alexander", + "Oxford", + "Hatfield", + "Los Ojos", + "Mizpah", + "Farwell", + "Earlton", + "Elmdale", + "Marienthal", + "Urbank", + "Cucumber", + "Souris", + "Littlejohn Island", + "Lima", + "Lake Davis", + "Paisano Park", + "Kansas", + "Barney", + "Powellville", + "Riverside", + "Oldtown", + "Eagleville", + "Krupp", + "Arrow Rock", + "Boy River", + "Brogan", + "Allendale", + "Springbrook", + "New Albany", + "Garrison", + "Nunda", + "Laconia", + "South Fork", + "Shawmut", + "Dovray", + "Martin", + "Niagara", + "McKinnon", + "Fellows", + "Grenville", + "Archer", + "Elyria", + "Foster", + "Paradise Valley", + "North San Ysidro", + "Cow Creek", + "Woodford", + "Qui-nai-elt Village", + "Skedee", + "Belle Prairie City", + "Dunbar", + "Venice", + "Rinard", + "Swink", + "Malo", + "Beaver", + "Doran", + "Antelope", + "Lake Roberts Heights", + "Leona", + "Lamont", + "Ophir", + "Tolley", + "Poole", + "IXL", + "Elmira", + "Pondsville", + "Satartia", + "Dames Quarter", + "Cora", + "Whitehawk", + "Prairie Rose", + "Umber View Heights", + "Nekoma", + "La Victoria", + "Neihart", + "Crozier", + "Echo", + "Pine Island", + "State Line", + "Turton", + "South End", + "Annapolis", + "Panorama Heights", + "Long Lake", + "Cherokee City", + "Corral City", + "Padre Ranchitos", + "Hayesville", + "Laird", + "Roscoe", + "Mammoth", + "Chignik Lake", + "Rea", + "Crum", + "Paradise", + "Piney", + "Naples", + "Canoochee", + "Wilmore", + "Carrsville", + "Emelle", + "Biddle", + "Kasaan", + "Veteran", + "Sundown", + "Twilight", + "Selz", + "River Sioux", + "Burnt Prairie", + "Crystal Mountain", + "Evergreen", + "Nina", + "Sun City", + "Eagle Village", + "Kathryn", + "Clearview", + "Fishers Landing", + "South Gifford", + "Salineño North", + "Altoona", + "Vining", + "Outlook", + "Coppock", + "Sedan", + "Gulf Port", + "Trail", + "Holiday City", + "Deputy", + "North Crows Nest", + "Outlook", + "Cedar Mills", + "Metz", + "Jessie", + "McClenney Tract", + "Inkster", + "Gillett Grove", + "Westervelt", + "Box Elder", + "Hetland", + "Lake Mary Ronan", + "Woodworth", + "Los Veteranos I", + "Sarah Ann", + "California Hot Springs", + "Edie", + "Cotesfield", + "Akaska", + "Moclips", + "Riceville", + "Cotter", + "Belvidere", + "Blaine", + "Courtenay", + "Albany", + "Clarksburg", + "South Naknek", + "Westland", + "Robinson", + "Bennett Springs", + "Strong City", + "Edmond", + "Wiederkehr Village", + "Pendleton", + "Hollister", + "Tarnov", + "Soda Springs", + "City of the Sun", + "Harbine", + "Dayton", + "Emmet", + "Vista", + "Faywood", + "Voltaire", + "Hampden", + "Saronville", + "Stockham", + "Robertson", + "Graham", + "Putnam", + "Deer Grove", + "Ponshewaing", + "Cayuse", + "Myrtle", + "Harwood", + "Fenwick", + "Caballo", + "Aldrich", + "Port Clarence", + "La Prairie", + "Inverness", + "Vienna", + "Kicking Horse", + "Boyds", + "Ramirez-Perez", + "Las Lomitas", + "Little America", + "Zion", + "Cutter", + "Aurora Center", + "Ernstville", + "North Lilbourn", + "Osgood", + "Islandton", + "Norman", + "Youngsville", + "Whitmer", + "Musselshell", + "Forbes", + "Pronghorn", + "Lookout", + "Louisburg", + "Erwin", + "Amistad", + "Pleasanton", + "Manley Hot Springs", + "Tinsman", + "Kickapoo Site 5", + "Okaton", + "Websters Crossing", + "Nara Visa", + "Tillatoba", + "Jenkinsville", + "False Pass", + "Clifford", + "Lorton", + "Regan", + "Tat Momoli", + "Byersville", + "Smicksburg", + "Meridian", + "McCoy", + "Wightmans Grove", + "Matfield Green", + "Huntley", + "Udell", + "Lebanon", + "Leonard", + "Oatman", + "Stonewall Gap", + "Tonsina", + "Glenville", + "Marysville", + "Kickapoo Site 7", + "Anderson", + "Vining", + "Strathcona", + "Owasa", + "Fredonia", + "Sugden", + "Coyville", + "Rocky Ford", + "Millerton", + "Lake Santeetlah", + "Guadalupe Guerra", + "West Roy Lake", + "Arbela", + "Champion", + "Birdsong", + "Hardy", + "Humboldt", + "Tolu", + "Cass", + "Little Cedar", + "Table Rock", + "Ferney", + "Langdon", + "Mier", + "Phillipstown", + "Buck Grove", + "Rodman", + "Benton", + "Rogers", + "Summerhaven", + "Benton", + "Edna Bay", + "Hagarville", + "Athol", + "Rockwood", + "Maybell", + "Saltaire", + "Bayou Corne", + "Butte Meadows", + "May", + "Old Eucha", + "Surprise", + "Orogrande", + "Seconsett Island", + "Rockport", + "Volcano", + "Toeterville", + "Central", + "Deep Creek", + "Miltonsburg", + "Stoutsville", + "Onton", + "Truxton", + "Dresden", + "Two Buttes", + "Alice", + "Carlton", + "Cherry Log", + "Springbrook", + "Donaldson", + "Trona", + "Stony River", + "Dripping Springs", + "Conway", + "Casas", + "St. Cloud", + "Byram Center", + "Panola", + "Ellston", + "Cliff Village", + "Waller", + "Boykin", + "Sunwest", + "Clayton", + "Sawpit", + "Pierpoint", + "Clinton", + "Cathay", + "Triplett", + "Aspinwall", + "Dickey", + "Cloud Creek", + "La Grande", + "Greer", + "Delway", + "Coburg", + "Harrison City", + "Gilead", + "Gramling", + "Hachita", + "Dresser", + "Callimont", + "Jardine", + "Dolton", + "Wide Ruins", + "Hobucken", + "Leando", + "Amorita", + "Sequoia Crest", + "Monango", + "Ragan", + "Willis", + "Oasis", + "Elliott", + "Florence", + "Woodland", + "Ottosen", + "Seneca", + "Jolley", + "Ronneby", + "East Fairview", + "Midway", + "Idalia", + "Edgewood", + "Logan Creek", + "Diaperville", + "Herron Island", + "Covenant Life", + "Hillman", + "Shaniko", + "Duran", + "South Acomita Village", + "Baker", + "Clear Creek", + "Nash", + "Granite", + "Goldfield", + "Richfield", + "Denver", + "Florence", + "Anzac Village", + "La Loma de Falcon", + "Blue Eye", + "Reid", + "Galatia", + "Blanchard", + "Rendville", + "El Capitan", + "Tolstoy", + "Hamlin", + "Landa", + "Dot Lake Village", + "Crab Orchard", + "McLean", + "Cornlea", + "Wheatland", + "Elkport", + "Natural Bridge", + "Texola", + "Little Orleans", + "Regal", + "Byron", + "Wenonah", + "Reserve", + "Berlin", + "Cobden", + "Nubieber", + "Seneca", + "Kickapoo Site 6", + "Jerome", + "Douglas", + "Denham", + "Sutherland", + "Cundiyo", + "Paoli", + "Popponesset Island", + "Valley Ford", + "Granger", + "Lupus", + "Gerlach", + "Broadland", + "Dailey", + "Fairdale", + "La Chuparosa", + "Panola", + "Speed", + "Brinsmade", + "Danville", + "Capulin", + "Altamont", + "Nanticoke Acres", + "Nelson", + "Glenwood", + "Frytown", + "Spokane", + "Byers", + "Bushong", + "Bentley", + "Fremont", + "Beyerville", + "Concord", + "Macomb", + "Berkley", + "Lake Roberts", + "Rockham", + "Los Panes", + "Cushing", + "Canton City", + "Amado", + "Burgess", + "Creston", + "Beaulieu", + "Great Meadows", + "Sunrise", + "Spencer", + "Yetter", + "Weston", + "Belgreen", + "Lance Creek", + "Los Veteranos II", + "Santiago", + "Passaic", + "Wolford", + "Correll", + "Huntsdale", + "Rosston", + "Victoria", + "Boulder", + "Chesapeake", + "Excursion Inlet", + "Homestead", + "Clarysville", + "Alsen", + "Bison", + "Tanquecitos South Acres", + "Charmwood", + "Grainola", + "Storla", + "Gandy", + "Lawton", + "Erie", + "Weed", + "Pedro Bay", + "Kemps Mill", + "Susank", + "Galt", + "Old Station", + "East Amana", + "Brownsville", + "Carlton", + "Long Lake", + "Botines", + "Parkline", + "Waldo", + "Wales", + "Thendara", + "Covel", + "Bull Hollow", + "Rocky Point", + "Moorefield", + "Thousand Island Park", + "Carbon", + "Lisco", + "Winigan", + "Foxholm", + "Impact", + "Verdel", + "Portland", + "Miller", + "Embden", + "Whale Pass", + "Samnorwood", + "Jenner", + "Grenville", + "Greenbackville", + "Marvin", + "Luverne", + "Florence", + "Nanafalia", + "Skwentna", + "Putnam", + "Mentone", + "Floraville", + "Bazile Mills", + "Fortescue", + "Jeffrey City", + "Crocker", + "Lushton", + "Deer Lick", + "Hutchins", + "Silver Gate", + "Fontanelle", + "No Name", + "Karluk", + "Prattville", + "Kramer", + "Maloy", + "Port Murray", + "Sibley", + "Fults", + "Dunlap", + "Aten", + "Annada", + "Evergreen", + "New Amsterdam", + "De Lamere", + "Gardena", + "Green Hills", + "Amada Acres", + "Ypsilanti", + "Oasis", + "Strang", + "Middle Frisco", + "Atomic City", + "Luna", + "Fallis", + "Cedar Point", + "Clam Lake", + "Danville", + "Egeland", + "Corley", + "Aleneva", + "Braddock", + "Martinsdale", + "Cowles", + "South Lineville", + "Balfour", + "Lake Buena Vista", + "Sarles", + "El Brazil", + "Bankston", + "Johnson", + "Fairview", + "Memphis", + "Goodyears Bar", + "Tennant", + "Fingerville", + "Lake Harbor", + "Kupreanof", + "Antler", + "Dover Hill", + "Zarephath", + "Juntura", + "Bucyrus", + "Cayuga", + "Little Valley", + "Ryan Park", + "Chelsea", + "Gilbert", + "Fontenelle", + "Lazy Lake", + "Amaya", + "Zortman", + "Preston", + "Brownell", + "Elliott", + "Cross Anchor", + "Wardville", + "Stockville", + "Knox", + "Farmers", + "Beaverdam", + "Bynum", + "Arrey", + "Ludden", + "Biehle", + "La Madera", + "Fernando Salinas", + "Mabie", + "Disautel", + "Wintersburg", + "Manele", + "Victoria Vera", + "Bigelow", + "Mendeltna", + "Milford", + "Loco Hills", + "Gerster", + "Delphos", + "Seven Springs", + "Lipscomb", + "Alamo Lake", + "Webber", + "Redcrest", + "Falman", + "Radium", + "Charco", + "Datil", + "Ambrose", + "Scott", + "Escondida", + "Ensenada", + "Wallowa Lake", + "Russell Springs", + "Jump River", + "Kaylor", + "Grandfather", + "Caledonia", + "Lone Elm", + "Scottsville", + "Hendley", + "Mildred", + "Scofield", + "Oak Hill", + "Roy Lake", + "Alzada", + "Aspen Springs", + "Amidon", + "Haynes", + "Blodgett", + "Cobre", + "York", + "Oak Hill", + "Conejos", + "Buckshot", + "Edge Hill", + "Lorenzo", + "Barada", + "Obert", + "Coleman", + "Mount Sterling", + "Vantage", + "Friendship", + "Green Grass", + "Lonerock", + "Time", + "Arvada", + "Kent", + "St. Benedict", + "Lamar", + "Airport Heights", + "River Forest", + "Pioneer", + "Berea", + "Rivereno", + "Cuartelez", + "Mustang", + "Drytown", + "Conway", + "Milltown", + "Denhoff", + "Fortuna", + "El Indio", + "Richfield", + "Piedra", + "Nikolski", + "Kingston", + "Mylo", + "Silesia", + "Bassett", + "Sutton", + "Calio", + "Hollenberg", + "Nora", + "Logan", + "Pilgrim", + "Sholes", + "Spring Garden", + "Lake Minchumina", + "Ferry", + "Red Devil", + "Salmon Creek", + "Lindy", + "Olivia Lopez de Gutierrez", + "Hamberg", + "Indian Springs", + "Frederick", + "Lupton", + "Durango", + "Bonanza", + "Waterview", + "Nenzel", + "Lovelaceville", + "Stidham", + "Los Minerales", + "Montier", + "Springdale", + "S.N.P.J.", + "Vilas", + "Ismay", + "Los Ybanez", + "Bancroft", + "Latimer", + "Kilbourne", + "Towner", + "Stryker", + "Middleburg", + "Ponderosa", + "Leal", + "Foraker", + "Calvin", + "Virgil", + "Van Tassell", + "Sunset Acres", + "Goodnight", + "Ayr", + "Kendall", + "Holmesville", + "Blairsden", + "Valdez", + "Hepburn", + "Peyton", + "Irena", + "Attu Station", + "Stotesbury", + "Charlos Heights", + "Penalosa", + "Overly", + "Cuyama", + "Butler", + "Shoshone", + "Brewster", + "Drummond", + "West Denton", + "Gann Valley", + "Dalton", + "Craig", + "Mound", + "Preston", + "Flowella", + "Megargel", + "Roxbury", + "Bellfountain", + "Irvington", + "Hunter Creek", + "Wickliffe", + "Cooperton", + "Leith", + "Loma", + "Gascoyne", + "Valley-Hi", + "Albee", + "Alfred", + "Hannah", + "Burchinal", + "Port Tobacco Village", + "Stevens Village", + "Heil", + "Quitman", + "Barry", + "Brush Creek", + "Hyder", + "Onaka", + "Corning", + "Dragoon", + "Roosevelt", + "Pickens", + "Silvana", + "Fedora", + "Plantation Island", + "La Joya", + "Eldora", + "Beaconsfield", + "Le Roy", + "Bantry", + "Kief", + "Falcon Heights", + "Pablo Pena", + "Helen", + "Kaskaskia", + "Valley City", + "Cedar", + "Weeki Wachee", + "Champ", + "Lime Village", + "Los Huisaches", + "Graniteville", + "Hansboro", + "Alatna", + "Conchas Dam", + "Bucks", + "Cathedral", + "Larson", + "Churchs Ferry", + "Pillsbury", + "Loveland", + "Bettles", + "Chicken", + "Excello", + "Kinbrae", + "Parks", + "Renfrow", + "Rockville", + "Venturia", + "Dering Harbor", + "Levant", + "McBaine", + "Nardin", + "Marineland", + "Livengood", + "Pine Valley", + "San Antonio", + "Oak Grove", + "Evansville", + "Beulah Beach", + "Centralia", + "Girard", + "Farmer", + "Cottonwood", + "Waldron", + "Buck Meadows", + "Keeler", + "Gideon", + "River Bend", + "Wiseman", + "Raleigh", + "Guffey", + "Burton", + "Knowles", + "Bartlett", + "Dahlen", + "Willow Island", + "Tamora", + "Cotopaxi", + "Auburn", + "Ugashik", + "Sugarloaf Village", + "McMullen", + "Meyer", + "Perth", + "Running Water", + "Lakeside", + "Bergen", + "Lake Lindsey", + "Lambert", + "Cannondale", + "Artas", + "Loraine", + "Funkley", + "Wetonka", + "Jefferson", + "Enders", + "Clayton", + "Fox Park", + "St. Charles", + "Norristown", + "Elbert", + "Harris", + "Santel", + "Ko Vaya", + "Quail", + "Sweet Water Village", + "Hawk Springs", + "Niarada", + "Healy Lake", + "South Park View", + "Jacksonville", + "Bolan", + "Pearsonville", + "Inland", + "Elias-Fela Solis", + "Fontana Dam", + "Lambert", + "Grano", + "Rentchler", + "Three Creeks", + "Brownlee", + "Lowry", + "Kalaeloa", + "Brandon", + "Heimdal", + "Banks", + "Blue Clay Farms", + "Blanchard", + "Cave", + "Beluga", + "Anoka", + "Verdon", + "Tavistock", + "Kenton", + "Pastura", + "Cartago", + "Plevna", + "Freeport", + "Lost Springs", + "Hoot Owl", + "Thurmond", + "Birch Creek", + "Ruso", + "Athelstan", + "Lily", + "Elfin Cove", + "Prairie City", + "San Fernando", + "Mojave Ranch Estates", + "Lowman", + "Hillsview", + "Poso Park", + "White Rock", + "Warm River", + "Four Mile Road", + "Portage Creek", + "Gross", + "Lotsee", + "The Ranch", + "Shamrock", + "Monowi", +} diff --git a/idk/datagen/warranty.go b/idk/datagen/warranty.go new file mode 100644 index 000000000..c8e92c5a0 --- /dev/null +++ b/idk/datagen/warranty.go @@ -0,0 +1,148 @@ +package datagen + +import ( + "fmt" + "io" + "math/rand" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" +) + +// Ensure Warranty implements interface. +var _ Sourcer = (*Warranty)(nil) + +// Warranty implements Sourcer. +type Warranty struct{} + +// NewWarranty returns a new instance of Warranty. +func NewWarranty(cfg SourceGeneratorConfig) Sourcer { + return &Warranty{} +} + +// Source returns an idk.Source which will generate +// records for a partition of the entire record space, +// determined by the concurrency value. It implements +// the Sourcer interface. +func (w *Warranty) Source(cfg SourceConfig) idk.Source { + min := int64(0) + src := &WarrantySource{ + startFrom: cfg.startFrom, + endAt: cfg.endAt, + rand: rand.New(rand.NewSource(19)), + schema: []idk.Field{ + idk.IDField{NameVal: "id"}, + idk.IDField{NameVal: "type"}, + idk.StringArrayField{NameVal: "week_active"}, + idk.IntField{NameVal: "start", Min: &min}, + idk.IntField{NameVal: "end", Min: &min}, + idk.IntField{NameVal: "cust_id", Min: &min}, + idk.IntField{NameVal: "item_id", Min: &min}, + }, + } + src.typeZipf = rand.NewZipf(src.rand, 1.03, 5, 100) + src.custZipf = rand.NewZipf(src.rand, 1.01, 4, 100000000) + + src.record = make([]interface{}, len(src.schema)) + src.record[2] = make([]string, 52*5) + + return src +} + +// PrimaryKeyFields returns the fields from the schema +// which should be used as the index's primary key. +func (w *Warranty) PrimaryKeyFields() []string { + return []string{"id"} +} + +// DefaultEndAt sets the endAt record value for the +// case where one is not provided. It implements the +// Sourcer interface. +func (w *Warranty) DefaultEndAt() uint64 { + return 2147483648 +} + +// Info describes what this implementation of Sourcer +// generates. It implements the Sourcer interface. +func (w *Warranty) Info() string { + return "TODO" +} + +// Ensure WarrantySource implements interface. +var _ idk.Source = (*WarrantySource)(nil) + +type WarrantySource struct { + Log logger.Logger + + startFrom uint64 + endAt uint64 + + rand *rand.Rand + typeZipf *rand.Zipf + custZipf *rand.Zipf + + schema []idk.Field + record record +} + +func (s *WarrantySource) Record() (idk.Record, error) { + if s.startFrom >= s.endAt { + return nil, io.EOF + } + s.record[0] = s.startFrom + s.startFrom++ + s.record[1] = s.typeZipf.Uint64() + startDay := s.rand.Intn(daysSinceStart) + days := numDays(s.rand) + numWeeks := days / 7 + s.record[2] = s.record[2].([]string)[:numWeeks] + populateActiveWeeks(s.record[2].([]string), startDay) + s.record[3] = startDay + s.record[4] = startDay + days + s.record[5] = int64(s.custZipf.Uint64()) // 100M customers + s.record[6] = s.rand.Intn(1500000000) // 1.5B items + return s.record, nil +} + +func (s *WarrantySource) Schema() []idk.Field { + return s.schema +} + +func (s *WarrantySource) Seed(seed int64) { + s.rand.Seed(seed) +} + +var _ Seedable = (*WarrantySource)(nil) + +func numDays(r *rand.Rand) int { + num := r.Intn(10) + if num < 6 { + return 365 + } + if num < 8 { + return 365 * 3 + } + if num < 9 { + return 365 * 2 + } + return 365 * 5 +} + +func populateActiveWeeks(week_active []string, startDay int) { + startWeek := startDay / 7 + startYear := startWeek / 52 + startWeek = startWeek%52 + 1 + startYear += 2015 + for i := range week_active { + week_active[i] = fmt.Sprintf("%d-%d", startYear, startWeek) + startWeek++ + if startWeek > 52 { + startWeek = 1 + startYear++ + } + } +} + +func (s *WarrantySource) Close() error { + return nil +} diff --git a/idk/datagen/zip_codes.data.go b/idk/datagen/zip_codes.data.go new file mode 100644 index 000000000..1cadb15fd --- /dev/null +++ b/idk/datagen/zip_codes.data.go @@ -0,0 +1,42728 @@ +package datagen + +var zip_codes = []string{ + "00501", + "00544", + "00601", + "00602", + "00603", + "00604", + "00605", + "00606", + "00610", + "00611", + "00612", + "00613", + "00614", + "00616", + "00617", + "00622", + "00623", + "00624", + "00627", + "00631", + "00636", + "00637", + "00638", + "00641", + "00646", + "00647", + "00650", + "00652", + "00653", + "00656", + "00659", + "00660", + "00662", + "00664", + "00667", + "00669", + "00670", + "00674", + "00676", + "00677", + "00678", + "00680", + "00681", + "00682", + "00683", + "00685", + "00687", + "00688", + "00690", + "00692", + "00693", + "00694", + "00698", + "00703", + "00704", + "00705", + "00707", + "00714", + "00715", + "00716", + "00717", + "00718", + "00719", + "00720", + "00721", + "00723", + "00725", + "00726", + "00727", + "00728", + "00729", + "00730", + "00731", + "00732", + "00733", + "00734", + "00735", + "00736", + "00737", + "00738", + "00739", + "00740", + "00741", + "00742", + "00744", + "00745", + "00751", + "00754", + "00757", + "00765", + "00766", + "00767", + "00769", + "00771", + "00772", + "00773", + "00775", + "00777", + "00778", + "00780", + "00782", + "00783", + "00784", + "00785", + "00786", + "00791", + "00792", + "00794", + "00795", + "00801", + "00802", + "00803", + "00804", + "00805", + "00820", + "00821", + "00822", + "00823", + "00824", + "00830", + "00831", + "00840", + "00841", + "00850", + "00851", + "00901", + "00902", + "00906", + "00907", + "00908", + "00909", + "00910", + "00911", + "00912", + "00913", + "00914", + "00915", + "00916", + "00917", + "00918", + "00919", + "00920", + "00921", + "00922", + "00923", + "00924", + "00925", + "00926", + "00927", + "00928", + "00929", + "00930", + "00931", + "00933", + "00934", + "00935", + "00936", + "00937", + "00939", + "00940", + "00949", + "00950", + "00951", + "00952", + "00953", + "00954", + "00955", + "00956", + "00957", + "00958", + "00959", + "00960", + "00961", + "00962", + "00963", + "00965", + "00966", + "00968", + "00969", + "00970", + "00971", + "00975", + "00976", + "00977", + "00978", + "00979", + "00981", + "00982", + "00983", + "00984", + "00985", + "00986", + "00987", + "00988", + "01001", + "01002", + "01003", + "01004", + "01005", + "01007", + "01008", + "01009", + "01010", + "01011", + "01012", + "01013", + "01014", + "01020", + "01021", + "01022", + "01026", + "01027", + "01028", + "01029", + "01030", + "01031", + "01032", + "01033", + "01034", + "01035", + "01036", + "01037", + "01038", + "01039", + "01040", + "01041", + "01050", + "01053", + "01054", + "01056", + "01057", + "01059", + "01060", + "01061", + "01062", + "01063", + "01066", + "01068", + "01069", + "01070", + "01071", + "01072", + "01073", + "01074", + "01075", + "01077", + "01079", + "01080", + "01081", + "01082", + "01083", + "01084", + "01085", + "01086", + "01088", + "01089", + "01090", + "01092", + "01093", + "01094", + "01095", + "01096", + "01097", + "01098", + "01101", + "01102", + "01103", + "01104", + "01105", + "01106", + "01107", + "01108", + "01109", + "01111", + "01115", + "01116", + "01118", + "01119", + "01128", + "01129", + "01133", + "01138", + "01139", + "01144", + "01151", + "01152", + "01195", + "01199", + "01201", + "01202", + "01203", + "01220", + "01222", + "01223", + "01224", + "01225", + "01226", + "01227", + "01229", + "01230", + "01235", + "01236", + "01237", + "01238", + "01240", + "01242", + "01243", + "01244", + "01245", + "01247", + "01252", + "01253", + "01254", + "01255", + "01256", + "01257", + "01258", + "01259", + "01260", + "01262", + "01263", + "01264", + "01266", + "01267", + "01270", + "01301", + "01302", + "01330", + "01331", + "01337", + "01338", + "01339", + "01340", + "01341", + "01342", + "01343", + "01344", + "01346", + "01347", + "01349", + "01350", + "01351", + "01354", + "01355", + "01360", + "01364", + "01366", + "01367", + "01368", + "01370", + "01373", + "01375", + "01376", + "01378", + "01379", + "01380", + "01420", + "01430", + "01431", + "01432", + "01434", + "01436", + "01438", + "01440", + "01441", + "01450", + "01451", + "01452", + "01453", + "01460", + "01462", + "01463", + "01464", + "01467", + "01468", + "01469", + "01470", + "01471", + "01472", + "01473", + "01474", + "01475", + "01477", + "01501", + "01503", + "01504", + "01505", + "01506", + "01507", + "01508", + "01509", + "01510", + "01515", + "01516", + "01517", + "01518", + "01519", + "01520", + "01521", + "01522", + "01523", + "01524", + "01525", + "01526", + "01527", + "01529", + "01531", + "01532", + "01534", + "01535", + "01536", + "01537", + "01538", + "01540", + "01541", + "01542", + "01543", + "01545", + "01546", + "01550", + "01560", + "01561", + "01562", + "01564", + "01566", + "01568", + "01569", + "01570", + "01571", + "01580", + "01581", + "01582", + "01583", + "01585", + "01586", + "01588", + "01590", + "01601", + "01602", + "01603", + "01604", + "01605", + "01606", + "01607", + "01608", + "01609", + "01610", + "01611", + "01612", + "01613", + "01614", + "01615", + "01653", + "01654", + "01655", + "01701", + "01702", + "01703", + "01704", + "01705", + "01718", + "01719", + "01720", + "01721", + "01730", + "01731", + "01740", + "01741", + "01742", + "01745", + "01746", + "01747", + "01748", + "01749", + "01752", + "01754", + "01756", + "01757", + "01760", + "01770", + "01772", + "01773", + "01775", + "01776", + "01778", + "01784", + "01801", + "01803", + "01805", + "01806", + "01807", + "01808", + "01810", + "01812", + "01813", + "01815", + "01821", + "01822", + "01824", + "01826", + "01827", + "01830", + "01831", + "01832", + "01833", + "01834", + "01835", + "01840", + "01841", + "01842", + "01843", + "01844", + "01845", + "01850", + "01851", + "01852", + "01853", + "01854", + "01860", + "01862", + "01863", + "01864", + "01865", + "01866", + "01867", + "01876", + "01879", + "01880", + "01885", + "01886", + "01887", + "01888", + "01889", + "01890", + "01899", + "01901", + "01902", + "01903", + "01904", + "01905", + "01906", + "01907", + "01908", + "01910", + "01913", + "01915", + "01921", + "01922", + "01923", + "01929", + "01930", + "01931", + "01936", + "01937", + "01938", + "01940", + "01944", + "01945", + "01949", + "01950", + "01951", + "01952", + "01960", + "01961", + "01965", + "01966", + "01969", + "01970", + "01971", + "01982", + "01983", + "01984", + "01985", + "02018", + "02019", + "02020", + "02021", + "02025", + "02026", + "02027", + "02030", + "02031", + "02032", + "02035", + "02038", + "02040", + "02041", + "02043", + "02044", + "02045", + "02047", + "02048", + "02050", + "02051", + "02052", + "02053", + "02054", + "02055", + "02056", + "02059", + "02060", + "02061", + "02062", + "02065", + "02066", + "02067", + "02070", + "02071", + "02072", + "02081", + "02090", + "02093", + "02108", + "02109", + "02110", + "02111", + "02112", + "02113", + "02114", + "02115", + "02116", + "02117", + "02118", + "02119", + "02120", + "02121", + "02122", + "02123", + "02124", + "02125", + "02126", + "02127", + "02128", + "02129", + "02130", + "02131", + "02132", + "02133", + "02134", + "02135", + "02136", + "02137", + "02138", + "02139", + "02140", + "02141", + "02142", + "02143", + "02144", + "02145", + "02148", + "02149", + "02150", + "02151", + "02152", + "02153", + "02155", + "02156", + "02163", + "02169", + "02170", + "02171", + "02176", + "02180", + "02184", + "02185", + "02186", + "02187", + "02188", + "02189", + "02190", + "02191", + "02196", + "02199", + "02201", + "02203", + "02204", + "02205", + "02206", + "02207", + "02210", + "02211", + "02212", + "02215", + "02216", + "02217", + "02222", + "02228", + "02238", + "02239", + "02241", + "02266", + "02269", + "02283", + "02284", + "02293", + "02295", + "02297", + "02298", + "02301", + "02302", + "02303", + "02304", + "02305", + "02322", + "02324", + "02325", + "02327", + "02330", + "02331", + "02332", + "02333", + "02334", + "02337", + "02338", + "02339", + "02340", + "02341", + "02343", + "02344", + "02345", + "02346", + "02347", + "02348", + "02349", + "02350", + "02351", + "02355", + "02356", + "02357", + "02358", + "02359", + "02360", + "02361", + "02362", + "02364", + "02366", + "02367", + "02368", + "02370", + "02375", + "02379", + "02381", + "02382", + "02420", + "02421", + "02445", + "02446", + "02447", + "02451", + "02452", + "02453", + "02454", + "02455", + "02456", + "02457", + "02458", + "02459", + "02460", + "02461", + "02462", + "02464", + "02465", + "02466", + "02467", + "02468", + "02471", + "02472", + "02474", + "02475", + "02476", + "02477", + "02478", + "02479", + "02481", + "02482", + "02492", + "02493", + "02494", + "02495", + "02532", + "02534", + "02535", + "02536", + "02537", + "02538", + "02539", + "02540", + "02541", + "02542", + "02543", + "02552", + "02553", + "02554", + "02556", + "02557", + "02558", + "02559", + "02561", + "02562", + "02563", + "02564", + "02565", + "02568", + "02571", + "02573", + "02574", + "02575", + "02576", + "02584", + "02601", + "02630", + "02631", + "02632", + "02633", + "02634", + "02635", + "02636", + "02637", + "02638", + "02639", + "02641", + "02642", + "02643", + "02644", + "02645", + "02646", + "02647", + "02648", + "02649", + "02650", + "02651", + "02652", + "02653", + "02655", + "02657", + "02659", + "02660", + "02661", + "02662", + "02663", + "02664", + "02666", + "02667", + "02668", + "02669", + "02670", + "02671", + "02672", + "02673", + "02675", + "02702", + "02703", + "02712", + "02713", + "02714", + "02715", + "02717", + "02718", + "02719", + "02720", + "02721", + "02722", + "02723", + "02724", + "02725", + "02726", + "02738", + "02739", + "02740", + "02741", + "02742", + "02743", + "02744", + "02745", + "02746", + "02747", + "02748", + "02760", + "02761", + "02762", + "02763", + "02764", + "02766", + "02767", + "02768", + "02769", + "02770", + "02771", + "02777", + "02779", + "02780", + "02783", + "02790", + "02791", + "02801", + "02802", + "02804", + "02806", + "02807", + "02808", + "02809", + "02812", + "02813", + "02814", + "02815", + "02816", + "02817", + "02818", + "02822", + "02823", + "02824", + "02825", + "02826", + "02827", + "02828", + "02829", + "02830", + "02831", + "02832", + "02833", + "02835", + "02836", + "02837", + "02838", + "02839", + "02840", + "02841", + "02842", + "02852", + "02854", + "02857", + "02858", + "02859", + "02860", + "02861", + "02862", + "02863", + "02864", + "02865", + "02871", + "02872", + "02873", + "02874", + "02875", + "02876", + "02877", + "02878", + "02879", + "02880", + "02881", + "02882", + "02883", + "02885", + "02886", + "02887", + "02888", + "02889", + "02891", + "02892", + "02893", + "02894", + "02895", + "02896", + "02898", + "02901", + "02902", + "02903", + "02904", + "02905", + "02906", + "02907", + "02908", + "02909", + "02910", + "02911", + "02912", + "02914", + "02915", + "02916", + "02917", + "02918", + "02919", + "02920", + "02921", + "02940", + "03031", + "03032", + "03033", + "03034", + "03036", + "03037", + "03038", + "03040", + "03041", + "03042", + "03043", + "03044", + "03045", + "03046", + "03047", + "03048", + "03049", + "03051", + "03052", + "03053", + "03054", + "03055", + "03057", + "03060", + "03061", + "03062", + "03063", + "03064", + "03070", + "03071", + "03073", + "03076", + "03077", + "03079", + "03082", + "03084", + "03086", + "03087", + "03101", + "03102", + "03103", + "03104", + "03105", + "03106", + "03107", + "03108", + "03109", + "03110", + "03111", + "03215", + "03216", + "03217", + "03218", + "03220", + "03221", + "03222", + "03223", + "03224", + "03225", + "03226", + "03227", + "03229", + "03230", + "03231", + "03233", + "03234", + "03235", + "03237", + "03238", + "03240", + "03241", + "03242", + "03243", + "03244", + "03245", + "03246", + "03247", + "03249", + "03251", + "03252", + "03253", + "03254", + "03255", + "03256", + "03257", + "03258", + "03259", + "03260", + "03261", + "03262", + "03263", + "03264", + "03266", + "03268", + "03269", + "03272", + "03273", + "03274", + "03275", + "03276", + "03278", + "03279", + "03280", + "03281", + "03282", + "03284", + "03285", + "03287", + "03289", + "03290", + "03291", + "03293", + "03298", + "03299", + "03301", + "03302", + "03303", + "03304", + "03305", + "03307", + "03431", + "03435", + "03440", + "03441", + "03442", + "03443", + "03444", + "03445", + "03446", + "03447", + "03448", + "03449", + "03450", + "03451", + "03452", + "03455", + "03456", + "03457", + "03458", + "03461", + "03462", + "03464", + "03465", + "03466", + "03467", + "03468", + "03469", + "03470", + "03561", + "03570", + "03574", + "03575", + "03576", + "03579", + "03580", + "03581", + "03582", + "03583", + "03584", + "03585", + "03586", + "03588", + "03589", + "03590", + "03592", + "03593", + "03595", + "03597", + "03598", + "03601", + "03602", + "03603", + "03604", + "03605", + "03607", + "03608", + "03609", + "03740", + "03741", + "03743", + "03745", + "03746", + "03748", + "03749", + "03750", + "03751", + "03752", + "03753", + "03754", + "03755", + "03756", + "03765", + "03766", + "03768", + "03769", + "03770", + "03771", + "03773", + "03774", + "03777", + "03779", + "03780", + "03781", + "03782", + "03784", + "03785", + "03801", + "03802", + "03803", + "03804", + "03805", + "03809", + "03810", + "03811", + "03812", + "03813", + "03814", + "03815", + "03816", + "03817", + "03818", + "03819", + "03820", + "03821", + "03822", + "03823", + "03824", + "03825", + "03826", + "03827", + "03830", + "03832", + "03833", + "03835", + "03836", + "03837", + "03838", + "03839", + "03840", + "03841", + "03842", + "03843", + "03844", + "03845", + "03846", + "03847", + "03848", + "03849", + "03850", + "03851", + "03852", + "03853", + "03854", + "03855", + "03856", + "03857", + "03858", + "03859", + "03860", + "03861", + "03862", + "03864", + "03865", + "03866", + "03867", + "03868", + "03869", + "03870", + "03871", + "03872", + "03873", + "03874", + "03875", + "03878", + "03882", + "03883", + "03884", + "03885", + "03886", + "03887", + "03890", + "03894", + "03896", + "03897", + "03901", + "03902", + "03903", + "03904", + "03905", + "03906", + "03907", + "03908", + "03909", + "03910", + "03911", + "04001", + "04002", + "04003", + "04004", + "04005", + "04006", + "04007", + "04008", + "04009", + "04010", + "04011", + "04013", + "04014", + "04015", + "04016", + "04017", + "04019", + "04020", + "04021", + "04022", + "04024", + "04027", + "04028", + "04029", + "04030", + "04032", + "04033", + "04034", + "04037", + "04038", + "04039", + "04040", + "04041", + "04042", + "04043", + "04046", + "04047", + "04048", + "04049", + "04050", + "04051", + "04054", + "04055", + "04056", + "04057", + "04061", + "04062", + "04063", + "04064", + "04066", + "04068", + "04069", + "04070", + "04071", + "04072", + "04073", + "04074", + "04075", + "04076", + "04077", + "04078", + "04079", + "04082", + "04083", + "04084", + "04085", + "04086", + "04087", + "04088", + "04090", + "04091", + "04092", + "04093", + "04094", + "04095", + "04096", + "04097", + "04098", + "04101", + "04102", + "04103", + "04104", + "04105", + "04106", + "04107", + "04108", + "04109", + "04110", + "04112", + "04116", + "04122", + "04123", + "04124", + "04210", + "04211", + "04212", + "04216", + "04217", + "04219", + "04220", + "04221", + "04222", + "04223", + "04224", + "04225", + "04226", + "04227", + "04228", + "04230", + "04231", + "04234", + "04236", + "04237", + "04238", + "04239", + "04240", + "04241", + "04243", + "04250", + "04252", + "04253", + "04254", + "04255", + "04256", + "04257", + "04258", + "04259", + "04260", + "04261", + "04262", + "04263", + "04265", + "04266", + "04267", + "04268", + "04270", + "04271", + "04274", + "04275", + "04276", + "04280", + "04281", + "04282", + "04284", + "04285", + "04286", + "04287", + "04288", + "04289", + "04290", + "04291", + "04292", + "04294", + "04330", + "04332", + "04333", + "04336", + "04338", + "04341", + "04342", + "04343", + "04344", + "04345", + "04346", + "04347", + "04348", + "04349", + "04350", + "04351", + "04352", + "04353", + "04354", + "04355", + "04357", + "04358", + "04359", + "04360", + "04363", + "04364", + "04401", + "04402", + "04406", + "04408", + "04410", + "04411", + "04412", + "04413", + "04414", + "04415", + "04416", + "04417", + "04418", + "04419", + "04420", + "04421", + "04422", + "04424", + "04426", + "04427", + "04428", + "04429", + "04430", + "04431", + "04434", + "04435", + "04438", + "04441", + "04442", + "04443", + "04444", + "04448", + "04449", + "04450", + "04451", + "04453", + "04454", + "04455", + "04456", + "04457", + "04459", + "04460", + "04461", + "04462", + "04463", + "04464", + "04467", + "04468", + "04469", + "04471", + "04472", + "04473", + "04474", + "04475", + "04476", + "04478", + "04479", + "04481", + "04485", + "04487", + "04488", + "04489", + "04490", + "04491", + "04492", + "04493", + "04495", + "04496", + "04497", + "04530", + "04535", + "04537", + "04538", + "04539", + "04541", + "04543", + "04544", + "04547", + "04548", + "04549", + "04551", + "04553", + "04554", + "04555", + "04556", + "04558", + "04562", + "04563", + "04564", + "04565", + "04568", + "04570", + "04571", + "04572", + "04573", + "04574", + "04575", + "04576", + "04578", + "04579", + "04605", + "04606", + "04607", + "04609", + "04611", + "04612", + "04613", + "04614", + "04616", + "04617", + "04619", + "04622", + "04623", + "04624", + "04625", + "04626", + "04627", + "04628", + "04629", + "04630", + "04631", + "04634", + "04635", + "04637", + "04640", + "04642", + "04643", + "04644", + "04645", + "04646", + "04648", + "04649", + "04650", + "04652", + "04653", + "04654", + "04655", + "04657", + "04658", + "04660", + "04662", + "04664", + "04666", + "04667", + "04668", + "04669", + "04671", + "04672", + "04673", + "04674", + "04675", + "04676", + "04677", + "04679", + "04680", + "04681", + "04683", + "04684", + "04685", + "04686", + "04691", + "04693", + "04694", + "04730", + "04732", + "04733", + "04734", + "04735", + "04736", + "04737", + "04738", + "04739", + "04740", + "04741", + "04742", + "04743", + "04744", + "04745", + "04746", + "04747", + "04750", + "04751", + "04756", + "04757", + "04758", + "04760", + "04761", + "04762", + "04763", + "04764", + "04765", + "04766", + "04768", + "04769", + "04772", + "04773", + "04774", + "04775", + "04776", + "04777", + "04779", + "04780", + "04781", + "04783", + "04785", + "04786", + "04787", + "04841", + "04843", + "04846", + "04847", + "04848", + "04849", + "04850", + "04851", + "04852", + "04853", + "04854", + "04855", + "04856", + "04858", + "04859", + "04860", + "04861", + "04862", + "04863", + "04864", + "04865", + "04901", + "04903", + "04910", + "04911", + "04912", + "04915", + "04917", + "04918", + "04920", + "04921", + "04922", + "04923", + "04924", + "04925", + "04926", + "04927", + "04928", + "04929", + "04930", + "04932", + "04933", + "04935", + "04936", + "04937", + "04938", + "04939", + "04940", + "04941", + "04942", + "04943", + "04944", + "04945", + "04947", + "04949", + "04950", + "04951", + "04952", + "04953", + "04954", + "04955", + "04956", + "04957", + "04958", + "04961", + "04962", + "04963", + "04964", + "04965", + "04966", + "04967", + "04969", + "04970", + "04971", + "04972", + "04973", + "04974", + "04975", + "04976", + "04978", + "04979", + "04981", + "04982", + "04983", + "04984", + "04985", + "04986", + "04987", + "04988", + "04989", + "04992", + "05001", + "05009", + "05030", + "05031", + "05032", + "05033", + "05034", + "05035", + "05036", + "05037", + "05038", + "05039", + "05040", + "05041", + "05042", + "05043", + "05045", + "05046", + "05047", + "05048", + "05049", + "05050", + "05051", + "05052", + "05053", + "05054", + "05055", + "05056", + "05058", + "05059", + "05060", + "05061", + "05062", + "05065", + "05067", + "05068", + "05069", + "05070", + "05071", + "05072", + "05073", + "05074", + "05075", + "05076", + "05077", + "05079", + "05081", + "05083", + "05084", + "05085", + "05086", + "05088", + "05089", + "05091", + "05101", + "05141", + "05142", + "05143", + "05144", + "05146", + "05148", + "05149", + "05150", + "05151", + "05152", + "05153", + "05154", + "05155", + "05156", + "05158", + "05159", + "05161", + "05201", + "05250", + "05251", + "05252", + "05253", + "05254", + "05255", + "05257", + "05260", + "05261", + "05262", + "05301", + "05302", + "05303", + "05304", + "05340", + "05341", + "05342", + "05343", + "05344", + "05345", + "05346", + "05350", + "05351", + "05352", + "05353", + "05354", + "05355", + "05356", + "05357", + "05358", + "05359", + "05360", + "05361", + "05362", + "05363", + "05401", + "05402", + "05403", + "05404", + "05405", + "05406", + "05407", + "05408", + "05439", + "05440", + "05441", + "05442", + "05443", + "05444", + "05445", + "05446", + "05447", + "05448", + "05449", + "05450", + "05451", + "05452", + "05453", + "05454", + "05455", + "05456", + "05457", + "05458", + "05459", + "05460", + "05461", + "05462", + "05463", + "05464", + "05465", + "05466", + "05468", + "05469", + "05470", + "05471", + "05472", + "05473", + "05474", + "05476", + "05477", + "05478", + "05479", + "05481", + "05482", + "05483", + "05485", + "05486", + "05487", + "05488", + "05489", + "05490", + "05491", + "05492", + "05494", + "05495", + "05501", + "05544", + "05601", + "05602", + "05603", + "05604", + "05609", + "05620", + "05633", + "05640", + "05641", + "05647", + "05648", + "05649", + "05650", + "05651", + "05652", + "05653", + "05654", + "05655", + "05656", + "05657", + "05658", + "05660", + "05661", + "05662", + "05663", + "05664", + "05665", + "05666", + "05667", + "05669", + "05670", + "05671", + "05672", + "05673", + "05674", + "05675", + "05676", + "05677", + "05678", + "05679", + "05680", + "05681", + "05682", + "05701", + "05702", + "05730", + "05731", + "05732", + "05733", + "05734", + "05735", + "05736", + "05737", + "05738", + "05739", + "05740", + "05741", + "05742", + "05743", + "05744", + "05745", + "05746", + "05747", + "05748", + "05750", + "05751", + "05753", + "05757", + "05758", + "05759", + "05760", + "05761", + "05762", + "05763", + "05764", + "05765", + "05766", + "05767", + "05768", + "05769", + "05770", + "05772", + "05773", + "05774", + "05775", + "05776", + "05777", + "05778", + "05819", + "05820", + "05821", + "05822", + "05823", + "05824", + "05825", + "05826", + "05827", + "05828", + "05829", + "05830", + "05832", + "05833", + "05836", + "05837", + "05838", + "05839", + "05840", + "05841", + "05842", + "05843", + "05845", + "05846", + "05847", + "05848", + "05849", + "05850", + "05851", + "05853", + "05855", + "05857", + "05858", + "05859", + "05860", + "05861", + "05862", + "05863", + "05866", + "05867", + "05868", + "05871", + "05872", + "05873", + "05874", + "05875", + "05901", + "05902", + "05903", + "05904", + "05905", + "05906", + "05907", + "06001", + "06002", + "06006", + "06010", + "06011", + "06013", + "06016", + "06018", + "06019", + "06020", + "06021", + "06022", + "06023", + "06024", + "06025", + "06026", + "06027", + "06028", + "06029", + "06030", + "06031", + "06032", + "06033", + "06034", + "06035", + "06037", + "06039", + "06040", + "06041", + "06042", + "06043", + "06045", + "06050", + "06051", + "06052", + "06053", + "06057", + "06058", + "06059", + "06060", + "06061", + "06062", + "06063", + "06064", + "06065", + "06066", + "06067", + "06068", + "06069", + "06070", + "06071", + "06072", + "06073", + "06074", + "06075", + "06076", + "06077", + "06078", + "06079", + "06080", + "06081", + "06082", + "06083", + "06084", + "06085", + "06087", + "06088", + "06089", + "06090", + "06091", + "06092", + "06093", + "06094", + "06095", + "06096", + "06098", + "06101", + "06102", + "06103", + "06104", + "06105", + "06106", + "06107", + "06108", + "06109", + "06110", + "06111", + "06112", + "06114", + "06115", + "06117", + "06118", + "06119", + "06120", + "06123", + "06126", + "06127", + "06128", + "06129", + "06131", + "06132", + "06133", + "06134", + "06137", + "06138", + "06140", + "06141", + "06142", + "06143", + "06144", + "06145", + "06146", + "06147", + "06150", + "06151", + "06152", + "06153", + "06154", + "06155", + "06156", + "06160", + "06161", + "06167", + "06176", + "06180", + "06183", + "06199", + "06226", + "06230", + "06231", + "06232", + "06233", + "06234", + "06235", + "06237", + "06238", + "06239", + "06241", + "06242", + "06243", + "06244", + "06245", + "06246", + "06247", + "06248", + "06249", + "06250", + "06251", + "06254", + "06255", + "06256", + "06258", + "06259", + "06260", + "06262", + "06263", + "06264", + "06265", + "06266", + "06267", + "06268", + "06269", + "06277", + "06278", + "06279", + "06280", + "06281", + "06282", + "06320", + "06330", + "06331", + "06332", + "06333", + "06334", + "06335", + "06336", + "06338", + "06339", + "06340", + "06349", + "06350", + "06351", + "06353", + "06354", + "06355", + "06357", + "06359", + "06360", + "06365", + "06370", + "06371", + "06372", + "06373", + "06374", + "06375", + "06376", + "06377", + "06378", + "06379", + "06380", + "06382", + "06383", + "06384", + "06385", + "06386", + "06387", + "06388", + "06389", + "06390", + "06401", + "06403", + "06404", + "06405", + "06408", + "06409", + "06410", + "06411", + "06412", + "06413", + "06414", + "06415", + "06416", + "06417", + "06418", + "06419", + "06420", + "06422", + "06423", + "06424", + "06426", + "06437", + "06438", + "06439", + "06440", + "06441", + "06442", + "06443", + "06444", + "06447", + "06450", + "06451", + "06454", + "06455", + "06456", + "06457", + "06459", + "06460", + "06461", + "06467", + "06468", + "06469", + "06470", + "06471", + "06472", + "06473", + "06474", + "06475", + "06477", + "06478", + "06479", + "06480", + "06481", + "06482", + "06483", + "06484", + "06487", + "06488", + "06489", + "06491", + "06492", + "06493", + "06494", + "06495", + "06497", + "06498", + "06501", + "06502", + "06503", + "06504", + "06505", + "06506", + "06507", + "06508", + "06509", + "06510", + "06511", + "06512", + "06513", + "06514", + "06515", + "06516", + "06517", + "06518", + "06519", + "06520", + "06521", + "06524", + "06525", + "06530", + "06531", + "06532", + "06533", + "06534", + "06535", + "06536", + "06537", + "06538", + "06540", + "06601", + "06602", + "06604", + "06605", + "06606", + "06607", + "06608", + "06610", + "06611", + "06612", + "06614", + "06615", + "06650", + "06673", + "06699", + "06701", + "06702", + "06703", + "06704", + "06705", + "06706", + "06708", + "06710", + "06712", + "06716", + "06720", + "06721", + "06722", + "06723", + "06724", + "06725", + "06726", + "06749", + "06750", + "06751", + "06752", + "06753", + "06754", + "06755", + "06756", + "06757", + "06758", + "06759", + "06762", + "06763", + "06770", + "06776", + "06777", + "06778", + "06779", + "06781", + "06782", + "06783", + "06784", + "06785", + "06786", + "06787", + "06790", + "06791", + "06792", + "06793", + "06794", + "06795", + "06796", + "06798", + "06801", + "06804", + "06807", + "06810", + "06811", + "06812", + "06813", + "06814", + "06816", + "06817", + "06820", + "06824", + "06825", + "06828", + "06829", + "06830", + "06831", + "06832", + "06836", + "06838", + "06840", + "06842", + "06850", + "06851", + "06852", + "06853", + "06854", + "06855", + "06856", + "06857", + "06858", + "06859", + "06860", + "06870", + "06875", + "06876", + "06877", + "06878", + "06879", + "06880", + "06881", + "06883", + "06888", + "06889", + "06890", + "06896", + "06897", + "06901", + "06902", + "06903", + "06904", + "06905", + "06906", + "06907", + "06910", + "06911", + "06912", + "06913", + "06914", + "06920", + "06921", + "06922", + "06925", + "06926", + "06927", + "06928", + "07001", + "07002", + "07003", + "07004", + "07005", + "07006", + "07007", + "07008", + "07009", + "07010", + "07011", + "07012", + "07013", + "07014", + "07015", + "07016", + "07017", + "07018", + "07019", + "07020", + "07021", + "07022", + "07023", + "07024", + "07026", + "07027", + "07028", + "07029", + "07030", + "07031", + "07032", + "07033", + "07034", + "07035", + "07036", + "07039", + "07040", + "07041", + "07042", + "07043", + "07044", + "07045", + "07046", + "07047", + "07050", + "07051", + "07052", + "07054", + "07055", + "07057", + "07058", + "07059", + "07060", + "07061", + "07062", + "07063", + "07064", + "07065", + "07066", + "07067", + "07068", + "07069", + "07070", + "07071", + "07072", + "07073", + "07074", + "07075", + "07076", + "07077", + "07078", + "07079", + "07080", + "07081", + "07082", + "07083", + "07086", + "07087", + "07088", + "07090", + "07091", + "07092", + "07093", + "07094", + "07095", + "07096", + "07097", + "07099", + "07101", + "07102", + "07103", + "07104", + "07105", + "07106", + "07107", + "07108", + "07109", + "07110", + "07111", + "07112", + "07114", + "07175", + "07182", + "07184", + "07188", + "07189", + "07191", + "07192", + "07193", + "07194", + "07195", + "07198", + "07199", + "07201", + "07202", + "07203", + "07204", + "07205", + "07206", + "07207", + "07208", + "07302", + "07303", + "07304", + "07305", + "07306", + "07307", + "07308", + "07309", + "07310", + "07311", + "07395", + "07399", + "07401", + "07403", + "07405", + "07407", + "07410", + "07416", + "07417", + "07418", + "07419", + "07420", + "07421", + "07422", + "07423", + "07424", + "07428", + "07430", + "07432", + "07435", + "07436", + "07438", + "07439", + "07440", + "07442", + "07444", + "07446", + "07450", + "07451", + "07452", + "07456", + "07457", + "07458", + "07460", + "07461", + "07462", + "07463", + "07465", + "07470", + "07474", + "07477", + "07480", + "07481", + "07495", + "07501", + "07502", + "07503", + "07504", + "07505", + "07506", + "07507", + "07508", + "07509", + "07510", + "07511", + "07512", + "07513", + "07514", + "07522", + "07524", + "07533", + "07538", + "07543", + "07544", + "07601", + "07602", + "07603", + "07604", + "07605", + "07606", + "07607", + "07608", + "07620", + "07621", + "07624", + "07626", + "07627", + "07628", + "07630", + "07631", + "07632", + "07640", + "07641", + "07642", + "07643", + "07644", + "07645", + "07646", + "07647", + "07648", + "07649", + "07650", + "07652", + "07653", + "07656", + "07657", + "07660", + "07661", + "07662", + "07663", + "07666", + "07670", + "07675", + "07676", + "07677", + "07699", + "07701", + "07702", + "07703", + "07704", + "07709", + "07710", + "07711", + "07712", + "07715", + "07716", + "07717", + "07718", + "07719", + "07720", + "07721", + "07722", + "07723", + "07724", + "07726", + "07727", + "07728", + "07730", + "07731", + "07732", + "07733", + "07734", + "07735", + "07737", + "07738", + "07739", + "07740", + "07746", + "07747", + "07748", + "07750", + "07751", + "07752", + "07753", + "07754", + "07755", + "07756", + "07757", + "07758", + "07760", + "07762", + "07763", + "07764", + "07765", + "07799", + "07801", + "07802", + "07803", + "07806", + "07820", + "07821", + "07822", + "07823", + "07825", + "07826", + "07827", + "07828", + "07829", + "07830", + "07831", + "07832", + "07833", + "07834", + "07836", + "07837", + "07838", + "07839", + "07840", + "07842", + "07843", + "07844", + "07845", + "07846", + "07847", + "07848", + "07849", + "07850", + "07851", + "07852", + "07853", + "07855", + "07856", + "07857", + "07860", + "07863", + "07865", + "07866", + "07869", + "07870", + "07871", + "07874", + "07875", + "07876", + "07877", + "07878", + "07879", + "07880", + "07881", + "07882", + "07885", + "07890", + "07901", + "07902", + "07920", + "07921", + "07922", + "07924", + "07926", + "07927", + "07928", + "07930", + "07931", + "07932", + "07933", + "07934", + "07935", + "07936", + "07938", + "07939", + "07940", + "07945", + "07946", + "07950", + "07960", + "07961", + "07962", + "07963", + "07970", + "07974", + "07976", + "07977", + "07978", + "07979", + "07980", + "07981", + "07983", + "07999", + "08001", + "08002", + "08003", + "08004", + "08005", + "08006", + "08007", + "08008", + "08009", + "08010", + "08011", + "08012", + "08014", + "08015", + "08016", + "08018", + "08019", + "08020", + "08021", + "08022", + "08023", + "08025", + "08026", + "08027", + "08028", + "08029", + "08030", + "08031", + "08032", + "08033", + "08034", + "08035", + "08036", + "08037", + "08038", + "08039", + "08041", + "08042", + "08043", + "08045", + "08046", + "08048", + "08049", + "08050", + "08051", + "08052", + "08053", + "08054", + "08055", + "08056", + "08057", + "08059", + "08060", + "08061", + "08062", + "08063", + "08064", + "08065", + "08066", + "08067", + "08068", + "08069", + "08070", + "08071", + "08072", + "08073", + "08074", + "08075", + "08076", + "08077", + "08078", + "08079", + "08080", + "08081", + "08083", + "08084", + "08085", + "08086", + "08087", + "08088", + "08089", + "08090", + "08091", + "08092", + "08093", + "08094", + "08095", + "08096", + "08097", + "08098", + "08099", + "08101", + "08102", + "08103", + "08104", + "08105", + "08106", + "08107", + "08108", + "08109", + "08110", + "08201", + "08202", + "08203", + "08204", + "08205", + "08210", + "08212", + "08213", + "08214", + "08215", + "08217", + "08218", + "08219", + "08220", + "08221", + "08223", + "08224", + "08225", + "08226", + "08230", + "08231", + "08232", + "08234", + "08240", + "08241", + "08242", + "08243", + "08244", + "08245", + "08246", + "08247", + "08248", + "08250", + "08251", + "08252", + "08260", + "08270", + "08302", + "08310", + "08311", + "08312", + "08313", + "08314", + "08315", + "08316", + "08317", + "08318", + "08319", + "08320", + "08321", + "08322", + "08323", + "08324", + "08326", + "08327", + "08328", + "08329", + "08330", + "08332", + "08340", + "08341", + "08342", + "08343", + "08344", + "08345", + "08346", + "08347", + "08348", + "08349", + "08350", + "08352", + "08353", + "08360", + "08361", + "08362", + "08401", + "08402", + "08403", + "08404", + "08405", + "08406", + "08501", + "08502", + "08504", + "08505", + "08510", + "08511", + "08512", + "08514", + "08515", + "08518", + "08520", + "08525", + "08526", + "08527", + "08528", + "08530", + "08533", + "08534", + "08535", + "08536", + "08540", + "08541", + "08542", + "08543", + "08544", + "08550", + "08551", + "08553", + "08554", + "08555", + "08556", + "08557", + "08558", + "08559", + "08560", + "08561", + "08562", + "08601", + "08602", + "08603", + "08604", + "08605", + "08606", + "08607", + "08608", + "08609", + "08610", + "08611", + "08618", + "08619", + "08620", + "08625", + "08628", + "08629", + "08638", + "08640", + "08641", + "08644", + "08645", + "08646", + "08647", + "08648", + "08650", + "08666", + "08690", + "08691", + "08695", + "08701", + "08720", + "08721", + "08722", + "08723", + "08724", + "08730", + "08731", + "08732", + "08733", + "08734", + "08735", + "08736", + "08738", + "08739", + "08740", + "08741", + "08742", + "08750", + "08751", + "08752", + "08753", + "08754", + "08755", + "08756", + "08757", + "08758", + "08759", + "08801", + "08802", + "08803", + "08804", + "08805", + "08807", + "08808", + "08809", + "08810", + "08812", + "08816", + "08817", + "08818", + "08820", + "08821", + "08822", + "08823", + "08824", + "08825", + "08826", + "08827", + "08828", + "08829", + "08830", + "08831", + "08832", + "08833", + "08834", + "08835", + "08836", + "08837", + "08840", + "08844", + "08846", + "08848", + "08850", + "08852", + "08853", + "08854", + "08855", + "08857", + "08858", + "08859", + "08861", + "08862", + "08863", + "08865", + "08867", + "08868", + "08869", + "08870", + "08871", + "08872", + "08873", + "08875", + "08876", + "08879", + "08880", + "08882", + "08884", + "08885", + "08886", + "08887", + "08888", + "08889", + "08890", + "08899", + "08901", + "08902", + "08903", + "08904", + "08905", + "08906", + "08922", + "08933", + "08988", + "08989", + "09001", + "09002", + "09003", + "09004", + "09005", + "09006", + "09007", + "09008", + "09009", + "09010", + "09011", + "09012", + "09013", + "09014", + "09015", + "09016", + "09017", + "09018", + "09020", + "09021", + "09028", + "09031", + "09033", + "09034", + "09036", + "09038", + "09042", + "09044", + "09045", + "09046", + "09049", + "09051", + "09053", + "09054", + "09055", + "09056", + "09058", + "09059", + "09060", + "09063", + "09067", + "09068", + "09069", + "09074", + "09075", + "09076", + "09079", + "09080", + "09081", + "09086", + "09088", + "09089", + "09090", + "09092", + "09094", + "09095", + "09096", + "09099", + "09100", + "09102", + "09103", + "09104", + "09107", + "09110", + "09112", + "09113", + "09114", + "09115", + "09116", + "09123", + "09125", + "09126", + "09128", + "09131", + "09135", + "09136", + "09137", + "09138", + "09139", + "09140", + "09142", + "09143", + "09154", + "09160", + "09161", + "09165", + "09166", + "09169", + "09170", + "09171", + "09172", + "09173", + "09174", + "09175", + "09176", + "09177", + "09178", + "09180", + "09182", + "09183", + "09185", + "09186", + "09201", + "09203", + "09204", + "09211", + "09212", + "09213", + "09214", + "09216", + "09225", + "09226", + "09227", + "09229", + "09237", + "09240", + "09241", + "09242", + "09244", + "09245", + "09250", + "09252", + "09261", + "09262", + "09263", + "09264", + "09265", + "09266", + "09267", + "09276", + "09277", + "09278", + "09279", + "09283", + "09285", + "09287", + "09289", + "09290", + "09291", + "09292", + "09300", + "09301", + "09302", + "09303", + "09304", + "09305", + "09306", + "09307", + "09308", + "09309", + "09310", + "09311", + "09312", + "09313", + "09314", + "09315", + "09316", + "09317", + "09318", + "09319", + "09320", + "09321", + "09322", + "09323", + "09324", + "09327", + "09328", + "09330", + "09331", + "09332", + "09333", + "09334", + "09336", + "09337", + "09338", + "09339", + "09340", + "09342", + "09343", + "09344", + "09346", + "09347", + "09348", + "09350", + "09351", + "09352", + "09353", + "09354", + "09355", + "09356", + "09357", + "09358", + "09359", + "09360", + "09361", + "09362", + "09363", + "09364", + "09365", + "09366", + "09367", + "09368", + "09369", + "09370", + "09371", + "09372", + "09373", + "09374", + "09375", + "09376", + "09377", + "09378", + "09379", + "09380", + "09381", + "09382", + "09383", + "09384", + "09386", + "09387", + "09388", + "09389", + "09390", + "09391", + "09393", + "09394", + "09396", + "09397", + "09399", + "09401", + "09402", + "09403", + "09409", + "09410", + "09420", + "09421", + "09447", + "09454", + "09456", + "09459", + "09461", + "09463", + "09464", + "09467", + "09468", + "09469", + "09470", + "09487", + "09488", + "09489", + "09490", + "09491", + "09494", + "09496", + "09497", + "09498", + "09499", + "09501", + "09502", + "09503", + "09504", + "09505", + "09506", + "09507", + "09508", + "09509", + "09510", + "09511", + "09512", + "09513", + "09514", + "09517", + "09520", + "09522", + "09523", + "09524", + "09532", + "09533", + "09534", + "09541", + "09542", + "09543", + "09544", + "09545", + "09549", + "09550", + "09554", + "09556", + "09557", + "09564", + "09565", + "09566", + "09567", + "09568", + "09569", + "09570", + "09573", + "09574", + "09575", + "09576", + "09577", + "09578", + "09579", + "09581", + "09582", + "09583", + "09586", + "09587", + "09588", + "09589", + "09590", + "09591", + "09592", + "09593", + "09594", + "09595", + "09596", + "09599", + "09600", + "09601", + "09602", + "09603", + "09604", + "09605", + "09606", + "09607", + "09608", + "09609", + "09610", + "09611", + "09612", + "09613", + "09614", + "09617", + "09618", + "09619", + "09620", + "09621", + "09622", + "09623", + "09624", + "09625", + "09626", + "09627", + "09630", + "09631", + "09633", + "09634", + "09636", + "09642", + "09643", + "09644", + "09645", + "09647", + "09648", + "09649", + "09701", + "09702", + "09703", + "09704", + "09705", + "09706", + "09707", + "09708", + "09709", + "09710", + "09711", + "09712", + "09713", + "09714", + "09715", + "09716", + "09717", + "09718", + "09719", + "09720", + "09721", + "09722", + "09723", + "09724", + "09725", + "09726", + "09727", + "09728", + "09729", + "09730", + "09731", + "09732", + "09733", + "09734", + "09735", + "09736", + "09737", + "09738", + "09739", + "09740", + "09741", + "09742", + "09743", + "09744", + "09745", + "09746", + "09747", + "09748", + "09749", + "09750", + "09751", + "09752", + "09753", + "09754", + "09755", + "09756", + "09757", + "09758", + "09759", + "09760", + "09761", + "09762", + "09769", + "09771", + "09777", + "09780", + "09789", + "09790", + "09798", + "09800", + "09801", + "09802", + "09803", + "09804", + "09805", + "09806", + "09807", + "09808", + "09809", + "09810", + "09811", + "09812", + "09813", + "09814", + "09815", + "09816", + "09817", + "09818", + "09819", + "09820", + "09821", + "09822", + "09823", + "09824", + "09825", + "09826", + "09827", + "09828", + "09829", + "09830", + "09831", + "09832", + "09833", + "09834", + "09835", + "09836", + "09837", + "09838", + "09839", + "09840", + "09841", + "09842", + "09843", + "09844", + "09845", + "09846", + "09847", + "09848", + "09851", + "09852", + "09853", + "09854", + "09855", + "09856", + "09857", + "09858", + "09859", + "09860", + "09861", + "09862", + "09863", + "09864", + "09865", + "09867", + "09868", + "09869", + "09870", + "09871", + "09872", + "09873", + "09874", + "09875", + "09876", + "09877", + "09880", + "09888", + "09890", + "09892", + "09895", + "09898", + "09901", + "09902", + "09903", + "09904", + "09908", + "09909", + "09910", + "09974", + "09975", + "09976", + "09977", + "10001", + "10002", + "10003", + "10004", + "10005", + "10006", + "10007", + "10008", + "10009", + "10010", + "10011", + "10012", + "10013", + "10014", + "10015", + "10016", + "10017", + "10018", + "10019", + "10020", + "10021", + "10022", + "10023", + "10024", + "10025", + "10026", + "10027", + "10028", + "10029", + "10030", + "10031", + "10032", + "10033", + "10034", + "10035", + "10036", + "10037", + "10038", + "10039", + "10040", + "10041", + "10043", + "10044", + "10045", + "10046", + "10047", + "10048", + "10055", + "10060", + "10065", + "10069", + "10072", + "10075", + "10079", + "10080", + "10081", + "10082", + "10087", + "10090", + "10094", + "10095", + "10096", + "10098", + "10099", + "10101", + "10102", + "10103", + "10104", + "10105", + "10106", + "10107", + "10108", + "10109", + "10110", + "10111", + "10112", + "10113", + "10114", + "10115", + "10116", + "10117", + "10118", + "10119", + "10120", + "10121", + "10122", + "10123", + "10124", + "10125", + "10126", + "10128", + "10129", + "10130", + "10131", + "10132", + "10133", + "10138", + "10149", + "10150", + "10151", + "10152", + "10153", + "10154", + "10155", + "10156", + "10157", + "10158", + "10159", + "10160", + "10161", + "10162", + "10163", + "10164", + "10165", + "10166", + "10167", + "10168", + "10169", + "10170", + "10171", + "10172", + "10173", + "10174", + "10175", + "10176", + "10177", + "10178", + "10179", + "10184", + "10185", + "10196", + "10197", + "10199", + "10200", + "10203", + "10211", + "10212", + "10213", + "10242", + "10249", + "10256", + "10257", + "10258", + "10259", + "10260", + "10261", + "10265", + "10268", + "10269", + "10270", + "10271", + "10272", + "10273", + "10274", + "10275", + "10276", + "10277", + "10278", + "10279", + "10280", + "10281", + "10282", + "10285", + "10286", + "10292", + "10301", + "10302", + "10303", + "10304", + "10305", + "10306", + "10307", + "10308", + "10309", + "10310", + "10311", + "10312", + "10313", + "10314", + "10451", + "10452", + "10453", + "10454", + "10455", + "10456", + "10457", + "10458", + "10459", + "10460", + "10461", + "10462", + "10463", + "10464", + "10465", + "10466", + "10467", + "10468", + "10469", + "10470", + "10471", + "10472", + "10473", + "10474", + "10475", + "10499", + "10501", + "10502", + "10503", + "10504", + "10505", + "10506", + "10507", + "10509", + "10510", + "10511", + "10512", + "10514", + "10516", + "10517", + "10518", + "10519", + "10520", + "10521", + "10522", + "10523", + "10524", + "10526", + "10527", + "10528", + "10530", + "10532", + "10533", + "10535", + "10536", + "10537", + "10538", + "10540", + "10541", + "10542", + "10543", + "10545", + "10546", + "10547", + "10548", + "10549", + "10550", + "10551", + "10552", + "10553", + "10557", + "10558", + "10560", + "10562", + "10566", + "10567", + "10570", + "10571", + "10572", + "10573", + "10576", + "10577", + "10578", + "10579", + "10580", + "10583", + "10587", + "10588", + "10589", + "10590", + "10591", + "10594", + "10595", + "10596", + "10597", + "10598", + "10601", + "10602", + "10603", + "10604", + "10605", + "10606", + "10607", + "10610", + "10701", + "10702", + "10703", + "10704", + "10705", + "10706", + "10707", + "10708", + "10709", + "10710", + "10801", + "10802", + "10803", + "10804", + "10805", + "10901", + "10910", + "10911", + "10912", + "10913", + "10914", + "10915", + "10916", + "10917", + "10918", + "10919", + "10920", + "10921", + "10922", + "10923", + "10924", + "10925", + "10926", + "10927", + "10928", + "10930", + "10931", + "10932", + "10933", + "10940", + "10941", + "10943", + "10949", + "10950", + "10952", + "10953", + "10954", + "10956", + "10958", + "10959", + "10960", + "10962", + "10963", + "10964", + "10965", + "10968", + "10969", + "10970", + "10973", + "10974", + "10975", + "10976", + "10977", + "10979", + "10980", + "10981", + "10982", + "10983", + "10984", + "10985", + "10986", + "10987", + "10988", + "10989", + "10990", + "10992", + "10993", + "10994", + "10996", + "10997", + "10998", + "11001", + "11002", + "11003", + "11004", + "11005", + "11010", + "11020", + "11021", + "11022", + "11023", + "11024", + "11025", + "11026", + "11027", + "11030", + "11040", + "11041", + "11042", + "11043", + "11044", + "11050", + "11051", + "11052", + "11053", + "11054", + "11055", + "11096", + "11099", + "11101", + "11102", + "11103", + "11104", + "11105", + "11106", + "11109", + "11120", + "11201", + "11202", + "11203", + "11204", + "11205", + "11206", + "11207", + "11208", + "11209", + "11210", + "11211", + "11212", + "11213", + "11214", + "11215", + "11216", + "11217", + "11218", + "11219", + "11220", + "11221", + "11222", + "11223", + "11224", + "11225", + "11226", + "11228", + "11229", + "11230", + "11231", + "11232", + "11233", + "11234", + "11235", + "11236", + "11237", + "11238", + "11239", + "11240", + "11241", + "11242", + "11243", + "11244", + "11245", + "11247", + "11248", + "11249", + "11251", + "11252", + "11254", + "11255", + "11256", + "11351", + "11352", + "11354", + "11355", + "11356", + "11357", + "11358", + "11359", + "11360", + "11361", + "11362", + "11363", + "11364", + "11365", + "11366", + "11367", + "11368", + "11369", + "11370", + "11371", + "11372", + "11373", + "11374", + "11375", + "11377", + "11378", + "11379", + "11380", + "11381", + "11385", + "11386", + "11390", + "11405", + "11411", + "11412", + "11413", + "11414", + "11415", + "11416", + "11417", + "11418", + "11419", + "11420", + "11421", + "11422", + "11423", + "11424", + "11425", + "11426", + "11427", + "11428", + "11429", + "11430", + "11431", + "11432", + "11433", + "11434", + "11435", + "11436", + "11437", + "11439", + "11451", + "11499", + "11501", + "11507", + "11509", + "11510", + "11514", + "11516", + "11518", + "11520", + "11530", + "11531", + "11535", + "11536", + "11542", + "11545", + "11547", + "11548", + "11549", + "11550", + "11551", + "11552", + "11553", + "11554", + "11555", + "11556", + "11557", + "11558", + "11559", + "11560", + "11561", + "11563", + "11565", + "11566", + "11568", + "11569", + "11570", + "11571", + "11572", + "11575", + "11576", + "11577", + "11579", + "11580", + "11581", + "11582", + "11590", + "11592", + "11594", + "11595", + "11596", + "11597", + "11598", + "11599", + "11690", + "11691", + "11692", + "11693", + "11694", + "11695", + "11697", + "11701", + "11702", + "11703", + "11704", + "11705", + "11706", + "11707", + "11708", + "11709", + "11710", + "11713", + "11714", + "11715", + "11716", + "11717", + "11718", + "11719", + "11720", + "11721", + "11722", + "11724", + "11725", + "11726", + "11727", + "11729", + "11730", + "11731", + "11732", + "11733", + "11735", + "11736", + "11737", + "11738", + "11739", + "11740", + "11741", + "11742", + "11743", + "11746", + "11747", + "11749", + "11750", + "11751", + "11752", + "11753", + "11754", + "11755", + "11756", + "11757", + "11758", + "11760", + "11762", + "11763", + "11764", + "11765", + "11766", + "11767", + "11768", + "11769", + "11770", + "11771", + "11772", + "11773", + "11774", + "11775", + "11776", + "11777", + "11778", + "11779", + "11780", + "11782", + "11783", + "11784", + "11786", + "11787", + "11788", + "11789", + "11790", + "11791", + "11792", + "11793", + "11794", + "11795", + "11796", + "11797", + "11798", + "11801", + "11802", + "11803", + "11804", + "11815", + "11819", + "11853", + "11854", + "11855", + "11901", + "11930", + "11931", + "11932", + "11933", + "11934", + "11935", + "11937", + "11939", + "11940", + "11941", + "11942", + "11944", + "11946", + "11947", + "11948", + "11949", + "11950", + "11951", + "11952", + "11953", + "11954", + "11955", + "11956", + "11957", + "11958", + "11959", + "11960", + "11961", + "11962", + "11963", + "11964", + "11965", + "11967", + "11968", + "11969", + "11970", + "11971", + "11972", + "11973", + "11975", + "11976", + "11977", + "11978", + "11980", + "12007", + "12008", + "12009", + "12010", + "12015", + "12016", + "12017", + "12018", + "12019", + "12020", + "12022", + "12023", + "12024", + "12025", + "12027", + "12028", + "12029", + "12031", + "12032", + "12033", + "12035", + "12036", + "12037", + "12040", + "12041", + "12042", + "12043", + "12045", + "12046", + "12047", + "12050", + "12051", + "12052", + "12053", + "12054", + "12055", + "12056", + "12057", + "12058", + "12059", + "12060", + "12061", + "12062", + "12063", + "12064", + "12065", + "12066", + "12067", + "12068", + "12069", + "12070", + "12071", + "12072", + "12073", + "12074", + "12075", + "12076", + "12077", + "12078", + "12082", + "12083", + "12084", + "12085", + "12086", + "12087", + "12089", + "12090", + "12092", + "12093", + "12094", + "12095", + "12106", + "12107", + "12108", + "12110", + "12115", + "12116", + "12117", + "12118", + "12120", + "12121", + "12122", + "12123", + "12124", + "12125", + "12128", + "12130", + "12131", + "12132", + "12133", + "12134", + "12136", + "12137", + "12138", + "12139", + "12140", + "12141", + "12143", + "12144", + "12147", + "12148", + "12149", + "12150", + "12151", + "12153", + "12154", + "12155", + "12156", + "12157", + "12158", + "12159", + "12160", + "12161", + "12164", + "12165", + "12166", + "12167", + "12168", + "12169", + "12170", + "12172", + "12173", + "12174", + "12175", + "12176", + "12177", + "12180", + "12181", + "12182", + "12183", + "12184", + "12185", + "12186", + "12187", + "12188", + "12189", + "12190", + "12192", + "12193", + "12194", + "12195", + "12196", + "12197", + "12198", + "12201", + "12202", + "12203", + "12204", + "12205", + "12206", + "12207", + "12208", + "12209", + "12210", + "12211", + "12212", + "12214", + "12220", + "12222", + "12223", + "12224", + "12225", + "12226", + "12227", + "12228", + "12229", + "12230", + "12231", + "12232", + "12233", + "12234", + "12235", + "12236", + "12237", + "12238", + "12239", + "12240", + "12241", + "12242", + "12243", + "12244", + "12245", + "12246", + "12247", + "12248", + "12249", + "12250", + "12252", + "12255", + "12256", + "12257", + "12260", + "12261", + "12288", + "12301", + "12302", + "12303", + "12304", + "12305", + "12306", + "12307", + "12308", + "12309", + "12325", + "12345", + "12401", + "12402", + "12404", + "12405", + "12406", + "12407", + "12409", + "12410", + "12411", + "12412", + "12413", + "12414", + "12416", + "12417", + "12418", + "12419", + "12420", + "12421", + "12422", + "12423", + "12424", + "12427", + "12428", + "12429", + "12430", + "12431", + "12432", + "12433", + "12434", + "12435", + "12436", + "12438", + "12439", + "12440", + "12441", + "12442", + "12443", + "12444", + "12446", + "12448", + "12449", + "12450", + "12451", + "12452", + "12453", + "12454", + "12455", + "12456", + "12457", + "12458", + "12459", + "12460", + "12461", + "12463", + "12464", + "12465", + "12466", + "12468", + "12469", + "12470", + "12471", + "12472", + "12473", + "12474", + "12475", + "12477", + "12480", + "12481", + "12482", + "12483", + "12484", + "12485", + "12486", + "12487", + "12489", + "12490", + "12491", + "12492", + "12493", + "12494", + "12495", + "12496", + "12498", + "12501", + "12502", + "12503", + "12504", + "12506", + "12507", + "12508", + "12510", + "12511", + "12512", + "12513", + "12514", + "12515", + "12516", + "12517", + "12518", + "12520", + "12521", + "12522", + "12523", + "12524", + "12525", + "12526", + "12527", + "12528", + "12529", + "12530", + "12531", + "12533", + "12534", + "12537", + "12538", + "12540", + "12541", + "12542", + "12543", + "12544", + "12545", + "12546", + "12547", + "12548", + "12549", + "12550", + "12551", + "12552", + "12553", + "12555", + "12561", + "12563", + "12564", + "12565", + "12566", + "12567", + "12568", + "12569", + "12570", + "12571", + "12572", + "12574", + "12575", + "12577", + "12578", + "12580", + "12581", + "12582", + "12583", + "12584", + "12585", + "12586", + "12588", + "12589", + "12590", + "12592", + "12593", + "12594", + "12601", + "12602", + "12603", + "12604", + "12701", + "12719", + "12720", + "12721", + "12722", + "12723", + "12724", + "12725", + "12726", + "12727", + "12729", + "12732", + "12733", + "12734", + "12736", + "12737", + "12738", + "12740", + "12741", + "12742", + "12743", + "12745", + "12746", + "12747", + "12748", + "12749", + "12750", + "12751", + "12752", + "12754", + "12758", + "12759", + "12760", + "12762", + "12763", + "12764", + "12765", + "12766", + "12767", + "12768", + "12769", + "12770", + "12771", + "12775", + "12776", + "12777", + "12778", + "12779", + "12780", + "12781", + "12783", + "12784", + "12785", + "12786", + "12787", + "12788", + "12789", + "12790", + "12791", + "12792", + "12801", + "12803", + "12804", + "12808", + "12809", + "12810", + "12811", + "12812", + "12814", + "12815", + "12816", + "12817", + "12819", + "12820", + "12821", + "12822", + "12823", + "12824", + "12827", + "12828", + "12831", + "12832", + "12833", + "12834", + "12835", + "12836", + "12837", + "12838", + "12839", + "12841", + "12842", + "12843", + "12844", + "12845", + "12846", + "12847", + "12848", + "12849", + "12850", + "12851", + "12852", + "12853", + "12854", + "12855", + "12856", + "12857", + "12858", + "12859", + "12860", + "12861", + "12862", + "12863", + "12864", + "12865", + "12866", + "12870", + "12871", + "12872", + "12873", + "12874", + "12878", + "12879", + "12883", + "12884", + "12885", + "12886", + "12887", + "12901", + "12903", + "12910", + "12911", + "12912", + "12913", + "12914", + "12915", + "12916", + "12917", + "12918", + "12919", + "12920", + "12921", + "12922", + "12923", + "12924", + "12926", + "12927", + "12928", + "12929", + "12930", + "12932", + "12933", + "12934", + "12935", + "12936", + "12937", + "12939", + "12941", + "12942", + "12943", + "12944", + "12945", + "12946", + "12949", + "12950", + "12952", + "12953", + "12955", + "12956", + "12957", + "12958", + "12959", + "12960", + "12961", + "12962", + "12964", + "12965", + "12966", + "12967", + "12969", + "12970", + "12972", + "12973", + "12974", + "12975", + "12976", + "12977", + "12978", + "12979", + "12980", + "12981", + "12983", + "12985", + "12986", + "12987", + "12989", + "12992", + "12993", + "12995", + "12996", + "12997", + "12998", + "13020", + "13021", + "13022", + "13024", + "13026", + "13027", + "13028", + "13029", + "13030", + "13031", + "13032", + "13033", + "13034", + "13035", + "13036", + "13037", + "13039", + "13040", + "13041", + "13042", + "13043", + "13044", + "13045", + "13051", + "13052", + "13053", + "13054", + "13056", + "13057", + "13060", + "13061", + "13062", + "13063", + "13064", + "13065", + "13066", + "13068", + "13069", + "13071", + "13072", + "13073", + "13074", + "13076", + "13077", + "13078", + "13080", + "13081", + "13082", + "13083", + "13084", + "13087", + "13088", + "13089", + "13090", + "13092", + "13093", + "13101", + "13102", + "13103", + "13104", + "13107", + "13108", + "13110", + "13111", + "13112", + "13113", + "13114", + "13115", + "13116", + "13117", + "13118", + "13119", + "13120", + "13121", + "13122", + "13123", + "13124", + "13126", + "13131", + "13132", + "13134", + "13135", + "13136", + "13137", + "13138", + "13139", + "13140", + "13141", + "13142", + "13143", + "13144", + "13145", + "13146", + "13147", + "13148", + "13152", + "13153", + "13154", + "13155", + "13156", + "13157", + "13158", + "13159", + "13160", + "13162", + "13163", + "13164", + "13165", + "13166", + "13167", + "13201", + "13202", + "13203", + "13204", + "13205", + "13206", + "13207", + "13208", + "13209", + "13210", + "13211", + "13212", + "13214", + "13215", + "13217", + "13218", + "13219", + "13220", + "13221", + "13224", + "13225", + "13235", + "13244", + "13250", + "13251", + "13252", + "13261", + "13290", + "13301", + "13302", + "13303", + "13304", + "13305", + "13308", + "13309", + "13310", + "13312", + "13313", + "13314", + "13315", + "13316", + "13317", + "13318", + "13319", + "13320", + "13321", + "13322", + "13323", + "13324", + "13325", + "13326", + "13327", + "13328", + "13329", + "13331", + "13332", + "13333", + "13334", + "13335", + "13337", + "13338", + "13339", + "13340", + "13341", + "13342", + "13343", + "13345", + "13346", + "13348", + "13350", + "13352", + "13353", + "13354", + "13355", + "13357", + "13360", + "13361", + "13362", + "13363", + "13364", + "13365", + "13367", + "13368", + "13401", + "13402", + "13403", + "13404", + "13406", + "13407", + "13408", + "13409", + "13410", + "13411", + "13413", + "13415", + "13416", + "13417", + "13418", + "13420", + "13421", + "13424", + "13425", + "13426", + "13428", + "13431", + "13433", + "13435", + "13436", + "13437", + "13438", + "13439", + "13440", + "13441", + "13442", + "13449", + "13450", + "13452", + "13454", + "13455", + "13456", + "13457", + "13459", + "13460", + "13461", + "13464", + "13465", + "13468", + "13469", + "13470", + "13471", + "13472", + "13473", + "13475", + "13476", + "13477", + "13478", + "13479", + "13480", + "13482", + "13483", + "13484", + "13485", + "13486", + "13488", + "13489", + "13490", + "13491", + "13492", + "13493", + "13494", + "13495", + "13501", + "13502", + "13503", + "13504", + "13505", + "13599", + "13601", + "13602", + "13603", + "13605", + "13606", + "13607", + "13608", + "13611", + "13612", + "13613", + "13614", + "13615", + "13616", + "13617", + "13618", + "13619", + "13620", + "13621", + "13622", + "13623", + "13624", + "13625", + "13626", + "13627", + "13628", + "13630", + "13631", + "13632", + "13633", + "13634", + "13635", + "13636", + "13637", + "13638", + "13639", + "13640", + "13641", + "13642", + "13643", + "13645", + "13646", + "13647", + "13648", + "13649", + "13650", + "13651", + "13652", + "13654", + "13655", + "13656", + "13657", + "13658", + "13659", + "13660", + "13661", + "13662", + "13664", + "13665", + "13666", + "13667", + "13668", + "13669", + "13670", + "13671", + "13672", + "13673", + "13674", + "13675", + "13676", + "13677", + "13678", + "13679", + "13680", + "13681", + "13682", + "13683", + "13684", + "13685", + "13687", + "13690", + "13691", + "13692", + "13693", + "13694", + "13695", + "13696", + "13697", + "13699", + "13730", + "13731", + "13732", + "13733", + "13734", + "13736", + "13737", + "13738", + "13739", + "13740", + "13743", + "13744", + "13745", + "13746", + "13747", + "13748", + "13749", + "13750", + "13751", + "13752", + "13753", + "13754", + "13755", + "13756", + "13757", + "13758", + "13760", + "13761", + "13762", + "13763", + "13774", + "13775", + "13776", + "13777", + "13778", + "13780", + "13782", + "13783", + "13784", + "13786", + "13787", + "13788", + "13790", + "13794", + "13795", + "13796", + "13797", + "13801", + "13802", + "13803", + "13804", + "13806", + "13807", + "13808", + "13809", + "13810", + "13811", + "13812", + "13813", + "13814", + "13815", + "13820", + "13825", + "13826", + "13827", + "13830", + "13832", + "13833", + "13834", + "13835", + "13837", + "13838", + "13839", + "13840", + "13841", + "13842", + "13843", + "13844", + "13845", + "13846", + "13847", + "13848", + "13849", + "13850", + "13851", + "13856", + "13859", + "13860", + "13861", + "13862", + "13863", + "13864", + "13865", + "13901", + "13902", + "13903", + "13904", + "13905", + "14001", + "14004", + "14005", + "14006", + "14008", + "14009", + "14010", + "14011", + "14012", + "14013", + "14020", + "14021", + "14024", + "14025", + "14026", + "14027", + "14028", + "14029", + "14030", + "14031", + "14032", + "14033", + "14034", + "14035", + "14036", + "14037", + "14038", + "14039", + "14040", + "14041", + "14042", + "14043", + "14047", + "14048", + "14051", + "14052", + "14054", + "14055", + "14056", + "14057", + "14058", + "14059", + "14060", + "14061", + "14062", + "14063", + "14065", + "14066", + "14067", + "14068", + "14069", + "14070", + "14072", + "14075", + "14080", + "14081", + "14082", + "14083", + "14085", + "14086", + "14091", + "14092", + "14094", + "14095", + "14098", + "14101", + "14102", + "14103", + "14105", + "14107", + "14108", + "14109", + "14110", + "14111", + "14112", + "14113", + "14120", + "14125", + "14126", + "14127", + "14129", + "14130", + "14131", + "14132", + "14133", + "14134", + "14135", + "14136", + "14138", + "14139", + "14140", + "14141", + "14143", + "14144", + "14145", + "14150", + "14151", + "14166", + "14167", + "14168", + "14169", + "14170", + "14171", + "14172", + "14173", + "14174", + "14201", + "14202", + "14203", + "14204", + "14205", + "14206", + "14207", + "14208", + "14209", + "14210", + "14211", + "14212", + "14213", + "14214", + "14215", + "14216", + "14217", + "14218", + "14219", + "14220", + "14221", + "14222", + "14223", + "14224", + "14225", + "14226", + "14227", + "14228", + "14231", + "14233", + "14240", + "14241", + "14260", + "14261", + "14263", + "14264", + "14265", + "14267", + "14269", + "14270", + "14272", + "14273", + "14276", + "14280", + "14301", + "14302", + "14303", + "14304", + "14305", + "14410", + "14411", + "14413", + "14414", + "14415", + "14416", + "14418", + "14420", + "14422", + "14423", + "14424", + "14425", + "14427", + "14428", + "14429", + "14430", + "14432", + "14433", + "14435", + "14437", + "14441", + "14443", + "14445", + "14449", + "14450", + "14452", + "14453", + "14454", + "14456", + "14461", + "14462", + "14463", + "14464", + "14466", + "14467", + "14468", + "14469", + "14470", + "14471", + "14472", + "14475", + "14476", + "14477", + "14478", + "14479", + "14480", + "14481", + "14482", + "14485", + "14486", + "14487", + "14488", + "14489", + "14502", + "14504", + "14505", + "14506", + "14507", + "14508", + "14510", + "14511", + "14512", + "14513", + "14514", + "14515", + "14516", + "14517", + "14518", + "14519", + "14520", + "14521", + "14522", + "14525", + "14526", + "14527", + "14529", + "14530", + "14532", + "14533", + "14534", + "14536", + "14537", + "14538", + "14539", + "14541", + "14542", + "14543", + "14544", + "14545", + "14546", + "14547", + "14548", + "14549", + "14550", + "14551", + "14555", + "14556", + "14557", + "14558", + "14559", + "14560", + "14561", + "14563", + "14564", + "14568", + "14569", + "14571", + "14572", + "14580", + "14585", + "14586", + "14588", + "14589", + "14590", + "14591", + "14592", + "14602", + "14603", + "14604", + "14605", + "14606", + "14607", + "14608", + "14609", + "14610", + "14611", + "14612", + "14613", + "14614", + "14615", + "14616", + "14617", + "14618", + "14619", + "14620", + "14621", + "14622", + "14623", + "14624", + "14625", + "14626", + "14627", + "14638", + "14639", + "14642", + "14643", + "14644", + "14645", + "14646", + "14647", + "14649", + "14650", + "14651", + "14652", + "14653", + "14664", + "14673", + "14683", + "14692", + "14694", + "14701", + "14702", + "14706", + "14707", + "14708", + "14709", + "14710", + "14711", + "14712", + "14714", + "14715", + "14716", + "14717", + "14718", + "14719", + "14720", + "14721", + "14722", + "14723", + "14724", + "14726", + "14727", + "14728", + "14729", + "14730", + "14731", + "14732", + "14733", + "14735", + "14736", + "14737", + "14738", + "14739", + "14740", + "14741", + "14742", + "14743", + "14744", + "14745", + "14747", + "14748", + "14750", + "14751", + "14752", + "14753", + "14754", + "14755", + "14756", + "14757", + "14758", + "14760", + "14766", + "14767", + "14769", + "14770", + "14772", + "14774", + "14775", + "14777", + "14778", + "14779", + "14781", + "14782", + "14783", + "14784", + "14785", + "14786", + "14787", + "14788", + "14801", + "14802", + "14803", + "14804", + "14805", + "14806", + "14807", + "14808", + "14809", + "14810", + "14812", + "14813", + "14814", + "14815", + "14816", + "14817", + "14818", + "14819", + "14820", + "14821", + "14822", + "14823", + "14824", + "14825", + "14826", + "14827", + "14830", + "14831", + "14836", + "14837", + "14838", + "14839", + "14840", + "14841", + "14842", + "14843", + "14845", + "14846", + "14847", + "14850", + "14851", + "14852", + "14853", + "14854", + "14855", + "14856", + "14857", + "14858", + "14859", + "14860", + "14861", + "14863", + "14864", + "14865", + "14867", + "14869", + "14870", + "14871", + "14872", + "14873", + "14874", + "14876", + "14877", + "14878", + "14879", + "14880", + "14881", + "14882", + "14883", + "14884", + "14885", + "14886", + "14887", + "14889", + "14891", + "14892", + "14893", + "14894", + "14895", + "14897", + "14898", + "14901", + "14902", + "14903", + "14904", + "14905", + "14925", + "15001", + "15003", + "15004", + "15005", + "15006", + "15007", + "15009", + "15010", + "15012", + "15014", + "15015", + "15017", + "15018", + "15019", + "15020", + "15021", + "15022", + "15024", + "15025", + "15026", + "15027", + "15028", + "15030", + "15031", + "15032", + "15033", + "15034", + "15035", + "15037", + "15038", + "15042", + "15043", + "15044", + "15045", + "15046", + "15047", + "15049", + "15050", + "15051", + "15052", + "15053", + "15054", + "15055", + "15056", + "15057", + "15059", + "15060", + "15061", + "15062", + "15063", + "15064", + "15065", + "15066", + "15067", + "15068", + "15069", + "15071", + "15072", + "15074", + "15075", + "15076", + "15077", + "15078", + "15081", + "15082", + "15083", + "15084", + "15085", + "15086", + "15087", + "15088", + "15089", + "15090", + "15091", + "15095", + "15096", + "15101", + "15102", + "15104", + "15106", + "15108", + "15110", + "15112", + "15116", + "15120", + "15122", + "15123", + "15126", + "15127", + "15129", + "15131", + "15132", + "15133", + "15134", + "15135", + "15136", + "15137", + "15139", + "15140", + "15142", + "15143", + "15144", + "15145", + "15146", + "15147", + "15148", + "15201", + "15202", + "15203", + "15204", + "15205", + "15206", + "15207", + "15208", + "15209", + "15210", + "15211", + "15212", + "15213", + "15214", + "15215", + "15216", + "15217", + "15218", + "15219", + "15220", + "15221", + "15222", + "15223", + "15224", + "15225", + "15226", + "15227", + "15228", + "15229", + "15230", + "15231", + "15232", + "15233", + "15234", + "15235", + "15236", + "15237", + "15238", + "15239", + "15240", + "15241", + "15242", + "15243", + "15244", + "15250", + "15251", + "15252", + "15253", + "15254", + "15255", + "15257", + "15258", + "15259", + "15260", + "15261", + "15262", + "15263", + "15264", + "15265", + "15266", + "15267", + "15268", + "15270", + "15272", + "15273", + "15274", + "15275", + "15276", + "15277", + "15278", + "15279", + "15281", + "15282", + "15283", + "15285", + "15286", + "15288", + "15289", + "15290", + "15295", + "15301", + "15310", + "15311", + "15312", + "15313", + "15314", + "15315", + "15316", + "15317", + "15320", + "15321", + "15322", + "15323", + "15324", + "15325", + "15327", + "15329", + "15330", + "15331", + "15332", + "15333", + "15334", + "15336", + "15337", + "15338", + "15339", + "15340", + "15341", + "15342", + "15344", + "15345", + "15346", + "15347", + "15348", + "15349", + "15350", + "15351", + "15352", + "15353", + "15357", + "15358", + "15359", + "15360", + "15361", + "15362", + "15363", + "15364", + "15365", + "15366", + "15367", + "15368", + "15370", + "15376", + "15377", + "15378", + "15379", + "15380", + "15401", + "15410", + "15411", + "15412", + "15413", + "15415", + "15416", + "15417", + "15419", + "15420", + "15421", + "15422", + "15423", + "15424", + "15425", + "15427", + "15428", + "15429", + "15430", + "15431", + "15432", + "15433", + "15434", + "15435", + "15436", + "15437", + "15438", + "15439", + "15440", + "15442", + "15443", + "15444", + "15445", + "15446", + "15447", + "15448", + "15449", + "15450", + "15451", + "15454", + "15455", + "15456", + "15458", + "15459", + "15460", + "15461", + "15462", + "15463", + "15464", + "15465", + "15466", + "15467", + "15468", + "15469", + "15470", + "15472", + "15473", + "15474", + "15475", + "15476", + "15477", + "15478", + "15479", + "15480", + "15482", + "15483", + "15484", + "15485", + "15486", + "15488", + "15489", + "15490", + "15492", + "15501", + "15502", + "15510", + "15520", + "15521", + "15522", + "15530", + "15531", + "15532", + "15533", + "15534", + "15535", + "15536", + "15537", + "15538", + "15539", + "15540", + "15541", + "15542", + "15544", + "15545", + "15546", + "15547", + "15548", + "15549", + "15550", + "15551", + "15552", + "15553", + "15554", + "15555", + "15557", + "15558", + "15559", + "15560", + "15561", + "15562", + "15563", + "15564", + "15565", + "15601", + "15605", + "15606", + "15610", + "15611", + "15612", + "15613", + "15615", + "15616", + "15617", + "15618", + "15619", + "15620", + "15621", + "15622", + "15623", + "15624", + "15625", + "15626", + "15627", + "15628", + "15629", + "15631", + "15632", + "15633", + "15634", + "15635", + "15636", + "15637", + "15638", + "15639", + "15640", + "15641", + "15642", + "15644", + "15646", + "15647", + "15650", + "15655", + "15656", + "15658", + "15660", + "15661", + "15662", + "15663", + "15664", + "15665", + "15666", + "15668", + "15670", + "15671", + "15672", + "15673", + "15674", + "15675", + "15676", + "15677", + "15678", + "15679", + "15680", + "15681", + "15682", + "15683", + "15684", + "15685", + "15686", + "15687", + "15688", + "15689", + "15690", + "15691", + "15692", + "15693", + "15695", + "15696", + "15697", + "15698", + "15701", + "15705", + "15710", + "15711", + "15712", + "15713", + "15714", + "15715", + "15716", + "15717", + "15720", + "15721", + "15722", + "15723", + "15724", + "15725", + "15727", + "15728", + "15729", + "15730", + "15731", + "15732", + "15733", + "15734", + "15736", + "15737", + "15738", + "15739", + "15740", + "15741", + "15742", + "15744", + "15745", + "15746", + "15747", + "15748", + "15750", + "15752", + "15753", + "15754", + "15756", + "15757", + "15758", + "15759", + "15760", + "15761", + "15762", + "15763", + "15764", + "15765", + "15767", + "15770", + "15771", + "15772", + "15773", + "15774", + "15775", + "15776", + "15777", + "15778", + "15779", + "15780", + "15781", + "15783", + "15784", + "15801", + "15821", + "15822", + "15823", + "15824", + "15825", + "15827", + "15828", + "15829", + "15831", + "15832", + "15834", + "15840", + "15841", + "15845", + "15846", + "15847", + "15848", + "15849", + "15851", + "15853", + "15856", + "15857", + "15860", + "15861", + "15863", + "15864", + "15865", + "15866", + "15868", + "15870", + "15901", + "15902", + "15904", + "15905", + "15906", + "15907", + "15909", + "15915", + "15920", + "15921", + "15922", + "15923", + "15924", + "15925", + "15926", + "15927", + "15928", + "15929", + "15930", + "15931", + "15934", + "15935", + "15936", + "15937", + "15938", + "15940", + "15942", + "15943", + "15944", + "15945", + "15946", + "15948", + "15949", + "15951", + "15952", + "15953", + "15954", + "15955", + "15956", + "15957", + "15958", + "15959", + "15960", + "15961", + "15962", + "15963", + "16001", + "16002", + "16003", + "16016", + "16017", + "16018", + "16020", + "16021", + "16022", + "16023", + "16024", + "16025", + "16027", + "16028", + "16029", + "16030", + "16033", + "16034", + "16035", + "16036", + "16037", + "16038", + "16039", + "16040", + "16041", + "16045", + "16046", + "16048", + "16049", + "16050", + "16051", + "16052", + "16053", + "16054", + "16055", + "16056", + "16057", + "16058", + "16059", + "16061", + "16063", + "16066", + "16101", + "16102", + "16103", + "16105", + "16107", + "16108", + "16110", + "16111", + "16112", + "16113", + "16114", + "16115", + "16116", + "16117", + "16120", + "16121", + "16123", + "16124", + "16125", + "16127", + "16130", + "16131", + "16132", + "16133", + "16134", + "16136", + "16137", + "16140", + "16141", + "16142", + "16143", + "16145", + "16146", + "16148", + "16150", + "16151", + "16153", + "16154", + "16155", + "16156", + "16157", + "16159", + "16160", + "16161", + "16172", + "16201", + "16210", + "16211", + "16212", + "16213", + "16214", + "16215", + "16217", + "16218", + "16220", + "16221", + "16222", + "16223", + "16224", + "16225", + "16226", + "16228", + "16229", + "16230", + "16232", + "16233", + "16234", + "16235", + "16236", + "16238", + "16239", + "16240", + "16242", + "16244", + "16245", + "16246", + "16248", + "16249", + "16250", + "16253", + "16254", + "16255", + "16256", + "16257", + "16258", + "16259", + "16260", + "16261", + "16262", + "16263", + "16301", + "16311", + "16312", + "16313", + "16314", + "16316", + "16317", + "16319", + "16321", + "16322", + "16323", + "16326", + "16327", + "16328", + "16329", + "16331", + "16332", + "16333", + "16334", + "16335", + "16340", + "16341", + "16342", + "16343", + "16344", + "16345", + "16346", + "16347", + "16350", + "16351", + "16352", + "16353", + "16354", + "16360", + "16361", + "16362", + "16364", + "16365", + "16366", + "16367", + "16368", + "16369", + "16370", + "16371", + "16372", + "16373", + "16374", + "16375", + "16388", + "16401", + "16402", + "16403", + "16404", + "16405", + "16406", + "16407", + "16410", + "16411", + "16412", + "16413", + "16415", + "16416", + "16417", + "16420", + "16421", + "16422", + "16423", + "16424", + "16426", + "16427", + "16428", + "16430", + "16432", + "16433", + "16434", + "16435", + "16436", + "16438", + "16440", + "16441", + "16442", + "16443", + "16444", + "16475", + "16501", + "16502", + "16503", + "16504", + "16505", + "16506", + "16507", + "16508", + "16509", + "16510", + "16511", + "16512", + "16514", + "16515", + "16522", + "16530", + "16531", + "16532", + "16533", + "16534", + "16538", + "16541", + "16544", + "16546", + "16550", + "16553", + "16554", + "16563", + "16565", + "16601", + "16602", + "16603", + "16611", + "16613", + "16616", + "16617", + "16619", + "16620", + "16621", + "16622", + "16623", + "16624", + "16625", + "16627", + "16629", + "16630", + "16631", + "16633", + "16634", + "16635", + "16636", + "16637", + "16638", + "16639", + "16640", + "16641", + "16644", + "16645", + "16646", + "16647", + "16648", + "16650", + "16651", + "16652", + "16654", + "16655", + "16656", + "16657", + "16659", + "16660", + "16661", + "16662", + "16663", + "16664", + "16665", + "16666", + "16667", + "16668", + "16669", + "16670", + "16671", + "16672", + "16673", + "16674", + "16675", + "16677", + "16678", + "16679", + "16680", + "16681", + "16682", + "16683", + "16684", + "16685", + "16686", + "16689", + "16691", + "16692", + "16693", + "16694", + "16695", + "16698", + "16699", + "16701", + "16720", + "16724", + "16725", + "16726", + "16727", + "16728", + "16729", + "16730", + "16731", + "16732", + "16733", + "16734", + "16735", + "16738", + "16740", + "16743", + "16744", + "16745", + "16746", + "16748", + "16749", + "16750", + "16801", + "16802", + "16803", + "16804", + "16805", + "16820", + "16821", + "16822", + "16823", + "16825", + "16826", + "16827", + "16828", + "16829", + "16830", + "16832", + "16833", + "16834", + "16835", + "16836", + "16837", + "16838", + "16839", + "16840", + "16841", + "16843", + "16844", + "16845", + "16847", + "16848", + "16849", + "16850", + "16851", + "16852", + "16853", + "16854", + "16855", + "16856", + "16858", + "16859", + "16860", + "16861", + "16863", + "16864", + "16865", + "16866", + "16868", + "16870", + "16871", + "16872", + "16873", + "16874", + "16875", + "16876", + "16877", + "16878", + "16879", + "16881", + "16882", + "16901", + "16910", + "16911", + "16912", + "16914", + "16915", + "16917", + "16918", + "16920", + "16921", + "16922", + "16923", + "16925", + "16926", + "16927", + "16928", + "16929", + "16930", + "16932", + "16933", + "16935", + "16936", + "16937", + "16938", + "16939", + "16940", + "16941", + "16942", + "16943", + "16945", + "16946", + "16947", + "16948", + "16950", + "17001", + "17002", + "17003", + "17004", + "17005", + "17006", + "17007", + "17008", + "17009", + "17010", + "17011", + "17012", + "17013", + "17014", + "17015", + "17016", + "17017", + "17018", + "17019", + "17020", + "17021", + "17022", + "17023", + "17024", + "17025", + "17026", + "17027", + "17028", + "17029", + "17030", + "17032", + "17033", + "17034", + "17035", + "17036", + "17037", + "17038", + "17039", + "17040", + "17041", + "17042", + "17043", + "17044", + "17045", + "17046", + "17047", + "17048", + "17049", + "17050", + "17051", + "17052", + "17053", + "17054", + "17055", + "17056", + "17057", + "17058", + "17059", + "17060", + "17061", + "17062", + "17063", + "17064", + "17065", + "17066", + "17067", + "17068", + "17069", + "17070", + "17071", + "17072", + "17073", + "17074", + "17075", + "17076", + "17077", + "17078", + "17080", + "17081", + "17082", + "17083", + "17084", + "17085", + "17086", + "17087", + "17088", + "17089", + "17090", + "17091", + "17093", + "17094", + "17097", + "17098", + "17099", + "17101", + "17102", + "17103", + "17104", + "17105", + "17106", + "17107", + "17108", + "17109", + "17110", + "17111", + "17112", + "17113", + "17120", + "17121", + "17122", + "17123", + "17124", + "17125", + "17126", + "17127", + "17128", + "17129", + "17130", + "17140", + "17177", + "17201", + "17202", + "17210", + "17211", + "17212", + "17213", + "17214", + "17215", + "17217", + "17219", + "17220", + "17221", + "17222", + "17223", + "17224", + "17225", + "17228", + "17229", + "17231", + "17232", + "17233", + "17235", + "17236", + "17237", + "17238", + "17239", + "17240", + "17241", + "17243", + "17244", + "17246", + "17247", + "17249", + "17250", + "17251", + "17252", + "17253", + "17254", + "17255", + "17256", + "17257", + "17260", + "17261", + "17262", + "17263", + "17264", + "17265", + "17266", + "17267", + "17268", + "17270", + "17271", + "17272", + "17301", + "17302", + "17303", + "17304", + "17306", + "17307", + "17309", + "17310", + "17311", + "17312", + "17313", + "17314", + "17315", + "17316", + "17317", + "17318", + "17319", + "17320", + "17321", + "17322", + "17323", + "17324", + "17325", + "17326", + "17327", + "17329", + "17331", + "17332", + "17333", + "17334", + "17335", + "17337", + "17339", + "17340", + "17342", + "17343", + "17344", + "17345", + "17347", + "17349", + "17350", + "17352", + "17353", + "17354", + "17355", + "17356", + "17358", + "17360", + "17361", + "17362", + "17363", + "17364", + "17365", + "17366", + "17368", + "17370", + "17371", + "17372", + "17375", + "17401", + "17402", + "17403", + "17404", + "17405", + "17406", + "17407", + "17408", + "17415", + "17501", + "17502", + "17503", + "17504", + "17505", + "17506", + "17507", + "17508", + "17509", + "17512", + "17516", + "17517", + "17518", + "17519", + "17520", + "17521", + "17522", + "17527", + "17528", + "17529", + "17532", + "17533", + "17534", + "17535", + "17536", + "17537", + "17538", + "17540", + "17543", + "17545", + "17547", + "17549", + "17550", + "17551", + "17552", + "17554", + "17555", + "17557", + "17560", + "17562", + "17563", + "17564", + "17565", + "17566", + "17567", + "17568", + "17569", + "17570", + "17572", + "17573", + "17575", + "17576", + "17578", + "17579", + "17580", + "17581", + "17582", + "17583", + "17584", + "17585", + "17601", + "17602", + "17603", + "17604", + "17605", + "17606", + "17607", + "17608", + "17611", + "17622", + "17699", + "17701", + "17702", + "17703", + "17705", + "17720", + "17721", + "17723", + "17724", + "17726", + "17727", + "17728", + "17729", + "17730", + "17731", + "17735", + "17737", + "17738", + "17739", + "17740", + "17742", + "17744", + "17745", + "17747", + "17748", + "17749", + "17750", + "17751", + "17752", + "17754", + "17756", + "17758", + "17760", + "17762", + "17763", + "17764", + "17765", + "17767", + "17768", + "17769", + "17771", + "17772", + "17773", + "17774", + "17776", + "17777", + "17778", + "17779", + "17801", + "17810", + "17812", + "17813", + "17814", + "17815", + "17820", + "17821", + "17822", + "17823", + "17824", + "17827", + "17829", + "17830", + "17831", + "17832", + "17833", + "17834", + "17835", + "17836", + "17837", + "17839", + "17840", + "17841", + "17842", + "17843", + "17844", + "17845", + "17846", + "17847", + "17850", + "17851", + "17853", + "17855", + "17856", + "17857", + "17858", + "17859", + "17860", + "17861", + "17862", + "17864", + "17865", + "17866", + "17867", + "17868", + "17870", + "17872", + "17876", + "17877", + "17878", + "17880", + "17881", + "17882", + "17883", + "17884", + "17885", + "17886", + "17887", + "17888", + "17889", + "17901", + "17920", + "17921", + "17922", + "17923", + "17925", + "17929", + "17930", + "17931", + "17932", + "17933", + "17934", + "17935", + "17936", + "17938", + "17941", + "17942", + "17943", + "17944", + "17945", + "17946", + "17948", + "17949", + "17951", + "17952", + "17953", + "17954", + "17957", + "17959", + "17960", + "17961", + "17963", + "17964", + "17965", + "17966", + "17967", + "17968", + "17970", + "17972", + "17974", + "17976", + "17978", + "17979", + "17980", + "17981", + "17982", + "17983", + "17985", + "18001", + "18002", + "18003", + "18010", + "18011", + "18012", + "18013", + "18014", + "18015", + "18016", + "18017", + "18018", + "18020", + "18025", + "18030", + "18031", + "18032", + "18034", + "18035", + "18036", + "18037", + "18038", + "18039", + "18040", + "18041", + "18042", + "18043", + "18044", + "18045", + "18046", + "18049", + "18050", + "18051", + "18052", + "18053", + "18054", + "18055", + "18056", + "18058", + "18059", + "18060", + "18062", + "18063", + "18064", + "18065", + "18066", + "18067", + "18068", + "18069", + "18070", + "18071", + "18072", + "18073", + "18074", + "18076", + "18077", + "18078", + "18079", + "18080", + "18081", + "18083", + "18084", + "18085", + "18086", + "18087", + "18088", + "18091", + "18092", + "18098", + "18099", + "18101", + "18102", + "18103", + "18104", + "18105", + "18106", + "18109", + "18175", + "18195", + "18201", + "18202", + "18210", + "18211", + "18212", + "18214", + "18216", + "18218", + "18219", + "18220", + "18221", + "18222", + "18223", + "18224", + "18225", + "18229", + "18230", + "18231", + "18232", + "18234", + "18235", + "18237", + "18239", + "18240", + "18241", + "18242", + "18244", + "18245", + "18246", + "18247", + "18248", + "18249", + "18250", + "18251", + "18252", + "18254", + "18255", + "18256", + "18301", + "18302", + "18320", + "18321", + "18322", + "18323", + "18324", + "18325", + "18326", + "18327", + "18328", + "18330", + "18331", + "18332", + "18333", + "18334", + "18335", + "18336", + "18337", + "18340", + "18341", + "18342", + "18343", + "18344", + "18346", + "18347", + "18348", + "18349", + "18350", + "18351", + "18352", + "18353", + "18354", + "18355", + "18356", + "18357", + "18360", + "18370", + "18371", + "18372", + "18373", + "18403", + "18405", + "18407", + "18410", + "18411", + "18413", + "18414", + "18415", + "18416", + "18417", + "18419", + "18420", + "18421", + "18424", + "18425", + "18426", + "18427", + "18428", + "18430", + "18431", + "18433", + "18434", + "18435", + "18436", + "18437", + "18438", + "18439", + "18440", + "18441", + "18443", + "18444", + "18445", + "18446", + "18447", + "18448", + "18449", + "18451", + "18452", + "18453", + "18454", + "18455", + "18456", + "18457", + "18458", + "18459", + "18460", + "18461", + "18462", + "18463", + "18464", + "18465", + "18466", + "18469", + "18470", + "18471", + "18472", + "18473", + "18501", + "18502", + "18503", + "18504", + "18505", + "18507", + "18508", + "18509", + "18510", + "18512", + "18514", + "18515", + "18517", + "18518", + "18519", + "18522", + "18540", + "18577", + "18601", + "18602", + "18603", + "18610", + "18611", + "18612", + "18614", + "18615", + "18616", + "18617", + "18618", + "18619", + "18621", + "18622", + "18623", + "18624", + "18625", + "18626", + "18627", + "18628", + "18629", + "18630", + "18631", + "18632", + "18634", + "18635", + "18636", + "18640", + "18641", + "18642", + "18643", + "18644", + "18651", + "18653", + "18654", + "18655", + "18656", + "18657", + "18660", + "18661", + "18690", + "18701", + "18702", + "18703", + "18704", + "18705", + "18706", + "18707", + "18708", + "18709", + "18710", + "18711", + "18762", + "18764", + "18765", + "18766", + "18767", + "18769", + "18773", + "18801", + "18810", + "18812", + "18813", + "18814", + "18815", + "18816", + "18817", + "18818", + "18820", + "18821", + "18822", + "18823", + "18824", + "18825", + "18826", + "18827", + "18828", + "18829", + "18830", + "18831", + "18832", + "18833", + "18834", + "18837", + "18840", + "18842", + "18843", + "18844", + "18845", + "18846", + "18847", + "18848", + "18850", + "18851", + "18853", + "18854", + "18901", + "18902", + "18910", + "18911", + "18912", + "18913", + "18914", + "18915", + "18916", + "18917", + "18918", + "18920", + "18921", + "18922", + "18923", + "18924", + "18925", + "18926", + "18927", + "18928", + "18929", + "18930", + "18931", + "18932", + "18933", + "18934", + "18935", + "18936", + "18938", + "18940", + "18942", + "18943", + "18944", + "18946", + "18947", + "18949", + "18950", + "18951", + "18953", + "18954", + "18955", + "18956", + "18957", + "18958", + "18960", + "18962", + "18963", + "18964", + "18966", + "18968", + "18969", + "18970", + "18971", + "18972", + "18974", + "18976", + "18977", + "18979", + "18980", + "18981", + "18991", + "19001", + "19002", + "19003", + "19004", + "19006", + "19007", + "19008", + "19009", + "19010", + "19012", + "19013", + "19014", + "19015", + "19016", + "19017", + "19018", + "19019", + "19020", + "19021", + "19022", + "19023", + "19025", + "19026", + "19027", + "19028", + "19029", + "19030", + "19031", + "19032", + "19033", + "19034", + "19035", + "19036", + "19037", + "19038", + "19039", + "19040", + "19041", + "19043", + "19044", + "19046", + "19047", + "19048", + "19049", + "19050", + "19052", + "19053", + "19054", + "19055", + "19056", + "19057", + "19058", + "19060", + "19061", + "19063", + "19064", + "19065", + "19066", + "19067", + "19070", + "19072", + "19073", + "19074", + "19075", + "19076", + "19078", + "19079", + "19080", + "19081", + "19082", + "19083", + "19085", + "19086", + "19087", + "19088", + "19089", + "19090", + "19091", + "19092", + "19093", + "19094", + "19095", + "19096", + "19098", + "19099", + "19101", + "19102", + "19103", + "19104", + "19105", + "19106", + "19107", + "19108", + "19109", + "19110", + "19111", + "19112", + "19113", + "19114", + "19115", + "19116", + "19118", + "19119", + "19120", + "19121", + "19122", + "19123", + "19124", + "19125", + "19126", + "19127", + "19128", + "19129", + "19130", + "19131", + "19132", + "19133", + "19134", + "19135", + "19136", + "19137", + "19138", + "19139", + "19140", + "19141", + "19142", + "19143", + "19144", + "19145", + "19146", + "19147", + "19148", + "19149", + "19150", + "19151", + "19152", + "19153", + "19154", + "19155", + "19160", + "19161", + "19162", + "19170", + "19171", + "19172", + "19173", + "19175", + "19176", + "19177", + "19178", + "19179", + "19181", + "19182", + "19183", + "19184", + "19185", + "19187", + "19188", + "19190", + "19191", + "19192", + "19193", + "19194", + "19195", + "19196", + "19197", + "19244", + "19255", + "19301", + "19310", + "19311", + "19312", + "19316", + "19317", + "19318", + "19319", + "19320", + "19330", + "19331", + "19333", + "19335", + "19339", + "19340", + "19341", + "19342", + "19343", + "19344", + "19345", + "19346", + "19347", + "19348", + "19350", + "19351", + "19352", + "19353", + "19354", + "19355", + "19357", + "19358", + "19360", + "19362", + "19363", + "19365", + "19366", + "19367", + "19369", + "19371", + "19372", + "19373", + "19374", + "19375", + "19376", + "19380", + "19381", + "19382", + "19383", + "19388", + "19390", + "19395", + "19397", + "19398", + "19399", + "19401", + "19403", + "19404", + "19405", + "19406", + "19407", + "19408", + "19409", + "19415", + "19420", + "19421", + "19422", + "19423", + "19424", + "19425", + "19426", + "19428", + "19429", + "19430", + "19432", + "19435", + "19436", + "19437", + "19438", + "19440", + "19441", + "19442", + "19443", + "19444", + "19446", + "19450", + "19451", + "19453", + "19454", + "19455", + "19456", + "19457", + "19460", + "19462", + "19464", + "19465", + "19468", + "19470", + "19472", + "19473", + "19474", + "19475", + "19477", + "19478", + "19480", + "19481", + "19482", + "19483", + "19484", + "19485", + "19486", + "19487", + "19488", + "19489", + "19490", + "19492", + "19493", + "19494", + "19495", + "19496", + "19501", + "19503", + "19504", + "19505", + "19506", + "19507", + "19508", + "19510", + "19511", + "19512", + "19516", + "19518", + "19519", + "19520", + "19522", + "19523", + "19525", + "19526", + "19529", + "19530", + "19533", + "19534", + "19535", + "19536", + "19538", + "19539", + "19540", + "19541", + "19542", + "19543", + "19544", + "19545", + "19547", + "19548", + "19549", + "19550", + "19551", + "19554", + "19555", + "19559", + "19560", + "19562", + "19564", + "19565", + "19567", + "19601", + "19602", + "19603", + "19604", + "19605", + "19606", + "19607", + "19608", + "19609", + "19610", + "19611", + "19612", + "19640", + "19701", + "19702", + "19703", + "19706", + "19707", + "19708", + "19709", + "19710", + "19711", + "19712", + "19713", + "19714", + "19715", + "19716", + "19717", + "19718", + "19720", + "19721", + "19725", + "19726", + "19730", + "19731", + "19732", + "19733", + "19734", + "19735", + "19736", + "19801", + "19802", + "19803", + "19804", + "19805", + "19806", + "19807", + "19808", + "19809", + "19810", + "19850", + "19880", + "19884", + "19885", + "19886", + "19887", + "19889", + "19890", + "19891", + "19892", + "19893", + "19894", + "19895", + "19896", + "19897", + "19898", + "19899", + "19901", + "19902", + "19903", + "19904", + "19905", + "19906", + "19930", + "19931", + "19933", + "19934", + "19936", + "19938", + "19939", + "19940", + "19941", + "19943", + "19944", + "19945", + "19946", + "19947", + "19950", + "19951", + "19952", + "19953", + "19954", + "19955", + "19956", + "19958", + "19960", + "19961", + "19962", + "19963", + "19964", + "19966", + "19967", + "19968", + "19969", + "19970", + "19971", + "19973", + "19975", + "19977", + "19979", + "19980", + "20001", + "20002", + "20003", + "20004", + "20005", + "20006", + "20007", + "20008", + "20009", + "20010", + "20011", + "20012", + "20013", + "20015", + "20016", + "20017", + "20018", + "20019", + "20020", + "20022", + "20023", + "20024", + "20026", + "20027", + "20029", + "20030", + "20032", + "20033", + "20035", + "20036", + "20037", + "20038", + "20039", + "20040", + "20041", + "20042", + "20043", + "20044", + "20045", + "20046", + "20047", + "20049", + "20050", + "20051", + "20052", + "20053", + "20055", + "20056", + "20057", + "20058", + "20059", + "20060", + "20061", + "20062", + "20063", + "20064", + "20065", + "20066", + "20067", + "20068", + "20069", + "20070", + "20071", + "20073", + "20074", + "20075", + "20076", + "20077", + "20078", + "20080", + "20081", + "20082", + "20088", + "20090", + "20091", + "20097", + "20098", + "20101", + "20102", + "20103", + "20104", + "20105", + "20106", + "20107", + "20108", + "20109", + "20110", + "20111", + "20112", + "20113", + "20115", + "20116", + "20117", + "20118", + "20119", + "20120", + "20121", + "20122", + "20124", + "20128", + "20129", + "20130", + "20131", + "20132", + "20134", + "20135", + "20136", + "20137", + "20138", + "20139", + "20140", + "20141", + "20142", + "20143", + "20144", + "20146", + "20147", + "20148", + "20149", + "20151", + "20152", + "20153", + "20155", + "20156", + "20158", + "20159", + "20160", + "20163", + "20164", + "20165", + "20166", + "20167", + "20168", + "20169", + "20170", + "20171", + "20172", + "20175", + "20176", + "20177", + "20178", + "20180", + "20181", + "20182", + "20184", + "20185", + "20186", + "20187", + "20188", + "20189", + "20190", + "20191", + "20192", + "20193", + "20194", + "20195", + "20196", + "20197", + "20198", + "20199", + "20201", + "20202", + "20203", + "20204", + "20206", + "20207", + "20208", + "20210", + "20211", + "20212", + "20213", + "20214", + "20215", + "20216", + "20217", + "20218", + "20219", + "20220", + "20221", + "20222", + "20223", + "20224", + "20226", + "20227", + "20228", + "20229", + "20230", + "20232", + "20233", + "20235", + "20237", + "20238", + "20239", + "20240", + "20241", + "20242", + "20244", + "20245", + "20250", + "20251", + "20252", + "20254", + "20260", + "20261", + "20262", + "20265", + "20266", + "20268", + "20270", + "20277", + "20289", + "20299", + "20301", + "20303", + "20306", + "20307", + "20310", + "20314", + "20317", + "20318", + "20319", + "20330", + "20340", + "20350", + "20355", + "20370", + "20372", + "20373", + "20374", + "20375", + "20376", + "20380", + "20388", + "20389", + "20390", + "20391", + "20392", + "20393", + "20394", + "20395", + "20398", + "20401", + "20402", + "20403", + "20404", + "20405", + "20406", + "20407", + "20408", + "20409", + "20410", + "20411", + "20412", + "20413", + "20414", + "20415", + "20416", + "20417", + "20418", + "20419", + "20420", + "20421", + "20422", + "20423", + "20424", + "20425", + "20426", + "20427", + "20428", + "20429", + "20431", + "20433", + "20434", + "20435", + "20436", + "20437", + "20439", + "20440", + "20441", + "20442", + "20444", + "20447", + "20451", + "20453", + "20456", + "20460", + "20463", + "20468", + "20469", + "20470", + "20472", + "20500", + "20501", + "20502", + "20503", + "20504", + "20505", + "20506", + "20507", + "20508", + "20509", + "20510", + "20511", + "20515", + "20520", + "20521", + "20522", + "20523", + "20524", + "20525", + "20526", + "20527", + "20528", + "20529", + "20530", + "20531", + "20532", + "20533", + "20534", + "20535", + "20536", + "20537", + "20538", + "20539", + "20540", + "20541", + "20542", + "20543", + "20544", + "20546", + "20547", + "20548", + "20549", + "20551", + "20552", + "20553", + "20554", + "20555", + "20557", + "20558", + "20559", + "20560", + "20565", + "20566", + "20570", + "20571", + "20572", + "20573", + "20575", + "20576", + "20577", + "20578", + "20579", + "20580", + "20581", + "20585", + "20586", + "20588", + "20590", + "20591", + "20593", + "20594", + "20597", + "20598", + "20599", + "20601", + "20602", + "20603", + "20604", + "20606", + "20607", + "20608", + "20609", + "20610", + "20611", + "20612", + "20613", + "20615", + "20616", + "20617", + "20618", + "20619", + "20620", + "20621", + "20622", + "20623", + "20624", + "20625", + "20626", + "20627", + "20628", + "20629", + "20630", + "20632", + "20634", + "20635", + "20636", + "20637", + "20639", + "20640", + "20643", + "20645", + "20646", + "20650", + "20653", + "20656", + "20657", + "20658", + "20659", + "20660", + "20661", + "20662", + "20664", + "20667", + "20670", + "20674", + "20675", + "20676", + "20677", + "20678", + "20680", + "20682", + "20684", + "20685", + "20686", + "20687", + "20688", + "20689", + "20690", + "20692", + "20693", + "20695", + "20697", + "20701", + "20703", + "20704", + "20705", + "20706", + "20707", + "20708", + "20709", + "20710", + "20711", + "20712", + "20714", + "20715", + "20716", + "20717", + "20718", + "20719", + "20720", + "20721", + "20722", + "20723", + "20724", + "20725", + "20726", + "20731", + "20732", + "20733", + "20735", + "20736", + "20737", + "20738", + "20740", + "20741", + "20742", + "20743", + "20744", + "20745", + "20746", + "20747", + "20748", + "20749", + "20750", + "20751", + "20752", + "20753", + "20754", + "20755", + "20757", + "20758", + "20759", + "20762", + "20763", + "20764", + "20765", + "20768", + "20769", + "20770", + "20771", + "20772", + "20773", + "20774", + "20775", + "20776", + "20777", + "20778", + "20779", + "20781", + "20782", + "20783", + "20784", + "20785", + "20787", + "20788", + "20790", + "20791", + "20792", + "20794", + "20797", + "20799", + "20810", + "20811", + "20812", + "20813", + "20814", + "20815", + "20816", + "20817", + "20818", + "20824", + "20825", + "20827", + "20830", + "20832", + "20833", + "20837", + "20838", + "20839", + "20841", + "20842", + "20847", + "20848", + "20849", + "20850", + "20851", + "20852", + "20853", + "20854", + "20855", + "20857", + "20859", + "20860", + "20861", + "20862", + "20866", + "20868", + "20871", + "20872", + "20874", + "20875", + "20876", + "20877", + "20878", + "20879", + "20880", + "20882", + "20883", + "20884", + "20885", + "20886", + "20889", + "20891", + "20892", + "20894", + "20895", + "20896", + "20897", + "20898", + "20899", + "20901", + "20902", + "20903", + "20904", + "20905", + "20906", + "20907", + "20908", + "20910", + "20911", + "20912", + "20913", + "20914", + "20915", + "20916", + "20918", + "20993", + "20997", + "21001", + "21005", + "21009", + "21010", + "21012", + "21013", + "21014", + "21015", + "21017", + "21018", + "21020", + "21022", + "21023", + "21027", + "21028", + "21029", + "21030", + "21031", + "21032", + "21034", + "21035", + "21036", + "21037", + "21040", + "21041", + "21042", + "21043", + "21044", + "21045", + "21046", + "21047", + "21048", + "21050", + "21051", + "21052", + "21053", + "21054", + "21056", + "21057", + "21060", + "21061", + "21062", + "21065", + "21071", + "21074", + "21075", + "21076", + "21077", + "21078", + "21082", + "21084", + "21085", + "21087", + "21088", + "21090", + "21092", + "21093", + "21094", + "21098", + "21102", + "21104", + "21105", + "21106", + "21108", + "21111", + "21113", + "21114", + "21117", + "21120", + "21122", + "21123", + "21128", + "21130", + "21131", + "21132", + "21133", + "21136", + "21139", + "21140", + "21144", + "21146", + "21150", + "21152", + "21153", + "21154", + "21155", + "21156", + "21157", + "21158", + "21160", + "21161", + "21162", + "21163", + "21201", + "21202", + "21203", + "21204", + "21205", + "21206", + "21207", + "21208", + "21209", + "21210", + "21211", + "21212", + "21213", + "21214", + "21215", + "21216", + "21217", + "21218", + "21219", + "21220", + "21221", + "21222", + "21223", + "21224", + "21225", + "21226", + "21227", + "21228", + "21229", + "21230", + "21231", + "21233", + "21234", + "21235", + "21236", + "21237", + "21239", + "21240", + "21241", + "21244", + "21250", + "21251", + "21252", + "21260", + "21261", + "21263", + "21264", + "21265", + "21268", + "21270", + "21273", + "21274", + "21275", + "21278", + "21279", + "21280", + "21281", + "21282", + "21283", + "21284", + "21285", + "21286", + "21287", + "21288", + "21289", + "21290", + "21297", + "21298", + "21401", + "21402", + "21403", + "21404", + "21405", + "21409", + "21411", + "21412", + "21501", + "21502", + "21503", + "21504", + "21505", + "21520", + "21521", + "21522", + "21523", + "21524", + "21528", + "21529", + "21530", + "21531", + "21532", + "21536", + "21538", + "21539", + "21540", + "21541", + "21542", + "21543", + "21545", + "21550", + "21555", + "21556", + "21557", + "21560", + "21561", + "21562", + "21601", + "21606", + "21607", + "21609", + "21610", + "21612", + "21613", + "21617", + "21619", + "21620", + "21622", + "21623", + "21624", + "21625", + "21626", + "21627", + "21628", + "21629", + "21631", + "21632", + "21634", + "21635", + "21636", + "21638", + "21639", + "21640", + "21641", + "21643", + "21644", + "21645", + "21647", + "21648", + "21649", + "21650", + "21651", + "21652", + "21653", + "21654", + "21655", + "21656", + "21657", + "21658", + "21659", + "21660", + "21661", + "21662", + "21663", + "21664", + "21665", + "21666", + "21667", + "21668", + "21669", + "21670", + "21671", + "21672", + "21673", + "21675", + "21676", + "21677", + "21678", + "21679", + "21681", + "21682", + "21683", + "21684", + "21685", + "21686", + "21687", + "21688", + "21690", + "21701", + "21702", + "21703", + "21704", + "21705", + "21709", + "21710", + "21711", + "21713", + "21714", + "21715", + "21716", + "21717", + "21718", + "21719", + "21720", + "21721", + "21722", + "21723", + "21727", + "21733", + "21734", + "21737", + "21738", + "21740", + "21741", + "21742", + "21746", + "21747", + "21748", + "21749", + "21750", + "21754", + "21755", + "21756", + "21757", + "21758", + "21759", + "21762", + "21765", + "21766", + "21767", + "21769", + "21770", + "21771", + "21773", + "21774", + "21775", + "21776", + "21777", + "21778", + "21779", + "21780", + "21781", + "21782", + "21783", + "21784", + "21787", + "21788", + "21790", + "21791", + "21792", + "21793", + "21794", + "21795", + "21797", + "21798", + "21801", + "21802", + "21803", + "21804", + "21810", + "21811", + "21813", + "21814", + "21817", + "21821", + "21822", + "21824", + "21826", + "21829", + "21830", + "21835", + "21836", + "21837", + "21838", + "21840", + "21841", + "21842", + "21843", + "21849", + "21850", + "21851", + "21852", + "21853", + "21856", + "21857", + "21861", + "21862", + "21863", + "21864", + "21865", + "21866", + "21867", + "21869", + "21871", + "21872", + "21874", + "21875", + "21890", + "21901", + "21902", + "21903", + "21904", + "21911", + "21912", + "21913", + "21914", + "21915", + "21916", + "21917", + "21918", + "21919", + "21920", + "21921", + "21922", + "21930", + "22003", + "22009", + "22015", + "22025", + "22026", + "22027", + "22030", + "22031", + "22032", + "22033", + "22034", + "22035", + "22036", + "22037", + "22038", + "22039", + "22040", + "22041", + "22042", + "22043", + "22044", + "22046", + "22047", + "22060", + "22066", + "22067", + "22079", + "22081", + "22082", + "22092", + "22093", + "22095", + "22096", + "22101", + "22102", + "22103", + "22106", + "22107", + "22108", + "22109", + "22116", + "22118", + "22119", + "22120", + "22121", + "22122", + "22124", + "22125", + "22134", + "22135", + "22150", + "22151", + "22152", + "22153", + "22156", + "22158", + "22159", + "22160", + "22161", + "22172", + "22180", + "22181", + "22182", + "22183", + "22184", + "22185", + "22191", + "22192", + "22193", + "22194", + "22195", + "22199", + "22201", + "22202", + "22203", + "22204", + "22205", + "22206", + "22207", + "22209", + "22210", + "22211", + "22212", + "22213", + "22214", + "22215", + "22216", + "22217", + "22218", + "22219", + "22222", + "22223", + "22225", + "22226", + "22227", + "22229", + "22230", + "22234", + "22240", + "22241", + "22242", + "22243", + "22244", + "22245", + "22246", + "22301", + "22302", + "22303", + "22304", + "22305", + "22306", + "22307", + "22308", + "22309", + "22310", + "22311", + "22312", + "22313", + "22314", + "22315", + "22320", + "22321", + "22331", + "22332", + "22333", + "22334", + "22336", + "22350", + "22401", + "22402", + "22403", + "22404", + "22405", + "22406", + "22407", + "22408", + "22412", + "22427", + "22428", + "22430", + "22432", + "22433", + "22435", + "22436", + "22437", + "22438", + "22442", + "22443", + "22446", + "22448", + "22451", + "22454", + "22456", + "22460", + "22463", + "22469", + "22471", + "22472", + "22473", + "22476", + "22480", + "22481", + "22482", + "22485", + "22488", + "22501", + "22503", + "22504", + "22507", + "22508", + "22509", + "22511", + "22513", + "22514", + "22517", + "22520", + "22523", + "22524", + "22526", + "22528", + "22529", + "22530", + "22534", + "22535", + "22538", + "22539", + "22542", + "22544", + "22545", + "22546", + "22547", + "22548", + "22551", + "22552", + "22553", + "22554", + "22555", + "22556", + "22558", + "22560", + "22565", + "22567", + "22570", + "22572", + "22576", + "22577", + "22578", + "22579", + "22580", + "22581", + "22601", + "22602", + "22603", + "22604", + "22610", + "22611", + "22620", + "22622", + "22623", + "22624", + "22625", + "22626", + "22627", + "22630", + "22637", + "22639", + "22640", + "22641", + "22642", + "22643", + "22644", + "22645", + "22646", + "22649", + "22650", + "22652", + "22654", + "22655", + "22656", + "22657", + "22660", + "22663", + "22664", + "22701", + "22709", + "22711", + "22712", + "22713", + "22714", + "22715", + "22716", + "22718", + "22719", + "22720", + "22721", + "22722", + "22723", + "22724", + "22725", + "22726", + "22727", + "22728", + "22729", + "22730", + "22731", + "22732", + "22733", + "22734", + "22735", + "22736", + "22737", + "22738", + "22739", + "22740", + "22741", + "22742", + "22743", + "22746", + "22747", + "22748", + "22749", + "22801", + "22802", + "22803", + "22807", + "22810", + "22811", + "22812", + "22815", + "22820", + "22821", + "22824", + "22827", + "22830", + "22831", + "22832", + "22833", + "22834", + "22835", + "22840", + "22841", + "22842", + "22843", + "22844", + "22845", + "22846", + "22847", + "22848", + "22849", + "22850", + "22851", + "22853", + "22901", + "22902", + "22903", + "22904", + "22905", + "22906", + "22907", + "22908", + "22909", + "22910", + "22911", + "22920", + "22922", + "22923", + "22924", + "22931", + "22932", + "22935", + "22936", + "22937", + "22938", + "22939", + "22940", + "22942", + "22943", + "22945", + "22946", + "22947", + "22948", + "22949", + "22952", + "22957", + "22958", + "22959", + "22960", + "22963", + "22964", + "22965", + "22967", + "22968", + "22969", + "22971", + "22972", + "22973", + "22974", + "22976", + "22980", + "22987", + "22989", + "23001", + "23002", + "23003", + "23004", + "23005", + "23009", + "23011", + "23014", + "23015", + "23018", + "23021", + "23022", + "23023", + "23024", + "23025", + "23027", + "23030", + "23031", + "23032", + "23035", + "23038", + "23039", + "23040", + "23043", + "23045", + "23047", + "23050", + "23055", + "23056", + "23058", + "23059", + "23060", + "23061", + "23062", + "23063", + "23064", + "23065", + "23066", + "23067", + "23068", + "23069", + "23070", + "23071", + "23072", + "23075", + "23076", + "23079", + "23081", + "23083", + "23084", + "23085", + "23086", + "23089", + "23090", + "23091", + "23092", + "23093", + "23101", + "23102", + "23103", + "23105", + "23106", + "23107", + "23108", + "23109", + "23110", + "23111", + "23112", + "23113", + "23114", + "23115", + "23116", + "23117", + "23119", + "23120", + "23123", + "23124", + "23125", + "23126", + "23127", + "23128", + "23129", + "23130", + "23131", + "23138", + "23139", + "23140", + "23141", + "23146", + "23147", + "23148", + "23149", + "23150", + "23153", + "23154", + "23155", + "23156", + "23160", + "23161", + "23162", + "23163", + "23168", + "23169", + "23170", + "23173", + "23175", + "23176", + "23177", + "23178", + "23180", + "23181", + "23183", + "23184", + "23185", + "23186", + "23187", + "23188", + "23190", + "23192", + "23218", + "23219", + "23220", + "23221", + "23222", + "23223", + "23224", + "23225", + "23226", + "23227", + "23228", + "23229", + "23230", + "23231", + "23232", + "23233", + "23234", + "23235", + "23236", + "23237", + "23238", + "23240", + "23241", + "23242", + "23249", + "23250", + "23255", + "23260", + "23261", + "23269", + "23273", + "23274", + "23276", + "23278", + "23279", + "23282", + "23284", + "23285", + "23286", + "23288", + "23289", + "23290", + "23291", + "23292", + "23293", + "23294", + "23295", + "23297", + "23298", + "23301", + "23302", + "23303", + "23304", + "23306", + "23307", + "23308", + "23310", + "23313", + "23314", + "23315", + "23316", + "23320", + "23321", + "23322", + "23323", + "23324", + "23325", + "23326", + "23327", + "23328", + "23336", + "23337", + "23341", + "23345", + "23347", + "23350", + "23354", + "23356", + "23357", + "23358", + "23359", + "23389", + "23395", + "23396", + "23397", + "23398", + "23399", + "23401", + "23404", + "23405", + "23407", + "23408", + "23409", + "23410", + "23412", + "23413", + "23414", + "23415", + "23416", + "23417", + "23418", + "23419", + "23420", + "23421", + "23422", + "23423", + "23424", + "23426", + "23427", + "23429", + "23430", + "23431", + "23432", + "23433", + "23434", + "23435", + "23436", + "23437", + "23438", + "23439", + "23440", + "23441", + "23442", + "23443", + "23450", + "23451", + "23452", + "23453", + "23454", + "23455", + "23456", + "23457", + "23458", + "23459", + "23460", + "23461", + "23462", + "23463", + "23464", + "23465", + "23466", + "23467", + "23471", + "23479", + "23480", + "23482", + "23483", + "23486", + "23487", + "23488", + "23501", + "23502", + "23503", + "23504", + "23505", + "23506", + "23507", + "23508", + "23509", + "23510", + "23511", + "23512", + "23513", + "23514", + "23515", + "23517", + "23518", + "23519", + "23520", + "23521", + "23523", + "23529", + "23541", + "23551", + "23601", + "23602", + "23603", + "23604", + "23605", + "23606", + "23607", + "23608", + "23609", + "23612", + "23628", + "23630", + "23651", + "23661", + "23662", + "23663", + "23664", + "23665", + "23666", + "23667", + "23668", + "23669", + "23670", + "23681", + "23690", + "23691", + "23692", + "23693", + "23694", + "23696", + "23701", + "23702", + "23703", + "23704", + "23705", + "23707", + "23708", + "23709", + "23801", + "23803", + "23804", + "23805", + "23806", + "23821", + "23822", + "23824", + "23825", + "23827", + "23828", + "23829", + "23830", + "23831", + "23832", + "23833", + "23834", + "23836", + "23837", + "23838", + "23839", + "23840", + "23841", + "23842", + "23843", + "23844", + "23845", + "23846", + "23847", + "23850", + "23851", + "23856", + "23857", + "23860", + "23866", + "23867", + "23868", + "23870", + "23872", + "23873", + "23874", + "23875", + "23876", + "23878", + "23879", + "23881", + "23882", + "23883", + "23884", + "23885", + "23887", + "23888", + "23889", + "23890", + "23891", + "23893", + "23894", + "23897", + "23898", + "23899", + "23901", + "23909", + "23915", + "23917", + "23919", + "23920", + "23921", + "23922", + "23923", + "23924", + "23927", + "23930", + "23934", + "23936", + "23937", + "23938", + "23939", + "23941", + "23942", + "23943", + "23944", + "23947", + "23950", + "23952", + "23954", + "23955", + "23958", + "23959", + "23960", + "23962", + "23963", + "23964", + "23966", + "23967", + "23968", + "23970", + "23974", + "23976", + "24001", + "24002", + "24003", + "24004", + "24005", + "24006", + "24007", + "24008", + "24009", + "24010", + "24011", + "24012", + "24013", + "24014", + "24015", + "24016", + "24017", + "24018", + "24019", + "24020", + "24022", + "24023", + "24024", + "24025", + "24026", + "24027", + "24028", + "24029", + "24030", + "24031", + "24032", + "24033", + "24034", + "24035", + "24036", + "24037", + "24038", + "24040", + "24042", + "24043", + "24044", + "24045", + "24048", + "24050", + "24053", + "24054", + "24055", + "24058", + "24059", + "24060", + "24061", + "24062", + "24063", + "24064", + "24065", + "24066", + "24067", + "24068", + "24069", + "24070", + "24072", + "24073", + "24076", + "24077", + "24078", + "24079", + "24082", + "24083", + "24084", + "24085", + "24086", + "24087", + "24088", + "24089", + "24090", + "24091", + "24092", + "24093", + "24095", + "24101", + "24102", + "24104", + "24105", + "24111", + "24112", + "24113", + "24114", + "24115", + "24120", + "24121", + "24122", + "24124", + "24126", + "24127", + "24128", + "24129", + "24130", + "24131", + "24132", + "24133", + "24134", + "24136", + "24137", + "24138", + "24139", + "24141", + "24142", + "24143", + "24146", + "24147", + "24148", + "24149", + "24150", + "24151", + "24153", + "24155", + "24157", + "24161", + "24162", + "24165", + "24167", + "24168", + "24171", + "24174", + "24175", + "24176", + "24177", + "24178", + "24179", + "24184", + "24185", + "24201", + "24202", + "24203", + "24205", + "24209", + "24210", + "24211", + "24212", + "24215", + "24216", + "24217", + "24218", + "24219", + "24220", + "24221", + "24224", + "24225", + "24226", + "24228", + "24230", + "24236", + "24237", + "24239", + "24243", + "24244", + "24245", + "24246", + "24248", + "24250", + "24251", + "24256", + "24258", + "24260", + "24263", + "24265", + "24266", + "24269", + "24270", + "24271", + "24272", + "24273", + "24277", + "24279", + "24280", + "24281", + "24282", + "24283", + "24290", + "24292", + "24293", + "24301", + "24311", + "24312", + "24313", + "24314", + "24315", + "24316", + "24317", + "24318", + "24319", + "24322", + "24323", + "24324", + "24325", + "24326", + "24327", + "24328", + "24330", + "24333", + "24340", + "24343", + "24347", + "24348", + "24350", + "24351", + "24352", + "24354", + "24360", + "24361", + "24363", + "24366", + "24368", + "24370", + "24374", + "24375", + "24377", + "24378", + "24380", + "24381", + "24382", + "24401", + "24402", + "24411", + "24412", + "24413", + "24415", + "24416", + "24421", + "24422", + "24426", + "24430", + "24431", + "24432", + "24433", + "24435", + "24437", + "24438", + "24439", + "24440", + "24441", + "24442", + "24445", + "24448", + "24450", + "24457", + "24458", + "24459", + "24460", + "24463", + "24464", + "24465", + "24467", + "24468", + "24469", + "24471", + "24472", + "24473", + "24474", + "24476", + "24477", + "24479", + "24482", + "24483", + "24484", + "24485", + "24486", + "24487", + "24501", + "24502", + "24503", + "24504", + "24505", + "24506", + "24512", + "24513", + "24514", + "24515", + "24517", + "24520", + "24521", + "24522", + "24523", + "24526", + "24527", + "24528", + "24529", + "24530", + "24531", + "24533", + "24534", + "24535", + "24536", + "24538", + "24539", + "24540", + "24541", + "24543", + "24544", + "24549", + "24550", + "24551", + "24553", + "24554", + "24555", + "24556", + "24557", + "24558", + "24562", + "24563", + "24565", + "24566", + "24569", + "24570", + "24571", + "24572", + "24574", + "24576", + "24577", + "24578", + "24579", + "24580", + "24581", + "24586", + "24588", + "24589", + "24590", + "24592", + "24593", + "24594", + "24595", + "24597", + "24598", + "24599", + "24601", + "24602", + "24603", + "24604", + "24605", + "24606", + "24607", + "24608", + "24609", + "24612", + "24613", + "24614", + "24619", + "24620", + "24622", + "24624", + "24627", + "24628", + "24630", + "24631", + "24634", + "24635", + "24637", + "24639", + "24640", + "24641", + "24646", + "24647", + "24649", + "24651", + "24656", + "24657", + "24658", + "24701", + "24712", + "24714", + "24715", + "24716", + "24719", + "24724", + "24726", + "24729", + "24731", + "24732", + "24733", + "24736", + "24737", + "24738", + "24739", + "24740", + "24747", + "24751", + "24801", + "24808", + "24811", + "24813", + "24815", + "24816", + "24817", + "24818", + "24822", + "24823", + "24826", + "24827", + "24828", + "24829", + "24830", + "24831", + "24834", + "24836", + "24839", + "24842", + "24843", + "24844", + "24845", + "24846", + "24847", + "24848", + "24849", + "24850", + "24851", + "24853", + "24854", + "24855", + "24857", + "24859", + "24860", + "24861", + "24862", + "24866", + "24867", + "24868", + "24869", + "24870", + "24871", + "24872", + "24873", + "24874", + "24878", + "24879", + "24880", + "24881", + "24882", + "24884", + "24887", + "24888", + "24892", + "24894", + "24895", + "24898", + "24901", + "24902", + "24910", + "24915", + "24916", + "24918", + "24920", + "24924", + "24925", + "24927", + "24931", + "24934", + "24935", + "24938", + "24941", + "24943", + "24944", + "24945", + "24946", + "24951", + "24954", + "24957", + "24961", + "24962", + "24963", + "24966", + "24970", + "24974", + "24976", + "24977", + "24981", + "24983", + "24984", + "24985", + "24986", + "24991", + "24993", + "25002", + "25003", + "25005", + "25007", + "25008", + "25009", + "25011", + "25015", + "25019", + "25021", + "25022", + "25024", + "25025", + "25026", + "25028", + "25030", + "25031", + "25033", + "25035", + "25036", + "25039", + "25040", + "25043", + "25044", + "25045", + "25047", + "25048", + "25049", + "25051", + "25053", + "25054", + "25057", + "25059", + "25060", + "25061", + "25062", + "25063", + "25064", + "25067", + "25070", + "25071", + "25075", + "25076", + "25079", + "25081", + "25082", + "25083", + "25085", + "25086", + "25088", + "25090", + "25093", + "25102", + "25103", + "25106", + "25107", + "25108", + "25109", + "25110", + "25111", + "25112", + "25113", + "25114", + "25115", + "25118", + "25119", + "25121", + "25123", + "25124", + "25125", + "25126", + "25130", + "25132", + "25133", + "25134", + "25136", + "25139", + "25140", + "25141", + "25142", + "25143", + "25148", + "25149", + "25152", + "25154", + "25156", + "25159", + "25160", + "25161", + "25162", + "25164", + "25165", + "25168", + "25169", + "25173", + "25174", + "25177", + "25180", + "25181", + "25183", + "25185", + "25186", + "25187", + "25193", + "25201", + "25202", + "25203", + "25204", + "25205", + "25206", + "25208", + "25209", + "25211", + "25213", + "25214", + "25231", + "25234", + "25235", + "25239", + "25241", + "25243", + "25244", + "25245", + "25247", + "25248", + "25251", + "25252", + "25253", + "25259", + "25260", + "25261", + "25262", + "25264", + "25265", + "25266", + "25267", + "25268", + "25270", + "25271", + "25275", + "25276", + "25285", + "25286", + "25287", + "25301", + "25302", + "25303", + "25304", + "25305", + "25306", + "25309", + "25311", + "25312", + "25313", + "25314", + "25315", + "25317", + "25320", + "25321", + "25322", + "25323", + "25324", + "25325", + "25326", + "25327", + "25328", + "25329", + "25330", + "25331", + "25332", + "25333", + "25334", + "25335", + "25336", + "25337", + "25338", + "25339", + "25350", + "25356", + "25357", + "25358", + "25360", + "25361", + "25362", + "25364", + "25365", + "25375", + "25387", + "25389", + "25392", + "25396", + "25401", + "25402", + "25403", + "25404", + "25405", + "25410", + "25411", + "25413", + "25414", + "25419", + "25420", + "25421", + "25422", + "25423", + "25425", + "25427", + "25428", + "25429", + "25430", + "25431", + "25432", + "25434", + "25437", + "25438", + "25440", + "25441", + "25442", + "25443", + "25444", + "25446", + "25501", + "25502", + "25503", + "25504", + "25505", + "25506", + "25507", + "25508", + "25510", + "25511", + "25512", + "25514", + "25515", + "25517", + "25520", + "25521", + "25523", + "25524", + "25526", + "25529", + "25530", + "25534", + "25535", + "25537", + "25540", + "25541", + "25544", + "25545", + "25547", + "25550", + "25555", + "25557", + "25559", + "25560", + "25562", + "25564", + "25565", + "25567", + "25569", + "25570", + "25571", + "25572", + "25573", + "25601", + "25606", + "25607", + "25608", + "25611", + "25612", + "25614", + "25617", + "25621", + "25624", + "25625", + "25628", + "25630", + "25632", + "25634", + "25635", + "25637", + "25638", + "25639", + "25644", + "25646", + "25647", + "25649", + "25650", + "25651", + "25652", + "25653", + "25654", + "25661", + "25665", + "25666", + "25667", + "25669", + "25670", + "25671", + "25672", + "25674", + "25676", + "25678", + "25685", + "25686", + "25688", + "25690", + "25691", + "25692", + "25696", + "25699", + "25701", + "25702", + "25703", + "25704", + "25705", + "25706", + "25707", + "25708", + "25709", + "25710", + "25711", + "25712", + "25713", + "25714", + "25715", + "25716", + "25717", + "25718", + "25719", + "25720", + "25721", + "25722", + "25723", + "25724", + "25725", + "25726", + "25727", + "25728", + "25729", + "25755", + "25770", + "25771", + "25772", + "25773", + "25774", + "25775", + "25776", + "25777", + "25778", + "25779", + "25801", + "25802", + "25810", + "25811", + "25812", + "25813", + "25817", + "25818", + "25820", + "25823", + "25825", + "25826", + "25827", + "25831", + "25832", + "25833", + "25836", + "25837", + "25839", + "25840", + "25841", + "25843", + "25844", + "25845", + "25846", + "25848", + "25849", + "25851", + "25853", + "25854", + "25855", + "25857", + "25860", + "25862", + "25864", + "25865", + "25866", + "25868", + "25870", + "25871", + "25873", + "25875", + "25876", + "25878", + "25879", + "25880", + "25882", + "25888", + "25901", + "25902", + "25904", + "25906", + "25907", + "25908", + "25909", + "25911", + "25913", + "25915", + "25916", + "25917", + "25918", + "25919", + "25920", + "25921", + "25922", + "25926", + "25927", + "25928", + "25932", + "25936", + "25938", + "25942", + "25943", + "25951", + "25958", + "25962", + "25965", + "25966", + "25969", + "25971", + "25972", + "25976", + "25977", + "25978", + "25979", + "25981", + "25984", + "25985", + "25986", + "25989", + "26003", + "26030", + "26031", + "26032", + "26033", + "26034", + "26035", + "26036", + "26037", + "26038", + "26039", + "26040", + "26041", + "26047", + "26050", + "26055", + "26056", + "26058", + "26059", + "26060", + "26062", + "26070", + "26074", + "26075", + "26101", + "26102", + "26103", + "26104", + "26105", + "26106", + "26120", + "26121", + "26133", + "26134", + "26136", + "26137", + "26138", + "26141", + "26142", + "26143", + "26146", + "26147", + "26148", + "26149", + "26150", + "26151", + "26152", + "26155", + "26159", + "26160", + "26161", + "26162", + "26164", + "26167", + "26169", + "26170", + "26175", + "26178", + "26180", + "26181", + "26184", + "26187", + "26201", + "26202", + "26203", + "26205", + "26206", + "26208", + "26209", + "26210", + "26215", + "26217", + "26218", + "26219", + "26222", + "26224", + "26228", + "26229", + "26230", + "26234", + "26236", + "26237", + "26238", + "26241", + "26250", + "26253", + "26254", + "26257", + "26259", + "26260", + "26261", + "26263", + "26264", + "26266", + "26267", + "26268", + "26269", + "26270", + "26271", + "26273", + "26275", + "26276", + "26278", + "26280", + "26282", + "26283", + "26285", + "26287", + "26288", + "26289", + "26291", + "26292", + "26293", + "26294", + "26296", + "26298", + "26301", + "26302", + "26306", + "26320", + "26321", + "26323", + "26325", + "26327", + "26330", + "26335", + "26337", + "26338", + "26339", + "26342", + "26343", + "26346", + "26347", + "26348", + "26349", + "26351", + "26354", + "26361", + "26362", + "26366", + "26369", + "26372", + "26374", + "26376", + "26377", + "26378", + "26384", + "26385", + "26386", + "26404", + "26405", + "26408", + "26410", + "26411", + "26412", + "26415", + "26416", + "26419", + "26421", + "26422", + "26424", + "26425", + "26426", + "26430", + "26431", + "26434", + "26435", + "26436", + "26437", + "26438", + "26440", + "26443", + "26444", + "26447", + "26448", + "26451", + "26452", + "26456", + "26461", + "26463", + "26501", + "26502", + "26504", + "26505", + "26506", + "26507", + "26508", + "26519", + "26520", + "26521", + "26524", + "26525", + "26527", + "26531", + "26534", + "26537", + "26541", + "26542", + "26543", + "26544", + "26546", + "26547", + "26554", + "26555", + "26559", + "26560", + "26561", + "26562", + "26563", + "26566", + "26568", + "26570", + "26571", + "26572", + "26574", + "26575", + "26576", + "26578", + "26581", + "26582", + "26585", + "26586", + "26587", + "26588", + "26590", + "26591", + "26601", + "26610", + "26611", + "26615", + "26617", + "26619", + "26621", + "26623", + "26624", + "26627", + "26629", + "26631", + "26636", + "26638", + "26651", + "26656", + "26660", + "26662", + "26667", + "26671", + "26675", + "26676", + "26678", + "26679", + "26680", + "26681", + "26684", + "26690", + "26691", + "26704", + "26705", + "26707", + "26710", + "26711", + "26714", + "26716", + "26717", + "26719", + "26720", + "26722", + "26726", + "26731", + "26739", + "26743", + "26750", + "26753", + "26755", + "26757", + "26761", + "26763", + "26764", + "26767", + "26801", + "26802", + "26804", + "26807", + "26808", + "26810", + "26812", + "26814", + "26815", + "26817", + "26818", + "26823", + "26833", + "26836", + "26838", + "26845", + "26847", + "26851", + "26852", + "26855", + "26865", + "26866", + "26884", + "26886", + "27006", + "27007", + "27009", + "27010", + "27011", + "27012", + "27013", + "27014", + "27016", + "27017", + "27018", + "27019", + "27020", + "27021", + "27022", + "27023", + "27024", + "27025", + "27027", + "27028", + "27030", + "27031", + "27040", + "27041", + "27042", + "27043", + "27045", + "27046", + "27047", + "27048", + "27049", + "27050", + "27051", + "27052", + "27053", + "27054", + "27055", + "27094", + "27098", + "27099", + "27101", + "27102", + "27103", + "27104", + "27105", + "27106", + "27107", + "27108", + "27109", + "27110", + "27111", + "27113", + "27114", + "27115", + "27116", + "27117", + "27120", + "27127", + "27130", + "27150", + "27151", + "27152", + "27155", + "27156", + "27157", + "27198", + "27199", + "27201", + "27202", + "27203", + "27204", + "27205", + "27207", + "27208", + "27209", + "27212", + "27213", + "27214", + "27215", + "27216", + "27217", + "27220", + "27228", + "27229", + "27230", + "27231", + "27233", + "27235", + "27237", + "27239", + "27242", + "27243", + "27244", + "27247", + "27248", + "27249", + "27252", + "27253", + "27256", + "27258", + "27259", + "27260", + "27261", + "27262", + "27263", + "27264", + "27265", + "27268", + "27278", + "27281", + "27282", + "27283", + "27284", + "27285", + "27288", + "27289", + "27291", + "27292", + "27293", + "27294", + "27295", + "27298", + "27299", + "27301", + "27302", + "27305", + "27306", + "27310", + "27311", + "27312", + "27313", + "27314", + "27315", + "27316", + "27317", + "27320", + "27321", + "27322", + "27323", + "27325", + "27326", + "27330", + "27331", + "27332", + "27340", + "27341", + "27342", + "27343", + "27344", + "27349", + "27350", + "27351", + "27355", + "27356", + "27357", + "27358", + "27359", + "27360", + "27361", + "27370", + "27371", + "27373", + "27374", + "27375", + "27376", + "27377", + "27379", + "27395", + "27401", + "27402", + "27403", + "27404", + "27405", + "27406", + "27407", + "27408", + "27409", + "27410", + "27411", + "27412", + "27413", + "27415", + "27416", + "27417", + "27419", + "27420", + "27425", + "27427", + "27429", + "27435", + "27438", + "27455", + "27480", + "27495", + "27497", + "27498", + "27499", + "27501", + "27502", + "27503", + "27504", + "27505", + "27506", + "27507", + "27508", + "27509", + "27510", + "27511", + "27512", + "27513", + "27514", + "27515", + "27516", + "27517", + "27518", + "27519", + "27520", + "27521", + "27522", + "27523", + "27524", + "27525", + "27526", + "27527", + "27528", + "27529", + "27530", + "27531", + "27532", + "27533", + "27534", + "27536", + "27537", + "27539", + "27540", + "27541", + "27542", + "27543", + "27544", + "27545", + "27546", + "27549", + "27551", + "27552", + "27553", + "27555", + "27556", + "27557", + "27559", + "27560", + "27562", + "27563", + "27564", + "27565", + "27568", + "27569", + "27570", + "27571", + "27572", + "27573", + "27574", + "27576", + "27577", + "27581", + "27582", + "27583", + "27584", + "27586", + "27587", + "27588", + "27589", + "27591", + "27592", + "27593", + "27594", + "27596", + "27597", + "27599", + "27601", + "27602", + "27603", + "27604", + "27605", + "27606", + "27607", + "27608", + "27609", + "27610", + "27611", + "27612", + "27613", + "27614", + "27615", + "27616", + "27617", + "27619", + "27620", + "27621", + "27622", + "27623", + "27624", + "27625", + "27626", + "27627", + "27628", + "27629", + "27634", + "27635", + "27636", + "27640", + "27650", + "27656", + "27658", + "27661", + "27668", + "27675", + "27676", + "27690", + "27695", + "27697", + "27698", + "27699", + "27701", + "27702", + "27703", + "27704", + "27705", + "27706", + "27707", + "27708", + "27709", + "27710", + "27711", + "27712", + "27713", + "27715", + "27717", + "27722", + "27801", + "27802", + "27803", + "27804", + "27805", + "27806", + "27807", + "27808", + "27809", + "27810", + "27811", + "27812", + "27813", + "27814", + "27815", + "27816", + "27817", + "27818", + "27819", + "27820", + "27821", + "27822", + "27823", + "27824", + "27825", + "27826", + "27827", + "27828", + "27829", + "27830", + "27831", + "27832", + "27833", + "27834", + "27835", + "27836", + "27837", + "27839", + "27840", + "27841", + "27842", + "27843", + "27844", + "27845", + "27846", + "27847", + "27849", + "27850", + "27851", + "27852", + "27853", + "27854", + "27855", + "27856", + "27857", + "27858", + "27860", + "27861", + "27862", + "27863", + "27864", + "27865", + "27866", + "27867", + "27868", + "27869", + "27870", + "27871", + "27872", + "27873", + "27874", + "27875", + "27876", + "27877", + "27878", + "27879", + "27880", + "27881", + "27882", + "27883", + "27884", + "27885", + "27886", + "27887", + "27888", + "27889", + "27890", + "27891", + "27892", + "27893", + "27894", + "27895", + "27896", + "27897", + "27906", + "27907", + "27909", + "27910", + "27915", + "27916", + "27917", + "27919", + "27920", + "27921", + "27922", + "27923", + "27924", + "27925", + "27926", + "27927", + "27928", + "27929", + "27930", + "27932", + "27935", + "27936", + "27937", + "27938", + "27939", + "27941", + "27942", + "27943", + "27944", + "27946", + "27947", + "27948", + "27949", + "27950", + "27953", + "27954", + "27956", + "27957", + "27958", + "27959", + "27960", + "27962", + "27964", + "27965", + "27966", + "27967", + "27968", + "27969", + "27970", + "27972", + "27973", + "27974", + "27976", + "27978", + "27979", + "27980", + "27981", + "27982", + "27983", + "27985", + "27986", + "28001", + "28002", + "28006", + "28007", + "28009", + "28010", + "28012", + "28016", + "28017", + "28018", + "28019", + "28020", + "28021", + "28023", + "28024", + "28025", + "28026", + "28027", + "28031", + "28032", + "28033", + "28034", + "28035", + "28036", + "28037", + "28038", + "28039", + "28040", + "28041", + "28042", + "28043", + "28052", + "28053", + "28054", + "28055", + "28056", + "28070", + "28071", + "28072", + "28073", + "28074", + "28075", + "28076", + "28077", + "28078", + "28079", + "28080", + "28081", + "28082", + "28083", + "28086", + "28088", + "28089", + "28090", + "28091", + "28092", + "28093", + "28097", + "28098", + "28101", + "28102", + "28103", + "28104", + "28105", + "28106", + "28107", + "28108", + "28109", + "28110", + "28111", + "28112", + "28114", + "28115", + "28117", + "28119", + "28120", + "28123", + "28124", + "28125", + "28126", + "28127", + "28128", + "28129", + "28130", + "28133", + "28134", + "28135", + "28136", + "28137", + "28138", + "28139", + "28144", + "28145", + "28146", + "28147", + "28150", + "28151", + "28152", + "28159", + "28160", + "28163", + "28164", + "28166", + "28167", + "28168", + "28169", + "28170", + "28173", + "28174", + "28201", + "28202", + "28203", + "28204", + "28205", + "28206", + "28207", + "28208", + "28209", + "28210", + "28211", + "28212", + "28213", + "28214", + "28215", + "28216", + "28217", + "28218", + "28219", + "28220", + "28221", + "28222", + "28223", + "28224", + "28226", + "28227", + "28228", + "28229", + "28230", + "28231", + "28232", + "28233", + "28234", + "28235", + "28236", + "28237", + "28241", + "28242", + "28243", + "28244", + "28246", + "28247", + "28250", + "28253", + "28254", + "28255", + "28256", + "28258", + "28260", + "28262", + "28263", + "28265", + "28266", + "28269", + "28270", + "28271", + "28272", + "28273", + "28274", + "28275", + "28277", + "28278", + "28280", + "28281", + "28282", + "28284", + "28285", + "28287", + "28288", + "28289", + "28290", + "28296", + "28297", + "28299", + "28301", + "28302", + "28303", + "28304", + "28305", + "28306", + "28307", + "28308", + "28309", + "28310", + "28311", + "28312", + "28314", + "28315", + "28318", + "28319", + "28320", + "28323", + "28325", + "28326", + "28327", + "28328", + "28329", + "28330", + "28331", + "28332", + "28333", + "28334", + "28335", + "28337", + "28338", + "28339", + "28340", + "28341", + "28342", + "28343", + "28344", + "28345", + "28347", + "28348", + "28349", + "28350", + "28351", + "28352", + "28353", + "28355", + "28356", + "28357", + "28358", + "28359", + "28360", + "28362", + "28363", + "28364", + "28365", + "28366", + "28367", + "28368", + "28369", + "28370", + "28371", + "28372", + "28373", + "28374", + "28375", + "28376", + "28377", + "28378", + "28379", + "28380", + "28382", + "28383", + "28384", + "28385", + "28386", + "28387", + "28388", + "28390", + "28391", + "28392", + "28393", + "28394", + "28395", + "28396", + "28398", + "28399", + "28401", + "28402", + "28403", + "28404", + "28405", + "28406", + "28407", + "28408", + "28409", + "28410", + "28411", + "28412", + "28420", + "28421", + "28422", + "28423", + "28424", + "28425", + "28428", + "28429", + "28430", + "28431", + "28432", + "28433", + "28434", + "28435", + "28436", + "28438", + "28439", + "28441", + "28442", + "28443", + "28444", + "28445", + "28447", + "28448", + "28449", + "28450", + "28451", + "28452", + "28453", + "28454", + "28455", + "28456", + "28457", + "28458", + "28459", + "28460", + "28461", + "28462", + "28463", + "28464", + "28465", + "28466", + "28467", + "28468", + "28469", + "28470", + "28472", + "28478", + "28479", + "28480", + "28501", + "28502", + "28503", + "28504", + "28508", + "28509", + "28510", + "28511", + "28512", + "28513", + "28515", + "28516", + "28518", + "28519", + "28520", + "28521", + "28522", + "28523", + "28524", + "28525", + "28526", + "28527", + "28528", + "28529", + "28530", + "28531", + "28532", + "28533", + "28537", + "28538", + "28539", + "28540", + "28541", + "28542", + "28543", + "28544", + "28545", + "28546", + "28547", + "28551", + "28552", + "28553", + "28554", + "28555", + "28556", + "28557", + "28560", + "28561", + "28562", + "28563", + "28564", + "28570", + "28571", + "28572", + "28573", + "28574", + "28575", + "28577", + "28578", + "28579", + "28580", + "28581", + "28582", + "28583", + "28584", + "28585", + "28586", + "28587", + "28589", + "28590", + "28594", + "28601", + "28602", + "28603", + "28604", + "28605", + "28606", + "28607", + "28608", + "28609", + "28610", + "28611", + "28612", + "28613", + "28615", + "28616", + "28617", + "28618", + "28619", + "28621", + "28622", + "28623", + "28624", + "28625", + "28626", + "28627", + "28628", + "28629", + "28630", + "28631", + "28633", + "28634", + "28635", + "28636", + "28637", + "28638", + "28640", + "28641", + "28642", + "28643", + "28644", + "28645", + "28646", + "28647", + "28649", + "28650", + "28651", + "28652", + "28653", + "28654", + "28655", + "28656", + "28657", + "28658", + "28659", + "28660", + "28661", + "28662", + "28663", + "28664", + "28665", + "28666", + "28667", + "28668", + "28669", + "28670", + "28671", + "28672", + "28673", + "28674", + "28675", + "28676", + "28677", + "28678", + "28679", + "28680", + "28681", + "28682", + "28683", + "28684", + "28685", + "28687", + "28688", + "28689", + "28690", + "28691", + "28692", + "28693", + "28694", + "28697", + "28698", + "28699", + "28701", + "28702", + "28704", + "28705", + "28707", + "28708", + "28709", + "28710", + "28711", + "28712", + "28713", + "28714", + "28715", + "28716", + "28717", + "28718", + "28719", + "28720", + "28721", + "28722", + "28723", + "28724", + "28725", + "28726", + "28727", + "28728", + "28729", + "28730", + "28731", + "28732", + "28733", + "28734", + "28735", + "28736", + "28737", + "28738", + "28739", + "28740", + "28741", + "28742", + "28743", + "28744", + "28745", + "28746", + "28747", + "28748", + "28749", + "28750", + "28751", + "28752", + "28753", + "28754", + "28755", + "28756", + "28757", + "28758", + "28759", + "28760", + "28761", + "28762", + "28763", + "28765", + "28766", + "28768", + "28770", + "28771", + "28772", + "28773", + "28774", + "28775", + "28776", + "28777", + "28778", + "28779", + "28781", + "28782", + "28783", + "28784", + "28785", + "28786", + "28787", + "28788", + "28789", + "28790", + "28791", + "28792", + "28793", + "28801", + "28802", + "28803", + "28804", + "28805", + "28806", + "28810", + "28813", + "28814", + "28815", + "28816", + "28901", + "28902", + "28903", + "28904", + "28905", + "28906", + "28909", + "29001", + "29002", + "29003", + "29006", + "29009", + "29010", + "29014", + "29015", + "29016", + "29018", + "29020", + "29021", + "29030", + "29031", + "29032", + "29033", + "29036", + "29037", + "29038", + "29039", + "29040", + "29041", + "29042", + "29044", + "29045", + "29046", + "29047", + "29048", + "29051", + "29052", + "29053", + "29054", + "29055", + "29056", + "29058", + "29059", + "29061", + "29062", + "29063", + "29065", + "29067", + "29069", + "29070", + "29071", + "29072", + "29073", + "29074", + "29075", + "29078", + "29079", + "29080", + "29081", + "29082", + "29101", + "29102", + "29104", + "29105", + "29107", + "29108", + "29111", + "29112", + "29113", + "29114", + "29115", + "29116", + "29117", + "29118", + "29122", + "29123", + "29125", + "29126", + "29127", + "29128", + "29129", + "29130", + "29132", + "29133", + "29135", + "29137", + "29138", + "29142", + "29143", + "29145", + "29146", + "29147", + "29148", + "29150", + "29151", + "29152", + "29153", + "29154", + "29160", + "29161", + "29162", + "29163", + "29164", + "29166", + "29168", + "29169", + "29170", + "29171", + "29172", + "29175", + "29177", + "29178", + "29180", + "29201", + "29202", + "29203", + "29204", + "29205", + "29206", + "29207", + "29208", + "29209", + "29210", + "29211", + "29212", + "29214", + "29215", + "29216", + "29217", + "29218", + "29219", + "29220", + "29221", + "29222", + "29223", + "29224", + "29225", + "29226", + "29227", + "29228", + "29229", + "29230", + "29240", + "29250", + "29260", + "29290", + "29292", + "29301", + "29302", + "29303", + "29304", + "29305", + "29306", + "29307", + "29316", + "29318", + "29319", + "29320", + "29321", + "29322", + "29323", + "29324", + "29325", + "29329", + "29330", + "29331", + "29332", + "29333", + "29334", + "29335", + "29336", + "29338", + "29340", + "29341", + "29342", + "29346", + "29348", + "29349", + "29351", + "29353", + "29355", + "29356", + "29360", + "29364", + "29365", + "29368", + "29369", + "29370", + "29372", + "29373", + "29374", + "29375", + "29376", + "29377", + "29378", + "29379", + "29384", + "29385", + "29386", + "29388", + "29390", + "29391", + "29395", + "29401", + "29402", + "29403", + "29404", + "29405", + "29406", + "29407", + "29409", + "29410", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "51450", + "33265", + "33266", + "33269", + "33280", + "33283", + "33296", + "33299", + "33301", + "33302", + "33303", + "33304", + "33305", + "33306", + "33307", + "33308", + "33309", + "33310", + "33311", + "33312", + "33313", + "33314", + "33315", + "33316", + "33317", + "33318", + "33319", + "33320", + "33321", + "33322", + "33323", + "33324", + "33325", + "33326", + "33327", + "33328", + "33329", + "33330", + "33331", + "33332", + "33334", + "33335", + "33336", + "33337", + "33338", + "33339", + "33340", + "33345", + "33346", + "33348", + "33349", + "33351", + "33355", + "33359", + "33388", + "33394", + "33401", + "33402", + "33403", + "33404", + "33405", + "33406", + "33407", + "33408", + "33409", + "33410", + "33411", + "33412", + "33413", + "33414", + "33415", + "33416", + "33417", + "33418", + "33419", + "33420", + "33421", + "33422", + "33424", + "33425", + "33426", + "33427", + "33428", + "33429", + "33430", + "33431", + "33432", + "33433", + "33434", + "33435", + "33436", + "33437", + "33438", + "33439", + "33440", + "33441", + "33442", + "33443", + "33444", + "33445", + "33446", + "33447", + "33448", + "33449", + "33454", + "33455", + "33458", + "33459", + "33460", + "33461", + "33462", + "33463", + "33464", + "33465", + "33466", + "33467", + "33468", + "33469", + "33470", + "33471", + "33472", + "33473", + "33474", + "33475", + "33476", + "33477", + "33478", + "33480", + "33481", + "33482", + "33483", + "33484", + "33486", + "33487", + "33488", + "33493", + "33496", + "33497", + "33498", + "33499", + "33503", + "33508", + "33509", + "33510", + "33511", + "33513", + "33514", + "33521", + "33523", + "33524", + "33525", + "33526", + "33527", + "33530", + "33534", + "33537", + "33538", + "33539", + "33540", + "33541", + "33542", + "33543", + "33544", + "33545", + "33547", + "33548", + "33549", + "33550", + "33556", + "33558", + "33559", + "33563", + "33564", + "33565", + "33566", + "33567", + "33568", + "33569", + "33570", + "33571", + "33572", + "33573", + "33574", + "33575", + "33576", + "33578", + "33579", + "33583", + "33584", + "33585", + "33586", + "33587", + "33592", + "33593", + "33594", + "33595", + "33596", + "33597", + "33598", + "33601", + "33602", + "33603", + "33604", + "33605", + "33606", + "33607", + "33608", + "33609", + "33610", + "33611", + "33612", + "33613", + "33614", + "33615", + "33616", + "33617", + "33618", + "33619", + "33620", + "33621", + "33622", + "33623", + "33624", + "33625", + "33626", + "33629", + "33630", + "33631", + "33633", + "33634", + "33635", + "33637", + "33646", + "33647", + "33650", + "33651", + "33655", + "33660", + "33661", + "33662", + "33663", + "33664", + "33672", + "33673", + "33674", + "33675", + "33677", + "33679", + "33680", + "33681", + "33682", + "33684", + "33685", + "33686", + "33687", + "33688", + "33689", + "33690", + "33694", + "33701", + "33702", + "33703", + "33704", + "33705", + "33706", + "33707", + "33708", + "33709", + "33710", + "33711", + "33712", + "33713", + "33714", + "33715", + "33716", + "33729", + "33730", + "33731", + "33732", + "33733", + "33734", + "33736", + "33737", + "33738", + "33740", + "33741", + "33742", + "33743", + "33744", + "33747", + "33755", + "33756", + "33757", + "33758", + "33759", + "33760", + "33761", + "33762", + "33763", + "33764", + "33765", + "33766", + "33767", + "33769", + "33770", + "33771", + "33772", + "33773", + "33774", + "33775", + "33776", + "33777", + "33778", + "33779", + "33780", + "33781", + "33782", + "33784", + "33785", + "33786", + "33801", + "33802", + "33803", + "33804", + "33805", + "33806", + "33807", + "33809", + "33810", + "33811", + "33812", + "33813", + "33815", + "33820", + "33823", + "33825", + "33826", + "33827", + "33830", + "33831", + "33834", + "33835", + "33836", + "33837", + "33838", + "33839", + "33840", + "33841", + "33843", + "33844", + "33845", + "33846", + "33847", + "33848", + "33849", + "33850", + "33851", + "33852", + "33853", + "33854", + "33855", + "33856", + "33857", + "33858", + "33859", + "33860", + "33862", + "33863", + "33865", + "33867", + "33868", + "33870", + "33871", + "33872", + "33873", + "33875", + "33876", + "33877", + "33880", + "33881", + "33882", + "33883", + "33884", + "33885", + "33888", + "33890", + "33896", + "33897", + "33898", + "33900", + "33901", + "33902", + "33903", + "33904", + "33905", + "33906", + "33907", + "33908", + "33909", + "33910", + "33911", + "33912", + "33913", + "33914", + "33915", + "33916", + "33917", + "33918", + "33919", + "33920", + "33921", + "33922", + "33924", + "33927", + "33928", + "33929", + "33930", + "33931", + "33932", + "33935", + "33936", + "33938", + "33944", + "33945", + "33946", + "33947", + "33948", + "33949", + "33950", + "33951", + "33952", + "33953", + "33954", + "33955", + "33956", + "33957", + "33960", + "33965", + "33966", + "33967", + "33970", + "33971", + "33972", + "33973", + "33974", + "33975", + "33976", + "33980", + "33981", + "33982", + "33983", + "33990", + "33991", + "33993", + "33994", + "34001", + "34002", + "34004", + "34006", + "34007", + "34008", + "34009", + "34010", + "34011", + "34020", + "34021", + "34022", + "34023", + "34024", + "34025", + "34030", + "34031", + "34032", + "34033", + "34034", + "34035", + "34036", + "34037", + "34038", + "34039", + "34041", + "34042", + "34043", + "34044", + "34050", + "34051", + "34052", + "34053", + "34054", + "34055", + "34058", + "34060", + "34066", + "34067", + "34068", + "34069", + "34071", + "34076", + "34078", + "34079", + "34080", + "34081", + "34082", + "34083", + "34084", + "34085", + "34086", + "34087", + "34088", + "34089", + "34090", + "34091", + "34092", + "34093", + "34094", + "34095", + "34096", + "34098", + "34099", + "34101", + "34102", + "34103", + "34104", + "34105", + "34106", + "34107", + "34108", + "34109", + "34110", + "34112", + "34113", + "34114", + "34116", + "34117", + "34119", + "34120", + "34133", + "34134", + "34135", + "34136", + "34137", + "34138", + "34139", + "34140", + "34141", + "34142", + "34143", + "34145", + "34146", + "34201", + "34202", + "34203", + "34204", + "34205", + "34206", + "34207", + "34208", + "34209", + "34210", + "34211", + "34212", + "34215", + "34216", + "34217", + "34218", + "34219", + "34220", + "34221", + "34222", + "34223", + "34224", + "34228", + "34229", + "34230", + "34231", + "34232", + "34233", + "34234", + "34235", + "34236", + "34237", + "34238", + "34239", + "34240", + "34241", + "34242", + "34243", + "34249", + "34250", + "34251", + "34260", + "34264", + "34265", + "34266", + "34267", + "34268", + "34269", + "34270", + "34272", + "34274", + "34275", + "34276", + "34277", + "34278", + "34280", + "34281", + "34282", + "34284", + "34285", + "34286", + "34287", + "34288", + "34289", + "34290", + "34291", + "34292", + "34293", + "34295", + "34420", + "34421", + "34423", + "34428", + "34429", + "34430", + "34431", + "34432", + "34433", + "34434", + "34436", + "34441", + "34442", + "34445", + "34446", + "34447", + "34448", + "34449", + "34450", + "34451", + "34452", + "34453", + "34460", + "34461", + "34464", + "34465", + "34470", + "34471", + "34472", + "34473", + "34474", + "34475", + "34476", + "34477", + "34478", + "34479", + "34480", + "34481", + "34482", + "34483", + "34484", + "34487", + "34488", + "34489", + "34491", + "34492", + "34498", + "34601", + "34602", + "34603", + "34604", + "34605", + "34606", + "34607", + "34608", + "34609", + "34610", + "34611", + "34613", + "34614", + "34636", + "34637", + "34638", + "34639", + "34652", + "34653", + "34654", + "34655", + "34656", + "34660", + "34661", + "34667", + "34668", + "34669", + "34673", + "34674", + "34677", + "34679", + "34680", + "34681", + "34682", + "34683", + "34684", + "34685", + "34688", + "34689", + "34690", + "34691", + "34692", + "34695", + "34697", + "34698", + "34705", + "34711", + "34712", + "34713", + "34714", + "34715", + "34729", + "34731", + "34734", + "34736", + "34737", + "34739", + "34740", + "34741", + "34742", + "34743", + "34744", + "34745", + "34746", + "34747", + "34748", + "34749", + "34753", + "34755", + "34756", + "34758", + "34759", + "34760", + "34761", + "34762", + "34769", + "34770", + "34771", + "34772", + "34773", + "34777", + "34778", + "34785", + "34786", + "34787", + "34788", + "34789", + "34797", + "34945", + "34946", + "34947", + "34948", + "34949", + "34950", + "34951", + "34952", + "34953", + "34954", + "34956", + "34957", + "34958", + "34972", + "34973", + "34974", + "34979", + "34981", + "34982", + "34983", + "34984", + "34985", + "34986", + "34987", + "34988", + "34990", + "34991", + "34992", + "34994", + "34995", + "34996", + "34997", + "35004", + "35005", + "35006", + "35007", + "35010", + "35011", + "35013", + "35014", + "35015", + "35016", + "35019", + "35020", + "35021", + "35022", + "35023", + "35031", + "35032", + "35033", + "35034", + "35035", + "35036", + "35038", + "35040", + "35041", + "35042", + "35043", + "35044", + "35045", + "35046", + "35048", + "35049", + "35051", + "35052", + "35053", + "35054", + "35055", + "35056", + "35057", + "35058", + "35060", + "35061", + "35062", + "35063", + "35064", + "35068", + "35070", + "35071", + "35072", + "35073", + "35074", + "35077", + "35078", + "35079", + "35080", + "35082", + "35083", + "35085", + "35087", + "35089", + "35091", + "35094", + "35096", + "35097", + "35098", + "35111", + "35112", + "35114", + "35115", + "35116", + "35117", + "35118", + "35119", + "35120", + "35121", + "35123", + "35124", + "35125", + "35126", + "35127", + "35128", + "35130", + "35131", + "35133", + "35135", + "35136", + "35137", + "35139", + "35142", + "35143", + "35144", + "35146", + "35147", + "35148", + "35149", + "35150", + "35151", + "35160", + "35161", + "35171", + "35172", + "35173", + "35175", + "35176", + "35178", + "35179", + "35180", + "35181", + "35182", + "35183", + "35184", + "35185", + "35186", + "35187", + "35188", + "35201", + "35202", + "35203", + "35204", + "35205", + "35206", + "35207", + "35208", + "35209", + "35210", + "35211", + "35212", + "35213", + "35214", + "35215", + "35216", + "35217", + "35218", + "35219", + "35220", + "35221", + "35222", + "35223", + "35224", + "35225", + "35226", + "35228", + "35229", + "35230", + "35231", + "35232", + "35233", + "35234", + "35235", + "35236", + "35237", + "35238", + "35240", + "35242", + "35243", + "35244", + "35245", + "35246", + "35249", + "35253", + "35254", + "35255", + "35259", + "35260", + "35261", + "35263", + "35266", + "35270", + "35277", + "35278", + "35279", + "35280", + "35281", + "35282", + "35283", + "35285", + "35286", + "35287", + "35288", + "35289", + "35290", + "35291", + "35292", + "35293", + "35294", + "35295", + "35296", + "35297", + "35298", + "35299", + "35401", + "35402", + "35403", + "35404", + "35405", + "35406", + "35407", + "35440", + "35441", + "35442", + "35443", + "35444", + "35446", + "35447", + "35448", + "35449", + "35452", + "35453", + "35456", + "35457", + "35458", + "35459", + "35460", + "35461", + "35462", + "35463", + "35464", + "35466", + "35468", + "35469", + "35470", + "35471", + "35473", + "35474", + "35475", + "35476", + "35477", + "35478", + "35480", + "35481", + "35482", + "35485", + "35486", + "35487", + "35490", + "35491", + "35501", + "35502", + "35503", + "35504", + "35540", + "35541", + "35542", + "35543", + "35544", + "35545", + "35546", + "35548", + "35549", + "35550", + "35551", + "35552", + "35553", + "35554", + "35555", + "35559", + "35560", + "35563", + "35564", + "35565", + "35570", + "35571", + "35572", + "35573", + "35574", + "35575", + "35576", + "35577", + "35578", + "35579", + "35580", + "35581", + "35582", + "35584", + "35585", + "35586", + "35587", + "35592", + "35593", + "35594", + "35601", + "35602", + "35603", + "35609", + "35610", + "35611", + "35612", + "35613", + "35614", + "35615", + "35616", + "35617", + "35618", + "35619", + "35620", + "35621", + "35622", + "35630", + "35631", + "35632", + "35633", + "35634", + "35640", + "35643", + "35645", + "35646", + "35647", + "35648", + "35649", + "35650", + "35651", + "35652", + "35653", + "35654", + "35660", + "35661", + "35662", + "35670", + "35671", + "35672", + "35673", + "35674", + "35677", + "35699", + "35739", + "35740", + "35741", + "35742", + "35744", + "35745", + "35746", + "35747", + "35748", + "35749", + "35750", + "35751", + "35752", + "35754", + "35755", + "35756", + "35757", + "35758", + "35759", + "35760", + "35761", + "35762", + "35763", + "35764", + "35765", + "35766", + "35767", + "35768", + "35769", + "35771", + "35772", + "35773", + "35774", + "35775", + "35776", + "35801", + "35802", + "35803", + "35804", + "35805", + "35806", + "35807", + "35808", + "35809", + "35810", + "35811", + "35812", + "35813", + "35814", + "35815", + "35816", + "35824", + "35893", + "35894", + "35895", + "35896", + "35897", + "35898", + "35899", + "35901", + "35902", + "35903", + "35904", + "35905", + "35906", + "35907", + "35950", + "35951", + "35952", + "35953", + "35954", + "35956", + "35957", + "35958", + "35959", + "35960", + "35961", + "35962", + "35963", + "35964", + "35966", + "35967", + "35968", + "35971", + "35972", + "35973", + "35974", + "35975", + "35976", + "35978", + "35979", + "35980", + "35981", + "35983", + "35984", + "35986", + "35987", + "35988", + "35989", + "35990", + "36003", + "36005", + "36006", + "36008", + "36009", + "36010", + "36013", + "36015", + "36016", + "36017", + "36020", + "36022", + "36023", + "36024", + "36025", + "36026", + "36027", + "36028", + "36029", + "36030", + "36031", + "36032", + "36033", + "36034", + "36035", + "36036", + "36037", + "36038", + "36039", + "36040", + "36041", + "36042", + "36043", + "36045", + "36046", + "36047", + "36048", + "36049", + "36051", + "36052", + "36053", + "36054", + "36057", + "36061", + "36062", + "36064", + "36065", + "36066", + "36067", + "36068", + "36069", + "36071", + "36072", + "36075", + "36078", + "36079", + "36080", + "36081", + "36082", + "36083", + "36087", + "36088", + "36089", + "36091", + "36092", + "36093", + "36101", + "36102", + "36103", + "36104", + "36105", + "36106", + "36107", + "36108", + "36109", + "36110", + "36111", + "36112", + "36113", + "36114", + "36115", + "36116", + "36117", + "36118", + "36119", + "36120", + "36121", + "36123", + "36124", + "36125", + "36130", + "36131", + "36132", + "36133", + "36134", + "36135", + "36140", + "36141", + "36142", + "36177", + "36191", + "36201", + "36202", + "36203", + "36204", + "36205", + "36206", + "36207", + "36210", + "36250", + "36251", + "36253", + "36254", + "36255", + "36256", + "36257", + "36258", + "36260", + "36261", + "36262", + "36263", + "36264", + "36265", + "36266", + "36267", + "36268", + "36269", + "36271", + "36272", + "36273", + "36274", + "36275", + "36276", + "36277", + "36278", + "36279", + "36280", + "36301", + "36302", + "36303", + "36304", + "36305", + "36310", + "36311", + "36312", + "36313", + "36314", + "36316", + "36317", + "36318", + "36319", + "36320", + "36321", + "36322", + "36323", + "36330", + "36331", + "36340", + "36343", + "36344", + "36345", + "36346", + "36349", + "36350", + "36351", + "36352", + "36353", + "36360", + "36361", + "36362", + "36370", + "36371", + "36373", + "36374", + "36375", + "36376", + "36401", + "36420", + "36421", + "36425", + "36426", + "36427", + "36429", + "36432", + "36435", + "36436", + "36439", + "36441", + "36442", + "36444", + "36445", + "36446", + "36449", + "36451", + "36453", + "36454", + "36455", + "36456", + "36457", + "36458", + "36460", + "36461", + "36462", + "36467", + "36470", + "36471", + "36473", + "36474", + "36475", + "36476", + "36477", + "36480", + "36481", + "36482", + "36483", + "36501", + "36502", + "36503", + "36504", + "36505", + "36507", + "36509", + "36511", + "36512", + "36513", + "36515", + "36518", + "36521", + "36522", + "36523", + "36524", + "36525", + "36526", + "36527", + "36528", + "36529", + "36530", + "36532", + "36533", + "36535", + "36536", + "36538", + "36539", + "36540", + "36541", + "36542", + "36543", + "36544", + "36545", + "36547", + "36548", + "36549", + "36550", + "36551", + "36553", + "36555", + "36556", + "36558", + "36559", + "36560", + "36561", + "36562", + "36564", + "36567", + "36568", + "36569", + "36571", + "36572", + "36574", + "36575", + "36576", + "36577", + "36578", + "36579", + "36580", + "36581", + "36582", + "36583", + "36584", + "36585", + "36587", + "36590", + "36601", + "36602", + "36603", + "36604", + "36605", + "36606", + "36607", + "36608", + "36609", + "36610", + "36611", + "36612", + "36613", + "36615", + "36616", + "36617", + "36618", + "36619", + "36621", + "36622", + "36625", + "36628", + "36630", + "36633", + "36640", + "36641", + "36644", + "36652", + "36660", + "36663", + "36670", + "36671", + "36675", + "36685", + "36688", + "36689", + "36690", + "36691", + "36693", + "36695", + "36701", + "36702", + "36703", + "36720", + "36721", + "36722", + "36723", + "36726", + "36727", + "36728", + "36732", + "36736", + "36738", + "36740", + "36741", + "36742", + "36744", + "36745", + "36748", + "36749", + "36750", + "36751", + "36752", + "36753", + "36754", + "36756", + "36758", + "36759", + "36761", + "36762", + "36763", + "36764", + "36765", + "36766", + "36767", + "36768", + "36769", + "36773", + "36775", + "36776", + "36782", + "36783", + "36784", + "36785", + "36786", + "36790", + "36792", + "36793", + "36801", + "36802", + "36803", + "36804", + "36830", + "36831", + "36832", + "36849", + "36850", + "36851", + "36852", + "36853", + "36854", + "36855", + "36856", + "36858", + "36859", + "36860", + "36861", + "36862", + "36863", + "36865", + "36866", + "36867", + "36868", + "36869", + "36870", + "36871", + "36872", + "36874", + "36875", + "36877", + "36879", + "36901", + "36904", + "36907", + "36908", + "36910", + "36912", + "36913", + "36915", + "36916", + "36919", + "36921", + "36922", + "36925", + "37010", + "37011", + "37012", + "37013", + "37014", + "37015", + "37016", + "37018", + "37019", + "37020", + "37022", + "37023", + "37024", + "37025", + "37026", + "37027", + "37028", + "37029", + "37030", + "37031", + "37032", + "37033", + "37034", + "37035", + "37036", + "37037", + "37040", + "37041", + "37042", + "37043", + "37044", + "37046", + "37047", + "37048", + "37049", + "37050", + "37051", + "37052", + "37055", + "37056", + "37057", + "37058", + "37059", + "37060", + "37061", + "37062", + "37063", + "37064", + "37065", + "37066", + "37067", + "37068", + "37069", + "37070", + "37071", + "37072", + "37073", + "37074", + "37075", + "37076", + "37077", + "37078", + "37079", + "37080", + "37082", + "37083", + "37085", + "37086", + "37087", + "37088", + "37089", + "37090", + "37091", + "37095", + "37096", + "37097", + "37098", + "37101", + "37110", + "37111", + "37115", + "37116", + "37118", + "37119", + "37121", + "37122", + "37127", + "37128", + "37129", + "37130", + "37131", + "37132", + "37133", + "37134", + "37135", + "37136", + "37137", + "37138", + "37140", + "37141", + "37142", + "37143", + "37144", + "37145", + "37146", + "37148", + "37149", + "37150", + "37151", + "37152", + "37153", + "37160", + "37161", + "37162", + "37165", + "37166", + "37167", + "37171", + "37172", + "37174", + "37175", + "37178", + "37179", + "37180", + "37181", + "37183", + "37184", + "37185", + "37186", + "37187", + "37188", + "37189", + "37190", + "37191", + "37201", + "37202", + "37203", + "37204", + "37205", + "37206", + "37207", + "37208", + "37209", + "37210", + "37211", + "37212", + "37213", + "37214", + "37215", + "37216", + "37217", + "37218", + "37219", + "37220", + "37221", + "37222", + "37224", + "37227", + "37228", + "37229", + "37230", + "37232", + "37234", + "37235", + "37236", + "37237", + "37238", + "37240", + "37241", + "37242", + "37243", + "37244", + "37245", + "37246", + "37247", + "37248", + "37249", + "37250", + "37301", + "37302", + "37303", + "37304", + "37305", + "37306", + "37307", + "37308", + "37309", + "37310", + "37311", + "37312", + "37313", + "37314", + "37315", + "37316", + "37317", + "37318", + "37320", + "37321", + "37322", + "37323", + "37324", + "37325", + "37326", + "37327", + "37328", + "37329", + "37330", + "37331", + "37332", + "37333", + "37334", + "37335", + "37336", + "37337", + "37338", + "37339", + "37340", + "37341", + "37342", + "37343", + "37345", + "37347", + "37348", + "37349", + "37350", + "37351", + "37352", + "37353", + "37354", + "37355", + "37356", + "37357", + "37359", + "37360", + "37361", + "37362", + "37363", + "37364", + "37365", + "37366", + "37367", + "37369", + "37370", + "37371", + "37373", + "37374", + "37375", + "37376", + "37377", + "37378", + "37379", + "37380", + "37381", + "37382", + "37383", + "37384", + "37385", + "37387", + "37388", + "37389", + "37391", + "37394", + "37396", + "37397", + "37398", + "37401", + "37402", + "37403", + "37404", + "37405", + "37406", + "37407", + "37408", + "37409", + "37410", + "37411", + "37412", + "37414", + "37415", + "37416", + "37419", + "37421", + "37422", + "37424", + "37450", + "37501", + "37544", + "37601", + "37602", + "37604", + "37605", + "37614", + "37615", + "37616", + "37617", + "37618", + "37620", + "37621", + "37625", + "37640", + "37641", + "37642", + "37643", + "37644", + "37645", + "37650", + "37656", + "37657", + "37658", + "37659", + "37660", + "37662", + "37663", + "37664", + "37665", + "37669", + "37680", + "37681", + "37682", + "37683", + "37684", + "37686", + "37687", + "37688", + "37690", + "37691", + "37692", + "37694", + "37699", + "37701", + "37705", + "37707", + "37708", + "37709", + "37710", + "37711", + "37713", + "37714", + "37715", + "37716", + "37717", + "37719", + "37721", + "37722", + "37723", + "37724", + "37725", + "37726", + "37727", + "37729", + "37730", + "37731", + "37732", + "37733", + "37737", + "37738", + "37742", + "37743", + "37744", + "37745", + "37748", + "37752", + "37753", + "37754", + "37755", + "37756", + "37757", + "37760", + "37762", + "37763", + "37764", + "37765", + "37766", + "37769", + "37770", + "37771", + "37772", + "37773", + "37774", + "37777", + "37778", + "37779", + "37801", + "37802", + "37803", + "37804", + "37806", + "37807", + "37809", + "37810", + "37811", + "37813", + "37814", + "37815", + "37816", + "37818", + "37819", + "37820", + "37821", + "37822", + "37824", + "37825", + "37826", + "37828", + "37829", + "37830", + "37831", + "37840", + "37841", + "37843", + "37845", + "37846", + "37847", + "37848", + "37849", + "37851", + "37852", + "37853", + "37854", + "37857", + "37860", + "37861", + "37862", + "37863", + "37864", + "37865", + "37866", + "37867", + "37868", + "37869", + "37870", + "37871", + "37872", + "37873", + "37874", + "37876", + "37877", + "37878", + "37879", + "37880", + "37881", + "37882", + "37885", + "37886", + "37887", + "37888", + "37890", + "37891", + "37892", + "37901", + "37902", + "37909", + "37912", + "37914", + "37915", + "37916", + "37917", + "37918", + "37919", + "37920", + "37921", + "37922", + "37923", + "37924", + "37927", + "37928", + "37929", + "37930", + "37931", + "37932", + "37933", + "37934", + "37938", + "37939", + "37940", + "37950", + "37990", + "37995", + "37996", + "37997", + "37998", + "38001", + "38002", + "38004", + "38006", + "38007", + "38008", + "38010", + "38011", + "38012", + "38014", + "38015", + "38016", + "38017", + "38018", + "38019", + "38021", + "38023", + "38024", + "38025", + "38027", + "38028", + "38029", + "38030", + "38034", + "38036", + "38037", + "38039", + "38040", + "38041", + "38042", + "38044", + "38045", + "38046", + "38047", + "38048", + "38049", + "38050", + "38052", + "38053", + "38054", + "38055", + "38057", + "38058", + "38059", + "38060", + "38061", + "38063", + "38066", + "38067", + "38068", + "38069", + "38070", + "38071", + "38075", + "38076", + "38077", + "38079", + "38080", + "38083", + "38088", + "38101", + "38103", + "38104", + "38105", + "38106", + "38107", + "38108", + "38109", + "38110", + "38111", + "38112", + "38113", + "38114", + "38115", + "38116", + "38117", + "38118", + "38119", + "38120", + "38122", + "38124", + "38125", + "38126", + "38127", + "38128", + "38130", + "38131", + "38132", + "38133", + "38134", + "38135", + "38136", + "38137", + "38138", + "38139", + "38141", + "38142", + "38145", + "38147", + "38148", + "38150", + "38151", + "38152", + "38157", + "38159", + "38161", + "38163", + "38165", + "38166", + "38167", + "38168", + "38173", + "38174", + "38175", + "38177", + "38181", + "38182", + "38183", + "38184", + "38186", + "38187", + "38188", + "38190", + "38193", + "38194", + "38197", + "38201", + "38220", + "38221", + "38222", + "38223", + "38224", + "38225", + "38226", + "38227", + "38229", + "38230", + "38231", + "38232", + "38233", + "38235", + "38236", + "38237", + "38238", + "38240", + "38241", + "38242", + "38251", + "38253", + "38254", + "38255", + "38256", + "38257", + "38258", + "38259", + "38260", + "38261", + "38271", + "38281", + "38301", + "38302", + "38303", + "38305", + "38308", + "38310", + "38311", + "38313", + "38314", + "38315", + "38316", + "38317", + "38318", + "38320", + "38321", + "38324", + "38326", + "38327", + "38328", + "38329", + "38330", + "38331", + "38332", + "38333", + "38334", + "38336", + "38337", + "38338", + "38339", + "38340", + "38341", + "38342", + "38343", + "38344", + "38345", + "38346", + "38347", + "38348", + "38351", + "38352", + "38355", + "38356", + "38357", + "38358", + "38359", + "38361", + "38362", + "38363", + "38365", + "38366", + "38367", + "38368", + "38369", + "38370", + "38371", + "38372", + "38374", + "38375", + "38376", + "38377", + "38378", + "38379", + "38380", + "38381", + "38382", + "38387", + "38388", + "38389", + "38390", + "38391", + "38392", + "38393", + "38401", + "38402", + "38425", + "38449", + "38450", + "38451", + "38452", + "38453", + "38454", + "38455", + "38456", + "38457", + "38459", + "38460", + "38461", + "38462", + "38463", + "38464", + "38468", + "38469", + "38471", + "38472", + "38473", + "38474", + "38475", + "38476", + "38477", + "38478", + "38481", + "38482", + "38483", + "38485", + "38486", + "38487", + "38488", + "38501", + "38502", + "38503", + "38504", + "38505", + "38506", + "38541", + "38542", + "38543", + "38544", + "38545", + "38547", + "38548", + "38549", + "38550", + "38551", + "38552", + "38553", + "38554", + "38555", + "38556", + "38557", + "38558", + "38559", + "38560", + "38562", + "38563", + "38564", + "38565", + "38567", + "38568", + "38569", + "38570", + "38571", + "38572", + "38573", + "38574", + "38575", + "38577", + "38578", + "38579", + "38580", + "38581", + "38582", + "38583", + "38585", + "38587", + "38588", + "38589", + "38601", + "38602", + "38603", + "38606", + "38609", + "38610", + "38611", + "38614", + "38617", + "38618", + "38619", + "38620", + "38621", + "38622", + "38623", + "38625", + "38626", + "38627", + "38628", + "38629", + "38630", + "38631", + "38632", + "38633", + "38634", + "38635", + "38637", + "38638", + "38639", + "38641", + "38642", + "38643", + "38644", + "38645", + "38646", + "38647", + "38649", + "38650", + "38651", + "38652", + "38654", + "38655", + "38658", + "38659", + "38661", + "38663", + "38664", + "38665", + "38666", + "38668", + "38669", + "38670", + "38671", + "38672", + "38673", + "38674", + "38675", + "38676", + "38677", + "38679", + "38680", + "38683", + "38685", + "38686", + "38701", + "38702", + "38703", + "38704", + "38720", + "38721", + "38722", + "38723", + "38725", + "38726", + "38730", + "38731", + "38732", + "38733", + "38736", + "38737", + "38738", + "38739", + "38740", + "38744", + "38745", + "38746", + "38748", + "38749", + "38751", + "38753", + "38754", + "38756", + "38759", + "38760", + "38761", + "38762", + "38764", + "38765", + "38767", + "38768", + "38769", + "38771", + "38772", + "38773", + "38774", + "38776", + "38778", + "38780", + "38781", + "38782", + "38801", + "38802", + "38803", + "38804", + "38820", + "38821", + "38824", + "38825", + "38826", + "38827", + "38828", + "38829", + "38833", + "38834", + "38835", + "38838", + "38839", + "38841", + "38843", + "38844", + "38846", + "38847", + "38848", + "38849", + "38850", + "38851", + "38852", + "38855", + "38856", + "38857", + "38858", + "38859", + "38860", + "38862", + "38863", + "38864", + "38865", + "38866", + "38868", + "38869", + "38870", + "38871", + "38873", + "38874", + "38875", + "38876", + "38877", + "38878", + "38879", + "38880", + "38901", + "38902", + "38913", + "38914", + "38915", + "38916", + "38917", + "38920", + "38921", + "38922", + "38923", + "38924", + "38925", + "38926", + "38927", + "38928", + "38929", + "38930", + "38935", + "38940", + "38941", + "38943", + "38944", + "38945", + "38946", + "38947", + "38948", + "38949", + "38950", + "38951", + "38952", + "38953", + "38954", + "38955", + "38957", + "38958", + "38959", + "38960", + "38961", + "38962", + "38963", + "38964", + "38965", + "38966", + "38967", + "39038", + "39039", + "39040", + "39041", + "39042", + "39043", + "39044", + "39045", + "39046", + "39047", + "39051", + "39054", + "39056", + "39057", + "39058", + "39059", + "39060", + "39061", + "39062", + "39063", + "39066", + "39067", + "39069", + "39071", + "39072", + "39073", + "39074", + "39077", + "39078", + "39079", + "39080", + "39081", + "39082", + "39083", + "39086", + "39087", + "39088", + "39090", + "39092", + "39094", + "39095", + "39096", + "39097", + "39098", + "39107", + "39108", + "39109", + "39110", + "39111", + "39113", + "39114", + "39115", + "39116", + "39117", + "39119", + "39120", + "39121", + "39122", + "39130", + "39140", + "39144", + "39145", + "39146", + "39148", + "39149", + "39150", + "39151", + "39152", + "39153", + "39154", + "39156", + "39157", + "39158", + "39159", + "39160", + "39161", + "39162", + "39163", + "39165", + "39166", + "39167", + "39168", + "39169", + "39170", + "39171", + "39173", + "39174", + "39175", + "39176", + "39177", + "39179", + "39180", + "39181", + "39182", + "39183", + "39189", + "39190", + "39191", + "39192", + "39193", + "39194", + "39201", + "39202", + "39203", + "39204", + "39205", + "39206", + "39207", + "39208", + "39209", + "39210", + "39211", + "39212", + "39213", + "39215", + "39216", + "39217", + "39218", + "39225", + "39232", + "39235", + "39236", + "39250", + "39269", + "39271", + "39272", + "39282", + "39283", + "39284", + "39286", + "39288", + "39289", + "39296", + "39298", + "39301", + "39302", + "39303", + "39304", + "39305", + "39307", + "39309", + "39320", + "39322", + "39323", + "39324", + "39325", + "39326", + "39327", + "39328", + "39330", + "39332", + "39335", + "39336", + "39337", + "39338", + "39339", + "39341", + "39342", + "39345", + "39346", + "39347", + "39348", + "39350", + "39352", + "39354", + "39355", + "39356", + "39358", + "39359", + "39360", + "39361", + "39362", + "39363", + "39364", + "39365", + "39366", + "39367", + "39401", + "39402", + "39403", + "39404", + "39406", + "39407", + "39421", + "39422", + "39423", + "39425", + "39426", + "39427", + "39428", + "39429", + "39436", + "39437", + "39439", + "39440", + "39441", + "39442", + "39443", + "39451", + "39452", + "39455", + "39456", + "39457", + "39459", + "39460", + "39461", + "39462", + "39463", + "39464", + "39465", + "39466", + "39470", + "39474", + "39475", + "39476", + "39477", + "39478", + "39479", + "39480", + "39481", + "39482", + "39483", + "39501", + "39502", + "39503", + "39505", + "39506", + "39507", + "39520", + "39521", + "39522", + "39525", + "39529", + "39530", + "39531", + "39532", + "39533", + "39534", + "39535", + "39540", + "39552", + "39553", + "39555", + "39556", + "39558", + "39560", + "39561", + "39562", + "39563", + "39564", + "39565", + "39566", + "39567", + "39568", + "39569", + "39571", + "39572", + "39573", + "39574", + "39576", + "39577", + "39581", + "39595", + "39601", + "39602", + "39603", + "39629", + "39630", + "39631", + "39632", + "39633", + "39635", + "39638", + "39641", + "39643", + "39645", + "39647", + "39648", + "39649", + "39652", + "39653", + "39654", + "39656", + "39657", + "39661", + "39662", + "39663", + "39664", + "39665", + "39666", + "39667", + "39668", + "39669", + "39701", + "39702", + "39703", + "39704", + "39705", + "39710", + "39730", + "39735", + "39736", + "39737", + "39739", + "39740", + "39741", + "39743", + "39744", + "39745", + "39746", + "39747", + "39750", + "39751", + "39752", + "39753", + "39754", + "39755", + "39756", + "39759", + "39760", + "39762", + "39766", + "39767", + "39769", + "39771", + "39772", + "39773", + "39776", + "39813", + "39815", + "39817", + "39818", + "39819", + "39823", + "39824", + "39825", + "39826", + "39827", + "39828", + "39829", + "39832", + "39834", + "39836", + "39837", + "39840", + "39841", + "39842", + "39845", + "39846", + "39851", + "39852", + "39854", + "39859", + "39861", + "39862", + "39866", + "39867", + "39870", + "39877", + "39885", + "39886", + "39897", + "39901", + "40003", + "40004", + "40006", + "40007", + "40008", + "40009", + "40010", + "40011", + "40012", + "40013", + "40014", + "40018", + "40019", + "40020", + "40022", + "40023", + "40025", + "40026", + "40027", + "40031", + "40032", + "40033", + "40036", + "40037", + "40040", + "40041", + "40045", + "40046", + "40047", + "40048", + "40049", + "40050", + "40051", + "40052", + "40055", + "40056", + "40057", + "40058", + "40059", + "40060", + "40061", + "40062", + "40063", + "40065", + "40066", + "40067", + "40068", + "40069", + "40070", + "40071", + "40075", + "40076", + "40077", + "40078", + "40104", + "40107", + "40108", + "40109", + "40110", + "40111", + "40115", + "40117", + "40118", + "40119", + "40121", + "40122", + "40129", + "40140", + "40142", + "40143", + "40144", + "40145", + "40146", + "40150", + "40152", + "40153", + "40155", + "40157", + "40159", + "40160", + "40161", + "40162", + "40165", + "40166", + "40170", + "40171", + "40175", + "40176", + "40177", + "40178", + "40201", + "40202", + "40203", + "40204", + "40205", + "40206", + "40207", + "40208", + "40209", + "40210", + "40211", + "40212", + "40213", + "40214", + "40215", + "40216", + "40217", + "40218", + "40219", + "40220", + "40221", + "40222", + "40223", + "40224", + "40225", + "40228", + "40229", + "40231", + "40232", + "40233", + "40241", + "40242", + "40243", + "40245", + "40250", + "40251", + "40252", + "40253", + "40255", + "40256", + "40257", + "40258", + "40259", + "40261", + "40266", + "40268", + "40269", + "40270", + "40272", + "40280", + "40281", + "40282", + "40283", + "40285", + "40287", + "40289", + "40290", + "40291", + "40292", + "40293", + "40294", + "40295", + "40296", + "40297", + "40298", + "40299", + "40310", + "40311", + "40312", + "40313", + "40316", + "40317", + "40319", + "40322", + "40324", + "40328", + "40330", + "40334", + "40336", + "40337", + "40339", + "40340", + "40342", + "40346", + "40347", + "40348", + "40350", + "40351", + "40353", + "40355", + "40356", + "40357", + "40358", + "40359", + "40360", + "40361", + "40362", + "40363", + "40366", + "40370", + "40371", + "40372", + "40374", + "40376", + "40379", + "40380", + "40383", + "40384", + "40385", + "40386", + "40387", + "40390", + "40391", + "40392", + "40402", + "40403", + "40404", + "40405", + "40409", + "40410", + "40419", + "40422", + "40423", + "40434", + "40437", + "40440", + "40442", + "40444", + "40445", + "40446", + "40447", + "40448", + "40452", + "40456", + "40460", + "40461", + "40464", + "40468", + "40472", + "40473", + "40475", + "40476", + "40481", + "40484", + "40486", + "40488", + "40489", + "40492", + "40495", + "40502", + "40503", + "40504", + "40505", + "40506", + "40507", + "40508", + "40509", + "40510", + "40511", + "40512", + "40513", + "40514", + "40515", + "40516", + "40517", + "40522", + "40523", + "40524", + "40526", + "40533", + "40536", + "40544", + "40546", + "40550", + "40555", + "40574", + "40575", + "40576", + "40577", + "40578", + "40579", + "40580", + "40581", + "40582", + "40583", + "40588", + "40591", + "40598", + "40601", + "40602", + "40603", + "40604", + "40618", + "40619", + "40620", + "40621", + "40622", + "40701", + "40702", + "40724", + "40729", + "40730", + "40734", + "40737", + "40740", + "40741", + "40742", + "40743", + "40744", + "40745", + "40750", + "40754", + "40755", + "40759", + "40763", + "40769", + "40771", + "40801", + "40803", + "40806", + "40807", + "40808", + "40810", + "40813", + "40815", + "40816", + "40818", + "40819", + "40820", + "40823", + "40824", + "40826", + "40827", + "40828", + "40829", + "40830", + "40831", + "40840", + "40843", + "40844", + "40845", + "40847", + "40849", + "40854", + "40855", + "40856", + "40858", + "40862", + "40863", + "40865", + "40868", + "40870", + "40873", + "40874", + "40902", + "40903", + "40906", + "40913", + "40914", + "40915", + "40921", + "40923", + "40927", + "40930", + "40931", + "40932", + "40935", + "40939", + "40940", + "40941", + "40943", + "40944", + "40946", + "40949", + "40951", + "40953", + "40955", + "40958", + "40962", + "40964", + "40965", + "40972", + "40977", + "40979", + "40981", + "40982", + "40983", + "40988", + "40995", + "40997", + "40999", + "41001", + "41002", + "41003", + "41004", + "41005", + "41006", + "41007", + "41008", + "41010", + "41011", + "41012", + "41014", + "41015", + "41016", + "41017", + "41018", + "41019", + "41021", + "41022", + "41025", + "41030", + "41031", + "41033", + "41034", + "41035", + "41037", + "41039", + "41040", + "41041", + "41042", + "41043", + "41044", + "41045", + "41046", + "41048", + "41049", + "41051", + "41052", + "41053", + "41054", + "41055", + "41056", + "41059", + "41061", + "41062", + "41063", + "41064", + "41065", + "41071", + "41072", + "41073", + "41074", + "41075", + "41076", + "41080", + "41081", + "41083", + "41085", + "41086", + "41091", + "41092", + "41093", + "41094", + "41095", + "41096", + "41097", + "41098", + "41099", + "41101", + "41102", + "41105", + "41114", + "41121", + "41124", + "41128", + "41129", + "41132", + "41135", + "41139", + "41141", + "41142", + "41143", + "41144", + "41146", + "41149", + "41159", + "41160", + "41164", + "41166", + "41168", + "41169", + "41171", + "41173", + "41174", + "41175", + "41179", + "41180", + "41181", + "41183", + "41189", + "41201", + "41203", + "41204", + "41214", + "41216", + "41219", + "41222", + "41224", + "41226", + "41230", + "41231", + "41232", + "41234", + "41238", + "41240", + "41250", + "41254", + "41255", + "41256", + "41257", + "41260", + "41262", + "41263", + "41264", + "41265", + "41267", + "41268", + "41271", + "41274", + "41301", + "41307", + "41310", + "41311", + "41313", + "41314", + "41317", + "41332", + "41333", + "41338", + "41339", + "41347", + "41348", + "41351", + "41352", + "41360", + "41362", + "41364", + "41365", + "41366", + "41367", + "41368", + "41385", + "41386", + "41390", + "41397", + "41408", + "41413", + "41421", + "41425", + "41426", + "41433", + "41451", + "41459", + "41464", + "41465", + "41472", + "41477", + "41501", + "41502", + "41503", + "41512", + "41513", + "41514", + "41517", + "41519", + "41520", + "41522", + "41524", + "41526", + "41527", + "41528", + "41531", + "41534", + "41535", + "41537", + "41538", + "41539", + "41540", + "41542", + "41543", + "41544", + "41547", + "41548", + "41549", + "41553", + "41554", + "41555", + "41557", + "41558", + "41559", + "41560", + "41561", + "41562", + "41563", + "41564", + "41566", + "41567", + "41568", + "41571", + "41572", + "41601", + "41602", + "41603", + "41604", + "41605", + "41606", + "41607", + "41612", + "41615", + "41616", + "41619", + "41621", + "41622", + "41630", + "41631", + "41632", + "41635", + "41636", + "41640", + "41642", + "41643", + "41645", + "41647", + "41649", + "41650", + "41651", + "41653", + "41655", + "41659", + "41660", + "41663", + "41666", + "41667", + "41669", + "41701", + "41702", + "41712", + "41713", + "41714", + "41719", + "41721", + "41722", + "41723", + "41725", + "41727", + "41729", + "41731", + "41735", + "41736", + "41739", + "41740", + "41743", + "41745", + "41746", + "41747", + "41749", + "41751", + "41754", + "41759", + "41760", + "41762", + "41763", + "41764", + "41766", + "41772", + "41773", + "41774", + "41775", + "41776", + "41777", + "41778", + "41804", + "41810", + "41812", + "41815", + "41817", + "41819", + "41821", + "41822", + "41824", + "41825", + "41826", + "41828", + "41831", + "41832", + "41833", + "41834", + "41835", + "41836", + "41837", + "41838", + "41839", + "41840", + "41843", + "41844", + "41845", + "41847", + "41848", + "41849", + "41855", + "41858", + "41859", + "41861", + "41862", + "42001", + "42002", + "42003", + "42020", + "42021", + "42022", + "42023", + "42024", + "42025", + "42027", + "42028", + "42029", + "42031", + "42032", + "42033", + "42035", + "42036", + "42037", + "42038", + "42039", + "42040", + "42041", + "42044", + "42045", + "42047", + "42048", + "42049", + "42050", + "42051", + "42053", + "42054", + "42055", + "42056", + "42058", + "42060", + "42061", + "42063", + "42064", + "42066", + "42069", + "42070", + "42071", + "42076", + "42078", + "42079", + "42081", + "42082", + "42083", + "42084", + "42085", + "42086", + "42087", + "42088", + "42101", + "42102", + "42103", + "42104", + "42120", + "42122", + "42123", + "42124", + "42127", + "42128", + "42129", + "42130", + "42131", + "42133", + "42134", + "42135", + "42140", + "42141", + "42142", + "42151", + "42152", + "42153", + "42154", + "42156", + "42157", + "42159", + "42160", + "42163", + "42164", + "42166", + "42167", + "42170", + "42171", + "42201", + "42202", + "42204", + "42206", + "42207", + "42210", + "42211", + "42214", + "42215", + "42216", + "42217", + "42219", + "42220", + "42221", + "42223", + "42232", + "42234", + "42236", + "42240", + "42241", + "42252", + "42254", + "42256", + "42259", + "42261", + "42262", + "42265", + "42266", + "42273", + "42274", + "42275", + "42276", + "42280", + "42283", + "42285", + "42286", + "42287", + "42288", + "42301", + "42302", + "42303", + "42304", + "42320", + "42321", + "42322", + "42323", + "42324", + "42325", + "42326", + "42327", + "42328", + "42330", + "42332", + "42333", + "42334", + "42337", + "42338", + "42339", + "42343", + "42344", + "42345", + "42347", + "42348", + "42349", + "42350", + "42351", + "42352", + "42354", + "42355", + "42356", + "42361", + "42364", + "42366", + "42367", + "42368", + "42369", + "42370", + "42371", + "42372", + "42374", + "42375", + "42376", + "42377", + "42378", + "42402", + "42403", + "42404", + "42406", + "42408", + "42409", + "42410", + "42411", + "42413", + "42419", + "42420", + "42431", + "42436", + "42437", + "42440", + "42441", + "42442", + "42444", + "42445", + "42450", + "42451", + "42452", + "42453", + "42455", + "42456", + "42457", + "42458", + "42459", + "42460", + "42461", + "42462", + "42463", + "42464", + "42501", + "42502", + "42503", + "42516", + "42518", + "42519", + "42528", + "42533", + "42539", + "42541", + "42544", + "42553", + "42558", + "42564", + "42565", + "42566", + "42567", + "42602", + "42603", + "42629", + "42631", + "42633", + "42634", + "42635", + "42638", + "42642", + "42647", + "42649", + "42653", + "42701", + "42702", + "42712", + "42713", + "42715", + "42716", + "42717", + "42718", + "42719", + "42720", + "42721", + "42722", + "42724", + "42726", + "42728", + "42729", + "42731", + "42732", + "42733", + "42740", + "42741", + "42742", + "42743", + "42746", + "42748", + "42749", + "42753", + "42754", + "42755", + "42757", + "42758", + "42759", + "42762", + "42764", + "42765", + "42776", + "42782", + "42784", + "42788", + "43001", + "43002", + "43003", + "43004", + "43005", + "43006", + "43007", + "43008", + "43009", + "43010", + "43011", + "43013", + "43014", + "43015", + "43016", + "43017", + "43018", + "43019", + "43021", + "43022", + "43023", + "43025", + "43026", + "43027", + "43028", + "43029", + "43030", + "43031", + "43032", + "43033", + "43035", + "43036", + "43037", + "43040", + "43041", + "43044", + "43045", + "43046", + "43047", + "43048", + "43050", + "43054", + "43055", + "43056", + "43058", + "43060", + "43061", + "43062", + "43064", + "43065", + "43066", + "43067", + "43068", + "43069", + "43070", + "43071", + "43072", + "43073", + "43074", + "43076", + "43077", + "43078", + "43080", + "43081", + "43082", + "43083", + "43084", + "43085", + "43086", + "43093", + "43098", + "43101", + "43102", + "43103", + "43105", + "43106", + "43107", + "43109", + "43110", + "43111", + "43112", + "43113", + "43115", + "43116", + "43117", + "43119", + "43123", + "43125", + "43126", + "43127", + "43128", + "43130", + "43135", + "43136", + "43137", + "43138", + "43140", + "43142", + "43143", + "43144", + "43145", + "43146", + "43147", + "43148", + "43149", + "43150", + "43151", + "43152", + "43153", + "43154", + "43155", + "43156", + "43157", + "43158", + "43160", + "43162", + "43163", + "43164", + "43194", + "43195", + "43196", + "43198", + "43199", + "43201", + "43202", + "43203", + "43204", + "43205", + "43206", + "43207", + "43209", + "43210", + "43211", + "43212", + "43213", + "43214", + "43215", + "43216", + "43217", + "43218", + "43219", + "43220", + "43221", + "43222", + "43223", + "43224", + "43226", + "43227", + "43228", + "43229", + "43230", + "43231", + "43232", + "43234", + "43235", + "43236", + "43240", + "43251", + "43260", + "43265", + "43266", + "43268", + "43270", + "43271", + "43272", + "43279", + "43287", + "43291", + "43299", + "43301", + "43302", + "43306", + "43307", + "43310", + "43311", + "43314", + "43315", + "43316", + "43317", + "43318", + "43319", + "43320", + "43321", + "43322", + "43323", + "43324", + "43325", + "43326", + "43330", + "43331", + "43332", + "43333", + "43334", + "43335", + "43336", + "43337", + "43338", + "43340", + "43341", + "43342", + "43343", + "43344", + "43345", + "43346", + "43347", + "43348", + "43349", + "43350", + "43351", + "43356", + "43357", + "43358", + "43359", + "43360", + "43402", + "43403", + "43406", + "43407", + "43408", + "43410", + "43412", + "43413", + "43414", + "43416", + "43420", + "43430", + "43431", + "43432", + "43433", + "43434", + "43435", + "43436", + "43437", + "43438", + "43439", + "43440", + "43441", + "43442", + "43443", + "43445", + "43446", + "43447", + "43449", + "43450", + "43451", + "43452", + "43456", + "43457", + "43458", + "43460", + "43462", + "43463", + "43464", + "43465", + "43466", + "43467", + "43468", + "43469", + "43501", + "43502", + "43504", + "43505", + "43506", + "43510", + "43511", + "43512", + "43515", + "43516", + "43517", + "43518", + "43519", + "43520", + "43521", + "43522", + "43523", + "43524", + "43525", + "43526", + "43527", + "43528", + "43529", + "43530", + "43531", + "43532", + "43533", + "43534", + "43535", + "43536", + "43537", + "43540", + "43541", + "43542", + "43543", + "43545", + "43547", + "43548", + "43549", + "43550", + "43551", + "43552", + "43553", + "43554", + "43555", + "43556", + "43557", + "43558", + "43560", + "43565", + "43566", + "43567", + "43569", + "43570", + "43571", + "43601", + "43603", + "43604", + "43605", + "43606", + "43607", + "43608", + "43609", + "43610", + "43611", + "43612", + "43613", + "43614", + "43615", + "43616", + "43617", + "43618", + "43619", + "43620", + "43623", + "43635", + "43652", + "43654", + "43656", + "43657", + "43659", + "43660", + "43661", + "43666", + "43667", + "43681", + "43682", + "43697", + "43699", + "43701", + "43702", + "43711", + "43713", + "43716", + "43717", + "43718", + "43719", + "43720", + "43721", + "43722", + "43723", + "43724", + "43725", + "43727", + "43728", + "43730", + "43731", + "43732", + "43733", + "43734", + "43735", + "43736", + "43738", + "43739", + "43740", + "43746", + "43747", + "43748", + "43749", + "43750", + "43752", + "43754", + "43755", + "43756", + "43757", + "43758", + "43759", + "43760", + "43761", + "43762", + "43764", + "43766", + "43767", + "43768", + "43771", + "43772", + "43773", + "43777", + "43778", + "43779", + "43780", + "43782", + "43783", + "43786", + "43787", + "43788", + "43789", + "43791", + "43793", + "43802", + "43803", + "43804", + "43805", + "43811", + "43812", + "43821", + "43822", + "43824", + "43828", + "43830", + "43832", + "43836", + "43837", + "43840", + "43842", + "43843", + "43844", + "43845", + "43901", + "43902", + "43903", + "43905", + "43906", + "43907", + "43908", + "43909", + "43910", + "43912", + "43913", + "43914", + "43915", + "43916", + "43917", + "43920", + "43925", + "43926", + "43927", + "43928", + "43930", + "43931", + "43932", + "43933", + "43934", + "43935", + "43937", + "43938", + "43939", + "43940", + "43941", + "43942", + "43943", + "43944", + "43945", + "43946", + "43947", + "43948", + "43950", + "43951", + "43952", + "43953", + "43961", + "43962", + "43963", + "43964", + "43967", + "43968", + "43970", + "43971", + "43972", + "43973", + "43974", + "43976", + "43977", + "43981", + "43983", + "43984", + "43985", + "43986", + "43988", + "44001", + "44003", + "44004", + "44005", + "44010", + "44011", + "44012", + "44017", + "44021", + "44022", + "44023", + "44024", + "44026", + "44028", + "44030", + "44032", + "44033", + "44035", + "44036", + "44039", + "44040", + "44041", + "44044", + "44045", + "44046", + "44047", + "44048", + "44049", + "44050", + "44052", + "44053", + "44054", + "44055", + "44056", + "44057", + "44060", + "44061", + "44062", + "44064", + "44065", + "44067", + "44068", + "44070", + "44072", + "44073", + "44074", + "44076", + "44077", + "44080", + "44081", + "44082", + "44084", + "44085", + "44086", + "44087", + "44088", + "44089", + "44090", + "44092", + "44093", + "44094", + "44095", + "44096", + "44097", + "44099", + "44101", + "44102", + "44103", + "44104", + "44105", + "44106", + "44107", + "44108", + "44109", + "44110", + "44111", + "44112", + "44113", + "44114", + "44115", + "44116", + "44117", + "44118", + "44119", + "44120", + "44121", + "44122", + "44123", + "44124", + "44125", + "44126", + "44127", + "44128", + "44129", + "44130", + "44131", + "44132", + "44133", + "44134", + "44135", + "44136", + "44137", + "44138", + "44139", + "44140", + "44141", + "44142", + "44143", + "44144", + "44145", + "44146", + "44147", + "44149", + "44178", + "44181", + "44185", + "44188", + "44189", + "44190", + "44191", + "44192", + "44193", + "44194", + "44195", + "44197", + "44198", + "44199", + "44201", + "44202", + "44203", + "44210", + "44211", + "44212", + "44214", + "44215", + "44216", + "44217", + "44221", + "44222", + "44223", + "44224", + "44230", + "44231", + "44232", + "44233", + "44234", + "44235", + "44236", + "44237", + "44240", + "44241", + "44242", + "44243", + "44250", + "44251", + "44253", + "44254", + "44255", + "44256", + "44258", + "44260", + "44262", + "44264", + "44265", + "44266", + "44270", + "44272", + "44273", + "44274", + "44275", + "44276", + "44278", + "44280", + "44281", + "44282", + "44285", + "44286", + "44287", + "44288", + "44301", + "44302", + "44303", + "44304", + "44305", + "44306", + "44307", + "44308", + "44309", + "44310", + "44311", + "44312", + "44313", + "44314", + "44315", + "44316", + "44317", + "44319", + "44320", + "44321", + "44322", + "44325", + "44326", + "44328", + "44333", + "44334", + "44372", + "44393", + "44396", + "44398", + "44399", + "44401", + "44402", + "44403", + "44404", + "44405", + "44406", + "44408", + "44410", + "44411", + "44412", + "44413", + "44415", + "44416", + "44417", + "44418", + "44420", + "44422", + "44423", + "44424", + "44425", + "44427", + "44428", + "44429", + "44430", + "44431", + "44432", + "44436", + "44437", + "44438", + "44439", + "44440", + "44441", + "44442", + "44443", + "44444", + "44445", + "44446", + "44449", + "44450", + "44451", + "44452", + "44453", + "44454", + "44455", + "44460", + "44470", + "44471", + "44473", + "44481", + "44482", + "44483", + "44484", + "44485", + "44486", + "44488", + "44490", + "44491", + "44492", + "44493", + "44501", + "44502", + "44503", + "44504", + "44505", + "44506", + "44507", + "44509", + "44510", + "44511", + "44512", + "44513", + "44514", + "44515", + "44555", + "44601", + "44606", + "44607", + "44608", + "44609", + "44610", + "44611", + "44612", + "44613", + "44614", + "44615", + "44617", + "44618", + "44619", + "44620", + "44621", + "44622", + "44624", + "44625", + "44626", + "44627", + "44628", + "44629", + "44630", + "44631", + "44632", + "44633", + "44634", + "44636", + "44637", + "44638", + "44639", + "44640", + "44641", + "44643", + "44644", + "44645", + "44646", + "44647", + "44648", + "44650", + "44651", + "44652", + "44653", + "44654", + "44656", + "44657", + "44659", + "44660", + "44661", + "44662", + "44663", + "44665", + "44666", + "44667", + "44669", + "44670", + "44671", + "44672", + "44675", + "44676", + "44677", + "44678", + "44679", + "44680", + "44681", + "44682", + "44683", + "44685", + "44687", + "44688", + "44689", + "44690", + "44691", + "44693", + "44695", + "44697", + "44699", + "44701", + "44702", + "44703", + "44704", + "44705", + "44706", + "44707", + "44708", + "44709", + "44710", + "44711", + "44714", + "44718", + "44720", + "44721", + "44730", + "44735", + "44750", + "44767", + "44799", + "44802", + "44804", + "44805", + "44807", + "44809", + "44811", + "44813", + "44814", + "44815", + "44816", + "44817", + "44818", + "44820", + "44822", + "44824", + "44825", + "44826", + "44827", + "44828", + "44830", + "44833", + "44836", + "44837", + "44838", + "44839", + "44840", + "44841", + "44842", + "44843", + "44844", + "44845", + "44846", + "44847", + "44848", + "44849", + "44850", + "44851", + "44853", + "44854", + "44855", + "44856", + "44857", + "44859", + "44860", + "44861", + "44862", + "44864", + "44865", + "44866", + "44867", + "44870", + "44871", + "44874", + "44875", + "44878", + "44880", + "44881", + "44882", + "44883", + "44887", + "44888", + "44889", + "44890", + "44901", + "44902", + "44903", + "44904", + "44905", + "44906", + "44907", + "44999", + "45001", + "45002", + "45003", + "45004", + "45005", + "45011", + "45012", + "45013", + "45014", + "45015", + "45018", + "45025", + "45026", + "45030", + "45032", + "45033", + "45034", + "45036", + "45039", + "45040", + "45041", + "45042", + "45043", + "45044", + "45050", + "45051", + "45052", + "45053", + "45054", + "45055", + "45056", + "45061", + "45062", + "45063", + "45064", + "45065", + "45066", + "45067", + "45068", + "45069", + "45070", + "45071", + "45101", + "45102", + "45103", + "45105", + "45106", + "45107", + "45110", + "45111", + "45112", + "45113", + "45114", + "45115", + "45118", + "45119", + "45120", + "45121", + "45122", + "45123", + "45130", + "45131", + "45132", + "45133", + "45135", + "45138", + "45140", + "45142", + "45144", + "45145", + "45146", + "45147", + "45148", + "45150", + "45152", + "45153", + "45154", + "45155", + "45156", + "45157", + "45158", + "45159", + "45160", + "45162", + "45164", + "45166", + "45167", + "45168", + "45169", + "45171", + "45172", + "45174", + "45176", + "45177", + "45201", + "45202", + "45203", + "45204", + "45205", + "45206", + "45207", + "45208", + "45209", + "45211", + "45212", + "45213", + "45214", + "45215", + "45216", + "45217", + "45218", + "45219", + "45220", + "45221", + "45222", + "45223", + "45224", + "45225", + "45226", + "45227", + "45228", + "45229", + "45230", + "45231", + "45232", + "45233", + "45234", + "45235", + "45236", + "45237", + "45238", + "45239", + "45240", + "45241", + "45242", + "45243", + "45244", + "45245", + "45246", + "45247", + "45248", + "45249", + "45250", + "45251", + "45252", + "45253", + "45254", + "45255", + "45258", + "45262", + "45263", + "45264", + "45267", + "45268", + "45269", + "45270", + "45271", + "45273", + "45274", + "45275", + "45277", + "45280", + "45296", + "45298", + "45299", + "45301", + "45302", + "45303", + "45304", + "45305", + "45306", + "45307", + "45308", + "45309", + "45310", + "45311", + "45312", + "45314", + "45315", + "45316", + "45317", + "45318", + "45319", + "45320", + "45321", + "45322", + "45323", + "45324", + "45325", + "45326", + "45327", + "45328", + "45330", + "45331", + "45332", + "45333", + "45334", + "45335", + "45336", + "45337", + "45338", + "45339", + "45340", + "45341", + "45342", + "45343", + "45344", + "45345", + "45346", + "45347", + "45348", + "45349", + "45350", + "45351", + "45352", + "45353", + "45354", + "45356", + "45358", + "45359", + "45360", + "45361", + "45362", + "45363", + "45365", + "45367", + "45368", + "45369", + "45370", + "45371", + "45372", + "45373", + "45374", + "45377", + "45378", + "45380", + "45381", + "45382", + "45383", + "45384", + "45385", + "45387", + "45388", + "45389", + "45390", + "45400", + "45401", + "45402", + "45403", + "45404", + "45405", + "45406", + "45408", + "45409", + "45410", + "45412", + "45413", + "45414", + "45415", + "45416", + "45417", + "45418", + "45419", + "45420", + "45422", + "45423", + "45424", + "45426", + "45427", + "45428", + "45429", + "45430", + "45431", + "45432", + "45433", + "45434", + "45435", + "45437", + "45439", + "45440", + "45441", + "45448", + "45449", + "45454", + "45458", + "45459", + "45463", + "45469", + "45470", + "45475", + "45479", + "45481", + "45482", + "45490", + "45501", + "45502", + "45503", + "45504", + "45505", + "45506", + "45601", + "45612", + "45613", + "45614", + "45616", + "45617", + "45618", + "45619", + "45620", + "45621", + "45622", + "45623", + "45624", + "45628", + "45629", + "45630", + "45631", + "45633", + "45634", + "45636", + "45638", + "45640", + "45642", + "45643", + "45644", + "45645", + "45646", + "45647", + "45648", + "45650", + "45651", + "45652", + "45653", + "45654", + "45656", + "45657", + "45658", + "45659", + "45660", + "45661", + "45662", + "45663", + "45669", + "45671", + "45672", + "45673", + "45674", + "45675", + "45677", + "45678", + "45679", + "45680", + "45681", + "45682", + "45683", + "45684", + "45685", + "45686", + "45687", + "45688", + "45690", + "45692", + "45693", + "45694", + "45695", + "45696", + "45697", + "45698", + "45699", + "45701", + "45710", + "45711", + "45712", + "45713", + "45714", + "45715", + "45716", + "45717", + "45719", + "45720", + "45721", + "45723", + "45724", + "45727", + "45729", + "45732", + "45734", + "45735", + "45739", + "45740", + "45741", + "45742", + "45743", + "45744", + "45745", + "45746", + "45750", + "45760", + "45761", + "45764", + "45766", + "45767", + "45768", + "45769", + "45770", + "45771", + "45772", + "45773", + "45775", + "45776", + "45777", + "45778", + "45779", + "45780", + "45782", + "45783", + "45784", + "45786", + "45787", + "45788", + "45789", + "45801", + "45802", + "45804", + "45805", + "45806", + "45807", + "45808", + "45809", + "45810", + "45812", + "45813", + "45814", + "45815", + "45816", + "45817", + "45819", + "45820", + "45821", + "45822", + "45826", + "45827", + "45828", + "45830", + "45831", + "45832", + "45833", + "45835", + "45836", + "45837", + "45838", + "45839", + "45840", + "45841", + "45843", + "45844", + "45845", + "45846", + "45848", + "45849", + "45850", + "45851", + "45853", + "45854", + "45855", + "45856", + "45858", + "45859", + "45860", + "45861", + "45862", + "45863", + "45864", + "45865", + "45866", + "45867", + "45868", + "45869", + "45870", + "45871", + "45872", + "45873", + "45874", + "45875", + "45876", + "45877", + "45879", + "45880", + "45881", + "45882", + "45883", + "45884", + "45885", + "45886", + "45887", + "45888", + "45889", + "45890", + "45891", + "45893", + "45894", + "45895", + "45896", + "45897", + "45898", + "45899", + "45999", + "46001", + "46011", + "46012", + "46013", + "46014", + "46015", + "46016", + "46017", + "46018", + "46030", + "46031", + "46032", + "46033", + "46034", + "46035", + "46036", + "46037", + "46038", + "46039", + "46040", + "46041", + "46044", + "46045", + "46047", + "46048", + "46049", + "46050", + "46051", + "46052", + "46055", + "46056", + "46057", + "46058", + "46060", + "46061", + "46062", + "46063", + "46064", + "46065", + "46067", + "46068", + "46069", + "46070", + "46071", + "46072", + "46074", + "46075", + "46076", + "46077", + "46082", + "46085", + "46102", + "46103", + "46104", + "46105", + "46106", + "46107", + "46110", + "46111", + "46112", + "46113", + "46115", + "46117", + "46118", + "46120", + "46121", + "46122", + "46123", + "46124", + "46125", + "46126", + "46127", + "46128", + "46129", + "46130", + "46131", + "46133", + "46135", + "46140", + "46142", + "46143", + "46144", + "46146", + "46147", + "46148", + "46149", + "46150", + "46151", + "46154", + "46155", + "46156", + "46157", + "46158", + "46160", + "46161", + "46162", + "46163", + "46164", + "46165", + "46166", + "46167", + "46168", + "46170", + "46171", + "46172", + "46173", + "46175", + "46176", + "46180", + "46181", + "46182", + "46183", + "46184", + "46186", + "46197", + "46201", + "46202", + "46203", + "46204", + "46205", + "46206", + "46207", + "46208", + "46209", + "46210", + "46211", + "46213", + "46214", + "46216", + "46217", + "46218", + "46219", + "46220", + "46221", + "46222", + "46223", + "46224", + "46225", + "46226", + "46227", + "46228", + "46229", + "46230", + "46231", + "46234", + "46235", + "46236", + "46237", + "46239", + "46240", + "46241", + "46242", + "46244", + "46247", + "46249", + "46250", + "46251", + "46253", + "46254", + "46255", + "46256", + "46259", + "46260", + "46262", + "46266", + "46268", + "46274", + "46275", + "46277", + "46278", + "46280", + "46282", + "46283", + "46285", + "46288", + "46290", + "46291", + "46295", + "46296", + "46298", + "46301", + "46302", + "46303", + "46304", + "46307", + "46308", + "46310", + "46311", + "46312", + "46319", + "46320", + "46321", + "46322", + "46323", + "46324", + "46325", + "46327", + "46340", + "46341", + "46342", + "46345", + "46346", + "46347", + "46348", + "46349", + "46350", + "46352", + "46355", + "46356", + "46360", + "46361", + "46365", + "46366", + "46368", + "46371", + "46372", + "46373", + "46374", + "46375", + "46376", + "46377", + "46379", + "46380", + "46381", + "46382", + "46383", + "46384", + "46385", + "46390", + "46391", + "46392", + "46393", + "46394", + "46401", + "46402", + "46403", + "46404", + "46405", + "46406", + "46407", + "46408", + "46409", + "46410", + "46411", + "46501", + "46502", + "46504", + "46506", + "46507", + "46508", + "46510", + "46511", + "46513", + "46514", + "46515", + "46516", + "46517", + "46524", + "46526", + "46527", + "46528", + "46530", + "46531", + "46532", + "46534", + "46536", + "46537", + "46538", + "46539", + "46540", + "46542", + "46543", + "46544", + "46545", + "46546", + "46550", + "46552", + "46553", + "46554", + "46555", + "46556", + "46561", + "46562", + "46563", + "46565", + "46567", + "46570", + "46571", + "46572", + "46573", + "46574", + "46580", + "46581", + "46582", + "46590", + "46595", + "46601", + "46604", + "46613", + "46614", + "46615", + "46616", + "46617", + "46619", + "46620", + "46624", + "46626", + "46628", + "46634", + "46635", + "46637", + "46660", + "46680", + "46699", + "46701", + "46702", + "46703", + "46704", + "46705", + "46706", + "46710", + "46711", + "46713", + "46714", + "46721", + "46723", + "46725", + "46730", + "46731", + "46732", + "46733", + "46737", + "46738", + "46740", + "46741", + "46742", + "46743", + "46745", + "46746", + "46747", + "46748", + "46750", + "46755", + "46759", + "46760", + "46761", + "46763", + "46764", + "46765", + "46766", + "46767", + "46769", + "46770", + "46771", + "46772", + "46773", + "46774", + "46776", + "46777", + "46778", + "46779", + "46780", + "46781", + "46782", + "46783", + "46784", + "46785", + "46786", + "46787", + "46788", + "46789", + "46791", + "46792", + "46793", + "46794", + "46795", + "46796", + "46797", + "46798", + "46799", + "46801", + "46802", + "46803", + "46804", + "46805", + "46806", + "46807", + "46808", + "46809", + "46814", + "46815", + "46816", + "46818", + "46819", + "46825", + "46835", + "46845", + "46850", + "46851", + "46852", + "46853", + "46854", + "46855", + "46856", + "46857", + "46858", + "46859", + "46860", + "46861", + "46862", + "46863", + "46864", + "46865", + "46866", + "46867", + "46868", + "46869", + "46885", + "46895", + "46896", + "46897", + "46898", + "46899", + "46901", + "46902", + "46903", + "46904", + "46910", + "46911", + "46912", + "46913", + "46914", + "46915", + "46916", + "46917", + "46919", + "46920", + "46921", + "46922", + "46923", + "46926", + "46928", + "46929", + "46930", + "46931", + "46932", + "46933", + "46935", + "46936", + "46937", + "46938", + "46939", + "46940", + "46941", + "46942", + "46943", + "46945", + "46946", + "46947", + "46950", + "46951", + "46952", + "46953", + "46957", + "46958", + "46959", + "46960", + "46961", + "46962", + "46965", + "46967", + "46968", + "46970", + "46971", + "46974", + "46975", + "46977", + "46978", + "46979", + "46980", + "46982", + "46984", + "46985", + "46986", + "46987", + "46988", + "46989", + "46990", + "46991", + "46992", + "46994", + "46995", + "46996", + "46998", + "47001", + "47003", + "47006", + "47010", + "47011", + "47012", + "47016", + "47017", + "47018", + "47019", + "47020", + "47021", + "47022", + "47023", + "47024", + "47025", + "47030", + "47031", + "47032", + "47033", + "47034", + "47035", + "47036", + "47037", + "47038", + "47039", + "47040", + "47041", + "47042", + "47043", + "47060", + "47102", + "47104", + "47106", + "47107", + "47108", + "47110", + "47111", + "47112", + "47114", + "47115", + "47116", + "47117", + "47118", + "47119", + "47120", + "47122", + "47123", + "47124", + "47125", + "47126", + "47129", + "47130", + "47131", + "47132", + "47133", + "47134", + "47135", + "47136", + "47137", + "47138", + "47139", + "47140", + "47141", + "47142", + "47143", + "47144", + "47145", + "47146", + "47147", + "47150", + "47151", + "47160", + "47161", + "47162", + "47163", + "47164", + "47165", + "47166", + "47167", + "47170", + "47172", + "47174", + "47175", + "47177", + "47190", + "47199", + "47201", + "47202", + "47203", + "47220", + "47223", + "47224", + "47225", + "47226", + "47227", + "47228", + "47229", + "47230", + "47231", + "47232", + "47234", + "47235", + "47236", + "47240", + "47243", + "47244", + "47245", + "47246", + "47247", + "47249", + "47250", + "47260", + "47261", + "47263", + "47264", + "47265", + "47270", + "47272", + "47273", + "47274", + "47280", + "47281", + "47282", + "47283", + "47302", + "47303", + "47304", + "47305", + "47306", + "47307", + "47308", + "47320", + "47322", + "47324", + "47325", + "47326", + "47327", + "47330", + "47331", + "47334", + "47335", + "47336", + "47337", + "47338", + "47339", + "47340", + "47341", + "47342", + "47344", + "47345", + "47346", + "47348", + "47351", + "47352", + "47353", + "47354", + "47355", + "47356", + "47357", + "47358", + "47359", + "47360", + "47361", + "47362", + "47366", + "47367", + "47368", + "47369", + "47370", + "47371", + "47373", + "47374", + "47375", + "47380", + "47381", + "47382", + "47383", + "47384", + "47385", + "47386", + "47387", + "47388", + "47390", + "47392", + "47393", + "47394", + "47396", + "47401", + "47402", + "47403", + "47404", + "47405", + "47406", + "47407", + "47408", + "47420", + "47421", + "47424", + "47426", + "47427", + "47429", + "47430", + "47431", + "47432", + "47433", + "47434", + "47435", + "47436", + "47437", + "47438", + "47439", + "47441", + "47443", + "47445", + "47446", + "47448", + "47449", + "47451", + "47452", + "47453", + "47454", + "47455", + "47456", + "47457", + "47458", + "47459", + "47460", + "47462", + "47463", + "47464", + "47465", + "47467", + "47468", + "47469", + "47470", + "47471", + "47490", + "47501", + "47512", + "47513", + "47514", + "47515", + "47516", + "47519", + "47520", + "47521", + "47522", + "47523", + "47524", + "47525", + "47527", + "47528", + "47529", + "47531", + "47532", + "47535", + "47536", + "47537", + "47541", + "47542", + "47545", + "47546", + "47547", + "47549", + "47550", + "47551", + "47552", + "47553", + "47556", + "47557", + "47558", + "47561", + "47562", + "47564", + "47567", + "47568", + "47573", + "47574", + "47575", + "47576", + "47577", + "47578", + "47579", + "47580", + "47581", + "47584", + "47585", + "47586", + "47588", + "47590", + "47591", + "47596", + "47597", + "47598", + "47601", + "47610", + "47611", + "47612", + "47613", + "47614", + "47615", + "47616", + "47617", + "47618", + "47619", + "47620", + "47629", + "47630", + "47631", + "47633", + "47634", + "47635", + "47637", + "47638", + "47639", + "47640", + "47647", + "47648", + "47649", + "47654", + "47660", + "47665", + "47666", + "47670", + "47683", + "47701", + "47702", + "47703", + "47704", + "47705", + "47706", + "47708", + "47710", + "47711", + "47712", + "47713", + "47714", + "47715", + "47716", + "47719", + "47720", + "47721", + "47722", + "47724", + "47725", + "47727", + "47728", + "47730", + "47731", + "47732", + "47733", + "47734", + "47735", + "47736", + "47737", + "47739", + "47740", + "47741", + "47744", + "47747", + "47750", + "47801", + "47802", + "47803", + "47804", + "47805", + "47807", + "47808", + "47809", + "47811", + "47812", + "47830", + "47831", + "47832", + "47833", + "47834", + "47836", + "47837", + "47838", + "47840", + "47841", + "47842", + "47845", + "47846", + "47847", + "47848", + "47849", + "47850", + "47851", + "47852", + "47853", + "47854", + "47855", + "47856", + "47857", + "47858", + "47859", + "47860", + "47861", + "47862", + "47863", + "47864", + "47865", + "47866", + "47868", + "47869", + "47870", + "47871", + "47872", + "47874", + "47875", + "47876", + "47878", + "47879", + "47880", + "47881", + "47882", + "47884", + "47885", + "47901", + "47902", + "47903", + "47904", + "47905", + "47906", + "47907", + "47909", + "47916", + "47917", + "47918", + "47920", + "47921", + "47922", + "47923", + "47924", + "47925", + "47926", + "47928", + "47929", + "47930", + "47932", + "47933", + "47934", + "47935", + "47936", + "47937", + "47938", + "47939", + "47940", + "47941", + "47942", + "47943", + "47944", + "47946", + "47948", + "47949", + "47950", + "47951", + "47952", + "47954", + "47955", + "47957", + "47958", + "47959", + "47960", + "47962", + "47963", + "47964", + "47965", + "47966", + "47967", + "47968", + "47969", + "47970", + "47971", + "47974", + "47975", + "47977", + "47978", + "47980", + "47981", + "47982", + "47983", + "47984", + "47986", + "47987", + "47988", + "47989", + "47990", + "47991", + "47992", + "47993", + "47994", + "47995", + "47996", + "47997", + "48001", + "48002", + "48003", + "48004", + "48005", + "48006", + "48007", + "48009", + "48012", + "48014", + "48015", + "48017", + "48021", + "48022", + "48023", + "48025", + "48026", + "48027", + "48028", + "48030", + "48032", + "48033", + "48034", + "48035", + "48036", + "48037", + "48038", + "48039", + "48040", + "48041", + "48042", + "48043", + "48044", + "48045", + "48046", + "48047", + "48048", + "48049", + "48050", + "48051", + "48054", + "48059", + "48060", + "48061", + "48062", + "48063", + "48064", + "48065", + "48066", + "48067", + "48068", + "48069", + "48070", + "48071", + "48072", + "48073", + "48074", + "48075", + "48076", + "48079", + "48080", + "48081", + "48082", + "48083", + "48084", + "48085", + "48086", + "48088", + "48089", + "48090", + "48091", + "48092", + "48093", + "48094", + "48095", + "48096", + "48097", + "48098", + "48099", + "48101", + "48103", + "48104", + "48105", + "48106", + "48107", + "48108", + "48109", + "48110", + "48111", + "48112", + "48113", + "48114", + "48115", + "48116", + "48117", + "48118", + "48120", + "48121", + "48122", + "48123", + "48124", + "48125", + "48126", + "48127", + "48128", + "48130", + "48131", + "48133", + "48134", + "48135", + "48136", + "48137", + "48138", + "48139", + "48140", + "48141", + "48143", + "48144", + "48145", + "48146", + "48150", + "48151", + "48152", + "48153", + "48154", + "48157", + "48158", + "48159", + "48160", + "48161", + "48162", + "48164", + "48165", + "48166", + "48167", + "48168", + "48169", + "48170", + "48173", + "48174", + "48175", + "48176", + "48177", + "48178", + "48179", + "48180", + "48182", + "48183", + "48184", + "48185", + "48186", + "48187", + "48188", + "48189", + "48190", + "48191", + "48192", + "48193", + "48195", + "48197", + "48198", + "48201", + "48202", + "48203", + "48204", + "48205", + "48206", + "48207", + "48208", + "48209", + "48210", + "48211", + "48212", + "48213", + "48214", + "48215", + "48216", + "48217", + "48218", + "48219", + "48220", + "48221", + "48222", + "48223", + "48224", + "48225", + "48226", + "48227", + "48228", + "48229", + "48230", + "48231", + "48232", + "48233", + "48234", + "48235", + "48236", + "48237", + "48238", + "48239", + "48240", + "48242", + "48243", + "48244", + "48255", + "48260", + "48264", + "48265", + "48266", + "48267", + "48268", + "48269", + "48272", + "48275", + "48277", + "48278", + "48279", + "48288", + "48301", + "48302", + "48303", + "48304", + "48306", + "48307", + "48308", + "48309", + "48310", + "48311", + "48312", + "48313", + "48314", + "48315", + "48316", + "48317", + "48318", + "48320", + "48321", + "48322", + "48323", + "48324", + "48325", + "48326", + "48327", + "48328", + "48329", + "48330", + "48331", + "48332", + "48333", + "48334", + "48335", + "48336", + "48340", + "48341", + "48342", + "48343", + "48346", + "48347", + "48348", + "48350", + "48353", + "48356", + "48357", + "48359", + "48360", + "48361", + "48362", + "48363", + "48366", + "48367", + "48370", + "48371", + "48374", + "48375", + "48376", + "48377", + "48380", + "48381", + "48382", + "48383", + "48386", + "48387", + "48390", + "48391", + "48393", + "48397", + "48401", + "48410", + "48411", + "48412", + "48413", + "48414", + "48415", + "48416", + "48417", + "48418", + "48419", + "48420", + "48421", + "48422", + "48423", + "48426", + "48427", + "48428", + "48429", + "48430", + "48432", + "48433", + "48434", + "48435", + "48436", + "48437", + "48438", + "48439", + "48440", + "48441", + "48442", + "48444", + "48445", + "48446", + "48449", + "48450", + "48451", + "48453", + "48454", + "48455", + "48456", + "48457", + "48458", + "48460", + "48461", + "48462", + "48463", + "48464", + "48465", + "48466", + "48467", + "48468", + "48469", + "48470", + "48471", + "48472", + "48473", + "48475", + "48476", + "48480", + "48501", + "48502", + "48503", + "48504", + "48505", + "48506", + "48507", + "48509", + "48519", + "48529", + "48531", + "48532", + "48550", + "48551", + "48552", + "48553", + "48554", + "48555", + "48556", + "48557", + "48559", + "48601", + "48602", + "48603", + "48604", + "48605", + "48606", + "48607", + "48608", + "48609", + "48610", + "48611", + "48612", + "48613", + "48614", + "48615", + "48616", + "48617", + "48618", + "48619", + "48620", + "48621", + "48622", + "48623", + "48624", + "48625", + "48626", + "48627", + "48628", + "48629", + "48630", + "48631", + "48632", + "48633", + "48634", + "48635", + "48636", + "48637", + "48638", + "48640", + "48641", + "48642", + "48647", + "48649", + "48650", + "48651", + "48652", + "48653", + "48654", + "48655", + "48656", + "48657", + "48658", + "48659", + "48661", + "48662", + "48663", + "48667", + "48670", + "48674", + "48686", + "48701", + "48703", + "48705", + "48706", + "48707", + "48708", + "48710", + "48720", + "48721", + "48722", + "48723", + "48724", + "48725", + "48726", + "48727", + "48728", + "48729", + "48730", + "48731", + "48732", + "48733", + "48734", + "48735", + "48736", + "48737", + "48738", + "48739", + "48740", + "48741", + "48742", + "48743", + "48744", + "48745", + "48746", + "48747", + "48748", + "48749", + "48750", + "48754", + "48755", + "48756", + "48757", + "48758", + "48759", + "48760", + "48761", + "48762", + "48763", + "48764", + "48765", + "48766", + "48767", + "48768", + "48769", + "48770", + "48787", + "48801", + "48802", + "48804", + "48805", + "48806", + "48807", + "48808", + "48809", + "48811", + "48812", + "48813", + "48815", + "48816", + "48817", + "48818", + "48819", + "48820", + "48821", + "48822", + "48823", + "48824", + "48825", + "48826", + "48827", + "48829", + "48830", + "48831", + "48832", + "48833", + "48834", + "48835", + "48836", + "48837", + "48838", + "48840", + "48841", + "48842", + "48843", + "48844", + "48845", + "48846", + "48847", + "48848", + "48849", + "48850", + "48851", + "48852", + "48853", + "48854", + "48855", + "48856", + "48857", + "48858", + "48859", + "48860", + "48861", + "48862", + "48863", + "48864", + "48865", + "48866", + "48867", + "48870", + "48871", + "48872", + "48873", + "48874", + "48875", + "48876", + "48877", + "48878", + "48879", + "48880", + "48881", + "48882", + "48883", + "48884", + "48885", + "48886", + "48887", + "48888", + "48889", + "48890", + "48891", + "48892", + "48893", + "48894", + "48895", + "48896", + "48897", + "48901", + "48906", + "48908", + "48909", + "48910", + "48911", + "48912", + "48913", + "48915", + "48916", + "48917", + "48918", + "48919", + "48921", + "48922", + "48924", + "48929", + "48930", + "48933", + "48937", + "48950", + "48951", + "48956", + "48980", + "49001", + "49002", + "49003", + "49004", + "49005", + "49006", + "49007", + "49008", + "49009", + "49010", + "49011", + "49012", + "49013", + "49014", + "49015", + "49016", + "49017", + "49018", + "49019", + "49020", + "49021", + "49022", + "49023", + "49024", + "49026", + "49027", + "49028", + "49029", + "49030", + "49031", + "49032", + "49033", + "49034", + "49035", + "49036", + "49037", + "49038", + "49039", + "49040", + "49041", + "49042", + "49043", + "49045", + "49046", + "49047", + "49048", + "49050", + "49051", + "49052", + "49053", + "49055", + "49056", + "49057", + "49058", + "49060", + "49061", + "49062", + "49063", + "49064", + "49065", + "49066", + "49067", + "49068", + "49069", + "49070", + "49071", + "49072", + "49073", + "49074", + "49075", + "49076", + "49077", + "49078", + "49079", + "49080", + "49081", + "49082", + "49083", + "49084", + "49085", + "49087", + "49088", + "49089", + "49090", + "49091", + "49092", + "49093", + "49094", + "49095", + "49096", + "49097", + "49098", + "49099", + "49101", + "49102", + "49103", + "49104", + "49106", + "49107", + "49111", + "49112", + "49113", + "49115", + "49116", + "49117", + "49119", + "49120", + "49121", + "49125", + "49126", + "49127", + "49128", + "49129", + "49130", + "49201", + "49202", + "49203", + "49204", + "49220", + "49221", + "49224", + "49227", + "49228", + "49229", + "49230", + "49232", + "49233", + "49234", + "49235", + "49236", + "49237", + "49238", + "49239", + "49240", + "49241", + "49242", + "49245", + "49246", + "49247", + "49248", + "49249", + "49250", + "49251", + "49252", + "49253", + "49254", + "49255", + "49256", + "49257", + "49258", + "49259", + "49261", + "49262", + "49263", + "49264", + "49265", + "49266", + "49267", + "49268", + "49269", + "49270", + "49271", + "49272", + "49274", + "49276", + "49277", + "49279", + "49281", + "49282", + "49283", + "49284", + "49285", + "49286", + "49287", + "49288", + "49289", + "49301", + "49302", + "49303", + "49304", + "49305", + "49306", + "49307", + "49309", + "49310", + "49311", + "49312", + "49314", + "49315", + "49316", + "49317", + "49318", + "49319", + "49320", + "49321", + "49322", + "49323", + "49325", + "49326", + "49327", + "49328", + "49329", + "49330", + "49331", + "49332", + "49333", + "49335", + "49336", + "49337", + "49338", + "49339", + "49340", + "49341", + "49342", + "49343", + "49344", + "49345", + "49346", + "49347", + "49348", + "49349", + "49351", + "49355", + "49356", + "49357", + "49401", + "49402", + "49403", + "49404", + "49405", + "49406", + "49408", + "49409", + "49410", + "49411", + "49412", + "49413", + "49415", + "49416", + "49417", + "49418", + "49419", + "49420", + "49421", + "49422", + "49423", + "49424", + "49425", + "49426", + "49427", + "49428", + "49429", + "49430", + "49431", + "49434", + "49435", + "49436", + "49437", + "49440", + "49441", + "49442", + "49443", + "49444", + "49445", + "49446", + "49448", + "49449", + "49450", + "49451", + "49452", + "49453", + "49454", + "49455", + "49456", + "49457", + "49458", + "49459", + "49460", + "49461", + "49463", + "49464", + "49468", + "49501", + "49502", + "49503", + "49504", + "49505", + "49506", + "49507", + "49508", + "49509", + "49510", + "49512", + "49514", + "49515", + "49516", + "49518", + "49519", + "49523", + "49525", + "49528", + "49530", + "49534", + "49544", + "49546", + "49548", + "49550", + "49555", + "49560", + "49588", + "49599", + "49601", + "49610", + "49611", + "49612", + "49613", + "49614", + "49615", + "49616", + "49617", + "49618", + "49619", + "49620", + "49621", + "49622", + "49623", + "49625", + "49626", + "49627", + "49628", + "49629", + "49630", + "49631", + "49632", + "49633", + "49634", + "49635", + "49636", + "49637", + "49638", + "49639", + "49640", + "49642", + "49643", + "49644", + "49645", + "49646", + "49648", + "49649", + "49650", + "49651", + "49653", + "49654", + "49655", + "49656", + "49657", + "49659", + "49660", + "49663", + "49664", + "49665", + "49666", + "49667", + "49668", + "49670", + "49673", + "49674", + "49675", + "49676", + "49677", + "49679", + "49680", + "49682", + "49683", + "49684", + "49685", + "49686", + "49688", + "49689", + "49690", + "49696", + "49701", + "49705", + "49706", + "49707", + "49709", + "49710", + "49711", + "49712", + "49713", + "49715", + "49716", + "49717", + "49718", + "49719", + "49720", + "49721", + "49722", + "49723", + "49724", + "49725", + "49726", + "49727", + "49728", + "49729", + "49730", + "49733", + "49734", + "49735", + "49736", + "49737", + "49738", + "49739", + "49740", + "49743", + "49744", + "49745", + "49746", + "49747", + "49748", + "49749", + "49751", + "49752", + "49753", + "49755", + "49756", + "49757", + "49759", + "49760", + "49761", + "49762", + "49764", + "49765", + "49766", + "49768", + "49769", + "49770", + "49774", + "49775", + "49776", + "49777", + "49779", + "49780", + "49781", + "49782", + "49783", + "49784", + "49785", + "49786", + "49788", + "49790", + "49791", + "49792", + "49793", + "49795", + "49796", + "49797", + "49799", + "49801", + "49802", + "49805", + "49806", + "49807", + "49808", + "49812", + "49814", + "49815", + "49816", + "49817", + "49818", + "49819", + "49820", + "49821", + "49822", + "49825", + "49826", + "49827", + "49829", + "49831", + "49833", + "49834", + "49835", + "49836", + "49837", + "49838", + "49839", + "49840", + "49841", + "49845", + "49847", + "49848", + "49849", + "49852", + "49853", + "49854", + "49855", + "49858", + "49861", + "49862", + "49863", + "49864", + "49865", + "49866", + "49868", + "49870", + "49871", + "49872", + "49873", + "49874", + "49876", + "49877", + "49878", + "49879", + "49880", + "49881", + "49883", + "49884", + "49885", + "49886", + "49887", + "49891", + "49892", + "49893", + "49894", + "49895", + "49896", + "49901", + "49902", + "49903", + "49905", + "49908", + "49910", + "49911", + "49912", + "49913", + "49915", + "49916", + "49917", + "49918", + "49919", + "49920", + "49921", + "49922", + "49925", + "49927", + "49929", + "49930", + "49931", + "49934", + "49935", + "49938", + "49942", + "49945", + "49946", + "49947", + "49948", + "49950", + "49952", + "49953", + "49955", + "49958", + "49959", + "49960", + "49961", + "49962", + "49963", + "49964", + "49965", + "49967", + "49968", + "49969", + "49970", + "49971", + "50001", + "50002", + "50003", + "50005", + "50006", + "50007", + "50008", + "50009", + "50010", + "50011", + "50012", + "50013", + "50014", + "50020", + "50021", + "50022", + "50023", + "50025", + "50026", + "50027", + "50028", + "50029", + "50031", + "50032", + "50033", + "50034", + "50035", + "50036", + "50037", + "50038", + "50039", + "50040", + "50041", + "50042", + "50043", + "50044", + "50046", + "50047", + "50048", + "50049", + "50050", + "50051", + "50052", + "50054", + "50055", + "50056", + "50057", + "50058", + "50059", + "50060", + "50061", + "50062", + "50063", + "50064", + "50065", + "50066", + "50067", + "50068", + "50069", + "50070", + "50071", + "50072", + "50073", + "50074", + "50075", + "50076", + "50078", + "50099", + "50101", + "50102", + "50103", + "50104", + "50105", + "50106", + "50107", + "50108", + "50109", + "50110", + "50111", + "50112", + "50115", + "50116", + "50117", + "50118", + "50119", + "50120", + "50122", + "50123", + "50124", + "50125", + "50126", + "50127", + "50128", + "50129", + "50130", + "50131", + "50132", + "50133", + "50134", + "50135", + "50136", + "50137", + "50138", + "50139", + "50140", + "50141", + "50142", + "50143", + "50144", + "50145", + "50146", + "50147", + "50148", + "50149", + "50150", + "50151", + "50152", + "50153", + "50154", + "50155", + "50156", + "50157", + "50158", + "50160", + "50161", + "50162", + "50163", + "50164", + "50165", + "50166", + "50167", + "50168", + "50169", + "50170", + "50171", + "50173", + "50174", + "50201", + "50206", + "50207", + "50208", + "50210", + "50211", + "50212", + "50213", + "50214", + "50216", + "50217", + "50218", + "50219", + "50220", + "50222", + "50223", + "50225", + "50226", + "50227", + "50228", + "50229", + "50230", + "50231", + "50232", + "50233", + "50234", + "50235", + "50236", + "50237", + "50238", + "50239", + "50240", + "50241", + "50242", + "50243", + "50244", + "50246", + "50247", + "50248", + "50249", + "50250", + "50251", + "50252", + "50254", + "50255", + "50256", + "50257", + "50258", + "50259", + "50261", + "50262", + "50263", + "50264", + "50265", + "50266", + "50268", + "50269", + "50271", + "50272", + "50273", + "50274", + "50275", + "50276", + "50277", + "50278", + "50301", + "50302", + "50303", + "50304", + "50305", + "50306", + "50307", + "50308", + "50309", + "50310", + "50311", + "50312", + "50313", + "50314", + "50315", + "50316", + "50317", + "50318", + "50319", + "50320", + "50321", + "50322", + "50323", + "50324", + "50325", + "50327", + "50328", + "50329", + "50330", + "50331", + "50332", + "50333", + "50334", + "50335", + "50336", + "50339", + "50340", + "50347", + "50359", + "50360", + "50361", + "50362", + "50363", + "50364", + "50367", + "50368", + "50369", + "50380", + "50381", + "50391", + "50392", + "50393", + "50394", + "50395", + "50396", + "50397", + "50398", + "50401", + "50402", + "50420", + "50421", + "50423", + "50424", + "50426", + "50427", + "50428", + "50430", + "50431", + "50432", + "50433", + "50434", + "50435", + "50436", + "50438", + "50439", + "50440", + "50441", + "50444", + "50446", + "50447", + "50448", + "50449", + "50450", + "50451", + "50452", + "50453", + "50454", + "50455", + "50456", + "50457", + "50458", + "50459", + "50460", + "50461", + "50464", + "50465", + "50466", + "50467", + "50468", + "50469", + "50470", + "50471", + "50472", + "50473", + "50475", + "50476", + "50477", + "50478", + "50479", + "50480", + "50481", + "50482", + "50483", + "50484", + "50501", + "50510", + "50511", + "50514", + "50515", + "50516", + "50517", + "50518", + "50519", + "50520", + "50521", + "50522", + "50523", + "50524", + "50525", + "50526", + "50527", + "50528", + "50529", + "50530", + "50531", + "50532", + "50533", + "50535", + "50536", + "50538", + "50539", + "50540", + "50541", + "50542", + "50543", + "50544", + "50545", + "50546", + "50548", + "50551", + "50552", + "50554", + "50556", + "50557", + "50558", + "50559", + "50560", + "50561", + "50562", + "50563", + "50565", + "50566", + "50567", + "50568", + "50569", + "50570", + "50571", + "50573", + "50574", + "50575", + "50576", + "50577", + "50578", + "50579", + "50581", + "50582", + "50583", + "50585", + "50586", + "50588", + "50590", + "50591", + "50592", + "50593", + "50594", + "50595", + "50597", + "50598", + "50599", + "50601", + "50602", + "50603", + "50604", + "50605", + "50606", + "50607", + "50608", + "50609", + "50611", + "50612", + "50613", + "50614", + "50616", + "50619", + "50620", + "50621", + "50622", + "50623", + "50624", + "50625", + "50626", + "50627", + "50628", + "50629", + "50630", + "50631", + "50632", + "50633", + "50634", + "50635", + "50636", + "50638", + "50641", + "50642", + "50643", + "50644", + "50645", + "50647", + "50648", + "50649", + "50650", + "50651", + "50652", + "50653", + "50654", + "50655", + "50657", + "50658", + "50659", + "50660", + "50661", + "50662", + "50664", + "50665", + "50666", + "50667", + "50668", + "50669", + "50670", + "50671", + "50672", + "50673", + "50674", + "50675", + "50676", + "50677", + "50680", + "50681", + "50682", + "50701", + "50702", + "50703", + "50704", + "50706", + "50707", + "50801", + "50830", + "50831", + "50833", + "50835", + "50836", + "50837", + "50839", + "50840", + "50841", + "50842", + "50843", + "50845", + "50846", + "50847", + "50848", + "50849", + "50851", + "50853", + "50854", + "50857", + "50858", + "50859", + "50860", + "50861", + "50862", + "50863", + "50864", + "50936", + "50940", + "50947", + "50950", + "50980", + "50981", + "50982", + "50983", + "51001", + "51002", + "51003", + "51004", + "51005", + "51006", + "51007", + "51008", + "51009", + "51010", + "51011", + "51012", + "51014", + "51015", + "51016", + "51018", + "51019", + "51020", + "51022", + "51023", + "51024", + "51025", + "51026", + "51027", + "51028", + "51029", + "51030", + "51031", + "51033", + "51034", + "51035", + "51036", + "51037", + "51038", + "51039", + "51040", + "51041", + "51044", + "51045", + "51046", + "51047", + "51048", + "51049", + "51050", + "51051", + "51052", + "51053", + "51054", + "51055", + "51056", + "51058", + "51060", + "51061", + "51062", + "51063", + "51101", + "51102", + "51103", + "51104", + "51105", + "51106", + "51108", + "51109", + "51111", + "51201", + "51230", + "51231", + "51232", + "51234", + "51235", + "51237", + "51238", + "51239", + "51240", + "51241", + "51242", + "51243", + "51244", + "51245", + "51246", + "51247", + "51248", + "51249", + "51250", + "51301", + "51331", + "51333", + "51334", + "51338", + "51340", + "51341", + "51342", + "51343", + "51344", + "51345", + "51346", + "51347", + "51350", + "51351", + "51354", + "51355", + "51357", + "51358", + "51360", + "51363", + "51364", + "51365", + "51366", + "51401", + "51430", + "51431", + "51432", + "51433", + "51436", + "51439", + "51440", + "51441", + "51442", + "51443", + "51444", + "51445", + "51446", + "51447", + "51448", + "51449", + "51450", + "51451", + "51452", + "51453", + "51454", + "51455", + "51458", + "51459", + "51460", + "51461", + "51462", + "51463", + "51465", + "51466", + "51467", + "51501", + "51502", + "51503", + "51510", + "51520", + "51521", + "51523", + "51525", + "51526", + "51527", + "51528", + "51529", + "51530", + "51531", + "51532", + "51533", + "51534", + "51535", + "51536", + "51537", + "51540", + "51541", + "51542", + "51543", + "51544", + "51545", + "51546", + "51548", + "51549", + "51550", + "51551", + "51552", + "51553", + "51554", + "51555", + "51556", + "51557", + "51558", + "51559", + "51560", + "51561", + "51562", + "51563", + "51564", + "51565", + "51566", + "51570", + "51571", + "51572", + "51573", + "51575", + "51576", + "51577", + "51578", + "51579", + "51591", + "51593", + "51601", + "51602", + "51603", + "51630", + "51631", + "51632", + "51636", + "51637", + "51638", + "51639", + "51640", + "51645", + "51646", + "51647", + "51648", + "51649", + "51650", + "51651", + "51652", + "51653", + "51654", + "51656", + "52001", + "52002", + "52003", + "52004", + "52030", + "52031", + "52032", + "52033", + "52035", + "52036", + "52037", + "52038", + "52039", + "52040", + "52041", + "52042", + "52043", + "52044", + "52045", + "52046", + "52047", + "52048", + "52049", + "52050", + "52052", + "52053", + "52054", + "52056", + "52057", + "52060", + "52064", + "52065", + "52066", + "52068", + "52069", + "52070", + "52071", + "52072", + "52073", + "52074", + "52075", + "52076", + "52077", + "52078", + "52079", + "52099", + "52101", + "52132", + "52133", + "52134", + "52135", + "52136", + "52140", + "52141", + "52142", + "52144", + "52146", + "52147", + "52149", + "52151", + "52154", + "52155", + "52156", + "52157", + "52158", + "52159", + "52160", + "52161", + "52162", + "52163", + "52164", + "52165", + "52166", + "52168", + "52169", + "52170", + "52171", + "52172", + "52175", + "52201", + "52202", + "52203", + "52204", + "52205", + "52206", + "52207", + "52208", + "52209", + "52210", + "52211", + "52212", + "52213", + "52214", + "52215", + "52216", + "52217", + "52218", + "52219", + "52220", + "52221", + "52222", + "52223", + "52224", + "52225", + "52227", + "52228", + "52229", + "52231", + "52232", + "52233", + "52235", + "52236", + "52237", + "52240", + "52241", + "52242", + "52243", + "52244", + "52245", + "52246", + "52247", + "52248", + "52249", + "52251", + "52252", + "52253", + "52254", + "52255", + "52257", + "52301", + "52302", + "52305", + "52306", + "52307", + "52308", + "52309", + "52310", + "52312", + "52313", + "52314", + "52315", + "52316", + "52317", + "52318", + "52319", + "52320", + "52321", + "52322", + "52323", + "52324", + "52325", + "52326", + "52327", + "52328", + "52329", + "52330", + "52332", + "52333", + "52334", + "52335", + "52336", + "52337", + "52338", + "52339", + "52340", + "52341", + "52342", + "52344", + "52345", + "52346", + "52347", + "52348", + "52349", + "52350", + "52351", + "52352", + "52353", + "52354", + "52355", + "52356", + "52358", + "52359", + "52361", + "52362", + "52401", + "52402", + "52403", + "52404", + "52405", + "52406", + "52407", + "52408", + "52409", + "52410", + "52411", + "52497", + "52498", + "52499", + "52501", + "52530", + "52531", + "52533", + "52534", + "52535", + "52536", + "52537", + "52538", + "52540", + "52542", + "52543", + "52544", + "52548", + "52549", + "52550", + "52551", + "52552", + "52553", + "52554", + "52555", + "52556", + "52557", + "52560", + "52561", + "52562", + "52563", + "52565", + "52566", + "52567", + "52568", + "52569", + "52570", + "52571", + "52572", + "52573", + "52574", + "52576", + "52577", + "52580", + "52581", + "52583", + "52584", + "52585", + "52586", + "52588", + "52590", + "52591", + "52593", + "52594", + "52595", + "52601", + "52619", + "52620", + "52621", + "52623", + "52624", + "52625", + "52626", + "52627", + "52630", + "52631", + "52632", + "52635", + "52637", + "52638", + "52639", + "52640", + "52641", + "52642", + "52644", + "52645", + "52646", + "52647", + "52648", + "52649", + "52650", + "52651", + "52652", + "52653", + "52654", + "52655", + "52656", + "52657", + "52658", + "52659", + "52660", + "52701", + "52720", + "52721", + "52722", + "52726", + "52727", + "52728", + "52729", + "52730", + "52731", + "52732", + "52733", + "52734", + "52736", + "52737", + "52738", + "52739", + "52742", + "52745", + "52746", + "52747", + "52748", + "52749", + "52750", + "52751", + "52752", + "52753", + "52754", + "52755", + "52756", + "52757", + "52758", + "52759", + "52760", + "52761", + "52765", + "52766", + "52767", + "52768", + "52769", + "52771", + "52772", + "52773", + "52774", + "52776", + "52777", + "52778", + "52801", + "52802", + "52803", + "52804", + "52805", + "52806", + "52807", + "52808", + "52809", + "53001", + "53002", + "53003", + "53004", + "53005", + "53006", + "53007", + "53008", + "53010", + "53011", + "53012", + "53013", + "53014", + "53015", + "53016", + "53017", + "53018", + "53019", + "53020", + "53021", + "53022", + "53023", + "53024", + "53026", + "53027", + "53029", + "53031", + "53032", + "53033", + "53034", + "53035", + "53036", + "53037", + "53038", + "53039", + "53040", + "53042", + "53044", + "53045", + "53046", + "53047", + "53048", + "53049", + "53050", + "53051", + "53052", + "53056", + "53057", + "53058", + "53059", + "53060", + "53061", + "53062", + "53063", + "53064", + "53065", + "53066", + "53069", + "53070", + "53072", + "53073", + "53074", + "53075", + "53076", + "53078", + "53079", + "53080", + "53081", + "53082", + "53083", + "53085", + "53086", + "53088", + "53089", + "53090", + "53091", + "53092", + "53093", + "53094", + "53095", + "53097", + "53098", + "53099", + "53101", + "53102", + "53103", + "53104", + "53105", + "53108", + "53109", + "53110", + "53114", + "53115", + "53118", + "53119", + "53120", + "53121", + "53122", + "53125", + "53126", + "53127", + "53128", + "53129", + "53130", + "53132", + "53137", + "53138", + "53139", + "53140", + "53141", + "53142", + "53143", + "53144", + "53146", + "53147", + "53148", + "53149", + "53150", + "53151", + "53152", + "53153", + "53154", + "53156", + "53157", + "53158", + "53159", + "53167", + "53168", + "53170", + "53171", + "53172", + "53176", + "53177", + "53178", + "53179", + "53181", + "53182", + "53183", + "53184", + "53185", + "53186", + "53187", + "53188", + "53189", + "53190", + "53191", + "53192", + "53194", + "53195", + "53199", + "53201", + "53202", + "53203", + "53204", + "53205", + "53206", + "53207", + "53208", + "53209", + "53210", + "53211", + "53212", + "53213", + "53214", + "53215", + "53216", + "53217", + "53218", + "53219", + "53220", + "53221", + "53222", + "53223", + "53224", + "53225", + "53226", + "53227", + "53228", + "53233", + "53234", + "53235", + "53237", + "53244", + "53259", + "53263", + "53267", + "53268", + "53274", + "53278", + "53288", + "53290", + "53293", + "53295", + "53401", + "53402", + "53403", + "53404", + "53405", + "53406", + "53407", + "53408", + "53501", + "53502", + "53503", + "53504", + "53505", + "53506", + "53507", + "53508", + "53510", + "53511", + "53512", + "53515", + "53516", + "53517", + "53518", + "53520", + "53521", + "53522", + "53523", + "53525", + "53526", + "53527", + "53528", + "53529", + "53530", + "53531", + "53532", + "53533", + "53534", + "53535", + "53536", + "53537", + "53538", + "53540", + "53541", + "53542", + "53543", + "53544", + "53545", + "53546", + "53547", + "53548", + "53549", + "53550", + "53551", + "53553", + "53554", + "53555", + "53556", + "53557", + "53558", + "53559", + "53560", + "53561", + "53562", + "53563", + "53565", + "53566", + "53569", + "53570", + "53571", + "53572", + "53573", + "53574", + "53575", + "53576", + "53577", + "53578", + "53579", + "53580", + "53581", + "53582", + "53583", + "53584", + "53585", + "53586", + "53587", + "53588", + "53589", + "53590", + "53593", + "53594", + "53595", + "53596", + "53597", + "53598", + "53599", + "53701", + "53702", + "53703", + "53704", + "53705", + "53706", + "53707", + "53708", + "53711", + "53713", + "53714", + "53715", + "53716", + "53717", + "53718", + "53719", + "53725", + "53726", + "53744", + "53774", + "53777", + "53778", + "53779", + "53782", + "53783", + "53784", + "53785", + "53786", + "53788", + "53789", + "53790", + "53791", + "53792", + "53793", + "53794", + "53801", + "53802", + "53803", + "53804", + "53805", + "53806", + "53807", + "53808", + "53809", + "53810", + "53811", + "53812", + "53813", + "53816", + "53817", + "53818", + "53820", + "53821", + "53824", + "53825", + "53826", + "53827", + "53901", + "53910", + "53911", + "53913", + "53916", + "53919", + "53920", + "53922", + "53923", + "53924", + "53925", + "53926", + "53927", + "53928", + "53929", + "53930", + "53931", + "53932", + "53933", + "53934", + "53935", + "53936", + "53937", + "53939", + "53940", + "53941", + "53942", + "53943", + "53944", + "53946", + "53947", + "53948", + "53949", + "53950", + "53951", + "53952", + "53953", + "53954", + "53955", + "53956", + "53957", + "53958", + "53959", + "53960", + "53961", + "53962", + "53963", + "53964", + "53965", + "53968", + "53969", + "54001", + "54002", + "54003", + "54004", + "54005", + "54006", + "54007", + "54009", + "54010", + "54011", + "54013", + "54014", + "54015", + "54016", + "54017", + "54020", + "54021", + "54022", + "54023", + "54024", + "54025", + "54026", + "54027", + "54028", + "54082", + "54101", + "54102", + "54103", + "54104", + "54106", + "54107", + "54110", + "54111", + "54112", + "54113", + "54114", + "54115", + "54119", + "54120", + "54121", + "54123", + "54124", + "54125", + "54126", + "54127", + "54128", + "54129", + "54130", + "54131", + "54135", + "54136", + "54137", + "54138", + "54139", + "54140", + "54141", + "54143", + "54149", + "54150", + "54151", + "54152", + "54153", + "54154", + "54155", + "54156", + "54157", + "54159", + "54160", + "54161", + "54162", + "54165", + "54166", + "54169", + "54170", + "54171", + "54173", + "54174", + "54175", + "54177", + "54180", + "54182", + "54201", + "54202", + "54204", + "54205", + "54207", + "54208", + "54209", + "54210", + "54211", + "54212", + "54213", + "54214", + "54215", + "54216", + "54217", + "54220", + "54221", + "54226", + "54227", + "54228", + "54229", + "54230", + "54232", + "54234", + "54235", + "54240", + "54241", + "54245", + "54246", + "54247", + "54301", + "54302", + "54303", + "54304", + "54305", + "54306", + "54307", + "54308", + "54311", + "54313", + "54324", + "54344", + "54401", + "54402", + "54403", + "54404", + "54405", + "54406", + "54407", + "54408", + "54409", + "54410", + "54411", + "54412", + "54413", + "54414", + "54415", + "54416", + "54417", + "54418", + "54420", + "54421", + "54422", + "54423", + "54424", + "54425", + "54426", + "54427", + "54428", + "54429", + "54430", + "54432", + "54433", + "54434", + "54435", + "54436", + "54437", + "54439", + "54440", + "54441", + "54442", + "54443", + "54446", + "54447", + "54448", + "54449", + "54450", + "54451", + "54452", + "54454", + "54455", + "54456", + "54457", + "54458", + "54459", + "54460", + "54462", + "54463", + "54464", + "54465", + "54466", + "54467", + "54469", + "54470", + "54471", + "54472", + "54473", + "54474", + "54475", + "54476", + "54479", + "54480", + "54481", + "54482", + "54484", + "54485", + "54486", + "54487", + "54488", + "54489", + "54490", + "54491", + "54492", + "54493", + "54494", + "54495", + "54498", + "54499", + "54501", + "54511", + "54512", + "54513", + "54514", + "54515", + "54517", + "54519", + "54520", + "54521", + "54524", + "54525", + "54526", + "54527", + "54529", + "54530", + "54531", + "54532", + "54534", + "54536", + "54537", + "54538", + "54539", + "54540", + "54541", + "54542", + "54543", + "54545", + "54546", + "54547", + "54548", + "54550", + "54552", + "54554", + "54555", + "54556", + "54557", + "54558", + "54559", + "54560", + "54561", + "54562", + "54563", + "54564", + "54565", + "54566", + "54568", + "54601", + "54602", + "54603", + "54610", + "54611", + "54612", + "54613", + "54614", + "54615", + "54616", + "54618", + "54619", + "54620", + "54621", + "54622", + "54623", + "54624", + "54625", + "54626", + "54627", + "54628", + "54629", + "54630", + "54631", + "54632", + "54634", + "54635", + "54636", + "54637", + "54638", + "54639", + "54640", + "54641", + "54642", + "54643", + "54644", + "54645", + "54646", + "54648", + "54649", + "54650", + "54651", + "54652", + "54653", + "54654", + "54655", + "54656", + "54657", + "54658", + "54659", + "54660", + "54661", + "54662", + "54664", + "54665", + "54666", + "54667", + "54669", + "54670", + "54701", + "54702", + "54703", + "54720", + "54721", + "54722", + "54723", + "54724", + "54725", + "54726", + "54727", + "54728", + "54729", + "54730", + "54731", + "54732", + "54733", + "54734", + "54735", + "54736", + "54737", + "54738", + "54739", + "54740", + "54741", + "54742", + "54743", + "54745", + "54746", + "54747", + "54748", + "54749", + "54750", + "54751", + "54754", + "54755", + "54756", + "54757", + "54758", + "54759", + "54760", + "54761", + "54762", + "54763", + "54764", + "54765", + "54766", + "54767", + "54768", + "54769", + "54770", + "54771", + "54772", + "54773", + "54774", + "54801", + "54805", + "54806", + "54810", + "54812", + "54813", + "54814", + "54816", + "54817", + "54818", + "54819", + "54820", + "54821", + "54822", + "54824", + "54826", + "54827", + "54828", + "54829", + "54830", + "54832", + "54834", + "54835", + "54836", + "54837", + "54838", + "54839", + "54840", + "54841", + "54842", + "54843", + "54844", + "54845", + "54846", + "54847", + "54848", + "54849", + "54850", + "54853", + "54854", + "54855", + "54856", + "54857", + "54858", + "54859", + "54861", + "54862", + "54864", + "54865", + "54867", + "54868", + "54870", + "54871", + "54872", + "54873", + "54874", + "54875", + "54876", + "54880", + "54888", + "54889", + "54890", + "54891", + "54893", + "54895", + "54896", + "54901", + "54902", + "54903", + "54904", + "54906", + "54909", + "54911", + "54912", + "54913", + "54914", + "54915", + "54919", + "54921", + "54922", + "54923", + "54926", + "54927", + "54928", + "54929", + "54930", + "54931", + "54932", + "54933", + "54934", + "54935", + "54936", + "54937", + "54940", + "54941", + "54942", + "54943", + "54944", + "54945", + "54946", + "54947", + "54948", + "54949", + "54950", + "54952", + "54956", + "54957", + "54960", + "54961", + "54962", + "54963", + "54964", + "54965", + "54966", + "54967", + "54968", + "54969", + "54970", + "54971", + "54974", + "54976", + "54977", + "54978", + "54979", + "54980", + "54981", + "54982", + "54983", + "54984", + "54985", + "54986", + "54990", + "55001", + "55002", + "55003", + "55005", + "55006", + "55007", + "55008", + "55009", + "55010", + "55011", + "55012", + "55013", + "55014", + "55016", + "55017", + "55018", + "55019", + "55020", + "55021", + "55024", + "55025", + "55026", + "55027", + "55029", + "55030", + "55031", + "55032", + "55033", + "55036", + "55037", + "55038", + "55040", + "55041", + "55042", + "55043", + "55044", + "55045", + "55046", + "55047", + "55049", + "55051", + "55052", + "55053", + "55054", + "55055", + "55056", + "55057", + "55060", + "55063", + "55065", + "55066", + "55067", + "55068", + "55069", + "55070", + "55071", + "55072", + "55073", + "55074", + "55075", + "55076", + "55077", + "55078", + "55079", + "55080", + "55082", + "55083", + "55084", + "55085", + "55087", + "55088", + "55089", + "55090", + "55092", + "55101", + "55102", + "55103", + "55104", + "55105", + "55106", + "55107", + "55108", + "55109", + "55110", + "55111", + "55112", + "55113", + "55114", + "55115", + "55116", + "55117", + "55118", + "55119", + "55120", + "55121", + "55122", + "55123", + "55124", + "55125", + "55126", + "55127", + "55128", + "55129", + "55130", + "55131", + "55133", + "55144", + "55145", + "55146", + "55150", + "55155", + "55161", + "55164", + "55165", + "55166", + "55168", + "55169", + "55170", + "55171", + "55172", + "55175", + "55177", + "55187", + "55188", + "55191", + "55301", + "55302", + "55303", + "55304", + "55305", + "55306", + "55307", + "55308", + "55309", + "55310", + "55311", + "55312", + "55313", + "55314", + "55315", + "55316", + "55317", + "55318", + "55319", + "55320", + "55321", + "55322", + "55323", + "55324", + "55325", + "55327", + "55328", + "55329", + "55330", + "55331", + "55332", + "55333", + "55334", + "55335", + "55336", + "55337", + "55338", + "55339", + "55340", + "55341", + "55342", + "55343", + "55344", + "55345", + "55346", + "55347", + "55348", + "55349", + "55350", + "55352", + "55353", + "55354", + "55355", + "55356", + "55357", + "55358", + "55359", + "55360", + "55361", + "55362", + "55363", + "55364", + "55365", + "55366", + "55367", + "55368", + "55369", + "55370", + "55371", + "55372", + "55373", + "55374", + "55375", + "55376", + "55377", + "55378", + "55379", + "55380", + "55381", + "55382", + "55383", + "55384", + "55385", + "55386", + "55387", + "55388", + "55389", + "55390", + "55391", + "55392", + "55393", + "55394", + "55395", + "55396", + "55397", + "55398", + "55399", + "55401", + "55402", + "55403", + "55404", + "55405", + "55406", + "55407", + "55408", + "55409", + "55410", + "55411", + "55412", + "55413", + "55414", + "55415", + "55416", + "55417", + "55418", + "55419", + "55420", + "55421", + "55422", + "55423", + "55424", + "55425", + "55426", + "55427", + "55428", + "55429", + "55430", + "55431", + "55432", + "55433", + "55434", + "55435", + "55436", + "55437", + "55438", + "55439", + "55440", + "55441", + "55442", + "55443", + "55444", + "55445", + "55446", + "55447", + "55448", + "55449", + "55450", + "55454", + "55455", + "55458", + "55459", + "55460", + "55467", + "55468", + "55470", + "55472", + "55473", + "55474", + "55478", + "55479", + "55480", + "55483", + "55484", + "55485", + "55486", + "55487", + "55488", + "55550", + "55551", + "55552", + "55553", + "55554", + "55555", + "55556", + "55557", + "55558", + "55559", + "55560", + "55561", + "55562", + "55563", + "55564", + "55565", + "55566", + "55567", + "55568", + "55569", + "55570", + "55571", + "55572", + "55573", + "55574", + "55575", + "55576", + "55577", + "55578", + "55579", + "55580", + "55581", + "55582", + "55583", + "55584", + "55585", + "55586", + "55587", + "55588", + "55589", + "55590", + "55591", + "55592", + "55593", + "55594", + "55595", + "55596", + "55597", + "55598", + "55599", + "55601", + "55602", + "55603", + "55604", + "55605", + "55606", + "55607", + "55609", + "55612", + "55613", + "55614", + "55615", + "55616", + "55701", + "55702", + "55703", + "55704", + "55705", + "55706", + "55707", + "55708", + "55709", + "55710", + "55711", + "55712", + "55713", + "55716", + "55717", + "55718", + "55719", + "55720", + "55721", + "55722", + "55723", + "55724", + "55725", + "55726", + "55730", + "55731", + "55732", + "55733", + "55734", + "55735", + "55736", + "55738", + "55741", + "55742", + "55744", + "55745", + "55746", + "55747", + "55748", + "55749", + "55750", + "55751", + "55752", + "55753", + "55756", + "55757", + "55758", + "55760", + "55763", + "55764", + "55765", + "55766", + "55767", + "55768", + "55769", + "55771", + "55772", + "55775", + "55777", + "55779", + "55780", + "55781", + "55782", + "55783", + "55784", + "55785", + "55786", + "55787", + "55790", + "55791", + "55792", + "55793", + "55795", + "55796", + "55797", + "55798", + "55801", + "55802", + "55803", + "55804", + "55805", + "55806", + "55807", + "55808", + "55810", + "55811", + "55812", + "55814", + "55815", + "55816", + "55901", + "55902", + "55903", + "55904", + "55905", + "55906", + "55909", + "55910", + "55912", + "55917", + "55918", + "55919", + "55920", + "55921", + "55922", + "55923", + "55924", + "55925", + "55926", + "55927", + "55929", + "55931", + "55932", + "55933", + "55934", + "55935", + "55936", + "55939", + "55940", + "55941", + "55942", + "55943", + "55944", + "55945", + "55946", + "55947", + "55949", + "55950", + "55951", + "55952", + "55953", + "55954", + "55955", + "55956", + "55957", + "55959", + "55960", + "55961", + "55962", + "55963", + "55964", + "55965", + "55967", + "55968", + "55969", + "55970", + "55971", + "55972", + "55973", + "55974", + "55975", + "55976", + "55977", + "55979", + "55981", + "55982", + "55983", + "55985", + "55987", + "55988", + "55990", + "55991", + "55992", + "56001", + "56002", + "56003", + "56006", + "56007", + "56009", + "56010", + "56011", + "56013", + "56014", + "56016", + "56017", + "56019", + "56020", + "56021", + "56022", + "56023", + "56024", + "56025", + "56026", + "56027", + "56028", + "56029", + "56030", + "56031", + "56032", + "56033", + "56034", + "56035", + "56036", + "56037", + "56039", + "56041", + "56042", + "56043", + "56044", + "56045", + "56046", + "56047", + "56048", + "56050", + "56051", + "56052", + "56054", + "56055", + "56056", + "56057", + "56058", + "56060", + "56062", + "56063", + "56065", + "56068", + "56069", + "56071", + "56072", + "56073", + "56074", + "56075", + "56078", + "56080", + "56081", + "56082", + "56083", + "56084", + "56085", + "56087", + "56088", + "56089", + "56090", + "56091", + "56093", + "56096", + "56097", + "56098", + "56101", + "56110", + "56111", + "56113", + "56114", + "56115", + "56116", + "56117", + "56118", + "56119", + "56120", + "56121", + "56122", + "56123", + "56125", + "56127", + "56128", + "56129", + "56131", + "56132", + "56134", + "56136", + "56137", + "56138", + "56139", + "56140", + "56141", + "56142", + "56143", + "56144", + "56145", + "56146", + "56147", + "56149", + "56150", + "56151", + "56152", + "56153", + "56155", + "56156", + "56157", + "56158", + "56159", + "56160", + "56161", + "56162", + "56164", + "56165", + "56166", + "56167", + "56168", + "56169", + "56170", + "56171", + "56172", + "56173", + "56174", + "56175", + "56176", + "56177", + "56178", + "56180", + "56181", + "56183", + "56185", + "56186", + "56187", + "56201", + "56207", + "56208", + "56209", + "56210", + "56211", + "56212", + "56214", + "56215", + "56216", + "56218", + "56219", + "56220", + "56221", + "56222", + "56223", + "56224", + "56225", + "56226", + "56227", + "56228", + "56229", + "56230", + "56231", + "56232", + "56235", + "56236", + "56237", + "56239", + "56240", + "56241", + "56243", + "56244", + "56245", + "56248", + "56249", + "56251", + "56252", + "56253", + "56255", + "56256", + "56257", + "56258", + "56260", + "56262", + "56263", + "56264", + "56265", + "56266", + "56267", + "56270", + "56271", + "56273", + "56274", + "56276", + "56277", + "56278", + "56279", + "56280", + "56281", + "56282", + "56283", + "56284", + "56285", + "56287", + "56288", + "56289", + "56291", + "56292", + "56293", + "56294", + "56295", + "56296", + "56297", + "56301", + "56302", + "56303", + "56304", + "56307", + "56308", + "56309", + "56310", + "56311", + "56312", + "56313", + "56314", + "56315", + "56316", + "56317", + "56318", + "56319", + "56320", + "56321", + "56323", + "56324", + "56325", + "56326", + "56327", + "56328", + "56329", + "56330", + "56331", + "56332", + "56333", + "56334", + "56335", + "56336", + "56338", + "56339", + "56340", + "56341", + "56342", + "56343", + "56344", + "56345", + "56347", + "56349", + "56350", + "56352", + "56353", + "56354", + "56355", + "56356", + "56357", + "56358", + "56359", + "56360", + "56361", + "56362", + "56363", + "56364", + "56367", + "56368", + "56369", + "56371", + "56372", + "56373", + "56374", + "56375", + "56376", + "56377", + "56378", + "56379", + "56381", + "56382", + "56384", + "56385", + "56386", + "56387", + "56388", + "56389", + "56393", + "56395", + "56396", + "56397", + "56398", + "56399", + "56401", + "56425", + "56430", + "56431", + "56433", + "56434", + "56435", + "56436", + "56437", + "56438", + "56440", + "56441", + "56442", + "56443", + "56444", + "56446", + "56447", + "56448", + "56449", + "56450", + "56452", + "56453", + "56455", + "56456", + "56458", + "56459", + "56461", + "56464", + "56465", + "56466", + "56467", + "56468", + "56469", + "56470", + "56472", + "56473", + "56474", + "56475", + "56477", + "56478", + "56479", + "56481", + "56482", + "56484", + "56501", + "56502", + "56510", + "56511", + "56514", + "56515", + "56516", + "56517", + "56518", + "56519", + "56520", + "56521", + "56522", + "56523", + "56524", + "56525", + "56527", + "56528", + "56529", + "56531", + "56533", + "56534", + "56535", + "56536", + "56537", + "56538", + "56540", + "56541", + "56542", + "56543", + "56544", + "56545", + "56546", + "56547", + "56548", + "56549", + "56550", + "56551", + "56552", + "56553", + "56554", + "56556", + "56557", + "56560", + "56561", + "56562", + "56563", + "56565", + "56566", + "56567", + "56568", + "56569", + "56570", + "56571", + "56572", + "56573", + "56574", + "56575", + "56576", + "56577", + "56578", + "56579", + "56580", + "56581", + "56583", + "56584", + "56585", + "56586", + "56587", + "56588", + "56589", + "56590", + "56591", + "56592", + "56593", + "56594", + "56601", + "56619", + "56621", + "56623", + "56626", + "56627", + "56628", + "56629", + "56630", + "56631", + "56633", + "56634", + "56636", + "56637", + "56639", + "56641", + "56644", + "56646", + "56647", + "56649", + "56650", + "56651", + "56652", + "56653", + "56654", + "56655", + "56657", + "56658", + "56659", + "56660", + "56661", + "56662", + "56663", + "56666", + "56667", + "56668", + "56669", + "56670", + "56671", + "56672", + "56673", + "56676", + "56678", + "56679", + "56680", + "56681", + "56682", + "56683", + "56684", + "56685", + "56686", + "56687", + "56688", + "56701", + "56710", + "56711", + "56713", + "56714", + "56715", + "56716", + "56720", + "56721", + "56722", + "56723", + "56724", + "56725", + "56726", + "56727", + "56728", + "56729", + "56731", + "56732", + "56733", + "56734", + "56735", + "56736", + "56737", + "56738", + "56740", + "56741", + "56742", + "56744", + "56748", + "56750", + "56751", + "56754", + "56755", + "56756", + "56757", + "56758", + "56759", + "56760", + "56761", + "56762", + "56763", + "56901", + "56902", + "56904", + "56908", + "56915", + "56920", + "56933", + "56935", + "56944", + "56945", + "56950", + "56965", + "56966", + "56967", + "56968", + "56969", + "56970", + "56971", + "56972", + "56973", + "56998", + "56999", + "57001", + "57002", + "57003", + "57004", + "57005", + "57006", + "57007", + "57010", + "57012", + "57013", + "57014", + "57015", + "57016", + "57017", + "57018", + "57020", + "57021", + "57022", + "57024", + "57025", + "57026", + "57027", + "57028", + "57029", + "57030", + "57031", + "57032", + "57033", + "57034", + "57035", + "57036", + "57037", + "57038", + "57039", + "57040", + "57041", + "57042", + "57043", + "57045", + "57046", + "57047", + "57048", + "57049", + "57050", + "57051", + "57052", + "57053", + "57054", + "57055", + "57056", + "57057", + "57058", + "57059", + "57061", + "57062", + "57063", + "57064", + "57065", + "57066", + "57067", + "57068", + "57069", + "57070", + "57071", + "57072", + "57073", + "57075", + "57076", + "57077", + "57078", + "57079", + "57101", + "57103", + "57104", + "57105", + "57106", + "57107", + "57108", + "57109", + "57110", + "57117", + "57118", + "57186", + "57188", + "57189", + "57192", + "57193", + "57194", + "57195", + "57196", + "57197", + "57198", + "57201", + "57212", + "57213", + "57214", + "57216", + "57217", + "57218", + "57219", + "57220", + "57221", + "57223", + "57224", + "57225", + "57226", + "57227", + "57231", + "57232", + "57233", + "57234", + "57235", + "57236", + "57237", + "57238", + "57239", + "57241", + "57242", + "57243", + "57245", + "57246", + "57247", + "57248", + "57249", + "57251", + "57252", + "57253", + "57255", + "57256", + "57257", + "57258", + "57259", + "57260", + "57261", + "57262", + "57263", + "57264", + "57265", + "57266", + "57268", + "57269", + "57270", + "57271", + "57272", + "57273", + "57274", + "57276", + "57278", + "57279", + "57301", + "57311", + "57312", + "57313", + "57314", + "57315", + "57317", + "57319", + "57321", + "57322", + "57323", + "57324", + "57325", + "57326", + "57328", + "57329", + "57330", + "57331", + "57332", + "57334", + "57335", + "57337", + "57339", + "57340", + "57341", + "57342", + "57344", + "57345", + "57346", + "57348", + "57349", + "57350", + "57353", + "57354", + "57355", + "57356", + "57358", + "57359", + "57361", + "57362", + "57363", + "57364", + "57365", + "57366", + "57367", + "57368", + "57369", + "57370", + "57371", + "57373", + "57374", + "57375", + "57376", + "57379", + "57380", + "57381", + "57382", + "57383", + "57384", + "57385", + "57386", + "57399", + "57401", + "57402", + "57420", + "57421", + "57422", + "57424", + "57426", + "57427", + "57428", + "57429", + "57430", + "57432", + "57433", + "57434", + "57435", + "57436", + "57437", + "57438", + "57439", + "57440", + "57441", + "57442", + "57445", + "57446", + "57448", + "57449", + "57450", + "57451", + "57452", + "57454", + "57455", + "57456", + "57457", + "57460", + "57461", + "57465", + "57466", + "57467", + "57468", + "57469", + "57470", + "57471", + "57472", + "57473", + "57474", + "57475", + "57476", + "57477", + "57479", + "57481", + "57501", + "57520", + "57521", + "57522", + "57523", + "57528", + "57529", + "57531", + "57532", + "57533", + "57534", + "57536", + "57537", + "57538", + "57540", + "57541", + "57543", + "57544", + "57547", + "57548", + "57551", + "57552", + "57553", + "57555", + "57559", + "57560", + "57562", + "57563", + "57564", + "57566", + "57567", + "57568", + "57569", + "57570", + "57571", + "57572", + "57574", + "57576", + "57577", + "57579", + "57580", + "57584", + "57585", + "57601", + "57620", + "57621", + "57622", + "57623", + "57625", + "57626", + "57630", + "57631", + "57632", + "57633", + "57634", + "57636", + "57638", + "57639", + "57640", + "57641", + "57642", + "57644", + "57645", + "57646", + "57648", + "57649", + "57650", + "57651", + "57652", + "57656", + "57657", + "57658", + "57659", + "57660", + "57661", + "57701", + "57702", + "57703", + "57706", + "57709", + "57714", + "57716", + "57717", + "57718", + "57719", + "57720", + "57722", + "57724", + "57725", + "57730", + "57732", + "57735", + "57737", + "57738", + "57741", + "57744", + "57745", + "57747", + "57748", + "57750", + "57751", + "57752", + "57754", + "57755", + "57756", + "57758", + "57759", + "57760", + "57761", + "57762", + "57763", + "57764", + "57766", + "57767", + "57769", + "57770", + "57772", + "57773", + "57775", + "57776", + "57779", + "57780", + "57782", + "57783", + "57785", + "57787", + "57788", + "57790", + "57791", + "57792", + "57793", + "57794", + "57799", + "58001", + "58002", + "58004", + "58005", + "58006", + "58007", + "58008", + "58009", + "58011", + "58012", + "58013", + "58015", + "58016", + "58017", + "58018", + "58021", + "58027", + "58029", + "58030", + "58031", + "58032", + "58033", + "58035", + "58036", + "58038", + "58040", + "58041", + "58042", + "58043", + "58045", + "58046", + "58047", + "58048", + "58049", + "58051", + "58052", + "58053", + "58054", + "58056", + "58057", + "58058", + "58059", + "58060", + "58061", + "58062", + "58063", + "58064", + "58065", + "58067", + "58068", + "58069", + "58071", + "58072", + "58074", + "58075", + "58076", + "58077", + "58078", + "58079", + "58081", + "58102", + "58103", + "58104", + "58105", + "58106", + "58107", + "58108", + "58109", + "58121", + "58122", + "58124", + "58125", + "58126", + "58201", + "58202", + "58203", + "58204", + "58205", + "58206", + "58207", + "58208", + "58210", + "58212", + "58214", + "58216", + "58218", + "58219", + "58220", + "58222", + "58223", + "58224", + "58225", + "58227", + "58228", + "58229", + "58230", + "58231", + "58233", + "58235", + "58236", + "58237", + "58238", + "58239", + "58240", + "58241", + "58243", + "58244", + "58249", + "58250", + "58251", + "58254", + "58255", + "58256", + "58257", + "58258", + "58259", + "58260", + "58261", + "58262", + "58265", + "58266", + "58267", + "58269", + "58270", + "58271", + "58272", + "58273", + "58274", + "58275", + "58276", + "58277", + "58278", + "58281", + "58282", + "58301", + "58310", + "58311", + "58313", + "58316", + "58317", + "58318", + "58319", + "58321", + "58323", + "58324", + "58325", + "58327", + "58329", + "58330", + "58331", + "58332", + "58335", + "58338", + "58339", + "58341", + "58343", + "58344", + "58345", + "58346", + "58348", + "58351", + "58352", + "58353", + "58355", + "58356", + "58357", + "58361", + "58362", + "58363", + "58365", + "58366", + "58367", + "58368", + "58369", + "58370", + "58372", + "58374", + "58377", + "58379", + "58380", + "58381", + "58382", + "58384", + "58385", + "58386", + "58401", + "58402", + "58405", + "58413", + "58415", + "58416", + "58418", + "58420", + "58421", + "58422", + "58423", + "58424", + "58425", + "58426", + "58428", + "58429", + "58430", + "58431", + "58433", + "58436", + "58438", + "58439", + "58440", + "58441", + "58442", + "58443", + "58444", + "58445", + "58448", + "58451", + "58452", + "58454", + "58455", + "58456", + "58458", + "58460", + "58461", + "58463", + "58464", + "58466", + "58467", + "58472", + "58474", + "58475", + "58476", + "58477", + "58478", + "58479", + "58480", + "58481", + "58482", + "58483", + "58484", + "58486", + "58487", + "58488", + "58490", + "58492", + "58494", + "58495", + "58496", + "58497", + "58501", + "58502", + "58503", + "58504", + "58505", + "58506", + "58507", + "58520", + "58521", + "58523", + "58524", + "58528", + "58529", + "58530", + "58531", + "58532", + "58533", + "58535", + "58538", + "58540", + "58541", + "58542", + "58544", + "58545", + "58549", + "58552", + "58554", + "58558", + "58559", + "58560", + "58561", + "58562", + "58563", + "58564", + "58565", + "58566", + "58568", + "58569", + "58570", + "58571", + "58572", + "58573", + "58575", + "58576", + "58577", + "58579", + "58580", + "58581", + "58601", + "58602", + "58620", + "58621", + "58622", + "58623", + "58625", + "58626", + "58627", + "58630", + "58631", + "58632", + "58634", + "58636", + "58638", + "58639", + "58640", + "58641", + "58642", + "58643", + "58644", + "58645", + "58646", + "58647", + "58649", + "58650", + "58651", + "58652", + "58653", + "58654", + "58655", + "58656", + "58701", + "58702", + "58703", + "58704", + "58705", + "58707", + "58710", + "58711", + "58712", + "58713", + "58716", + "58718", + "58721", + "58722", + "58723", + "58725", + "58727", + "58730", + "58731", + "58733", + "58734", + "58735", + "58736", + "58737", + "58740", + "58741", + "58744", + "58746", + "58748", + "58750", + "58752", + "58755", + "58756", + "58757", + "58758", + "58759", + "58760", + "58761", + "58762", + "58763", + "58765", + "58768", + "58769", + "58770", + "58771", + "58772", + "58773", + "58775", + "58776", + "58778", + "58779", + "58781", + "58782", + "58783", + "58784", + "58785", + "58787", + "58788", + "58789", + "58790", + "58792", + "58793", + "58794", + "58795", + "58801", + "58802", + "58803", + "58830", + "58831", + "58833", + "58835", + "58838", + "58843", + "58844", + "58845", + "58847", + "58849", + "58852", + "58853", + "58854", + "58856", + "59001", + "59002", + "59003", + "59004", + "59006", + "59007", + "59008", + "59010", + "59011", + "59012", + "59013", + "59014", + "59015", + "59016", + "59018", + "59019", + "59020", + "59022", + "59024", + "59025", + "59026", + "59027", + "59028", + "59029", + "59030", + "59031", + "59032", + "59033", + "59034", + "59035", + "59036", + "59037", + "59038", + "59039", + "59041", + "59043", + "59044", + "59046", + "59047", + "59050", + "59052", + "59053", + "59054", + "59055", + "59057", + "59058", + "59059", + "59061", + "59062", + "59063", + "59064", + "59065", + "59066", + "59067", + "59068", + "59069", + "59070", + "59071", + "59072", + "59073", + "59074", + "59075", + "59076", + "59077", + "59078", + "59079", + "59081", + "59082", + "59083", + "59084", + "59085", + "59086", + "59087", + "59088", + "59089", + "59101", + "59102", + "59103", + "59104", + "59105", + "59106", + "59107", + "59108", + "59111", + "59112", + "59114", + "59115", + "59116", + "59117", + "59201", + "59211", + "59212", + "59213", + "59214", + "59215", + "59217", + "59218", + "59219", + "59221", + "59222", + "59223", + "59225", + "59226", + "59230", + "59231", + "59240", + "59241", + "59242", + "59243", + "59244", + "59247", + "59248", + "59250", + "59252", + "59253", + "59254", + "59255", + "59256", + "59257", + "59258", + "59259", + "59260", + "59261", + "59262", + "59263", + "59270", + "59273", + "59274", + "59275", + "59276", + "59301", + "59311", + "59312", + "59313", + "59314", + "59315", + "59316", + "59317", + "59318", + "59319", + "59322", + "59323", + "59324", + "59326", + "59327", + "59330", + "59332", + "59333", + "59336", + "59337", + "59338", + "59339", + "59341", + "59343", + "59344", + "59345", + "59347", + "59349", + "59351", + "59353", + "59354", + "59401", + "59402", + "59403", + "59404", + "59405", + "59406", + "59410", + "59411", + "59412", + "59414", + "59416", + "59417", + "59418", + "59419", + "59420", + "59421", + "59422", + "59424", + "59425", + "59427", + "59430", + "59432", + "59433", + "59434", + "59435", + "59436", + "59440", + "59441", + "59442", + "59443", + "59444", + "59446", + "59447", + "59448", + "59450", + "59451", + "59452", + "59453", + "59454", + "59456", + "59457", + "59460", + "59461", + "59462", + "59463", + "59464", + "59465", + "59466", + "59467", + "59468", + "59469", + "59471", + "59472", + "59474", + "59477", + "59479", + "59480", + "59482", + "59483", + "59484", + "59485", + "59486", + "59487", + "59489", + "59501", + "59520", + "59521", + "59522", + "59523", + "59524", + "59525", + "59526", + "59527", + "59528", + "59529", + "59530", + "59531", + "59532", + "59535", + "59537", + "59538", + "59540", + "59542", + "59544", + "59545", + "59546", + "59547", + "59601", + "59602", + "59604", + "59620", + "59623", + "59624", + "59625", + "59626", + "59631", + "59632", + "59633", + "59634", + "59635", + "59636", + "59638", + "59639", + "59640", + "59641", + "59642", + "59643", + "59644", + "59645", + "59647", + "59648", + "59701", + "59702", + "59703", + "59707", + "59710", + "59711", + "59713", + "59714", + "59715", + "59716", + "59717", + "59718", + "59719", + "59720", + "59721", + "59722", + "59724", + "59725", + "59727", + "59728", + "59729", + "59730", + "59731", + "59732", + "59733", + "59735", + "59736", + "59739", + "59740", + "59741", + "59743", + "59745", + "59746", + "59747", + "59748", + "59749", + "59750", + "59751", + "59752", + "59754", + "59755", + "59756", + "59758", + "59759", + "59760", + "59761", + "59762", + "59771", + "59772", + "59773", + "59801", + "59802", + "59803", + "59804", + "59806", + "59807", + "59808", + "59812", + "59820", + "59821", + "59823", + "59824", + "59825", + "59826", + "59827", + "59828", + "59829", + "59830", + "59831", + "59832", + "59833", + "59834", + "59835", + "59837", + "59840", + "59841", + "59842", + "59843", + "59844", + "59845", + "59846", + "59847", + "59848", + "59851", + "59853", + "59854", + "59855", + "59856", + "59858", + "59859", + "59860", + "59863", + "59864", + "59865", + "59866", + "59867", + "59868", + "59870", + "59871", + "59872", + "59873", + "59874", + "59875", + "59901", + "59903", + "59904", + "59910", + "59911", + "59912", + "59913", + "59914", + "59915", + "59916", + "59917", + "59918", + "59919", + "59920", + "59921", + "59922", + "59923", + "59925", + "59926", + "59927", + "59928", + "59929", + "59930", + "59931", + "59932", + "59933", + "59934", + "59935", + "59936", + "59937", + "60001", + "60002", + "60004", + "60005", + "60006", + "60007", + "60008", + "60009", + "60010", + "60011", + "60012", + "60013", + "60014", + "60015", + "60016", + "60017", + "60018", + "60019", + "60020", + "60021", + "60022", + "60025", + "60026", + "60029", + "60030", + "60031", + "60033", + "60034", + "60035", + "60037", + "60038", + "60039", + "60040", + "60041", + "60042", + "60043", + "60044", + "60045", + "60046", + "60047", + "60048", + "60049", + "60050", + "60051", + "60053", + "60055", + "60056", + "60060", + "60061", + "60062", + "60064", + "60065", + "60067", + "60068", + "60069", + "60070", + "60071", + "60072", + "60073", + "60074", + "60075", + "60076", + "60077", + "60078", + "60079", + "60081", + "60082", + "60083", + "60084", + "60085", + "60086", + "60087", + "60088", + "60089", + "60090", + "60091", + "60092", + "60093", + "60094", + "60095", + "60096", + "60097", + "60098", + "60099", + "60101", + "60102", + "60103", + "60104", + "60105", + "60106", + "60107", + "60108", + "60109", + "60110", + "60111", + "60112", + "60113", + "60115", + "60116", + "60117", + "60118", + "60119", + "60120", + "60121", + "60122", + "60123", + "60124", + "60125", + "60126", + "60128", + "60129", + "60130", + "60131", + "60132", + "60133", + "60134", + "60135", + "60136", + "60137", + "60138", + "60139", + "60140", + "60141", + "60142", + "60143", + "60144", + "60145", + "60146", + "60147", + "60148", + "60150", + "60151", + "60152", + "60153", + "60154", + "60155", + "60156", + "60157", + "60159", + "60160", + "60161", + "60162", + "60163", + "60164", + "60165", + "60168", + "60169", + "60170", + "60171", + "60172", + "60173", + "60174", + "60175", + "60176", + "60177", + "60178", + "60179", + "60180", + "60181", + "60183", + "60184", + "60185", + "60186", + "60187", + "60188", + "60189", + "60190", + "60191", + "60192", + "60193", + "60194", + "60195", + "60196", + "60197", + "60199", + "60201", + "60202", + "60203", + "60204", + "60208", + "60209", + "60290", + "60301", + "60302", + "60303", + "60304", + "60305", + "60399", + "60401", + "60402", + "60403", + "60404", + "60406", + "60407", + "60408", + "60409", + "60410", + "60411", + "60412", + "60415", + "60416", + "60417", + "60418", + "60419", + "60420", + "60421", + "60422", + "60423", + "60424", + "60425", + "60426", + "60428", + "60429", + "60430", + "60431", + "60432", + "60433", + "60434", + "60435", + "60436", + "60437", + "60438", + "60439", + "60440", + "60441", + "60442", + "60443", + "60444", + "60445", + "60446", + "60447", + "60448", + "60449", + "60450", + "60451", + "60452", + "60453", + "60454", + "60455", + "60456", + "60457", + "60458", + "60459", + "60460", + "60461", + "60462", + "60463", + "60464", + "60465", + "60466", + "60467", + "60468", + "60469", + "60470", + "60471", + "60472", + "60473", + "60474", + "60475", + "60476", + "60477", + "60478", + "60479", + "60480", + "60481", + "60482", + "60484", + "60487", + "60490", + "60491", + "60499", + "60501", + "60502", + "60503", + "60504", + "60505", + "60506", + "60507", + "60510", + "60511", + "60512", + "60513", + "60514", + "60515", + "60516", + "60517", + "60518", + "60519", + "60520", + "60521", + "60522", + "60523", + "60525", + "60526", + "60527", + "60530", + "60531", + "60532", + "60534", + "60536", + "60537", + "60538", + "60539", + "60540", + "60541", + "60542", + "60543", + "60544", + "60545", + "60546", + "60548", + "60549", + "60550", + "60551", + "60552", + "60553", + "60554", + "60555", + "60556", + "60557", + "60558", + "60559", + "60560", + "60561", + "60563", + "60564", + "60565", + "60566", + "60567", + "60568", + "60569", + "60570", + "60572", + "60585", + "60586", + "60597", + "60598", + "60599", + "60601", + "60602", + "60603", + "60604", + "60605", + "60606", + "60607", + "60608", + "60609", + "60610", + "60611", + "60612", + "60613", + "60614", + "60615", + "60616", + "60617", + "60618", + "60619", + "60620", + "60621", + "60622", + "60623", + "60624", + "60625", + "60626", + "60628", + "60629", + "60630", + "60631", + "60632", + "60633", + "60634", + "60636", + "60637", + "60638", + "60639", + "60640", + "60641", + "60642", + "60643", + "60644", + "60645", + "60646", + "60647", + "60649", + "60651", + "60652", + "60653", + "60654", + "60655", + "60656", + "60657", + "60659", + "60660", + "60661", + "60663", + "60664", + "60666", + "60668", + "60669", + "60670", + "60673", + "60674", + "60675", + "60677", + "60678", + "60679", + "60680", + "60681", + "60682", + "60684", + "60685", + "60686", + "60687", + "60688", + "60689", + "60690", + "60691", + "60693", + "60694", + "60695", + "60696", + "60697", + "60699", + "60701", + "60706", + "60707", + "60712", + "60714", + "60803", + "60804", + "60805", + "60827", + "60901", + "60910", + "60911", + "60912", + "60913", + "60914", + "60915", + "60917", + "60918", + "60919", + "60920", + "60921", + "60922", + "60924", + "60926", + "60927", + "60928", + "60929", + "60930", + "60931", + "60932", + "60933", + "60934", + "60935", + "60936", + "60938", + "60939", + "60940", + "60941", + "60942", + "60944", + "60945", + "60946", + "60948", + "60949", + "60950", + "60951", + "60952", + "60953", + "60954", + "60955", + "60956", + "60957", + "60958", + "60959", + "60960", + "60961", + "60962", + "60963", + "60964", + "60966", + "60967", + "60968", + "60969", + "60970", + "60973", + "60974", + "61001", + "61006", + "61007", + "61008", + "61010", + "61011", + "61012", + "61013", + "61014", + "61015", + "61016", + "61018", + "61019", + "61020", + "61021", + "61024", + "61025", + "61027", + "61028", + "61030", + "61031", + "61032", + "61036", + "61037", + "61038", + "61039", + "61041", + "61042", + "61043", + "61044", + "61046", + "61047", + "61048", + "61049", + "61050", + "61051", + "61052", + "61053", + "61054", + "61057", + "61059", + "61060", + "61061", + "61062", + "61063", + "61064", + "61065", + "61067", + "61068", + "61070", + "61071", + "61072", + "61073", + "61074", + "61075", + "61077", + "61078", + "61079", + "61080", + "61081", + "61084", + "61085", + "61087", + "61088", + "61089", + "61091", + "61101", + "61102", + "61103", + "61104", + "61105", + "61106", + "61107", + "61108", + "61109", + "61110", + "61111", + "61112", + "61114", + "61115", + "61125", + "61126", + "61130", + "61131", + "61132", + "61201", + "61204", + "61230", + "61231", + "61232", + "61233", + "61234", + "61235", + "61236", + "61237", + "61238", + "61239", + "61240", + "61241", + "61242", + "61243", + "61244", + "61250", + "61251", + "61252", + "61254", + "61256", + "61257", + "61258", + "61259", + "61260", + "61261", + "61262", + "61263", + "61264", + "61265", + "61266", + "61270", + "61272", + "61273", + "61274", + "61275", + "61276", + "61277", + "61278", + "61279", + "61281", + "61282", + "61283", + "61284", + "61285", + "61299", + "61301", + "61310", + "61311", + "61312", + "61313", + "61314", + "61315", + "61316", + "61317", + "61318", + "61319", + "61320", + "61321", + "61322", + "61323", + "61324", + "61325", + "61326", + "61327", + "61328", + "61329", + "61330", + "61331", + "61332", + "61333", + "61334", + "61335", + "61336", + "61337", + "61338", + "61340", + "61341", + "61342", + "61344", + "61345", + "61346", + "61348", + "61349", + "61350", + "61353", + "61354", + "61356", + "61358", + "61359", + "61360", + "61361", + "61362", + "61363", + "61364", + "61367", + "61368", + "61369", + "61370", + "61371", + "61372", + "61373", + "61374", + "61375", + "61376", + "61377", + "61378", + "61379", + "61401", + "61402", + "61410", + "61411", + "61412", + "61413", + "61414", + "61415", + "61416", + "61417", + "61418", + "61419", + "61420", + "61421", + "61422", + "61423", + "61424", + "61425", + "61426", + "61427", + "61428", + "61430", + "61431", + "61432", + "61433", + "61434", + "61435", + "61436", + "61437", + "61438", + "61439", + "61440", + "61441", + "61442", + "61443", + "61447", + "61448", + "61449", + "61450", + "61451", + "61452", + "61453", + "61454", + "61455", + "61458", + "61459", + "61460", + "61462", + "61465", + "61466", + "61467", + "61468", + "61469", + "61470", + "61471", + "61472", + "61473", + "61474", + "61475", + "61476", + "61477", + "61478", + "61479", + "61480", + "61482", + "61483", + "61484", + "61485", + "61486", + "61488", + "61489", + "61490", + "61491", + "61501", + "61516", + "61517", + "61519", + "61520", + "61523", + "61524", + "61525", + "61526", + "61528", + "61529", + "61530", + "61531", + "61532", + "61533", + "61534", + "61535", + "61536", + "61537", + "61539", + "61540", + "61541", + "61542", + "61543", + "61544", + "61545", + "61546", + "61547", + "61548", + "61550", + "61552", + "61553", + "61554", + "61555", + "61558", + "61559", + "61560", + "61561", + "61562", + "61563", + "61564", + "61565", + "61567", + "61568", + "61569", + "61570", + "61571", + "61572", + "61601", + "61602", + "61603", + "61604", + "61605", + "61606", + "61607", + "61610", + "61611", + "61612", + "61613", + "61614", + "61615", + "61616", + "61625", + "61629", + "61630", + "61633", + "61634", + "61635", + "61636", + "61637", + "61638", + "61639", + "61641", + "61643", + "61650", + "61651", + "61652", + "61653", + "61654", + "61655", + "61656", + "61701", + "61702", + "61704", + "61705", + "61709", + "61710", + "61720", + "61721", + "61722", + "61723", + "61724", + "61725", + "61726", + "61727", + "61728", + "61729", + "61730", + "61731", + "61732", + "61733", + "61734", + "61735", + "61736", + "61737", + "61738", + "61739", + "61740", + "61741", + "61742", + "61743", + "61744", + "61745", + "61747", + "61748", + "61749", + "61750", + "61751", + "61752", + "61753", + "61754", + "61755", + "61756", + "61758", + "61759", + "61760", + "61761", + "61764", + "61769", + "61770", + "61771", + "61772", + "61773", + "61774", + "61775", + "61776", + "61777", + "61778", + "61790", + "61791", + "61799", + "61801", + "61802", + "61803", + "61810", + "61811", + "61812", + "61813", + "61814", + "61815", + "61816", + "61817", + "61818", + "61820", + "61821", + "61822", + "61824", + "61825", + "61826", + "61830", + "61831", + "61832", + "61833", + "61834", + "61839", + "61840", + "61841", + "61842", + "61843", + "61844", + "61845", + "61846", + "61847", + "61848", + "61849", + "61850", + "61851", + "61852", + "61853", + "61854", + "61855", + "61856", + "61857", + "61858", + "61859", + "61862", + "61863", + "61864", + "61865", + "61866", + "61870", + "61871", + "61872", + "61873", + "61874", + "61875", + "61876", + "61877", + "61878", + "61880", + "61882", + "61883", + "61884", + "61910", + "61911", + "61912", + "61913", + "61914", + "61917", + "61919", + "61920", + "61924", + "61925", + "61928", + "61929", + "61930", + "61931", + "61932", + "61933", + "61936", + "61937", + "61938", + "61940", + "61941", + "61942", + "61943", + "61944", + "61949", + "61951", + "61953", + "61955", + "61956", + "61957", + "62001", + "62002", + "62006", + "62009", + "62010", + "62011", + "62012", + "62013", + "62014", + "62015", + "62016", + "62017", + "62018", + "62019", + "62021", + "62022", + "62023", + "62024", + "62025", + "62026", + "62027", + "62028", + "62030", + "62031", + "62032", + "62033", + "62034", + "62035", + "62036", + "62037", + "62040", + "62044", + "62045", + "62046", + "62047", + "62048", + "62049", + "62050", + "62051", + "62052", + "62053", + "62054", + "62056", + "62058", + "62059", + "62060", + "62061", + "62062", + "62063", + "62065", + "62067", + "62069", + "62070", + "62071", + "62074", + "62075", + "62076", + "62077", + "62078", + "62079", + "62080", + "62081", + "62082", + "62083", + "62084", + "62085", + "62086", + "62087", + "62088", + "62089", + "62090", + "62091", + "62092", + "62093", + "62094", + "62095", + "62097", + "62098", + "62201", + "62202", + "62203", + "62204", + "62205", + "62206", + "62207", + "62208", + "62214", + "62215", + "62216", + "62217", + "62218", + "62219", + "62220", + "62221", + "62222", + "62223", + "62224", + "62225", + "62226", + "62230", + "62231", + "62232", + "62233", + "62234", + "62236", + "62237", + "62238", + "62239", + "62240", + "62241", + "62242", + "62243", + "62244", + "62245", + "62246", + "62247", + "62248", + "62249", + "62250", + "62252", + "62253", + "62254", + "62255", + "62256", + "62257", + "62258", + "62259", + "62260", + "62261", + "62262", + "62263", + "62264", + "62265", + "62266", + "62268", + "62269", + "62271", + "62272", + "62273", + "62274", + "62275", + "62277", + "62278", + "62279", + "62280", + "62281", + "62282", + "62284", + "62285", + "62286", + "62288", + "62289", + "62292", + "62293", + "62294", + "62295", + "62297", + "62298", + "62301", + "62305", + "62306", + "62311", + "62312", + "62313", + "62314", + "62316", + "62319", + "62320", + "62321", + "62323", + "62324", + "62325", + "62326", + "62329", + "62330", + "62334", + "62336", + "62338", + "62339", + "62340", + "62341", + "62343", + "62344", + "62345", + "62346", + "62347", + "62348", + "62349", + "62351", + "62352", + "62353", + "62354", + "62355", + "62356", + "62357", + "62358", + "62359", + "62360", + "62361", + "62362", + "62363", + "62365", + "62366", + "62367", + "62370", + "62373", + "62374", + "62375", + "62376", + "62378", + "62379", + "62380", + "62401", + "62410", + "62411", + "62413", + "62414", + "62417", + "62418", + "62419", + "62420", + "62421", + "62422", + "62423", + "62424", + "62425", + "62426", + "62427", + "62428", + "62431", + "62432", + "62433", + "62434", + "62435", + "62436", + "62438", + "62439", + "62440", + "62441", + "62442", + "62443", + "62444", + "62445", + "62446", + "62447", + "62448", + "62449", + "62450", + "62451", + "62452", + "62454", + "62458", + "62459", + "62460", + "62461", + "62462", + "62463", + "62464", + "62465", + "62466", + "62467", + "62468", + "62469", + "62471", + "62473", + "62474", + "62475", + "62476", + "62477", + "62478", + "62479", + "62480", + "62481", + "62501", + "62510", + "62512", + "62513", + "62514", + "62515", + "62517", + "62518", + "62519", + "62520", + "62521", + "62522", + "62523", + "62524", + "62525", + "62526", + "62530", + "62531", + "62532", + "62533", + "62534", + "62535", + "62536", + "62537", + "62538", + "62539", + "62540", + "62541", + "62543", + "62544", + "62545", + "62546", + "62547", + "62548", + "62549", + "62550", + "62551", + "62553", + "62554", + "62555", + "62556", + "62557", + "62558", + "62560", + "62561", + "62563", + "62565", + "62567", + "62568", + "62570", + "62571", + "62572", + "62573", + "62601", + "62610", + "62611", + "62612", + "62613", + "62615", + "62617", + "62618", + "62621", + "62622", + "62624", + "62625", + "62626", + "62627", + "62628", + "62629", + "62630", + "62631", + "62633", + "62634", + "62635", + "62638", + "62639", + "62640", + "62642", + "62643", + "62644", + "62649", + "62650", + "62651", + "62655", + "62656", + "62659", + "62660", + "62661", + "62662", + "62663", + "62664", + "62665", + "62666", + "62667", + "62668", + "62670", + "62671", + "62672", + "62673", + "62674", + "62675", + "62677", + "62681", + "62682", + "62683", + "62684", + "62685", + "62688", + "62689", + "62690", + "62691", + "62692", + "62693", + "62694", + "62695", + "62701", + "62702", + "62703", + "62704", + "62705", + "62706", + "62707", + "62708", + "62711", + "62712", + "62713", + "62715", + "62716", + "62719", + "62721", + "62722", + "62723", + "62726", + "62736", + "62739", + "62746", + "62756", + "62757", + "62761", + "62762", + "62763", + "62764", + "62765", + "62766", + "62767", + "62769", + "62776", + "62777", + "62781", + "62786", + "62791", + "62794", + "62796", + "62801", + "62803", + "62805", + "62806", + "62807", + "62808", + "62809", + "62810", + "62811", + "62812", + "62814", + "62815", + "62816", + "62817", + "62818", + "62819", + "62820", + "62821", + "62822", + "62823", + "62824", + "62825", + "62827", + "62828", + "62829", + "62830", + "62831", + "62832", + "62833", + "62834", + "62835", + "62836", + "62837", + "62838", + "62839", + "62840", + "62841", + "62842", + "62843", + "62844", + "62846", + "62848", + "62849", + "62850", + "62851", + "62852", + "62853", + "62854", + "62855", + "62856", + "62857", + "62858", + "62859", + "62860", + "62861", + "62862", + "62863", + "62864", + "62865", + "62866", + "62867", + "62868", + "62869", + "62870", + "62871", + "62872", + "62874", + "62875", + "62876", + "62877", + "62878", + "62879", + "62880", + "62881", + "62882", + "62883", + "62884", + "62885", + "62886", + "62887", + "62888", + "62889", + "62890", + "62891", + "62892", + "62893", + "62894", + "62895", + "62896", + "62897", + "62898", + "62899", + "62901", + "62902", + "62903", + "62905", + "62906", + "62907", + "62908", + "62909", + "62910", + "62912", + "62914", + "62915", + "62916", + "62917", + "62918", + "62919", + "62920", + "62921", + "62922", + "62923", + "62924", + "62926", + "62927", + "62928", + "62930", + "62931", + "62932", + "62933", + "62934", + "62935", + "62938", + "62939", + "62940", + "62941", + "62942", + "62943", + "62946", + "62947", + "62948", + "62949", + "62950", + "62951", + "62952", + "62953", + "62954", + "62955", + "62956", + "62957", + "62958", + "62959", + "62960", + "62961", + "62962", + "62963", + "62964", + "62965", + "62966", + "62967", + "62969", + "62970", + "62971", + "62972", + "62973", + "62974", + "62975", + "62976", + "62977", + "62979", + "62982", + "62983", + "62984", + "62985", + "62987", + "62988", + "62990", + "62992", + "62993", + "62994", + "62995", + "62996", + "62997", + "62998", + "62999", + "63001", + "63005", + "63006", + "63010", + "63011", + "63012", + "63013", + "63014", + "63015", + "63016", + "63017", + "63019", + "63020", + "63021", + "63022", + "63023", + "63024", + "63025", + "63026", + "63028", + "63030", + "63031", + "63032", + "63033", + "63034", + "63036", + "63037", + "63038", + "63039", + "63040", + "63041", + "63042", + "63043", + "63044", + "63045", + "63047", + "63048", + "63049", + "63050", + "63051", + "63052", + "63053", + "63055", + "63056", + "63057", + "63060", + "63061", + "63065", + "63066", + "63068", + "63069", + "63070", + "63071", + "63072", + "63073", + "63074", + "63077", + "63079", + "63080", + "63084", + "63087", + "63088", + "63089", + "63090", + "63091", + "63099", + "63101", + "63102", + "63103", + "63104", + "63105", + "63106", + "63107", + "63108", + "63109", + "63110", + "63111", + "63112", + "63113", + "63114", + "63115", + "63116", + "63117", + "63118", + "63119", + "63120", + "63121", + "63122", + "63123", + "63124", + "63125", + "63126", + "63127", + "63128", + "63129", + "63130", + "63131", + "63132", + "63133", + "63134", + "63135", + "63136", + "63137", + "63138", + "63139", + "63140", + "63141", + "63143", + "63144", + "63145", + "63146", + "63147", + "63150", + "63151", + "63155", + "63156", + "63157", + "63158", + "63160", + "63163", + "63164", + "63166", + "63167", + "63169", + "63171", + "63177", + "63178", + "63179", + "63180", + "63182", + "63188", + "63190", + "63195", + "63196", + "63197", + "63198", + "63199", + "63301", + "63302", + "63303", + "63304", + "63330", + "63332", + "63333", + "63334", + "63336", + "63338", + "63339", + "63341", + "63342", + "63343", + "63344", + "63345", + "63346", + "63347", + "63348", + "63349", + "63350", + "63351", + "63352", + "63353", + "63357", + "63359", + "63361", + "63362", + "63363", + "63365", + "63366", + "63367", + "63368", + "63369", + "63370", + "63373", + "63376", + "63377", + "63378", + "63379", + "63380", + "63381", + "63382", + "63383", + "63384", + "63385", + "63386", + "63387", + "63388", + "63389", + "63390", + "63401", + "63430", + "63431", + "63432", + "63433", + "63434", + "63435", + "63436", + "63437", + "63438", + "63439", + "63440", + "63441", + "63442", + "63443", + "63445", + "63446", + "63447", + "63448", + "63450", + "63451", + "63452", + "63453", + "63454", + "63456", + "63457", + "63458", + "63459", + "63460", + "63461", + "63462", + "63463", + "63464", + "63465", + "63466", + "63467", + "63468", + "63469", + "63471", + "63472", + "63473", + "63474", + "63501", + "63530", + "63531", + "63532", + "63533", + "63534", + "63535", + "63536", + "63537", + "63538", + "63539", + "63540", + "63541", + "63543", + "63544", + "63545", + "63546", + "63547", + "63548", + "63549", + "63551", + "63552", + "63555", + "63556", + "63557", + "63558", + "63559", + "63560", + "63561", + "63563", + "63565", + "63566", + "63567", + "63601", + "63620", + "63621", + "63622", + "63623", + "63624", + "63625", + "63626", + "63627", + "63628", + "63629", + "63630", + "63631", + "63632", + "63633", + "63636", + "63637", + "63638", + "63640", + "63645", + "63648", + "63650", + "63651", + "63653", + "63654", + "63655", + "63656", + "63660", + "63662", + "63663", + "63664", + "63665", + "63666", + "63670", + "63673", + "63674", + "63675", + "63701", + "63702", + "63703", + "63730", + "63732", + "63735", + "63736", + "63737", + "63738", + "63739", + "63740", + "63742", + "63743", + "63744", + "63745", + "63746", + "63747", + "63748", + "63750", + "63751", + "63752", + "63755", + "63758", + "63760", + "63763", + "63764", + "63766", + "63767", + "63769", + "63770", + "63771", + "63774", + "63775", + "63776", + "63779", + "63780", + "63781", + "63782", + "63783", + "63784", + "63785", + "63787", + "63801", + "63820", + "63821", + "63822", + "63823", + "63824", + "63825", + "63826", + "63827", + "63828", + "63829", + "63830", + "63833", + "63834", + "63837", + "63839", + "63840", + "63841", + "63845", + "63846", + "63847", + "63848", + "63849", + "63850", + "63851", + "63852", + "63853", + "63855", + "63857", + "63860", + "63862", + "63863", + "63866", + "63867", + "63868", + "63869", + "63870", + "63873", + "63874", + "63875", + "63876", + "63877", + "63878", + "63879", + "63880", + "63881", + "63882", + "63901", + "63902", + "63931", + "63932", + "63933", + "63934", + "63935", + "63936", + "63937", + "63938", + "63939", + "63940", + "63941", + "63942", + "63943", + "63944", + "63945", + "63950", + "63951", + "63952", + "63953", + "63954", + "63955", + "63956", + "63957", + "63960", + "63961", + "63962", + "63963", + "63964", + "63965", + "63966", + "63967", + "64001", + "64002", + "64011", + "64012", + "64013", + "64014", + "64015", + "64016", + "64017", + "64018", + "64019", + "64020", + "64021", + "64022", + "64024", + "64028", + "64029", + "64030", + "64034", + "64035", + "64036", + "64037", + "64040", + "64048", + "64050", + "64051", + "64052", + "64053", + "64054", + "64055", + "64056", + "64057", + "64058", + "64060", + "64061", + "64062", + "64063", + "64064", + "64065", + "64066", + "64067", + "64068", + "64069", + "64070", + "64071", + "64072", + "64073", + "64074", + "64075", + "64076", + "64077", + "64078", + "64079", + "64080", + "64081", + "64082", + "64083", + "64084", + "64085", + "64086", + "64088", + "64089", + "64090", + "64092", + "64093", + "64096", + "64097", + "64098", + "64101", + "64102", + "64105", + "64106", + "64108", + "64109", + "64110", + "64111", + "64112", + "64113", + "64114", + "64116", + "64117", + "64118", + "64119", + "64120", + "64121", + "64123", + "64124", + "64125", + "64126", + "64127", + "64128", + "64129", + "64130", + "64131", + "64132", + "64133", + "64134", + "64136", + "64137", + "64138", + "64139", + "64141", + "64144", + "64145", + "64146", + "64147", + "64148", + "64149", + "64150", + "64151", + "64152", + "64153", + "64154", + "64155", + "64156", + "64157", + "64158", + "64161", + "64162", + "64163", + "64164", + "64165", + "64166", + "64167", + "64168", + "64170", + "64171", + "64172", + "64179", + "64180", + "64183", + "64184", + "64185", + "64187", + "64188", + "64190", + "64191", + "64192", + "64193", + "64194", + "64195", + "64196", + "64197", + "64198", + "64199", + "64401", + "64402", + "64420", + "64421", + "64422", + "64423", + "64424", + "64426", + "64427", + "64428", + "64429", + "64430", + "64431", + "64432", + "64433", + "64434", + "64436", + "64437", + "64438", + "64439", + "64440", + "64441", + "64442", + "64443", + "64444", + "64445", + "64446", + "64447", + "64448", + "64449", + "64451", + "64453", + "64454", + "64455", + "64456", + "64457", + "64458", + "64459", + "64461", + "64463", + "64465", + "64466", + "64467", + "64468", + "64469", + "64470", + "64471", + "64473", + "64474", + "64475", + "64476", + "64477", + "64479", + "64480", + "64481", + "64482", + "64483", + "64484", + "64485", + "64486", + "64487", + "64489", + "64490", + "64491", + "64492", + "64493", + "64494", + "64496", + "64497", + "64498", + "64499", + "64501", + "64502", + "64503", + "64504", + "64505", + "64506", + "64507", + "64508", + "64601", + "64620", + "64622", + "64623", + "64624", + "64625", + "64628", + "64630", + "64631", + "64632", + "64633", + "64635", + "64636", + "64637", + "64638", + "64639", + "64640", + "64641", + "64642", + "64643", + "64644", + "64645", + "64646", + "64647", + "64648", + "64649", + "64650", + "64651", + "64652", + "64653", + "64654", + "64655", + "64656", + "64657", + "64658", + "64659", + "64660", + "64661", + "64664", + "64667", + "64668", + "64670", + "64671", + "64672", + "64673", + "64674", + "64676", + "64679", + "64680", + "64681", + "64682", + "64683", + "64686", + "64688", + "64689", + "64701", + "64720", + "64722", + "64723", + "64724", + "64725", + "64726", + "64728", + "64730", + "64733", + "64734", + "64735", + "64738", + "64739", + "64740", + "64741", + "64742", + "64743", + "64744", + "64745", + "64746", + "64747", + "64748", + "64750", + "64752", + "64755", + "64756", + "64759", + "64761", + "64762", + "64763", + "64765", + "64766", + "64767", + "64769", + "64770", + "64771", + "64772", + "64776", + "64778", + "64779", + "64780", + "64781", + "64783", + "64784", + "64788", + "64789", + "64790", + "64801", + "64802", + "64803", + "64804", + "64830", + "64831", + "64832", + "64833", + "64834", + "64835", + "64836", + "64840", + "64841", + "64842", + "64843", + "64844", + "64847", + "64848", + "64849", + "64850", + "64853", + "64854", + "64855", + "64856", + "64857", + "64858", + "64859", + "64861", + "64862", + "64863", + "64864", + "64865", + "64866", + "64867", + "64868", + "64869", + "64870", + "64873", + "64874", + "64944", + "64999", + "65001", + "65010", + "65011", + "65013", + "65014", + "65016", + "65017", + "65018", + "65020", + "65023", + "65024", + "65025", + "65026", + "65032", + "65034", + "65035", + "65036", + "65037", + "65038", + "65039", + "65040", + "65041", + "65042", + "65043", + "65046", + "65047", + "65048", + "65049", + "65050", + "65051", + "65052", + "65053", + "65054", + "65055", + "65058", + "65059", + "65061", + "65062", + "65063", + "65064", + "65065", + "65066", + "65067", + "65068", + "65069", + "65072", + "65074", + "65075", + "65076", + "65077", + "65078", + "65079", + "65080", + "65081", + "65082", + "65083", + "65084", + "65085", + "65101", + "65102", + "65103", + "65104", + "65105", + "65106", + "65107", + "65108", + "65109", + "65110", + "65111", + "65201", + "65202", + "65203", + "65205", + "65211", + "65212", + "65215", + "65216", + "65217", + "65218", + "65230", + "65231", + "65232", + "65233", + "65236", + "65237", + "65239", + "65240", + "65243", + "65244", + "65246", + "65247", + "65248", + "65250", + "65251", + "65254", + "65255", + "65256", + "65257", + "65258", + "65259", + "65260", + "65261", + "65262", + "65263", + "65264", + "65265", + "65270", + "65274", + "65275", + "65276", + "65278", + "65279", + "65280", + "65281", + "65282", + "65283", + "65284", + "65285", + "65286", + "65287", + "65299", + "65301", + "65302", + "65305", + "65320", + "65321", + "65322", + "65323", + "65324", + "65325", + "65326", + "65327", + "65329", + "65330", + "65332", + "65333", + "65334", + "65335", + "65336", + "65337", + "65338", + "65339", + "65340", + "65344", + "65345", + "65347", + "65348", + "65349", + "65350", + "65351", + "65354", + "65355", + "65360", + "65401", + "65402", + "65409", + "65436", + "65438", + "65439", + "65440", + "65441", + "65443", + "65444", + "65446", + "65449", + "65452", + "65453", + "65456", + "65457", + "65459", + "65461", + "65462", + "65463", + "65464", + "65466", + "65468", + "65470", + "65473", + "65479", + "65483", + "65484", + "65486", + "65501", + "65529", + "65532", + "65534", + "65535", + "65536", + "65541", + "65542", + "65543", + "65546", + "65548", + "65550", + "65552", + "65555", + "65556", + "65557", + "65559", + "65560", + "65564", + "65565", + "65566", + "65567", + "65570", + "65571", + "65580", + "65582", + "65583", + "65584", + "65586", + "65588", + "65589", + "65590", + "65591", + "65601", + "65603", + "65604", + "65605", + "65606", + "65607", + "65608", + "65609", + "65610", + "65611", + "65612", + "65613", + "65614", + "65615", + "65616", + "65617", + "65618", + "65619", + "65620", + "65622", + "65623", + "65624", + "65625", + "65626", + "65627", + "65629", + "65630", + "65631", + "65632", + "65633", + "65634", + "65635", + "65636", + "65637", + "65638", + "65640", + "65641", + "65644", + "65645", + "65646", + "65647", + "65648", + "65649", + "65650", + "65652", + "65653", + "65654", + "65655", + "65656", + "65657", + "65658", + "65660", + "65661", + "65662", + "65663", + "65664", + "65666", + "65667", + "65668", + "65669", + "65672", + "65673", + "65674", + "65675", + "65676", + "65679", + "65680", + "65681", + "65682", + "65685", + "65686", + "65688", + "65689", + "65690", + "65692", + "65701", + "65702", + "65704", + "65705", + "65706", + "65707", + "65708", + "65710", + "65711", + "65712", + "65713", + "65714", + "65715", + "65717", + "65720", + "65721", + "65722", + "65723", + "65724", + "65725", + "65726", + "65727", + "65728", + "65729", + "65730", + "65731", + "65732", + "65733", + "65734", + "65735", + "65737", + "65738", + "65739", + "65740", + "65741", + "65742", + "65744", + "65745", + "65746", + "65747", + "65752", + "65753", + "65754", + "65755", + "65756", + "65757", + "65759", + "65760", + "65761", + "65762", + "65764", + "65765", + "65766", + "65767", + "65768", + "65769", + "65770", + "65771", + "65772", + "65773", + "65774", + "65775", + "65776", + "65777", + "65778", + "65779", + "65781", + "65783", + "65784", + "65785", + "65786", + "65787", + "65788", + "65789", + "65790", + "65791", + "65793", + "65801", + "65802", + "65803", + "65804", + "65805", + "65806", + "65807", + "65808", + "65809", + "65810", + "65814", + "65817", + "65890", + "65897", + "65898", + "65899", + "66002", + "66006", + "66007", + "66008", + "66010", + "66012", + "66013", + "66014", + "66015", + "66016", + "66017", + "66018", + "66019", + "66020", + "66021", + "66023", + "66024", + "66025", + "66026", + "66027", + "66030", + "66031", + "66032", + "66033", + "66035", + "66036", + "66039", + "66040", + "66041", + "66042", + "66043", + "66044", + "66045", + "66046", + "66047", + "66048", + "66049", + "66050", + "66051", + "66052", + "66053", + "66054", + "66056", + "66058", + "66060", + "66061", + "66062", + "66063", + "66064", + "66066", + "66067", + "66070", + "66071", + "66072", + "66073", + "66075", + "66076", + "66077", + "66078", + "66079", + "66080", + "66083", + "66085", + "66086", + "66087", + "66088", + "66090", + "66091", + "66092", + "66093", + "66094", + "66095", + "66097", + "66101", + "66102", + "66103", + "66104", + "66105", + "66106", + "66109", + "66110", + "66111", + "66112", + "66113", + "66115", + "66117", + "66118", + "66119", + "66160", + "66201", + "66202", + "66203", + "66204", + "66205", + "66206", + "66207", + "66208", + "66209", + "66210", + "66211", + "66212", + "66213", + "66214", + "66215", + "66216", + "66217", + "66218", + "66219", + "66220", + "66221", + "66222", + "66223", + "66224", + "66225", + "66226", + "66227", + "66250", + "66251", + "66276", + "66279", + "66282", + "66283", + "66285", + "66286", + "66401", + "66402", + "66403", + "66404", + "66406", + "66407", + "66408", + "66409", + "66411", + "66412", + "66413", + "66414", + "66415", + "66416", + "66417", + "66418", + "66419", + "66420", + "66422", + "66423", + "66424", + "66425", + "66426", + "66427", + "66428", + "66429", + "66431", + "66432", + "66434", + "66436", + "66438", + "66439", + "66440", + "66441", + "66442", + "66449", + "66451", + "66501", + "66502", + "66503", + "66505", + "66506", + "66507", + "66508", + "66509", + "66510", + "66512", + "66514", + "66515", + "66516", + "66517", + "66518", + "66520", + "66521", + "66522", + "66523", + "66524", + "66526", + "66527", + "66528", + "66531", + "66532", + "66533", + "66534", + "66535", + "66536", + "66537", + "66538", + "66539", + "66540", + "66541", + "66542", + "66543", + "66544", + "66546", + "66547", + "66548", + "66549", + "66550", + "66552", + "66554", + "66601", + "66603", + "66604", + "66605", + "66606", + "66607", + "66608", + "66609", + "66610", + "66611", + "66612", + "66614", + "66615", + "66616", + "66617", + "66618", + "66619", + "66620", + "66621", + "66622", + "66624", + "66625", + "66626", + "66628", + "66629", + "66630", + "66636", + "66637", + "66642", + "66647", + "66652", + "66653", + "66667", + "66675", + "66683", + "66692", + "66699", + "66701", + "66710", + "66711", + "66712", + "66713", + "66714", + "66716", + "66717", + "66720", + "66724", + "66725", + "66728", + "66732", + "66733", + "66734", + "66735", + "66736", + "66738", + "66739", + "66740", + "66741", + "66742", + "66743", + "66746", + "66748", + "66749", + "66751", + "66753", + "66754", + "66755", + "66756", + "66757", + "66758", + "66759", + "66760", + "66761", + "66762", + "66763", + "66767", + "66769", + "66770", + "66771", + "66772", + "66773", + "66775", + "66776", + "66777", + "66778", + "66779", + "66780", + "66781", + "66782", + "66783", + "66801", + "66830", + "66833", + "66834", + "66835", + "66838", + "66839", + "66840", + "66842", + "66843", + "66845", + "66846", + "66849", + "66850", + "66851", + "66852", + "66853", + "66854", + "66855", + "66856", + "66857", + "66858", + "66859", + "66860", + "66861", + "66862", + "66863", + "66864", + "66865", + "66866", + "66868", + "66869", + "66870", + "66871", + "66872", + "66873", + "66901", + "66930", + "66932", + "66933", + "66935", + "66936", + "66937", + "66938", + "66939", + "66940", + "66941", + "66942", + "66943", + "66944", + "66945", + "66946", + "66948", + "66949", + "66951", + "66952", + "66953", + "66955", + "66956", + "66958", + "66959", + "66960", + "66961", + "66962", + "66963", + "66964", + "66966", + "66967", + "66968", + "66970", + "67001", + "67002", + "67003", + "67004", + "67005", + "67008", + "67009", + "67010", + "67012", + "67013", + "67016", + "67017", + "67018", + "67019", + "67020", + "67021", + "67022", + "67023", + "67024", + "67025", + "67026", + "67028", + "67029", + "67030", + "67031", + "67035", + "67036", + "67037", + "67038", + "67039", + "67041", + "67042", + "67045", + "67047", + "67049", + "67050", + "67051", + "67052", + "67053", + "67054", + "67055", + "67056", + "67057", + "67058", + "67059", + "67060", + "67061", + "67062", + "67063", + "67065", + "67066", + "67067", + "67068", + "67070", + "67071", + "67072", + "67073", + "67074", + "67101", + "67102", + "67103", + "67104", + "67105", + "67106", + "67107", + "67108", + "67109", + "67110", + "67111", + "67112", + "67114", + "67117", + "67118", + "67119", + "67120", + "67122", + "67123", + "67124", + "67127", + "67131", + "67132", + "67133", + "67134", + "67135", + "67137", + "67138", + "67140", + "67142", + "67143", + "67144", + "67146", + "67147", + "67149", + "67150", + "67151", + "67152", + "67154", + "67155", + "67156", + "67159", + "67201", + "67202", + "67203", + "67204", + "67205", + "67206", + "67207", + "67208", + "67209", + "67210", + "67211", + "67212", + "67213", + "67214", + "67215", + "67216", + "67217", + "67218", + "67219", + "67220", + "67221", + "67223", + "67226", + "67227", + "67228", + "67230", + "67232", + "67235", + "67260", + "67275", + "67276", + "67277", + "67278", + "67301", + "67330", + "67332", + "67333", + "67334", + "67335", + "67336", + "67337", + "67340", + "67341", + "67342", + "67344", + "67345", + "67346", + "67347", + "67349", + "67351", + "67352", + "67353", + "67354", + "67355", + "67356", + "67357", + "67360", + "67361", + "67363", + "67364", + "67401", + "67402", + "67410", + "67416", + "67417", + "67418", + "67420", + "67422", + "67423", + "67425", + "67427", + "67428", + "67430", + "67431", + "67432", + "67436", + "67437", + "67438", + "67439", + "67441", + "67442", + "67443", + "67444", + "67445", + "67446", + "67447", + "67448", + "67449", + "67450", + "67451", + "67452", + "67454", + "67455", + "67456", + "67457", + "67458", + "67459", + "67460", + "67464", + "67466", + "67467", + "67468", + "67470", + "67473", + "67474", + "67475", + "67476", + "67478", + "67480", + "67481", + "67482", + "67483", + "67484", + "67485", + "67487", + "67490", + "67491", + "67492", + "67501", + "67502", + "67504", + "67505", + "67510", + "67511", + "67512", + "67513", + "67514", + "67515", + "67516", + "67518", + "67519", + "67520", + "67521", + "67522", + "67523", + "67524", + "67525", + "67526", + "67529", + "67530", + "67543", + "67544", + "67545", + "67546", + "67547", + "67548", + "67550", + "67552", + "67553", + "67554", + "67556", + "67557", + "67559", + "67560", + "67561", + "67563", + "67564", + "67565", + "67566", + "67567", + "67568", + "67570", + "67572", + "67573", + "67574", + "67575", + "67576", + "67578", + "67579", + "67581", + "67583", + "67584", + "67585", + "67601", + "67621", + "67622", + "67623", + "67625", + "67626", + "67627", + "67628", + "67629", + "67631", + "67632", + "67634", + "67635", + "67637", + "67638", + "67639", + "67640", + "67642", + "67643", + "67644", + "67645", + "67646", + "67647", + "67648", + "67649", + "67650", + "67651", + "67653", + "67654", + "67656", + "67657", + "67658", + "67659", + "67660", + "67661", + "67663", + "67664", + "67665", + "67667", + "67669", + "67671", + "67672", + "67673", + "67674", + "67675", + "67701", + "67730", + "67731", + "67732", + "67733", + "67734", + "67735", + "67736", + "67737", + "67738", + "67739", + "67740", + "67741", + "67743", + "67744", + "67745", + "67747", + "67748", + "67749", + "67751", + "67752", + "67753", + "67756", + "67757", + "67758", + "67761", + "67762", + "67764", + "67801", + "67831", + "67834", + "67835", + "67836", + "67837", + "67838", + "67839", + "67840", + "67841", + "67842", + "67843", + "67844", + "67846", + "67849", + "67850", + "67851", + "67853", + "67854", + "67855", + "67857", + "67859", + "67860", + "67861", + "67862", + "67863", + "67864", + "67865", + "67867", + "67868", + "67869", + "67870", + "67871", + "67876", + "67877", + "67878", + "67879", + "67880", + "67882", + "67901", + "67905", + "67950", + "67951", + "67952", + "67953", + "67954", + "68001", + "68002", + "68003", + "68004", + "68005", + "68007", + "68008", + "68009", + "68010", + "68014", + "68015", + "68016", + "68017", + "68018", + "68019", + "68020", + "68022", + "68023", + "68025", + "68026", + "68028", + "68029", + "68030", + "68031", + "68033", + "68034", + "68036", + "68037", + "68038", + "68039", + "68040", + "68041", + "68042", + "68044", + "68045", + "68046", + "68047", + "68048", + "68050", + "68055", + "68056", + "68057", + "68058", + "68059", + "68061", + "68062", + "68063", + "68064", + "68065", + "68066", + "68067", + "68068", + "68069", + "68070", + "68071", + "68072", + "68073", + "68101", + "68102", + "68103", + "68104", + "68105", + "68106", + "68107", + "68108", + "68109", + "68110", + "68111", + "68112", + "68113", + "68114", + "68116", + "68117", + "68118", + "68119", + "68120", + "68122", + "68123", + "68124", + "68127", + "68128", + "68130", + "68131", + "68132", + "68133", + "68134", + "68135", + "68136", + "68137", + "68138", + "68139", + "68142", + "68144", + "68145", + "68147", + "68152", + "68154", + "68155", + "68157", + "68164", + "68172", + "68175", + "68176", + "68178", + "68179", + "68180", + "68181", + "68182", + "68183", + "68197", + "68198", + "68301", + "68303", + "68304", + "68305", + "68307", + "68309", + "68310", + "68313", + "68314", + "68315", + "68316", + "68317", + "68318", + "68319", + "68320", + "68321", + "68322", + "68323", + "68324", + "68325", + "68326", + "68327", + "68328", + "68329", + "68330", + "68331", + "68332", + "68333", + "68335", + "68336", + "68337", + "68338", + "68339", + "68340", + "68341", + "68342", + "68343", + "68344", + "68345", + "68346", + "68347", + "68348", + "68349", + "68350", + "68351", + "68352", + "68354", + "68355", + "68357", + "68358", + "68359", + "68360", + "68361", + "68362", + "68364", + "68365", + "68366", + "68367", + "68368", + "68370", + "68371", + "68372", + "68375", + "68376", + "68377", + "68378", + "68379", + "68380", + "68381", + "68382", + "68401", + "68402", + "68403", + "68404", + "68405", + "68406", + "68407", + "68409", + "68410", + "68413", + "68414", + "68415", + "68416", + "68417", + "68418", + "68419", + "68420", + "68421", + "68422", + "68423", + "68424", + "68428", + "68429", + "68430", + "68431", + "68433", + "68434", + "68436", + "68437", + "68438", + "68439", + "68440", + "68441", + "68442", + "68443", + "68444", + "68445", + "68446", + "68447", + "68448", + "68450", + "68452", + "68453", + "68454", + "68455", + "68456", + "68457", + "68458", + "68460", + "68461", + "68462", + "68463", + "68464", + "68465", + "68466", + "68467", + "68501", + "68502", + "68503", + "68504", + "68505", + "68506", + "68507", + "68508", + "68509", + "68510", + "68512", + "68514", + "68516", + "68517", + "68520", + "68521", + "68522", + "68523", + "68524", + "68526", + "68527", + "68528", + "68529", + "68531", + "68532", + "68542", + "68544", + "68583", + "68588", + "68601", + "68602", + "68620", + "68621", + "68622", + "68623", + "68624", + "68626", + "68627", + "68628", + "68629", + "68631", + "68632", + "68633", + "68634", + "68635", + "68636", + "68637", + "68638", + "68640", + "68641", + "68642", + "68643", + "68644", + "68647", + "68648", + "68649", + "68651", + "68652", + "68653", + "68654", + "68655", + "68658", + "68659", + "68660", + "68661", + "68662", + "68663", + "68664", + "68665", + "68666", + "68667", + "68669", + "68701", + "68702", + "68710", + "68711", + "68713", + "68714", + "68715", + "68716", + "68717", + "68718", + "68719", + "68720", + "68722", + "68723", + "68724", + "68725", + "68726", + "68727", + "68728", + "68729", + "68730", + "68731", + "68732", + "68733", + "68734", + "68735", + "68736", + "68738", + "68739", + "68740", + "68741", + "68742", + "68743", + "68745", + "68746", + "68747", + "68748", + "68749", + "68751", + "68752", + "68753", + "68755", + "68756", + "68757", + "68758", + "68759", + "68760", + "68761", + "68763", + "68764", + "68765", + "68766", + "68767", + "68768", + "68769", + "68770", + "68771", + "68773", + "68774", + "68776", + "68777", + "68778", + "68779", + "68780", + "68781", + "68783", + "68784", + "68785", + "68786", + "68787", + "68788", + "68789", + "68790", + "68791", + "68792", + "68801", + "68802", + "68803", + "68810", + "68812", + "68813", + "68814", + "68815", + "68816", + "68817", + "68818", + "68820", + "68821", + "68822", + "68823", + "68824", + "68825", + "68826", + "68827", + "68828", + "68831", + "68832", + "68833", + "68834", + "68835", + "68836", + "68837", + "68838", + "68840", + "68841", + "68842", + "68843", + "68844", + "68845", + "68846", + "68847", + "68848", + "68849", + "68850", + "68852", + "68853", + "68854", + "68855", + "68856", + "68858", + "68859", + "68860", + "68861", + "68862", + "68863", + "68864", + "68865", + "68866", + "68869", + "68870", + "68871", + "68872", + "68873", + "68874", + "68875", + "68876", + "68878", + "68879", + "68881", + "68882", + "68883", + "68901", + "68902", + "68920", + "68922", + "68923", + "68924", + "68925", + "68926", + "68927", + "68928", + "68929", + "68930", + "68932", + "68933", + "68934", + "68935", + "68936", + "68937", + "68938", + "68939", + "68940", + "68941", + "68942", + "68943", + "68944", + "68945", + "68946", + "68947", + "68948", + "68949", + "68950", + "68952", + "68954", + "68955", + "68956", + "68957", + "68958", + "68959", + "68960", + "68961", + "68964", + "68966", + "68967", + "68969", + "68970", + "68971", + "68972", + "68973", + "68974", + "68975", + "68976", + "68977", + "68978", + "68979", + "68980", + "68981", + "68982", + "69001", + "69020", + "69021", + "69022", + "69023", + "69024", + "69025", + "69026", + "69027", + "69028", + "69029", + "69030", + "69032", + "69033", + "69034", + "69036", + "69037", + "69038", + "69039", + "69040", + "69041", + "69042", + "69043", + "69044", + "69045", + "69046", + "69101", + "69103", + "69120", + "69121", + "69122", + "69123", + "69125", + "69127", + "69128", + "69129", + "69130", + "69131", + "69132", + "69133", + "69134", + "69135", + "69138", + "69140", + "69141", + "69142", + "69143", + "69144", + "69145", + "69146", + "69147", + "69148", + "69149", + "69150", + "69151", + "69152", + "69153", + "69154", + "69155", + "69156", + "69157", + "69160", + "69161", + "69162", + "69163", + "69165", + "69166", + "69167", + "69168", + "69169", + "69170", + "69171", + "69190", + "69201", + "69210", + "69211", + "69212", + "69214", + "69216", + "69217", + "69218", + "69219", + "69220", + "69221", + "69301", + "69331", + "69333", + "69334", + "69335", + "69336", + "69337", + "69339", + "69340", + "69341", + "69343", + "69345", + "69346", + "69347", + "69348", + "69350", + "69351", + "69352", + "69353", + "69354", + "69355", + "69356", + "69357", + "69358", + "69360", + "69361", + "69363", + "69365", + "69366", + "69367", + "70001", + "70002", + "70003", + "70004", + "70005", + "70006", + "70009", + "70010", + "70011", + "70030", + "70031", + "70032", + "70033", + "70036", + "70037", + "70038", + "70039", + "70040", + "70041", + "70043", + "70044", + "70047", + "70049", + "70050", + "70051", + "70052", + "70053", + "70054", + "70055", + "70056", + "70057", + "70058", + "70059", + "70060", + "70062", + "70063", + "70064", + "70065", + "70067", + "70068", + "70069", + "70070", + "70071", + "70072", + "70073", + "70075", + "70076", + "70078", + "70079", + "70080", + "70081", + "70082", + "70083", + "70084", + "70085", + "70086", + "70087", + "70090", + "70091", + "70092", + "70093", + "70094", + "70096", + "70097", + "70112", + "70113", + "70114", + "70115", + "70116", + "70117", + "70118", + "70119", + "70121", + "70122", + "70123", + "70124", + "70125", + "70126", + "70127", + "70128", + "70129", + "70130", + "70131", + "70139", + "70140", + "70141", + "70142", + "70143", + "70145", + "70146", + "70148", + "70149", + "70150", + "70151", + "70152", + "70153", + "70154", + "70156", + "70157", + "70158", + "70159", + "70160", + "70161", + "70162", + "70163", + "70164", + "70165", + "70166", + "70167", + "70170", + "70172", + "70174", + "70175", + "70176", + "70177", + "70178", + "70179", + "70181", + "70182", + "70183", + "70184", + "70185", + "70186", + "70187", + "70189", + "70190", + "70195", + "70301", + "70302", + "70310", + "70339", + "70340", + "70341", + "70342", + "70343", + "70344", + "70345", + "70346", + "70352", + "70353", + "70354", + "70355", + "70356", + "70357", + "70358", + "70359", + "70360", + "70361", + "70363", + "70364", + "70371", + "70372", + "70373", + "70374", + "70375", + "70377", + "70380", + "70381", + "70390", + "70391", + "70392", + "70393", + "70394", + "70395", + "70397", + "70401", + "70402", + "70403", + "70404", + "70420", + "70421", + "70422", + "70426", + "70427", + "70429", + "70431", + "70433", + "70434", + "70435", + "70436", + "70437", + "70438", + "70441", + "70442", + "70443", + "70444", + "70445", + "70446", + "70447", + "70448", + "70449", + "70450", + "70451", + "70452", + "70453", + "70454", + "70455", + "70456", + "70457", + "70458", + "70459", + "70460", + "70461", + "70462", + "70463", + "70464", + "70465", + "70466", + "70467", + "70469", + "70470", + "70471", + "70500", + "70501", + "70502", + "70503", + "70504", + "70505", + "70506", + "70507", + "70508", + "70509", + "70510", + "70511", + "70512", + "70513", + "70514", + "70515", + "70516", + "70517", + "70518", + "70519", + "70520", + "70521", + "70522", + "70523", + "70524", + "70525", + "70526", + "70527", + "70528", + "70529", + "70531", + "70532", + "70533", + "70534", + "70535", + "70537", + "70538", + "70540", + "70541", + "70542", + "70543", + "70544", + "70546", + "70548", + "70549", + "70550", + "70551", + "70552", + "70554", + "70555", + "70556", + "70558", + "70559", + "70560", + "70562", + "70563", + "70569", + "70570", + "70571", + "70575", + "70576", + "70577", + "70578", + "70580", + "70581", + "70582", + "70583", + "70584", + "70585", + "70586", + "70589", + "70591", + "70592", + "70593", + "70595", + "70596", + "70598", + "70601", + "70602", + "70605", + "70606", + "70607", + "70609", + "70611", + "70612", + "70615", + "70616", + "70629", + "70630", + "70631", + "70632", + "70633", + "70634", + "70637", + "70638", + "70639", + "70640", + "70643", + "70644", + "70645", + "70646", + "70647", + "70648", + "70650", + "70651", + "70652", + "70653", + "70654", + "70655", + "70656", + "70657", + "70658", + "70659", + "70660", + "70661", + "70662", + "70663", + "70664", + "70665", + "70668", + "70669", + "70704", + "70706", + "70707", + "70710", + "70711", + "70712", + "70714", + "70715", + "70718", + "70719", + "70721", + "70722", + "70723", + "70725", + "70726", + "70727", + "70728", + "70729", + "70730", + "70732", + "70733", + "70734", + "70736", + "70737", + "70738", + "70739", + "70740", + "70743", + "70744", + "70747", + "70748", + "70749", + "70750", + "70752", + "70753", + "70754", + "70755", + "70756", + "70757", + "70759", + "70760", + "70761", + "70762", + "70763", + "70764", + "70765", + "70767", + "70769", + "70770", + "70772", + "70773", + "70774", + "70775", + "70776", + "70777", + "70778", + "70780", + "70782", + "70783", + "70784", + "70785", + "70786", + "70787", + "70788", + "70789", + "70791", + "70792", + "70801", + "70802", + "70803", + "70804", + "70805", + "70806", + "70807", + "70808", + "70809", + "70810", + "70811", + "70812", + "70813", + "70814", + "70815", + "70816", + "70817", + "70818", + "70819", + "70820", + "70821", + "70822", + "70823", + "70825", + "70826", + "70827", + "70831", + "70833", + "70835", + "70836", + "70837", + "70873", + "70874", + "70879", + "70883", + "70884", + "70891", + "70892", + "70893", + "70894", + "70895", + "70896", + "70898", + "71001", + "71002", + "71003", + "71004", + "71006", + "71007", + "71008", + "71009", + "71016", + "71018", + "71019", + "71021", + "71023", + "71024", + "71027", + "71028", + "71029", + "71030", + "71031", + "71032", + "71033", + "71034", + "71037", + "71038", + "71039", + "71040", + "71043", + "71044", + "71045", + "71046", + "71047", + "71048", + "71049", + "71050", + "71051", + "71052", + "71055", + "71058", + "71060", + "71061", + "71063", + "71064", + "71065", + "71066", + "71067", + "71068", + "71069", + "71070", + "71071", + "71072", + "71073", + "71075", + "71078", + "71079", + "71080", + "71082", + "71101", + "71102", + "71103", + "71104", + "71105", + "71106", + "71107", + "71108", + "71109", + "71110", + "71111", + "71112", + "71113", + "71115", + "71118", + "71119", + "71120", + "71129", + "71130", + "71133", + "71134", + "71135", + "71136", + "71137", + "71138", + "71148", + "71149", + "71150", + "71151", + "71152", + "71153", + "71154", + "71156", + "71161", + "71162", + "71163", + "71164", + "71165", + "71166", + "71171", + "71172", + "71201", + "71202", + "71203", + "71207", + "71208", + "71209", + "71210", + "71211", + "71212", + "71213", + "71217", + "71218", + "71219", + "71220", + "71221", + "71222", + "71223", + "71225", + "71226", + "71227", + "71229", + "71230", + "71232", + "71233", + "71234", + "71235", + "71237", + "71238", + "71240", + "71241", + "71242", + "71243", + "71245", + "71247", + "71249", + "71250", + "71251", + "71253", + "71254", + "71256", + "71259", + "71260", + "71261", + "71263", + "71264", + "71266", + "71268", + "71269", + "71270", + "71272", + "71273", + "71275", + "71276", + "71277", + "71279", + "71280", + "71281", + "71282", + "71284", + "71286", + "71291", + "71292", + "71294", + "71295", + "71301", + "71302", + "71303", + "71306", + "71307", + "71309", + "71315", + "71316", + "71320", + "71322", + "71323", + "71324", + "71325", + "71326", + "71327", + "71328", + "71329", + "71330", + "71331", + "71333", + "71334", + "71336", + "71339", + "71340", + "71341", + "71342", + "71343", + "71345", + "71346", + "71348", + "71350", + "71351", + "71353", + "71354", + "71355", + "71356", + "71357", + "71358", + "71359", + "71360", + "71361", + "71362", + "71363", + "71365", + "71366", + "71367", + "71368", + "71369", + "71371", + "71373", + "71375", + "71377", + "71378", + "71401", + "71403", + "71404", + "71405", + "71406", + "71407", + "71409", + "71410", + "71411", + "71414", + "71415", + "71416", + "71417", + "71418", + "71419", + "71422", + "71423", + "71424", + "71425", + "71426", + "71427", + "71428", + "71429", + "71430", + "71431", + "71432", + "71433", + "71434", + "71435", + "71438", + "71439", + "71440", + "71441", + "71443", + "71446", + "71447", + "71448", + "71449", + "71450", + "71452", + "71454", + "71455", + "71456", + "71457", + "71458", + "71459", + "71460", + "71461", + "71462", + "71463", + "71465", + "71466", + "71467", + "71468", + "71469", + "71471", + "71472", + "71473", + "71474", + "71475", + "71477", + "71479", + "71480", + "71483", + "71485", + "71486", + "71496", + "71497", + "71601", + "71602", + "71603", + "71611", + "71612", + "71613", + "71630", + "71631", + "71635", + "71638", + "71639", + "71640", + "71642", + "71643", + "71644", + "71646", + "71647", + "71651", + "71652", + "71653", + "71654", + "71655", + "71656", + "71657", + "71658", + "71659", + "71660", + "71661", + "71662", + "71663", + "71665", + "71666", + "71667", + "71670", + "71671", + "71674", + "71675", + "71676", + "71677", + "71678", + "71701", + "71711", + "71720", + "71721", + "71722", + "71724", + "71725", + "71726", + "71728", + "71730", + "71731", + "71740", + "71742", + "71743", + "71744", + "71745", + "71747", + "71748", + "71749", + "71750", + "71751", + "71752", + "71753", + "71754", + "71758", + "71759", + "71762", + "71763", + "71764", + "71765", + "71766", + "71768", + "71770", + "71772", + "71801", + "71802", + "71820", + "71822", + "71823", + "71825", + "71826", + "71827", + "71828", + "71831", + "71832", + "71833", + "71834", + "71835", + "71836", + "71837", + "71838", + "71839", + "71840", + "71841", + "71842", + "71844", + "71845", + "71846", + "71847", + "71851", + "71852", + "71853", + "71854", + "71855", + "71857", + "71858", + "71859", + "71860", + "71861", + "71862", + "71864", + "71865", + "71866", + "71901", + "71902", + "71903", + "71909", + "71910", + "71913", + "71914", + "71920", + "71921", + "71922", + "71923", + "71929", + "71932", + "71933", + "71935", + "71937", + "71940", + "71941", + "71942", + "71943", + "71944", + "71945", + "71949", + "71950", + "71951", + "71952", + "71953", + "71956", + "71957", + "71958", + "71959", + "71960", + "71961", + "71962", + "71964", + "71965", + "71966", + "71968", + "71969", + "71970", + "71971", + "71972", + "71973", + "71998", + "71999", + "72001", + "72002", + "72003", + "72004", + "72005", + "72006", + "72007", + "72010", + "72011", + "72012", + "72013", + "72014", + "72015", + "72016", + "72017", + "72018", + "72019", + "72020", + "72021", + "72022", + "72023", + "72024", + "72025", + "72026", + "72027", + "72028", + "72029", + "72030", + "72031", + "72032", + "72033", + "72034", + "72035", + "72036", + "72037", + "72038", + "72039", + "72040", + "72041", + "72042", + "72043", + "72044", + "72045", + "72046", + "72047", + "72048", + "72051", + "72052", + "72053", + "72055", + "72057", + "72058", + "72059", + "72060", + "72061", + "72063", + "72064", + "72065", + "72066", + "72067", + "72068", + "72069", + "72070", + "72072", + "72073", + "72074", + "72075", + "72076", + "72078", + "72079", + "72080", + "72081", + "72082", + "72083", + "72084", + "72085", + "72086", + "72087", + "72088", + "72089", + "72099", + "72101", + "72102", + "72103", + "72104", + "72105", + "72106", + "72107", + "72108", + "72110", + "72111", + "72112", + "72113", + "72114", + "72115", + "72116", + "72117", + "72118", + "72119", + "72120", + "72121", + "72122", + "72123", + "72124", + "72125", + "72126", + "72127", + "72128", + "72129", + "72130", + "72131", + "72132", + "72133", + "72134", + "72135", + "72136", + "72137", + "72139", + "72140", + "72141", + "72142", + "72143", + "72145", + "72149", + "72150", + "72152", + "72153", + "72156", + "72157", + "72158", + "72160", + "72164", + "72165", + "72166", + "72167", + "72168", + "72169", + "72170", + "72173", + "72175", + "72176", + "72178", + "72179", + "72180", + "72181", + "72182", + "72183", + "72189", + "72190", + "72198", + "72199", + "72201", + "72202", + "72203", + "72204", + "72205", + "72206", + "72207", + "72209", + "72210", + "72211", + "72212", + "72214", + "72215", + "72216", + "72217", + "72219", + "72221", + "72222", + "72223", + "72225", + "72227", + "72231", + "72255", + "72260", + "72295", + "72301", + "72303", + "72310", + "72311", + "72312", + "72313", + "72315", + "72316", + "72319", + "72320", + "72321", + "72322", + "72324", + "72325", + "72326", + "72327", + "72328", + "72329", + "72330", + "72331", + "72332", + "72333", + "72335", + "72336", + "72338", + "72339", + "72340", + "72341", + "72342", + "72346", + "72347", + "72348", + "72350", + "72351", + "72352", + "72353", + "72354", + "72355", + "72358", + "72359", + "72360", + "72364", + "72365", + "72366", + "72367", + "72368", + "72369", + "72370", + "72372", + "72373", + "72374", + "72376", + "72377", + "72379", + "72383", + "72384", + "72386", + "72387", + "72389", + "72390", + "72391", + "72392", + "72394", + "72395", + "72396", + "72401", + "72402", + "72403", + "72404", + "72405", + "72410", + "72411", + "72412", + "72413", + "72414", + "72415", + "72416", + "72417", + "72419", + "72421", + "72422", + "72424", + "72425", + "72426", + "72427", + "72428", + "72429", + "72430", + "72431", + "72432", + "72433", + "72434", + "72435", + "72436", + "72437", + "72438", + "72439", + "72440", + "72441", + "72442", + "72443", + "72444", + "72445", + "72447", + "72449", + "72450", + "72451", + "72453", + "72454", + "72455", + "72456", + "72457", + "72458", + "72459", + "72460", + "72461", + "72462", + "72464", + "72465", + "72466", + "72467", + "72469", + "72470", + "72471", + "72472", + "72473", + "72474", + "72475", + "72476", + "72478", + "72479", + "72482", + "72501", + "72503", + "72512", + "72513", + "72515", + "72517", + "72519", + "72520", + "72521", + "72522", + "72523", + "72524", + "72525", + "72526", + "72527", + "72528", + "72529", + "72530", + "72531", + "72532", + "72533", + "72534", + "72536", + "72537", + "72538", + "72539", + "72540", + "72542", + "72543", + "72544", + "72545", + "72546", + "72550", + "72553", + "72554", + "72555", + "72556", + "72560", + "72561", + "72562", + "72564", + "72565", + "72566", + "72567", + "72568", + "72569", + "72571", + "72572", + "72573", + "72575", + "72576", + "72577", + "72578", + "72579", + "72581", + "72583", + "72584", + "72585", + "72587", + "72601", + "72602", + "72611", + "72613", + "72615", + "72616", + "72617", + "72619", + "72623", + "72624", + "72626", + "72628", + "72629", + "72630", + "72631", + "72632", + "72633", + "72634", + "72635", + "72636", + "72638", + "72639", + "72640", + "72641", + "72642", + "72643", + "72644", + "72645", + "72648", + "72650", + "72651", + "72653", + "72654", + "72655", + "72657", + "72658", + "72659", + "72660", + "72661", + "72662", + "72663", + "72666", + "72668", + "72669", + "72670", + "72672", + "72675", + "72677", + "72679", + "72680", + "72682", + "72683", + "72685", + "72686", + "72687", + "72701", + "72702", + "72703", + "72704", + "72711", + "72712", + "72713", + "72714", + "72715", + "72716", + "72717", + "72718", + "72719", + "72721", + "72722", + "72727", + "72728", + "72729", + "72730", + "72732", + "72733", + "72734", + "72735", + "72736", + "72737", + "72738", + "72739", + "72740", + "72741", + "72742", + "72744", + "72745", + "72747", + "72749", + "72751", + "72752", + "72753", + "72756", + "72757", + "72758", + "72760", + "72761", + "72762", + "72764", + "72765", + "72766", + "72768", + "72769", + "72770", + "72773", + "72774", + "72776", + "72801", + "72802", + "72811", + "72812", + "72820", + "72821", + "72823", + "72824", + "72826", + "72827", + "72828", + "72829", + "72830", + "72832", + "72833", + "72834", + "72835", + "72837", + "72838", + "72839", + "72840", + "72841", + "72842", + "72843", + "72845", + "72846", + "72847", + "72851", + "72852", + "72853", + "72854", + "72855", + "72856", + "72857", + "72858", + "72860", + "72863", + "72865", + "72901", + "72902", + "72903", + "72904", + "72905", + "72906", + "72908", + "72913", + "72914", + "72916", + "72917", + "72918", + "72919", + "72921", + "72923", + "72926", + "72927", + "72928", + "72930", + "72932", + "72933", + "72934", + "72935", + "72936", + "72937", + "72938", + "72940", + "72941", + "72943", + "72944", + "72945", + "72946", + "72947", + "72948", + "72949", + "72950", + "72951", + "72952", + "72955", + "72956", + "72957", + "72958", + "72959", + "73001", + "73002", + "73003", + "73004", + "73005", + "73006", + "73007", + "73008", + "73009", + "73010", + "73011", + "73012", + "73013", + "73014", + "73015", + "73016", + "73017", + "73018", + "73019", + "73020", + "73021", + "73022", + "73023", + "73024", + "73025", + "73026", + "73027", + "73028", + "73029", + "73030", + "73031", + "73032", + "73033", + "73034", + "73036", + "73038", + "73039", + "73040", + "73041", + "73042", + "73043", + "73044", + "73045", + "73047", + "73048", + "73049", + "73050", + "73051", + "73052", + "73053", + "73054", + "73055", + "73056", + "73057", + "73058", + "73059", + "73061", + "73062", + "73063", + "73064", + "73065", + "73066", + "73067", + "73068", + "73069", + "73070", + "73071", + "73072", + "73073", + "73074", + "73075", + "73077", + "73078", + "73079", + "73080", + "73082", + "73083", + "73084", + "73085", + "73086", + "73089", + "73090", + "73092", + "73093", + "73094", + "73095", + "73096", + "73097", + "73098", + "73099", + "73101", + "73102", + "73103", + "73104", + "73105", + "73106", + "73107", + "73108", + "73109", + "73110", + "73111", + "73112", + "73113", + "73114", + "73115", + "73116", + "73117", + "73118", + "73119", + "73120", + "73121", + "73122", + "73123", + "73124", + "73125", + "73126", + "73127", + "73128", + "73129", + "73130", + "73131", + "73132", + "73134", + "73135", + "73136", + "73137", + "73139", + "73140", + "73141", + "73142", + "73143", + "73144", + "73145", + "73146", + "73147", + "73148", + "73149", + "73150", + "73151", + "73152", + "73153", + "73154", + "73155", + "73156", + "73157", + "73159", + "73160", + "73162", + "73163", + "73164", + "73165", + "73167", + "73169", + "73170", + "73172", + "73173", + "73178", + "73179", + "73184", + "73185", + "73189", + "73190", + "73193", + "73194", + "73195", + "73196", + "73197", + "73198", + "73199", + "73301", + "73344", + "73401", + "73402", + "73403", + "73425", + "73430", + "73432", + "73433", + "73434", + "73435", + "73436", + "73437", + "73438", + "73439", + "73440", + "73441", + "73442", + "73443", + "73444", + "73446", + "73447", + "73448", + "73449", + "73450", + "73451", + "73453", + "73454", + "73455", + "73456", + "73458", + "73459", + "73460", + "73461", + "73463", + "73481", + "73487", + "73488", + "73491", + "73501", + "73502", + "73503", + "73505", + "73506", + "73507", + "73520", + "73521", + "73522", + "73523", + "73526", + "73527", + "73528", + "73529", + "73530", + "73531", + "73532", + "73533", + "73534", + "73536", + "73537", + "73538", + "73539", + "73540", + "73541", + "73542", + "73543", + "73544", + "73546", + "73547", + "73548", + "73549", + "73550", + "73551", + "73552", + "73553", + "73554", + "73555", + "73556", + "73557", + "73558", + "73559", + "73560", + "73561", + "73562", + "73564", + "73565", + "73566", + "73567", + "73568", + "73569", + "73570", + "73571", + "73572", + "73573", + "73601", + "73620", + "73622", + "73624", + "73625", + "73626", + "73627", + "73628", + "73632", + "73638", + "73639", + "73641", + "73642", + "73644", + "73645", + "73646", + "73647", + "73648", + "73650", + "73651", + "73654", + "73655", + "73658", + "73659", + "73660", + "73661", + "73662", + "73663", + "73664", + "73666", + "73667", + "73668", + "73669", + "73673", + "73701", + "73702", + "73703", + "73705", + "73706", + "73716", + "73717", + "73718", + "73719", + "73720", + "73722", + "73724", + "73726", + "73727", + "73728", + "73729", + "73730", + "73731", + "73733", + "73734", + "73735", + "73736", + "73737", + "73738", + "73739", + "73741", + "73742", + "73743", + "73744", + "73746", + "73747", + "73749", + "73750", + "73753", + "73754", + "73755", + "73756", + "73757", + "73758", + "73759", + "73760", + "73761", + "73762", + "73763", + "73764", + "73766", + "73768", + "73770", + "73771", + "73772", + "73773", + "73801", + "73802", + "73832", + "73834", + "73835", + "73838", + "73840", + "73841", + "73842", + "73843", + "73844", + "73848", + "73851", + "73852", + "73853", + "73855", + "73857", + "73858", + "73859", + "73860", + "73901", + "73931", + "73932", + "73933", + "73937", + "73938", + "73939", + "73942", + "73944", + "73945", + "73946", + "73947", + "73949", + "73950", + "73951", + "73960", + "74001", + "74002", + "74003", + "74004", + "74005", + "74006", + "74008", + "74010", + "74011", + "74012", + "74013", + "74014", + "74015", + "74016", + "74017", + "74018", + "74019", + "74020", + "74021", + "74022", + "74023", + "74026", + "74027", + "74028", + "74029", + "74030", + "74031", + "74032", + "74033", + "74034", + "74035", + "74036", + "74037", + "74038", + "74039", + "74041", + "74042", + "74043", + "74044", + "74045", + "74046", + "74047", + "74048", + "74050", + "74051", + "74052", + "74053", + "74054", + "74055", + "74056", + "74058", + "74059", + "74060", + "74061", + "74062", + "74063", + "74066", + "74067", + "74068", + "74070", + "74071", + "74072", + "74073", + "74074", + "74075", + "74076", + "74077", + "74078", + "74079", + "74080", + "74081", + "74082", + "74083", + "74084", + "74085", + "74101", + "74102", + "74103", + "74104", + "74105", + "74106", + "74107", + "74108", + "74110", + "74112", + "74114", + "74115", + "74116", + "74117", + "74119", + "74120", + "74121", + "74126", + "74127", + "74128", + "74129", + "74130", + "74131", + "74132", + "74133", + "74134", + "74135", + "74136", + "74137", + "74141", + "74145", + "74146", + "74147", + "74148", + "74149", + "74150", + "74152", + "74153", + "74155", + "74156", + "74157", + "74158", + "74159", + "74169", + "74170", + "74171", + "74172", + "74182", + "74183", + "74184", + "74186", + "74187", + "74189", + "74192", + "74193", + "74194", + "74301", + "74330", + "74331", + "74332", + "74333", + "74335", + "74337", + "74338", + "74339", + "74340", + "74342", + "74343", + "74344", + "74345", + "74346", + "74347", + "74349", + "74350", + "74352", + "74354", + "74355", + "74358", + "74359", + "74360", + "74361", + "74362", + "74363", + "74364", + "74365", + "74366", + "74367", + "74368", + "74369", + "74370", + "74401", + "74402", + "74403", + "74421", + "74422", + "74423", + "74425", + "74426", + "74427", + "74428", + "74429", + "74430", + "74431", + "74432", + "74434", + "74435", + "74436", + "74437", + "74438", + "74439", + "74440", + "74441", + "74442", + "74444", + "74445", + "74446", + "74447", + "74450", + "74451", + "74452", + "74454", + "74455", + "74456", + "74457", + "74458", + "74459", + "74460", + "74461", + "74462", + "74463", + "74464", + "74465", + "74467", + "74468", + "74469", + "74470", + "74471", + "74472", + "74477", + "74501", + "74502", + "74521", + "74522", + "74523", + "74525", + "74528", + "74529", + "74530", + "74531", + "74533", + "74534", + "74535", + "74536", + "74538", + "74540", + "74542", + "74543", + "74545", + "74546", + "74547", + "74549", + "74552", + "74553", + "74554", + "74555", + "74556", + "74557", + "74558", + "74559", + "74560", + "74561", + "74562", + "74563", + "74565", + "74567", + "74569", + "74570", + "74571", + "74572", + "74574", + "74576", + "74577", + "74578", + "74601", + "74602", + "74604", + "74630", + "74631", + "74632", + "74633", + "74636", + "74637", + "74640", + "74641", + "74643", + "74644", + "74646", + "74647", + "74650", + "74651", + "74652", + "74653", + "74701", + "74702", + "74720", + "74721", + "74722", + "74723", + "74724", + "74726", + "74727", + "74728", + "74729", + "74730", + "74731", + "74733", + "74734", + "74735", + "74736", + "74737", + "74738", + "74740", + "74741", + "74743", + "74745", + "74747", + "74748", + "74750", + "74752", + "74753", + "74754", + "74755", + "74756", + "74759", + "74760", + "74761", + "74764", + "74766", + "74801", + "74802", + "74804", + "74818", + "74820", + "74821", + "74824", + "74825", + "74826", + "74827", + "74829", + "74830", + "74831", + "74832", + "74833", + "74834", + "74836", + "74837", + "74839", + "74840", + "74842", + "74843", + "74844", + "74845", + "74848", + "74849", + "74850", + "74851", + "74852", + "74854", + "74855", + "74856", + "74857", + "74859", + "74860", + "74864", + "74865", + "74866", + "74867", + "74868", + "74869", + "74871", + "74872", + "74873", + "74875", + "74878", + "74880", + "74881", + "74883", + "74884", + "74901", + "74902", + "74930", + "74931", + "74932", + "74935", + "74936", + "74937", + "74939", + "74940", + "74941", + "74942", + "74943", + "74944", + "74945", + "74946", + "74947", + "74948", + "74949", + "74951", + "74953", + "74954", + "74955", + "74956", + "74957", + "74959", + "74960", + "74962", + "74963", + "74964", + "74965", + "74966", + "75001", + "75002", + "75006", + "75007", + "75009", + "75010", + "75011", + "75013", + "75014", + "75015", + "75016", + "75017", + "75019", + "75020", + "75021", + "75022", + "75023", + "75024", + "75025", + "75026", + "75027", + "75028", + "75029", + "75030", + "75032", + "75033", + "75034", + "75035", + "75036", + "75037", + "75038", + "75039", + "75040", + "75041", + "75042", + "75043", + "75044", + "75045", + "75046", + "75047", + "75048", + "75049", + "75050", + "75051", + "75052", + "75053", + "75054", + "75056", + "75057", + "75058", + "75059", + "75060", + "75061", + "75062", + "75063", + "75064", + "75065", + "75067", + "75068", + "75069", + "75070", + "75071", + "75072", + "75074", + "75075", + "75076", + "75077", + "75078", + "75080", + "75081", + "75082", + "75083", + "75085", + "75086", + "75087", + "75088", + "75089", + "75090", + "75091", + "75092", + "75093", + "75094", + "75097", + "75098", + "75099", + "75101", + "75102", + "75103", + "75104", + "75105", + "75106", + "75109", + "75110", + "75114", + "75115", + "75116", + "75117", + "75118", + "75119", + "75120", + "75121", + "75123", + "75124", + "75125", + "75126", + "75127", + "75132", + "75134", + "75135", + "75137", + "75138", + "75140", + "75141", + "75142", + "75143", + "75144", + "75146", + "75147", + "75148", + "75149", + "75150", + "75151", + "75152", + "75153", + "75154", + "75155", + "75156", + "75157", + "75158", + "75159", + "75160", + "75161", + "75163", + "75164", + "75165", + "75166", + "75167", + "75168", + "75169", + "75172", + "75173", + "75180", + "75181", + "75182", + "75185", + "75187", + "75189", + "75201", + "75202", + "75203", + "75204", + "75205", + "75206", + "75207", + "75208", + "75209", + "75210", + "75211", + "75212", + "75214", + "75215", + "75216", + "75217", + "75218", + "75219", + "75220", + "75221", + "75222", + "75223", + "75224", + "75225", + "75226", + "75227", + "75228", + "75229", + "75230", + "75231", + "75232", + "75233", + "75234", + "75235", + "75236", + "75237", + "75238", + "75240", + "75241", + "75242", + "75243", + "75244", + "75245", + "75246", + "75247", + "75248", + "75249", + "75250", + "75251", + "75252", + "75253", + "75254", + "75258", + "75260", + "75261", + "75262", + "75263", + "75264", + "75265", + "75266", + "75267", + "75270", + "75275", + "75277", + "75283", + "75284", + "75285", + "75286", + "75287", + "75301", + "75303", + "75310", + "75312", + "75313", + "75315", + "75320", + "75323", + "75326", + "75334", + "75336", + "75339", + "75340", + "75342", + "75343", + "75344", + "75353", + "75354", + "75355", + "75356", + "75357", + "75358", + "75359", + "75360", + "75363", + "75364", + "75367", + "75368", + "75370", + "75371", + "75372", + "75373", + "75374", + "75376", + "75378", + "75379", + "75380", + "75381", + "75382", + "75386", + "75387", + "75388", + "75389", + "75390", + "75391", + "75392", + "75393", + "75394", + "75395", + "75396", + "75397", + "75398", + "75401", + "75402", + "75403", + "75404", + "75407", + "75409", + "75410", + "75411", + "75412", + "75413", + "75414", + "75415", + "75416", + "75417", + "75418", + "75420", + "75421", + "75422", + "75423", + "75424", + "75425", + "75426", + "75428", + "75429", + "75431", + "75432", + "75433", + "75434", + "75435", + "75436", + "75437", + "75438", + "75439", + "75440", + "75441", + "75442", + "75443", + "75444", + "75446", + "75447", + "75448", + "75449", + "75450", + "75451", + "75452", + "75453", + "75454", + "75455", + "75456", + "75457", + "75458", + "75459", + "75460", + "75461", + "75462", + "75468", + "75469", + "75470", + "75471", + "75472", + "75473", + "75474", + "75475", + "75476", + "75477", + "75478", + "75479", + "75480", + "75481", + "75482", + "75483", + "75485", + "75486", + "75487", + "75488", + "75489", + "75490", + "75491", + "75492", + "75493", + "75494", + "75495", + "75496", + "75497", + "75501", + "75503", + "75504", + "75505", + "75507", + "75550", + "75551", + "75554", + "75555", + "75556", + "75558", + "75559", + "75560", + "75561", + "75562", + "75563", + "75564", + "75565", + "75566", + "75567", + "75568", + "75569", + "75570", + "75571", + "75572", + "75573", + "75574", + "75599", + "75601", + "75602", + "75603", + "75604", + "75605", + "75606", + "75607", + "75608", + "75615", + "75630", + "75631", + "75633", + "75636", + "75637", + "75638", + "75639", + "75640", + "75641", + "75642", + "75643", + "75644", + "75645", + "75647", + "75650", + "75651", + "75652", + "75653", + "75654", + "75656", + "75657", + "75658", + "75659", + "75660", + "75661", + "75662", + "75663", + "75666", + "75667", + "75668", + "75669", + "75670", + "75671", + "75672", + "75680", + "75681", + "75682", + "75683", + "75684", + "75685", + "75686", + "75687", + "75688", + "75689", + "75691", + "75692", + "75693", + "75694", + "75701", + "75702", + "75703", + "75704", + "75705", + "75706", + "75707", + "75708", + "75709", + "75710", + "75711", + "75712", + "75713", + "75750", + "75751", + "75752", + "75754", + "75755", + "75756", + "75757", + "75758", + "75759", + "75760", + "75762", + "75763", + "75764", + "75765", + "75766", + "75770", + "75771", + "75772", + "75773", + "75778", + "75779", + "75780", + "75782", + "75783", + "75784", + "75785", + "75788", + "75789", + "75790", + "75791", + "75792", + "75797", + "75798", + "75799", + "75801", + "75802", + "75803", + "75831", + "75832", + "75833", + "75834", + "75835", + "75838", + "75839", + "75840", + "75844", + "75845", + "75846", + "75847", + "75848", + "75849", + "75850", + "75851", + "75852", + "75853", + "75855", + "75856", + "75858", + "75859", + "75860", + "75861", + "75862", + "75865", + "75880", + "75882", + "75884", + "75886", + "75901", + "75902", + "75903", + "75904", + "75915", + "75925", + "75926", + "75928", + "75929", + "75930", + "75931", + "75932", + "75933", + "75934", + "75935", + "75936", + "75937", + "75938", + "75939", + "75941", + "75942", + "75943", + "75944", + "75946", + "75948", + "75949", + "75951", + "75954", + "75956", + "75958", + "75959", + "75960", + "75961", + "75962", + "75963", + "75964", + "75965", + "75966", + "75968", + "75969", + "75972", + "75973", + "75974", + "75975", + "75976", + "75977", + "75978", + "75979", + "75980", + "75990", + "76001", + "76002", + "76003", + "76004", + "76005", + "76006", + "76007", + "76008", + "76009", + "76010", + "76011", + "76012", + "76013", + "76014", + "76015", + "76016", + "76017", + "76018", + "76019", + "76020", + "76021", + "76022", + "76023", + "76028", + "76031", + "76033", + "76034", + "76035", + "76036", + "76039", + "76040", + "76041", + "76043", + "76044", + "76048", + "76049", + "76050", + "76051", + "76052", + "76053", + "76054", + "76055", + "76058", + "76059", + "76060", + "76061", + "76063", + "76064", + "76065", + "76066", + "76067", + "76068", + "76070", + "76071", + "76073", + "76077", + "76078", + "76082", + "76084", + "76085", + "76086", + "76087", + "76088", + "76092", + "76093", + "76094", + "76095", + "76096", + "76097", + "76098", + "76099", + "76101", + "76102", + "76103", + "76104", + "76105", + "76106", + "76107", + "76108", + "76109", + "76110", + "76111", + "76112", + "76113", + "76114", + "76115", + "76116", + "76117", + "76118", + "76119", + "76120", + "76121", + "76122", + "76123", + "76124", + "76126", + "76127", + "76129", + "76130", + "76131", + "76132", + "76133", + "76134", + "76135", + "76136", + "76137", + "76140", + "76147", + "76148", + "76150", + "76155", + "76161", + "76162", + "76163", + "76164", + "76166", + "76177", + "76179", + "76180", + "76181", + "76182", + "76185", + "76190", + "76191", + "76192", + "76193", + "76195", + "76196", + "76197", + "76198", + "76199", + "76201", + "76202", + "76203", + "76204", + "76205", + "76206", + "76207", + "76208", + "76209", + "76210", + "76225", + "76226", + "76227", + "76228", + "76230", + "76233", + "76234", + "76238", + "76239", + "76240", + "76241", + "76244", + "76245", + "76246", + "76247", + "76248", + "76249", + "76250", + "76251", + "76252", + "76253", + "76255", + "76258", + "76259", + "76261", + "76262", + "76263", + "76264", + "76265", + "76266", + "76267", + "76268", + "76270", + "76271", + "76272", + "76273", + "76299", + "76301", + "76302", + "76305", + "76306", + "76307", + "76308", + "76309", + "76310", + "76311", + "76351", + "76352", + "76354", + "76357", + "76360", + "76363", + "76364", + "76365", + "76366", + "76367", + "76369", + "76370", + "76371", + "76372", + "76373", + "76374", + "76377", + "76379", + "76380", + "76384", + "76385", + "76388", + "76389", + "76401", + "76402", + "76424", + "76426", + "76427", + "76429", + "76430", + "76431", + "76432", + "76433", + "76435", + "76436", + "76437", + "76439", + "76442", + "76443", + "76444", + "76445", + "76446", + "76448", + "76449", + "76450", + "76452", + "76453", + "76454", + "76455", + "76457", + "76458", + "76459", + "76460", + "76461", + "76462", + "76463", + "76464", + "76465", + "76466", + "76467", + "76468", + "76469", + "76470", + "76471", + "76472", + "76474", + "76475", + "76476", + "76481", + "76483", + "76484", + "76485", + "76486", + "76487", + "76490", + "76491", + "76501", + "76502", + "76503", + "76504", + "76505", + "76508", + "76511", + "76513", + "76518", + "76519", + "76520", + "76522", + "76523", + "76524", + "76525", + "76526", + "76527", + "76528", + "76530", + "76531", + "76533", + "76534", + "76537", + "76538", + "76539", + "76540", + "76541", + "76542", + "76543", + "76544", + "76545", + "76546", + "76547", + "76548", + "76549", + "76550", + "76554", + "76556", + "76557", + "76558", + "76559", + "76561", + "76564", + "76565", + "76566", + "76567", + "76569", + "76570", + "76571", + "76573", + "76574", + "76577", + "76578", + "76579", + "76596", + "76597", + "76598", + "76599", + "76621", + "76622", + "76623", + "76624", + "76626", + "76627", + "76628", + "76629", + "76630", + "76631", + "76632", + "76633", + "76634", + "76635", + "76636", + "76637", + "76638", + "76639", + "76640", + "76641", + "76642", + "76643", + "76644", + "76645", + "76648", + "76649", + "76650", + "76651", + "76652", + "76653", + "76654", + "76655", + "76656", + "76657", + "76660", + "76661", + "76664", + "76665", + "76666", + "76667", + "76670", + "76671", + "76673", + "76676", + "76678", + "76679", + "76680", + "76681", + "76682", + "76684", + "76685", + "76686", + "76687", + "76689", + "76690", + "76691", + "76692", + "76693", + "76701", + "76702", + "76703", + "76704", + "76705", + "76706", + "76707", + "76708", + "76710", + "76711", + "76712", + "76714", + "76715", + "76716", + "76795", + "76797", + "76798", + "76799", + "76801", + "76802", + "76803", + "76804", + "76820", + "76821", + "76823", + "76824", + "76825", + "76827", + "76828", + "76831", + "76832", + "76834", + "76836", + "76837", + "76841", + "76842", + "76844", + "76845", + "76848", + "76849", + "76852", + "76853", + "76854", + "76855", + "76856", + "76857", + "76858", + "76859", + "76861", + "76862", + "76864", + "76865", + "76866", + "76869", + "76870", + "76871", + "76872", + "76873", + "76874", + "76875", + "76877", + "76878", + "76880", + "76882", + "76883", + "76884", + "76885", + "76886", + "76887", + "76888", + "76890", + "76901", + "76902", + "76903", + "76904", + "76905", + "76906", + "76908", + "76909", + "76930", + "76932", + "76933", + "76934", + "76935", + "76936", + "76937", + "76939", + "76940", + "76941", + "76943", + "76945", + "76949", + "76950", + "76951", + "76953", + "76955", + "76957", + "76958", + "77001", + "77002", + "77003", + "77004", + "77005", + "77006", + "77007", + "77008", + "77009", + "77010", + "77011", + "77012", + "77013", + "77014", + "77015", + "77016", + "77017", + "77018", + "77019", + "77020", + "77021", + "77022", + "77023", + "77024", + "77025", + "77026", + "77027", + "77028", + "77029", + "77030", + "77031", + "77032", + "77033", + "77034", + "77035", + "77036", + "77037", + "77038", + "77039", + "77040", + "77041", + "77042", + "77043", + "77044", + "77045", + "77046", + "77047", + "77048", + "77049", + "77050", + "77051", + "77052", + "77053", + "77054", + "77055", + "77056", + "77057", + "77058", + "77059", + "77060", + "77061", + "77062", + "77063", + "77064", + "77065", + "77066", + "77067", + "77068", + "77069", + "77070", + "77071", + "77072", + "77073", + "77074", + "77075", + "77076", + "77077", + "77078", + "77079", + "77080", + "77081", + "77082", + "77083", + "77084", + "77085", + "77086", + "77087", + "77088", + "77089", + "77090", + "77091", + "77092", + "77093", + "77094", + "77095", + "77096", + "77097", + "77098", + "77099", + "77201", + "77202", + "77203", + "77204", + "77205", + "77206", + "77207", + "77208", + "77209", + "77210", + "77212", + "77213", + "77215", + "77216", + "77217", + "77218", + "77219", + "77220", + "77221", + "77222", + "77223", + "77224", + "77225", + "77226", + "77227", + "77228", + "77229", + "77230", + "77231", + "77233", + "77234", + "77235", + "77236", + "77237", + "77238", + "77240", + "77241", + "77242", + "77243", + "77244", + "77245", + "77246", + "77247", + "77248", + "77249", + "77250", + "77251", + "77252", + "77253", + "77254", + "77255", + "77256", + "77257", + "77258", + "77259", + "77260", + "77261", + "77262", + "77263", + "77265", + "77266", + "77267", + "77268", + "77269", + "77270", + "77271", + "77272", + "77273", + "77274", + "77275", + "77276", + "77277", + "77278", + "77279", + "77280", + "77282", + "77284", + "77285", + "77286", + "77287", + "77288", + "77289", + "77290", + "77291", + "77292", + "77293", + "77294", + "77296", + "77297", + "77298", + "77299", + "77301", + "77302", + "77303", + "77304", + "77305", + "77306", + "77315", + "77316", + "77318", + "77320", + "77325", + "77326", + "77327", + "77328", + "77331", + "77332", + "77333", + "77334", + "77335", + "77336", + "77337", + "77338", + "77339", + "77340", + "77341", + "77342", + "77343", + "77344", + "77345", + "77346", + "77347", + "77348", + "77349", + "77350", + "77351", + "77353", + "77354", + "77355", + "77356", + "77357", + "77358", + "77359", + "77360", + "77362", + "77363", + "77364", + "77365", + "77367", + "77368", + "77369", + "77371", + "77372", + "77373", + "77374", + "77375", + "77376", + "77377", + "77378", + "77379", + "77380", + "77381", + "77382", + "77383", + "77384", + "77385", + "77386", + "77387", + "77388", + "77389", + "77391", + "77393", + "77396", + "77399", + "77401", + "77402", + "77404", + "77406", + "77407", + "77410", + "77411", + "77412", + "77413", + "77414", + "77415", + "77417", + "77418", + "77419", + "77420", + "77422", + "77423", + "77426", + "77428", + "77429", + "77430", + "77431", + "77432", + "77433", + "77434", + "77435", + "77436", + "77437", + "77440", + "77441", + "77442", + "77443", + "77444", + "77445", + "77446", + "77447", + "77448", + "77449", + "77450", + "77451", + "77452", + "77453", + "77454", + "77455", + "77456", + "77457", + "77458", + "77459", + "77460", + "77461", + "77463", + "77464", + "77465", + "77466", + "77467", + "77468", + "77469", + "77470", + "77471", + "77473", + "77474", + "77475", + "77476", + "77477", + "77478", + "77479", + "77480", + "77481", + "77482", + "77483", + "77484", + "77485", + "77486", + "77487", + "77488", + "77489", + "77491", + "77492", + "77493", + "77494", + "77496", + "77497", + "77498", + "77501", + "77502", + "77503", + "77504", + "77505", + "77506", + "77507", + "77508", + "77510", + "77511", + "77512", + "77514", + "77515", + "77516", + "77517", + "77518", + "77519", + "77520", + "77521", + "77522", + "77523", + "77530", + "77531", + "77532", + "77533", + "77534", + "77535", + "77536", + "77538", + "77539", + "77541", + "77542", + "77545", + "77546", + "77547", + "77549", + "77550", + "77551", + "77552", + "77553", + "77554", + "77555", + "77560", + "77561", + "77562", + "77563", + "77564", + "77565", + "77566", + "77568", + "77571", + "77572", + "77573", + "77574", + "77575", + "77577", + "77578", + "77580", + "77581", + "77582", + "77583", + "77584", + "77585", + "77586", + "77587", + "77588", + "77590", + "77591", + "77592", + "77597", + "77598", + "77611", + "77612", + "77613", + "77614", + "77615", + "77616", + "77617", + "77619", + "77622", + "77623", + "77624", + "77625", + "77626", + "77627", + "77629", + "77630", + "77631", + "77632", + "77639", + "77640", + "77641", + "77642", + "77643", + "77650", + "77651", + "77655", + "77656", + "77657", + "77659", + "77660", + "77661", + "77662", + "77663", + "77664", + "77665", + "77670", + "77701", + "77702", + "77703", + "77704", + "77705", + "77706", + "77707", + "77708", + "77709", + "77710", + "77713", + "77720", + "77725", + "77726", + "77801", + "77802", + "77803", + "77805", + "77806", + "77807", + "77808", + "77830", + "77831", + "77833", + "77834", + "77835", + "77836", + "77837", + "77838", + "77840", + "77841", + "77842", + "77843", + "77844", + "77845", + "77850", + "77852", + "77853", + "77855", + "77856", + "77857", + "77859", + "77861", + "77862", + "77863", + "77864", + "77865", + "77866", + "77867", + "77868", + "77869", + "77870", + "77871", + "77872", + "77873", + "77875", + "77876", + "77878", + "77879", + "77880", + "77881", + "77882", + "77901", + "77902", + "77903", + "77904", + "77905", + "77950", + "77951", + "77954", + "77957", + "77960", + "77961", + "77962", + "77963", + "77964", + "77967", + "77968", + "77969", + "77970", + "77971", + "77973", + "77974", + "77975", + "77976", + "77977", + "77978", + "77979", + "77982", + "77983", + "77984", + "77986", + "77987", + "77988", + "77989", + "77990", + "77991", + "77993", + "77994", + "77995", + "78001", + "78002", + "78003", + "78004", + "78005", + "78006", + "78007", + "78008", + "78009", + "78010", + "78011", + "78012", + "78013", + "78014", + "78015", + "78016", + "78017", + "78019", + "78021", + "78022", + "78023", + "78024", + "78025", + "78026", + "78027", + "78028", + "78029", + "78039", + "78040", + "78041", + "78042", + "78043", + "78044", + "78045", + "78046", + "78049", + "78050", + "78052", + "78054", + "78055", + "78056", + "78057", + "78058", + "78059", + "78060", + "78061", + "78062", + "78063", + "78064", + "78065", + "78066", + "78067", + "78069", + "78070", + "78071", + "78072", + "78073", + "78074", + "78075", + "78076", + "78101", + "78102", + "78104", + "78107", + "78108", + "78109", + "78111", + "78112", + "78113", + "78114", + "78115", + "78116", + "78117", + "78118", + "78119", + "78121", + "78122", + "78123", + "78124", + "78125", + "78130", + "78131", + "78132", + "78133", + "78135", + "78140", + "78141", + "78142", + "78143", + "78144", + "78145", + "78146", + "78147", + "78148", + "78150", + "78151", + "78152", + "78154", + "78155", + "78156", + "78159", + "78160", + "78161", + "78162", + "78163", + "78164", + "78201", + "78202", + "78203", + "78204", + "78205", + "78206", + "78207", + "78208", + "78209", + "78210", + "78211", + "78212", + "78213", + "78214", + "78215", + "78216", + "78217", + "78218", + "78219", + "78220", + "78221", + "78222", + "78223", + "78224", + "78225", + "78226", + "78227", + "78228", + "78229", + "78230", + "78231", + "78232", + "78233", + "78234", + "78235", + "78236", + "78237", + "78238", + "78239", + "78240", + "78241", + "78242", + "78243", + "78244", + "78245", + "78246", + "78247", + "78248", + "78249", + "78250", + "78251", + "78252", + "78253", + "78254", + "78255", + "78256", + "78257", + "78258", + "78259", + "78260", + "78261", + "78262", + "78263", + "78264", + "78265", + "78266", + "78268", + "78269", + "78270", + "78275", + "78278", + "78279", + "78280", + "78283", + "78284", + "78285", + "78286", + "78287", + "78288", + "78289", + "78291", + "78292", + "78293", + "78294", + "78295", + "78296", + "78297", + "78298", + "78299", + "78330", + "78332", + "78333", + "78335", + "78336", + "78338", + "78339", + "78340", + "78341", + "78342", + "78343", + "78344", + "78347", + "78349", + "78350", + "78351", + "78352", + "78353", + "78355", + "78357", + "78358", + "78359", + "78360", + "78361", + "78362", + "78363", + "78364", + "78368", + "78369", + "78370", + "78371", + "78372", + "78373", + "78374", + "78375", + "78376", + "78377", + "78379", + "78380", + "78381", + "78382", + "78383", + "78384", + "78385", + "78387", + "78389", + "78390", + "78391", + "78393", + "78401", + "78402", + "78403", + "78404", + "78405", + "78406", + "78407", + "78408", + "78409", + "78410", + "78411", + "78412", + "78413", + "78414", + "78415", + "78416", + "78417", + "78418", + "78419", + "78426", + "78427", + "78460", + "78461", + "78463", + "78465", + "78466", + "78467", + "78468", + "78469", + "78470", + "78471", + "78472", + "78473", + "78474", + "78475", + "78476", + "78477", + "78478", + "78480", + "78501", + "78502", + "78503", + "78504", + "78505", + "78516", + "78520", + "78521", + "78522", + "78523", + "78526", + "78535", + "78536", + "78537", + "78538", + "78539", + "78540", + "78541", + "78542", + "78543", + "78545", + "78547", + "78548", + "78549", + "78550", + "78551", + "78552", + "78553", + "78557", + "78558", + "78559", + "78560", + "78561", + "78562", + "78563", + "78564", + "78565", + "78566", + "78567", + "78568", + "78569", + "78570", + "78572", + "78573", + "78574", + "78575", + "78576", + "78577", + "78578", + "78579", + "78580", + "78582", + "78583", + "78584", + "78585", + "78586", + "78588", + "78589", + "78590", + "78591", + "78592", + "78593", + "78594", + "78595", + "78596", + "78597", + "78598", + "78599", + "78602", + "78604", + "78605", + "78606", + "78607", + "78608", + "78609", + "78610", + "78611", + "78612", + "78613", + "78614", + "78615", + "78616", + "78617", + "78618", + "78619", + "78620", + "78621", + "78622", + "78623", + "78624", + "78626", + "78627", + "78628", + "78629", + "78630", + "78631", + "78632", + "78633", + "78634", + "78635", + "78636", + "78638", + "78639", + "78640", + "78641", + "78642", + "78643", + "78644", + "78645", + "78646", + "78648", + "78650", + "78651", + "78652", + "78653", + "78654", + "78655", + "78656", + "78657", + "78658", + "78659", + "78660", + "78661", + "78662", + "78663", + "78664", + "78665", + "78666", + "78667", + "78669", + "78670", + "78671", + "78672", + "78673", + "78674", + "78675", + "78676", + "78677", + "78680", + "78681", + "78682", + "78683", + "78691", + "78701", + "78702", + "78703", + "78704", + "78705", + "78708", + "78709", + "78710", + "78711", + "78712", + "78713", + "78714", + "78715", + "78716", + "78717", + "78718", + "78719", + "78720", + "78721", + "78722", + "78723", + "78724", + "78725", + "78726", + "78727", + "78728", + "78729", + "78730", + "78731", + "78732", + "78733", + "78734", + "78735", + "78736", + "78737", + "78738", + "78739", + "78741", + "78742", + "78744", + "78745", + "78746", + "78747", + "78748", + "78749", + "78750", + "78751", + "78752", + "78753", + "78754", + "78755", + "78756", + "78757", + "78758", + "78759", + "78760", + "78761", + "78762", + "78763", + "78764", + "78765", + "78766", + "78767", + "78768", + "78769", + "78772", + "78773", + "78774", + "78778", + "78779", + "78780", + "78781", + "78783", + "78785", + "78786", + "78788", + "78789", + "78798", + "78799", + "78801", + "78802", + "78827", + "78828", + "78829", + "78830", + "78832", + "78833", + "78834", + "78836", + "78837", + "78838", + "78839", + "78840", + "78841", + "78842", + "78843", + "78847", + "78850", + "78851", + "78852", + "78853", + "78860", + "78861", + "78870", + "78871", + "78872", + "78873", + "78877", + "78879", + "78880", + "78881", + "78883", + "78884", + "78885", + "78886", + "78931", + "78932", + "78933", + "78934", + "78935", + "78938", + "78940", + "78941", + "78942", + "78943", + "78944", + "78945", + "78946", + "78947", + "78948", + "78949", + "78950", + "78951", + "78952", + "78953", + "78954", + "78956", + "78957", + "78959", + "78960", + "78961", + "78962", + "78963", + "79001", + "79002", + "79003", + "79005", + "79007", + "79008", + "79009", + "79010", + "79011", + "79012", + "79013", + "79014", + "79015", + "79016", + "79018", + "79019", + "79021", + "79022", + "79024", + "79025", + "79027", + "79029", + "79031", + "79032", + "79033", + "79034", + "79035", + "79036", + "79039", + "79040", + "79041", + "79042", + "79043", + "79044", + "79045", + "79046", + "79051", + "79052", + "79053", + "79054", + "79056", + "79057", + "79058", + "79059", + "79061", + "79062", + "79063", + "79064", + "79065", + "79066", + "79068", + "79070", + "79072", + "79073", + "79077", + "79078", + "79079", + "79080", + "79081", + "79082", + "79083", + "79084", + "79085", + "79086", + "79087", + "79088", + "79091", + "79092", + "79093", + "79094", + "79095", + "79096", + "79097", + "79098", + "79101", + "79102", + "79103", + "79104", + "79105", + "79106", + "79107", + "79108", + "79109", + "79110", + "79111", + "79114", + "79116", + "79117", + "79118", + "79119", + "79120", + "79121", + "79124", + "79159", + "79166", + "79168", + "79172", + "79174", + "79178", + "79185", + "79187", + "79189", + "79201", + "79220", + "79221", + "79223", + "79225", + "79226", + "79227", + "79229", + "79230", + "79231", + "79233", + "79234", + "79235", + "79236", + "79237", + "79239", + "79240", + "79241", + "79243", + "79244", + "79245", + "79247", + "79248", + "79250", + "79251", + "79252", + "79255", + "79256", + "79257", + "79258", + "79259", + "79261", + "79311", + "79312", + "79313", + "79314", + "79316", + "79320", + "79322", + "79323", + "79324", + "79325", + "79326", + "79329", + "79330", + "79331", + "79336", + "79338", + "79339", + "79342", + "79343", + "79344", + "79345", + "79346", + "79347", + "79350", + "79351", + "79353", + "79355", + "79356", + "79357", + "79358", + "79359", + "79360", + "79363", + "79364", + "79366", + "79367", + "79369", + "79370", + "79371", + "79372", + "79373", + "79376", + "79377", + "79378", + "79379", + "79380", + "79381", + "79382", + "79383", + "79401", + "79402", + "79403", + "79404", + "79405", + "79406", + "79407", + "79408", + "79409", + "79410", + "79411", + "79412", + "79413", + "79414", + "79415", + "79416", + "79423", + "79424", + "79430", + "79452", + "79453", + "79457", + "79464", + "79490", + "79491", + "79493", + "79499", + "79501", + "79502", + "79503", + "79504", + "79505", + "79506", + "79508", + "79510", + "79511", + "79512", + "79516", + "79517", + "79518", + "79519", + "79520", + "79521", + "79525", + "79526", + "79527", + "79528", + "79529", + "79530", + "79532", + "79533", + "79534", + "79535", + "79536", + "79537", + "79538", + "79539", + "79540", + "79541", + "79543", + "79544", + "79545", + "79546", + "79547", + "79548", + "79549", + "79550", + "79553", + "79556", + "79560", + "79561", + "79562", + "79563", + "79565", + "79566", + "79567", + "79601", + "79602", + "79603", + "79604", + "79605", + "79606", + "79607", + "79608", + "79697", + "79698", + "79699", + "79701", + "79702", + "79703", + "79704", + "79705", + "79706", + "79707", + "79708", + "79710", + "79711", + "79712", + "79713", + "79714", + "79718", + "79719", + "79720", + "79721", + "79730", + "79731", + "79733", + "79734", + "79735", + "79738", + "79739", + "79740", + "79741", + "79742", + "79743", + "79744", + "79745", + "79748", + "79749", + "79752", + "79754", + "79755", + "79756", + "79758", + "79759", + "79760", + "79761", + "79762", + "79763", + "79764", + "79765", + "79766", + "79768", + "79769", + "79770", + "79772", + "79776", + "79777", + "79778", + "79780", + "79781", + "79782", + "79783", + "79785", + "79786", + "79788", + "79789", + "79821", + "79830", + "79831", + "79832", + "79834", + "79835", + "79836", + "79837", + "79838", + "79839", + "79842", + "79843", + "79845", + "79846", + "79847", + "79848", + "79849", + "79851", + "79852", + "79853", + "79854", + "79855", + "79901", + "79902", + "79903", + "79904", + "79905", + "79906", + "79907", + "79908", + "79910", + "79911", + "79912", + "79913", + "79914", + "79915", + "79916", + "79917", + "79918", + "79920", + "79922", + "79923", + "79924", + "79925", + "79926", + "79927", + "79928", + "79929", + "79930", + "79931", + "79932", + "79934", + "79935", + "79936", + "79937", + "79938", + "79940", + "79941", + "79942", + "79943", + "79944", + "79945", + "79946", + "79947", + "79948", + "79949", + "79950", + "79951", + "79952", + "79953", + "79954", + "79955", + "79958", + "79960", + "79961", + "79968", + "79976", + "79978", + "79980", + "79990", + "79995", + "79996", + "79997", + "79998", + "79999", + "80001", + "80002", + "80003", + "80004", + "80005", + "80006", + "80007", + "80010", + "80011", + "80012", + "80013", + "80014", + "80015", + "80016", + "80017", + "80018", + "80019", + "80020", + "80021", + "80022", + "80023", + "80024", + "80025", + "80026", + "80027", + "80028", + "80030", + "80031", + "80033", + "80034", + "80035", + "80036", + "80037", + "80038", + "80040", + "80041", + "80042", + "80044", + "80045", + "80046", + "80047", + "80101", + "80102", + "80103", + "80104", + "80105", + "80106", + "80107", + "80108", + "80109", + "80110", + "80111", + "80112", + "80113", + "80116", + "80117", + "80118", + "80120", + "80121", + "80122", + "80123", + "80124", + "80125", + "80126", + "80127", + "80128", + "80129", + "80130", + "80131", + "80132", + "80133", + "80134", + "80135", + "80136", + "80137", + "80138", + "80150", + "80151", + "80155", + "80160", + "80161", + "80162", + "80163", + "80165", + "80166", + "80201", + "80202", + "80203", + "80204", + "80205", + "80206", + "80207", + "80208", + "80209", + "80210", + "80211", + "80212", + "80214", + "80215", + "80216", + "80217", + "80218", + "80219", + "80220", + "80221", + "80222", + "80223", + "80224", + "80225", + "80226", + "80227", + "80228", + "80229", + "80230", + "80231", + "80232", + "80233", + "80234", + "80235", + "80236", + "80237", + "80238", + "80239", + "80241", + "80243", + "80244", + "80246", + "80247", + "80248", + "80249", + "80250", + "80251", + "80252", + "80256", + "80257", + "80259", + "80260", + "80261", + "80262", + "80263", + "80264", + "80265", + "80266", + "80271", + "80273", + "80274", + "80279", + "80280", + "80281", + "80290", + "80291", + "80293", + "80294", + "80295", + "80299", + "80301", + "80302", + "80303", + "80304", + "80305", + "80306", + "80307", + "80308", + "80309", + "80310", + "80314", + "80321", + "80322", + "80323", + "80328", + "80329", + "80401", + "80402", + "80403", + "80419", + "80420", + "80421", + "80422", + "80423", + "80424", + "80425", + "80426", + "80427", + "80428", + "80429", + "80430", + "80432", + "80433", + "80434", + "80435", + "80436", + "80437", + "80438", + "80439", + "80440", + "80442", + "80443", + "80444", + "80446", + "80447", + "80448", + "80449", + "80451", + "80452", + "80453", + "80454", + "80455", + "80456", + "80457", + "80459", + "80461", + "80463", + "80465", + "80466", + "80467", + "80468", + "80469", + "80470", + "80471", + "80473", + "80474", + "80475", + "80476", + "80477", + "80478", + "80479", + "80480", + "80481", + "80482", + "80483", + "80487", + "80488", + "80497", + "80498", + "80501", + "80502", + "80503", + "80504", + "80510", + "80511", + "80512", + "80513", + "80514", + "80515", + "80516", + "80517", + "80520", + "80521", + "80522", + "80523", + "80524", + "80525", + "80526", + "80527", + "80528", + "80530", + "80532", + "80533", + "80534", + "80535", + "80536", + "80537", + "80538", + "80539", + "80540", + "80541", + "80542", + "80543", + "80544", + "80545", + "80546", + "80547", + "80549", + "80550", + "80551", + "80553", + "80601", + "80602", + "80603", + "80610", + "80611", + "80612", + "80614", + "80615", + "80620", + "80621", + "80622", + "80623", + "80624", + "80631", + "80632", + "80633", + "80634", + "80638", + "80639", + "80640", + "80642", + "80643", + "80644", + "80645", + "80646", + "80648", + "80649", + "80650", + "80651", + "80652", + "80653", + "80654", + "80701", + "80705", + "80720", + "80721", + "80722", + "80723", + "80726", + "80727", + "80728", + "80729", + "80731", + "80732", + "80733", + "80734", + "80735", + "80736", + "80737", + "80740", + "80741", + "80742", + "80743", + "80744", + "80745", + "80746", + "80747", + "80749", + "80750", + "80751", + "80754", + "80755", + "80757", + "80758", + "80759", + "80801", + "80802", + "80804", + "80805", + "80807", + "80808", + "80809", + "80810", + "80812", + "80813", + "80814", + "80815", + "80816", + "80817", + "80818", + "80819", + "80820", + "80821", + "80822", + "80823", + "80824", + "80825", + "80826", + "80827", + "80828", + "80829", + "80830", + "80831", + "80832", + "80833", + "80834", + "80835", + "80836", + "80840", + "80841", + "80860", + "80861", + "80862", + "80863", + "80864", + "80866", + "80901", + "80902", + "80903", + "80904", + "80905", + "80906", + "80907", + "80908", + "80909", + "80910", + "80911", + "80912", + "80913", + "80914", + "80915", + "80916", + "80917", + "80918", + "80919", + "80920", + "80921", + "80922", + "80923", + "80924", + "80925", + "80926", + "80927", + "80928", + "80929", + "80930", + "80931", + "80932", + "80933", + "80934", + "80935", + "80936", + "80937", + "80938", + "80939", + "80940", + "80941", + "80942", + "80943", + "80944", + "80945", + "80946", + "80947", + "80949", + "80950", + "80951", + "80960", + "80962", + "80970", + "80977", + "80995", + "80997", + "81001", + "81002", + "81003", + "81004", + "81005", + "81006", + "81007", + "81008", + "81009", + "81010", + "81011", + "81012", + "81019", + "81020", + "81021", + "81022", + "81023", + "81024", + "81025", + "81027", + "81029", + "81030", + "81033", + "81034", + "81036", + "81038", + "81039", + "81040", + "81041", + "81043", + "81044", + "81045", + "81046", + "81047", + "81049", + "81050", + "81052", + "81054", + "81055", + "81057", + "81058", + "81059", + "81062", + "81063", + "81064", + "81067", + "81069", + "81071", + "81073", + "81075", + "81076", + "81077", + "81081", + "81082", + "81084", + "81087", + "81089", + "81090", + "81091", + "81092", + "81101", + "81102", + "81120", + "81121", + "81122", + "81123", + "81124", + "81125", + "81126", + "81127", + "81128", + "81129", + "81130", + "81131", + "81132", + "81133", + "81134", + "81135", + "81136", + "81137", + "81138", + "81140", + "81141", + "81143", + "81144", + "81146", + "81147", + "81148", + "81149", + "81151", + "81152", + "81153", + "81154", + "81155", + "81157", + "81201", + "81210", + "81211", + "81212", + "81215", + "81220", + "81221", + "81222", + "81223", + "81224", + "81225", + "81226", + "81227", + "81228", + "81230", + "81231", + "81232", + "81233", + "81235", + "81236", + "81237", + "81239", + "81240", + "81241", + "81242", + "81243", + "81244", + "81247", + "81248", + "81251", + "81252", + "81253", + "81290", + "81301", + "81302", + "81303", + "81320", + "81321", + "81323", + "81324", + "81325", + "81326", + "81327", + "81328", + "81329", + "81330", + "81331", + "81332", + "81334", + "81335", + "81401", + "81402", + "81403", + "81410", + "81411", + "81413", + "81414", + "81415", + "81416", + "81418", + "81419", + "81420", + "81422", + "81423", + "81424", + "81425", + "81426", + "81427", + "81428", + "81429", + "81430", + "81431", + "81432", + "81433", + "81434", + "81435", + "81501", + "81502", + "81503", + "81504", + "81505", + "81506", + "81507", + "81520", + "81521", + "81522", + "81523", + "81524", + "81525", + "81526", + "81527", + "81601", + "81602", + "81610", + "81611", + "81612", + "81615", + "81620", + "81621", + "81623", + "81624", + "81625", + "81626", + "81630", + "81631", + "81632", + "81633", + "81635", + "81636", + "81637", + "81638", + "81639", + "81640", + "81641", + "81642", + "81643", + "81645", + "81646", + "81647", + "81648", + "81649", + "81650", + "81652", + "81653", + "81654", + "81655", + "81656", + "81657", + "81658", + "82001", + "82002", + "82003", + "82005", + "82006", + "82007", + "82008", + "82009", + "82010", + "82050", + "82051", + "82052", + "82053", + "82054", + "82055", + "82058", + "82059", + "82060", + "82061", + "82063", + "82070", + "82071", + "82072", + "82073", + "82081", + "82082", + "82083", + "82084", + "82190", + "82201", + "82210", + "82212", + "82213", + "82214", + "82215", + "82217", + "82218", + "82219", + "82221", + "82222", + "82223", + "82224", + "82225", + "82227", + "82229", + "82240", + "82242", + "82243", + "82244", + "82301", + "82310", + "82321", + "82322", + "82323", + "82324", + "82325", + "82327", + "82329", + "82331", + "82332", + "82334", + "82335", + "82336", + "82401", + "82410", + "82411", + "82412", + "82414", + "82420", + "82421", + "82422", + "82423", + "82426", + "82428", + "82430", + "82431", + "82432", + "82433", + "82434", + "82435", + "82440", + "82441", + "82442", + "82443", + "82450", + "82501", + "82510", + "82512", + "82513", + "82514", + "82515", + "82516", + "82520", + "82523", + "82524", + "82601", + "82602", + "82604", + "82605", + "82609", + "82615", + "82620", + "82630", + "82633", + "82635", + "82636", + "82637", + "82638", + "82639", + "82640", + "82642", + "82643", + "82644", + "82646", + "82648", + "82649", + "82701", + "82710", + "82711", + "82712", + "82714", + "82715", + "82716", + "82717", + "82718", + "82720", + "82721", + "82723", + "82725", + "82727", + "82729", + "82730", + "82731", + "82732", + "82801", + "82831", + "82832", + "82833", + "82834", + "82835", + "82836", + "82837", + "82838", + "82839", + "82840", + "82842", + "82844", + "82845", + "82901", + "82902", + "82922", + "82923", + "82925", + "82929", + "82930", + "82931", + "82932", + "82933", + "82934", + "82935", + "82936", + "82937", + "82938", + "82939", + "82941", + "82942", + "82943", + "82944", + "82945", + "83001", + "83002", + "83011", + "83012", + "83013", + "83014", + "83025", + "83101", + "83110", + "83111", + "83112", + "83113", + "83114", + "83115", + "83116", + "83118", + "83119", + "83120", + "83121", + "83122", + "83123", + "83124", + "83126", + "83127", + "83128", + "83201", + "83202", + "83203", + "83204", + "83205", + "83206", + "83209", + "83210", + "83211", + "83212", + "83213", + "83214", + "83215", + "83217", + "83218", + "83220", + "83221", + "83223", + "83226", + "83227", + "83228", + "83229", + "83230", + "83232", + "83233", + "83234", + "83235", + "83236", + "83237", + "83238", + "83239", + "83241", + "83243", + "83244", + "83245", + "83246", + "83250", + "83251", + "83252", + "83253", + "83254", + "83255", + "83256", + "83261", + "83262", + "83263", + "83271", + "83272", + "83274", + "83276", + "83277", + "83278", + "83281", + "83283", + "83285", + "83286", + "83287", + "83301", + "83302", + "83303", + "83311", + "83312", + "83313", + "83314", + "83316", + "83318", + "83320", + "83321", + "83322", + "83323", + "83324", + "83325", + "83327", + "83328", + "83330", + "83332", + "83333", + "83334", + "83335", + "83336", + "83337", + "83338", + "83340", + "83341", + "83342", + "83343", + "83344", + "83346", + "83347", + "83348", + "83349", + "83350", + "83352", + "83353", + "83354", + "83355", + "83401", + "83402", + "83403", + "83404", + "83405", + "83406", + "83414", + "83415", + "83420", + "83421", + "83422", + "83423", + "83424", + "83425", + "83427", + "83428", + "83429", + "83431", + "83433", + "83434", + "83435", + "83436", + "83438", + "83440", + "83441", + "83442", + "83443", + "83444", + "83445", + "83446", + "83448", + "83449", + "83450", + "83451", + "83452", + "83454", + "83455", + "83460", + "83462", + "83463", + "83464", + "83465", + "83466", + "83467", + "83468", + "83469", + "83501", + "83520", + "83522", + "83523", + "83524", + "83525", + "83526", + "83530", + "83531", + "83533", + "83535", + "83536", + "83537", + "83539", + "83540", + "83541", + "83542", + "83543", + "83544", + "83545", + "83546", + "83547", + "83548", + "83549", + "83552", + "83553", + "83554", + "83555", + "83601", + "83602", + "83604", + "83605", + "83606", + "83607", + "83610", + "83611", + "83612", + "83615", + "83616", + "83617", + "83619", + "83622", + "83623", + "83624", + "83626", + "83627", + "83628", + "83629", + "83630", + "83631", + "83632", + "83633", + "83634", + "83635", + "83636", + "83637", + "83638", + "83639", + "83641", + "83642", + "83643", + "83644", + "83645", + "83646", + "83647", + "83648", + "83650", + "83651", + "83652", + "83653", + "83654", + "83655", + "83656", + "83657", + "83660", + "83661", + "83666", + "83669", + "83670", + "83671", + "83672", + "83676", + "83677", + "83680", + "83686", + "83687", + "83701", + "83702", + "83703", + "83704", + "83705", + "83706", + "83707", + "83708", + "83709", + "83711", + "83712", + "83713", + "83714", + "83715", + "83716", + "83717", + "83719", + "83720", + "83721", + "83722", + "83724", + "83725", + "83726", + "83727", + "83728", + "83729", + "83730", + "83731", + "83732", + "83733", + "83735", + "83756", + "83757", + "83799", + "83801", + "83802", + "83803", + "83804", + "83805", + "83806", + "83808", + "83809", + "83810", + "83811", + "83812", + "83813", + "83814", + "83815", + "83816", + "83821", + "83822", + "83823", + "83824", + "83825", + "83826", + "83827", + "83830", + "83832", + "83833", + "83834", + "83835", + "83836", + "83837", + "83839", + "83840", + "83841", + "83842", + "83843", + "83844", + "83845", + "83846", + "83847", + "83848", + "83849", + "83850", + "83851", + "83852", + "83853", + "83854", + "83855", + "83856", + "83857", + "83858", + "83860", + "83861", + "83864", + "83865", + "83866", + "83867", + "83868", + "83869", + "83870", + "83871", + "83872", + "83873", + "83874", + "83876", + "83877", + "84001", + "84002", + "84003", + "84004", + "84005", + "84006", + "84007", + "84008", + "84009", + "84010", + "84011", + "84013", + "84014", + "84015", + "84016", + "84017", + "84018", + "84020", + "84021", + "84022", + "84023", + "84024", + "84025", + "84026", + "84027", + "84028", + "84029", + "84031", + "84032", + "84033", + "84034", + "84035", + "84036", + "84037", + "84038", + "84039", + "84040", + "84041", + "84042", + "84043", + "84044", + "84045", + "84046", + "84047", + "84049", + "84050", + "84051", + "84052", + "84053", + "84054", + "84055", + "84056", + "84057", + "84058", + "84059", + "84060", + "84061", + "84062", + "84063", + "84064", + "84065", + "84066", + "84067", + "84068", + "84069", + "84070", + "84071", + "84072", + "84073", + "84074", + "84075", + "84076", + "84078", + "84079", + "84080", + "84081", + "84082", + "84083", + "84084", + "84085", + "84086", + "84087", + "84088", + "84089", + "84090", + "84091", + "84092", + "84093", + "84094", + "84095", + "84096", + "84097", + "84098", + "84101", + "84102", + "84103", + "84104", + "84105", + "84106", + "84107", + "84108", + "84109", + "84110", + "84111", + "84112", + "84113", + "84114", + "84115", + "84116", + "84117", + "84118", + "84119", + "84120", + "84121", + "84122", + "84123", + "84124", + "84125", + "84126", + "84127", + "84128", + "84129", + "84130", + "84131", + "84132", + "84133", + "84134", + "84136", + "84138", + "84139", + "84141", + "84143", + "84144", + "84145", + "84147", + "84148", + "84150", + "84151", + "84152", + "84157", + "84158", + "84165", + "84170", + "84171", + "84180", + "84184", + "84189", + "84190", + "84199", + "84201", + "84244", + "84301", + "84302", + "84304", + "84305", + "84306", + "84307", + "84308", + "84309", + "84310", + "84311", + "84312", + "84313", + "84314", + "84315", + "84316", + "84317", + "84318", + "84319", + "84320", + "84321", + "84322", + "84323", + "84324", + "84325", + "84326", + "84327", + "84328", + "84329", + "84330", + "84331", + "84332", + "84333", + "84334", + "84335", + "84336", + "84337", + "84338", + "84339", + "84340", + "84341", + "84401", + "84402", + "84403", + "84404", + "84405", + "84407", + "84408", + "84409", + "84412", + "84414", + "84415", + "84501", + "84510", + "84511", + "84512", + "84513", + "84515", + "84516", + "84518", + "84520", + "84521", + "84522", + "84523", + "84525", + "84526", + "84528", + "84529", + "84530", + "84531", + "84532", + "84533", + "84534", + "84535", + "84536", + "84537", + "84539", + "84540", + "84542", + "84601", + "84602", + "84603", + "84604", + "84605", + "84606", + "84620", + "84621", + "84622", + "84623", + "84624", + "84626", + "84627", + "84628", + "84629", + "84630", + "84631", + "84632", + "84633", + "84634", + "84635", + "84636", + "84637", + "84638", + "84639", + "84640", + "84642", + "84643", + "84644", + "84645", + "84646", + "84647", + "84648", + "84649", + "84651", + "84652", + "84653", + "84654", + "84655", + "84656", + "84657", + "84660", + "84662", + "84663", + "84664", + "84665", + "84667", + "84701", + "84710", + "84711", + "84712", + "84713", + "84714", + "84715", + "84716", + "84717", + "84718", + "84719", + "84720", + "84721", + "84722", + "84723", + "84724", + "84725", + "84726", + "84728", + "84729", + "84730", + "84731", + "84732", + "84733", + "84734", + "84735", + "84736", + "84737", + "84738", + "84739", + "84740", + "84741", + "84742", + "84743", + "84744", + "84745", + "84746", + "84747", + "84749", + "84750", + "84751", + "84752", + "84753", + "84754", + "84755", + "84756", + "84757", + "84758", + "84759", + "84760", + "84761", + "84762", + "84763", + "84764", + "84765", + "84766", + "84767", + "84770", + "84771", + "84772", + "84773", + "84774", + "84775", + "84776", + "84779", + "84780", + "84781", + "84782", + "84783", + "84784", + "84790", + "84791", + "85001", + "85002", + "85003", + "85004", + "85005", + "85006", + "85007", + "85008", + "85009", + "85010", + "85011", + "85012", + "85013", + "85014", + "85015", + "85016", + "85017", + "85018", + "85019", + "85020", + "85021", + "85022", + "85023", + "85024", + "85025", + "85026", + "85027", + "85028", + "85029", + "85030", + "85031", + "85032", + "85033", + "85034", + "85035", + "85036", + "85037", + "85038", + "85039", + "85040", + "85041", + "85042", + "85043", + "85044", + "85045", + "85046", + "85048", + "85050", + "85051", + "85053", + "85054", + "85055", + "85060", + "85061", + "85062", + "85063", + "85064", + "85065", + "85066", + "85067", + "85068", + "85069", + "85070", + "85071", + "85072", + "85073", + "85074", + "85075", + "85076", + "85077", + "85078", + "85079", + "85080", + "85082", + "85083", + "85085", + "85086", + "85087", + "85096", + "85097", + "85098", + "85099", + "85117", + "85118", + "85119", + "85120", + "85121", + "85122", + "85123", + "85127", + "85128", + "85130", + "85131", + "85132", + "85135", + "85137", + "85138", + "85139", + "85140", + "85141", + "85142", + "85143", + "85145", + "85147", + "85172", + "85173", + "85178", + "85190", + "85191", + "85192", + "85193", + "85194", + "85201", + "85202", + "85203", + "85204", + "85205", + "85206", + "85207", + "85208", + "85209", + "85210", + "85211", + "85212", + "85213", + "85214", + "85215", + "85216", + "85217", + "85218", + "85219", + "85220", + "85221", + "85222", + "85223", + "85224", + "85225", + "85226", + "85227", + "85228", + "85230", + "85231", + "85232", + "85233", + "85234", + "85235", + "85236", + "85237", + "85238", + "85239", + "85240", + "85241", + "85242", + "85243", + "85244", + "85245", + "85246", + "85247", + "85248", + "85249", + "85250", + "85251", + "85252", + "85253", + "85254", + "85255", + "85256", + "85257", + "85258", + "85259", + "85260", + "85261", + "85262", + "85263", + "85264", + "85266", + "85267", + "85268", + "85269", + "85271", + "85272", + "85273", + "85274", + "85275", + "85277", + "85278", + "85279", + "85280", + "85281", + "85282", + "85283", + "85284", + "85285", + "85286", + "85287", + "85288", + "85289", + "85290", + "85291", + "85292", + "85293", + "85294", + "85295", + "85296", + "85297", + "85298", + "85299", + "85301", + "85302", + "85303", + "85304", + "85305", + "85306", + "85307", + "85308", + "85309", + "85310", + "85311", + "85312", + "85313", + "85318", + "85320", + "85321", + "85322", + "85323", + "85324", + "85325", + "85326", + "85327", + "85328", + "85329", + "85331", + "85332", + "85333", + "85334", + "85335", + "85336", + "85337", + "85338", + "85339", + "85340", + "85341", + "85342", + "85343", + "85344", + "85345", + "85346", + "85347", + "85348", + "85349", + "85350", + "85351", + "85352", + "85353", + "85354", + "85355", + "85356", + "85357", + "85358", + "85359", + "85360", + "85361", + "85362", + "85363", + "85364", + "85365", + "85366", + "85367", + "85369", + "85371", + "85372", + "85373", + "85374", + "85375", + "85376", + "85377", + "85378", + "85379", + "85380", + "85381", + "85382", + "85383", + "85385", + "85387", + "85388", + "85390", + "85392", + "85395", + "85396", + "85501", + "85502", + "85530", + "85531", + "85532", + "85533", + "85534", + "85535", + "85536", + "85539", + "85540", + "85541", + "85542", + "85543", + "85544", + "85545", + "85546", + "85547", + "85548", + "85550", + "85551", + "85552", + "85553", + "85554", + "85601", + "85602", + "85603", + "85605", + "85606", + "85607", + "85608", + "85609", + "85610", + "85611", + "85613", + "85614", + "85615", + "85616", + "85617", + "85618", + "85619", + "85620", + "85621", + "85622", + "85623", + "85624", + "85625", + "85626", + "85627", + "85628", + "85629", + "85630", + "85631", + "85632", + "85633", + "85634", + "85635", + "85636", + "85637", + "85638", + "85639", + "85640", + "85641", + "85643", + "85644", + "85645", + "85646", + "85648", + "85650", + "85652", + "85653", + "85654", + "85655", + "85658", + "85662", + "85670", + "85671", + "85701", + "85702", + "85703", + "85704", + "85705", + "85706", + "85707", + "85708", + "85709", + "85710", + "85711", + "85712", + "85713", + "85714", + "85715", + "85716", + "85717", + "85718", + "85719", + "85720", + "85721", + "85722", + "85723", + "85724", + "85725", + "85726", + "85728", + "85730", + "85731", + "85732", + "85733", + "85734", + "85735", + "85736", + "85737", + "85738", + "85739", + "85740", + "85741", + "85742", + "85743", + "85744", + "85745", + "85746", + "85747", + "85748", + "85749", + "85750", + "85751", + "85752", + "85754", + "85755", + "85756", + "85757", + "85775", + "85777", + "85901", + "85902", + "85911", + "85912", + "85920", + "85922", + "85923", + "85924", + "85925", + "85926", + "85927", + "85928", + "85929", + "85930", + "85931", + "85932", + "85933", + "85934", + "85935", + "85936", + "85937", + "85938", + "85939", + "85940", + "85941", + "85942", + "86001", + "86002", + "86003", + "86004", + "86005", + "86011", + "86015", + "86016", + "86017", + "86018", + "86020", + "86021", + "86022", + "86023", + "86024", + "86025", + "86028", + "86029", + "86030", + "86031", + "86032", + "86033", + "86034", + "86035", + "86036", + "86038", + "86039", + "86040", + "86042", + "86043", + "86044", + "86045", + "86046", + "86047", + "86052", + "86053", + "86054", + "86301", + "86302", + "86303", + "86304", + "86305", + "86312", + "86313", + "86314", + "86315", + "86320", + "86321", + "86322", + "86323", + "86324", + "86325", + "86326", + "86327", + "86329", + "86330", + "86331", + "86332", + "86333", + "86334", + "86335", + "86336", + "86337", + "86338", + "86339", + "86340", + "86341", + "86342", + "86343", + "86351", + "86401", + "86402", + "86403", + "86404", + "86405", + "86406", + "86409", + "86411", + "86412", + "86413", + "86426", + "86427", + "86429", + "86430", + "86431", + "86432", + "86433", + "86434", + "86435", + "86436", + "86437", + "86438", + "86439", + "86440", + "86441", + "86442", + "86443", + "86444", + "86445", + "86446", + "86502", + "86503", + "86504", + "86505", + "86506", + "86507", + "86508", + "86510", + "86511", + "86512", + "86514", + "86515", + "86520", + "86535", + "86538", + "86540", + "86544", + "86545", + "86547", + "86555", + "86556", + "87001", + "87002", + "87004", + "87005", + "87006", + "87007", + "87008", + "87009", + "87010", + "87011", + "87012", + "87013", + "87014", + "87015", + "87016", + "87017", + "87018", + "87020", + "87021", + "87022", + "87023", + "87024", + "87025", + "87026", + "87027", + "87028", + "87029", + "87031", + "87032", + "87034", + "87035", + "87036", + "87037", + "87038", + "87040", + "87041", + "87042", + "87043", + "87044", + "87045", + "87046", + "87047", + "87048", + "87049", + "87051", + "87052", + "87053", + "87056", + "87059", + "87060", + "87061", + "87062", + "87063", + "87064", + "87068", + "87070", + "87072", + "87083", + "87101", + "87102", + "87103", + "87104", + "87105", + "87106", + "87107", + "87108", + "87109", + "87110", + "87111", + "87112", + "87113", + "87114", + "87115", + "87116", + "87117", + "87119", + "87120", + "87121", + "87122", + "87123", + "87124", + "87125", + "87131", + "87144", + "87151", + "87153", + "87154", + "87158", + "87165", + "87174", + "87176", + "87181", + "87184", + "87185", + "87187", + "87190", + "87191", + "87192", + "87193", + "87194", + "87195", + "87196", + "87197", + "87198", + "87199", + "87301", + "87302", + "87305", + "87310", + "87311", + "87312", + "87313", + "87315", + "87316", + "87317", + "87319", + "87320", + "87321", + "87322", + "87323", + "87325", + "87326", + "87327", + "87328", + "87347", + "87357", + "87364", + "87365", + "87375", + "87401", + "87402", + "87410", + "87412", + "87413", + "87415", + "87416", + "87417", + "87418", + "87419", + "87420", + "87421", + "87455", + "87461", + "87499", + "87501", + "87502", + "87503", + "87504", + "87505", + "87506", + "87507", + "87508", + "87509", + "87510", + "87511", + "87512", + "87513", + "87514", + "87515", + "87516", + "87517", + "87518", + "87519", + "87520", + "87521", + "87522", + "87523", + "87524", + "87525", + "87527", + "87528", + "87529", + "87530", + "87531", + "87532", + "87533", + "87535", + "87537", + "87538", + "87539", + "87540", + "87543", + "87544", + "87545", + "87547", + "87548", + "87549", + "87551", + "87552", + "87553", + "87554", + "87556", + "87557", + "87558", + "87560", + "87562", + "87564", + "87565", + "87566", + "87567", + "87569", + "87571", + "87573", + "87574", + "87575", + "87576", + "87577", + "87578", + "87579", + "87580", + "87581", + "87582", + "87583", + "87592", + "87594", + "87654", + "87701", + "87710", + "87711", + "87712", + "87713", + "87714", + "87715", + "87718", + "87722", + "87723", + "87724", + "87728", + "87729", + "87730", + "87731", + "87732", + "87733", + "87734", + "87735", + "87736", + "87740", + "87742", + "87743", + "87745", + "87746", + "87747", + "87749", + "87750", + "87752", + "87753", + "87801", + "87820", + "87821", + "87823", + "87824", + "87825", + "87827", + "87828", + "87829", + "87830", + "87831", + "87832", + "87901", + "87930", + "87931", + "87933", + "87935", + "87936", + "87937", + "87939", + "87940", + "87941", + "87942", + "87943", + "88001", + "88002", + "88003", + "88004", + "88005", + "88006", + "88007", + "88008", + "88009", + "88011", + "88012", + "88013", + "88020", + "88021", + "88022", + "88023", + "88024", + "88025", + "88026", + "88027", + "88028", + "88029", + "88030", + "88031", + "88032", + "88033", + "88034", + "88036", + "88038", + "88039", + "88040", + "88041", + "88042", + "88043", + "88044", + "88045", + "88046", + "88047", + "88048", + "88049", + "88051", + "88052", + "88053", + "88054", + "88055", + "88056", + "88058", + "88061", + "88062", + "88063", + "88065", + "88072", + "88081", + "88101", + "88102", + "88103", + "88112", + "88113", + "88114", + "88115", + "88116", + "88118", + "88119", + "88120", + "88121", + "88122", + "88123", + "88124", + "88125", + "88126", + "88130", + "88132", + "88133", + "88134", + "88135", + "88136", + "88201", + "88202", + "88203", + "88210", + "88211", + "88213", + "88220", + "88221", + "88230", + "88231", + "88232", + "88240", + "88241", + "88242", + "88244", + "88250", + "88252", + "88253", + "88254", + "88255", + "88256", + "88260", + "88262", + "88263", + "88264", + "88265", + "88267", + "88268", + "88301", + "88310", + "88311", + "88312", + "88314", + "88316", + "88317", + "88318", + "88321", + "88323", + "88324", + "88325", + "88330", + "88336", + "88337", + "88338", + "88339", + "88340", + "88341", + "88342", + "88343", + "88344", + "88345", + "88346", + "88347", + "88348", + "88349", + "88350", + "88351", + "88352", + "88353", + "88354", + "88355", + "88401", + "88410", + "88411", + "88414", + "88415", + "88416", + "88417", + "88418", + "88419", + "88421", + "88422", + "88424", + "88426", + "88427", + "88430", + "88431", + "88433", + "88434", + "88435", + "88436", + "88439", + "88510", + "88511", + "88512", + "88513", + "88514", + "88515", + "88516", + "88517", + "88518", + "88519", + "88520", + "88521", + "88523", + "88524", + "88525", + "88526", + "88527", + "88528", + "88529", + "88530", + "88531", + "88532", + "88533", + "88534", + "88535", + "88536", + "88538", + "88539", + "88540", + "88541", + "88542", + "88543", + "88544", + "88545", + "88546", + "88547", + "88548", + "88549", + "88550", + "88553", + "88554", + "88555", + "88556", + "88557", + "88558", + "88559", + "88560", + "88561", + "88562", + "88563", + "88565", + "88566", + "88567", + "88568", + "88569", + "88570", + "88571", + "88572", + "88573", + "88574", + "88575", + "88576", + "88577", + "88578", + "88579", + "88580", + "88581", + "88582", + "88583", + "88584", + "88585", + "88586", + "88587", + "88588", + "88589", + "88590", + "88595", + "88888", + "88901", + "88905", + "89001", + "89002", + "89003", + "89004", + "89005", + "89006", + "89007", + "89008", + "89009", + "89010", + "89011", + "89012", + "89013", + "89014", + "89015", + "89016", + "89017", + "89018", + "89019", + "89020", + "89021", + "89022", + "89023", + "89024", + "89025", + "89026", + "89027", + "89028", + "89029", + "89030", + "89031", + "89032", + "89033", + "89034", + "89036", + "89037", + "89039", + "89040", + "89041", + "89042", + "89043", + "89044", + "89045", + "89046", + "89047", + "89048", + "89049", + "89052", + "89053", + "89054", + "89060", + "89061", + "89067", + "89070", + "89074", + "89077", + "89081", + "89084", + "89085", + "89086", + "89087", + "89101", + "89102", + "89103", + "89104", + "89105", + "89106", + "89107", + "89108", + "89109", + "89110", + "89111", + "89112", + "89113", + "89114", + "89115", + "89116", + "89117", + "89118", + "89119", + "89120", + "89121", + "89122", + "89123", + "89124", + "89125", + "89126", + "89127", + "89128", + "89129", + "89130", + "89131", + "89132", + "89133", + "89134", + "89135", + "89136", + "89137", + "89138", + "89139", + "89140", + "89141", + "89142", + "89143", + "89144", + "89145", + "89146", + "89147", + "89148", + "89149", + "89150", + "89151", + "89152", + "89153", + "89154", + "89155", + "89156", + "89157", + "89158", + "89159", + "89160", + "89161", + "89162", + "89163", + "89164", + "89165", + "89166", + "89169", + "89170", + "89173", + "89177", + "89178", + "89179", + "89180", + "89183", + "89185", + "89191", + "89193", + "89195", + "89199", + "89301", + "89310", + "89311", + "89314", + "89315", + "89316", + "89317", + "89318", + "89319", + "89402", + "89403", + "89404", + "89405", + "89406", + "89407", + "89408", + "89409", + "89410", + "89411", + "89412", + "89413", + "89414", + "89415", + "89418", + "89419", + "89420", + "89421", + "89422", + "89423", + "89424", + "89425", + "89426", + "89427", + "89428", + "89429", + "89430", + "89431", + "89432", + "89433", + "89434", + "89435", + "89436", + "89437", + "89438", + "89439", + "89440", + "89441", + "89442", + "89444", + "89445", + "89446", + "89447", + "89448", + "89449", + "89450", + "89451", + "89452", + "89460", + "89496", + "89501", + "89502", + "89503", + "89504", + "89505", + "89506", + "89507", + "89508", + "89509", + "89510", + "89511", + "89512", + "89513", + "89515", + "89519", + "89520", + "89521", + "89523", + "89533", + "89555", + "89557", + "89570", + "89595", + "89599", + "89701", + "89702", + "89703", + "89704", + "89705", + "89706", + "89711", + "89712", + "89713", + "89714", + "89721", + "89801", + "89802", + "89803", + "89815", + "89820", + "89821", + "89822", + "89823", + "89824", + "89825", + "89826", + "89828", + "89830", + "89831", + "89832", + "89833", + "89834", + "89835", + "89883", + "90001", + "90002", + "90003", + "90004", + "90005", + "90006", + "90007", + "90008", + "90009", + "90010", + "90011", + "90012", + "90013", + "90014", + "90015", + "90016", + "90017", + "90018", + "90019", + "90020", + "90021", + "90022", + "90023", + "90024", + "90025", + "90026", + "90027", + "90028", + "90029", + "90030", + "90031", + "90032", + "90033", + "90034", + "90035", + "90036", + "90037", + "90038", + "90039", + "90040", + "90041", + "90042", + "90043", + "90044", + "90045", + "90046", + "90047", + "90048", + "90049", + "90050", + "90051", + "90052", + "90053", + "90054", + "90055", + "90056", + "90057", + "90058", + "90059", + "90060", + "90061", + "90062", + "90063", + "90064", + "90065", + "90066", + "90067", + "90068", + "90069", + "90070", + "90071", + "90072", + "90073", + "90074", + "90075", + "90076", + "90077", + "90078", + "90079", + "90080", + "90081", + "90082", + "90083", + "90084", + "90086", + "90087", + "90088", + "90089", + "90090", + "90091", + "90093", + "90094", + "90095", + "90096", + "90099", + "90101", + "90102", + "90103", + "90134", + "90189", + "90201", + "90202", + "90209", + "90210", + "90211", + "90212", + "90213", + "90220", + "90221", + "90222", + "90223", + "90224", + "90230", + "90231", + "90232", + "90233", + "90239", + "90240", + "90241", + "90242", + "90245", + "90247", + "90248", + "90249", + "90250", + "90251", + "90254", + "90255", + "90260", + "90261", + "90262", + "90263", + "90264", + "90265", + "90266", + "90267", + "90270", + "90272", + "90274", + "90275", + "90277", + "90278", + "90280", + "90290", + "90291", + "90292", + "90293", + "90294", + "90295", + "90296", + "90301", + "90302", + "90303", + "90304", + "90305", + "90306", + "90307", + "90308", + "90309", + "90310", + "90311", + "90312", + "90313", + "90397", + "90398", + "90401", + "90402", + "90403", + "90404", + "90405", + "90406", + "90407", + "90408", + "90409", + "90410", + "90411", + "90501", + "90502", + "90503", + "90504", + "90505", + "90506", + "90507", + "90508", + "90509", + "90510", + "90601", + "90602", + "90603", + "90604", + "90605", + "90606", + "90607", + "90608", + "90609", + "90610", + "90612", + "90620", + "90621", + "90622", + "90623", + "90624", + "90630", + "90631", + "90632", + "90633", + "90637", + "90638", + "90639", + "90640", + "90650", + "90651", + "90652", + "90659", + "90660", + "90661", + "90662", + "90670", + "90671", + "90680", + "90701", + "90702", + "90703", + "90704", + "90706", + "90707", + "90710", + "90711", + "90712", + "90713", + "90714", + "90715", + "90716", + "90717", + "90720", + "90721", + "90723", + "90731", + "90732", + "90733", + "90734", + "90740", + "90742", + "90743", + "90744", + "90745", + "90746", + "90747", + "90748", + "90749", + "90755", + "90801", + "90802", + "90803", + "90804", + "90805", + "90806", + "90807", + "90808", + "90809", + "90810", + "90813", + "90814", + "90815", + "90822", + "90831", + "90832", + "90833", + "90834", + "90835", + "90840", + "90842", + "90844", + "90845", + "90846", + "90847", + "90848", + "90853", + "90888", + "90895", + "90899", + "91001", + "91003", + "91006", + "91007", + "91008", + "91009", + "91010", + "91011", + "91012", + "91016", + "91017", + "91020", + "91021", + "91023", + "91024", + "91025", + "91030", + "91031", + "91040", + "91041", + "91042", + "91043", + "91046", + "91066", + "91077", + "91101", + "91102", + "91103", + "91104", + "91105", + "91106", + "91107", + "91108", + "91109", + "91110", + "91114", + "91115", + "91116", + "91117", + "91118", + "91121", + "91123", + "91124", + "91125", + "91126", + "91129", + "91131", + "91182", + "91184", + "91185", + "91188", + "91189", + "91191", + "91199", + "91201", + "91202", + "91203", + "91204", + "91205", + "91206", + "91207", + "91208", + "91209", + "91210", + "91214", + "91221", + "91222", + "91224", + "91225", + "91226", + "91301", + "91302", + "91303", + "91304", + "91305", + "91306", + "91307", + "91308", + "91309", + "91310", + "91311", + "91313", + "91316", + "91319", + "91320", + "91321", + "91322", + "91324", + "91325", + "91326", + "91327", + "91328", + "91329", + "91330", + "91331", + "91333", + "91334", + "91335", + "91337", + "91340", + "91341", + "91342", + "91343", + "91344", + "91345", + "91346", + "91350", + "91351", + "91352", + "91353", + "91354", + "91355", + "91356", + "91357", + "91358", + "91359", + "91360", + "91361", + "91362", + "91363", + "91364", + "91365", + "91367", + "91371", + "91372", + "91376", + "91377", + "91380", + "91381", + "91382", + "91383", + "91384", + "91385", + "91386", + "91387", + "91388", + "91390", + "91392", + "91393", + "91394", + "91395", + "91396", + "91399", + "91401", + "91402", + "91403", + "91404", + "91405", + "91406", + "91407", + "91408", + "91409", + "91410", + "91411", + "91412", + "91413", + "91416", + "91423", + "91426", + "91436", + "91470", + "91482", + "91495", + "91496", + "91497", + "91499", + "91501", + "91502", + "91503", + "91504", + "91505", + "91506", + "91507", + "91508", + "91510", + "91521", + "91522", + "91523", + "91526", + "91601", + "91602", + "91603", + "91604", + "91605", + "91606", + "91607", + "91608", + "91609", + "91610", + "91611", + "91612", + "91614", + "91615", + "91616", + "91617", + "91618", + "91701", + "91702", + "91706", + "91708", + "91709", + "91710", + "91711", + "91714", + "91715", + "91716", + "91722", + "91723", + "91724", + "91729", + "91730", + "91731", + "91732", + "91733", + "91734", + "91735", + "91737", + "91739", + "91740", + "91741", + "91743", + "91744", + "91745", + "91746", + "91747", + "91748", + "91749", + "91750", + "91752", + "91754", + "91755", + "91756", + "91758", + "91759", + "91761", + "91762", + "91763", + "91764", + "91765", + "91766", + "91767", + "91768", + "91769", + "91770", + "91771", + "91772", + "91773", + "91775", + "91776", + "91778", + "91780", + "91784", + "91785", + "91786", + "91788", + "91789", + "91790", + "91791", + "91792", + "91793", + "91795", + "91797", + "91798", + "91799", + "91801", + "91802", + "91803", + "91804", + "91841", + "91896", + "91899", + "91901", + "91902", + "91903", + "91905", + "91906", + "91908", + "91909", + "91910", + "91911", + "91912", + "91913", + "91914", + "91915", + "91916", + "91917", + "91921", + "91931", + "91932", + "91933", + "91934", + "91935", + "91941", + "91942", + "91943", + "91944", + "91945", + "91946", + "91947", + "91948", + "91950", + "91951", + "91962", + "91963", + "91976", + "91977", + "91978", + "91979", + "91980", + "91987", + "91990", + "92003", + "92004", + "92007", + "92008", + "92009", + "92010", + "92011", + "92013", + "92014", + "92018", + "92019", + "92020", + "92021", + "92022", + "92023", + "92024", + "92025", + "92026", + "92027", + "92028", + "92029", + "92030", + "92033", + "92036", + "92037", + "92038", + "92039", + "92040", + "92046", + "92049", + "92051", + "92052", + "92054", + "92055", + "92056", + "92057", + "92058", + "92059", + "92060", + "92061", + "92064", + "92065", + "92066", + "92067", + "92068", + "92069", + "92070", + "92071", + "92072", + "92074", + "92075", + "92078", + "92079", + "92081", + "92082", + "92083", + "92084", + "92085", + "92086", + "92088", + "92090", + "92091", + "92092", + "92093", + "92096", + "92101", + "92102", + "92103", + "92104", + "92105", + "92106", + "92107", + "92108", + "92109", + "92110", + "92111", + "92112", + "92113", + "92114", + "92115", + "92116", + "92117", + "92118", + "92119", + "92120", + "92121", + "92122", + "92123", + "92124", + "92126", + "92127", + "92128", + "92129", + "92130", + "92131", + "92132", + "92133", + "92134", + "92135", + "92136", + "92137", + "92138", + "92139", + "92140", + "92142", + "92143", + "92145", + "92147", + "92149", + "92150", + "92152", + "92153", + "92154", + "92155", + "92158", + "92159", + "92160", + "92161", + "92162", + "92163", + "92164", + "92165", + "92166", + "92167", + "92168", + "92169", + "92170", + "92171", + "92172", + "92173", + "92174", + "92175", + "92176", + "92177", + "92178", + "92179", + "92182", + "92184", + "92186", + "92187", + "92190", + "92191", + "92192", + "92193", + "92194", + "92195", + "92196", + "92197", + "92198", + "92199", + "92201", + "92202", + "92203", + "92210", + "92211", + "92220", + "92222", + "92223", + "92225", + "92226", + "92227", + "92230", + "92231", + "92232", + "92233", + "92234", + "92235", + "92236", + "92239", + "92240", + "92241", + "92242", + "92243", + "92244", + "92247", + "92248", + "92249", + "92250", + "92251", + "92252", + "92253", + "92254", + "92255", + "92256", + "92257", + "92258", + "92259", + "92260", + "92261", + "92262", + "92263", + "92264", + "92266", + "92267", + "92268", + "92270", + "92273", + "92274", + "92275", + "92276", + "92277", + "92278", + "92280", + "92281", + "92282", + "92283", + "92284", + "92285", + "92286", + "92292", + "92301", + "92304", + "92305", + "92307", + "92308", + "92309", + "92310", + "92311", + "92312", + "92313", + "92314", + "92315", + "92316", + "92317", + "92318", + "92320", + "92321", + "92322", + "92323", + "92324", + "92325", + "92326", + "92327", + "92328", + "92329", + "92331", + "92332", + "92333", + "92334", + "92335", + "92336", + "92337", + "92338", + "92339", + "92340", + "92341", + "92342", + "92344", + "92345", + "92346", + "92347", + "92350", + "92352", + "92354", + "92356", + "92357", + "92358", + "92359", + "92363", + "92364", + "92365", + "92366", + "92368", + "92369", + "92371", + "92372", + "92373", + "92374", + "92375", + "92376", + "92377", + "92378", + "92382", + "92384", + "92385", + "92386", + "92389", + "92391", + "92392", + "92393", + "92394", + "92395", + "92397", + "92398", + "92399", + "92401", + "92402", + "92403", + "92404", + "92405", + "92406", + "92407", + "92408", + "92410", + "92411", + "92412", + "92413", + "92414", + "92415", + "92418", + "92423", + "92424", + "92427", + "92501", + "92502", + "92503", + "92504", + "92505", + "92506", + "92507", + "92508", + "92509", + "92513", + "92514", + "92515", + "92516", + "92517", + "92518", + "92519", + "92521", + "92522", + "92530", + "92531", + "92532", + "92536", + "92539", + "92543", + "92544", + "92545", + "92546", + "92548", + "92549", + "92551", + "92552", + "92553", + "92554", + "92555", + "92556", + "92557", + "92561", + "92562", + "92563", + "92564", + "92567", + "92570", + "92571", + "92572", + "92581", + "92582", + "92583", + "92584", + "92585", + "92586", + "92587", + "92589", + "92590", + "92591", + "92592", + "92593", + "92595", + "92596", + "92599", + "92602", + "92603", + "92604", + "92605", + "92606", + "92607", + "92609", + "92610", + "92612", + "92614", + "92615", + "92616", + "92617", + "92618", + "92619", + "92620", + "92623", + "92624", + "92625", + "92626", + "92627", + "92628", + "92629", + "92630", + "92637", + "92646", + "92647", + "92648", + "92649", + "92650", + "92651", + "92652", + "92653", + "92654", + "92655", + "92656", + "92657", + "92658", + "92659", + "92660", + "92661", + "92662", + "92663", + "92672", + "92673", + "92674", + "92675", + "92676", + "92677", + "92678", + "92679", + "92683", + "92684", + "92685", + "92688", + "92690", + "92691", + "92692", + "92693", + "92694", + "92697", + "92698", + "92701", + "92702", + "92703", + "92704", + "92705", + "92706", + "92707", + "92708", + "92709", + "92710", + "92711", + "92712", + "92725", + "92728", + "92735", + "92780", + "92781", + "92782", + "92799", + "92801", + "92802", + "92803", + "92804", + "92805", + "92806", + "92807", + "92808", + "92809", + "92811", + "92812", + "92814", + "92815", + "92816", + "92817", + "92821", + "92822", + "92823", + "92825", + "92831", + "92832", + "92833", + "92834", + "92835", + "92836", + "92837", + "92838", + "92840", + "92841", + "92842", + "92843", + "92844", + "92845", + "92846", + "92850", + "92856", + "92857", + "92859", + "92860", + "92861", + "92862", + "92863", + "92864", + "92865", + "92866", + "92867", + "92868", + "92869", + "92870", + "92871", + "92877", + "92878", + "92879", + "92880", + "92881", + "92882", + "92883", + "92885", + "92886", + "92887", + "92899", + "93001", + "93002", + "93003", + "93004", + "93005", + "93006", + "93007", + "93009", + "93010", + "93011", + "93012", + "93013", + "93014", + "93015", + "93016", + "93020", + "93021", + "93022", + "93023", + "93024", + "93030", + "93031", + "93032", + "93033", + "93034", + "93035", + "93036", + "93040", + "93041", + "93042", + "93043", + "93044", + "93060", + "93061", + "93062", + "93063", + "93064", + "93065", + "93066", + "93067", + "93093", + "93094", + "93099", + "93101", + "93102", + "93103", + "93105", + "93106", + "93107", + "93108", + "93109", + "93110", + "93111", + "93116", + "93117", + "93118", + "93120", + "93121", + "93130", + "93140", + "93150", + "93160", + "93190", + "93199", + "93201", + "93202", + "93203", + "93204", + "93205", + "93206", + "93207", + "93208", + "93210", + "93212", + "93215", + "93216", + "93218", + "93219", + "93220", + "93221", + "93222", + "93223", + "93224", + "93225", + "93226", + "93227", + "93230", + "93232", + "93234", + "93235", + "93237", + "93238", + "93239", + "93240", + "93241", + "93242", + "93243", + "93244", + "93245", + "93246", + "93247", + "93249", + "93250", + "93251", + "93252", + "93254", + "93255", + "93256", + "93257", + "93258", + "93260", + "93261", + "93262", + "93263", + "93265", + "93266", + "93267", + "93268", + "93270", + "93271", + "93272", + "93274", + "93275", + "93276", + "93277", + "93278", + "93279", + "93280", + "93282", + "93283", + "93285", + "93286", + "93287", + "93290", + "93291", + "93292", + "93301", + "93302", + "93303", + "93304", + "93305", + "93306", + "93307", + "93308", + "93309", + "93311", + "93312", + "93313", + "93314", + "93380", + "93381", + "93382", + "93383", + "93384", + "93385", + "93386", + "93387", + "93388", + "93389", + "93390", + "93401", + "93402", + "93403", + "93405", + "93406", + "93407", + "93408", + "93409", + "93410", + "93412", + "93420", + "93421", + "93422", + "93423", + "93424", + "93426", + "93427", + "93428", + "93429", + "93430", + "93432", + "93433", + "93434", + "93435", + "93436", + "93437", + "93438", + "93440", + "93441", + "93442", + "93443", + "93444", + "93445", + "93446", + "93447", + "93448", + "93449", + "93450", + "93451", + "93452", + "93453", + "93454", + "93455", + "93456", + "93457", + "93458", + "93460", + "93461", + "93463", + "93464", + "93465", + "93475", + "93483", + "93501", + "93502", + "93504", + "93505", + "93510", + "93512", + "93513", + "93514", + "93515", + "93516", + "93517", + "93518", + "93519", + "93522", + "93523", + "93524", + "93526", + "93527", + "93528", + "93529", + "93530", + "93531", + "93532", + "93534", + "93535", + "93536", + "93539", + "93541", + "93542", + "93543", + "93544", + "93545", + "93546", + "93549", + "93550", + "93551", + "93552", + "93553", + "93554", + "93555", + "93556", + "93558", + "93560", + "93561", + "93562", + "93563", + "93581", + "93584", + "93586", + "93590", + "93591", + "93592", + "93596", + "93599", + "93601", + "93602", + "93603", + "93604", + "93605", + "93606", + "93607", + "93608", + "93609", + "93610", + "93611", + "93612", + "93613", + "93614", + "93615", + "93616", + "93618", + "93619", + "93620", + "93621", + "93622", + "93623", + "93624", + "93625", + "93626", + "93627", + "93628", + "93630", + "93631", + "93633", + "93634", + "93635", + "93636", + "93637", + "93638", + "93639", + "93640", + "93641", + "93642", + "93643", + "93644", + "93645", + "93646", + "93647", + "93648", + "93649", + "93650", + "93651", + "93652", + "93653", + "93654", + "93656", + "93657", + "93660", + "93661", + "93662", + "93664", + "93665", + "93666", + "93667", + "93668", + "93669", + "93670", + "93673", + "93675", + "93701", + "93702", + "93703", + "93704", + "93705", + "93706", + "93707", + "93708", + "93709", + "93710", + "93711", + "93712", + "93714", + "93715", + "93716", + "93717", + "93718", + "93720", + "93721", + "93722", + "93723", + "93724", + "93725", + "93726", + "93727", + "93728", + "93729", + "93730", + "93737", + "93740", + "93741", + "93744", + "93745", + "93747", + "93750", + "93755", + "93760", + "93761", + "93764", + "93765", + "93771", + "93772", + "93773", + "93774", + "93775", + "93776", + "93777", + "93778", + "93779", + "93780", + "93784", + "93786", + "93790", + "93791", + "93792", + "93793", + "93794", + "93844", + "93888", + "93901", + "93902", + "93905", + "93906", + "93907", + "93908", + "93912", + "93915", + "93920", + "93921", + "93922", + "93923", + "93924", + "93925", + "93926", + "93927", + "93928", + "93930", + "93932", + "93933", + "93940", + "93942", + "93943", + "93944", + "93950", + "93953", + "93954", + "93955", + "93960", + "93962", + "94002", + "94005", + "94010", + "94011", + "94013", + "94014", + "94015", + "94016", + "94017", + "94018", + "94019", + "94020", + "94021", + "94022", + "94023", + "94024", + "94025", + "94026", + "94027", + "94028", + "94030", + "94035", + "94037", + "94038", + "94039", + "94040", + "94041", + "94042", + "94043", + "94044", + "94060", + "94061", + "94062", + "94063", + "94064", + "94065", + "94066", + "94070", + "94074", + "94080", + "94083", + "94085", + "94086", + "94087", + "94088", + "94089", + "94101", + "94102", + "94103", + "94104", + "94105", + "94106", + "94107", + "94108", + "94109", + "94110", + "94111", + "94112", + "94114", + "94115", + "94116", + "94117", + "94118", + "94119", + "94120", + "94121", + "94122", + "94123", + "94124", + "94125", + "94126", + "94127", + "94128", + "94129", + "94130", + "94131", + "94132", + "94133", + "94134", + "94135", + "94136", + "94137", + "94138", + "94139", + "94140", + "94141", + "94142", + "94143", + "94144", + "94145", + "94146", + "94147", + "94150", + "94151", + "94152", + "94153", + "94154", + "94155", + "94156", + "94158", + "94159", + "94160", + "94161", + "94162", + "94163", + "94164", + "94171", + "94172", + "94175", + "94177", + "94188", + "94199", + "94203", + "94204", + "94205", + "94206", + "94207", + "94208", + "94209", + "94211", + "94229", + "94230", + "94232", + "94234", + "94235", + "94236", + "94237", + "94239", + "94240", + "94244", + "94245", + "94246", + "94247", + "94248", + "94249", + "94250", + "94252", + "94254", + "94256", + "94257", + "94258", + "94259", + "94261", + "94262", + "94263", + "94267", + "94268", + "94269", + "94271", + "94273", + "94274", + "94277", + "94278", + "94279", + "94280", + "94282", + "94283", + "94284", + "94285", + "94286", + "94287", + "94288", + "94289", + "94290", + "94291", + "94293", + "94294", + "94295", + "94296", + "94297", + "94298", + "94299", + "94301", + "94302", + "94303", + "94304", + "94305", + "94306", + "94309", + "94401", + "94402", + "94403", + "94404", + "94497", + "94501", + "94502", + "94503", + "94505", + "94506", + "94507", + "94508", + "94509", + "94510", + "94511", + "94512", + "94513", + "94514", + "94515", + "94516", + "94517", + "94518", + "94519", + "94520", + "94521", + "94522", + "94523", + "94524", + "94525", + "94526", + "94527", + "94528", + "94529", + "94530", + "94531", + "94533", + "94534", + "94535", + "94536", + "94537", + "94538", + "94539", + "94540", + "94541", + "94542", + "94543", + "94544", + "94545", + "94546", + "94547", + "94548", + "94549", + "94550", + "94551", + "94552", + "94553", + "94555", + "94556", + "94557", + "94558", + "94559", + "94560", + "94561", + "94562", + "94563", + "94564", + "94565", + "94566", + "94567", + "94568", + "94569", + "94570", + "94571", + "94572", + "94573", + "94574", + "94575", + "94576", + "94577", + "94578", + "94579", + "94580", + "94581", + "94582", + "94583", + "94585", + "94586", + "94587", + "94588", + "94589", + "94590", + "94591", + "94592", + "94595", + "94596", + "94597", + "94598", + "94599", + "94601", + "94602", + "94603", + "94604", + "94605", + "94606", + "94607", + "94608", + "94609", + "94610", + "94611", + "94612", + "94613", + "94614", + "94615", + "94617", + "94618", + "94619", + "94620", + "94621", + "94622", + "94623", + "94624", + "94625", + "94649", + "94659", + "94660", + "94661", + "94662", + "94666", + "94701", + "94702", + "94703", + "94704", + "94705", + "94706", + "94707", + "94708", + "94709", + "94710", + "94712", + "94720", + "94801", + "94802", + "94803", + "94804", + "94805", + "94806", + "94807", + "94808", + "94820", + "94850", + "94901", + "94903", + "94904", + "94912", + "94913", + "94914", + "94915", + "94920", + "94922", + "94923", + "94924", + "94925", + "94926", + "94927", + "94928", + "94929", + "94930", + "94931", + "94933", + "94937", + "94938", + "94939", + "94940", + "94941", + "94942", + "94945", + "94946", + "94947", + "94948", + "94949", + "94950", + "94951", + "94952", + "94953", + "94954", + "94955", + "94956", + "94957", + "94960", + "94963", + "94964", + "94965", + "94966", + "94970", + "94971", + "94972", + "94973", + "94974", + "94975", + "94976", + "94977", + "94978", + "94979", + "94998", + "94999", + "95001", + "95002", + "95003", + "95004", + "95005", + "95006", + "95007", + "95008", + "95009", + "95010", + "95011", + "95012", + "95013", + "95014", + "95015", + "95017", + "95018", + "95019", + "95020", + "95021", + "95023", + "95024", + "95026", + "95030", + "95031", + "95032", + "95033", + "95035", + "95036", + "95037", + "95038", + "95039", + "95041", + "95042", + "95043", + "95044", + "95045", + "95046", + "95050", + "95051", + "95052", + "95053", + "95054", + "95055", + "95056", + "95060", + "95061", + "95062", + "95063", + "95064", + "95065", + "95066", + "95067", + "95070", + "95071", + "95073", + "95075", + "95076", + "95077", + "95101", + "95103", + "95106", + "95108", + "95109", + "95110", + "95111", + "95112", + "95113", + "95115", + "95116", + "95117", + "95118", + "95119", + "95120", + "95121", + "95122", + "95123", + "95124", + "95125", + "95126", + "95127", + "95128", + "95129", + "95130", + "95131", + "95132", + "95133", + "95134", + "95135", + "95136", + "95138", + "95139", + "95140", + "95141", + "95148", + "95150", + "95151", + "95152", + "95153", + "95154", + "95155", + "95156", + "95157", + "95158", + "95159", + "95160", + "95161", + "95164", + "95170", + "95172", + "95173", + "95190", + "95191", + "95192", + "95193", + "95194", + "95196", + "95201", + "95202", + "95203", + "95204", + "95205", + "95206", + "95207", + "95208", + "95209", + "95210", + "95211", + "95212", + "95213", + "95214", + "95215", + "95219", + "95220", + "95221", + "95222", + "95223", + "95224", + "95225", + "95226", + "95227", + "95228", + "95229", + "95230", + "95231", + "95232", + "95233", + "95234", + "95236", + "95237", + "95240", + "95241", + "95242", + "95245", + "95246", + "95247", + "95248", + "95249", + "95250", + "95251", + "95252", + "95253", + "95254", + "95255", + "95257", + "95258", + "95267", + "95269", + "95296", + "95297", + "95301", + "95303", + "95304", + "95305", + "95306", + "95307", + "95309", + "95310", + "95311", + "95312", + "95313", + "95314", + "95315", + "95316", + "95317", + "95318", + "95319", + "95320", + "95321", + "95322", + "95323", + "95324", + "95325", + "95326", + "95327", + "95328", + "95329", + "95330", + "95333", + "95334", + "95335", + "95336", + "95337", + "95338", + "95340", + "95341", + "95343", + "95344", + "95345", + "95346", + "95347", + "95348", + "95350", + "95351", + "95352", + "95353", + "95354", + "95355", + "95356", + "95357", + "95358", + "95360", + "95361", + "95363", + "95364", + "95365", + "95366", + "95367", + "95368", + "95369", + "95370", + "95372", + "95373", + "95374", + "95375", + "95376", + "95377", + "95378", + "95379", + "95380", + "95381", + "95382", + "95383", + "95385", + "95386", + "95387", + "95388", + "95389", + "95391", + "95397", + "95401", + "95402", + "95403", + "95404", + "95405", + "95406", + "95407", + "95409", + "95410", + "95412", + "95415", + "95416", + "95417", + "95418", + "95419", + "95420", + "95421", + "95422", + "95423", + "95424", + "95425", + "95426", + "95427", + "95428", + "95429", + "95430", + "95431", + "95432", + "95433", + "95435", + "95436", + "95437", + "95439", + "95441", + "95442", + "95443", + "95444", + "95445", + "95446", + "95448", + "95449", + "95450", + "95451", + "95452", + "95453", + "95454", + "95456", + "95457", + "95458", + "95459", + "95460", + "95461", + "95462", + "95463", + "95464", + "95465", + "95466", + "95467", + "95468", + "95469", + "95470", + "95471", + "95472", + "95473", + "95476", + "95480", + "95481", + "95482", + "95485", + "95486", + "95487", + "95488", + "95490", + "95492", + "95493", + "95494", + "95497", + "95501", + "95502", + "95503", + "95511", + "95514", + "95518", + "95519", + "95521", + "95524", + "95525", + "95526", + "95527", + "95528", + "95531", + "95532", + "95534", + "95536", + "95537", + "95538", + "95540", + "95542", + "95543", + "95545", + "95546", + "95547", + "95548", + "95549", + "95550", + "95551", + "95552", + "95553", + "95554", + "95555", + "95556", + "95558", + "95559", + "95560", + "95562", + "95563", + "95564", + "95565", + "95567", + "95568", + "95569", + "95570", + "95571", + "95573", + "95585", + "95587", + "95589", + "95595", + "95601", + "95602", + "95603", + "95604", + "95605", + "95606", + "95607", + "95608", + "95609", + "95610", + "95611", + "95612", + "95613", + "95614", + "95615", + "95616", + "95617", + "95618", + "95619", + "95620", + "95621", + "95623", + "95624", + "95625", + "95626", + "95627", + "95628", + "95629", + "95630", + "95631", + "95632", + "95633", + "95634", + "95635", + "95636", + "95637", + "95638", + "95639", + "95640", + "95641", + "95642", + "95644", + "95645", + "95646", + "95648", + "95650", + "95651", + "95652", + "95653", + "95654", + "95655", + "95656", + "95658", + "95659", + "95660", + "95661", + "95662", + "95663", + "95664", + "95665", + "95666", + "95667", + "95668", + "95669", + "95670", + "95671", + "95672", + "95673", + "95674", + "95675", + "95676", + "95677", + "95678", + "95679", + "95680", + "95681", + "95682", + "95683", + "95684", + "95685", + "95686", + "95687", + "95688", + "95689", + "95690", + "95691", + "95692", + "95693", + "95694", + "95695", + "95696", + "95697", + "95698", + "95699", + "95701", + "95703", + "95709", + "95712", + "95713", + "95714", + "95715", + "95717", + "95720", + "95721", + "95722", + "95724", + "95726", + "95728", + "95735", + "95736", + "95741", + "95742", + "95746", + "95747", + "95757", + "95758", + "95759", + "95762", + "95763", + "95765", + "95776", + "95798", + "95799", + "95811", + "95812", + "95813", + "95814", + "95815", + "95816", + "95817", + "95818", + "95819", + "95820", + "95821", + "95822", + "95823", + "95824", + "95825", + "95826", + "95827", + "95828", + "95829", + "95830", + "95831", + "95832", + "95833", + "95834", + "95835", + "95836", + "95837", + "95838", + "95840", + "95841", + "95842", + "95843", + "95851", + "95852", + "95853", + "95860", + "95864", + "95865", + "95866", + "95867", + "95887", + "95894", + "95899", + "95901", + "95903", + "95910", + "95912", + "95913", + "95914", + "95915", + "95916", + "95917", + "95918", + "95919", + "95920", + "95922", + "95923", + "95924", + "95925", + "95926", + "95927", + "95928", + "95929", + "95930", + "95932", + "95934", + "95935", + "95936", + "95937", + "95938", + "95939", + "95940", + "95941", + "95942", + "95943", + "95944", + "95945", + "95946", + "95947", + "95948", + "95949", + "95950", + "95951", + "95953", + "95954", + "95955", + "95956", + "95957", + "95958", + "95959", + "95960", + "95961", + "95962", + "95963", + "95965", + "95966", + "95967", + "95968", + "95969", + "95970", + "95971", + "95972", + "95973", + "95974", + "95975", + "95976", + "95977", + "95978", + "95979", + "95980", + "95981", + "95982", + "95983", + "95984", + "95986", + "95987", + "95988", + "95991", + "95992", + "95993", + "96001", + "96002", + "96003", + "96006", + "96007", + "96008", + "96009", + "96010", + "96011", + "96013", + "96014", + "96015", + "96016", + "96017", + "96019", + "96020", + "96021", + "96022", + "96023", + "96024", + "96025", + "96027", + "96028", + "96029", + "96031", + "96032", + "96033", + "96034", + "96035", + "96037", + "96038", + "96039", + "96040", + "96041", + "96044", + "96046", + "96047", + "96048", + "96049", + "96050", + "96051", + "96052", + "96054", + "96055", + "96056", + "96057", + "96058", + "96059", + "96061", + "96062", + "96063", + "96064", + "96065", + "96067", + "96068", + "96069", + "96070", + "96071", + "96073", + "96074", + "96075", + "96076", + "96078", + "96079", + "96080", + "96084", + "96085", + "96086", + "96087", + "96088", + "96089", + "96090", + "96091", + "96092", + "96093", + "96094", + "96095", + "96096", + "96097", + "96099", + "96101", + "96103", + "96104", + "96105", + "96106", + "96107", + "96108", + "96109", + "96110", + "96111", + "96112", + "96113", + "96114", + "96115", + "96116", + "96117", + "96118", + "96119", + "96120", + "96121", + "96122", + "96123", + "96124", + "96125", + "96126", + "96127", + "96128", + "96129", + "96130", + "96132", + "96133", + "96134", + "96135", + "96136", + "96137", + "96140", + "96141", + "96142", + "96143", + "96145", + "96146", + "96148", + "96150", + "96151", + "96152", + "96154", + "96155", + "96156", + "96157", + "96158", + "96160", + "96161", + "96162", + "96201", + "96202", + "96203", + "96204", + "96205", + "96206", + "96207", + "96208", + "96209", + "96210", + "96212", + "96213", + "96214", + "96215", + "96217", + "96218", + "96219", + "96220", + "96221", + "96224", + "96251", + "96257", + "96258", + "96259", + "96260", + "96262", + "96264", + "96266", + "96267", + "96269", + "96271", + "96273", + "96275", + "96276", + "96278", + "96283", + "96284", + "96297", + "96301", + "96303", + "96306", + "96309", + "96310", + "96311", + "96313", + "96315", + "96319", + "96321", + "96322", + "96323", + "96326", + "96328", + "96330", + "96331", + "96336", + "96337", + "96338", + "96339", + "96343", + "96346", + "96347", + "96348", + "96349", + "96350", + "96351", + "96362", + "96365", + "96367", + "96368", + "96370", + "96371", + "96372", + "96373", + "96374", + "96375", + "96376", + "96377", + "96378", + "96379", + "96380", + "96382", + "96384", + "96385", + "96386", + "96387", + "96388", + "96389", + "96400", + "96401", + "96426", + "96427", + "96444", + "96447", + "96501", + "96502", + "96503", + "96504", + "96505", + "96507", + "96510", + "96511", + "96515", + "96516", + "96517", + "96518", + "96520", + "96521", + "96522", + "96530", + "96531", + "96532", + "96534", + "96535", + "96536", + "96537", + "96538", + "96539", + "96540", + "96541", + "96542", + "96543", + "96544", + "96546", + "96547", + "96548", + "96549", + "96550", + "96551", + "96552", + "96553", + "96554", + "96555", + "96557", + "96562", + "96577", + "96578", + "96595", + "96598", + "96599", + "96601", + "96602", + "96603", + "96604", + "96605", + "96606", + "96607", + "96608", + "96609", + "96610", + "96611", + "96612", + "96613", + "96614", + "96615", + "96616", + "96617", + "96619", + "96620", + "96621", + "96622", + "96624", + "96628", + "96629", + "96631", + "96632", + "96633", + "96634", + "96641", + "96642", + "96643", + "96644", + "96645", + "96649", + "96650", + "96657", + "96660", + "96661", + "96662", + "96663", + "96664", + "96665", + "96666", + "96667", + "96668", + "96669", + "96670", + "96671", + "96672", + "96673", + "96674", + "96675", + "96677", + "96678", + "96679", + "96681", + "96682", + "96683", + "96686", + "96687", + "96691", + "96692", + "96693", + "96694", + "96695", + "96696", + "96698", + "96701", + "96703", + "96704", + "96705", + "96706", + "96707", + "96708", + "96709", + "96710", + "96712", + "96713", + "96714", + "96715", + "96716", + "96717", + "96718", + "96719", + "96720", + "96721", + "96722", + "96725", + "96726", + "96727", + "96728", + "96729", + "96730", + "96731", + "96732", + "96733", + "96734", + "96737", + "96738", + "96739", + "96740", + "96741", + "96742", + "96743", + "96744", + "96745", + "96746", + "96747", + "96748", + "96749", + "96750", + "96751", + "96752", + "96753", + "96754", + "96755", + "96756", + "96757", + "96759", + "96760", + "96761", + "96762", + "96763", + "96764", + "96765", + "96766", + "96767", + "96768", + "96769", + "96770", + "96771", + "96772", + "96773", + "96774", + "96776", + "96777", + "96778", + "96779", + "96780", + "96781", + "96782", + "96783", + "96784", + "96785", + "96786", + "96788", + "96789", + "96790", + "96791", + "96792", + "96793", + "96795", + "96796", + "96797", + "96799", + "96801", + "96802", + "96803", + "96804", + "96805", + "96806", + "96807", + "96808", + "96809", + "96810", + "96811", + "96812", + "96813", + "96814", + "96815", + "96816", + "96817", + "96818", + "96819", + "96820", + "96821", + "96822", + "96823", + "96824", + "96825", + "96826", + "96827", + "96828", + "96830", + "96835", + "96836", + "96837", + "96838", + "96839", + "96840", + "96841", + "96843", + "96844", + "96846", + "96847", + "96848", + "96849", + "96850", + "96853", + "96854", + "96857", + "96858", + "96859", + "96860", + "96861", + "96863", + "96898", + "96910", + "96912", + "96913", + "96915", + "96916", + "96917", + "96919", + "96921", + "96923", + "96928", + "96929", + "96931", + "96932", + "96939", + "96940", + "96941", + "96942", + "96943", + "96944", + "96950", + "96951", + "96952", + "96960", + "96970", + "97001", + "97002", + "97003", + "97004", + "97005", + "97006", + "97007", + "97008", + "97009", + "97010", + "97011", + "97013", + "97014", + "97015", + "97016", + "97017", + "97018", + "97019", + "97020", + "97021", + "97022", + "97023", + "97024", + "97026", + "97027", + "97028", + "97029", + "97030", + "97031", + "97032", + "97033", + "97034", + "97035", + "97036", + "97037", + "97038", + "97039", + "97040", + "97041", + "97042", + "97044", + "97045", + "97048", + "97049", + "97050", + "97051", + "97053", + "97054", + "97055", + "97056", + "97057", + "97058", + "97060", + "97062", + "97063", + "97064", + "97065", + "97067", + "97068", + "97070", + "97071", + "97075", + "97076", + "97077", + "97078", + "97079", + "97080", + "97086", + "97089", + "97101", + "97102", + "97103", + "97106", + "97107", + "97108", + "97109", + "97110", + "97111", + "97112", + "97113", + "97114", + "97115", + "97116", + "97117", + "97118", + "97119", + "97121", + "97122", + "97123", + "97124", + "97125", + "97127", + "97128", + "97129", + "97130", + "97131", + "97132", + "97133", + "97134", + "97135", + "97136", + "97137", + "97138", + "97140", + "97141", + "97143", + "97144", + "97145", + "97146", + "97147", + "97148", + "97149", + "97201", + "97202", + "97203", + "97204", + "97205", + "97206", + "97207", + "97208", + "97209", + "97210", + "97211", + "97212", + "97213", + "97214", + "97215", + "97216", + "97217", + "97218", + "97219", + "97220", + "97221", + "97222", + "97223", + "97224", + "97225", + "97227", + "97228", + "97229", + "97230", + "97231", + "97232", + "97233", + "97236", + "97238", + "97239", + "97240", + "97242", + "97250", + "97251", + "97252", + "97253", + "97254", + "97255", + "97256", + "97258", + "97259", + "97266", + "97267", + "97268", + "97269", + "97271", + "97272", + "97280", + "97281", + "97282", + "97283", + "97286", + "97290", + "97291", + "97292", + "97293", + "97294", + "97296", + "97298", + "97299", + "97301", + "97302", + "97303", + "97304", + "97305", + "97306", + "97307", + "97308", + "97309", + "97310", + "97311", + "97312", + "97313", + "97314", + "97317", + "97321", + "97322", + "97324", + "97325", + "97326", + "97327", + "97329", + "97330", + "97331", + "97333", + "97335", + "97336", + "97338", + "97339", + "97341", + "97342", + "97343", + "97344", + "97345", + "97346", + "97347", + "97348", + "97350", + "97351", + "97352", + "97355", + "97357", + "97358", + "97360", + "97361", + "97362", + "97364", + "97365", + "97366", + "97367", + "97368", + "97369", + "97370", + "97371", + "97372", + "97373", + "97374", + "97375", + "97376", + "97377", + "97378", + "97380", + "97381", + "97383", + "97384", + "97385", + "97386", + "97388", + "97389", + "97390", + "97391", + "97392", + "97394", + "97396", + "97401", + "97402", + "97403", + "97404", + "97405", + "97406", + "97407", + "97408", + "97409", + "97410", + "97411", + "97412", + "97413", + "97414", + "97415", + "97416", + "97417", + "97419", + "97420", + "97423", + "97424", + "97425", + "97426", + "97427", + "97428", + "97429", + "97430", + "97431", + "97432", + "97434", + "97435", + "97436", + "97437", + "97438", + "97439", + "97440", + "97441", + "97442", + "97443", + "97444", + "97446", + "97447", + "97448", + "97449", + "97450", + "97451", + "97452", + "97453", + "97454", + "97455", + "97456", + "97457", + "97458", + "97459", + "97461", + "97462", + "97463", + "97464", + "97465", + "97466", + "97467", + "97469", + "97470", + "97471", + "97472", + "97473", + "97475", + "97476", + "97477", + "97478", + "97479", + "97480", + "97481", + "97482", + "97484", + "97486", + "97487", + "97488", + "97489", + "97490", + "97491", + "97492", + "97493", + "97494", + "97495", + "97496", + "97497", + "97498", + "97499", + "97501", + "97502", + "97503", + "97504", + "97520", + "97522", + "97523", + "97524", + "97525", + "97526", + "97527", + "97528", + "97530", + "97531", + "97532", + "97533", + "97534", + "97535", + "97536", + "97537", + "97538", + "97539", + "97540", + "97541", + "97543", + "97544", + "97601", + "97602", + "97603", + "97604", + "97620", + "97621", + "97622", + "97623", + "97624", + "97625", + "97626", + "97627", + "97630", + "97632", + "97633", + "97634", + "97635", + "97636", + "97637", + "97638", + "97639", + "97640", + "97641", + "97701", + "97702", + "97703", + "97707", + "97708", + "97709", + "97710", + "97711", + "97712", + "97720", + "97721", + "97722", + "97730", + "97731", + "97732", + "97733", + "97734", + "97735", + "97736", + "97737", + "97738", + "97739", + "97741", + "97750", + "97751", + "97752", + "97753", + "97754", + "97756", + "97758", + "97759", + "97760", + "97761", + "97801", + "97810", + "97812", + "97813", + "97814", + "97817", + "97818", + "97819", + "97820", + "97823", + "97824", + "97825", + "97826", + "97827", + "97828", + "97830", + "97833", + "97834", + "97835", + "97836", + "97837", + "97838", + "97839", + "97840", + "97841", + "97842", + "97843", + "97844", + "97845", + "97846", + "97848", + "97850", + "97856", + "97857", + "97859", + "97861", + "97862", + "97864", + "97865", + "97867", + "97868", + "97869", + "97870", + "97873", + "97874", + "97875", + "97876", + "97877", + "97880", + "97882", + "97883", + "97884", + "97885", + "97886", + "97901", + "97902", + "97903", + "97904", + "97905", + "97906", + "97907", + "97908", + "97909", + "97910", + "97911", + "97913", + "97914", + "97917", + "97918", + "97920", + "98001", + "98002", + "98003", + "98004", + "98005", + "98006", + "98007", + "98008", + "98009", + "98010", + "98011", + "98012", + "98013", + "98014", + "98015", + "98019", + "98020", + "98021", + "98022", + "98023", + "98024", + "98025", + "98026", + "98027", + "98028", + "98029", + "98030", + "98031", + "98032", + "98033", + "98034", + "98035", + "98036", + "98037", + "98038", + "98039", + "98040", + "98041", + "98042", + "98043", + "98045", + "98046", + "98047", + "98050", + "98051", + "98052", + "98053", + "98054", + "98055", + "98056", + "98057", + "98058", + "98059", + "98061", + "98062", + "98063", + "98064", + "98065", + "98068", + "98070", + "98071", + "98072", + "98073", + "98074", + "98075", + "98077", + "98082", + "98083", + "98087", + "98089", + "98092", + "98093", + "98101", + "98102", + "98103", + "98104", + "98105", + "98106", + "98107", + "98108", + "98109", + "98110", + "98111", + "98112", + "98113", + "98114", + "98115", + "98116", + "98117", + "98118", + "98119", + "98121", + "98122", + "98124", + "98125", + "98126", + "98127", + "98129", + "98131", + "98132", + "98133", + "98134", + "98136", + "98138", + "98139", + "98141", + "98144", + "98145", + "98146", + "98148", + "98151", + "98154", + "98155", + "98158", + "98160", + "98161", + "98164", + "98165", + "98166", + "98168", + "98170", + "98171", + "98174", + "98175", + "98177", + "98178", + "98181", + "98184", + "98185", + "98188", + "98189", + "98190", + "98191", + "98194", + "98195", + "98198", + "98199", + "98201", + "98203", + "98204", + "98205", + "98206", + "98207", + "98208", + "98213", + "98220", + "98221", + "98222", + "98223", + "98224", + "98225", + "98226", + "98227", + "98228", + "98229", + "98230", + "98231", + "98232", + "98233", + "98235", + "98236", + "98237", + "98238", + "98239", + "98240", + "98241", + "98243", + "98244", + "98245", + "98247", + "98248", + "98249", + "98250", + "98251", + "98252", + "98253", + "98255", + "98256", + "98257", + "98258", + "98259", + "98260", + "98261", + "98262", + "98263", + "98264", + "98266", + "98267", + "98270", + "98271", + "98272", + "98273", + "98274", + "98275", + "98276", + "98277", + "98278", + "98279", + "98280", + "98281", + "98282", + "98283", + "98284", + "98286", + "98287", + "98288", + "98290", + "98291", + "98292", + "98293", + "98294", + "98295", + "98296", + "98297", + "98303", + "98304", + "98305", + "98310", + "98311", + "98312", + "98314", + "98315", + "98320", + "98321", + "98322", + "98323", + "98324", + "98325", + "98326", + "98327", + "98328", + "98329", + "98330", + "98331", + "98332", + "98333", + "98335", + "98336", + "98337", + "98338", + "98339", + "98340", + "98342", + "98343", + "98344", + "98345", + "98346", + "98348", + "98349", + "98350", + "98351", + "98352", + "98353", + "98354", + "98355", + "98356", + "98357", + "98358", + "98359", + "98360", + "98361", + "98362", + "98363", + "98364", + "98365", + "98366", + "98367", + "98368", + "98370", + "98371", + "98372", + "98373", + "98374", + "98375", + "98376", + "98377", + "98378", + "98380", + "98381", + "98382", + "98383", + "98384", + "98385", + "98386", + "98387", + "98388", + "98390", + "98391", + "98392", + "98393", + "98394", + "98395", + "98396", + "98397", + "98398", + "98401", + "98402", + "98403", + "98404", + "98405", + "98406", + "98407", + "98408", + "98409", + "98411", + "98412", + "98413", + "98415", + "98416", + "98417", + "98418", + "98419", + "98421", + "98422", + "98424", + "98430", + "98431", + "98433", + "98438", + "98439", + "98442", + "98443", + "98444", + "98445", + "98446", + "98447", + "98448", + "98450", + "98455", + "98460", + "98464", + "98465", + "98466", + "98467", + "98471", + "98477", + "98481", + "98490", + "98492", + "98493", + "98496", + "98497", + "98498", + "98499", + "98501", + "98502", + "98503", + "98504", + "98505", + "98506", + "98507", + "98508", + "98509", + "98511", + "98512", + "98513", + "98516", + "98520", + "98522", + "98524", + "98526", + "98527", + "98528", + "98530", + "98531", + "98532", + "98533", + "98535", + "98536", + "98537", + "98538", + "98539", + "98540", + "98541", + "98542", + "98544", + "98546", + "98547", + "98548", + "98550", + "98552", + "98554", + "98555", + "98556", + "98557", + "98558", + "98559", + "98560", + "98561", + "98562", + "98563", + "98564", + "98565", + "98566", + "98568", + "98569", + "98570", + "98571", + "98572", + "98575", + "98576", + "98577", + "98579", + "98580", + "98581", + "98582", + "98583", + "98584", + "98585", + "98586", + "98587", + "98588", + "98589", + "98590", + "98591", + "98592", + "98593", + "98595", + "98596", + "98597", + "98599", + "98601", + "98602", + "98603", + "98604", + "98605", + "98606", + "98607", + "98609", + "98610", + "98611", + "98612", + "98613", + "98614", + "98616", + "98617", + "98619", + "98620", + "98621", + "98622", + "98623", + "98624", + "98625", + "98626", + "98628", + "98629", + "98631", + "98632", + "98635", + "98637", + "98638", + "98639", + "98640", + "98641", + "98642", + "98643", + "98644", + "98645", + "98647", + "98648", + "98649", + "98650", + "98651", + "98660", + "98661", + "98662", + "98663", + "98664", + "98665", + "98666", + "98667", + "98668", + "98670", + "98671", + "98672", + "98673", + "98674", + "98675", + "98682", + "98683", + "98684", + "98685", + "98686", + "98687", + "98801", + "98802", + "98807", + "98811", + "98812", + "98813", + "98814", + "98815", + "98816", + "98817", + "98819", + "98821", + "98822", + "98823", + "98824", + "98826", + "98827", + "98828", + "98829", + "98830", + "98831", + "98832", + "98833", + "98834", + "98836", + "98837", + "98840", + "98841", + "98843", + "98844", + "98845", + "98846", + "98847", + "98848", + "98849", + "98850", + "98851", + "98852", + "98853", + "98855", + "98856", + "98857", + "98858", + "98859", + "98860", + "98862", + "98901", + "98902", + "98903", + "98904", + "98907", + "98908", + "98909", + "98920", + "98921", + "98922", + "98923", + "98925", + "98926", + "98929", + "98930", + "98932", + "98933", + "98934", + "98935", + "98936", + "98937", + "98938", + "98939", + "98940", + "98941", + "98942", + "98943", + "98944", + "98946", + "98947", + "98948", + "98950", + "98951", + "98952", + "98953", + "99001", + "99003", + "99004", + "99005", + "99006", + "99008", + "99009", + "99011", + "99012", + "99013", + "99014", + "99016", + "99017", + "99018", + "99019", + "99020", + "99021", + "99022", + "99023", + "99025", + "99026", + "99027", + "99029", + "99030", + "99031", + "99032", + "99033", + "99034", + "99036", + "99037", + "99039", + "99040", + "99101", + "99102", + "99103", + "99104", + "99105", + "99107", + "99109", + "99110", + "99111", + "99113", + "99114", + "99115", + "99116", + "99117", + "99118", + "99119", + "99121", + "99122", + "99123", + "99124", + "99125", + "99126", + "99128", + "99129", + "99130", + "99131", + "99133", + "99134", + "99135", + "99136", + "99137", + "99138", + "99139", + "99140", + "99141", + "99143", + "99144", + "99146", + "99147", + "99148", + "99149", + "99150", + "99151", + "99152", + "99153", + "99154", + "99155", + "99156", + "99157", + "99158", + "99159", + "99160", + "99161", + "99163", + "99164", + "99165", + "99166", + "99167", + "99169", + "99170", + "99171", + "99173", + "99174", + "99176", + "99179", + "99180", + "99181", + "99185", + "99201", + "99202", + "99203", + "99204", + "99205", + "99206", + "99207", + "99208", + "99209", + "99210", + "99211", + "99212", + "99213", + "99214", + "99215", + "99216", + "99217", + "99218", + "99219", + "99220", + "99223", + "99224", + "99228", + "99251", + "99252", + "99256", + "99258", + "99260", + "99299", + "99301", + "99302", + "99320", + "99321", + "99322", + "99323", + "99324", + "99326", + "99328", + "99329", + "99330", + "99333", + "99335", + "99336", + "99337", + "99338", + "99341", + "99343", + "99344", + "99345", + "99346", + "99347", + "99348", + "99349", + "99350", + "99352", + "99353", + "99354", + "99356", + "99357", + "99359", + "99360", + "99361", + "99362", + "99363", + "99371", + "99401", + "99402", + "99403", + "99501", + "99502", + "99503", + "99504", + "99505", + "99506", + "99507", + "99508", + "99509", + "99510", + "99511", + "99513", + "99514", + "99515", + "99516", + "99517", + "99518", + "99519", + "99520", + "99521", + "99522", + "99523", + "99524", + "99529", + "99530", + "99540", + "99545", + "99546", + "99547", + "99548", + "99549", + "99550", + "99551", + "99552", + "99553", + "99554", + "99555", + "99556", + "99557", + "99558", + "99559", + "99561", + "99563", + "99564", + "99565", + "99566", + "99567", + "99568", + "99569", + "99571", + "99572", + "99573", + "99574", + "99575", + "99576", + "99577", + "99578", + "99579", + "99580", + "99581", + "99583", + "99585", + "99586", + "99587", + "99588", + "99589", + "99590", + "99591", + "99599", + "99602", + "99603", + "99604", + "99605", + "99606", + "99607", + "99608", + "99609", + "99610", + "99611", + "99612", + "99613", + "99614", + "99615", + "99619", + "99620", + "99621", + "99622", + "99623", + "99624", + "99625", + "99626", + "99627", + "99628", + "99629", + "99630", + "99631", + "99632", + "99633", + "99634", + "99635", + "99636", + "99637", + "99638", + "99639", + "99640", + "99641", + "99643", + "99644", + "99645", + "99647", + "99648", + "99649", + "99650", + "99651", + "99652", + "99653", + "99654", + "99655", + "99656", + "99657", + "99658", + "99659", + "99660", + "99661", + "99662", + "99663", + "99664", + "99665", + "99666", + "99667", + "99668", + "99669", + "99670", + "99671", + "99672", + "99674", + "99675", + "99676", + "99677", + "99678", + "99679", + "99680", + "99681", + "99682", + "99683", + "99684", + "99685", + "99686", + "99687", + "99688", + "99689", + "99690", + "99691", + "99692", + "99693", + "99694", + "99695", + "99697", + "99701", + "99702", + "99703", + "99704", + "99705", + "99706", + "99707", + "99708", + "99709", + "99710", + "99711", + "99712", + "99714", + "99716", + "99720", + "99721", + "99722", + "99723", + "99724", + "99725", + "99726", + "99727", + "99729", + "99730", + "99731", + "99732", + "99733", + "99734", + "99736", + "99737", + "99738", + "99739", + "99740", + "99741", + "99742", + "99743", + "99744", + "99745", + "99746", + "99747", + "99748", + "99749", + "99750", + "99751", + "99752", + "99753", + "99754", + "99755", + "99756", + "99757", + "99758", + "99759", + "99760", + "99761", + "99762", + "99763", + "99764", + "99765", + "99766", + "99767", + "99768", + "99769", + "99770", + "99771", + "99772", + "99773", + "99774", + "99775", + "99776", + "99777", + "99778", + "99779", + "99780", + "99781", + "99782", + "99783", + "99784", + "99785", + "99786", + "99788", + "99789", + "99790", + "99791", + "99801", + "99802", + "99803", + "99811", + "99812", + "99820", + "99821", + "99824", + "99825", + "99826", + "99827", + "99829", + "99830", + "99832", + "99833", + "99835", + "99836", + "99840", + "99841", + "99850", + "99901", + "99903", + "99918", + "99919", + "99921", + "99922", + "99923", + "99925", + "99926", + "99927", + "99928", + "99929", + "99950", +} diff --git a/idk/docker-compose.yml b/idk/docker-compose.yml new file mode 100644 index 000000000..af62a85a7 --- /dev/null +++ b/idk/docker-compose.yml @@ -0,0 +1,136 @@ +version: '3' + +services: + postgres: + image: postgres + environment: + POSTGRES_DB: postgres + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + zookeeper: + image: confluentinc/cp-zookeeper:${CONFLUENT_VERSION:-5.5.3} + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/secrets/jaas_kafka_broker.conf" + volumes: + - ./docker-sasl/ssl_keys:/etc/kafka/secrets + + kafka: + image: confluentinc/cp-kafka:${CONFLUENT_VERSION:-5.5.3} + environment: + KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:19092,LISTENER_DOCKER_EXTERNAL://kafka:9092,LISTENER_DOCKER_EXTERNAL_SSL://kafka:9094 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL_SSL:SASL_SSL + KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL + KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181" + KAFKA_BROKER_ID: 1 + KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/secrets/jaas_kafka_broker.conf" + + KAFKA_SASL_ENABLED_MECHANISMS: PLAIN + KAFKA_SSL_KEYSTORE_FILENAME: broker_kafkaBroker_server.keystore.jks + KAFKA_SSL_KEYSTORE_CREDENTIALS: credentials + KAFKA_SSL_KEY_CREDENTIALS: credentials + + KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN + volumes: + - ./docker-sasl/ssl_keys:/etc/kafka/secrets + + depends_on: + - zookeeper + + # UI can be nice for debugging stuff and messing with Kafka. Not used by tests. + kafka-ui: + container_name: kafka-ui + image: provectuslabs/kafka-ui:latest + ports: + - 8080:8080 + depends_on: + - zookeeper + - kafka + - schema-registry + environment: + KAFKA_CLUSTERS_0_NAME: local + KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092 + KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 + KAFKA_CLUSTERS_0_JMXPORT: 9997 + KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8081 + + schema-registry: + image: confluentinc/cp-schema-registry:${CONFLUENT_VERSION:-5.5.3} + environment: + SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka:19092 + SCHEMA_REGISTRY_HOST_NAME: schema-registry + SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 + depends_on: + - zookeeper + - kafka + + pilosa: + image: registry.gitlab.com/molecula/featurebase/featurebase:linux-amd64-${BRANCH_NAME} + environment: + PILOSA_DATA_DIR: /data + PILOSA_BIND: 0.0.0.0:10101 + PILOSA_BIND_GRPC: 0.0.0.0:20101 + PILOSA_ADVERTISE: pilosa:10101 + PILOSA_LOOKUP_DB_DSN: "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + depends_on: + - postgres + volumes: + - ./testenv/certs:/certs + + pilosa-tls: + image: registry.gitlab.com/molecula/featurebase/featurebase:linux-amd64-${BRANCH_NAME} + environment: + PILOSA_DATA_DIR: /data + PILOSA_BIND: https://0.0.0.0:10111 + PILOSA_BIND_GRPC: 0.0.0.0:20111 + PILOSA_ADVERTISE: https://pilosa-tls:10111 + PILOSA_TLS_CA_CERTIFICATE: /certs/ca.crt + PILOSA_TLS_CERTIFICATE: /certs/pilosa-tls.crt + PILOSA_TLS_KEY: /certs/pilosa-tls.key + PILOSA_TLS_ENABLE_CLIENT_VERIFICATION: 1 + volumes: + - ./testenv/certs:/certs + + pilosa-auth: + image: registry.gitlab.com/molecula/featurebase/featurebase:linux-amd64-${BRANCH_NAME} + environment: + PILOSA_DATA_DIR: /data + PILOSA_BIND: 0.0.0.0:10105 + PILOSA_BIND_GRPC: 0.0.0.0:20105 + PILOSA_ADVERTISE: pilosa-auth:10105 + PILOSA_CONFIG: /testdata/featurebase.conf + volumes: + - ./testdata:/testdata + depends_on: + - fakeidp + + fakeidp: + build: + context: . + dockerfile: Dockerfile-fakeIDP + + idk-test: + build: + context: ../. + dockerfile: ./idk/Dockerfile-test + environment: + IDK_DEFAULT_SHARD_TRANSACTIONAL: ${IDK_DEFAULT_SHARD_TRANSACTIONAL} + volumes: + - ./testenv/certs:/certs + - ./docker-sasl/ssl_keys:/ssl_keys + - ./testdata:/testdata + depends_on: + - kafka + - postgres + - fakeidp + wait: + build: + context: . + dockerfile: Dockerfile-wait + volumes: + - ./testenv/certs:/certs + + + diff --git a/idk/docker-sasl/client-ssl-test.conf b/idk/docker-sasl/client-ssl-test.conf new file mode 100644 index 000000000..5b2b219d5 --- /dev/null +++ b/idk/docker-sasl/client-ssl-test.conf @@ -0,0 +1,7 @@ +sasl.mechanism=PLAIN +security.protocol=SASL_SSL +group.id=testGroup +ssl.truststore.location=./ssl_keys/client_kafkaClient_client.truststore.jks +ssl.truststore.password=123456 +sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ +username="kafkaClient1" password="kafkaClient1pw"; \ No newline at end of file diff --git a/idk/docker-sasl/jaas_kafka_broker.conf b/idk/docker-sasl/jaas_kafka_broker.conf new file mode 100644 index 000000000..c13b46f33 --- /dev/null +++ b/idk/docker-sasl/jaas_kafka_broker.conf @@ -0,0 +1,30 @@ +Server { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="zookeperServer1" + password="zookeperServer1pw" + user_zookeeperClient1="zookeeperClient1pw" + ; +}; + +Client { + org.apache.zookeeper.server.auth.DigestLoginModule required + username="zookeeperClient1" + password="zookeeperClient1pw" + ; +}; + +KafkaServer { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="kafkaBroker1" + password="kafkaBroker1pw" + user_kafkaBroker1="kafkaBroker1pw" + user_kafkaClient1="kafkaClient1pw" + ; +}; + +KafkaClient { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="kafkaClient" + password="kafkaClientpw" + ; +}; \ No newline at end of file diff --git a/idk/docker-sasl/jaas_zookeeper_server.conf b/idk/docker-sasl/jaas_zookeeper_server.conf new file mode 100644 index 000000000..ce3ebd891 --- /dev/null +++ b/idk/docker-sasl/jaas_zookeeper_server.conf @@ -0,0 +1,7 @@ +Server { + org.apache.zookeeper.server.auth.DigestLoginModule required + username="zookeperServer1" + password="zookeperServer1pw" + user_zookeperServer1="zookeperServer1pw" + ; +}; \ No newline at end of file diff --git a/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-file b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-file new file mode 100644 index 000000000..029e28389 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-file @@ -0,0 +1,17 @@ +-----BEGIN NEW CERTIFICATE REQUEST----- +MIICxjCCAa4CAQAwUTELMAkGA1UEBhMCTk4xCzAJBgNVBAgTAk5OMQswCQYDVQQH +EwJOTjELMAkGA1UEChMCTk4xCzAJBgNVBAsTAk5OMQ4wDAYDVQQDEwVrYWZrYTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIdUP1KA9DVEdlU1D+LHw6cz +l13q5CNW6j+jlrIDD/0AKhjw2FbiIXMj7tcuEibbjMBb5H8FRllm9ZSH+cduMl+v +DOKQiQ9HEqlze3DdVhGLd3XtdEnL/MyNjKIQ86v8f+2KudlBiz6bnTmIq7kvGVD0 +2lnmdkBzuBOtTplkuI4AXSvxFGY1mhM9dNLGdUbFt2YD4JsLPUOa4JZLyOe9lroa +KtuO07ngiHcgEOwNY5085WgxDqI/jiIQ12l1mlveag9H2AJmi6sNhVnyMrLvzDYG +OYRaNILWiOhaIMs5hQM+F7KypEjKy+oN6/soCWSiVQXGBnR6e4DlZG7b9q3pa0UC +AwEAAaAwMC4GCSqGSIb3DQEJDjEhMB8wHQYDVR0OBBYEFMX7UJS4XhEbQs1WQAzq +rShdcP3jMA0GCSqGSIb3DQEBCwUAA4IBAQB1xFx5hxC/sWACsBBDd6900PBeWYP8 +HWBI+bzyKgU3zNY5YSMmnLO5s01IMtgos+GG6iDf7bcRMvASiTu8Et8FRvUi6HXn +X7SoYb1MyTmKgSl8bR2bKOdlaDQmkkP/IKzs1mf2JYyXTi8pQrKEdeOf9O1U+tVc +uqiXNTNEARHXTNnv2Xc5+UQ5AamveXPARjyP7z/G/h7K+yY9rjPsjk2dROr7w4ZZ ++UiGqcj/CGrxsZi4BYeyHwNnFkA+LzSkgKJV77Kj4J5D13SXUfPlyUhejYNRWfRR +8hA4+rkM2kwi2FhwfeSETqYg5YfcTnkaqnMaoKxFQ90Rzrhna9x7ISL+ +-----END NEW CERTIFICATE REQUEST----- diff --git a/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-signed b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-signed new file mode 100644 index 000000000..e21631e23 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_cert-signed @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDOTCCAiECCQD4bAZifsn/cTANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJO +TjELMAkGA1UECAwCTk4xCzAJBgNVBAcMAk5OMQswCQYDVQQKDAJOTjELMAkGA1UE +CwwCTk4xDjAMBgNVBAMMBWthZmthMRcwFQYJKoZIhvcNAQkBFghocEBrYWZrYTAg +Fw0yMTEwMDcyMDQ5NDFaGA8zMDIxMDIwNzIwNDk0MVowUTELMAkGA1UEBhMCTk4x +CzAJBgNVBAgTAk5OMQswCQYDVQQHEwJOTjELMAkGA1UEChMCTk4xCzAJBgNVBAsT +Ak5OMQ4wDAYDVQQDEwVrYWZrYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIdUP1KA9DVEdlU1D+LHw6czl13q5CNW6j+jlrIDD/0AKhjw2FbiIXMj7tcu +EibbjMBb5H8FRllm9ZSH+cduMl+vDOKQiQ9HEqlze3DdVhGLd3XtdEnL/MyNjKIQ +86v8f+2KudlBiz6bnTmIq7kvGVD02lnmdkBzuBOtTplkuI4AXSvxFGY1mhM9dNLG +dUbFt2YD4JsLPUOa4JZLyOe9lroaKtuO07ngiHcgEOwNY5085WgxDqI/jiIQ12l1 +mlveag9H2AJmi6sNhVnyMrLvzDYGOYRaNILWiOhaIMs5hQM+F7KypEjKy+oN6/so +CWSiVQXGBnR6e4DlZG7b9q3pa0UCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAxiOt +Gks3pFZMRousI7G53OaTC7R8lJ6bTiTB6Hw+SxW10isYNqWVTsH2ED/pqvmuFidd +pNPdJgca9Rvk7hvfC93AXXO8AieshNvXsOxrh4ta+dJvmbgAc8udl5hSH4GLPj2j +NslTWRirBHCtYoZ4/wM8pXrWm6iywzQGZoRXOK5vvCfIqTERmgDyr1az8795jo9l +I3I9nWp1sjrnjO9Tmlt7ycgW7GBKll5EWrirFYNZf5HFLhXYjzGCmx0GzEKfp8f+ +Ol7VYGrstxzM3Zvw7jBBa72Szh/P2GFYkN93pd6Ir3OeX52KtmwA1nqbsFvlccNq +q2mfIZ73hrOVeujVOQ== +-----END CERTIFICATE----- diff --git a/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.keystore.jks b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.keystore.jks new file mode 100644 index 000000000..79560da4d Binary files /dev/null and b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.keystore.jks differ diff --git a/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.truststore.jks b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.truststore.jks new file mode 100644 index 000000000..b2b2bda18 Binary files /dev/null and b/idk/docker-sasl/ssl_keys/broker_kafkaBroker_server.truststore.jks differ diff --git a/idk/docker-sasl/ssl_keys/ca-cert b/idk/docker-sasl/ssl_keys/ca-cert new file mode 100644 index 000000000..a6fe1f3c2 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/ca-cert @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUjCCAjoCCQDlp2/gEqQAYDANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJO +TjELMAkGA1UECAwCTk4xCzAJBgNVBAcMAk5OMQswCQYDVQQKDAJOTjELMAkGA1UE +CwwCTk4xDjAMBgNVBAMMBWthZmthMRcwFQYJKoZIhvcNAQkBFghocEBrYWZrYTAg +Fw0yMTEwMDcyMDQ5NDBaGA8zMDIxMDIwNzIwNDk0MFowajELMAkGA1UEBhMCTk4x +CzAJBgNVBAgMAk5OMQswCQYDVQQHDAJOTjELMAkGA1UECgwCTk4xCzAJBgNVBAsM +Ak5OMQ4wDAYDVQQDDAVrYWZrYTEXMBUGCSqGSIb3DQEJARYIaHBAa2Fma2EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRMZd4fRSevUI3n+P7USwMC/rn +yXGC5UO43jz1Pe6Pknv8HNVTUJeoUOZhpdlR7JuO1x5egUR7PjFwkaJ5pB+WXkq8 +lDznEMWDecmCEY0oMqc5mLsozsgoLqYVxEe62N0zRfKR+JAvKxXQMJ9xV23zkB7c +SppOyfdGSD+b4KQWYkLX2CasbDuEoWHMLO2OHyQFxnXpKn8EbQrvSnQ2EUx68Jhd +Yvvwks3Lf4xGSVupqDdoJlLFHFqClluzNco/dziUF+U57rw2zPl8nFHfgDO81s4A +YIIqcY1lDXwwvBHF0kYoIFBJjpD0u0MiGIrth4t7qnmP/tiM106JmK/7h/eVAgMB +AAEwDQYJKoZIhvcNAQELBQADggEBAHr3XyH9Dv8XNV6GJZlmZpkye7mMzqeMTOZi +GSIubpC0twdC7W1wAFsIReCi6b7FCKTuwHM9ax9ynI3K2z3qcspeR97ehDqAktEq +za/kpYfSIjuWe/x1eErNgOymG9PPaLyJINfOElJGLy92ppFizJbO/uZVZLQrUNUi +eXMo8WOuqawgAEBg/t1wU6Qa+Tv2c8MBaoGTmPo6cBM4LRfyh3hm+oL8It31Hqij +yls1YbqEVKGW1cwo5bFn9wOMQVBNHGjpcU5PjHnd2LpJfPpl+V5JJm4ZtWo41bxm +srdq9Sf+LBULimchsyvV1S2nCpIXSaHurqGjonvgl0tx24ZOVjk= +-----END CERTIFICATE----- diff --git a/idk/docker-sasl/ssl_keys/ca-cert.key b/idk/docker-sasl/ssl_keys/ca-cert.key new file mode 100644 index 000000000..966046492 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/ca-cert.key @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIywcyPEzh+3ECAggA +MB0GCWCGSAFlAwQBKgQQpb2YQ+gtaw6gUyxVL7YDEASCBNCzxjjfObz20vr12Msq +dWU/67cXUKUVUc1pXzn+1+OabhC3fqWg5IA1zzCezdfKc6D6aUPWwRyNlRLyFExF +CaTMaciAVUSY7VHcO3UnUaXjroS9Dj6y/dUaXEs9kcAvs7uEy7hMwZOrSWTtMdrs +2k1GtyUBgI2IR5yU9vfhTSqFOc/bTRMXgOTAgf9U00WTZqn/dH9MqaweHAqi984O +f6xrUsZZwvgTDE6WKC5UbcwV5UMRYf5+nUTqs039oplt069YHaMicsow5jOGbnAU +SpjGFmemp4tetKIkNpTZ2X92qDC21dv0N/3sexxM3zh59tAjkQImzCFD1nnfH8Y4 +vF6xQFTs6cgb4a6/jxsv+sRcdHoCt8XpQmqx2CYYLOr3hk1ntKc1yZNYb2RTDllX +r0EVjUlex5ASyXw95xnHOBNP0sMeoIl7rsmE1yHtb1ddC2o8h4KEWmkEZ062Yg3n +zwVZVatxeUxImj3T+IJU10aewzFKAmKdXDNzI9wLLEwqioQnPeOU6XlypX0xqpGZ +nEI3/HFTwNQrg7Hu/gB7T6oiJ2jNWi4Vrtp86JYROgdssobU80Cz/nKVUO90cluF +94U8NSPW58c7X/sVf8vi+gbynqSPV6scq56bWLQ8/ZimHKbI5jUgGC6uTx6ySrDM +xWr8oD2thsGFhXO15kkiWCJwdf+DQbq3ibu6dYRoyv6IdDcfsT7T0C5V5X8a79JW +TnrKkFMn3ifcD6s3Q9KSUrj8rST6W/hfRbFA4eBDz2yZyj+znpiSQVKNkQ5kkZhJ +3G9yPTf+To/ZrBJyZbTvCvPPvOL8DuCQlvLyzy2sswRR6BzlcK3INrT4sJIsK0rP +jyj3SF2SNhXVAbpoaRQ2CP4QqmZBkpgSBoFbX67PEGYsCqxnUVASMeRdEit0f5Uk +yNZxtzi385iYUv7TSCxBelYNSlTdvay9EUzBa7uwnYQnbP1K7CSV2i3ofEHxMsuZ +aot/NfKgwGSGSihCsiXkeNNyTJ3tJuqM5NH69cfUDZJhm8K2hgceSU4ilpqiojEb +n+VyBoQ63+VZPSKVyyBwAhUWZOst6OegtdP3ZBJ4SLr18hVJKl71VeEwEyNSfGbg ++h/ky9Zgy8qXOy6xu7DlG2O0QxsCAl7KRhxrWbNMuvgne7Xq+cvQLfIOjechi7UU +VMwCGGC3ZqgSJDMFytHCXyspYsOWWxj9lzFMzNFEsTBmRuOmTFbxCiSfpD9Rh1aD +Yib53+Da8hxqi8yDG5b0by2idhgYKfFQihwaE+z0S0vlikZMbOpPZkyUj3ys3TVD +djge2V7or5nVh0JYPfOsjFlw6D/lxTTbI+jytiZG+oW3mmoWx41fHNKbqkXMD9VP +waomKLXTfIzu6TagVQXLjiE8UW02KHJ3Y063RCN1AbyISPaXfgHHidTlYyAhShgk +VnWw55dz950bZqQEh3c4vPEpf9HSMgvUIO0U/xv/sYo1XmjvUzKX+8APT2nJmIVl +TYaOCW+vGZjwpC/N761v47zkKYhrx0XxBbUAfb7uKLH+yuREm3sj1rijHnPOResK ++1lqw5qaQd2+WhKmL5psQo3D4O6GEU1faDpbkTYiK0D9N62De6MZ4TQvOMadXy6K +03XsfK6ZYaHLrtKZLPnNAbln2A== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/idk/docker-sasl/ssl_keys/ca-cert.srl b/idk/docker-sasl/ssl_keys/ca-cert.srl new file mode 100644 index 000000000..ed205f981 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/ca-cert.srl @@ -0,0 +1 @@ +F86C06627EC9FF73 diff --git a/idk/docker-sasl/ssl_keys/client-ssl-test.conf b/idk/docker-sasl/ssl_keys/client-ssl-test.conf new file mode 100644 index 000000000..e02e8c4aa --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client-ssl-test.conf @@ -0,0 +1,14 @@ +ssl.endpoint.identification.algorithm=https +sasl.mechanism=PLAIN +request.timeout.ms=20000 +retry.backoff.ms=500 +security.protocol=SASL_SSL +group.id=testGroup +ssl.truststore.location=client_kafkaClient_client.truststore.jks +ssl.truststore.password=123456 +sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ +username="kafkaClient1" password="kafkaClient1pw"; +ssl.ca.location=ca-cert +ssl.certificate.location=client_kafkaClient_client.pem +ssl.key.location=client_kafkaClient_client.key +ssl.key.password=123456 \ No newline at end of file diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-file b/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-file new file mode 100644 index 000000000..cd44be60f --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-file @@ -0,0 +1,17 @@ +-----BEGIN NEW CERTIFICATE REQUEST----- +MIICxjCCAa4CAQAwUTELMAkGA1UEBhMCTk4xCzAJBgNVBAgTAk5OMQswCQYDVQQH +EwJOTjELMAkGA1UEChMCTk4xCzAJBgNVBAsTAk5OMQ4wDAYDVQQDEwVrYWZrYTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL4DRvaOjJhcnfziNOCI+W7M +hlEPKSaZzv9JP5ATlPxI+oRWXgREF+nxPKiQVedgHubtGppeU4E/RWHKEPAFOXsE +MjCQiDK50xuiebEv2sWzpaqur2gNfGtsFZXySO+NKQALCWCk3gc7iKaVH2EeLeV5 +H0UcV6KimxuxoBYJFxMXKsIjiN2baCLt1sUGUFQQqUxsJ7rUKkSfHWoXPWdK5Q52 +M171YlFE7Da07txsc9edRj+T+DqdmTHzHKIwtpEquTQdYypciKTn2W31lKS6B1TO +Y3oCb1bkF/l2jqyCHfBK3sGw/n2lNKaFYB6NydKoGCzx7ZhvJqce4lFFiOjPjncC +AwEAAaAwMC4GCSqGSIb3DQEJDjEhMB8wHQYDVR0OBBYEFK7PcWkUDKzppDLjsliw +RARSjTkqMA0GCSqGSIb3DQEBCwUAA4IBAQA3Fts42ZQCiDo8eOqa4pnFX3JTUhYf +GS1bXPEdvifwoOMZohI2eHrC7ByABaeZETknPfXZucGnQFamPDZxuEkxpcBcGgmn +nnPAiHfM+ow8CfOgCY77MZALsyGnZLLAhGcS6DOhXCiahDzDp3PJj+LFgYlFQa+m +9KmnCo+in92WxSAa2J0mweHezXQOSadiUuoZiK4mOk04QxqgWsNNM8z1ihZICtjB +0jRDJVGmAqenE+h8mq9FW095G3d+6LxQ1litUn3pfSvkOzQN8mL19xD/x+2+lWwa +bK0A0UqAAYMaAic0IeMycDkpnjmWi32EZvMDozzTRifMbJuUPA4C1ECh +-----END NEW CERTIFICATE REQUEST----- diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-signed b/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-signed new file mode 100644 index 000000000..6003cb61a --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client_kafkaClient_cert-signed @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDOTCCAiECCQD4bAZifsn/czANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJO +TjELMAkGA1UECAwCTk4xCzAJBgNVBAcMAk5OMQswCQYDVQQKDAJOTjELMAkGA1UE +CwwCTk4xDjAMBgNVBAMMBWthZmthMRcwFQYJKoZIhvcNAQkBFghocEBrYWZrYTAg +Fw0yMTEwMDcyMDQ5NDJaGA8zMDIxMDIwNzIwNDk0MlowUTELMAkGA1UEBhMCTk4x +CzAJBgNVBAgTAk5OMQswCQYDVQQHEwJOTjELMAkGA1UEChMCTk4xCzAJBgNVBAsT +Ak5OMQ4wDAYDVQQDEwVrYWZrYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL4DRvaOjJhcnfziNOCI+W7MhlEPKSaZzv9JP5ATlPxI+oRWXgREF+nxPKiQ +VedgHubtGppeU4E/RWHKEPAFOXsEMjCQiDK50xuiebEv2sWzpaqur2gNfGtsFZXy +SO+NKQALCWCk3gc7iKaVH2EeLeV5H0UcV6KimxuxoBYJFxMXKsIjiN2baCLt1sUG +UFQQqUxsJ7rUKkSfHWoXPWdK5Q52M171YlFE7Da07txsc9edRj+T+DqdmTHzHKIw +tpEquTQdYypciKTn2W31lKS6B1TOY3oCb1bkF/l2jqyCHfBK3sGw/n2lNKaFYB6N +ydKoGCzx7ZhvJqce4lFFiOjPjncCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAyB6m +xDW8kyx9xDHsOSfsiC54BeZB77wDq/U6tmalQB25Wj0BzzwSo827XJPwww9uXjeQ +bq0N4IK6PKpVxtaHSupQM7RLqnK6bPonZfPQPlThhC76Xv72al+Z4wC/ygtgLlxT +DIiyh7DsSn9pbTNhsxV2RzRzm87looIH5fBLyfdXO9HQgw29OK3txiowf9yPYe/P +nvQoGivYQVS3BCG4vCM8jSkvZdxgMHhNHSVcVigWlZz+y1TrIRjh0iOUz6/amwlR +AJ6ecwfO8ceRF8sKEMDz9mQZ5y9oC/f2RToxFguwktn7TN7MVn7ZQxlx8KM0oHv/ +YT4wwiAu9dx4L5pXKw== +-----END CERTIFICATE----- diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_client.key b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.key new file mode 100644 index 000000000..1288538bf --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.key @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,998A687050EE283C + +JIY5m4Vlb8fclaFAbzJqAm+l9RSbEdxgQzcPWazuwZoIAnoE8cvCRxa/4JQY2tV5 +MrHmp4L0v00nMVa1glVqt3WqFWdkF5CsF0AsvOyWq8w8uIOqOlFj9Wlla+Olbi3a +kgRB4xJZwTM6Q1vYM5kLco2LwHE6Eho9NUBZQthuMKFJFZR0ZkTrcalLsEz7pshh +SSB0v5dFhMtB/GHB9pd1UTqm1LbDdRq/wz/HBNiMa85WnDmPWrBlQXkAd3uvWS+U +dN1PbWRBrDXNRTNWXvj/79ko70YEmwlLhJFA2qrcGw4GFGnjLr3NDh7Ue7ZxnaUb +7+a5l4tDDFFJsDDDxTYqSWrYzIVKSLyMsHZu6+6ATDWy8I/CZYPcNZ72E6iYd5LS +7ZLkwjX5RPyFI8MaThm//t4Rpyk7QZ9dgr/FP4o/Pw1c1r/8o8zKu9oFTm+hZbl1 +KGeCWnqdRhDGheDbt45FRgxZ65DdU+xGSUxphpnpWfrTa4ILeFOwJB3cmhXcMFEj +esCeCxIG5zSpzLBKufCSoIgvEH0UlfB4sOAY60PQZ/avLRTQjZVreZKFe+fQFra4 +p7NbWKapE24EkP1g253uTEreast6X1JHxVB3J4bPRt8pPnadOHZ7PjTnPFxho6cX +VTC8K+2A8e4GU+3kF3Hch4eCHgzmdPQQOkTL30w+pm73WTv1gSzCTKSmqVnStvYr +r3U3byF/AkgpE2WRxkSXbY6mux1ts6KI7trUPhbJPr8Z/cz4whWKNeoIuPWr3Emw +Gws37jlqLGyUrd2leohkNdlKjYii1ebDjMJ3Tv5xMIRc4x6DEEqtszvmwsXD72hc +eaz28BoAf41NdyNreBFmmiDzml5W16uCkYTadbbzLgGkbCImjjSpChvWJhS9PgDC +5afUpUK+qWvnrNmYXdZFd6znLQcMzfRtSaT0Ew6+3dcfvU7/rkNoY5MXEo69f7Td +bWTcN1U7NczFj3p8Bu8On1Vt03TlG+UecIT5oPeHOLuxjLAe6tahCLUomeJvJ+rL +jPuSXaJUa6BQsvnxr10KhQVqjd6qXZJ16US8YF8i4EB3w3OZoCZaRR0nFgtmAafr +VPtSv4/haXoREjek/zNGtDHp4wIwCeaHohyyTc5IzPdB7S86mY6tW1tjW7wfHQmk +ibtE7jBQY4SjZ2/HUsD80DroUD4gw6T2RqOBU5cdd3q8VpLl6MVlEi9TG+rXQ+Uy +81zQ6LHtk+/gz30xuRaiUakd9gYlhpb5ZTaLYpe0/yfhWRCF588X05HjLOo7cb8Z +2po0Dvbjg+VG1cypO7hVKhx+8HO1uk1rHNtetpWvi0F7E3q2GUAvteA23OlqhzGz +LzHkD+22L6scdkY4JYQ+3p+oAkJW1f4fFPT5fTZlIQRkVDNxP4HOQYyJhTWbMhZg +WBYjh9iRX2QLi/YgH+aB7NXfZZEZDhR8EuVqWk0mq2RD4m+0QUOvQ8PpeK9KoGW5 +F3OZ9CIuQGEs3wC+ehlZkMqhaSXcSi4L+Wiqedxm2EWcA0XyJu4NaGzaGCLlqbzp +R+k9ipPLnDtKlgPWeRKMUusvRY45dHmNcfk0WFR0EXFWd22WAtLktQ== +-----END RSA PRIVATE KEY----- diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_client.keystore.jks b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.keystore.jks new file mode 100644 index 000000000..27b32cd7d Binary files /dev/null and b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.keystore.jks differ diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_client.pem b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.pem new file mode 100644 index 000000000..05923081f --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDOTCCAiECCQD4bAZifsn/cjANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJO +TjELMAkGA1UECAwCTk4xCzAJBgNVBAcMAk5OMQswCQYDVQQKDAJOTjELMAkGA1UE +CwwCTk4xDjAMBgNVBAMMBWthZmthMRcwFQYJKoZIhvcNAQkBFghocEBrYWZrYTAg +Fw0yMTEwMDcyMDQ5NDJaGA8zMDIxMDIwNzIwNDk0MlowUTELMAkGA1UEBhMCTk4x +CzAJBgNVBAgMAk5OMQswCQYDVQQHDAJOTjELMAkGA1UECgwCTk4xCzAJBgNVBAsM +Ak5OMQ4wDAYDVQQDDAVrYWZrYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBANNXGpslIXv8jDRJopWSSzb5oe55FssiGbFyoZG4riiTI9CvEZ476PYQFniH +oTMv+32Z55wJQzY/fAVyNwVy4uA3P0JtKrYmt0ovJx0VWRGQd8lDghCaGEMTwCLy +abqT8pYhOw8086Qzdtz2pW4R2FbA4jYm7rpyInM8m28r3KzMIb2sPhfaI0urmaI7 +1o6+3Z4G85XY7GTrpMj4pP97Cj4Cdwj8lhTbEHp9j5MFOwA3EoSUmpmF+QReATP2 +sKIpJzHz9kFle5Xdc/uHFQOdf+qd1DFxulzybqvDXjDfiOHzprEYs6XdIZcxo2x8 +tOxsUlXdvnx6aGZh7MwLEOfJDYUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAtH2v +TOWeiMV1YUwemTSsH8zF036X85/FDqdctB/58yJEtUX4Rdi4PlpvE56fzDczWp+w +5+H42xgrJ7zO9VrqLmHHba8R7Kwv1dgzEZHqAmF3ryTJSVvPEOH1q87/NHE2fp1c +3GkS1OfafCiewrj1CWUJDdfqQ4y5dPHj0DhX6I3dJ9u4toP5WwH5Q9TwC5Q3+QmF +O5rt9TTMcAH3ZJ6tY3mI6lG4C5AI81vYR11EoZZJOK4AX5oioraCUvyQk6tn/Dc2 +OLrpHFMYUzlOT/sctPjuBdhdbs7KugL8IMiqeLDFSlO1RkQI3W4RZlk/y1B9OgTC +00fZwC9m0TZz2Qwx6A== +-----END CERTIFICATE----- diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_client.req b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.req new file mode 100644 index 000000000..9194d16a1 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.req @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICrTCCAZUCAQAwUTELMAkGA1UEBhMCTk4xCzAJBgNVBAgMAk5OMQswCQYDVQQH +DAJOTjELMAkGA1UECgwCTk4xCzAJBgNVBAsMAk5OMQ4wDAYDVQQDDAVrYWZrYTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANNXGpslIXv8jDRJopWSSzb5 +oe55FssiGbFyoZG4riiTI9CvEZ476PYQFniHoTMv+32Z55wJQzY/fAVyNwVy4uA3 +P0JtKrYmt0ovJx0VWRGQd8lDghCaGEMTwCLyabqT8pYhOw8086Qzdtz2pW4R2FbA +4jYm7rpyInM8m28r3KzMIb2sPhfaI0urmaI71o6+3Z4G85XY7GTrpMj4pP97Cj4C +dwj8lhTbEHp9j5MFOwA3EoSUmpmF+QReATP2sKIpJzHz9kFle5Xdc/uHFQOdf+qd +1DFxulzybqvDXjDfiOHzprEYs6XdIZcxo2x8tOxsUlXdvnx6aGZh7MwLEOfJDYUC +AwEAAaAXMBUGCSqGSIb3DQEJBzEIDAYxMjM0NTYwDQYJKoZIhvcNAQELBQADggEB +ADygi+QlmY1crAjs54/qwvx3Bv7hjGm8eWlzSYO5VQM7pvNP5hA8PwEXbuz4RHc4 +uhKBWC1aflDWZF3vRo8BZfukRN1D5x4pd+ffZYqE+vjahzbOtxF/n9rMvPoAyugf +nVPAxzSNLZQjhEHU6r/43ocMGnrd3gJM+upuUm7i6+8hsojrOTEqdPSDtUcaZ4PN +Gx4IlBwObxXoIw43GDHMshFjjn2du01Mqxhx32dGg+rJaORA8Szskq8wzYLaEQcL +JwH/eJwLxHmly4q74XgF7hykQGSUOK+6+1J29kvRl3i5B4mEkEj+yKTS/G8Y1GrX +UOoPQgX3Fg7VrjhvfUb+27c= +-----END CERTIFICATE REQUEST----- diff --git a/idk/docker-sasl/ssl_keys/client_kafkaClient_client.truststore.jks b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.truststore.jks new file mode 100644 index 000000000..7234e1a06 Binary files /dev/null and b/idk/docker-sasl/ssl_keys/client_kafkaClient_client.truststore.jks differ diff --git a/idk/docker-sasl/ssl_keys/credentials b/idk/docker-sasl/ssl_keys/credentials new file mode 100644 index 000000000..4632e068d --- /dev/null +++ b/idk/docker-sasl/ssl_keys/credentials @@ -0,0 +1 @@ +123456 \ No newline at end of file diff --git a/idk/docker-sasl/ssl_keys/gen-ssl-certs.sh b/idk/docker-sasl/ssl_keys/gen-ssl-certs.sh new file mode 100644 index 000000000..104c875d7 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/gen-ssl-certs.sh @@ -0,0 +1,181 @@ +#!/bin/bash +# +# +# This scripts generates: +# - root CA certificate +# - server certificate and keystore +# - client keys +# +# https://cwiki.apache.org/confluence/display/KAFKA/Deploying+SSL+for+Kafka +# +# https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka +# +# All key and keystore passwords are "123456" +# +# Create a CA certificate +# gen-ssl-certs.sh ca ca-cert +# +# Create broker keystore +# gen-ssl-certs.sh -k server ca-cert broker_${BROKER_NAME}_ ${BROKER_NAME} +# +# Create standard client keys (for librdkafka, et.al.) +# gen-ssl-certs.sh client ca-cert client_${CLIENT_NAME}_ ${CLIENT_NAME} +# +# Create client keystore for Java clients +# gen-ssl-certs.sh -k client ca-cert client_${CLIENT_NAME}_ ${CLIENT_NAME} + + + +if [[ "$1" == "-k" ]]; then + USE_KEYTOOL=1 + shift +else + USE_KEYTOOL=0 +fi + +OP="$1" +CA_CERT="$2" +PFX="$3" +HOST="$4" + +C=NN +ST=NN +L=NN +O=NN +OU=NN +CN=kafka + + +# Password +PASS="123456" + +# Cert validity, in days +VALIDITY=365000 + +set -e + +export LC_ALL=C + +if [[ $OP == "ca" && ! -z "$CA_CERT" && ! -z "$3" ]]; then + CN="$3" + openssl req -new -x509 -keyout ${CA_CERT}.key -out $CA_CERT -days $VALIDITY -passin "pass:$PASS" -passout "pass:$PASS" < " + echo " $0 [-k] server|client " + echo "" + echo " -k = Use keytool/Java Keystore, else standard SSL keys" + exit 1 +fi + diff --git a/idk/docker-sasl/ssl_keys/jaas_kafka_broker.conf b/idk/docker-sasl/ssl_keys/jaas_kafka_broker.conf new file mode 100644 index 000000000..c13b46f33 --- /dev/null +++ b/idk/docker-sasl/ssl_keys/jaas_kafka_broker.conf @@ -0,0 +1,30 @@ +Server { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="zookeperServer1" + password="zookeperServer1pw" + user_zookeeperClient1="zookeeperClient1pw" + ; +}; + +Client { + org.apache.zookeeper.server.auth.DigestLoginModule required + username="zookeeperClient1" + password="zookeeperClient1pw" + ; +}; + +KafkaServer { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="kafkaBroker1" + password="kafkaBroker1pw" + user_kafkaBroker1="kafkaBroker1pw" + user_kafkaClient1="kafkaClient1pw" + ; +}; + +KafkaClient { + org.apache.kafka.common.security.plain.PlainLoginModule required + username="kafkaClient" + password="kafkaClientpw" + ; +}; \ No newline at end of file diff --git a/idk/dup.go b/idk/dup.go new file mode 100644 index 000000000..e85b1cb7c --- /dev/null +++ b/idk/dup.go @@ -0,0 +1,28 @@ +// Copyright 2017 Pilosa Corp. +// +// 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. + +//go:build darwin || (linux && !arm64) +// +build darwin linux,!arm64 + +package idk + +import ( + "syscall" +) + +// dup is an alias for syscall.Dup2 on darwin-amd64, darwin-arm64, +// linux-amd64, linux-arm or syscall.Dup3 on linux-arm64 +func dup(oldfd int, newfd int) error { + return syscall.Dup2(oldfd, newfd) +} diff --git a/idk/dup_arm64.go b/idk/dup_arm64.go new file mode 100644 index 000000000..fe1ee802b --- /dev/null +++ b/idk/dup_arm64.go @@ -0,0 +1,28 @@ +// Copyright 2017 Pilosa Corp. +// +// 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. + +//go:build linux && arm64 +// +build linux,arm64 + +package idk + +import ( + "syscall" +) + +// dup is an alias for syscall.Dup2 on darwin-amd64, darwin-arm64, +// linux-amd64, linux-arm or syscall.Dup3 on linux-arm64 +func dup(oldfd int, newfd int) error { + return syscall.Dup3(oldfd, newfd, 0) +} diff --git a/idk/fakeidp/go.mod b/idk/fakeidp/go.mod new file mode 100644 index 000000000..7d0a51cee --- /dev/null +++ b/idk/fakeidp/go.mod @@ -0,0 +1,5 @@ +module fakeidp + +go 1.17 + +require github.com/golang-jwt/jwt v3.2.2+incompatible diff --git a/idk/fakeidp/go.sum b/idk/fakeidp/go.sum new file mode 100644 index 000000000..efdb2a9a1 --- /dev/null +++ b/idk/fakeidp/go.sum @@ -0,0 +1,2 @@ +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= diff --git a/idk/fakeidp/server.go b/idk/fakeidp/server.go new file mode 100644 index 000000000..5a8a9ab83 --- /dev/null +++ b/idk/fakeidp/server.go @@ -0,0 +1,44 @@ +package main + +import ( + "encoding/hex" + "log" + "net/http" + "strconv" + "time" + + "github.com/golang-jwt/jwt" +) + +func groups(w http.ResponseWriter, req *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte(`{"value":[{"id":"group-id-test","displayName":"group-id-test"}]}`)) +} + +func token(w http.ResponseWriter, req *http.Request) { + tkn := jwt.New(jwt.SigningMethodHS256) + claims := tkn.Claims.(jwt.MapClaims) + claims["oid"] = "42" + claims["name"] = "valid" + expiresIn := 2 * time.Hour + claims["exp"] = strconv.Itoa(int(time.Now().Add(expiresIn).Unix())) + k, err := hex.DecodeString("DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF") + if err != nil { + log.Fatalf("i am not equipped to handle this!!! %v", err) + } + fresh, err := tkn.SignedString(k) + if err != nil { + log.Fatalf("i am not equipped to handle this!!! %v", err) + } + body := `{"access_token": "` + fresh + `", "refresh_token": "blah", "expires_in": "` + strconv.Itoa(int(expiresIn.Seconds())) + `"}` + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(http.StatusOK) + w.Write([]byte(body)) +} + +func main() { + http.HandleFunc("/groups", groups) + http.HandleFunc("/token", token) + log.Println("FAKEIDP SERVER UP AND RUNNING") + log.Fatal(http.ListenAndServe(":10101", nil)) +} diff --git a/idk/file_with_line_delimited_values b/idk/file_with_line_delimited_values new file mode 100644 index 000000000..ce4bd80a1 --- /dev/null +++ b/idk/file_with_line_delimited_values @@ -0,0 +1,5 @@ +blah +bleh +bloo +blee +blin diff --git a/idk/header.go b/idk/header.go new file mode 100644 index 000000000..ae13016e7 --- /dev/null +++ b/idk/header.go @@ -0,0 +1,611 @@ +package idk + +import ( + "encoding/json" + "strconv" + "strings" + "time" + + pilosa "github.com/molecula/featurebase/v3" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +type FieldType string + +const ( + IDType FieldType = "id" + BoolType FieldType = "bool" + StringType FieldType = "string" + LookupTextType FieldType = "lookuptext" + IntType FieldType = "int" + ForeignKeyType FieldType = "foreignkey" + DecimalType FieldType = "decimal" + StringArrayType FieldType = "stringarray" + IDArrayType FieldType = "idarray" + DateIntType FieldType = "dateint" + RecordTimeType FieldType = "recordtime" + SignedIntBoolKeyType FieldType = "signedintboolkey" + IgnoreType FieldType = "ignore" + TimestampType FieldType = "timestamp" +) + +var ( + ErrNoFieldSpec = errors.New("no field spec in this header") + ErrInvalidFieldName = errors.New("field name must match [a-z][a-z0-9_-]{0,229}") +) + +// HeaderToField takes a header specification which looks like +// sourcename___destname__FieldType_Arg_Arg2 (note that sourcename and +// destname are separated by "___", triple underscore) and converts it +// to an idk Field like: +// +// FieldTypeField { +// NameVal: sourcename, +// DestNameVal: destname, +// Thing1: Arg, +// Thing2: Arg2, +// } +// +// It does this using a variety of reflective magic. The unwritten +// rules are that all idk Fields must be structs and have their first +// member be `NameVal string`. The arguments are applied in order to +// exported fields. +func HeaderToField(headerField string, log logger.Logger) (field Field, _ error) { + if log == nil { + log = logger.NopLogger + } + + sourceName, destName, fieldspecstr, err := splitHeader(headerField) + if err != nil { + return nil, err + } + + fieldspec := strings.Split(fieldspecstr, "_") + if len(fieldspec) == 0 { + return nil, errors.Errorf("no fieldspec-impossible? headerfield: %s, fieldspec: %s", headerField, fieldspec) + } + + fieldType := FieldType(strings.ToLower(fieldspec[0])) + if sourceName == "" && fieldType != RecordTimeType { + return nil, errors.Errorf("field '%s' has no sourceName", headerField) + } + + switch fieldType { + case IDType: + idField := IDField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + if fieldspec[1] == "T" { + idField.Mutex = true + } else if fieldspec[1] != "F" { + return nil, errors.Errorf("can't interpret '%s' for IDField.Mutex for field '%s'", fieldspec[1], sourceName) + } + } + if len(fieldspec) > 2 { + idField.Quantum = fieldspec[2] + } + if len(fieldspec) > 3 { + idField.TTL = fieldspec[3] + } + if len(fieldspec) > 4 { + log.Printf("ignoring extra arguments to IDField %s: %v", headerField, fieldspec[4:]) + } + field = idField + case BoolType: + field = BoolField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + log.Printf("ignoring extra arguments to BoolField %s: %v", headerField, fieldspec[1:]) + } + case StringType: + strField := StringField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + if fieldspec[1] == "T" { + strField.Mutex = true + } else if fieldspec[1] != "F" { + return nil, errors.Errorf("can't interpret '%s' for StringField.Mutex for field '%s'", fieldspec[1], sourceName) + } + } + if len(fieldspec) > 2 { + strField.Quantum = fieldspec[2] + } + if len(fieldspec) > 3 { + strField.TTL = fieldspec[3] + } + if len(fieldspec) > 4 { + log.Printf("ignoring extra arguments to StringField %s: %v", headerField, fieldspec[4:]) + } + field = strField + case LookupTextType: + lTextField := LookupTextField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + log.Printf("ignoring extra arguments to LookupTextField %s: %v", headerField, fieldspec[1:]) + } + field = lTextField + case IntType: + intField := IntField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + min, err := strconv.ParseInt(fieldspec[1], 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing min for %s", sourceName) + } + intField.Min = &min + } + if len(fieldspec) > 2 { + max, err := strconv.ParseInt(fieldspec[2], 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing max for %s", sourceName) + } + intField.Max = &max + } + if len(fieldspec) > 3 { + intField.ForeignIndex = fieldspec[3] + } + if len(fieldspec) > 4 { + log.Printf("ignoring extra arguments to IntField %s: %v", headerField, fieldspec[4:]) + } + field = intField + case ForeignKeyType: + fkField := IntField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + fkField.ForeignIndex = fieldspec[1] + } else { + return nil, errors.Errorf("need foreign index for foreign key field: %s", headerField) + } + if len(fieldspec) > 2 { + log.Printf("ignoring extra arguments to ForeignKey Field %s: %v", headerField, fieldspec[2:]) + } + field = fkField + case DecimalType: + decField := DecimalField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + scale, err := strconv.ParseInt(fieldspec[1], 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing scale for %s", sourceName) + } + decField.Scale = scale + } + if len(fieldspec) > 2 { + log.Printf("ignoring extra arguments to DecimalField %s: %v", headerField, fieldspec[2:]) + } + field = decField + case StringArrayType: + strArrField := StringArrayField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + strArrField.Quantum = fieldspec[1] + } + if len(fieldspec) > 2 { + strArrField.TTL = fieldspec[2] + } + if len(fieldspec) > 3 { + log.Printf("ignoring extra arguments to StringArrayField %s: %v", headerField, fieldspec[3:]) + } + field = strArrField + case IDArrayType: + idArrField := IDArrayField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + idArrField.Quantum = fieldspec[1] + } + if len(fieldspec) > 2 { + idArrField.TTL = fieldspec[2] + } + if len(fieldspec) > 3 { + log.Printf("ignoring extra arguments to IDArrayField %s: %v", headerField, fieldspec[3:]) + } + field = idArrField + case DateIntType: + dateField := DateIntField{ + NameVal: sourceName, + DestNameVal: destName, + } + layout := time.RFC3339 + if len(fieldspec) > 1 { + layout = fieldspec[1] + } + dateField.Layout = layout + if len(fieldspec) > 2 { + epoch, err := time.Parse(layout, fieldspec[2]) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch for '%s'", headerField) + } + dateField.Epoch = epoch + } + if len(fieldspec) > 3 { + dateField.Unit = Unit(fieldspec[3]).unit() + + if len(fieldspec) > 4 && (dateField.Unit.IsCustom()) { + if _, err := time.ParseDuration(fieldspec[4]); err != nil { + return nil, errors.Wrapf(err, "parsing custom unit %s", fieldspec[4]) + } + dateField.CustomUnit = fieldspec[4] + } else { + if _, err := dateField.Unit.Duration(); err != nil { + return nil, err + } + } + } + + if len(fieldspec) > 5 { + log.Printf("ignoring extra arguments to DateIntField %s: %v", headerField, fieldspec[5:]) + } + field = dateField + case TimestampType: + tsField := TimestampField{ + NameVal: sourceName, + DestNameVal: destName, + } + granularity := "s" + layout := time.RFC3339Nano + if len(fieldspec) > 1 { + granularity = fieldspec[1] + } + tsField.Granularity = granularity + if len(fieldspec) > 2 { + layout = fieldspec[2] + } + tsField.Layout = layout + if len(fieldspec) > 3 { + epoch, err := time.Parse(layout, fieldspec[3]) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch for '%s'", headerField) + } + tsField.Epoch = epoch + } + if len(fieldspec) > 4 { + unit := Unit(fieldspec[4]).unit() + if _, err := unit.Duration(); err != nil { + return nil, errors.Wrapf(err, "invalid unit for TimestampField %s", headerField) + } + tsField.Unit = unit + } + if len(fieldspec) > 5 { + log.Printf("ignoring extra arguments to TimestampField %s: %v", headerField, fieldspec[5:]) + } + field = tsField + case RecordTimeType: + rtField := RecordTimeField{ + NameVal: sourceName, + DestNameVal: destName, + } + // We used to use a default of "" here, and then + // (RecordTimeType).layout() would treat that as RFC3339. + // This is now more parallel to the handling for DateIntType. + layout := time.RFC3339 + if len(fieldspec) > 1 { + layout = fieldspec[1] + } + rtField.Layout = layout + if len(fieldspec) > 2 { + epoch, err := time.Parse(layout, fieldspec[2]) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch for '%s'", headerField) + } + rtField.Epoch = epoch + } + if len(fieldspec) > 3 { + unit := Unit(fieldspec[3]).unit() + _, err := unit.Duration() + if err != nil { + return nil, err + } + rtField.Unit = unit + } + if len(fieldspec) > 4 { + log.Printf("ignoring extra arguments to RecordTimeField %s: %v", headerField, fieldspec[4:]) + } + field = rtField + case SignedIntBoolKeyType: + field = SignedIntBoolKeyField{ + NameVal: sourceName, + DestNameVal: destName, + } + if len(fieldspec) > 1 { + log.Printf("ignoring extra arguments to SignedIntBoolKeyField %s: %v", headerField, fieldspec[1:]) + } + case IgnoreType: + field = IgnoreField{} + if len(fieldspec) > 1 { + log.Printf("ignoring extra arguments to IgnoreField %s: %v", headerField, fieldspec[1:]) + } + default: + return nil, errors.Errorf("unknown field '%s' for '%s'", fieldspec[0], headerField) + } + + return field, nil +} + +var nameSpecDelimiter = "___" // Triple Underscore + +// splitHeader splits a header string. +// Allowed formats: +// - SourceName__FieldType_Arg_Arg2 +// - SourceName___DestName__FieldType_Arg_Arg2 +// where +// - SourceName may be an arbitrary string +// - DestName may be specified as a valid pilosa fieldname +// - DestName MUST be specified if SourceName is NOT a valid pilosa field name +// - DestName MUST NOT include any triple-underscores +// - FieldType MUST be specified +// - Args may or may not be required, depending on the FieldType +func splitHeader(s string) (sourceName, destName, typeSpec string, err error) { + // One dunder is required, to separate name from fieldspec. + // One trunder is optional, to separate sourceName from destName. + + var idx2 int + idx3 := strings.LastIndex(s, nameSpecDelimiter) + if idx3 == -1 { + // simple namespec: SourceName__FieldType_Arg_Arg2 + s := s + idx2 = strings.LastIndex(s, "__") + if idx2 == -1 { + return "", "", "", ErrNoFieldSpec + } + destName = s[:idx2] + sourceName = destName + typeSpec = s[idx2+2:] + + } else { + // DestName namespec: SourceName___DestName__FieldType_Arg_Arg2 + sourceName = s[:idx3] + rest := s[idx3+len(nameSpecDelimiter):] + + idx2 = strings.LastIndex(rest, "__") + + if idx2 == -1 { + return "", "", "", ErrNoFieldSpec + } + destName = rest[:idx2] + typeSpec = rest[idx2+2:] + } + + err = pilosa.ValidateName(destName) + if destName != "" && err != nil { + // "" is valid for RecordTimeField and IgnoreField + return "", "", "", err + } + return sourceName, destName, typeSpec, nil + +} + +type PathTable [][]string +type DeleteSentinel int + +const ( + DELETE_SENTINEL DeleteSentinel = 1 +) + +func (t PathTable) Lookup(root interface{}, allowMissingFields bool) ([]interface{}, error) { + data := make([]interface{}, len(t)) + for i, path := range t { + node := root + for j, branch := range path { + obj, ok := node.(map[string]interface{}) + if !ok { + return nil, errors.Errorf("failed to lookup path %v: element at %v is not an object", path, path[:j]) + } + + next, ok := obj[branch] + if !ok { + if allowMissingFields { + node = nil + break + } else { + return nil, errors.Errorf("failed to lookup path %v: element %q at %v is missing", path, branch, path[:j]) + } + } else { + if next == nil { + node = DELETE_SENTINEL + break + } + node = next + } + } + + data[i] = node + } + + return data, nil +} + +func (t PathTable) FlatMap() map[string]int { + m, i := make(map[string]int), 0 + for _, arr := range t { + for _, str := range arr { + if _, ok := m[str]; !ok { + m[str] = i + } + i++ + } + } + return m +} + +func ParseHeader(raw []byte) ([]Field, PathTable, error) { + var rawSchema []struct { + Name string `json:"name"` + Path []string `json:"path"` + Type string `json:"type"` + Config json.RawMessage + } + err := json.Unmarshal(raw, &rawSchema) + if err != nil { + return nil, nil, errors.Wrap(err, "parsing schema") + } + + fields, paths := make([]Field, len(rawSchema)), make(PathTable, len(rawSchema)) + fieldNameSet := make(map[string]int) + for i, s := range rawSchema { + if s.Path == nil { + return nil, nil, errors.Errorf("field %q is missing a path", s.Name) + } + paths[i] = s.Path + switch s.Type { + case "id": + var field IDField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "ids": + var field IDArrayField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "string": + var field StringField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "strings": + var field StringArrayField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "bool": + var field BoolField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "recordTime": + var field RecordTimeField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "int": + var field IntField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "decimal": + var field DecimalField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "signedIntBoolKey": + var field SignedIntBoolKeyField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "dateInt": + var field DateIntField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + case "timestamp": + var field TimestampField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + case "lookupText": + var field LookupTextField + if s.Config != nil { + err := json.Unmarshal(s.Config, &field) + if err != nil { + return nil, nil, errors.Wrapf(err, "decoding config for field %q", s.Name) + } + } + field.NameVal = s.Name + fields[i] = field + + default: + return nil, nil, errors.Errorf("failed to initialize schema for field %q: unsupported type %q", s.Name, s.Type) + } + fieldName := fields[i].Name() + if prev, ok := fieldNameSet[fieldName]; ok { + return nil, nil, errors.Errorf("schema field %d duplicates name of field %d (%s)", i, prev, fieldName) + } + fieldNameSet[fieldName] = i + } + + return fields, paths, nil +} diff --git a/idk/header_test.go b/idk/header_test.go new file mode 100644 index 000000000..02d4e3ed9 --- /dev/null +++ b/idk/header_test.go @@ -0,0 +1,423 @@ +package idk + +import ( + "fmt" + "reflect" + "strings" + "testing" + "time" +) + +func TestHeaderToField(t *testing.T) { + seven := int64(7) + tests := []struct { + name string + input string + exp Field + expErr string + expLog string + }{ + { + name: "empty", + input: "", + expErr: ErrNoFieldSpec.Error(), + }, + { + name: "no name", + input: "__String", + expErr: "field '__String' has no sourceName", + }, + { + name: "justname", + input: "blah", + expErr: ErrNoFieldSpec.Error(), + }, + { + name: "justname__", + input: "blah__", + expErr: "unknown field", + }, + { + name: "unknown field", + input: "blah__Ztring", + expErr: "unknown field", + }, + { + name: "string", + input: "a__String", + exp: StringField{NameVal: "a", DestNameVal: "a"}, + }, + { + name: "string-mutex-f", + input: "a__String_F", + exp: StringField{NameVal: "a", DestNameVal: "a"}, + }, + { + name: "string-mutex", + input: "a__String_T", + exp: StringField{NameVal: "a", DestNameVal: "a", Mutex: true}, + }, + { + name: "string-quantum", + input: "a__String_F_YM", + exp: StringField{NameVal: "a", DestNameVal: "a", Mutex: false, Quantum: "YM"}, + }, + { + name: "string-ttl", + input: "a__String_F_YM_30s", + exp: StringField{NameVal: "a", DestNameVal: "a", Mutex: false, Quantum: "YM", TTL: "30s"}, + }, + { + name: "string-extra_arg", + input: "a__String_F_YM_30s_Z", + exp: StringField{NameVal: "a", DestNameVal: "a", Mutex: false, Quantum: "YM", TTL: "30s"}, + expLog: "ignoring extra arguments to StringField a__String_F_YM_30s_Z", + }, + { + name: "unknown arg", + input: "a__String_Z", + expErr: "can't interpret 'Z' for StringField.Mutex for field 'a'", + }, + { + name: "bool", + input: "z__Bool", + exp: BoolField{NameVal: "z", DestNameVal: "z"}, + }, + { + name: "bool-extra", + input: "z__Bool_extra_2", + exp: BoolField{NameVal: "z", DestNameVal: "z"}, + expLog: "ignoring extra arguments to BoolField", + }, + { + name: "id", + input: "myname__ID", + exp: IDField{NameVal: "myname", DestNameVal: "myname"}, + }, + { + name: "id-mutex", + input: "z__ID_T", + exp: IDField{NameVal: "z", DestNameVal: "z", Mutex: true}, + }, + { + name: "id-quantum", + input: "z__ID_F_YMD", + exp: IDField{NameVal: "z", DestNameVal: "z", Mutex: false, Quantum: "YMD"}, + }, + { + name: "id-ttl", + input: "z__ID_F_YMD_30s", + exp: IDField{NameVal: "z", DestNameVal: "z", Mutex: false, Quantum: "YMD", TTL: "30s"}, + }, + { + name: "id-extra_arg", + input: "z__ID_F_YMD_30s_Z", + exp: IDField{NameVal: "z", DestNameVal: "z", Mutex: false, Quantum: "YMD", TTL: "30s"}, + expLog: "ignoring extra arguments to IDField z__ID_F_YMD_30s_Z", + }, + { + name: "int", + input: "myname__Int", + exp: IntField{NameVal: "myname", DestNameVal: "myname"}, + }, + { + name: "int-min", + input: "myname__Int_7", + exp: IntField{NameVal: "myname", DestNameVal: "myname", Min: &seven}, + }, + { + name: "int-min-max", + input: "myname__Int_7_7", + exp: IntField{NameVal: "myname", DestNameVal: "myname", Min: &seven, Max: &seven}, + }, + { + name: "int-min-max-foreign", + input: "myname__Int_7_7_findex", + exp: IntField{NameVal: "myname", DestNameVal: "myname", Min: &seven, Max: &seven, ForeignIndex: "findex"}, + }, + { + name: "int-min-max-extra", + input: "myname__Int_7_7_z_", + exp: IntField{NameVal: "myname", DestNameVal: "myname", Min: &seven, Max: &seven, ForeignIndex: "z"}, + expLog: "ignoring extra arguments to IntField", + }, + { + name: "int-min-parseerr", + input: "myname__Int_7_8.9", + expErr: "parsing max for", + }, + { + name: "int-parserr-max", + input: "myname__Int_blah_7", + expErr: "parsing min for", + }, + { + name: "decimal-scale", + input: "myname__Decimal_7", + exp: DecimalField{NameVal: "myname", DestNameVal: "myname", Scale: 7}, + }, + { + name: "decimal", + input: "myname__Decimal", + exp: DecimalField{NameVal: "myname", DestNameVal: "myname"}, + }, + { + name: "decimal-err", + input: "myname__Decimal_!", + expErr: "parsing scale for", + }, + { + name: "stringarray-quantum", + input: "myname__StringArray_YMD", + exp: StringArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD"}, + }, + { + name: "stringarray-ttl", + input: "myname__StringArray_YMD_30s", + exp: StringArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD", TTL: "30s"}, + }, + { + name: "stringarray-extra_arg", + input: "myname__StringArray_YMD_30s_Z", + exp: StringArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD", TTL: "30s"}, + expLog: "ignoring extra arguments to StringArrayField", + }, + { + name: "idarray-quantum", + input: "myname__IDArray_YMD", + exp: IDArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD"}, + }, + { + name: "idarray-ttl", + input: "myname__IDArray_YMD_30s", + exp: IDArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD", TTL: "30s"}, + }, + { + name: "idarray-extra_arg", + input: "myname__IDArray_YMD_30s_Z", + exp: IDArrayField{NameVal: "myname", DestNameVal: "myname", Quantum: "YMD", TTL: "30s"}, + expLog: "ignoring extra arguments to IDArrayField", + }, + { + name: "date-int", + input: "myname__DateInt", + exp: DateIntField{ + NameVal: "myname", + DestNameVal: "myname", + Layout: time.RFC3339, + }, + }, + { + name: "date-int-layout-epoch", + input: "myname__DateInt_2006-01-02T15:04:05Z07:00_2018-03-04T15:04:05Z", + exp: DateIntField{ + NameVal: "myname", + DestNameVal: "myname", + Layout: time.RFC3339, + Epoch: time.Date(2018, time.March, 4, 15, 4, 5, 0, time.UTC), + }, + }, + { + name: "date-int-layout-epoch-unit", + input: "myname__DateInt_2006-01-02T15:04:05Z07:00_2018-03-04T15:04:05Z_D", + exp: DateIntField{ + NameVal: "myname", DestNameVal: "myname", + Layout: time.RFC3339, + Epoch: time.Date(2018, time.March, 4, 15, 4, 5, 0, time.UTC), + Unit: Day, + }, + }, + { + name: "date-int-layout-epoch-unit-custom", + input: "myname__DateInt_2006-01-02T15:04:05Z07:00_2018-03-04T15:04:05Z_C_10h", + exp: DateIntField{ + NameVal: "myname", DestNameVal: "myname", + Layout: time.RFC3339, + Epoch: time.Date(2018, time.March, 4, 15, 4, 5, 0, time.UTC), + Unit: Custom, + CustomUnit: "10h", + }, + }, + { + name: "date-int-layout-epoch-unit-custom-2", + input: "myname__DateInt_2006-01-02_2018-03-04_D_0", + exp: DateIntField{ + NameVal: "myname", DestNameVal: "myname", + Layout: "2006-01-02", + Epoch: time.Date(2018, time.March, 4, 0, 0, 0, 0, time.UTC), + Unit: Day, + }, + }, + { + name: "date-int-layout-epoch-unit-custom-error", + input: "myname__DateInt_2006-01-02_2018-03d-04_D_0", + expErr: `cannot parse "d-04"`, + }, + { + name: "date-int-layout-epoch-unit-custom-layout-badunit", + input: "myname__DateInt_2006-01-02_2018-03-04_Ze_0", + expErr: fmt.Sprintf(ErrFmtUnknownUnit, "ze"), + }, + { + name: "date-int-layout-epoch-unit-custom-layout-customuniterror", + input: "myname__DateInt_2006-01-02_2018-03-04_C_127z", + expErr: `parsing custom unit 127z: time: unknown unit "z" in duration "127z"`, + }, + { + name: "recordtime", + input: "myname__RecordTime", + exp: RecordTimeField{NameVal: "myname", Layout: "2006-01-02T15:04:05Z07:00", DestNameVal: "myname"}, + }, + { + name: "recordtime", + input: "__RecordTime", + exp: RecordTimeField{Layout: "2006-01-02T15:04:05Z07:00"}, + }, + { + name: "recordtime", + input: "myname__RecordTime_2006-01-02", + exp: RecordTimeField{NameVal: "myname", DestNameVal: "myname", Layout: "2006-01-02"}, + }, + { + name: "recordtime-layout-epoch-unit-custom-error", + input: "myname__RecordTime_2006-01-02_2018-03d-04_D_0", + expErr: `cannot parse "d-04"`, + }, + { + name: "recordtime-layout-epoch-unit-custom-layout-badunit", + input: "myname__RecordTime_2006-01-02_2018-03-04_Ze_0", + expErr: "unknown unit", + }, + { + name: "multidunder", + input: "multi__dunder__String", + exp: StringField{NameVal: "multi__dunder", DestNameVal: "multi__dunder"}, + }, + { + name: "multi-dunder-no-fieldspec", + input: "multi__dunder__funder", + expErr: "unknown field 'funder' for", + }, + { + name: "map-incompatible-name", + input: "@rbitrary.name*string!___pilosa-name-string__String", + exp: StringField{ + NameVal: "@rbitrary.name*string!", + DestNameVal: "pilosa-name-string", + }, + }, + { + name: "map-compatible-name", + input: "dunderful__name__string___pilosa-name-string__String", + exp: StringField{ + NameVal: "dunderful__name__string", + DestNameVal: "pilosa-name-string", + }, + }, + { + name: "map-dunderful-name", + input: "dunderful__name__string___pilosa__name__string__String", + exp: StringField{ + NameVal: "dunderful__name__string", + DestNameVal: "pilosa__name__string", + }, + }, + { + name: "timestamp", + input: "purchasedate__Timestamp_ms", + exp: TimestampField{ + NameVal: "purchasedate", + DestNameVal: "purchasedate", + Granularity: "ms", + Layout: time.RFC3339Nano, + }, + }, + { + name: "timestamp-epoch", + input: "purchasedate__Timestamp_s_2006-01-02T15:04:05Z07:00_2018-03-04T15:04:05Z_ms", + exp: TimestampField{ + NameVal: "purchasedate", + DestNameVal: "purchasedate", + Granularity: "s", + Layout: time.RFC3339, + Epoch: time.Date(2018, time.March, 4, 15, 4, 5, 0, time.UTC), + Unit: Millisecond, + }, + }, + { + name: "lookup-text", + input: "a__LookupText", + exp: LookupTextField{NameVal: "a", DestNameVal: "a"}, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rl := &recordingLogger{} + field, err := HeaderToField(test.input, rl) + if test.expErr != "" { + if err == nil || !strings.Contains(err.Error(), test.expErr) { + t.Fatalf("unexpected error exp/got:\n%s\n%v", test.expErr, err) + } + } else if err != nil { + t.Fatalf("unexpected error: %v", err) + } + errorIfNotEqual(t, test.exp, field) + if test.expLog == "" && len(rl.logs) > 0 { + t.Errorf("unexpected logs: %+v", rl.logs) + } else if test.expLog != "" && len(rl.logs) == 0 { + t.Errorf("expected log: '%s'", test.expLog) + } else if test.expLog != "" { + if !strings.Contains(rl.logs[0], test.expLog) { + t.Errorf("exp/got:\n%s\n%s", test.expLog, rl.logs[0]) + } + } + }) + } +} + +func errorIfNotEqual(t *testing.T, exp, got interface{}) { + t.Helper() + if !reflect.DeepEqual(exp, got) { + t.Errorf("unequal exp/got:\n%+v of %[1]T\n%+v of %[2]T", exp, got) + } +} + +func errorIfNotErrMatch(t *testing.T, expErrSubstring string, got error) { + t.Helper() + if expErrSubstring == "" && got != nil { + t.Fatalf("unexpected error: %v", got) + } else if expErrSubstring == "" { + return + } else if expErrSubstring != "" && got == nil { + t.Fatalf("expected error like '%s'", expErrSubstring) + } else if !strings.Contains(got.Error(), expErrSubstring) { + t.Fatalf("unexpected error exp/got:\n%s\n%v", expErrSubstring, got) + } + +} + +type recordingLogger struct { + logs []string + debugs []string +} + +func (r *recordingLogger) Panicf(format string, v ...interface{}) { + r.logs = append(r.logs, fmt.Sprintf("PANIC:"+format, v...)) + panic(r.logs) +} +func (r *recordingLogger) Errorf(format string, v ...interface{}) { + r.Printf("ERROR:"+format, v) +} +func (r *recordingLogger) Infof(format string, v ...interface{}) { + r.Printf("INFO:"+format, v) +} +func (r *recordingLogger) Warnf(format string, v ...interface{}) { + r.Printf("WARN:"+format, v) +} +func (r *recordingLogger) Printf(format string, v ...interface{}) { + r.logs = append(r.logs, fmt.Sprintf(format, v...)) +} +func (r *recordingLogger) Debugf(format string, v ...interface{}) { + r.debugs = append(r.debugs, fmt.Sprintf(format, v...)) +} diff --git a/idk/idallocator.go b/idk/idallocator.go new file mode 100644 index 000000000..797d05844 --- /dev/null +++ b/idk/idallocator.go @@ -0,0 +1,462 @@ +package idk + +import ( + "bytes" + "context" + "crypto/rand" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "math/bits" + "net/http" + "net/url" + "time" + "unicode/utf8" + + "sync" + + pilosacore "github.com/molecula/featurebase/v3" + + "github.com/pkg/errors" +) + +type RangeAllocator interface { + Get() (*IDRange, error) + Return(*IDRange) error +} + +type IDAllocator interface { + Next(context.Context, Record) (uint64, error) + Reserve(context.Context, uint64) error + Commit(context.Context) error +} + +type LocalRangeAllocator struct { + shardWidth uint64 + next uint64 + returned []*IDRange + mu sync.Mutex +} + +func NewLocalRangeAllocator(shardWidth uint64) RangeAllocator { + if shardWidth < 1<<16 || bits.OnesCount64(shardWidth) > 1 { + panic(fmt.Sprintf("bad shardWidth in NewRangeAllocator: %d", shardWidth)) + } + return &LocalRangeAllocator{ + shardWidth: shardWidth, + } +} + +// IDRange is inclusive at Start and exclusive at End... like slices. +type IDRange struct { + Start uint64 + End uint64 +} + +type rangeNexter struct { + a RangeAllocator + r *IDRange +} + +func NewRangeNexter(a RangeAllocator) (IDAllocator, error) { + r, err := a.Get() + if err != nil { + return nil, errors.Wrap(err, "getting range") + } + return &rangeNexter{ + a: a, + r: r, + }, nil +} + +func (n *rangeNexter) Next(ctx context.Context, _ Record) (val uint64, err error) { + if n.r.Start == n.r.End { + n.r, err = n.a.Get() + if err != nil { + return 0, errors.Wrap(err, "getting next range") + } + } + if n.r.Start >= n.r.End { + panic("Start is greater than End") + } + val = n.r.Start + n.r.Start++ + return +} + +func (n *rangeNexter) Reserve(ctx context.Context, count uint64) error { + return nil +} + +func (n *rangeNexter) Commit(ctx context.Context) error { + return nil +} + +func (a *LocalRangeAllocator) Get() (*IDRange, error) { + a.mu.Lock() + defer a.mu.Unlock() + n := len(a.returned) + if n > 0 { + ret := a.returned[n-1] + a.returned = a.returned[:n-1] + return ret, nil + } + ret := &IDRange{ + Start: a.next, + End: a.next + a.shardWidth, + } + a.next += a.shardWidth + return ret, nil +} + +func (a *LocalRangeAllocator) Return(r *IDRange) error { + if r.Start == r.End { + return nil + } + if r.Start > r.End { + return errors.Errorf("attempted to return range with start > end: %v", r) + } + a.mu.Lock() + a.returned = append(a.returned, r) + a.mu.Unlock() + return nil +} + +type normalModeNexter struct { + key pilosacore.IDAllocKey + session [32]byte + localIDs []pilosacore.IDRange + localOffset uint64 + idManager *pilosaIDManager +} + +func newNormalModeNexter(idManager *pilosaIDManager, index, key string) IDAllocator { + nexter := &normalModeNexter{ + key: pilosacore.IDAllocKey{ + Index: index, + Key: key, + }, + idManager: idManager, + } + return nexter +} + +func (n *normalModeNexter) Reserve(ctx context.Context, count uint64) (err error) { + n.localIDs = nil + n.localOffset = 0 + _, err = io.ReadFull(rand.Reader, n.session[:]) + if err != nil { + return errors.Wrap(err, "acquiring session ID") + } + reserveReq := pilosacore.IDAllocReserveRequest{ + Key: n.key, + Session: n.session, + Offset: ^uint64(0), + Count: count, + } + ids, err := n.idManager.reserve(ctx, reserveReq) + if err != nil { + return err + } + n.localIDs = ids + return nil +} + +func (n *normalModeNexter) Commit(ctx context.Context) error { + commitRequest := pilosacore.IDAllocCommitRequest{ + Key: n.key, + Session: n.session, + Count: n.localOffset, + } + err := n.idManager.commit(ctx, commitRequest) + if err != nil { + return err + } + n.localIDs = nil + n.localOffset = 0 + return nil +} + +func (n *normalModeNexter) Next(ctx context.Context, _ Record) (uint64, error) { + if len(n.localIDs) == 0 { + return 0, errors.New("no reserved IDs") + } + + id := n.localIDs[0].First + if n.localIDs[0].First == n.localIDs[0].Last { + n.localIDs = n.localIDs[1:] + } else { + n.localIDs[0].First++ + } + n.localOffset++ + return id, nil +} + +// idAllocation is a collection of IDs reserved for an offset stream. +type idAllocation struct { + // localIDs are the currently-reserved IDs to use. + // The first ID (if present) maps to offset. + localIDs []pilosacore.IDRange + + // offset is the offset of the lowest available mapped record. + offset uint64 +} + +// offsetModeNexter reserves IDs when pulling data from a set of offset-streams (e.g. kafka partitions). +// Currently, a lot of the design of offsetModeNexter assumes +// it's used with kafka though ideally, it could be used with +// any other source that's partitioned and offset based. +type offsetModeNexter struct { + // idManager is a client to Pilosa's ID allocator. + idManager *pilosaIDManager + + // index is the index to reserve IDs on. + index string + + // reserveCount is the number of IDs to request from Pilosa at once. + reserveCount uint64 + + // localStore is the set of currently-reserved IDs. + // When using kafka, the key is derived from the topic and partition. + localStore map[string]*idAllocation +} + +func newOffsetModeNexter(idManager *pilosaIDManager, index string, reserveCount uint64) IDAllocator { + nexter := &offsetModeNexter{ + idManager: idManager, + index: index, + reserveCount: reserveCount, + localStore: make(map[string]*idAllocation), + } + return nexter +} + +func (n *offsetModeNexter) Next(ctx context.Context, r Record) (uint64, error) { + // Get the stream and offset of the record. In the case of a kafka message + // the stream key will have the following format: ":" + rec, ok := r.(OffsetStreamRecord) + if !ok { + return 0, errors.New("invalid source of records for OffsetMode ID Allocator: should implement OffsetStreamRecord") + } + key, offset := rec.StreamOffset() + + // retrieve allocation based on key + // for kafka, the key is constructed from the topic + partition + alloc, ok := n.localStore[key] + if !ok { + alloc = &idAllocation{} + + n.localStore[key] = alloc + } + + if offset < alloc.offset { + // This may happen in a brief period when two ingesters are processing the same partition. + return 0, ErrIDOffsetDesync{ + Requested: offset, + Base: alloc.offset, + } + } + + // Skip IDs under the offset. + if len(alloc.localIDs) != 0 && offset > alloc.offset { + for len(alloc.localIDs) != 0 && alloc.localIDs[0].Last-alloc.localIDs[0].First < offset-alloc.offset { + alloc.offset += alloc.localIDs[0].Last - alloc.localIDs[0].First + 1 + alloc.localIDs = alloc.localIDs[1:] + } + if len(alloc.localIDs) != 0 { + skip := offset - alloc.offset + alloc.offset += skip + alloc.localIDs[0].First += skip + } + } + + // if we don't have any local IDs to nextify, then + // get fresh IDs from idManager ie Pilosa + if len(alloc.localIDs) == 0 { + // get fresh IDs from Pilosa + allocKey := pilosacore.IDAllocKey{ + Key: key, + Index: n.index, + } + var session [32]byte + _, err := io.ReadFull(rand.Reader, session[:]) + if err != nil { + return 0, errors.Wrap(err, "acquiring session ID") + } + reserveReq := pilosacore.IDAllocReserveRequest{ + Key: allocKey, + Session: session, + Offset: offset, + Count: n.reserveCount, + } + ids, err := n.idManager.reserve(ctx, reserveReq) + if err != nil { + if err, ok := err.(ErrIDOffsetDesync); ok { + // Skip all messages until the latest offset. + alloc.offset = err.Base + } + + return 0, err + } + + alloc.localIDs = ids + alloc.offset = offset + } + + // finally, get the ID + return alloc.localIDs[0].First, nil +} + +// Commits for offset-based allocated IDs are done implicitly when +// one reserves the next IDs, so there's no need to carry out an +// explicit commit here (for the time-being). +func (n *offsetModeNexter) Commit(ctx context.Context) error { + return nil +} + +func (n *offsetModeNexter) Reserve(ctx context.Context, count uint64) (err error) { + // no op, reservation is done on demand during calls to Next + return nil +} + +// pilosaIDManager is an external ID Manager +// for autogenerated IDs +type pilosaIDManager struct { + hcli *http.Client + url url.URL +} + +// TODO, once pull/1559 is merged into pilosa main branch +// no need to maintain a duplicate definition of ErrIDOffsetDesync +// here +type ErrIDOffsetDesync struct { + Requested uint64 `json:"requested"` + // Base is the next lowest uncommitted offset for which + // IDs may be reserved + Base uint64 `json:"base"` +} + +func (e ErrIDOffsetDesync) Error() string { + return fmt.Sprintf("attempted to reserve IDs at committed offset %d (base offset: %d)", e.Requested, e.Base) +} + +func (ps *pilosaIDManager) reserve(ctx context.Context, reserveReq pilosacore.IDAllocReserveRequest) ([]pilosacore.IDRange, error) { + data, err := json.Marshal(reserveReq) + if err != nil { + return nil, errors.Wrap(err, "marshaling ID reservation request") + } + targ, err := ps.url.Parse("/internal/idalloc/reserve") + if err != nil { + return nil, errors.Wrap(err, "resolving ID reservation target URL") + } + ctx, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + req, err := http.NewRequestWithContext(ctx, http.MethodPost, targ.String(), bytes.NewReader(data)) + if err != nil { + return nil, errors.Wrap(err, "preparing ID reservation HTTP request") + } + req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json") + + // add authorization token to request + token, ok := ctx.Value(contextKeyToken).(string) + if ok && token != "" { + req.Header.Set("Authorization", token) + } + + resp, err := ps.hcli.Do(req) + if err != nil { + return nil, errors.Wrap(err, "dispatching ID reservation HTTP request") + } + var body []byte + if resp.Body != nil { + defer func() { + cerr := resp.Body.Close() + if cerr != nil && err == nil { + err = errors.Wrap(cerr, "closing ID reservation request body") + } + }() + body, err = ioutil.ReadAll(resp.Body) + if err != nil { + return nil, errors.Wrap(err, "reading ID reservation request body") + } + } + if resp.StatusCode/100 != http.StatusOK/100 { + // first check if OffsetDesync Error + if resp.StatusCode == http.StatusConflict && resp.Header.Get("Content-Type") == "application/json" { + var esync ErrIDOffsetDesync + if err := json.Unmarshal(body, &esync); err == nil { + return nil, esync + } + } + var err error + if len(body) > 0 && utf8.Valid(body) { + err = errors.New(string(body)) + } else { + err = errors.New(resp.Status) + } + err = errors.Wrapf(err, "status %d", resp.StatusCode) + return nil, errors.Wrap(err, "fetching ID reservation") + } + var ids []pilosacore.IDRange + err = json.Unmarshal(body, &ids) + if err != nil { + return nil, errors.Wrap(err, "decoding ID reservation") + } + return ids, nil +} + +func (ps *pilosaIDManager) commit(ctx context.Context, commitRequest pilosacore.IDAllocCommitRequest) error { + data, err := json.Marshal(commitRequest) + if err != nil { + return errors.Wrap(err, "marshaling ID commit request") + } + targ, err := ps.url.Parse("/internal/idalloc/commit") + if err != nil { + return errors.Wrap(err, "resolving ID commit target URL") + } + ctx, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + req, err := http.NewRequestWithContext(ctx, http.MethodPost, targ.String(), bytes.NewReader(data)) + if err != nil { + return errors.Wrap(err, "preparing ID commit HTTP request") + } + req.Header.Add("Content-Type", "application/json") + + // add authorization token to request + token, ok := ctx.Value(contextKeyToken).(string) + if ok && token != "" { + req.Header.Set("Authorization", token) + } + + resp, err := ps.hcli.Do(req) + if err != nil { + return errors.Wrap(err, "dispatching ID commit HTTP request") + } + var body []byte + if resp.Body != nil { + defer func() { + cerr := resp.Body.Close() + if cerr != nil && err == nil { + err = errors.Wrap(cerr, "closing ID reservation request body") + } + }() + body, err = ioutil.ReadAll(resp.Body) + if err != nil { + return errors.Wrap(err, "reading ID reservation request body") + } + } + if resp.StatusCode/100 != http.StatusOK/100 { + var err error + if len(body) > 0 && utf8.Valid(body) { + err = errors.New(string(body)) + } else { + err = errors.New(resp.Status) + } + err = errors.Wrapf(err, "status %d", resp.StatusCode) + return errors.Wrap(err, "committing ID reservation") + } + + return nil +} diff --git a/idk/idallocator_test.go b/idk/idallocator_test.go new file mode 100644 index 000000000..670ef9ae4 --- /dev/null +++ b/idk/idallocator_test.go @@ -0,0 +1,349 @@ +package idk + +import ( + "context" + "fmt" + "io" + "math/rand" + "net/http" + "net/http/httptest" + "net/url" + "sort" + "sync" + "testing" + "time" + + pilosacore "github.com/molecula/featurebase/v3" + "github.com/pkg/errors" +) + +type spyNexter struct { + nexter IDAllocator +} + +func (sn *spyNexter) Next(ctx context.Context, rec Record) (uint64, error) { + id, err := sn.nexter.Next(ctx, rec) + if err != nil { + return id, err + } + oRec, ok := rec.(*offsetRecord) + if !ok { + return 0, fmt.Errorf("Invalid usage of spyNexter with wrong record type") + } + // some other ingester might be nexting the same record concurrently + // so we need to serialize modifications + oRec.mu.Lock() + defer oRec.mu.Unlock() + oRec.idsAllocated = append(oRec.idsAllocated, id) + return id, err +} + +func (sn *spyNexter) Reserve(ctx context.Context, count uint64) error { + return sn.nexter.Reserve(ctx, count) +} + +func (sn *spyNexter) Commit(ctx context.Context) error { + return sn.nexter.Commit(ctx) +} + +func TestOffsetBasedIDAllocation(t *testing.T) { + seed := time.Now().UTC().UnixNano() + rand.Seed(seed) + + schema := []Field{IDField{NameVal: "aval"}} + + numIngesters := 3 + numPartitions := 10 + recordsPerPartition := 10 + batchSize := 4 + index := fmt.Sprintf("idallocation%d", rand.Intn(10000000)) + rng := rand.New(rand.NewSource(seed)) + + sources := genSources(rng, schema, numIngesters, numPartitions, recordsPerPartition) + + // create ingesters + type ingester struct { + m *Main + c int + onFinish func() + err error + } + + var ingesters []*ingester + for i := 0; i < numIngesters; i++ { + m, onFinish, err := spawnIngester(i, index, sources[i], batchSize) + if err != nil { + t.Fatal(err) + } + + ingesters = append(ingesters, &ingester{ + m: m, + onFinish: onFinish, + c: i, + }) + } + + defer func() { + if err := ingesters[0].m.PilosaClient().DeleteIndexByName(ingesters[0].m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + var wg sync.WaitGroup + wg.Add(numIngesters) + for _, ingester := range ingesters { + ingester := ingester + go func() { + defer func() { + ingester.onFinish() + wg.Done() + }() + + c := ingester.c + l := &msgCounter{MaxMsgs: 100} + err := ingester.m.runIngester(c, l) + ingester.err = err + }() + } + + wg.Wait() + + // check if any ingester exited with an error + for _, i := range ingesters { + if i.err != nil { + t.Fatal(i.err) + } + } + + // throw all records to set to avoid reprocessing them multiple + // times + records := make(map[*offsetRecord]struct{}) + for _, s := range sources { + for _, r := range s.records { + records[r] = struct{}{} + } + } + + // for each record make sure all ids allocated are the same + for r := range records { + if !allValsSame(r.idsAllocated) { + rid := fmt.Sprintf("partition: %s, offset %d", r.groupKey, r.offset) + errMsg := fmt.Sprintf("For record(%s) ids allocated by nexter not all same: %v", rid, r.idsAllocated) + t.Fatal(errMsg) + } + } + +} + +func allValsSame(nums []uint64) bool { + if len(nums) <= 1 { + return true // trivially true + } + num := nums[0] + for _, n := range nums[1:] { + if n != num { + return false + } + } + return true +} + +func spawnIngester(c int, index string, ts Source, batchSize int) (ingester *Main, onFinish func(), err error) { + ingester = NewMain() + + // use external, offset mode id allocation + ingester.AutoGenerate = true + ingester.ExternalGenerate = true + ingester.OffsetMode = true + + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + ingester.Index = index + ingester.BatchSize = batchSize + // ingester.LogPath = "/dev/null" + + onFinishRun, err := ingester.Setup() + if err != nil { + return nil, nil, errors.Wrap(err, "setting up") + } + + // hijack nexter with our very own spyNexter + currNewNexter := ingester.newNexter + ingester.newNexter = func(c int) (IDAllocator, error) { + nexter, err := currNewNexter(c) + if _, ok := nexter.(*offsetModeNexter); !ok { + return nil, fmt.Errorf("Invalid nexter type, should be offsetBasedNexter") + } + sNexter := &spyNexter{ + nexter: nexter, + } + return sNexter, err + } + + return ingester, onFinishRun, nil +} + +// RECORD +type offsetRecord struct { + groupKey string + idsAllocated []uint64 + dup int + numTimesRead int + offset int + mu sync.Mutex + data []interface{} +} + +func (r *offsetRecord) Commit(ctx context.Context) error { + return nil +} + +func (r *offsetRecord) StreamOffset() (string, uint64) { + return r.groupKey, uint64(r.offset) +} + +var _ OffsetStreamRecord = &offsetRecord{} + +func (r *offsetRecord) Data() []interface{} { + return r.data +} + +type offsetTestSource struct { + schema []Field + records []*offsetRecord + i int +} + +func (s *offsetTestSource) Close() error { + return nil +} + +func (s *offsetTestSource) Schema() []Field { + return s.schema +} + +func (s *offsetTestSource) Record() (Record, error) { + s.i++ + if s.i <= len(s.records) { + return s.records[s.i-1], nil + } + return nil, io.EOF +} + +func genSources(rng *rand.Rand, schema []Field, numSources int, numPartitions int, recordsPerPartition int) []*offsetTestSource { + // generate records , each records has a dup value + // which determines how many times it will be read + var records []*offsetRecord + for pid := 0; pid < numPartitions; pid++ { + key := fmt.Sprintf("partition-%d", pid) + for i := 0; i < recordsPerPartition; i++ { + dup := rng.Intn(5) + 1 + rec := &offsetRecord{ + offset: i, + groupKey: key, + data: []interface{}{i}, + dup: dup, + numTimesRead: 0, + } + records = append(records, rec) + } + } + + // shuffle records then sort based on offset + // so that different partitions can go to different + // ingesters + rng.Shuffle(len(records), func(i, j int) { + records[i], records[j] = records[j], records[i] + }) + sort.Slice(records, func(i, j int) bool { + return records[i].offset < records[j].offset + }) + + // create sources + var sources []*offsetTestSource + for i := 0; i < numSources; i++ { + sources = append(sources, &offsetTestSource{ + schema: schema, + }) + } + + // distribute records to sources, round-robin-ish + sourceIndex := 0 + curr := make([]*offsetRecord, len(records)) + copy(curr, records[:]) + for len(curr) > 0 { + var next []*offsetRecord + for _, r := range curr { + source := sources[sourceIndex] + source.records = append(source.records, r) + r.numTimesRead++ + if r.numTimesRead == r.dup { + r.numTimesRead = 0 + } else { + next = append(next, r) + } + sourceIndex = (sourceIndex + 1) % numSources + } + curr = next + } + + return sources +} + +func Test_pilosaIDManager_commit(t *testing.T) { + token := "Bearer " + getAuthToken(t) + ctx := context.WithValue(context.Background(), contextKeyToken, token) + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + tok, ok := r.Header["Authorization"] + + if !ok || len(tok) == 0 { + t.Fatal("Authorization Header not found") + } + + if tok[0] != token { + t.Fatalf("expected: %s, got: %s", token, tok) + } + })) + + u, err := url.Parse(srv.URL) + if err != nil { + t.Fatal("Could not parse URL") + } + + ps := pilosaIDManager{ + hcli: srv.Client(), + url: *u, + } + + _ = ps.commit(ctx, pilosacore.IDAllocCommitRequest{}) +} + +func Test_pilosaIDManager_reserve(t *testing.T) { + token := "Bearer " + getAuthToken(t) + ctx := context.WithValue(context.Background(), contextKeyToken, token) + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + tok, ok := r.Header["Authorization"] + + if !ok || len(tok) == 0 { + t.Fatal("Authorization Header not found") + } + + if tok[0] != token { + t.Fatalf("expected: %s, got: %s", token, tok) + } + })) + + u, err := url.Parse(srv.URL) + if err != nil { + t.Fatal("Could not parse URL") + } + + ps := pilosaIDManager{ + hcli: srv.Client(), + url: *u, + } + + _, _ = ps.reserve(ctx, pilosacore.IDAllocReserveRequest{}) +} diff --git a/idk/idktest/idktest.go b/idk/idktest/idktest.go new file mode 100644 index 000000000..826db409c --- /dev/null +++ b/idk/idktest/idktest.go @@ -0,0 +1,69 @@ +package idktest + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "os" + "strings" + + "github.com/pkg/errors" +) + +type ExtractResponse struct { + Results []Result +} + +type Result struct { + Fields []erField + Columns []Column +} + +type erField struct { + Name string + Type string +} + +type Column struct { + ColumnID int `json:"column"` + Rows []interface{} `json:"rows"` +} + +// doExtractQuery sends a query of result-type Extract to pilosa and +// unpacks the response. +// This was created as a helper function for TestLookupFieldWithExternalId. +func DoExtractQuery(pql, index string) (ExtractResponse, error) { + pilosaHost, ok := os.LookupEnv("IDK_TEST_PILOSA_HOST") + if !ok { + pilosaHost = "pilosa:10101" + } + + var eResp ExtractResponse + + body := strings.NewReader(pql) + url := fmt.Sprintf("http://%s/index/%s/query", pilosaHost, index) + req, err := http.NewRequest("POST", url, body) + if err != nil { + return eResp, errors.Errorf("creating request: %v", err) + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return eResp, errors.Errorf("sending request: %v", err) + } + defer resp.Body.Close() + + s, err := ioutil.ReadAll(resp.Body) + if err != nil { + return eResp, errors.Errorf("reading response: %v", err) + } + + err = json.Unmarshal(s, &eResp) + if err != nil { + return eResp, errors.Errorf("unmarshaling response: %v", err) + } + + return eResp, nil +} diff --git a/idk/idktest/mocks/kinesis.go b/idk/idktest/mocks/kinesis.go new file mode 100644 index 000000000..4cbbec253 --- /dev/null +++ b/idk/idktest/mocks/kinesis.go @@ -0,0 +1,2459 @@ +// Code generated by mockery v1.0.0. DO NOT EDIT. + +package mocks + +import "github.com/aws/aws-sdk-go/service/kinesis/kinesisiface" + +import ( + context "context" + + kinesis "github.com/aws/aws-sdk-go/service/kinesis" + + mock "github.com/stretchr/testify/mock" + + request "github.com/aws/aws-sdk-go/aws/request" +) + +// KinesisAPI is an autogenerated mock type for the KinesisAPI type +type KinesisAPI struct { + mock.Mock +} + +// AddTagsToStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) AddTagsToStream(_a0 *kinesis.AddTagsToStreamInput) (*kinesis.AddTagsToStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.AddTagsToStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.AddTagsToStreamInput) *kinesis.AddTagsToStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.AddTagsToStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.AddTagsToStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// AddTagsToStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) AddTagsToStreamRequest(_a0 *kinesis.AddTagsToStreamInput) (*request.Request, *kinesis.AddTagsToStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.AddTagsToStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.AddTagsToStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.AddTagsToStreamInput) *kinesis.AddTagsToStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.AddTagsToStreamOutput) + } + } + + return r0, r1 +} + +// AddTagsToStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) AddTagsToStreamWithContext(_a0 context.Context, _a1 *kinesis.AddTagsToStreamInput, _a2 ...request.Option) (*kinesis.AddTagsToStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.AddTagsToStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.AddTagsToStreamInput, ...request.Option) *kinesis.AddTagsToStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.AddTagsToStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.AddTagsToStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) CreateStream(_a0 *kinesis.CreateStreamInput) (*kinesis.CreateStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.CreateStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.CreateStreamInput) *kinesis.CreateStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.CreateStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.CreateStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) CreateStreamRequest(_a0 *kinesis.CreateStreamInput) (*request.Request, *kinesis.CreateStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.CreateStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.CreateStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.CreateStreamInput) *kinesis.CreateStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.CreateStreamOutput) + } + } + + return r0, r1 +} + +// CreateStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) CreateStreamWithContext(_a0 context.Context, _a1 *kinesis.CreateStreamInput, _a2 ...request.Option) (*kinesis.CreateStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.CreateStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.CreateStreamInput, ...request.Option) *kinesis.CreateStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.CreateStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.CreateStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DecreaseStreamRetentionPeriod provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DecreaseStreamRetentionPeriod(_a0 *kinesis.DecreaseStreamRetentionPeriodInput) (*kinesis.DecreaseStreamRetentionPeriodOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DecreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(0).(func(*kinesis.DecreaseStreamRetentionPeriodInput) *kinesis.DecreaseStreamRetentionPeriodOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DecreaseStreamRetentionPeriodOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DecreaseStreamRetentionPeriodInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DecreaseStreamRetentionPeriodRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DecreaseStreamRetentionPeriodRequest(_a0 *kinesis.DecreaseStreamRetentionPeriodInput) (*request.Request, *kinesis.DecreaseStreamRetentionPeriodOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DecreaseStreamRetentionPeriodInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DecreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(1).(func(*kinesis.DecreaseStreamRetentionPeriodInput) *kinesis.DecreaseStreamRetentionPeriodOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DecreaseStreamRetentionPeriodOutput) + } + } + + return r0, r1 +} + +// DecreaseStreamRetentionPeriodWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DecreaseStreamRetentionPeriodWithContext(_a0 context.Context, _a1 *kinesis.DecreaseStreamRetentionPeriodInput, _a2 ...request.Option) (*kinesis.DecreaseStreamRetentionPeriodOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DecreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DecreaseStreamRetentionPeriodInput, ...request.Option) *kinesis.DecreaseStreamRetentionPeriodOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DecreaseStreamRetentionPeriodOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DecreaseStreamRetentionPeriodInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DeleteStream(_a0 *kinesis.DeleteStreamInput) (*kinesis.DeleteStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DeleteStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.DeleteStreamInput) *kinesis.DeleteStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DeleteStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DeleteStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DeleteStreamRequest(_a0 *kinesis.DeleteStreamInput) (*request.Request, *kinesis.DeleteStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DeleteStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DeleteStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.DeleteStreamInput) *kinesis.DeleteStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DeleteStreamOutput) + } + } + + return r0, r1 +} + +// DeleteStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DeleteStreamWithContext(_a0 context.Context, _a1 *kinesis.DeleteStreamInput, _a2 ...request.Option) (*kinesis.DeleteStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DeleteStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DeleteStreamInput, ...request.Option) *kinesis.DeleteStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DeleteStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DeleteStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeregisterStreamConsumer provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DeregisterStreamConsumer(_a0 *kinesis.DeregisterStreamConsumerInput) (*kinesis.DeregisterStreamConsumerOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DeregisterStreamConsumerOutput + if rf, ok := ret.Get(0).(func(*kinesis.DeregisterStreamConsumerInput) *kinesis.DeregisterStreamConsumerOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DeregisterStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DeregisterStreamConsumerInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeregisterStreamConsumerRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DeregisterStreamConsumerRequest(_a0 *kinesis.DeregisterStreamConsumerInput) (*request.Request, *kinesis.DeregisterStreamConsumerOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DeregisterStreamConsumerInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DeregisterStreamConsumerOutput + if rf, ok := ret.Get(1).(func(*kinesis.DeregisterStreamConsumerInput) *kinesis.DeregisterStreamConsumerOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DeregisterStreamConsumerOutput) + } + } + + return r0, r1 +} + +// DeregisterStreamConsumerWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DeregisterStreamConsumerWithContext(_a0 context.Context, _a1 *kinesis.DeregisterStreamConsumerInput, _a2 ...request.Option) (*kinesis.DeregisterStreamConsumerOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DeregisterStreamConsumerOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DeregisterStreamConsumerInput, ...request.Option) *kinesis.DeregisterStreamConsumerOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DeregisterStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DeregisterStreamConsumerInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeLimits provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeLimits(_a0 *kinesis.DescribeLimitsInput) (*kinesis.DescribeLimitsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DescribeLimitsOutput + if rf, ok := ret.Get(0).(func(*kinesis.DescribeLimitsInput) *kinesis.DescribeLimitsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeLimitsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DescribeLimitsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeLimitsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeLimitsRequest(_a0 *kinesis.DescribeLimitsInput) (*request.Request, *kinesis.DescribeLimitsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DescribeLimitsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DescribeLimitsOutput + if rf, ok := ret.Get(1).(func(*kinesis.DescribeLimitsInput) *kinesis.DescribeLimitsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DescribeLimitsOutput) + } + } + + return r0, r1 +} + +// DescribeLimitsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DescribeLimitsWithContext(_a0 context.Context, _a1 *kinesis.DescribeLimitsInput, _a2 ...request.Option) (*kinesis.DescribeLimitsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DescribeLimitsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeLimitsInput, ...request.Option) *kinesis.DescribeLimitsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeLimitsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DescribeLimitsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStream(_a0 *kinesis.DescribeStreamInput) (*kinesis.DescribeStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DescribeStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamInput) *kinesis.DescribeStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStreamConsumer provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStreamConsumer(_a0 *kinesis.DescribeStreamConsumerInput) (*kinesis.DescribeStreamConsumerOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DescribeStreamConsumerOutput + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamConsumerInput) *kinesis.DescribeStreamConsumerOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamConsumerInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStreamConsumerRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStreamConsumerRequest(_a0 *kinesis.DescribeStreamConsumerInput) (*request.Request, *kinesis.DescribeStreamConsumerOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamConsumerInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DescribeStreamConsumerOutput + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamConsumerInput) *kinesis.DescribeStreamConsumerOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DescribeStreamConsumerOutput) + } + } + + return r0, r1 +} + +// DescribeStreamConsumerWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DescribeStreamConsumerWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamConsumerInput, _a2 ...request.Option) (*kinesis.DescribeStreamConsumerOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DescribeStreamConsumerOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamConsumerInput, ...request.Option) *kinesis.DescribeStreamConsumerOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DescribeStreamConsumerInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStreamPages provides a mock function with given fields: _a0, _a1 +func (_m *KinesisAPI) DescribeStreamPages(_a0 *kinesis.DescribeStreamInput, _a1 func(*kinesis.DescribeStreamOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamInput, func(*kinesis.DescribeStreamOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// DescribeStreamPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *KinesisAPI) DescribeStreamPagesWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamInput, _a2 func(*kinesis.DescribeStreamOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamInput, func(*kinesis.DescribeStreamOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// DescribeStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStreamRequest(_a0 *kinesis.DescribeStreamInput) (*request.Request, *kinesis.DescribeStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DescribeStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamInput) *kinesis.DescribeStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DescribeStreamOutput) + } + } + + return r0, r1 +} + +// DescribeStreamSummary provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStreamSummary(_a0 *kinesis.DescribeStreamSummaryInput) (*kinesis.DescribeStreamSummaryOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.DescribeStreamSummaryOutput + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamSummaryInput) *kinesis.DescribeStreamSummaryOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamSummaryOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamSummaryInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStreamSummaryRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DescribeStreamSummaryRequest(_a0 *kinesis.DescribeStreamSummaryInput) (*request.Request, *kinesis.DescribeStreamSummaryOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamSummaryInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.DescribeStreamSummaryOutput + if rf, ok := ret.Get(1).(func(*kinesis.DescribeStreamSummaryInput) *kinesis.DescribeStreamSummaryOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.DescribeStreamSummaryOutput) + } + } + + return r0, r1 +} + +// DescribeStreamSummaryWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DescribeStreamSummaryWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamSummaryInput, _a2 ...request.Option) (*kinesis.DescribeStreamSummaryOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DescribeStreamSummaryOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamSummaryInput, ...request.Option) *kinesis.DescribeStreamSummaryOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamSummaryOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DescribeStreamSummaryInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DescribeStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DescribeStreamWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamInput, _a2 ...request.Option) (*kinesis.DescribeStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.DescribeStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamInput, ...request.Option) *kinesis.DescribeStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.DescribeStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DescribeStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DisableEnhancedMonitoring provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DisableEnhancedMonitoring(_a0 *kinesis.DisableEnhancedMonitoringInput) (*kinesis.EnhancedMonitoringOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(0).(func(*kinesis.DisableEnhancedMonitoringInput) *kinesis.EnhancedMonitoringOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.EnhancedMonitoringOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.DisableEnhancedMonitoringInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DisableEnhancedMonitoringRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) DisableEnhancedMonitoringRequest(_a0 *kinesis.DisableEnhancedMonitoringInput) (*request.Request, *kinesis.EnhancedMonitoringOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.DisableEnhancedMonitoringInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(1).(func(*kinesis.DisableEnhancedMonitoringInput) *kinesis.EnhancedMonitoringOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.EnhancedMonitoringOutput) + } + } + + return r0, r1 +} + +// DisableEnhancedMonitoringWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) DisableEnhancedMonitoringWithContext(_a0 context.Context, _a1 *kinesis.DisableEnhancedMonitoringInput, _a2 ...request.Option) (*kinesis.EnhancedMonitoringOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DisableEnhancedMonitoringInput, ...request.Option) *kinesis.EnhancedMonitoringOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.EnhancedMonitoringOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.DisableEnhancedMonitoringInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// EnableEnhancedMonitoring provides a mock function with given fields: _a0 +func (_m *KinesisAPI) EnableEnhancedMonitoring(_a0 *kinesis.EnableEnhancedMonitoringInput) (*kinesis.EnhancedMonitoringOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(0).(func(*kinesis.EnableEnhancedMonitoringInput) *kinesis.EnhancedMonitoringOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.EnhancedMonitoringOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.EnableEnhancedMonitoringInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// EnableEnhancedMonitoringRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) EnableEnhancedMonitoringRequest(_a0 *kinesis.EnableEnhancedMonitoringInput) (*request.Request, *kinesis.EnhancedMonitoringOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.EnableEnhancedMonitoringInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(1).(func(*kinesis.EnableEnhancedMonitoringInput) *kinesis.EnhancedMonitoringOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.EnhancedMonitoringOutput) + } + } + + return r0, r1 +} + +// EnableEnhancedMonitoringWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) EnableEnhancedMonitoringWithContext(_a0 context.Context, _a1 *kinesis.EnableEnhancedMonitoringInput, _a2 ...request.Option) (*kinesis.EnhancedMonitoringOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.EnhancedMonitoringOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.EnableEnhancedMonitoringInput, ...request.Option) *kinesis.EnhancedMonitoringOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.EnhancedMonitoringOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.EnableEnhancedMonitoringInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetRecords provides a mock function with given fields: _a0 +func (_m *KinesisAPI) GetRecords(_a0 *kinesis.GetRecordsInput) (*kinesis.GetRecordsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.GetRecordsOutput + if rf, ok := ret.Get(0).(func(*kinesis.GetRecordsInput) *kinesis.GetRecordsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.GetRecordsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.GetRecordsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetRecordsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) GetRecordsRequest(_a0 *kinesis.GetRecordsInput) (*request.Request, *kinesis.GetRecordsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.GetRecordsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.GetRecordsOutput + if rf, ok := ret.Get(1).(func(*kinesis.GetRecordsInput) *kinesis.GetRecordsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.GetRecordsOutput) + } + } + + return r0, r1 +} + +// GetRecordsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) GetRecordsWithContext(_a0 context.Context, _a1 *kinesis.GetRecordsInput, _a2 ...request.Option) (*kinesis.GetRecordsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.GetRecordsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.GetRecordsInput, ...request.Option) *kinesis.GetRecordsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.GetRecordsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.GetRecordsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetShardIterator provides a mock function with given fields: _a0 +func (_m *KinesisAPI) GetShardIterator(_a0 *kinesis.GetShardIteratorInput) (*kinesis.GetShardIteratorOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.GetShardIteratorOutput + if rf, ok := ret.Get(0).(func(*kinesis.GetShardIteratorInput) *kinesis.GetShardIteratorOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.GetShardIteratorOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.GetShardIteratorInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetShardIteratorRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) GetShardIteratorRequest(_a0 *kinesis.GetShardIteratorInput) (*request.Request, *kinesis.GetShardIteratorOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.GetShardIteratorInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.GetShardIteratorOutput + if rf, ok := ret.Get(1).(func(*kinesis.GetShardIteratorInput) *kinesis.GetShardIteratorOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.GetShardIteratorOutput) + } + } + + return r0, r1 +} + +// GetShardIteratorWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) GetShardIteratorWithContext(_a0 context.Context, _a1 *kinesis.GetShardIteratorInput, _a2 ...request.Option) (*kinesis.GetShardIteratorOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.GetShardIteratorOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.GetShardIteratorInput, ...request.Option) *kinesis.GetShardIteratorOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.GetShardIteratorOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.GetShardIteratorInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// IncreaseStreamRetentionPeriod provides a mock function with given fields: _a0 +func (_m *KinesisAPI) IncreaseStreamRetentionPeriod(_a0 *kinesis.IncreaseStreamRetentionPeriodInput) (*kinesis.IncreaseStreamRetentionPeriodOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.IncreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(0).(func(*kinesis.IncreaseStreamRetentionPeriodInput) *kinesis.IncreaseStreamRetentionPeriodOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.IncreaseStreamRetentionPeriodOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.IncreaseStreamRetentionPeriodInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// IncreaseStreamRetentionPeriodRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) IncreaseStreamRetentionPeriodRequest(_a0 *kinesis.IncreaseStreamRetentionPeriodInput) (*request.Request, *kinesis.IncreaseStreamRetentionPeriodOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.IncreaseStreamRetentionPeriodInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.IncreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(1).(func(*kinesis.IncreaseStreamRetentionPeriodInput) *kinesis.IncreaseStreamRetentionPeriodOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.IncreaseStreamRetentionPeriodOutput) + } + } + + return r0, r1 +} + +// IncreaseStreamRetentionPeriodWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) IncreaseStreamRetentionPeriodWithContext(_a0 context.Context, _a1 *kinesis.IncreaseStreamRetentionPeriodInput, _a2 ...request.Option) (*kinesis.IncreaseStreamRetentionPeriodOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.IncreaseStreamRetentionPeriodOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.IncreaseStreamRetentionPeriodInput, ...request.Option) *kinesis.IncreaseStreamRetentionPeriodOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.IncreaseStreamRetentionPeriodOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.IncreaseStreamRetentionPeriodInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListShards provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListShards(_a0 *kinesis.ListShardsInput) (*kinesis.ListShardsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.ListShardsOutput + if rf, ok := ret.Get(0).(func(*kinesis.ListShardsInput) *kinesis.ListShardsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListShardsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.ListShardsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListShardsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListShardsRequest(_a0 *kinesis.ListShardsInput) (*request.Request, *kinesis.ListShardsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.ListShardsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.ListShardsOutput + if rf, ok := ret.Get(1).(func(*kinesis.ListShardsInput) *kinesis.ListShardsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.ListShardsOutput) + } + } + + return r0, r1 +} + +// ListShardsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) ListShardsWithContext(_a0 context.Context, _a1 *kinesis.ListShardsInput, _a2 ...request.Option) (*kinesis.ListShardsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.ListShardsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListShardsInput, ...request.Option) *kinesis.ListShardsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListShardsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.ListShardsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListStreamConsumers provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListStreamConsumers(_a0 *kinesis.ListStreamConsumersInput) (*kinesis.ListStreamConsumersOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.ListStreamConsumersOutput + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamConsumersInput) *kinesis.ListStreamConsumersOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListStreamConsumersOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.ListStreamConsumersInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListStreamConsumersPages provides a mock function with given fields: _a0, _a1 +func (_m *KinesisAPI) ListStreamConsumersPages(_a0 *kinesis.ListStreamConsumersInput, _a1 func(*kinesis.ListStreamConsumersOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamConsumersInput, func(*kinesis.ListStreamConsumersOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListStreamConsumersPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *KinesisAPI) ListStreamConsumersPagesWithContext(_a0 context.Context, _a1 *kinesis.ListStreamConsumersInput, _a2 func(*kinesis.ListStreamConsumersOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListStreamConsumersInput, func(*kinesis.ListStreamConsumersOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListStreamConsumersRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListStreamConsumersRequest(_a0 *kinesis.ListStreamConsumersInput) (*request.Request, *kinesis.ListStreamConsumersOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamConsumersInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.ListStreamConsumersOutput + if rf, ok := ret.Get(1).(func(*kinesis.ListStreamConsumersInput) *kinesis.ListStreamConsumersOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.ListStreamConsumersOutput) + } + } + + return r0, r1 +} + +// ListStreamConsumersWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) ListStreamConsumersWithContext(_a0 context.Context, _a1 *kinesis.ListStreamConsumersInput, _a2 ...request.Option) (*kinesis.ListStreamConsumersOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.ListStreamConsumersOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListStreamConsumersInput, ...request.Option) *kinesis.ListStreamConsumersOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListStreamConsumersOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.ListStreamConsumersInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListStreams provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListStreams(_a0 *kinesis.ListStreamsInput) (*kinesis.ListStreamsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.ListStreamsOutput + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamsInput) *kinesis.ListStreamsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListStreamsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.ListStreamsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListStreamsPages provides a mock function with given fields: _a0, _a1 +func (_m *KinesisAPI) ListStreamsPages(_a0 *kinesis.ListStreamsInput, _a1 func(*kinesis.ListStreamsOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamsInput, func(*kinesis.ListStreamsOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListStreamsPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *KinesisAPI) ListStreamsPagesWithContext(_a0 context.Context, _a1 *kinesis.ListStreamsInput, _a2 func(*kinesis.ListStreamsOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListStreamsInput, func(*kinesis.ListStreamsOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListStreamsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListStreamsRequest(_a0 *kinesis.ListStreamsInput) (*request.Request, *kinesis.ListStreamsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.ListStreamsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.ListStreamsOutput + if rf, ok := ret.Get(1).(func(*kinesis.ListStreamsInput) *kinesis.ListStreamsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.ListStreamsOutput) + } + } + + return r0, r1 +} + +// ListStreamsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) ListStreamsWithContext(_a0 context.Context, _a1 *kinesis.ListStreamsInput, _a2 ...request.Option) (*kinesis.ListStreamsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.ListStreamsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListStreamsInput, ...request.Option) *kinesis.ListStreamsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListStreamsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.ListStreamsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListTagsForStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListTagsForStream(_a0 *kinesis.ListTagsForStreamInput) (*kinesis.ListTagsForStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.ListTagsForStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.ListTagsForStreamInput) *kinesis.ListTagsForStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListTagsForStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.ListTagsForStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListTagsForStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) ListTagsForStreamRequest(_a0 *kinesis.ListTagsForStreamInput) (*request.Request, *kinesis.ListTagsForStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.ListTagsForStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.ListTagsForStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.ListTagsForStreamInput) *kinesis.ListTagsForStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.ListTagsForStreamOutput) + } + } + + return r0, r1 +} + +// ListTagsForStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) ListTagsForStreamWithContext(_a0 context.Context, _a1 *kinesis.ListTagsForStreamInput, _a2 ...request.Option) (*kinesis.ListTagsForStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.ListTagsForStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.ListTagsForStreamInput, ...request.Option) *kinesis.ListTagsForStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.ListTagsForStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.ListTagsForStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MergeShards provides a mock function with given fields: _a0 +func (_m *KinesisAPI) MergeShards(_a0 *kinesis.MergeShardsInput) (*kinesis.MergeShardsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.MergeShardsOutput + if rf, ok := ret.Get(0).(func(*kinesis.MergeShardsInput) *kinesis.MergeShardsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.MergeShardsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.MergeShardsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MergeShardsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) MergeShardsRequest(_a0 *kinesis.MergeShardsInput) (*request.Request, *kinesis.MergeShardsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.MergeShardsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.MergeShardsOutput + if rf, ok := ret.Get(1).(func(*kinesis.MergeShardsInput) *kinesis.MergeShardsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.MergeShardsOutput) + } + } + + return r0, r1 +} + +// MergeShardsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) MergeShardsWithContext(_a0 context.Context, _a1 *kinesis.MergeShardsInput, _a2 ...request.Option) (*kinesis.MergeShardsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.MergeShardsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.MergeShardsInput, ...request.Option) *kinesis.MergeShardsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.MergeShardsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.MergeShardsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutRecord provides a mock function with given fields: _a0 +func (_m *KinesisAPI) PutRecord(_a0 *kinesis.PutRecordInput) (*kinesis.PutRecordOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.PutRecordOutput + if rf, ok := ret.Get(0).(func(*kinesis.PutRecordInput) *kinesis.PutRecordOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.PutRecordOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.PutRecordInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutRecordRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) PutRecordRequest(_a0 *kinesis.PutRecordInput) (*request.Request, *kinesis.PutRecordOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.PutRecordInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.PutRecordOutput + if rf, ok := ret.Get(1).(func(*kinesis.PutRecordInput) *kinesis.PutRecordOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.PutRecordOutput) + } + } + + return r0, r1 +} + +// PutRecordWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) PutRecordWithContext(_a0 context.Context, _a1 *kinesis.PutRecordInput, _a2 ...request.Option) (*kinesis.PutRecordOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.PutRecordOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.PutRecordInput, ...request.Option) *kinesis.PutRecordOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.PutRecordOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.PutRecordInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutRecords provides a mock function with given fields: _a0 +func (_m *KinesisAPI) PutRecords(_a0 *kinesis.PutRecordsInput) (*kinesis.PutRecordsOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.PutRecordsOutput + if rf, ok := ret.Get(0).(func(*kinesis.PutRecordsInput) *kinesis.PutRecordsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.PutRecordsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.PutRecordsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutRecordsRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) PutRecordsRequest(_a0 *kinesis.PutRecordsInput) (*request.Request, *kinesis.PutRecordsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.PutRecordsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.PutRecordsOutput + if rf, ok := ret.Get(1).(func(*kinesis.PutRecordsInput) *kinesis.PutRecordsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.PutRecordsOutput) + } + } + + return r0, r1 +} + +// PutRecordsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) PutRecordsWithContext(_a0 context.Context, _a1 *kinesis.PutRecordsInput, _a2 ...request.Option) (*kinesis.PutRecordsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.PutRecordsOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.PutRecordsInput, ...request.Option) *kinesis.PutRecordsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.PutRecordsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.PutRecordsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RegisterStreamConsumer provides a mock function with given fields: _a0 +func (_m *KinesisAPI) RegisterStreamConsumer(_a0 *kinesis.RegisterStreamConsumerInput) (*kinesis.RegisterStreamConsumerOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.RegisterStreamConsumerOutput + if rf, ok := ret.Get(0).(func(*kinesis.RegisterStreamConsumerInput) *kinesis.RegisterStreamConsumerOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.RegisterStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.RegisterStreamConsumerInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RegisterStreamConsumerRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) RegisterStreamConsumerRequest(_a0 *kinesis.RegisterStreamConsumerInput) (*request.Request, *kinesis.RegisterStreamConsumerOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.RegisterStreamConsumerInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.RegisterStreamConsumerOutput + if rf, ok := ret.Get(1).(func(*kinesis.RegisterStreamConsumerInput) *kinesis.RegisterStreamConsumerOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.RegisterStreamConsumerOutput) + } + } + + return r0, r1 +} + +// RegisterStreamConsumerWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) RegisterStreamConsumerWithContext(_a0 context.Context, _a1 *kinesis.RegisterStreamConsumerInput, _a2 ...request.Option) (*kinesis.RegisterStreamConsumerOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.RegisterStreamConsumerOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.RegisterStreamConsumerInput, ...request.Option) *kinesis.RegisterStreamConsumerOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.RegisterStreamConsumerOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.RegisterStreamConsumerInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RemoveTagsFromStream provides a mock function with given fields: _a0 +func (_m *KinesisAPI) RemoveTagsFromStream(_a0 *kinesis.RemoveTagsFromStreamInput) (*kinesis.RemoveTagsFromStreamOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.RemoveTagsFromStreamOutput + if rf, ok := ret.Get(0).(func(*kinesis.RemoveTagsFromStreamInput) *kinesis.RemoveTagsFromStreamOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.RemoveTagsFromStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.RemoveTagsFromStreamInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RemoveTagsFromStreamRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) RemoveTagsFromStreamRequest(_a0 *kinesis.RemoveTagsFromStreamInput) (*request.Request, *kinesis.RemoveTagsFromStreamOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.RemoveTagsFromStreamInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.RemoveTagsFromStreamOutput + if rf, ok := ret.Get(1).(func(*kinesis.RemoveTagsFromStreamInput) *kinesis.RemoveTagsFromStreamOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.RemoveTagsFromStreamOutput) + } + } + + return r0, r1 +} + +// RemoveTagsFromStreamWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) RemoveTagsFromStreamWithContext(_a0 context.Context, _a1 *kinesis.RemoveTagsFromStreamInput, _a2 ...request.Option) (*kinesis.RemoveTagsFromStreamOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.RemoveTagsFromStreamOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.RemoveTagsFromStreamInput, ...request.Option) *kinesis.RemoveTagsFromStreamOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.RemoveTagsFromStreamOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.RemoveTagsFromStreamInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SplitShard provides a mock function with given fields: _a0 +func (_m *KinesisAPI) SplitShard(_a0 *kinesis.SplitShardInput) (*kinesis.SplitShardOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.SplitShardOutput + if rf, ok := ret.Get(0).(func(*kinesis.SplitShardInput) *kinesis.SplitShardOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.SplitShardOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.SplitShardInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SplitShardRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) SplitShardRequest(_a0 *kinesis.SplitShardInput) (*request.Request, *kinesis.SplitShardOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.SplitShardInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.SplitShardOutput + if rf, ok := ret.Get(1).(func(*kinesis.SplitShardInput) *kinesis.SplitShardOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.SplitShardOutput) + } + } + + return r0, r1 +} + +// SplitShardWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) SplitShardWithContext(_a0 context.Context, _a1 *kinesis.SplitShardInput, _a2 ...request.Option) (*kinesis.SplitShardOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.SplitShardOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.SplitShardInput, ...request.Option) *kinesis.SplitShardOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.SplitShardOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.SplitShardInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StartStreamEncryption provides a mock function with given fields: _a0 +func (_m *KinesisAPI) StartStreamEncryption(_a0 *kinesis.StartStreamEncryptionInput) (*kinesis.StartStreamEncryptionOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.StartStreamEncryptionOutput + if rf, ok := ret.Get(0).(func(*kinesis.StartStreamEncryptionInput) *kinesis.StartStreamEncryptionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.StartStreamEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.StartStreamEncryptionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StartStreamEncryptionRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) StartStreamEncryptionRequest(_a0 *kinesis.StartStreamEncryptionInput) (*request.Request, *kinesis.StartStreamEncryptionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.StartStreamEncryptionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.StartStreamEncryptionOutput + if rf, ok := ret.Get(1).(func(*kinesis.StartStreamEncryptionInput) *kinesis.StartStreamEncryptionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.StartStreamEncryptionOutput) + } + } + + return r0, r1 +} + +// StartStreamEncryptionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) StartStreamEncryptionWithContext(_a0 context.Context, _a1 *kinesis.StartStreamEncryptionInput, _a2 ...request.Option) (*kinesis.StartStreamEncryptionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.StartStreamEncryptionOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.StartStreamEncryptionInput, ...request.Option) *kinesis.StartStreamEncryptionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.StartStreamEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.StartStreamEncryptionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StopStreamEncryption provides a mock function with given fields: _a0 +func (_m *KinesisAPI) StopStreamEncryption(_a0 *kinesis.StopStreamEncryptionInput) (*kinesis.StopStreamEncryptionOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.StopStreamEncryptionOutput + if rf, ok := ret.Get(0).(func(*kinesis.StopStreamEncryptionInput) *kinesis.StopStreamEncryptionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.StopStreamEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.StopStreamEncryptionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StopStreamEncryptionRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) StopStreamEncryptionRequest(_a0 *kinesis.StopStreamEncryptionInput) (*request.Request, *kinesis.StopStreamEncryptionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.StopStreamEncryptionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.StopStreamEncryptionOutput + if rf, ok := ret.Get(1).(func(*kinesis.StopStreamEncryptionInput) *kinesis.StopStreamEncryptionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.StopStreamEncryptionOutput) + } + } + + return r0, r1 +} + +// StopStreamEncryptionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) StopStreamEncryptionWithContext(_a0 context.Context, _a1 *kinesis.StopStreamEncryptionInput, _a2 ...request.Option) (*kinesis.StopStreamEncryptionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.StopStreamEncryptionOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.StopStreamEncryptionInput, ...request.Option) *kinesis.StopStreamEncryptionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.StopStreamEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.StopStreamEncryptionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SubscribeToShard provides a mock function with given fields: _a0 +func (_m *KinesisAPI) SubscribeToShard(_a0 *kinesis.SubscribeToShardInput) (*kinesis.SubscribeToShardOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.SubscribeToShardOutput + if rf, ok := ret.Get(0).(func(*kinesis.SubscribeToShardInput) *kinesis.SubscribeToShardOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.SubscribeToShardOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.SubscribeToShardInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SubscribeToShardRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) SubscribeToShardRequest(_a0 *kinesis.SubscribeToShardInput) (*request.Request, *kinesis.SubscribeToShardOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.SubscribeToShardInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.SubscribeToShardOutput + if rf, ok := ret.Get(1).(func(*kinesis.SubscribeToShardInput) *kinesis.SubscribeToShardOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.SubscribeToShardOutput) + } + } + + return r0, r1 +} + +// SubscribeToShardWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) SubscribeToShardWithContext(_a0 context.Context, _a1 *kinesis.SubscribeToShardInput, _a2 ...request.Option) (*kinesis.SubscribeToShardOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.SubscribeToShardOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.SubscribeToShardInput, ...request.Option) *kinesis.SubscribeToShardOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.SubscribeToShardOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.SubscribeToShardInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UpdateShardCount provides a mock function with given fields: _a0 +func (_m *KinesisAPI) UpdateShardCount(_a0 *kinesis.UpdateShardCountInput) (*kinesis.UpdateShardCountOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.UpdateShardCountOutput + if rf, ok := ret.Get(0).(func(*kinesis.UpdateShardCountInput) *kinesis.UpdateShardCountOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.UpdateShardCountOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.UpdateShardCountInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UpdateShardCountRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) UpdateShardCountRequest(_a0 *kinesis.UpdateShardCountInput) (*request.Request, *kinesis.UpdateShardCountOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.UpdateShardCountInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.UpdateShardCountOutput + if rf, ok := ret.Get(1).(func(*kinesis.UpdateShardCountInput) *kinesis.UpdateShardCountOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.UpdateShardCountOutput) + } + } + + return r0, r1 +} + +// UpdateShardCountWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) UpdateShardCountWithContext(_a0 context.Context, _a1 *kinesis.UpdateShardCountInput, _a2 ...request.Option) (*kinesis.UpdateShardCountOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.UpdateShardCountOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.UpdateShardCountInput, ...request.Option) *kinesis.UpdateShardCountOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.UpdateShardCountOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.UpdateShardCountInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UpdateStreamMode provides a mock function with given fields: _a0 +func (_m *KinesisAPI) UpdateStreamMode(_a0 *kinesis.UpdateStreamModeInput) (*kinesis.UpdateStreamModeOutput, error) { + ret := _m.Called(_a0) + + var r0 *kinesis.UpdateStreamModeOutput + if rf, ok := ret.Get(0).(func(*kinesis.UpdateStreamModeInput) *kinesis.UpdateStreamModeOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.UpdateStreamModeOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*kinesis.UpdateStreamModeInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UpdateStreamModeRequest provides a mock function with given fields: _a0 +func (_m *KinesisAPI) UpdateStreamModeRequest(_a0 *kinesis.UpdateStreamModeInput) (*request.Request, *kinesis.UpdateStreamModeOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*kinesis.UpdateStreamModeInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *kinesis.UpdateStreamModeOutput + if rf, ok := ret.Get(1).(func(*kinesis.UpdateStreamModeInput) *kinesis.UpdateStreamModeOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*kinesis.UpdateStreamModeOutput) + } + } + + return r0, r1 +} + +// UpdateStreamModeWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) UpdateStreamModeWithContext(_a0 context.Context, _a1 *kinesis.UpdateStreamModeInput, _a2 ...request.Option) (*kinesis.UpdateStreamModeOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *kinesis.UpdateStreamModeOutput + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.UpdateStreamModeInput, ...request.Option) *kinesis.UpdateStreamModeOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*kinesis.UpdateStreamModeOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *kinesis.UpdateStreamModeInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// WaitUntilStreamExists provides a mock function with given fields: _a0 +func (_m *KinesisAPI) WaitUntilStreamExists(_a0 *kinesis.DescribeStreamInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilStreamExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) WaitUntilStreamExistsWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilStreamNotExists provides a mock function with given fields: _a0 +func (_m *KinesisAPI) WaitUntilStreamNotExists(_a0 *kinesis.DescribeStreamInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*kinesis.DescribeStreamInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilStreamNotExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *KinesisAPI) WaitUntilStreamNotExistsWithContext(_a0 context.Context, _a1 *kinesis.DescribeStreamInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *kinesis.DescribeStreamInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +var _ kinesisiface.KinesisAPI = (*KinesisAPI)(nil) diff --git a/idk/idktest/mocks/s3.go b/idk/idktest/mocks/s3.go new file mode 100644 index 000000000..5111dba99 --- /dev/null +++ b/idk/idktest/mocks/s3.go @@ -0,0 +1,7824 @@ +// Code generated by mockery v1.0.0. DO NOT EDIT. + +package mocks + +import "github.com/aws/aws-sdk-go/service/s3/s3iface" + +import ( + context "context" + + request "github.com/aws/aws-sdk-go/aws/request" + mock "github.com/stretchr/testify/mock" + + s3 "github.com/aws/aws-sdk-go/service/s3" +) + +// S3API is an autogenerated mock type for the S3API type +type S3API struct { + mock.Mock +} + +// AbortMultipartUpload provides a mock function with given fields: _a0 +func (_m *S3API) AbortMultipartUpload(_a0 *s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.AbortMultipartUploadOutput + if rf, ok := ret.Get(0).(func(*s3.AbortMultipartUploadInput) *s3.AbortMultipartUploadOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.AbortMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.AbortMultipartUploadInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// AbortMultipartUploadRequest provides a mock function with given fields: _a0 +func (_m *S3API) AbortMultipartUploadRequest(_a0 *s3.AbortMultipartUploadInput) (*request.Request, *s3.AbortMultipartUploadOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.AbortMultipartUploadInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.AbortMultipartUploadOutput + if rf, ok := ret.Get(1).(func(*s3.AbortMultipartUploadInput) *s3.AbortMultipartUploadOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.AbortMultipartUploadOutput) + } + } + + return r0, r1 +} + +// AbortMultipartUploadWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) AbortMultipartUploadWithContext(_a0 context.Context, _a1 *s3.AbortMultipartUploadInput, _a2 ...request.Option) (*s3.AbortMultipartUploadOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.AbortMultipartUploadOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.AbortMultipartUploadInput, ...request.Option) *s3.AbortMultipartUploadOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.AbortMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.AbortMultipartUploadInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CompleteMultipartUpload provides a mock function with given fields: _a0 +func (_m *S3API) CompleteMultipartUpload(_a0 *s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.CompleteMultipartUploadOutput + if rf, ok := ret.Get(0).(func(*s3.CompleteMultipartUploadInput) *s3.CompleteMultipartUploadOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CompleteMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.CompleteMultipartUploadInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CompleteMultipartUploadRequest provides a mock function with given fields: _a0 +func (_m *S3API) CompleteMultipartUploadRequest(_a0 *s3.CompleteMultipartUploadInput) (*request.Request, *s3.CompleteMultipartUploadOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.CompleteMultipartUploadInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.CompleteMultipartUploadOutput + if rf, ok := ret.Get(1).(func(*s3.CompleteMultipartUploadInput) *s3.CompleteMultipartUploadOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.CompleteMultipartUploadOutput) + } + } + + return r0, r1 +} + +// CompleteMultipartUploadWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) CompleteMultipartUploadWithContext(_a0 context.Context, _a1 *s3.CompleteMultipartUploadInput, _a2 ...request.Option) (*s3.CompleteMultipartUploadOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.CompleteMultipartUploadOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.CompleteMultipartUploadInput, ...request.Option) *s3.CompleteMultipartUploadOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CompleteMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.CompleteMultipartUploadInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CopyObject provides a mock function with given fields: _a0 +func (_m *S3API) CopyObject(_a0 *s3.CopyObjectInput) (*s3.CopyObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.CopyObjectOutput + if rf, ok := ret.Get(0).(func(*s3.CopyObjectInput) *s3.CopyObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CopyObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.CopyObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CopyObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) CopyObjectRequest(_a0 *s3.CopyObjectInput) (*request.Request, *s3.CopyObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.CopyObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.CopyObjectOutput + if rf, ok := ret.Get(1).(func(*s3.CopyObjectInput) *s3.CopyObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.CopyObjectOutput) + } + } + + return r0, r1 +} + +// CopyObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) CopyObjectWithContext(_a0 context.Context, _a1 *s3.CopyObjectInput, _a2 ...request.Option) (*s3.CopyObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.CopyObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.CopyObjectInput, ...request.Option) *s3.CopyObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CopyObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.CopyObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateBucket provides a mock function with given fields: _a0 +func (_m *S3API) CreateBucket(_a0 *s3.CreateBucketInput) (*s3.CreateBucketOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.CreateBucketOutput + if rf, ok := ret.Get(0).(func(*s3.CreateBucketInput) *s3.CreateBucketOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CreateBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.CreateBucketInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateBucketRequest provides a mock function with given fields: _a0 +func (_m *S3API) CreateBucketRequest(_a0 *s3.CreateBucketInput) (*request.Request, *s3.CreateBucketOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.CreateBucketInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.CreateBucketOutput + if rf, ok := ret.Get(1).(func(*s3.CreateBucketInput) *s3.CreateBucketOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.CreateBucketOutput) + } + } + + return r0, r1 +} + +// CreateBucketWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) CreateBucketWithContext(_a0 context.Context, _a1 *s3.CreateBucketInput, _a2 ...request.Option) (*s3.CreateBucketOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.CreateBucketOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.CreateBucketInput, ...request.Option) *s3.CreateBucketOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CreateBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.CreateBucketInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateMultipartUpload provides a mock function with given fields: _a0 +func (_m *S3API) CreateMultipartUpload(_a0 *s3.CreateMultipartUploadInput) (*s3.CreateMultipartUploadOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.CreateMultipartUploadOutput + if rf, ok := ret.Get(0).(func(*s3.CreateMultipartUploadInput) *s3.CreateMultipartUploadOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CreateMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.CreateMultipartUploadInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateMultipartUploadRequest provides a mock function with given fields: _a0 +func (_m *S3API) CreateMultipartUploadRequest(_a0 *s3.CreateMultipartUploadInput) (*request.Request, *s3.CreateMultipartUploadOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.CreateMultipartUploadInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.CreateMultipartUploadOutput + if rf, ok := ret.Get(1).(func(*s3.CreateMultipartUploadInput) *s3.CreateMultipartUploadOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.CreateMultipartUploadOutput) + } + } + + return r0, r1 +} + +// CreateMultipartUploadWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) CreateMultipartUploadWithContext(_a0 context.Context, _a1 *s3.CreateMultipartUploadInput, _a2 ...request.Option) (*s3.CreateMultipartUploadOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.CreateMultipartUploadOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.CreateMultipartUploadInput, ...request.Option) *s3.CreateMultipartUploadOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.CreateMultipartUploadOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.CreateMultipartUploadInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucket provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucket(_a0 *s3.DeleteBucketInput) (*s3.DeleteBucketOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketInput) *s3.DeleteBucketOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketAnalyticsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketAnalyticsConfiguration(_a0 *s3.DeleteBucketAnalyticsConfigurationInput) (*s3.DeleteBucketAnalyticsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketAnalyticsConfigurationInput) *s3.DeleteBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketAnalyticsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketAnalyticsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketAnalyticsConfigurationRequest(_a0 *s3.DeleteBucketAnalyticsConfigurationInput) (*request.Request, *s3.DeleteBucketAnalyticsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketAnalyticsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketAnalyticsConfigurationInput) *s3.DeleteBucketAnalyticsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketAnalyticsConfigurationOutput) + } + } + + return r0, r1 +} + +// DeleteBucketAnalyticsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketAnalyticsConfigurationWithContext(_a0 context.Context, _a1 *s3.DeleteBucketAnalyticsConfigurationInput, _a2 ...request.Option) (*s3.DeleteBucketAnalyticsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketAnalyticsConfigurationInput, ...request.Option) *s3.DeleteBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketAnalyticsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketCors provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketCors(_a0 *s3.DeleteBucketCorsInput) (*s3.DeleteBucketCorsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketCorsOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketCorsInput) *s3.DeleteBucketCorsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketCorsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketCorsRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketCorsRequest(_a0 *s3.DeleteBucketCorsInput) (*request.Request, *s3.DeleteBucketCorsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketCorsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketCorsOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketCorsInput) *s3.DeleteBucketCorsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketCorsOutput) + } + } + + return r0, r1 +} + +// DeleteBucketCorsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketCorsWithContext(_a0 context.Context, _a1 *s3.DeleteBucketCorsInput, _a2 ...request.Option) (*s3.DeleteBucketCorsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketCorsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketCorsInput, ...request.Option) *s3.DeleteBucketCorsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketCorsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketEncryption provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketEncryption(_a0 *s3.DeleteBucketEncryptionInput) (*s3.DeleteBucketEncryptionOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketEncryptionInput) *s3.DeleteBucketEncryptionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketEncryptionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketEncryptionRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketEncryptionRequest(_a0 *s3.DeleteBucketEncryptionInput) (*request.Request, *s3.DeleteBucketEncryptionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketEncryptionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketEncryptionOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketEncryptionInput) *s3.DeleteBucketEncryptionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketEncryptionOutput) + } + } + + return r0, r1 +} + +// DeleteBucketEncryptionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketEncryptionWithContext(_a0 context.Context, _a1 *s3.DeleteBucketEncryptionInput, _a2 ...request.Option) (*s3.DeleteBucketEncryptionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketEncryptionInput, ...request.Option) *s3.DeleteBucketEncryptionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketEncryptionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketIntelligentTieringConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketIntelligentTieringConfiguration(_a0 *s3.DeleteBucketIntelligentTieringConfigurationInput) (*s3.DeleteBucketIntelligentTieringConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketIntelligentTieringConfigurationInput) *s3.DeleteBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketIntelligentTieringConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketIntelligentTieringConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketIntelligentTieringConfigurationRequest(_a0 *s3.DeleteBucketIntelligentTieringConfigurationInput) (*request.Request, *s3.DeleteBucketIntelligentTieringConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketIntelligentTieringConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketIntelligentTieringConfigurationInput) *s3.DeleteBucketIntelligentTieringConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketIntelligentTieringConfigurationOutput) + } + } + + return r0, r1 +} + +// DeleteBucketIntelligentTieringConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketIntelligentTieringConfigurationWithContext(_a0 context.Context, _a1 *s3.DeleteBucketIntelligentTieringConfigurationInput, _a2 ...request.Option) (*s3.DeleteBucketIntelligentTieringConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketIntelligentTieringConfigurationInput, ...request.Option) *s3.DeleteBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketIntelligentTieringConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketInventoryConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketInventoryConfiguration(_a0 *s3.DeleteBucketInventoryConfigurationInput) (*s3.DeleteBucketInventoryConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketInventoryConfigurationInput) *s3.DeleteBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketInventoryConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketInventoryConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketInventoryConfigurationRequest(_a0 *s3.DeleteBucketInventoryConfigurationInput) (*request.Request, *s3.DeleteBucketInventoryConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketInventoryConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketInventoryConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketInventoryConfigurationInput) *s3.DeleteBucketInventoryConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketInventoryConfigurationOutput) + } + } + + return r0, r1 +} + +// DeleteBucketInventoryConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketInventoryConfigurationWithContext(_a0 context.Context, _a1 *s3.DeleteBucketInventoryConfigurationInput, _a2 ...request.Option) (*s3.DeleteBucketInventoryConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketInventoryConfigurationInput, ...request.Option) *s3.DeleteBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketInventoryConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketLifecycle provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketLifecycle(_a0 *s3.DeleteBucketLifecycleInput) (*s3.DeleteBucketLifecycleOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketLifecycleInput) *s3.DeleteBucketLifecycleOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketLifecycleInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketLifecycleRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketLifecycleRequest(_a0 *s3.DeleteBucketLifecycleInput) (*request.Request, *s3.DeleteBucketLifecycleOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketLifecycleInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketLifecycleOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketLifecycleInput) *s3.DeleteBucketLifecycleOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketLifecycleOutput) + } + } + + return r0, r1 +} + +// DeleteBucketLifecycleWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketLifecycleWithContext(_a0 context.Context, _a1 *s3.DeleteBucketLifecycleInput, _a2 ...request.Option) (*s3.DeleteBucketLifecycleOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketLifecycleInput, ...request.Option) *s3.DeleteBucketLifecycleOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketLifecycleInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketMetricsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketMetricsConfiguration(_a0 *s3.DeleteBucketMetricsConfigurationInput) (*s3.DeleteBucketMetricsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketMetricsConfigurationInput) *s3.DeleteBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketMetricsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketMetricsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketMetricsConfigurationRequest(_a0 *s3.DeleteBucketMetricsConfigurationInput) (*request.Request, *s3.DeleteBucketMetricsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketMetricsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketMetricsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketMetricsConfigurationInput) *s3.DeleteBucketMetricsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketMetricsConfigurationOutput) + } + } + + return r0, r1 +} + +// DeleteBucketMetricsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketMetricsConfigurationWithContext(_a0 context.Context, _a1 *s3.DeleteBucketMetricsConfigurationInput, _a2 ...request.Option) (*s3.DeleteBucketMetricsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketMetricsConfigurationInput, ...request.Option) *s3.DeleteBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketMetricsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketOwnershipControls provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketOwnershipControls(_a0 *s3.DeleteBucketOwnershipControlsInput) (*s3.DeleteBucketOwnershipControlsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketOwnershipControlsInput) *s3.DeleteBucketOwnershipControlsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketOwnershipControlsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketOwnershipControlsRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketOwnershipControlsRequest(_a0 *s3.DeleteBucketOwnershipControlsInput) (*request.Request, *s3.DeleteBucketOwnershipControlsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketOwnershipControlsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketOwnershipControlsOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketOwnershipControlsInput) *s3.DeleteBucketOwnershipControlsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketOwnershipControlsOutput) + } + } + + return r0, r1 +} + +// DeleteBucketOwnershipControlsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketOwnershipControlsWithContext(_a0 context.Context, _a1 *s3.DeleteBucketOwnershipControlsInput, _a2 ...request.Option) (*s3.DeleteBucketOwnershipControlsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketOwnershipControlsInput, ...request.Option) *s3.DeleteBucketOwnershipControlsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketOwnershipControlsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketPolicy provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketPolicy(_a0 *s3.DeleteBucketPolicyInput) (*s3.DeleteBucketPolicyOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketPolicyOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketPolicyInput) *s3.DeleteBucketPolicyOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketPolicyInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketPolicyRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketPolicyRequest(_a0 *s3.DeleteBucketPolicyInput) (*request.Request, *s3.DeleteBucketPolicyOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketPolicyInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketPolicyOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketPolicyInput) *s3.DeleteBucketPolicyOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketPolicyOutput) + } + } + + return r0, r1 +} + +// DeleteBucketPolicyWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketPolicyWithContext(_a0 context.Context, _a1 *s3.DeleteBucketPolicyInput, _a2 ...request.Option) (*s3.DeleteBucketPolicyOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketPolicyOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketPolicyInput, ...request.Option) *s3.DeleteBucketPolicyOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketPolicyInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketReplication provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketReplication(_a0 *s3.DeleteBucketReplicationInput) (*s3.DeleteBucketReplicationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketReplicationOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketReplicationInput) *s3.DeleteBucketReplicationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketReplicationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketReplicationRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketReplicationRequest(_a0 *s3.DeleteBucketReplicationInput) (*request.Request, *s3.DeleteBucketReplicationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketReplicationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketReplicationOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketReplicationInput) *s3.DeleteBucketReplicationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketReplicationOutput) + } + } + + return r0, r1 +} + +// DeleteBucketReplicationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketReplicationWithContext(_a0 context.Context, _a1 *s3.DeleteBucketReplicationInput, _a2 ...request.Option) (*s3.DeleteBucketReplicationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketReplicationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketReplicationInput, ...request.Option) *s3.DeleteBucketReplicationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketReplicationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketRequest(_a0 *s3.DeleteBucketInput) (*request.Request, *s3.DeleteBucketOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketInput) *s3.DeleteBucketOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketOutput) + } + } + + return r0, r1 +} + +// DeleteBucketTagging provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketTagging(_a0 *s3.DeleteBucketTaggingInput) (*s3.DeleteBucketTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketTaggingInput) *s3.DeleteBucketTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketTaggingRequest(_a0 *s3.DeleteBucketTaggingInput) (*request.Request, *s3.DeleteBucketTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketTaggingInput) *s3.DeleteBucketTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketTaggingOutput) + } + } + + return r0, r1 +} + +// DeleteBucketTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketTaggingWithContext(_a0 context.Context, _a1 *s3.DeleteBucketTaggingInput, _a2 ...request.Option) (*s3.DeleteBucketTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketTaggingInput, ...request.Option) *s3.DeleteBucketTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketWebsite provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketWebsite(_a0 *s3.DeleteBucketWebsiteInput) (*s3.DeleteBucketWebsiteOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketWebsiteInput) *s3.DeleteBucketWebsiteOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketWebsiteInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketWebsiteRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteBucketWebsiteRequest(_a0 *s3.DeleteBucketWebsiteInput) (*request.Request, *s3.DeleteBucketWebsiteOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteBucketWebsiteInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteBucketWebsiteOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteBucketWebsiteInput) *s3.DeleteBucketWebsiteOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteBucketWebsiteOutput) + } + } + + return r0, r1 +} + +// DeleteBucketWebsiteWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketWebsiteWithContext(_a0 context.Context, _a1 *s3.DeleteBucketWebsiteInput, _a2 ...request.Option) (*s3.DeleteBucketWebsiteOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketWebsiteInput, ...request.Option) *s3.DeleteBucketWebsiteOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketWebsiteInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteBucketWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteBucketWithContext(_a0 context.Context, _a1 *s3.DeleteBucketInput, _a2 ...request.Option) (*s3.DeleteBucketOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteBucketOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteBucketInput, ...request.Option) *s3.DeleteBucketOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteBucketInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObject provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObject(_a0 *s3.DeleteObjectInput) (*s3.DeleteObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteObjectOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectInput) *s3.DeleteObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObjectRequest(_a0 *s3.DeleteObjectInput) (*request.Request, *s3.DeleteObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteObjectOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectInput) *s3.DeleteObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteObjectOutput) + } + } + + return r0, r1 +} + +// DeleteObjectTagging provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObjectTagging(_a0 *s3.DeleteObjectTaggingInput) (*s3.DeleteObjectTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteObjectTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectTaggingInput) *s3.DeleteObjectTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObjectTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObjectTaggingRequest(_a0 *s3.DeleteObjectTaggingInput) (*request.Request, *s3.DeleteObjectTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteObjectTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectTaggingInput) *s3.DeleteObjectTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteObjectTaggingOutput) + } + } + + return r0, r1 +} + +// DeleteObjectTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteObjectTaggingWithContext(_a0 context.Context, _a1 *s3.DeleteObjectTaggingInput, _a2 ...request.Option) (*s3.DeleteObjectTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteObjectTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteObjectTaggingInput, ...request.Option) *s3.DeleteObjectTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteObjectTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteObjectWithContext(_a0 context.Context, _a1 *s3.DeleteObjectInput, _a2 ...request.Option) (*s3.DeleteObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteObjectInput, ...request.Option) *s3.DeleteObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObjects provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObjects(_a0 *s3.DeleteObjectsInput) (*s3.DeleteObjectsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeleteObjectsOutput + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectsInput) *s3.DeleteObjectsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeleteObjectsRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeleteObjectsRequest(_a0 *s3.DeleteObjectsInput) (*request.Request, *s3.DeleteObjectsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeleteObjectsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeleteObjectsOutput + if rf, ok := ret.Get(1).(func(*s3.DeleteObjectsInput) *s3.DeleteObjectsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeleteObjectsOutput) + } + } + + return r0, r1 +} + +// DeleteObjectsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeleteObjectsWithContext(_a0 context.Context, _a1 *s3.DeleteObjectsInput, _a2 ...request.Option) (*s3.DeleteObjectsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeleteObjectsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeleteObjectsInput, ...request.Option) *s3.DeleteObjectsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeleteObjectsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeleteObjectsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeletePublicAccessBlock provides a mock function with given fields: _a0 +func (_m *S3API) DeletePublicAccessBlock(_a0 *s3.DeletePublicAccessBlockInput) (*s3.DeletePublicAccessBlockOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.DeletePublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(*s3.DeletePublicAccessBlockInput) *s3.DeletePublicAccessBlockOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeletePublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.DeletePublicAccessBlockInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// DeletePublicAccessBlockRequest provides a mock function with given fields: _a0 +func (_m *S3API) DeletePublicAccessBlockRequest(_a0 *s3.DeletePublicAccessBlockInput) (*request.Request, *s3.DeletePublicAccessBlockOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.DeletePublicAccessBlockInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.DeletePublicAccessBlockOutput + if rf, ok := ret.Get(1).(func(*s3.DeletePublicAccessBlockInput) *s3.DeletePublicAccessBlockOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.DeletePublicAccessBlockOutput) + } + } + + return r0, r1 +} + +// DeletePublicAccessBlockWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) DeletePublicAccessBlockWithContext(_a0 context.Context, _a1 *s3.DeletePublicAccessBlockInput, _a2 ...request.Option) (*s3.DeletePublicAccessBlockOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.DeletePublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.DeletePublicAccessBlockInput, ...request.Option) *s3.DeletePublicAccessBlockOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.DeletePublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.DeletePublicAccessBlockInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAccelerateConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAccelerateConfiguration(_a0 *s3.GetBucketAccelerateConfigurationInput) (*s3.GetBucketAccelerateConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketAccelerateConfigurationInput) *s3.GetBucketAccelerateConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAccelerateConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketAccelerateConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAccelerateConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAccelerateConfigurationRequest(_a0 *s3.GetBucketAccelerateConfigurationInput) (*request.Request, *s3.GetBucketAccelerateConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketAccelerateConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketAccelerateConfigurationInput) *s3.GetBucketAccelerateConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketAccelerateConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketAccelerateConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketAccelerateConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketAccelerateConfigurationInput, _a2 ...request.Option) (*s3.GetBucketAccelerateConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketAccelerateConfigurationInput, ...request.Option) *s3.GetBucketAccelerateConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAccelerateConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketAccelerateConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAcl provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAcl(_a0 *s3.GetBucketAclInput) (*s3.GetBucketAclOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketAclOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketAclInput) *s3.GetBucketAclOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketAclInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAclRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAclRequest(_a0 *s3.GetBucketAclInput) (*request.Request, *s3.GetBucketAclOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketAclInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketAclOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketAclInput) *s3.GetBucketAclOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketAclOutput) + } + } + + return r0, r1 +} + +// GetBucketAclWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketAclWithContext(_a0 context.Context, _a1 *s3.GetBucketAclInput, _a2 ...request.Option) (*s3.GetBucketAclOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketAclOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketAclInput, ...request.Option) *s3.GetBucketAclOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketAclInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAnalyticsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAnalyticsConfiguration(_a0 *s3.GetBucketAnalyticsConfigurationInput) (*s3.GetBucketAnalyticsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketAnalyticsConfigurationInput) *s3.GetBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketAnalyticsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketAnalyticsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketAnalyticsConfigurationRequest(_a0 *s3.GetBucketAnalyticsConfigurationInput) (*request.Request, *s3.GetBucketAnalyticsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketAnalyticsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketAnalyticsConfigurationInput) *s3.GetBucketAnalyticsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketAnalyticsConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketAnalyticsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketAnalyticsConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketAnalyticsConfigurationInput, _a2 ...request.Option) (*s3.GetBucketAnalyticsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketAnalyticsConfigurationInput, ...request.Option) *s3.GetBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketAnalyticsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketCors provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketCors(_a0 *s3.GetBucketCorsInput) (*s3.GetBucketCorsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketCorsOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketCorsInput) *s3.GetBucketCorsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketCorsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketCorsRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketCorsRequest(_a0 *s3.GetBucketCorsInput) (*request.Request, *s3.GetBucketCorsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketCorsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketCorsOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketCorsInput) *s3.GetBucketCorsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketCorsOutput) + } + } + + return r0, r1 +} + +// GetBucketCorsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketCorsWithContext(_a0 context.Context, _a1 *s3.GetBucketCorsInput, _a2 ...request.Option) (*s3.GetBucketCorsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketCorsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketCorsInput, ...request.Option) *s3.GetBucketCorsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketCorsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketEncryption provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketEncryption(_a0 *s3.GetBucketEncryptionInput) (*s3.GetBucketEncryptionOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketEncryptionInput) *s3.GetBucketEncryptionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketEncryptionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketEncryptionRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketEncryptionRequest(_a0 *s3.GetBucketEncryptionInput) (*request.Request, *s3.GetBucketEncryptionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketEncryptionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketEncryptionOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketEncryptionInput) *s3.GetBucketEncryptionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketEncryptionOutput) + } + } + + return r0, r1 +} + +// GetBucketEncryptionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketEncryptionWithContext(_a0 context.Context, _a1 *s3.GetBucketEncryptionInput, _a2 ...request.Option) (*s3.GetBucketEncryptionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketEncryptionInput, ...request.Option) *s3.GetBucketEncryptionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketEncryptionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketIntelligentTieringConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketIntelligentTieringConfiguration(_a0 *s3.GetBucketIntelligentTieringConfigurationInput) (*s3.GetBucketIntelligentTieringConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketIntelligentTieringConfigurationInput) *s3.GetBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketIntelligentTieringConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketIntelligentTieringConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketIntelligentTieringConfigurationRequest(_a0 *s3.GetBucketIntelligentTieringConfigurationInput) (*request.Request, *s3.GetBucketIntelligentTieringConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketIntelligentTieringConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketIntelligentTieringConfigurationInput) *s3.GetBucketIntelligentTieringConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketIntelligentTieringConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketIntelligentTieringConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketIntelligentTieringConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketIntelligentTieringConfigurationInput, _a2 ...request.Option) (*s3.GetBucketIntelligentTieringConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketIntelligentTieringConfigurationInput, ...request.Option) *s3.GetBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketIntelligentTieringConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketInventoryConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketInventoryConfiguration(_a0 *s3.GetBucketInventoryConfigurationInput) (*s3.GetBucketInventoryConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketInventoryConfigurationInput) *s3.GetBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketInventoryConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketInventoryConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketInventoryConfigurationRequest(_a0 *s3.GetBucketInventoryConfigurationInput) (*request.Request, *s3.GetBucketInventoryConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketInventoryConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketInventoryConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketInventoryConfigurationInput) *s3.GetBucketInventoryConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketInventoryConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketInventoryConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketInventoryConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketInventoryConfigurationInput, _a2 ...request.Option) (*s3.GetBucketInventoryConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketInventoryConfigurationInput, ...request.Option) *s3.GetBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketInventoryConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLifecycle provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLifecycle(_a0 *s3.GetBucketLifecycleInput) (*s3.GetBucketLifecycleOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketLifecycleInput) *s3.GetBucketLifecycleOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketLifecycleInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLifecycleConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLifecycleConfiguration(_a0 *s3.GetBucketLifecycleConfigurationInput) (*s3.GetBucketLifecycleConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketLifecycleConfigurationInput) *s3.GetBucketLifecycleConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLifecycleConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketLifecycleConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLifecycleConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLifecycleConfigurationRequest(_a0 *s3.GetBucketLifecycleConfigurationInput) (*request.Request, *s3.GetBucketLifecycleConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketLifecycleConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketLifecycleConfigurationInput) *s3.GetBucketLifecycleConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketLifecycleConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketLifecycleConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketLifecycleConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketLifecycleConfigurationInput, _a2 ...request.Option) (*s3.GetBucketLifecycleConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketLifecycleConfigurationInput, ...request.Option) *s3.GetBucketLifecycleConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLifecycleConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketLifecycleConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLifecycleRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLifecycleRequest(_a0 *s3.GetBucketLifecycleInput) (*request.Request, *s3.GetBucketLifecycleOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketLifecycleInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketLifecycleOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketLifecycleInput) *s3.GetBucketLifecycleOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketLifecycleOutput) + } + } + + return r0, r1 +} + +// GetBucketLifecycleWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketLifecycleWithContext(_a0 context.Context, _a1 *s3.GetBucketLifecycleInput, _a2 ...request.Option) (*s3.GetBucketLifecycleOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketLifecycleInput, ...request.Option) *s3.GetBucketLifecycleOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketLifecycleInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLocation provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLocation(_a0 *s3.GetBucketLocationInput) (*s3.GetBucketLocationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketLocationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketLocationInput) *s3.GetBucketLocationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLocationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketLocationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLocationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLocationRequest(_a0 *s3.GetBucketLocationInput) (*request.Request, *s3.GetBucketLocationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketLocationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketLocationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketLocationInput) *s3.GetBucketLocationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketLocationOutput) + } + } + + return r0, r1 +} + +// GetBucketLocationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketLocationWithContext(_a0 context.Context, _a1 *s3.GetBucketLocationInput, _a2 ...request.Option) (*s3.GetBucketLocationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketLocationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketLocationInput, ...request.Option) *s3.GetBucketLocationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLocationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketLocationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLogging provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLogging(_a0 *s3.GetBucketLoggingInput) (*s3.GetBucketLoggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketLoggingOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketLoggingInput) *s3.GetBucketLoggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLoggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketLoggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketLoggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketLoggingRequest(_a0 *s3.GetBucketLoggingInput) (*request.Request, *s3.GetBucketLoggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketLoggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketLoggingOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketLoggingInput) *s3.GetBucketLoggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketLoggingOutput) + } + } + + return r0, r1 +} + +// GetBucketLoggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketLoggingWithContext(_a0 context.Context, _a1 *s3.GetBucketLoggingInput, _a2 ...request.Option) (*s3.GetBucketLoggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketLoggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketLoggingInput, ...request.Option) *s3.GetBucketLoggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketLoggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketLoggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketMetricsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketMetricsConfiguration(_a0 *s3.GetBucketMetricsConfigurationInput) (*s3.GetBucketMetricsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketMetricsConfigurationInput) *s3.GetBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketMetricsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketMetricsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketMetricsConfigurationRequest(_a0 *s3.GetBucketMetricsConfigurationInput) (*request.Request, *s3.GetBucketMetricsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketMetricsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketMetricsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketMetricsConfigurationInput) *s3.GetBucketMetricsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketMetricsConfigurationOutput) + } + } + + return r0, r1 +} + +// GetBucketMetricsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketMetricsConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketMetricsConfigurationInput, _a2 ...request.Option) (*s3.GetBucketMetricsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketMetricsConfigurationInput, ...request.Option) *s3.GetBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketMetricsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketNotification provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketNotification(_a0 *s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfigurationDeprecated, error) { + ret := _m.Called(_a0) + + var r0 *s3.NotificationConfigurationDeprecated + if rf, ok := ret.Get(0).(func(*s3.GetBucketNotificationConfigurationRequest) *s3.NotificationConfigurationDeprecated); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.NotificationConfigurationDeprecated) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketNotificationConfigurationRequest) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketNotificationConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketNotificationConfiguration(_a0 *s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfiguration, error) { + ret := _m.Called(_a0) + + var r0 *s3.NotificationConfiguration + if rf, ok := ret.Get(0).(func(*s3.GetBucketNotificationConfigurationRequest) *s3.NotificationConfiguration); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.NotificationConfiguration) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketNotificationConfigurationRequest) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketNotificationConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketNotificationConfigurationRequest(_a0 *s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfiguration) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketNotificationConfigurationRequest) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.NotificationConfiguration + if rf, ok := ret.Get(1).(func(*s3.GetBucketNotificationConfigurationRequest) *s3.NotificationConfiguration); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.NotificationConfiguration) + } + } + + return r0, r1 +} + +// GetBucketNotificationConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketNotificationConfigurationWithContext(_a0 context.Context, _a1 *s3.GetBucketNotificationConfigurationRequest, _a2 ...request.Option) (*s3.NotificationConfiguration, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.NotificationConfiguration + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) *s3.NotificationConfiguration); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.NotificationConfiguration) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketNotificationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketNotificationRequest(_a0 *s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfigurationDeprecated) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketNotificationConfigurationRequest) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.NotificationConfigurationDeprecated + if rf, ok := ret.Get(1).(func(*s3.GetBucketNotificationConfigurationRequest) *s3.NotificationConfigurationDeprecated); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.NotificationConfigurationDeprecated) + } + } + + return r0, r1 +} + +// GetBucketNotificationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketNotificationWithContext(_a0 context.Context, _a1 *s3.GetBucketNotificationConfigurationRequest, _a2 ...request.Option) (*s3.NotificationConfigurationDeprecated, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.NotificationConfigurationDeprecated + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) *s3.NotificationConfigurationDeprecated); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.NotificationConfigurationDeprecated) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketOwnershipControls provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketOwnershipControls(_a0 *s3.GetBucketOwnershipControlsInput) (*s3.GetBucketOwnershipControlsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketOwnershipControlsInput) *s3.GetBucketOwnershipControlsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketOwnershipControlsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketOwnershipControlsRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketOwnershipControlsRequest(_a0 *s3.GetBucketOwnershipControlsInput) (*request.Request, *s3.GetBucketOwnershipControlsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketOwnershipControlsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketOwnershipControlsOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketOwnershipControlsInput) *s3.GetBucketOwnershipControlsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketOwnershipControlsOutput) + } + } + + return r0, r1 +} + +// GetBucketOwnershipControlsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketOwnershipControlsWithContext(_a0 context.Context, _a1 *s3.GetBucketOwnershipControlsInput, _a2 ...request.Option) (*s3.GetBucketOwnershipControlsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketOwnershipControlsInput, ...request.Option) *s3.GetBucketOwnershipControlsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketOwnershipControlsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketPolicy provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketPolicy(_a0 *s3.GetBucketPolicyInput) (*s3.GetBucketPolicyOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketPolicyOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketPolicyInput) *s3.GetBucketPolicyOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketPolicyInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketPolicyRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketPolicyRequest(_a0 *s3.GetBucketPolicyInput) (*request.Request, *s3.GetBucketPolicyOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketPolicyInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketPolicyOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketPolicyInput) *s3.GetBucketPolicyOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketPolicyOutput) + } + } + + return r0, r1 +} + +// GetBucketPolicyStatus provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketPolicyStatus(_a0 *s3.GetBucketPolicyStatusInput) (*s3.GetBucketPolicyStatusOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketPolicyStatusOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketPolicyStatusInput) *s3.GetBucketPolicyStatusOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketPolicyStatusOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketPolicyStatusInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketPolicyStatusRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketPolicyStatusRequest(_a0 *s3.GetBucketPolicyStatusInput) (*request.Request, *s3.GetBucketPolicyStatusOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketPolicyStatusInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketPolicyStatusOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketPolicyStatusInput) *s3.GetBucketPolicyStatusOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketPolicyStatusOutput) + } + } + + return r0, r1 +} + +// GetBucketPolicyStatusWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketPolicyStatusWithContext(_a0 context.Context, _a1 *s3.GetBucketPolicyStatusInput, _a2 ...request.Option) (*s3.GetBucketPolicyStatusOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketPolicyStatusOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketPolicyStatusInput, ...request.Option) *s3.GetBucketPolicyStatusOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketPolicyStatusOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketPolicyStatusInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketPolicyWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketPolicyWithContext(_a0 context.Context, _a1 *s3.GetBucketPolicyInput, _a2 ...request.Option) (*s3.GetBucketPolicyOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketPolicyOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketPolicyInput, ...request.Option) *s3.GetBucketPolicyOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketPolicyInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketReplication provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketReplication(_a0 *s3.GetBucketReplicationInput) (*s3.GetBucketReplicationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketReplicationOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketReplicationInput) *s3.GetBucketReplicationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketReplicationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketReplicationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketReplicationRequest(_a0 *s3.GetBucketReplicationInput) (*request.Request, *s3.GetBucketReplicationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketReplicationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketReplicationOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketReplicationInput) *s3.GetBucketReplicationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketReplicationOutput) + } + } + + return r0, r1 +} + +// GetBucketReplicationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketReplicationWithContext(_a0 context.Context, _a1 *s3.GetBucketReplicationInput, _a2 ...request.Option) (*s3.GetBucketReplicationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketReplicationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketReplicationInput, ...request.Option) *s3.GetBucketReplicationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketReplicationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketRequestPayment provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketRequestPayment(_a0 *s3.GetBucketRequestPaymentInput) (*s3.GetBucketRequestPaymentOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketRequestPaymentOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketRequestPaymentInput) *s3.GetBucketRequestPaymentOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketRequestPaymentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketRequestPaymentInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketRequestPaymentRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketRequestPaymentRequest(_a0 *s3.GetBucketRequestPaymentInput) (*request.Request, *s3.GetBucketRequestPaymentOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketRequestPaymentInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketRequestPaymentOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketRequestPaymentInput) *s3.GetBucketRequestPaymentOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketRequestPaymentOutput) + } + } + + return r0, r1 +} + +// GetBucketRequestPaymentWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketRequestPaymentWithContext(_a0 context.Context, _a1 *s3.GetBucketRequestPaymentInput, _a2 ...request.Option) (*s3.GetBucketRequestPaymentOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketRequestPaymentOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketRequestPaymentInput, ...request.Option) *s3.GetBucketRequestPaymentOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketRequestPaymentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketRequestPaymentInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketTagging provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketTagging(_a0 *s3.GetBucketTaggingInput) (*s3.GetBucketTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketTaggingInput) *s3.GetBucketTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketTaggingRequest(_a0 *s3.GetBucketTaggingInput) (*request.Request, *s3.GetBucketTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketTaggingInput) *s3.GetBucketTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketTaggingOutput) + } + } + + return r0, r1 +} + +// GetBucketTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketTaggingWithContext(_a0 context.Context, _a1 *s3.GetBucketTaggingInput, _a2 ...request.Option) (*s3.GetBucketTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketTaggingInput, ...request.Option) *s3.GetBucketTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketVersioning provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketVersioning(_a0 *s3.GetBucketVersioningInput) (*s3.GetBucketVersioningOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketVersioningOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketVersioningInput) *s3.GetBucketVersioningOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketVersioningOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketVersioningInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketVersioningRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketVersioningRequest(_a0 *s3.GetBucketVersioningInput) (*request.Request, *s3.GetBucketVersioningOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketVersioningInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketVersioningOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketVersioningInput) *s3.GetBucketVersioningOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketVersioningOutput) + } + } + + return r0, r1 +} + +// GetBucketVersioningWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketVersioningWithContext(_a0 context.Context, _a1 *s3.GetBucketVersioningInput, _a2 ...request.Option) (*s3.GetBucketVersioningOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketVersioningOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketVersioningInput, ...request.Option) *s3.GetBucketVersioningOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketVersioningOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketVersioningInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketWebsite provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketWebsite(_a0 *s3.GetBucketWebsiteInput) (*s3.GetBucketWebsiteOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(*s3.GetBucketWebsiteInput) *s3.GetBucketWebsiteOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetBucketWebsiteInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetBucketWebsiteRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetBucketWebsiteRequest(_a0 *s3.GetBucketWebsiteInput) (*request.Request, *s3.GetBucketWebsiteOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetBucketWebsiteInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetBucketWebsiteOutput + if rf, ok := ret.Get(1).(func(*s3.GetBucketWebsiteInput) *s3.GetBucketWebsiteOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetBucketWebsiteOutput) + } + } + + return r0, r1 +} + +// GetBucketWebsiteWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetBucketWebsiteWithContext(_a0 context.Context, _a1 *s3.GetBucketWebsiteInput, _a2 ...request.Option) (*s3.GetBucketWebsiteOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetBucketWebsiteInput, ...request.Option) *s3.GetBucketWebsiteOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetBucketWebsiteInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObject provides a mock function with given fields: _a0 +func (_m *S3API) GetObject(_a0 *s3.GetObjectInput) (*s3.GetObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectInput) *s3.GetObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectAcl provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectAcl(_a0 *s3.GetObjectAclInput) (*s3.GetObjectAclOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectAclOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectAclInput) *s3.GetObjectAclOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectAclInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectAclRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectAclRequest(_a0 *s3.GetObjectAclInput) (*request.Request, *s3.GetObjectAclOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectAclInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectAclOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectAclInput) *s3.GetObjectAclOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectAclOutput) + } + } + + return r0, r1 +} + +// GetObjectAclWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectAclWithContext(_a0 context.Context, _a1 *s3.GetObjectAclInput, _a2 ...request.Option) (*s3.GetObjectAclOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectAclOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectAclInput, ...request.Option) *s3.GetObjectAclOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectAclInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectLegalHold provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectLegalHold(_a0 *s3.GetObjectLegalHoldInput) (*s3.GetObjectLegalHoldOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectLegalHoldOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectLegalHoldInput) *s3.GetObjectLegalHoldOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectLegalHoldOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectLegalHoldInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectLegalHoldRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectLegalHoldRequest(_a0 *s3.GetObjectLegalHoldInput) (*request.Request, *s3.GetObjectLegalHoldOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectLegalHoldInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectLegalHoldOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectLegalHoldInput) *s3.GetObjectLegalHoldOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectLegalHoldOutput) + } + } + + return r0, r1 +} + +// GetObjectLegalHoldWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectLegalHoldWithContext(_a0 context.Context, _a1 *s3.GetObjectLegalHoldInput, _a2 ...request.Option) (*s3.GetObjectLegalHoldOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectLegalHoldOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectLegalHoldInput, ...request.Option) *s3.GetObjectLegalHoldOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectLegalHoldOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectLegalHoldInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectLockConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectLockConfiguration(_a0 *s3.GetObjectLockConfigurationInput) (*s3.GetObjectLockConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectLockConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectLockConfigurationInput) *s3.GetObjectLockConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectLockConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectLockConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectLockConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectLockConfigurationRequest(_a0 *s3.GetObjectLockConfigurationInput) (*request.Request, *s3.GetObjectLockConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectLockConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectLockConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectLockConfigurationInput) *s3.GetObjectLockConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectLockConfigurationOutput) + } + } + + return r0, r1 +} + +// GetObjectLockConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectLockConfigurationWithContext(_a0 context.Context, _a1 *s3.GetObjectLockConfigurationInput, _a2 ...request.Option) (*s3.GetObjectLockConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectLockConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectLockConfigurationInput, ...request.Option) *s3.GetObjectLockConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectLockConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectLockConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectRequest(_a0 *s3.GetObjectInput) (*request.Request, *s3.GetObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectInput) *s3.GetObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectOutput) + } + } + + return r0, r1 +} + +// GetObjectRetention provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectRetention(_a0 *s3.GetObjectRetentionInput) (*s3.GetObjectRetentionOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectRetentionOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectRetentionInput) *s3.GetObjectRetentionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectRetentionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectRetentionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectRetentionRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectRetentionRequest(_a0 *s3.GetObjectRetentionInput) (*request.Request, *s3.GetObjectRetentionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectRetentionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectRetentionOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectRetentionInput) *s3.GetObjectRetentionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectRetentionOutput) + } + } + + return r0, r1 +} + +// GetObjectRetentionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectRetentionWithContext(_a0 context.Context, _a1 *s3.GetObjectRetentionInput, _a2 ...request.Option) (*s3.GetObjectRetentionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectRetentionOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectRetentionInput, ...request.Option) *s3.GetObjectRetentionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectRetentionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectRetentionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectTagging provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectTagging(_a0 *s3.GetObjectTaggingInput) (*s3.GetObjectTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectTaggingInput) *s3.GetObjectTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectTaggingRequest(_a0 *s3.GetObjectTaggingInput) (*request.Request, *s3.GetObjectTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectTaggingInput) *s3.GetObjectTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectTaggingOutput) + } + } + + return r0, r1 +} + +// GetObjectTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectTaggingWithContext(_a0 context.Context, _a1 *s3.GetObjectTaggingInput, _a2 ...request.Option) (*s3.GetObjectTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectTaggingInput, ...request.Option) *s3.GetObjectTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectTorrent provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectTorrent(_a0 *s3.GetObjectTorrentInput) (*s3.GetObjectTorrentOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetObjectTorrentOutput + if rf, ok := ret.Get(0).(func(*s3.GetObjectTorrentInput) *s3.GetObjectTorrentOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectTorrentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetObjectTorrentInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectTorrentRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetObjectTorrentRequest(_a0 *s3.GetObjectTorrentInput) (*request.Request, *s3.GetObjectTorrentOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetObjectTorrentInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetObjectTorrentOutput + if rf, ok := ret.Get(1).(func(*s3.GetObjectTorrentInput) *s3.GetObjectTorrentOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetObjectTorrentOutput) + } + } + + return r0, r1 +} + +// GetObjectTorrentWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectTorrentWithContext(_a0 context.Context, _a1 *s3.GetObjectTorrentInput, _a2 ...request.Option) (*s3.GetObjectTorrentOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectTorrentOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectTorrentInput, ...request.Option) *s3.GetObjectTorrentOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectTorrentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectTorrentInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetObjectWithContext(_a0 context.Context, _a1 *s3.GetObjectInput, _a2 ...request.Option) (*s3.GetObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetObjectInput, ...request.Option) *s3.GetObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetPublicAccessBlock provides a mock function with given fields: _a0 +func (_m *S3API) GetPublicAccessBlock(_a0 *s3.GetPublicAccessBlockInput) (*s3.GetPublicAccessBlockOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.GetPublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(*s3.GetPublicAccessBlockInput) *s3.GetPublicAccessBlockOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetPublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.GetPublicAccessBlockInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetPublicAccessBlockRequest provides a mock function with given fields: _a0 +func (_m *S3API) GetPublicAccessBlockRequest(_a0 *s3.GetPublicAccessBlockInput) (*request.Request, *s3.GetPublicAccessBlockOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.GetPublicAccessBlockInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.GetPublicAccessBlockOutput + if rf, ok := ret.Get(1).(func(*s3.GetPublicAccessBlockInput) *s3.GetPublicAccessBlockOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.GetPublicAccessBlockOutput) + } + } + + return r0, r1 +} + +// GetPublicAccessBlockWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) GetPublicAccessBlockWithContext(_a0 context.Context, _a1 *s3.GetPublicAccessBlockInput, _a2 ...request.Option) (*s3.GetPublicAccessBlockOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.GetPublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.GetPublicAccessBlockInput, ...request.Option) *s3.GetPublicAccessBlockOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.GetPublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.GetPublicAccessBlockInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HeadBucket provides a mock function with given fields: _a0 +func (_m *S3API) HeadBucket(_a0 *s3.HeadBucketInput) (*s3.HeadBucketOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.HeadBucketOutput + if rf, ok := ret.Get(0).(func(*s3.HeadBucketInput) *s3.HeadBucketOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.HeadBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.HeadBucketInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HeadBucketRequest provides a mock function with given fields: _a0 +func (_m *S3API) HeadBucketRequest(_a0 *s3.HeadBucketInput) (*request.Request, *s3.HeadBucketOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.HeadBucketInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.HeadBucketOutput + if rf, ok := ret.Get(1).(func(*s3.HeadBucketInput) *s3.HeadBucketOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.HeadBucketOutput) + } + } + + return r0, r1 +} + +// HeadBucketWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) HeadBucketWithContext(_a0 context.Context, _a1 *s3.HeadBucketInput, _a2 ...request.Option) (*s3.HeadBucketOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.HeadBucketOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadBucketInput, ...request.Option) *s3.HeadBucketOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.HeadBucketOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.HeadBucketInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HeadObject provides a mock function with given fields: _a0 +func (_m *S3API) HeadObject(_a0 *s3.HeadObjectInput) (*s3.HeadObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.HeadObjectOutput + if rf, ok := ret.Get(0).(func(*s3.HeadObjectInput) *s3.HeadObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.HeadObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.HeadObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HeadObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) HeadObjectRequest(_a0 *s3.HeadObjectInput) (*request.Request, *s3.HeadObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.HeadObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.HeadObjectOutput + if rf, ok := ret.Get(1).(func(*s3.HeadObjectInput) *s3.HeadObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.HeadObjectOutput) + } + } + + return r0, r1 +} + +// HeadObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) HeadObjectWithContext(_a0 context.Context, _a1 *s3.HeadObjectInput, _a2 ...request.Option) (*s3.HeadObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.HeadObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadObjectInput, ...request.Option) *s3.HeadObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.HeadObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.HeadObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketAnalyticsConfigurations provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketAnalyticsConfigurations(_a0 *s3.ListBucketAnalyticsConfigurationsInput) (*s3.ListBucketAnalyticsConfigurationsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListBucketAnalyticsConfigurationsOutput + if rf, ok := ret.Get(0).(func(*s3.ListBucketAnalyticsConfigurationsInput) *s3.ListBucketAnalyticsConfigurationsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketAnalyticsConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListBucketAnalyticsConfigurationsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketAnalyticsConfigurationsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketAnalyticsConfigurationsRequest(_a0 *s3.ListBucketAnalyticsConfigurationsInput) (*request.Request, *s3.ListBucketAnalyticsConfigurationsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListBucketAnalyticsConfigurationsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListBucketAnalyticsConfigurationsOutput + if rf, ok := ret.Get(1).(func(*s3.ListBucketAnalyticsConfigurationsInput) *s3.ListBucketAnalyticsConfigurationsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListBucketAnalyticsConfigurationsOutput) + } + } + + return r0, r1 +} + +// ListBucketAnalyticsConfigurationsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListBucketAnalyticsConfigurationsWithContext(_a0 context.Context, _a1 *s3.ListBucketAnalyticsConfigurationsInput, _a2 ...request.Option) (*s3.ListBucketAnalyticsConfigurationsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListBucketAnalyticsConfigurationsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListBucketAnalyticsConfigurationsInput, ...request.Option) *s3.ListBucketAnalyticsConfigurationsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketAnalyticsConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListBucketAnalyticsConfigurationsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketIntelligentTieringConfigurations provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketIntelligentTieringConfigurations(_a0 *s3.ListBucketIntelligentTieringConfigurationsInput) (*s3.ListBucketIntelligentTieringConfigurationsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListBucketIntelligentTieringConfigurationsOutput + if rf, ok := ret.Get(0).(func(*s3.ListBucketIntelligentTieringConfigurationsInput) *s3.ListBucketIntelligentTieringConfigurationsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketIntelligentTieringConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListBucketIntelligentTieringConfigurationsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketIntelligentTieringConfigurationsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketIntelligentTieringConfigurationsRequest(_a0 *s3.ListBucketIntelligentTieringConfigurationsInput) (*request.Request, *s3.ListBucketIntelligentTieringConfigurationsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListBucketIntelligentTieringConfigurationsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListBucketIntelligentTieringConfigurationsOutput + if rf, ok := ret.Get(1).(func(*s3.ListBucketIntelligentTieringConfigurationsInput) *s3.ListBucketIntelligentTieringConfigurationsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListBucketIntelligentTieringConfigurationsOutput) + } + } + + return r0, r1 +} + +// ListBucketIntelligentTieringConfigurationsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListBucketIntelligentTieringConfigurationsWithContext(_a0 context.Context, _a1 *s3.ListBucketIntelligentTieringConfigurationsInput, _a2 ...request.Option) (*s3.ListBucketIntelligentTieringConfigurationsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListBucketIntelligentTieringConfigurationsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListBucketIntelligentTieringConfigurationsInput, ...request.Option) *s3.ListBucketIntelligentTieringConfigurationsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketIntelligentTieringConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListBucketIntelligentTieringConfigurationsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketInventoryConfigurations provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketInventoryConfigurations(_a0 *s3.ListBucketInventoryConfigurationsInput) (*s3.ListBucketInventoryConfigurationsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListBucketInventoryConfigurationsOutput + if rf, ok := ret.Get(0).(func(*s3.ListBucketInventoryConfigurationsInput) *s3.ListBucketInventoryConfigurationsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketInventoryConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListBucketInventoryConfigurationsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketInventoryConfigurationsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketInventoryConfigurationsRequest(_a0 *s3.ListBucketInventoryConfigurationsInput) (*request.Request, *s3.ListBucketInventoryConfigurationsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListBucketInventoryConfigurationsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListBucketInventoryConfigurationsOutput + if rf, ok := ret.Get(1).(func(*s3.ListBucketInventoryConfigurationsInput) *s3.ListBucketInventoryConfigurationsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListBucketInventoryConfigurationsOutput) + } + } + + return r0, r1 +} + +// ListBucketInventoryConfigurationsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListBucketInventoryConfigurationsWithContext(_a0 context.Context, _a1 *s3.ListBucketInventoryConfigurationsInput, _a2 ...request.Option) (*s3.ListBucketInventoryConfigurationsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListBucketInventoryConfigurationsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListBucketInventoryConfigurationsInput, ...request.Option) *s3.ListBucketInventoryConfigurationsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketInventoryConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListBucketInventoryConfigurationsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketMetricsConfigurations provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketMetricsConfigurations(_a0 *s3.ListBucketMetricsConfigurationsInput) (*s3.ListBucketMetricsConfigurationsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListBucketMetricsConfigurationsOutput + if rf, ok := ret.Get(0).(func(*s3.ListBucketMetricsConfigurationsInput) *s3.ListBucketMetricsConfigurationsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketMetricsConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListBucketMetricsConfigurationsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketMetricsConfigurationsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketMetricsConfigurationsRequest(_a0 *s3.ListBucketMetricsConfigurationsInput) (*request.Request, *s3.ListBucketMetricsConfigurationsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListBucketMetricsConfigurationsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListBucketMetricsConfigurationsOutput + if rf, ok := ret.Get(1).(func(*s3.ListBucketMetricsConfigurationsInput) *s3.ListBucketMetricsConfigurationsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListBucketMetricsConfigurationsOutput) + } + } + + return r0, r1 +} + +// ListBucketMetricsConfigurationsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListBucketMetricsConfigurationsWithContext(_a0 context.Context, _a1 *s3.ListBucketMetricsConfigurationsInput, _a2 ...request.Option) (*s3.ListBucketMetricsConfigurationsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListBucketMetricsConfigurationsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListBucketMetricsConfigurationsInput, ...request.Option) *s3.ListBucketMetricsConfigurationsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketMetricsConfigurationsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListBucketMetricsConfigurationsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBuckets provides a mock function with given fields: _a0 +func (_m *S3API) ListBuckets(_a0 *s3.ListBucketsInput) (*s3.ListBucketsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListBucketsOutput + if rf, ok := ret.Get(0).(func(*s3.ListBucketsInput) *s3.ListBucketsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListBucketsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListBucketsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListBucketsRequest(_a0 *s3.ListBucketsInput) (*request.Request, *s3.ListBucketsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListBucketsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListBucketsOutput + if rf, ok := ret.Get(1).(func(*s3.ListBucketsInput) *s3.ListBucketsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListBucketsOutput) + } + } + + return r0, r1 +} + +// ListBucketsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListBucketsWithContext(_a0 context.Context, _a1 *s3.ListBucketsInput, _a2 ...request.Option) (*s3.ListBucketsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListBucketsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListBucketsInput, ...request.Option) *s3.ListBucketsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListBucketsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListBucketsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListMultipartUploads provides a mock function with given fields: _a0 +func (_m *S3API) ListMultipartUploads(_a0 *s3.ListMultipartUploadsInput) (*s3.ListMultipartUploadsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListMultipartUploadsOutput + if rf, ok := ret.Get(0).(func(*s3.ListMultipartUploadsInput) *s3.ListMultipartUploadsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListMultipartUploadsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListMultipartUploadsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListMultipartUploadsPages provides a mock function with given fields: _a0, _a1 +func (_m *S3API) ListMultipartUploadsPages(_a0 *s3.ListMultipartUploadsInput, _a1 func(*s3.ListMultipartUploadsOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListMultipartUploadsPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *S3API) ListMultipartUploadsPagesWithContext(_a0 context.Context, _a1 *s3.ListMultipartUploadsInput, _a2 func(*s3.ListMultipartUploadsOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListMultipartUploadsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListMultipartUploadsRequest(_a0 *s3.ListMultipartUploadsInput) (*request.Request, *s3.ListMultipartUploadsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListMultipartUploadsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListMultipartUploadsOutput + if rf, ok := ret.Get(1).(func(*s3.ListMultipartUploadsInput) *s3.ListMultipartUploadsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListMultipartUploadsOutput) + } + } + + return r0, r1 +} + +// ListMultipartUploadsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListMultipartUploadsWithContext(_a0 context.Context, _a1 *s3.ListMultipartUploadsInput, _a2 ...request.Option) (*s3.ListMultipartUploadsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListMultipartUploadsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListMultipartUploadsInput, ...request.Option) *s3.ListMultipartUploadsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListMultipartUploadsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListMultipartUploadsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjectVersions provides a mock function with given fields: _a0 +func (_m *S3API) ListObjectVersions(_a0 *s3.ListObjectVersionsInput) (*s3.ListObjectVersionsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListObjectVersionsOutput + if rf, ok := ret.Get(0).(func(*s3.ListObjectVersionsInput) *s3.ListObjectVersionsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectVersionsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListObjectVersionsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjectVersionsPages provides a mock function with given fields: _a0, _a1 +func (_m *S3API) ListObjectVersionsPages(_a0 *s3.ListObjectVersionsInput, _a1 func(*s3.ListObjectVersionsOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectVersionsPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *S3API) ListObjectVersionsPagesWithContext(_a0 context.Context, _a1 *s3.ListObjectVersionsInput, _a2 func(*s3.ListObjectVersionsOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectVersionsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListObjectVersionsRequest(_a0 *s3.ListObjectVersionsInput) (*request.Request, *s3.ListObjectVersionsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListObjectVersionsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListObjectVersionsOutput + if rf, ok := ret.Get(1).(func(*s3.ListObjectVersionsInput) *s3.ListObjectVersionsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListObjectVersionsOutput) + } + } + + return r0, r1 +} + +// ListObjectVersionsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListObjectVersionsWithContext(_a0 context.Context, _a1 *s3.ListObjectVersionsInput, _a2 ...request.Option) (*s3.ListObjectVersionsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListObjectVersionsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectVersionsInput, ...request.Option) *s3.ListObjectVersionsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectVersionsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListObjectVersionsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjects provides a mock function with given fields: _a0 +func (_m *S3API) ListObjects(_a0 *s3.ListObjectsInput) (*s3.ListObjectsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListObjectsOutput + if rf, ok := ret.Get(0).(func(*s3.ListObjectsInput) *s3.ListObjectsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListObjectsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjectsPages provides a mock function with given fields: _a0, _a1 +func (_m *S3API) ListObjectsPages(_a0 *s3.ListObjectsInput, _a1 func(*s3.ListObjectsOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectsPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *S3API) ListObjectsPagesWithContext(_a0 context.Context, _a1 *s3.ListObjectsInput, _a2 func(*s3.ListObjectsOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListObjectsRequest(_a0 *s3.ListObjectsInput) (*request.Request, *s3.ListObjectsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListObjectsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListObjectsOutput + if rf, ok := ret.Get(1).(func(*s3.ListObjectsInput) *s3.ListObjectsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListObjectsOutput) + } + } + + return r0, r1 +} + +// ListObjectsV2 provides a mock function with given fields: _a0 +func (_m *S3API) ListObjectsV2(_a0 *s3.ListObjectsV2Input) (*s3.ListObjectsV2Output, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListObjectsV2Output + if rf, ok := ret.Get(0).(func(*s3.ListObjectsV2Input) *s3.ListObjectsV2Output); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectsV2Output) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListObjectsV2Input) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjectsV2Pages provides a mock function with given fields: _a0, _a1 +func (_m *S3API) ListObjectsV2Pages(_a0 *s3.ListObjectsV2Input, _a1 func(*s3.ListObjectsV2Output, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.ListObjectsV2Input, func(*s3.ListObjectsV2Output, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectsV2PagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *S3API) ListObjectsV2PagesWithContext(_a0 context.Context, _a1 *s3.ListObjectsV2Input, _a2 func(*s3.ListObjectsV2Output, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectsV2Input, func(*s3.ListObjectsV2Output, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListObjectsV2Request provides a mock function with given fields: _a0 +func (_m *S3API) ListObjectsV2Request(_a0 *s3.ListObjectsV2Input) (*request.Request, *s3.ListObjectsV2Output) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListObjectsV2Input) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListObjectsV2Output + if rf, ok := ret.Get(1).(func(*s3.ListObjectsV2Input) *s3.ListObjectsV2Output); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListObjectsV2Output) + } + } + + return r0, r1 +} + +// ListObjectsV2WithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListObjectsV2WithContext(_a0 context.Context, _a1 *s3.ListObjectsV2Input, _a2 ...request.Option) (*s3.ListObjectsV2Output, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListObjectsV2Output + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectsV2Input, ...request.Option) *s3.ListObjectsV2Output); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectsV2Output) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListObjectsV2Input, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListObjectsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListObjectsWithContext(_a0 context.Context, _a1 *s3.ListObjectsInput, _a2 ...request.Option) (*s3.ListObjectsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListObjectsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListObjectsInput, ...request.Option) *s3.ListObjectsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListObjectsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListObjectsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListParts provides a mock function with given fields: _a0 +func (_m *S3API) ListParts(_a0 *s3.ListPartsInput) (*s3.ListPartsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.ListPartsOutput + if rf, ok := ret.Get(0).(func(*s3.ListPartsInput) *s3.ListPartsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListPartsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.ListPartsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListPartsPages provides a mock function with given fields: _a0, _a1 +func (_m *S3API) ListPartsPages(_a0 *s3.ListPartsInput, _a1 func(*s3.ListPartsOutput, bool) bool) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListPartsPagesWithContext provides a mock function with given fields: _a0, _a1, _a2, _a3 +func (_m *S3API) ListPartsPagesWithContext(_a0 context.Context, _a1 *s3.ListPartsInput, _a2 func(*s3.ListPartsOutput, bool) bool, _a3 ...request.Option) error { + _va := make([]interface{}, len(_a3)) + for _i := range _a3 { + _va[_i] = _a3[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1, _a2) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool, ...request.Option) error); ok { + r0 = rf(_a0, _a1, _a2, _a3...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ListPartsRequest provides a mock function with given fields: _a0 +func (_m *S3API) ListPartsRequest(_a0 *s3.ListPartsInput) (*request.Request, *s3.ListPartsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.ListPartsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.ListPartsOutput + if rf, ok := ret.Get(1).(func(*s3.ListPartsInput) *s3.ListPartsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.ListPartsOutput) + } + } + + return r0, r1 +} + +// ListPartsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) ListPartsWithContext(_a0 context.Context, _a1 *s3.ListPartsInput, _a2 ...request.Option) (*s3.ListPartsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.ListPartsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.ListPartsInput, ...request.Option) *s3.ListPartsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.ListPartsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.ListPartsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAccelerateConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAccelerateConfiguration(_a0 *s3.PutBucketAccelerateConfigurationInput) (*s3.PutBucketAccelerateConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketAccelerateConfigurationInput) *s3.PutBucketAccelerateConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAccelerateConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketAccelerateConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAccelerateConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAccelerateConfigurationRequest(_a0 *s3.PutBucketAccelerateConfigurationInput) (*request.Request, *s3.PutBucketAccelerateConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketAccelerateConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketAccelerateConfigurationInput) *s3.PutBucketAccelerateConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketAccelerateConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketAccelerateConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketAccelerateConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketAccelerateConfigurationInput, _a2 ...request.Option) (*s3.PutBucketAccelerateConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketAccelerateConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketAccelerateConfigurationInput, ...request.Option) *s3.PutBucketAccelerateConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAccelerateConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketAccelerateConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAcl provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAcl(_a0 *s3.PutBucketAclInput) (*s3.PutBucketAclOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketAclOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketAclInput) *s3.PutBucketAclOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketAclInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAclRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAclRequest(_a0 *s3.PutBucketAclInput) (*request.Request, *s3.PutBucketAclOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketAclInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketAclOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketAclInput) *s3.PutBucketAclOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketAclOutput) + } + } + + return r0, r1 +} + +// PutBucketAclWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketAclWithContext(_a0 context.Context, _a1 *s3.PutBucketAclInput, _a2 ...request.Option) (*s3.PutBucketAclOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketAclOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketAclInput, ...request.Option) *s3.PutBucketAclOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketAclInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAnalyticsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAnalyticsConfiguration(_a0 *s3.PutBucketAnalyticsConfigurationInput) (*s3.PutBucketAnalyticsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketAnalyticsConfigurationInput) *s3.PutBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketAnalyticsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketAnalyticsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketAnalyticsConfigurationRequest(_a0 *s3.PutBucketAnalyticsConfigurationInput) (*request.Request, *s3.PutBucketAnalyticsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketAnalyticsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketAnalyticsConfigurationInput) *s3.PutBucketAnalyticsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketAnalyticsConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketAnalyticsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketAnalyticsConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketAnalyticsConfigurationInput, _a2 ...request.Option) (*s3.PutBucketAnalyticsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketAnalyticsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketAnalyticsConfigurationInput, ...request.Option) *s3.PutBucketAnalyticsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketAnalyticsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketAnalyticsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketCors provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketCors(_a0 *s3.PutBucketCorsInput) (*s3.PutBucketCorsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketCorsOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketCorsInput) *s3.PutBucketCorsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketCorsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketCorsRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketCorsRequest(_a0 *s3.PutBucketCorsInput) (*request.Request, *s3.PutBucketCorsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketCorsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketCorsOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketCorsInput) *s3.PutBucketCorsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketCorsOutput) + } + } + + return r0, r1 +} + +// PutBucketCorsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketCorsWithContext(_a0 context.Context, _a1 *s3.PutBucketCorsInput, _a2 ...request.Option) (*s3.PutBucketCorsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketCorsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketCorsInput, ...request.Option) *s3.PutBucketCorsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketCorsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketCorsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketEncryption provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketEncryption(_a0 *s3.PutBucketEncryptionInput) (*s3.PutBucketEncryptionOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketEncryptionInput) *s3.PutBucketEncryptionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketEncryptionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketEncryptionRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketEncryptionRequest(_a0 *s3.PutBucketEncryptionInput) (*request.Request, *s3.PutBucketEncryptionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketEncryptionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketEncryptionOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketEncryptionInput) *s3.PutBucketEncryptionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketEncryptionOutput) + } + } + + return r0, r1 +} + +// PutBucketEncryptionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketEncryptionWithContext(_a0 context.Context, _a1 *s3.PutBucketEncryptionInput, _a2 ...request.Option) (*s3.PutBucketEncryptionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketEncryptionOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketEncryptionInput, ...request.Option) *s3.PutBucketEncryptionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketEncryptionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketEncryptionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketIntelligentTieringConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketIntelligentTieringConfiguration(_a0 *s3.PutBucketIntelligentTieringConfigurationInput) (*s3.PutBucketIntelligentTieringConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketIntelligentTieringConfigurationInput) *s3.PutBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketIntelligentTieringConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketIntelligentTieringConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketIntelligentTieringConfigurationRequest(_a0 *s3.PutBucketIntelligentTieringConfigurationInput) (*request.Request, *s3.PutBucketIntelligentTieringConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketIntelligentTieringConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketIntelligentTieringConfigurationInput) *s3.PutBucketIntelligentTieringConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketIntelligentTieringConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketIntelligentTieringConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketIntelligentTieringConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketIntelligentTieringConfigurationInput, _a2 ...request.Option) (*s3.PutBucketIntelligentTieringConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketIntelligentTieringConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketIntelligentTieringConfigurationInput, ...request.Option) *s3.PutBucketIntelligentTieringConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketIntelligentTieringConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketIntelligentTieringConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketInventoryConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketInventoryConfiguration(_a0 *s3.PutBucketInventoryConfigurationInput) (*s3.PutBucketInventoryConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketInventoryConfigurationInput) *s3.PutBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketInventoryConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketInventoryConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketInventoryConfigurationRequest(_a0 *s3.PutBucketInventoryConfigurationInput) (*request.Request, *s3.PutBucketInventoryConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketInventoryConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketInventoryConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketInventoryConfigurationInput) *s3.PutBucketInventoryConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketInventoryConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketInventoryConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketInventoryConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketInventoryConfigurationInput, _a2 ...request.Option) (*s3.PutBucketInventoryConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketInventoryConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketInventoryConfigurationInput, ...request.Option) *s3.PutBucketInventoryConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketInventoryConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketInventoryConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLifecycle provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLifecycle(_a0 *s3.PutBucketLifecycleInput) (*s3.PutBucketLifecycleOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketLifecycleInput) *s3.PutBucketLifecycleOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketLifecycleInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLifecycleConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLifecycleConfiguration(_a0 *s3.PutBucketLifecycleConfigurationInput) (*s3.PutBucketLifecycleConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketLifecycleConfigurationInput) *s3.PutBucketLifecycleConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLifecycleConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketLifecycleConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLifecycleConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLifecycleConfigurationRequest(_a0 *s3.PutBucketLifecycleConfigurationInput) (*request.Request, *s3.PutBucketLifecycleConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketLifecycleConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketLifecycleConfigurationInput) *s3.PutBucketLifecycleConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketLifecycleConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketLifecycleConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketLifecycleConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketLifecycleConfigurationInput, _a2 ...request.Option) (*s3.PutBucketLifecycleConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketLifecycleConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketLifecycleConfigurationInput, ...request.Option) *s3.PutBucketLifecycleConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLifecycleConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketLifecycleConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLifecycleRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLifecycleRequest(_a0 *s3.PutBucketLifecycleInput) (*request.Request, *s3.PutBucketLifecycleOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketLifecycleInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketLifecycleOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketLifecycleInput) *s3.PutBucketLifecycleOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketLifecycleOutput) + } + } + + return r0, r1 +} + +// PutBucketLifecycleWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketLifecycleWithContext(_a0 context.Context, _a1 *s3.PutBucketLifecycleInput, _a2 ...request.Option) (*s3.PutBucketLifecycleOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketLifecycleOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketLifecycleInput, ...request.Option) *s3.PutBucketLifecycleOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLifecycleOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketLifecycleInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLogging provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLogging(_a0 *s3.PutBucketLoggingInput) (*s3.PutBucketLoggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketLoggingOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketLoggingInput) *s3.PutBucketLoggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLoggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketLoggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketLoggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketLoggingRequest(_a0 *s3.PutBucketLoggingInput) (*request.Request, *s3.PutBucketLoggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketLoggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketLoggingOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketLoggingInput) *s3.PutBucketLoggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketLoggingOutput) + } + } + + return r0, r1 +} + +// PutBucketLoggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketLoggingWithContext(_a0 context.Context, _a1 *s3.PutBucketLoggingInput, _a2 ...request.Option) (*s3.PutBucketLoggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketLoggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketLoggingInput, ...request.Option) *s3.PutBucketLoggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketLoggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketLoggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketMetricsConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketMetricsConfiguration(_a0 *s3.PutBucketMetricsConfigurationInput) (*s3.PutBucketMetricsConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketMetricsConfigurationInput) *s3.PutBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketMetricsConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketMetricsConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketMetricsConfigurationRequest(_a0 *s3.PutBucketMetricsConfigurationInput) (*request.Request, *s3.PutBucketMetricsConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketMetricsConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketMetricsConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketMetricsConfigurationInput) *s3.PutBucketMetricsConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketMetricsConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketMetricsConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketMetricsConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketMetricsConfigurationInput, _a2 ...request.Option) (*s3.PutBucketMetricsConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketMetricsConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketMetricsConfigurationInput, ...request.Option) *s3.PutBucketMetricsConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketMetricsConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketMetricsConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketNotification provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketNotification(_a0 *s3.PutBucketNotificationInput) (*s3.PutBucketNotificationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketNotificationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketNotificationInput) *s3.PutBucketNotificationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketNotificationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketNotificationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketNotificationConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketNotificationConfiguration(_a0 *s3.PutBucketNotificationConfigurationInput) (*s3.PutBucketNotificationConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketNotificationConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketNotificationConfigurationInput) *s3.PutBucketNotificationConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketNotificationConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketNotificationConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketNotificationConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketNotificationConfigurationRequest(_a0 *s3.PutBucketNotificationConfigurationInput) (*request.Request, *s3.PutBucketNotificationConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketNotificationConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketNotificationConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketNotificationConfigurationInput) *s3.PutBucketNotificationConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketNotificationConfigurationOutput) + } + } + + return r0, r1 +} + +// PutBucketNotificationConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketNotificationConfigurationWithContext(_a0 context.Context, _a1 *s3.PutBucketNotificationConfigurationInput, _a2 ...request.Option) (*s3.PutBucketNotificationConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketNotificationConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketNotificationConfigurationInput, ...request.Option) *s3.PutBucketNotificationConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketNotificationConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketNotificationConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketNotificationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketNotificationRequest(_a0 *s3.PutBucketNotificationInput) (*request.Request, *s3.PutBucketNotificationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketNotificationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketNotificationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketNotificationInput) *s3.PutBucketNotificationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketNotificationOutput) + } + } + + return r0, r1 +} + +// PutBucketNotificationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketNotificationWithContext(_a0 context.Context, _a1 *s3.PutBucketNotificationInput, _a2 ...request.Option) (*s3.PutBucketNotificationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketNotificationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketNotificationInput, ...request.Option) *s3.PutBucketNotificationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketNotificationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketNotificationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketOwnershipControls provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketOwnershipControls(_a0 *s3.PutBucketOwnershipControlsInput) (*s3.PutBucketOwnershipControlsOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketOwnershipControlsInput) *s3.PutBucketOwnershipControlsOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketOwnershipControlsInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketOwnershipControlsRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketOwnershipControlsRequest(_a0 *s3.PutBucketOwnershipControlsInput) (*request.Request, *s3.PutBucketOwnershipControlsOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketOwnershipControlsInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketOwnershipControlsOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketOwnershipControlsInput) *s3.PutBucketOwnershipControlsOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketOwnershipControlsOutput) + } + } + + return r0, r1 +} + +// PutBucketOwnershipControlsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketOwnershipControlsWithContext(_a0 context.Context, _a1 *s3.PutBucketOwnershipControlsInput, _a2 ...request.Option) (*s3.PutBucketOwnershipControlsOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketOwnershipControlsOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketOwnershipControlsInput, ...request.Option) *s3.PutBucketOwnershipControlsOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketOwnershipControlsOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketOwnershipControlsInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketPolicy provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketPolicy(_a0 *s3.PutBucketPolicyInput) (*s3.PutBucketPolicyOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketPolicyOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketPolicyInput) *s3.PutBucketPolicyOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketPolicyInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketPolicyRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketPolicyRequest(_a0 *s3.PutBucketPolicyInput) (*request.Request, *s3.PutBucketPolicyOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketPolicyInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketPolicyOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketPolicyInput) *s3.PutBucketPolicyOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketPolicyOutput) + } + } + + return r0, r1 +} + +// PutBucketPolicyWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketPolicyWithContext(_a0 context.Context, _a1 *s3.PutBucketPolicyInput, _a2 ...request.Option) (*s3.PutBucketPolicyOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketPolicyOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketPolicyInput, ...request.Option) *s3.PutBucketPolicyOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketPolicyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketPolicyInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketReplication provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketReplication(_a0 *s3.PutBucketReplicationInput) (*s3.PutBucketReplicationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketReplicationOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketReplicationInput) *s3.PutBucketReplicationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketReplicationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketReplicationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketReplicationRequest(_a0 *s3.PutBucketReplicationInput) (*request.Request, *s3.PutBucketReplicationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketReplicationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketReplicationOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketReplicationInput) *s3.PutBucketReplicationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketReplicationOutput) + } + } + + return r0, r1 +} + +// PutBucketReplicationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketReplicationWithContext(_a0 context.Context, _a1 *s3.PutBucketReplicationInput, _a2 ...request.Option) (*s3.PutBucketReplicationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketReplicationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketReplicationInput, ...request.Option) *s3.PutBucketReplicationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketReplicationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketReplicationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketRequestPayment provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketRequestPayment(_a0 *s3.PutBucketRequestPaymentInput) (*s3.PutBucketRequestPaymentOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketRequestPaymentOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketRequestPaymentInput) *s3.PutBucketRequestPaymentOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketRequestPaymentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketRequestPaymentInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketRequestPaymentRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketRequestPaymentRequest(_a0 *s3.PutBucketRequestPaymentInput) (*request.Request, *s3.PutBucketRequestPaymentOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketRequestPaymentInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketRequestPaymentOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketRequestPaymentInput) *s3.PutBucketRequestPaymentOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketRequestPaymentOutput) + } + } + + return r0, r1 +} + +// PutBucketRequestPaymentWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketRequestPaymentWithContext(_a0 context.Context, _a1 *s3.PutBucketRequestPaymentInput, _a2 ...request.Option) (*s3.PutBucketRequestPaymentOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketRequestPaymentOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketRequestPaymentInput, ...request.Option) *s3.PutBucketRequestPaymentOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketRequestPaymentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketRequestPaymentInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketTagging provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketTagging(_a0 *s3.PutBucketTaggingInput) (*s3.PutBucketTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketTaggingInput) *s3.PutBucketTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketTaggingRequest(_a0 *s3.PutBucketTaggingInput) (*request.Request, *s3.PutBucketTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketTaggingInput) *s3.PutBucketTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketTaggingOutput) + } + } + + return r0, r1 +} + +// PutBucketTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketTaggingWithContext(_a0 context.Context, _a1 *s3.PutBucketTaggingInput, _a2 ...request.Option) (*s3.PutBucketTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketTaggingInput, ...request.Option) *s3.PutBucketTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketVersioning provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketVersioning(_a0 *s3.PutBucketVersioningInput) (*s3.PutBucketVersioningOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketVersioningOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketVersioningInput) *s3.PutBucketVersioningOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketVersioningOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketVersioningInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketVersioningRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketVersioningRequest(_a0 *s3.PutBucketVersioningInput) (*request.Request, *s3.PutBucketVersioningOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketVersioningInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketVersioningOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketVersioningInput) *s3.PutBucketVersioningOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketVersioningOutput) + } + } + + return r0, r1 +} + +// PutBucketVersioningWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketVersioningWithContext(_a0 context.Context, _a1 *s3.PutBucketVersioningInput, _a2 ...request.Option) (*s3.PutBucketVersioningOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketVersioningOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketVersioningInput, ...request.Option) *s3.PutBucketVersioningOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketVersioningOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketVersioningInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketWebsite provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketWebsite(_a0 *s3.PutBucketWebsiteInput) (*s3.PutBucketWebsiteOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(*s3.PutBucketWebsiteInput) *s3.PutBucketWebsiteOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutBucketWebsiteInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutBucketWebsiteRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutBucketWebsiteRequest(_a0 *s3.PutBucketWebsiteInput) (*request.Request, *s3.PutBucketWebsiteOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutBucketWebsiteInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutBucketWebsiteOutput + if rf, ok := ret.Get(1).(func(*s3.PutBucketWebsiteInput) *s3.PutBucketWebsiteOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutBucketWebsiteOutput) + } + } + + return r0, r1 +} + +// PutBucketWebsiteWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutBucketWebsiteWithContext(_a0 context.Context, _a1 *s3.PutBucketWebsiteInput, _a2 ...request.Option) (*s3.PutBucketWebsiteOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutBucketWebsiteOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutBucketWebsiteInput, ...request.Option) *s3.PutBucketWebsiteOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutBucketWebsiteOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutBucketWebsiteInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObject provides a mock function with given fields: _a0 +func (_m *S3API) PutObject(_a0 *s3.PutObjectInput) (*s3.PutObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectInput) *s3.PutObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectAcl provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectAcl(_a0 *s3.PutObjectAclInput) (*s3.PutObjectAclOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectAclOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectAclInput) *s3.PutObjectAclOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectAclInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectAclRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectAclRequest(_a0 *s3.PutObjectAclInput) (*request.Request, *s3.PutObjectAclOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectAclInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectAclOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectAclInput) *s3.PutObjectAclOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectAclOutput) + } + } + + return r0, r1 +} + +// PutObjectAclWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectAclWithContext(_a0 context.Context, _a1 *s3.PutObjectAclInput, _a2 ...request.Option) (*s3.PutObjectAclOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectAclOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectAclInput, ...request.Option) *s3.PutObjectAclOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectAclOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectAclInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectLegalHold provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectLegalHold(_a0 *s3.PutObjectLegalHoldInput) (*s3.PutObjectLegalHoldOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectLegalHoldOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectLegalHoldInput) *s3.PutObjectLegalHoldOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectLegalHoldOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectLegalHoldInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectLegalHoldRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectLegalHoldRequest(_a0 *s3.PutObjectLegalHoldInput) (*request.Request, *s3.PutObjectLegalHoldOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectLegalHoldInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectLegalHoldOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectLegalHoldInput) *s3.PutObjectLegalHoldOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectLegalHoldOutput) + } + } + + return r0, r1 +} + +// PutObjectLegalHoldWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectLegalHoldWithContext(_a0 context.Context, _a1 *s3.PutObjectLegalHoldInput, _a2 ...request.Option) (*s3.PutObjectLegalHoldOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectLegalHoldOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectLegalHoldInput, ...request.Option) *s3.PutObjectLegalHoldOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectLegalHoldOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectLegalHoldInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectLockConfiguration provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectLockConfiguration(_a0 *s3.PutObjectLockConfigurationInput) (*s3.PutObjectLockConfigurationOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectLockConfigurationOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectLockConfigurationInput) *s3.PutObjectLockConfigurationOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectLockConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectLockConfigurationInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectLockConfigurationRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectLockConfigurationRequest(_a0 *s3.PutObjectLockConfigurationInput) (*request.Request, *s3.PutObjectLockConfigurationOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectLockConfigurationInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectLockConfigurationOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectLockConfigurationInput) *s3.PutObjectLockConfigurationOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectLockConfigurationOutput) + } + } + + return r0, r1 +} + +// PutObjectLockConfigurationWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectLockConfigurationWithContext(_a0 context.Context, _a1 *s3.PutObjectLockConfigurationInput, _a2 ...request.Option) (*s3.PutObjectLockConfigurationOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectLockConfigurationOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectLockConfigurationInput, ...request.Option) *s3.PutObjectLockConfigurationOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectLockConfigurationOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectLockConfigurationInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectRequest(_a0 *s3.PutObjectInput) (*request.Request, *s3.PutObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectInput) *s3.PutObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectOutput) + } + } + + return r0, r1 +} + +// PutObjectRetention provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectRetention(_a0 *s3.PutObjectRetentionInput) (*s3.PutObjectRetentionOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectRetentionOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectRetentionInput) *s3.PutObjectRetentionOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectRetentionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectRetentionInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectRetentionRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectRetentionRequest(_a0 *s3.PutObjectRetentionInput) (*request.Request, *s3.PutObjectRetentionOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectRetentionInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectRetentionOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectRetentionInput) *s3.PutObjectRetentionOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectRetentionOutput) + } + } + + return r0, r1 +} + +// PutObjectRetentionWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectRetentionWithContext(_a0 context.Context, _a1 *s3.PutObjectRetentionInput, _a2 ...request.Option) (*s3.PutObjectRetentionOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectRetentionOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectRetentionInput, ...request.Option) *s3.PutObjectRetentionOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectRetentionOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectRetentionInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectTagging provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectTagging(_a0 *s3.PutObjectTaggingInput) (*s3.PutObjectTaggingOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutObjectTaggingOutput + if rf, ok := ret.Get(0).(func(*s3.PutObjectTaggingInput) *s3.PutObjectTaggingOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutObjectTaggingInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectTaggingRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutObjectTaggingRequest(_a0 *s3.PutObjectTaggingInput) (*request.Request, *s3.PutObjectTaggingOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutObjectTaggingInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutObjectTaggingOutput + if rf, ok := ret.Get(1).(func(*s3.PutObjectTaggingInput) *s3.PutObjectTaggingOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutObjectTaggingOutput) + } + } + + return r0, r1 +} + +// PutObjectTaggingWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectTaggingWithContext(_a0 context.Context, _a1 *s3.PutObjectTaggingInput, _a2 ...request.Option) (*s3.PutObjectTaggingOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectTaggingOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectTaggingInput, ...request.Option) *s3.PutObjectTaggingOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectTaggingOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectTaggingInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutObjectWithContext(_a0 context.Context, _a1 *s3.PutObjectInput, _a2 ...request.Option) (*s3.PutObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutObjectInput, ...request.Option) *s3.PutObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutPublicAccessBlock provides a mock function with given fields: _a0 +func (_m *S3API) PutPublicAccessBlock(_a0 *s3.PutPublicAccessBlockInput) (*s3.PutPublicAccessBlockOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.PutPublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(*s3.PutPublicAccessBlockInput) *s3.PutPublicAccessBlockOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutPublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.PutPublicAccessBlockInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// PutPublicAccessBlockRequest provides a mock function with given fields: _a0 +func (_m *S3API) PutPublicAccessBlockRequest(_a0 *s3.PutPublicAccessBlockInput) (*request.Request, *s3.PutPublicAccessBlockOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.PutPublicAccessBlockInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.PutPublicAccessBlockOutput + if rf, ok := ret.Get(1).(func(*s3.PutPublicAccessBlockInput) *s3.PutPublicAccessBlockOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.PutPublicAccessBlockOutput) + } + } + + return r0, r1 +} + +// PutPublicAccessBlockWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) PutPublicAccessBlockWithContext(_a0 context.Context, _a1 *s3.PutPublicAccessBlockInput, _a2 ...request.Option) (*s3.PutPublicAccessBlockOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.PutPublicAccessBlockOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.PutPublicAccessBlockInput, ...request.Option) *s3.PutPublicAccessBlockOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.PutPublicAccessBlockOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.PutPublicAccessBlockInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RestoreObject provides a mock function with given fields: _a0 +func (_m *S3API) RestoreObject(_a0 *s3.RestoreObjectInput) (*s3.RestoreObjectOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.RestoreObjectOutput + if rf, ok := ret.Get(0).(func(*s3.RestoreObjectInput) *s3.RestoreObjectOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.RestoreObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.RestoreObjectInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RestoreObjectRequest provides a mock function with given fields: _a0 +func (_m *S3API) RestoreObjectRequest(_a0 *s3.RestoreObjectInput) (*request.Request, *s3.RestoreObjectOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.RestoreObjectInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.RestoreObjectOutput + if rf, ok := ret.Get(1).(func(*s3.RestoreObjectInput) *s3.RestoreObjectOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.RestoreObjectOutput) + } + } + + return r0, r1 +} + +// RestoreObjectWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) RestoreObjectWithContext(_a0 context.Context, _a1 *s3.RestoreObjectInput, _a2 ...request.Option) (*s3.RestoreObjectOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.RestoreObjectOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.RestoreObjectInput, ...request.Option) *s3.RestoreObjectOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.RestoreObjectOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.RestoreObjectInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SelectObjectContent provides a mock function with given fields: _a0 +func (_m *S3API) SelectObjectContent(_a0 *s3.SelectObjectContentInput) (*s3.SelectObjectContentOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.SelectObjectContentOutput + if rf, ok := ret.Get(0).(func(*s3.SelectObjectContentInput) *s3.SelectObjectContentOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.SelectObjectContentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.SelectObjectContentInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SelectObjectContentRequest provides a mock function with given fields: _a0 +func (_m *S3API) SelectObjectContentRequest(_a0 *s3.SelectObjectContentInput) (*request.Request, *s3.SelectObjectContentOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.SelectObjectContentInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.SelectObjectContentOutput + if rf, ok := ret.Get(1).(func(*s3.SelectObjectContentInput) *s3.SelectObjectContentOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.SelectObjectContentOutput) + } + } + + return r0, r1 +} + +// SelectObjectContentWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) SelectObjectContentWithContext(_a0 context.Context, _a1 *s3.SelectObjectContentInput, _a2 ...request.Option) (*s3.SelectObjectContentOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.SelectObjectContentOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.SelectObjectContentInput, ...request.Option) *s3.SelectObjectContentOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.SelectObjectContentOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.SelectObjectContentInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UploadPart provides a mock function with given fields: _a0 +func (_m *S3API) UploadPart(_a0 *s3.UploadPartInput) (*s3.UploadPartOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.UploadPartOutput + if rf, ok := ret.Get(0).(func(*s3.UploadPartInput) *s3.UploadPartOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.UploadPartOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.UploadPartInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UploadPartCopy provides a mock function with given fields: _a0 +func (_m *S3API) UploadPartCopy(_a0 *s3.UploadPartCopyInput) (*s3.UploadPartCopyOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.UploadPartCopyOutput + if rf, ok := ret.Get(0).(func(*s3.UploadPartCopyInput) *s3.UploadPartCopyOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.UploadPartCopyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.UploadPartCopyInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UploadPartCopyRequest provides a mock function with given fields: _a0 +func (_m *S3API) UploadPartCopyRequest(_a0 *s3.UploadPartCopyInput) (*request.Request, *s3.UploadPartCopyOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.UploadPartCopyInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.UploadPartCopyOutput + if rf, ok := ret.Get(1).(func(*s3.UploadPartCopyInput) *s3.UploadPartCopyOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.UploadPartCopyOutput) + } + } + + return r0, r1 +} + +// UploadPartCopyWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) UploadPartCopyWithContext(_a0 context.Context, _a1 *s3.UploadPartCopyInput, _a2 ...request.Option) (*s3.UploadPartCopyOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.UploadPartCopyOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.UploadPartCopyInput, ...request.Option) *s3.UploadPartCopyOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.UploadPartCopyOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.UploadPartCopyInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// UploadPartRequest provides a mock function with given fields: _a0 +func (_m *S3API) UploadPartRequest(_a0 *s3.UploadPartInput) (*request.Request, *s3.UploadPartOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.UploadPartInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.UploadPartOutput + if rf, ok := ret.Get(1).(func(*s3.UploadPartInput) *s3.UploadPartOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.UploadPartOutput) + } + } + + return r0, r1 +} + +// UploadPartWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) UploadPartWithContext(_a0 context.Context, _a1 *s3.UploadPartInput, _a2 ...request.Option) (*s3.UploadPartOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.UploadPartOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.UploadPartInput, ...request.Option) *s3.UploadPartOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.UploadPartOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.UploadPartInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// WaitUntilBucketExists provides a mock function with given fields: _a0 +func (_m *S3API) WaitUntilBucketExists(_a0 *s3.HeadBucketInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.HeadBucketInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilBucketExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) WaitUntilBucketExistsWithContext(_a0 context.Context, _a1 *s3.HeadBucketInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadBucketInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilBucketNotExists provides a mock function with given fields: _a0 +func (_m *S3API) WaitUntilBucketNotExists(_a0 *s3.HeadBucketInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.HeadBucketInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilBucketNotExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) WaitUntilBucketNotExistsWithContext(_a0 context.Context, _a1 *s3.HeadBucketInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadBucketInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilObjectExists provides a mock function with given fields: _a0 +func (_m *S3API) WaitUntilObjectExists(_a0 *s3.HeadObjectInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.HeadObjectInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilObjectExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) WaitUntilObjectExistsWithContext(_a0 context.Context, _a1 *s3.HeadObjectInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadObjectInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilObjectNotExists provides a mock function with given fields: _a0 +func (_m *S3API) WaitUntilObjectNotExists(_a0 *s3.HeadObjectInput) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*s3.HeadObjectInput) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WaitUntilObjectNotExistsWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) WaitUntilObjectNotExistsWithContext(_a0 context.Context, _a1 *s3.HeadObjectInput, _a2 ...request.WaiterOption) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *s3.HeadObjectInput, ...request.WaiterOption) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// WriteGetObjectResponse provides a mock function with given fields: _a0 +func (_m *S3API) WriteGetObjectResponse(_a0 *s3.WriteGetObjectResponseInput) (*s3.WriteGetObjectResponseOutput, error) { + ret := _m.Called(_a0) + + var r0 *s3.WriteGetObjectResponseOutput + if rf, ok := ret.Get(0).(func(*s3.WriteGetObjectResponseInput) *s3.WriteGetObjectResponseOutput); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.WriteGetObjectResponseOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(*s3.WriteGetObjectResponseInput) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// WriteGetObjectResponseRequest provides a mock function with given fields: _a0 +func (_m *S3API) WriteGetObjectResponseRequest(_a0 *s3.WriteGetObjectResponseInput) (*request.Request, *s3.WriteGetObjectResponseOutput) { + ret := _m.Called(_a0) + + var r0 *request.Request + if rf, ok := ret.Get(0).(func(*s3.WriteGetObjectResponseInput) *request.Request); ok { + r0 = rf(_a0) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*request.Request) + } + } + + var r1 *s3.WriteGetObjectResponseOutput + if rf, ok := ret.Get(1).(func(*s3.WriteGetObjectResponseInput) *s3.WriteGetObjectResponseOutput); ok { + r1 = rf(_a0) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*s3.WriteGetObjectResponseOutput) + } + } + + return r0, r1 +} + +// WriteGetObjectResponseWithContext provides a mock function with given fields: _a0, _a1, _a2 +func (_m *S3API) WriteGetObjectResponseWithContext(_a0 context.Context, _a1 *s3.WriteGetObjectResponseInput, _a2 ...request.Option) (*s3.WriteGetObjectResponseOutput, error) { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *s3.WriteGetObjectResponseOutput + if rf, ok := ret.Get(0).(func(context.Context, *s3.WriteGetObjectResponseInput, ...request.Option) *s3.WriteGetObjectResponseOutput); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*s3.WriteGetObjectResponseOutput) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *s3.WriteGetObjectResponseInput, ...request.Option) error); ok { + r1 = rf(_a0, _a1, _a2...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +var _ s3iface.S3API = (*S3API)(nil) diff --git a/idk/ingest.go b/idk/ingest.go new file mode 100644 index 000000000..1255ab092 --- /dev/null +++ b/idk/ingest.go @@ -0,0 +1,2057 @@ +package idk + +import ( + "bufio" + "bytes" + "context" + "crypto/tls" + "encoding/csv" + "encoding/json" + "fmt" + "io" + "math" + "net" + "net/http" + _ "net/http/pprof" + "net/url" + "os" + "os/signal" + "runtime" + "strings" + "sync" + "sync/atomic" + "syscall" + "time" + + "github.com/felixge/fgprof" + pilosacore "github.com/molecula/featurebase/v3" + pilosagrpc "github.com/molecula/featurebase/v3/api/client" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/logger" + "github.com/molecula/featurebase/v3/pql" + "github.com/molecula/featurebase/v3/prometheus" + proto "github.com/molecula/featurebase/v3/proto" + "github.com/molecula/featurebase/v3/stats" + "github.com/pkg/errors" + prom "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" + dto "github.com/prometheus/client_model/go" + "github.com/prometheus/prom2json" + "golang.org/x/sync/errgroup" +) + +type contextKey int + +const ( + contextKeyToken contextKey = iota +) + +// TODO Jaeger +// TODO Prometheus + +// Main holds all config for general ingest +type Main struct { + PilosaHosts []string `short:"p" help:"Alias for --featurebase-hosts. Will be deprecated in the next major release."` + FeaturebaseHosts []string `short:"" help:"Comma separated list of host:port pairs for FeatureBase."` + PilosaGRPCHosts []string `short:"" help:"Alias for --featurebase-grpc-hosts. Will be deprecated in the next major release."` + FeaturebaseGRPCHosts []string `short:"" help:"Comma separated list of host:port pairs for FeatureBase's GRPC endpoint. Used by Kafka delete consumer."` + BatchSize int `short:"b" help:"Number of records to read before indexing all of them at once. Generally, larger means better throughput and more memory usage. 1,048,576 might be a good number."` + KeyTranslateBatchSize int `help:"Maximum number of keys to translate at a time."` + BatchMaxStaleness time.Duration `short:"" help:"Maximum length of time that the oldest record in a batch can exist before flushing the batch. Note that this can potentially stack with timeouts waiting for the source."` + Index string `short:"i" help:"Name of FeatureBase index."` + LogPath string `short:"l" help:"Log file to write to. Empty means stderr."` + PrimaryKeyFields []string `short:"r" help:"Data field(s) which make up the primary key for a record. These will be concatenated and translated to a FeatureBase ID. If empty, record key translation will not be used."` + IDField string `short:"d" help:"Field which contains the integer column ID. May not be used in conjunction with primary-key-fields. If both are empty, auto-generated IDs will be used."` + AutoGenerate bool `short:"a" help:"Automatically generate IDs."` + ExternalGenerate bool `short:"" help:"Use FeatureBase's ID generation (must be set alongside auto-generate)."` + IDAllocKeyPrefix string `short:"" help:"A prefix for ID allocator keys when using FeatureBase's ID generation (must be different for each concurrent ingester)."` + Concurrency int `short:"c" help:"Number of concurrent sources and indexing routines to launch. Concurrency is not supported for molecula-consumer-csv and molecula-consumer-sql"` + CacheLength uint64 `short:"" help:"Number of batches of ID mappings to cache."` + PackBools string `short:"k" help:"If non-empty, boolean fields will be packed into two set fields—one with this name, and one with -exists."` + Verbose bool `short:"v" help:"Enable verbose logging."` + Delete bool `help:"If true, delete records rather than write them." flag:"-"` + Pprof string `short:"o" help:"host:port on which to listen for pprof"` + Stats string `short:"s" help:"host:port on which to host metrics"` + ExpSplitBatchMode bool `short:"x" help:"Tell featurebase client to build bitmaps locally over many batches and import them at the end. Experimental. Does not support int or mutex fields. Don't use this unless you know what you're doing."` + AssumeEmptyPilosa bool `short:"u" help:"Alias for --assume-empty-featurebase. Will be deprecated in the next major release."` + AssumeEmptyFeaturebase bool `short:"" help:"Setting this means that you're doing an initial bulk ingest which assumes that data does not need to be cleared/unset in FeatureBase. There are various performance enhancements that can be made in this case. For example, for booleans if a false value comes in, we'll just set the bit in the bools-exists field... we won't clear it in the bools field."` + WriteCSV string `short:"" help:"Write data we're ingesting to a CSV file with the given name."` + Namespace string `flag:"-"` + DeleteIndex bool `short:"" help:"Delete index specified by --index (if it already exists) before starting ingest - NOTE: this will delete any data already imported into this index, use with caution."` + DryRun bool `short:"" help:"Dry run - just flag parsing."` + TrackProgress bool `help:"Periodically print status updates on how many records have been sourced." short:""` + OffsetMode bool `short:"" help:"Set offset-mode based Autogenerated IDs, for use with a data-source that is offset-based (must be set alongside auto-generate and external-generate)."` + LookupDBDSN string `flag:"lookup-db-dsn" help:"Connection string for connecting to Lookup database."` + LookupBatchSize int `help:"Number of records to batch before writing them to Lookup database."` + UseIngestAPI bool `help:"Experimental: use new HTTP/JSON ingest API instead of low-level import API. Probably slow. Does not support packed bools."` + AuthToken string `flag:"auth-token" help:"Authentication Token for FeatureBase"` + CommitTimeout time.Duration `help:"Maximum time before canceling commit."` + AllowIntOutOfRange bool `help:"Allow ingest to continue when it encounters out of range integers in IntFields. (default false)"` + AllowDecimalOutOfRange bool `help:"Allow ingest to continue when it encounters out of range decimals in DecimalFields. (default false)"` + AllowTimestampOutOfRange bool `help:"Allow ingest to continue when it encounters out of range timestamps in TimestampFields. (default false)"` + + UseShardTransactionalEndpoint bool `flag:"use-shard-transactional-endpoint" help:"Use alternate import endpoint. Currently unstable/testing"` + + csvWriter *csv.Writer + csvFile *os.File + // TODO implement the auto-generated IDs... hopefully using Pilosa to manage it. + TLS TLSConfig + + // NewSource must be set by the user of Main before calling + // Main.Run. Main.Run will call this function "Concurrency" times. It + // is the job of this function to ensure that the concurrent + // sources which are started partition work appropriately. This is + // typically set up (by convention) in the Source's package in + // cmd.go + NewSource func() (Source, error) `flag:"-"` + + lookupClient *PostgresClient + + client *pilosaclient.Client + index *pilosaclient.Index + grpcClient *pilosagrpc.GRPCClient + + newNexter func(c int) (IDAllocator, error) + ra RangeAllocator + + stats stats.StatsClient + metricsServer *http.Server + + log logger.Logger + + progress *ProgressTracker + + // Metrics + importDuration time.Duration + + // Future flags are used to represent features or functionality which is not + // yet the default behavior, but will be in a future release. + Future struct { + // Rename, if true, will interact with a service called FeatureBase + // instead of Pilosa. + Rename bool `help:"Interact with FeatureBase instead of Pilosa."` + } + MaxMsgs uint64 `short:"m" help:"Number of messages to consume from Kafka before stopping. Useful for testing when you don't want to run indefinitely."` +} + +// msgCounter is a thread safe counter which counts the number of +// messages fully ingested/committed from all concurrent sources. The +// ingest loop will exit with no error once MaxMsgs have been ingested +// across all sources sharing the counter. +type msgCounter struct { + count uint64 + MaxMsgs uint64 +} + +func (l *msgCounter) Increment(n uint64) uint64 { + return atomic.AddUint64(&l.count, n) +} + +func (l *msgCounter) IsDone() bool { + val := atomic.LoadUint64(&l.count) + return val >= l.MaxMsgs +} + +func (l *msgCounter) Value() uint64 { + return atomic.LoadUint64(&l.count) +} + +type ConfluentCommand struct { + KafkaSecurityProtocol string `help:"Protocol used to communicate with brokers (security.protocol)"` + KafkaBootstrapServers []string `help:"Comma separated list of host:port pairs for Kafka."` + + KafkaSslCaLocation string `help:"File or directory path to CA certificate(s) for verifying the broker's key(ssl.ca.location)"` + KafkaSslCertificateLocation string `help:"Path to client's public key (PEM) used for authentication(ssl.certificate.location)"` + KafkaSslKeyLocation string `help:"Path to client's private key (PEM) used for authentication(ssl.key.location)."` + KafkaSslKeyPassword string `help:"Private key passphrase (for use with ssl.key.location and set_ssl_cert()(ssl.key.password))"` + KafkaSslEndpointIdentificationAlgorithm string `help:"The endpoint identification algorithm used by clients to validate server host name (ssl.endpoint.identification.algorithm) "` + KafkaEnableSslCertificateVerification bool `help:"(enable.ssl.certificate.verification)"` + KafkaSocketTimeoutMs int `help:"(socket.timeout.ms)"` + + KafkaClientId string `help:"(client.id)"` + KafkaDebug string `help:"Kafka debug string (debug)"` + + KafkaSaslUsername string `help:"SASL authentication username (sasl.username)"` + KafkaSaslPassword string `help:"SASL authentication password (sasl.password)"` + KafkaSaslMechanism string `help:"SASL mechanism to use for authentication.(sasl.mechanism)"` + + SchemaRegistryUsername string `help:"authenticaion key provided by confluent for schema registry."` + SchemaRegistryPassword string `help:"authenticaion secret provided by confluent for schema registry."` + SchemaRegistryURL string `short:"g" help:"Location of Confluent Schema Registry. Must start with 'https://' if you want to use TLS."` + + KafkaConfiguration string `help:"json configuration for confluents ConfigMap will be applied first EXPERIMENTAL"` +} + +func init() { + http.DefaultServeMux.Handle("/debug/fgprof", fgprof.Handler()) +} + +func (m *Main) PilosaClient() *pilosaclient.Client { return m.client } +func (m *Main) Log() logger.Logger { return m.log } + +func NewMain() *Main { + fmt.Fprintf(os.Stderr, "Molecula Consumer %s, build time %s\n", Version, BuildTime) + + return &Main{ + PilosaHosts: []string{"localhost:10101"}, + PilosaGRPCHosts: []string{"localhost:20101"}, + BatchSize: 1, // definitely increase this to achieve any amount of performance + Concurrency: 1, + CacheLength: 64, + PackBools: "bools", + Namespace: "ingester", + IDAllocKeyPrefix: "ingest", + + UseShardTransactionalEndpoint: os.Getenv("IDK_DEFAULT_SHARD_TRANSACTIONAL") != "", + + Pprof: "localhost:6062", + Stats: "localhost:9093", + + stats: stats.NopStatsClient, + + log: logger.NewStandardLogger(os.Stderr), + } +} + +func (m *Main) Rename() { + if m.Future.Rename { + m.PilosaHosts = m.FeaturebaseHosts + m.PilosaGRPCHosts = m.FeaturebaseGRPCHosts + m.AssumeEmptyPilosa = m.AssumeEmptyFeaturebase + } +} + +func (m *Main) Run() (err error) { + onFinishRun, err := m.Setup() + if err != nil { + return errors.Wrap(err, "setting up") + } + defer onFinishRun() + err = m.run() + if err != nil && err != io.EOF { + return err + } + return nil +} + +func (m *Main) run() error { + m.log.Debugf("Ingest Config: %+v", m) + + eg := errgroup.Group{} + + if m.MaxMsgs == 0 { + m.MaxMsgs = math.MaxUint64 + } + l := &msgCounter{MaxMsgs: m.MaxMsgs} + + for c := 0; c < m.Concurrency; c++ { + c := c + eg.Go(func() error { + var err error + if m.Delete { + err = m.runDeleter(c, l) + } else { + err = m.runIngester(c, l) + } + if err != nil && err != io.EOF { + return err + } + return nil + }) + } + return errors.Wrap(eg.Wait(), "idk.Main.Run") +} + +func (m *Main) clone() (*Main, error) { + schema, err := m.client.Schema() + if err != nil { + return nil, err + } + var index *pilosaclient.Index = schema.Index(m.Index) + // use a copy (schema race condition issues) + mClone := *m + mClone.index = index + + return &mClone, nil +} + +func (m *Main) runIngester(c int, l *msgCounter) error { + m.log.Printf("start ingester %d", c) + // TODO: actually implement cancellation and graceful shutdown + ctx, cancel := context.WithCancel(context.WithValue(context.Background(), contextKeyToken, m.AuthToken)) + defer cancel() + + // get source + source, err := m.NewSource() + if err != nil { + return errors.Wrap(err, "getting source") + } + defer func() { + err = source.Close() + if err != nil { + if m.log != nil { + m.log.Printf("error on close %v", err) + } + } + }() + + // get nexter + nexter, err := m.newNexter(c) + if err != nil { + return errors.Wrap(err, "getting nexter") + } + + mc, err := m.clone() + if err != nil { + return errors.Wrap(err, "cloning *Main before ingest") + } + + err = mc.ingest(ctx, source, nexter, c, l) + if err != nil && err != io.EOF { + return err + } + return nil +} + +func (m *Main) ingest(ctx context.Context, source Source, nexter IDAllocator, sourceInstance int, limitCounter *msgCounter) error { + defer func() { + m.log.Printf("metrics: import=%s\n", time.Duration(atomic.LoadInt64((*int64)(&m.importDuration)))) + }() + var batch pilosaclient.RecordBatch + var recordizers []Recordizer + var prevRec Record + var row *pilosaclient.Row + if m.progress != nil { + source = m.progress.Track(source) + } + if limitCounter.IsDone() { + return io.EOF + } +initialFetch: + rec, err := source.Record() + switch err { + case nil: + // Fetch the schema for the first time. + err = ErrSchemaChange + case ErrFlush: + // There is nothing to flush yet. + // This needs a record before the main loop can start. + goto initialFetch + } + var csvSlice []string + batchStart := true + + var lookupBatcher LookupBatcher = &NopLookupBatcher{} + var lookupWriteIdxs []int + var lookupRow []interface{} + if m.lookupClient != nil { + lookupFieldNames := selectLookupFieldNames(source) + if err := m.lookupClient.Setup(lookupFieldNames); err != nil { + return errors.Wrap(err, "initializing lookup database") + } + lookupBatcher = NewPostgresUpsertBatcher( + m.lookupClient, + m.LookupBatchSize, + ) + lookupRow = make([]interface{}, len(lookupFieldNames)+1) // re-use. +1 for id column + } + recordCounter := 0 + next := func() { + if limitCounter.IsDone() { + return + } + rec, err = source.Record() + } + for ; !limitCounter.IsDone(); next() { + recordCounter++ + if err == ErrFlush { + if batch != nil && batch.Len() > 0 { + batchLen := batch.Len() + if err := m.importBatch(batch); err != nil { + return errors.Wrap(err, "importing batch after timeout") + } + + if err := m.commitRecord(ctx, prevRec, limitCounter, uint64(batchLen)); err != nil { + return errors.Wrap(err, "committing after timeout") + } + + if nexter != nil { + err := nexter.Commit(ctx) + if err != nil { + return errors.Wrap(err, "committing IDs for batch") + } + } + m.log.Printf("imported batch after timeout") + } + batchStart = true + + if lookupBatcher.Len() > 0 { + if err := lookupBatcher.Import(); err != nil { + return errors.Wrap(err, "importing lookup batch after timeout") + } + } + continue + } + if err != nil { + // finish previous batch if this is not the first + if batch != nil && batch.Len() > 0 { + batchLen := batch.Len() + ierr := m.importBatch(batch) + if ierr != nil { + return errors.Wrapf(ierr, "importing after error getting record: %v", err) + } else if !errors.Is(err, io.EOF) { + if v, ok := source.(Metadata); ok { + m.log.Printf("imported batch of previous records (%v) after err: %v", v.SchemaMetadata(), err) + } else { + m.log.Printf("imported batch of previous records after err: %v", err) + } + } + ierr = m.commitRecord(ctx, prevRec, limitCounter, uint64(batchLen)) + if ierr != nil { + return errors.Wrapf(ierr, "committing after error getting record: %v", err) + } + if nexter != nil { + ierr := nexter.Commit(ctx) + if ierr != nil { + return errors.Wrap(ierr, "committing IDs for batch") + } + } + m.log.Printf("1 records processed %v-> (%v)", sourceInstance, recordCounter) + } + batchStart = true + if lookupBatcher.Len() > 0 { + if err := lookupBatcher.Import(); err != nil { + return errors.Wrap(err, "importing lookup batch after error") + } + } + + if err == ErrSchemaChange { + schema := source.Schema() + if v, ok := source.(Metadata); ok { + m.log.Printf("new schema - subject: %#v; version: %d; schema: %#v", + v.SchemaSubject(), v.SchemaVersion(), v.SchemaSchema()) + // m.log.Printf("new schema: %#v", v.SchemaMetadata()) + } else { + m.log.Printf("new schema: %#v", schema) + } + recordizers, batch, row, lookupWriteIdxs, err = m.batchFromSchema(schema) + if err != nil { + return errors.Wrap(err, "batchFromSchema") + } + m.stats.Count(MetricIngesterSchemaChanges, 1, 1) + csvSlice = make([]string, len(schema)) + if m.csvWriter != nil { + for i := range schema { + csvSlice[i] = schema[i].DestName() + } + err := m.csvWriter.Write(csvSlice) + if err != nil { + return errors.Wrap(err, "writing header to CSV file") + } + } + + // check lookup fields + // TODO if we want to support a changing schema while doing + // lookup imports, need to adjust the lookupBatcher's schema here. + if len(lookupWriteIdxs) > 0 && m.LookupDBDSN == "" { + return errors.New("must set --lookup-db-dsn when using lookup field types") + } + } else { + break + } + } + data := rec.Data() + + if m.csvWriter != nil { + for i, item := range data { + var cerr error + csvSlice[i], cerr = toString(item) + if cerr != nil { + return errors.Wrap(cerr, "toString") + } + } + err := m.csvWriter.Write(csvSlice) + if err != nil { + return errors.Wrap(err, "writing to CSV file") + } + } + + for _, rdz := range recordizers { + err = rdz(data, row) + if err != nil { + err = errors.Wrap(err, "recordizing") + // excludes 'out of range' errors so that ingest can continue importing the rest + // of the records + if !m.allowError(err) { + return err + } + m.Log().Errorf(err.Error()) + } + } + if nexter != nil { // add ID if no id field specified + if batchStart { + rerr := nexter.Reserve(ctx, uint64(m.BatchSize)) + if rerr != nil { + return errors.Wrap(rerr, "reserving IDs for batch") + } + batchStart = false + } + id, err := nexter.Next(ctx, rec) + if err != nil { + var esync ErrIDOffsetDesync + if errors.As(err, &esync) { + // if we get an esync error, it means that the current + // source's offset is behind and some other client has + // already processed the same message and used the ID, + // Therefore, ideally this client should fast-forward its + // offset to catch up. + // For the time being though, we'll skip adding this record + // to the batch and simply log the error. + // This is under the assumption that the other client is already/will be + // fully responsible for ingesting messages for that group. Also, + // implementing offset fast-forward will require extending a source's + // API which we should keep as minimal as possible + m.log.Printf(esync.Error()) + continue + } + return errors.Wrap(err, "getting next ID") + } + row.ID = id + } + err = batch.Add(*row) + m.stats.Count(MetricIngesterRowsAdded, 1, 1) + if err == pilosaclient.ErrBatchNowFull || err == pilosaclient.ErrBatchNowStale { + batchLen := batch.Len() + err = m.importBatch(batch) + if err != nil { + return errors.Wrap(err, "importing batch") + } + err = m.commitRecord(ctx, rec, limitCounter, uint64(batchLen)) + if err != nil { + return errors.Wrap(err, "committing record") + } + m.log.Printf("records processed %v-> (%v)", sourceInstance, recordCounter) + if nexter != nil { + err = nexter.Commit(ctx) + if err != nil { + return errors.Wrap(err, "committing IDs for batch") + } + } + batchStart = true + } else if err != nil { + return errors.Wrap(err, "adding to batch") + } + prevRec = rec + + // handle lookup write + // NOTE this assumes the ID is an integer, and the data is a string + if len(lookupWriteIdxs) > 0 { + skipLookupRow := false + switch rowIdent := row.ID.(type) { + case uint64: + lookupRow[0] = rowIdent + // rowIdent is the ID sent to pilosa, also generated by pilosa when ExternalGenerate is enabled. + default: + return errors.New("lookup writes only support uint64 ids") + } + + for targetIdx, sourceIdx := range lookupWriteIdxs { + // NOTE when lookupWrites schema can change, need to resize lookupRow + if data[sourceIdx] == nil { + if len(lookupRow) > 2 { + // Schema contains 2+ lookup fields, and we may + // have received a record with only SOME of them. + // PostgreUpsertBatcher.Import can't handle heterogeneous + // rows, so this is an error. When we need to do this, + // batch import logic must be updated, for example: + // - Add should accept a map columnName:value + // - Import should execute several batch insert queries, + // each generated from a homogeneous slice of rows. + return errors.Errorf("lookup field missing (id=%v, data=%v)", lookupRow[0], data) + } + // When we have only one lookup field, instead of worrying about + // hetergeneous rows, just skip when missing. + skipLookupRow = true + lookupRow[targetIdx+1] = nil + } else { + lookupRow[targetIdx+1] = data[sourceIdx].(string) + } + } + + if !skipLookupRow { + if err := lookupBatcher.AddFullRow(lookupRow); err != nil { + return errors.Wrap(err, "adding to lookup batch") + } + } + + // Zero the row. I'm not sure if this is necessary, but it might + // convert any surprise data integrity issues into NPEs + // we can't miss. + for n := range lookupRow { + lookupRow[n] = nil + } + + } + } + + defer func() { + if m.lookupClient != nil { + if cerr := m.lookupClient.Close(); cerr != nil { + panic(cerr) + } + } + }() + + // if the limitCounter is done, we don't care if there was an + // error getting a record... we've ingested enough. Specifically + // added this because we were getting an ErrFlush that we didn't + // care about in a test. + if limitCounter.IsDone() { + return nil + } + if !errors.Is(err, io.EOF) { + return errors.Wrap(err, "getting record") + } + if batch == nil || err == io.EOF { + return io.EOF // this means that there were 0 records + } + return errors.Wrap(batch.Flush(), "final fragment import") + +} + +func (m *Main) Setup() (onFinishRun func(), err error) { + + if err := m.validate(); err != nil { + return nil, errors.Wrap(err, "validating configuration") + } + + if m.DeleteIndex { + reader := bufio.NewReader(os.Stdin) + fmt.Printf("Delete index '%s' and all data already imported into it (enter '%[1]s' to delete)? ", m.Index) + text, _ := reader.ReadString('\n') + if strings.TrimSpace(text) == strings.TrimSpace(m.Index) { + err := m.client.DeleteIndex(m.index) + if err != nil { + return nil, errors.Wrap(err, "deleting index") + } + } else { + return nil, errors.New("index delete not confirmed") + } + } + + // setup logging + var f *logger.FileWriter + var logOut io.Writer = os.Stderr + if m.LogPath != "" { + f, err = logger.NewFileWriter(m.LogPath) + if err != nil { + return nil, errors.Wrap(err, "opening log file") + } + logOut = f + } + if m.Verbose { + m.log = logger.NewVerboseLogger(logOut) + } else { + m.log = logger.NewStandardLogger(logOut) + } + + if m.LogPath != "" { + sighup := make(chan os.Signal, 1) + signal.Notify(sighup, syscall.SIGHUP) + go func() { + for { + // duplicate stderr onto log file + err := dup(int(f.Fd()), int(os.Stderr.Fd())) + if err != nil { + m.log.Printf("syscall dup: %s\n", err.Error()) + } + + // reopen log file on SIGHUP + <-sighup + err = f.Reopen() + if err != nil { + m.log.Printf("reopen: %s\n", err.Error()) + } + } + }() + } + + // start profiling endpoint + // + // TODO do this the same way we do stats, potentially sharing a + // listener and mux, and shutting down properly when Run exits. + if m.Pprof != "" { + go func() { + runtime.SetBlockProfileRate(10000000) // 1 sample per 10 ms + runtime.SetMutexProfileFraction(100) // 1% sampling + m.log.Printf("Listening for /debug/pprof/ and /debug/fgprof on '%s'", m.Pprof) + m.log.Printf("%v", http.ListenAndServe(m.Pprof, nil)) + }() + } + + if err := m.setupStats(); err != nil { + m.log.Printf("setting up stats: %v", err) + } + + // set up Pilosa client + tlsConfig, err := m.setupClient() + if err != nil { + return nil, errors.Wrap(err, "setting up client") + } + + if m.AuthToken != "" { + m.AuthToken = "Bearer " + m.AuthToken // Gets added to context + m.client.AuthToken = m.AuthToken // Gets used for calls made from the client + } + + schema, err := m.client.Schema() + if err != nil { + return nil, errors.Wrap(err, "getting schema") + } + + // validate ID generation specification + if schema.HasIndex(m.Index) { + if schema.Index(m.Index).Opts().Keys() && m.IDField != "" { + return nil, errors.New("ID field not allowed for existing index with keys enabled") + } else if schema.Index(m.Index).Opts().Keys() && m.AutoGenerate { + return nil, errors.New("Autogenerated IDs not allowed for existing index with keys enabled") + } else if !schema.Index(m.Index).Opts().Keys() && len(m.PrimaryKeyFields) != 0 { + return nil, errors.New("PrimaryKeyFields not allowed for existing index with keys disabled") + } + } + + keyTranslation := len(m.PrimaryKeyFields) > 0 + m.index = schema.Index(m.Index, pilosaclient.OptIndexKeys(keyTranslation)) + err = m.client.SyncIndex(m.index) + if err != nil { + return nil, errors.Wrap(err, "syncing index") + } + if m.AutoGenerate { + shardWidth := m.index.ShardWidth() + if shardWidth == 0 { + shardWidth = pilosaclient.DefaultShardWidth + } + m.ra = NewLocalRangeAllocator(shardWidth) + } + + if m.WriteCSV != "" { + m.csvFile, err = os.Create(m.WriteCSV) + if err != nil { + return nil, errors.Wrap(err, "trying to create write-csv file") + } + m.csvWriter = csv.NewWriter(m.csvFile) + } + + if m.Delete { + grpcClient, err := pilosagrpc.NewGRPCClient(m.PilosaGRPCHosts, tlsConfig, m.log) + if err != nil { + return nil, errors.Wrap(err, "creating featurebase client") + } + m.grpcClient = grpcClient + } + + if m.LookupDBDSN != "" { + pg, err := m.NewLookupClient() + if err != nil { + return nil, errors.Wrap(err, "creating lookup client") + } + m.lookupClient = pg + } + + if m.TrackProgress { + m.progress = &ProgressTracker{} + } + + // Set up progress tracking. + if m.progress != nil { + startTime := time.Now() + var wg sync.WaitGroup + defer wg.Wait() + doneCh := make(chan struct{}) + defer func() { close(doneCh) }() + wg.Add(1) + go func() { + defer wg.Done() + + // Set up a timer to check progress every 10 seconds. + tick := time.NewTicker(10 * time.Second) + defer tick.Stop() + + prev := uint64(0) + stalled := true + for { + progress := m.progress.Check() + switch { + case progress != prev: + // Forward progress continues. + m.log.Printf("sourced %d records (%.2f records/minute)", progress, float64(progress)/time.Since(startTime).Minutes()) + stalled = false + case stalled: + // We already told the user that it is stalled. + default: + // This is the start of a stall. + // No records have been sourced in the past 5 seconds. + m.log.Printf("record sourcing stalled") + stalled = true + } + prev = progress + + select { + case <-tick.C: + case <-doneCh: + // Generate a final status update. + m.log.Printf("sourced %d records in %s", m.progress.Check(), time.Since(startTime)) + return + } + } + }() + } + + // sort of like NewSource but for getting an IDAllocator + // to use + m.newNexter = func(c int) (IDAllocator, error) { + var nexter IDAllocator + if m.AutoGenerate { + if m.ExternalGenerate { + // Basically we need pilosa client to. . . not do what it usually does. + // So just find the URI of the primary and use a regular HTTP client. + httpClient := http.DefaultClient + if m.TLS.CertificatePath != "" { + httpClient = GetHTTPClient(tlsConfig) + } + + coord, err := m.findPrimary() + if err != nil { + return nil, errors.Wrap(err, "finding primary node to setup idAllocator") + } + idManager := &pilosaIDManager{ + hcli: httpClient, + url: *coord, + } + + // check if Offset mode + if m.OffsetMode { + nexter = newOffsetModeNexter(idManager, m.Index, uint64(m.BatchSize)) + + } else { // Normal mode, default + + // under normal mode, we have to provide the key that idk + // will use for reserve/commit + key := fmt.Sprintf("%s-%d", m.IDAllocKeyPrefix, c) + nexter = newNormalModeNexter( + idManager, + m.Index, + key, + ) + } + } else { + var err error + nexter, err = NewRangeNexter(m.ra) + if err != nil { + return nil, errors.Wrap(err, "getting range nexter") + } + } + } + return nexter, nil + } + onFinishRun = func() { + if m.csvWriter != nil { + m.csvWriter.Flush() + err := m.csvWriter.Error() + if err != nil { + m.log.Printf("flushing CSV: %v", err) + } + } + if m.csvFile != nil { + err := m.csvFile.Close() + if err != nil { + m.log.Printf("closing CSV file: %v", err) + } + } + if m.metricsServer != nil { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + err := m.metricsServer.Shutdown(ctx) + if err != nil { + m.log.Printf("shutting down metrics server: %v", err) + } + } + } + + return onFinishRun, nil +} + +func GetHTTPClient(t *tls.Config) *http.Client { + transport := &http.Transport{ + Dial: (&net.Dialer{ + Timeout: time.Second * 20, + }).Dial, + } + if t != nil { + transport.TLSClientConfig = t + } + return &http.Client{Transport: transport} +} + +// commitRecord commits rec. Sets the commit timeout on the context, if enabled. +func (m *Main) commitRecord(ctx context.Context, rec Record, limitCounter *msgCounter, numRecords uint64) error { + if m.CommitTimeout > 0 { + var cancel func() + ctx, cancel = context.WithTimeout(ctx, m.CommitTimeout) + defer cancel() + } + err := rec.Commit(ctx) + if err != nil { + return errors.Wrap(err, "committing") + } + limitCounter.Increment(numRecords) + m.stats.Count(MetricCommittedRecords, int64(numRecords), 1) + return nil +} + +// NewLookupClient returns an instance of a lookupClient. This represents +// a somewhat generic interface to a separate data store; currently the +// only implementation uses Postgres. This is also used for testing. +func (m *Main) NewLookupClient() (*PostgresClient, error) { + return NewPostgresClient(m.LookupDBDSN, m.Index, m.log) +} + +func (m *Main) setupClient() (*tls.Config, error) { + var tlsConfig *tls.Config + var err error + if m.TLS.CertificatePath != "" { + tlsConfig, err = GetTLSConfig(&m.TLS, m.Log()) + if err != nil { + return nil, errors.Wrap(err, "getting TLS config") + } + m.client, err = pilosaclient.NewClient(m.PilosaHosts, pilosaclient.OptClientTLSConfig(tlsConfig), pilosaclient.OptClientStatsClient(m.stats)) + if err != nil { + return nil, errors.Wrap(err, "getting featurebase client with TLS") + } + } else { + m.client, err = pilosaclient.NewClient(m.PilosaHosts, pilosaclient.OptClientRetries(2), pilosaclient.OptClientTotalPoolSize(1000), pilosaclient.OptClientPoolSizePerRoute(400), pilosaclient.OptClientStatsClient(m.stats)) + if err != nil { + return nil, errors.Wrap(err, "getting featurebase client") + } + } + return tlsConfig, nil +} + +func (m *Main) setupStats() error { + if m.Stats != "" { + opts := []prometheus.ClientOption{prometheus.OptClientNamespace(m.Namespace)} + m.stats, _ = prometheus.NewPrometheusClient(opts...) // ignore error that must be nil + + mux := http.NewServeMux() + // reg := prom.NewRegistry() // TODO switch to this once pilosa PrometheusClient is fixed and doesn't use the global registry internally. + // also change prom.DefaultGatherer to be "reg" at that time + reg := prom.DefaultRegisterer + promHandler := promhttp.InstrumentMetricHandler(reg, promhttp.HandlerFor(prom.DefaultGatherer, promhttp.HandlerOpts{})) + mux.Handle("/metrics", promHandler) + + mux.Handle("/metrics.json", metricsJSONHandler{metricsURI: "http://" + m.Stats + "/metrics"}) + m.metricsServer = &http.Server{Addr: m.Stats, Handler: mux} + ln, err := net.Listen("tcp", m.Stats) + if err != nil { + return errors.Wrapf(err, "listen for metrics on '%s'", m.Stats) + } + + go func() { + m.log.Printf("Serving Prometheus metrics with namespace \"%s\" at %v/metrics\n", m.Namespace, m.Stats) + err = m.metricsServer.Serve(ln) + if err != http.ErrServerClosed { + m.log.Printf("serve metrics on '%s': %v", m.Stats, err) + } + }() + } + return nil + +} + +type metricsJSONHandler struct { + metricsURI string +} + +func (h metricsJSONHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + + transport := http.DefaultTransport.(*http.Transport).Clone() + + mfChan := make(chan *dto.MetricFamily, 60) + errChan := make(chan error) + go func() { + err := prom2json.FetchMetricFamilies(h.metricsURI, mfChan, transport) + errChan <- err + }() + + metrics := []*prom2json.Family{} + for mf := range mfChan { + metrics = append(metrics, prom2json.NewFamily(mf)) + } + err := <-errChan + if err != nil { + http.Error(w, "ERROR: fetching metrics: "+err.Error(), http.StatusInternalServerError) + return + } + + err = json.NewEncoder(w).Encode(metrics) + if err != nil { + http.Error(w, "ERROR: json write error: "+err.Error(), http.StatusInternalServerError) + return + } +} + +func (m *Main) runDeleter(c int, limitCounter *msgCounter) error { + m, err := m.clone() + if err != nil { + return errors.Wrap(err, "cloning *Main before delete") + } + m.log.Printf("start deleter %d", c) + source, err := m.NewSource() + if err != nil { + return errors.Wrap(err, "getting source") + } + defer func() { + err = source.Close() + if err != nil { + if m.log != nil { + m.log.Printf("error on close %v", err) + } + } + + }() + + if m.progress != nil { + source = m.progress.Track(source) + } + + var recordizers []Recordizer + var row *pilosaclient.Row + rec, err := source.Record() + if err == nil { + err = ErrSchemaChange // always need to fetch the schema the first time + } + + client := m.PilosaClient() + index := m.index + + for ; !limitCounter.IsDone(); rec, err = source.Record() { + if err == ErrFlush { + continue + } + m.log.Debugf("deleter record: %v\n", rec) + if err != nil { + if err == ErrSchemaChange { + schema := source.Schema() + recordizers, _, row, _, err = m.batchFromSchema(schema) + if err != nil { + return errors.Wrap(err, "batchFromSchema") + } + } else { + break + } + } + data := rec.Data() + m.log.Debugf("deleter data: %+v %+v %+v", data, data[0], data[1]) + for _, rdz := range recordizers { + err = rdz(data, row) + if err != nil { + return errors.Wrap(err, "recordizing") + } + } + + var columnIDs []uint64 + var columnKeys []string + switch rowIdent := row.ID.(type) { + case int64: + columnIDs = []uint64{uint64(rowIdent)} + case uint64: + columnIDs = []uint64{rowIdent} + case string: + columnKeys = []string{rowIdent} + case []byte: + columnKeys = []string{string(rowIdent)} + default: + return errors.Errorf("recordizing primary key, got type: %T", row.ID) + } + + // TODO: sentinel value in field list to delete entire record + directives, ok := row.Values[len(row.Values)-1].([]string) + if !ok { + if row.Values[len(row.Values)-1] == nil { + continue + } + return errors.Errorf("directives should be a string slice but got: %+v of %[1]T", row.Values[len(row.Values)-1]) + } + if len(directives) == 0 { + continue + } + + // TODO: `directives` is not necessarily equivalent to a list of fieldNames + rr, err := inspect(m.grpcClient, m.Index, columnIDs, columnKeys, directives) + if err != nil { + return errors.Wrap(err, "retrieving values for delete") + } + + trns, err := m.client.StartTransaction("", time.Minute, false, time.Hour) + if err != nil { + return errors.Wrap(err, "starting transaction") + } + for _, directive := range directives { + var recordID interface{} = row.ID + if idbytes, ok := recordID.([]byte); ok { + recordID = string(idbytes) + } + var fieldName string + if nameval := strings.SplitN(directive, "|", 2); len(nameval) == 2 { + // special handling for packed bools — may generalize this in future + fieldName = nameval[0] + value := nameval[1] + if m.PackBools == "" || fieldName != m.PackBools { + return errors.Errorf("unsupported directive '%s' field name must be equal to packed bools field: '%s'", directive, m.PackBools) + } + boolsField := index.Field(m.PackBools) + boolsExists := index.Field(m.PackBools + "-exists") + _, err := client.Query(index.BatchQuery( + boolsField.Clear(value, recordID), + boolsExists.Clear(value, recordID), + )) + if err != nil { + return errors.Wrap(err, "clearing bools") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:packed-bool"}) + continue + } else { + fieldName = directive + } + + // get field, refreshing schema if needed + field, ok := index.Fields()[fieldName] + if !ok { + schema, err := m.client.Schema() + if err != nil { + return errors.Wrap(err, "unknown field, getting new schema") + } + index = schema.Index(m.Index) + field, ok = index.Fields()[fieldName] + if !ok { + return errors.Errorf("field '%s' not found", fieldName) + } + } + + val, err := rr.Val(fieldName) + if err != nil { + return errors.Wrap(err, "getting value from inspect") + } + + switch field.Options().Type() { + case pilosaclient.FieldTypeDefault, pilosaclient.FieldTypeSet: + bq := index.BatchQuery() + if field.Options().Keys() { + valStrs, ok := val.([]string) + if !ok { + return errors.Errorf("unexpected value type for set field with keys, not []string but %T", val) + } + for _, valS := range valStrs { + bq.Add(field.Clear(valS, recordID)) + } + } else { + valIDs, ok := val.([]uint64) + if !ok { + return errors.Errorf("unexpected value type for set field, not []uint64 but %T", val) + } + for _, valID := range valIDs { + bq.Add(field.Clear(valID, recordID)) + } + } + _, err := client.Query(bq) + if err != nil { + return errors.Wrap(err, "clearing set") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:set"}) + case pilosaclient.FieldTypeMutex: + if val == "" { + continue + } + _, err := client.Query(index.BatchQuery( + field.Clear(val, recordID), + )) + if err != nil { + return errors.Wrap(err, "clearing mutex") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:mutex"}) + case pilosaclient.FieldTypeBool: + _, err := client.Query(index.BatchQuery( + field.Clear(0, recordID), + field.Clear(1, recordID), + )) + if err != nil { + return errors.Wrap(err, "clearing bool") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:bool"}) + case pilosaclient.FieldTypeInt: + _, err := client.Query(field.Clear(0, recordID)) + if err != nil { + return errors.Wrap(err, "clearing int") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:int"}) + case pilosaclient.FieldTypeDecimal: + _, err := client.Query(field.Clear(0, recordID)) + if err != nil { + return errors.Wrap(err, "clearing decimal") + } + m.stats.CountWithCustomTags(MetricDeleterRowsAdded, 1, 1, []string{"type:decimal"}) + case pilosaclient.FieldTypeTime: + return errors.Errorf("deletion on time fields unimplemented") + default: + return errors.Errorf("unhandled field type %s", field.Options().Type()) + } + } + _, err = m.client.FinishTransaction(trns.ID) + if err != nil { + return errors.Wrap(err, "finishing transaction") + } + err = m.commitRecord(context.Background(), rec, limitCounter, 1) + if err != nil { + return errors.Wrap(err, "committing record") + } + if limitCounter.IsDone() { + return nil + } + } + + if !errors.Is(err, io.EOF) { + return errors.Wrap(err, "deleter getting record") + } + return nil +} + +type inspectRecord proto.RowResponse + +func (rr *inspectRecord) Val(field string) (interface{}, error) { + for i, columnInfo := range rr.Headers { + cr := rr.Columns[i] + if columnInfo.Name == field { + switch typ := columnInfo.GetDatatype(); typ { + case "[]uint64": + return cr.GetUint64ArrayVal().GetVals(), nil + case "[]string": + return cr.GetStringArrayVal().GetVals(), nil + case "bool": + return cr.GetBoolVal(), nil + case "float64": + return cr.GetFloat64Val(), nil + case "decimal": + return cr.GetDecimalVal(), nil + case "int64": + return cr.GetInt64Val(), nil + case "uint64": + return cr.GetUint64Val(), nil + case "string": + return cr.GetStringVal(), nil + default: + return nil, errors.Errorf("unhandled column info data type: '%s'", typ) + } + } + } + return nil, errors.Errorf("field '%s' not found in inspect record", field) +} + +func inspect(grpcClient *pilosagrpc.GRPCClient, index string, columnIDs []uint64, columnKeys []string, fieldFilters []string) (*inspectRecord, error) { + stream, err := grpcClient.Inspect(context.Background(), index, columnIDs, columnKeys, "", fieldFilters, 1, 0) + if err != nil { + return nil, errors.Wrapf(err, "calling inspect") + } + row, err := stream.Recv() + if errors.Is(err, io.EOF) { + return nil, err + } + if err != nil { + return nil, errors.Wrapf(err, "receiving row") + } + return (*inspectRecord)(row), nil +} + +func (m *Main) findPrimary() (*url.URL, error) { + status, err := m.client.Status() + if err != nil { + return nil, errors.Wrap(err, "looking up cluster status") + } + for _, n := range status.Nodes { + if !n.IsPrimary { + continue + } + + uri := n.URI.URI() + url, err := url.Parse(uri.Normalize()) + if err != nil { + return nil, errors.Wrap(err, "parsing normalized primary node address") + } + return url, nil + } + + return nil, errors.New("primary node not found") +} + +// importBatch executes batch.Import() and saves its timing. +func (m *Main) importBatch(batch pilosaclient.RecordBatch) error { + t := time.Now() + err := batch.Import() + elapsed := time.Since(t) + atomic.AddInt64((*int64)(&m.importDuration), int64(elapsed)) + return err +} + +type Recordizer func(rawRec []interface{}, rec *pilosaclient.Row) error + +func (m *Main) batchFromSchema(schema []Field) ([]Recordizer, pilosaclient.RecordBatch, *pilosaclient.Row, []int, error) { + // Before attempting to do anything, check for duplicates in the schema. + { + dedup := make(map[string]struct{}) + for _, f := range schema { + name := f.DestName() + if name == "" { + continue + } + if _, dup := dedup[name]; dup { + return nil, nil, nil, nil, errors.Errorf("found duplicate field %q", name) + } + dedup[name] = struct{}{} + } + } + + // From the schema, and the configuration stored on Main, we need + // to create a []pilosaclient.Field and a []Recordizer processing + // functions which take a []interface{} which conforms to the + // schema, and converts it to a record which conforms to the + // []pilosaclient.Field. + // + // The relevant config options on Main are: + // 1. PrimaryKeyFields, IDField, AutoGenerate + // 2. PackBools + // 3. BatchSize (gets passed directly to the batch) + // + // For PrimaryKeyFields and IDField there is some complexity. + // There are 3 top level options: one, the other, or neither + // (auto-generated IDs). + // + // 1. PrimarKeyFields - the main question here is whether—in + // addition to combining these and translating them to column + // ID—we should index them separately. I think the answer by + // default should be yes. + // + // 2. IDField — this is pretty easy. Use the integer value as the + // column ID. Do not index it separately by default. + // + // 3. Autogenerate IDs. Ideally using a RangeAllocator per + // concurrent goroutine. OK, let's assume that if we set row.ID to + // nil, the auto generation can happen inside the Batch. + recordizers := make([]Recordizer, 0) + + // lookupWriteIdxs contains a slice of integers representing the + // slice indexes, in the record, that should be imported into the + // lookup data store. + lookupWriteIdxs := make([]int, 0) + + var rz Recordizer + skips := make(map[int]struct{}) + var err error + + // primary key stuff + if len(m.PrimaryKeyFields) != 0 { + rz, skips, err = getPrimaryKeyRecordizer(schema, m.PrimaryKeyFields) + if err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "getting primary key recordizer") + } + } else if m.IDField != "" { + for fieldIndex, field := range schema { + if field.DestName() == m.IDField { + if _, ok := field.(IDField); !ok { + if _, ok := field.(IntField); !ok { + return nil, nil, nil, nil, errors.Errorf("specified column id field %s is not an IDField or an IntField: %T", m.IDField, field) + } + } + fieldIndex := fieldIndex + rz = func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + id, err := field.PilosafyVal(rawRec[fieldIndex]) + if err != nil { + return errors.Wrapf(err, "converting %+v to ID", rawRec[fieldIndex]) + } + if uid, ok := id.(uint64); ok { + rec.ID = uid + } else if iid, ok := id.(int64); ok { + if iid < 0 { + return errors.Errorf("can't use negative value %v as ID", iid) + } + rec.ID = uint64(iid) + } else { + return errors.Errorf("can't convert %v of %[1]T to uint64 for use as ID", id) + } + return nil + } + skips[fieldIndex] = struct{}{} + break + } + } + if rz == nil { + return nil, nil, nil, nil, errors.Errorf("ID field %s not found", m.IDField) + } + } else if m.AutoGenerate { + m.log.Debugf("getting no recordizer because we're autogenerating IDs") + } + if rz != nil { + recordizers = append(recordizers, rz) + } + + // set up bool fields + var boolField, boolFieldExists *pilosaclient.Field + + // We only need to set up the packed bool fields if the schema + // contains at least one bool field. + if m.PackBools != "" && Fields(schema).ContainsBool() { + // See if boolField and boolFieldExists already exist in Pilosa. + // If they do, ensure that their options are compatible with what we + // expect of a packed bool field. + if m.index.HasField(m.PackBools) { + pBoolField := m.index.Field(m.PackBools) + if err := m.checkFieldCompatibility(pBoolField, nil, m.PackBools); err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "checking packed bool field compatibility") + } + } + packBoolsExistsFld := m.PackBools + "-exists" + if m.index.HasField(packBoolsExistsFld) { + pBoolFieldExists := m.index.Field(packBoolsExistsFld) + if err := m.checkFieldCompatibility(pBoolFieldExists, nil, packBoolsExistsFld); err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "checking packed bool exists field compatibility") + } + } + boolField = m.index.Field(m.PackBools, pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, pilosacore.DefaultCacheSize), pilosaclient.OptFieldKeys(true)) + boolFieldExists = m.index.Field(m.PackBools+"-exists", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, pilosacore.DefaultCacheSize), pilosaclient.OptFieldKeys(true)) + } + + fields := make([]*pilosaclient.Field, 0, len(schema)) + for i, idkField := range schema { + // we redefine these inside the loop since we're + // capturing them in closures + i := i + idkField := idkField + + // see if we previously decided to skip this field of the raw + // record. + if _, ok := skips[i]; ok { + continue + } else if _, ok := idkField.(IgnoreField); ok { + continue + } + + // Validate the field. + if err := m.validateField(idkField); err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "validating field") + } + + // Handle records where pilosa already has the field + // TODO: we should really unify this with the logic + // below so we aren't creating recordizers in two + // different places + _, isBool := idkField.(BoolField) + _, isSIBK := idkField.(SignedIntBoolKeyField) + if !isSIBK && (m.PackBools == "" || !isBool) && m.index.HasField(idkField.DestName()) { + // Validate that Pilosa's existing field matches the + // type and options of the IDK field. + pilosaField := m.index.Field(idkField.DestName()) + if err := m.checkFieldCompatibility(pilosaField, idkField, ""); err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "checking field compatibility") + } + + fields = append(fields, pilosaField) + valIdx := len(fields) - 1 + // TODO may need to have more sophisticated recordizer by type at some point + switch idkField.(type) { + case RecordTimeField: + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + + tyme, err := idkField.PilosafyVal(rawRec[i]) + if err != nil { + return errors.Wrap(err, "converting recordtimefield") + } + + rec.Time.Set(tyme.(time.Time)) + return nil + }) + case IntField, DecimalField, TimestampField: + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + rec.Clears[valIdx] = uint64(0) + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + case IDField, StringField: + hasMutex := HasMutex(idkField) + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + if hasMutex { //need to clear the mutex + rec.Clears[valIdx] = nil //? maybe + } else { //TODO(twg) set fields not supported + + } + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + default: + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + } + continue + } + + // now handle this field if it was not already found in pilosa + switch fld := idkField.(type) { + case RecordTimeField: + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + tyme, err := idkField.PilosafyVal(rawRec[i]) + if err != nil { + return errors.Wrap(err, "converting recordtimefield") + } else if tyme == nil { + return nil + } + rec.Time.Set(tyme.(time.Time)) + return nil + }) + case StringField, IDField, StringArrayField, IDArrayField: + opts := []pilosaclient.FieldOption{CacheConfigOf(fld).setOption()} + hasMutex := false + if HasMutex(fld) { + hasMutex = true + opts = append(opts, CacheConfigOf(fld).mutexOption()) + } else if q := QuantumOf(fld); q != "" { + opts = append(opts, pilosaclient.OptFieldTypeTime(pilosaclient.TimeQuantum(q))) + + ttl, err := TTLOf(fld) + if err != nil { + return nil, nil, nil, nil, err + } else { + opts = append(opts, pilosaclient.OptFieldTTL(ttl)) + } + } + + _, ok1 := fld.(StringArrayField) + if _, ok2 := fld.(StringField); ok1 || ok2 { + opts = append(opts, pilosaclient.OptFieldKeys(true)) + } + fields = append(fields, m.index.Field(fld.DestName(), opts...)) + valIdx := len(fields) - 1 + + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + if hasMutex { //need to clear the mutex + rec.Clears[valIdx] = nil + } + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + + case LookupTextField: + lookupWriteIdxs = append(lookupWriteIdxs, i) + + case BoolField: + if m.PackBools == "" { + fields = append(fields, m.index.Field(fld.DestName(), pilosaclient.OptFieldTypeBool())) + valIdx := len(fields) - 1 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + // TODO, unpacked bools aren't actually supported by importbatch + } else { + fields = append(fields, boolField, boolFieldExists) + fieldIdx := len(fields) - 2 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + rec.Clears[fieldIdx] = idkField.DestName() // clear bools bit for this field name + default: + val, err := idkField.PilosafyVal(rawRec[i]) + if err != nil { + return errors.Wrapf(err, "booling '%v' of %[1]T", val) + } + if b, ok := val.(bool); ok { + rec.Values[fieldIdx+1] = idkField.DestName() // set bools-exists bit for this field name + if b { + rec.Values[fieldIdx] = idkField.DestName() // set bools bit for this field name + } else if !m.AssumeEmptyPilosa { + rec.Clears[fieldIdx] = idkField.DestName() // clear bools bit for this field name + } + } + } + return nil + }) + continue + } + case IntField: + var opts []pilosaclient.FieldOption + switch { + case fld.Max != nil && fld.Min != nil: + opts = append(opts, pilosaclient.OptFieldTypeInt(*fld.Min, *fld.Max)) + case fld.Max == nil && fld.Min != nil: + opts = append(opts, pilosaclient.OptFieldTypeInt(*fld.Min)) + case fld.Max != nil && fld.Min == nil: + return nil, nil, nil, nil, errors.New("cannot create an integer field with only an upper bound") + default: + // No bounds contstraints. + opts = append(opts, pilosaclient.OptFieldTypeInt()) + } + if fld.ForeignIndex != "" { + opts = append(opts, pilosaclient.OptFieldForeignIndex(fld.ForeignIndex)) + } + fields = append(fields, m.index.Field(fld.DestName(), opts...)) + valIdx := len(fields) - 1 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + rec.Clears[valIdx] = uint64(0) + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %s, val:%+v", idkField.DestName(), rawRec[i]) + }) + case DecimalField: + fields = append(fields, m.index.Field(fld.DestName(), pilosaclient.OptFieldTypeDecimal(fld.Scale))) + valIdx := len(fields) - 1 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + rec.Clears[valIdx] = uint64(0) + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + case TimestampField: + fields = append(fields, m.index.Field(fld.DestName(), pilosaclient.OptFieldTypeTimestamp(fld.epoch(), fld.granularity()))) + valIdx := len(fields) - 1 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + switch rawRec[i].(type) { + case DeleteSentinel: + rec.Clears[valIdx] = uint64(0) + default: + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + } + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + case DateIntField: + fields = append(fields, m.index.Field(fld.DestName(), pilosaclient.OptFieldTypeInt())) + valIdx := len(fields) - 1 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + rec.Values[valIdx], err = idkField.PilosafyVal(rawRec[i]) + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + case SignedIntBoolKeyField: + name := fld.DestName() + fields = append(fields, + m.index.Field(name, pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, pilosacore.DefaultCacheSize)), + m.index.Field(name+"-exists", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, pilosacore.DefaultCacheSize)), + ) + valIdx := len(fields) - 2 + recordizers = append(recordizers, func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + val, err := idkField.PilosafyVal(rawRec[i]) + if val == nil && err == nil { + rec.Values[valIdx] = nil + rec.Values[valIdx+1] = nil + return nil + } + rowID, ok := val.(int64) + if !ok { + return errors.Errorf("SignedIntBoolKey value needs to be int64, got %+v of %[1]T", val) + } + + if rowID > 0 { + rec.Values[valIdx] = uint64(rowID) + } else { + rowID = -rowID + if !m.AssumeEmptyPilosa { + rec.Clears[valIdx] = uint64(rowID) + } + } + rec.Values[valIdx+1] = uint64(rowID) + + return errors.Wrapf(err, "converting field %d:%+v, val:%+v", i, idkField, rawRec[i]) + }) + + default: + return nil, nil, nil, nil, errors.Errorf("unknown schema field type %T %[1]v", idkField) + } + } + + err = m.client.SyncIndex(m.index) + if err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "syncing schema") + } + + // Now we need to get the schema back from the server and rewrite + // our local fields to make sure we have all the computed options + // (like 'base' on int fields). + sSchema, err := m.client.Schema() + if err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "fetching final schema") + } + for i, fld := range fields { + fields[i] = sSchema.Index(m.index.Name()).Field(fld.Name()) + } + + batch, err := m.newBatch(fields) + if err != nil { + return nil, nil, nil, nil, errors.Wrap(err, "creating batch") + } + row := &pilosaclient.Row{ + Values: make([]interface{}, len(fields)), + Clears: make(map[int]interface{}), + } + return recordizers, batch, row, lookupWriteIdxs, nil +} + +func (m *Main) newBatch(fields []*pilosaclient.Field) (pilosaclient.RecordBatch, error) { + if m.UseIngestAPI { + return pilosaclient.NewIngestAPIBatch(m.client, m.BatchSize, m.log, fields), nil + } + return pilosaclient.NewBatch(m.client, m.BatchSize, m.index, fields, + pilosaclient.OptLogger(m.log), + pilosaclient.OptCacheMaxAge(m.CacheLength), + pilosaclient.OptSplitBatchMode(m.ExpSplitBatchMode), + pilosaclient.OptMaxStaleness(m.BatchMaxStaleness), + pilosaclient.OptKeyTranslateBatchSize(m.KeyTranslateBatchSize), + pilosaclient.OptUseShardTransactionalEndpoint(m.UseShardTransactionalEndpoint), + ) +} + +// validateField ensures that the field is configured correctly. +func (m *Main) validateField(fld Field) error { + if sfld, ok := fld.(StringField); ok && sfld.Mutex { + if sfld.Quantum != "" { + return errors.Errorf("can't specify a time quantum on a string mutex field: '%s'", fld.Name()) + } + if sfld.TTL != "0s" && sfld.TTL != "" { + return errors.Errorf("can't specify a TTL on a string mutex field: '%s'", fld.Name()) + } + } + if sfld, ok := fld.(IDField); ok && sfld.Mutex { + if sfld.Quantum != "" { + return errors.Errorf("can't specify a time quantum on a id mutex field: '%s'", fld.Name()) + } + if sfld.TTL != "0s" && sfld.TTL != "" { + return errors.Errorf("can't specify a TTL on a id mutex field: '%s'", fld.Name()) + } + } + return nil +} + +// checkFieldCompatibility ensures that the IDK field is compatible +// with the existing (i.e. same name) Pilosa field. If it is compatible +// but has some minor differences (a different cache size, for example), +// then it will log the difference and return with no error. If it is +// obviously incompatible then it returns an error. +func (m *Main) checkFieldCompatibility(pFld *pilosaclient.Field, iFld Field, packFld string) error { + pFldOpts := pFld.Options() + + // Populate an anonymous struct (which tracks *pilosaclient.FieldOptions) + // based on what we know about iFld. Then use that to compare + // against pFldOpts. + iFldOpts := struct { + fieldType pilosaclient.FieldType + timeQuantum pilosaclient.TimeQuantum + cacheType pilosaclient.CacheType + cacheSize int + min pql.Decimal + max pql.Decimal + scale int64 + keys bool + foreignIndex string + timeUnit string + TTL time.Duration + }{} + + // name holds the field name, used in log/error messages. + var name string + + // If we passed an argument indicating that this is a packed bool field + // (packBool = true), then instead of using iFld to build iFldOpts, we + // create iFldOpts with the options we expect from the packed bool field. + if packFld != "" { + name = packFld + iFldOpts.fieldType = pilosaclient.FieldTypeSet + iFldOpts.cacheType = pilosaclient.CacheTypeRanked + iFldOpts.cacheSize = pilosacore.DefaultCacheSize + iFldOpts.keys = true + } else { + name = iFld.DestName() + switch fld := iFld.(type) { + case StringField, IDField, StringArrayField, IDArrayField: + iFldOpts.fieldType = pilosaclient.FieldTypeSet + cc := CacheConfigOf(fld) + iFldOpts.cacheType = cc.CacheType + iFldOpts.cacheSize = cc.CacheSize + + if HasMutex(fld) { + iFldOpts.fieldType = pilosaclient.FieldTypeMutex + iFldOpts.cacheType = pilosaclient.CacheTypeRanked + iFldOpts.cacheSize = pilosacore.DefaultCacheSize + } else if q := QuantumOf(fld); q != "" { + iFldOpts.fieldType = pilosaclient.FieldTypeTime + iFldOpts.timeQuantum = pilosaclient.TimeQuantum(q) + + ttl, err := TTLOf(fld) + if err != nil { + return err + } else { + iFldOpts.TTL = ttl + } + } + + _, ok1 := fld.(StringArrayField) + if _, ok2 := fld.(StringField); ok1 || ok2 { + iFldOpts.keys = true + } + case BoolField: + if m.PackBools != "" { + // The compatibility check for packed bool fields + // is handled when packBool = true. + return nil + } + iFldOpts.fieldType = pilosaclient.FieldTypeBool + case IntField: + iFldOpts.fieldType = pilosaclient.FieldTypeInt + iFldOpts.foreignIndex = fld.ForeignIndex + // Default min/max to pFld min/max. In the case + // where fld min/max are not specified we won't + // error on compatibility with pFld because + // the values will be the same. + min := pFldOpts.Min() + max := pFldOpts.Max() + if fld.Min != nil { + min = pql.NewDecimal(*fld.Min, 0) + if fld.Max != nil { + max = pql.NewDecimal(*fld.Max, 0) + } + } + iFldOpts.min = min + iFldOpts.max = max + case DecimalField: + iFldOpts.fieldType = pilosaclient.FieldTypeDecimal + iFldOpts.scale = fld.Scale + // Default min/max to pFld min/max. In the case + // where fld min/max are not specified we won't + // error on compatibility with pFld because + // the values will be the same. + min := pFldOpts.Min() + max := pFldOpts.Max() + iFldOpts.min = min + iFldOpts.max = max + case TimestampField: + iFldOpts.fieldType = pilosaclient.FieldTypeTimestamp + iFldOpts.timeUnit = pFldOpts.TimeUnit() + iFldOpts.min = pFldOpts.Min() + iFldOpts.max = pFldOpts.Max() + case DateIntField: + iFldOpts.fieldType = pilosaclient.FieldTypeInt + iFldOpts.min = pFldOpts.Min() + iFldOpts.max = pFldOpts.Max() + case SignedIntBoolKeyField: + // TODO: we actually need to compare 2 fields + iFldOpts.fieldType = pilosaclient.FieldTypeSet + iFldOpts.cacheType = pilosaclient.CacheTypeRanked + iFldOpts.cacheSize = pilosacore.DefaultCacheSize + default: + return errors.Errorf("can't check compatibility of unknown field: %s (%T)", iFld.Name(), iFld) + } + } + + // Keep a list of errors and a list of logs in order to + // display all logs and all errors at once. + var errs []string + var logs []string + + // compare the two field option structs + if i, p := iFldOpts.fieldType, pFldOpts.Type(); i != p { + errs = append(errs, fmt.Sprintf("idk field type %s is incompatible with featurebase field type %s: %s", i, p, name)) + } + if i, p := iFldOpts.timeQuantum, pFldOpts.TimeQuantum(); i != p { + logs = append(logs, fmt.Sprintf("idk time quantum '%s' differs from featurebase time quantum '%s': %s", i, p, name)) + } + if i, p := iFldOpts.TTL, pFldOpts.TTL(); i != p { + logs = append(logs, fmt.Sprintf("idk TTL '%s' differs from featurebase TTL '%s': %s", i, p, name)) + } + if i, p := iFldOpts.cacheType, pFldOpts.CacheType(); i != p { + logs = append(logs, fmt.Sprintf("idk cache type '%s' differs from featurebase cache type '%s': %s", i, p, name)) + } + if i, p := iFldOpts.cacheSize, pFldOpts.CacheSize(); i != p { + logs = append(logs, fmt.Sprintf("idk cache size %d differs from featurebase cache size %d: %s", i, p, name)) + } + // We compare the decimal strings for min/max because the values for two + // pql.Decimal structs can differ, but they still represent the same value. + if i, p := iFldOpts.min, pFldOpts.Min(); i.String() != p.String() { + errs = append(errs, fmt.Sprintf("idk min %s differs from featurebase min %s: %s", i, p, name)) + } + if i, p := iFldOpts.max, pFldOpts.Max(); i.String() != p.String() { + errs = append(errs, fmt.Sprintf("idk max %s differs from featurebase max %s: %s", i, p, name)) + } + if i, p := iFldOpts.scale, pFldOpts.Scale(); i != p { + errs = append(errs, fmt.Sprintf("idk scale %d differs from featurebase scale %d: %s", i, p, name)) + } + if i, p := iFldOpts.keys, pFldOpts.Keys(); i != p { + errs = append(errs, fmt.Sprintf("idk keys %v differs from featurebase keys %v: %s", i, p, name)) + } + if i, p := iFldOpts.foreignIndex, pFldOpts.ForeignIndex(); i != p { + errs = append(errs, fmt.Sprintf("idk foreign index '%s' differs from featurebase foreign index '%s': %s", i, p, name)) + } + if i, p := iFldOpts.timeUnit, pFldOpts.TimeUnit(); i != p { + errs = append(errs, fmt.Sprintf("idk field type %s is incompatible with featurebase timeunit %s: %s", i, p, name)) + } + + // Print any log-level incompatibilities. + if len(logs) > 0 { + for i := range logs { + m.log.Printf(logs[i]) + } + } + + // Return any error-level incompatibilities. + if len(errs) > 0 { + return errors.New(strings.Join(errs, "; ")) + } + + return nil +} + +// getPrimaryKeyRecordizer returns a Recordizer function which +// extracts the primary key fields from a record, combines them, and +// sets the ID on the record. If pkFields is a single field, and that +// field is of type string, we'll return it in skipFields, because we +// won't want to index it separately. +func getPrimaryKeyRecordizer(schema []Field, pkFields []string) (recordizer Recordizer, skipFields map[int]struct{}, err error) { + if len(schema) == 0 { + return nil, nil, errors.New("can't call getPrimaryKeyRecordizer with empty schema") + } + if len(pkFields) == 0 { + return nil, nil, errors.New("can't call getPrimaryKeyRecordizer with empty pkFields") + } + fieldIndices := make([]int, 0, len(pkFields)) + for pkIndex, pk := range pkFields { + pk = strings.TrimSpace(pk) + for fieldIndex, field := range schema { + if pk == field.DestName() { + switch field.(type) { + case StringArrayField: + return nil, nil, errors.Errorf("field %s cannot be a primary key field because it is a StringArray field.", pk) + } + fieldIndices = append(fieldIndices, fieldIndex) + break + } + } + if len(fieldIndices) != pkIndex+1 { + return nil, nil, errors.Errorf("no field with primary key field name %s found. fields: %+v", pk, schema) + } + } + if len(pkFields) == 1 { + if _, ok := schema[fieldIndices[0]].(StringField); ok { + skipFields = make(map[int]struct{}, 1) + skipFields[fieldIndices[0]] = struct{}{} + } + } + recordizer = func(rawRec []interface{}, rec *pilosaclient.Row) (err error) { + // first, special case for performance when there is a single + // primary key field and it is a byte slice already. + if len(fieldIndices) == 1 { + switch recID := rawRec[fieldIndices[0]].(type) { + case []byte: + rec.ID = recID + return nil + case string: + rec.ID = recID + return nil + } + } + + idbytes, ok := rec.ID.([]byte) + if ok { + idbytes = idbytes[:0] + } else { + idbytes = make([]byte, 0) + } + buf := bytes.NewBuffer(idbytes) // TODO does the buffer escape to heap? + + for i, fieldIdx := range fieldIndices { + if i != 0 { + err := buf.WriteByte('|') + if err != nil { + return errors.Wrap(err, "writing separator") + } + } + switch val := rawRec[fieldIdx].(type) { + case []byte: + _, err := buf.Write(val) + if err != nil { + return errors.Wrapf(err, "writing byte slice to buffer") + } + case nil: + return errors.New("data for primary key should not be nil or missing") + default: + _, err := fmt.Fprintf(buf, "%v", val) + if err != nil { + return errors.Wrapf(err, "encoding primary key val:'%v' type: %[1]T", val) + } + } + + } + rec.ID = buf.Bytes() + return nil + } + return recordizer, skipFields, nil +} + +func (m *Main) validate() error { + IDSpecCount := 0 + if len(m.PrimaryKeyFields) != 0 { + IDSpecCount++ + } + if m.IDField != "" { + IDSpecCount++ + } + if m.AutoGenerate { + IDSpecCount++ + } + if IDSpecCount != 1 { + return errors.New("must set exactly one of --primary-key-field , --id-field , --auto-generate") + } + + if m.Index == "" { + return errors.New("must set an index with --pilosa.index") + } + if m.NewSource == nil { + return errors.New("must set a NewSource function on IDK ingester") + } + return nil +} + +// allowError checks if value errors of specific types are explicitly allowed by the user +func (m *Main) allowError(err error) bool { + switch { + case m.AllowIntOutOfRange && strings.Contains(err.Error(), ErrIntOutOfRange.Error()): + return true + case m.AllowDecimalOutOfRange && strings.Contains(err.Error(), ErrDecimalOutOfRange.Error()): + return true + case m.AllowTimestampOutOfRange && strings.Contains(err.Error(), ErrTimestampOutOfRange.Error()): + return true + default: + return false + } +} diff --git a/idk/ingest_test.go b/idk/ingest_test.go new file mode 100644 index 000000000..14ae7d43c --- /dev/null +++ b/idk/ingest_test.go @@ -0,0 +1,1542 @@ +package idk + +// comment +import ( + "context" + "fmt" + "io" + "io/ioutil" + "math/rand" + "net/http" + "os" + "reflect" + "sort" + "strings" + "testing" + "time" + + "github.com/golang-jwt/jwt" + "github.com/molecula/featurebase/v3/authn" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +func configureTestFlags(main *Main) { + if pilosaHost, ok := os.LookupEnv("IDK_TEST_PILOSA_HOST"); ok { + main.PilosaHosts = []string{pilosaHost} + } else { + main.PilosaHosts = []string{"pilosa:10101"} + } + if grpcHost, ok := os.LookupEnv("IDK_TEST_PILOSA_GRPC_HOST"); ok { + main.PilosaGRPCHosts = []string{grpcHost} + } else { + main.PilosaGRPCHosts = []string{"pilosa:20101"} + } + + main.Stats = "" +} + +func TestErrFlush(t *testing.T) { + ts := newTestSource([]Field{IDField{NameVal: "aval"}}, + [][]interface{}{ + {ErrFlush}, + {ErrFlush}, + {1}, + {1}, + {ErrFlush}, + {1}, + {1}, + }) + + ingester := NewMain() + ingester.AutoGenerate = true + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("errflush%d", rand.Intn(10000000)) + ingester.BatchSize = 10 + ingester.CommitTimeout = 1 * time.Minute + + err := ingester.Run() + if err != nil { + t.Fatalf("running ingester: %v", err) + } + + client := ingester.PilosaClient() + defer func() { + if err := client.DeleteIndexByName(ingester.Index); err != nil { + t.Fatal(err) + } + }() + + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index(ingester.Index) + qr, err := client.Query(index.RawQuery("Count(Row(aval=1))")) + if err != nil { + t.Fatalf("querying: %v", err) + } + if qr.Results()[0].Count() != 4 { + t.Fatalf("unexpected number of records: %d", qr.Results()[0].Count()) + } +} + +func TestErrBatchNowStale(t *testing.T) { + schema := []Field{IDField{NameVal: "id"}} + + records := make(chan []interface{}) + committed := make(chan []interface{}, 5) + ts := newSignalingTestSource(schema, records, committed) + + ingester := NewMain() + ingester.BatchMaxStaleness = time.Millisecond + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + ingester.AutoGenerate = true + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("batchnowstaletest%d", rand.Intn(100000)) + ingester.BatchSize = 5 + + defer func() { + if err := ingester.PilosaClient().DeleteIndexByName(ingester.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + signal := make(chan struct{}) + go func() { + err := ingester.Run() + if err != nil { + t.Logf("running ingester: %v", err) + } + close(signal) + }() + + records <- []interface{}{1} + records <- []interface{}{2} + time.Sleep(time.Millisecond) + records <- []interface{}{3} + + select { + case <-committed: + case <-time.After(time.Second): + t.Fatal("Nothing has been committed") + } + + close(records) + + // make sure the Run goroutine actually finished + <-signal +} + +func TestIngestSignedIntBoolField(t *testing.T) { + + ts := newTestSource([]Field{StringField{NameVal: "rcid"}, SignedIntBoolKeyField{NameVal: "svals"}}, + [][]interface{}{ + {"a", int64(-22)}, + {"a", int64(-44)}, + {"a", int64(11)}, + {"a", int64(5)}, + {"a", int64(66)}, + {"b", int64(11)}, + {"b", int64(22)}, + {"b", int64(-32)}, + {"b", int64(-44)}, + {"b", int64(9)}, + {"b", int64(7)}, + {"c", int64(5)}, + }) + + ingester := NewMain() + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("satest%d", rand.Intn(100000)) + ingester.BatchSize = 2 + ingester.PrimaryKeyFields = []string{"rcid"} + + err := ingester.Run() + if err != nil { + t.Fatalf("running ingester: %v", err) + } + + client := ingester.PilosaClient() + defer func() { + if err := client.DeleteIndexByName(ingester.Index); err != nil { + t.Fatal(err) + } + }() + + svals := ingester.index.Field("svals") + svalsex := ingester.index.Field("svals-exists") + + if resp, err := client.Query(svals.Row(22)); err != nil { + t.Fatalf("row 22: %v", err) + } else if !stringSliceSame(resp.ResultList[0].Row().Keys, []string{"b"}) { + t.Fatalf("wanted [b], got: %+v", resp.ResultList[0].Row().Keys) + } + + if resp, err := client.Query(svalsex.Row(22)); err != nil { + t.Fatalf("row 22: %v", err) + } else if !stringSliceSame(resp.ResultList[0].Row().Keys, []string{"a", "b"}) { + t.Fatalf("wanted [a b], got: %+v", resp.ResultList[0].Row().Keys) + } + + if resp, err := client.Query(svalsex.Row(44)); err != nil { + t.Fatalf("row 22: %v", err) + } else if !stringSliceSame(resp.ResultList[0].Row().Keys, []string{"a", "b"}) { + t.Fatalf("wanted [b], got: %+v", resp.ResultList[0].Row().Keys) + } + + if resp, err := client.Query(svalsex.Row(5)); err != nil { + t.Fatalf("row 22: %v", err) + } else if !stringSliceSame(resp.ResultList[0].Row().Keys, []string{"a", "c"}) { + t.Fatalf("wanted [b], got: %+v", resp.ResultList[0].Row().Keys) + } + + if resp, err := client.Query(svals.Row(5)); err != nil { + t.Fatalf("row 22: %v", err) + } else if !stringSliceSame(resp.ResultList[0].Row().Keys, []string{"a", "c"}) { + t.Fatalf("wanted [b], got: %+v", resp.ResultList[0].Row().Keys) + } +} + +// TestSingleBoolClear essentially creates an import batch which +// clears a bit in a particular fragment without setting a bit in that +// same fragment. There's a potential optimization in the pilosa client +// batch import code that will break this test if not done carefully. +func TestSingleBoolClear(t *testing.T) { + ts := newTestSource([]Field{IDField{NameVal: "id"}, BoolField{NameVal: "likes_chocolate"}}, + [][]interface{}{ + {0, true}, + }) + + ingester := NewMain() + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("single_bool_clear%d", rand.Intn(100000)) + ingester.BatchSize = 1 + ingester.IDField = "id" + + if err := ingester.Run(); err != nil { + t.Fatalf("running ingester: %v", err) + } + + client := ingester.PilosaClient() + defer func() { + if err := client.DeleteIndexByName(ingester.Index); err != nil { + t.Fatal(err) + } + }() + + bools := ingester.index.Field("bools") + //boolsExists := ingester.index.Field("bools-exists") + + if resp, err := client.Query(bools.Row("likes_chocolate")); err != nil { + t.Fatalf("likes_chocolate: %v", err) + } else if resp.ResultList[0].Row().Columns[0] != 0 { + t.Fatalf("wanted [0], got: %+v", resp.ResultList[0].Row().Columns) + } + + ts2 := newTestSource([]Field{IDField{NameVal: "id"}, BoolField{NameVal: "likes_chocolate"}}, + [][]interface{}{ + {0, false}, + }) + + ingester2 := NewMain() + configureTestFlags(ingester2) + ingester2.NewSource = func() (Source, error) { return ts2, nil } + ingester2.Index = ingester.Index + ingester2.IDField = "id" + + if err := ingester2.Run(); err != nil { + t.Fatalf("running ingester2: %v", err) + } + + if resp, err := client.Query(bools.Row("likes_chocolate")); err != nil { + t.Fatalf("likes_chocolate: %v", err) + } else if len(resp.ResultList[0].Row().Columns) != 0 { + t.Fatalf("wanted [], got: %+v", resp.ResultList[0].Row().Columns) + } +} + +func TestForeignKeyRegression(t *testing.T) { + ts := newTestSource([]Field{IDField{NameVal: "id"}, IntField{NameVal: "fk1", ForeignIndex: "testusers834"}}, + [][]interface{}{ + {0, "blah"}, + {1, "bleh"}, + {2, "blue"}, + }) + ingester := NewMain() + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("fkreg%d", rand.Intn(100000)) + ingester.BatchSize = 2 + ingester.IDField = "id" + + defer func() { + if err := ingester.PilosaClient().DeleteIndexByName(ingester.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + onFinishRun, err := ingester.Setup() + if err != nil { + t.Fatalf("setting up ingester: %v", err) + } + defer onFinishRun() + + client := ingester.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + index := schema.Index("testusers834", pilosaclient.OptIndexKeys(true)) + err = client.SyncIndex(index) + if err != nil { + t.Fatalf("syncing schema: %v", err) + } + + defer func() { + if err := client.DeleteIndexByName("testusers834"); err != nil { + t.Logf("deleting testusers index: %v", err) + } + }() + + // this previously panicked because Batch.toTranslate wasn't + // getting cleared for int fields. + err = ingester.run() + if err != nil { + t.Fatalf("running ingester: %v", err) + } + +} + +// Test String Arrays w/ various ingester configurations +func TestIngestStringArrays(t *testing.T) { + // TODO: test with IDField + ts := *newTestSource( + []Field{ + StringField{NameVal: "aba"}, + StringField{NameVal: "db"}, + IntField{NameVal: "id"}, + StringArrayField{NameVal: "sa1"}, + }, + [][]interface{}{ + {"a", "b", 1, []string{"a", "b", "c"}}, + {"a", "b", 1, []string{"z"}}, + {"a", "b", 1, []string{}}, + {"a", "b", 1, []string{"q", "r", "s", "t"}}, + {"a", "b", 1, nil}, + {"a", "b", 1, []string{"a", "b", "c"}}, + {"a", "b", 1, []string{"a", "b", "c"}}, + {"a", "b", 1, []string{"z"}}, + {"a", "b", 1, []string{}}, + {"a", "b", 1, []string{"q", "r", "s", "t"}}, + {"a", "b", 1, nil}, + {"a", "b", 1, []string{"a", "b", "c"}}, + }, + ) + certPath, ok := os.LookupEnv("IDK_TEST_CERT_PATH") + if !ok { + certPath = "/certs" + } + + for _, tt := range []struct { + name string + ingester func() *Main + source testSource + }{ + { + name: "PrimaryKeyFields", + ingester: func() *Main { + ingester := NewMain() + configureTestFlags(ingester) + ingester.PrimaryKeyFields = []string{"aba", "db", "id"} + return ingester + }, + source: ts, + }, + { + name: "External-Generate+TLS", + ingester: func() *Main { + ingester := NewMain() + configureTestFlags(ingester) + ingester.AutoGenerate = true + ingester.ExternalGenerate = true + ingester.TLS = TLSConfig{ + CertificatePath: certPath + "/theclient.crt", + CertificateKeyPath: certPath + "/theclient.key", + CACertPath: certPath + "/ca.crt", + EnableClientVerification: true, + } + return ingester + }, + source: ts, + }, + } { + t.Run(tt.name, func(t *testing.T) { + ingester := tt.ingester() + ingester.NewSource = func() (Source, error) { return &tt.source, nil } + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("satest%d", rand.Intn(100000)) + ingester.BatchSize = 5 + defer func() { + if err := ingester.PilosaClient().DeleteIndexByName(ingester.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + err := ingester.Run() + if err != nil { + t.Fatalf("running ingester: %v", err) + } + + client := ingester.PilosaClient() + sa1 := ingester.index.Field("sa1") + + _, err = client.Query(sa1.Row("a")) + if err != nil { + t.Fatalf("row a: %v", err) + } + + }) + } + +} + +func TestIngesterServesPrometheusEndpoint(t *testing.T) { + schema := []Field{ + StringField{NameVal: "aba"}, + StringField{NameVal: "db"}, + IntField{NameVal: "id"}, + StringArrayField{NameVal: "sa1"}, + } + + records := make(chan []interface{}) + var committed chan []interface{} // make nil channel + ts := newSignalingTestSource(schema, records, committed) + + ingester := NewMain() + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts, nil } + ingester.PrimaryKeyFields = []string{"aba", "db", "id"} + rand.Seed(time.Now().UTC().UnixNano()) + ingester.Index = fmt.Sprintf("statstest%d", rand.Intn(100000)) + ingester.BatchSize = 5 + ingester.Stats = "localhost:9093" + signal := make(chan struct{}) + go func() { + err := ingester.Run() + if err != nil { + t.Logf("running ingester: %v", err) + } + close(signal) + }() + records <- []interface{}{"a", "b", 1, []string{"a", "b", "c"}} + + // Try to read stats directly + url := "http://" + ingester.Stats + "/metrics" + response, err := http.Get(url) + if err != nil { + t.Errorf("request error: %v", err) + } + contents, err := ioutil.ReadAll(response.Body) + defer response.Body.Close() + if err != nil { + t.Errorf("read error: %v", err) + } + if strings.Contains(string(contents), MetricIngesterRowsAdded) { + t.Errorf("metric name missing: %v", MetricIngesterRowsAdded) + } + close(records) + + // make sure the Run goroutine actually finished + <-signal +} + +func TestDelete(t *testing.T) { + rand.Seed(time.Now().UTC().UnixNano()) + indexName := fmt.Sprintf("satest%d", rand.Intn(100000)) + primaryKeyFields := []string{"aba", "db", "id"} + + ts_write := newTestSource( + []Field{ + StringField{NameVal: "aba"}, + StringField{NameVal: "db"}, + IntField{NameVal: "id"}, + StringArrayField{NameVal: "sa1"}, + StringField{NameVal: "s1"}, + StringField{NameVal: "s2", Mutex: true}, + IntField{NameVal: "i1"}, + DecimalField{NameVal: "d1"}, + BoolField{NameVal: "bools|b1"}, + }, + [][]interface{}{ + {"a", "b", 2, []string{"d", "e", "f"}, "v", "w", 14, 15.8, true}, + {"a", "b", 3, []string{"d", "e", "f"}, "v", "w'll", 14, 15.8, true}, + }, + ) + + // first set up deleter - we want to make sure that even if it starts first before the index is created that things still work + ts_delete := newTestSource( + []Field{ + //IDField{NameVal: "id"}, + StringField{NameVal: "aba"}, + StringField{NameVal: "db"}, + IntField{NameVal: "id"}, + StringArrayField{NameVal: "fields"}, + }, + [][]interface{}{ + // {primarykey1, primarykey2, primarykey3, []fieldName} + {"a", "b", 2, []string{"sa1"}}, + {"a", "b", 2, []string{"s1"}}, + {"a", "b", 2, []string{"s2"}}, + {"a", "b", 3, []string{"s2"}}, // regression - try deleting value with single quote + {"a", "b", 2, []string{"i1"}}, + {"a", "b", 2, []string{"d1"}}, + {"a", "b", 1, []string{"bools|b1"}}, + // try deleting same fields again + {"a", "b", 2, []string{"sa1"}}, + {"a", "b", 2, []string{"s1"}}, + {"a", "b", 2, []string{"s2"}}, + {"a", "b", 2, []string{"i1"}}, + {"a", "b", 2, []string{"d1"}}, + {"a", "b", 1, []string{"bools|b1"}}, + // try some bad messages for sanity check + {"a", "b", 2, []string{}}, + //{"a", "b", 1, []string{""}}, + //{"a", "b", 1, []string{"not-exist"}}, + // {"a", "b", []string{"s1"}}, + // {4, nil}, + }, + ) + deleter := NewMain() + configureTestFlags(deleter) + deleter.Delete = true + deleter.NewSource = func() (Source, error) { return ts_delete, nil } + deleter.Index = indexName + deleter.BatchSize = 5 + deleter.PrimaryKeyFields = []string{"aba", "db", "id"} + + onFinishRun, err := deleter.Setup() + if err != nil { + t.Fatalf("setting up deleter: %v", err) + } + defer onFinishRun() + + ingester := NewMain() + configureTestFlags(ingester) + ingester.NewSource = func() (Source, error) { return ts_write, nil } + ingester.PrimaryKeyFields = primaryKeyFields + ingester.Index = indexName + ingester.BatchSize = 1 + + defer func() { + if err := ingester.PilosaClient().DeleteIndexByName(ingester.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + err = ingester.Run() + if err != nil { + t.Fatalf("running ingester: %v", err) + } + + client := ingester.PilosaClient() + sa1 := ingester.index.Field("sa1") + s2 := ingester.index.Field("s2") + + if resp, err := client.Query(sa1.Row("d")); err != nil { + t.Fatalf("row sa1=d: %v", err) + } else if keys := resp.Result().Row().Keys; !stringSliceSame(keys, []string{"a|b|2", "a|b|3"}) { + t.Errorf("exp: %v\ngot: %v", "[a|b|2 a|b|3]", keys) + } + + if resp, err := client.Query(s2.Row("w'll")); err != nil { + t.Fatalf("row a: %v", err) + } else if keys := resp.Result().Row().Keys; !stringSliceSame(keys, []string{"a|b|3"}) { + t.Errorf("unexpected keys for s2: %v", resp.Result().Row().Keys) + } + + if err := deleter.run(); err != nil && errors.Cause(err) != io.EOF { + t.Fatalf("running deleter: %v", err) + } + + if resp, err := client.Query(sa1.Row("d")); err != nil { + t.Fatalf("row a: %v", err) + } else if keys := resp.Result().Row().Keys; len(keys) != 1 || keys[0] != "a|b|3" { + t.Errorf("exp: %v\ngot: %v", "[a|b|3]", keys) + } + + if resp, err := client.Query(s2.Row("w'll")); err != nil { + t.Fatalf("s2 row w'll: %v", err) + } else if len(resp.Result().Row().Keys) != 0 { + t.Errorf("unexpected keys for s2 w'll: %v", resp.Result().Row().Keys) + } + +} + +func TestGetPrimaryKeyRecordizer(t *testing.T) { + tests := []struct { + name string + schema []Field + pkFields []string + expErr string + expSkip map[int]struct{} + rawRec []interface{} + expID interface{} + }{ + { + name: "no schema", + expErr: "can't call getPrimaryKeyRecordizer with empty schema", + }, + { + name: "no pkfields", + schema: []Field{StringField{}}, + expErr: "can't call getPrimaryKeyRecordizer with empty pkFields", + }, + { + name: "primary is StringArray", + schema: []Field{StringArrayField{NameVal: "blah"}}, + pkFields: []string{"blah"}, + expErr: "field blah cannot be a primary key field because it is a StringArray field.", + }, + { + name: "primary is StringArray complex", + schema: []Field{StringField{NameVal: "zaa"}, IntField{NameVal: "hey"}, StringArrayField{NameVal: "blah"}}, + pkFields: []string{"blah", "zaa"}, + expErr: "field blah cannot be a primary key field because it is a StringArray field.", + }, + { + name: "unknown pkfield", + schema: []Field{StringField{NameVal: "zaa"}}, + pkFields: []string{"zaa", "zz"}, + expErr: "no field with primary key field name zz found", + }, + { + name: "unknown pkfield complex", + schema: []Field{StringField{NameVal: "zaa"}, IntField{NameVal: "hey"}, StringField{NameVal: "blah"}}, + pkFields: []string{"blah", "zz", "zaa"}, + expErr: "no field with primary key field name zz found", + }, + { + name: "skip primary", + schema: []Field{StringField{NameVal: "a"}, IntField{NameVal: "b"}}, + pkFields: []string{"a"}, + expSkip: map[int]struct{}{0: {}}, + rawRec: []interface{}{"a", 9}, + expID: "a", + }, + { + name: "primaries as ints", + schema: []Field{StringField{NameVal: "a"}, IntField{NameVal: "b"}, IntField{NameVal: "c"}, IntField{NameVal: "d"}}, + pkFields: []string{"c", "d", "b"}, + rawRec: []interface{}{"a", uint32(1), uint32(2), uint32(4)}, + expID: []byte("2|4|1"), + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rdz, skips, err := getPrimaryKeyRecordizer(test.schema, test.pkFields) + if test.expErr != "" { + if err == nil { + t.Fatalf("nil err, expected %s", test.expErr) + } + if !strings.Contains(err.Error(), test.expErr) { + t.Fatalf("unmatched errs exp/got\n%s\n%v", test.expErr, err) + } + return + } else if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + if !reflect.DeepEqual(skips, test.expSkip) { + t.Errorf("unmatched skips exp/got\n%+v\n%+v", test.expSkip, skips) + } + + row := &pilosaclient.Row{} + err = rdz(test.rawRec, row) + if err != nil { + t.Fatalf("unexpected error from recordizer: %v", err) + } + if !reflect.DeepEqual(test.expID, row.ID) { + t.Fatalf("mismatched row IDs exp: %+v, got: %+v", test.expID, row.ID) + } + + }) + } +} + +type serverInfo struct { + Name string + AuthToken string + PilosaHosts []string +} + +func TestBatchFromSchema(t *testing.T) { + if testing.Short() { + t.Skip() + } + type testcase struct { + name string + schema []Field + IDField string + pkFields []string + autogen bool + extgen bool + packBools string + rawRec []interface{} + rowID interface{} + rowVals []interface{} + err string + batchErr string + rdzErrs []string + time pilosaclient.QuantizedTime + lookupWriteIdxs []int + } + getQuantizedTime := func(t time.Time) pilosaclient.QuantizedTime { + qt := pilosaclient.QuantizedTime{} + qt.Set(t) + return qt + } + runTest := func(t *testing.T, test testcase, removeIndex bool, server serverInfo) { + m := NewMain() + configureTestFlags(m) + m.Index = "cmd_test_index23lkjdkfj" + m.PrimaryKeyFields = test.pkFields + m.IDField = test.IDField + m.AutoGenerate = test.autogen + m.ExternalGenerate = test.extgen + m.PackBools = test.packBools + m.BatchSize = 2 + m.Pprof = "" + m.NewSource = func() (Source, error) { return nil, nil } + if server.AuthToken != "" { + m.AuthToken = server.AuthToken + } + m.PilosaHosts = server.PilosaHosts + onFinishRun, err := m.Setup() + if strings.Contains("validation", test.name) && testErr(t, test.err, err) { + return + } + if err != nil { + t.Fatalf("%v", err) + } + defer onFinishRun() + if removeIndex { + defer func() { + err := m.client.DeleteIndex(m.index) + if err != nil { + t.Logf("deleting test index: %v", err) + } + }() + } + + rdzs, batch, row, lookupWriteIdxs, err := m.batchFromSchema(test.schema) + if testErr(t, test.err, err) { + return + } + for k, rdz := range rdzs { + err = rdz(test.rawRec, row) + if test.rdzErrs != nil && test.rdzErrs[k] != "" && testErr(t, test.rdzErrs[k], err) { + return + } + } + + if !reflect.DeepEqual(row.ID, test.rowID) { + t.Fatalf("row IDs exp: %+v got %+v", test.rowID, row.ID) + } + if !reflect.DeepEqual(row.Time, test.time) { + t.Fatalf("times not equal: exp: %+v, got: %+v", test.time, row.Time) + } + if !reflect.DeepEqual(row.Values, test.rowVals) { + t.Errorf("row values exp/got:\n%+v %[1]T\n%+v %[2]T", test.rowVals, row.Values) + if len(row.Values) == len(test.rowVals) { + for i, v := range row.Values { + if !reflect.DeepEqual(v, test.rowVals[i]) { + t.Errorf("%v %[1]T != %v %[2]T", test.rowVals[i], v) + } + } + } + t.Fail() + } + if test.lookupWriteIdxs != nil && !reflect.DeepEqual(lookupWriteIdxs, test.lookupWriteIdxs) { + t.Fatalf("lookupWriteIdxs exp: %+v got %+v", test.lookupWriteIdxs, lookupWriteIdxs) + } + + if test.autogen { + if row.ID != nil { + t.Fatalf("expected ID not to be set when autogen is used (because it gets set from nexter in the ingest loop which isn't called in this test.)") + } + row.ID = uint64(1) // set so Add doesn't panic + } + + err = batch.Add(*row) + if testErr(t, test.batchErr, err) { + return + } + } + + tests := []testcase{ + { + name: "validation", + err: "must set exactly one of --primary-key-field , --id-field , --auto-generate", + }, + { + name: "empty", + autogen: true, + err: "can't batch with no fields or batch size", + }, + { + name: "empty-w/ExtGen", + autogen: true, + extgen: true, + err: "can't batch with no fields or batch size", + }, + { + name: "no id field", + schema: []Field{StringField{}}, + IDField: "nope", + err: "ID field nope not found", + }, + { + name: "pk error", + pkFields: []string{"zoop"}, + err: "getting primary key recordizer", + }, + { + name: "pack bools", + schema: []Field{BoolField{NameVal: "a"}, IDField{NameVal: "b"}, BoolField{NameVal: "c"}}, + IDField: "b", + packBools: "bff", + rawRec: []interface{}{true, uint64(7), false}, + rowID: uint64(7), + rowVals: []interface{}{"a", "a", nil, "c"}, + }, + { + name: "don't pack bools", + schema: []Field{BoolField{NameVal: "a"}, IDField{NameVal: "b"}, BoolField{NameVal: "c"}}, + IDField: "b", + rawRec: []interface{}{true, uint64(7), false}, + rowID: uint64(7), + rowVals: []interface{}{true, false}, + err: "field type 'bool' is not currently supported through Batch", + }, + { + name: "mutex field", + schema: []Field{StringField{NameVal: "a", Mutex: true}, IDField{NameVal: "b"}}, + IDField: "b", + rawRec: []interface{}{"aval", uint64(7)}, + rowID: uint64(7), + rowVals: []interface{}{"aval"}, + }, + { + name: "mutex field with time quantum", + schema: []Field{StringField{NameVal: "a", Mutex: true, Quantum: "YM"}, IDField{NameVal: "b"}}, + IDField: "b", + rawRec: []interface{}{"aval", uint64(7)}, + rowID: uint64(7), + err: "can't specify a time quantum on a string mutex field", + }, + { + name: "ttl", + schema: []Field{StringField{NameVal: "a", Mutex: false, Quantum: "YM", TTL: "0s"}, IDField{NameVal: "b"}}, + IDField: "b", + rawRec: []interface{}{"ttl", uint64(7)}, + rowID: uint64(7), + rowVals: []interface{}{"ttl"}, + }, + { + name: "bad ttl", + schema: []Field{StringField{NameVal: "a", Mutex: false, Quantum: "YM", TTL: "bad-ttl"}, IDField{NameVal: "b"}}, + IDField: "b", + rawRec: []interface{}{"b", uint64(7)}, + rowID: uint64(7), + rowVals: []interface{}{"ttl"}, + err: "unable to parse TTL from field", + }, + { + name: "string array field", + schema: []Field{StringArrayField{NameVal: "a"}, StringField{NameVal: "b"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{[]string{"aval", "aval2"}, uint64(7)}, + rowID: []byte("7"), + rowVals: []interface{}{[]string{"aval", "aval2"}}, + }, + { + name: "id array field", + schema: []Field{IDArrayField{NameVal: "a"}, StringField{NameVal: "b"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{"1,2", uint64(7)}, + rowID: []byte("7"), + rowVals: []interface{}{[]uint64{1, 2}}, + }, + { + name: "id array field brackets", + schema: []Field{IDArrayField{NameVal: "a"}, StringField{NameVal: "b"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{"[1,2]", uint64(7)}, + rowID: []byte("7"), + rowVals: []interface{}{[]uint64{1, 2}}, + }, + { + name: "decimal field", + schema: []Field{StringField{NameVal: "a"}, DecimalField{NameVal: "b", Scale: 2}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", uint64(321)}, + rowID: "blah", + rowVals: []interface{}{int64(32100)}, + }, + { + name: "decimal field scale too small", + schema: []Field{StringField{NameVal: "a"}, DecimalField{NameVal: "b", Scale: -2}}, + pkFields: []string{"a"}, + err: "scale values outside the range", + }, + { + name: "decimal field scale too large", + schema: []Field{StringField{NameVal: "a"}, DecimalField{NameVal: "b", Scale: 20}}, + pkFields: []string{"a"}, + err: "scale values outside the range", + }, + { + name: "date int field", + schema: []Field{StringField{NameVal: "a"}, DateIntField{NameVal: "dif", Unit: Day}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", time.Date(1972, time.January, 1, 1, 1, 1, 1, time.UTC)}, + rowID: "blah", + rowVals: []interface{}{int64(730)}, + }, + { + name: "date int field string", + schema: []Field{StringField{NameVal: "a"}, DateIntField{NameVal: "dif", Unit: Day}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", "1972-01-01"}, + rowID: "blah", + rowVals: []interface{}{int64(730)}, + }, + { + name: "record time field custom units", + schema: []Field{StringField{NameVal: "b"}, RecordTimeField{NameVal: "recordTimeField1", Layout: "blah", Unit: Second}, StringField{NameVal: "domain", Quantum: "MDH"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{"blaah", 123654895, "molecula.com"}, + rowID: "blaah", + rowVals: []interface{}{"molecula.com"}, + time: getQuantizedTime(time.Unix(123654895, 0)), + }, + { + name: "record time field layout", + schema: []Field{StringField{NameVal: "b"}, RecordTimeField{NameVal: "recordTimeField1", Layout: time.RFC822}, StringField{NameVal: "domain", Quantum: "MDH"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{"blaah", "08 Mar 09 21:00 UTC", "molecula.com"}, + rowID: "blaah", + rowVals: []interface{}{"molecula.com"}, + time: getQuantizedTime(time.Unix(1236548950, 0)), + }, + { + name: "record time field epoch", + schema: []Field{StringField{NameVal: "b"}, RecordTimeField{NameVal: "recordTimeField1", Epoch: time.Date(2010, time.January, 1, 0, 0, 0, 0, time.UTC), Unit: Second}, StringField{NameVal: "domain", Quantum: "MDH"}}, + pkFields: []string{"b"}, + rawRec: []interface{}{"blaah", 1, "molecula.com"}, + rowID: "blaah", + rowVals: []interface{}{"molecula.com"}, + time: getQuantizedTime(time.Date(2010, time.January, 1, 0, 0, 1, 0, time.UTC)), + }, + { + name: "bool parsing", + schema: []Field{BoolField{NameVal: "a"}, IDField{NameVal: "b"}, BoolField{NameVal: "c"}, BoolField{NameVal: "d"}, BoolField{NameVal: "e"}, BoolField{NameVal: "f"}}, + IDField: "b", + packBools: "bff", + rawRec: []interface{}{1, uint64(7), "1", "0", nil, '1'}, + rowID: uint64(7), + rowVals: []interface{}{"a", "a", "c", "c", nil, "d", nil, nil, "f", "f"}, + }, + { + name: "timestamp field", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Granularity: "s", Unit: Millisecond}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", "5000"}, + rowID: "blah", + rowVals: []interface{}{int64(5)}, + }, + { + name: "timestamp incorrect layout", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Granularity: "s", Layout: "Mon, 02 Jan 2006 15:04:05 MST"}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", "2025-05-15T05:05:05Z"}, + rowID: "blah", + rdzErrs: []string{"", "parsing time string 2025-05-15T05:05:05Z"}, + }, + { + name: "timestamp empty string", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Epoch: time.Date(2010, time.January, 1, 0, 0, 0, 0, time.UTC), Unit: Nanosecond}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", ""}, + rowID: "blah", + rowVals: []interface{}{nil}, + }, + { + name: "timestamp nil input", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Epoch: time.Date(2010, time.January, 1, 0, 0, 0, 0, time.UTC), Unit: Nanosecond}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", nil}, + rowID: "blah", + rowVals: []interface{}{nil}, + }, + { + name: "timestamp epoch default granularity", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Epoch: time.Date(2010, time.January, 1, 0, 0, 0, 0, time.UTC), Unit: Nanosecond}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", "5000000000"}, + rowID: "blah", + rowVals: []interface{}{int64(5)}, + }, + { + name: "timestamp epoch default granularity with extgen", + schema: []Field{StringField{NameVal: "a"}, TimestampField{NameVal: "b", Epoch: time.Date(2010, time.January, 1, 0, 0, 0, 0, time.UTC), Unit: Nanosecond}}, + autogen: true, + extgen: true, + rawRec: []interface{}{"blah", "5000000000"}, + rowVals: []interface{}{"blah", int64(5)}, + }, + { + name: "lookup text", + schema: []Field{StringField{NameVal: "a"}, DateIntField{NameVal: "dif", Unit: Day}, LookupTextField{NameVal: "log"}}, + pkFields: []string{"a"}, + rawRec: []interface{}{"blah", "1972-01-01", "asdf"}, + rowID: "blah", + rowVals: []interface{}{int64(730)}, + lookupWriteIdxs: []int{2}, + }, + { + name: "int null", + pkFields: []string{"user_id"}, + rawRec: []interface{}{"1a", nil}, + rowID: "1a", + schema: []Field{StringField{NameVal: "user_id"}, + IntField{NameVal: "int_val"}, + }, + rowVals: []interface{}{nil}, + }, + } + + servers := []serverInfo{ + { + Name: "WithAuth", + AuthToken: getAuthToken(t), + PilosaHosts: []string{"http://pilosa-auth:10105"}, + }, + { + Name: "WithOutAuth", + PilosaHosts: []string{"http://pilosa:10101"}, + }, + } + + for _, server := range servers { + for _, test := range tests { + // test on fresh Pilosa + t.Run(test.name+"-1-"+server.Name, func(t *testing.T) { + runTest(t, test, false, server) + }) + // test again with index/fields in place + t.Run(test.name+"-2-"+server.Name, func(t *testing.T) { + runTest(t, test, true, server) + }) + } + } + +} + +// When ingesting into a field that already exists in Pilosa, +// ensure that we check the compatibility of the Pilosa field +// with the source field. +func TestCheckFieldCompatibility(t *testing.T) { + ingester := NewMain() + configureTestFlags(ingester) + + // Get the pilosa client from ingester. + if _, err := ingester.setupClient(); err != nil { + t.Fatal(err) + } + client := ingester.PilosaClient() + + // Create various fields which we can use to check + // ingest field compatibility. + rand.Seed(time.Now().UTC().UnixNano()) + idxName := fmt.Sprintf("compattest%d", rand.Intn(100000)) + idx := pilosaclient.NewIndex(idxName) + if err := client.CreateIndex(idx); err != nil { + t.Fatal(err) + } + defer func() { + if err := ingester.PilosaClient().DeleteIndexByName(idxName); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + if err := client.CreateField(idx.Field("pset", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeNone, 0))); err != nil { + t.Fatal(err) + } + if err := client.CreateField(idx.Field("pint", pilosaclient.OptFieldTypeInt(-1000, 1000))); err != nil { + t.Fatal(err) + } + if err := client.CreateField(idx.Field("pttl", pilosaclient.OptFieldKeys(true), pilosaclient.OptFieldTypeTime("YMD"), pilosaclient.OptFieldTTL(0))); err != nil { + t.Fatal(err) + } + if err := client.CreateField(idx.Field( + "packbools-exists", + pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, pilosaclient.CacheSizeDefault), + pilosaclient.OptFieldKeys(false), + )); err != nil { + t.Fatal(err) + } + + ingester.AutoGenerate = true + ingester.Index = idxName + ingester.index = idx + ingester.BatchSize = 5 + ingester.PackBools = "packbools" + + tests := []struct { + fld Field + val interface{} + expErr string + }{ + { + fld: StringField{NameVal: "pset"}, + val: "a", + expErr: "idk keys true differs from featurebase keys false", + }, + { + fld: IntField{NameVal: "pset"}, + val: 1, + expErr: "idk field type int is incompatible with featurebase field type set", + }, + { + fld: IntField{NameVal: "pint"}, + val: 1, + expErr: "", + }, + { + fld: IntField{NameVal: "pint", Min: int64Ptr(-100)}, + val: 1, + expErr: "idk min -100 differs from featurebase min -1000", + }, + { + fld: IntField{NameVal: "pint", Min: int64Ptr(-1000), Max: int64Ptr(100)}, + val: 1, + expErr: "idk max 100 differs from featurebase max 1000", + }, + { + fld: BoolField{NameVal: "foo"}, + val: true, + expErr: "idk keys true differs from featurebase keys false: packbools-exists", + }, + { + fld: StringField{NameVal: "pttl", Quantum: "YMD1", TTL: "1s"}, + val: "a", + expErr: "", + }, + { + fld: StringField{NameVal: "pttl", Quantum: "YMD1", TTL: "bad-format"}, + val: "a", + expErr: "", + }, + } + for i, test := range tests { + t.Run(fmt.Sprintf("test-%d", i), func(t *testing.T) { + ts := newTestSource( + []Field{test.fld}, + [][]interface{}{ + {test.val}, + }, + ) + ingester.NewSource = func() (Source, error) { return ts, nil } + err := ingester.Run() + if test.expErr != "" { + if err == nil || !strings.Contains(err.Error(), test.expErr) { + t.Fatalf("expected error: '%s', but got: '%v'", test.expErr, err) + } + } + }) + } +} + +func int64Ptr(i int64) *int64 { + return &i +} + +func testErr(t *testing.T, exp string, actual error) (done bool) { + t.Helper() + fmt.Printf("\n$$ Err Contains: %+v$$\n", actual) + if exp == "" && actual == nil { + return false + } + if exp == "" && actual != nil { + t.Fatalf("unexpected errs exp/got\n%s\n%v", exp, actual) + } + if exp != "" && actual == nil { + t.Fatalf("expected errs exp/got\n%s\n%v", exp, actual) + } + if !strings.Contains(actual.Error(), exp) { + t.Fatalf("unmatched errs exp/got\n%s\n%v", exp, actual) + } + return true +} + +type signalingTestSource struct { + records chan []interface{} + schema []Field + committed chan []interface{} +} + +func (s *signalingTestSource) Record() (Record, error) { + rec, ok := <-s.records + if !ok { + return nil, io.EOF + } + return newSliceRecord(rec, s.committed), nil +} + +func (s *signalingTestSource) Schema() []Field { + return s.schema +} +func (s *signalingTestSource) Close() error { + return nil +} + +func newSignalingTestSource(schema []Field, records chan []interface{}, committed chan []interface{}) *signalingTestSource { + return &signalingTestSource{ + schema: schema, + records: records, + committed: committed, + } +} + +type testSource struct { + i int + records [][]interface{} + schema []Field +} + +func (t *testSource) Close() error { + return nil +} + +type sliceRecord struct { + data []interface{} + committed chan []interface{} +} + +func (s *sliceRecord) Commit(ctx context.Context) error { + if s.committed == nil { + return nil + } + + select { + case <-ctx.Done(): + return ctx.Err() + case s.committed <- s.data: + return nil + } +} + +func (s *sliceRecord) Data() []interface{} { + return s.data +} + +func (s *testSource) Record() (Record, error) { + s.i++ + if s.i <= len(s.records) { + if s.records[s.i-1][0] == ErrFlush { + return nil, ErrFlush + } + return newSliceRecord(s.records[s.i-1], nil), nil + } + return nil, io.EOF +} + +func newSliceRecord(data []interface{}, committed chan []interface{}) *sliceRecord { + return &sliceRecord{ + data: data, + committed: committed, + } +} + +func (s *testSource) Schema() []Field { + return s.schema +} + +func newTestSource(schema []Field, records [][]interface{}) *testSource { + return &testSource{ + schema: schema, + records: records, + } +} + +func stringSliceSame(a, b []string) bool { + if len(a) != len(b) { + return false + } + sort.Strings(a) + sort.Strings(b) + for i := range a { + aa, bb := a[i], b[i] + if aa != bb { + return false + } + } + return true +} + +// generate authentication token for testing with pilosa-auth +// featurebase.conf used for running pilosa-auth contains same auth parameters +func getAuthToken(t *testing.T) string { + t.Helper() + var ( + ClientID = "e9088663-eb08-41d7-8f65-efb5f54bbb71" + ClientSecret = "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF" + AuthorizeURL = "https://login.microsoftonline.com/4a137d66-d161-4ae4-b1e6-07e9920874b8/oauth2/v2.0/authorize" + TokenURL = "https://login.microsoftonline.com/4a137d66-d161-4ae4-b1e6-07e9920874b8/oauth2/v2.0/token" + GroupEndpointURL = "https://graph.microsoft.com/v1.0/me/transitiveMemberOf/microsoft.graph.group?$count=true" + LogoutURL = "https://login.microsoftonline.com/common/oauth2/v2.0/logout" + Scopes = []string{"https://graph.microsoft.com/.default", "offline_access"} + Key = "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF" + ConfiguredIps = []string{} + ) + + a, err := authn.NewAuth( + logger.NewStandardLogger(os.Stdout), + "http://localhost:10101/", + Scopes, + AuthorizeURL, + TokenURL, + GroupEndpointURL, + LogoutURL, + ClientID, + ClientSecret, + Key, + ConfiguredIps, + ) + if err != nil { + t.Fatal(err) + } + + // make a valid token + tkn := jwt.New(jwt.SigningMethodHS256) + claims := tkn.Claims.(jwt.MapClaims) + claims["oid"] = "42" + claims["name"] = "valid" + token, err1 := tkn.SignedString([]byte(a.SecretKey())) + if err1 != nil { + t.Fatal(err1) + } + + return token +} + +func Test_Setup(t *testing.T) { + m := NewMain() + configureTestFlags(m) + m.AutoGenerate = true + m.Index = "test" + m.NewSource = func() (Source, error) { return nil, nil } + + token := getAuthToken(t) + m.AuthToken = token + + t.Run("test", func(t *testing.T) { + + _, err := m.Setup() + if err != nil { + t.Fatalf("Failed idk main setup: %s", err) + } + got := m.AuthToken + want := "Bearer " + token + if got != want { + t.Fatalf("got %v, but want %v", got, want) + } + }) +} +func Test_NilIngest(t *testing.T) { + type testcase struct { + name string + schema []Field + IDField string + pkFields []string + rawRec1 []interface{} + rawRec2 []interface{} + rawRec3 []interface{} + rowID interface{} + clearVals1 map[int]interface{} + clearVals2 map[int]interface{} + clearVals3 map[int]interface{} + Vals1 []interface{} + Vals2 []interface{} + Vals3 []interface{} + err string + batchErr string + rdzErrs []string + } + runTest := func(t *testing.T, test testcase, removeIndex bool, server serverInfo, rawRec []interface{}, clearmap map[int]interface{}, values []interface{}) { + m := NewMain() + configureTestFlags(m) + m.Index = "cmd_test_index23l" + m.PrimaryKeyFields = test.pkFields + m.BatchSize = 2 + m.Pprof = "" + m.NewSource = func() (Source, error) { return nil, nil } + if server.AuthToken != "" { + m.AuthToken = server.AuthToken + } + m.PilosaHosts = server.PilosaHosts + onFinishRun, err := m.Setup() + if strings.Contains("validation", test.name) && testErr(t, test.err, err) { + return + } + if err != nil { + t.Fatalf("%v", err) + } + defer onFinishRun() + if removeIndex { + defer func() { + err := m.client.DeleteIndex(m.index) + if err != nil { + t.Logf("deleting test index: %v", err) + } + }() + } + + rdzs, batch, row, _, err := m.batchFromSchema(test.schema) + if testErr(t, test.err, err) { + return + } + for k, rdz := range rdzs { + err = rdz(rawRec, row) + if test.rdzErrs != nil && test.rdzErrs[k] != "" && testErr(t, test.rdzErrs[k], err) { + return + } + } + + if !reflect.DeepEqual(row.Clears, clearmap) { + t.Fatalf("clear exp: %+v got %+v", clearmap, row.Clears) + } + if !reflect.DeepEqual(row.Values, values) { + t.Fatalf("values exp: %+v got %+v", values, row.Values) + } + err = batch.Add(*row) + if testErr(t, test.batchErr, err) { + return + } + } + + tests := []testcase{ + { + name: "int/dec null", + pkFields: []string{"user_id"}, + rawRec1: []interface{}{"1a", nil, 5, nil, 5.2}, + rawRec2: []interface{}{"1a", 2, nil, 4.4, DELETE_SENTINEL}, + rawRec3: []interface{}{"1a", DELETE_SENTINEL, 5, nil, 5.2}, + rowID: "1a", + schema: []Field{ + StringField{NameVal: "user_id"}, + IntField{NameVal: "int_val1"}, + IntField{NameVal: "int_val2"}, + DecimalField{NameVal: "dec_val1", Scale: 1}, + DecimalField{NameVal: "dec_val2", Scale: 1}, + }, + clearVals1: map[int]interface{}{}, + clearVals2: map[int]interface{}{3: uint64(0)}, + clearVals3: map[int]interface{}{0: uint64(0)}, + Vals1: []interface{}{nil, int64(5), nil, int64(52)}, + Vals2: []interface{}{int64(2), nil, int64(44), nil}, + Vals3: []interface{}{nil, int64(5), nil, int64(52)}, + }, { + name: "mutex null", + pkFields: []string{"user_id"}, + rawRec1: []interface{}{"1a", "g", uint64(1)}, + rawRec2: []interface{}{"1a", DELETE_SENTINEL, nil}, + rawRec3: []interface{}{"1a", nil, DELETE_SENTINEL}, + rowID: "1a", + schema: []Field{ + StringField{NameVal: "user_id"}, + StringField{NameVal: "string_val1", Mutex: true}, + IDField{NameVal: "id_val1", Mutex: true}, + }, + clearVals1: map[int]interface{}{}, + clearVals2: map[int]interface{}{0: nil}, + clearVals3: map[int]interface{}{1: nil}, + Vals1: []interface{}{"g", uint64(1)}, + Vals2: []interface{}{nil, nil}, + Vals3: []interface{}{nil, nil}, + }, { + name: "bools null", + pkFields: []string{"user_id"}, + rawRec1: []interface{}{"1a", true}, // bool and bool-exists + rawRec2: []interface{}{"1a", DELETE_SENTINEL}, + rawRec3: []interface{}{"1a", nil}, + rowID: "1a", + schema: []Field{ + StringField{NameVal: "user_id"}, + BoolField{NameVal: "bool_val_1"}, + }, + clearVals1: map[int]interface{}{}, + clearVals2: map[int]interface{}{0: "bool_val_1"}, + clearVals3: map[int]interface{}{}, + Vals1: []interface{}{"bool_val_1", "bool_val_1"}, + Vals2: []interface{}{nil, nil}, + Vals3: []interface{}{nil, nil}, + }, { + name: "set no-op", + pkFields: []string{"user_id"}, + rawRec1: []interface{}{"1a", uint64(1)}, + rawRec2: []interface{}{"1a", DELETE_SENTINEL}, + rawRec3: []interface{}{"1a", nil}, + rowID: "1a", + schema: []Field{ + StringField{NameVal: "user_id"}, + IDField{NameVal: "id_val1"}, + }, + clearVals1: map[int]interface{}{}, + clearVals2: map[int]interface{}{}, + clearVals3: map[int]interface{}{}, + Vals1: []interface{}{uint64(1)}, + Vals2: []interface{}{nil}, + Vals3: []interface{}{nil}, + }, + } + + servers := []serverInfo{ + { + Name: "WithAuth", + AuthToken: getAuthToken(t), + PilosaHosts: []string{"http://pilosa-auth:10105"}, + }, + { + Name: "WithOutAuth", + PilosaHosts: []string{"http://pilosa:10101"}, + }, + } + + for _, server := range servers { + for _, test := range tests { + // test on fresh Pilosa + t.Run(test.name+"-1-"+server.Name, func(t *testing.T) { + runTest(t, test, false, server, test.rawRec1, test.clearVals1, test.Vals1) + }) + // test again with index/fields in place + t.Run(test.name+"-2-"+server.Name, func(t *testing.T) { + runTest(t, test, false, server, test.rawRec2, test.clearVals2, test.Vals2) + }) + t.Run(test.name+"-3-"+server.Name, func(t *testing.T) { + runTest(t, test, true, server, test.rawRec3, test.clearVals3, test.Vals3) + }) + } + } + +} diff --git a/idk/interfaces.go b/idk/interfaces.go new file mode 100644 index 000000000..6479ec794 --- /dev/null +++ b/idk/interfaces.go @@ -0,0 +1,1218 @@ +package idk + +import ( + "context" + "encoding/binary" + "fmt" + "math" + "reflect" + "sort" + "strconv" + "strings" + "time" + + pilosacore "github.com/molecula/featurebase/v3" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/pql" + "github.com/pkg/errors" +) + +var ( + // ErrSchemaChange is returned from Source.Record when the returned + // record has a different schema from the previous record. + ErrSchemaChange = errors.New("this record has a different schema from the previous record (or is the first one delivered). Please call Source.Schema() to fetch the schema in order to properly decode this record") + + // ErrFlush is returned from Source.Record when the Source wants to + // signal that there may not be data for a while, so it's a good time + // to make sure all data which has been received is ingested. The + // record must be nil when ErrFlush is returned. + ErrFlush = errors.New("the Source is requesting the batch be flushed") + + ErrFmtUnknownUnit = "unknown unit %q, please choose from d/h/m/s/ms/us/ns" + ErrIntOutOfRange = errors.New("value provided for int field is out of range") + ErrDecimalOutOfRange = errors.New("value provided for decimal field is out of range") + ErrTimestampOutOfRange = errors.New("value provided for timestamp field is out of range") +) + +type ( + // Source is an interface implemented by sources of data which can be + // ingested into Pilosa. Each Record returned from Record is described + // by the slice of Fields returned from Source.Schema directly after + // the call to Source.Record. If the error returned from Source.Record + // is nil, then the call to Schema which applied to the previous + // Record also applies to this Record. Source implementations are + // fundamentally not threadsafe (due to the interplay between Record + // and Schema). + Source interface { + // Record returns a data record, and an optional error. If the + // error is ErrSchemaChange, then the record is valid, but one + // should call Source.Schema to understand how each of its fields + // should be interpreted. + Record() (Record, error) + + // Schema returns a slice of Fields which applies to the most + // recent Record returned from Source.Record. Every Field has a + // name and a type, and depending on the concrete type of the + // Field, may have other information which is relevant to how it + // should be indexed. + Schema() []Field + + Close() error + } + + Record interface { + // Commit notifies the Source which produced this record that it + // and any record which came before it have been completely + // processed. The Source can then take any necessary action to + // record which records have been processed, and restart from the + // earliest unprocessed record in the event of a failure. + Commit(ctx context.Context) error + + Data() []interface{} + } + + // OffsetStreamRecord is an extension of the record type which also tracks offsets within streams. + OffsetStreamRecord interface { + Record + + // StreamOffset returns the stream from which the record originated, and the offset of the record within that stream. + StreamOffset() (key string, offset uint64) + } + + Metadata interface { + // SchemaMetadata returns a string representation of source-specific details + // about the schema. + SchemaMetadata() string + SchemaSubject() string + SchemaSchema() string + SchemaVersion() int + SchemaID() int + } + + // Field knows how to interpret values of different types and tells + // how they get indexed in Pilosa. Every field implementation should + // be a struct named like Field, and have as members + // `NameVal string` and `DestNameVal string`, where NameVal contains + // the name of the field at the source, and DestNameVal contains the + // name of the field at the destination (pilosa) + // + // Many Field implementations have a Quantum field which can be any + // valid Pilosa time quantum, e.g. "Y", "YMDH", "DH", etc. If Quantum + // is set to a valid quantum, the Pilosa field created for this field + // will be of type "time". Other fields which control field type will + // be ignored until/if Pilosa supports time+(othertype) fields. + Field interface { + Name() string + DestName() string + PilosafyVal(val interface{}) (interface{}, error) // TODO rename this + } +) + +// FieldsEqual is used in testing to compare Fields. The pointers make it a bit tricky for IntField. +func FieldsEqual(f1, f2 Field) bool { + if reflect.TypeOf(f1) != reflect.TypeOf(f2) { + return false + } + switch f1t := f1.(type) { + case IgnoreField, IDField, BoolField, RecordTimeField, StringField, LookupTextField, DecimalField, SignedIntBoolKeyField, StringArrayField, IDArrayField, TimestampField, DateIntField: + return f1 == f2 + case IntField: + f2t := f2.(IntField) + if f1t.NameVal == f2t.NameVal && f1t.DestNameVal == f2t.DestNameVal && f1t.ForeignIndex == f2t.ForeignIndex { + if !(f1t.Min == nil && f2t.Min == nil) { + if f1t.Min == nil || f2t.Min == nil { + return false + } + if *f1t.Min != *f2t.Min { + return false + } + } + if !(f1t.Max == nil && f2t.Max == nil) { + if f1t.Max == nil || f2t.Max == nil { + return false + } + if *f1t.Max != *f2t.Max { + return false + } + } + return true + } + return false + default: + panic(fmt.Sprintf("unknown field type %T when comparing fields", f1)) + } +} + +// CacheConfigOf returns CacheConfig of the Field. +func CacheConfigOf(f Field) CacheConfig { + switch f := f.(type) { + case StringField: + if f.CacheConfig == nil { + if f.Quantum != "" { + return noneCacheConfig + } + return defaultCacheConfig + } + return *f.CacheConfig + case StringArrayField: + if f.CacheConfig == nil { + if f.Quantum != "" { + return noneCacheConfig + } + return defaultCacheConfig + } + return *f.CacheConfig + case IDField: + if f.CacheConfig == nil { + if f.Quantum != "" { + return noneCacheConfig + } + return defaultCacheConfig + } + return *f.CacheConfig + case IDArrayField: + if f.CacheConfig == nil { + if f.Quantum != "" { + return noneCacheConfig + } + return defaultCacheConfig + } + return *f.CacheConfig + default: + return defaultCacheConfig + } +} + +// QuantumOf returns Quantum of the Field. +func QuantumOf(fld Field) string { + switch ft := fld.(type) { + case IDField: + return ft.Quantum + case StringField: + return ft.Quantum + case StringArrayField: + return ft.Quantum + case IDArrayField: + return ft.Quantum + default: + return "" + } +} + +func TTLOf(fld Field) (time.Duration, error) { + var ttl time.Duration + var err error + + switch ft := fld.(type) { + case IDField: + if ft.TTL != "" { + ttl, err = time.ParseDuration(ft.TTL) + } else { + return 0, nil + } + case StringField: + if ft.TTL != "" { + ttl, err = time.ParseDuration(ft.TTL) + } else { + return 0, nil + } + case StringArrayField: + if ft.TTL != "" { + ttl, err = time.ParseDuration(ft.TTL) + } else { + return 0, nil + } + case IDArrayField: + if ft.TTL != "" { + ttl, err = time.ParseDuration(ft.TTL) + } else { + return 0, nil + } + default: + return 0, nil + } + if err != nil { + return ttl, errors.Wrapf(err, "unable to parse TTL from field %s", fld.Name()) + } else { + return ttl, nil + } +} + +// HasMutex returns Mutex value of StringField or IDField, otherwise false +func HasMutex(fld Field) bool { + if sfld, ok := fld.(StringField); ok && sfld.Quantum == "" { + return sfld.Mutex + } + if sfld, ok := fld.(IDField); ok && sfld.Quantum == "" { + return sfld.Mutex + } + return false +} + +// IgnoreField can be used when you wish not to process one of the +// input fields, but it is inconvenient to remove it ahead of time. +type IgnoreField struct{} + +func (IgnoreField) Name() string { return "" } +func (IgnoreField) DestName() string { return "" } +func (IgnoreField) PilosafyVal(interface{}) (interface{}, error) { return nil, nil } + +type IDField struct { + NameVal string + DestNameVal string + + // Mutex denotes whether we need to enforce that each record only + // has a single value for this field. Put another way, says + // whether a new value for this field be treated as adding an + // additional value, or replacing the existing value (if there is + // one). + Mutex bool + + // Quantum — see note about Quantum on "Field" interface. + Quantum string + + TTL string + + *CacheConfig +} + +func (id IDField) Name() string { return id.NameVal } +func (id IDField) DestName() string { + if id.DestNameVal == "" { + return id.NameVal + } + + return id.DestNameVal +} +func (id IDField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } else if vs, ok := val.(string); ok && vs == "" { + return nil, nil + } + return toUint64(val) +} + +type BoolField struct { + NameVal string + DestNameVal string +} + +func (b BoolField) Name() string { return b.NameVal } +func (b BoolField) DestName() string { + if b.DestNameVal == "" { + return b.NameVal + } + + return b.DestNameVal +} +func (b BoolField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } else if vs, ok := val.(string); ok && vs == "" { + return nil, nil + } + return toBool(val) +} + +const ( + Custom = Unit("c") + Day = Unit("d") + Hour = Unit("h") + Minute = Unit("m") + Second = Unit("s") + Millisecond = Unit("ms") + Microsecond = Unit("us") + Nanosecond = Unit("ns") + + DefaultUnit = Second +) + +type Unit string + +func (u Unit) unit() Unit { + s := strings.ToLower(string(u)) + if s == "" { + return DefaultUnit + } + return Unit(s) +} + +func (u Unit) IsCustom() bool { + return u.unit() == Custom +} + +func (u Unit) Duration() (time.Duration, error) { + duration := time.Duration(1) + switch u.unit() { + case Day: + duration *= 24 + fallthrough + case Hour: + duration *= 60 + fallthrough + case Minute: + duration *= 60 + fallthrough + case Second: + duration *= 1000 + fallthrough + case Millisecond: + duration *= 1000 + fallthrough + case Microsecond: + duration *= 1000 + fallthrough + case Nanosecond: + return duration, nil + } + return 0, errors.Errorf(ErrFmtUnknownUnit, u) +} + +func (u Unit) DurationFromValue(val int64) (time.Duration, error) { + scale, err := u.Duration() + if err != nil { + return 0, err + } + if max, min := int64(math.MaxInt64/scale), int64(math.MinInt64/scale); val > max || val < min { + return 0, errors.Errorf("%d%s is outside representable time scales, must be between %d and %d", val, u, min, max) + } + return time.Duration(val) * scale, nil +} + +func (r RecordTimeField) epoch() time.Time { + if r.Epoch.IsZero() { + return time.Unix(0, 0) + } + return r.Epoch +} + +// RecordTimeField applies to whole record, but doesn't have a name +// (or quantum) of its own since it applies to any other time fields +// in the record. +type RecordTimeField struct { + NameVal string + DestNameVal string + Layout string // Layout tells how the time should be parsed. Defaults to RFC3339. + // need a way to create other time fields in the record (add time/quantum to String, StringArray, ID, IDArray?) + // do we need a way to have timefields in a record with independent times/values + Epoch time.Time + Unit Unit +} + +func (r RecordTimeField) Name() string { return r.NameVal } +func (r RecordTimeField) DestName() string { + if r.DestNameVal == "" { + return r.NameVal + } + + return r.DestNameVal +} + +// PilosafyVal for RecordTimeField always returns a time.Time or nil. +func (r RecordTimeField) PilosafyVal(val interface{}) (interface{}, error) { + if valt, ok := val.(time.Time); ok { + return valt, nil + } + if !r.Epoch.IsZero() || r.Unit != "" { + result, err := timeFromEpoch(val, r.epoch(), r.Unit) + if err != nil { + err = errors.Wrap(err, "converting RecordTimeField from epoch") + } + return result, err + } + + result, err := timeFromTimestring(val, r.layout()) + if err != nil { + err = errors.Wrap(err, "converting RecordTimeField from layout") + } + return result, err +} + +func (r RecordTimeField) layout() string { + if r.Layout == "" { + return time.RFC3339 + } + return r.Layout +} + +// CacheConfig - type (ranked, lru, none) and size. +type CacheConfig struct { + CacheType pilosaclient.CacheType + CacheSize int +} + +var defaultCacheConfig = CacheConfig{CacheType: pilosaclient.CacheTypeRanked, CacheSize: pilosacore.DefaultCacheSize} +var noneCacheConfig = CacheConfig{CacheType: "", CacheSize: 0} + +func (cfg CacheConfig) setOption() pilosaclient.FieldOption { + if cfg == (CacheConfig{}) { + cfg = defaultCacheConfig + } + + return pilosaclient.OptFieldTypeSet(pilosaclient.CacheType(cfg.CacheType), cfg.CacheSize) +} + +func (cfg CacheConfig) mutexOption() pilosaclient.FieldOption { + if cfg == (CacheConfig{}) { + cfg = defaultCacheConfig + } + + return pilosaclient.OptFieldTypeMutex(pilosaclient.CacheType(cfg.CacheType), cfg.CacheSize) +} + +type StringField struct { + NameVal string + DestNameVal string + + // Mutex denotes whether we need to enforce that each record only + // has a single value for this field. Put another way, says + // whether a new value for this field be treated as adding an + // additional value, or replacing the existing value (if there is + // one). + Mutex bool + + // Quantum — see note about Quantum on "Field" interface. + Quantum string + + TTL string + + *CacheConfig +} + +func (s StringField) Name() string { return s.NameVal } +func (s StringField) DestName() string { + if s.DestNameVal == "" { + return s.NameVal + } + + return s.DestNameVal +} +func (s StringField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } + return toString(val) +} + +type LookupTextField struct { + // NOTE this implements the Field interface for simplicity of implementation/API, but that interface is intended for data going into pilosa, while this is not. + NameVal string + DestNameVal string + // TODO this might should reference the lookupDB +} + +func (s LookupTextField) Name() string { return s.NameVal } +func (s LookupTextField) DestName() string { + if s.DestNameVal == "" { + return s.NameVal + } + + return s.DestNameVal +} +func (s LookupTextField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } + return toString(val) +} + +// IntField - if you add any new fields to this struct, please update the FieldsEqual function to accomodate. +type IntField struct { + NameVal string + DestNameVal string + Min *int64 + Max *int64 + ForeignIndex string +} + +func (i IntField) Name() string { return i.NameVal } +func (i IntField) DestName() string { + if i.DestNameVal == "" { + return i.NameVal + } + + return i.DestNameVal +} +func (i IntField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } + if valS, ok := val.(string); ok && i.ForeignIndex != "" { + return valS, nil + } else if ok && valS == "" { + return nil, nil + } + asInt, err := toInt64(val) + if err != nil { + return nil, err + } + + if i.Min != nil && asInt < *i.Min { + return nil, errors.Wrapf(ErrIntOutOfRange, "field = %v, value %v is smaller than min allowed %v", i.Name(), asInt, *i.Min) + } + if i.Max != nil && asInt > *i.Max { + return nil, errors.Wrapf(ErrIntOutOfRange, "field = %v, value %v is bigger than max allowed %v", i.Name(), asInt, *i.Max) + } + return asInt, nil +} + +const DecimalPrecision = 18 + +type DecimalField struct { + NameVal string + DestNameVal string + Scale int64 +} + +func (d DecimalField) Name() string { return d.NameVal } +func (d DecimalField) DestName() string { + if d.DestNameVal == "" { + return d.NameVal + } + + return d.DestNameVal +} + +// PilosafyVal for DecimalField always returns an int64. If the +// incoming value is anything but a float or string we attempt to +// convert to int64 and then scale it. Strings are attempted to be +// parsed into floats, and all values are scaled by the 10^scale +// before being returned. Byte slices are assumed to represent the +// already scaled value and are interpreted as int64. +func (d DecimalField) PilosafyVal(val interface{}) (interface{}, error) { + // Make sure the provided scale is supported before proceeding. + // Note: the "1" value below doesn't matter; we're just + // validating the scale. + // Also, the existing tests don't exercise this check because + // they error creating the field prior to getting here. + // TODO: let's move scale validation to the pql package so + // that it can control the specific error message. + if !pql.NewDecimal(1, d.Scale).IsValid() { + return nil, errors.Errorf("scale values outside the range [0,19] are not supported: %d", d.Scale) + } + + if val == nil { + return nil, nil + } + if vs, ok := val.(string); ok { + if vs == "" { + return nil, nil + } + asInt, err := scaledStringToInt(d.Scale, vs) + if err != nil { + // scaledStringToInt returns 0 on error. If there is a problem parsing the string, + // we want to import nil. + return nil, errors.Wrap(err, ErrDecimalOutOfRange.Error()) + } + return asInt, nil + } + switch vt := val.(type) { + case pql.Decimal: + return vt.ToInt64(d.Scale), nil + + case float32: + v := vt * float32(math.Pow10(int(d.Scale))) + return int64(v), nil + case float64: + vt = vt * math.Pow10(int(d.Scale)) + return int64(vt), nil + case []byte: + // 16: int64(value)+int64(scale) + // 8: int64(value) + var tmp [8]byte + if len(vt) == 16 { + value := int64(binary.BigEndian.Uint64(vt[0:8])) + scale := int64(binary.BigEndian.Uint64(vt[8:16])) + return pql.NewDecimal(value, scale).ToInt64(d.Scale), nil + } else if len(vt) == 8 { + return int64(binary.BigEndian.Uint64(vt)), nil + } else if len(vt) < 8 { + copy(tmp[8-len(vt):], vt) + return int64(binary.BigEndian.Uint64(tmp[:])), nil + } else { + return nil, errors.Errorf("can only support decimal value up to 8 bytes, or 16 bytes containing value and scale, got %d for %s", len(vt), d.Name()) + } + default: + v, err := toInt64(val) + if err != nil { + return nil, errors.Wrapf(err, "couldn't convert %v to int64 for decimal field", val) + } + return pql.NewDecimal(v, 0).ToInt64(d.Scale), nil + } +} + +// SignedIntBoolKeyField translates a signed integer value to a (rowID, bool) +// pair corresponding to the magnitude and sign of the original value. This +// may be used to specify whether a bool value is to be set (positive/true) +// or cleared (negative/false). +type SignedIntBoolKeyField struct { + NameVal string + DestNameVal string +} + +func (b SignedIntBoolKeyField) Name() string { return b.NameVal } +func (b SignedIntBoolKeyField) DestName() string { + if b.DestNameVal == "" { + return b.NameVal + } + + return b.DestNameVal +} + +func (SignedIntBoolKeyField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } else if vs, ok := val.(string); ok && vs == "" { + return nil, nil + } + + return toInt64(val) +} + +type StringArrayField struct { + NameVal string + DestNameVal string + + // Quantum — see note about Quantum on "Field" interface. + Quantum string + + TTL string + + *CacheConfig +} + +func (s StringArrayField) Name() string { return s.NameVal } +func (s StringArrayField) DestName() string { + if s.DestNameVal == "" { + return s.NameVal + } + + return s.DestNameVal +} +func (StringArrayField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } + return toStringArray(val) +} + +type IDArrayField struct { + NameVal string + DestNameVal string + + // Quantum — see note about Quantum on "Field" interface. + Quantum string + + TTL string + + *CacheConfig +} + +func (i IDArrayField) Name() string { return i.NameVal } +func (i IDArrayField) DestName() string { + if i.DestNameVal == "" { + return i.NameVal + } + + return i.DestNameVal +} +func (IDArrayField) PilosafyVal(val interface{}) (interface{}, error) { + if val == nil { + return nil, nil + } + return toUint64Array(val) +} + +type TimestampField struct { + NameVal string + DestNameVal string + Layout string + Epoch time.Time + Unit Unit + Granularity string +} + +func (d TimestampField) Name() string { return d.NameVal } + +func (d TimestampField) DestName() string { + if d.DestNameVal == "" { + return d.NameVal + } + return d.DestNameVal +} + +// PilosafyVal for TimestampField always returns an int or nil. +func (t TimestampField) PilosafyVal(val interface{}) (interface{}, error) { + var dur time.Duration + + if val == nil { + return nil, nil + } + + granAsDur, err := Unit(t.granularity()).DurationFromValue(1) //return ns per granularity + if err != nil { + return nil, errors.Wrap(err, "converting granularity to duration") + } + + if tval, ok := val.(time.Time); ok { + if err := t.validateTimestamp(tval); err != nil { + return nil, errors.Wrap(err, "validating timestamp") + } + dur = tval.Sub(t.epoch()) + } else if !t.Epoch.IsZero() || t.Unit != "" { + valAsInt, err := toInt64(val) + if err != nil { + if strings.Contains(err.Error(), "out of range") { + return nil, errors.Wrap(err, ErrTimestampOutOfRange.Error()) + } + return nil, errors.Wrap(err, "converting value to int64") + } + dur, err = t.Unit.DurationFromValue(valAsInt) + if err != nil { + return nil, errors.Wrap(err, "converting TimestampField from epoch") + } + if err := t.validateDuration(dur, granAsDur); err != nil { + return nil, errors.Wrap(err, "validating duration") + } + } else { + ti, err := timeFromTimestring(val, t.layout()) + if err != nil { + if strings.Contains(err.Error(), "out of range") { + return nil, errors.Wrap(err, ErrTimestampOutOfRange.Error()) + } + return nil, errors.Wrap(err, "converting TimestampField from layout") + } + // if timeFromTimestring is nil, the time is either nil or "" + // and there is no time value to write. So we return a nil. + if ti == nil { + return nil, nil + } + ts := ti.(time.Time) + if err := t.validateTimestamp(ts); err != nil { + return nil, errors.Wrap(err, "validating timestamp") + } + dur = ts.Sub(t.epoch()) + } + + return int64(dur / granAsDur), nil +} + +// validateTimestamp checks if the timestamp is within the range of what FB accepts. +func (t TimestampField) validateTimestamp(ts time.Time) error { + // Min and Max timestamps that Featurebase accepts + MinTimestamp := time.Unix(-1<<32, 0).UTC() // 1833-11-24T17:31:44Z + MaxTimestamp := time.Unix(1<<32, 0).UTC() // 2106-02-07T06:28:16Z + + if ts.Before(MinTimestamp) || ts.After(MaxTimestamp) { + return errors.Wrap(ErrTimestampOutOfRange, fmt.Sprintf("timestamp value must be within min: %v and max: %v", MinTimestamp, MaxTimestamp)) + } + return nil +} + +// validateDuration checks if the duration will overflow. Users can provide a custom epoch but +// Featurebase will ultimately convert this to some duration relative to the Unix epoch. +// So if the custom epoch + the provided value in the desired units is too far from +// Unix epoch such that it causes an interger overflow, this will return an error. +func (t TimestampField) validateDuration(dur time.Duration, granularity time.Duration) error { + // Check if the epoch alone causes overflow. If so, ingest should halt. + if time.Unix(0, 0).After(t.epoch()) { + if t.epoch().UnixNano() > 0 { + return errors.New("custom epoch is too far from Unix epoch") + } + } else if t.epoch().UnixNano() < 0 { + return errors.New("custom epoch is too far from Unix epoch") + } + + offset := int64(t.epoch().Sub(time.Unix(0, 0)).Nanoseconds()) + durAsInt := int64(dur) + if offset > 0 { + if durAsInt > math.MaxInt64-offset { + return errors.Wrap(ErrTimestampOutOfRange, "value + epoch is too far from Unix epoch") + } + } else if durAsInt < math.MinInt64-offset { + return errors.Wrap(ErrTimestampOutOfRange, "value + epoch is too far from Unix epoch") + } + return nil +} + +// Return default granularity if not set +func (t TimestampField) granularity() string { + if t.Granularity == "" { + return "s" + } + return t.Granularity +} + +// Return default layout if not set +func (t TimestampField) layout() string { + if t.Layout == "" { + return time.RFC3339Nano + } + return t.Layout +} + +// Return default epoch if not set +func (t TimestampField) epoch() time.Time { + if t.Epoch.IsZero() { + return time.Unix(0, 0) + } + return t.Epoch +} + +type DateIntField struct { + NameVal string + DestNameVal string + Layout string + Epoch time.Time + Unit Unit + CustomUnit string +} + +func (d DateIntField) Name() string { return d.NameVal } +func (d DateIntField) DestName() string { + if d.DestNameVal == "" { + return d.NameVal + } + + return d.DestNameVal +} + +// PilosafyVal for a DateIntField takes a time.Time and int64 which +// represents the number units from the epoch. +func (d DateIntField) PilosafyVal(val interface{}) (interface{}, error) { + var vt time.Time + var err error + switch valt := val.(type) { + case nil: + return nil, nil + case []byte: + if len(valt) == 0 { + return nil, nil + } + vt, err = parseTimeWithLayout(d.layout(), string(valt)) + if err != nil { + return nil, errors.Wrap(err, "converting DateIntField []byte") + } + case string: + vt, err = parseTimeWithLayout(d.layout(), valt) + if err != nil { + return nil, errors.Wrap(err, "converting DateIntField string") + } + case time.Time: + vt = valt + case uint, int, uint8, uint16, uint32, uint64, int8, int16, int32, int64: + return toInt64(valt) + default: + return nil, errors.Errorf("didn't know how to handle %v of type %[1]T in DateIntField", valt) + } + + dur := vt.Sub(d.epoch()) + + var unit time.Duration + if d.Unit.IsCustom() { + if unit, err = time.ParseDuration(d.CustomUnit); err != nil { + return nil, errors.Wrapf(err, "parsing custom unit %s", d.CustomUnit) + } + } else { + if unit, err = d.Unit.Duration(); err != nil { + return nil, errors.Wrapf(err, "parsing unit %s", d.Unit) + } + } + + return int64(dur / unit), nil +} + +func (d DateIntField) epoch() time.Time { + if d.Epoch.IsZero() { + return time.Unix(0, 0) + } + return d.Epoch +} + +func (d DateIntField) layout() string { + if d.Layout == "" { + // this is kind of a ridiculous default for layout + return "2006-01-02" + } + return d.Layout +} + +func parseTimeWithLayout(layout string, val string) (time.Time, error) { + if val == "0000-00-00" { // TODO this is kind of a special hack + // that we should remove - was added + // for a particular case of unparsable + // data that we wanted to ignore. + return time.Time{}, nil + } + tim, err := time.Parse(layout, val) + if err != nil { + return time.Time{}, errors.Wrapf(err, "parsing time string %s", val) + } + return tim, nil +} + +func timeFromEpoch(val interface{}, epoch time.Time, unit Unit) (interface{}, error) { + valAsInt, err := toInt64(val) + if err != nil { + return nil, errors.Wrap(err, "converting value to int64") + } + + dur, err := unit.DurationFromValue(valAsInt) + if err != nil { + return nil, errors.Wrap(err, "getting duration from value") + } + + return epoch.Add(dur), err +} + +func timeFromTimestring(val interface{}, layout string) (interface{}, error) { + if val == nil { + return nil, nil + } + switch valt := val.(type) { + case nil: + return nil, nil + case []byte: + if len(valt) == 0 { + return nil, nil + } + vt, err := parseTimeWithLayout(layout, string(valt)) + if err != nil { + return nil, errors.Wrap(err, "parsing []byte") + } + return vt, nil + case string: + if valt == "" { + return nil, nil + } + vt, err := parseTimeWithLayout(layout, valt) + if err != nil { + return nil, errors.Wrapf(err, "parsing time string %s", valt) + } + return vt, nil + case time.Time: + return valt, nil + default: + return nil, errors.Errorf("didn't know how to interpret %v of %[1]T as time", valt) + } +} + +func toUint64(val interface{}) (uint64, error) { + switch vt := val.(type) { + case uint: + return uint64(vt), nil + case uint8: + return uint64(vt), nil + case uint16: + return uint64(vt), nil + case uint32: + return uint64(vt), nil + case uint64: + return vt, nil + case int: + return uint64(vt), nil + case int8: + return uint64(vt), nil + case int16: + return uint64(vt), nil + case int32: + return uint64(vt), nil + case int64: + return uint64(vt), nil + case float64: + return uint64(vt), nil + case string: + v, err := strconv.ParseUint(strings.TrimSpace(vt), 10, 64) + if err != nil { + return 0, err + } + return v, nil + default: + return 0, errors.Errorf("couldn't convert %v of %[1]T to uint64", vt) + } +} + +func toBool(val interface{}) (bool, error) { + switch vt := val.(type) { + case bool: + return vt, nil + case byte: + if vt == '0' || vt == 'f' || vt == 'F' { + return false, nil + } + return vt != 0, nil + case string: + switch strings.ToLower(vt) { + case "", "0", "f", "false": + return false, nil + } + return true, nil + default: + if vint, err := toInt64(val); err == nil { + return vint != 0, nil + } + return false, errors.Errorf("couldn't convert %v of %[1]T to bool", vt) + } +} + +func toString(val interface{}) (string, error) { + switch vt := val.(type) { + case string: + return vt, nil + case []byte: + return string(vt), nil + default: + if vt == nil { + return "", nil + } + return fmt.Sprintf("%v", val), nil + } +} + +func toInt64(val interface{}) (int64, error) { + switch vt := val.(type) { + case uint: + return int64(vt), nil + case uint8: + return int64(vt), nil + case uint16: + return int64(vt), nil + case uint32: + return int64(vt), nil + case uint64: + return int64(vt), nil + case int: + return int64(vt), nil + case int8: + return int64(vt), nil + case int16: + return int64(vt), nil + case int32: + return int64(vt), nil + case int64: + return vt, nil + case float32: + return int64(vt), nil + case float64: + return int64(vt), nil + case string: // added this case because of mysql driver sending the ids as strings + v, err := strconv.ParseInt(strings.TrimSpace(vt), 10, 64) + if err != nil { + return 0, err + } + return v, nil + default: + return 0, errors.Errorf("couldn't convert %v of %[1]T to int64", vt) + } +} + +func toStringArray(val interface{}) ([]string, error) { + switch vt := val.(type) { + case []string: + return vt, nil + case []uint64: + ret := make([]string, len(vt)) + for i, v := range vt { + ret[i] = strconv.FormatUint(v, 10) + } + return ret, nil + case map[uint64]struct{}: + arr, err := toUint64Array(val) + if err != nil { + return nil, err + } + return toStringArray(arr) + case string: + if vt == "" { + return nil, nil + } + if strings.HasPrefix(vt, "[") && strings.HasSuffix(vt, "]") { + vt = vt[1 : len(vt)-1] + } + vals := strings.Split(vt, ",") + return vals, nil + case []interface{}: + ret := make([]string, len(vt)) + for i, v := range vt { + vs, ok := v.(string) + if !ok { + return nil, errors.Errorf("couldn't convert []interface{} to []string, value %v of type %[1]T at %d", v, i) + } + ret[i] = vs + } + return ret, nil + default: + return nil, errors.Errorf("couldn't convert %v of %[1]T to []string", vt) + } +} + +func toUint64Array(val interface{}) ([]uint64, error) { + switch vt := val.(type) { + case []interface{}: + if len(vt) == 0 { + // Empty/nil set. + return nil, nil + } + arr := make([]uint64, len(vt)) + for i := range vt { + vv, err := toUint64(vt[i]) + if err != nil { + return nil, errors.Wrapf(err, "non uint64 value in []interface{}: %v (%[1]T)", vt[i]) + } + arr[i] = vv + } + return arr, nil + case map[uint64]struct{}: + if len(vt) == 0 { + // Empty/nil set. + return nil, nil + } + arr := make([]uint64, len(vt)) + i := 0 + for v := range vt { + arr[i] = v + i++ + } + + // Move the elements into a deterministic order. + sort.Slice(arr, func(i, j int) bool { return arr[i] < arr[j] }) + + return arr, nil + case []uint64: + return vt, nil + case string: + if vt == "" { + return nil, nil + } + if strings.HasPrefix(vt, "[") && strings.HasSuffix(vt, "]") { + vt = vt[1 : len(vt)-1] + } + parts := strings.Split(vt, ",") + ret := make([]uint64, len(parts)) + for i := range parts { + v, err := strconv.ParseUint(strings.TrimSpace(parts[i]), 10, 64) + if err != nil { + return nil, errors.Wrapf(err, "parsing uint64 from string: %s", vt) + } + ret[i] = v + } + return ret, nil + default: + return nil, errors.Errorf("couldn't convert %v of %[1]T to []uint64", vt) + } +} + +// Fields is a list of Field, representing a schema. +type Fields []Field + +// ContainsBool returns true if at least one field +// in the list is a BoolField. +func (f Fields) ContainsBool() bool { + for i := range f { + if _, ok := f[i].(BoolField); ok { + return true + } + } + return false +} diff --git a/idk/interfaces_test.go b/idk/interfaces_test.go new file mode 100644 index 000000000..e6afb53cb --- /dev/null +++ b/idk/interfaces_test.go @@ -0,0 +1,241 @@ +package idk + +import ( + "fmt" + "strings" + "testing" + "time" +) + +func TestDecimalFieldPilosafy(t *testing.T) { + f := DecimalField{NameVal: "a", Scale: 3} + if ret, err := f.PilosafyVal(float32(0.9)); err != nil || ret != int64(900) { + t.Errorf("got: %v of %[1]T, err: %v", ret, err) + } + +} + +func TestPilosafyVal(t *testing.T) { + tests := []struct { + field Field + vals []interface{} + exps []interface{} + expErrs []string + }{ + { + field: StringArrayField{}, + vals: []interface{}{ + "a,b,c", + "[a,b,c]", + ""}, + exps: []interface{}{ + []string{"a", "b", "c"}, + []string{"a", "b", "c"}, + []string(nil)}, + }, + { + field: IDArrayField{}, + vals: []interface{}{ + "1,2,3", + "[1,2,3]", + ""}, + exps: []interface{}{ + []uint64{1, 2, 3}, + []uint64{1, 2, 3}, + []uint64(nil)}, + }, + { + field: IntField{}, + vals: []interface{}{ + 1, + "1", + "", + nil, + }, + exps: []interface{}{ + int64(1), + int64(1), + nil, + nil, + }, + }, + { + field: DecimalField{Scale: 2}, + vals: []interface{}{ + 1, + "1", + "", + nil, + }, + exps: []interface{}{ + int64(100), + int64(100), + nil, + nil, + }, + }, + { + field: IDField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: BoolField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: StringField{}, + vals: []interface{}{""}, + exps: []interface{}{""}, + expErrs: []string(nil), + }, + { + field: IntField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: DecimalField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: StringArrayField{}, + vals: []interface{}{""}, + exps: []interface{}{[]string(nil)}, + expErrs: []string(nil), + }, + { + field: IDArrayField{}, + vals: []interface{}{""}, + exps: []interface{}{[]uint64(nil)}, + expErrs: []string(nil), + }, + { + field: DateIntField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: RecordTimeField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: TimestampField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + { + field: SignedIntBoolKeyField{}, + vals: []interface{}{"", int64(-2), int(2), uint64(3)}, + exps: []interface{}{nil, int64(-2), int64(2), int64(3)}, + expErrs: []string(nil), + }, + { + field: IgnoreField{}, + vals: []interface{}{""}, + exps: []interface{}{nil}, + expErrs: []string(nil), + }, + } + + for i, test := range tests { + if len(test.exps) > 0 && len(test.vals) != len(test.exps) { + panic(fmt.Sprintf("invalid test at %d", i)) + } + if len(test.expErrs) > 0 && len(test.vals) != len(test.expErrs) { + panic(fmt.Sprintf("invalid test at %d", i)) + } + for j, val := range test.vals { + t.Run(fmt.Sprintf("test%dval%d", i, j), func(t *testing.T) { + pval, err := test.field.PilosafyVal(val) + if len(test.exps) > 0 { + errorIfNotEqual(t, test.exps[j], pval) + } + if len(test.expErrs) > 0 { + errorIfNotErrMatch(t, test.expErrs[j], err) + } + }) + } + } +} + +func TestTTLOf(t *testing.T) { + tests := []struct { + name string + field Field + expectedTTL time.Duration + expectedErr string + }{ + { + name: "ttl StringField", + field: StringField{NameVal: "a", Mutex: false, Quantum: "YMD", TTL: "1s"}, + expectedTTL: time.Second, + expectedErr: "", + }, + { + name: "ttl IDField", + field: IDField{NameVal: "a", Mutex: false, Quantum: "YMD", TTL: "60s"}, + expectedTTL: time.Second * 60, + expectedErr: "", + }, + { + name: "ttl StringArrayField", + field: StringArrayField{NameVal: "a", Quantum: "YMD", TTL: "1h"}, + expectedTTL: time.Hour, + expectedErr: "", + }, + { + name: "ttl IDArrayField", + field: StringArrayField{NameVal: "a", Quantum: "YMD", TTL: "1h"}, + expectedTTL: time.Hour, + expectedErr: "", + }, + { + name: "ttl bad format", + field: StringField{NameVal: "a", Mutex: false, Quantum: "YMD", TTL: "0ssss"}, + expectedTTL: 0, + expectedErr: "unable to parse TTL", + }, + { + name: "ttl empty", + field: StringField{NameVal: "a", Mutex: false, Quantum: "YMD", TTL: ""}, + expectedTTL: 0, + expectedErr: "", + }, + { + name: "no ttl", + field: StringField{NameVal: "a", Mutex: false, Quantum: "YMD"}, + expectedTTL: 0, + expectedErr: "", + }, + { + name: "ttl IntField", + field: IntField{NameVal: "a"}, + expectedTTL: 0, + expectedErr: "", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + ttl, err := TTLOf(test.field) + if ttl != test.expectedTTL { + t.Errorf("expected TTL: '%v', got: '%v'", test.expectedTTL, ttl) + } + if err != nil && !strings.Contains(err.Error(), test.expectedErr) { + t.Errorf("expected error: '%s', got: '%s'", test.expectedErr, err.Error()) + } + }) + } + +} diff --git a/idk/internal/reader.go b/idk/internal/reader.go new file mode 100644 index 000000000..d0a4e9ae4 --- /dev/null +++ b/idk/internal/reader.go @@ -0,0 +1,225 @@ +package internal + +import ( + "context" + "io" + "sync/atomic" + + "github.com/pkg/errors" + segmentio "github.com/segmentio/kafka-go" + "golang.org/x/sync/errgroup" +) + +type KafkaReader interface { + FetchMessage(ctx context.Context) (segmentio.Message, error) + CommitMessages(ctx context.Context, msgs ...segmentio.Message) error + io.Closer +} + +func BlendKafka(in map[string]KafkaReader) KafkaReader { + if len(in) == 1 { + for _, r := range in { + return r + } + } + + ctx, cancel := context.WithCancel(context.Background()) + group, ctx := errgroup.WithContext(ctx) + + ch := make(chan segmentio.Message, 10) + live := uint32(len(in)) + for topic, r := range in { + topic, r := topic, r + group.Go(func() (err error) { + defer func() { + if atomic.AddUint32(&live, ^uint32(0)) == 0 { + // This is the last reader to close. + // Close the channel. + close(ch) + } + }() + + defer func() { + // Close the reader. + cerr := r.Close() + if err != nil { + err = cerr + } + }() + + done := ctx.Done() + for { + msg, err := r.FetchMessage(ctx) + switch err { + case nil: + case io.EOF, context.Canceled: + return nil + default: + return errors.Wrapf(err, "failed to fetch message from topic %q", topic) + } + + select { + case ch <- msg: + case <-done: + return nil + } + } + }) + } + + return &kafkaBlender{ + readers: in, + cancel: cancel, + eg: group, + ch: ch, + } +} + +type kafkaBlender struct { + readers map[string]KafkaReader + cancel context.CancelFunc + eg *errgroup.Group + ch <-chan segmentio.Message +} + +func (b *kafkaBlender) FetchMessage(ctx context.Context) (segmentio.Message, error) { + if err := ctx.Err(); err != nil { + return segmentio.Message{}, err + } + + select { + case msg, ok := <-b.ch: + if !ok { + return segmentio.Message{}, io.EOF + } + + return msg, nil + + case <-ctx.Done(): + return segmentio.Message{}, ctx.Err() + } +} + +func (b *kafkaBlender) CommitMessages(ctx context.Context, msgs ...segmentio.Message) error { + if len(msgs) == 0 { + return nil + } + + msgsByTopic := make(map[string][]segmentio.Message, len(b.readers)) + for _, m := range msgs { + msgsByTopic[m.Topic] = append(msgsByTopic[m.Topic], m) + } + + group, ctx := errgroup.WithContext(ctx) + for topic, msgs := range msgsByTopic { + topic, msgs := topic, msgs + group.Go(func() error { + reader, ok := b.readers[topic] + if !ok { + return errors.Errorf("cannot commit messages: no source for topic %q", topic) + } + + err := reader.CommitMessages(ctx, msgs...) + if err != nil { + return errors.Wrapf(err, "failed to commit messages to topic %q", topic) + } + + return nil + }) + } + + return group.Wait() +} + +func (b *kafkaBlender) Close() error { + if b.cancel != nil { + b.cancel() + b.cancel = nil + } + + return b.eg.Wait() +} + +// RetryReader wraps a kafka reader with fetch retry logic. +type RetryReader struct { + *segmentio.Reader +} + +func (r RetryReader) FetchMessage(ctx context.Context) (segmentio.Message, error) { +try: + msg, err := r.Reader.FetchMessage(ctx) + if err != nil { + if err := ctx.Err(); err != nil { + return segmentio.Message{}, err + } + if err == segmentio.RebalanceInProgress { + goto try + } + if err, ok := err.(segmentio.Error); ok && err.Temporary() { + goto try + } + + return segmentio.Message{}, err + } + + return msg, nil +} + +// KafkaTestReader is a testing implementation of the KafkaReader type. +type KafkaTestReader struct { + Queue []segmentio.Message + FetchOff, CommitOff int + Closed bool +} + +func (r *KafkaTestReader) FetchMessage(ctx context.Context) (segmentio.Message, error) { + if err := ctx.Err(); err != nil { + return segmentio.Message{}, err + } + + if r.Closed { + return segmentio.Message{}, io.EOF + } + + if r.FetchOff == len(r.Queue) { + <-ctx.Done() + return segmentio.Message{}, ctx.Err() + } + + msg := r.Queue[r.FetchOff] + r.FetchOff++ + + return msg, nil +} + +func (r *KafkaTestReader) CommitMessages(ctx context.Context, msgs ...segmentio.Message) error { + if err := ctx.Err(); err != nil { + return err + } + + coff := r.CommitOff + for _, m := range msgs { + switch { + case coff == len(r.Queue): + return errors.New("cannot commit beyond end of data") + + case r.Queue[coff].Topic != m.Topic: + return errors.Errorf("topic mismatch: expected %q but found %q", m.Topic, r.Queue[coff].Topic) + case r.Queue[coff].Partition != m.Partition: + return errors.Errorf("partition mismatch: expected %d but found %d", m.Partition, r.Queue[coff].Partition) + case r.Queue[coff].Offset != m.Offset: + return errors.Errorf("offset mismatch: expected %d but found %d", m.Offset, r.Queue[coff].Offset) + + default: + coff++ + } + } + r.CommitOff = coff + + return nil +} + +func (r *KafkaTestReader) Close() error { + r.Closed = true + return nil +} diff --git a/idk/internal/reader_test.go b/idk/internal/reader_test.go new file mode 100644 index 000000000..9aa93510b --- /dev/null +++ b/idk/internal/reader_test.go @@ -0,0 +1,84 @@ +package internal + +import ( + "context" + "math/rand" + "testing" + "time" + + "github.com/segmentio/kafka-go" +) + +func TestBlender(t *testing.T) { + t.Parallel() + + rng := rand.New(rand.NewSource(10)) + readers := make(map[string]KafkaReader) + var nmsgs int + for _, topic := range []string{"x", "y", "z"} { + partitions := rand.Intn(10) + 1 + offs := make([]int64, partitions) + for i := range offs { + offs[i] = rand.Int63n(1000000) + } + + msgs := make([]kafka.Message, rand.Intn(500)) + for i := range msgs { + partition := rng.Intn(len(offs)) + offset := offs[partition] + offs[partition]++ + msgs[i] = kafka.Message{ + Topic: topic, + Partition: partition, + Offset: offset, + } + } + nmsgs += len(msgs) + + readers[topic] = &KafkaTestReader{ + Queue: msgs, + } + } + + blended := BlendKafka(readers) + + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + for nmsgs > 0 { + batch := make([]kafka.Message, rand.Intn(nmsgs)+1) + for i := range batch { + msg, err := blended.FetchMessage(ctx) + if err != nil { + t.Fatalf("failed to fetch message: %v", err) + } + + batch[i] = msg + } + + err := blended.CommitMessages(ctx, batch...) + if err != nil { + t.Fatalf("failed to commit batch: %v", err) + } + + nmsgs -= len(batch) + } + + err := blended.Close() + if err != nil { + t.Fatalf("failed to close reader: %v", err) + } + + for topic, r := range readers { + r := r.(*KafkaTestReader) + if r.FetchOff < len(r.Queue) { + t.Errorf("found %d/%d unread messages in topic %q", r.FetchOff-len(r.Queue), len(r.Queue), topic) + } + if r.CommitOff < len(r.Queue) { + t.Errorf("found %d/%d uncomitted messages in topic %q", r.CommitOff-len(r.Queue), len(r.Queue), topic) + } + if !r.Closed { + t.Errorf("topic %s reader not closed", topic) + } + } +} diff --git a/idk/internal/s3.go b/idk/internal/s3.go new file mode 100644 index 000000000..fb2172021 --- /dev/null +++ b/idk/internal/s3.go @@ -0,0 +1,100 @@ +package internal + +import ( + "bytes" + "io/ioutil" + "net/url" + "os" + "strings" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" + "github.com/pkg/errors" +) + +var FileOrURLNotFound = errors.New("file or url does not exist") + +// ReadFileOrURL reads a path from the filesystem or an s3 URL. +// The s3client parameter is required if reading an s3 URL. +// ReadFileOrURL returns FileOrURLNotFound when the local filesystem +// path or remote s3 location is not found. +func ReadFileOrURL(name string, s3client s3iface.S3API) ([]byte, error) { + var content []byte + var err error + if strings.HasPrefix(name, "s3://") { + if s3client == nil { + return nil, errors.New("missing s3 client") + } + u, err := url.Parse(name) + if err != nil { + return nil, errors.Wrapf(err, "parsing S3 URL %v", name) + } + bucket := u.Host + key := u.Path[1:] // strip leading slash + + result, err := s3client.GetObject(&s3.GetObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(key), + }) + if err != nil { + if aerr, ok := err.(awserr.Error); ok { + switch aerr.Code() { + case s3.ErrCodeNoSuchBucket: + return nil, FileOrURLNotFound + case s3.ErrCodeNoSuchKey: + return nil, FileOrURLNotFound + } + } + return nil, errors.Wrapf(err, "fetching S3 object %v", name) + } + + buf := new(bytes.Buffer) + _, err = buf.ReadFrom(result.Body) + if err != nil { + return nil, err + } + content = buf.Bytes() + } else { + content, err = ioutil.ReadFile(name) + if err != nil { + if os.IsNotExist(err) { + return nil, FileOrURLNotFound + } + return nil, errors.Wrapf(err, "reading file %v", name) + } + } + return content, nil +} + +func WriteFileOrURL(name string, contents []byte, s3client s3iface.S3API) error { + var err error + if strings.HasPrefix(name, "s3://") { + if s3client == nil { + return errors.New("missing s3 client") + } + u, err := url.Parse(name) + if err != nil { + return errors.Wrapf(err, "parsing S3 URL %v", name) + } + bucket := u.Host + key := u.Path[1:] // strip leading slash + + _, err = s3client.PutObject(&s3.PutObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(key), + Body: bytes.NewReader(contents), + ContentLength: aws.Int64(int64(len(contents))), + }) + if err != nil { + return errors.Wrapf(err, "putting S3 object %v", name) + } + } else { + err = ioutil.WriteFile(name, contents, 0644) + if err != nil { + return errors.Wrapf(err, "reading file %v", name) + } + } + return nil +} diff --git a/idk/internal/write.go b/idk/internal/write.go new file mode 100644 index 000000000..2c3113b06 --- /dev/null +++ b/idk/internal/write.go @@ -0,0 +1,111 @@ +package internal + +import ( + "context" + "net" + "strconv" + "time" + + "github.com/pkg/errors" + segmentio "github.com/segmentio/kafka-go" +) + +func CreateKafkaTopic(topic string, addr net.Addr) (err error) { + conn, err := segmentio.Dial(addr.Network(), addr.String()) + if err != nil { + return err + } + defer func() { + if cerr := conn.Close(); cerr != nil && err == nil { + err = errors.Wrap(cerr, "closing kafka connection") + } + }() + + controller, err := conn.Controller() + if err != nil { + return errors.Wrap(err, "finding kafka controller") + } + var controllerConn *segmentio.Conn + controllerConn, err = segmentio.Dial("tcp", net.JoinHostPort(controller.Host, strconv.Itoa(controller.Port))) + if err != nil { + return errors.Wrap(err, "connecting to kafka controller") + } + defer func() { + if cerr := controllerConn.Close(); cerr != nil && err == nil { + err = errors.Wrap(cerr, "closing kafka controller connection") + } + }() + + err = controllerConn.CreateTopics(segmentio.TopicConfig{ + Topic: topic, + NumPartitions: 64, + ReplicationFactor: 1, + }) + if err != nil { + return err + } + + return nil +} + +func KafkaWriteWithBackoff(ctx context.Context, writer *segmentio.Writer, log func(string, ...interface{}), interval, maxInterval time.Duration, messages ...segmentio.Message) error { + var berr error + tries := 0 +retry: + for { + tries++ + err := writer.WriteMessages(ctx, messages...) + switch err := err.(type) { + case nil: + return nil + + case segmentio.Error: + berr = err + if !err.Temporary() { + break retry + } + + case segmentio.WriteErrors: + var remaining []segmentio.Message + for i, m := range messages { + switch err := err[i].(type) { + case nil: + continue + + case segmentio.Error: + if err.Temporary() { + remaining = append(remaining, m) + continue + } + } + + return errors.Wrap(err, "failed to deliver messages") + } + + messages = remaining + berr = err + + default: + if berr == nil || err != context.DeadlineExceeded { + berr = err + } + break retry + } + + log("temporary write error: %v", err) + + interval *= 2 + if interval > maxInterval { + interval = maxInterval + } + timer := time.NewTimer(interval) + select { + case <-timer.C: + case <-ctx.Done(): + timer.Stop() + break retry + } + } + + return errors.Wrapf(berr, "failed to deliver messages after %d tries", tries) +} diff --git a/idk/kafka/cmd.go b/idk/kafka/cmd.go new file mode 100644 index 000000000..44efbcebd --- /dev/null +++ b/idk/kafka/cmd.go @@ -0,0 +1,53 @@ +package kafka + +import ( + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +type Main struct { + idk.Main `flag:"!embed"` + idk.ConfluentCommand `flag:"!embed"` + Group string `help:"Kafka group."` + Topics []string `help:"Kafka topics to read from."` + Timeout time.Duration `help:"Time to wait for more records from Kafka before flushing a batch. 0 to disable."` + SkipOld bool `short:"" help:"Skip to the most recent Kafka message rather than starting at the beginning."` +} + +func NewMain() (*Main, error) { + m := &Main{ + Main: *idk.NewMain(), + ConfluentCommand: idk.ConfluentCommand{ + KafkaBootstrapServers: []string{"localhost:9092"}, + }, + Group: "defaultgroup", + Topics: []string{"defaulttopic"}, + Timeout: time.Second, + } + m.SchemaRegistryURL = "http://" + defaultRegistryHost + m.OffsetMode = true + m.Main.Namespace = "ingester_kafka" + m.NewSource = func() (idk.Source, error) { + source := NewSource() + source.KafkaBootstrapServers = m.KafkaBootstrapServers + source.SchemaRegistryURL = m.SchemaRegistryURL + source.Group = m.Group + source.Topics = m.Topics + source.Log = m.Main.Log() + source.Timeout = m.Timeout + source.KafkaSocketTimeoutMs = int(m.Timeout / time.Millisecond) + source.SkipOld = m.SkipOld + source.ConfluentCommand = m.ConfluentCommand + source.SchemaRegistryUsername = m.SchemaRegistryUsername + source.SchemaRegistryPassword = m.SchemaRegistryPassword + source.Verbose = m.Verbose + + if err := source.Open(); err != nil { + return nil, errors.Wrap(err, "opening source") + } + return source, nil + } + return m, nil +} diff --git a/idk/kafka/cmd_delete_test.go b/idk/kafka/cmd_delete_test.go new file mode 100644 index 000000000..919b03932 --- /dev/null +++ b/idk/kafka/cmd_delete_test.go @@ -0,0 +1,270 @@ +//go:build !kafka_sasl +// +build !kafka_sasl + +package kafka + +import ( + "fmt" + "io" + "math/rand" + "os" + "strconv" + "testing" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/jaffee/commandeer/pflag" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +func TestDeleteConsumerParsesMultipleGRPCHosts(t *testing.T) { + t.Parallel() + + m, err := NewMain() + if err != nil { + t.Fatalf("Creating Main: %v", err) + + } + os.Setenv("IDK_TEST_PILOSA_GRPC_HOSTS", "pilosa:20103,pilosa:20102") + + if err := pflag.LoadEnv(m, "IDK_TEST_", nil); err != nil { + t.Fatalf("loading environment: %v", err) + } + + if len(m.PilosaGRPCHosts) != 2 { + t.Errorf("expected to parse 2 values but got %v\n", len(m.PilosaGRPCHosts)) + } + +} + +func TestDeleteConsumerCompoundStringKey(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := strconv.Itoa(a) + + m, err := NewMain() + if err != nil { + t.Fatalf("loading environment: %v", err) + } + configureTestFlags(m) + m.Delete = true + m.Index = fmt.Sprintf("cmd_del_comp_indexij%s", topic) + m.PrimaryKeyFields = []string{"abc", "db", "user_id"} + m.Topics = []string{topic} + + defer func() { + // TODO: for some reason (which I didn't dig into), + // this panics because m.PilosaClient() is nil. But + // it seems to only happen when running the full test + // (i.e. `make test`). If you just run this one test + // via `go test -v ./kafka -run TestDeleteConsumerCompoundStringKey` + // then the m.PilosaClient() is not nil. + if pclient := m.PilosaClient(); pclient != nil { + if err := pclient.DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + } + }() + + tlsConf, err := idk.GetTLSConfig(nil, logger.NopLogger) + if err != nil { + t.Fatalf("getting tls config: %v", err) + } + licodec := liDecodeTestSchema(t, "delete_string.json") + schemaID := postSchema(t, "delete_string.json", "delete_string", m.SchemaRegistryURL, tlsConf) + // Create Producer instance + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + + fields := []string{"abc", "db", "user_id", "fields"} + records := [][]interface{}{ + {"aba", "db", 9, []string{"a", "bint", "cmutex", "mutstr", "bools|bf1", "bools|bf2", "setkeys", "bools-exists", "dec"}}, + } + m.MaxMsgs = uint64(len(records)) + + for _, vals := range records { + rec := makeRecord(t, fields, vals) + tPutRecordsKafka(t, p, topic, schemaID, licodec, "akey", rec) + } + + client, err := pilosaclient.NewClient(m.PilosaHosts) + if err != nil { + t.Fatalf("getting new client: %v", err) + } + sch, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + idx := sch.Index(m.Index, pilosaclient.OptIndexKeys(true)) + fld := idx.Field("a", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, 100)) + bfld := idx.Field("bint", pilosaclient.OptFieldTypeInt()) + cfld := idx.Field("cmutex", pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0)) + mutStr := idx.Field("mutstr", pilosaclient.OptFieldTypeMutex(pilosaclient.CacheTypeNone, 0), pilosaclient.OptFieldKeys(true)) + bools := idx.Field("bools", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, 100), pilosaclient.OptFieldKeys(true)) + boolsExists := idx.Field("bools-exists", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, 100), pilosaclient.OptFieldKeys(true)) + setKeys := idx.Field("setkeys", pilosaclient.OptFieldTypeSet(pilosaclient.CacheTypeRanked, 100), pilosaclient.OptFieldKeys(true)) + decFld := idx.Field("dec", pilosaclient.OptFieldTypeDecimal(2)) + err = client.SyncSchema(sch) + if err != nil { + t.Fatalf("syncing schema: %v", err) + } + + _, err = client.Query(idx.BatchQuery( + fld.Set(2, "aba|db|9"), + fld.Set(5, "aba|db|9"), + bfld.Set(15, "aba|db|9"), + cfld.Set(3, "aba|db|9"), + mutStr.Set("aval", "aba|db|9"), + bools.Set("bf1", "aba|db|9"), // bf1 is true + boolsExists.Set("bf1", "aba|db|9"), + boolsExists.Set("bf2", "aba|db|9"), // bf2 is false + setKeys.Set("2", "aba|db|9"), + setKeys.Set("5", "aba|db|9"), + decFld.Set(2222, "aba|db|9"), // TODO: Set doesn't do the decimal scale conversion — Pilosa doesn't handle decimals in Set call. + )) + if err != nil { + t.Fatalf("querying: %v", err) + } + + query := idx.BatchQuery( + fld.Row(2), + fld.Row(5), + bfld.GT(0), + cfld.Row(3), + mutStr.Row("aval"), + bools.Row("bf1"), + boolsExists.Row("bf1"), + boolsExists.Row("bf2"), + setKeys.Row("2"), + setKeys.Row("5"), + decFld.GT(22.21), + ) + resp, err := client.Query(query) + if err != nil { + t.Fatalf("querying: %v", err) + } + for i, res := range resp.Results() { + row := res.Row().Keys + if len(row) != 1 { + t.Errorf("expected to get a single result after setting for %d, got %v", i, row) + } + } + + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + resp, err = client.Query(query) + if err != nil { + t.Fatalf("querying: %v", err) + } + for i, res := range resp.Results() { + row := res.Row().Keys + if len(row) != 0 { + t.Errorf("expected no results after clearing for %d, got %v", i, row) + } + } + +} + +func TestDeleteConsumer(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := strconv.Itoa(a) + + m, err := NewMain() + if err != nil { + t.Fatalf("creating main %v", err) + } + configureTestFlags(m) + m.Timeout = 0 + m.Delete = true + m.Index = fmt.Sprintf("cmd_del_index239ij%s", topic) + m.IDField = "pk" + m.Topics = []string{topic} + defer func() { + client := m.PilosaClient() + if client == nil { + return + } + if err := client.DeleteIndexByName(m.Index); err != nil { + t.Logf("deleting test index: %v", err) + } + }() + + tlsConf, err := idk.GetTLSConfig(nil, logger.NopLogger) + if err != nil { + t.Fatalf("getting tls config: %v", err) + } + licodec := liDecodeTestSchema(t, "delete.json") + schemaID := postSchema(t, "delete.json", "delete", m.SchemaRegistryURL, tlsConf) + // Create Producer instance + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + // put records in kafka + tCreateTopic(t, topic, p) + + fields := []string{"pk", "fields"} + records := [][]interface{}{ + {1, []string{"a"}}, + {2, []string{"a"}}, + } + m.MaxMsgs = uint64(len(records)) + + for _, vals := range records { + rec := makeRecord(t, fields, vals) + tPutRecordsKafka(t, p, topic, schemaID, licodec, "akey", rec) + } + + client, err := pilosaclient.NewClient(m.PilosaHosts) + if err != nil { + t.Fatalf("getting new client: %v", err) + } + sch, err := client.Schema() + if err != nil { + t.Fatalf("getting schema: %v", err) + } + idx := sch.Index(m.Index) + fld := idx.Field("a") + err = client.SyncIndex(idx) + if err != nil { + t.Fatalf("syncing schema: %v", err) + } + + _, err = client.Query(fld.Set(2, 1)) + if err != nil { + t.Fatalf("querying: %v", err) + } + + err = m.Run() + if err != nil && errors.Cause(err) != io.EOF { + t.Fatalf("running main: %v", err) + } + + resp, err := client.Query(fld.Set(2, 1)) + if err != nil { + t.Fatalf("querying: %v", err) + } + + if !resp.Result().Changed() { + t.Fatalf("expected that bit should change after deletion called") + } +} diff --git a/idk/kafka/cmd_test.go b/idk/kafka/cmd_test.go new file mode 100644 index 000000000..9256faaf1 --- /dev/null +++ b/idk/kafka/cmd_test.go @@ -0,0 +1,682 @@ +//go:build !kafka_sasl +// +build !kafka_sasl + +package kafka + +import ( + "fmt" + "io/ioutil" + "math/rand" + "net/http" + "os" + "reflect" + "sort" + "strconv" + "strings" + "testing" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + liavro "github.com/linkedin/goavro/v2" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/molecula/featurebase/v3/logger" +) + +var pilosaHost string +var pilosaTLSHost string +var pilosaGrpcHost string +var kafkaHost string +var registryHost string +var certPath string + +func init() { + var ok bool + if pilosaHost, ok = os.LookupEnv("IDK_TEST_PILOSA_HOST"); !ok { + pilosaHost = "pilosa:10101" + } + if pilosaTLSHost, ok = os.LookupEnv("IDK_TEST_PILOSA_TLS_HOST"); !ok { + pilosaTLSHost = "https://pilosa-tls:10111" + } + if pilosaGrpcHost, ok = os.LookupEnv("IDK_TEST_PILOSA_GRPC_HOST"); !ok { + pilosaGrpcHost = "pilosa:20101" + } + if kafkaHost, ok = os.LookupEnv("IDK_TEST_KAFKA_HOST"); !ok { + kafkaHost = "kafka:9092" + } + if registryHost, ok = os.LookupEnv("IDK_TEST_REGISTRY_HOST"); !ok { + registryHost = "schema-registry:8081" + } + if certPath, ok = os.LookupEnv("IDK_TEST_CERT_PATH"); !ok { + certPath = "/certs" + } +} + +func configureTestFlags(main *Main) { + main.PilosaHosts = []string{pilosaHost} + main.PilosaGRPCHosts = []string{pilosaGrpcHost} + main.KafkaBootstrapServers = []string{kafkaHost} + main.SchemaRegistryURL = registryHost + main.Verbose = true + // intentionally low timeout — if this gets triggered it shouldn't + // have any negative effects + main.Timeout = time.Millisecond * 20 + main.Stats = "" + _, main.Verbose = os.LookupEnv("IDK_TEST_VERBOSE") +} + +func TestCmdAutoID(t *testing.T) { + t.Parallel() + + if testing.Short() { + t.Skip() + } + + rand.Seed(time.Now().UnixNano()) + topic := strconv.Itoa(rand.Int()) + + fields := []string{"val"} + records := [][]interface{}{ + {2}, + {3}, + {4}, + {6}, + } + + m, err := NewMain() + if err != nil { + t.Fatalf("creating main %v", err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_autoid239ij%s", topic) + m.BatchSize = 2 // need to test at a batch size less than the # of records, greater than, and equal to + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.AutoGenerate = true + m.ExternalGenerate = true + + // load schema + licodec := liDecodeTestSchema(t, "ids.json") + schemaID := postSchema(t, "ids.json", "ids", m.SchemaRegistryURL, nil) + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + // put records in kafka + tCreateTopic(t, topic, p) + + msgs := make([]map[string]interface{}, len(records)) + for i, vals := range records { + msgs[i] = makeRecord(t, fields, vals) + } + tPutRecordsKafka(t, p, topic, schemaID, licodec, "a", msgs...) + + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + qr, err := client.Query(index.Count(index.All())) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 4 { + t.Errorf("wrong count for columns, %d is not 4", qr.Result().Count()) + } + + qr, err = client.Query(pilosaclient.NewPQLBaseQuery(`Count(Distinct(All(), field="val"))`, index, nil)) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 4 { + t.Errorf("wrong count for val, %d is not 4", qr.Result().Count()) + } +} + +func TestConfigOptions(t *testing.T) { + m, err := NewMain() + if err != nil { + t.Fatalf("getting main: %v", err) + } + + m.KafkaDebug = "consumer" + m.KafkaClientId = "blah" + m.SkipOld = true + + // call NewSource to get and open source which calls some setup + // stuff that we want. We don't expect it to open successfully + // though. + src, err := m.NewSource() + if err != nil { + t.Fatalf("error calling new source: %v", err) + } + defer src.Close() + + cfg := src.(*Source).ConfigMap + + if val, err := cfg.Get("debug", nil); err != nil || val.(string) != "consumer" { + t.Fatalf("unexpected val for debug val: %v, err: %v", val, err) + } + if val, err := cfg.Get("client.id", nil); err != nil || val.(string) != "blah" { + t.Fatalf("unexpected val for client.id val: %v, err: %v", val, err) + } + + if val, err := cfg.Get("auto.offset.reset", nil); err != nil || val.(string) != "latest" { + t.Fatalf("unexpected val for auto.offset.reset val: %v, err: %v", val, err) + } + +} + +func TestCmdMainOne(t *testing.T) { + t.Parallel() + if testing.Short() { + t.Skip() + } + + tests := []struct { + name string + PrimaryKeyFields []string + IDField string + PilosaHosts []string + RegistryURL string + TLS *idk.TLSConfig + expRhinoKeys []string + expRhinoCols []uint64 + }{ + { + name: "3 primary keys str/str/int", + PrimaryKeyFields: []string{"abc", "db", "user_id"}, + expRhinoKeys: []string{"2|1|159", "4|3|44", "123456789|q2db_1234|432"}, // "2" + "1" + uint32(159) + + }, + { + name: "3 primary keys str/str/int TLS", + PrimaryKeyFields: []string{"abc", "db", "user_id"}, + PilosaHosts: []string{pilosaTLSHost}, + TLS: &idk.TLSConfig{ + CertificatePath: certPath + "/theclient.crt", + CertificateKeyPath: certPath + "/theclient.key", + CACertPath: certPath + "/ca.crt", + EnableClientVerification: true, + }, + expRhinoKeys: []string{"2|1|159", "4|3|44", "123456789|q2db_1234|432"}, // "2" + "1" + uint32(159) + + }, + { + name: "IDField int", + IDField: "user_id", + expRhinoCols: []uint64{44, 159, 432}, + }, + } + + rand := rand.New(rand.NewSource(time.Now().UnixNano())) + + for _, test := range tests { + test := test + a := rand.Int() + t.Run(test.name, func(t *testing.T) { + t.Parallel() + + fields := []string{"abc", "db", "user_id", "all_users", "has_deleted_date", "central_group", "custom_audiences", "desktop_boolean", "desktop_frequency", "desktop_recency", "product_boolean_historical_forestry_cravings_or_bugles", "ddd_category_total_current_rhinocerous_checking", "ddd_category_total_current_rhinocerous_thedog_cheetah", "survey1234", "days_since_last_logon", "elephant_added_for_account"} + + records := [][]interface{}{ + {"2", "1", 159, map[string]interface{}{"boolean": true}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"4", "3", 44, map[string]interface{}{"boolean": true}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"123456789", "q2db_1234", 432, map[string]interface{}{"boolean": false}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.9}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"123456789", "q2db_1234", 432, map[string]interface{}{"boolean": false}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"2", "1", 159, map[string]interface{}{"boolean": false}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"4", "3", 44, map[string]interface{}{"boolean": false}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"4", "3", 44, map[string]interface{}{"boolean": true}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + {"4", "3", 44, nil, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, // send all_users nil - regression test to make sure it isn't cleared by the nil + } + + topic := strconv.Itoa(a) + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatalf("creating main %v", err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index239ij%s", topic) + m.PrimaryKeyFields = test.PrimaryKeyFields + m.IDField = test.IDField + m.PackBools = "bools" + m.BatchSize = 3 // need to test at a batch size less than the # of records, greater than, and equal to + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + if test.PilosaHosts != nil { + m.PilosaHosts = test.PilosaHosts + } + if test.TLS != nil { + m.TLS = *test.TLS + } + if test.RegistryURL != "" { + m.SchemaRegistryURL = test.RegistryURL + } + + // load big schema + licodec := liDecodeTestSchema(t, "bigschema.json") + tlsConf, err := idk.GetTLSConfig(test.TLS, logger.NopLogger) + if err != nil { + t.Fatalf("getting tls config: %v", err) + } + schemaID := postSchema(t, "bigschema.json", "bigschema2", m.SchemaRegistryURL, tlsConf) + + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + // put records in kafka + tCreateTopic(t, topic, p) + + msgs := make([]map[string]interface{}, len(records)) + for i, vals := range records { + msgs[i] = makeRecord(t, fields, vals) + } + tPutRecordsKafka(t, p, topic, schemaID, licodec, "akey", msgs...) + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + if status, body, err := client.HTTPRequest("POST", "/recalculate-caches", nil, nil); err != nil { + t.Fatalf("recalculating cache: status: %d, response: %s, error: %s", status, body, err) + } + + // check data in Pilosa + if !index.HasField("abc") { + t.Fatal("don't have abc") + } + abc := index.Field("abc") + qr, err := client.Query(index.Count(abc.Row("2"))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for abc, %d is not 1", qr.Result().Count()) + } + + bools := index.Field("bools") + qr, err = client.Query(bools.TopN(10)) + if err != nil { + t.Fatalf("querying: %v", err) + } + ci := sortableCRI(qr.Result().CountItems()) + exp := sortableCRI{{Count: 1, Key: "all_users"}} + sort.Sort(ci) + sort.Sort(exp) + if !reflect.DeepEqual(ci, exp) { + qr, err = client.Query(bools.Row("all_users")) + if err != nil { + t.Fatalf("querying: %v", err) + } + t.Errorf("unexpected result exp/got\n%+v\n%+v\nall_users:%+v", exp, ci, qr.Result().Row().Keys) + } + + qr, err = client.Query(bools.Row("all_users")) + if err != nil { + t.Fatalf("querying: %v", err) + } + if test.IDField == "" { + if keys := qr.Result().Row().Keys; !reflect.DeepEqual(keys, []string{"4|3|44"}) { + t.Errorf("unexpected keys %v", keys) + } + } else if cols := qr.Result().Row().Columns; !reflect.DeepEqual(cols, []uint64{44}) { + t.Errorf("unexpected cols %v", cols) + } + + bools = index.Field("bools-exists") + qr, err = client.Query(bools.TopN(10)) + if err != nil { + t.Fatalf("querying: %v", err) + } + ci = sortableCRI(qr.Result().CountItems()) + exp = sortableCRI{{Count: 3, Key: "all_users"}, {Count: 3, Key: "has_deleted_date"}} + sort.Sort(ci) + sort.Sort(exp) + if !reflect.DeepEqual(ci, exp) { + t.Errorf("unexpected result exp/got\n%+v\n%+v", exp, ci) + } + + rhino := index.Field("ddd_category_total_current_rhinocerous_checking") + qr, err = client.Query(rhino.Between(5, 6)) + if err != nil { + t.Fatalf("querying: %v", err) + } + keys := qr.Result().Row().Keys + sort.Strings(keys) + sort.Strings(test.expRhinoKeys) + if test.expRhinoKeys != nil { + if !reflect.DeepEqual(keys, test.expRhinoKeys) { + t.Errorf("wrong keys: %v, exp: %v", keys, test.expRhinoKeys) + } + } + if test.expRhinoCols != nil { + bod := tDoHTTPPost(t, fmt.Sprintf("http://"+pilosaHost+"/index/%s/query", m.Index), "application/pql", "Row(ddd_category_total_current_rhinocerous_checking==5.4)") + if !strings.Contains(bod, "44,159,432") { + t.Errorf("unexpected result with float query: '%s'", bod) + } + if cols := qr.Result().Row().Columns; !reflect.DeepEqual(cols, test.expRhinoCols) { + t.Errorf("wrong cols: %v, exp: %v", cols, test.expRhinoCols) + } + } + + if !index.HasField("survey1234") { + t.Fatalf("don't have survey1234") + } + survey1234 := index.Field("survey1234") + if typ := survey1234.Opts().Type(); typ != pilosaclient.FieldTypeMutex { + t.Errorf("survey1234 of unexpected type: %v", typ) + } + }) + } +} + +func TestCmdSourceTimeout(t *testing.T) { + // t.Parallel() + + rand.Seed(time.Now().UnixNano()) + topic := strconv.Itoa(rand.Int()) + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatalf("creating main %v", err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_schemachange239ij%s", topic) + m.IDField = "id" + m.PackBools = "bools" + m.BatchSize = 5 + m.Topics = []string{topic} + m.Timeout = time.Millisecond * 20 + m.MaxMsgs = uint64(3) + + schemaStr1 := `{"type": "record","namespace": "cmdSrcTimeout","name": "basic","fields": [{"name":"id","type":"long"},{"name":"a","type": "string"}]}` + licodec1, err := liavro.NewCodec(schemaStr1) + if err != nil { + t.Fatalf("li parsing schema: %v", err) + } + + schemaClient := csrc.NewClient(m.SchemaRegistryURL, nil, nil) + resp, err := schemaClient.PostSubjects("cmdSourceTimeout", schemaStr1) + if err != nil { + t.Fatalf("posting schema: %v", err) + } + schemaID1 := resp.ID + + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + + rec := makeRecord(t, []string{"id", "a"}, []interface{}{1, "v"}) + tPutRecordsKafka(t, p, topic, schemaID1, licodec1, "akey", rec) + rec = makeRecord(t, []string{"id", "a"}, []interface{}{2, "v"}) + tPutRecordsKafka(t, p, topic, schemaID1, licodec1, "akey", rec) + + // create client manually and then create schema. We have to do + // this ahead of time because we're calling m.Run concurrently. + client, err := pilosaclient.NewClient(m.PilosaHosts) + if err != nil { + t.Fatalf("creating new client: %v", err) + } + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + af := index.Field("a", pilosaclient.OptFieldKeys(true)) + if err := client.SyncIndex(index); err != nil { + t.Fatalf("syncing index: %v", err) + } + defer func() { + if err := client.DeleteIndexByName(m.Index); err != nil { + t.Fatalf("deleting index: %s", m.Index) + } + }() + + // Run ingest in a goroutine so we can see the effect of the + // timeout flush. + signal := make(chan struct{}) + go func() { + err = m.Run() + if err != nil { + t.Logf("running main: %v", err) + } + close(signal) + }() + + // query Pilosa repeatedly until we see the two records reflected there. + for { + qr, err := client.Query(index.Count(af.Row("v"))) + if err != nil { + t.Fatalf("querying: %v", err) + } + if cnt := qr.Result().Count(); cnt == 2 { + break + } else if cnt == 0 { + time.Sleep(time.Millisecond * 50) + continue + } else { + t.Fatalf("unexpected count: %v", cnt) + } + } + + // put another message to make m.Run finish (MaxMsgs = 3) + tPutRecordsKafka(t, p, topic, schemaID1, licodec1, "akey", rec) + + // make sure the Run goroutine actually finished + <-signal +} + +func TestCmdSchemaChange(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + topic := strconv.Itoa(rand.Int()) + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatalf("creating main %v", err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_schemachange239ij%s", topic) + m.IDField = "id" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(3) + + // load two schemas + schemaStr1 := `{"type": "record","namespace": "c.e","name": "F","fields": [{"name":"id","type":"long"},{"name":"a","type": "boolean"},{"name": "c", "type": "int"}]}` + licodec1, err := liavro.NewCodec(schemaStr1) + if err != nil { + t.Fatalf("li parsing schema: %v", err) + } + schemaStr2 := `{"type": "record","namespace": "c.e","name": "F","fields": [{"name":"id","type":"long"},{"name":"a","type": "boolean"},{"name":"b","type":"long"},{"name": "c", "type": "int"}]}` + licodec2, err := liavro.NewCodec(schemaStr2) + if err != nil { + t.Fatalf("li parsing schema: %v", err) + } + + // have to change schema name to change field from int to long + schemaStr3 := `{"type": "record","namespace": "c.e","name": "F2","fields": [{"name":"id","type":"long"},{"name":"a","type": "boolean"},{"name":"b","type":"long"},{"name": "c", "type": "long"}]}` + licodec3, err := liavro.NewCodec(schemaStr3) + if err != nil { + t.Fatalf("li parsing schema: %v", err) + } + + schemaClient := csrc.NewClient(m.SchemaRegistryURL, nil, nil) + resp, err := schemaClient.PostSubjects("subj", schemaStr1) + if err != nil { + t.Fatalf("posting schema: %v", err) + } + schemaID1 := resp.ID + resp, err = schemaClient.PostSubjects("subj2", schemaStr2) + if err != nil { + t.Fatalf("posting schema: %v", err) + } + schemaID2 := resp.ID + resp, err = schemaClient.PostSubjects("subj3", schemaStr3) + if err != nil { + t.Fatalf("posting schema: %v", err) + } + schemaID3 := resp.ID + + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + + tCreateTopic(t, topic, p) + + rec := makeRecord(t, []string{"id", "a", "c"}, []interface{}{1, true, 7}) + tPutRecordsKafka(t, p, topic, schemaID1, licodec1, "akey", rec) + rec = makeRecord(t, []string{"id", "a", "b", "c"}, []interface{}{2, true, 22, 8}) + tPutRecordsKafka(t, p, topic, schemaID2, licodec2, "akey", rec) + rec = makeRecord(t, []string{"id", "a", "b", "c"}, []interface{}{2, true, 22, 9_876_543_210}) + tPutRecordsKafka(t, p, topic, schemaID3, licodec3, "akey", rec) + + // run ingest + err = m.Run() + if err != nil { + t.Logf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + if status, body, err := client.HTTPRequest("POST", "/recalculate-caches", nil, nil); err != nil { + t.Fatalf("recalculating cache: status: %d, response: %s, error: %s", status, body, err) + } + + fieldA := index.Field("bools") + fieldB := index.Field("b") + + qresp, err := client.Query(index.BatchQuery(fieldA.Row("a"), fieldB.GTE(0))) + if err != nil { + t.Fatalf("querying: %v", err) + } + aRow := qresp.Results()[0].Row().Columns + if !reflect.DeepEqual(aRow, []uint64{1, 2}) { + t.Errorf("unexpected columns for a: %v", aRow) + } + bRow := qresp.Results()[1].Row().Columns + if !reflect.DeepEqual(bRow, []uint64{2}) { + t.Errorf("unexpected columns for a: %v", bRow) + } + + qresp, err = client.Query(index.RawQuery("Row(c==7)")) + if err != nil { + t.Fatalf("querying: %v", err) + } + sevenRow := qresp.Results()[0].Row().Columns + if !reflect.DeepEqual(sevenRow, []uint64{1}) { + t.Errorf("unexpected columns for 8: %v", sevenRow) + } + + qresp, err = client.Query(index.RawQuery("Row(c==9876543210)")) + if err != nil { + t.Fatalf("querying: %v", err) + } + nineBRow := qresp.Results()[0].Row().Columns + if !reflect.DeepEqual(nineBRow, []uint64{2}) { + t.Errorf("unexpected columns for 9876543210: %v", nineBRow) + } +} + +type sortableCRI []pilosaclient.CountResultItem + +func (s sortableCRI) Len() int { return len(s) } +func (s sortableCRI) Less(i, j int) bool { + if s[i].Count != s[j].Count { + return s[i].Count > s[j].Count + } + if s[i].ID != s[j].ID { + return s[i].ID < s[j].ID + } + if s[i].Key != s[j].Key { + return s[i].Key < s[j].Key + } + return true +} +func (s sortableCRI) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +func makeRecord(t *testing.T, fields []string, vals []interface{}) map[string]interface{} { + if len(fields) != len(vals) { + t.Fatalf("have %d fields and %d vals", len(fields), len(vals)) + } + ret := make(map[string]interface{}) + for i, field := range fields { + ret[field] = vals[i] + } + return ret +} + +func tDoHTTPPost(t *testing.T, url, contentType, body string) string { + resp, err := http.Post(url, contentType, strings.NewReader(body)) + if err != nil { + t.Fatalf("making POST request: %v", err) + } + + bod, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatalf("reading POST response bdoy: %v", err) + } + + return string(bod) +} diff --git a/idk/kafka/csrc/csrc.go b/idk/kafka/csrc/csrc.go new file mode 100644 index 000000000..822377f23 --- /dev/null +++ b/idk/kafka/csrc/csrc.go @@ -0,0 +1,133 @@ +package csrc + +import ( + "crypto/tls" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "strings" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +type Client struct { + URL string + + httpClient *http.Client + Auth *BasicAuth +} +type BasicAuth struct { + KafkaSchemaApiKey string + KafkaSchemaApiSecret string +} + +func NewClient(url string, tlsConfig *tls.Config, authConfig *BasicAuth) *Client { + if !strings.HasPrefix(url, "http") { + url = "http://" + url + } + c := http.DefaultClient + if strings.HasPrefix(url, "https://") { + log.Printf("getting http client with tls config: %v", tlsConfig) + c = idk.GetHTTPClient(tlsConfig) + } + return &Client{ + URL: url, + + httpClient: c, + Auth: authConfig, + } +} + +// GetSchema gets the schema with the ID. +// https://docs.confluent.io/current/schema-registry/develop/api.html#get--schemas-ids-int-%20id +func (c *Client) GetSchema(id int) (string, error) { + // schemaUrlResponse, err := s.httpClient.Get(schemaUrl) + req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/schemas/ids/%d", c.URL, id), http.NoBody) + if err != nil { + return "", errors.Wrap(err, "building request for getting schema from registry") + } + if c.Auth != nil { + req.SetBasicAuth(c.Auth.KafkaSchemaApiKey, c.Auth.KafkaSchemaApiSecret) + } + + resp, err := c.httpClient.Do(req) + if err != nil { + return "", errors.Wrap(err, "getting schema from registry") + } + defer resp.Body.Close() + sr := SchemaResponse{} + err = unmarshalRespErr(resp, err, &sr) + if err != nil { + return "", errors.Wrap(err, "making http request") + } + return sr.Schema, nil +} + +type SchemaResponse struct { + Schema string `json:"schema"` // The actual AVRO schema + Subject string `json:"subject"` // Subject where the schema is registered for + Version int `json:"version"` // Version within this subject + ID int `json:"id"` // Registry's unique id +} + +type ErrorResponse struct { + StatusCode int `json:"error_code"` + Body string `json:"message"` +} + +func (e *ErrorResponse) Error() string { + return fmt.Sprintf("status %d: %s", e.StatusCode, e.Body) +} + +func (c *Client) PostSubjects(subj, schema string) (*SchemaResponse, error) { + schema = strings.Replace(schema, "\t", "", -1) + schema = strings.Replace(schema, "\n", `\n`, -1) + schema = fmt.Sprintf(`{"schema": "%s"}`, strings.Replace(schema, `"`, `\"`, -1)) // this is probably terrible + + // schemaUrlResponse, err := s.httpClient.Get(schemaUrl) + req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/subjects/%s/versions", c.URL, subj), strings.NewReader(schema)) + if err != nil { + return nil, errors.Wrap(err, "building request to post subjects") + } + if c.Auth != nil { + req.SetBasicAuth(c.Auth.KafkaSchemaApiKey, c.Auth.KafkaSchemaApiSecret) + } + req.Header.Add("Content-Type", "application/json") + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, errors.Wrap(err, "posting subjects") + } + defer resp.Body.Close() + sr := &SchemaResponse{} + err = unmarshalRespErr(resp, err, sr) + if err != nil { + return nil, errors.Wrapf(err, "unmarshaling resp to %s", fmt.Sprintf("%s/subjects/%s/versions", c.URL, subj)) + } + return sr, nil +} + +func unmarshalRespErr(resp *http.Response, err error, into interface{}) error { + if err != nil { + return errors.Wrap(err, "making http request") + } + if resp.StatusCode != 200 { + bod, err := ioutil.ReadAll(resp.Body) + if err != nil { + return errors.Wrap(err, "reading body") + } + errResp := &ErrorResponse{ + StatusCode: resp.StatusCode, + Body: string(bod), + } + return errResp + } + dec := json.NewDecoder(resp.Body) + err = dec.Decode(into) + if err != nil { + return errors.Wrap(err, "unmarshaling body") + } + return nil +} diff --git a/idk/kafka/csrc/csrc_integration_test.go b/idk/kafka/csrc/csrc_integration_test.go new file mode 100644 index 000000000..b491fcc5c --- /dev/null +++ b/idk/kafka/csrc/csrc_integration_test.go @@ -0,0 +1,48 @@ +package csrc_test + +import ( + "os" + "testing" + + "github.com/molecula/featurebase/v3/idk/kafka/csrc" +) + +func TestPostGet(t *testing.T) { + if testing.Short() { + t.Skip() + } + + var registryHost string + registryHost, ok := os.LookupEnv("IDK_TEST_REGISTRY_HOST") + if !ok { + registryHost = "schema-registry:8081" + } + + client := csrc.NewClient(registryHost, nil, nil) + + schemaStr := `{"type":"record","name":"a","fields":[{"name":"blah","type":"string"}]}` + r, err := client.PostSubjects("aname", schemaStr) + if err != nil { + t.Fatalf("postsubjects: %v", err) + } + + // Docs indicate that schema and subject should be returned by the + // POST, but they are not. + // + // if r.Schema != schemaStr { + // t.Errorf("wrong schema: %s", r.Schema) + // } + + // if r.Subject != "aname" { + // t.Errorf("wrong name: %v", r.Subject) + // } + + sch, err := client.GetSchema(r.ID) + if err != nil { + t.Fatalf("getting schema: %v", err) + } + + if sch != schemaStr { + t.Errorf("unexpected schema\n%s\n%s", sch, schemaStr) + } +} diff --git a/idk/kafka/put.go b/idk/kafka/put.go new file mode 100644 index 000000000..afca94762 --- /dev/null +++ b/idk/kafka/put.go @@ -0,0 +1,193 @@ +package kafka + +import ( + "context" + "encoding/binary" + "io/ioutil" + "os" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + liavro "github.com/linkedin/goavro/v2" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +type PutCmd struct { + idk.ConfluentCommand `flag:"!embed"` + Topic string `help:"Kafka topic to post to."` + + Schema string + SchemaFile string + Subject string + + Data string + + DryRun bool `help:"Dry run - just flag parsing."` + configMap *confluent.ConfigMap `flag:"-"` + + log logger.Logger + NumPartitions int + ReplicationFactor int +} + +func (p *PutCmd) Log() logger.Logger { return p.log } + +func NewPutCmd() (*PutCmd, error) { + var err error + p := PutCmd{} + p.ConfluentCommand = idk.ConfluentCommand{} + + p.KafkaBootstrapServers = []string{"localhost:9092"} + p.SchemaRegistryURL = "localhost:8081" + p.Topic = "defaulttopic" + p.Schema = `{"type": "record","namespace": "c.e","name": "F","fields": [{"name":"id","type":"long"},{"name":"a","type": "boolean"},{"name": "b", "type": "float", "scale": 2}]}` + p.SchemaFile = "" + p.Subject = "test" + p.Data = `{"id": 1, "a": true, "b": 1.43}` + p.log = logger.NewVerboseLogger(os.Stderr) + + return &p, err +} + +func (p *PutCmd) Run() (err error) { + p.configMap, err = common.SetupConfluent(&p.ConfluentCommand) + if err != nil { + return errors.Wrap(err, "setting up confluent") + } + var auth *csrc.BasicAuth + if p.SchemaRegistryUsername != "" { + + auth = &csrc.BasicAuth{ + KafkaSchemaApiKey: p.SchemaRegistryUsername, + KafkaSchemaApiSecret: p.SchemaRegistryPassword, + } + } + client := csrc.NewClient(p.SchemaRegistryURL, nil, auth) + + schemaStr, err := p.getSchema() + if err != nil { + return errors.Wrap(err, "getting schema") + } + + resp, err := client.PostSubjects(p.Subject, schemaStr) + if err != nil { + return errors.Wrap(err, "posting schema") + } + p.log.Printf("Posted schema ID: %d\n", resp.ID) + + licodec, err := liavro.NewCodec(schemaStr) + if err != nil { + return errors.Wrap(err, "li decoding schema") + } + + rec, _, err := licodec.NativeFromTextual([]byte(p.Data)) + if err != nil { + return errors.Wrap(err, "decoding data") + } + + p.log.Debugf("Decoded: %v\n", rec) + + data, err := endcodeAvro(int(resp.ID), licodec, rec.(map[string]interface{})) + if err != nil { + return errors.Wrap(err, "encoding data") + } + + // Create Producer instance + pr, err := confluent.NewProducer(p.configMap) + if err != nil { + return errors.Wrap(err, "failed to create producer") + } + defer pr.Close() + + err = CreateKafkaTopic(context.Background(), p.Topic, pr, p.NumPartitions, p.ReplicationFactor) + if err != nil { + return errors.Wrap(err, "creating topic") + } + + delivery_chan := make(chan confluent.Event, 10) + + err = pr.Produce(&confluent.Message{ + TopicPartition: confluent.TopicPartition{Topic: &p.Topic, Partition: confluent.PartitionAny}, + Value: data, + }, delivery_chan) + + e := <-delivery_chan + m := e.(*confluent.Message) + + if m.TopicPartition.Error != nil { + return m.TopicPartition.Error + } + close(delivery_chan) + + if err != nil { + return errors.Wrap(err, "failed to write message to kafka") + } + + return nil +} +func CreateKafkaTopic(ctx context.Context, topic string, p *confluent.Producer, numPartitions int, replicationFactor int) error { + a, err := confluent.NewAdminClientFromProducer(p) + if err != nil { + return errors.Wrap(err, "failed to create new admin client from producer") + } + defer a.Close() + // Contexts are used to abort or limit the amount of time + // the Admin call blocks waiting for a result. + ctx, cancel := context.WithCancel(ctx) + defer cancel() + // Create topics on cluster. + // Set Admin options to wait up to 60s for the operation to finish on the remote cluster + maxDur, err := time.ParseDuration("60s") + if err != nil { + return errors.Wrap(err, "ParseDuration(60s)") + } + // TODO: maybe add delete and retention period to config + results, err := a.CreateTopics( + ctx, + // Multiple topics can be created simultaneously + // by providing more TopicSpecification structs here. + []confluent.TopicSpecification{{ + Topic: topic, + NumPartitions: numPartitions, + ReplicationFactor: replicationFactor}}, + // Admin options + confluent.SetAdminOperationTimeout(maxDur)) + if err != nil { + return errors.Wrap(err, "admin client request error") + } + for _, result := range results { + if result.Error.Code() != confluent.ErrNoError && result.Error.Code() != confluent.ErrTopicAlreadyExists { + return errors.Wrap(errors.New(result.Error.Error()), "failed to create topic") + } + } + return nil +} +func (p *PutCmd) getSchema() (string, error) { + if p.Schema == "" && p.SchemaFile == "" { + return "", errors.New("need a string schema or schema file") + } + if p.Schema != "" { + return p.Schema, nil + } + bytes, err := ioutil.ReadFile(p.SchemaFile) + if err != nil { + return "", errors.Wrap(err, "reading schema file") + } + return string(bytes), nil +} + +func endcodeAvro(schemaID int, schema *liavro.Codec, record map[string]interface{}) ([]byte, error) { + buf := make([]byte, 5, 1000) + buf[0] = 0 + binary.BigEndian.PutUint32(buf[1:], uint32(schemaID)) + buf, err := schema.BinaryFromNative(buf, record) + if err != nil { + return nil, errors.Errorf("encoding %v: %v", record, err) + } + + return buf, nil +} diff --git a/idk/kafka/putsource.go b/idk/kafka/putsource.go new file mode 100644 index 000000000..5b58a3db8 --- /dev/null +++ b/idk/kafka/putsource.go @@ -0,0 +1,821 @@ +package kafka + +import ( + "context" + "encoding/binary" + "encoding/json" + "fmt" + "hash/fnv" + "io" + "os" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/go-avro/avro" + liavro "github.com/linkedin/goavro/v2" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/molecula/featurebase/v3/logger" + "github.com/molecula/featurebase/v3/pql" + "github.com/pkg/errors" + "golang.org/x/sync/errgroup" +) + +// PutSource represents a kafka put process that operates on one +// or more idk.Source. +type PutSource struct { + idk.ConfluentCommand + Topic string `help:"Kafka topic to post to."` + Subject string `help:"Kafka schema subject."` + BatchSize int `help:"Size of record batches to submit to Kafka."` + + // FB specific config for setting partition key efficiently + FBPrimaryKeyFields []string + FBIndexName string + FBIDField string + + Concurrency int `help:"Number of concurrent sources and indexing routines to launch."` + + TrackProgress bool `help:"Periodically print status updates on how many records have been sourced." short:""` + + ReplicationFactor int `help:"set replication factor for kafka cluster"` + NumPartitions int `help:"set partition for kafka cluster"` + // NewSource must be set by the user of Main before calling + // Main.Run. Main.Run will call this function "Concurrency" times. It + // is the job of this function to ensure that the concurrent + // sources which are started partition work appropriately. This is + // typically set up (by convention) in the Source's package in + // cmd.go + NewSource func() (idk.Source, error) `flag:"-"` + + Log logger.Logger + + progress *idk.ProgressTracker + + schemaClient *csrc.Client + ConfigMap *confluent.ConfigMap `flag:"-"` + Target string +} + +// NewPutSource returns a new instance of PutSource. +func NewPutSource() (*PutSource, error) { + var err error + p := PutSource{} + p.ConfluentCommand = idk.ConfluentCommand{} + p.KafkaBootstrapServers = []string{"localhost:9092"} + p.SchemaRegistryURL = "http://localhost:8081" + p.Topic = "defaulttopic" + p.Subject = "defaultsubject" + p.BatchSize = 1000 + p.Log = logger.NewStandardLogger(os.Stderr) + p.ConfigMap, err = common.SetupConfluent(&p.ConfluentCommand) + return &p, err +} + +// Run sends the source records to kafka based on concurrency. +func (p *PutSource) Run() error { + // Set up the schema registry client. + var auth *csrc.BasicAuth + if p.SchemaRegistryUsername != "" { + auth = &csrc.BasicAuth{ + KafkaSchemaApiKey: p.SchemaRegistryUsername, + KafkaSchemaApiSecret: p.SchemaRegistryPassword, + } + } + p.schemaClient = csrc.NewClient(p.SchemaRegistryURL, nil, auth) + + if p.TrackProgress { + p.progress = &idk.ProgressTracker{} + startTime := time.Now() + var wg sync.WaitGroup + defer wg.Wait() + doneCh := make(chan struct{}) + defer func() { close(doneCh) }() + wg.Add(1) + go func() { + defer wg.Done() + + // Set up a timer to check progress every 10 seconds. + tick := time.NewTicker(10 * time.Second) + defer tick.Stop() + + prev := uint64(0) + stalled := true + for { + progress := p.progress.Check() + switch { + case progress != prev: + // Forward progress continues. + p.Log.Printf("sourced %d records (%.2f records/minute)", progress, float64(progress)/time.Since(startTime).Minutes()) + stalled = false + case stalled: + // We already told the user that it is stalled. + default: + // This is the start of a stall. + // No records have been sourced in the past 5 seconds. + p.Log.Printf("record sourcing stalled") + stalled = true + } + prev = progress + + select { + case <-tick.C: + case <-doneCh: + // Generate a final status update. + p.Log.Printf("sourced %d records in %s", p.progress.Check(), time.Since(startTime)) + return + } + } + }() + } + + // Create Producer instance + pr, err := confluent.NewProducer(p.ConfigMap) + if err != nil { + return errors.Wrap(err, "Failed to create producer") + } + // Create the topic if it does not exist. + err = CreateKafkaTopic(context.Background(), p.Topic, pr, p.NumPartitions, p.ReplicationFactor) + pr.Close() + + if err != nil { + return errors.Wrap(err, "creating topic") + } + + //Make producer channel buffered + err = p.ConfigMap.SetKey("go.produce.channel.size", 1) + if err != nil { + return errors.Wrap(err, "setting produce channel") + } + + // TODO: i don't think we actually want to run these concurrently for now + // we can just iterate over them serially. + eg := errgroup.Group{} + for c := 0; c < p.Concurrency; c++ { + c := c + eg.Go(func() error { + // targets allowed are defined in datagen target, make sure they match + var err error + if p.Target == "kafka" { + err = p.runSource(c) + } else { // this is for target kafkastatic + err = p.runSourceJson(c) + } + if err != nil && err != io.EOF { + return err + } + return nil + }) + } + err = eg.Wait() + if err != nil && err != io.EOF { + return errors.Wrap(err, "confluent.PutSource.Run") + } + return nil +} + +func convertToJson(schema []idk.Field, record []interface{}) ([]byte, error) { + if len(schema) != len(record) { + return []byte{}, fmt.Errorf("Length of schema %v and record %v don't match", len(schema), len(record)) + } + mesg := make(map[string]interface{}) + for i := range schema { + field, val := schema[i], record[i] + if valb, ok := val.([]byte); ok { + val = string(valb) + } + mesg[field.Name()] = val + } + + return json.Marshal(mesg) +} + +func (p *PutSource) getKeyFunc(schema []idk.Field) (func(vals []interface{}) ([]byte, error), error) { + if len(p.FBPrimaryKeyFields) > 0 { + indices := make([]int, len(p.FBPrimaryKeyFields)) + for i, fieldName := range p.FBPrimaryKeyFields { + for j, f := range schema { + if f.Name() == fieldName { + indices[i] = j + break + } + } + } + return func(vals []interface{}) ([]byte, error) { + h := fnv.New64a() + h.Write([]byte(p.FBIndexName)) + for pos, ind := range indices { + valb, ok := vals[ind].([]byte) + if !ok { + valS, ok := vals[ind].(string) + if !ok { + return nil, errors.Errorf("primary key value must be string or byte slice, but got %v of %[1]T", vals[ind]) + } + valb = []byte(valS) + } + h.Write(valb) + if pos < len(indices)-1 { + h.Write([]byte{'|'}) + } + } + partition := h.Sum64() % 256 + ret := make([]byte, 8) + binary.BigEndian.PutUint64(ret, partition) + return ret, nil + }, nil + } else if p.FBIDField != "" { + return nil, errors.New("getting partition key for IDField not implemented") + } + return nil, nil // autogen doesn't need to set the key at all +} + +func (p *PutSource) runSourceJson(c int) error { + p.Log.Printf("start source %d", c) + source, err := p.NewSource() + if err != nil { + return errors.Wrap(err, "getting source") + } + if p.progress != nil { + source = p.progress.Track(source) + } + + // Create Producer instance + producer, err := confluent.NewProducer(p.ConfigMap) + if err != nil { + return errors.Wrap(err, "Failed to create producer") + } + + finished := int32(0) + iter := int64(0) + doneChan := common.LaunchKafkaEventConfirmer(producer, &finished, &iter) + defer producer.Close() + var schema []idk.Field + var getKeyFunc func(vals []interface{}) ([]byte, error) + rec, err := source.Record() + if err == nil { + err = idk.ErrSchemaChange // always need to fetch the schema the first time + } + for ; ; rec, err = source.Record() { + if err == idk.ErrFlush { + continue + } + if err != nil || iter == 0 { + if err == idk.ErrSchemaChange || iter == 0 { + p.Log.Debugf("handle kafka schema\n") + schema = source.Schema() + getKeyFunc, err = p.getKeyFunc(schema) + if err != nil && err.Error() != "getting partition key for IDField not implemented" { + return errors.Wrap(err, "getting key func") + } + } else { + break + } + } + // in custom.go, we return nil when it is EOF + if rec == nil { + break + } + + // map schema and records to json + data, err := convertToJson(schema, rec.Data()) + if err != nil { + return errors.Wrap(err, "converting record to json") + } + // maybe we need a message key, but don't know what to do + p.Log.Debugf("put kafka record json: %v, %s, %s, %v\n", p.Topic, rec.Data()[0], data, err) + var key []byte + if getKeyFunc != nil { + key, err = getKeyFunc(rec.Data()) + if err != nil { + return errors.Wrap(err, "trying to get partition key") + } + } + producer.ProduceChannel() <- &confluent.Message{ + TopicPartition: confluent.TopicPartition{Topic: &p.Topic, Partition: confluent.PartitionAny}, + Key: key, + Value: data, + } + atomic.AddInt64(&iter, 1) + } + atomic.AddInt32(&finished, 1) + <-doneChan + recNotFlushed := producer.Flush(15 * 10000) // 10ms + count := 0 + for recNotFlushed != 0 { + recNotFlushed = producer.Flush(15 * 10000) // 10ms + count += 1 + if count > 4 { + p.Log.Debugf("Tried more than 4 times to flush confluent producer") + break + } + } + + if err != io.EOF { + return errors.Wrap(err, "getting record") + } + + p.Log.Printf("Put %d generated records\n", iter) + + return nil +} + +func (p *PutSource) runSource(c int) error { + p.Log.Printf("start source %d", c) + source, err := p.NewSource() + if err != nil { + return errors.Wrap(err, "getting source") + } + if p.progress != nil { + source = p.progress.Track(source) + } + + // Create Producer instance + producer, err := confluent.NewProducer(p.ConfigMap) + if err != nil { + return errors.Wrap(err, "Failed to create producer") + } + defer producer.Close() + + finished := int32(0) + iter := int64(0) + doneChan := common.LaunchKafkaEventConfirmer(producer, &finished, &iter) + + var licodec *liavro.Codec + var resp *csrc.SchemaResponse + var schema []idk.Field + rec, err := source.Record() + if err == nil { + err = idk.ErrSchemaChange // always need to fetch the schema the first time + } + for ; ; rec, err = source.Record() { + if err == idk.ErrFlush { + continue + } + if err != nil || iter == 0 { + if err == idk.ErrSchemaChange || iter == 0 { + p.Log.Debugf("handle kafka schema\n") + schema = source.Schema() + + recordSchema, err := idkSchemaToAvroRecordSchema(schema) + if err != nil { + return errors.Wrap(err, "converting schema to record schema") + } + + b, err := json.Marshal(recordSchema) + if err != nil { + return errors.Wrap(err, "converting record schema to json") + } + + schemaStr := string(b) + resp, err = p.schemaClient.PostSubjects(p.Subject, schemaStr) + if err != nil { + return errors.Wrap(err, "posting schema") + } + p.Log.Printf("Posted schema ID: %d\n", resp.ID) + + licodec, err = liavro.NewCodec(schemaStr) + if err != nil { + return errors.Wrap(err, "li decoding schema") + } + } else { + break + } + } + + // Convert record to a data structure suitable for kafka put. + recordMap, err := p.recordToMap(rec, schema) + if err != nil { + return errors.Wrap(err, "converting record to map") + } + data, err := endcodeAvro(int(resp.ID), licodec, recordMap) + if err != nil { + return errors.Wrap(err, "encoding record") + } + producer.ProduceChannel() <- &confluent.Message{ + TopicPartition: confluent.TopicPartition{Topic: &p.Topic, Partition: confluent.PartitionAny}, + //Key: []byte(strconv.Itoa(uid)), + Value: data, + } + atomic.AddInt64(&iter, 1) //increment message produced + } + atomic.AddInt32(&finished, 1) //signal no more messages + <-doneChan //wait till kafka acknowledges + + recNotFlushed := producer.Flush(15 * 10000) // 10ms + count := 0 + for recNotFlushed != 0 { + recNotFlushed = producer.Flush(10000) // 10ms + count += 1 + if count > 4 { + p.Log.Debugf("Tried more than 4 times to flush confluent producer") + break + } + } + if err != io.EOF { + return errors.Wrap(err, "getting record") + } + return nil +} + +// recordToMap converts an idk.Record to a map of interfaces based on the +// provided schema. +func (p *PutSource) recordToMap(rec idk.Record, schema []idk.Field) (map[string]interface{}, error) { + m := make(map[string]interface{}) + data := rec.Data() + + if len(schema) != len(data) { + return nil, errors.Errorf("number of data fields (%d) does not match schema (%d)", len(data), len(schema)) + } + + // TODO: return errors for cases where casting isn't ok + for i, field := range schema { + v := data[i] + if v == nil { + m[field.Name()] = nil + continue + } + switch fld := field.(type) { + case idk.BoolField: + b, err := toBool(v) + if err != nil { + return nil, errors.Wrap(err, "converting value to bool") + } + m[fld.Name()] = map[string]interface{}{"boolean": b} + case idk.DateIntField: + if n, err := toInt64(v); err == nil { + m[fld.Name()] = map[string]interface{}{"long": n} + } else { + m[fld.Name()] = map[string]interface{}{"bytes": v} + } + + case idk.DecimalField: + d, err := toDecimal(v, fld.Scale) + if err != nil { + return nil, errors.Wrap(err, "converting value to decimal") + } + m[fld.Name()] = map[string]interface{}{"bytes": d} + case idk.IDArrayField: + switch vt := v.(type) { + case []uint64: + int64s := make([]int64, len(vt)) + for i := range vt { + int64s[i] = int64(vt[i]) + } + m[fld.Name()] = map[string]interface{}{"array": int64s} + case []int64: + m[fld.Name()] = map[string]interface{}{"array": vt} + } + case idk.IDField: + l, err := toInt64(v) + if err != nil { + return nil, errors.Wrap(err, "converting value to int64") + } + m[fld.Name()] = map[string]interface{}{"long": l} + case idk.IntField: + l, err := toInt64(v) + if err != nil { + return nil, errors.Wrap(err, "converting value to int64") + } + m[fld.Name()] = map[string]interface{}{"long": l} + case idk.RecordTimeField: + m[fld.Name()] = map[string]interface{}{"bytes": v} + case idk.TimestampField: + buf := make([]byte, 8) + u := uint64(v.(time.Time).Unix()) + binary.BigEndian.PutUint64(buf, u) + m[fld.Name()] = map[string]interface{}{"bytes": buf} + case idk.SignedIntBoolKeyField: + l, err := toInt64(v) + if err != nil { + return nil, errors.Wrap(err, "converting value to int64") + } + m[fld.Name()] = map[string]interface{}{"long": l} + case idk.StringArrayField: + m[fld.Name()] = map[string]interface{}{"array": v} + case idk.StringField: + s, err := toString(v) + if err != nil { + return nil, errors.Wrap(err, "converting value to string") + } + m[fld.Name()] = map[string]interface{}{"string": s} + default: + m[fld.Name()] = v + } + } + + return m, nil +} + +// idkSchemaToAvroRecordSchema converts an []idk.Field to a RecordSchema. +func idkSchemaToAvroRecordSchema(fields []idk.Field) (*avro.RecordSchema, error) { + record := &avro.RecordSchema{ + Name: "idk_datagen", + Namespace: "idk.datagen", + Doc: "idk-datagen", + Fields: make([]*avro.SchemaField, len(fields)), + } + + for n, fld := range fields { + var schemaField = &avro.SchemaField{} + quantum := idk.QuantumOf(fld) + var ttl time.Duration = 0 + if quantum != "" { + ttlTemp, err := idk.TTLOf(fld) + if err != nil { + return nil, err + } + ttl = ttlTemp + } + ttlString := ttl.String() + cacheConfig := idk.CacheConfigOf(fld) + hasMutex := idk.HasMutex(fld) + + switch typ := fld.(type) { + case idk.BoolField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BooleanSchema{}, + }, + } + schemaField.Default = nil + + case idk.DateIntField: + props := map[string]interface{}{ + "fieldType": "dateInt", // TODO: namespace molecula custom properties? + "epoch": typ.Epoch.Format(typ.Layout), + "unit": typ.Unit, + "customUnit": typ.CustomUnit, + "layout": typ.Layout, + } + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{Properties: props}, + &avro.LongSchema{Properties: props}, + }, + } + schemaField.Default = nil + + case idk.TimestampField: + props := map[string]interface{}{ + "fieldType": "timestamp", + "granularity": typ.Granularity, + "layout": typ.Layout, + "epoch": typ.Epoch.Format(typ.Layout), + "unit": typ.Unit, + } + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{Properties: props}, + }, + } + schemaField.Default = nil + + case idk.DecimalField: + props := map[string]interface{}{ + "fieldType": "decimal", + "scale": typ.Scale, + "precision": idk.DecimalPrecision, + } + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{Properties: props}, + }, + } + schemaField.Default = nil + + case idk.IDArrayField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.LongSchema{ + Properties: map[string]interface{}{ + "quantum": quantum, + "ttl": ttlString, + "cacheType": string(cacheConfig.CacheType), + "cacheSize": strconv.Itoa(cacheConfig.CacheSize), + }, + }, + }, + }, + } + schemaField.Default = nil + + case idk.IDField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.LongSchema{ + Properties: map[string]interface{}{ + "fieldType": "id", + "mutex": hasMutex, + "quantum": quantum, + "ttl": ttlString, + "cacheType": string(cacheConfig.CacheType), + "cacheSize": strconv.Itoa(cacheConfig.CacheSize), + }, + }, + }, + } + schemaField.Default = nil + + case idk.IgnoreField: + continue + + case idk.IntField: + props := map[string]interface{}{ + "fieldType": "int", + } + + // JSON decodes numeric values into float64, + // so reading them back from kafka gives us float64 value, + // which after convertion overflows int64. + // That's why we convert Min and Max properties to strings, + // so while unmarshaling (func intProp(p propper, s string)), + // we can parse it as int value. + if typ.Min != nil { + props["min"] = strconv.FormatInt(*typ.Min, 10) + } + if typ.Max != nil { + props["max"] = strconv.FormatInt(*typ.Max, 10) + } + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.LongSchema{Properties: props}, + }, + } + schemaField.Default = nil + + case idk.RecordTimeField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{ + Properties: map[string]interface{}{ + "fieldType": "recordTime", + "layout": typ.Layout, + }, + }, + }, + } + schemaField.Default = nil + + case idk.SignedIntBoolKeyField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.LongSchema{ + Properties: map[string]interface{}{ + "fieldType": "signedIntBoolKey", + }, + }, + }, + } + schemaField.Default = nil + + case idk.StringArrayField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.StringSchema{ + Properties: map[string]interface{}{ + "quantum": quantum, + "ttl": ttlString, + "cacheType": string(cacheConfig.CacheType), + "cacheSize": strconv.Itoa(cacheConfig.CacheSize), + }, + }, + }, + }, + } + schemaField.Default = nil + + case idk.StringField: + schemaField.Type = &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.StringSchema{ + Properties: map[string]interface{}{ + "mutex": hasMutex, + "quantum": quantum, + "ttl": ttlString, + "cacheType": string(cacheConfig.CacheType), + "cacheSize": strconv.Itoa(cacheConfig.CacheSize), + }, + }, + }, + } + schemaField.Default = nil + + default: + return nil, errors.Errorf("unsupported idk fieldtype %T for schema", typ) + } + schemaField.Name = fields[n].Name() + record.Fields[n] = schemaField + } + + return record, nil +} + +// helper functions below were all copied from idk/interfaces.go +func toInt64(val interface{}) (int64, error) { + switch vt := val.(type) { + case uint: + return int64(vt), nil + case uint8: + return int64(vt), nil + case uint16: + return int64(vt), nil + case uint32: + return int64(vt), nil + case uint64: + return int64(vt), nil + case int: + return int64(vt), nil + case int8: + return int64(vt), nil + case int16: + return int64(vt), nil + case int32: + return int64(vt), nil + case int64: + return vt, nil + case string: // added this case because of mysql driver sending the ids as strings + v, err := strconv.ParseInt(strings.TrimSpace(vt), 10, 64) + if err != nil { + return 0, err + } + return v, nil + default: + return 0, errors.Errorf("couldn't convert %v of %[1]T to int64", vt) + } +} + +func toBool(val interface{}) (bool, error) { + switch vt := val.(type) { + case bool: + return vt, nil + case byte: + if vt == '0' || vt == 'f' || vt == 'F' { + return false, nil + } + return vt != 0, nil + case string: + switch strings.ToLower(vt) { + case "", "0", "f", "false": + return false, nil + } + return true, nil + default: + if vint, err := toInt64(val); err == nil { + return vint != 0, nil + } + return false, errors.Errorf("couldn't convert %v of %[1]T to bool", vt) + } +} + +func toString(val interface{}) (string, error) { + switch vt := val.(type) { + case string: + return vt, nil + case []byte: + return string(vt), nil + default: + if vt == nil { + return "", nil + } + return fmt.Sprintf("%v", val), nil + } +} + +func toDecimal(val interface{}, scale int64) ([]byte, error) { + var value uint64 + + switch vt := val.(type) { + case pql.Decimal: + v := vt.Value() + value, scale = uint64(v.Int64()), vt.Scale + case float32: + value = uint64(vt) * uint64(pql.Pow10(scale)) + case float64: + value = uint64(vt) * uint64(pql.Pow10(scale)) + default: + return nil, errors.Errorf("couldn't convert %v of %[1]T to decimal", vt) + } + + b := make([]byte, 16) + binary.BigEndian.PutUint64(b[0:8], value) + binary.BigEndian.PutUint64(b[8:16], uint64(scale)) + return b, nil +} diff --git a/idk/kafka/putsource_test.go b/idk/kafka/putsource_test.go new file mode 100644 index 000000000..dfd49bf08 --- /dev/null +++ b/idk/kafka/putsource_test.go @@ -0,0 +1,309 @@ +package kafka + +import ( + "reflect" + "strings" + "testing" + + "github.com/go-avro/avro" + "github.com/molecula/featurebase/v3/idk" +) + +func TestIdkSchemaToAvroRecordSchema(t *testing.T) { + + tests := []struct { + name string + field idk.Field + fields []idk.Field + schemaField []*avro.SchemaField + expRecordSchema string + expErr string + }{ + { + name: "string field ttl", + fields: []idk.Field{ + idk.StringField{ + NameVal: "a", + DestNameVal: "a", + Quantum: "YMD", + TTL: "11s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "a", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.StringSchema{ + Properties: map[string]interface{}{ + "cacheSize": "0", + "cacheType": "", + "mutex": false, + "quantum": "YMD", + "ttl": "11s", + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "string field bad ttl", + fields: []idk.Field{ + idk.StringField{ + NameVal: "b", + DestNameVal: "b", + Quantum: "YMD", + TTL: "bad-ttl", + }, + }, + expRecordSchema: "bad-ttl-no-recordSchema", + expErr: "unable to parse TTL", + }, + { + name: "string field ttl without quantum", + fields: []idk.Field{ + idk.StringField{ + NameVal: "c", + DestNameVal: "c", + TTL: "12s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "c", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.StringSchema{ + Properties: map[string]interface{}{ + "cacheSize": "50000", + "cacheType": "ranked", + "mutex": false, + "quantum": "", + "ttl": "0s", + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "id field ttl", + fields: []idk.Field{ + idk.IDField{ + NameVal: "d", + DestNameVal: "d", + Quantum: "YMD", + TTL: "13s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "d", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.LongSchema{ + Properties: map[string]interface{}{ + "cacheSize": "0", + "cacheType": "", + "mutex": false, + "quantum": "YMD", + "ttl": "13s", + "fieldType": "id", + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "id field ttl without quantum", + fields: []idk.Field{ + idk.IDField{ + NameVal: "e", + DestNameVal: "e", + TTL: "14s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "e", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.LongSchema{ + Properties: map[string]interface{}{ + "cacheSize": "50000", + "cacheType": "ranked", + "mutex": false, + "quantum": "", + "ttl": "0s", + "fieldType": "id", + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "string array field ttl", + fields: []idk.Field{ + idk.StringArrayField{ + NameVal: "f", + DestNameVal: "f", + Quantum: "YMD", + TTL: "15s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "f", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.StringSchema{ + Properties: map[string]interface{}{ + "cacheSize": "0", + "cacheType": "", + "quantum": "YMD", + "ttl": "15s", + }, + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "string array field ttl without quantum", + fields: []idk.Field{ + idk.StringArrayField{ + NameVal: "g", + DestNameVal: "g", + TTL: "16s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "g", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.StringSchema{ + Properties: map[string]interface{}{ + "cacheSize": "50000", + "cacheType": "ranked", + "quantum": "", + "ttl": "0s", + }, + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "id array field ttl", + fields: []idk.Field{ + idk.IDArrayField{ + NameVal: "h", + DestNameVal: "h", + Quantum: "YMD", + TTL: "17s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "h", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.LongSchema{ + Properties: map[string]interface{}{ + "cacheSize": "0", + "cacheType": "", + "quantum": "YMD", + "ttl": "17s", + }, + }, + }, + }, + }, + }, + }, + expErr: "", + }, + { + name: "id array field ttl without quantum", + fields: []idk.Field{ + idk.IDArrayField{ + NameVal: "i", + DestNameVal: "i", + TTL: "18s", + }, + }, + schemaField: []*avro.SchemaField{ + { + Name: "i", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.ArraySchema{ + Items: &avro.LongSchema{ + Properties: map[string]interface{}{ + "cacheSize": "50000", + "cacheType": "ranked", + "quantum": "", + "ttl": "0s", + }, + }, + }, + }, + }, + }, + }, + expErr: "", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + testRecordSchema := &avro.RecordSchema{ + Name: "idk_datagen", + Namespace: "idk.datagen", + Doc: "idk-datagen", + } + if test.expRecordSchema == "bad-ttl-no-recordSchema" { + testRecordSchema = nil + } else { + testRecordSchema.Fields = test.schemaField + } + + field, err := idkSchemaToAvroRecordSchema(test.fields) + if !reflect.DeepEqual(field, testRecordSchema) { + t.Errorf("expected field: '%v', got: '%v'", testRecordSchema, field) + } + if err != nil && !strings.Contains(err.Error(), test.expErr) { + t.Errorf("expected error: '%s', got: '%s'", test.expErr, err.Error()) + } + }) + } +} diff --git a/idk/kafka/source.go b/idk/kafka/source.go new file mode 100644 index 000000000..3697b087d --- /dev/null +++ b/idk/kafka/source.go @@ -0,0 +1,1068 @@ +package kafka + +import ( + "bytes" + "context" + "crypto/tls" + "encoding/binary" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "net" + "net/http" + "net/url" + "path" + "strconv" + "strings" + "sync" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/go-avro/avro" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +// Source implements the idk.Source interface using kafka as a data +// source. It is not threadsafe! Due to the way Kafka clients work, to +// achieve concurrency, create multiple Sources. +type Source struct { + idk.ConfluentCommand + Topics []string + Group string + Log logger.Logger + Timeout time.Duration + SkipOld bool + Verbose bool + schema Schema + TLS idk.TLSConfig + + spoolBase uint64 + spool []confluent.TopicPartition + client *confluent.Consumer + recordChannel chan recordWithError + + ConfigMap *confluent.ConfigMap + + // lastSchemaID and lastSchema keep track of the most recent + // schema in use. We expect this not to change often, but when it + // does, we need to notify the caller of Source.Record() + lastSchemaID int32 + lastSchema []idk.Field + + // cache is a schema cache so we don't have to look up the same + // schema from the registry each time. + cache map[int32]avro.Schema + httpClient *http.Client + // synchronize closing + quit chan struct{} + wg sync.WaitGroup + opened bool +} + +const defaultRegistryHost = "localhost:8081" + +// NewSource gets a new Source +func NewSource() *Source { + src := &Source{ + ConfluentCommand: idk.ConfluentCommand{}, + Topics: []string{"test"}, + Group: "group0", + Log: logger.NopLogger, + + lastSchemaID: -1, + cache: make(map[int32]avro.Schema), + recordChannel: make(chan recordWithError), + quit: make(chan struct{}), + ConfigMap: &confluent.ConfigMap{}, + } + + src.SchemaRegistryURL = "http://" + defaultRegistryHost + return src +} + +// Record returns the value of the next kafka message. The same Record +// object may be used by successive calls to Record, so it should not +// be retained. +func (s *Source) Record() (idk.Record, error) { + rec := s.fetch() + switch rec.Err { + case nil: + case io.EOF: + return nil, io.EOF + case context.DeadlineExceeded: + return nil, idk.ErrFlush + default: + return nil, errors.Wrap(rec.Err, "failed to fetch record from Kafka") + } + + if rec.Record == nil { + return nil, idk.ErrFlush + } + + val, err := s.decodeAvroValueWithSchemaRegistry(rec.Record.Value) + if err != nil && err != idk.ErrSchemaChange { + return nil, errors.Wrap(err, "decoding with schema registry") + } + data := s.toPDKRecord(val.(map[string]interface{})) // val must be map[string]interface{} because we only accept schemas which are Record type at the top level. + + msg := rec.Record + // with librdkafka, committing an offset means that offset is + // where we should pick up from... we don't want to re-read this + // message, so we add 1 + msg.TopicPartition.Offset++ + s.spool = append(s.spool, msg.TopicPartition) + return &Record{ + src: s, + topic: *msg.TopicPartition.Topic, + partition: int(msg.TopicPartition.Partition), + offset: int64(msg.TopicPartition.Offset), + idx: s.spoolBase + uint64(len(s.spool)), + data: data, + }, err +} + +type recordWithError struct { + Record *confluent.Message + Err error +} + +func (s *Source) fetch() recordWithError { + if s.Timeout != 0 { + select { + case msg := <-s.recordChannel: + return msg + case <-time.After(s.Timeout): + return recordWithError{Err: context.DeadlineExceeded} + } + } + return <-s.recordChannel +} + +func (s *Source) Schema() []idk.Field { + return s.lastSchema +} + +func (s *Source) SchemaSubject() string { + return s.schema.Subject +} +func (s *Source) SchemaSchema() string { + return s.schema.Schema +} +func (s *Source) SchemaVersion() int { + return s.schema.Version +} +func (s *Source) SchemaID() int { + return s.schema.ID +} + +func (s *Source) SchemaMetadata() string { + var buf bytes.Buffer + err := json.Compact(&buf, []byte(s.cache[s.lastSchemaID].String())) + if err != nil { + panic(err) + } + return buf.String() +} + +func (s *Source) toPDKRecord(vals map[string]interface{}) []interface{} { + data := make([]interface{}, len(s.lastSchema)) + for i, field := range s.lastSchema { + data[i] = vals[field.Name()] + } + + return data +} + +type Record struct { + src *Source + topic string + partition int + offset int64 + idx uint64 + data []interface{} +} + +func (r *Record) StreamOffset() (string, uint64) { + return r.topic + ":" + strconv.Itoa(r.partition), uint64(r.offset) +} + +var _ idk.OffsetStreamRecord = &Record{} + +func (r *Record) Commit(ctx context.Context) error { + idx, base := r.idx, r.src.spoolBase + if idx < base { + return errors.New("cannot commit a record that has already been committed") + } + section, remaining := r.src.spool[:idx-base], r.src.spool[idx-base:] + committedOffsets, err := r.src.CommitMessages(section) + extra := calOffsetDiff(section, committedOffsets) + if err != nil { + return errors.Wrap(err, "failed to commit messages") + } + if len(extra) > 0 { + remaining = append(remaining, extra...) + idx = idx - uint64(len(extra)) + } + + r.src.spool = remaining + r.src.spoolBase = idx + return nil +} + +func (r *Record) Data() []interface{} { + return r.data +} + +// Assuming committed msgs are in order +func calOffsetDiff(section, committed []confluent.TopicPartition) []confluent.TopicPartition { + return section[len(committed):] +} +func (s *Source) CommitMessages(recs []confluent.TopicPartition) ([]confluent.TopicPartition, error) { + return s.client.CommitOffsets(recs) +} + +// Open initializes the kafka source. +func (s *Source) Open() error { + cfg, err := common.SetupConfluent(&s.ConfluentCommand) + if err != nil { + return err + } + s.ConfigMap = cfg + + s.httpClient = http.DefaultClient + if err := s.cleanRegistryURL(); err != nil { + return errors.Wrap(err, "cleaning registry URL") + } + + if strings.HasPrefix(s.SchemaRegistryURL, "https://") { + tlsConfig, err := idk.GetTLSConfigFromConfluent(&s.ConfluentCommand, s.Log) + if err != nil { + return errors.Wrap(err, "getting TLS config") + } + s.httpClient = getHTTPClient(tlsConfig) + } + if s.Group != "" { + err = s.ConfigMap.SetKey("group.id", s.Group) + if err != nil { + return err + } + } + + // when there is no initial offset in Kafka or if the current offset does not exist any more, + // use this as starting offset: + // "earliest": automatically reset the offset to the earliest offset + // "latest": automatically reset the offset to the latest offset + offset := "earliest" + if s.SkipOld { + offset = "latest" + } + err = s.ConfigMap.SetKey("auto.offset.reset", offset) + if err != nil { + return err + } + if s.Verbose { + buf := bytes.NewBufferString("Confluent Config Map:") + encoder := json.NewEncoder(buf) + err = encoder.Encode(s.ConfigMap) + if err != nil { + return err + } + s.Log.Debugf(buf.String()) + stv, iv := confluent.LibraryVersion() + s.Log.Debugf("version:(%v) %v", iv, stv) + + } + cl, err := confluent.NewConsumer(s.ConfigMap) + if err != nil { + return errors.Wrap(err, "new consumer") + } + + if s.Verbose { + s.Log.Debugf("consumer started") + } + + err = cl.SubscribeTopics(s.Topics, nil) + if err != nil { + return errors.Wrap(err, "subscribe topics") + } + + if s.Verbose { + s.Log.Debugf("subscribed to %v", s.Topics) + } + + s.client = cl + s.opened = true + s.wg.Add(1) + go func() { + s.generator() + }() + + return nil +} + +func (s *Source) cleanRegistryURL() error { + // We can't immediately url.Parse the RegistryURL because parsing + // a host without a scheme is invalid. First we'll check for a + // scheme and add the default http:// if needed. + if !strings.Contains(s.SchemaRegistryURL, "://") { + s.SchemaRegistryURL = "http://" + s.SchemaRegistryURL + } + + SchemaRegistryURL, err := url.Parse(s.SchemaRegistryURL) + if err != nil { + return errors.Wrap(err, "parse registry URL") + } + + s.SchemaRegistryURL = SchemaRegistryURL.String() + return nil +} + +func (c *Source) generator() { + defer func() { + close(c.recordChannel) + c.wg.Done() + }() + + for { + select { + + case <-c.quit: + return + default: + ev := c.client.Poll(100) + if ev == nil { + continue + } + switch e := ev.(type) { + + // If we received an `AssignedPartitions` event, we need to make sure we + // assign the currently running consumer to the right partitions. + case confluent.AssignedPartitions: + err := c.client.Assign(e.Partitions) + if err != nil { + return + } + // If we received an `RevokedPartitions` event, we need to revoke this + // consumer from all partitions. This means this consumer won't pick up + // any work anymore, until a new `AssignedPartitions` event is handled. + case confluent.RevokedPartitions: + err := c.client.Unassign() + if err != nil { + return + } + + // If we receive an error, something happened on Kafka's side. We don't + // know what happened or if we can recover gracefully, so we instead + // terminate the running process. + case confluent.Error: + msg := recordWithError{Err: e} + select { + case c.recordChannel <- msg: + case <-c.quit: + return + } + + // On receiving a Kafka message, we process the received message and + // prepare it for delivery to the consumer of the consumer.messages + // channel. + case *confluent.Message: + msg := recordWithError{Record: e} + + // Once the message has been prepared, we offer it to the consumer of + // the messages channel. Since this is a blocking channel, we also + // listen for the quit signal, and stop delivering new messages + // accordingly. + select { + case c.recordChannel <- msg: + case <-c.quit: + return + } + default: + continue // consumer doesn't care about all event types (e.g. OffsetsCommitted) + } + } + } +} + +// Close closes the underlying kafka consumer. +func (s *Source) Close() error { + if s.client != nil { + if s.opened { //only close opened sources + s.quit <- struct{}{} + s.wg.Wait() + err := s.client.Close() + s.opened = false + return errors.Wrap(err, "closing kafka consumer") + } + } + return nil +} + +// TODO change name +func (s *Source) decodeAvroValueWithSchemaRegistry(val []byte) (interface{}, error) { + if len(val) < 6 || val[0] != 0 { + return nil, errors.Errorf("unexpected magic byte or length in avro kafka value, should be 0x00, but got %x", val) + } + id := int32(binary.BigEndian.Uint32(val[1:])) + codec, err := s.getCodec(id) + if err != nil { + return nil, errors.Wrap(err, "getting avro codec") + } + ret, err := avroDecode(codec, val[5:]) + if err != nil { + return nil, errors.Wrap(err, "decoding avro record") + } + if id != s.lastSchemaID { + s.lastSchema, err = avroToPDKSchema(codec) + if err != nil { + return nil, errors.Wrap(err, "converting to FeatureBase schema") + } + s.lastSchemaID = id + return ret, idk.ErrSchemaChange + } + + return ret, nil +} + +// avroToPDKSchema converts a full avro schema to the much more +// constrained []idk.Field which maps pretty directly onto +// Pilosa. Many features of avro are unsupported and will cause this +// to return an error. The "codec" argument of this function must be +// an avro.Record. +func avroToPDKSchema(codec avro.Schema) ([]idk.Field, error) { + switch codec.Type() { + case avro.Record: + recordSchema, ok := codec.(*avro.RecordSchema) + if !ok { + panic(fmt.Sprintf("Record isn't a *avro.RecordSchema, got %+v of %[1]T", codec)) + } + pdkFields := make([]idk.Field, 0, len(recordSchema.Fields)) + for _, field := range recordSchema.Fields { + pdkField, err := avroToPDKField(field) + if err != nil { + return nil, errors.Wrap(err, "converting avro field to pdk") + } + pdkFields = append(pdkFields, pdkField) + } + return pdkFields, nil + default: + return nil, errors.Errorf("unsupported Avro Schema type: %d", codec.Type()) // TODO error msg with int type is pretty opaque + } +} + +func avroToPDKField(aField *avro.SchemaField) (idk.Field, error) { + switch aField.Type.Type() { + case avro.Record: + return nil, errors.Errorf("nested fields are not currently supported, so the field type cannot be record.") + + case avro.String: + fld := idk.StringField{NameVal: aField.Name} + + if prop, ok := aField.Prop("mutex"); ok { + if mtx, ok := prop.(bool); ok { + fld.Mutex = mtx + } + } + + if quantum, err := stringProp(aField, "quantum"); err == nil { + fld.Quantum = quantum + if ttl, err := stringProp(aField, "ttl"); err == nil { + fld.TTL = ttl + } + } + + if cacheConfig, err := cacheConfigProp(aField); err == nil { + fld.CacheConfig = cacheConfig + } + return fld, nil + + case avro.Enum: + return idk.StringField{ + NameVal: aField.Name, + Mutex: true, + }, nil + + case avro.Bytes, avro.Fixed: + var ft string + + // This is here to support the native avro logicalType.decimal, + // but we have also implemented fieldType.decimal to be consistent + // with the other fieldType options. + if ft, _ = stringProp(aField, "logicalType"); ft != "decimal" { + ft, _ = stringProp(aField, "fieldType") + } + + switch ft { + case "decimal": + precision, _ := intProp(aField, "precision") + if precision > 18 || precision < 1 { + return nil, errors.Errorf("need precision for decimal in 1-18, but got:%d", precision) + } + scale, err := intProp(aField, "scale") + if scale > precision || err == wrongType { + return nil, errors.Errorf("0<=scale<=precision, got:%d err:%v", scale, err) + } + return idk.DecimalField{ + NameVal: aField.Name, + Scale: int64(scale), + }, nil + + case "dateInt": + layout, err := stringProp(aField, "layout") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: layout, err:%v", err) + } + + strEpoch, err := stringProp(aField, "epoch") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: epoch, err:%v", err) + } + epoch, err := time.Parse(layout, strEpoch) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch: %s", strEpoch) + } + + unit, err := stringProp(aField, "unit") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: unit, err:%v", err) + } + + customUnit, _ := stringProp(aField, "customUnit") + + return idk.DateIntField{ + NameVal: aField.Name, + Layout: layout, + Epoch: epoch, + Unit: idk.Unit(unit), + CustomUnit: customUnit, + }, nil + case "timestamp": + layout, err := stringProp(aField, "layout") + if err == wrongType { + return nil, errors.Errorf("property provided in wrong type for TimestampField: layout, err:%v", err) + } + + unit, err := stringProp(aField, "unit") + if err == wrongType { + return nil, errors.Errorf("property provided in wrong type for TimestampField: unit, err:%v", err) + } + + if layout == "" && unit == "" { + return nil, errors.New("either layout or unit required for TimestampField") + } + + granularity, err := stringProp(aField, "granularity") + if err == wrongType { + return nil, errors.Errorf("property provided in wrong type for TimestampField: unit, err:%v", err) + } + + var epoch time.Time + strEpoch, err := stringProp(aField, "epoch") + if err == nil { + epoch, err = time.Parse(layout, strEpoch) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch: %s", strEpoch) + } + } + + return idk.TimestampField{ + NameVal: aField.Name, + Granularity: granularity, + Layout: layout, + Epoch: epoch, + Unit: idk.Unit(unit), + }, nil + case "recordTime": + layout, err := stringProp(aField, "layout") + if err != nil { + return nil, errors.Errorf("required property for RecordTimeField: layout, err:%v", err) + } + return idk.RecordTimeField{ + Layout: layout, + }, nil + } + + // If field type was not specified, then treat as string. + var mutex bool + if mtx, ok := aField.Prop("mutex"); ok { + if mtxb, ok := mtx.(bool); ok { + mutex = mtxb + } + } + quantum, _ := stringProp(aField, "quantum") + ttl := "" + if quantum != "" { + ttl, _ = stringProp(aField, "ttl") + } + return idk.StringField{ + NameVal: aField.Name, + Mutex: mutex, + Quantum: quantum, + TTL: ttl, + }, nil + + case avro.Union: + return avroUnionToPDKField(aField) + + case avro.Array: + itemSchema := aField.Type.(*avro.ArraySchema).Items + + quantum, _ := stringProp(itemSchema, "quantum") + ttl := "" + if quantum != "" { + ttl, _ = stringProp(itemSchema, "ttl") + } + cacheConfig, _ := cacheConfigProp(itemSchema) + + switch typ := itemSchema.Type(); typ { + case avro.String, avro.Bytes, avro.Fixed, avro.Enum: + if ft, _ := stringProp(itemSchema, "fieldType"); ft == "decimal" { + return nil, errors.New("arrays of decimal are not supported") + } + return idk.StringArrayField{ + NameVal: aField.Name, + Quantum: quantum, + TTL: ttl, + CacheConfig: cacheConfig, + }, nil + + case avro.Long: + if ft, _ := stringProp(itemSchema, "fieldType"); ft == "decimal" { + return nil, errors.New("arrays of decimal are not supported") + } + return idk.IDArrayField{ + NameVal: aField.Name, + Quantum: quantum, + TTL: ttl, + CacheConfig: cacheConfig, + }, nil + + default: + return nil, errors.Errorf("array items type of %d is unsupported", itemSchema.Type()) + } + + case avro.Int, avro.Long: + ft, _ := stringProp(aField, "fieldType") + switch ft { + case "id": + fld := idk.IDField{NameVal: aField.Name} + + if prop, ok := aField.Prop("mutex"); ok { + if mtx, ok := prop.(bool); ok { + fld.Mutex = mtx + } + } + + if quantum, err := stringProp(aField, "quantum"); err == nil { + fld.Quantum = quantum + if ttl, err := stringProp(aField, "ttl"); err == nil { + fld.TTL = ttl + } + } + + if cacheConfig, err := cacheConfigProp(aField); err == nil { + fld.CacheConfig = cacheConfig + } + + return fld, nil + + case "int": + fld := idk.IntField{NameVal: aField.Name} + + if min, err := intProp(aField, "min"); err == nil { + fld.Min = intptr(min) + } + if max, err := intProp(aField, "max"); err == nil { + fld.Max = intptr(max) + } + return fld, nil + + case "signedIntBoolKey": + return idk.SignedIntBoolKeyField{ + NameVal: aField.Name, + }, nil + + case "dateInt": + layout, err := stringProp(aField, "layout") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: layout, err:%v", err) + } + + strEpoch, err := stringProp(aField, "epoch") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: epoch, err:%v", err) + } + epoch, err := time.Parse(layout, strEpoch) + if err != nil { + return nil, errors.Wrapf(err, "parsing epoch: %s", strEpoch) + } + + unit, err := stringProp(aField, "unit") + if err != nil { + return nil, errors.Errorf("required property for DateIntField: unit, err:%v", err) + } + customUnit, _ := stringProp(aField, "customUnit") + + return idk.DateIntField{ + NameVal: aField.Name, + Layout: layout, + Epoch: epoch, + Unit: idk.Unit(unit), + CustomUnit: customUnit, + }, nil + } + return idk.IntField{ + NameVal: aField.Name, + }, nil + + case avro.Float, avro.Double: + // TODO should probably require a logicalType if we're going + // to treat a float as a decimal. + field := idk.DecimalField{ + NameVal: aField.Name, + } + scale, err := intProp(aField, "scale") + if err == wrongType { + return nil, errors.Wrap(err, "getting scale") + } else if err == nil { + field.Scale = scale + } + return field, nil + + case avro.Boolean: + return idk.BoolField{ + NameVal: aField.Name, + }, nil + + case avro.Null: + return nil, errors.Errorf("null fields are not supported except inside Union") + + case avro.Map: + return nil, errors.Errorf("nested fields are not currently supported, so the field type cannot be map.") + + case avro.Recursive: + return nil, errors.Errorf("recursive schema fields are not currently supported.") + + default: + return nil, errors.Errorf("unknown schema type: %+v", aField.Type) + } +} + +func stringProp(p propper, s string) (string, error) { + ival, ok := p.Prop(s) + if !ok { + return "", notFound + } + sval, ok := ival.(string) + if !ok { + return "", wrongType + } + return sval, nil +} + +func cacheConfigProp(p propper) (*idk.CacheConfig, error) { + cacheType, err := stringProp(p, "cacheType") + if err != nil { + return nil, err + } + + cacheSizeStr, err := stringProp(p, "cacheSize") + if err != nil { + return nil, err + } + + cacheSize, err := strconv.Atoi(cacheSizeStr) + if err != nil { + return nil, err + } + + return &idk.CacheConfig{CacheType: pilosaclient.CacheType(cacheType), CacheSize: cacheSize}, nil +} +func intProp(p propper, s string) (int64, error) { + ival, ok := p.Prop(s) + if !ok { + return 0, notFound + } + + switch v := ival.(type) { + case string: + n, e := strconv.ParseInt(v, 10, 64) + if e != nil { + return 0, errors.Wrap(e, wrongType.Error()) + } + return n, nil + + case float64: + return int64(v), nil + + case int64: + return v, nil + + case int: + return int64(v), nil + } + + return 0, wrongType +} + +type propper interface { + Prop(string) (interface{}, bool) +} + +var notFound = errors.New("prop not found") +var wrongType = errors.New("val is wrong type") + +// avroUnionToPDKField takes an avro SchemaField with a Union type, +// and reduces it to a SchemaField with the type of one of the Types +// contained in the Union. It can only do this if the Union only has +// one type, or if it has multiple types and one is null. +func avroUnionToPDKField(field *avro.SchemaField) (idk.Field, error) { + if field.Type.Type() != avro.Union { + panic("it should be impossible to call avroUnionToPDKField with a non-union SchemaField") + } + uSchema := field.Type.(*avro.UnionSchema) + nf := &avro.SchemaField{ + Name: field.Name, + Doc: field.Doc, + Default: field.Default, + } + + for _, t := range uSchema.Types { + nf.Type = t + if nf.Type.Type() != avro.Null { + break + } + } + + if nf.Type == nil { + return nil, errors.New("unions are only supported when they are a single type plus optionally a Null") + } + + if nf.Type.Type() == avro.Null && len(uSchema.Types) > 1 { + return nil, errors.New("unions are only supported when one type is Null") + } + + nf.Properties = propertiesFromSchema(nf.Type, field.Properties) + return avroToPDKField(nf) +} + +// ifEmptyThen returns `prefer` if it contains any data, otherwise it +// returns `backup`. This is used for backward compatibility. +// +// We originally supported field properties being specified at the +// root level (i.e. against the "Union" itself), like `mutex` here: +// { "name": "eighth", "type": ["null", "string"], "mutex": true, "default": null } +// +// Instead, we want to support properties being associated with the +// specific field type within the union: +// { "name": "eighth", "type": ["null", {"type": "string", "mutex": true}], "default": null } +// +// Using this function allows us to fall back to the former (backup) +// case, but prioritize the latter (prefer). +func ifEmptyThen(prefer, backup map[string]interface{}) map[string]interface{} { + if len(prefer) == 0 { + return backup + } + return prefer +} + +// propertiesFromSchema (document and use!) +func propertiesFromSchema(sch avro.Schema, origProps map[string]interface{}) map[string]interface{} { + switch schT := sch.(type) { + case *avro.IntSchema, *avro.BooleanSchema, *avro.NullSchema, *avro.UnionSchema: + // for string->mutex behavior, mutex:true must be propagated here + return origProps + case *avro.LongSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.BytesSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.StringSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.DoubleSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.FloatSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.RecordSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.RecursiveSchema: + if schT.Actual != nil { + return ifEmptyThen(schT.Actual.Properties, origProps) + } + return nil + case *avro.EnumSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.ArraySchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.MapSchema: + return ifEmptyThen(schT.Properties, origProps) + case *avro.FixedSchema: + return ifEmptyThen(schT.Properties, origProps) + default: + // TODO handle logging properly (e.g. respect log path, use an interface logger, etc.) + log.Printf("Source: unhandled avro.Schema concrete type %T in propertiesFromSchema, value: %+v", schT, schT) + return nil + } +} + +// The Schema type is an object produced by the schema registry. +type Schema struct { + Schema string `json:"schema"` // The actual AVRO schema + Subject string `json:"subject"` // Subject where the schema is registered for + Version int `json:"version"` // Version within this subject + ID int `json:"id"` // Registry's unique id +} + +func (s *Source) codecURL(id int32, urlPath string) (string, error) { + url, err := url.Parse(s.SchemaRegistryURL) + if err != nil { + // this should be impossible since the Registry URL is created + // from URL.String() in Source.Open + return "", errors.Wrap(err, "parsing pre-validated registry url: "+s.SchemaRegistryURL) + } + url.Path = path.Join(url.Path, fmt.Sprintf(urlPath, id)) + + return url.String(), nil +} + +func (s *Source) getCodec(id int32) (avro.Schema, error) { + if codec, ok := s.cache[id]; ok { + return codec, nil + } + s.Log.Debugf("Source: new avro schema ID: %d", id) + // r, err := s.httpClient.Get(s.codecURL___OLD(id)) + schemaUrl, err := s.codecURL(id, "schemas/ids/%d") + if err != nil { + return nil, errors.Wrap(err, "getting schema url") + } + + // schemaUrlResponse, err := s.httpClient.Get(schemaUrl) + req, err := http.NewRequest(http.MethodGet, schemaUrl, http.NoBody) + if err != nil { + return nil, errors.Wrap(err, "building request for getting schema from registry") + } + if s.SchemaRegistryUsername != "" { + req.SetBasicAuth(s.SchemaRegistryUsername, s.SchemaRegistryPassword) + } + + schemaUrlResponse, err := s.httpClient.Do(req) + if err != nil { + return nil, errors.Wrap(err, "getting schema from registry") + } + defer schemaUrlResponse.Body.Close() + if schemaUrlResponse.StatusCode >= 300 { + bod, err := ioutil.ReadAll(schemaUrlResponse.Body) + if err != nil { + return nil, errors.Wrapf(err, "Failed to get schema, code: %d, no body", schemaUrlResponse.StatusCode) + } + return nil, errors.Errorf("Failed to get schema, code: %d, resp: %s", schemaUrlResponse.StatusCode, bod) + } + dec := json.NewDecoder(schemaUrlResponse.Body) + schema := &Schema{} + err = dec.Decode(schema) + if err != nil { + return nil, errors.Wrap(err, "decoding schema from registry") + } + + // get Subject and Version from url + schemaSubVerUrl, err := s.codecURL(id, "schemas/ids/%d/versions") + if err != nil { + return nil, errors.Wrap(err, "getting schema subject & version url") + } + req, err = http.NewRequest(http.MethodGet, schemaSubVerUrl, http.NoBody) + if err != nil { + return nil, errors.Wrap(err, "building request for getting schema from registry") + } + if s.SchemaRegistryUsername != "" { + req.SetBasicAuth(s.SchemaRegistryUsername, s.SchemaRegistryPassword) + } + + // try to get subject/version info for schema. Does not work on + // older confluent versions, so just log if it errors rather than + // returning error + subVerResponse, err := s.httpClient.Do(req) + if err != nil { + s.Log.Infof("Problem getting subject/version info for schema: %v", err) + } else { + if subVerResponse.StatusCode >= 300 { + bod, err := ioutil.ReadAll(subVerResponse.Body) + s.Log.Infof("Problem getting subject/version info for schema, response: %s. Err reading body: %v", bod, err) + } + defer subVerResponse.Body.Close() + + var tempSchemaStruct []struct { + Subject string `json:"subject"` + Version int `json:"version"` + } + + if bod, err := ioutil.ReadAll(subVerResponse.Body); err != nil { + s.Log.Infof("decoding subj/version %s body: %v", schemaSubVerUrl, err) + } else if err := json.Unmarshal(bod, &tempSchemaStruct); err != nil { + s.Log.Infof("decoding schema subject & version from registry: %v", err) + } + + if len(tempSchemaStruct) > 0 { + // save version, subject + schema.Version = tempSchemaStruct[0].Version + schema.Subject = tempSchemaStruct[0].Subject + } + } + + schema.ID = int(id) + // save schema object on s + s.schema = *schema + + codec, err := avro.ParseSchema(schema.Schema) + if err != nil { + return nil, errors.Wrap(err, "parsing schema") + } + s.Log.Debugf("Source: successfully got new avro schema %d: %s", id, codec.String()) + + s.cache[id] = codec + return codec, nil +} + +func avroDecode(codec avro.Schema, data []byte) (map[string]interface{}, error) { + reader := avro.NewGenericDatumReader() + // SetSchema must be called before calling Read + reader.SetSchema(codec) + + // Create a new Decoder with a given buffer + decoder := avro.NewBinaryDecoder(data) + + decodedRecord := avro.NewGenericRecord(codec) + // Read data into given GenericRecord with a given Decoder. The first parameter to Read should be something to read into + err := reader.Read(decodedRecord, decoder) + if err != nil { + return nil, errors.Wrap(err, "reading generic datum") + } + + return decodedRecord.Map(), nil +} + +func getHTTPClient(t *tls.Config) *http.Client { + transport := &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 10 * time.Second, + KeepAlive: 20 * time.Second, + DualStack: true, + }).DialContext, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } + if t != nil { + transport.TLSClientConfig = t + } + return &http.Client{Transport: transport} +} + +func intptr(i int64) *int64 { + return &i +} diff --git a/idk/kafka/source_test.go b/idk/kafka/source_test.go new file mode 100644 index 000000000..4d96e3167 --- /dev/null +++ b/idk/kafka/source_test.go @@ -0,0 +1,1159 @@ +//go:build !kafka_sasl +// +build !kafka_sasl + +package kafka + +import ( + "context" + "crypto/tls" + "encoding/binary" + "encoding/json" + "fmt" + "io/ioutil" + "math/big" + "math/rand" + "os" + "reflect" + "strings" + "testing" + "time" + + "github.com/confluentinc/confluent-kafka-go/kafka" + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/glycerine/vprint" + "github.com/go-avro/avro" + liavro "github.com/linkedin/goavro/v2" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/molecula/featurebase/v3/logger" +) + +func configureSourceTestFlags(source *Source) { + source.KafkaBootstrapServers = []string{kafkaHost} + source.SchemaRegistryURL = registryHost +} + +func TestAvroToPDKSchema(t *testing.T) { + t.Parallel() + + tests := []struct { + schemaFile string + exp []idk.Field + expErr string + }{ + { + schemaFile: "simple.json", + exp: expectedSchemas["simple.json"], + }, + { + schemaFile: "stringtypes.json", + exp: expectedSchemas["stringtypes.json"], + }, + { + schemaFile: "decimal.json", + exp: expectedSchemas["decimal.json"], + }, + { + schemaFile: "othertypes.json", + exp: expectedSchemas["othertypes.json"], + }, + { + schemaFile: "unions.json", + exp: expectedSchemas["unions.json"], + }, + { + schemaFile: "floatscale.json", + exp: expectedSchemas["floatscale.json"], + }, + { + schemaFile: "notarecord.json", + expErr: "unsupported Avro Schema type", + }, + { + schemaFile: "fieldisrecord.json", + expErr: "nested fields are not currently supported", + }, + { + schemaFile: "timestamp.json", + exp: expectedSchemas["timestamp.json"], + }, + } + + // check that we've covered all the test schemas + files, err := ioutil.ReadDir("./testdata/schemas") + if err != nil { + t.Fatalf("reading directory: %v", err) + } + if len(files) != len(tests)+4 { // +4 because we aren't testing bigschema.json, the two delete ones, or the ID allocation one here. + t.Errorf("have different number of schemas and tests: %d and %d\n%+v", len(files), len(tests), files) + } + + for _, test := range tests { + test := test + t.Run(test.schemaFile, func(t *testing.T) { + t.Parallel() + + codec := decodeTestSchema(t, test.schemaFile) + schema, err := avroToPDKSchema(codec) + if err != nil && test.expErr == "" { + t.Fatalf("unexpected error: %v", err) + } + if test.expErr != "" && err == nil { + t.Fatalf("expected error") + } + if test.expErr != "" && !strings.Contains(err.Error(), test.expErr) { + t.Fatalf("error expected/got\n%s\n%v", test.expErr, err.Error()) + } + if !reflect.DeepEqual(test.exp, schema) { + t.Fatalf("schema exp/got\n%+v\n%+v", test.exp, schema) + } + }) + } +} + +func TestAvroToPDKField(t *testing.T) { + tests := []struct { + name string + schemaField *avro.SchemaField + expField idk.Field + expErr string + }{ + { + name: "string ttl", + schemaField: &avro.SchemaField{ + Name: "string-ttl", + Type: &avro.StringSchema{}, + Properties: map[string]interface{}{ + "ttl": "30s", + "quantum": "YMD", + }, + }, + expField: idk.StringField{NameVal: "string-ttl", Quantum: "YMD", TTL: "30s"}, + expErr: "nil", + }, + { + name: "string ttl without quantum", + schemaField: &avro.SchemaField{ + Name: "string-ttl", + Type: &avro.StringSchema{}, + Properties: map[string]interface{}{ + "ttl": "30s", + }, + }, + expField: idk.StringField{NameVal: "string-ttl"}, + expErr: "nil", + }, + { + name: "bytes ttl", + schemaField: &avro.SchemaField{ + Name: "bytes-ttl", + Type: &avro.BytesSchema{}, + Properties: map[string]interface{}{ + "ttl": "30s", + "quantum": "YMD", + }, + }, + expField: idk.StringField{NameVal: "bytes-ttl", Quantum: "YMD", TTL: "30s"}, + expErr: "nil", + }, + { + name: "bytes ttl without quantum", + schemaField: &avro.SchemaField{ + Name: "bytes-ttl", + Type: &avro.BytesSchema{}, + Properties: map[string]interface{}{ + "ttl": "30s", + }, + }, + expField: idk.StringField{NameVal: "bytes-ttl"}, + expErr: "nil", + }, + { + name: "string array ttl", + schemaField: &avro.SchemaField{ + Name: "array-ttl", + Type: &avro.ArraySchema{ + Items: &avro.StringSchema{ + Properties: map[string]interface{}{ + "quantum": "YMD", + "ttl": "60s", + }, + }, + }, + }, + expField: idk.StringArrayField{NameVal: "array-ttl", Quantum: "YMD", TTL: "60s"}, + expErr: "nil", + }, + { + name: "string array ttl without quantum", + schemaField: &avro.SchemaField{ + Name: "array-ttl", + Type: &avro.ArraySchema{ + Items: &avro.StringSchema{ + Properties: map[string]interface{}{ + "ttl": "60s", + }, + }, + }, + }, + expField: idk.StringArrayField{NameVal: "array-ttl"}, + expErr: "nil", + }, + { + name: "Int ttl", + schemaField: &avro.SchemaField{ + Name: "int-ttl", + Type: &avro.IntSchema{}, + Properties: map[string]interface{}{ + "fieldType": "id", + "ttl": "30s", + "quantum": "YMD", + }, + }, + expField: idk.IDField{NameVal: "int-ttl", Quantum: "YMD", TTL: "30s"}, + expErr: "nil", + }, + { + name: "Int ttl without quantum", + schemaField: &avro.SchemaField{ + Name: "int-ttl", + Type: &avro.IntSchema{}, + Properties: map[string]interface{}{ + "fieldType": "id", + "ttl": "30s", + }, + }, + expField: idk.IDField{NameVal: "int-ttl"}, + expErr: "nil", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + field, err := avroToPDKField(test.schemaField) + if !reflect.DeepEqual(field, test.expField) { + t.Errorf("expected field: '%v', got: '%v'", test.expField, field) + } + if err != nil && !strings.Contains(err.Error(), test.expErr) { + t.Errorf("expected error: '%s', got: '%s'", test.expErr, err.Error()) + } + }) + } +} + +func decodeTestSchema(t *testing.T, filename string) avro.Schema { + codec, err := avro.ParseSchema(readTestSchema(t, filename)) + if err != nil { + t.Fatalf("parsing schema: %v", err) + } + return codec +} + +func readTestSchema(t *testing.T, filename string) string { + bytes, err := ioutil.ReadFile("./testdata/schemas/" + filename) + if err != nil { + t.Fatalf("reading schema file: %v", err) + } + return string(bytes) +} + +func liDecodeTestSchema(t *testing.T, filename string) *liavro.Codec { + codec, err := liavro.NewCodec(readTestSchema(t, filename)) + if err != nil { + t.Fatalf("li parsing schema: %v", err) + } + return codec +} + +var tests = []struct { + data []map[string]interface{} + schemaFile string + exp [][]interface{} +}{ + { + schemaFile: "simple.json", + data: []map[string]interface{}{{"first": "hello", "last": "goodbye"}, {"first": "one", "last": "two"}}, + exp: [][]interface{}{{"hello", "goodbye"}, {"one", "two"}}, + }, + { + schemaFile: "stringtypes.json", + data: []map[string]interface{}{{"first": "blah", "last": "goodbye", "middle": "123456789"}}, + exp: [][]interface{}{{"blah", []byte("goodbye"), []byte("123456789")}}, + }, + { + schemaFile: "decimal.json", + data: []map[string]interface{}{{"somenum": &big.Rat{}}, {"somenum": big.NewRat(10, 1)}, {"somenum": big.NewRat(1, 1)}, {"somenum": big.NewRat(5, 2)}, {"somenum": big.NewRat(1234567890, 1)}}, + exp: [][]interface{}{{[]byte{0}}, {[]byte{0x3, 0xE8}}, {[]byte{100}}, {[]byte{0, 250}}, {[]byte{0x1C, 0xBE, 0x99, 0x1A, 0x08}}}, + }, + { + schemaFile: "othertypes.json", + data: []map[string]interface{}{{"first": "a", "second": []string{"b", "c"}, "third": -8, "fourth": 99, "fifth": 99.9, "sixth": 101.1, "seventh": true, "eighth": map[string]interface{}{"string": "a"}, "ninth": map[string]interface{}{"string": "b"}}}, + exp: [][]interface{}{{"a", []interface{}{"b", "c"}, int32(-8), int64(99), float32(99.9), float64(101.1), true, "a", "b"}}, + }, + { + schemaFile: "unions.json", + data: []map[string]interface{}{ + {"first": map[string]interface{}{"string": "a"}, "second": map[string]interface{}{"boolean": true}, "third": map[string]interface{}{"long": 101}, "fourth": map[string]interface{}{"bytes.decimal": big.NewRat(5, 2)}, "fifth": map[string]interface{}{"double": float64(9.4921)}}, + {"first": nil, "second": nil, "third": map[string]interface{}{"null": nil}, "fourth": nil, "fifth": nil}, + }, + exp: [][]interface{}{ + {"a", true, int64(101), []byte{9, 196}, float64(9.4921)}, + {nil, nil, nil, nil, nil}}, + }, + { + schemaFile: "floatscale.json", + data: []map[string]interface{}{{"first": 23.12345}}, + exp: [][]interface{}{{float32(23.12345)}}, + }, + { + schemaFile: "timestamp.json", + data: []map[string]interface{}{{"time_samir": []byte("5000")}}, + exp: [][]interface{}{{[]byte("5000")}}, + }, +} + +func TestKafkaSourceLocal(t *testing.T) { + t.Parallel() + + // this is not an integration test, so we'll take steps to avoid + // actually connecting to Kafka or Schema Registry. + + for i, test := range tests { + i, test := i, test + t.Run(test.schemaFile, func(t *testing.T) { + t.Parallel() + + schema := liDecodeTestSchema(t, test.schemaFile) + + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + cfg, err := common.SetupConfluent(&src.ConfluentCommand) + if err != nil { + t.Fatal(err) + } + src.ConfigMap = cfg + // note: we will not call Open on the source which would connect + // to Kafka. Instead, we'll set the reader manually so we + // can inject messages. + go func() { + topic := string("test") + for j, record := range test.data { + buf := make([]byte, 5, 1000) + buf[0] = 0 + binary.BigEndian.PutUint32(buf[1:], uint32(i)) + buf, err := schema.BinaryFromNative(buf, record) + if err != nil { + t.Errorf("encoding:\n%+v\nerr: %v", record, err) + } + e := &confluent.Message{ + TopicPartition: confluent.TopicPartition{ + Topic: &topic, + Partition: 0, + Offset: confluent.Offset(j), + }, + Timestamp: time.Now(), + Value: buf, + } + + src.recordChannel <- recordWithError{Record: e} + } + close(src.recordChannel) + }() + + // prefill the schema cache so the registry isn't contacted. + src.cache[int32(i)] = decodeTestSchema(t, test.schemaFile) + for j, expect := range test.exp { + pdkRec, err := src.Record() + if j == 0 { + if err != idk.ErrSchemaChange { + t.Errorf("expected schema changed signal, got: %v", err) + } + gotSchema := src.Schema() + if !reflect.DeepEqual(gotSchema, expectedSchemas[test.schemaFile]) { + t.Errorf("unexpected schema exp/got:\n%+v\n%+v", expectedSchemas[test.schemaFile], gotSchema) + } + } else if err != nil { + t.Fatalf("unexpected error getting record: %v", err) + } + if pdkRec == nil { + t.Fatalf("should have a record") + } + data := pdkRec.Data() + if !reflect.DeepEqual(data, expect) { + t.Errorf("data mismatch exp/got:\n%+v\n%+v", expect, data) + if len(data) != len(expect) { + t.Fatalf("mismatched lengths exp/got %d/%d", len(expect), len(data)) + } + for k, exp := range expect { + got := data[k] + if !reflect.DeepEqual(exp, got) { + t.Errorf("Mismatch at %d, exp/got\n%v of %[2]T\n%v of %[3]T", k, exp, got) + } + } + } + } + + err = src.Close() + if err != nil { + t.Fatalf("failed to close source: %v", err) + } + }) + } +} + +// TestKafkaSourceSchemaChangeCommitRegresion is a regression test for a bug where a failure during a schema change could cause a record to be lost. +func TestKafkaSourceSchemaChangeCommitRegression(t *testing.T) { + t.Parallel() + + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + cfg, err := common.SetupConfluent(&src.ConfluentCommand) + if err != nil { + t.Fatal(err) + } + src.ConfigMap = cfg + + // prefill the schema cache so the registry isn't contacted. + t1, t2 := tests[0], tests[1] + schema1 := liDecodeTestSchema(t, t1.schemaFile) + schema2 := liDecodeTestSchema(t, t2.schemaFile) + schemaID1, schemaID2 := int32(0), int32(1) + src.cache[schemaID1] = decodeTestSchema(t, t1.schemaFile) + src.cache[schemaID2] = decodeTestSchema(t, t2.schemaFile) + + // synthesize fake Kakfa messages + data1, err := endcodeAvro(int(schemaID1), schema1, t1.data[0]) + if err != nil { + t.Fatalf("encoding record: %v", err) + } + data2, err := endcodeAvro(int(schemaID2), schema2, t2.data[0]) + if err != nil { + t.Fatalf("encoding record: %v", err) + } + + go func() { + + topic := "xyzzy" + src.recordChannel <- recordWithError{Record: &confluent.Message{ + TopicPartition: confluent.TopicPartition{ + Topic: &topic, + Partition: 0, + Offset: confluent.Offset(0), + }, + Timestamp: time.Now(), + Value: data1, + }, + } + src.recordChannel <- recordWithError{Record: &confluent.Message{ + TopicPartition: confluent.TopicPartition{ + Topic: &topic, + Partition: 0, + Offset: confluent.Offset(1), + }, + Timestamp: time.Now(), + Value: data2, + }, + } + close(src.recordChannel) + }() + + rec1, err := src.Record() + if err != idk.ErrSchemaChange { + t.Fatalf("expected schema change but got: %v", err) + } + if rec1 == nil { + t.Fatal("first record is missing") + } + rec2, err := src.Record() + if err != idk.ErrSchemaChange { + t.Fatalf("expected schema change but got: %v", err) + } + if rec2 == nil { + t.Fatal("second record is missing") + } +} + +func TestKafkaSourceTimeout(t *testing.T) { + t.Parallel() + + src := NewSource() + defer src.Close() + cfg, err := common.SetupConfluent(&src.ConfluentCommand) + if err != nil { + t.Fatal(err) + } + + src.Timeout = time.Millisecond + src.KafkaSocketTimeoutMs = 10 // lowest value you can set librdkafka + + src.ConfigMap = cfg + + schema := liDecodeTestSchema(t, "simple.json") + + // prefill the schema cache so the registry isn't contacted. + schemaID := int32(0) + src.cache[schemaID] = decodeTestSchema(t, "simple.json") + + // synthesize fake Kakfa message + record := map[string]interface{}{"first": "hello", "last": "goodbye"} + buf := make([]byte, 5, 1000) + buf[0] = 0 + binary.BigEndian.PutUint32(buf[1:], uint32(schemaID)) + buf, err = schema.BinaryFromNative(buf, record) + if err != nil { + t.Errorf("encoding:\n%+v\nerr: %v", record, err) + } + + go func() { + topic := "test" + src.recordChannel <- recordWithError{Record: &confluent.Message{ + TopicPartition: confluent.TopicPartition{ + Topic: &topic, + }, + Value: buf, + }, + } + + }() + + // ensure we can get a message if one is available + if rec, err := src.Record(); err != nil && err != idk.ErrSchemaChange { + t.Fatalf("expected record, but got error %v", err) + } else if rec.Data()[0].(string) != "hello" || rec.Data()[1].(string) != "goodbye" { + t.Fatalf("unexpected record: %v", rec.Data()) + } + + // ensure timeout works and we get ErrFlush when no message is available + start := time.Now() + if rec, err := src.Record(); err != idk.ErrFlush { + t.Fatalf("expected Flush, but got %+v err: %v", rec, err) + } else if dur := time.Since(start); dur < time.Millisecond { + t.Fatalf("expected to wait at least 1ms before getting Flush, but only waited %v", dur) + } + close(src.recordChannel) +} + +// TestKafkaSource uses a real Kafka and Schema Registry. I downloaded +// the tar archive of the Confluent Platform (self managed software) +// from confluent.io/download (I got version 5.3.1). I ran `tar xzf` +// on the file, changed into the directory, ran `curl -L +// https://cnfl.io/cli | sh -s -- -b /Users/jaffee/bin` (that +// directory is on my PATH), then ran `confluent local start +// schema-registry`. +// +// I find that this test runs much faster after a `confluent local +// destroy` followed by `confluent local start schema-registry`. The +// difference is stark—10s of seconds—and I don't know why this should +// be, but I think it has something to do with kafka rebalancing +// itself when a new client joins. +func TestKafkaSourceIntegration(t *testing.T) { + t.Parallel() + + if testing.Short() { + t.Skip() + } + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + cfg, err := common.SetupConfluent(&src.ConfluentCommand) + if err != nil { + t.Fatal(err) + } + src.ConfigMap = cfg + + src.Topics = []string{"testKafkaSourceIntegration"} + src.Group = "group0" + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) + + // Create Producer instance + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + defer p.Close() + tCreateTopic(t, src.Topics[0], p) + /* "sasl.mechanisms": conf["sasl.mechanisms"], + "security.protocol": conf["security.protocol"], + "sasl.username": conf["sasl.username"], + "sasl.password": conf["sasl.password"]})*/ + err = src.Open() + if err != nil { + t.Fatalf("Failed to open src:%v", err) + } + + key := fmt.Sprintf("%d", rnd.Int()) + for i, test := range tests { + schemaID := postSchema(t, test.schemaFile, fmt.Sprintf("schema%d", i), registryHost, nil) + schema := liDecodeTestSchema(t, test.schemaFile) + t.Run(test.schemaFile, func(t *testing.T) { + for j, record := range test.data { + tPutRecordsKafka(t, p, src.Topics[0], schemaID, schema, key, record) + pdkRec, err := src.Record() + if j == 0 { + if err != idk.ErrSchemaChange { + t.Errorf("expected schema changed signal, got: %v", err) + } + gotSchema := src.Schema() + if !reflect.DeepEqual(gotSchema, expectedSchemas[test.schemaFile]) { + t.Errorf("unexpected schema got/exp:\n%+v\n%+v", gotSchema, expectedSchemas[test.schemaFile]) + } + } else if err != nil { + t.Fatalf("unexpected error getting record: %v", err) + } + if pdkRec == nil { + t.Fatalf("should have a record") + } + data := pdkRec.Data() + if !reflect.DeepEqual(data, test.exp[j]) { + t.Errorf("data mismatch exp/got:\n%+v\n%+v", test.exp[j], data) + if len(data) != len(test.exp[j]) { + t.Fatalf("mismatched lengths exp/got %d/%d", len(test.exp[j]), len(data)) + } + for k := range test.exp[j] { + if !reflect.DeepEqual(test.exp[j][k], data[k]) { + t.Errorf("Mismatch at %d, exp/got\n%v of %[2]T\n%v of %[3]T", k, test.exp[j][k], data[k]) + } + } + + } + } + }) + } + +} + +func mustNewProducer(t *testing.T, kafkaHost string) *confluent.Producer { + t.Helper() + p, err := confluent.NewProducer(&confluent.ConfigMap{ + "bootstrap.servers": kafkaHost, + }) + if err != nil { + t.Fatalf("Failed to create producer: %s", err) + } + return p +} + +func TestKafkaSourceSkipOld(t *testing.T) { + if testing.Short() { + t.Skip() + } + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + src.Topics = []string{"testKafkaSourceSkipOld"} + src.Group = "group1" + src.SkipOld = true + src.Timeout = 10 * time.Second + src.Verbose = true + src.KafkaSocketTimeoutMs = int(src.Timeout / 2 / time.Millisecond) + src.Log = logger.NewVerboseLogger(os.Stdout) + + // Create Producer instance + p := mustNewProducer(t, kafkaHost) + defer p.Close() + tCreateTopic(t, src.Topics[0], p) + + schemaID := postSchema(t, "simple.json", "skipOldSchema", registryHost, nil) + schema := liDecodeTestSchema(t, "simple.json") + + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) + key := fmt.Sprintf("%d", rnd.Int()) + + // 1. put a record into kafka + tPutRecordsKafka(t, p, src.Topics[0], schemaID, schema, key, map[string]interface{}{"first": "hello", "last": "goodbye"}) + + // src.Open... this starts actually reading from Kafka asynchronously. With skipOld, it should not see the record. + if err := src.Open(); err != nil { + t.Fatalf("opening source: %v", err) + } + + // grab the record which has been read from Kafka by the goroutine started in src.Open.... or timeout (we're expecting timeout) + if rec, err := src.Record(); err == nil { + t.Fatalf("expected error, got record: %v", rec) + } else if err != idk.ErrFlush { + t.Fatalf("expected flush error, got %v", err) + } + + // put another record into Kafka + tPutRecordsKafka(t, p, src.Topics[0], schemaID, schema, key, map[string]interface{}{"first": "a", "last": "b"}) + + // grab that record or timeout (we're expecting to get it this + // time)... but we've seen weird issues where if src.Timeout is + // too low (like 5s) we don't see this record (on confluent 1.4.2) + rec, err := src.Record() + switch err { + case nil: + t.Fatal("expected schema change") + case idk.ErrSchemaChange: + default: + t.Fatalf("expected schema change, got %v", err) + } + expect := []interface{}{"a", "b"} + if got := rec.Data(); !reflect.DeepEqual(got, []interface{}{"a", "b"}) { + t.Fatalf("expected %v but got %v", expect, got) + } +} + +func TestKafkaSourceNotAutoCommitting(t *testing.T) { + t.Parallel() + if testing.Short() { + t.Skip() + } + rand.Seed(time.Now().UnixNano()) + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + src.Topics = []string{"testKafkaSourceNotAutoCommit"} + src.Group = fmt.Sprintf("group%d", rand.Int()) + + // Create Producer instance + p := mustNewProducer(t, kafkaHost) + defer p.Close() + tCreateTopic(t, src.Topics[0], p) + + schemaID := postSchema(t, "simple.json", "skipOldSchema", registryHost, nil) + schema := liDecodeTestSchema(t, "simple.json") + + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) + key := fmt.Sprintf("%d", rnd.Int()) + + if err := src.Open(); err != nil { + t.Fatalf("opening source: %v", err) + } + partition := int32(1) + + // 1. put records into Kafka + numRecords := int64(7) + for i := int64(0); i < numRecords; i++ { + tPutRecordsKafkaPartition(t, p, src.Topics[0], schemaID, schema, key, partition, map[string]interface{}{"first": fmt.Sprintf("%d", i), "last": fmt.Sprintf("%d", i+1)}) + } + + // 2. read records from Kafka (but don't commit!) + var rec idk.Record + var err error + for i := 0; i < 7; i++ { + if rec, err = src.Record(); err != nil && err != idk.ErrSchemaChange { + t.Fatalf("expected schema change or no error, got: %v", err) + } + } + + // 3. wait for it... + time.Sleep(time.Second * 6) // default autocommit interval is 5s, so we have to wait if we're going to catch that + + // 4. check to see if any offsets got committed. If + // enable.auto.commit somehow gets set to true (which is the + // default), then this should fail. + if offsets, err := src.client.Committed([]confluent.TopicPartition{{Topic: &src.Topics[0], Partition: partition}}, 100); err != nil { + t.Fatalf("getting committed offsets: %v", err) + } else if len(offsets) != 1 { + t.Fatalf("unexpected number of offsets in response: %v", offsets) + } else if off := offsets[0]; off.Offset > 0 { + t.Fatalf("initial committed offset is greater than 0: %d", off.Offset) + } + + // 5. now commit + err = rec.Commit(context.Background()) + if err != nil { + t.Fatalf("committing: %v", err) + } + + // 6. now verify commit worked + if offsets, err := src.client.Committed([]confluent.TopicPartition{{Topic: &src.Topics[0], Partition: partition}}, 100); err != nil { + t.Fatalf("getting committed offsets: %v", err) + } else if len(offsets) != 1 { + t.Fatalf("unexpected number of offsets in response: %v", offsets) + } else if off := offsets[0]; int64(off.Offset) != numRecords { + t.Fatalf("after commit, offset is not %d: %d", numRecords-1, off.Offset) + } + +} + +func TestRegistryURLParsing(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + registryURL string + expectedCodecURL string + }{ + { + name: "host:port", + registryURL: "localhost:8081", + expectedCodecURL: "http://localhost:8081/schemas/ids/1", + }, + { + name: "host", + registryURL: "localhost", + expectedCodecURL: "http://localhost/schemas/ids/1", + }, + { + name: "scheme:host:port", + registryURL: "http://localhost:8081", + expectedCodecURL: "http://localhost:8081/schemas/ids/1", + }, + { + name: "scheme:host", + registryURL: "http://localhost", + expectedCodecURL: "http://localhost/schemas/ids/1", + }, + { + name: "scheme:host", + registryURL: "http://localhost", + expectedCodecURL: "http://localhost/schemas/ids/1", + }, + { + name: "scheme:host/path", + registryURL: "http://subsub.subdomain.domain/kafka-schema-registry", + expectedCodecURL: "http://subsub.subdomain.domain/kafka-schema-registry/schemas/ids/1", + }, + { + name: "scheme:host:port/path", + registryURL: "http://subsub.subdomain.domain:8081/kafka-schema-registry", + expectedCodecURL: "http://subsub.subdomain.domain:8081/kafka-schema-registry/schemas/ids/1", + }, + { + name: "https:host:port/path", + registryURL: "https://subsub.subdomain.domain:8081/kafka-schema-registry", + expectedCodecURL: "https://subsub.subdomain.domain:8081/kafka-schema-registry/schemas/ids/1", + }, + { + name: "https:host:port", + registryURL: "https://localhost:8081", + expectedCodecURL: "https://localhost:8081/schemas/ids/1", + }, + } + + for i, test := range tests { + t.Run(fmt.Sprintf("%s-%d", test.name, i), func(t *testing.T) { + t.Parallel() + + src := &Source{} + src.SchemaRegistryURL = test.registryURL + + err := src.cleanRegistryURL() + if err != nil { + t.Fatalf("cleaning registry URL: %v", err) + } + + codecURL, err := src.codecURL(1, "schemas/ids/%d") + if err != nil { + t.Fatalf("codec URL: %v", err) + } + if codecURL != test.expectedCodecURL { + t.Errorf("codec URL exp:\n%s\ngot:\n%s", test.expectedCodecURL, codecURL) + } + + }) + } + +} + +func postSchema(t *testing.T, schemaFile, subj, regURL string, tlsConfig *tls.Config) (schemaID int) { + schemaClient := csrc.NewClient(regURL, tlsConfig, nil) + schemaStr := readTestSchema(t, schemaFile) + resp, err := schemaClient.PostSubjects(subj, schemaStr) + if err != nil { + t.Fatalf("posting schema: %v", err) + } + return resp.ID +} + +func tCreateTopic(t *testing.T, topic string, p *confluent.Producer) { + t.Helper() + a, err := confluent.NewAdminClientFromProducer(p) + if err != nil { + t.Fatalf("Failed to create new admin client from producer: %s", err) + } + // Contexts are used to abort or limit the amount of time + // the Admin call blocks waiting for a result. + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + // Create topics on cluster. + // Set Admin options to wait up to 60s for the operation to finish on the remote cluster + maxDur, err := time.ParseDuration("60s") + if err != nil { + t.Fatalf("ParseDuration(60s): %s", err) + } + results, err := a.CreateTopics( + ctx, + // Multiple topics can be created simultaneously + // by providing more TopicSpecification structs here. + []confluent.TopicSpecification{{ + Topic: topic, + NumPartitions: 64, + ReplicationFactor: 1}}, + // Admin options + confluent.SetAdminOperationTimeout(maxDur)) + if err != nil { + t.Fatalf("Admin Client request error: %v\n", err) + } + for _, result := range results { + if result.Error.Code() != confluent.ErrNoError && result.Error.Code() != confluent.ErrTopicAlreadyExists { + t.Fatalf("Failed to create topic: %v\n", result.Error) + } + } + a.Close() + +} + +func tPutRecordsKafka(t *testing.T, p *confluent.Producer, topic string, schemaID int, schema *liavro.Codec, key string, records ...map[string]interface{}) { + tPutRecordsKafkaPartition(t, p, topic, schemaID, schema, key, confluent.PartitionAny, records...) +} + +func tPutRecordsKafkaPartition(t *testing.T, p *confluent.Producer, topic string, schemaID int, schema *liavro.Codec, key string, partition int32, records ...map[string]interface{}) { + t.Helper() + delivery_chan := make(chan kafka.Event, 10000) + for _, record := range records { + data, err := endcodeAvro(schemaID, schema, record) + if err != nil { + t.Fatalf("encoding record: %v", err) + } + err = p.Produce(&kafka.Message{ + TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: partition}, + Key: []byte(key), + Value: data, + }, delivery_chan) + if err != nil { + t.Fatalf("producing record: %v", err) + } + e := <-delivery_chan + m := e.(*kafka.Message) + + if m.TopicPartition.Error != nil { + t.Fatalf("Delivery failed: %v\n", m.TopicPartition.Error) + } else { + vprint.VV("Delivered message to topic %s [%d] at offset %v\n", + *m.TopicPartition.Topic, m.TopicPartition.Partition, m.TopicPartition.Offset) + } + } + close(delivery_chan) +} + +var expectedSchemas = map[string][]idk.Field{ + "simple.json": { + idk.StringField{NameVal: "first"}, + idk.StringField{NameVal: "last"}, + }, + "stringtypes.json": { + idk.StringField{NameVal: "first", Mutex: true}, + idk.StringField{NameVal: "last"}, + idk.StringField{NameVal: "middle"}, + }, + "decimal.json": { + idk.DecimalField{NameVal: "somenum", Scale: 2}, + }, + "unions.json": { + idk.StringField{NameVal: "first"}, + idk.BoolField{NameVal: "second"}, + idk.IntField{NameVal: "third"}, + idk.DecimalField{NameVal: "fourth", Scale: 3}, + idk.DecimalField{NameVal: "fifth", Scale: 2}, + }, + "othertypes.json": { + idk.StringField{NameVal: "first", Mutex: true}, + idk.StringArrayField{NameVal: "second"}, + idk.IntField{NameVal: "third"}, + idk.IntField{NameVal: "fourth"}, + idk.DecimalField{NameVal: "fifth"}, + idk.DecimalField{NameVal: "sixth"}, + idk.BoolField{NameVal: "seventh"}, + idk.StringField{NameVal: "eighth", Mutex: true}, + idk.StringField{NameVal: "ninth", Mutex: true}, + }, + "floatscale.json": { + idk.DecimalField{NameVal: "first", Scale: 4}, + }, + "timestamp.json": { + idk.TimestampField{NameVal: "time_samir", Granularity: "s", Unit: "ms"}, + }, +} + +// Ensure the avro schemas produce the exptected JSON. +func TestAvroSchemaFieldToJSON(t *testing.T) { + t.Parallel() + + tests := []struct { + schemaField *avro.SchemaField + exp string + }{ + { + schemaField: &avro.SchemaField{ + Type: &avro.BytesSchema{}, + }, + exp: `{"type":"bytes"}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "union-null-bytes", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{}, + }, + }, + Default: nil, + }, + exp: `{"name":"union-null-bytes","default":null,"type":["null","bytes"]}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "decimal", + Type: &avro.BytesSchema{ + Properties: map[string]interface{}{ + "logicalType": "decimal", + "scale": 2, + "precision": 5, + }, + }, + }, + exp: `{"name":"decimal","type":{"type":"bytes","logicalType":"decimal","scale":2,"precision":5}}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "union-null-decimal", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.BytesSchema{ + Properties: map[string]interface{}{ + "logicalType": "decimal", + "scale": 2, + "precision": 5, + }, + }, + }, + }, + }, + exp: `{"name":"union-null-decimal","type":["null",{"type":"bytes","logicalType":"decimal","scale":2,"precision":5}],"default":null}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "float", + Type: &avro.FloatSchema{}, + }, + exp: `{"name":"float","type":"float"}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "float-props", + Type: &avro.FloatSchema{ + Properties: map[string]interface{}{ + "scale": 2, + }, + }, + }, + exp: `{"name":"float-props","type":{"type":"float","scale":2}}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "union-null-float", + Type: &avro.UnionSchema{ + Types: []avro.Schema{ + &avro.NullSchema{}, + &avro.FloatSchema{ + Properties: map[string]interface{}{ + "scale": 2, + }, + }, + }, + }, + }, + exp: `{"name":"union-null-float","type":["null",{"type":"float","scale":2}],"default":null}`, + }, + { + schemaField: &avro.SchemaField{ + Name: "timestamp", + Type: &avro.BytesSchema{ + Properties: map[string]interface{}{ + "logicalType": "timestamp", + "granularity": "s", + "unit": "ms", + }, + }, + }, + exp: `{"name":"timestamp","type":{"granularity":"s","logicalType":"timestamp","type":"bytes","unit":"ms"}}`, + }, + } + + for i, test := range tests { + j, err := json.Marshal(test.schemaField) + if err != nil { + t.Fatal(err) + } + if eq, err := equalJSON(string(j), test.exp); err != nil { + t.Fatal(err) + } else if !eq { + t.Fatalf("test %d: \nexp: %s, \ngot: %s", i, test.exp, j) + } + } +} + +func equalJSON(s1, s2 string) (bool, error) { + var o1 interface{} + var o2 interface{} + + var err error + err = json.Unmarshal([]byte(s1), &o1) + if err != nil { + return false, fmt.Errorf("Error mashalling string 1 :: %s", err.Error()) + } + err = json.Unmarshal([]byte(s2), &o2) + if err != nil { + return false, fmt.Errorf("Error mashalling string 2 :: %s", err.Error()) + } + + return reflect.DeepEqual(o1, o2), nil +} + +func TestGetKeyFunc(t *testing.T) { + tests := []struct { + rec []interface{} + expKey uint64 + }{ + { + rec: []interface{}{"aaa"}, + expKey: uint64(162), + }, + { + rec: []interface{}{"aaaaaaaaaaaaaaa"}, + expKey: uint64(86), + }, + } + + p, err := NewPutSource() + if err != nil { + t.Fatalf("failed to return new putsource: %v", err) + } + + p.FBPrimaryKeyFields = []string{"uuid"} + p.FBIDField = "uuid" + p.FBIndexName = "test" + + schema := []idk.Field{ + idk.StringField{NameVal: "uuid"}, + } + + getKeyFunc, err := p.getKeyFunc(schema) + if err != nil { + t.Fatalf("failed to getKeyFunc: %v", err) + } + + for i, test := range tests { + tc := test + t.Run(fmt.Sprintf("test%d", i), func(t *testing.T) { + key, err := getKeyFunc(tc.rec) + if err != nil { + t.Fatalf("failed to get key for record: %v", err) + } + keyInt := uint64(binary.BigEndian.Uint64(key)) + if tc.expKey != keyInt { + t.Fatalf("expected %d, got %d", tc.expKey, keyInt) + } + }) + } +} diff --git a/idk/kafka/testdata/schemas/bigschema.json b/idk/kafka/testdata/schemas/bigschema.json new file mode 100644 index 000000000..298b2b34e --- /dev/null +++ b/idk/kafka/testdata/schemas/bigschema.json @@ -0,0 +1,139 @@ +{ + "namespace": "org.test", + "type": "record", + "name": "user_traits", + "doc": "User Specific Traits", + "fields": [ + { + "name": "abc", + "doc": "The ABC", + "type": "string" + }, + { + "name": "db", + "doc": "TE DB Number", + "type": "string" + }, + { + "name": "user_id", + "doc": "User ID", + "type": "int" + }, + { + "name": "all_users", + "doc": "All Users Trait", + "type": [ + "null", + "boolean" + ] + }, + { + "name": "has_deleted_date", + "doc": "has_deleted_date", + "type": [ + "null", + "boolean" + ] + }, + { + "name": "central_group", + "doc": "central_group", + "type": [ + "null", + "string" + ] + }, + { + "name": "custom_audiences", + "doc": "custom_audiences NOTE: uuid maps to string internally?", + "type": [ + "null", + { + "type": "array", + "items": "string" + } + ] + }, + { + "name": "desktop_boolean", + "doc": "desktop_boolean", + "type": [ + "null", + "boolean" + ] + }, + { + "name": "desktop_frequency", + "doc": "desktop_frequency", + "type": [ + "null", + "int" + ] + }, + { + "name": "desktop_recency", + "doc": "desktop_recency NOTE: Should be DateTime type?", + "type": [ + "null", + "int" + ] + }, + { + "name": "product_boolean_historical_forestry_cravings_or_bugles", + "doc": "product_boolean_historical_forestry_cravings_or_bugles", + "type": [ + "null", + "boolean" + ] + }, + { + "name": "ddd_category_total_current_rhinocerous_checking", + "doc": "ddd_category_total_current_rhinocerous_checking NOTE: float? use decimal?", + "type": [ + "null", + {"type": "float", "scale": 2} + ] + }, + { + "name": "ddd_category_total_current_rhinocerous_thedog_cheetah", + "doc": "ddd_category_total_current_rhinocerous_thedog_cheetah NOTE: float? use decimal?", + "type": [ + "null", + "float" + ] + }, + { + "name": "survey1234", + "doc": "Answers for Survey Question 1234", + "type": [ + "null", + { + "type": "enum", + "name": "survey1234", + "symbols": [ + "yes", + "no", + "seen", + "skipped" + ] + } + ] + }, + { + "name": "days_since_last_logon", + "doc": "Number of days since the user last logged on NOTE: float? decimal?", + "type": [ + "null", + "float" + ] + }, + { + "name": "elephant_added_for_account", + "doc": "Has a elephant been added", + "type": [ + "null", + "boolean" + ] + } + ] +} diff --git a/idk/kafka/testdata/schemas/decimal.json b/idk/kafka/testdata/schemas/decimal.json new file mode 100644 index 000000000..153f7bd87 --- /dev/null +++ b/idk/kafka/testdata/schemas/decimal.json @@ -0,0 +1,8 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "Decimal", + "fields": [ + { "name": "somenum", "type": "bytes", "logicalType": "decimal", "scale": 2, "precision": 5 } + ] +} diff --git a/idk/kafka/testdata/schemas/delete.json b/idk/kafka/testdata/schemas/delete.json new file mode 100644 index 000000000..80e7fff80 --- /dev/null +++ b/idk/kafka/testdata/schemas/delete.json @@ -0,0 +1,19 @@ +{ + "namespace": "org.test", + "type": "record", + "name": "deletes", + "doc": "", + "fields": [ + { + "name": "pk", + "type": "long" + }, + { + "name": "fields", + "type": { + "type": "array", + "items": "string" + } + } + ] +} diff --git a/idk/kafka/testdata/schemas/delete_string.json b/idk/kafka/testdata/schemas/delete_string.json new file mode 100644 index 000000000..3623342e4 --- /dev/null +++ b/idk/kafka/testdata/schemas/delete_string.json @@ -0,0 +1,30 @@ +{ + "namespace": "org.test", + "type": "record", + "name": "deletes", + "doc": "", + "fields": [ + { + "name": "abc", + "doc": "The ABC", + "type": "string" + }, + { + "name": "db", + "doc": "TE DB Number", + "type": "string" + }, + { + "name": "user_id", + "doc": "User ID", + "type": "int" + }, + { + "name": "fields", + "type": { + "type": "array", + "items": "string" + } + } + ] +} diff --git a/idk/kafka/testdata/schemas/fieldisrecord.json b/idk/kafka/testdata/schemas/fieldisrecord.json new file mode 100644 index 000000000..9b304a41a --- /dev/null +++ b/idk/kafka/testdata/schemas/fieldisrecord.json @@ -0,0 +1,14 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": "string" }, + { "name": "last", "type": + {"type": "record", + "name": "blah", + "fields": [{"name": "field0", "type": "long"}] + } + } + ] +} diff --git a/idk/kafka/testdata/schemas/floatscale.json b/idk/kafka/testdata/schemas/floatscale.json new file mode 100644 index 000000000..7b9cd8c7d --- /dev/null +++ b/idk/kafka/testdata/schemas/floatscale.json @@ -0,0 +1,8 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": "float", "scale": 4 } + ] +} diff --git a/idk/kafka/testdata/schemas/ids.json b/idk/kafka/testdata/schemas/ids.json new file mode 100644 index 000000000..05ec77970 --- /dev/null +++ b/idk/kafka/testdata/schemas/ids.json @@ -0,0 +1,8 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "ids", + "fields": [ + { "name": "val", "type": "int" } + ] +} diff --git a/idk/kafka/testdata/schemas/notarecord.json b/idk/kafka/testdata/schemas/notarecord.json new file mode 100644 index 000000000..344f0d193 --- /dev/null +++ b/idk/kafka/testdata/schemas/notarecord.json @@ -0,0 +1,4 @@ +{ + "type": "map", + "values": "long" +} diff --git a/idk/kafka/testdata/schemas/othertypes.json b/idk/kafka/testdata/schemas/othertypes.json new file mode 100644 index 000000000..a44f52cc0 --- /dev/null +++ b/idk/kafka/testdata/schemas/othertypes.json @@ -0,0 +1,16 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": "string", "mutex": true }, + { "name": "second", "type": {"type": "array", "items": "string"}}, + { "name": "third", "type": "int"}, + { "name": "fourth", "type": "long"}, + { "name": "fifth", "type": "float"}, + { "name": "sixth", "type": "double"}, + { "name": "seventh", "type": "boolean"}, + { "name": "eighth", "type": ["null", "string"], "mutex": true, "default": null }, + { "name": "ninth", "type": ["null", {"type": "string", "mutex": true}], "default": null } + ] +} diff --git a/idk/kafka/testdata/schemas/simple.json b/idk/kafka/testdata/schemas/simple.json new file mode 100644 index 000000000..c779ebd34 --- /dev/null +++ b/idk/kafka/testdata/schemas/simple.json @@ -0,0 +1,9 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": "string" }, + { "name": "last", "type": "string" } + ] +} diff --git a/idk/kafka/testdata/schemas/stringtypes.json b/idk/kafka/testdata/schemas/stringtypes.json new file mode 100644 index 000000000..5bf9e6a0b --- /dev/null +++ b/idk/kafka/testdata/schemas/stringtypes.json @@ -0,0 +1,10 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": {"name": "firsts", "type": "enum", "symbols": ["blah", "bleh"]} }, + { "name": "last", "type": "bytes" }, + {"name": "middle", "type": {"type": "fixed", "name": "middlefixed", "size": 9}} + ] +} diff --git a/idk/kafka/testdata/schemas/timestamp.json b/idk/kafka/testdata/schemas/timestamp.json new file mode 100644 index 000000000..d26c52692 --- /dev/null +++ b/idk/kafka/testdata/schemas/timestamp.json @@ -0,0 +1,8 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "TimeName", + "fields": [ + { "name": "time_samir", "type": "bytes", "logicalType":"timestamp", "fieldType": "timestamp", "granularity": "s", "unit":"ms"} + ] +} diff --git a/idk/kafka/testdata/schemas/unions.json b/idk/kafka/testdata/schemas/unions.json new file mode 100644 index 000000000..c9c32a613 --- /dev/null +++ b/idk/kafka/testdata/schemas/unions.json @@ -0,0 +1,12 @@ +{ + "type": "record", + "namespace": "com.example", + "name": "FullName", + "fields": [ + { "name": "first", "type": ["null", "string"]}, + { "name": "second", "type": ["null", "boolean"]}, + { "name": "third", "type": ["null", "long"]}, + { "name": "fourth", "type": ["null", {"type": "bytes", "logicalType": "decimal", "scale": 3, "precision": 8}]}, + { "name": "fifth", "type": ["null", {"type": "double", "scale": 2}]} + ] +} diff --git a/idk/kafka_sasl/cmd.go b/idk/kafka_sasl/cmd.go new file mode 100644 index 000000000..b50e08a3f --- /dev/null +++ b/idk/kafka_sasl/cmd.go @@ -0,0 +1,72 @@ +package kafka_sasl + +import ( + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/pkg/errors" +) + +type Main struct { + idk.Main `flag:"!embed"` + idk.ConfluentCommand `flag:"!embed"` + Group string `help:"Kafka group."` + Topics []string `help:"Kafka topics to read from."` + Timeout time.Duration `help:"Time to wait for more records from Kafka before flushing a batch. 0 to disable."` + SkipOld bool `short:"" help:"Skip to the most recent Kafka message rather than starting at the beginning."` + Header string `help:"Path to the static schema, in JSON header format."` + AllowMissingFields bool `help:"Will proceed with ingest even if a field is missing from a record but specified in the JSON config file. Default false"` + ConfigMap *confluent.ConfigMap `flag:"-"` +} + +func (m *Main) CopyIn(config idk.ConfluentCommand) { + m.KafkaSaslUsername = config.KafkaSaslUsername + m.KafkaSaslPassword = config.KafkaSaslPassword + m.KafkaSaslMechanism = config.KafkaSaslMechanism + m.KafkaSecurityProtocol = config.KafkaSecurityProtocol + m.KafkaSslKeyPassword = config.KafkaSslKeyPassword + m.KafkaSslCaLocation = config.KafkaSslCaLocation + m.KafkaSslCertificateLocation = config.KafkaSslCertificateLocation + m.KafkaSslKeyLocation = config.KafkaSslKeyLocation +} + +func NewMain() (*Main, error) { + var err error + m := Main{} + m.Main = *idk.NewMain() + m.ConfluentCommand = idk.ConfluentCommand{} + m.KafkaBootstrapServers = []string{"localhost:9092"} + m.Group = "defaultgroup" + m.Topics = []string{"defaulttopic"} + m.Timeout = time.Second + m.OffsetMode = true + m.Main.Namespace = "ingester_kafka_confluent" + m.Main.Pprof = "" // don't initialize pprof until we actually use it in tests + if err != nil { + return nil, err + } + m.NewSource = func() (idk.Source, error) { + source := NewSource() + source.Group = m.Group + source.Topics = m.Topics + source.Log = m.Main.Log() + source.Timeout = m.Timeout + source.SkipOld = m.SkipOld + source.Header = m.Header + source.AllowMissingFields = m.AllowMissingFields + cfg, err := common.SetupConfluent(&m.ConfluentCommand) + if err != nil { + return nil, err + } + + source.ConfigMap = cfg + err = source.Open() + if err != nil { + return nil, errors.Wrap(err, "opening source") + } + return source, nil + } + return &m, nil +} diff --git a/idk/kafka_sasl/cmd_test.go b/idk/kafka_sasl/cmd_test.go new file mode 100644 index 000000000..cec628044 --- /dev/null +++ b/idk/kafka_sasl/cmd_test.go @@ -0,0 +1,1068 @@ +//go:build kafka_sasl +// +build kafka_sasl + +package kafka_sasl + +import ( + "context" + "encoding/json" + "fmt" + "math/rand" + "os" + "strconv" + "strings" + "testing" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/idktest" + + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" +) + +var pilosaHost string +var pilosaTLSHost string +var pilosaGrpcHost string +var kafkaHost string +var certPath string +var configMap *confluent.ConfigMap // configMap is used to connect to ssl port to create topics for testing +var configMapSource idk.ConfluentCommand + +func init() { + var ok bool + if pilosaHost, ok = os.LookupEnv("IDK_TEST_PILOSA_HOST"); !ok { + pilosaHost = "pilosa:10101" + } + if pilosaTLSHost, ok = os.LookupEnv("IDK_TEST_PILOSA_TLS_HOST"); !ok { + pilosaTLSHost = "https://pilosa-tls:10111" + } + if pilosaGrpcHost, ok = os.LookupEnv("IDK_TEST_PILOSA_GRPC_HOST"); !ok { + pilosaGrpcHost = "pilosa:20101" + } + if kafkaHost, ok = os.LookupEnv("IDK_TEST_KAFKA_HOST"); !ok { + kafkaHost = "kafka:9094" + } + if certPath, ok = os.LookupEnv("IDK_TEST_CERT_PATH"); !ok { + certPath = "/certs" + } + + configMapSource = idk.ConfluentCommand{ + KafkaBootstrapServers: []string{kafkaHost}, + KafkaSaslUsername: "kafkaClient1", + KafkaSaslPassword: "kafkaClient1pw", + KafkaSaslMechanism: "PLAIN", + KafkaSecurityProtocol: "SASL_SSL", + KafkaSslKeyPassword: "123456", + + // for localhost test + // SslCaLocation: "../docker-sasl/ssl_keys/ca-cert", + // SslCertificateLocation: "../docker-sasl/ssl_keys/client_kafkaClient_client.pem", + // SslKeyLocation: "../docker-sasl/ssl_keys/client_kafkaClient_client.key", + + // for circleci test + KafkaSslCaLocation: "/ssl_keys/ca-cert", + KafkaSslCertificateLocation: "/ssl_keys/client_kafkaClient_client.pem", + KafkaSslKeyLocation: "/ssl_keys/client_kafkaClient_client.key", + } + + configMap, _ = common.SetupConfluent(&configMapSource) + +} + +func configureTestFlags(main *Main) { + main.PilosaHosts = []string{pilosaHost} + main.PilosaGRPCHosts = []string{pilosaGrpcHost} + main.ConfluentCommand = configMapSource + main.KafkaBootstrapServers = []string{kafkaHost} + // intentionally low timeout — if this gets triggered it shouldn't + // have any negative effects + main.Timeout = time.Millisecond * 20 + main.Stats = "" + _, main.Verbose = os.LookupEnv("IDK_TEST_VERBOSE") +} + +func tCreateConfluentAdmin(t *testing.T) *confluent.AdminClient { + t.Helper() + adminClient, err := confluent.NewAdminClient(configMap) + + if err != nil { + t.Fatalf("Failed to create Admin client: %s\n", err) + } + return adminClient +} + +func tCreateConfluentTopic(t *testing.T, adminClient *confluent.AdminClient, topic string) { + t.Helper() + + // Contexts are used to abort or limit the amount of time + // the Admin call blocks waiting for a result. + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // Create topics on cluster. + // Set Admin options to wait for the operation to finish (or at most 60s) + maxDuration, err := time.ParseDuration("60s") + if err != nil { + t.Fatalf("time.ParseDuration(60s)") + } + + _, err = adminClient.CreateTopics( + ctx, + // Multiple topics can be created simultaneously + // by providing more TopicSpecification structs here. + []confluent.TopicSpecification{{ + Topic: topic, + NumPartitions: 64, + ReplicationFactor: 1}}, + // Admin options + confluent.SetAdminOperationTimeout(maxDuration)) + + if err != nil { + t.Fatalf("Problem during the topic creation: %v\n", err) + } +} + +func tCreateConfluentProducer(t *testing.T) *confluent.Producer { + t.Helper() + producer, err := confluent.NewProducer(configMap) + + if err != nil { + t.Fatalf("Failed to create producer: %s\n", err) + } + return producer +} +func tWriteConfluentMessage(t *testing.T, producer *confluent.Producer, topic string, key string, value string) { + t.Helper() + + err := producer.Produce( + &confluent.Message{ + TopicPartition: confluent.TopicPartition{ + Topic: &topic, + Offset: confluent.OffsetEnd, + Partition: confluent.PartitionAny}, + Key: []byte(key), + Value: []byte(value)}, nil) + + if err != nil { + t.Fatalf("err %v", err) + } + // Wait for delivery report + e := <-producer.Events() + + message := e.(*confluent.Message) + if message.TopicPartition.Error != nil { + t.Fatalf("failed to deliver message: %v\n", + message.TopicPartition) + } else { + t.Logf("%s:%s delivered to topic %s [%d] at offset %v\n", + key, + value, + *message.TopicPartition.Topic, + message.TopicPartition.Partition, + message.TopicPartition.Offset) + } +} + +func makeRecordString(t *testing.T, fields []string, vals []interface{}) string { + if len(fields) != len(vals) { + t.Fatalf("have %d fields and %d vals", len(fields), len(vals)) + } + rec := make(map[string]interface{}) + for i, field := range fields { + rec[field] = vals[i] + } + ret, err := json.Marshal(rec) + if err != nil { + t.Fatalf("error marshaling record to json") + } + return string(ret) +} + +func TestSaslFieldTypes(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s", "@st", "unixtime", "e"} + records := [][]interface{}{ + {100, 34.0404, "2021-02-01", "apple", "egg", 1617246530, "Lorem ipsum dolor sit amet"}, // Thu Apr 01 03:08:50 2021 UTC + } + sPilosaName := "s" + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.Header = "../kafka_static/testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.LookupBatchSize = 1 + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, vals := range records { + rec := makeRecordString(t, fieldNames, vals) + tWriteConfluentMessage(t, producer, topic, "akey", rec) + } + defer producer.Close() + + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + if status, body, err := client.HTTPRequest("POST", "/recalculate-caches", nil, nil); err != nil { + t.Fatalf("recalculating cache: status: %d, response: %s, error: %s", status, body, err) + } + + // check data in Pilosa + if !index.HasField(sPilosaName) { + t.Fatalf("don't have field '%s'", sPilosaName) + } + + fields := index.Field(sPilosaName) + stPilosaName := "st" + fieldSt := index.Field(stPilosaName) + + qr, err := client.Query(index.Count(fields.Row("apple"))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s', %d is not 1", sPilosaName, qr.Result().Count()) + } + + qr, err = client.Query(index.Count(fieldSt.Row("egg"))) + if err != nil { + t.Fatalf("querying time range for egg: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s', %d is not 1", stPilosaName, qr.Result().Count()) + } + qr, err = client.Query(index.Count(fieldSt.Range("egg", time.Unix(1617145530, 0), time.Unix(1617348530, 0)))) + if err != nil { + t.Fatalf("querying time range for egg: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s' with time range, %d is not 1", stPilosaName, qr.Result().Count()) + } + + if !index.HasField("i") { + t.Fatal("don't have field 'i'") + } + fieldi := index.Field("i") + + qr, err = client.Query(index.Count(fieldi.Row(100))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field 'i', %d is not 1", qr.Result().Count()) + } + + if !index.HasField("d") { + t.Fatal("don't have field 'd'") + } + fieldd := index.Field("d") + + qr, err = client.Query(index.Count(fieldd.Row(34.0404))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field 'd', %d is not 1", qr.Result().Count()) + } + +} + +func TestSaslLookupFieldIdNameDisallowed(t *testing.T) { + t.Parallel() + tcs := []lookupTestCase{ + {name: "junk", text: "foo", expText: "foo"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.Header = "../kafka_static/testdata/LookupId.json" + + // lookupClient.Setup() can't get called until after initialFetch, so need to insert + // some junk into kafka to test this at this level. + m.MaxMsgs = uint64(len(tcs)) // make source wait for TimeOut after last message + m.LookupBatchSize = 1 + + ingesterErrs := make(chan error, 1) + go func() { + err := m.Run() + ingesterErrs <- err + }() + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, tc := range tcs { + msg := messageStringFromTestcase(t, tc) + tWriteConfluentMessage(t, producer, topic, "bkey", msg) + } + defer producer.Close() + + // Wait for ingestion to finish. + err = <-ingesterErrs + + if !strings.Contains(err.Error(), "field name 'id' not allowed for LookupText fields") { + t.Fatalf("invalid field name 'id' not detected: %s", err) + } +} + +// lookupTestCase consolidates definitions for: +// - messages sent to Kafka +// - record IDs generated by Pilosa and retrieved within a test +// - values to check against Postgres +// - values to check against Pilosa +// name: testcase name +// uniquePilosaVal: unqiue integer value sent to Pilosa. Corresponds to `int` field in Lookup.json +// externalId: Pilosa record ID, allocated by Pilosa, looked up by test, used as Postgres ID as well +// text: raw text sent to Postgres. Corresponds to `text` field in Lookup.josn +// expText: text after retrieving from Postges (distinct from `text` due to escape characters) +// missing: true if `text` should NOT be present in the Kafka message +type lookupTestCase struct { + name string + uniquePilosaVal uint64 + externalId uint64 + text string + expText string + missing bool +} + +// messageStringFromTestCase defines a Kafka json message string, to be +// sent to Kafka. Matches Lookup.json. +func messageStringFromTestcase(t *testing.T, tc lookupTestCase) string { + if tc.missing { + return fmt.Sprintf(`{"int":%d}`, tc.uniquePilosaVal) + } else { + return fmt.Sprintf(`{"int":%d,"text":"%s"}`, tc.uniquePilosaVal, tc.text) + } + +} + +// TestLookupFieldWithExternalId checks that the external +// lookup (postgres) feature works as expected, +// - using ExternalGenerate to use pilosa to generate IDs +// - with bad string input +// - with missing data +// This test is intended to match THR's use case. +func TestSaslLookupFieldWithExternalId(t *testing.T) { + t.Parallel() + tcs := []lookupTestCase{ + // When using ExternalGenerate (pilosa Nexter), then the only kafka setting that + // makes sense is at-most-once delivery. + // That means this postgres client/batcher should only be used in its current state + // for this very specific use case. + + // Testing for duplicate records and overwriting behavior would be done here by defining + // multiple testcases with overlapping ID values. + // This is not done because that doesn't make sense when using ExternalGenerate: + // - key is not present in Kafka message, so it is generated by Pilosa + // - identifying duplicates is not possible without a primary key in the message + {name: "missing-data", missing: true}, + {name: "normal-write", text: "D", expText: "D"}, + {name: "weirdstring-1", text: "Æ�漢д ☮♬ ♞🜻💣", expText: "Æ�漢д ☮♬ ♞🜻💣"}, + {name: "weirdstring-2", text: "", expText: ""}, + {name: "weirdstring-3", text: "'", expText: "'"}, + {name: "doublequotes-1", text: `\"`, expText: `"`}, // is this sensible? + {name: "doublequotes-2", text: `{\"log\": \"message\", 'with': 'whatever', ` + "`weird`: `syntax`}", expText: `{"log": "message", 'with': 'whatever', ` + "`weird`: `syntax`}"}, + } + + // lookupTestCase.uniquePilosaVal is required to be unique, + // so it can be used to correlate testcases with IDs allocated by Pilosa, + // in retrieveTestCaseIds. Set it automatically here. + lookupRecordCount := 0 + for n := range tcs { + tcs[n].uniquePilosaVal = uint64(100 * (n + 1)) + if !tcs[n].missing { + lookupRecordCount++ + } + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // put records from all testcases into kafka + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Header = "../kafka_static/testdata/Lookup.json" + pilosaFieldName := "int" // matches Lookup.json + postgresColumnName := "text" // matches Lookup.json + + // lookup+external specific settings + m.ExternalGenerate = true + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.AllowMissingFields = true // needed for missing data testcases + m.MaxMsgs = uint64(len(tcs)) // make source wait for TimeOut after last message + m.LookupBatchSize = lookupRecordCount + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, tc := range tcs { + msg := messageStringFromTestcase(t, tc) + tWriteConfluentMessage(t, producer, topic, "bkey", msg) + } + defer producer.Close() + + ingesterErrs := make(chan error, 1) + go func() { + err := m.Run() + ingesterErrs <- err + }() + + // Wait for ingestion to finish. + if err := <-ingesterErrs; err != nil { + t.Fatalf("running main: %v", err) + } + + err = retrieveTestCaseIds(tcs, m.Index, pilosaFieldName) + if err != nil { + t.Fatalf("looking up ExternalIds: %v", err) + } + + lookupClient, err := m.NewLookupClient() + if err != nil { + t.Fatal("creating lookup client") + } + defer lookupClient.Close() + + // check final postgres values + for _, tc := range tcs { + t.Run(tc.name+"-postgres", func(t *testing.T) { + if tc.missing { + if present, err := lookupClient.RowExists(tc.externalId); err != nil { + t.Fatalf("querying postgres: %s", err) + } else if present { + t.Fatalf("present and shouldn't be") + } + } else { + if got, err := lookupClient.ReadString(tc.externalId, postgresColumnName); err != nil { + t.Fatalf("querying postgres: %s", err) + } else if tc.expText != got { + t.Errorf("wrong value from postgres, expected\n%s\n got\n%s\n", tc.expText, got) + } + } + }) + } + + // check postgres values via pilosa + for _, tc := range tcs { + t.Run(tc.name+"-pilosa", func(t *testing.T) { + pilosaCount, pilosaVal, err := lookupViaPilosa(tc.externalId, postgresColumnName, m.Index) + if err != nil { + t.Fatalf("querying pilosa: %v", err) + } + if tc.missing { + if pilosaCount > 0 { + t.Errorf("present and shouldn't be") + } + } else { + if pilosaVal != tc.expText { + t.Errorf("wrong value from pilosa, expected\n%s\n got\n%s\n", tc.expText, pilosaVal) + } + } + }) + } + + // // delete data from pilosa + // schema, err := m.PilosaClient().Schema() + // if err != nil { + // t.Errorf("getting client: %v", err) + // } + // index := schema.Index(m.Index) + + // err = m.PilosaClient().DeleteIndex(index) + // if err != nil { + // t.Errorf("deleting index: %v", err) + // } + + // // delete data from postgres + // err = lookupClient.DropTable() + // if err != nil { + // t.Errorf("dropping table: %v", err) + // } +} + +// lookupViaPilosa retrieves lookupText values from Postgres via the ExternalLookup +// Pilosa query. +// This was created as a helper function for TestLookupFieldWithExternalId. +func lookupViaPilosa(id uint64, column, index string) (int, string, error) { + pql := fmt.Sprintf(`ExternalLookup(ConstRow(columns=[%d]), query="select id, %s from %s where id = ANY($1)")`, id, "text", index) + + eResp, err := idktest.DoExtractQuery(pql, index) + if err != nil { + return 0, "", err + } + + if eResp.Results[0].Columns == nil { + // This itself is not an error condition; it is expected for the + // missing-data testcase. + return 0, "", nil + } + + rows := eResp.Results[0].Columns[0].Rows + count := len(rows) + text := rows[0].(string) + return count, text, nil +} + +// retrieveTestCaseIds populates the externalId field of each testcase +// by comparing the uniquePilosaValue in the testcase with the results of +// an Extract query which correlates uniquePilosaValue with its +// pilosa-allocated ID. +// This was created as a helper function for TestLookupFieldWithExternalId. +func retrieveTestCaseIds(tcs []lookupTestCase, index, field string) error { + pql := fmt.Sprintf("Extract(All(), Rows(%s))", field) + + eResp, err := idktest.DoExtractQuery(pql, index) + if err != nil { + return err + } + + if eResp.Results[0].Columns == nil { + return errors.Errorf("no data in Extract response") + } + + // Correlate PilosaVal to assign corresponding IDs. + for n, tc := range tcs { + for _, col := range eResp.Results[0].Columns { + // ?? panic: interface conversion: interface {} is float64, not uint64 + if uint64(col.Rows[0].(float64)) == tc.uniquePilosaVal { + tcs[n].externalId = uint64(col.ColumnID) + break + } + } + if tcs[n].externalId == 0 { + // NOTE This assumes an ID of 0 will not be used by the Nexter. + return errors.Errorf("no externalID found for test case with uniquePilosaVal=%d", tc.uniquePilosaVal) + } + } + + return nil +} + +func TestSaslDuplicateFieldNameDisallowed(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.Header = "../kafka_static/testdata/LookupDuplicate.json" + m.MaxMsgs = uint64(0) + + err = m.Run() + if !strings.Contains(err.Error(), "schema field 2 duplicates name of field 1 (text)") { + t.Fatalf("duplicate field name not detected: %s", err) + } +} + +func TestSaslPrimaryKeyFieldsMissing(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s"} + records := [][]interface{}{ + {2, 5.5, "2021-02-01", nil}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.PrimaryKeyFields = []string{"s"} + m.AllowMissingFields = true + m.Header = "../kafka_static/testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, vals := range records { + msg := makeRecordString(t, fieldNames, vals) + tWriteConfluentMessage(t, producer, topic, "akey", msg) + } + defer producer.Close() + + err = m.Run() + if err == nil { + t.Fatal("running main should have failed") + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + + err = client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + +} + +func TestSaslIDFieldMissing(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s"} + records := [][]interface{}{ + {nil, 5.5, "2021-02-01", "apple"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.IDField = "i" + m.AllowMissingFields = true + m.Header = "../kafka_static/testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, vals := range records { + msg := makeRecordString(t, fieldNames, vals) + tWriteConfluentMessage(t, producer, topic, "akey", msg) + } + defer producer.Close() + + err = m.Run() + if err == nil { + t.Fatal("running main should have failed") + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + + err = client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } +} + +func TestSaslCmdAutoID(t *testing.T) { + t.Parallel() + + fieldNames := []string{"first"} + records := [][]interface{}{ + {"a"}, + {"b"}, + {"c"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + configureTestFlags(m) + m.Index = fmt.Sprintf("sasl_cmd_test_auto_id223ij%s", topic) + m.AutoGenerate = true + m.ExternalGenerate = true + m.Header = "../kafka_static/testdata/Flat.json" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, vals := range records { + msg := makeRecordString(t, fieldNames, vals) + tWriteConfluentMessage(t, producer, topic, "a", msg) + } + defer producer.Close() + + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + qr, err := client.Query(index.Count(index.All())) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 3 { + t.Errorf("wrong count for columns, %d is not 3", qr.Result().Count()) + } + + qr, err = client.Query(pilosaclient.NewPQLBaseQuery(`Count(Distinct(All(), field="first"))`, index, nil)) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 3 { + t.Errorf("wrong count for val, %d is not 3", qr.Result().Count()) + } +} +func TestSaslSaslConfig(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "sasl_xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m, err := NewMain() + if err != nil { + t.Fatal(err) + } + m.Index = fmt.Sprintf("sasl_cmd_test_index223ij%s", topic) + m.KafkaBootstrapServers = []string{kafkaHost} + + m.PilosaHosts = []string{pilosaHost} + // m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.AutoGenerate = true + m.Topics = []string{topic} + m.Header = "../kafka_static/testdata/LookupId.json" + + type testCase struct { + name string + config idk.ConfluentCommand + expectedError string + } + + tests := []testCase{ + { + name: "incorrect username", + config: idk.ConfluentCommand{ + KafkaSaslUsername: "wrong-username", + KafkaSaslPassword: configMapSource.KafkaSaslPassword, + KafkaSaslMechanism: configMapSource.KafkaSaslMechanism, + KafkaSecurityProtocol: configMapSource.KafkaSecurityProtocol, + KafkaSslKeyPassword: configMapSource.KafkaSslKeyPassword, + KafkaSslCaLocation: configMapSource.KafkaSslCaLocation, + KafkaSslCertificateLocation: configMapSource.KafkaSslCertificateLocation, + KafkaSslKeyLocation: configMapSource.KafkaSslKeyLocation, + }, + expectedError: "Authentication failed: Invalid username or password", + }, + { + name: "incorrect password", + config: idk.ConfluentCommand{ + KafkaSaslUsername: configMapSource.KafkaSaslUsername, + KafkaSaslPassword: "wrong-password", + KafkaSaslMechanism: configMapSource.KafkaSaslMechanism, + KafkaSecurityProtocol: configMapSource.KafkaSecurityProtocol, + KafkaSslKeyPassword: configMapSource.KafkaSslKeyPassword, + KafkaSslCaLocation: configMapSource.KafkaSslCaLocation, + KafkaSslCertificateLocation: configMapSource.KafkaSslCertificateLocation, + KafkaSslKeyLocation: configMapSource.KafkaSslKeyLocation, + }, + expectedError: "Authentication failed: Invalid username or password", + }, + { + name: "unsupported sasl mechanism", + config: idk.ConfluentCommand{ + KafkaSaslUsername: configMapSource.KafkaSaslUsername, + KafkaSaslPassword: configMapSource.KafkaSaslPassword, + KafkaSaslMechanism: "random-mechanism", + KafkaSecurityProtocol: configMapSource.KafkaSecurityProtocol, + KafkaSslKeyPassword: configMapSource.KafkaSslKeyPassword, + KafkaSslCaLocation: configMapSource.KafkaSslCaLocation, + KafkaSslCertificateLocation: configMapSource.KafkaSslCertificateLocation, + KafkaSslKeyLocation: configMapSource.KafkaSslKeyLocation, + }, + expectedError: "Unsupported SASL mechanism", + }, + { + name: "invalid value for security protocol", + config: idk.ConfluentCommand{ + KafkaSaslUsername: configMapSource.KafkaSaslUsername, + KafkaSaslPassword: configMapSource.KafkaSaslPassword, + KafkaSaslMechanism: configMapSource.KafkaSaslMechanism, + KafkaSecurityProtocol: "random-protocol", + KafkaSslKeyPassword: configMapSource.KafkaSslKeyPassword, + KafkaSslCaLocation: configMapSource.KafkaSslCaLocation, + KafkaSslCertificateLocation: configMapSource.KafkaSslCertificateLocation, + KafkaSslKeyLocation: configMapSource.KafkaSslKeyLocation, + }, + expectedError: "Invalid value " + "\"random-protocol\"" + " for configuration property \"security.protocol\"", + }, + } + + runTest := func(t *testing.T, main *Main, config idk.ConfluentCommand, expectedError string) { + main.CopyIn(config) + err := m.Run() + if err != nil { + assert.Contains(t, err.Error(), expectedError) + } + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + runTest(t, m, test.config, test.expectedError) + }) + } +} + +func TestMaxMsgs(t *testing.T) { + tests := []struct { + rec []string + count int + }{ + { + rec: []string{`{"protocol": "TCP", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": true, "region": "North America"}}`}, + count: 1, + }, + { + rec: []string{`{"protocol": "TCP", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": true, "region": "North America"}}`, + `{"protocol": "TCP", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": true, "region": "North America"}}`, + `{"protocol": "SSH", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": false, "region": "South America"}}`}, + count: 2, + }, + } + + collector := &collector{counter: 0} + + for i, test := range tests { + t.Run(fmt.Sprintf("Test%d", i), func(t *testing.T) { + topic := fmt.Sprintf("topic-max-msgs-%d", i) + // create Main and run with MaxMsgs + m, err := NewMain() + m.Header = "testdata/Tree.json" + if err != nil { + t.Fatalf("opps %v", err) + } + m.NewSource = func() (idk.Source, error) { + source := NewSource() + source.Group = m.Group + source.Topics = []string{topic} + source.Log = m.Main.Log() + source.Timeout = m.Timeout + source.SkipOld = m.SkipOld + source.Header = m.Header + source.AllowMissingFields = m.AllowMissingFields + cfg, err := common.SetupConfluent(&m.ConfluentCommand) + if err != nil { + return nil, err + } + + source.ConfigMap = cfg + err = source.Open() + if err != nil { + return nil, errors.Wrap(err, "opening source") + } + return NewWrapSource(source, collector), nil + } + + configureTestFlags(m) + m.Index = fmt.Sprintf("max-msgs-%d", i) + m.AutoGenerate = true + m.ExternalGenerate = true + m.Header = "../kafka_static/testdata/Tree.json" + m.BatchSize = 1 + m.Topics = []string{fmt.Sprintf("test-topic-%d", i)} + m.MaxMsgs = uint64(test.count) + m.PilosaHosts = []string{pilosaHost} + + // use admin to create topic + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + adminClient.Close() + + // put records from all testcases into kafka + producer := tCreateConfluentProducer(t) + for _, vals := range test.rec { + tWriteConfluentMessage(t, producer, topic, "a", vals) + } + producer.Close() + + collector.reset() + err = m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + if collector.counter != uint64(test.count) { + t.Fatalf("expected counter %d, got counter %d", test.count, collector.counter) + } + }) + } +} + +type wrapSource struct { + source *Source + collector *collector +} + +type collector struct { + counter uint64 +} + +func (c *collector) reset() { + c.counter = uint64(0) +} + +func NewWrapSource(s *Source, c *collector) idk.Source { + return &wrapSource{source: s, collector: c} +} + +func (w *wrapSource) Record() (idk.Record, error) { + a, err := w.source.Record() + if err == nil { + w.collector.counter++ + } + return a, err +} + +func (w *wrapSource) Schema() []idk.Field { + return w.source.Schema() +} + +func (w *wrapSource) Close() error { + return w.source.Close() +} diff --git a/idk/kafka_sasl/source.go b/idk/kafka_sasl/source.go new file mode 100644 index 000000000..1c0b106bc --- /dev/null +++ b/idk/kafka_sasl/source.go @@ -0,0 +1,318 @@ +package kafka_sasl + +import ( + "context" + "encoding/json" + "io" + "io/ioutil" + "strconv" + "sync" + "time" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +// Source implements the idk.Source interface using kafka as a data +// source. It is not threadsafe! Due to the way Kafka clients work, to +// achieve concurrency, create multiple Sources. +type Source struct { + idk.ConfluentCommand + Topics []string + Group string + Log logger.Logger + Timeout time.Duration + SkipOld bool + Header string + AllowMissingFields bool + + schema []idk.Field + paths idk.PathTable + + // reader internal.KafkaReader + + spoolBase uint64 + spool []confluent.TopicPartition + client *confluent.Consumer + recordChannel chan recordWithError + ConfigMap *confluent.ConfigMap + + // synchronize closing + quit chan struct{} + wg sync.WaitGroup + opened bool +} + +// NewSource gets a new Source +func NewSource() *Source { + src := &Source{ + Topics: []string{"test"}, + Group: "group0", + Log: logger.NopLogger, + recordChannel: make(chan recordWithError), + quit: make(chan struct{}), + } + src.KafkaBootstrapServers = []string{"localhost:9092"} + + return src +} + +// Record returns the value of the next kafka message. The same Record +// object may be used by successive calls to Record, so it should not +// be retained. +func (s *Source) Record() (idk.Record, error) { + rec := s.fetch() + switch rec.Err { + case nil: + case io.EOF: + return nil, io.EOF + case context.DeadlineExceeded: + return nil, idk.ErrFlush + default: + return nil, errors.Wrap(rec.Err, "failed to fetch record from Kafka Confluent") + } + if rec.Record == nil { + return nil, idk.ErrFlush + } + + data, err := s.decodeMessage(rec.Record.Value) + if err != nil { + return nil, errors.Wrap(err, "decoding with schema registry") + } + msg := rec.Record + // with librdkafka, committing an offset means that offset is + // where we should pick up from... we don't want to re-read this + // message, so we add 1 + msg.TopicPartition.Offset++ + s.spool = append(s.spool, msg.TopicPartition) + return &Record{ + src: s, + topic: *msg.TopicPartition.Topic, + partition: int(msg.TopicPartition.Partition), + offset: int64(msg.TopicPartition.Offset), + idx: s.spoolBase + uint64(len(s.spool)), + data: data, + }, err +} + +type recordWithError struct { + Record *confluent.Message + Err error +} + +func (s *Source) fetch() recordWithError { + return <-s.recordChannel +} + +func (s *Source) decodeMessage(buf []byte) ([]interface{}, error) { + message := map[string]interface{}{} + err := json.Unmarshal(buf, &message) + if err != nil { + jsonError, ok := err.(*json.SyntaxError) + if ok { + return nil, errors.Wrapf(err, "unmarshaling kafka message at character offset %v: %s", jsonError.Offset, string(buf)) + } else { + return nil, errors.Wrapf(err, "unmarshaling kafka message at unknown character offset: %s", string(buf)) + } + } + + return s.paths.Lookup(message, s.AllowMissingFields) +} + +func (s *Source) Schema() []idk.Field { + return s.schema +} +func (s *Source) CommitMessages(recs []confluent.TopicPartition) ([]confluent.TopicPartition, error) { + return s.client.CommitOffsets(recs) +} + +type Record struct { + src *Source + topic string + partition int + offset int64 + idx uint64 + data []interface{} +} + +func (r *Record) StreamOffset() (string, uint64) { + return r.topic + ":" + strconv.Itoa(r.partition), uint64(r.offset) +} + +var _ idk.OffsetStreamRecord = &Record{} + +func (r *Record) Commit(ctx context.Context) error { + idx, base := r.idx, r.src.spoolBase + if idx < base { + return errors.New("cannot commit a record that has already been committed") + } + section, remaining := r.src.spool[:idx-base], r.src.spool[idx-base:] + committedOffsets, err := r.src.CommitMessages(section) + extra := calOffsetDiff(section, committedOffsets) + if err != nil { + return errors.Wrap(err, "failed to commit messages") + } + if len(extra) > 0 { + remaining = append(remaining, extra...) + idx = idx - uint64(len(extra)) + } + + r.src.spool = remaining + r.src.spoolBase = idx + + return nil +} + +// Assuming committed msgs are in order +func calOffsetDiff(section, committed []confluent.TopicPartition) []confluent.TopicPartition { + return section[len(committed):] +} + +func (r *Record) Data() []interface{} { + return r.data +} + +// Open initializes the kafka source. +func (s *Source) Open() error { + if len(s.Header) == 0 { + return errors.New("needs header specification file") + } + + headerData, err := ioutil.ReadFile(s.Header) + if err != nil { + return errors.Wrap(err, "reading header file") + } + schema, paths, err := idk.ParseHeader(headerData) + if err != nil { + return errors.Wrap(err, "processing header") + } + s.schema = schema + s.paths = paths + + // group + if s.Group != "" { + err = s.ConfigMap.SetKey("group.id", s.Group) + if err != nil { + return err + } + } + // when there is no initial offset in Kafka or if the current offset does not exist any more, + // use this as starting offset: + // "earliest": automatically reset the offset to the earliest offset + // "latest": automatically reset the offset to the latest offset + err = s.ConfigMap.SetKey("auto.offset.reset", "earliest") + if err != nil { + return err + } + if s.SkipOld { + err = s.ConfigMap.SetKey("auto.offset.reset", "latest") + if err != nil { + return err + } + } + + cl, err := confluent.NewConsumer(s.ConfigMap) + if err != nil { + return errors.Wrap(err, "new consumer") + } + + // by default, Kafka will use the stored offset (the latest committed message) and continue on from there. + // to skip old msgs, use rebalanceCbSkipOld to manually set offset to the end + err = cl.SubscribeTopics(s.Topics, nil) + if err != nil { + return errors.Wrap(err, "subscribe topics") + } + + s.client = cl + s.opened = true + s.wg.Add(1) + + go func() { + s.generator() + }() + + return nil +} + +func (c *Source) generator() { + defer func() { + close(c.recordChannel) + c.wg.Done() + }() + + for { + select { + + case <-c.quit: + return + default: + ev := c.client.Poll(100) + if ev == nil { + continue + } + switch e := ev.(type) { + + // If we received an `AssignedPartitions` event, we need to make sure we + // assign the currently running consumer to the right partitions. + case confluent.AssignedPartitions: + err := c.client.Assign(e.Partitions) + if err != nil { + return + } + // If we received an `RevokedPartitions` event, we need to revoke this + // consumer from all partitions. This means this consumer won't pick up + // any work anymore, until a new `AssignedPartitions` event is handled. + case confluent.RevokedPartitions: + err := c.client.Unassign() + if err != nil { + return + } + + // If we receive an error, something happened on Kafka's side. We don't + // know what happened or if we can recover gracefully, so we instead + // terminate the running process. + case confluent.Error: + msg := recordWithError{Err: e} + select { + case c.recordChannel <- msg: + case <-c.quit: + return + } + + // On receiving a Kafka message, we process the received message and + // prepare it for delivery to the consumer of the consumer.messages + // channel. + case *confluent.Message: + msg := recordWithError{Record: e} + + // Once the message has been prepared, we offer it to the consumer of + // the messages channel. Since this is a blocking channel, we also + // listen for the quit signal, and stop delivering new messages + // accordingly. + select { + case c.recordChannel <- msg: + case <-c.quit: + return + } + default: + continue // consumer doesn't care about all event types (e.g. OffsetsCommitted) + } + } + } +} + +// Close closes the underlying kafka consumer. +func (s *Source) Close() error { + if s.client != nil { + if s.opened { //only close opened sources + s.quit <- struct{}{} + s.wg.Wait() + err := s.client.Close() + s.opened = false + return errors.Wrap(err, "closing kafka consumer") + } + } + return nil +} diff --git a/idk/kafka_sasl/source_test.go b/idk/kafka_sasl/source_test.go new file mode 100644 index 000000000..90e81f0aa --- /dev/null +++ b/idk/kafka_sasl/source_test.go @@ -0,0 +1,300 @@ +//go:build kafka_sasl +// +build kafka_sasl + +package kafka_sasl + +import ( + "fmt" + "math/rand" + "reflect" + "strconv" + "testing" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" +) + +func configureSourceTestFlags(source *Source) { + source.ConfluentCommand = configMapSource +} + +var tests = []struct { + name string + header string + data []string + exp [][]interface{} +}{ + { + name: "Flat", + header: "../kafka_static/testdata/Flat.json", + data: []string{`{"first": "hello"}`}, + exp: [][]interface{}{{"hello"}}, + }, + { + name: "Tree", + header: "../kafka_static/testdata/Tree.json", + data: []string{`{"protocol": "TCP", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": true, "region": "North America"}}`}, + exp: [][]interface{}{ + {"TCP", 22.0, "127.0.0.1", "127.0.0.1", true, "North America"}, + }, + }, +} + +// TestKafkaStaticSourceIntegration uses a real Kafka, and a static schema. +func TestSaslKafkaStaticSourceIntegration(t *testing.T) { + t.Parallel() + + if testing.Short() { + t.Skip() + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + + key := fmt.Sprintf("%d", a) + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + // t.Parallel() + + topic := "sasl_testKafkaStaticSourceIntegration" + test.name + strconv.Itoa(a) + + // create topic before openning the Source + adminClient := tCreateConfluentAdmin(t) + tCreateConfluentTopic(t, adminClient, topic) + defer adminClient.Close() + + src := NewSource() + defer src.Close() + configureSourceTestFlags(src) + src.Topics = []string{topic} + src.Group = "group0" + src.Header = test.header + cfg, err := common.SetupConfluent(&configMapSource) + if err != nil { + t.Fatal(err) + } + src.ConfigMap = cfg + + err = src.Open() + if err != nil { + t.Fatalf("opening source: %v", err) + } + + producer := tCreateConfluentProducer(t) + + for j, record := range test.data { + tWriteConfluentMessage(t, producer, topic, key, record) + + rec, err := src.Record() + if err != nil { + t.Fatalf("unexpected error getting record: %v", err) + } + if rec == nil { + t.Fatalf("should have a record") + } + + data := rec.Data() + if !reflect.DeepEqual(data, test.exp[j]) { + t.Errorf("data mismatch exp/got:\n%+v\n%+v", test.exp[j], data) + if len(data) != len(test.exp[j]) { + t.Fatalf("mismatched lengths exp/got %d/%d", len(test.exp[j]), len(data)) + } + for k := range test.exp[j] { + if !reflect.DeepEqual(test.exp[j][k], data[k]) { + t.Errorf("Mismatch at %d, exp/got\n%v of %[2]T\n%v of %[3]T", k, test.exp[j][k], data[k]) + } + } + } + } + defer producer.Close() + }) + } + +} + +func TestSaslPathTable(t *testing.T) { + t.Parallel() + + cases := []struct { + name string + table idk.PathTable + allowMissingFields bool + in interface{} + out []interface{} + err string + }{ + { + name: "nil", + out: []interface{}{}, + }, + { + name: "Root", + table: idk.PathTable{ + {}, + }, + in: 1, + out: []interface{}{ + 1, + }, + }, + { + name: "Flat", + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + "y": 2, + }, + out: []interface{}{ + 1, + 2, + }, + }, + { + name: "Missing", + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + }, + err: "failed to lookup path [y]: element \"y\" at [] is missing", + }, + { + name: "Missing_Allowed", + allowMissingFields: true, + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + }, + out: []interface{}{ + 1, + nil, + }, + }, + { + name: "Check Nil Delete", + allowMissingFields: true, + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": nil, + }, + out: []interface{}{ + idk.DELETE_SENTINEL, + nil, + }, + }, + { + name: "Tree", + table: idk.PathTable{ + {"x", "y"}, + {"y", "z", "a"}, + }, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "y": map[string]interface{}{ + "z": map[string]interface{}{ + "a": "b", + }, + }, + }, + out: []interface{}{ + []interface{}{1, 2, 3}, + "b", + }, + }, + { + name: "TreeMissing", + table: idk.PathTable{ + {"x", "y"}, + {"y", "z", "b"}, + }, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "y": map[string]interface{}{ + "z": map[string]interface{}{ + "a": "b", + }, + }, + }, + err: "failed to lookup path [y z b]: element \"b\" at [y z] is missing", + }, + { + name: "TreeMissing_Allowed", + table: idk.PathTable{ + {"x", "y"}, + {"a", "b", "c"}, + }, + allowMissingFields: true, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "a": map[string]interface{}{ + "c": "words", + }, + }, + out: []interface{}{ + []interface{}{1, 2, 3}, + nil, + }, + }, + { + name: "WrongNodeType", + table: idk.PathTable{ + {"x", "y"}, + }, + in: map[string]interface{}{ + "x": []interface{}{"z"}, + }, + err: "failed to lookup path [x y]: element at [x] is not an object", + }, + } + + for _, c := range cases { + c := c + t.Run(c.name, func(t *testing.T) { + // t.Parallel() + out, err := c.table.Lookup(c.in, c.allowMissingFields) + if err != nil { + switch { + case c.err == "": + t.Errorf("unexpected error: %v", err) + case c.err != err.Error(): + t.Errorf("expected error %q but got %q", c.err, err.Error()) + } + } else { + switch { + case c.err != "": + t.Error("unexpected success") + case !reflect.DeepEqual(out, c.out): + t.Errorf("expected %v but got %v", c.out, out) + } + } + }) + } +} diff --git a/idk/kafka_static/cmd.go b/idk/kafka_static/cmd.go new file mode 100644 index 000000000..68a3a5207 --- /dev/null +++ b/idk/kafka_static/cmd.go @@ -0,0 +1,55 @@ +package kafka_static + +import ( + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +type Main struct { + idk.Main `flag:"!embed"` + KafkaHosts []string `help:"Comma separated list of host:port pairs for Kafka."` + Group string `help:"Kafka group."` + Topics []string `help:"Kafka topics to read from."` + Timeout time.Duration `help:"Time to wait for more records from Kafka before flushing a batch. 0 to disable."` + SkipOld bool `short:"" help:"Skip to the most recent Kafka message rather than starting at the beginning."` + Header string `help:"Path to the static schema, in JSON header format. May be a path on the local filesystem, or an S3 URI (requires setting --s3-region or environment variable AWS_REGION)."` + S3Region string `help:"S3 Region, optionally used when header is specified as an S3 URI. Alternatively, use environment variable AWS_REGION."` + AllowMissingFields bool `help:"Will proceed with ingest even if a field is missing from a record but specified in the JSON config file. Default false"` + + KafkaTLS idk.TLSConfig +} + +func NewMain() *Main { + m := &Main{ + Main: *idk.NewMain(), + KafkaHosts: []string{"localhost:9092"}, + Group: "defaultgroup", + Topics: []string{"defaulttopic"}, + Timeout: time.Second, + } + m.OffsetMode = true + m.Main.Namespace = "ingester_kafka_static" + m.Main.Pprof = "" // don't initialize pprof until we actually use it in tests + m.NewSource = func() (idk.Source, error) { + source := NewSource() + source.Hosts = m.KafkaHosts + source.Group = m.Group + source.Topics = m.Topics + source.Log = m.Main.Log() + source.TLS = m.KafkaTLS + source.Timeout = m.Timeout + source.SkipOld = m.SkipOld + source.Header = m.Header + source.S3Region = m.S3Region + source.AllowMissingFields = m.AllowMissingFields + + err := source.Open() + if err != nil { + return nil, errors.Wrap(err, "opening source") + } + return source, nil + } + return m +} diff --git a/idk/kafka_static/cmd_test.go b/idk/kafka_static/cmd_test.go new file mode 100644 index 000000000..b99bf8de1 --- /dev/null +++ b/idk/kafka_static/cmd_test.go @@ -0,0 +1,733 @@ +//go:build !kafka_sasl +// +build !kafka_sasl + +package kafka_static + +import ( + "encoding/json" + "fmt" + "math/rand" + "os" + "strconv" + "strings" + "testing" + "time" + + "github.com/pkg/errors" + "github.com/segmentio/kafka-go" + + pilosaclient "github.com/molecula/featurebase/v3/client" + "github.com/molecula/featurebase/v3/idk/idktest" +) + +var pilosaHost string +var pilosaTLSHost string +var pilosaGrpcHost string +var kafkaHost string +var certPath string + +func init() { + var ok bool + if pilosaHost, ok = os.LookupEnv("IDK_TEST_PILOSA_HOST"); !ok { + pilosaHost = "pilosa:10101" + } + if pilosaTLSHost, ok = os.LookupEnv("IDK_TEST_PILOSA_TLS_HOST"); !ok { + pilosaTLSHost = "https://pilosa-tls:10111" + } + if pilosaGrpcHost, ok = os.LookupEnv("IDK_TEST_PILOSA_GRPC_HOST"); !ok { + pilosaGrpcHost = "pilosa:20101" + } + if kafkaHost, ok = os.LookupEnv("IDK_TEST_KAFKA_HOST"); !ok { + kafkaHost = "kafka:9092" + } + if certPath, ok = os.LookupEnv("IDK_TEST_CERT_PATH"); !ok { + certPath = "/certs" + } +} + +func configureTestFlags(main *Main) { + main.PilosaHosts = []string{pilosaHost} + main.PilosaGRPCHosts = []string{pilosaGrpcHost} + main.KafkaHosts = []string{kafkaHost} + // intentionally low timeout — if this gets triggered it shouldn't + // have any negative effects + main.Timeout = time.Millisecond * 20 + main.Stats = "" + _, main.Verbose = os.LookupEnv("IDK_TEST_VERBOSE") +} + +func TestFieldTypes(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s", "@st", "unixtime", "e"} + records := [][]interface{}{ + {100, 34.0404, "2021-02-01", "apple", "egg", 1617246530, "Lorem ipsum dolor sit amet"}, // Thu Apr 01 03:08:50 2021 UTC + } + sPilosaName := "s" + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.Header = "testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.LookupBatchSize = 1 + + // put records in kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + + for _, vals := range records { + rec := makeRecordString(t, fieldNames, vals) + tPutStringKafka(t, writer, "akey", rec) + } + + err := m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + if status, body, err := client.HTTPRequest("POST", "/recalculate-caches", nil, nil); err != nil { + t.Fatalf("recalculating cache: status: %d, response: %s, error: %s", status, body, err) + } + + // check data in Pilosa + if !index.HasField(sPilosaName) { + t.Fatalf("don't have field '%s'", sPilosaName) + } + + fields := index.Field(sPilosaName) + stPilosaName := "st" + fieldSt := index.Field(stPilosaName) + + qr, err := client.Query(index.Count(fields.Row("apple"))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s', %d is not 1", sPilosaName, qr.Result().Count()) + } + + qr, err = client.Query(index.Count(fieldSt.Row("egg"))) + if err != nil { + t.Fatalf("querying time range for egg: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s', %d is not 1", stPilosaName, qr.Result().Count()) + } + qr, err = client.Query(index.Count(fieldSt.Range("egg", time.Unix(1617145530, 0), time.Unix(1617348530, 0)))) + if err != nil { + t.Fatalf("querying time range for egg: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field '%s' with time range, %d is not 1", stPilosaName, qr.Result().Count()) + } + + if !index.HasField("i") { + t.Fatal("don't have field 'i'") + } + fieldi := index.Field("i") + + qr, err = client.Query(index.Count(fieldi.Row(100))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field 'i', %d is not 1", qr.Result().Count()) + } + + if !index.HasField("d") { + t.Fatal("don't have field 'd'") + } + fieldd := index.Field("d") + + qr, err = client.Query(index.Count(fieldd.Row(34.0404))) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 1 { + t.Errorf("wrong count for field 'd', %d is not 1", qr.Result().Count()) + } + +} + +func TestLookupFieldIdNameDisallowed(t *testing.T) { + t.Parallel() + tcs := []lookupTestCase{ + {name: "junk", text: "foo", expText: "foo"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.Header = "testdata/LookupId.json" + + // lookupClient.Setup() can't get called until after initialFetch, so need to insert + // some junk into kafka to test this at this level. + m.MaxMsgs = uint64(len(tcs)) // make source wait for TimeOut after last message + m.LookupBatchSize = 1 + + ingesterErrs := make(chan error, 1) + go func() { + err := m.Run() + ingesterErrs <- err + }() + + // put records from all testcases into kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + for _, tc := range tcs { + msg := messageStringFromTestcase(t, tc) + tPutStringKafka(t, writer, "bkey", msg) + } + + // Wait for ingestion to finish. + err := <-ingesterErrs + + if !strings.Contains(err.Error(), "field name 'id' not allowed for LookupText fields") { + t.Fatalf("invalid field name 'id' not detected: %s", err) + } +} + +// lookupTestCase consolidates definitions for: +// - messages sent to Kafka +// - record IDs generated by Pilosa and retrieved within a test +// - values to check against Postgres +// - values to check against Pilosa +// name: testcase name +// uniquePilosaVal: unqiue integer value sent to Pilosa. Corresponds to `int` field in Lookup.json +// externalId: Pilosa record ID, allocated by Pilosa, looked up by test, used as Postgres ID as well +// text: raw text sent to Postgres. Corresponds to `text` field in Lookup.josn +// expText: text after retrieving from Postges (distinct from `text` due to escape characters) +// missing: true if `text` should NOT be present in the Kafka message +type lookupTestCase struct { + name string + uniquePilosaVal uint64 + externalId uint64 + text string + expText string + missing bool +} + +// messageStringFromTestCase defines a Kafka json message string, to be +// sent to Kafka. Matches Lookup.json. +func messageStringFromTestcase(t *testing.T, tc lookupTestCase) string { + if tc.missing { + return fmt.Sprintf(`{"int":%d}`, tc.uniquePilosaVal) + } else { + return fmt.Sprintf(`{"int":%d,"text":"%s"}`, tc.uniquePilosaVal, tc.text) + } + +} + +// TestLookupFieldWithExternalId checks that the external +// lookup (postgres) feature works as expected, +// - using ExternalGenerate to use pilosa to generate IDs +// - with bad string input +// - with missing data +// This test is intended to match THR's use case. +func TestLookupFieldWithExternalId(t *testing.T) { + // t.Parallel() + tcs := []lookupTestCase{ + // When using ExternalGenerate (pilosa Nexter), then the only kafka setting that + // makes sense is at-most-once delivery. + // That means this postgres client/batcher should only be used in its current state + // for this very specific use case. + + // Testing for duplicate records and overwriting behavior would be done here by defining + // multiple testcases with overlapping ID values. + // This is not done because that doesn't make sense when using ExternalGenerate: + // - key is not present in Kafka message, so it is generated by Pilosa + // - identifying duplicates is not possible without a primary key in the message + {name: "missing-data", missing: true}, + {name: "normal-write", text: "D", expText: "D"}, + {name: "weirdstring-1", text: "Æ�漢д ☮♬ ♞🜻💣", expText: "Æ�漢д ☮♬ ♞🜻💣"}, + {name: "weirdstring-2", text: "", expText: ""}, + {name: "weirdstring-3", text: "'", expText: "'"}, + {name: "doublequotes-1", text: `\"`, expText: `"`}, // is this sensible? + {name: "doublequotes-2", text: `{\"log\": \"message\", 'with': 'whatever', ` + "`weird`: `syntax`}", expText: `{"log": "message", 'with': 'whatever', ` + "`weird`: `syntax`}"}, + } + + // lookupTestCase.uniquePilosaVal is required to be unique, + // so it can be used to correlate testcases with IDs allocated by Pilosa, + // in retrieveTestCaseIds. Set it automatically here. + lookupRecordCount := 0 + for n := range tcs { + tcs[n].uniquePilosaVal = uint64(100 * (n + 1)) + if !tcs[n].missing { + lookupRecordCount++ + } + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Header = "testdata/Lookup.json" + pilosaFieldName := "int" // matches Lookup.json + postgresColumnName := "text" // matches Lookup.json + + // lookup+external specific settings + m.ExternalGenerate = true + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.AllowMissingFields = true // needed for missing data testcases + m.MaxMsgs = uint64(len(tcs)) // make source wait for TimeOut after last message + m.LookupBatchSize = lookupRecordCount + + ingesterErrs := make(chan error, 1) + go func() { + err := m.Run() + ingesterErrs <- err + }() + + // put records from all testcases into kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + for _, tc := range tcs { + msg := messageStringFromTestcase(t, tc) + tPutStringKafka(t, writer, "akey", msg) + } + + // Wait for ingestion to finish. + if err := <-ingesterErrs; err != nil { + t.Fatalf("running main: %v", err) + } + + err := retrieveTestCaseIds(tcs, m.Index, pilosaFieldName) + if err != nil { + t.Fatalf("looking up ExternalIds: %v", err) + } + + lookupClient, err := m.NewLookupClient() + if err != nil { + t.Fatal("creating lookup client") + } + defer lookupClient.Close() + + // check final postgres values + for _, tc := range tcs { + t.Run(tc.name+"-postgres", func(t *testing.T) { + if tc.missing { + if present, err := lookupClient.RowExists(tc.externalId); err != nil { + t.Fatalf("querying postgres: %s", err) + } else if present { + t.Fatalf("present and shouldn't be") + } + } else { + if got, err := lookupClient.ReadString(tc.externalId, postgresColumnName); err != nil { + t.Fatalf("querying postgres: %s", err) + } else if tc.expText != got { + t.Errorf("wrong value from postgres, expected\n%s\n got\n%s\n", tc.expText, got) + } + } + }) + } + + // check postgres values via pilosa + for _, tc := range tcs { + t.Run(tc.name+"-pilosa", func(t *testing.T) { + pilosaCount, pilosaVal, err := lookupViaPilosa(tc.externalId, postgresColumnName, m.Index) + if err != nil { + t.Fatalf("querying pilosa: %v", err) + } + if tc.missing { + if pilosaCount > 0 { + t.Errorf("present and shouldn't be") + } + } else { + if pilosaVal != tc.expText { + t.Errorf("wrong value from pilosa, expected\n%s\n got\n%s\n", tc.expText, pilosaVal) + } + } + }) + } + + // delete data from pilosa + schema, err := m.PilosaClient().Schema() + if err != nil { + t.Errorf("getting client: %v", err) + } + index := schema.Index(m.Index) + + err = m.PilosaClient().DeleteIndex(index) + if err != nil { + t.Errorf("deleting index: %v", err) + } + + // delete data from postgres + err = lookupClient.DropTable() + if err != nil { + t.Errorf("dropping table: %v", err) + } + +} + +// lookupViaPilosa retrieves lookupText values from Postgres via the ExternalLookup +// Pilosa query. +// This was created as a helper function for TestLookupFieldWithExternalId. +func lookupViaPilosa(id uint64, column, index string) (int, string, error) { + pql := fmt.Sprintf(`ExternalLookup(ConstRow(columns=[%d]), query="select id, %s from %s where id = ANY($1)")`, id, "text", index) + + eResp, err := idktest.DoExtractQuery(pql, index) + if err != nil { + return 0, "", err + } + + if eResp.Results[0].Columns == nil { + // This itself is not an error condition; it is expected for the + // missing-data testcase. + return 0, "", nil + } + + rows := eResp.Results[0].Columns[0].Rows + count := len(rows) + text := rows[0].(string) + return count, text, nil +} + +// retrieveTestCaseIds populates the externalId field of each testcase +// by comparing the uniquePilosaValue in the testcase with the results of +// an Extract query which correlates uniquePilosaValue with its +// pilosa-allocated ID. +// This was created as a helper function for TestLookupFieldWithExternalId. +func retrieveTestCaseIds(tcs []lookupTestCase, index, field string) error { + pql := fmt.Sprintf("Extract(All(), Rows(%s))", field) + + eResp, err := idktest.DoExtractQuery(pql, index) + if err != nil { + return err + } + + if eResp.Results[0].Columns == nil { + return errors.Errorf("no data in Extract response") + } + + // Correlate PilosaVal to assign corresponding IDs. + for n, tc := range tcs { + for _, col := range eResp.Results[0].Columns { + // ?? panic: interface conversion: interface {} is float64, not uint64 + if uint64(col.Rows[0].(float64)) == tc.uniquePilosaVal { + tcs[n].externalId = uint64(col.ColumnID) + break + } + } + if tcs[n].externalId == 0 { + // NOTE This assumes an ID of 0 will not be used by the Nexter. + return errors.Errorf("no externalID found for test case with uniquePilosaVal=%d", tc.uniquePilosaVal) + } + } + + return nil +} + +func TestDuplicateFieldNameDisallowed(t *testing.T) { + t.Parallel() + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.AutoGenerate = true + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.LookupDBDSN = "postgresql://postgres:password@postgres:5432/postgres?sslmode=disable" + m.Header = "testdata/LookupDuplicate.json" + m.MaxMsgs = uint64(0) + + err := m.Run() + if !strings.Contains(err.Error(), "schema field 2 duplicates name of field 1 (text)") { + t.Fatalf("duplicate field name not detected: %s", err) + } +} + +func TestPrimaryKeyFieldsMissing(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s"} + records := [][]interface{}{ + {2, 5.5, "2021-02-01", nil}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.PrimaryKeyFields = []string{"s"} + m.AllowMissingFields = true + m.Header = "testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records in kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + + for _, vals := range records { + rec := makeRecordString(t, fieldNames, vals) + tPutStringKafka(t, writer, "akey", rec) + } + + err := m.Run() + if err == nil { + t.Fatal("running main should have failed") + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + + err = client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + +} + +func TestIDFieldMissing(t *testing.T) { + t.Parallel() + + fieldNames := []string{"i", "d", "t", "@s"} + records := [][]interface{}{ + {nil, 5.5, "2021-02-01", "apple"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_index223ij%s", topic) + m.IDField = "i" + m.AllowMissingFields = true + m.Header = "testdata/TestFieldTypes.json" + m.PackBools = "bools" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records in kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + + for _, vals := range records { + rec := makeRecordString(t, fieldNames, vals) + tPutStringKafka(t, writer, "akey", rec) + } + + err := m.Run() + if err == nil { + t.Fatal("running main should have failed") + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + + err = client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + +} + +func TestCmdAutoID(t *testing.T) { + t.Parallel() + + fieldNames := []string{"first"} + records := [][]interface{}{ + {"a"}, + {"b"}, + {"c"}, + } + + rand.Seed(time.Now().UnixNano()) + a := rand.Int() + topic := "xyz" + strconv.Itoa(a) + + // create Main and run with MaxMsgs + m := NewMain() + configureTestFlags(m) + m.Index = fmt.Sprintf("cmd_test_auto_id223ij%s", topic) + m.AutoGenerate = true + m.ExternalGenerate = true + m.Header = "testdata/Flat.json" + m.BatchSize = 1 + m.Topics = []string{topic} + m.MaxMsgs = uint64(len(records)) + m.PilosaHosts = []string{pilosaHost} + m.Timeout = time.Minute + m.Verbose = true + + // put records in kafka + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, topic, addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: topic, + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + + for _, vals := range records { + rec := makeRecordString(t, fieldNames, vals) + tPutStringKafka(t, writer, "a", rec) + } + + err := m.Run() + if err != nil { + t.Fatalf("running main: %v", err) + } + + client := m.PilosaClient() + schema, err := client.Schema() + if err != nil { + t.Fatalf("getting client: %v", err) + } + index := schema.Index(m.Index) + defer func() { + err := client.DeleteIndex(index) + if err != nil { + t.Logf("deleting index: %v", err) + } + }() + + qr, err := client.Query(index.Count(index.All())) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 3 { + t.Errorf("wrong count for columns, %d is not 3", qr.Result().Count()) + } + + qr, err = client.Query(pilosaclient.NewPQLBaseQuery(`Count(Distinct(All(), field="first"))`, index, nil)) + if err != nil { + t.Errorf("querying: %v", err) + } + if qr.Result().Count() != 3 { + t.Errorf("wrong count for val, %d is not 3", qr.Result().Count()) + } +} + +func makeRecordString(t *testing.T, fields []string, vals []interface{}) string { + if len(fields) != len(vals) { + t.Fatalf("have %d fields and %d vals", len(fields), len(vals)) + } + rec := make(map[string]interface{}) + for i, field := range fields { + rec[field] = vals[i] + } + ret, err := json.Marshal(rec) + if err != nil { + t.Fatalf("error marshaling record to json") + } + return string(ret) +} diff --git a/idk/kafka_static/source.go b/idk/kafka_static/source.go new file mode 100644 index 000000000..dbdf49378 --- /dev/null +++ b/idk/kafka_static/source.go @@ -0,0 +1,271 @@ +package kafka_static + +import ( + "bytes" + "context" + "encoding/json" + "io" + "io/ioutil" + "net/url" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/internal" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" + segmentio "github.com/segmentio/kafka-go" +) + +// Source implements the idk.Source interface using kafka as a data +// source. It is not threadsafe! Due to the way Kafka clients work, to +// achieve concurrency, create multiple Sources. +type Source struct { + Hosts []string + Topics []string + Group string + TLS idk.TLSConfig + Log logger.Logger + Timeout time.Duration + SkipOld bool + Header string + S3Region string + + AllowMissingFields bool + + schema []idk.Field + paths idk.PathTable + + reader internal.KafkaReader + + spoolBase uint64 + spool []segmentio.Message +} + +// NewSource gets a new Source +func NewSource() *Source { + src := &Source{ + Hosts: []string{"localhost:9092"}, + Topics: []string{"test"}, + Group: "group0", + Log: logger.NopLogger, + } + + return src +} + +// Record returns the value of the next kafka message. The same Record +// object may be used by successive calls to Record, so it should not +// be retained. +func (s *Source) Record() (idk.Record, error) { + msg, err := s.fetch() + switch err { + case nil: + case io.EOF: + return nil, io.EOF + case context.DeadlineExceeded: + return nil, idk.ErrFlush + default: + return nil, errors.Wrap(err, "failed to fetch record from Kafka") + } + + data, err := s.decodeMessage(msg.Value) + if err != nil { + return nil, errors.Wrap(err, "decoding with schema registry") + } + + s.spool = append(s.spool, msg) + + return &Record{ + src: s, + topic: msg.Topic, + partition: msg.Partition, + offset: msg.Offset, + idx: s.spoolBase + uint64(len(s.spool)), + data: data, + }, err +} + +func (s *Source) fetch() (segmentio.Message, error) { + ctx := context.Background() + if s.Timeout != 0 { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, s.Timeout) + defer cancel() + } + + return s.reader.FetchMessage(ctx) +} + +func (s *Source) decodeMessage(buf []byte) ([]interface{}, error) { + message := map[string]interface{}{} + err := json.Unmarshal(buf, &message) + if err != nil { + jsonError, ok := err.(*json.SyntaxError) + if ok { + return nil, errors.Wrapf(err, "unmarshaling kafka message at character offset %v: %s", jsonError.Offset, string(buf)) + } else { + return nil, errors.Wrapf(err, "unmarshaling kafka message at unknown character offset: %s", string(buf)) + } + } + + return s.paths.Lookup(message, s.AllowMissingFields) +} + +func (s *Source) Schema() []idk.Field { + return s.schema +} + +type Record struct { + src *Source + topic string + partition int + offset int64 + idx uint64 + data []interface{} +} + +func (r *Record) StreamOffset() (string, uint64) { + return r.topic + ":" + strconv.Itoa(r.partition), uint64(r.offset) +} + +var _ idk.OffsetStreamRecord = &Record{} + +func (r *Record) Commit(ctx context.Context) error { + idx, base := r.idx, r.src.spoolBase + if idx < base { + return errors.New("cannot commit a record that has already been committed") + } + + section, remaining := r.src.spool[:idx-base], r.src.spool[idx-base:] + err := r.src.reader.CommitMessages(ctx, section...) + if err != nil { + return errors.Wrap(err, "failed to commit messages") + } + + r.src.spool = remaining + r.src.spoolBase = idx + + return nil +} + +func (r *Record) Data() []interface{} { + return r.data +} + +// Open initializes the kafka source. +func (s *Source) Open() error { + if len(s.Header) == 0 { + return errors.New("needs header specification file") + } + + { + headerData, err := s.readFileOrURL(s.Header) + if err != nil { + return errors.Wrap(err, "reading header file") + } + + schema, paths, err := idk.ParseHeader(headerData) + if err != nil { + return errors.Wrap(err, "processing header") + } + s.schema = schema + s.paths = paths + } + + // init (custom) config, enable errors and notifications + config := segmentio.ReaderConfig{ + Brokers: s.Hosts, + GroupID: s.Group, + Logger: segmentio.LoggerFunc(s.Log.Debugf), + ErrorLogger: s.Log, + } + if s.SkipOld { + config.StartOffset = segmentio.LastOffset + } + + if s.TLS.CertificatePath != "" { + tlsConfig, err := idk.GetTLSConfig(&s.TLS, s.Log) + if err != nil { + return errors.Wrap(err, "getting TLS config") + } + + config.Dialer = &segmentio.Dialer{ + Timeout: 10 * time.Second, + DualStack: true, + TLS: tlsConfig, + } + } + + readers := make(map[string]internal.KafkaReader, len(s.Topics)) + for _, topic := range s.Topics { + config := config + config.Topic = topic + readers[topic] = internal.RetryReader{segmentio.NewReader(config)} //nolint:govet + } + + // Throw the readers into a blender. + s.reader = internal.BlendKafka(readers) + + // TODO: dump stats + + return nil +} + +// Close closes the underlying kafka consumer. +func (s *Source) Close() error { + err := s.reader.Close() + return errors.Wrap(err, "closing kafka consumer") +} + +func (s *Source) readFileOrURL(name string) ([]byte, error) { + var content []byte + var err error + if strings.HasPrefix(name, "s3://") { + u, err := url.Parse(name) + if err != nil { + return nil, errors.Wrapf(err, "parsing S3 URL %v", name) + } + bucket := u.Host + key := u.Path[1:] // strip leading slash + + config := &aws.Config{} + if s.S3Region != "" { + config.Region = aws.String(s.S3Region) + // else, NewSession will use the default region. + } + sess, err := session.NewSession(config) + if err != nil { + return nil, errors.Wrap(err, "creating S3 session") + } + + s3client := s3.New(sess) + + result, err := s3client.GetObject(&s3.GetObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(key), + }) + if err != nil { + return nil, errors.Wrapf(err, "fetching S3 object %v", name) + } + + buf := new(bytes.Buffer) + bytesRead, err := buf.ReadFrom(result.Body) + if err != nil { + return nil, errors.Wrapf(err, "reading S3 object %v", name) + } + s.Log.Printf("read %d bytes from %s\n", bytesRead, name) + content = buf.Bytes() + } else { + content, err = ioutil.ReadFile(name) + if err != nil { + return nil, errors.Wrapf(err, "reading file %v", name) + } + } + return content, nil +} diff --git a/idk/kafka_static/source_test.go b/idk/kafka_static/source_test.go new file mode 100644 index 000000000..1d273f204 --- /dev/null +++ b/idk/kafka_static/source_test.go @@ -0,0 +1,368 @@ +//go:build !kafka_sasl +// +build !kafka_sasl + +package kafka_static + +import ( + "context" + "fmt" + "io/ioutil" + "math/rand" + "net" + "reflect" + "testing" + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/internal" + "github.com/segmentio/kafka-go" +) + +func configureSourceTestFlags(source *Source) { + source.Hosts = []string{kafkaHost} +} + +var tests = []struct { + name string + header string + data []string + exp [][]interface{} +}{ + { + name: "Flat", + header: "testdata/Flat.json", + data: []string{`{"first": "hello"}`}, + exp: [][]interface{}{{"hello"}}, + }, + { + name: "Tree", + header: "testdata/Tree.json", + data: []string{`{"protocol": "TCP", "port": 22, "client": "127.0.0.1", "server": "127.0.0.1", "metadata": {"suspicious": true, "region": "North America"}}`}, + exp: [][]interface{}{ + {"TCP", 22.0, "127.0.0.1", "127.0.0.1", true, "North America"}, + }, + }, +} + +func TestKafkaStaticSourceLocal(t *testing.T) { + t.Parallel() + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + t.Parallel() + + msgs := make([]kafka.Message, len(test.data)) + for i, rec := range test.data { + msgs[i] = kafka.Message{ + Topic: "test", + Partition: 0, + Offset: int64(i), + + Value: []byte(rec), + + Time: time.Now(), + } + } + + src := NewSource() + configureSourceTestFlags(src) + { + headerData, err := ioutil.ReadFile(test.header) + if err != nil { + t.Fatalf("reading header file: %v", err) + } + schema, paths, err := idk.ParseHeader(headerData) + if err != nil { + t.Fatalf("processing header: %v", err) + } + src.schema = schema + src.paths = paths + } + reader := &internal.KafkaTestReader{Queue: msgs} + src.reader = reader + + for _, exp := range test.exp { + rec, err := src.Record() + + if err != nil { + t.Fatalf("unexpected error getting record: %v", err) + } + if rec == nil { + t.Fatalf("should have a record") + } + + data := rec.Data() + if !reflect.DeepEqual(data, exp) { + t.Errorf("data mismatch exp/got:\n%+v\n%+v", exp, data) + if len(data) != len(exp) { + t.Fatalf("mismatched lengths exp/got %d/%d", len(exp), len(data)) + } + for j := range exp { + if !reflect.DeepEqual(exp[j], data[j]) { + t.Errorf("Mismatch at %d, exp/got\n%v of %[2]T\n%v of %[3]T", j, exp[j], data[j]) + } + } + } + } + }) + } +} + +// TestKafkaStaticSourceIntegration uses a real Kafka, and a static schema. +func TestKafkaStaticSourceIntegration(t *testing.T) { + t.Parallel() + + if testing.Short() { + t.Skip() + } + + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) + + key := fmt.Sprintf("%d", rnd.Int()) + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + t.Parallel() + + src := NewSource() + configureSourceTestFlags(src) + src.Topics = []string{"testKafkaStaticSourceIntegration" + test.name} + src.Group = "group0" + src.Header = test.header + err := src.Open() + if err != nil { + t.Fatalf("opening source: %v", err) + } + + addr := kafka.TCP(kafkaHost) + tCreateTopic(t, src.Topics[0], addr) + writer := &kafka.Writer{ + Addr: addr, + Topic: src.Topics[0], + Balancer: &kafka.Hash{}, + BatchTimeout: time.Nanosecond, + } + defer writer.Close() + + for j, record := range test.data { + tPutStringKafka(t, writer, key, record) + + rec, err := src.Record() + if err != nil { + t.Fatalf("unexpected error getting record: %v", err) + } + if rec == nil { + t.Fatalf("should have a record") + } + + data := rec.Data() + if !reflect.DeepEqual(data, test.exp[j]) { + t.Errorf("data mismatch exp/got:\n%+v\n%+v", test.exp[j], data) + if len(data) != len(test.exp[j]) { + t.Fatalf("mismatched lengths exp/got %d/%d", len(test.exp[j]), len(data)) + } + for k := range test.exp[j] { + if !reflect.DeepEqual(test.exp[j][k], data[k]) { + t.Errorf("Mismatch at %d, exp/got\n%v of %[2]T\n%v of %[3]T", k, test.exp[j][k], data[k]) + } + } + } + } + }) + } + +} + +func tCreateTopic(t *testing.T, topic string, addr net.Addr) { + t.Helper() + + err := internal.CreateKafkaTopic(topic, addr) + if err != nil { + t.Fatalf("creating kafka topic %q: %v", topic, err) + } +} + +func tPutStringKafka(t *testing.T, writer *kafka.Writer, key, value string) { + t.Helper() + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + err := internal.KafkaWriteWithBackoff(ctx, writer, t.Logf, 100*time.Millisecond, time.Second, kafka.Message{ + Key: []byte(key), + Value: []byte(value), + }) + if err != nil { + t.Fatalf("writing record to kafka: %v", err) + } +} + +func TestPathTable(t *testing.T) { + t.Parallel() + + cases := []struct { + name string + table idk.PathTable + allowMissingFields bool + in interface{} + out []interface{} + err string + }{ + { + name: "nil", + out: []interface{}{}, + }, + { + name: "Root", + table: idk.PathTable{ + {}, + }, + in: 1, + out: []interface{}{ + 1, + }, + }, + { + name: "Flat", + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + "y": 2, + }, + out: []interface{}{ + 1, + 2, + }, + }, + { + name: "Missing", + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + }, + err: "failed to lookup path [y]: element \"y\" at [] is missing", + }, + { + name: "Missing_Allowed", + allowMissingFields: true, + table: idk.PathTable{ + {"x"}, + {"y"}, + }, + in: map[string]interface{}{ + "x": 1, + }, + out: []interface{}{ + 1, + nil, + }, + }, + { + name: "Tree", + table: idk.PathTable{ + {"x", "y"}, + {"y", "z", "a"}, + }, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "y": map[string]interface{}{ + "z": map[string]interface{}{ + "a": "b", + }, + }, + }, + out: []interface{}{ + []interface{}{1, 2, 3}, + "b", + }, + }, + { + name: "TreeMissing", + table: idk.PathTable{ + {"x", "y"}, + {"y", "z", "b"}, + }, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "y": map[string]interface{}{ + "z": map[string]interface{}{ + "a": "b", + }, + }, + }, + err: "failed to lookup path [y z b]: element \"b\" at [y z] is missing", + }, + { + name: "TreeMissing_Allowed", + table: idk.PathTable{ + {"x", "y"}, + {"a", "b", "c"}, + }, + allowMissingFields: true, + in: map[string]interface{}{ + "x": map[string]interface{}{ + "y": []interface{}{1, 2, 3}, + "z": map[string]interface{}{ + "h": "?", + }, + }, + "a": map[string]interface{}{ + "c": "words", + }, + }, + out: []interface{}{ + []interface{}{1, 2, 3}, + nil, + }, + }, + { + name: "WrongNodeType", + table: idk.PathTable{ + {"x", "y"}, + }, + in: map[string]interface{}{ + "x": []interface{}{"z"}, + }, + err: "failed to lookup path [x y]: element at [x] is not an object", + }, + } + + for _, c := range cases { + c := c + t.Run(c.name, func(t *testing.T) { + t.Parallel() + out, err := c.table.Lookup(c.in, c.allowMissingFields) + if err != nil { + switch { + case c.err == "": + t.Errorf("unexpected error: %v", err) + case c.err != err.Error(): + t.Errorf("expected error %q but got %q", c.err, err.Error()) + } + } else { + switch { + case c.err != "": + t.Error("unexpected success") + case !reflect.DeepEqual(out, c.out): + t.Errorf("expected %v but got %v", c.out, out) + } + } + }) + } +} diff --git a/idk/kafka_static/testdata/Flat.json b/idk/kafka_static/testdata/Flat.json new file mode 100644 index 000000000..238df7620 --- /dev/null +++ b/idk/kafka_static/testdata/Flat.json @@ -0,0 +1,3 @@ +[ + {"name": "first", "path": ["first"], "type": "string"} +] \ No newline at end of file diff --git a/idk/kafka_static/testdata/Lookup.json b/idk/kafka_static/testdata/Lookup.json new file mode 100644 index 000000000..0c6a08218 --- /dev/null +++ b/idk/kafka_static/testdata/Lookup.json @@ -0,0 +1,16 @@ +[ + { + "name": "int", + "path": [ + "int" + ], + "type": "int" + }, + { + "name": "text", + "path": [ + "text" + ], + "type": "lookupText" + } +] diff --git a/idk/kafka_static/testdata/LookupDuplicate.json b/idk/kafka_static/testdata/LookupDuplicate.json new file mode 100644 index 000000000..af2ff56f5 --- /dev/null +++ b/idk/kafka_static/testdata/LookupDuplicate.json @@ -0,0 +1,23 @@ +[ + { + "name": "int", + "path": [ + "int" + ], + "type": "int" + }, + { + "name": "text", + "path": [ + "text" + ], + "type": "lookupText" + }, + { + "name": "text", + "path": [ + "text" + ], + "type": "lookupText" + } +] diff --git a/idk/kafka_static/testdata/LookupId.json b/idk/kafka_static/testdata/LookupId.json new file mode 100644 index 000000000..dcd5d57cd --- /dev/null +++ b/idk/kafka_static/testdata/LookupId.json @@ -0,0 +1,16 @@ +[ + { + "name": "int", + "path": [ + "int" + ], + "type": "int" + }, + { + "name": "id", + "path": [ + "text" + ], + "type": "lookupText" + } +] diff --git a/idk/kafka_static/testdata/TestFieldTypes.json b/idk/kafka_static/testdata/TestFieldTypes.json new file mode 100644 index 000000000..2dd92e66d --- /dev/null +++ b/idk/kafka_static/testdata/TestFieldTypes.json @@ -0,0 +1,53 @@ +[ + { + "name": "i", + "path": [ + "i" + ], + "type": "int" + }, + { + "name": "d", + "path": [ + "d" + ], + "type": "decimal", + "config": { + "Scale": 2 + } + }, + { + "name": "s", + "path": [ + "@s" + ], + "type": "string" + }, + { + "name": "st", + "path": [ + "@st" + ], + "type": "string", + "Config": { + "Quantum": "DH" + } + }, + { + "name": "rt", + "path": [ + "unixtime" + ], + "type": "recordTime", + "Config": { + "Unit": "s" + } + }, + { + "name": "e", + "path": [ + "e" + ], + "type": "lookupText" + } +] \ No newline at end of file diff --git a/idk/kafka_static/testdata/Tree.json b/idk/kafka_static/testdata/Tree.json new file mode 100644 index 000000000..76cd97f74 --- /dev/null +++ b/idk/kafka_static/testdata/Tree.json @@ -0,0 +1,8 @@ +[ + {"name": "protocol", "path": ["protocol"], "type": "string", "config": {"Mutex": true}}, + {"name": "port", "path": ["port"], "type": "int"}, + {"name": "client", "path": ["client"], "type": "string", "config": {"Mutex": true}}, + {"name": "server", "path": ["server"], "type": "string", "config": {"Mutex": true}}, + {"name": "suspicious", "path": ["metadata", "suspicious"], "type": "bool"}, + {"name": "region", "path": ["metadata", "region"], "type": "string", "config": {"Mutex": true}} +] \ No newline at end of file diff --git a/idk/kafkagen/cmd.go b/idk/kafkagen/cmd.go new file mode 100644 index 000000000..f2a069652 --- /dev/null +++ b/idk/kafkagen/cmd.go @@ -0,0 +1,176 @@ +package kafkagen + +import ( + "encoding/binary" + "fmt" + "io/ioutil" + "log" + "os" + + confluent "github.com/confluentinc/confluent-kafka-go/kafka" + liavro "github.com/linkedin/goavro/v2" + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/common" + "github.com/molecula/featurebase/v3/idk/kafka/csrc" + "github.com/pkg/errors" +) + +type Main struct { + idk.ConfluentCommand `flag:"!embed"` + SchemaFile string + Subject string + Topic string + DryRun bool + configMap *confluent.ConfigMap +} + +func NewMain() (*Main, error) { + var err error + m := &Main{ConfluentCommand: idk.ConfluentCommand{}} + m.SchemaFile = "bigschema.json" + m.Subject = "bigschema" + m.SchemaRegistryURL = "localhost:8081" + m.KafkaBootstrapServers = []string{"localhost:9092"} + m.Topic = "defaulttopic" + m.configMap, err = common.SetupConfluent(&m.ConfluentCommand) + return m, err +} + +func (m *Main) Run() (err error) { + if m.DryRun { + log.Printf("%+v\n", m) + return nil + } + + licodec, err := decodeSchema(m.SchemaFile) + if err != nil { + return errors.Wrap(err, "decoding schema") + } + schemaID, err := m.postSchema(m.SchemaFile, m.Subject) + if err != nil { + return errors.Wrap(err, "psting schema") + } + + fields := []string{"abc", "db", "user_id", "all_users", "has_deleted_date", "central_group", "custom_audiences", "desktop_boolean", "desktop_frequency", "desktop_recency", "product_boolean_historical_forestry_cravings_or_bugles", "ddd_category_total_current_rhinocerous_checking", "ddd_category_total_current_rhinocerous_thedog_cheetah", "survey1234", "days_since_last_logon", "elephant_added_for_account"} + + // make a bunch of data and insert it + records := [][]interface{}{ + {"2", "1", 159, map[string]interface{}{"boolean": true}, map[string]interface{}{"boolean": false}, map[string]interface{}{"string": "cgr"}, map[string]interface{}{"array": []string{"a", "b"}}, nil, map[string]interface{}{"int": 7}, nil, nil, map[string]interface{}{"float": 5.4}, nil, map[string]interface{}{"org.test.survey1234": "yes"}, map[string]interface{}{"float": 8.0}, nil}, + } + + //kakfa.SetupSasl(configMap *confluent.ConfigMap, SASLConfig SaslConfig) (err error) { + + p, err := confluent.NewProducer(m.configMap) + if err != nil { + fmt.Printf("Failed to create producer: %s\n", err) + os.Exit(1) + } + defer p.Close() + + doneChan := make(chan bool) + + go func() { + defer close(doneChan) + cnt := 0 + for e := range p.Events() { + switch ev := e.(type) { + case *confluent.Message: + m := ev + if m.TopicPartition.Error != nil { + fmt.Printf("Delivery failed: %v\n", m.TopicPartition.Error) + } + cnt += 1 + if cnt%10000 == 0 { + fmt.Printf("Delivered %v messages to topic %v\n", cnt, m.TopicPartition.Topic) + } + if cnt == len(records) { + return + } + default: + fmt.Printf("Ignored event: %s\n", ev) + } + } + }() + + for _, vals := range records { + rec, err := makeRecord(fields, vals) + if err != nil { + return errors.Wrap(err, "making record") + } + err = m.putRecordKafka(p, schemaID, licodec, "akey", rec) + if err != nil { + return errors.Wrap(err, "putting record") + } + } + <-doneChan //wait till all messages are acked + p.Flush(10 * 1000) + + return nil +} + +func (m *Main) putRecordKafka(p *confluent.Producer, schemaID int, schema *liavro.Codec, key string, record map[string]interface{}) error { + buf := make([]byte, 5, 1000) + buf[0] = 0 + binary.BigEndian.PutUint32(buf[1:], uint32(schemaID)) + buf, err := schema.BinaryFromNative(buf, record) + if err != nil { + return err + } + p.ProduceChannel() <- &confluent.Message{ + TopicPartition: confluent.TopicPartition{Topic: &m.Topic, Partition: confluent.PartitionAny}, + Key: []byte(key), + Value: buf, + } + return nil +} + +func readSchema(filename string) (string, error) { + bytes, err := ioutil.ReadFile(filename) + if err != nil { + return "", err + } + return string(bytes), nil +} + +func decodeSchema(filename string) (*liavro.Codec, error) { + s, err := readSchema(filename) + if err != nil { + return nil, errors.Wrap(err, "reading schema") + } + codec, err := liavro.NewCodec(s) + if err != nil { + return nil, err + } + return codec, nil +} + +func (m *Main) postSchema(schemaFile, subj string) (schemaID int, err error) { + var auth *csrc.BasicAuth + if m.SchemaRegistryUsername != "" { + auth = &csrc.BasicAuth{ + KafkaSchemaApiKey: m.SchemaRegistryUsername, + KafkaSchemaApiSecret: m.SchemaRegistryPassword, + } + } + schemaClient := csrc.NewClient("http://"+m.SchemaRegistryURL, nil, auth) + schemaStr, err := readSchema(schemaFile) + if err != nil { + return 0, errors.Wrap(err, "reading schema file") + } + resp, err := schemaClient.PostSubjects(subj, schemaStr) + if err != nil { + return 0, errors.Wrap(err, "posting schema") + } + return resp.ID, nil +} + +func makeRecord(fields []string, vals []interface{}) (map[string]interface{}, error) { + if len(fields) != len(vals) { + return nil, errors.Errorf("have %d fields and %d vals", len(fields), len(vals)) + } + ret := make(map[string]interface{}) + for i, field := range fields { + ret[field] = vals[i] + } + return ret, nil +} diff --git a/idk/kinesis/cmd.go b/idk/kinesis/cmd.go new file mode 100644 index 000000000..2e070675a --- /dev/null +++ b/idk/kinesis/cmd.go @@ -0,0 +1,49 @@ +package kinesis + +import ( + "time" + + "github.com/molecula/featurebase/v3/idk" + "github.com/pkg/errors" +) + +type Main struct { + idk.Main `flag:"!embed"` + Timeout time.Duration `help:"Time to wait for more records from Kinesis before flushing a batch. 0 to disable."` + Header string `help:"Path to the static schema, in JSON header format. May be a path on the local filesystem, or an S3 URI."` + AWSRegion string `help:"AWS Region. Alternatively, use environment variable AWS_REGION."` + AllowMissingFields bool `help:"Will proceed with ingest even if a field is missing from a record but specified in the JSON config file. Default false"` + StreamName string `help:"Name of AWS Kinesis stream to consume records from."` + OffsetsPath string `help:"Path where the offsets file will be written. May be a path on the local filesystem, or an S3 URI."` + AWSProfile string `help:"Name of AWS profile to use. Alternatively, use environment variable AWS_PROFILE."` +} + +func NewMain() *Main { + m := &Main{ + Main: *idk.NewMain(), + Timeout: time.Second, + } + m.Concurrency = 1 // only a concurrency of 1 is supported for the Kinesis IDK ingester + m.BatchSize = 20000 + m.OffsetMode = true + m.Main.Namespace = "ingester_kinesis" + m.Main.Pprof = "" // don't initialize pprof until we actually use it in tests + m.NewSource = func() (idk.Source, error) { + source := NewSource() + source.Log = m.Main.Log() + source.Timeout = m.Timeout + source.Header = m.Header + source.AWSRegion = m.AWSRegion + source.AllowMissingFields = m.AllowMissingFields + source.StreamName = m.StreamName + source.OffsetsPath = m.OffsetsPath + source.AWSProfile = m.AWSProfile + + err := source.Open() + if err != nil { + return nil, errors.Wrap(err, "opening source") + } + return source, nil + } + return m +} diff --git a/idk/kinesis/cmd_test.go b/idk/kinesis/cmd_test.go new file mode 100644 index 000000000..58e975956 --- /dev/null +++ b/idk/kinesis/cmd_test.go @@ -0,0 +1,12 @@ +package kinesis + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewMain(t *testing.T) { + m := NewMain() + assert.NotNil(t, m) +} diff --git a/idk/kinesis/reader.go b/idk/kinesis/reader.go new file mode 100644 index 000000000..7b1cfb369 --- /dev/null +++ b/idk/kinesis/reader.go @@ -0,0 +1,389 @@ +package kinesis + +import ( + "context" + "encoding/json" + "io" + "sync" + "sync/atomic" + "time" + + "golang.org/x/time/rate" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/service/kinesis" + "github.com/aws/aws-sdk-go/service/kinesis/kinesisiface" + "github.com/aws/aws-sdk-go/service/s3/s3iface" + "github.com/molecula/featurebase/v3/idk/internal" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +const ( + defaultGetRecordsBatchSize = 10000 + defaultGetRecordsQueriesPerSecondAtTip = 1 + defaultGetRecordsQueriesPerSecondBehindTip = 5 + + getRecordsErrorBackoff = 10 * time.Second + waitForActiveStreamBackoff = 5 * time.Second + waitForClosedShardBackoff = 1 * time.Second + + ShardStatusActive = "ACTIVE" + ShardStatusPending = "PENDING" + ShardStatusClosed = "CLOSED" +) + +// ShardRecord wraps a kinesis record including metadata about its shard and an IDK-local index +type ShardRecord struct { + ShardID string + Index uint64 + *kinesis.Record +} + +type StreamReader struct { + recordsChan chan ShardRecord + StreamReaderConfig + offsets *StreamOffsets + // keep track of what shards have been consumed to the end + shardStatus sync.Map + stopCh chan struct{} + processShardsMtx sync.Mutex +} + +type StreamReaderConfig struct { + log logger.Logger + streamName string + offsetsPath string + kinesisClient kinesisiface.KinesisAPI + s3client s3iface.S3API + getRecordsBatchSize int + getRecordsQueriesPerSecondAtTip int + getRecordsQueriesPerSecondBehindTip int +} + +func (r *StreamReader) Close() { + r.log.Infof("Shutting down stream reader") + close(r.stopCh) +} + +func (r *StreamReader) getShardIterator(shardID string) *string { + r.log.Infof("Getting iterator for shard %s", shardID) + shardIteratorInput := &kinesis.GetShardIteratorInput{ + // Shard Id is provided when making put record(s) request. + ShardId: aws.String(shardID), + ShardIteratorType: aws.String(kinesis.ShardIteratorTypeTrimHorizon), + StreamName: aws.String(r.streamName), + } + + if shardOffset, ok := r.offsets.Load(shardID); ok { + r.log.Infof("Shard %s will begin reading from sequence number %s", shardID, shardOffset.SequenceNumber) + shardIteratorInput.ShardIteratorType = aws.String(kinesis.ShardIteratorTypeAfterSequenceNumber) + shardIteratorInput.StartingSequenceNumber = &shardOffset.SequenceNumber + } + + // retrieve iterator + iteratorOutput, err := r.kinesisClient.GetShardIterator(shardIteratorInput) + if err != nil { + panic(errors.Wrap(err, "Failed to get shard iterator")) + } + return iteratorOutput.ShardIterator +} + +// loadRecordIndex reads the shard record index from the offsets file +// or returns a pointer initialized with a value of 0 if not found +func (r *StreamReader) loadRecordIndex(shardID string) *uint64 { + var idx uint64 + if shardOffset, ok := r.offsets.Load(shardID); ok { + atomic.StoreUint64(&idx, shardOffset.Index) + } + return &idx +} + +type shardReader struct { + *StreamReader + shardID string + shardIterator *string + recordIdx *uint64 + atTip bool + limiter *rate.Limiter +} + +func (r *StreamReader) newShardReader(shardID string) *shardReader { + return &shardReader{ + StreamReader: r, + shardID: shardID, + shardIterator: r.getShardIterator(shardID), + recordIdx: r.loadRecordIndex(shardID), + atTip: false, + limiter: rate.NewLimiter(rate.Limit(r.getRecordsQueriesPerSecondBehindTip), 1), + } +} + +// Start consumes records from a Kinesis shard indefinitely until the shard +// has been closed, at which point this method will return. +func (r *shardReader) start() { + r.log.Infof("Starting to get records for shard %s", r.shardID) + defer r.log.Infof("Stopped reading from shard %s", r.shardID) + + for { + select { + case <-r.stopCh: + return + default: + if err := r.getRecords(); err != nil { + r.log.Errorf("Backing off due to Kinesis GetRecords error: %v\n", err) + time.Sleep(getRecordsErrorBackoff) + } + } + // mark the shard as closed, so we can reflect its status in the offsets file once + // all records have been committed + if r.shardIterator == nil { + r.log.Infof("Shard %s has been closed", r.shardID) + return + } + } +} + +func (r *shardReader) getRecords() error { + if err := r.limiter.Wait(context.Background()); err != nil { + r.log.Warnf("Unexpected error waiting for shard reader limiter: %v", err) + } + // get records use shard iterator for making request + records, err := r.kinesisClient.GetRecords(&kinesis.GetRecordsInput{ + Limit: aws.Int64(int64(r.getRecordsBatchSize)), + ShardIterator: r.shardIterator, + }) + + if err != nil { + if aerr, ok := err.(awserr.Error); ok { + switch aerr.Code() { + case kinesis.ErrCodeExpiredIteratorException: + r.log.Warnf("Shard iterator expired for shard %s", r.shardID) + // obtain a new shard iterator from Kinesis + r.shardIterator = r.getShardIterator(r.shardID) + // retry calling GetRecords with new iterator + return nil + } + } + return err + } + + if len(records.Records) > 0 { + r.log.Debugf("Read %d records from shard %v", len(records.Records), r.shardID) + for _, d := range records.Records { + r.recordsChan <- ShardRecord{ShardID: r.shardID, Index: atomic.AddUint64(r.recordIdx, 1), Record: d} + } + } + + r.shardIterator = records.NextShardIterator + if records.NextShardIterator == nil { + return nil + } + + if *records.MillisBehindLatest == 0 { // at tip of queue + if !r.atTip { + r.log.Debugf("Caught up with tip of shard %s", r.shardID) + // we are caught up and can reduce the polling rate + r.limiter.SetLimit(rate.Limit(r.getRecordsQueriesPerSecondAtTip)) + r.atTip = true + } + } else { // behind tip of queue + if r.atTip { + r.log.Debugf("Fell behind tip of shard %s", r.shardID) + r.limiter.SetLimit(rate.Limit(r.getRecordsQueriesPerSecondBehindTip)) + r.atTip = false + } + } + return nil +} + +func ReadOffsets(cfg StreamReaderConfig) (*StreamOffsets, error) { + offsetsBytes, err := internal.ReadFileOrURL(cfg.offsetsPath, cfg.s3client) + if err != nil { + if err == internal.FileOrURLNotFound { + return &StreamOffsets{ + StreamName: cfg.streamName, + Shards: make(map[string]*ShardOffset), + }, nil + } + return nil, errors.Wrap(err, "failed to read path") + } + + var offsets StreamOffsets + if err := json.Unmarshal(offsetsBytes, &offsets); err != nil { + return nil, errors.Wrap(err, "failed to unmarshal offsets") + } + cfg.log.Infof("Successfully read offsets") + return &offsets, err +} + +func (r *StreamReader) isShardClosed(shardID string) bool { + // unknown shards (nil entry in status map) are expired and effectively closed + if status, found := r.shardStatus.Load(shardID); found && status != ShardStatusClosed { + return false + } + return true +} + +// CanReadFromShard returns true when both parent and adjacent shards have been closed +// if they exist +func (r *StreamReader) canReadFromShard(shard *kinesis.Shard) bool { + return (shard.ParentShardId == nil || r.isShardClosed(*shard.ParentShardId)) && + (shard.AdjacentParentShardId == nil || r.isShardClosed(*shard.AdjacentParentShardId)) +} + +func (r *StreamReader) startShardReader(shard *kinesis.Shard) { + for !r.canReadFromShard(shard) { + r.log.Debugf("Waiting for parent shards of %s to be closed", *shard.ShardId) + time.Sleep(waitForClosedShardBackoff) + } + r.shardStatus.Store(*shard.ShardId, ShardStatusActive) + reader := r.newShardReader(*shard.ShardId) + // Start returns when the shard has been closed + reader.start() + r.shardStatus.Store(*shard.ShardId, ShardStatusClosed) + + select { + case <-r.stopCh: + return + default: + r.log.Infof("Reprocessing shards due to close event") + if err := r.ProcessShards(); err != nil { + // cannot recover + panic("failed to reprocess shards after a close event") + } + } +} + +func (r *StreamReader) ProcessShards() error { + r.log.Infof("Processing shards for stream %s", r.streamName) + r.processShardsMtx.Lock() + defer r.processShardsMtx.Unlock() + + for { + streamOut, err := r.kinesisClient.DescribeStream( + &kinesis.DescribeStreamInput{StreamName: aws.String(r.streamName)}) + + if err != nil { + if aerr, ok := err.(awserr.Error); ok { + switch aerr.Code() { + case kinesis.ErrCodeResourceNotFoundException: + return errors.Wrap(err, "kinesis.DescribeStream stream not found") + } + } + r.log.Errorf("kinesis.DescribeStream failed with error %v", err) + return errors.Wrap(err, "calling kinesis.DescribeStream") + } + + if *streamOut.StreamDescription.StreamStatus == kinesis.StreamStatusActive { + shards := streamOut.StreamDescription.Shards + for _, shard := range shards { + shardID := *shard.ShardId + // process the new shard if we haven't seen it before, and set its status to pending + if _, exists := r.shardStatus.LoadOrStore(shardID, ShardStatusPending); !exists { + r.log.Infof("Found pending shard %s", *shard.ShardId) + go r.startShardReader(shard) + } + } + return nil + } + + r.log.Infof("Waiting for stream %s to become active", r.streamName) + time.Sleep(waitForActiveStreamBackoff) + } +} + +func NewStreamReader(cfg StreamReaderConfig) (*StreamReader, error) { + // initialize optional config if not set + if cfg.getRecordsBatchSize == 0 { + cfg.getRecordsBatchSize = defaultGetRecordsBatchSize + } + if cfg.getRecordsQueriesPerSecondAtTip == 0 { + cfg.getRecordsQueriesPerSecondAtTip = defaultGetRecordsQueriesPerSecondAtTip + } + if cfg.getRecordsQueriesPerSecondBehindTip == 0 { + cfg.getRecordsQueriesPerSecondBehindTip = defaultGetRecordsQueriesPerSecondBehindTip + } + + offsets, err := ReadOffsets(cfg) + if err != nil { + return nil, errors.Wrap(err, "failed to read offsets") + } + + return &StreamReader{ + recordsChan: make(chan ShardRecord, 100), + StreamReaderConfig: cfg, + offsets: offsets, + shardStatus: sync.Map{}, + stopCh: make(chan struct{}), + }, nil +} + +type ShardOffset struct { + ArrivalTime string `json:"arrival_time"` + CommittedTime string `json:"committed_time"` + Index uint64 `json:"index"` + SequenceNumber string `json:"sequence_number"` +} + +type StreamOffsets struct { + // synchronize updates/reads to the Shards map + sync.RWMutex + StreamName string `json:"stream_name"` + Shards map[string]*ShardOffset `json:"shards"` +} + +// Load returns the ShardOffset for the shard in a thread safe manner +func (o *StreamOffsets) Load(shardID string) (*ShardOffset, bool) { + o.RLock() + defer o.RUnlock() + v, ok := o.Shards[shardID] + return v, ok +} + +func (r *StreamReader) Start() error { + if err := r.ProcessShards(); err != nil { + return errors.Wrap(err, "failed to process shards") + } + return nil +} + +func (r *StreamReader) FetchMessage(ctx context.Context) (ShardRecord, error) { + if err := ctx.Err(); err != nil { + return ShardRecord{}, err + } + + select { + case record, ok := <-r.recordsChan: + if !ok { + return ShardRecord{}, io.EOF + } + return record, nil + + case <-ctx.Done(): + return ShardRecord{}, ctx.Err() + } +} + +func (r *StreamReader) CommitMessages(ctx context.Context, msgs ...ShardRecord) error { + r.log.Debugf("Commiting %d messages", len(msgs)) + now := time.Now().UTC().Format(time.RFC3339) + + r.offsets.Lock() + for _, record := range msgs { + r.offsets.Shards[record.ShardID] = &ShardOffset{ + ArrivalTime: (*record.ApproximateArrivalTimestamp).UTC().Format(time.RFC3339), + CommittedTime: now, + Index: atomic.LoadUint64(&record.Index), + SequenceNumber: *record.SequenceNumber, + } + } + r.offsets.Unlock() + + offsetsBytes, err := json.Marshal(r.offsets) + if err != nil { + return errors.Wrapf(err, "failed to marshal offsets") + } + return internal.WriteFileOrURL(r.offsetsPath, offsetsBytes, r.s3client) +} diff --git a/idk/kinesis/reader_test.go b/idk/kinesis/reader_test.go new file mode 100644 index 000000000..b4d55551b --- /dev/null +++ b/idk/kinesis/reader_test.go @@ -0,0 +1,406 @@ +package kinesis + +import ( + "context" + "fmt" + "io" + "os" + "strconv" + "strings" + "testing" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/kinesis" + "github.com/molecula/featurebase/v3/idk/idktest/mocks" + "github.com/molecula/featurebase/v3/logger" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +var ( + s3mock = &mocks.S3API{} + kinesisMock = &mocks.KinesisAPI{} +) + +func newMockedStreamReader(t *testing.T, offsetsPath string) *StreamReader { + cfg := StreamReaderConfig{ + log: logger.NopLogger, + streamName: "teststream", + offsetsPath: offsetsPath, + kinesisClient: kinesisMock, + s3client: s3mock, + } + reader, err := NewStreamReader(cfg) + if err != nil { + t.Fatalf("Unexpected error creating stream reader: %v", err) + } + + reader.getRecordsBatchSize = 2 + reader.getRecordsQueriesPerSecondBehindTip = 1 + reader.getRecordsQueriesPerSecondAtTip = 1 + return reader +} + +func TestNewKinesisReaderWithMissingOffsetsFile(t *testing.T) { + tmpDir := t.TempDir() + cfg := StreamReaderConfig{ + log: logger.NopLogger, + streamName: "teststream", + offsetsPath: fmt.Sprintf("%s/missing", tmpDir), + kinesisClient: kinesisMock, + s3client: s3mock, + } + reader, err := NewStreamReader(cfg) + assert.NoError(t, err) + assert.NotNil(t, reader) + assert.NotNil(t, reader.offsets) + assert.Empty(t, reader.offsets.Shards) +} + +func TestNewKinesisReaderWithInvalidOffsetsFile(t *testing.T) { + cfg := StreamReaderConfig{ + log: logger.NopLogger, + streamName: "teststream", + offsetsPath: "./testdata/invalid_offsets.json", + kinesisClient: kinesisMock, + s3client: s3mock, + } + reader, err := NewStreamReader(cfg) + assert.Error(t, err) + assert.Nil(t, reader) +} + +func TestNewKinesisReaderWithExistingOffsets(t *testing.T) { + tmpDir := t.TempDir() + offsets := fmt.Sprintf("%s/offsets.json", tmpDir) + if err := copyFile(offsets, "./testdata/offsets.json"); err != nil { + t.Fatal("failed to copy offsets to temp directory") + } + + cfg := StreamReaderConfig{ + log: logger.NopLogger, + streamName: "teststream", + offsetsPath: offsets, + kinesisClient: kinesisMock, + s3client: s3mock, + } + reader, err := NewStreamReader(cfg) + assert.NoError(t, err) + assert.NotNil(t, reader) + + shardOffset, found := reader.offsets.Load("shardId-000000000000") + assert.True(t, found) + assert.NotNil(t, shardOffset) + assert.Equal(t, "49626031806177636477557067721327867885693021124781146130", shardOffset.SequenceNumber) + assert.EqualValues(t, shardOffset.Index, 1) + + shardOffset, found = reader.offsets.Load("shardId-000000000001") + assert.True(t, found) + assert.NotNil(t, shardOffset) + assert.Equal(t, "49626031806199937222755598499219162069555906398413389858", shardOffset.SequenceNumber) + assert.EqualValues(t, shardOffset.Index, 2) +} + +func shardName(shardIDx int) string { + return fmt.Sprintf("shardId-00000000000%d", shardIDx) +} + +func shardIterator(shardIDx int) string { + return fmt.Sprintf("%s-%d", shardName(shardIDx), time.Now().UnixNano()) +} + +func TestStreamReaderStartFetchCommitWithoutOffsets(t *testing.T) { + tmpDir := t.TempDir() + reader := newMockedStreamReader(t, fmt.Sprintf("%s/offsets.json", tmpDir)) + + describeStreamOut := &kinesis.DescribeStreamOutput{ + StreamDescription: &kinesis.StreamDescription{ + StreamStatus: aws.String(kinesis.StreamStatusActive), + }, + } + + const testShardCount = 2 + for i := 0; i < testShardCount; i++ { + describeStreamOut.StreamDescription.Shards = append(describeStreamOut.StreamDescription.Shards, + &kinesis.Shard{ShardId: aws.String(shardName(i))}) + } + + kinesisMock.On("DescribeStream", + mock.MatchedBy(func(input *kinesis.DescribeStreamInput) bool { + return *input.StreamName == reader.streamName + }), + ).Return(describeStreamOut, nil) + + for i := 0; i < testShardCount; i++ { + c := i + getShardIteratorOutput := &kinesis.GetShardIteratorOutput{ShardIterator: aws.String(shardIterator(c))} + kinesisMock.On("GetShardIterator", + mock.MatchedBy(func(input *kinesis.GetShardIteratorInput) bool { + return *input.StreamName == reader.streamName && *input.ShardId == shardName(c) && + *input.ShardIteratorType == kinesis.ShardIteratorTypeTrimHorizon + }), + ).Return(getShardIteratorOutput, nil) + + getRecordsOutput := &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String("1"), Data: []byte("deadbeef"), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(100), + NextShardIterator: aws.String(shardIterator(c)), + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return strings.HasPrefix(*input.ShardIterator, shardName(c)) + }), + ).Return(getRecordsOutput, nil) + } + + err := reader.Start() + assert.Nil(t, err) + + var records []ShardRecord + for i := 0; i < testShardCount; i++ { + rec, err := reader.FetchMessage(context.Background()) + assert.Nil(t, err) + assert.Equal(t, rec.SequenceNumber, aws.String("1")) + records = append(records, rec) + } + assert.Empty(t, reader.offsets.Shards) + + err = reader.CommitMessages(context.Background(), records...) + assert.Nil(t, err) + + assert.Len(t, reader.offsets.Shards, 2) + for i := 0; i < testShardCount; i++ { + shardOffset, exists := reader.offsets.Load(shardName(i)) + assert.True(t, exists) + assert.EqualValues(t, shardOffset.Index, 1) + } + defer reader.Close() +} + +func copyFile(dst, src string) error { + to, err := os.Create(dst) + if err != nil { + return err + } + defer to.Close() + + from, err := os.Open(src) + if err != nil { + return err + } + defer from.Close() + + _, err = io.Copy(to, from) + if err != nil { + return err + } + return nil +} + +func TestStreamReaderStartFetchCommitFromExistingOffsets(t *testing.T) { + tmpDir := t.TempDir() + offsets := fmt.Sprintf("%s/offsets.json", tmpDir) + if err := copyFile(offsets, "./testdata/offsets.json"); err != nil { + t.Fatal("failed to copy offsets to temp directory") + } + + reader := newMockedStreamReader(t, offsets) + + describeStreamOut := &kinesis.DescribeStreamOutput{ + StreamDescription: &kinesis.StreamDescription{ + StreamStatus: aws.String(kinesis.StreamStatusActive), + }, + } + + const testShardCount = 2 + for i := 0; i < testShardCount; i++ { + describeStreamOut.StreamDescription.Shards = append(describeStreamOut.StreamDescription.Shards, + &kinesis.Shard{ShardId: aws.String(shardName(i))}) + } + + kinesisMock.On("DescribeStream", + mock.MatchedBy(func(input *kinesis.DescribeStreamInput) bool { + return *input.StreamName == reader.streamName + }), + ).Return(describeStreamOut, nil) + + for i := 0; i < testShardCount; i++ { + c := i + getShardIteratorOutput := &kinesis.GetShardIteratorOutput{ShardIterator: aws.String(shardIterator(c))} + kinesisMock.On("GetShardIterator", + mock.MatchedBy(func(input *kinesis.GetShardIteratorInput) bool { + return *input.StreamName == reader.streamName && *input.ShardId == shardName(c) && + *input.ShardIteratorType == kinesis.ShardIteratorTypeAfterSequenceNumber + }), + ).Return(getShardIteratorOutput, nil) + + getRecordsOutput := &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String("1"), Data: []byte("deadbeef"), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(100), + NextShardIterator: aws.String(shardIterator(c)), + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return strings.HasPrefix(*input.ShardIterator, shardName(c)) + }), + ).Return(getRecordsOutput, nil) + } + + err := reader.Start() + assert.Nil(t, err) + + var records []ShardRecord + for i := 0; i < testShardCount; i++ { + rec, err := reader.FetchMessage(context.Background()) + assert.Nil(t, err) + assert.Equal(t, rec.SequenceNumber, aws.String("1")) + records = append(records, rec) + } + assert.Len(t, reader.offsets.Shards, 2) + for i := 0; i < testShardCount; i++ { + shardOffset, exists := reader.offsets.Load(shardName(i)) + assert.True(t, exists) + assert.EqualValues(t, shardOffset.Index, i+1) + } + + err = reader.CommitMessages(context.Background(), records...) + assert.Nil(t, err) + + assert.Len(t, reader.offsets.Shards, 2) + for i := 0; i < testShardCount; i++ { + shardOffset, exists := reader.offsets.Load(shardName(i)) + assert.True(t, exists) + assert.EqualValues(t, shardOffset.Index, i+2) + } + defer reader.Close() +} + +func TestStreamOrderlyReadsAfterResharding(t *testing.T) { + s3mock = &mocks.S3API{} + kinesisMock = &mocks.KinesisAPI{} + + tmpDir := t.TempDir() + + reader := newMockedStreamReader(t, fmt.Sprintf("%s/offsets.json", tmpDir)) + defer reader.Close() + + describeStreamOut := &kinesis.DescribeStreamOutput{ + StreamDescription: &kinesis.StreamDescription{ + StreamStatus: aws.String(kinesis.StreamStatusActive), + }, + } + describeStreamOut.StreamDescription.Shards = []*kinesis.Shard{{ShardId: aws.String(shardName(0))}} + kinesisMock.On("DescribeStream", + mock.MatchedBy(func(input *kinesis.DescribeStreamInput) bool { + return *input.StreamName == reader.streamName + }), + ).Return(describeStreamOut, nil).Once() + + getShardIteratorOutput := &kinesis.GetShardIteratorOutput{ShardIterator: aws.String(shardIterator(0))} + kinesisMock.On("GetShardIterator", + mock.MatchedBy(func(input *kinesis.GetShardIteratorInput) bool { + return *input.StreamName == reader.streamName && *input.ShardId == shardName(0) && + *input.ShardIteratorType == kinesis.ShardIteratorTypeTrimHorizon + }), + ).Return(getShardIteratorOutput, nil).Once() + + const recordsBeforeClose = 2 + for i := 1; i <= recordsBeforeClose; i++ { + c := strconv.Itoa(i) + getRecordsOutput := &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String(c), Data: []byte(c), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(100), + NextShardIterator: aws.String(shardIterator(0)), + } + // last record signals the shard is closed + if i == recordsBeforeClose { + getRecordsOutput.NextShardIterator = nil + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return strings.HasPrefix(*input.ShardIterator, shardName(0)) + }), + ).After(time.Second).Return(getRecordsOutput, nil).Once() + } + + getRecordsOutput := &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String("1"), Data: []byte("1"), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(100), + NextShardIterator: aws.String(shardIterator(0)), + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return strings.HasPrefix(*input.ShardIterator, shardName(0)) + }), + ).After(time.Second).Return(getRecordsOutput, nil).Once() + + describeCalls := 2 + for i := 1; i <= describeCalls; i++ { + // stream goes into Updating status + describeStreamOut = &kinesis.DescribeStreamOutput{ + StreamDescription: &kinesis.StreamDescription{ + StreamStatus: aws.String(kinesis.StreamStatusUpdating), + Shards: []*kinesis.Shard{{ShardId: aws.String(shardName(0))}}, + }, + } + // last call transitions stream to active and adds child shard + if i == describeCalls { + describeStreamOut.StreamDescription.StreamStatus = aws.String(kinesis.StreamStatusActive) + describeStreamOut.StreamDescription.Shards = append(describeStreamOut.StreamDescription.Shards, + &kinesis.Shard{ShardId: aws.String(shardName(1)), ParentShardId: aws.String(shardName(0))}) + } + + kinesisMock.On("DescribeStream", + mock.MatchedBy(func(input *kinesis.DescribeStreamInput) bool { + return *input.StreamName == reader.streamName + }), + ).Return(describeStreamOut, nil).Once() + } + + getShardIteratorOutput = &kinesis.GetShardIteratorOutput{ShardIterator: aws.String(shardIterator(1))} + kinesisMock.On("GetShardIterator", + mock.MatchedBy(func(input *kinesis.GetShardIteratorInput) bool { + return *input.StreamName == reader.streamName && *input.ShardId == shardName(1) && + *input.ShardIteratorType == kinesis.ShardIteratorTypeTrimHorizon + }), + ).Return(getShardIteratorOutput, nil).Once() + + getRecordsOutput = &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String("1"), Data: []byte("1"), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(0), + NextShardIterator: aws.String(shardIterator(1)), + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return strings.HasPrefix(*input.ShardIterator, shardName(1)) + }), + ).Return(getRecordsOutput, nil).Once() + + err := reader.Start() + assert.Nil(t, err) + + for i := 1; i <= recordsBeforeClose; i++ { + rec, err := reader.FetchMessage(context.Background()) + assert.Nil(t, err) + assert.Equal(t, strconv.Itoa(i), *rec.SequenceNumber) + assert.Equal(t, rec.ShardID, shardName(0)) + } + + rec, err := reader.FetchMessage(context.Background()) + assert.Nil(t, err) + assert.Equal(t, "1", *rec.SequenceNumber) + assert.Equal(t, rec.ShardID, shardName(1)) + +} diff --git a/idk/kinesis/source.go b/idk/kinesis/source.go new file mode 100644 index 000000000..4d5631b83 --- /dev/null +++ b/idk/kinesis/source.go @@ -0,0 +1,242 @@ +package kinesis + +import ( + "context" + "encoding/json" + "fmt" + "io" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/kinesis" + "github.com/aws/aws-sdk-go/service/kinesis/kinesisiface" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/idk/internal" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +// Source implements the idk.Source interface using kafka as a data +// source. It is not threadsafe! Due to the way Kafka clients work, to +// achieve concurrency, create multiple Sources. +type Source struct { + Log logger.Logger + Timeout time.Duration + Header string + AWSRegion string + AWSProfile string + + AllowMissingFields bool + + StreamName string + OffsetsPath string + + schema []idk.Field + paths idk.PathTable + + session *session.Session + reader *StreamReader + + s3client s3iface.S3API + kinesisClient kinesisiface.KinesisAPI + + spoolBase uint64 + spool []ShardRecord +} + +// NewSource gets a new Source +func NewSource() *Source { + src := &Source{ + StreamName: "example", + Log: logger.NopLogger, + } + + return src +} + +// Record returns the value of the next kinesis message. The same Record +// object may be used by successive calls to Record, so it should not +// be retained. +func (s *Source) Record() (idk.Record, error) { + msg, err := s.fetch() + switch err { + case nil: + case io.EOF: + return nil, io.EOF + case context.DeadlineExceeded: + return nil, idk.ErrFlush + default: + return nil, errors.Wrap(err, "failed to fetch record from Kinesis") + } + + data, err := s.decodeMessage(msg.Data) + if err != nil { + return nil, errors.Wrap(err, "decoding message") + } + + s.spool = append(s.spool, msg) + + return &Record{ + src: s, + shardID: msg.ShardID, + sequenceNumber: *msg.SequenceNumber, + idx: s.spoolBase + uint64(len(s.spool)), + data: data, + }, err +} + +func (s *Source) fetch() (ShardRecord, error) { + ctx := context.Background() + if s.Timeout != 0 { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, s.Timeout) + defer cancel() + } + + return s.reader.FetchMessage(ctx) +} + +func (s *Source) decodeMessage(buf []byte) ([]interface{}, error) { + message := map[string]interface{}{} + err := json.Unmarshal(buf, &message) + if err != nil { + jsonError, ok := err.(*json.SyntaxError) + if ok { + return nil, errors.Wrapf(err, "unmarshaling kafka message at character offset %v: %s", jsonError.Offset, string(buf)) + } else { + return nil, errors.Wrapf(err, "unmarshaling kafka message at unknown character offset: %s", string(buf)) + } + } + + return s.paths.Lookup(message, s.AllowMissingFields) +} + +func (s *Source) Schema() []idk.Field { + return s.schema +} + +type Record struct { + src *Source + shardID string + sequenceNumber string + idx uint64 + data []interface{} +} + +func (r *Record) StreamOffset() (string, uint64) { + return fmt.Sprintf("%s:%s", r.src.StreamName, r.shardID), r.idx +} + +var _ idk.OffsetStreamRecord = &Record{} + +func (r *Record) Commit(ctx context.Context) error { + idx, base := r.idx, r.src.spoolBase + if idx < base { + return errors.New("cannot commit a record that has already been committed") + } + + section, remaining := r.src.spool[:idx-base], r.src.spool[idx-base:] + err := r.src.reader.CommitMessages(ctx, section...) + if err != nil { + return errors.Wrap(err, "failed to commit messages") + } + + r.src.spool = remaining + r.src.spoolBase = idx + + return nil +} + +func (r *Record) Data() []interface{} { + return r.data +} + +func (s *Source) initAWS() error { + s.Log.Infof("Initializing AWS session") + config := &aws.Config{ + // retry on ephemeral AWS errors + Retryer: client.DefaultRetryer{NumMaxRetries: 10}, + } + if len(s.AWSProfile) > 0 { + s.Log.Infof("Overriding default AWS profile %s", s.AWSProfile) + config.Credentials = credentials.NewSharedCredentials("", s.AWSProfile) + } + + if len(s.AWSRegion) > 0 { + s.Log.Infof("Overriding default AWS region: %s", s.AWSRegion) + config.Region = aws.String(s.AWSRegion) + } + sess, err := session.NewSession(config) + if err != nil { + return errors.Wrap(err, "creating AWS session") + } + s.session = sess + s.s3client = s3.New(sess) + s.kinesisClient = kinesis.New(sess) + return nil +} + +// Open initializes the Kinesis source. +func (s *Source) Open() error { + // allow mocking of AWS dependencies in unit tests + if s.s3client == nil || s.kinesisClient == nil { + if err := s.initAWS(); err != nil { + return err + } + } + + if len(s.Header) == 0 { + return errors.New("missing required header file") + } + + if len(s.OffsetsPath) == 0 { + return errors.New("missing required offsets-path") + } + + { + headerData, err := internal.ReadFileOrURL(s.Header, s.s3client) + if err != nil { + return errors.Wrap(err, "reading header file") + } + + schema, paths, err := idk.ParseHeader(headerData) + if err != nil { + return errors.Wrap(err, "processing header") + } + s.schema = schema + s.paths = paths + } + + if len(s.StreamName) == 0 { + return errors.New("Missing required stream name parameter") + } + + var err error + s.reader, err = NewStreamReader(StreamReaderConfig{ + log: s.Log, + streamName: s.StreamName, + offsetsPath: s.OffsetsPath, + kinesisClient: s.kinesisClient, + s3client: s.s3client, + }) + if err != nil { + return errors.Wrap(err, "failed to start stream reader") + } + + if err := s.reader.Start(); err != nil { + return errors.Wrap(err, "failed to start stream reader") + } + return err +} + +// Close closes the underlying Kinesis consumer. +func (s *Source) Close() error { + s.reader.Close() + return nil +} diff --git a/idk/kinesis/source_test.go b/idk/kinesis/source_test.go new file mode 100644 index 000000000..7e7d7661b --- /dev/null +++ b/idk/kinesis/source_test.go @@ -0,0 +1,78 @@ +package kinesis + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/kinesis" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +func TestSource(t *testing.T) { + tmpDir := t.TempDir() + src := NewSource() + assert.NotNil(t, src) + + const testStreamName = "teststream" + + src.kinesisClient = kinesisMock + src.s3client = s3mock + src.StreamName = testStreamName + src.Header = "./testdata/header.json" + src.OffsetsPath = fmt.Sprintf("%s/offsets.json", tmpDir) + + describeStreamOut := &kinesis.DescribeStreamOutput{ + StreamDescription: &kinesis.StreamDescription{ + StreamStatus: aws.String(kinesis.StreamStatusActive), + Shards: []*kinesis.Shard{{ShardId: aws.String("shard0")}}, + }, + } + kinesisMock.On("DescribeStream", + mock.MatchedBy(func(input *kinesis.DescribeStreamInput) bool { + return *input.StreamName == testStreamName + }), + ).Return(describeStreamOut, nil) + + getShardIteratorOutput := &kinesis.GetShardIteratorOutput{ShardIterator: aws.String("iter")} + kinesisMock.On("GetShardIterator", + mock.MatchedBy(func(input *kinesis.GetShardIteratorInput) bool { + return *input.StreamName == testStreamName && *input.ShardId == "shard0" + }), + ).Return(getShardIteratorOutput, nil) + + getRecordsOutput := &kinesis.GetRecordsOutput{ + Records: []*kinesis.Record{ + {SequenceNumber: aws.String("1"), Data: []byte("{ \"language\": 0, \"project_id\": 2 }"), ApproximateArrivalTimestamp: aws.Time(time.Now().UTC())}, + }, + MillisBehindLatest: aws.Int64(100), + NextShardIterator: nil, + } + kinesisMock.On("GetRecords", + mock.MatchedBy(func(input *kinesis.GetRecordsInput) bool { + return true + }), + ).Return(getRecordsOutput, nil) + + err := src.Open() + assert.NoError(t, err) + + rec, err := src.Record() + assert.NoError(t, err) + assert.NotNil(t, rec, err) + assert.NotNil(t, rec.Data()) + + err = rec.Commit(context.Background()) + assert.NoError(t, err) + + defer src.Close() +} + +func TestInitAWS(t *testing.T) { + src := NewSource() + err := src.initAWS() + assert.NoError(t, err) +} diff --git a/idk/kinesis/testdata/header.json b/idk/kinesis/testdata/header.json new file mode 100644 index 000000000..58177d35b --- /dev/null +++ b/idk/kinesis/testdata/header.json @@ -0,0 +1,22 @@ +[ + { + "name": "language", + "path": [ + "language" + ], + "type": "id", + "config": { + "Mutex": false + } + }, + { + "name": "project_id", + "path": [ + "project_id" + ], + "type": "id", + "config": { + "Mutex": false + } + } +] \ No newline at end of file diff --git a/idk/kinesis/testdata/invalid_offsets.json b/idk/kinesis/testdata/invalid_offsets.json new file mode 100644 index 000000000..1a35ca047 --- /dev/null +++ b/idk/kinesis/testdata/invalid_offsets.json @@ -0,0 +1 @@ +invalid contents \ No newline at end of file diff --git a/idk/kinesis/testdata/offsets.json b/idk/kinesis/testdata/offsets.json new file mode 100644 index 000000000..d105a8fef --- /dev/null +++ b/idk/kinesis/testdata/offsets.json @@ -0,0 +1,17 @@ +{ + "stream_name": "language", + "shards": { + "shardId-000000000000": { + "arrival_time": "2022-01-24T18:41:40Z", + "committed_time": "2022-01-24T23:07:11Z", + "index": 1, + "sequence_number": "49626031806177636477557067721327867885693021124781146130" + }, + "shardId-000000000001": { + "arrival_time": "2022-01-24T18:45:15Z", + "committed_time": "2022-01-24T23:07:11Z", + "index": 2, + "sequence_number": "49626031806199937222755598499219162069555906398413389858" + } + } +} \ No newline at end of file diff --git a/idk/metrics.go b/idk/metrics.go new file mode 100644 index 000000000..e7d0feabe --- /dev/null +++ b/idk/metrics.go @@ -0,0 +1,8 @@ +package idk + +const ( + MetricDeleterRowsAdded = "deleter_rows_added_total" + MetricIngesterRowsAdded = "ingester_rows_added_total" + MetricIngesterSchemaChanges = "ingester_schema_changes_total" + MetricCommittedRecords = "committed_records" +) diff --git a/idk/pilosa-sec-test.conf b/idk/pilosa-sec-test.conf new file mode 100644 index 000000000..b222b8ad4 --- /dev/null +++ b/idk/pilosa-sec-test.conf @@ -0,0 +1,27 @@ +bind = "https://localhost:10111" +bind-grpc = "localhost:20111" +data-dir = "./pilosa-sec-data-idk" +verbose = false + +[cluster] + coordinator = true + +[gossip] + port = "14010" + +[metric] + diagnostics = false + host = "" + poll-interval = "0s" + service = "none" + +[tls] + ca-certificate = "/Users/jaffee/idk/testenv/certs/ca.crt" + certificate = "/Users/jaffee/idk/testenv/certs/localhost.crt" + key = "/Users/jaffee/idk/testenv/certs/localhost.key" + skip-verify = false + enable-client-verification = true + +[tracing] + sampler-type = "off" + diff --git a/idk/postgres.go b/idk/postgres.go new file mode 100644 index 000000000..9e57449c5 --- /dev/null +++ b/idk/postgres.go @@ -0,0 +1,337 @@ +package idk + +import ( + "context" + "database/sql" + "fmt" + "strings" + "time" + + _ "github.com/lib/pq" + "github.com/pkg/errors" + + "github.com/molecula/featurebase/v3/logger" +) + +const IDColumn = "id" + +type PostgresClient struct { + DSN string + TableName string + ColumnNames []string + client *sql.DB + log logger.Logger +} + +// NewPostgresClient creates a Lookup client for a Postgres backend. +// It creates the corresponding Postgres table if necessary. +func NewPostgresClient(DSN, TableName string, log logger.Logger) (*PostgresClient, error) { + c := PostgresClient{ + DSN: DSN, + log: log, + } + + db, err := sql.Open("postgres", DSN) + if err != nil { + return &c, errors.Wrap(err, "creating Postgres client") + } + c.client = db + c.TableName = TableName + + // Create table with no data columns once, because + // postgres has a problem with concurrent identical table creates. + err = c.createTableWithTextColumns([]string{}) + if err != nil { + return &c, errors.Wrap(err, "initializing Postgres table") + } + + return &c, nil +} + +// selectLookupFieldNames returns the list of fields from the Source's schema +// which are of type LookupTextField. +func selectLookupFieldNames(source Source) []string { + columnNames := make([]string, 0) + for _, field := range source.Schema() { + // NOTE support other data types here; columnNames as map[fieldType]string instead of []string + switch field.(type) { + case LookupTextField: + columnNames = append(columnNames, field.Name()) + default: + continue + } + } + return columnNames +} + +// Setup primarily serves to add text columns to the Postgres table. +// Column names are not known until ingester.Run starts, +// so columns are created separately from table creation. +func (c *PostgresClient) Setup(columnNames []string) error { + for _, name := range columnNames { + if name == IDColumn { + return errors.Errorf("field name '%s' not allowed for LookupText fields", IDColumn) + } + } + c.ColumnNames = make([]string, 0, len(columnNames)+1) + c.ColumnNames = append(c.ColumnNames, IDColumn) + c.ColumnNames = append(c.ColumnNames, columnNames...) + + return c.addTextColumns(c.ColumnNames[1:]) +} + +// addTextColumns adds columns of type "text NOT NULL" to the Postgres table, with the specified names. +func (c *PostgresClient) addTextColumns(columnNames []string) error { + if len(columnNames) == 0 { + return nil + } + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + tx, err := c.client.BeginTx(ctx, nil) + if err != nil { + return errors.Wrap(err, "creating transaction") + } + + var committed bool + defer func() { + if !committed { + if err := tx.Rollback(); err != nil { + panic(err) + } + } + }() + + columnStrings := make([]string, 0) + for _, fname := range columnNames { + // NOTE support other data types here + columnStrings = append(columnStrings, fmt.Sprintf(`ADD COLUMN IF NOT EXISTS "%s" text NOT NULL`, fname)) + } + sqlString := fmt.Sprintf(`ALTER TABLE "%s" %s`, + c.TableName, + strings.Join(columnStrings, ", "), + ) + if _, err := tx.Exec(sqlString); err != nil { + return errors.Wrapf(err, "altering postgres table %s", c.TableName) + } + + if err := tx.Commit(); err != nil { + return errors.Wrap(err, "commiting postgres table alter") + } + c.log.Debugf("added postgres columns to table '%s'", c.TableName) + + committed = true + return nil +} + +// createTableWithTextColumns creates a table with: +// - the name specified in the constructor, +// - an id column with hardcoded name "id", of type "bigint PRIMARY KEY", +// - any number of data columns of type "text NOT NULL" with the specified names. +func (c *PostgresClient) createTableWithTextColumns(columnNames []string) error { + var ok bool + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + tx, err := c.client.BeginTx(ctx, nil) + if err != nil { + return errors.Wrap(err, "creating transaction") + } + + defer func() { + if !ok { + rerr := tx.Rollback() + if rerr != nil { + panic(rerr) + } + } else { + c.log.Debugf("created postgres table '%s'", c.TableName) + } + }() + + // NOTE support string IDs in postgres here + + columnStrings := make([]string, 0) + columnStrings = append(columnStrings, IDColumn+" bigint PRIMARY KEY") + for _, fname := range columnNames { + // NOTE support other data types here + columnStrings = append(columnStrings, fmt.Sprintf(`"%s" text NOT NULL`, fname)) + } + sqlString := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS "%s" (%s)`, + c.TableName, + strings.Join(columnStrings, ", "), + ) + _, err = tx.Exec(sqlString) + if err != nil { + return errors.Wrapf(err, "creating postgres table %s", c.TableName) + } + + err = tx.Commit() + if err != nil { + return errors.Wrap(err, "commiting postgres table create") + } + ok = true + return nil +} + +func (c *PostgresClient) Close() error { + return c.client.Close() +} + +type LookupBatcher interface { + AddFullRow([]interface{}) error + Len() int + Import() error +} + +var _ LookupBatcher = &NopLookupBatcher{} +var _ LookupBatcher = &PostgresUpsertBatcher{} + +// NopLookupBatcher is a no-op implementation of a LookupBatcher. +type NopLookupBatcher struct{} + +func (n *NopLookupBatcher) Len() int { return 0 } +func (n *NopLookupBatcher) AddFullRow(row []interface{}) error { return nil } +func (n *NopLookupBatcher) Import() error { return nil } + +// PostgresUpsertBatcher does bulk imports using an INSERT ... ON CONFLICT statement, +// to handle duplicate-key updates. +type PostgresUpsertBatcher struct { + client *sql.DB + batchSize int + tableName string + columnNames []string + + rowCount int + valSlice []interface{} // 1D slice of all rows' values, for variadic Exec + startTime time.Time + + // static strings for building SQL + columnNamesAsString string // `"column-1", "column2"` + conflictString string // `"column-1"=EXCLUDED."column-1", "column2"=EXCLUDED."column2"` + rowPlaceholders []string // [`($1,$2)` `($3,$4)` `($5,$6)` `($7,$8)` `($9,$10)`] (each of the batchSize elements has len(ColumnNames) placeholders) + + log logger.Logger +} + +// NewPostgresUpsertBatcher creates a LookupBatcher, with a Postgres backend, +// which uses the Upsert method (see the Import function for details) to batch imports. +func NewPostgresUpsertBatcher(client *PostgresClient, batchSize int) *PostgresUpsertBatcher { + pg := &PostgresUpsertBatcher{ + client: client.client, + batchSize: batchSize, + tableName: client.TableName, + columnNames: client.ColumnNames, + log: client.log, + } + pg.valSlice = make([]interface{}, 0, pg.batchSize*len(pg.columnNames)) + + quotedNames := make([]string, 0, len(pg.columnNames)) + for _, name := range pg.columnNames { + quotedNames = append(quotedNames, `"`+name+`"`) + } + pg.columnNamesAsString = strings.Join(quotedNames, ", ") + + conflictStrings := []string{} + for _, name := range pg.columnNames { + conflictString := fmt.Sprintf(`"%s"=EXCLUDED."%s"`, name, name) + conflictStrings = append(conflictStrings, conflictString) + } + pg.conflictString = strings.Join(conflictStrings, ", ") + + pg.rowPlaceholders = make([]string, 0, pg.batchSize) + placeholders := make([]string, len(pg.columnNames)) + // placeholders = [`$1` `$2`] + // pg.rowPlaceHolders = [`($1, $2)` `($3, $4)` ...] + for i := 0; i < pg.batchSize; i++ { + for j := 0; j < len(pg.columnNames); j++ { + placeholders[j] = fmt.Sprintf("$%d", i*len(pg.columnNames)+j+1) + } + pg.rowPlaceholders = append(pg.rowPlaceholders, "("+strings.Join(placeholders, ",")+")") + } + + return pg +} + +// Len returns the number of rows in the current batch, that have yet to be imported +// to the Postgres backend. +func (pg *PostgresUpsertBatcher) Len() int { + return pg.rowCount +} + +// AddFullRow adds a row to the batch, which includes data for each column in the +// table. If the addition causes the batch to reach the predefined batch size, +// an import occurs. +// An alternative might be AddPartialRow, which accepts data for only some +// of the columns in the table. An AddPartialRow function would be able to handle +// any number of missing Lookup fields in received messages; AddFullRow can not. +func (pg *PostgresUpsertBatcher) AddFullRow(row []interface{}) error { + if pg.rowCount == 0 { + pg.startTime = time.Now() + } + + pg.valSlice = append(pg.valSlice, row...) + pg.rowCount++ + + if pg.rowCount == pg.batchSize { + err := pg.Import() + if err != nil { + return errors.Wrap(err, "flushing postgres batch") + } + } + + return nil +} + +// Import sends a batch of row data to Postgres using an INSERT ... ON CONFLICT statement. +// The ON CONFLICT portion has no effect on the rows in the batch with new ids. For rows with +// ids that already exist in the Postgres table, the ON CONFLICT causes the new values for the +// data columns to overwrite the existing values. +func (pg *PostgresUpsertBatcher) Import() error { + if pg.rowCount == 0 { + pg.log.Debugf("skipped empty postgres import") + return nil + } + + allPlaceholders := strings.Join(pg.rowPlaceholders[:pg.rowCount], ",") + + // INSERT INTO "lookup_test" (id, rawlog) + // VALUES (8, 'foo') + // ON CONFLICT (id) DO UPDATE SET rawlog=EXCLUDED.rawlog; + sql := fmt.Sprintf(`INSERT INTO "%s" (%s) VALUES %s ON CONFLICT ("%s") DO UPDATE SET %s;`, + pg.tableName, + pg.columnNamesAsString, + allPlaceholders, + IDColumn, + pg.conflictString, + ) + + tx, err := pg.client.Begin() + if err != nil { + return errors.Wrap(err, "creating postgres transaction") + } + + var committed bool + defer func() { + if !committed { + if err := tx.Rollback(); err != nil { + panic(err) + } + } + }() + + if _, err := tx.Exec(sql, pg.valSlice...); err != nil { + return errors.Wrap(err, "executing postgres import query") + } + + if err = tx.Commit(); err != nil { + return errors.Wrap(err, "committing postgres transaction") + } + pg.log.Printf("imported Postgres batch of %d rows after %v\n", pg.rowCount, time.Since(pg.startTime)) + + pg.valSlice = pg.valSlice[:0] + pg.rowCount = 0 + committed = true + + return nil +} diff --git a/idk/progress.go b/idk/progress.go new file mode 100644 index 000000000..3678f21e3 --- /dev/null +++ b/idk/progress.go @@ -0,0 +1,37 @@ +package idk + +import "sync/atomic" + +// ProgressTracker tracks the progress of record sourcing. +type ProgressTracker struct { + progress uint64 +} + +// proceed is called after a record is sourced. +func (t *ProgressTracker) proceed() { + atomic.AddUint64(&t.progress, 1) +} + +// Check the number of records that have been sourced so far. +func (t *ProgressTracker) Check() uint64 { + return atomic.LoadUint64(&t.progress) +} + +type trackedSource struct { + Source + t *ProgressTracker +} + +func (ts *trackedSource) Record() (Record, error) { + r, err := ts.Source.Record() + if err == nil { + ts.t.proceed() + } + return r, err +} + +// Track record generation progress on a source. +// Wraps the source with a progress-tracking mechanism. +func (t *ProgressTracker) Track(src Source) Source { + return &trackedSource{src, t} +} diff --git a/idk/reingest_test.sh b/idk/reingest_test.sh new file mode 100755 index 000000000..cd4191cef --- /dev/null +++ b/idk/reingest_test.sh @@ -0,0 +1,29 @@ +#!/bin/bash + + +go install ./cmd/molecula-consumer-kafka +go install ./cmd/kafkaput + +export TOPIC=reingesttopic +export SR_URL=schema-registry:8081 +export KAFKA=kafka:9092 +export PILOSA=pilosa:10101 + + +# put 2 records into Kafka +kafkaput --schema-registry-url=${SR_URL} --kafka-bootstrap-servers=${KAFKA} --subject=blahh --num-partitions=1 --replication-factor=1 --topic=${TOPIC} +kafkaput --schema-registry-url=${SR_URL} --kafka-bootstrap-servers=${KAFKA} --subject=blahh --num-partitions=1 --replication-factor=1 --topic=${TOPIC} + + +# consume first record +molecula-consumer-kafka -b 1 --max-msgs=1 --kafka-bootstrap-servers=${KAFKA} --topics=${TOPIC} --pilosa-hosts=${PILOSA} --index=reingest_index --id-field=id --schema-registry-url=${SR_URL} + +# make sure we consume the second and final record +molecula-consumer-kafka -b 1 --max-msgs=1 --kafka-bootstrap-servers=${KAFKA} --topics=${TOPIC} --pilosa-hosts=${PILOSA} --index=reingest_index --id-field=id --schema-registry-url=${SR_URL} & + +# Try to consumer one more record in the background. This should hang... making sure we don't re-consume any records. +molecula-consumer-kafka -b 1 --max-msgs=1 --kafka-bootstrap-servers=${KAFKA} --topics=${TOPIC} --pilosa-hosts=${PILOSA} --index=reingest_index --id-field=id --schema-registry-url=${SR_URL} & + +# sleep 10 and then make sure the background job is still running. Will exit 0 if it is, and 1 if not. +sleep 10 +jobs | grep Running diff --git a/idk/sample.csv b/idk/sample.csv new file mode 100644 index 000000000..876ae9431 --- /dev/null +++ b/idk/sample.csv @@ -0,0 +1,9 @@ +asset_tag__String,fan_time__RecordTime_2006-01-02,fan_val__String_F_YMD +ABCD,2019-01-02,70% +ABCD,2019-01-03,20% +ABCD,2019-01-04,30% +BEDF,2019-01-02,70% +BEDF,2019-01-05,90% +BEDF,2019-01-08,10% +BEDF,2019-01-08,20% +ABCD,2019-01-30,40% diff --git a/idk/sql/odbc.go b/idk/sql/odbc.go new file mode 100644 index 000000000..72ffc6235 --- /dev/null +++ b/idk/sql/odbc.go @@ -0,0 +1,6 @@ +//go:build odbc +// +build odbc + +package sql + +import _ "github.com/alexbrainman/odbc" diff --git a/idk/sql/source.go b/idk/sql/source.go new file mode 100644 index 000000000..877f9f5a1 --- /dev/null +++ b/idk/sql/source.go @@ -0,0 +1,240 @@ +package sql + +import ( + "context" + "database/sql" + "io" + "strings" + "time" + + _ "github.com/denisenkom/go-mssqldb" + _ "github.com/go-sql-driver/mysql" + _ "github.com/lib/pq" + + "github.com/molecula/featurebase/v3/idk" + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +type Source struct { + feed chan []interface{} + schema []idk.Field + record wikiRecord + rows *sql.Rows + separator string + log logger.Logger +} + +func (s *Source) Open() error { + go func() { + defer s.rows.Close() + vals := make([]interface{}, len(s.schema)) + lastRow := make([]interface{}, len(s.schema)) + + for i := 0; i < len(vals); i++ { + vals[i] = new(interface{}) + } + n := 0 + for s.rows.Next() { + err := s.rows.Scan(vals...) + if err != nil { + s.log.Printf("scanning row '%v'", err) + continue + } + + //build message + row := make([]interface{}, len(vals)) + for i := 0; i < len(vals); i++ { + item := vals[i].(*interface{}) + switch v := (*item).(type) { + case string: + _, isStringArrayField := s.schema[i].(idk.StringArrayField) + if isStringArrayField { + row[i] = s.splitStringArray(v) + } else { + row[i] = v + } + case []byte: + astring := string(v) + _, isStringArrayField := s.schema[i].(idk.StringArrayField) + if isStringArrayField { + row[i] = s.splitStringArray(astring) + } else { + row[i] = astring + } + case time.Time: + row[i] = v + default: + row[i] = v + + } + } + //skip the dups + equal := true + for i, r := range lastRow { + switch v := r.(type) { + case []string: + a, ok := row[i].([]string) + if len(a) != len(v) { + equal = false + break + } + if ok { + for z, o := range v { + if o != a[z] { + equal = false + break + + } + + } + + } else { + equal = false + break + + } + + default: + if v != row[i] { + equal = false + break + } + } + } + n++ + if !equal { + s.feed <- row + if (n%10000 == 0 && n < 100000) || (n%100000 == 0) { + s.log.Printf("Processed: %d", n) + } + } + copy(lastRow, row) + } + s.log.Printf("Last %+v", vals) + if s.rows.Err() != nil { + s.log.Printf("%v", s.rows.Err()) + return + } + + s.rows.Close() + close(s.feed) + }() + return nil +} + +func (s *Source) Record() (idk.Record, error) { + vals, ok := <-s.feed + if ok { + copy(s.record.record, vals) + return s.record, nil + } + return nil, io.EOF +} + +func (s *Source) Schema() []idk.Field { + return s.schema +} + +func NewSource(driver, connString, cmd, separator string, c chan []interface{}, log logger.Logger) (*Source, error) { + conn, err := sql.Open(driver, connString) + if err != nil { + return nil, err + } + rows, err := conn.Query(cmd) + if err != nil { + return nil, errors.Wrap(err, ": error executing query") + } + cols, err := rows.Columns() + if err != nil { + return nil, err + } + schema := make([]idk.Field, len(cols)) + //encoding the type information of the form SELECT col AS col_IDField... + for i, c := range cols { + schema[i], err = idk.HeaderToField(c, log) + if err != nil { + return nil, errors.Wrapf(err, "making field from '%s'", c) + } + if schema[i] == nil { + return nil, errors.Errorf("nil field for col '%s' but no error", c) + } + } + log.Printf("Schema: %v", schema) + return &Source{ + feed: c, + record: wikiRecord{ + record: make([]interface{}, len(cols)), + }, + schema: schema, + rows: rows, + separator: separator, + log: log, + }, nil +} + +type wikiRecord struct { + record []interface{} +} + +func (wr wikiRecord) Commit(ctx context.Context) error { + return nil +} + +func (wr wikiRecord) Data() []interface{} { + return wr.record +} + +type Main struct { + idk.Main `flag:"!embed"` + Driver string `help:"key used for finding go sql database driver"` + ConnectionString string `short:"g" help:"credentials for connecting to sql database"` + RowExpr string `short:"w" help:"sql + type description on input"` + StringArraySeparator string `help:"separator used to delineate values in string array"` +} + +func NewMain() *Main { + m := &Main{ + Main: *idk.NewMain(), + Driver: "postgres", + ConnectionString: "postgres://user:password@localhost:5432/defaultindex?sslmode=disable", + StringArraySeparator: ",", + } + m.Main.Namespace = "ingester_sql" + m.NewSource = func() (idk.Source, error) { + if m.RowExpr == "" { + return nil, errors.New("must provide a Row Expression") + } + source, err := NewSource(m.Driver, m.ConnectionString, m.RowExpr, m.StringArraySeparator, make(chan []interface{}), m.Log()) + if err != nil { + return nil, errors.Wrap(err, "creating source") + } + err = source.Open() + if err != nil { + return nil, errors.Wrap(err, "opening source") + } + return source, nil + } + return m +} + +// splitIfStringArray splits `astring` by each separator in s.separator +func (s Source) splitStringArray(astring string) []string { + return strings.FieldsFunc(astring, Splitter(s.separator)) +} + +// Splitter returns a splitter based on runes in a separator +func Splitter(separator string) func(rune) bool { + return func(r rune) bool { + for _, val := range separator { + if r == val { + return true + } + } + return false + } +} + +func (s *Source) Close() error { + return nil +} diff --git a/idk/sql/source_test.go b/idk/sql/source_test.go new file mode 100644 index 000000000..01e2d6504 --- /dev/null +++ b/idk/sql/source_test.go @@ -0,0 +1,32 @@ +package sql + +import ( + "reflect" + "testing" +) + +func TestSplitStringArray(t *testing.T) { + s := Source{separator: ",."} + inputString := "abc,def.ghjkl.op" + expected := []string{"abc", "def", "ghjkl", "op"} + result := s.splitStringArray(inputString) + if !reflect.DeepEqual(expected, result) { + t.Fatalf("splitStringArray did not split string array on separators properly. expected %v, got %v", expected, result) + } +} + +func TestSplitter(t *testing.T) { + split := Splitter(",.x") + if !split(',') { + t.Fatal("split should split on ,") + } + if !split('.') { + t.Fatal("split should split on .") + } + if !split('x') { + t.Fatal("split should split on x") + } + if split('o') { + t.Fatal("split should NOT split on o") + } +} diff --git a/idk/test_postgres.go b/idk/test_postgres.go new file mode 100644 index 000000000..1bbb9ad51 --- /dev/null +++ b/idk/test_postgres.go @@ -0,0 +1,41 @@ +package idk + +import ( + "fmt" + + _ "github.com/lib/pq" + "github.com/pkg/errors" +) + +// ReadString reads the string value for the specified column, from the row with +// the specified id. +func (c *PostgresClient) ReadString(id uint64, column string) (string, error) { + sql := fmt.Sprintf("SELECT %s FROM %s WHERE id = %d", column, c.TableName, id) + + var value string + row := c.client.QueryRow(sql) + + err := row.Scan(&value) + if err != nil { + return "", errors.Wrap(err, "querying") + } + return value, nil +} + +// RowExists returns true if a row exists containing the specified id. +func (c *PostgresClient) RowExists(id uint64) (bool, error) { + sql := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE id = %d", c.TableName, id) + + var value int + err := c.client.QueryRow(sql).Scan(&value) + if err != nil { + return false, errors.Wrap(err, "querying") + } + return value != 0, nil +} + +// DropTable drops the PostgresClient's table from the Postgres backend, for test cleanup. +func (c *PostgresClient) DropTable() error { + _, err := c.client.Exec(fmt.Sprintf("DROP TABLE %s", c.TableName)) + return err +} diff --git a/idk/testdata/certs/README.md b/idk/testdata/certs/README.md new file mode 100644 index 000000000..4c1009a9c --- /dev/null +++ b/idk/testdata/certs/README.md @@ -0,0 +1,12 @@ + + +# these test certs were generated with the following commands + +certstrap --depot-path certs init --common-name pilosa-ca --expires "100 years" +certstrap --depot-path certs request-cert --common-name localhost --domain localhost +certstrap --depot-path certs sign "localhost" --CA pilosa-ca --expires "100 years" + +# certstrap version +dev-25ea708a + +(built with go 1.13) diff --git a/idk/testdata/certs/localhost.crt b/idk/testdata/certs/localhost.crt new file mode 100644 index 000000000..8269ccda6 --- /dev/null +++ b/idk/testdata/certs/localhost.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEPjCCAiagAwIBAgIRAJ7rl74WPv8pLuhVRXt6fV0wDQYJKoZIhvcNAQELBQAw +FDESMBAGA1UEAxMJcGlsb3NhLWNhMCAXDTIwMTAyMDE5MTMzNFoYDzIxMjAxMDIw +MTkxMzE5WjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQDmi8FMWt23M0Cr2aCgEXUGQ0gv/4M7CXH/5GkSI866YwGV +Bd1iZMBRiONQwvGDnqYZRrAQv6mFjfyBqxdkbh++74FC3JK7sLhks0vg5VwbHV7T +5kj3bJqd+LKn5qPPOQXX9sgmv/NkggF/XXwF73noLPmgDQ78S+OP0ANmi1TQiU3a +gE+qp+Qpl5KC7dH9aC9nvE9iGfEcGNr+rXj05liiXqe4ZtIKWjeke7Ej64C6qX97 +bNPzmLARtqbRsIkfAU8SJy3YuHfW8n1xr4B7ENm9jHQCh1wUv2YhaPpnio+/R2zp +Lw4yCqilDX9ZZ4nG3cBFuziSf+BUXJ9ydbw1aX8HAgMBAAGjgYgwgYUwDgYDVR0P +AQH/BAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQUJRQJpaR5bp4ZyUsMxgK+UJl6PSgwHwYDVR0jBBgwFoAU69lmXSa5BZeyYU/6 +XpWdtr59H1YwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IC +AQChxsBZ/b14ukJXX48BxAyZcy5r7GrLcRGQ3guUTONFVDWPzzpd8mjHi0yJDhMW +2zWtw3/H+c+zT7uRd+2sUxFdpAurNSFCdV++5Q/0aFvl+By5+MhVhtznEQDU0/lM +zFxiEYe/N9Vi2N0S1KPxvYL/RfBU27u+O/50zhjueM1BTyHTTqL6E2DFeT2VPKIg +zCDUtiTEDFZrD0XGITT/3CIoNCK8aC+Fq65OEoyEn6qR5qg1Kc4tfZmo6hWYiSlR +XeP36cP9R8kEMte1BdE74GVqE9cTuVZERdgB0hv3EME7Byq7uIm/a+JXbsh2/OFm +HcE0/HP+O0YK8YaVMGwI3pZYy2syWqPcakcvusETehr6P+Ihh2cOKRwqkCl6b87e +uSLJNTUMKZgakW6Bjv6lgQaWqnKzTC/RgmQ+G3w0nKATX9+jYE2j3MzZhbtcml+2 +gp6u225yAJaYt/MQidwUMiKYeCgjaUNoL0fOJesGkokPk80ceISnqvbSRiZRTvK1 +bVenkhkBrHuvvgKVstzcuZI9oQ2snWhK1naVQiOtQNEFUCHwyU95zADOK0km88NB +2het6yYaEUL9csHPEjPd3lFglerGQnil2Ly1slUC4jb7hfVRHjOFs8PVr9gQ45dW +Jvsv4pawHKFE0ennoNvoDmzbiY1TY5ScTZquPGIsEBV+tQ== +-----END CERTIFICATE----- diff --git a/idk/testdata/certs/localhost.csr b/idk/testdata/certs/localhost.csr new file mode 100644 index 000000000..1814b72af --- /dev/null +++ b/idk/testdata/certs/localhost.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICgDCCAWgCAQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5ovBTFrdtzNAq9mgoBF1BkNIL/+DOwlx/+RpEiPO +umMBlQXdYmTAUYjjUMLxg56mGUawEL+phY38gasXZG4fvu+BQtySu7C4ZLNL4OVc +Gx1e0+ZI92yanfiyp+ajzzkF1/bIJr/zZIIBf118Be956Cz5oA0O/Evjj9ADZotU +0IlN2oBPqqfkKZeSgu3R/WgvZ7xPYhnxHBja/q149OZYol6nuGbSClo3pHuxI+uA +uql/e2zT85iwEbam0bCJHwFPEict2Lh31vJ9ca+AexDZvYx0AodcFL9mIWj6Z4qP +v0ds6S8OMgqopQ1/WWeJxt3ARbs4kn/gVFyfcnW8NWl/BwIDAQABoCcwJQYJKoZI +hvcNAQkOMRgwFjAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQAD +ggEBABMi2/4j1/qzwWAYlEs2KW3z+apzzDLKgjE0kY6QvELh/8aBj0rMglb0HM2x +4iSSoX1ZwZgDZ9fIJ3klG/UF7CUweMghb9yC2PP9Z8WuqaECQyM87KgSln8PND9E +1OvD30rp9yr9KxEeckq+c1ebLi/qGrIY21VCwfxA0mv3sfi7Q5ONIckay/Xj+1Tz +ovE/TkM/8wTE/SKbpQSCkP7K1NDXuAhMGjcN0x3d3f8nBcLcZOrRroiHy38Bv/9T +Vd62IY6uqYw9sluBbMX72D/mmJiCKEw3+DhDJFhHCTCrAQM0QwLuwnG2lQFYoENc +ZAkwDIi+3DXHEEyloNSYGtXMEiA= +-----END CERTIFICATE REQUEST----- diff --git a/idk/testdata/certs/localhost.key b/idk/testdata/certs/localhost.key new file mode 100644 index 000000000..b7434fdc9 --- /dev/null +++ b/idk/testdata/certs/localhost.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA5ovBTFrdtzNAq9mgoBF1BkNIL/+DOwlx/+RpEiPOumMBlQXd +YmTAUYjjUMLxg56mGUawEL+phY38gasXZG4fvu+BQtySu7C4ZLNL4OVcGx1e0+ZI +92yanfiyp+ajzzkF1/bIJr/zZIIBf118Be956Cz5oA0O/Evjj9ADZotU0IlN2oBP +qqfkKZeSgu3R/WgvZ7xPYhnxHBja/q149OZYol6nuGbSClo3pHuxI+uAuql/e2zT +85iwEbam0bCJHwFPEict2Lh31vJ9ca+AexDZvYx0AodcFL9mIWj6Z4qPv0ds6S8O +MgqopQ1/WWeJxt3ARbs4kn/gVFyfcnW8NWl/BwIDAQABAoIBAFX+GPqfBgY4cs3m +3ff2qvzMCdgFaXCS5Fe7XcmrW4fAOC3awynZRLbk5U0Reb5LZc8Vw8RriRLM1DuV +kqMeRG8WrNNArOafUxgUnJ/lTUa73MwTIHJRqxZzVkg0SjOYJGranOt/O4zoxSA5 +wXIBUipc5Dtjw4wtzlKtFyefnuItL2MCdwOHUdZfnhr9Oykp1fuNqBqkkeryj3XV +ukHQvqU5zkMSayprNglziqTHUzU33iyZeDng+CJQeYTEc7Gn+zja2SFFBlPHqXXo +/OzAr94zI3vOnj3yRM3+sKMJVPV+RoJEGpsvPVuVn38d1VnIMEx8Gy/wif6tmM9c +7Q44hKECgYEA/JMFwkPGbry80ktDI065k5FIYn1EDRyUaQqyskmkBRcNW3qOShqj +o/zWQfCgxP587IEdKBBwqCpdqfghi3EW+JqfVlbGY6t1chAurYF/47CTIgKO5qRM +GdCY2OdiAeo5nba/KiLQfSuY08MCNDrQabLRJXIng8qVWpRwQzsv5rECgYEA6aw/ +HugeQhTxk2uV91jJaAQIaxrt6JxuoG0CGGlbDrrTl2dnbPYA0muHMFdT/bzKjCpv +n/ScqbCyHuy+lWSnOzgedRNQCB46+0H58LAjITAj9QaT3raZqVReVIaD+pnx27dp +Cw5Ws6ENa9AQey3DO+dkRWot2AcLSw6TGR8HnzcCgYEA/ArfCU/G2cSgDJ6sPbSW +vaqR+C6W1Rq7AuN5FS8lbSrm2m2/RjW1LLTnPmAYntxx3zSs2sklErtMQovpNZRB +3w21iVwIl3eHOK7rVZtP+u++s4aoAYLcqjod/P1RMSYCHt85fpvFP9Ncq50DOwmh +5ohZ6ysyQXLMfdp4+K48i9ECgYEApOFALKu2ZgRnLRFV4REKFFX8Jq76vg5bVOF2 +AAmfEbasBIIXDWBL1i2/V1HXVwv2k46B8wjj3ixqkr2UAM/j3DpN62g0KXZDQfUc +ykNOlmVkickZX6XSqRN5+ARubc5gRRuWiBGXBeqXEMLgTjpNLyCntP8l1++ofU6M +ZsZpV2MCgYA3nfNXAR5O4B/dm/2HmDQrXy0qia7Hwi/95pgL2FJaEmjBCPI1j12o +M5YCbhpr1pwsNKPV9AUlUz+OCwS8Vt+V0gQf9/XvNOsifU+mbMYVpuNGwmcKafnv +qECSeidrmhWJSR/SSNBcE94im/8ObVU110WJMkjC9otjDl9Aua/3LQ== +-----END RSA PRIVATE KEY----- diff --git a/idk/testdata/certs/pilosa-ca.crl b/idk/testdata/certs/pilosa-ca.crl new file mode 100644 index 000000000..3b25dd052 --- /dev/null +++ b/idk/testdata/certs/pilosa-ca.crl @@ -0,0 +1,16 @@ +-----BEGIN X509 CRL----- +MIIChTBvAgEBMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNVBAMTCXBpbG9zYS1jYRcN +MjAxMDIwMTkxMzIyWhgPMjEyMDEwMjAxOTEzMjBaMACgIzAhMB8GA1UdIwQYMBaA +FOvZZl0muQWXsmFP+l6Vnba+fR9WMA0GCSqGSIb3DQEBCwUAA4ICAQBja+EDQAp+ +KeD7UhWMMrTd9j03GgQ2E2Z7+Ba0qJ5+kS7/t+Yja2o5dQJkrC3GwEMOQb6DRRUE +nUE4xlr5Rryoq0dZk+Lp1f4cHrnP8l1xylUL44gsnY4v8zMR8L8X98vj7kKCqB8w +DFX7qkMlE5Ie2Hha7uuOJ85FnxIbMcRxFQH2m2zDfWG8/Lmxezvv9Hn45V/kwIQy +MmBh6cNuhzEneyNpM9yMRe/29QgVitF/2q6d+FzK8w8hkUFeYlyM+cP7F4Ml7160 +UidSQM04zvBtJ8frZAvrDaPBBZhrTXcyw6+Qnp/aaW1ZsEIdHEcbYGNdgtazleoG +VH35cDP90KfiRbq69PQ9Zqn3cI//MX3sHrglA9wsEhHc9P7dowHaOFyxPouZPEmQ +/Jqg5oyJzujRwhf0v3SdJvhuDEzla2N+QyYRk0kRHtdv+glz7T7CnTYCk+DTv+oh +QABUrCbjfBoE5M2Qep9ZkIbl2gaDCpvbZSF4zFLKQc2aIOBpVn3HgTGBvdFD3FJY +Txl2F4Y3rS1T/WMAH86cZIc9h5HlMdFtAFnHAlHtB3wGw3FD/GcvGcvz2D4GaxKq +erzrnOxjYOA4M0haGzWF6dC7aPA8y35eZuqNXvbenTtc7A11bWTJfG1I7ctvLyPE +MpCNMHfymh/XtYZiZhvu6ueu3OeKScN+tA== +-----END X509 CRL----- diff --git a/idk/testdata/certs/pilosa-ca.crt b/idk/testdata/certs/pilosa-ca.crt new file mode 100644 index 000000000..9878e3aa7 --- /dev/null +++ b/idk/testdata/certs/pilosa-ca.crt @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIE6jCCAtKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDEwlwaWxv +c2EtY2EwIBcNMjAxMDIwMTkxMzIyWhgPMjEyMDEwMjAxOTEzMjBaMBQxEjAQBgNV +BAMTCXBpbG9zYS1jYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALT/ +uNmbnfXWNX+FsL0Waqw/5deti5F4cSjMrGRQpXxalTcooqNk/lkeqXkvi9ooFROZ +/HyQR9GM9dSD/aj6gD3FnGA4ueB24Xr6bWsRpDRh6+3UGLB3YCNNdGLSfX3LPMYh +RJutFmsg+r6SrSytbLbffu+0a/4fxtajZNwQJjDjd8qflXQZYlzp2LHk1A/jqqdI +fBtqkNg925TGKiavvUqKtdI/eFzRoiQ7NLBUJmszzveUXvOUMsMnW2/myLBe3Oqk +Vsy85lya0ADln20C3Lb0+ZA4KoGX3EWdtBXEuWqMoyvCJoJ4I3bH2LlfOUjRt8UE +pPk6sPMROJ+75mlgvgnSlYsN8PaZdvdm2VGVWRWUyEfyW/qa2fv8d2XBWqibl0YF +tqay9CX1aWgC9q12yx3vj7Yh+ZNbeZFLc7IL8zyNMwIjIOIIyGBY70KewfgVktzq +fAMz6h1sr9Kxozil97Cu3ma4B6UiL3rUbYMO/rNhVxcIuUoJpgIEVuRt+uXEG74y +XftauZ67qILFQzfpoacncvDEx5nJ3itLgbbyt1n1iWdGuEiMSLFT+x+nNUgVpQgA +sWRYxHdisM4xzRVN6pAaToMs1p8Ju7l9xU3z7RSogTyVk9gMIIV4t9TDYP5fI10Y +GFi7B6q0t3pIGXgKySHjCSl0EKYkDQDFl5tWeaiXAgMBAAGjRTBDMA4GA1UdDwEB +/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTr2WZdJrkFl7Jh +T/pelZ22vn0fVjANBgkqhkiG9w0BAQsFAAOCAgEAnlBFrWhB+WesCc3lhK980rA6 +roNFYMZdaXvg4zaEGergkRvPab5yXoof1AAeznJm45GQfXn8HbQlrZmAqWg3fNld +/TX+jNvosM8K8K+PzesDGHsm/eQnbrb0qzMDsQgFY+nnD+x/ZQtjmKZtcNr/0ZlM +EJeXWU5cGy70GMbNztspMHsOLa3ZDLsBOJYOwSFxDlLDFrjZoRoPCWw8jRL+Tb4t +JjZcGZDD4a5+DqcojanIdNU1yI4teP6aV1LQTVNn4pwOap+tD0De/WzOPmXTQq5M +9ssxL7xSqVShQQMC8LVSWSRxtT6kLq0Av6i7wio0DZGnH3ynERTUs13DRZkwbVsE +OaQLmiQnsHRTIpdts/fswZ2FRPvdhhXxBjiGQZGEGXXznxHTNJ6nQioh95Ft5hNA +82i8Z74miaFIT/33/sZ5SuwUzphCgqCY2x7NUS8J313O9lsar0bweJTvQaZg/69E +PmmwUcDebh+pgKP01z4BqTzhtchmFUKzT+oOC8tmTeSlhsBTzO4xMw6OqhpXKL+c +k9f2CGUZYtEZHDRmP+C++FEi+B/tV2Oq3on+QPiaIIcRsOftthGUvJ8htUl3w+hq +B5TnL8CeLjXGKKRp+UiakrB4E7y2aIbrtIRnJ/Llg2XMND/0xbldsNsyDNXCIoDH +sz8HqwF3CUbv5XD4ioY= +-----END CERTIFICATE----- diff --git a/idk/testdata/certs/pilosa-ca.key b/idk/testdata/certs/pilosa-ca.key new file mode 100644 index 000000000..135a6e233 --- /dev/null +++ b/idk/testdata/certs/pilosa-ca.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAtP+42Zud9dY1f4WwvRZqrD/l162LkXhxKMysZFClfFqVNyii +o2T+WR6peS+L2igVE5n8fJBH0Yz11IP9qPqAPcWcYDi54HbhevptaxGkNGHr7dQY +sHdgI010YtJ9fcs8xiFEm60WayD6vpKtLK1stt9+77Rr/h/G1qNk3BAmMON3yp+V +dBliXOnYseTUD+Oqp0h8G2qQ2D3blMYqJq+9Soq10j94XNGiJDs0sFQmazPO95Re +85Qywydbb+bIsF7c6qRWzLzmXJrQAOWfbQLctvT5kDgqgZfcRZ20FcS5aoyjK8Im +gngjdsfYuV85SNG3xQSk+Tqw8xE4n7vmaWC+CdKViw3w9pl292bZUZVZFZTIR/Jb ++prZ+/x3ZcFaqJuXRgW2prL0JfVpaAL2rXbLHe+PtiH5k1t5kUtzsgvzPI0zAiMg +4gjIYFjvQp7B+BWS3Op8AzPqHWyv0rGjOKX3sK7eZrgHpSIvetRtgw7+s2FXFwi5 +SgmmAgRW5G365cQbvjJd+1q5nruogsVDN+mhpydy8MTHmcneK0uBtvK3WfWJZ0a4 +SIxIsVP7H6c1SBWlCACxZFjEd2KwzjHNFU3qkBpOgyzWnwm7uX3FTfPtFKiBPJWT +2AwghXi31MNg/l8jXRgYWLsHqrS3ekgZeArJIeMJKXQQpiQNAMWXm1Z5qJcCAwEA +AQKCAgAWmjiDNCOtp2pW2mMPudToXbJeFJXxPJEk/yon/MotlUI8+R4WOW5pwqJ3 +N7DHNWosYHZfN8VALdIlD7aFe4K4NA0rFupfVXki2lL/o9xVjkTgFjRfFQk0X1/B +V3fEVbTpKQ5gQmUiS6QEWFy3z5Bb5dz8IhO6UE2MUCswL/QU9tLmwrbvIJxf7fPZ +gzHYKh4NdcfJxK0B0/evxG9PFXMV8+xwrOxi6urMi3gw7NE/YeDemfChikgshqWs +e61kGPSNeKg+OPirZ8nB0urtugXF8yGXGOx18njXWLI8Zayh2Z4mwL/+WvJSyvIN +dA67QTUprULMvL+MGwJvMA+96Q7SBRVKR9HHNaP9pFsZup3QX9mqDQ9miB6+rzn7 +f5RiSLVgq+HUPMPfqgXCkQZBcY28TcM1BZhS4uJJTkbvVTkrlHKJs6Q/LBqJFvq0 +3+2M1xQb4HdRTRlwZ/YsxdqXGIoA3Xx3nZbb6LlPp/MT93xxsLJNNP47n445Cw8i +lz7hJJDwo+TyXmRRWKlFXO8TEhqKhK9ZEXmkXBxSeCQV0oTYS5kU9XdZ5iu5/CQQ +Lv+uFQfHTPWm/Lp5RC8JEEJwK5bwRAs5d9oWg5EbWJp2ol36g3YO1np5RFsQn3jL +qJPz35X3Bp9zQeZcAZpt1fWFdyX9f7V2LLCY8gUyIlfCEXBWwQKCAQEA8Uoes4ph +15tM1LswmOLqOq9iWuvcKYSNcz8my8nlP5zkUdGKvGcLblm5Mg4wKoPFiyjKhX7I +S8DUN8x7E5aiNBiZ0PGku4CKjubQgdFG/rYRfnrUEaA81Uw3a69eYioKbxhhxDzb +Lqd0/tGNHQZBQEyofOChwqTWpAdIh79F1oXejcPzRDr+oXxJVnvJDdYCEN/0TYkz +qeJdEtnVf1x2oNjuPIRuZNldpSDmiUce4QXG/qKgJcQNZ+paDDFK/G/rXHcIvV5C +du9yxxfppY7fRRMm+LFqDhKEWveG4OUhUgut71J0EREO65oMbf6UcZ2FS4XDTbFD +RSO4d8bKgf2eKwKCAQEAwAigvp8qq/yYitZeXhI6cI4ztSvwqblREhUgYWyrbUFo +a38Bey1fKQzJYUYA7raFU6alRHoHBQywjANhIaLlfvLtQfuZ4Z9CGP3Qn33uQR/E +ha4MNjjwUB0jx9lsDze1h61V95fxQLGNLVwGoaES4BpDRqvYJKnQv2X0SUigEg5U +GwryNlEW0AS/Xp/k7+PGJQernHIEWYS70FleHbAiINh+lzSfbJObgd6XnQ8IxtTr +xthXBKkkNBJdJX+/3qUQgOxTjSNUY4N9Np7myFfMvcAXuR7/K7bDegwHxffYb6Gc +v3fCFoTQFn1KTh0IvRjyv3WzqInAYVjC8CpD562VRQKCAQBirI4LnE7Q7lioMnj4 +POvO3gRZ7FSXwfZap/vEoScYMaAJeajDzVwWX6jluHmoGUVC2IahuyxMFmpy+zNl +2lcw+NKGaRuV9kYzlF62iBABgBF9aNuq7Z2TGN0dM5VkjY7AyfbJWp3D4YVt4+JS +eUlb8z1//BkK0YBZigT2RplX1l0iGn00bO/OuFYBgRPCjb9AiWWOA8rV8ZVgbSbr +M7PrqWsb4oiGw4GRUvgUMbqGCWfMoFLfvuJAmc0DaXEh9N8KbD9tuctyeg+1LalG +JDxYMjHgyCT35kisLsfA1tMei1oxIcYHaLNyVAg7Pz4TjHiDXwt0jUZWUvpQOUJ9 +kGsLAoIBAQCOqFoyAjBDIB16VpI4NDZx01IabxAUJfVSB5vMhFw9h++4m9tP1H7z +Eeqwdr7Ol40ofY4c9sIsQCcPfJs1z7vJuVIESJMih5sk0bmgIn9SpfTqkkfEKDxu +Z5djKeQa0fnrVxucGaZBtyT343uRqwVIsnn0EEk7w2OuLGFz553yi+5zQIh7TXYz +BrPb6dC7XWyfqbkVOaZ9khusRhei2mwgFnTEg3VDxcwqiF/9b2PHwfl9+M18SuL4 +RAQqjWLOVbWS8P2Ixgw0+UOVxioP/xm8hO2auqo5oUZKbpF/wgVpuJenraHj9LpZ +Wq5OpUcOo3ACR8A1nk/qgXQf0mYrwEo5AoIBAHEqA2eJVZnPiAs6U7QPAavnLxt/ +v0GLzsBBixSV8ErMToN1wfYtBb1t5fgF0Fuy85dREp1CsGJMgrnPX5bCnBmDaLl2 +Z1lUaSDcFCu+yXo+Kuy7JvSKZ4++q4ggrHvK8y8FdKH4H+56vTdXe2i9RY/v48g4 +kKyNiYtVXxrd/h47WbHF5eApheblH9hH6zC5tB/rW7Hh0nmnDcfmMW4BggbyBinH +MF3jO0YaspZOtRc2xSj8E3sGtN+f/KrBbKBb4J0j7VzuFmZC1u5grl/hx0cYE2ek +HGifmIjkKv5R4xPELoAJZyFOpN1PfS3Y+SOn0mF+RJRoGqMGcQWA3I77b5M= +-----END RSA PRIVATE KEY----- diff --git a/idk/testdata/featurebase.conf b/idk/testdata/featurebase.conf new file mode 100644 index 000000000..abb32ca27 --- /dev/null +++ b/idk/testdata/featurebase.conf @@ -0,0 +1,383 @@ +# FEATUREBASE HOST CONFIGURATION +# +# Uncomment when/where appropriate + +# ============================================================================== +# Use advertise to specify the address advertised by the server to other nodes +# in the cluster and to clients via /status endpoint. Host defaults to IP +# address represented by bind parameter with network port. +# +# advertise = :10101 +# advertise-grpc = :20101 + + + +# "long-query-time" represents duration of time that will trigger log and stat +# message for queries longer than X time. Ex. "1m30s" 1 minute 30 seconds +# +# long-query-time = "10s" + + + +# Unique name for node in cluster. This is just a human-readable label for +# convenience and not used by any underlying logic. + +# name = "pilosa1" + + + +# # Host:Port where Featurebase server listens for HTTP requests. +# # Default is localhost:10101 +# # +# bind = "pilosa1:10101" + + + +# # The address and port featurebase will listen to for all GRPC connections +# # Ex. python-molecula, grafana for queries, etc. +# # +# bind-grpc = "localhost:20101" + + + +# Directory to store Featurebase data files +# data-dir = "/var/lib/molecula" + + +# ============================================================================== +# CORS (Cross-Origin Resource Sharing) Allowed Origins +# List of allowed origin URIs for CORS +# +# [handler] +# allowed-origins = ["https://myapp.com", "https://myapp.org"] + + + +# Path to the log file +# log-path = "/var/log/molecula/featurebase.log" + + + +# Verbose - Enable verbose logging. Valid options are true or false. +# Set to true only when debugging as directed by Molecula engineers. +# +# verbose = true + + + +# Soft limit on max number of files featurebase will keep open simultaneously. +# When past this limit, featurebase will only keep files open for as long as is +# needed to write updates. +# +# max-file-count = 900000 + + + +# Maximum number of active memory maps featurebase will use for fragment files. +# Actual total usage may be slightly higher. +# Best practice is to set this to ~10% lower than your system's max map count. +# See sysctl vm.max_map_count in Linux. +# +# max-map-count = 900000 + + + +# Max Writes Per Request - Max number of mutating commands allowed per request. +# This includes Set, Clear, ClearRow, and Store +# +# max-writes-per-request = 5000 + + + +# The following option sets the maximum number of queries that are maintained +# for the /query-history endpoint. +# This parameter is per-node, and the result combines the history from all nodes. +# +# query-history-length = 100 + + + +# External database to connect to for `ExternalLookup` queries. +# lookup-db-dsn = "postgres://localhost:5432/db" + + + +# ============================================================================== +# For cluster stanza, "name" represents name for cluster. Must be same on all +# nodes in cluster. "replicas" represents number of hosts each piece of data +# should be stored on. Must be greater than or equal to 1 & less than or equal +# to number of nodes in cluster. +# [cluster] +# name = "cluster1" +# replicas = 1 + + + +# ============================================================================== +# [etcd] +# etcd is the tool Featurebase uses for node-to-node, intra-cluster +# communication. etcd is embedded in the featurebase cluster rather than +# running as a separate instance. +# It's important to configure this correctly for your network and nodes, and +# that it is consistent across all nodes. +# +# The easiest setup can be used when all nodes can reach all other nodes via a +# local subnet: +# listen-peer-address = advertise-peer-address +# = (what's in the initial-cluster-list) +# = the nodes ip address (which can be reached by every +# other node +# (localhost:10401 would not work for this, as each node can't reach that) +# +# If each node is separated by a proxy, or must be reached via url / dns, you +# will need to use a more complicated setup: +# listen-peer-address = the nodes local ip address +# (specific ip, localhost, or 0.0.0.0 for all +# local ip's) +# advertise-peer-address = the nodes ip address, reachable by all other nodes +# (This address should also be included in +# initital-cluster-list) +# in this case, you specify a different url/ip for listen-peer and +# advertise-peer. E.g. you specify 0.0.0.0 for listen, or (like in their case) +# you use a url for advertise. In each of these cases, you should set listen +# to the local ip, and you set advertise = to how each other node connects to +# this node, and you also use this same address in the initial cluster. +# The key here is that initial-cluster has to include the same node name and +# advertise-peer address as the node it's on (edited) + + + +# for additional assistance, and for help with config issues, +# see https://etcd.io/docs/v3.5/faq/ cluster-url - URL of existing cluster +# that a new node should join when adding nodes to cluster. +# +# cluster-url = "http://localhost:10401" + + + +# Address and port to bind to for client communication +# listen-client-address = "http://localhost:10401" + + + +# Address and port to bind to for peer communication +# listen-peer-address = "http://localhost:10301" + + + +# Comma-separated list of node=address pairs that makes up initial cluster when +# first started. In each pair, "node" value (left side of = ) should match +# name of node specified by "name" configuration parameter +# +# initial-cluster = "featurebase1=http://localhost:10301" + + + +# ============================================================================== +# Profile Block Rate - Block Rate is passed directly to Go's +# runtime.SetBlockProfileRate. Goroutine blocking events will be sampled at 1 +# per rate nanoseconds. A value of "1" samples every event, and 0 disables +# profiling. +# +# block-rate = 10000000 + +# Profile Mutex Fraction - Mutex Fraction is passed directly to Go's +# runtime.SetMutexProfileFraction. 1/ fraction of events will be sampled. +# +# mutex-fraction = 100 + + + +# ============================================================================== +# PostgreSQL Section +# [postgres] +# +# Endpoint Bind - Address to bind a PostgreSQL wire protocol endpoint. +# No PostgreSQL endpoint will be exposed unless a bind address is specified. +# Requires Molecula v3.0 or newer. +# +# bind = "localhost:55432" + + + +# The PostgreSQL endpoint has support for a connection limit. +# This is generally not necessary, so it is disabled by default. +# +# connection-limit = 10000 + + + +# PostgreSQL Max Startup Packet Size - By default, the postgres endpoint +# uses an 8 MiB limit on incoming PostgreSQL startup packets. This should +# typically be sufficient, but may be exceeded if a client sends an unusually +# large amount of configuration data. Oversized startup packets are typically +# caused by connecting with a different protocol, e.g. HTTP. +# +# max-startup-size = 10000000 + + + +# PostgreSQL Timeouts +# In order to detect stalled clients, the PostgreSQL endpoint has connection +# read and write timeouts. There is also a startup timeout, which is used for +# connection setup. The read timeout does not impact idle connections. Idle +# connections will only be closed by the server if TCP keepalive reports a +# break in the connection. TCP keepalives use the default configuration +# provided by the host. +# Caution: Due to a limitation of the PostgreSQL wire protocol, +# raising the write timeout may delay the shutdown of a featurebase node. +# +# startup-timeout = "20s" +# read-timeout = "20s" +# write-timeout - "20s" + + + +# Postgres Endpoint TLS - TLS configuration for the PostgreSQL endpoint is +# structured the same as the TLS configuration for Featurebase's other endpoints, +# but placed under [postgres.tls]. If TLS is configured on the postgres endpoint, +# Featurebase will reject unsecured connections. +# [postgres.tls] +# certificate = "/Users/souhailanoor/tls/out/auth.mybusiness.com.crt" +# key = "/Users/souhailanoor/tls/out/auth.mybusiness.com.key" +# ca-certificate = "/Users/souhailanoor/tls/out/auth.mybusiness.com.crt" +# enable-client-verification = true + + + +# ============================================================================== +# Usage Duty Cycle - Featurebase maintains a disk/memory usage cache that is +# calculated periodically in the background and accessed by the UI/usage +# endpoint. Since this disk scan can take a long and unpredictable amount of +# time, its timing behavior is specified in a relative, rather than absolute +# sense. That is, the duty cycle sets the percentage of time that is spent +# recalculating this cache. This setting affects the results received from +# the "/ui/usage" http endpoint, as well as all data file and memory usage +# values and graphs on the webui "tables" page + +# Special considerations: +# * If disk usage can be calculated quickly (less than 5 seconds), fresh +# results will be calculated when accessed +# * When disk usage takes longer to calculate, there is a minimum of one +# hour wait between cache recalculations +# Setting this value to 0 will completely disable the calculation of disk usage +# +# usage-duty-cycle = 20 + + + +# ============================================================================== +# Use [metric] stanza to define attributes for monitoring. +# [metric] +# Specify which service to use for collecting metrics. Valid options are: +# "statsd", "expvar", "prometheus", "none" +# +# service = "prometheus" + + + +# Remote host to send statsd metrics to. +# host = "localhost:8125" + + + +# The interval to send statsd metrics. +# poll-interval = "10s" + + + +# Debugging flag to enable to send diagnostic information to Featurebase +# developers. +# +# diagnostics = false + + + +# ============================================================================== +# TLS Certificate Section - Path to TLC certificate used for service HTTPS. +# Suffix should contain .crt or .pem + +[tls] + certificate = "/testdata/certs/localhost.crt" + key = "/testdata/certs/localhost.key" + +# ============================================================================== +# Tracing Section +# [tracing] +# +# Jaeger sampler type. Valid options are: "const, "probabilistic", "ratelimiting", +# or "remote". Set to 'off' to disable tracing completely. +# +# sampler-type = "remote" + + +# Jaeger sampler parameter (number) +# sampler-param = 0.001 + + + +# Tracing Agent Host:Port +# agent-host-port = "localhost:6831" + + + +# ============================================================================== +# Configuration for the RBF storage format. +# [rbf] +# Maximum size for each RBF database file. +# Allocates virtual memory but does not preallocate physical disk space. +# If you get into the range where you have 16000 shards on a single node +# (across all indexes), you will need to lower this in order to not run out of +# virtual address space. +# +# max-db-size = 4294967296 + + + +# Maximum size for each RBF WAL file. +# Allocates virtual memory but does not preallocate physical disk space. +# This is the same as max-db-size, but for the write-ahead log. If you set it +# smaller, set max-wal-checkpoint-size to 1/2 of this (we will likely +# condense these options in the future). +# +# max-wal-size = 4294967296 + + + +# Minimum WAL size before WAL pages can be copied to the main database file. +# min-wal-checkpoint-size = 1048576 + + + +# Maximum WAL size before transactions are halted to copy WAL pages to the +# main database file. +# +# max-wal-checkpoint-size = 2147483648 + + +# ============================================================================== +# [storage] +# Sync all changes to the file system. +# Should not be changed in production systems unless you know what you are +# doing - Should always be on unless testing or possibly while performing a +# bulk import and you are not worried about data loss +# +# fsync = true + + +# ============================================================================== +# Enable/Disable AuthN/AuthZ for featurebase +# Can choose identity provider, pass authorize and user-info endpoints, and client id +[auth] + enable = true + client-id = "e9088663-eb08-41d7-8f65-efb5f54bbb71" + client-secret = "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF" + authorize-url="https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize" + token-url="http://fakeidp:10101/token" + group-endpoint-url = "http://fakeidp:10101/groups" + logout-url = "https://login.microsoftonline.com/common/oauth2/v2.0/logout" + scopes = ["https://graph.microsoft.com/.default", "offline_access"] + secret-key = "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF" + permissions = "/testdata/permissions.yaml" + query-log-path = "query-log-test.log" + redirect-base-url = "https://localhost:10101" diff --git a/idk/testdata/permissions.yaml b/idk/testdata/permissions.yaml new file mode 100644 index 000000000..d5af09bed --- /dev/null +++ b/idk/testdata/permissions.yaml @@ -0,0 +1,4 @@ +user-groups: + "group-id-test": + "test": "write" +admin: "group-id-test" diff --git a/idk/testenv/certs/ca.crl b/idk/testenv/certs/ca.crl new file mode 100644 index 000000000..905918346 --- /dev/null +++ b/idk/testenv/certs/ca.crl @@ -0,0 +1,16 @@ +-----BEGIN X509 CRL----- +MIICfjBoAgEBMA0GCSqGSIb3DQEBCwUAMA0xCzAJBgNVBAMTAmNhFw0yMjA3MjIx +OTUxNDVaGA8yMTIyMDcyMjE5NTE0MlowAKAjMCEwHwYDVR0jBBgwFoAU+NtDPKa1 +UzeelNYEuhD5snOV+aowDQYJKoZIhvcNAQELBQADggIBAIfRwTYSQNDwnFB3YlB/ +PoHhEWKdmyoFnN/Zax9FIa8/0F7K/mWwoCPH5xhdP9oo4MR3XR9R0A+iVX3Vohme +ku6XgL2YxGwYL5pZLNH1N34iRNF8R2TnLHMi8dF37JJcJ/HsuiGRqNnpnELlz1m8 +/sxJVl8w3sZBsCmMsDI/lyzk1du+mKJk3bIjapefyT/cQGd4r8kbDyM4ZRzORiks +g4X6nXZK1jhBo6/7nzLsa9egHUGA4rleBleimCXcnaVCyQgVOXorhHdGPNIJQRZg +JGIzV1FdSp2ecrzZ0ERALtz4VkOyWK9Nfhy6TJBiKvc4gDS7M/meNl4GdIu8eV6W +BdL/VlR1JsUSBejd2vjdd5X0SZoMi6dJzUoU6EhmyRFnZMdLAlRcn7eHQqXW5bqP +ZqnGAbb68tVLZI0vt0QyYlmlaWKFkOMGSS+5Gu04uoYNDufHzMb0Nh5vt5MEEkNE +ZYERuzT/PcrI1dEq6di9iK6dRoeTERMgWcZoKg7Yx5jReks0v+Pae4d+B4dHdB52 +LtmK9bn43/E2gbVhRYNDX7xi6rG9AxdshL3/IcLq11bWiDjPL7sUAcvJKk//KXEc +nA/p8H+ZHsD3E1Lln+/3Yf7nj/cxjbF46RRm0yzLdDuTVa+Ov8OB7DtGhT8wW+Ok +gEJXdXlcnzv51gGa2F35/DFi +-----END X509 CRL----- diff --git a/idk/testenv/certs/ca.crt b/idk/testenv/certs/ca.crt new file mode 100644 index 000000000..ab84e8414 --- /dev/null +++ b/idk/testenv/certs/ca.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDEwJjYTAg +Fw0yMjA3MjIxOTUxNDVaGA8yMTIyMDcyMjE5NTE0MlowDTELMAkGA1UEAxMCY2Ew +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQD3qe+w4WaeFtroEqBpxKJY +/a/IpC12Bg4HAYqkK3FwWhOVA+AQ1w2AA/BnLa3u8eszVsNdsnmo+qWZmI9fiJiR +sylJNbnATuWYus7rNNXWnhot3P6CJjEMs5phC0S9zaizFVzL7GFnpjfGgPrbZoQJ +Blmxb/IuEaaKGjUw0MSs83SuauRTGBjVSX80JYI61Wc/KO8hhmLEMne9WSD+Ow3i +GEt5RGRtN6HLkmCBPHieBsWtqToltEV5AqgOXiskGK16q13osBK6mg17QDqg3g7z +w2XSGQx/HSS8e16SqBBt3Ia43ZL7r8qgNxXA9wQP86RKI55ncR3Q7MGVcIMobYbh +gB3nlgqSIYkTs5+5Ffq3na+Fv7yjhw/4gl9UKb84wpZdgHyL4HFrkwdZ3k/go319 +6n0gLpAsgruBF8MNRdQmyojFJX0NKgT7qW6FabpjZklLfzI8MWHX+2sCmICc8Ny5 +imbdz9sJGJi9vEU+AT6HK0pNHQx+4aQyiq/Md3XFNJmkvt9m9vfE7IcTlV/1Pf7W +7Sj06q55k9lO+nmv6qfu3nO1EL+MIHDvObkqNrKiA4ynuBWa+ZIwjLvc/zs6w6or +l7qGSBZZCHv/e/cPrq/EIxUAvD9yhUUbpJY2FCTGv5U87vxWmqHGnoTviRbkg9u7 +6mEwX84Xspg1bTgMbHs7OQIDAQABo0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T +AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU+NtDPKa1UzeelNYEuhD5snOV+aowDQYJ +KoZIhvcNAQELBQADggIBADLv2XnXmYCpHVjqVD4NHmg7iv1nitOPsgcqmIUlJ8ZA +iJKN7o5eZs1k26MQXFjcTtEqjV7+yzMfnH53bvD5oEzpxzK6IzQyhxOmz07h907w +/31GVy1VD9+hfUukRnwcVCabc8attyrSs1rI+4RmMdEBNrUEQkNnwWxwzgBMFaIM +P2uH8qen3EIJFxLMl5JJOYE2FzuXrTpvsA0jsCzxVI8bEHzBVaLiNqdMQedsdKAV +WLp64yW/ACnqadk1YIfb8S4sAx/HsLBsnz5+LHHoCzUcodSVODm/otBxJAB2vNUb +ulh3bSWZVdQ4SykMFLlDDd0l+gbgPCVsB8aKj5r6b4EuM6Bsq8GTG511f03vP96g +U4sUkZHssYxA7T5VzIHUtzSl0xC0JngVPVXAcUqGv0etNwlaL/zDotVC8mtPTF15 +cTwy9upE/MHXrYegMTdi2t5ZvM9vVHWemSJ1J0X0jsVmJtT9hYuzPyFR8qAEpd06 +XZD2upB8c3X+kyWdIV0oh2fk37glUU3JihZTRib24qBZ7TUlkGIM0K3PkUHlZ8+v +ljwouIa5Ghf+rYBA0ABJeYdFw6i9hRglWvBc/FHmpIBl9gLzB7+C9Yg20WXMZCvr +p7H/xSf5Dh8fpCO0yeGdpzfWy/3kpTmxg9/RPWyv8hTaB+4ur6CY3pVsVcshLhS3 +-----END CERTIFICATE----- diff --git a/idk/testenv/certs/ca.key b/idk/testenv/certs/ca.key new file mode 100644 index 000000000..d208e1915 --- /dev/null +++ b/idk/testenv/certs/ca.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKgIBAAKCAgEA96nvsOFmnhba6BKgacSiWP2vyKQtdgYOBwGKpCtxcFoTlQPg +ENcNgAPwZy2t7vHrM1bDXbJ5qPqlmZiPX4iYkbMpSTW5wE7lmLrO6zTV1p4aLdz+ +giYxDLOaYQtEvc2osxVcy+xhZ6Y3xoD622aECQZZsW/yLhGmiho1MNDErPN0rmrk +UxgY1Ul/NCWCOtVnPyjvIYZixDJ3vVkg/jsN4hhLeURkbTehy5JggTx4ngbFrak6 +JbRFeQKoDl4rJBiteqtd6LASupoNe0A6oN4O88Nl0hkMfx0kvHtekqgQbdyGuN2S ++6/KoDcVwPcED/OkSiOeZ3Ed0OzBlXCDKG2G4YAd55YKkiGJE7OfuRX6t52vhb+8 +o4cP+IJfVCm/OMKWXYB8i+Bxa5MHWd5P4KN9fep9IC6QLIK7gRfDDUXUJsqIxSV9 +DSoE+6luhWm6Y2ZJS38yPDFh1/trApiAnPDcuYpm3c/bCRiYvbxFPgE+hytKTR0M +fuGkMoqvzHd1xTSZpL7fZvb3xOyHE5Vf9T3+1u0o9OqueZPZTvp5r+qn7t5ztRC/ +jCBw7zm5KjayogOMp7gVmvmSMIy73P87OsOqK5e6hkgWWQh7/3v3D66vxCMVALw/ +coVFG6SWNhQkxr+VPO78Vpqhxp6E74kW5IPbu+phMF/OF7KYNW04DGx7OzkCAwEA +AQKCAgEA6bBo4f8dhAhO0HJa+NI42j2t82WvG9GExOmYd2YiqP/lwFMixuEU9PlC +iykYGQIei5fPyoaQs3imb3L7vgo25CwoxdKzDhmkHWQPwPJe4B7Y1vPTFt2QpMqH +3g/y8iGvkCOVJzpJgrLdqCmmCwYFijp6wam+2+d9vIwUKpajLgqey8FC5oEzVXX/ +WCYYZwlcXcVzNrAGW9i/EWSbdCgm5nNELA3zsPawbVUWSHvV2E7Nkhq/Kjqa3x85 +ki0bCflbIAe5GcmiMn8QP38QkyBU/YAfgIpwNzU5p7vFNh7tOay/VoqEmYZ7bIft +t+Gc7KxaFjbbzgF3P99WnnrG14vZmuy4w/hCKsqDPNRefBTs6YQnEbfmu6CApuiP +Sog69F9n3oEQFzYbePeUDe9pOv8LpTDDkZL/gPW83Pp3C8LFtYhuXtGBWAvBj9P6 +/ryG5pC9USk1gD6mJLBY+UbvEDsN7TKRLX8+Zx6M8YSoAMFceHNW91GGUd1I95s8 +ZQqCNSJ8fR2jscpB8bs9pUs0pa2/WLG8EVaQ10H6nYn0aC/ySQAm92nG5dVnd9Ze +mXkmSOnWVMfLhw7h8vI9hv3E39EAYpwvCS/c4STNJX3dl5fsBq63UWBkHBW83mXR +4w/AT8jvHNpmLRumSBGULFZI9pAajI0ZFODL8JSySEE1KqvTLc0CggEBAP/VAze7 +jAroP0N3icm1eZY0T2WaFqSOra3PO1Y/9NLi+wsteUnf1jMlvAO6qkHgV59RCjCu +X6fRCdiGGmUPS8ksPBzWshfUK9d+9ENIL3hj0gqNqpqDDqBNyqTICML1FWGLnVT7 +Z5o0cPvqh0w+/Xv9A/67ryz9QpjaN8VsP2P/X7gBIgTZrv/yRy8oBI1kCebVdwfK +NEW6B8+yB67kt9yyRELPhXd67PqRwjTTkJkAvaghOJl9lQ7wm4qRyA2DHEoFuKK9 +XPBWvQzBLtBPsVOPdyk9ENfYXIjoqkz4wyJKER4ltAEU+Eb2Daa1sjMUR94FneF6 +redWZrAFHUeav18CggEBAPfTjRwmd1ROhoETMKdx8A1Q40Edy7FNdeVGPA7Evagn +77hmXbQlBHP1jCvAOisGJ3jG7L6mkpDltdsRUqHFnr3u3xV1KAK0kxMlefYKh6da +3/vDOd7xODed7QsFvmJH3YS0Sbjs1/C5WwGdqRopPzX73aS8Y+hJzhfDUsDV/PA4 +PcHAT+Q86Rbr31XUURqP8+v5KEGkbHB0NBe/4t4sK8YY7KBbeLbB8zQR5pg4keKz +5M3lFIIpzcSsYVbObSTf1iBsMsGgTP26d+266qtmSwabBtD4t6Lye0uugLbAg6C+ +FHk7cv0n3NxeoBFxkN0fFN4r8sKttFlMNgdbdo99RGcCggEBAMdduKQ2A2x8kNCC +113Zjmb/XOBQtFSI29AXLqaIMMInIHwVc++d/87cGSjOzt+HdMEy5j4JpYGh5YpW +9zrKMMUVM8NFjIQFVCUbSj8kgdnP8F9JByph94P1G3ZObIWBeKgLpRAU2yfQtjub +CNTiQafeBL7+hAULWFrFs7CmKsBCwtUiDOC6wyWyKMcW6HVHAHBi6d+oNBQiZPP2 +SQaCNsZGJevqzJfPs92QuUdxl72kVigvu2vh8ccyugPCl6PwCJum2bv41fR1o93M +ri6n7AiyRKpebEHI2lPW/N/+/BI8phpYR26QaOrj1L+V2Mj1hQwAVIjikaM2Mc/6 +LFcgwQECggEBAPBw75dAOsYw6Y6Rb8MFaEGDGPk0T0vWO2wWmG47s0ZSeOIPbxo4 +T/mxYi2Qct8LOYCUf1z5f3nVZHsGc4VAlqLv/sByyj7Vs1wAIDP2Q2a7ZFR/NMZ4 +gnJzZmgrSmtQDjuSL3SbVWbYbtNCg64+FnXpx0DtBoF4Gdw0RTWSZ7Uo28H/M4Pd +FMiIUEaVl5qNz7pCIiyNuifglin0ocesU0v/IpTyKkwmIC+ErpVBTUkGABdDCoK+ +zETkegweewYrpTQPxa7WN9xz7adYkhV5SZE/F33n0ULmv3jN9VNZtFtgD70PUKEM +69ticyp5ZHMklLp5KS54GWIJ7uF0e7L7dkECggEAc2MBDPn0b5kb+7YTy5eayizM +n6OcUrTRpTpVGiRmeYkG25VNwH+P99dwbYV/+Im8TwNmlmfs4i1r0gx04lMDOiPr +eQ3c6LqI/N49QfFWOZLPjh5noZM7Rae/xkHTar7g49LUFGv1RiWNyIylzW931Ysc +/nwVY8ERIhNUp/7OTosIZDdF0TEnQYl2j3SvYd3SMqJpUBGX4ClEADzMil+hiD7w +DkLa9GFrGMAgGkcdp3bl1IUSipyI9zGdoUUMw/xXHdycm0MMbhhNn3M7j82bF6aP +OlirJSWDdOlclNXSpVTaNZ6zfBtaMfnZgUM2LF6U2ZtI0iC5ak/nDPo85Eiltw== +-----END RSA PRIVATE KEY----- diff --git a/idk/testenv/certs/localhost.crt b/idk/testenv/certs/localhost.crt new file mode 100644 index 000000000..6708b2c7e --- /dev/null +++ b/idk/testenv/certs/localhost.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENjCCAh6gAwIBAgIQLtKA8VN9DP2u3nQt1rcZFzANBgkqhkiG9w0BAQsFADAN +MQswCQYDVQQDEwJjYTAgFw0yMjA3MjIxOTUxNDVaGA8yMTIyMDcyMjE5NTE0Mlow +FDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAsxpHn/bm5EwiYcKIKY3sKG5sByIJa6gG6MFnrBt2Urd9LlDEnyq6A38i +fhIwTqPUY4dvCXW6SNOqp/ugTCbp78F0GUPvJodK+IsrvvVjmQeXg/9ieN91VqY5 +xaVkkaLOEWrcoTAD23+eO0Q3afG5+AFplFyrGwsCFIgz0iB8DMuixsObCao3EWA+ +YwiFUTFE6gthq2rPPXzFtszlGFm6ZJAJOIfnVTgEjNMSc5KgkF39+1vL6URtybnk +3thhnsgSWQDoWgKiBxPt/IuTnJun5JdHkgKTgfO2PVczsFmMzg2e+LJjI8ds8GEY +T7P9jP5KjtzrZ8WMKw6BeeNzXCmjvQIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwID +uDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFB9m9jk7 +qfCfPnHUcWDTf7b40ZH0MB8GA1UdIwQYMBaAFPjbQzymtVM3npTWBLoQ+bJzlfmq +MBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAgEAwwXgkVYu +VBq6Uxm+DORby4LiFmLwKIJFuO1UUlAvqNAmUyy6h3S/azb9qvfNiMmHe0+C9j2M +t4eb1KGbZaNiMr5bATFGkJzQl4bEsKZqLv23D6LDRV8D/DtZzNb6e2xhIx1uQYc8 +J8oVlciTKVr5jI82ewvO4O4mu9MlFACva1Zvzk0CB4UZEq1QXpTAlNPG7e3PVT1u +wNZXJ/8kmE1/7OMfQ9PZBGtiYK3OAiTLc0GHFhNjnCFWvFq+sD70bSJCiy3UjMUq +GhcAVHsyzv+O2nmDX4G/QXn+An1wb6hfKYFsR4nWBXQn1HjaswXdw91O6t1UViTS +RittkL/jS3Pn1wzBl80zn+/oOcxSt/KKA07Wfi4JYk6KHWHMk6lTnvMn+csXiRpq +hvUd4gcr4fTYynaXWMP3Of+H1DyJ0edXHxrHjVRS7f9AOpQF1LaZSkWff9ety5Ir +omCvkmopsOeFxKvrbVvgkAi0r8rwfockSNxZI2tp2QFXu6FDywKtL/P/YBJujcsm +zm5XFrjnri/R+c9JQNbuctZtb3Y1WAXnz2RWeunNxxjyaYvEiWh6vXgu0QCXUbev +4wUOK+gFgyczHtbprph9a5iUjEA3P+wzp5u7zGpax07BXMEFSul0HEklc1YP3/ac +35SOBQlvo1oX0VJE0CZB8zlT7upPTuTjus0= +-----END CERTIFICATE----- diff --git a/idk/testenv/certs/localhost.csr b/idk/testenv/certs/localhost.csr new file mode 100644 index 000000000..86fd59537 --- /dev/null +++ b/idk/testenv/certs/localhost.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICgDCCAWgCAQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAsxpHn/bm5EwiYcKIKY3sKG5sByIJa6gG6MFnrBt2 +Urd9LlDEnyq6A38ifhIwTqPUY4dvCXW6SNOqp/ugTCbp78F0GUPvJodK+IsrvvVj +mQeXg/9ieN91VqY5xaVkkaLOEWrcoTAD23+eO0Q3afG5+AFplFyrGwsCFIgz0iB8 +DMuixsObCao3EWA+YwiFUTFE6gthq2rPPXzFtszlGFm6ZJAJOIfnVTgEjNMSc5Kg +kF39+1vL6URtybnk3thhnsgSWQDoWgKiBxPt/IuTnJun5JdHkgKTgfO2PVczsFmM +zg2e+LJjI8ds8GEYT7P9jP5KjtzrZ8WMKw6BeeNzXCmjvQIDAQABoCcwJQYJKoZI +hvcNAQkOMRgwFjAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQAD +ggEBAItPe0ClBPlTpkfmbTE0JWsai6Nh12bakigQePI58HYbeV2g0Ld9vpUNGE+i +esTnvDKSYEHKyscNRsehXU8XArKEj6MzUgicPxhqr0eow9O2kGanUz5/M4Y8w0Oa +Q2wUCpqS08jCT0bwdCtFY/y19DXJmwovkGa5+yB+UV5FKkA31l6X7c0vzrdQexAc +FOQjG/9TpvSWXkvkZOv9041f9xeg2g23lfx5gnDvef0hgKhbOsN9tr6tVfJ4zGDv +qC+PuKMTLTfJWKgc2wNLBevA3lYFoHchD+hZMGNktsMraS2Re0FC6MCqH9UMlSGd +T4FN0g5TdI1o5/Hcxjmeac+T444= +-----END CERTIFICATE REQUEST----- diff --git a/idk/testenv/certs/localhost.key b/idk/testenv/certs/localhost.key new file mode 100644 index 000000000..4db92c33f --- /dev/null +++ b/idk/testenv/certs/localhost.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAsxpHn/bm5EwiYcKIKY3sKG5sByIJa6gG6MFnrBt2Urd9LlDE +nyq6A38ifhIwTqPUY4dvCXW6SNOqp/ugTCbp78F0GUPvJodK+IsrvvVjmQeXg/9i +eN91VqY5xaVkkaLOEWrcoTAD23+eO0Q3afG5+AFplFyrGwsCFIgz0iB8DMuixsOb +Cao3EWA+YwiFUTFE6gthq2rPPXzFtszlGFm6ZJAJOIfnVTgEjNMSc5KgkF39+1vL +6URtybnk3thhnsgSWQDoWgKiBxPt/IuTnJun5JdHkgKTgfO2PVczsFmMzg2e+LJj +I8ds8GEYT7P9jP5KjtzrZ8WMKw6BeeNzXCmjvQIDAQABAoIBAFuT5meusWSuYS4n +b8P/o28Q9v+2saZwZggBTGc+K4Qj+kgCWGciS7aZ/SMFXdn3/xNdHrNxlOzD/hCi +otYNV7SV8C0zBUdoCjeHwbiEdIa80QZXQRyY9cB2gjfDV+b3nfJd964bhP1pBZk8 +SjFLvlFHN5r6vyq2uDuTYRviLEvFwMqSf0avKTC5ZgNY5GqmL5tdHiFQHhKaCuTd +BdI1RJ4Hsmjo1GfOY2vQy1mzjeraHaDhmIN9v9mmyDr/aCVaKk7QVHvAiIG/E+T/ +mQImA+1z/G6+BFxvdYu2e42N3jZvl2YELTcb6FnwIswG/1rQG2Cm6OPe2AeW1kBY +2ffdrqkCgYEA28tl3bhVUsA70+A3QS7xWuWuYuwIP1GnqWCP881G+uowC1tqVr2X +wrOEB+gF2v4JZybi6/yIE78LPf7z1pm9Oi1ZT8y/D1T+MjLux0CCG5tGWX26flPm +hFhCg2XvSpiTRnbwsbIoa3czjRxgvI1zpkLNkfV366ILOfiEGlvC+pcCgYEA0Jru +MESdulirmWWJMmIQxsGqMEdln2idh4r3csYHzUfEuQ7DSUunE9uB3ZcnsEzTbpPR +OP4+VdwfSinFA4EXIZ/kgOJMmdgWRWPMBpMkbRNOMigvy8K/k97JH8v0fV3wMa+U +5qK0O4EWthZjaJZtD2WyKoiwZDXXrJj8QsPeQssCgYEAsP529nglRXEF/JW3CSer +Nj51ErXt4kd4E15uLa8ltJL3w32HAXjFiAWVkeRXKsWdftKCs/R1BCm4/OCdLTg6 +eGniXO+M/+S6mmQHgq7A10hP+2rSzj30CKkmTre8Xb7GAl1vcDj+caPZAI5UnCHw +enebISmhuz+PeMxWXP994NsCgYBM/0K3sjv90kjUf/PaEvRaSJWG6HOMGVM7+oFH +beznSnxESjyuyyvKWpVeszJFErZf9FOfk8hybKNn/m7n0jg1gw0WvXDEwEvIJQPj +0V/6msucG9U4gpOwAuV9xQxjUc8cp9BwKNIZvJYjc7QRoKR0sHbI2FczReRrorRJ ++H4LbQKBgDprPI55tyt15PivkyGJYjeHMr6bEk7bqHMDeloPwXsbZr4Esp/4PcYB +Js2BwC+PvXUG/37uk/8B9EdC/l0mbSWos0lhIkaORErnjwWOi1NBh8ZInbetUNIi +A+TeEEeSdnK7ou4s030krS/pG0ZsTUYVEMRFwHiIvoD6/G2wsJhi +-----END RSA PRIVATE KEY----- diff --git a/idk/testenv/certs/pilosa-tls.crt b/idk/testenv/certs/pilosa-tls.crt new file mode 100644 index 000000000..9b1de2b33 --- /dev/null +++ b/idk/testenv/certs/pilosa-tls.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEODCCAiCgAwIBAgIQbk/XbQqd/JZWsL2MQ2BmpjANBgkqhkiG9w0BAQsFADAN +MQswCQYDVQQDEwJjYTAgFw0yMjA3MjIxOTUxNDVaGA8yMTIyMDcyMjE5NTE0Mlow +FTETMBEGA1UEAxMKcGlsb3NhLXRsczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAN++mmirorKBY7HNe+obmh/1od/5INgjIMobQ6BILGzKeWIH0BpEVR9w +dTUtGM2z/kct8Oi6RibOl99Lj0d/nseKn9kjqMXdJEnoyooQBI++QrWwyYHZ76ag +9H1gmpCqUQILibFGUy9WLRuJbbLAGYfFsb2aiISEIFwbhFg2uFFD8W7VGzOHCXfA +S+oiYSFP3E9pddN4bkurmeuiL+lXxFBTL+RhssdBNreiS4pJ21vbPJw0xpwU7RVB +2aSNVqfdVzXIMwnjPX9zqeGUcvJAcI+9kcMLwGmynjaZ1idVPbpmShhAHJqR/R/1 +r20i32UE6l5SHBWeW+n/2Wb5ZXHT6lkCAwEAAaOBiTCBhjAOBgNVHQ8BAf8EBAMC +A7gwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBSpCzKw +Yt9vI7BsLAy43R9fGNLbjjAfBgNVHSMEGDAWgBT420M8prVTN56U1gS6EPmyc5X5 +qjAVBgNVHREEDjAMggpwaWxvc2EtdGxzMA0GCSqGSIb3DQEBCwUAA4ICAQBPLSKl +LU3BenjGhIoPfz43odk+XWtcBWx2xxI0+RKtYMXA689lk9UO8ghtPfbhvovVzORF +Sveh1GC6n6kIwmA6v8svQewqWiKlcOglQttRuCdKPLF3y0OnyxW4ki4/nHOmKWvo +lUS+iB37HNMMkvAp9t19k3d18NVDWPpa1R8tukWYdsbeze/lznXO4lHL5AoRZqJP +h5ihCdW07spDX4N0cx09vfqCBGEMClYvnBZzIjiDdtEXjh9Ve81+kxqak6lX0nL0 +p4ilqnWbz4zokTusJZCSfPslcq7V95+3EiBZjZ/NV9ZNjR9HCjfPCe5uQqYK5LJh +1/RG8gBUfcDLvm36c2cQI0ZrG9RMXKjBPlSv3OPd4vRlEMVHVtTyxP3FAMnhlYqp +kVmgoo0ambTxoYhdS3vKV/47KNnmWiJoPNZUZO+40zRfcCuBfuPQGlQgr3pctGZy +NQVp0eNz9xOH+UDrHhPPyDG0F+XcwgflBaIWSoyh4skESlzGqTBcsKGOkVCyrapq +a5jS1z8kdbunnwit8Di0OxXHxbjoIUAEpyP9fakGRcUD4LRZOUkHiR2Dci4hpzb3 +6Xd4BtL0Va9uj//vcRQ+5nnO1PshOde6sQ7Kup2B4OmwyDPcm8Af3nViYQOt1hCc +5vO61aRQN6YmLO5i4CD+kjaurBn8ddTzbGJaaA== +-----END CERTIFICATE----- diff --git a/idk/testenv/certs/pilosa-tls.csr b/idk/testenv/certs/pilosa-tls.csr new file mode 100644 index 000000000..1392027c8 --- /dev/null +++ b/idk/testenv/certs/pilosa-tls.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICgjCCAWoCAQAwFTETMBEGA1UEAxMKcGlsb3NhLXRsczCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAN++mmirorKBY7HNe+obmh/1od/5INgjIMobQ6BI +LGzKeWIH0BpEVR9wdTUtGM2z/kct8Oi6RibOl99Lj0d/nseKn9kjqMXdJEnoyooQ +BI++QrWwyYHZ76ag9H1gmpCqUQILibFGUy9WLRuJbbLAGYfFsb2aiISEIFwbhFg2 +uFFD8W7VGzOHCXfAS+oiYSFP3E9pddN4bkurmeuiL+lXxFBTL+RhssdBNreiS4pJ +21vbPJw0xpwU7RVB2aSNVqfdVzXIMwnjPX9zqeGUcvJAcI+9kcMLwGmynjaZ1idV +PbpmShhAHJqR/R/1r20i32UE6l5SHBWeW+n/2Wb5ZXHT6lkCAwEAAaAoMCYGCSqG +SIb3DQEJDjEZMBcwFQYDVR0RBA4wDIIKcGlsb3NhLXRsczANBgkqhkiG9w0BAQsF +AAOCAQEAauULC7xyYwTWpeM7b4I3LXMHAR3Q9/kQqyvBYkMUacKZRftzGZ2TwTwZ +6PXa3TI6zFQSL7Nb+Y7ybFhKWZ6jy8TQ8iXXLERxlk//Mg7+0EKNFIACfF7+iiuB +kOyfRSIYYQ3YhdoDUHAxe44eStPlvbMK+DR1SI96gC75Q3fxN73Tj45VCvvglSYt +tx3xPx6kQjseXodjzElYPEnjTSBADY0Ep8QPCZH1Q0fCWfh4xm/nScxNvvdlhc2q +uBV5mmciUrIbJycIcYKnlcUiWz0JkEPjEVu4LORlReFrKsVlTt7JYAuFAhOHxxP9 +eroL8R2Fc5vQ/c/hM97oU2xdOrulTQ== +-----END CERTIFICATE REQUEST----- diff --git a/idk/testenv/certs/pilosa-tls.key b/idk/testenv/certs/pilosa-tls.key new file mode 100644 index 000000000..aa872e19f --- /dev/null +++ b/idk/testenv/certs/pilosa-tls.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA376aaKuisoFjsc176huaH/Wh3/kg2CMgyhtDoEgsbMp5YgfQ +GkRVH3B1NS0YzbP+Ry3w6LpGJs6X30uPR3+ex4qf2SOoxd0kSejKihAEj75CtbDJ +gdnvpqD0fWCakKpRAguJsUZTL1YtG4ltssAZh8WxvZqIhIQgXBuEWDa4UUPxbtUb +M4cJd8BL6iJhIU/cT2l103huS6uZ66Iv6VfEUFMv5GGyx0E2t6JLiknbW9s8nDTG +nBTtFUHZpI1Wp91XNcgzCeM9f3Op4ZRy8kBwj72RwwvAabKeNpnWJ1U9umZKGEAc +mpH9H/WvbSLfZQTqXlIcFZ5b6f/ZZvllcdPqWQIDAQABAoIBADNQ7OsqymL0iCAE +h/IWqI/B74GGCwFndSLFhAoj44SEH7jbH+CWYYuXaFps4G51ZNGAeOt3pZVK9sww +8UitvYX4hlbv9cqDwMnuyV1G9TTep0AyrtTIXk2yRsDmwiyB05iLeuYcwgFuW2Qg +bfd8VZ6tOenJopv6Dc3yRbVRv45rgAfcwRxhDa8xaSVf1jAlXT0+8iPQFX0OHsv6 +iWXk1c48BFEL4nQEtxcWquHqX676raDDizpeVUrnLhRzx0nYq8hiEdtm+O0VY77i +v4i9/vBuWEVVA3OkeufkkkiGuNYZyiDd1a8CZA07aJAMoSpK8pHBjT4N0j5z/lY9 ++AvGV3ECgYEA6V2qkvwjyn+aQgU/Ma2q+mOWa/GdA13vsCFcRfh57UYL95QhVezu +HPk8KskzA6W2CwhG6nhUCfHLlYKqGvozRiaNsnp5dqPMOuLdNlo5ehziIp2FhSM+ +2OmIdAHNzlWp0WaLBbNQQVddmQY1jJPmJitBmQuAs0k6g6uSaD++lfUCgYEA9XIL +d5dkKiK5w4pvAQ7tdszF2YRZvCY77J2cZKmNRO0OI10bU+m321xes+VuFap9VpRn +MTadYeZT9w3gyPX2rjU6bhKx1NKn8oqWOPmOsR+Rhc3OtEFt2fiMtIsNtH5Bd18f +VuSqri6NvGIJJjZ496gV7YtDr1VvxboaSpunoFUCgYEAgPdMnvJM7UnbfATeSZwK +U1nZ9UmPVh8BqTqmfdy1tRTy5B2u1oebh9ONFrAeSzO3CR3H4yggeWZw9e1CCKqg +z3Ha+PmKSrB220woqDLwdLWlmy+mbE9wGfvldwbQL+lTce/TgJD6F0Iq7bhqu4e4 +tvtMw0GCHJKpjb6xqH8h2kkCgYAJ+xY+Sbi4Aet96R40c8/yOcd93eTsQr3DFHGs +ojxtZhpiE8Itul5QnEP5msXMOb+ZCrXbiXYC6iPV8wmGAoKCeQWkPjxfBCXyNfJ/ +5J4J09fOEh1qtRJrf7DxEop/IXc2DHcwyGGsbZYz5+SpWiO3Jm2l2DjrY1UFPFkf +WY8KdQKBgQCtsRcM9Yhpid/wljem283Ea418nrIAY7zw4/JY4XRbaqxOW/YptQq3 +YHQP/jQb1eFeszLwNAorczdXbms/bie2u1+S+vG13z4IgmMtUVXMn8OMN9XYRGXk +UZOtUsJtD8jEEivLoeUN2vdq4oQXWimjVPlh7KS4Qu/W2r0CO2VPBg== +-----END RSA PRIVATE KEY----- diff --git a/idk/testenv/certs/theclient.crt b/idk/testenv/certs/theclient.crt new file mode 100644 index 000000000..c0387738f --- /dev/null +++ b/idk/testenv/certs/theclient.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENjCCAh6gAwIBAgIQSrfnXrPnUTXzmeGaoP31NjANBgkqhkiG9w0BAQsFADAN +MQswCQYDVQQDEwJjYTAgFw0yMjA3MjIxOTUxNDVaGA8yMTIyMDcyMjE5NTE0Mlow +FDESMBAGA1UEAxMJdGhlY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAudP6EFxKU3gcyd3NYIS7n5drg8Dwg6FyngyHsQM8l+EROAXep45iIJvu +QNiorUo+dUg5YlxRc1ElqpLi7oSrTZtRZ6EO7pyR44RJtZ9tJ6QjLSh9QaGFq0/2 +GbWQKJJlPT4ftftTdk8ioe3TTDlSmZEGBY1+6Z3c8xxk98VoYJkB86KsLtC9b8q9 +m4D3LWI4+J4echhM6x9YlHiq8HXsPHyBg51Kla3Q3jl1aDHfXuuvEiOVqxJEVx8e +11GPhYmFqQ561id9/S6uBc+u4DnNJUZ4xdA/uEo6PP4XgKBviAtaZvQGGBgtoKAr +tGBFF1QCDkq0QXvv65aArZnXyo+0ewIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwID +uDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFN7YKblI +oBtbbLrJaa4XNWrnykw3MB8GA1UdIwQYMBaAFPjbQzymtVM3npTWBLoQ+bJzlfmq +MBQGA1UdEQQNMAuCCXRoZWNsaWVudDANBgkqhkiG9w0BAQsFAAOCAgEA0usMDZ0b +Ktazcxfd7yDgmuIXy06R6fyt/wJjRdPo8oi96a0b9Zj0+BTP2HjkM8/lPO5F8HkX +Ct5tBvuVtwHiTK5fHVsAsSH9H/G9JbX+q7EF3JWx1DDYgXyhU25mcegEkyRZ+hUe +2T3nItwUYjntVoaw4zBS8awTKc78eDZQ3UV3GlGvY3nejYdhpMkGg9dJ4y4M/HGC +P1VuzEpvT7il0cCGMDpuXcdMKNvljmcZYUEC0LCAADTpgfBPGP6lZaB0kU0mpP+e +Lhl6gwZm/toT3u+MGBECUrzHhNvav9LHHBFkquhVopNEEfpBHPtMD8pYm8ULDd5w +2cy53B9m+p3a6jjB85SL9kYudrjMOCbKbABiLxUABfH+5cV9lITNm9GdwuqqtBqL +H4lBAe8wVTf+u4v14diIJXSIjw+mSf7+4htSTTB8BdBmNShmwlCfJA/PXmJqRkVl +I8KE0OTFxHM0rndawXJjFCeNpbHYlTmVW1jtgu3Oz3tqKNwZgHd8kFCwCEkJtno5 +OkKamF1AAzAQELOqzIksIxRPde7egqQ3BfsHkOBbAdybBnUKGRhKf5/rA9SZFfe4 +ncujFadlq+sUk60TTCZaCyMIxDgbb1vQk+7pf3RoB2BDLsfNCqo8rdAhcrB9/8sQ +04HBTyQF+FSJH4bStq5Zm+jMDcb9tx3EAVs= +-----END CERTIFICATE----- diff --git a/idk/testenv/certs/theclient.csr b/idk/testenv/certs/theclient.csr new file mode 100644 index 000000000..66d84c022 --- /dev/null +++ b/idk/testenv/certs/theclient.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICgDCCAWgCAQAwFDESMBAGA1UEAxMJdGhlY2xpZW50MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAudP6EFxKU3gcyd3NYIS7n5drg8Dwg6FyngyHsQM8 +l+EROAXep45iIJvuQNiorUo+dUg5YlxRc1ElqpLi7oSrTZtRZ6EO7pyR44RJtZ9t +J6QjLSh9QaGFq0/2GbWQKJJlPT4ftftTdk8ioe3TTDlSmZEGBY1+6Z3c8xxk98Vo +YJkB86KsLtC9b8q9m4D3LWI4+J4echhM6x9YlHiq8HXsPHyBg51Kla3Q3jl1aDHf +XuuvEiOVqxJEVx8e11GPhYmFqQ561id9/S6uBc+u4DnNJUZ4xdA/uEo6PP4XgKBv +iAtaZvQGGBgtoKArtGBFF1QCDkq0QXvv65aArZnXyo+0ewIDAQABoCcwJQYJKoZI +hvcNAQkOMRgwFjAUBgNVHREEDTALggl0aGVjbGllbnQwDQYJKoZIhvcNAQELBQAD +ggEBAAqCJIhdEa+y7/KwjLWdHeG4+kE0ergbmIEab4rswrUxCNq/8wedAASXGJ/O +Fj3WgxnpNnIV8MazGDbiRke498EiTiUnGQ20t0o8NXYxYxkk9SWW+DzOTojRBRjx +0HLFCImymdu8B7S/pBdzLO3RcCpa6iRdwGd/9TJgxhKf0NBC/fyZJ+fHhYGZNdt9 +U4g60/hJAD1XGBC3Ry0p8DfTpC3beb6RP0cJNT8YX4qMjq27nuQuaRKcdIV4jZa1 +rms2VspHpOPt+w+XoGFul1lfUut/nFlu5X2aTgnFNHTPZ7eDBVTBCdX1puvTvslg +gzN8dqH97Qyg3lOLYtHUii9dm5M= +-----END CERTIFICATE REQUEST----- diff --git a/idk/testenv/certs/theclient.key b/idk/testenv/certs/theclient.key new file mode 100644 index 000000000..4fa7c43c6 --- /dev/null +++ b/idk/testenv/certs/theclient.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAudP6EFxKU3gcyd3NYIS7n5drg8Dwg6FyngyHsQM8l+EROAXe +p45iIJvuQNiorUo+dUg5YlxRc1ElqpLi7oSrTZtRZ6EO7pyR44RJtZ9tJ6QjLSh9 +QaGFq0/2GbWQKJJlPT4ftftTdk8ioe3TTDlSmZEGBY1+6Z3c8xxk98VoYJkB86Ks +LtC9b8q9m4D3LWI4+J4echhM6x9YlHiq8HXsPHyBg51Kla3Q3jl1aDHfXuuvEiOV +qxJEVx8e11GPhYmFqQ561id9/S6uBc+u4DnNJUZ4xdA/uEo6PP4XgKBviAtaZvQG +GBgtoKArtGBFF1QCDkq0QXvv65aArZnXyo+0ewIDAQABAoIBAGXNQh46YSGPGL5i +O4QX0y2f52+bgGesR71cAe4wZr6RtzwowwyqDQnuQrzVtLqShNr9gSpohtqU5vym +UZn3plzyrMsHycVgku/AZh0QxNzFp9uyZcRRt4fdW2ZEOEBxyvKdGQQ6NkQHIGLz +hiEo+h5U+6aJGLDlIckxkgLG6+KWoSUH1sm+Xl9CiP4st/m7gHiqBHz6dQTDVbmC +2uJJut3rlMjK2dzTxB+5mGvzknJfaqHg8ImXSv9kUpYBqYiDNQv2qNB2AolAKKt6 +52Y8+T9iGrX78wrCfcal2cbhWe3lwnaIJ3ueeyt+5hPs8yvtq7vrrhG6d8KjiCZZ +oHPYVcECgYEA3D7jJ33oeX9/5iwBzMXAER6LFZlPDFN6LfwuvdrrO4UD4zw2NB9f +/yHXgpy1sgcSpweqEolTyQSUjqD5imJnIOujfYkrqmL6g1UlfKNwT/DtnCGAnnr2 +fwq8RB/5omuuWaQn3a61RG7lXWTE2akFd0+u7bH1qYqADmMJLOu22JsCgYEA1/69 +VnYETuETr8sCZe7Dj031w3Rc8VZWBgDO3G07tOPyadcAvAJWy/TxPQSDcKky2E0h +yO8Tw2mIxhYvLkyieok9hV4pckdaAgka8utOY0EzWTyJ64hQGRvbN6G+Tdqo2k/o +yTdhtRfYnRsZZcNdlQ0A4jkvzVAO8mU/lTSIoaECgYBDM9kh6rQtpm7DL7hY4BoL +3zL3IzFQhIQqVeF5Qrw2DA80neG4I76p3YyhqOlz6d6SIq+NOmPbWU9u+cVKqV3o +WJ4pJtqxAcSIoElw73nMmqoV0s8pDEH8X600aEFGgu7PIVycsrtSpzfLOH0sIPuu +/RxWIM/hrIYIXcWl9EJ1cwKBgGl9uOtpaGE9/Gd3NwyhuFFdOhLj2iDkkc8MxftS +Pj7ytYqLv4gTfGDQmKG8epWjjXmm8kE4wuZFvM9CNnjeZNyD+tAQVR3DS2qDF+5c +jkRbq8CBmLq4MKaSvFZHYLKVgLJfJMphig7wPpM8kQLqj+IkH7JdS8NyvloUqSEu +Ly0BAoGATwLAQ5bZ1zT+ul4zxR3vkIS7YgTcEHa5OzszKVQ6iDArRDa7NWC8R06j +1R2Ur+T3UVINVFsChDsbebb6AUoSCzM48ZDvnX6C12T0vx+wLziw29hN84gAa+1f +kgFJZ+uena+ZZc8MLyOcM6E1nW0BpAXE0yVF4Vn2Df/wNzm9cGY= +-----END RSA PRIVATE KEY----- diff --git a/idk/tls.go b/idk/tls.go new file mode 100644 index 000000000..547c5a4f0 --- /dev/null +++ b/idk/tls.go @@ -0,0 +1,234 @@ +package idk + +import ( + "crypto/tls" + "crypto/x509" + "io/ioutil" + "log" + "os" + "os/signal" + "sync" + "syscall" + + "github.com/molecula/featurebase/v3/logger" + "github.com/pkg/errors" +) + +// TLSConfig contains TLS configuration. +// *Path elements can be set with local file paths, OR with +// literal PEM data, which is detected automatically (naively). Passing +// cert data directly via environment variables is used for +// m-cloud deployment, secured via SSM. +// This makes the parameter names slightly inaccurate, but it avoids +// introducing yet another configuration parameter. +type TLSConfig struct { + // CertificatePath contains the path to the certificate (.crt or .pem file) + CertificatePath string `json:"certificate" help:"Path to certificate file, or literal PEM data."` + // CertificateKeyPath contains the path to the certificate key (.key file) + CertificateKeyPath string `json:"key" help:"Path to certificate key file, or literal PEM data."` + // CACertPath is the path to a CA certificate (.crt or .pem file) + CACertPath string `json:"ca-certificate" help:"Path to CA certificate file, or literal PEM data."` + // SkipVerify disables verification of server certificates. + SkipVerify bool `json:"skip-verify" help:"Disables verification of server certificates."` + // EnableClientVerification enables verification of client TLS certificates (Mutual TLS) + EnableClientVerification bool `json:"enable-client-verification" help:"Enable verification of client certificates."` +} + +type keypairReloader struct { + certMu sync.RWMutex + cert *tls.Certificate + certPath string + keyPath string +} + +func NewKeypairReloader(certPath, keyPath string, log logger.Logger) (*keypairReloader, error) { + result := &keypairReloader{ + certPath: certPath, + keyPath: keyPath, + } + cert, err := tls.LoadX509KeyPair(certPath, keyPath) + if err != nil { + return nil, err + } + result.cert = &cert + go func() { + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGHUP) + for range c { + log.Printf("Received SIGHUP, reloading TLS certificate and key from %q and %q", certPath, keyPath) + if err := result.maybeReload(); err != nil { + log.Printf("Keeping old TLS certificate because the new one could not be loaded: %v", err) + } + } + }() + return result, nil +} + +func NewStaticKeypair(certPemData, keyPemData []byte, log logger.Logger) (*keypairReloader, error) { + cert, err := tls.X509KeyPair(certPemData, keyPemData) + if err != nil { + return nil, err + } + return &keypairReloader{ + certPath: "", + keyPath: "", + cert: &cert, + }, nil +} + +func (kpr *keypairReloader) maybeReload() error { + if kpr.certPath == "" { + return nil + } + newCert, err := tls.LoadX509KeyPair(kpr.certPath, kpr.keyPath) + if err != nil { + return err + } + kpr.certMu.Lock() + defer kpr.certMu.Unlock() + kpr.cert = &newCert + return nil +} + +func (kpr *keypairReloader) GetCertificateFunc() func(*tls.ClientHelloInfo) (*tls.Certificate, error) { + return func(clientHello *tls.ClientHelloInfo) (*tls.Certificate, error) { + kpr.certMu.RLock() + defer kpr.certMu.RUnlock() + return kpr.cert, nil + } +} + +func (kpr *keypairReloader) GetClientCertificateFunc() func(*tls.CertificateRequestInfo) (*tls.Certificate, error) { + return func(*tls.CertificateRequestInfo) (*tls.Certificate, error) { + kpr.certMu.RLock() + defer kpr.certMu.RUnlock() + return kpr.cert, nil + } +} + +func truncateString(in string, prefixLen int) string { + out := in + if len(out) >= prefixLen { + out = out[:prefixLen] + "..." + } + return out +} + +func getKPR(CertificatePath, KeyPath string, log logger.Logger) (*keypairReloader, error) { + var err error + var kpr *keypairReloader + + _, certPathErr := os.Stat(CertificatePath) + _, keyPathErr := os.Stat(KeyPath) + if certPathErr != nil && keyPathErr != nil { + log.Printf("CertificatePath stat unsuccessful, treating as literal PEM data: %s", certPathErr) + log.Printf("CertificateKeyPath stat unsuccessful, treating as literal PEM data: %s", keyPathErr) + + kpr, err = NewStaticKeypair([]byte(CertificatePath), []byte(KeyPath), log) + if err != nil { + return nil, errors.Wrap(err, "creating static keypair") + } + } else { + kpr, err = NewKeypairReloader(CertificatePath, KeyPath, log) + if err != nil { + return nil, errors.Wrap(err, "creating keypair reloader") + } + } + return kpr, err +} + +func getCertPool(capath string) (*x509.CertPool, error) { + var caCertData []byte + var err error + _, caCertPathErr := os.Stat(capath) + if caCertPathErr != nil { + // CACertPath refers to nonexistent files; it contains literal PEM data + log.Printf("CACertPath (%s) not found, treating as literal PEM data", + truncateString(capath, 4), + ) + caCertData = []byte(capath) + } else { + caCertData, err = ioutil.ReadFile(capath) + if err != nil { + return nil, errors.Wrap(err, "loading tls ca key") + } + } + certPool := x509.NewCertPool() + ok := certPool.AppendCertsFromPEM(caCertData) + if !ok { + return nil, errors.New("error parsing CA certificate") + } + return certPool, nil +} + +func GetTLSConfigFromConfluent(config *ConfluentCommand, log logger.Logger) (TLSConfig *tls.Config, err error) { + var kpr *keypairReloader + if config.KafkaSslCertificateLocation != "" && config.KafkaSslKeyLocation != "" { + kpr, err = getKPR(config.KafkaSslCertificateLocation, config.KafkaSslKeyLocation, log) + if err != nil { + return nil, err + } + } else { + return TLSConfig, nil + } + + TLSConfig = &tls.Config{ + InsecureSkipVerify: !config.KafkaEnableSslCertificateVerification, + PreferServerCipherSuites: true, + MinVersion: tls.VersionTLS12, + GetCertificate: kpr.GetCertificateFunc(), + GetClientCertificate: kpr.GetClientCertificateFunc(), + } + + if config.KafkaSslCaLocation != "" { + certPool, err := getCertPool(config.KafkaSslCaLocation) + if err != nil { + return nil, errors.New("error building CA cert pool") + } + TLSConfig.ClientCAs = certPool + TLSConfig.RootCAs = certPool + } + + if config.KafkaEnableSslCertificateVerification { + TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert + } + return TLSConfig, nil +} +func GetTLSConfig(tlsConfig *TLSConfig, log logger.Logger) (TLSConfig *tls.Config, err error) { + if tlsConfig == nil { + return nil, nil + } + + var kpr *keypairReloader + if tlsConfig.CertificatePath != "" && tlsConfig.CertificateKeyPath != "" { + kpr, err = getKPR(tlsConfig.CertificatePath, tlsConfig.CertificateKeyPath, log) + if err != nil { + return nil, err + } + } else { + return TLSConfig, nil + } + + TLSConfig = &tls.Config{ + InsecureSkipVerify: tlsConfig.SkipVerify, + PreferServerCipherSuites: true, + MinVersion: tls.VersionTLS12, + GetCertificate: kpr.GetCertificateFunc(), + GetClientCertificate: kpr.GetClientCertificateFunc(), + } + + if tlsConfig.CACertPath != "" { + certPool, err := getCertPool(tlsConfig.CACertPath) + if err != nil { + return nil, err + } + + TLSConfig.ClientCAs = certPool + TLSConfig.RootCAs = certPool + } + + if tlsConfig.EnableClientVerification { + TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert + } + return TLSConfig, nil +} diff --git a/idk/util.go b/idk/util.go new file mode 100644 index 000000000..3e7b3b046 --- /dev/null +++ b/idk/util.go @@ -0,0 +1,13 @@ +package idk + +import ( + "github.com/molecula/featurebase/v3/pql" +) + +func scaledStringToInt(scale int64, num string) (int64, error) { + d, err := pql.ParseDecimal(num) + if err != nil { + return 0, err + } + return d.ToInt64(scale), nil +} diff --git a/idk/util_test.go b/idk/util_test.go new file mode 100644 index 000000000..87189aab1 --- /dev/null +++ b/idk/util_test.go @@ -0,0 +1,71 @@ +package idk + +import ( + "fmt" + "testing" +) + +func TestScaledStringToInt(t *testing.T) { + cases := []struct { + scale int64 + num string + expected int64 + err error + }{ + { + scale: 2, + num: "80.74", + expected: 8074, + }, + { + scale: 2, + num: "8.7", + expected: 870, + }, + { + scale: 2, + num: "8.7498", + expected: 874, + }, + { + scale: 2, + num: "1.235", + expected: 123, + }, + { + scale: 2, + num: "00001.235", + expected: 123, + }, + { + scale: 2, + num: "-00001.235000000", + expected: -123, + }, + { + scale: 2, + num: "+00001.235000000", + expected: 123, + }, + { + scale: 2, + num: "01.235000.000", + expected: 0, + err: fmt.Errorf("invalid decimal string: %v", "01.235000.000"), + }, + } + + for _, test := range cases { + t.Run(test.num, func(t *testing.T) { + res, err := scaledStringToInt(test.scale, test.num) + if res != test.expected { + t.Errorf("expected %v, got %v", test.expected, res) + } + if (test.err == nil && err != nil) || (test.err != nil && err == nil) { + t.Fatalf("expected %v, but got %v", test.err, err) + } else if test.err != nil && err != nil && test.err.Error() != err.Error() { + t.Fatalf("expected %v, but got %v", test.err, err) + } + }) + } +} diff --git a/idk/version.go b/idk/version.go new file mode 100644 index 000000000..c37967e26 --- /dev/null +++ b/idk/version.go @@ -0,0 +1,4 @@ +package idk + +var Version = "v0.0.0" +var BuildTime = "not recorded" diff --git a/idk/wait.sh b/idk/wait.sh new file mode 100755 index 000000000..36b9cd0e4 --- /dev/null +++ b/idk/wait.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +name=$1 +shift + +_start_ts=$(date +%s) +elapsed=0 +timeout=120 +while : +do + $@ > /dev/null + _ret=$? + _end_ts=$(date +%s) + if [ $_ret -eq 0 ]; then + echo "$name is available after $((_end_ts - _start_ts)) seconds." + break + else + echo "Waiting for $name after $((_end_ts - _start_ts)) seconds." + fi + sleep 1s + elapsed=$((elapsed+1)) + if [ $elapsed -ge $timeout ]; then + exit 110 + fi +done +set -ex diff --git a/qa/scripts/auth-smoke/setup.sh b/qa/scripts/auth-smoke/setup.sh index dcda4cb34..8243ece95 100755 --- a/qa/scripts/auth-smoke/setup.sh +++ b/qa/scripts/auth-smoke/setup.sh @@ -1,6 +1,10 @@ #!/bin/bash -# To run script: ./setup.sh +# To run script: ./setup.sh +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + ADMIN_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYWRtaW4ifQ.I1iCgk1VU7m6e-En4ACTHIs6V2dZpy_8j2blSSo7K3U READER_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoicmVhZGVyIn0.QcHy_W6oAYFgdBWy1CqLr55HcOyymn5zAXPJUKCvQE4 WRITER_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoid3JpdGVyIn0.aEk-12xP9RJeXog4MHO8LhuQFEjNNG2BcWDcMzSX_HI @@ -72,7 +76,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME # verify featurebase running echo "Verifying featurebase cluster running..." diff --git a/qa/scripts/perf/able/ableSetup.sh b/qa/scripts/perf/able/ableSetup.sh index 827fe0968..ae180011a 100755 --- a/qa/scripts/perf/able/ableSetup.sh +++ b/qa/scripts/perf/able/ableSetup.sh @@ -1,8 +1,11 @@ #!/bin/bash -# To run script: ./ableSetup.sh +# To run script: ./ableSetup.sh export TF_IN_AUTOMATION=1 +BRANCH_NAME=$1 +shift + if [ -z ${TF_VAR_cluster_prefix+x} ]; then echo "TF_VAR_cluster_prefix is unset"; exit 1 diff --git a/qa/scripts/perf/delete/deleteSetup.sh b/qa/scripts/perf/delete/deleteSetup.sh index 69e162aca..6b013488d 100755 --- a/qa/scripts/perf/delete/deleteSetup.sh +++ b/qa/scripts/perf/delete/deleteSetup.sh @@ -1,8 +1,12 @@ #!/bin/bash -# To run script: ./deleteSetup.sh +# To run script: ./deleteSetup.sh export TF_IN_AUTOMATION=1 +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + if [ -z ${TF_VAR_cluster_prefix+x} ]; then echo "TF_VAR_cluster_prefix is unset"; exit 1 @@ -75,7 +79,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME # verify featurebase running echo "Verifying featurebase cluster running..." diff --git a/qa/scripts/perf/delete/deleteTest.sh b/qa/scripts/perf/delete/deleteTest.sh index ddbc80bd3..d56565cdc 100755 --- a/qa/scripts/perf/delete/deleteTest.sh +++ b/qa/scripts/perf/delete/deleteTest.sh @@ -1,5 +1,9 @@ #!/bin/bash +# run ./deleteTest.sh + +CI_COMMIT_BRANCH=$1 + # get the first ingest host INGESTNODE0=$(cat ./qa/tf/perf/delete/outputs.json | jq -r '[.ingest_ips][0]["value"][0]') echo "using INGESTNODE0 ${INGESTNODE0}" @@ -9,7 +13,7 @@ DATANODE0=$(cat ./qa/tf/perf/delete/outputs.json | jq -r '[.data_node_ips][0]["v echo "using DATANODE0 ${DATANODE0}" # download datagen -aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-arm64/datagen datagen +aws s3 cp s3://molecula-artifact-storage/idk/${CI_COMMIT_BRANCH}/_latest/idk-linux-arm64/datagen datagen if (( $? != 0 )) then echo "datagen binary copy failed" diff --git a/qa/scripts/setupBackupRestoreGauntlet.sh b/qa/scripts/setupBackupRestoreGauntlet.sh index 3dd8f3c6e..82d9abeeb 100755 --- a/qa/scripts/setupBackupRestoreGauntlet.sh +++ b/qa/scripts/setupBackupRestoreGauntlet.sh @@ -1,8 +1,12 @@ #!/bin/bash -# To run script: ./setupBackupRestoreGauntlet.sh +# To run script: ./setupBackupRestoreGauntlet.sh export TF_IN_AUTOMATION=1 +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/utilCluster.sh @@ -68,7 +72,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME # verify featurebase running echo "Verifying featurebase cluster running..." diff --git a/qa/scripts/setupSamsungGauntlet.sh b/qa/scripts/setupSamsungGauntlet.sh index 99f9deb83..bbb97ddd9 100755 --- a/qa/scripts/setupSamsungGauntlet.sh +++ b/qa/scripts/setupSamsungGauntlet.sh @@ -1,8 +1,12 @@ #!/bin/bash -# To run script: ./setupSamsungGauntlet.sh +# To run script: ./setupSamsungGauntlet.sh export TF_IN_AUTOMATION=1 +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/utilCluster.sh @@ -68,7 +72,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME # verify featurebase running echo "Verifying featurebase cluster running..." diff --git a/qa/scripts/setupSmokeTest.sh b/qa/scripts/setupSmokeTest.sh index 29cef0485..ab86f05dd 100755 --- a/qa/scripts/setupSmokeTest.sh +++ b/qa/scripts/setupSmokeTest.sh @@ -1,9 +1,13 @@ #!/bin/bash -# To run script: ./setupSmokeTest.sh +# To run script: ./setupSmokeTest.sh export TF_IN_AUTOMATION=1 export AUTH_ENABLED=0 +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/utilCluster.sh @@ -69,7 +73,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME # verify featurebase running echo "Verifying featurebase cluster running..." diff --git a/qa/scripts/setupTremorDeleteCFT.sh b/qa/scripts/setupTremorDeleteCFT.sh index 33aba1e80..fa6b19345 100755 --- a/qa/scripts/setupTremorDeleteCFT.sh +++ b/qa/scripts/setupTremorDeleteCFT.sh @@ -14,6 +14,8 @@ DEPLOYED_CLUSTER_REPLICA_COUNT=$3 DEPLOYED_CLUSTER_INSTANCE_COUNT=$4 BRANCH_NAME=$5 +echo "Running tests for branch ${BRANCH_NAME}" + # update ebs device name for ingest nodes EBS_DEVICE_NAME="/dev/sdb" @@ -21,13 +23,13 @@ EBS_DEVICE_NAME="/dev/sdb" PRODUCER_IPS=$($SCRIPT_DIR/getASGInstanceIPs.sh ${STACK_NAME}-producer-asg ${AWS_PROFILE}) PRODUCER0=$(echo $PRODUCER_IPS | head -n1 | cut -d " " -f1) echo "setting up producer node, producer_ip: $PRODUCER0, EBS device: $EBS_DEVICE_NAME" -setupProducerNode $PRODUCER0 +setupProducerNode $PRODUCER0 $BRANCH_NAME # setup consumer CONSUMER_IPS=$($SCRIPT_DIR/getASGInstanceIPs.sh ${STACK_NAME}-consumer-asg ${AWS_PROFILE}) CONSUMER0=$(echo $CONSUMER_IPS | head -n1 | cut -d " " -f1) echo "setting up consumer node, consumer_ip: $CONSUMER0, EBS device: $EBS_DEVICE_NAME" -setupConsumerNode $CONSUMER0 +setupConsumerNode $CONSUMER0 $BRANCH_NAME # no ebs device, using nvme instead, we can skip ebs mount in executeGeneralNodeConfigCommands() # nvme is used for data nodes @@ -99,7 +101,7 @@ fi #setup data nodes generateInitialClusterString -setupDataNodes +setupDataNodes $BRANCH_NAME startDataNodes # copy script for test diff --git a/qa/scripts/setupTremorDeleteTest.sh b/qa/scripts/setupTremorDeleteTest.sh index af2556172..45bebdc0b 100755 --- a/qa/scripts/setupTremorDeleteTest.sh +++ b/qa/scripts/setupTremorDeleteTest.sh @@ -2,9 +2,14 @@ set -e set +x -# To run script: ./setupTremorDeleteTest.sh +# To run script: ./setupTremorDeleteTest.sh $BRANCH_NAME export TF_IN_AUTOMATION=1 +# branch name +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/utilCluster.sh @@ -14,16 +19,16 @@ EBS_DEVICE_NAME=nvme # featurebase architecture FB_BINARY=featurebase_linux_amd64 echo "Downloading FeatureBase binary" -aws s3 cp s3://molecula-artifact-storage/featurebase/master/_latest/featurebase_linux_amd64 ./ --profile=$TF_VAR_profile +aws s3 cp s3://molecula-artifact-storage/featurebase/${BRANCH_NAME}/_latest/featurebase_linux_amd64 ./ --profile=$TF_VAR_profile # datagen binary DATAGEN_BINARY=datagen echo "Downloading Datagen binary" -aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-amd64/datagen $DATAGEN_BINARY --profile=$TF_VAR_profile +aws s3 cp s3://molecula-artifact-storage/idk/${BRANCH_NAME}/_latest/idk-linux-amd64/datagen $DATAGEN_BINARY --profile=$TF_VAR_profile KAFKA_STATIC=molecula-consumer-kafka-static echo "Downloading Molecular Consumer Kafka Static binary" -aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-amd64/molecula-consumer-kafka-static ./$KAFKA_STATIC --profile=$TF_VAR_profile +aws s3 cp s3://molecula-artifact-storage/idk/${BRANCH_NAME}/_latest/idk-linux-amd64/molecula-consumer-kafka-static ./$KAFKA_STATIC --profile=$TF_VAR_profile # get the first ingest host INGESTNODE0=$(cat ./qa/tf/ci/deletetest/outputs.json | jq -r '[.ingest_ips][0]["value"][0]') @@ -73,7 +78,7 @@ then exit 1 fi -setupClusterNodes +setupClusterNodes $BRANCH_NAME rm $FB_BINARY # verify featurebase running diff --git a/qa/scripts/testBackupRestoreGauntlet.sh b/qa/scripts/testBackupRestoreGauntlet.sh index 8df04986f..d6f0df1d1 100755 --- a/qa/scripts/testBackupRestoreGauntlet.sh +++ b/qa/scripts/testBackupRestoreGauntlet.sh @@ -1,6 +1,11 @@ #!/bin/bash -source ./qa/scripts/utilCluster.sh +BRANCH_NAME=$1 + +echo "Running tests for branch ${BRANCH_NAME}" + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/utilCluster.sh # get the first ingest host INGESTNODE0=$(cat ./qa/tf/gauntlet/backuprestore/outputs.json | jq -r '[.ingest_ips][0]["value"][0]') @@ -18,7 +23,7 @@ for host in ${HOSTS[@]}; do echo $host; done -installDatagen $INGESTNODE0 +installDatagen $INGESTNODE0 $BRANCH_NAME # copy the tests over to ingest node scp -r -i ~/.ssh/gitlab-featurebase-ci.pem ./qa/scripts/backupRestoreTest.sh ec2-user@${INGESTNODE0}:/data diff --git a/qa/scripts/utilCluster.sh b/qa/scripts/utilCluster.sh index 90956b3b3..58745c8f6 100755 --- a/qa/scripts/utilCluster.sh +++ b/qa/scripts/utilCluster.sh @@ -28,9 +28,6 @@ EBS_DEVICE_NAME="" # featurebase binary FB_BINARY="" -# branch name -BRANCH_NAME="" - # AWS Profile AWS_PROFILE="" ifErr() { @@ -316,6 +313,7 @@ setupIngestNode() { echo "setting up ingest node $1 at $2" NODEIDX=$1 NODEIP=$2 + BRANCH_NAME=$3 executeGeneralNodeConfigCommands $1 $2 @@ -323,26 +321,28 @@ setupIngestNode() { ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${NODEIP} "pip3 install -U requests" ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${NODEIP} "pip3 install -U json" ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${NODEIP} "sudo yum install -y jq" - installDatagen $NODEIP + installDatagen $NODEIP $BRANCH_NAME } setupDataNodes() { + BRANCH_NAME=$1 cnt=0 for ip in ${DEPLOYED_DATA_IPS[@]} do setupDataNode $cnt $ip - setupDatadog $ip "featurebase" + setupDatadog $ip "featurebase" $BRANCH_NAME cnt=$((cnt+1)) done } setupIngestNodes() { + BRANCH_NAME=$1 cnt=0 echo "setupIngestNodes: " ${DEPLOYED_INGEST_IPS[@]} for ip in ${DEPLOYED_INGEST_IPS[@]} do - setupIngestNode $cnt $ip - setupDatadog $ip "ingest" + setupIngestNode $cnt $ip $BRANCH_NAME + setupDatadog $ip "ingest" $BRANCH_NAME cnt=$((cnt+1)) done } @@ -365,6 +365,7 @@ generateInitialClusterString() { } setupClusterNodes() { + BRANCH_NAME=$1 #data nodes generateInitialClusterString @@ -373,12 +374,12 @@ setupClusterNodes() { setupMkCertCA fi - setupDataNodes + setupDataNodes $BRANCH_NAME startDataNodes #ingest nodes - setupIngestNodes + setupIngestNodes $BRANCH_NAME } @@ -453,6 +454,8 @@ EOF } writeDatadogConfigForIngest() { + BRANCH_NAME=$1 + # general datadog config cat << EOT > datadog.yaml api_key: 6ab706d12de9cb46db25a0aabab6a004 @@ -478,6 +481,8 @@ EOT } writeDatadogConfigForFeaturebase() { + BRANCH_NAME=$1 + # general datadog config cat << EOT > datadog.yaml api_key: 6ab706d12de9cb46db25a0aabab6a004 @@ -511,6 +516,7 @@ EOT setupDatadog() { NODEIP=$1 NODE_TYPE=$2 + BRANCH_NAME=$3 cat << 'EOF' > runDatadog.sh DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=6ab706d12de9cb46db25a0aabab6a004 DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" EOF @@ -518,10 +524,10 @@ EOF if [[ "$NODE_TYPE" == "featurebase" ]] then echo "writing datadog config for featurebase node: $NODEIP, $NODE_TYPE, $BRANCH_NAME" - writeDatadogConfigForFeaturebase + writeDatadogConfigForFeaturebase $BRANCH_NAME else echo "writing datadog config for ingest node: $NODEIP, $NODE_TYPE, $BRANCH_NAME" - writeDatadogConfigForIngest + writeDatadogConfigForIngest $BRANCH_NAME fi echo "setting up datadog for $NODE_TYPE node: $NODEIP" @@ -544,8 +550,9 @@ EOF installDatagen() { INGESTNODE0=$1 + BRANCH_NAME=$2 # download datagen - aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-arm64/datagen datagen + aws s3 cp s3://molecula-artifact-storage/idk/${BRANCH_NAME}/_latest/idk-linux-arm64/datagen datagen if (( $? != 0 )) then echo "datagen binary copy failed" @@ -597,11 +604,12 @@ installDatagen() { # copy datagen to ingest nodes setupProducerNode(){ IP=$1 + BRANCH_NAME=$2 # download producer(datagen binary) from S3 DATAGEN_BINARY=datagen echo "Downloading Datagen binary" - aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-amd64/datagen $DATAGEN_BINARY --profile $AWS_PROFILE + aws s3 cp s3://molecula-artifact-storage/idk/${BRANCH_NAME}/_latest/idk-linux-amd64/datagen $DATAGEN_BINARY --profile $AWS_PROFILE mountEBSVolume $IP scp -i ~/.ssh/gitlab-featurebase-ci.pem -o "StrictHostKeyChecking no" ${DATAGEN_BINARY} ec2-user@${IP}: @@ -609,16 +617,17 @@ setupProducerNode(){ scp -i ~/.ssh/gitlab-featurebase-ci.pem -o "StrictHostKeyChecking no" ./qa/scripts/delete/tremor_keys.yaml ./qa/scripts/delete/runProducer.sh ec2-user@${IP}: ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${IP} "sudo yum install jq htop tmux -y" setupKafkaServer ${IP} - setupDatadog $IP "ingest" + setupDatadog $IP "ingest" $BRANCH_NAME } setupConsumerNode(){ IP=$1 + BRANCH_NAME=$2 # download consumer(kafka-static binary) from S3 KAFKA_STATIC=molecula-consumer-kafka-static echo "Downloading Molecular Consumer Kafka Static binary" - aws s3 cp s3://molecula-artifact-storage/idk/master/_latest/idk-linux-amd64/molecula-consumer-kafka-static ./$KAFKA_STATIC --profile $AWS_PROFILE + aws s3 cp s3://molecula-artifact-storage/idk/${BRANCH_NAME}/_latest/idk-linux-amd64/molecula-consumer-kafka-static ./$KAFKA_STATIC --profile $AWS_PROFILE mountEBSVolume $IP @@ -627,5 +636,5 @@ setupConsumerNode(){ scp -i ~/.ssh/gitlab-featurebase-ci.pem -o "StrictHostKeyChecking no" ${KAFKA_STATIC} ec2-user@${IP}: ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${IP} "chmod ugo+x /home/ec2-user/${KAFKA_STATIC}" ssh -A -i ~/.ssh/gitlab-featurebase-ci.pem -o StrictHostKeyChecking=no ec2-user@${IP} "sudo yum install jq htop tmux nc -y" - setupDatadog $IP "ingest" + setupDatadog $IP "ingest" $BRANCH_NAME } \ No newline at end of file