diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ca9d9a1 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,46 @@ +name: Image Publisher + +on: + release: + types: [ published ] + +jobs: + setup-build-push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: ${{ github.event.release.tag_name }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Dockerhub + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + - name: Setup building file structure + run: | + cp -r $GITHUB_WORKSPACE/src/ $GITHUB_WORKSPACE/docker/ + + - name: Build the image + run: | + cd $GITHUB_WORKSPACE/docker/ + docker buildx create --name mainbuilder --driver docker-container --platform linux/amd64,linux/arm64 --use + + docker buildx build --push \ + --build-arg VERSION=${{ github.event.release.tag_name }} \ + --provenance=false \ + --platform linux/amd64,linux/arm64 \ + --tag zoraxydocker/zoraxy:${{ github.event.release.tag_name }} \ + . + + docker buildx build --push \ + --build-arg VERSION=${{ github.event.release.tag_name }} \ + --provenance=false \ + --platform linux/amd64,linux/arm64 \ + --tag zoraxydocker/zoraxy:latest \ + . diff --git a/CHANGELOG.md b/CHANGELOG.md index 78afc47..4651467 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ -# 2.6.6 Jul 26 2023 +# v2.6.6 Aug 30 2023 + ++ Added basic auth editor custom exception rules ++ Fixed redirection bug under another reverse proxy and Apache location headers [#39](https://github.com/tobychui/zoraxy/issues/39) ++ Optimized memory usage (from 1.2GB to 61MB for low speed geoip lookup) [#52](https://github.com/tobychui/zoraxy/issues/52) ++ Added unset subdomain custom redirection feature [#46](https://github.com/tobychui/zoraxy/issues/46) ++ Fixed potential security issue in satori/go.uuid [#55](https://github.com/tobychui/zoraxy/issues/55) ++ Added custom acme feature in back-end, thx [@daluntw](https://github.com/daluntw) ++ Added bypass TLS check for custom acme server, thx [@daluntw](https://github.com/daluntw) ++ Introduce new startparameter `-fastgeoip=true`, see [Releases](https://github.com/tobychui/zoraxy/releases/tag/2.6.6) + +# v2.6.5.1 Jul 26 2023 + Patch on memory leaking for Windows netstat module (do not effect any of the previous non Windows builds) + Fixed potential memory leak in acme handler logic diff --git a/README.md b/README.md index 13d2e9f..4865f7b 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,12 @@ Loopback web ssh connection, by default, is disabled. This means that if you are ./zoraxy -sshlb=true ``` +## Sponsor This Project +If you like the project and want to support us, please consider a donation. You can use the links below +- [tobychui (Primary author)](https://paypal.me/tobychui) +- PassiveLemon (Docker compatibility maintainer) + + ## License This project is open source under AGPL. I open source this project so everyone can check for security issues and benefit all users. **If your plans to use this project in commercial environment which violate the AGPL terms, please contact toby@imuslab.com for an alternative commercial license.** diff --git a/docker/Dockerfile b/docker/Dockerfile index 1b742f5..8ffd402 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,22 +1,38 @@ -FROM docker.io/golang:1.21rc3-alpine3.18 +FROM docker.io/golang:alpine +# VERSION comes from the main.yml workflow --build-arg +ARG VERSION -RUN apk add --no-cache bash curl jq git sudo +RUN apk add --no-cache bash netcat-openbsd sudo -RUN mkdir -p /zoraxy/source/ &&\ - mkdir -p /zoraxy/config/ +RUN mkdir -p /opt/zoraxy/source/ &&\ + mkdir -p /opt/zoraxy/config/ &&\ + mkdir -p /usr/local/bin/ -VOLUME [ "/zoraxy/config/" ] +COPY entrypoint.sh /opt/zoraxy/ -COPY entrypoint.sh /zoraxy/ -COPY notifier.sh /zoraxy/ +RUN chmod -R 755 /opt/zoraxy/ &&\ + chmod +x /opt/zoraxy/entrypoint.sh -RUN chmod 755 /zoraxy/ &&\ - chmod +x /zoraxy/entrypoint.sh +VOLUME [ "/opt/zoraxy/config/" ] -ENV DOCKER="2.1.0" -ENV NOTIFS="1" +# If you build it yourself, you will need to add the src directory into the docker directory. +COPY ./src/ /opt/zoraxy/source/ -ENV VERSION="latest" -ENV ARGS="-port=:8000 -noauth=false" +WORKDIR /opt/zoraxy/source/ + +RUN go mod tidy &&\ + go build -o /usr/local/bin/zoraxy &&\ + rm -r /opt/zoraxy/source/ + +RUN chmod +x /usr/local/bin/zoraxy + +WORKDIR /opt/zoraxy/config/ + +ENV VERSION=$VERSION + +ENV ARGS="-noauth=false" + +ENTRYPOINT ["/opt/zoraxy/entrypoint.sh"] + +HEALTHCHECK --interval=5s --timeout=5s --retries=2 CMD nc -vz 127.0.0.1 8000 || exit 1 -ENTRYPOINT ["/zoraxy/entrypoint.sh"] diff --git a/docker/LICENSE b/docker/LICENSE deleted file mode 100644 index 1c169e2..0000000 --- a/docker/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 PassiveLemon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/docker/README.md b/docker/README.md index 3e7879b..beaaea4 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,9 +1,9 @@ -# [zoraxy-docker](https://github.com/tobychui/zoraxy/) +# [zoraxy](https://github.com/tobychui/zoraxy/) -[](https://hub.docker.com/r/passivelemon/zoraxy-docker) -[](https://hub.docker.com/r/passivelemon/zoraxy-docker) -[](https://hub.docker.com/r/passivelemon/zoraxy-docker) -[](https://hub.docker.com/r/passivelemon/zoraxy-docker) +[](https://hub.docker.com/r/zoraxydocker/zoraxy) +[](https://hub.docker.com/r/zoraxydocker/zoraxy) +[](https://hub.docker.com/r/zoraxydocker/zoraxy) +[](https://hub.docker.com/r/zoraxydocker/zoraxy) ## Setup: Although not required, it is recommended to give Zoraxy a dedicated location on the host to mount the container. That way, the host/user can access them whenever needed. A volume will be created automatically within Docker if a location is not specified. @@ -12,25 +12,24 @@ You may also need to portforward your 80/443 to allow http and https traffic. If ### Using Docker run ``` -docker run -d --name (container name) -p (ports) -v (path to storage directory):/zoraxy/data/ -e ARGS=(your arguments) -e VERSION=(version) passivelemon/zoraxy-docker:latest +docker run -d --name (container name) -p (ports) -v (path to storage directory):/opt/zoraxy/data/ -e ARGS='(your arguments)' zoraxydocker/zoraxy:latest ``` ### Using Docker Compose -``` +```yml version: '3.3' services: zoraxy-docker: - image: passivelemon/zoraxy-docker:latest + image: zoraxydocker/zoraxy:latest container_name: (container name) ports: - - 80:80 # Http port - - 443:443 # Https port - - (external):8000 # Management portal port + - 80:80 + - 443:443 + - (external):8000 volumes: - - (path to storage directory):/zoraxy/config/ # Host directory for Zoraxy file storage + - (path to storage directory):/opt/zoraxy/config/ environment: - ARGS: '(your arguments)' # The arguments to run with Zoraxy. Enter them as they would be entered normally. - VERSION: '(version in x.x.x)' # The release version of Zoraxy. + ARGS: '(your arguments)' ``` | Operator | Need | Details | @@ -38,31 +37,29 @@ services: | `-d` | Yes | will run the container in the background. | | `--name (container name)` | No | Sets the name of the container to the following word. You can change this to whatever you want. | | `-p (ports)` | Yes | Depending on how your network is setup, you may need to portforward 80, 443, and the management port. | -| `-v (path to storage directory):/zoraxy/config/` | Recommend | Sets the folder that holds your files. This should be the place you just chose. By default, it will create a Docker volume for the files for persistency but they will not be accessible. | -| `-e ARGS=(your arguments)` | No | Sets the arguments to run Zoraxy with. Enter them as you would normally. By default, it is ran with `-port=:8000 -noauth=false` | -| `-e VERSION=(version)` | Recommended | Sets the version of Zoraxy that the container will download. Must be a supported release found on the Zoraxy GitHub. Make sure that it is not set to the containers version. Defaults to the latest if not set. | -| `passivelemon/zoraxy-docker:latest` | Yes | The repository on Docker hub. By default, it is the latest version that I have published. | +| `-v (path to storage directory):/opt/zoraxy/config/` | Recommend | Sets the folder that holds your files. This should be the place you just chose. By default, it will create a Docker volume for the files for persistency but they will not be accessible. | +| `-e ARGS='(your arguments)'` | No | Sets the arguments to run Zoraxy with. Enter them as you would normally. By default, it is ran with `-noauth=false` but you cannot change the management port. This is required for the healthcheck to work. | +| `zoraxydocker/zoraxy:latest` | Yes | The repository on Docker hub. By default, it is the latest version that I have published. | ## Examples: ### Docker Run ``` -docker run -d --name zoraxy -p 80:80 -p 443:443 -p 8005:8000/tcp -v /home/docker/Containers/Zoraxy:/zoraxy/config/ -e ARGS="-port=:8000 -noauth=false" -e VERSION="2.6.5" passivelemon/zoraxy-docker:latest +docker run -d --name zoraxy -p 80:80 -p 443:443 -p 8005:8000/tcp -v /home/docker/Containers/Zoraxy:/opt/zoraxy/config/ -e ARGS='-noauth=false' zoraxydocker/zoraxy:latest ``` ### Docker Compose -``` +```yml version: '3.3' services: zoraxy-docker: - image: passivelemon/zoraxy-docker:latest + image: zoraxydocker/zoraxy:latest container_name: zoraxy ports: - 80:80 - 443:443 - 8005:8000/tcp volumes: - - /home/docker/Containers/Zoraxy:/zoraxy/config/ + - /home/docker/Containers/Zoraxy:/opt/zoraxy/config/ environment: - ARGS: '-port=:8000 -noauth=false' - VERSION: '2.6.5' + ARGS: '-noauth=false' ``` diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 871d2bd..cc51aff 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,55 +1,4 @@ #!/usr/bin/env bash +echo "Zoraxy version $VERSION" -echo "|| Testing connectivity... ||" -if ! curl -sSf https://www.github.com > /dev/null; then - echo "|| GitHub could not be reached. Please check your internet connection and try again. ||" - exit -fi -if [ "$(curl -s "https://api.github.com/repos/tobychui/zoraxy/git/refs/tags" | jq 'any(.[] | tostring; test("API rate limit exceeded"))')" = "true" ]; then - echo "|| Currently rate limited by GitHub. Please wait until it clears. ||" - exit -fi - -# Container update notifier -. /zoraxy/notifier.sh - -# Remove the V from the version if its present -VERSION=$(echo "${VERSION}" | awk '{gsub(/^v/, ""); print}') - -# If version isn't valid, hard stop. -function versionvalidate () { - if [ -z $(curl -s "https://api.github.com/repos/tobychui/zoraxy/git/refs/tags" | jq -r ".[].ref | select(contains(\"${VERSION}\"))") ]; then - echo "|| ${VERSION} is not a valid version. Please ensure it is set correctly. ||" - exit - fi -} - -# Version setting -if [ "${VERSION}" = "latest" ]; then - # Latest release - VERSION=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases | jq -r "[.[] | select(.tag_name)] | max_by(.created_at) | .tag_name") - versionvalidate - echo "|| Using Zoraxy version ${VERSION} (latest). ||" -else - versionvalidate - echo "|| Using Zoraxy version ${VERSION}. ||" -fi - -# Downloads & setup -if [ ! -f "/zoraxy/server/zoraxy_bin_${VERSION}" ]; then - echo "|| Cloning repository... ||" - cd /zoraxy/source/ - git clone --depth 1 --single-branch --branch main https://github.com/tobychui/zoraxy - cd /zoraxy/source/zoraxy/src/ - echo "|| Building... ||" - go mod tidy - go build - mkdir -p /usr/local/bin/ - mv /zoraxy/source/zoraxy/src/zoraxy /usr/local/bin/zoraxy_bin_${VERSION} - chmod 755 /usr/local/bin/zoraxy_bin_${VERSION} - echo "|| Finished. ||" -fi - -# Starting -cd /zoraxy/config/ -zoraxy_bin_${VERSION} ${ARGS} +zoraxy -port=:8000 ${ARGS} diff --git a/docker/notifier.sh b/docker/notifier.sh deleted file mode 100644 index c470012..0000000 --- a/docker/notifier.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -# Container update notifier. Funny code do not go brrrrrrr -UPDATE=$(curl -s https://api.github.com/repos/PassiveLemon/zoraxy-docker/releases | jq -r 'map(select(.prerelease = false)) | .[0].tag_name') -UPDATE1=$(echo $UPDATE | awk -F. '{print $1}') -UPDATE2=$(echo $UPDATE | awk -F. '{print $2}') -UPDATE3=$(echo $UPDATE | awk -F. '{print $3}') - -DOCKER1=$(echo $DOCKER | awk -F. '{print $1}') -DOCKER2=$(echo $DOCKER | awk -F. '{print $2}') -DOCKER3=$(echo $DOCKER | awk -F. '{print $3}') - -NOTIFY=0 - -if [ "${DOCKER1}" -lt "${UPDATE1}" ]; then - NOTIFY=1 -fi -if [ "${DOCKER1}" -le "${UPDATE1}" ] && [ "${DOCKER2}" -lt "${UPDATE2}" ]; then - NOTIFY=1 -fi -if [ "${DOCKER1}" -le "${UPDATE1}" ] && [ "${DOCKER2}" -le "${UPDATE2}" ] && [ "${DOCKER3}" -lt "${UPDATE3}" ]; then - NOTIFY=1 -fi -if [ "${NOTIFY}" = "1" ] && [ "${NOTIFS}" != "0" ]; then - echo "|| Container update available. Current (${DOCKER}): New (${UPDATE}). ||" -fi diff --git a/src/api.go b/src/api.go index d52b937..8faea65 100644 --- a/src/api.go +++ b/src/api.go @@ -55,6 +55,13 @@ func initAPIs() { authRouter.HandleFunc("/api/proxy/setIncoming", HandleIncomingPortSet) authRouter.HandleFunc("/api/proxy/useHttpsRedirect", HandleUpdateHttpsRedirect) authRouter.HandleFunc("/api/proxy/requestIsProxied", HandleManagementProxyCheck) + //Reverse proxy root related APIs + authRouter.HandleFunc("/api/proxy/root/listOptions", HandleRootRouteOptionList) + authRouter.HandleFunc("/api/proxy/root/updateOptions", HandleRootRouteOptionsUpdate) + //Reverse proxy auth related APIs + authRouter.HandleFunc("/api/proxy/auth/exceptions/list", ListProxyBasicAuthExceptionPaths) + authRouter.HandleFunc("/api/proxy/auth/exceptions/add", AddProxyBasicAuthExceptionPaths) + authRouter.HandleFunc("/api/proxy/auth/exceptions/delete", RemoveProxyBasicAuthExceptionPaths) //TLS / SSL config authRouter.HandleFunc("/api/cert/tls", handleToggleTLSProxy) @@ -164,8 +171,9 @@ func initAPIs() { //Others http.HandleFunc("/api/info/x", HandleZoraxyInfo) - http.HandleFunc("/api/conf/export", ExportConfigAsZip) - http.HandleFunc("/api/conf/import", ImportConfigFromZip) + authRouter.HandleFunc("/api/info/geoip", HandleGeoIpLookup) + authRouter.HandleFunc("/api/conf/export", ExportConfigAsZip) + authRouter.HandleFunc("/api/conf/import", ImportConfigFromZip) //Debug authRouter.HandleFunc("/api/info/pprof", pprof.Index) diff --git a/src/config.go b/src/config.go index 4fce2ef..9150476 100644 --- a/src/config.go +++ b/src/config.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "log" "net/http" "os" @@ -26,16 +25,18 @@ import ( */ type Record struct { - ProxyType string - Rootname string - ProxyTarget string - UseTLS bool - SkipTlsValidation bool - RequireBasicAuth bool - BasicAuthCredentials []*dynamicproxy.BasicAuthCredentials + ProxyType string + Rootname string + ProxyTarget string + UseTLS bool + SkipTlsValidation bool + RequireBasicAuth bool + BasicAuthCredentials []*dynamicproxy.BasicAuthCredentials + BasicAuthExceptionRules []*dynamicproxy.BasicAuthExceptionRule } -func SaveReverseProxyConfig(proxyConfigRecord *Record) error { +// Save a reverse proxy config record to file +func SaveReverseProxyConfigToFile(proxyConfigRecord *Record) error { //TODO: Make this accept new def types os.MkdirAll("./conf/proxy/", 0775) filename := getFilenameFromRootName(proxyConfigRecord.Rootname) @@ -45,10 +46,19 @@ func SaveReverseProxyConfig(proxyConfigRecord *Record) error { //Write to file js, _ := json.MarshalIndent(thisRecord, "", " ") - return ioutil.WriteFile(filepath.Join("./conf/proxy/", filename), js, 0775) + return os.WriteFile(filepath.Join("./conf/proxy/", filename), js, 0775) } -func RemoveReverseProxyConfig(rootname string) error { +// Save a running reverse proxy endpoint to file (with automatic endpoint to record conversion) +func SaveReverseProxyEndpointToFile(proxyEndpoint *dynamicproxy.ProxyEndpoint) error { + recordToSave, err := ConvertProxyEndpointToRecord(proxyEndpoint) + if err != nil { + return err + } + return SaveReverseProxyConfigToFile(recordToSave) +} + +func RemoveReverseProxyConfigFile(rootname string) error { filename := getFilenameFromRootName(rootname) removePendingFile := strings.ReplaceAll(filepath.Join("./conf/proxy/", filename), "\\", "/") log.Println("Config Removed: ", removePendingFile) @@ -66,8 +76,18 @@ func RemoveReverseProxyConfig(rootname string) error { // Return ptype, rootname and proxyTarget, error if any func LoadReverseProxyConfig(filename string) (*Record, error) { - thisRecord := Record{} - configContent, err := ioutil.ReadFile(filename) + thisRecord := Record{ + ProxyType: "", + Rootname: "", + ProxyTarget: "", + UseTLS: false, + SkipTlsValidation: false, + RequireBasicAuth: false, + BasicAuthCredentials: []*dynamicproxy.BasicAuthCredentials{}, + BasicAuthExceptionRules: []*dynamicproxy.BasicAuthExceptionRule{}, + } + + configContent, err := os.ReadFile(filename) if err != nil { return &thisRecord, err } @@ -82,6 +102,22 @@ func LoadReverseProxyConfig(filename string) (*Record, error) { return &thisRecord, nil } +// Convert a running proxy endpoint object into a save-able record struct +func ConvertProxyEndpointToRecord(targetProxyEndpoint *dynamicproxy.ProxyEndpoint) (*Record, error) { + thisProxyConfigRecord := Record{ + ProxyType: targetProxyEndpoint.GetProxyTypeString(), + Rootname: targetProxyEndpoint.RootOrMatchingDomain, + ProxyTarget: targetProxyEndpoint.Domain, + UseTLS: targetProxyEndpoint.RequireTLS, + SkipTlsValidation: targetProxyEndpoint.SkipCertValidations, + RequireBasicAuth: targetProxyEndpoint.RequireBasicAuth, + BasicAuthCredentials: targetProxyEndpoint.BasicAuthCredentials, + BasicAuthExceptionRules: targetProxyEndpoint.BasicAuthExceptionRules, + } + + return &thisProxyConfigRecord, nil +} + func getFilenameFromRootName(rootname string) string { //Generate a filename for this rootname filename := strings.ReplaceAll(rootname, ".", "_") diff --git a/src/emails.go b/src/emails.go index 0921928..55fd604 100644 --- a/src/emails.go +++ b/src/emails.go @@ -9,7 +9,7 @@ import ( "strings" "time" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/email" "imuslab.com/zoraxy/mod/utils" ) @@ -180,7 +180,7 @@ func setSMTPAdminAddress(adminAddr string) error { return sysdb.Write("smtp", "admin", adminAddr) } -//Load SMTP admin address. Return empty string if not set +// Load SMTP admin address. Return empty string if not set func loadSMTPAdminAddr() string { adminAddr := "" if sysdb.KeyExists("smtp", "admin") { @@ -223,7 +223,7 @@ func HandleAdminAccountResetEmail(w http.ResponseWriter, r *http.Request) { return } - passwordResetAccessToken = uuid.NewV4().String() + passwordResetAccessToken = uuid.New().String() //SMTP info exists. Send reset account email lastAccountResetEmail = time.Now().Unix() diff --git a/src/go.mod b/src/go.mod index 761fa8d..ad9214f 100644 --- a/src/go.mod +++ b/src/go.mod @@ -4,16 +4,15 @@ go 1.16 require ( github.com/boltdb/bolt v1.3.1 - github.com/go-acme/lego/v4 v4.12.1 // indirect + github.com/go-acme/lego/v4 v4.14.0 github.com/go-ping/ping v1.1.0 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/gorilla/sessions v1.2.1 - github.com/gorilla/websocket v1.4.2 + github.com/gorilla/websocket v1.5.0 github.com/grandcat/zeroconf v1.0.0 - github.com/likexian/whois v1.15.0 // indirect - github.com/microcosm-cc/bluemonday v1.0.24 - github.com/oschwald/geoip2-golang v1.8.0 - github.com/satori/go.uuid v1.2.0 - golang.org/x/net v0.11.0 - golang.org/x/sys v0.9.0 + github.com/likexian/whois v1.15.1 + github.com/microcosm-cc/bluemonday v1.0.25 + golang.org/x/net v0.14.0 + golang.org/x/sys v0.11.0 + golang.org/x/tools v0.12.0 // indirect ) diff --git a/src/go.sum b/src/go.sum index 44c5aef..e984002 100644 --- a/src/go.sum +++ b/src/go.sum @@ -123,7 +123,6 @@ cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOV cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= @@ -392,34 +391,59 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0/go.mod h1:NBanQUfSWiWn3QEpWDTCU0IjBECKOYvl2R8xdRtMtiM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.1.0/go.mod h1:copqlcjMWc/wgQ1N2fzsJFQxDdqKGg1EQt8T5wJMOGE= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.1.0/go.mod h1:y2zXtLSMM/X5Mfawq0lOftpWn3f4V6OCsRdINsvWBPI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0/go.mod h1:BDJ5qMFKx9DugEg3+uQSDCdbYPr5s9vBTrL9P8TpqOU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.1/go.mod h1:kX6YddBkXqqywAe8c9LyvgTCyFuZCTMF4cRPQhc3Fy8= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2/go.mod h1:QlXr/TrICfQ/ANa76sLeQyhAJyNR9sEcfNuZBkY9jgY= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/aliyun/alibaba-cloud-sdk-go v1.61.1755/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129/go.mod h1:rFgpPQZYZ8vdbc+48xibu8ALc3yeyd64IhHS+PU6Yyg= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= @@ -427,7 +451,26 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go v1.39.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v1.19.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= +github.com/aws/aws-sdk-go-v2/config v1.18.28/go.mod h1:nIL+4/8JdAuNHEjn/gPEXqtnS02Q3NXB/9Z7o5xE4+A= +github.com/aws/aws-sdk-go-v2/credentials v1.13.27/go.mod h1:syOqAek45ZXZp29HlnRS/BNgMIW6uiRmeuQsz4Qh2UE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.5/go.mod h1:Gj7tm95r+QsDoN2Fhuz/3npQvcZbkEf5mL70n3Xfluc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35/go.mod h1:ipR5PvpSPqIqL5Mi82BxLnfMkHVbmco8kUwO2xrCi0M= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29/go.mod h1:M/eUABlDbw2uVrdAn+UsI6M727qp2fxkp8K0ejcBDUY= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.36/go.mod h1:Rmw2M1hMVTwiUhjwMoIBFWFJMhvJbct06sSidxInkhY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.27/go.mod h1:ZdjYvJpDlefgh8/hWelJhqgqJeodxu4SmbVsSdBlL7E= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.30/go.mod h1:qQtIBl5OVMfmeQkz8HaVyh5DzFmmFXyvK27UgIgOr4c= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.29/go.mod h1:fDbkK4o7fpPXWn8YAPmTieAMuB9mk/VgvW64uaUqxd4= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.4/go.mod h1:JniVpqvw90sVjNqanGLufrVapWySL28fhBlYgl96Q/w= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.27.2/go.mod h1:gQhLZrTEath4zik5ixIe6axvgY5jJrgSBDJ360Fxnco= +github.com/aws/aws-sdk-go-v2/service/route53 v1.28.4/go.mod h1:VBLWpaHvhQNeu7N9rMEf00SWeOONb/HvaDUxe/7b44k= +github.com/aws/aws-sdk-go-v2/service/s3 v1.37.0/go.mod h1:PwyKKVL0cNkC37QwLcrhyeCrAk+5bY8O2ou7USyAS2A= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.13/go.mod h1:DfX0sWuT46KpcqbMhJ9QWtxAIP1VozkDWf8VAkByjYY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.13/go.mod h1:BzqsVVFduubEmzrVtUFQQIQdFqvUItF8XUq2EnS8Wog= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.3/go.mod h1:yVGZA1CPkmUhBdA039jXNJJG7/6t+G+EBWmFq23xqnY= +github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -438,12 +481,14 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= @@ -455,7 +500,9 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/civo/civogo v0.3.11/go.mod h1:7+GeeFwc4AYTULaEshpT2vIcl3Qq8HPoxA17viX3l6g= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.49.0/go.mod h1:h0QgcIZ3qEXwFiwfBO8sQxjVdYsLX+PfD7NFEnANaKg= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/cloudflare-go v0.70.0/go.mod h1:VW6GuazkaZ4xEDkFt24lkXQUsE8q7BiGqDniC2s8WEM= 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= @@ -487,9 +534,11 @@ github.com/deepmap/oapi-codegen v1.9.1/go.mod h1:PLqNAhdedP8ttRpBBkzLKU3bp+Fpy+t github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/dnsimple/dnsimple-go v0.71.1/go.mod h1:F9WHww9cC76hrnwGFfAfrqdW99j3MOYasQcIwTS/aUk= +github.com/dnsimple/dnsimple-go v1.2.0/go.mod h1:z/cs26v/eiRvUyXsHQBLd8lWF8+cD6GbmkPH84plM4U= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= 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= @@ -503,7 +552,7 @@ github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/exoscale/egoscale v0.90.0/go.mod h1:wyXE5zrnFynMXA0jMhwQqSe24CfUhmBk2WI5wFZcq6Y= +github.com/exoscale/egoscale v0.100.1/go.mod h1:BAb9p4rmyU+Wl400CJZO5270H2sXtdsZjLcm5xMKkz4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -511,22 +560,27 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/getkin/kin-openapi v0.87.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-acme/lego/v4 v4.12.1 h1:Cy3FS7wADLNBqCLpz2wdfdNrThW9rZy8RCAfnUrL2uE= -github.com/go-acme/lego/v4 v4.12.1/go.mod h1:UZoOlhVmUYP/N0z4tEbfUjoCNHRZNObzqWZtT76DIsc= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/go-acme/lego/v4 v4.14.0 h1:/skZoRHgVh0d2RK7l1g3Ch8HqeqP9LB8ZEjLdGEpcDE= +github.com/go-acme/lego/v4 v4.14.0/go.mod h1:zjmvNCDLGz7GrC1OqdVpVmZFKSRabEDtWbdzmcpBsGo= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -540,14 +594,18 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-ping/ping v1.1.0 h1:3MCGhVX4fyEUuhsfwPrsEdQw6xspHkv5zHsiSoDFZYw= github.com/go-ping/ping v1.1.0/go.mod h1:xIFjORFzTxqIV/tDVGO4eDy/bLuSyawEeojSm3GfRGk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= -github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-playground/validator/v10 v10.12.0/go.mod h1:hCAPuzYvKdP33pxWa+2+6AIKXEKqjIUyqsNCtbsSJrA= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= 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= github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw= @@ -556,10 +614,14 @@ github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -611,6 +673,7 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -640,8 +703,9 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -671,8 +735,9 @@ github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyC github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grandcat/zeroconf v1.0.0 h1:uHhahLBKqwWBV6WZUDAT71044vwOTL+McW0mBJvo6kE= github.com/grandcat/zeroconf v1.0.0/go.mod h1:lTKmG1zh86XyCoUeIHSA4FJMBwCJiQmGfcP2PdzytEs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -695,38 +760,44 @@ github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI= +github.com/hashicorp/hc-install v0.5.0/go.mod h1:JyzMfbzfSBSjoDCRPna1vi/24BEDxFaCPfdHtM5SCdo= +github.com/hashicorp/hc-install v0.5.2/go.mod h1:9QISwe6newMWIfEiXpzuu1k9HAGtQYgnSH8H9T8wmoI= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/terraform-exec v0.17.2/go.mod h1:tuIbsL2l4MlwwIZx9HPM+LOV9vVyEfBYu2GsO1uH3/8= -github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/hashicorp/terraform-exec v0.18.1/go.mod h1:58wg4IeuAJ6LVsLUeD2DWZZoc/bYi6dzhLHzxM41980= +github.com/hashicorp/terraform-json v0.15.0/go.mod h1:+L1RNzjDU5leLFZkHTFTbJXaoqUC6TqXlFgDoOXrtvk= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= 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/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI= github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -744,9 +815,10 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/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= @@ -757,12 +829,15 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= github.com/labstack/echo/v4 v4.6.3/go.mod h1:Hk5OiHj0kDqmFq7aHe7eDqI7CUhuCrfpupQtLGGLm7A= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.2/go.mod h1:kUaIbLZWttglzwNuG0pgsh5vuV6u2YcGBYz1hIPjtOQ= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= github.com/lestrrat-go/codegen v1.0.2/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM= @@ -770,11 +845,12 @@ github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++ github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/likexian/gokit v0.25.13 h1:p2Uw3+6fGG53CwdU2Dz0T6bOycdb2+bAFAa3ymwWVkM= github.com/likexian/gokit v0.25.13/go.mod h1:qQhEWFBEfqLCO3/vOEo2EDKd+EycekVtUK4tex+l2H4= -github.com/likexian/whois v1.15.0 h1:AYYJ5bNUo8Qy2T1Z5GgMp1oIcIlCcTDfg1buYz6TdAE= -github.com/likexian/whois v1.15.0/go.mod h1:456fUTkh+O8F8v09bGdVl7XxBjRaQ4LvYHyVWX5Bxyg= -github.com/likexian/whois-parser v1.24.8/go.mod h1:b6STMHHDaSKbd4PzGrP50wWE5NzeBUETa/hT9gI0G9I= -github.com/linode/linodego v1.9.1/go.mod h1:h6AuFR/JpqwwM/vkj7s8KV3iGN8/jxn+zc437F8SZ8w= +github.com/likexian/whois v1.15.1 h1:6vTMI8n9s1eJdmcO4R9h1x99aQWIZZX1CD3am68gApU= +github.com/likexian/whois v1.15.1/go.mod h1:/nxmQ6YXvLz+qTxC/QFtEJNAt0zLuRxJrKiWpBJX8X0= +github.com/likexian/whois-parser v1.24.9/go.mod h1:b6STMHHDaSKbd4PzGrP50wWE5NzeBUETa/hT9gI0G9I= +github.com/linode/linodego v1.17.2/go.mod h1:C2iyT3Vg2O2sPxkWka4XAQ5WSUtm5LmTZ3Adw43Ra7Q= github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs= github.com/liquidweb/go-lwApi v0.0.5/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs= github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ= @@ -799,22 +875,24 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/microcosm-cc/bluemonday v1.0.24 h1:NGQoPtwGVcbGkKfvyYk1yRqknzBuoMiUrO6R7uFTPlw= -github.com/microcosm-cc/bluemonday v1.0.24/go.mod h1:ArQySAMps0790cHSkdPEJ7bGkF2VePWH773hsJNSHf8= +github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= +github.com/microcosm-cc/bluemonday v1.0.25 h1:4NEwSfiJ+Wva0VxN5B8OwMicaJvD8r9tlJWm9rtloEg= +github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.47/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/mimuret/golang-iij-dpf v0.7.1/go.mod h1:IXWYcQVIHYzuM+W7kDWX0mseHDfUoqMuarxMXHVTir0= +github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= +github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/mimuret/golang-iij-dpf v0.9.1/go.mod h1:sl9KyOkESib9+KRD3HaGpgi1xk7eoN2+d96LCLsME2M= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -825,27 +903,32 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nrdcg/auroradns v1.1.0/go.mod h1:O7tViUZbAcnykVnrGkXzIJTHoQCHcgalgAe6X1mzHfk= -github.com/nrdcg/desec v0.6.0/go.mod h1:wybWg5cRrNmtXLYpUCPCLvz4jfFNEGZQEnoUiX9WqcY= +github.com/nrdcg/desec v0.7.0/go.mod h1:e1uRqqKv1mJdd5+SQROAhmy75lKMphLzWIuASLkpeFY= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/freemyip v0.2.0/go.mod h1:HjF0Yz0lSb37HD2ihIyGz9esyGcxbCrrGFLPpKevbx4= -github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c= +github.com/nrdcg/goinwx v0.8.2/go.mod h1:mnMSTi7CXBu2io4DzdOBoGFA1XclD0sEPWJaDhNgkA4= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nrdcg/nodion v0.1.0/go.mod h1:inbuh3neCtIWlMPZHtEpe43TmRXxHV6+hk97iCZicms= -github.com/nrdcg/porkbun v0.1.1/go.mod h1:JWl/WKnguWos4mjfp4YizvvToigk9qpQwrodOk+CPoA= +github.com/nrdcg/porkbun v0.2.0/go.mod h1:i0uLMn9ItFsLsSQIAeEu1wQ9/+6EvX1eQw15hulMMRw= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nzdjb/go-metaname v1.0.0/go.mod h1:0GR0LshZax1Lz4VrOrfNSE4dGvTp7HGjiemdczXT2H4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -859,15 +942,14 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/oschwald/geoip2-golang v1.8.0 h1:KfjYB8ojCEn/QLqsDU0AzrJ3R5Qa9vFlx3z6SLNcKTs= -github.com/oschwald/geoip2-golang v1.8.0/go.mod h1:R7bRvYjOeaoenAp9sKRS8GX5bJWcZ0laWO5+DauEktw= -github.com/oschwald/maxminddb-golang v1.10.0 h1:Xp1u0ZhqkSuopaKmk1WwHtjF0H9Hd9181uj2MQ5Vndg= -github.com/oschwald/maxminddb-golang v1.10.0/go.mod h1:Y2ELenReaLAZ0b400URyGwvYxHV1dLIxBuyOsyYjHK0= -github.com/ovh/go-ovh v1.1.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/ovh/go-ovh v1.4.1/go.mod h1:6bL6pPyUT7tBfI0pqOegJgRjgjuO+mOo+MyXd1EEC0M= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -879,7 +961,7 @@ github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw 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/pquerna/otp v1.3.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -907,30 +989,33 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rwtodd/Go.Sed v0.0.0-20210816025313-55464686f9ef/go.mod h1:8AEUvGVi2uQ5b24BIhcr0GCcpd/RNAFWaN2CJFrWIIQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sacloud/api-client-go v0.2.1/go.mod h1:8fmYy5OpT3W8ltV5ZxF8evultNwKpduGN4YKmU9Af7w= -github.com/sacloud/go-http v0.1.2/go.mod h1:gvWaT8LFBFnSBFVrznOQXC62uad46bHZQM8w+xoH3eE= -github.com/sacloud/iaas-api-go v1.3.2/go.mod h1:CoqpRYBG2NRB5xfqTfZNyh2lVLKyLkE/HV9ISqmbhGc= -github.com/sacloud/packages-go v0.0.5/go.mod h1:XWMBSNHT9YKY3lCh6yJsx1o1RRQQGpuhNqJA6bSHdD4= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sacloud/api-client-go v0.2.8/go.mod h1:0CV/kWNYlS1hCNdnk6Wx7Wdg8DPFCnv0zOIzdXjeAeY= +github.com/sacloud/go-http v0.1.6/go.mod h1:oLAHoDJRkptf8sq4fE8oERLkdCh0kJWfWu+paoJY7I0= +github.com/sacloud/iaas-api-go v1.11.1/go.mod h1:uBDSa06F/V0OnoR66jGdbH0PVnCJw+NeE9RVbVgMfss= +github.com/sacloud/packages-go v0.0.8/go.mod h1:btPji+wtZ+Pk7MeCy+zo61o5IziBoLdHIrdGiYq9Kb8= +github.com/sacloud/packages-go v0.0.9/go.mod h1:k+EEUMF2LlncjbNIJNOqLyZ9wjTESPIWIk1OA7x9j2Q= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.17/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/simplesurance/bunny-go v0.0.0-20221115111006-e11d9dc91f04/go.mod h1:5KS21fpch8TIMyAUv/qQqTa3GZfBDYgjaZbd2KXKYfg= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.0.4/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= -github.com/softlayer/softlayer-go v1.0.6/go.mod h1:6HepcfAXROz0Rf63krk5hPZyHT6qyx2MNvYyHof7ik4= +github.com/softlayer/softlayer-go v1.1.2/go.mod h1:hvAbzGH4LRXA6yXY8BNx99yoqZ7urfDdtl9mvBf0G+g= github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e/go.mod h1:fKZCUVdirrxrBpwd9wb+lSoVixvpwAu8eHzbQB2tums= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -950,7 +1035,6 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -960,31 +1044,35 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.3/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.490/go.mod h1:l9q4vc1QiawUB1m3RU+87yLvrrxe54jc0w/kEl4DbSQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/transip/gotransip/v6 v6.17.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= +github.com/transip/gotransip/v6 v6.20.0/go.mod h1:nzv9eN2tdsUrm5nG5ZX6AugYIU4qgsMwIn2c0EZLk8c= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= -github.com/ultradns/ultradns-go-sdk v1.4.0-20221107152238-f3f1d1d/go.mod h1:IgdoVzrGYzq4H4IGI0DAVnM3CbcuQDSxEP4s/j6cztI= -github.com/urfave/cli/v2 v2.11.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= -github.com/urfave/cli/v2 v2.14.0/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/ultradns/ultradns-go-sdk v1.5.0-20230427130837-23c9b0c/go.mod h1:F4UyVEmq4/m5lAmx+GccrxyRCXmnBjzUL09JLTQFp94= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= 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= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= @@ -1000,6 +1088,7 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -1017,6 +1106,7 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1026,26 +1116,36 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1083,9 +1183,13 @@ 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.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1121,6 +1225,7 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ 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-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 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= @@ -1136,6 +1241,7 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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= @@ -1146,6 +1252,7 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= @@ -1156,10 +1263,11 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= 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= @@ -1185,10 +1293,9 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= 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= @@ -1203,8 +1310,9 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= 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= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1257,6 +1365,7 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w 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-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1271,6 +1380,7 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/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-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1278,6 +1388,7 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/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-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1293,23 +1404,27 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220804214406-8e32c043e418/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= @@ -1318,6 +1433,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1333,16 +1450,16 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1408,9 +1525,12 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1653,7 +1773,6 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= 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= @@ -1664,11 +1783,11 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ns1/ns1-go.v2 v2.6.5/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ns1/ns1-go.v2 v2.7.6/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1682,6 +1801,7 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1692,6 +1812,7 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ= diff --git a/src/main.go b/src/main.go index 8bbac8d..edff546 100644 --- a/src/main.go +++ b/src/main.go @@ -36,9 +36,11 @@ import ( var noauth = flag.Bool("noauth", false, "Disable authentication for management interface") var showver = flag.Bool("version", false, "Show version of this server") var allowSshLoopback = flag.Bool("sshlb", false, "Allow loopback web ssh connection (DANGER)") +var allowMdnsScanning = flag.Bool("mdns", true, "Enable mDNS scanner and transponder") var ztAuthToken = flag.String("ztauth", "", "ZeroTier authtoken for the local node") var ztAPIPort = flag.Int("ztport", 9993, "ZeroTier controller API port") var acmeAutoRenewInterval = flag.Int("autorenew", 86400, "ACME auto TLS/SSL certificate renew check interval (seconds)") +var enableHighSpeedGeoIPLookup = flag.Bool("fastgeoip", false, "Enable high speed geoip lookup, require 1GB extra memory (Not recommend for low end devices)") var ( name = "Zoraxy" version = "2.6.6" @@ -96,9 +98,12 @@ func ShutdownSeq() { netstatBuffers.Close() fmt.Println("- Closing Statistic Collector") statisticCollector.Close() - fmt.Println("- Stopping mDNS Discoverer") - //Stop the mdns service - mdnsTickerStop <- true + if mdnsTickerStop != nil { + fmt.Println("- Stopping mDNS Discoverer (might take a few minutes)") + // Stop the mdns service + mdnsTickerStop <- true + } + mdnsScanner.Close() fmt.Println("- Closing Certificates Auto Renewer") acmeAutoRenewer.Close() diff --git a/src/mod/acme/acme.go b/src/mod/acme/acme.go index 12f8581..b25c4ac 100644 --- a/src/mod/acme/acme.go +++ b/src/mod/acme/acme.go @@ -5,10 +5,10 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" + "crypto/tls" "crypto/x509" "encoding/json" "encoding/pem" - "errors" "fmt" "io/ioutil" "log" @@ -28,6 +28,12 @@ import ( "imuslab.com/zoraxy/mod/utils" ) +type CertificateInfoJSON struct { + AcmeName string `json:"acme_name"` + AcmeUrl string `json:"acme_url"` + SkipTLS bool `json:"skip_tls"` +} + // ACMEUser represents a user in the ACME system. type ACMEUser struct { Email string @@ -69,7 +75,7 @@ func NewACME(acmeServer string, port string, kid string, hmacEncoded string) *AC } // ObtainCert obtains a certificate for the specified domains. -func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email string, ca string, kid string, hmacEncoded string) (bool, error) { +func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email string, caName string, caUrl string, skipTLS bool, kid string, hmacEncoded string) (bool, error) { log.Println("[ACME] Obtaining certificate...") // generate private key @@ -88,17 +94,41 @@ func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email // create config config := lego.NewConfig(&adminUser) - // setup who is the issuer and the key type - config.CADirURL = a.DefaultAcmeServer + // skip TLS verify if need + // Ref: https://github.com/go-acme/lego/blob/6af2c756ac73a9cb401621afca722d0f4112b1b8/lego/client_config.go#L74 + if skipTLS { + log.Println("[INFO] Ignore TLS/SSL Verification Error for ACME Server") + config.HTTPClient.Transport = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + TLSHandshakeTimeout: 30 * time.Second, + ResponseHeaderTimeout: 30 * time.Second, + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + } + } - //Overwrite the CADir URL if set - if ca != "" { - caLinkOverwrite, err := loadCAApiServerFromName(ca) + // setup the custom ACME url endpoint. + if caUrl != "" { + config.CADirURL = caUrl + } + + // if not custom ACME url, load it from ca.json + if caName == "custom" { + log.Println("[INFO] Using Custom ACME " + caUrl + " for CA Directory URL") + } else { + caLinkOverwrite, err := loadCAApiServerFromName(caName) if err == nil { config.CADirURL = caLinkOverwrite log.Println("[INFO] Using " + caLinkOverwrite + " for CA Directory URL") } else { - return false, errors.New("CA " + ca + " is not supported. Please contribute to the source code and add this CA's directory link.") + // (caName == "" || caUrl == "") will use default acme + config.CADirURL = a.DefaultAcmeServer + log.Println("[INFO] Using Default ACME " + a.DefaultAcmeServer + " for CA Directory URL") } } @@ -174,6 +204,25 @@ func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email return false, err } + // Save certificate's ACME info for renew usage + certInfo := &CertificateInfoJSON{ + AcmeName: caName, + AcmeUrl: caUrl, + SkipTLS: skipTLS, + } + + certInfoBytes, err := json.Marshal(certInfo) + if err != nil { + log.Println(err) + return false, err + } + + err = os.WriteFile("./conf/certs/"+certificateName+".json", certInfoBytes, 0777) + if err != nil { + log.Println(err) + return false, err + } + return true, nil } @@ -279,14 +328,34 @@ func (a *ACMEHandler) HandleRenewCertificate(w http.ResponseWriter, r *http.Requ return } + var caUrl string + ca, err := utils.PostPara(r, "ca") if err != nil { - log.Println("CA not set. Using default (Let's Encrypt)") - ca = "Let's Encrypt" + log.Println("CA not set. Using default") + ca, caUrl = "", "" + } + + if ca == "custom" { + caUrl, err = utils.PostPara(r, "caURL") + if err != nil { + log.Println("Custom CA set but no URL provide, Using default") + ca, caUrl = "", "" + } + } + + var skipTLS bool + + if skipTLSString, err := utils.PostPara(r, "skipTLS"); err != nil { + skipTLS = false + } else if skipTLSString != "true" { + skipTLS = false + } else { + skipTLS = true } domains := strings.Split(domainPara, ",") - result, err := a.ObtainCert(domains, filename, email, ca) + result, err := a.ObtainCert(domains, filename, email, ca, caUrl, skipTLS) if err != nil { utils.SendErrorResponse(w, jsonEscape(err.Error())) return @@ -314,4 +383,20 @@ func IsPortInUse(port int) bool { } defer listener.Close() return false // Port is not in use + +} + +func loadCertInfoJSON(filename string) (*CertificateInfoJSON, error) { + + certInfoBytes, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + certInfo := &CertificateInfoJSON{} + if err = json.Unmarshal(certInfoBytes, certInfo); err != nil { + return nil, err + } + + return certInfo, nil } diff --git a/src/mod/acme/autorenew.go b/src/mod/acme/autorenew.go index 28bee75..13872fd 100644 --- a/src/mod/acme/autorenew.go +++ b/src/mod/acme/autorenew.go @@ -3,6 +3,7 @@ package acme import ( "encoding/json" "errors" + "fmt" "log" "net/http" "net/mail" @@ -355,7 +356,16 @@ func (a *AutoRenewer) renewExpiredDomains(certs []*ExpiredCerts) ([]string, erro log.Println("Renewing " + expiredCert.Filepath + " (Might take a few minutes)") fileName := filepath.Base(expiredCert.Filepath) certName := fileName[:len(fileName)-len(filepath.Ext(fileName))] - _, err := a.AcmeHandler.ObtainCert(expiredCert.Domains, certName, a.RenewerConfig.Email, expiredCert.CA, "", "") + + // Load certificate info for ACME detail + certInfoFilename := fmt.Sprintf("%s/%s.json", filepath.Dir(expiredCert.Filepath), certName) + certInfo, err := loadCertInfoJSON(certInfoFilename) + if err != nil { + log.Printf("Renew %s certificate error, can't get the ACME detail for cert: %v, using default ACME", certName, err) + certInfo = &CertificateInfoJSON{} + } + + _, err = a.AcmeHandler.ObtainCert(expiredCert.Domains, certName, a.RenewerConfig.Email, certInfo.AcmeName, certInfo.AcmeUrl, certInfo.SkipTLS) if err != nil { log.Println("Renew " + fileName + "(" + strings.Join(expiredCert.Domains, ",") + ") failed: " + err.Error()) } else { diff --git a/src/mod/dynamicproxy/Server.go b/src/mod/dynamicproxy/Server.go index 4907ef4..1fa4793 100644 --- a/src/mod/dynamicproxy/Server.go +++ b/src/mod/dynamicproxy/Server.go @@ -1,7 +1,11 @@ package dynamicproxy import ( + _ "embed" + "errors" + "log" "net/http" + "net/url" "os" "strings" @@ -21,6 +25,11 @@ import ( - Vitrual Directory Routing */ +var ( + //go:embed tld.json + rawTldMap []byte +) + func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { /* Special Routing Rules, bypass most of the limitations @@ -108,10 +117,69 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, r.RequestURI+"/", http.StatusTemporaryRedirect) } else { //Passthrough the request to root - h.proxyRequest(w, r, h.Parent.Root) + h.handleRootRouting(w, r) } } else { - //No routing rules found. Route to root. + //No routing rules found. + h.handleRootRouting(w, r) + } +} + +/* +handleRootRouting + +This function handle root routing situations where there are no subdomain +, vdir or special routing rule matches the requested URI. + +Once entered this routing segment, the root routing options will take over +for the routing logic. +*/ +func (h *ProxyHandler) handleRootRouting(w http.ResponseWriter, r *http.Request) { + domainOnly := r.Host + if strings.Contains(r.Host, ":") { + hostPath := strings.Split(r.Host, ":") + domainOnly = hostPath[0] + } + + if h.Parent.RootRoutingOptions.EnableRedirectForUnsetRules { + //Route to custom domain + if h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget == "" { + //Not set. Redirect to first level of domain redirectable + fld, err := h.getTopLevelRedirectableDomain(domainOnly) + if err != nil { + //Redirect to proxy root + h.proxyRequest(w, r, h.Parent.Root) + } else { + log.Println("[Router] Redirecting request from " + domainOnly + " to " + fld) + h.logRequest(r, false, 307, "root-redirect", domainOnly) + http.Redirect(w, r, fld, http.StatusTemporaryRedirect) + } + return + } else if h.isTopLevelRedirectableDomain(domainOnly) { + //This is requesting a top level private domain that should be serving root + h.proxyRequest(w, r, h.Parent.Root) + } else { + //Validate the redirection target URL + parsedURL, err := url.Parse(h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget) + if err != nil { + //Error when parsing target. Send to root + h.proxyRequest(w, r, h.Parent.Root) + return + } + hostname := parsedURL.Hostname() + if domainOnly != hostname { + //Redirect to target + h.logRequest(r, false, 307, "root-redirect", domainOnly) + http.Redirect(w, r, h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget, http.StatusTemporaryRedirect) + return + } else { + //Loopback request due to bad settings (Shd leave it empty) + //Forward it to root proxy + h.proxyRequest(w, r, h.Parent.Root) + } + } + } else { + //Route to root h.proxyRequest(w, r, h.Parent.Root) } } @@ -150,3 +218,44 @@ func (h *ProxyHandler) handleAccessRouting(w http.ResponseWriter, r *http.Reques return false } + +// Return if the given host is already topped (e.g. example.com or example.co.uk) instead of +// a host with subdomain (e.g. test.example.com) +func (h *ProxyHandler) isTopLevelRedirectableDomain(requestHost string) bool { + parts := strings.Split(requestHost, ".") + if len(parts) > 2 { + //Cases where strange tld is used like .co.uk or .com.hk + _, ok := h.Parent.tldMap[strings.Join(parts[1:], ".")] + if ok { + //Already topped + return true + } + } else { + //Already topped + return true + } + + return false +} + +// GetTopLevelRedirectableDomain returns the toppest level of domain +// that is redirectable. E.g. a.b.c.example.co.uk will return example.co.uk +func (h *ProxyHandler) getTopLevelRedirectableDomain(unsetSubdomainHost string) (string, error) { + parts := strings.Split(unsetSubdomainHost, ".") + if h.isTopLevelRedirectableDomain(unsetSubdomainHost) { + //Already topped + return "", errors.New("already at top level domain") + } + + for i := 0; i < len(parts); i++ { + possibleTld := parts[i:] + _, ok := h.Parent.tldMap[strings.Join(possibleTld, ".")] + if ok { + //This is tld length + tld := strings.Join(parts[i-1:], ".") + return "//" + tld, nil + } + } + + return "", errors.New("unsupported top level domain given") +} diff --git a/src/mod/dynamicproxy/basicAuth.go b/src/mod/dynamicproxy/basicAuth.go index d08e76a..8c8b5c3 100644 --- a/src/mod/dynamicproxy/basicAuth.go +++ b/src/mod/dynamicproxy/basicAuth.go @@ -3,6 +3,7 @@ package dynamicproxy import ( "errors" "net/http" + "strings" "imuslab.com/zoraxy/mod/auth" ) @@ -15,6 +16,16 @@ import ( */ func (h *ProxyHandler) handleBasicAuthRouting(w http.ResponseWriter, r *http.Request, pe *ProxyEndpoint) error { + if len(pe.BasicAuthExceptionRules) > 0 { + //Check if the current path matches the exception rules + for _, exceptionRule := range pe.BasicAuthExceptionRules { + if strings.HasPrefix(r.RequestURI, exceptionRule.PathPrefix) { + //This path is excluded from basic auth + return nil + } + } + } + proxyType := "vdir-auth" if pe.ProxyType == ProxyType_Subdomain { proxyType = "subd-auth" diff --git a/src/mod/dynamicproxy/dpcore/utils.go b/src/mod/dynamicproxy/dpcore/utils.go index 12c7f78..27459b6 100644 --- a/src/mod/dynamicproxy/dpcore/utils.go +++ b/src/mod/dynamicproxy/dpcore/utils.go @@ -21,6 +21,17 @@ func replaceLocationHost(urlString string, rrr *ResponseRewriteRuleSet, useTLS b u.Scheme = "http" } + //Issue #39: Check if it is location target match the proxying domain + //E.g. Proxy config: blog.example.com -> example.com/blog + //Check if it is actually redirecting to example.com instead of a new domain + //like news.example.com. + // The later check bypass apache screw up method of redirection header + // e.g. https://imuslab.com -> http://imuslab.com:443 + if rrr.ProxyDomain != u.Host && !strings.Contains(u.Host, rrr.OriginalHost+":") { + //New location domain not matching proxy target domain. + //Do not modify location header + return urlString, nil + } u.Host = rrr.OriginalHost if strings.Contains(rrr.ProxyDomain, "/") { diff --git a/src/mod/dynamicproxy/dynamicproxy.go b/src/mod/dynamicproxy/dynamicproxy.go index 8ffe096..8b5d750 100644 --- a/src/mod/dynamicproxy/dynamicproxy.go +++ b/src/mod/dynamicproxy/dynamicproxy.go @@ -3,6 +3,7 @@ package dynamicproxy import ( "context" "crypto/tls" + "encoding/json" "errors" "log" "net/http" @@ -29,12 +30,19 @@ func NewDynamicProxy(option RouterOption) (*Router, error) { Running: false, server: nil, routingRules: []*RoutingRule{}, + tldMap: map[string]int{}, } thisRouter.mux = &ProxyHandler{ Parent: &thisRouter, } + //Prase the tld map for tld redirection in main router + //See Server.go declarations + if len(rawTldMap) > 0 { + json.Unmarshal(rawTldMap, &thisRouter.tldMap) + } + return &thisRouter, nil } @@ -65,10 +73,18 @@ func (router *Router) StartProxyService() error { return errors.New("Reverse proxy server already running") } + //Check if root route is set if router.Root == nil { return errors.New("Reverse proxy router root not set") } + //Load root options from file + loadedRootOption, err := loadRootRoutingOptionsFromFile() + if err != nil { + return err + } + router.RootRoutingOptions = loadedRootOption + minVersion := tls.VersionTLS10 if router.Option.ForceTLSLatest { minVersion = tls.VersionTLS12 @@ -246,14 +262,15 @@ func (router *Router) AddVirtualDirectoryProxyService(options *VdirOptions) erro proxy := dpcore.NewDynamicProxyCore(path, options.RootName, options.SkipCertValidations) endpointObject := ProxyEndpoint{ - ProxyType: ProxyType_Vdir, - RootOrMatchingDomain: options.RootName, - Domain: domain, - RequireTLS: options.RequireTLS, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, - Proxy: proxy, + ProxyType: ProxyType_Vdir, + RootOrMatchingDomain: options.RootName, + Domain: domain, + RequireTLS: options.RequireTLS, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, + Proxy: proxy, } router.ProxyEndpoints.Store(options.RootName, &endpointObject) @@ -271,46 +288,24 @@ func (router *Router) LoadProxy(ptype string, key string) (*ProxyEndpoint, error if !ok { return nil, errors.New("target proxy not found") } - return proxy.(*ProxyEndpoint), nil + + targetProxy := proxy.(*ProxyEndpoint) + targetProxy.parent = router + return targetProxy, nil } else if ptype == "subd" { proxy, ok := router.SubdomainEndpoint.Load(key) if !ok { return nil, errors.New("target proxy not found") } - return proxy.(*ProxyEndpoint), nil + + targetProxy := proxy.(*ProxyEndpoint) + targetProxy.parent = router + return targetProxy, nil } return nil, errors.New("unsupported ptype") } -/* -Save routing from RP -*/ -func (router *Router) SaveProxy(ptype string, key string, newConfig *ProxyEndpoint) { - if ptype == "vdir" { - router.ProxyEndpoints.Store(key, newConfig) - - } else if ptype == "subd" { - router.SubdomainEndpoint.Store(key, newConfig) - } - -} - -/* -Remove routing from RP -*/ -func (router *Router) RemoveProxy(ptype string, key string) error { - //fmt.Println(ptype, key) - if ptype == "vdir" { - router.ProxyEndpoints.Delete(key) - return nil - } else if ptype == "subd" { - router.SubdomainEndpoint.Delete(key) - return nil - } - return errors.New("invalid ptype") -} - /* Add an default router for the proxy server */ @@ -335,14 +330,15 @@ func (router *Router) SetRootProxy(options *RootOptions) error { proxy := dpcore.NewDynamicProxyCore(path, "", options.SkipCertValidations) rootEndpoint := ProxyEndpoint{ - ProxyType: ProxyType_Vdir, - RootOrMatchingDomain: "/", - Domain: proxyLocation, - RequireTLS: options.RequireTLS, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, - Proxy: proxy, + ProxyType: ProxyType_Vdir, + RootOrMatchingDomain: "/", + Domain: proxyLocation, + RequireTLS: options.RequireTLS, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, + Proxy: proxy, } router.Root = &rootEndpoint diff --git a/src/mod/dynamicproxy/proxyEndpoint.go b/src/mod/dynamicproxy/proxyEndpoint.go new file mode 100644 index 0000000..42a7de1 --- /dev/null +++ b/src/mod/dynamicproxy/proxyEndpoint.go @@ -0,0 +1,68 @@ +package dynamicproxy + +import "errors" + +/* + ProxyEndpoint.go + author: tobychui + + This script handle the proxy endpoint object actions + so proxyEndpoint can be handled like a proper oop object + + Most of the functions are implemented in dynamicproxy.go +*/ + +//Get the string version of proxy type +func (ep *ProxyEndpoint) GetProxyTypeString() string { + if ep.ProxyType == ProxyType_Subdomain { + return "subd" + } else if ep.ProxyType == ProxyType_Vdir { + return "vdir" + } + + return "unknown" +} + +//Update change in the current running proxy endpoint config +func (ep *ProxyEndpoint) UpdateToRuntime() { + if ep.IsVdir() { + ep.parent.ProxyEndpoints.Store(ep.RootOrMatchingDomain, ep) + + } else if ep.IsSubDomain() { + ep.parent.SubdomainEndpoint.Store(ep.RootOrMatchingDomain, ep) + } +} + +//Return true if the endpoint type is virtual directory +func (ep *ProxyEndpoint) IsVdir() bool { + return ep.ProxyType == ProxyType_Vdir +} + +//Return true if the endpoint type is subdomain +func (ep *ProxyEndpoint) IsSubDomain() bool { + return ep.ProxyType == ProxyType_Subdomain +} + +//Remove this proxy endpoint from running proxy endpoint list +func (ep *ProxyEndpoint) Remove() error { + //fmt.Println(ptype, key) + if ep.IsVdir() { + ep.parent.ProxyEndpoints.Delete(ep.RootOrMatchingDomain) + return nil + } else if ep.IsSubDomain() { + ep.parent.SubdomainEndpoint.Delete(ep.RootOrMatchingDomain) + return nil + } + return errors.New("invalid or unsupported type") + +} + +//ProxyEndpoint remove provide global access by key +func (router *Router) RemoveProxyEndpointByRootname(proxyType string, rootnameOrMatchingDomain string) error { + targetEpt, err := router.LoadProxy(proxyType, rootnameOrMatchingDomain) + if err != nil { + return err + } + + return targetEpt.Remove() +} diff --git a/src/mod/dynamicproxy/rootRoute.go b/src/mod/dynamicproxy/rootRoute.go new file mode 100644 index 0000000..7ec8daa --- /dev/null +++ b/src/mod/dynamicproxy/rootRoute.go @@ -0,0 +1,51 @@ +package dynamicproxy + +import ( + "encoding/json" + "errors" + "log" + "os" + + "imuslab.com/zoraxy/mod/utils" +) + +/* + rootRoute.go + + This script handle special case in routing where the root proxy + entity is involved. This also include its setting object + RootRoutingOptions +*/ + +var rootConfigFilepath string = "conf/root_config.json" + +func loadRootRoutingOptionsFromFile() (*RootRoutingOptions, error) { + if !utils.FileExists(rootConfigFilepath) { + //Not found. Create a root option + js, _ := json.MarshalIndent(RootRoutingOptions{}, "", " ") + err := os.WriteFile(rootConfigFilepath, js, 0775) + if err != nil { + return nil, errors.New("Unable to write root config to file: " + err.Error()) + } + } + newRootOption := RootRoutingOptions{} + rootOptionsBytes, err := os.ReadFile(rootConfigFilepath) + if err != nil { + log.Println("[Error] Unable to read root config file at " + rootConfigFilepath + ": " + err.Error()) + return nil, err + } + err = json.Unmarshal(rootOptionsBytes, &newRootOption) + if err != nil { + log.Println("[Error] Unable to parse root config file: " + err.Error()) + return nil, err + } + + return &newRootOption, nil +} + +// Save the new config to file. Note that this will not overwrite the runtime one +func (opt *RootRoutingOptions) SaveToFile() error { + js, _ := json.MarshalIndent(opt, "", " ") + err := os.WriteFile(rootConfigFilepath, js, 0775) + return err +} diff --git a/src/mod/dynamicproxy/subdomain.go b/src/mod/dynamicproxy/subdomain.go index 4be9c36..9012724 100644 --- a/src/mod/dynamicproxy/subdomain.go +++ b/src/mod/dynamicproxy/subdomain.go @@ -34,13 +34,14 @@ func (router *Router) AddSubdomainRoutingService(options *SubdOptions) error { proxy := dpcore.NewDynamicProxyCore(path, "", options.SkipCertValidations) router.SubdomainEndpoint.Store(options.MatchingDomain, &ProxyEndpoint{ - RootOrMatchingDomain: options.MatchingDomain, - Domain: domain, - RequireTLS: options.RequireTLS, - Proxy: proxy, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, + RootOrMatchingDomain: options.MatchingDomain, + Domain: domain, + RequireTLS: options.RequireTLS, + Proxy: proxy, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, }) log.Println("Adding Subdomain Rule: ", options.MatchingDomain+" to "+domain) diff --git a/src/mod/dynamicproxy/tld.json b/src/mod/dynamicproxy/tld.json new file mode 100644 index 0000000..346b471 --- /dev/null +++ b/src/mod/dynamicproxy/tld.json @@ -0,0 +1,9106 @@ +{ + "!city.kawasaki.jp": 1, + "!city.kitakyushu.jp": 1, + "!city.kobe.jp": 1, + "!city.nagoya.jp": 1, + "!city.sapporo.jp": 1, + "!city.sendai.jp": 1, + "!city.yokohama.jp": 1, + "!www.ck": 1, + "*.0emm.com": 1, + "*.advisor.ws": 1, + "*.alces.network": 1, + "*.awdev.ca": 1, + "*.azurecontainer.io": 1, + "*.backyards.banzaicloud.io": 1, + "*.banzai.cloud": 1, + "*.bd": 1, + "*.beget.app": 1, + "*.build.run": 1, + "*.builder.code.com": 1, + "*.bzz.dapps.earth": 1, + "*.ck": 1, + "*.cloud.metacentrum.cz": 1, + "*.cloudera.site": 1, + "*.cns.joyent.com": 1, + "*.code.run": 1, + "*.compute-1.amazonaws.com": 1, + "*.compute.amazonaws.com": 1, + "*.compute.amazonaws.com.cn": 1, + "*.compute.estate": 1, + "*.cryptonomic.net": 1, + "*.customer-oci.com": 1, + "*.dapps.earth": 1, + "*.database.run": 1, + "*.dev-builder.code.com": 1, + "*.dev.adobeaemcloud.com": 1, + "*.devcdnaccesso.com": 1, + "*.developer.app": 1, + "*.digitaloceanspaces.com": 1, + "*.diher.solutions": 1, + "*.dweb.link": 1, + "*.elb.amazonaws.com": 1, + "*.elb.amazonaws.com.cn": 1, + "*.er": 1, + "*.ex.futurecms.at": 1, + "*.ex.ortsinfo.at": 1, + "*.firenet.ch": 1, + "*.fk": 1, + "*.frusky.de": 1, + "*.futurecms.at": 1, + "*.gateway.dev": 1, + "*.hosting.myjino.ru": 1, + "*.hosting.ovh.net": 1, + "*.in.futurecms.at": 1, + "*.jm": 1, + "*.kawasaki.jp": 1, + "*.kh": 1, + "*.kitakyushu.jp": 1, + "*.kobe.jp": 1, + "*.kunden.ortsinfo.at": 1, + "*.landing.myjino.ru": 1, + "*.lcl.dev": 1, + "*.lclstage.dev": 1, + "*.linodeobjects.com": 1, + "*.magentosite.cloud": 1, + "*.migration.run": 1, + "*.mm": 1, + "*.moonscale.io": 1, + "*.nagoya.jp": 1, + "*.nodebalancer.linode.com": 1, + "*.nom.br": 1, + "*.northflank.app": 1, + "*.np": 1, + "*.oci.customer-oci.com": 1, + "*.ocp.customer-oci.com": 1, + "*.ocs.customer-oci.com": 1, + "*.on-acorn.io": 1, + "*.on-k3s.io": 1, + "*.on-rancher.cloud": 1, + "*.on-rio.io": 1, + "*.otap.co": 1, + "*.owo.codes": 1, + "*.paywhirl.com": 1, + "*.pg": 1, + "*.platformsh.site": 1, + "*.quipelements.com": 1, + "*.r.appspot.com": 1, + "*.rss.my.id": 1, + "*.s5y.io": 1, + "*.sapporo.jp": 1, + "*.sch.uk": 1, + "*.sendai.jp": 1, + "*.sensiosite.cloud": 1, + "*.spectrum.myjino.ru": 1, + "*.statics.cloud": 1, + "*.stg-builder.code.com": 1, + "*.stg.dev": 1, + "*.stgstage.dev": 1, + "*.stolos.io": 1, + "*.svc.firenet.ch": 1, + "*.sys.qcx.io": 1, + "*.telebit.xyz": 1, + "*.transurl.be": 1, + "*.transurl.eu": 1, + "*.transurl.nl": 1, + "*.triton.zone": 1, + "*.tst.site": 1, + "*.uberspace.de": 1, + "*.user.fm": 1, + "*.user.localcert.dev": 1, + "*.usercontent.goog": 1, + "*.vps.myjino.ru": 1, + "*.vultrobjects.com": 1, + "*.webhare.dev": 1, + "*.webpaas.ovh.net": 1, + "*.yokohama.jp": 1, + "0.bg": 1, + "001www.com": 1, + "0e.vc": 1, + "1.azurestaticapps.net": 1, + "1.bg": 1, + "123hjemmeside.dk": 1, + "123hjemmeside.no": 1, + "123homepage.it": 1, + "123kotisivu.fi": 1, + "123minsida.se": 1, + "123miweb.es": 1, + "123paginaweb.pt": 1, + "123sait.ru": 1, + "123siteweb.fr": 1, + "123webseite.at": 1, + "123webseite.de": 1, + "123website.be": 1, + "123website.ch": 1, + "123website.lu": 1, + "123website.nl": 1, + "12hp.at": 1, + "12hp.ch": 1, + "12hp.de": 1, + "1337.pictures": 1, + "16-b.it": 1, + "180r.com": 1, + "1kapp.com": 1, + "2-d.jp": 1, + "2.azurestaticapps.net": 1, + "2.bg": 1, + "2000.hu": 1, + "2038.io": 1, + "2ix.at": 1, + "2ix.ch": 1, + "2ix.de": 1, + "3.azurestaticapps.net": 1, + "3.bg": 1, + "32-b.it": 1, + "3utilities.com": 1, + "4.bg": 1, + "4lima.at": 1, + "4lima.ch": 1, + "4lima.de": 1, + "4u.com": 1, + "5.bg": 1, + "5g.in": 1, + "6.bg": 1, + "611.to": 1, + "64-b.it": 1, + "6g.in": 1, + "7.bg": 1, + "8.bg": 1, + "9.bg": 1, + "9guacu.br": 1, + "a.bg": 1, + "a.prod.fastly.net": 1, + "a.run.app": 1, + "a.se": 1, + "a.ssl.fastly.net": 1, + "aa.no": 1, + "aaa": 1, + "aaa.pro": 1, + "aarborte.no": 1, + "aarp": 1, + "ab.ca": 1, + "abashiri.hokkaido.jp": 1, + "abb": 1, + "abbott": 1, + "abbvie": 1, + "abc": 1, + "abc.br": 1, + "abeno.osaka.jp": 1, + "abiko.chiba.jp": 1, + "abira.hokkaido.jp": 1, + "abkhazia.su": 1, + "able": 1, + "abo.pa": 1, + "abogado": 1, + "abr.it": 1, + "abruzzo.it": 1, + "abu.yamaguchi.jp": 1, + "abudhabi": 1, + "ac": 1, + "ac.ae": 1, + "ac.at": 1, + "ac.be": 1, + "ac.ci": 1, + "ac.cn": 1, + "ac.cr": 1, + "ac.cy": 1, + "ac.fj": 1, + "ac.gn": 1, + "ac.gov.br": 1, + "ac.id": 1, + "ac.il": 1, + "ac.im": 1, + "ac.in": 1, + "ac.ir": 1, + "ac.jp": 1, + "ac.ke": 1, + "ac.kr": 1, + "ac.leg.br": 1, + "ac.lk": 1, + "ac.ls": 1, + "ac.ma": 1, + "ac.me": 1, + "ac.mu": 1, + "ac.mw": 1, + "ac.mz": 1, + "ac.ni": 1, + "ac.nz": 1, + "ac.pa": 1, + "ac.pr": 1, + "ac.rs": 1, + "ac.ru": 1, + "ac.rw": 1, + "ac.se": 1, + "ac.sz": 1, + "ac.th": 1, + "ac.tj": 1, + "ac.tz": 1, + "ac.ug": 1, + "ac.uk": 1, + "ac.vn": 1, + "ac.za": 1, + "ac.zm": 1, + "ac.zw": 1, + "aca.pro": 1, + "academia.bo": 1, + "academy": 1, + "accenture": 1, + "accesscam.org": 1, + "accident-investigation.aero": 1, + "accident-prevention.aero": 1, + "accountant": 1, + "accountants": 1, + "acct.pro": 1, + "achi.nagano.jp": 1, + "aco": 1, + "act.au": 1, + "act.edu.au": 1, + "activetrail.biz": 1, + "actor": 1, + "ad": 1, + "ad.jp": 1, + "adachi.tokyo.jp": 1, + "adimo.co.uk": 1, + "adm.br": 1, + "adobeaemcloud.com": 1, + "adobeaemcloud.net": 1, + "adobeio-static.net": 1, + "adobeioruntime.net": 1, + "ads": 1, + "adult": 1, + "adult.ht": 1, + "adv.br": 1, + "adv.mz": 1, + "adygeya.ru": 1, + "adygeya.su": 1, + "ae": 1, + "ae.org": 1, + "aeg": 1, + "aejrie.no": 1, + "aero": 1, + "aero.mv": 1, + "aero.tt": 1, + "aerobatic.aero": 1, + "aeroclub.aero": 1, + "aerodrome.aero": 1, + "aeroport.fr": 1, + "aetna": 1, + "af": 1, + "affinitylottery.org.uk": 1, + "afjord.no": 1, + "afl": 1, + "africa": 1, + "africa.bj": 1, + "africa.com": 1, + "ag": 1, + "ag.it": 1, + "aga.niigata.jp": 1, + "agakhan": 1, + "agano.niigata.jp": 1, + "agdenes.no": 1, + "agematsu.nagano.jp": 1, + "agency": 1, + "agents.aero": 1, + "agr.br": 1, + "agrar.hu": 1, + "agric.za": 1, + "agrigento.it": 1, + "agro.bj": 1, + "agro.bo": 1, + "agro.pl": 1, + "aguni.okinawa.jp": 1, + "ah.cn": 1, + "ah.no": 1, + "ai": 1, + "ai.in": 1, + "ai.vn": 1, + "aibetsu.hokkaido.jp": 1, + "aichi.jp": 1, + "aid.pl": 1, + "aig": 1, + "aikawa.kanagawa.jp": 1, + "ainan.ehime.jp": 1, + "aioi.hyogo.jp": 1, + "aip.ee": 1, + "air-surveillance.aero": 1, + "air-traffic-control.aero": 1, + "airbus": 1, + "aircraft.aero": 1, + "airforce": 1, + "airkitapps-au.com": 1, + "airkitapps.com": 1, + "airkitapps.eu": 1, + "airline.aero": 1, + "airport.aero": 1, + "airtel": 1, + "airtraffic.aero": 1, + "aisai.aichi.jp": 1, + "aisho.shiga.jp": 1, + "aivencloud.com": 1, + "aizubange.fukushima.jp": 1, + "aizumi.tokushima.jp": 1, + "aizumisato.fukushima.jp": 1, + "aizuwakamatsu.fukushima.jp": 1, + "aju.br": 1, + "ak.us": 1, + "akabira.hokkaido.jp": 1, + "akadns.net": 1, + "akagi.shimane.jp": 1, + "akaiwa.okayama.jp": 1, + "akamai-staging.net": 1, + "akamai.net": 1, + "akamaiedge-staging.net": 1, + "akamaiedge.net": 1, + "akamaihd-staging.net": 1, + "akamaihd.net": 1, + "akamaiorigin-staging.net": 1, + "akamaiorigin.net": 1, + "akamaized-staging.net": 1, + "akamaized.net": 1, + "akashi.hyogo.jp": 1, + "akdn": 1, + "aki.kochi.jp": 1, + "akiruno.tokyo.jp": 1, + "akishima.tokyo.jp": 1, + "akita.akita.jp": 1, + "akita.jp": 1, + "akkeshi.hokkaido.jp": 1, + "aknoluokta.no": 1, + "ako.hyogo.jp": 1, + "akrehamn.no": 1, + "aktyubinsk.su": 1, + "akune.kagoshima.jp": 1, + "al": 1, + "al.eu.org": 1, + "al.gov.br": 1, + "al.it": 1, + "al.leg.br": 1, + "al.no": 1, + "al.us": 1, + "alaheadju.no": 1, + "aland.fi": 1, + "alessandria.it": 1, + "alesund.no": 1, + "algard.no": 1, + "alibaba": 1, + "alipay": 1, + "allfinanz": 1, + "allstate": 1, + "ally": 1, + "alp1.ae.flow.ch": 1, + "alpha-myqnapcloud.com": 1, + "alpha.bounty-full.com": 1, + "alsace": 1, + "alstahaug.no": 1, + "alstom": 1, + "alt.za": 1, + "alta.no": 1, + "altervista.org": 1, + "alto-adige.it": 1, + "altoadige.it": 1, + "alvdal.no": 1, + "alwaysdata.net": 1, + "am": 1, + "am.br": 1, + "am.gov.br": 1, + "am.in": 1, + "am.leg.br": 1, + "ama.aichi.jp": 1, + "ama.shimane.jp": 1, + "amagasaki.hyogo.jp": 1, + "amakusa.kumamoto.jp": 1, + "amami.kagoshima.jp": 1, + "amazon": 1, + "ambulance.aero": 1, + "americanexpress": 1, + "americanfamily": 1, + "amex": 1, + "amfam": 1, + "ami.ibaraki.jp": 1, + "amica": 1, + "amli.no": 1, + "amot.no": 1, + "amscompute.com": 1, + "amsterdam": 1, + "amusement.aero": 1, + "an.it": 1, + "analytics": 1, + "analytics-gateway.ap-northeast-1.amazonaws.com": 1, + "analytics-gateway.eu-west-1.amazonaws.com": 1, + "analytics-gateway.us-east-1.amazonaws.com": 1, + "analytics-gateway.us-east-2.amazonaws.com": 1, + "analytics-gateway.us-west-2.amazonaws.com": 1, + "anamizu.ishikawa.jp": 1, + "anan.nagano.jp": 1, + "anan.tokushima.jp": 1, + "anani.br": 1, + "ancona.it": 1, + "andasuolo.no": 1, + "andebu.no": 1, + "ando.nara.jp": 1, + "andoy.no": 1, + "andria-barletta-trani.it": 1, + "andria-trani-barletta.it": 1, + "andriabarlettatrani.it": 1, + "andriatranibarletta.it": 1, + "android": 1, + "andøy.no": 1, + "angiang.vn": 1, + "angry.jp": 1, + "anjo.aichi.jp": 1, + "ann-arbor.mi.us": 1, + "annaka.gunma.jp": 1, + "anpachi.gifu.jp": 1, + "anquan": 1, + "anz": 1, + "ao": 1, + "ao.it": 1, + "aogaki.hyogo.jp": 1, + "aogashima.tokyo.jp": 1, + "aoki.nagano.jp": 1, + "aol": 1, + "aomori.aomori.jp": 1, + "aomori.jp": 1, + "aosta-valley.it": 1, + "aosta.it": 1, + "aostavalley.it": 1, + "aoste.it": 1, + "ap-northeast-1.elasticbeanstalk.com": 1, + "ap-northeast-2.elasticbeanstalk.com": 1, + "ap-northeast-3.elasticbeanstalk.com": 1, + "ap-south-1.elasticbeanstalk.com": 1, + "ap-southeast-1.elasticbeanstalk.com": 1, + "ap-southeast-2.elasticbeanstalk.com": 1, + "ap.gov.br": 1, + "ap.gov.pl": 1, + "ap.it": 1, + "ap.leg.br": 1, + "ap.ngrok.io": 1, + "aparecida.br": 1, + "apartments": 1, + "api.gov.uk": 1, + "api.stdlib.com": 1, + "apigee.io": 1, + "app": 1, + "app.banzaicloud.io": 1, + "app.br": 1, + "app.gp": 1, + "app.lmpm.com": 1, + "app.os.fedoraproject.org": 1, + "app.os.stg.fedoraproject.org": 1, + "app.render.com": 1, + "appchizi.com": 1, + "appengine.flow.ch": 1, + "apple": 1, + "applinzi.com": 1, + "apps.fbsbx.com": 1, + "apps.lair.io": 1, + "appspacehosted.com": 1, + "appspaceusercontent.com": 1, + "appspot.com": 1, + "appudo.net": 1, + "aq": 1, + "aq.it": 1, + "aquarelle": 1, + "aquila.it": 1, + "ar": 1, + "ar.com": 1, + "ar.it": 1, + "ar.us": 1, + "arab": 1, + "arai.shizuoka.jp": 1, + "arakawa.saitama.jp": 1, + "arakawa.tokyo.jp": 1, + "aramco": 1, + "arao.kumamoto.jp": 1, + "archi": 1, + "architectes.bj": 1, + "ardal.no": 1, + "aremark.no": 1, + "arendal.no": 1, + "arezzo.it": 1, + "ariake.saga.jp": 1, + "arida.wakayama.jp": 1, + "aridagawa.wakayama.jp": 1, + "arita.saga.jp": 1, + "arkhangelsk.su": 1, + "armenia.su": 1, + "army": 1, + "arna.no": 1, + "arpa": 1, + "arq.br": 1, + "art": 1, + "art.br": 1, + "art.do": 1, + "art.dz": 1, + "art.ht": 1, + "art.pl": 1, + "art.sn": 1, + "arte": 1, + "arte.bo": 1, + "arts.co": 1, + "arts.nf": 1, + "arts.ro": 1, + "arts.ve": 1, + "arvo.network": 1, + "as": 1, + "as.us": 1, + "asago.hyogo.jp": 1, + "asahi.chiba.jp": 1, + "asahi.ibaraki.jp": 1, + "asahi.mie.jp": 1, + "asahi.nagano.jp": 1, + "asahi.toyama.jp": 1, + "asahi.yamagata.jp": 1, + "asahikawa.hokkaido.jp": 1, + "asaka.saitama.jp": 1, + "asakawa.fukushima.jp": 1, + "asakuchi.okayama.jp": 1, + "asaminami.hiroshima.jp": 1, + "ascoli-piceno.it": 1, + "ascolipiceno.it": 1, + "asda": 1, + "aseral.no": 1, + "ashgabad.su": 1, + "ashibetsu.hokkaido.jp": 1, + "ashikaga.tochigi.jp": 1, + "ashiya.fukuoka.jp": 1, + "ashiya.hyogo.jp": 1, + "ashoro.hokkaido.jp": 1, + "asia": 1, + "asker.no": 1, + "askim.no": 1, + "askoy.no": 1, + "askvoll.no": 1, + "askøy.no": 1, + "asn.au": 1, + "asn.lv": 1, + "asnes.no": 1, + "aso.kumamoto.jp": 1, + "ass.km": 1, + "assabu.hokkaido.jp": 1, + "assn.lk": 1, + "asso.ci": 1, + "asso.dz": 1, + "asso.eu.org": 1, + "asso.fr": 1, + "asso.gp": 1, + "asso.ht": 1, + "asso.km": 1, + "asso.mc": 1, + "asso.nc": 1, + "asso.re": 1, + "associates": 1, + "association.aero": 1, + "assur.bj": 1, + "asti.it": 1, + "asuke.aichi.jp": 1, + "at": 1, + "at-band-camp.net": 1, + "at.eu.org": 1, + "at.it": 1, + "at.md": 1, + "at.vg": 1, + "atami.shizuoka.jp": 1, + "ath.cx": 1, + "athleta": 1, + "atl.jelastic.vps-host.net": 1, + "atm.pl": 1, + "ato.br": 1, + "atsugi.kanagawa.jp": 1, + "atsuma.hokkaido.jp": 1, + "attorney": 1, + "au": 1, + "au.eu.org": 1, + "au.ngrok.io": 1, + "auction": 1, + "audi": 1, + "audible": 1, + "audio": 1, + "audnedaln.no": 1, + "augustow.pl": 1, + "aukra.no": 1, + "aure.no": 1, + "aurland.no": 1, + "aurskog-holand.no": 1, + "aurskog-høland.no": 1, + "aus.basketball": 1, + "auspost": 1, + "austevoll.no": 1, + "austrheim.no": 1, + "authgear-staging.com": 1, + "authgearapps.com": 1, + "author": 1, + "author.aero": 1, + "auto": 1, + "auto.pl": 1, + "autocode.dev": 1, + "autos": 1, + "av.it": 1, + "av.tr": 1, + "avellino.it": 1, + "averoy.no": 1, + "averøy.no": 1, + "avianca": 1, + "avocat.fr": 1, + "avocat.pro": 1, + "avocats.bj": 1, + "avoues.fr": 1, + "aw": 1, + "awaji.hyogo.jp": 1, + "aws": 1, + "awsglobalaccelerator.com": 1, + "awsmppl.com": 1, + "ax": 1, + "axa": 1, + "aya.miyazaki.jp": 1, + "ayabe.kyoto.jp": 1, + "ayagawa.kagawa.jp": 1, + "ayase.kanagawa.jp": 1, + "az": 1, + "az.us": 1, + "azerbaijan.su": 1, + "azimuth.network": 1, + "azumino.nagano.jp": 1, + "azure": 1, + "azure-mobile.net": 1, + "azurestaticapps.net": 1, + "azurewebsites.net": 1, + "aéroport.ci": 1, + "b-data.io": 1, + "b.bg": 1, + "b.br": 1, + "b.se": 1, + "b.ssl.fastly.net": 1, + "ba": 1, + "ba.gov.br": 1, + "ba.it": 1, + "ba.leg.br": 1, + "babia-gora.pl": 1, + "baby": 1, + "babyblue.jp": 1, + "babymilk.jp": 1, + "bacgiang.vn": 1, + "backan.vn": 1, + "backdrop.jp": 1, + "backplaneapp.io": 1, + "baclieu.vn": 1, + "bacninh.vn": 1, + "badaddja.no": 1, + "bahcavuotna.no": 1, + "bahccavuotna.no": 1, + "baidar.no": 1, + "baidu": 1, + "bajddar.no": 1, + "balashov.su": 1, + "balat.no": 1, + "balena-devices.com": 1, + "balestrand.no": 1, + "ballangen.no": 1, + "ballooning.aero": 1, + "balsan-sudtirol.it": 1, + "balsan-suedtirol.it": 1, + "balsan-südtirol.it": 1, + "balsan.it": 1, + "balsfjord.no": 1, + "bambina.jp": 1, + "bamble.no": 1, + "banamex": 1, + "bananarepublic": 1, + "band": 1, + "bandai.fukushima.jp": 1, + "bando.ibaraki.jp": 1, + "bank": 1, + "bar": 1, + "bar.pro": 1, + "bar0.net": 1, + "bar1.net": 1, + "bar2.net": 1, + "barcelona": 1, + "barclaycard": 1, + "barclays": 1, + "bardu.no": 1, + "barefoot": 1, + "bargains": 1, + "bari.it": 1, + "baria-vungtau.vn": 1, + "barletta-trani-andria.it": 1, + "barlettatraniandria.it": 1, + "barrel-of-knowledge.info": 1, + "barrell-of-knowledge.info": 1, + "barsy.bg": 1, + "barsy.ca": 1, + "barsy.club": 1, + "barsy.co.uk": 1, + "barsy.de": 1, + "barsy.eu": 1, + "barsy.in": 1, + "barsy.info": 1, + "barsy.io": 1, + "barsy.me": 1, + "barsy.menu": 1, + "barsy.mobi": 1, + "barsy.net": 1, + "barsy.online": 1, + "barsy.org": 1, + "barsy.pro": 1, + "barsy.pub": 1, + "barsy.ro": 1, + "barsy.shop": 1, + "barsy.site": 1, + "barsy.support": 1, + "barsy.uk": 1, + "barsycenter.com": 1, + "barsyonline.co.uk": 1, + "barsyonline.com": 1, + "barueri.br": 1, + "barum.no": 1, + "bas.it": 1, + "base.ec": 1, + "base.shop": 1, + "baseball": 1, + "bashkiria.ru": 1, + "bashkiria.su": 1, + "basicserver.io": 1, + "basilicata.it": 1, + "basketball": 1, + "bato.tochigi.jp": 1, + "batsfjord.no": 1, + "bauhaus": 1, + "bayern": 1, + "bb": 1, + "bbc": 1, + "bbs.tr": 1, + "bbt": 1, + "bbva": 1, + "bc.ca": 1, + "bc.platform.sh": 1, + "bcg": 1, + "bci.dnstrace.pro": 1, + "bcn": 1, + "bd.se": 1, + "be": 1, + "be.ax": 1, + "be.eu.org": 1, + "be.gy": 1, + "beagleboard.io": 1, + "bearalvahki.no": 1, + "bearalváhki.no": 1, + "beardu.no": 1, + "beats": 1, + "beauty": 1, + "bedzin.pl": 1, + "beep.pl": 1, + "beer": 1, + "beiarn.no": 1, + "bel.tr": 1, + "belau.pw": 1, + "belem.br": 1, + "belluno.it": 1, + "benevento.it": 1, + "bentley": 1, + "bentre.vn": 1, + "beppu.oita.jp": 1, + "berg.no": 1, + "bergamo.it": 1, + "bergen.no": 1, + "berlevag.no": 1, + "berlevåg.no": 1, + "berlin": 1, + "beskidy.pl": 1, + "best": 1, + "bestbuy": 1, + "bet": 1, + "bet.ar": 1, + "beta.bounty-full.com": 1, + "beta.tailscale.net": 1, + "betainabox.com": 1, + "better-than.tv": 1, + "bf": 1, + "bg": 1, + "bg.eu.org": 1, + "bg.it": 1, + "bh": 1, + "bharti": 1, + "bhz.br": 1, + "bi": 1, + "bi.it": 1, + "bialowieza.pl": 1, + "bialystok.pl": 1, + "bib.br": 1, + "bib.ve": 1, + "bibai.hokkaido.jp": 1, + "bible": 1, + "bid": 1, + "biei.hokkaido.jp": 1, + "bielawa.pl": 1, + "biella.it": 1, + "bieszczady.pl": 1, + "bievat.no": 1, + "bievát.no": 1, + "bifuka.hokkaido.jp": 1, + "bihar.in": 1, + "bihoro.hokkaido.jp": 1, + "bike": 1, + "bindal.no": 1, + "bing": 1, + "bingo": 1, + "binhdinh.vn": 1, + "binhduong.vn": 1, + "binhphuoc.vn": 1, + "binhthuan.vn": 1, + "bio": 1, + "bio.br": 1, + "bip.sh": 1, + "bir.ru": 1, + "biratori.hokkaido.jp": 1, + "birkenes.no": 1, + "bitbridge.net": 1, + "bitbucket.io": 1, + "bitter.jp": 1, + "biz": 1, + "biz.at": 1, + "biz.az": 1, + "biz.bb": 1, + "biz.cy": 1, + "biz.dk": 1, + "biz.et": 1, + "biz.fj": 1, + "biz.gl": 1, + "biz.id": 1, + "biz.in": 1, + "biz.ki": 1, + "biz.ls": 1, + "biz.mv": 1, + "biz.mw": 1, + "biz.my": 1, + "biz.ni": 1, + "biz.nr": 1, + "biz.pk": 1, + "biz.pl": 1, + "biz.pr": 1, + "biz.ss": 1, + "biz.tj": 1, + "biz.tr": 1, + "biz.tt": 1, + "biz.ua": 1, + "biz.vn": 1, + "biz.wf": 1, + "biz.zm": 1, + "bizen.okayama.jp": 1, + "bj": 1, + "bj.cn": 1, + "bjarkoy.no": 1, + "bjarkøy.no": 1, + "bjerkreim.no": 1, + "bjugn.no": 1, + "bl.it": 1, + "black": 1, + "blackbaudcdn.net": 1, + "blackfriday": 1, + "blockbuster": 1, + "blog": 1, + "blog.bo": 1, + "blog.br": 1, + "blog.gt": 1, + "blog.kg": 1, + "blog.vu": 1, + "blogdns.com": 1, + "blogdns.net": 1, + "blogdns.org": 1, + "blogsite.org": 1, + "blogsite.xyz": 1, + "blogspot.ae": 1, + "blogspot.al": 1, + "blogspot.am": 1, + "blogspot.ba": 1, + "blogspot.be": 1, + "blogspot.bg": 1, + "blogspot.bj": 1, + "blogspot.ca": 1, + "blogspot.cf": 1, + "blogspot.ch": 1, + "blogspot.cl": 1, + "blogspot.co.at": 1, + "blogspot.co.id": 1, + "blogspot.co.il": 1, + "blogspot.co.ke": 1, + "blogspot.co.nz": 1, + "blogspot.co.uk": 1, + "blogspot.co.za": 1, + "blogspot.com": 1, + "blogspot.com.ar": 1, + "blogspot.com.au": 1, + "blogspot.com.br": 1, + "blogspot.com.by": 1, + "blogspot.com.co": 1, + "blogspot.com.cy": 1, + "blogspot.com.ee": 1, + "blogspot.com.eg": 1, + "blogspot.com.es": 1, + "blogspot.com.mt": 1, + "blogspot.com.ng": 1, + "blogspot.com.tr": 1, + "blogspot.com.uy": 1, + "blogspot.cv": 1, + "blogspot.cz": 1, + "blogspot.de": 1, + "blogspot.dk": 1, + "blogspot.fi": 1, + "blogspot.fr": 1, + "blogspot.gr": 1, + "blogspot.hk": 1, + "blogspot.hr": 1, + "blogspot.hu": 1, + "blogspot.ie": 1, + "blogspot.in": 1, + "blogspot.is": 1, + "blogspot.it": 1, + "blogspot.jp": 1, + "blogspot.kr": 1, + "blogspot.li": 1, + "blogspot.lt": 1, + "blogspot.lu": 1, + "blogspot.md": 1, + "blogspot.mk": 1, + "blogspot.mr": 1, + "blogspot.mx": 1, + "blogspot.my": 1, + "blogspot.nl": 1, + "blogspot.no": 1, + "blogspot.pe": 1, + "blogspot.pt": 1, + "blogspot.qa": 1, + "blogspot.re": 1, + "blogspot.ro": 1, + "blogspot.rs": 1, + "blogspot.ru": 1, + "blogspot.se": 1, + "blogspot.sg": 1, + "blogspot.si": 1, + "blogspot.sk": 1, + "blogspot.sn": 1, + "blogspot.td": 1, + "blogspot.tw": 1, + "blogspot.ug": 1, + "blogspot.vn": 1, + "blogsyte.com": 1, + "bloomberg": 1, + "bloxcms.com": 1, + "blue": 1, + "bluebite.io": 1, + "blush.jp": 1, + "bm": 1, + "bmd.br": 1, + "bmoattachments.org": 1, + "bms": 1, + "bmw": 1, + "bn": 1, + "bn.it": 1, + "bnpparibas": 1, + "bnr.la": 1, + "bo": 1, + "bo.it": 1, + "bo.nordland.no": 1, + "bo.telemark.no": 1, + "boats": 1, + "boavista.br": 1, + "bodo.no": 1, + "bodø.no": 1, + "boehringer": 1, + "bofa": 1, + "bokn.no": 1, + "boldlygoingnowhere.org": 1, + "boleslawiec.pl": 1, + "bolivia.bo": 1, + "bologna.it": 1, + "bolt.hu": 1, + "bolzano-altoadige.it": 1, + "bolzano.it": 1, + "bom": 1, + "bomlo.no": 1, + "bona.jp": 1, + "bond": 1, + "boo": 1, + "boo.jp": 1, + "book": 1, + "booking": 1, + "bookonline.app": 1, + "boomla.net": 1, + "bosch": 1, + "bostik": 1, + "boston": 1, + "bot": 1, + "bounceme.net": 1, + "bounty-full.com": 1, + "boutique": 1, + "boutir.com": 1, + "box": 1, + "boxfuse.io": 1, + "boy.jp": 1, + "boyfriend.jp": 1, + "bozen-sudtirol.it": 1, + "bozen-suedtirol.it": 1, + "bozen-südtirol.it": 1, + "bozen.it": 1, + "bplaced.com": 1, + "bplaced.de": 1, + "bplaced.net": 1, + "br": 1, + "br.com": 1, + "br.it": 1, + "bradesco": 1, + "brand.se": 1, + "brasilia.me": 1, + "bremanger.no": 1, + "brescia.it": 1, + "bridgestone": 1, + "brindisi.it": 1, + "broadway": 1, + "broke-it.net": 1, + "broker": 1, + "broker.aero": 1, + "bronnoy.no": 1, + "bronnoysund.no": 1, + "brother": 1, + "browsersafetymark.io": 1, + "brumunddal.no": 1, + "brussels": 1, + "bryansk.su": 1, + "bryne.no": 1, + "brønnøy.no": 1, + "brønnøysund.no": 1, + "bs": 1, + "bs.it": 1, + "bsb.br": 1, + "bss.design": 1, + "bt": 1, + "bt.it": 1, + "bu.no": 1, + "budejju.no": 1, + "build": 1, + "builders": 1, + "builtwithdark.com": 1, + "bukhara.su": 1, + "bulsan-sudtirol.it": 1, + "bulsan-suedtirol.it": 1, + "bulsan-südtirol.it": 1, + "bulsan.it": 1, + "bungoono.oita.jp": 1, + "bungotakada.oita.jp": 1, + "bunkyo.tokyo.jp": 1, + "busan.kr": 1, + "business": 1, + "business.in": 1, + "but.jp": 1, + "buy": 1, + "buyshop.jp": 1, + "buyshouses.net": 1, + "buzen.fukuoka.jp": 1, + "buzz": 1, + "bv": 1, + "bw": 1, + "by": 1, + "bydgoszcz.pl": 1, + "byen.site": 1, + "bygland.no": 1, + "bykle.no": 1, + "bytom.pl": 1, + "bz": 1, + "bz.it": 1, + "bzh": 1, + "báhcavuotna.no": 1, + "báhccavuotna.no": 1, + "báidár.no": 1, + "bájddar.no": 1, + "bálát.no": 1, + "bådåddjå.no": 1, + "båtsfjord.no": 1, + "bærum.no": 1, + "bø.nordland.no": 1, + "bø.telemark.no": 1, + "bømlo.no": 1, + "c.bg": 1, + "c.cdn77.org": 1, + "c.la": 1, + "c.se": 1, + "c66.me": 1, + "ca": 1, + "ca-central-1.elasticbeanstalk.com": 1, + "ca.eu.org": 1, + "ca.in": 1, + "ca.it": 1, + "ca.na": 1, + "ca.reclaim.cloud": 1, + "ca.us": 1, + "caa.aero": 1, + "caa.li": 1, + "cab": 1, + "cable-modem.org": 1, + "cafe": 1, + "cafjs.com": 1, + "cagliari.it": 1, + "cahcesuolo.no": 1, + "cal": 1, + "cal.it": 1, + "calabria.it": 1, + "call": 1, + "caltanissetta.it": 1, + "calvinklein": 1, + "cam": 1, + "cam.it": 1, + "camau.vn": 1, + "camdvr.org": 1, + "camera": 1, + "camp": 1, + "campaign.gov.uk": 1, + "campania.it": 1, + "campidano-medio.it": 1, + "campidanomedio.it": 1, + "campinagrande.br": 1, + "campinas.br": 1, + "campobasso.it": 1, + "candypop.jp": 1, + "canon": 1, + "cantho.vn": 1, + "canva-apps.cn": 1, + "canva-apps.com": 1, + "caobang.vn": 1, + "capetown": 1, + "capital": 1, + "capitalone": 1, + "capoo.jp": 1, + "car": 1, + "caracal.mythic-beasts.com": 1, + "caravan": 1, + "carbonia-iglesias.it": 1, + "carboniaiglesias.it": 1, + "cards": 1, + "care": 1, + "career": 1, + "careers": 1, + "cargo.aero": 1, + "carrara-massa.it": 1, + "carraramassa.it": 1, + "carrd.co": 1, + "cars": 1, + "casa": 1, + "casacam.net": 1, + "case": 1, + "caserta.it": 1, + "cash": 1, + "casino": 1, + "casino.hu": 1, + "cat": 1, + "cat.ax": 1, + "catania.it": 1, + "catanzaro.it": 1, + "catering": 1, + "catering.aero": 1, + "catfood.jp": 1, + "catholic": 1, + "catholic.edu.au": 1, + "caxias.br": 1, + "cb.it": 1, + "cba": 1, + "cbg.ru": 1, + "cbn": 1, + "cbre": 1, + "cbs": 1, + "cc": 1, + "cc.ak.us": 1, + "cc.al.us": 1, + "cc.ar.us": 1, + "cc.as.us": 1, + "cc.az.us": 1, + "cc.ca.us": 1, + "cc.co.us": 1, + "cc.ct.us": 1, + "cc.dc.us": 1, + "cc.de.us": 1, + "cc.fl.us": 1, + "cc.ga.us": 1, + "cc.gu.us": 1, + "cc.hi.us": 1, + "cc.hn": 1, + "cc.ia.us": 1, + "cc.id.us": 1, + "cc.il.us": 1, + "cc.in.us": 1, + "cc.ks.us": 1, + "cc.ky.us": 1, + "cc.la.us": 1, + "cc.ma.us": 1, + "cc.md.us": 1, + "cc.me.us": 1, + "cc.mi.us": 1, + "cc.mn.us": 1, + "cc.mo.us": 1, + "cc.ms.us": 1, + "cc.mt.us": 1, + "cc.na": 1, + "cc.nc.us": 1, + "cc.nd.us": 1, + "cc.ne.us": 1, + "cc.nh.us": 1, + "cc.nj.us": 1, + "cc.nm.us": 1, + "cc.nv.us": 1, + "cc.ny.us": 1, + "cc.oh.us": 1, + "cc.ok.us": 1, + "cc.or.us": 1, + "cc.pa.us": 1, + "cc.pr.us": 1, + "cc.ri.us": 1, + "cc.sc.us": 1, + "cc.sd.us": 1, + "cc.tn.us": 1, + "cc.tx.us": 1, + "cc.ua": 1, + "cc.ut.us": 1, + "cc.va.us": 1, + "cc.vi.us": 1, + "cc.vt.us": 1, + "cc.wa.us": 1, + "cc.wi.us": 1, + "cc.wv.us": 1, + "cc.wy.us": 1, + "cci.fr": 1, + "cd": 1, + "cd.eu.org": 1, + "cdn-edges.net": 1, + "cdn.prod.atlassian-dev.net": 1, + "cdn77-ssl.net": 1, + "ce.gov.br": 1, + "ce.it": 1, + "ce.leg.br": 1, + "cechire.com": 1, + "center": 1, + "centralus.azurestaticapps.net": 1, + "ceo": 1, + "cern": 1, + "certification.aero": 1, + "certmgr.org": 1, + "cesena-forli.it": 1, + "cesena-forlì.it": 1, + "cesenaforli.it": 1, + "cesenaforlì.it": 1, + "cf": 1, + "cf-ipfs.com": 1, + "cfa": 1, + "cfd": 1, + "cg": 1, + "ch": 1, + "ch.eu.org": 1, + "ch.it": 1, + "ch.tc": 1, + "ch.trendhosting.cloud": 1, + "chambagri.fr": 1, + "championship.aero": 1, + "chanel": 1, + "channel": 1, + "channelsdvr.net": 1, + "charity": 1, + "charter.aero": 1, + "chase": 1, + "chat": 1, + "cheap": 1, + "cheap.jp": 1, + "cherkassy.ua": 1, + "cherkasy.ua": 1, + "chernigov.ua": 1, + "chernihiv.ua": 1, + "chernivtsi.ua": 1, + "chernovtsy.ua": 1, + "chiba.jp": 1, + "chicappa.jp": 1, + "chichibu.saitama.jp": 1, + "chieti.it": 1, + "chigasaki.kanagawa.jp": 1, + "chihayaakasaka.osaka.jp": 1, + "chijiwa.nagasaki.jp": 1, + "chikugo.fukuoka.jp": 1, + "chikuho.fukuoka.jp": 1, + "chikuhoku.nagano.jp": 1, + "chikujo.fukuoka.jp": 1, + "chikuma.nagano.jp": 1, + "chikusei.ibaraki.jp": 1, + "chikushino.fukuoka.jp": 1, + "chikuzen.fukuoka.jp": 1, + "chillout.jp": 1, + "chimkent.su": 1, + "chino.nagano.jp": 1, + "chintai": 1, + "chippubetsu.hokkaido.jp": 1, + "chips.jp": 1, + "chirurgiens-dentistes-en-france.fr": 1, + "chirurgiens-dentistes.fr": 1, + "chiryu.aichi.jp": 1, + "chita.aichi.jp": 1, + "chitose.hokkaido.jp": 1, + "chiyoda.gunma.jp": 1, + "chiyoda.tokyo.jp": 1, + "chizu.tottori.jp": 1, + "chofu.tokyo.jp": 1, + "chonan.chiba.jp": 1, + "chosei.chiba.jp": 1, + "choshi.chiba.jp": 1, + "chowder.jp": 1, + "choyo.kumamoto.jp": 1, + "christmas": 1, + "chrome": 1, + "chtr.k12.ma.us": 1, + "chu.jp": 1, + "chungbuk.kr": 1, + "chungnam.kr": 1, + "chuo.chiba.jp": 1, + "chuo.fukuoka.jp": 1, + "chuo.osaka.jp": 1, + "chuo.tokyo.jp": 1, + "chuo.yamanashi.jp": 1, + "church": 1, + "ci": 1, + "ci.it": 1, + "ciao.jp": 1, + "ciencia.bo": 1, + "cieszyn.pl": 1, + "cim.br": 1, + "cipriani": 1, + "circle": 1, + "cisco": 1, + "ciscofreak.com": 1, + "cistron.nl": 1, + "citadel": 1, + "citi": 1, + "citic": 1, + "city": 1, + "city.hu": 1, + "cityeats": 1, + "civilaviation.aero": 1, + "ck.ua": 1, + "cl": 1, + "cl.it": 1, + "claims": 1, + "clan.rip": 1, + "cleaning": 1, + "clerk.app": 1, + "clerkstage.app": 1, + "cleverapps.io": 1, + "click": 1, + "clickrising.net": 1, + "clinic": 1, + "clinique": 1, + "clothing": 1, + "cloud": 1, + "cloud-fr1.unispace.io": 1, + "cloud.fedoraproject.org": 1, + "cloud.goog": 1, + "cloud.interhostsolutions.be": 1, + "cloud.jelastic.open.tim.it": 1, + "cloud.nospamproxy.com": 1, + "cloud66.ws": 1, + "cloud66.zone": 1, + "cloudaccess.host": 1, + "cloudaccess.net": 1, + "cloudapp.net": 1, + "cloudapps.digital": 1, + "cloudcontrolapp.com": 1, + "cloudcontrolled.com": 1, + "cloudflare-ipfs.com": 1, + "cloudfront.net": 1, + "cloudfunctions.net": 1, + "cloudjiffy.net": 1, + "cloudns.asia": 1, + "cloudns.biz": 1, + "cloudns.cc": 1, + "cloudns.club": 1, + "cloudns.eu": 1, + "cloudns.in": 1, + "cloudns.info": 1, + "cloudns.org": 1, + "cloudns.pro": 1, + "cloudns.pw": 1, + "cloudns.us": 1, + "cloudsite.builders": 1, + "cloudycluster.net": 1, + "club": 1, + "club.aero": 1, + "club.tw": 1, + "clubmed": 1, + "cm": 1, + "cn": 1, + "cn-north-1.eb.amazonaws.com.cn": 1, + "cn-northwest-1.eb.amazonaws.com.cn": 1, + "cn.com": 1, + "cn.eu.org": 1, + "cn.in": 1, + "cn.it": 1, + "cn.ua": 1, + "cn.vu": 1, + "cng.br": 1, + "cnpy.gdn": 1, + "cnt.br": 1, + "co": 1, + "co.ae": 1, + "co.ag": 1, + "co.am": 1, + "co.ao": 1, + "co.at": 1, + "co.bb": 1, + "co.bi": 1, + "co.bj": 1, + "co.bn": 1, + "co.business": 1, + "co.bw": 1, + "co.ca": 1, + "co.ci": 1, + "co.cl": 1, + "co.cm": 1, + "co.com": 1, + "co.cr": 1, + "co.cz": 1, + "co.dk": 1, + "co.education": 1, + "co.events": 1, + "co.financial": 1, + "co.gg": 1, + "co.gl": 1, + "co.gy": 1, + "co.hu": 1, + "co.id": 1, + "co.il": 1, + "co.im": 1, + "co.in": 1, + "co.ir": 1, + "co.it": 1, + "co.je": 1, + "co.jp": 1, + "co.ke": 1, + "co.kr": 1, + "co.krd": 1, + "co.lc": 1, + "co.ls": 1, + "co.ma": 1, + "co.me": 1, + "co.mg": 1, + "co.mu": 1, + "co.mw": 1, + "co.mz": 1, + "co.na": 1, + "co.network": 1, + "co.ni": 1, + "co.nl": 1, + "co.no": 1, + "co.nz": 1, + "co.om": 1, + "co.pl": 1, + "co.place": 1, + "co.pn": 1, + "co.pw": 1, + "co.ro": 1, + "co.rs": 1, + "co.rw": 1, + "co.st": 1, + "co.sz": 1, + "co.technology": 1, + "co.th": 1, + "co.tj": 1, + "co.tm": 1, + "co.tt": 1, + "co.tz": 1, + "co.ua": 1, + "co.ug": 1, + "co.uk": 1, + "co.us": 1, + "co.uz": 1, + "co.ve": 1, + "co.vi": 1, + "co.za": 1, + "co.zm": 1, + "co.zw": 1, + "coach": 1, + "cocotte.jp": 1, + "codeberg.page": 1, + "codes": 1, + "codespot.com": 1, + "coffee": 1, + "cog.mi.us": 1, + "col.ng": 1, + "college": 1, + "collegefan.org": 1, + "cologne": 1, + "com": 1, + "com.ac": 1, + "com.af": 1, + "com.ag": 1, + "com.ai": 1, + "com.al": 1, + "com.am": 1, + "com.ar": 1, + "com.au": 1, + "com.aw": 1, + "com.az": 1, + "com.ba": 1, + "com.bb": 1, + "com.bh": 1, + "com.bi": 1, + "com.bj": 1, + "com.bm": 1, + "com.bn": 1, + "com.bo": 1, + "com.br": 1, + "com.bs": 1, + "com.bt": 1, + "com.by": 1, + "com.bz": 1, + "com.ci": 1, + "com.cm": 1, + "com.cn": 1, + "com.co": 1, + "com.cu": 1, + "com.cv": 1, + "com.cw": 1, + "com.cy": 1, + "com.de": 1, + "com.dm": 1, + "com.do": 1, + "com.dz": 1, + "com.ec": 1, + "com.ee": 1, + "com.eg": 1, + "com.es": 1, + "com.et": 1, + "com.fj": 1, + "com.fm": 1, + "com.fr": 1, + "com.ge": 1, + "com.gh": 1, + "com.gi": 1, + "com.gl": 1, + "com.gn": 1, + "com.gp": 1, + "com.gr": 1, + "com.gt": 1, + "com.gu": 1, + "com.gy": 1, + "com.hk": 1, + "com.hn": 1, + "com.hr": 1, + "com.ht": 1, + "com.im": 1, + "com.in": 1, + "com.io": 1, + "com.iq": 1, + "com.is": 1, + "com.jo": 1, + "com.kg": 1, + "com.ki": 1, + "com.km": 1, + "com.kp": 1, + "com.kw": 1, + "com.ky": 1, + "com.kz": 1, + "com.la": 1, + "com.lb": 1, + "com.lc": 1, + "com.lk": 1, + "com.lr": 1, + "com.lv": 1, + "com.ly": 1, + "com.mg": 1, + "com.mk": 1, + "com.ml": 1, + "com.mo": 1, + "com.ms": 1, + "com.mt": 1, + "com.mu": 1, + "com.mv": 1, + "com.mw": 1, + "com.mx": 1, + "com.my": 1, + "com.na": 1, + "com.nf": 1, + "com.ng": 1, + "com.ni": 1, + "com.nr": 1, + "com.om": 1, + "com.pa": 1, + "com.pe": 1, + "com.pf": 1, + "com.ph": 1, + "com.pk": 1, + "com.pl": 1, + "com.pr": 1, + "com.ps": 1, + "com.pt": 1, + "com.py": 1, + "com.qa": 1, + "com.re": 1, + "com.ro": 1, + "com.ru": 1, + "com.sa": 1, + "com.sb": 1, + "com.sc": 1, + "com.sd": 1, + "com.se": 1, + "com.sg": 1, + "com.sh": 1, + "com.sl": 1, + "com.sn": 1, + "com.so": 1, + "com.ss": 1, + "com.st": 1, + "com.sv": 1, + "com.sy": 1, + "com.tj": 1, + "com.tm": 1, + "com.tn": 1, + "com.to": 1, + "com.tr": 1, + "com.tt": 1, + "com.tw": 1, + "com.ua": 1, + "com.ug": 1, + "com.uy": 1, + "com.uz": 1, + "com.vc": 1, + "com.ve": 1, + "com.vi": 1, + "com.vn": 1, + "com.vu": 1, + "com.ws": 1, + "com.ye": 1, + "com.zm": 1, + "comcast": 1, + "commbank": 1, + "commune.am": 1, + "community": 1, + "community-pro.de": 1, + "community-pro.net": 1, + "como.it": 1, + "company": 1, + "compare": 1, + "computer": 1, + "comsec": 1, + "condos": 1, + "conf.au": 1, + "conf.lv": 1, + "conf.se": 1, + "conference.aero": 1, + "conn.uk": 1, + "construction": 1, + "consulado.st": 1, + "consultant.aero": 1, + "consulting": 1, + "consulting.aero": 1, + "contact": 1, + "contagem.br": 1, + "contractors": 1, + "control.aero": 1, + "cooking": 1, + "cool": 1, + "coolblog.jp": 1, + "coop": 1, + "coop.ar": 1, + "coop.br": 1, + "coop.ht": 1, + "coop.in": 1, + "coop.km": 1, + "coop.mv": 1, + "coop.mw": 1, + "coop.py": 1, + "coop.rw": 1, + "coop.tt": 1, + "cooperativa.bo": 1, + "copro.uk": 1, + "corsica": 1, + "cosenza.it": 1, + "couchpotatofries.org": 1, + "council.aero": 1, + "country": 1, + "coupon": 1, + "coupons": 1, + "courses": 1, + "coz.br": 1, + "cpa": 1, + "cpa.pro": 1, + "cq.cn": 1, + "cr": 1, + "cr.it": 1, + "cr.ua": 1, + "crafting.xyz": 1, + "cranky.jp": 1, + "crap.jp": 1, + "crd.co": 1, + "credit": 1, + "creditcard": 1, + "creditunion": 1, + "cremona.it": 1, + "crew.aero": 1, + "cri.br": 1, + "cri.nz": 1, + "cricket": 1, + "crimea.ua": 1, + "crotone.it": 1, + "crown": 1, + "crs": 1, + "cruise": 1, + "cruises": 1, + "cs.in": 1, + "cs.it": 1, + "cs.keliweb.cloud": 1, + "csx.cc": 1, + "ct.it": 1, + "ct.us": 1, + "cu": 1, + "cuiaba.br": 1, + "cuisinella": 1, + "cuneo.it": 1, + "cupcake.is": 1, + "curitiba.br": 1, + "curv.dev": 1, + "cust.dev.thingdust.io": 1, + "cust.disrec.thingdust.io": 1, + "cust.prod.thingdust.io": 1, + "cust.retrosnub.co.uk": 1, + "cust.testing.thingdust.io": 1, + "custom.metacentrum.cz": 1, + "customer.mythic-beasts.com": 1, + "customer.speedpartner.de": 1, + "cutegirl.jp": 1, + "cv": 1, + "cv.ua": 1, + "cw": 1, + "cx": 1, + "cx.ua": 1, + "cy": 1, + "cy.eu.org": 1, + "cya.gg": 1, + "cymru": 1, + "cyon.link": 1, + "cyon.site": 1, + "cyou": 1, + "cz": 1, + "cz.eu.org": 1, + "cz.it": 1, + "czeladz.pl": 1, + "czest.pl": 1, + "d.bg": 1, + "d.gv.vc": 1, + "d.se": 1, + "daa.jp": 1, + "dabur": 1, + "dad": 1, + "daegu.kr": 1, + "daejeon.kr": 1, + "daemon.panel.gg": 1, + "dagestan.ru": 1, + "dagestan.su": 1, + "daigo.ibaraki.jp": 1, + "daisen.akita.jp": 1, + "daito.osaka.jp": 1, + "daiwa.hiroshima.jp": 1, + "daklak.vn": 1, + "daknong.vn": 1, + "damnserver.com": 1, + "danang.vn": 1, + "dance": 1, + "daplie.me": 1, + "data": 1, + "date": 1, + "date.fukushima.jp": 1, + "date.hokkaido.jp": 1, + "dating": 1, + "datsun": 1, + "dattolocal.com": 1, + "dattolocal.net": 1, + "dattorelay.com": 1, + "dattoweb.com": 1, + "davvenjarga.no": 1, + "davvenjárga.no": 1, + "davvesiida.no": 1, + "day": 1, + "daynight.jp": 1, + "dazaifu.fukuoka.jp": 1, + "dc.us": 1, + "dclk": 1, + "dd-dns.de": 1, + "ddns.me": 1, + "ddns.net": 1, + "ddns5.com": 1, + "ddnsfree.com": 1, + "ddnsgeek.com": 1, + "ddnsking.com": 1, + "ddnslive.com": 1, + "ddnss.de": 1, + "ddnss.org": 1, + "dds": 1, + "de": 1, + "de.com": 1, + "de.cool": 1, + "de.eu.org": 1, + "de.gt": 1, + "de.ls": 1, + "de.md": 1, + "de.trendhosting.cloud": 1, + "de.us": 1, + "deal": 1, + "dealer": 1, + "deals": 1, + "deatnu.no": 1, + "debian.net": 1, + "deca.jp": 1, + "deci.jp": 1, + "dedibox.fr": 1, + "dedyn.io": 1, + "def.br": 1, + "definima.io": 1, + "definima.net": 1, + "degree": 1, + "delhi.in": 1, + "delivery": 1, + "dell": 1, + "dell-ogliastra.it": 1, + "dellogliastra.it": 1, + "deloitte": 1, + "delta": 1, + "demo.datacenter.fi": 1, + "demo.datadetect.com": 1, + "demo.jelastic.com": 1, + "democracia.bo": 1, + "democrat": 1, + "demon.nl": 1, + "deno-staging.dev": 1, + "deno.dev": 1, + "dental": 1, + "dentist": 1, + "dep.no": 1, + "deporte.bo": 1, + "des.br": 1, + "desa.id": 1, + "desi": 1, + "design": 1, + "design.aero": 1, + "det.br": 1, + "deta.app": 1, + "deta.dev": 1, + "dev": 1, + "dev-myqnapcloud.com": 1, + "dev.br": 1, + "dev.static.land": 1, + "dev.vu": 1, + "development.run": 1, + "devices.resinstaging.io": 1, + "df.gov.br": 1, + "df.leg.br": 1, + "dgca.aero": 1, + "dh.bytemark.co.uk": 1, + "dhl": 1, + "diadem.cloud": 1, + "diamonds": 1, + "dielddanuorri.no": 1, + "dienbien.vn": 1, + "diet": 1, + "digick.jp": 1, + "digital": 1, + "direct": 1, + "direct.quickconnect.cn": 1, + "direct.quickconnect.to": 1, + "directory": 1, + "discordsays.com": 1, + "discordsez.com": 1, + "discount": 1, + "discourse.group": 1, + "discourse.team": 1, + "discover": 1, + "dish": 1, + "diskstation.eu": 1, + "diskstation.me": 1, + "diskstation.org": 1, + "diskussionsbereich.de": 1, + "ditchyourip.com": 1, + "divtasvuodna.no": 1, + "divttasvuotna.no": 1, + "diy": 1, + "dj": 1, + "dk": 1, + "dk.eu.org": 1, + "dlugoleka.pl": 1, + "dm": 1, + "dn.ua": 1, + "dnepropetrovsk.ua": 1, + "dni.us": 1, + "dnipropetrovsk.ua": 1, + "dnp": 1, + "dnsalias.com": 1, + "dnsalias.net": 1, + "dnsalias.org": 1, + "dnsdojo.com": 1, + "dnsdojo.net": 1, + "dnsdojo.org": 1, + "dnsfor.me": 1, + "dnshome.de": 1, + "dnsiskinky.com": 1, + "dnsking.ch": 1, + "dnsup.net": 1, + "dnsupdate.info": 1, + "dnsupdater.de": 1, + "do": 1, + "docs": 1, + "doctor": 1, + "does-it.net": 1, + "doesntexist.com": 1, + "doesntexist.org": 1, + "dog": 1, + "dojin.com": 1, + "domains": 1, + "donetsk.ua": 1, + "dongnai.vn": 1, + "dongthap.vn": 1, + "donna.no": 1, + "dontexist.com": 1, + "dontexist.net": 1, + "dontexist.org": 1, + "doomdns.com": 1, + "doomdns.org": 1, + "dopaas.com": 1, + "doshi.yamanashi.jp": 1, + "dot": 1, + "dovre.no": 1, + "download": 1, + "dp.ua": 1, + "dr.in": 1, + "dr.na": 1, + "dr.tr": 1, + "drammen.no": 1, + "drangedal.no": 1, + "dray-dns.de": 1, + "drayddns.com": 1, + "draydns.de": 1, + "dreamhosters.com": 1, + "drive": 1, + "drobak.no": 1, + "drr.ac": 1, + "drud.io": 1, + "drud.us": 1, + "drøbak.no": 1, + "dscloud.biz": 1, + "dscloud.me": 1, + "dscloud.mobi": 1, + "dsmynas.com": 1, + "dsmynas.net": 1, + "dsmynas.org": 1, + "dst.mi.us": 1, + "dtv": 1, + "dubai": 1, + "duckdns.org": 1, + "dunlop": 1, + "dupont": 1, + "durban": 1, + "dvag": 1, + "dvr": 1, + "dvrcam.info": 1, + "dvrdns.org": 1, + "dy.fi": 1, + "dyn-berlin.de": 1, + "dyn-ip24.de": 1, + "dyn-o-saur.com": 1, + "dyn-vpn.de": 1, + "dyn.cosidns.de": 1, + "dyn.ddnss.de": 1, + "dyn.home-webserver.de": 1, + "dyn53.io": 1, + "dynalias.com": 1, + "dynalias.net": 1, + "dynalias.org": 1, + "dynamic-dns.info": 1, + "dynamisches-dns.de": 1, + "dynathome.net": 1, + "dyndns-at-home.com": 1, + "dyndns-at-work.com": 1, + "dyndns-blog.com": 1, + "dyndns-free.com": 1, + "dyndns-home.com": 1, + "dyndns-ip.com": 1, + "dyndns-mail.com": 1, + "dyndns-office.com": 1, + "dyndns-pics.com": 1, + "dyndns-remote.com": 1, + "dyndns-server.com": 1, + "dyndns-web.com": 1, + "dyndns-wiki.com": 1, + "dyndns-work.com": 1, + "dyndns.biz": 1, + "dyndns.dappnode.io": 1, + "dyndns.ddnss.de": 1, + "dyndns.info": 1, + "dyndns.org": 1, + "dyndns.tv": 1, + "dyndns.ws": 1, + "dyndns1.de": 1, + "dynns.com": 1, + "dynserv.org": 1, + "dynu.net": 1, + "dynv6.net": 1, + "dynvpn.de": 1, + "dyroy.no": 1, + "dyrøy.no": 1, + "dz": 1, + "dønna.no": 1, + "e.bg": 1, + "e.se": 1, + "e12.ve": 1, + "e164.arpa": 1, + "e4.cz": 1, + "earth": 1, + "east-kazakhstan.su": 1, + "eastasia.azurestaticapps.net": 1, + "eastus2.azurestaticapps.net": 1, + "easypanel.app": 1, + "easypanel.host": 1, + "eat": 1, + "eating-organic.net": 1, + "eaton.mi.us": 1, + "ebetsu.hokkaido.jp": 1, + "ebina.kanagawa.jp": 1, + "ebino.miyazaki.jp": 1, + "ebiz.tw": 1, + "ec": 1, + "echizen.fukui.jp": 1, + "ecn.br": 1, + "eco": 1, + "eco.bj": 1, + "eco.br": 1, + "ecologia.bo": 1, + "ecommerce-shop.pl": 1, + "econo.bj": 1, + "economia.bo": 1, + "ed.ao": 1, + "ed.ci": 1, + "ed.cr": 1, + "ed.jp": 1, + "ed.pw": 1, + "edeka": 1, + "edgeapp.net": 1, + "edgecompute.app": 1, + "edgekey-staging.net": 1, + "edgekey.net": 1, + "edgestack.me": 1, + "edgesuite-staging.net": 1, + "edgesuite.net": 1, + "editorx.io": 1, + "edogawa.tokyo.jp": 1, + "edu": 1, + "edu.ac": 1, + "edu.af": 1, + "edu.al": 1, + "edu.ar": 1, + "edu.au": 1, + "edu.az": 1, + "edu.ba": 1, + "edu.bb": 1, + "edu.bh": 1, + "edu.bi": 1, + "edu.bj": 1, + "edu.bm": 1, + "edu.bn": 1, + "edu.bo": 1, + "edu.br": 1, + "edu.bs": 1, + "edu.bt": 1, + "edu.bz": 1, + "edu.ci": 1, + "edu.cn": 1, + "edu.co": 1, + "edu.cu": 1, + "edu.cv": 1, + "edu.cw": 1, + "edu.dm": 1, + "edu.do": 1, + "edu.dz": 1, + "edu.ec": 1, + "edu.ee": 1, + "edu.eg": 1, + "edu.es": 1, + "edu.et": 1, + "edu.eu.org": 1, + "edu.fm": 1, + "edu.gd": 1, + "edu.ge": 1, + "edu.gh": 1, + "edu.gi": 1, + "edu.gl": 1, + "edu.gn": 1, + "edu.gp": 1, + "edu.gr": 1, + "edu.gt": 1, + "edu.gu": 1, + "edu.gy": 1, + "edu.hk": 1, + "edu.hn": 1, + "edu.ht": 1, + "edu.in": 1, + "edu.iq": 1, + "edu.is": 1, + "edu.it": 1, + "edu.jo": 1, + "edu.kg": 1, + "edu.ki": 1, + "edu.km": 1, + "edu.kn": 1, + "edu.kp": 1, + "edu.krd": 1, + "edu.kw": 1, + "edu.ky": 1, + "edu.kz": 1, + "edu.la": 1, + "edu.lb": 1, + "edu.lc": 1, + "edu.lk": 1, + "edu.lr": 1, + "edu.ls": 1, + "edu.lv": 1, + "edu.ly": 1, + "edu.me": 1, + "edu.mg": 1, + "edu.mk": 1, + "edu.ml": 1, + "edu.mn": 1, + "edu.mo": 1, + "edu.ms": 1, + "edu.mt": 1, + "edu.mv": 1, + "edu.mw": 1, + "edu.mx": 1, + "edu.my": 1, + "edu.mz": 1, + "edu.ng": 1, + "edu.ni": 1, + "edu.nr": 1, + "edu.om": 1, + "edu.pa": 1, + "edu.pe": 1, + "edu.pf": 1, + "edu.ph": 1, + "edu.pk": 1, + "edu.pl": 1, + "edu.pn": 1, + "edu.pr": 1, + "edu.ps": 1, + "edu.pt": 1, + "edu.py": 1, + "edu.qa": 1, + "edu.rs": 1, + "edu.ru": 1, + "edu.sa": 1, + "edu.sb": 1, + "edu.sc": 1, + "edu.scot": 1, + "edu.sd": 1, + "edu.sg": 1, + "edu.sl": 1, + "edu.sn": 1, + "edu.so": 1, + "edu.ss": 1, + "edu.st": 1, + "edu.sv": 1, + "edu.sy": 1, + "edu.tj": 1, + "edu.tm": 1, + "edu.to": 1, + "edu.tr": 1, + "edu.tt": 1, + "edu.tw": 1, + "edu.ua": 1, + "edu.uy": 1, + "edu.vc": 1, + "edu.ve": 1, + "edu.vn": 1, + "edu.vu": 1, + "edu.ws": 1, + "edu.ye": 1, + "edu.za": 1, + "edu.zm": 1, + "education": 1, + "educator.aero": 1, + "edugit.io": 1, + "ee": 1, + "ee.eu.org": 1, + "eek.jp": 1, + "eero-stage.online": 1, + "eero.online": 1, + "eg": 1, + "egersund.no": 1, + "egoism.jp": 1, + "ehime.jp": 1, + "eid.no": 1, + "eidfjord.no": 1, + "eidsberg.no": 1, + "eidskog.no": 1, + "eidsvoll.no": 1, + "eigersund.no": 1, + "eiheiji.fukui.jp": 1, + "ekloges.cy": 1, + "elasticbeanstalk.com": 1, + "elblag.pl": 1, + "elementor.cloud": 1, + "elementor.cool": 1, + "elk.pl": 1, + "elverum.no": 1, + "email": 1, + "emb.kw": 1, + "embaixada.st": 1, + "embetsu.hokkaido.jp": 1, + "emerck": 1, + "emergency.aero": 1, + "emilia-romagna.it": 1, + "emiliaromagna.it": 1, + "emp.br": 1, + "empresa.bo": 1, + "emr.it": 1, + "en-root.fr": 1, + "en.it": 1, + "ena.gifu.jp": 1, + "encoreapi.com": 1, + "encr.app": 1, + "endofinternet.net": 1, + "endofinternet.org": 1, + "endoftheinternet.org": 1, + "enebakk.no": 1, + "energy": 1, + "enf.br": 1, + "eng.br": 1, + "eng.pro": 1, + "engerdal.no": 1, + "engine.aero": 1, + "engineer": 1, + "engineer.aero": 1, + "engineering": 1, + "eniwa.hokkaido.jp": 1, + "enna.it": 1, + "ens.tn": 1, + "enscaled.sg": 1, + "ent.platform.sh": 1, + "enterprisecloud.nu": 1, + "enterprises": 1, + "entertainment.aero": 1, + "epson": 1, + "equipment": 1, + "equipment.aero": 1, + "er.in": 1, + "ericsson": 1, + "erimo.hokkaido.jp": 1, + "erni": 1, + "erotica.hu": 1, + "erotika.hu": 1, + "es": 1, + "es-1.axarnet.cloud": 1, + "es.ax": 1, + "es.eu.org": 1, + "es.gov.br": 1, + "es.kr": 1, + "es.leg.br": 1, + "esan.hokkaido.jp": 1, + "esashi.hokkaido.jp": 1, + "esp.br": 1, + "esq": 1, + "est-a-la-maison.com": 1, + "est-a-la-masion.com": 1, + "est-le-patron.com": 1, + "est-mon-blogueur.com": 1, + "est.pr": 1, + "estate": 1, + "et": 1, + "etajima.hiroshima.jp": 1, + "etc.br": 1, + "eti.br": 1, + "etisalat": 1, + "etne.no": 1, + "etnedal.no": 1, + "eu": 1, + "eu-1.evennode.com": 1, + "eu-2.evennode.com": 1, + "eu-3.evennode.com": 1, + "eu-4.evennode.com": 1, + "eu-central-1.elasticbeanstalk.com": 1, + "eu-west-1.elasticbeanstalk.com": 1, + "eu-west-2.elasticbeanstalk.com": 1, + "eu-west-3.elasticbeanstalk.com": 1, + "eu.ax": 1, + "eu.com": 1, + "eu.encoway.cloud": 1, + "eu.int": 1, + "eu.meteorapp.com": 1, + "eu.ngrok.io": 1, + "eu.org": 1, + "eu.platform.sh": 1, + "eu.pythonanywhere.com": 1, + "eun.eg": 1, + "eurodir.ru": 1, + "eurovision": 1, + "eus": 1, + "evenassi.no": 1, + "evenes.no": 1, + "events": 1, + "evenášši.no": 1, + "evje-og-hornnes.no": 1, + "exchange": 1, + "exchange.aero": 1, + "exnet.su": 1, + "expert": 1, + "experts-comptables.fr": 1, + "exposed": 1, + "express": 1, + "express.aero": 1, + "extraspace": 1, + "ezproxy.kuleuven.be": 1, + "f.bg": 1, + "f.se": 1, + "fage": 1, + "fail": 1, + "fairwinds": 1, + "faith": 1, + "fakefur.jp": 1, + "fam.pk": 1, + "family": 1, + "familyds.com": 1, + "familyds.net": 1, + "familyds.org": 1, + "fan": 1, + "fans": 1, + "fantasyleague.cc": 1, + "far.br": 1, + "farm": 1, + "farmers": 1, + "farsund.no": 1, + "fashion": 1, + "fashionstore.jp": 1, + "fast": 1, + "fastly-edge.com": 1, + "fastly-terrarium.com": 1, + "fastlylb.net": 1, + "faststacks.net": 1, + "fastvps-server.com": 1, + "fastvps.host": 1, + "fastvps.site": 1, + "fauske.no": 1, + "fbx-os.fr": 1, + "fbxos.fr": 1, + "fc.it": 1, + "fe.it": 1, + "fed.us": 1, + "federation.aero": 1, + "fedex": 1, + "fedje.no": 1, + "fedorainfracloud.org": 1, + "fedorapeople.org": 1, + "feedback": 1, + "feira.br": 1, + "fem.jp": 1, + "fentiger.mythic-beasts.com": 1, + "fermo.it": 1, + "ferrara.it": 1, + "ferrari": 1, + "ferrero": 1, + "feste-ip.net": 1, + "fet.no": 1, + "fetsund.no": 1, + "fg.it": 1, + "fh-muenster.io": 1, + "fh.se": 1, + "fhs.no": 1, + "fhsk.se": 1, + "fhv.se": 1, + "fi": 1, + "fi.cloudplatform.fi": 1, + "fi.cr": 1, + "fi.eu.org": 1, + "fi.it": 1, + "fidelity": 1, + "fido": 1, + "fie.ee": 1, + "filegear-au.me": 1, + "filegear-de.me": 1, + "filegear-gb.me": 1, + "filegear-ie.me": 1, + "filegear-jp.me": 1, + "filegear-sg.me": 1, + "filegear.me": 1, + "film": 1, + "film.hu": 1, + "fin.ci": 1, + "fin.ec": 1, + "fin.tn": 1, + "final": 1, + "finance": 1, + "financial": 1, + "finnoy.no": 1, + "finnøy.no": 1, + "fire": 1, + "firebaseapp.com": 1, + "firenze.it": 1, + "firestone": 1, + "firewall-gateway.com": 1, + "firewall-gateway.de": 1, + "firewall-gateway.net": 1, + "firewalledreplit.co": 1, + "fireweb.app": 1, + "firm.co": 1, + "firm.dk": 1, + "firm.ht": 1, + "firm.in": 1, + "firm.nf": 1, + "firm.ng": 1, + "firm.ro": 1, + "firm.ve": 1, + "firmdale": 1, + "fish": 1, + "fishing": 1, + "fit": 1, + "fitjar.no": 1, + "fitness": 1, + "fj": 1, + "fj.cn": 1, + "fjaler.no": 1, + "fjell.no": 1, + "fl.us": 1, + "fla.no": 1, + "flakstad.no": 1, + "flap.id": 1, + "flatanger.no": 1, + "fldrv.com": 1, + "flekkefjord.no": 1, + "flesberg.no": 1, + "flickr": 1, + "flier.jp": 1, + "flight.aero": 1, + "flights": 1, + "flir": 1, + "flog.br": 1, + "flop.jp": 1, + "floppy.jp": 1, + "flora.no": 1, + "florence.it": 1, + "floripa.br": 1, + "florist": 1, + "floro.no": 1, + "florø.no": 1, + "flowers": 1, + "flt.cloud.muni.cz": 1, + "fly": 1, + "fly.dev": 1, + "flynnhosting.net": 1, + "flå.no": 1, + "fm": 1, + "fm.br": 1, + "fm.it": 1, + "fm.no": 1, + "fnc.fr-par.scw.cloud": 1, + "fnd.br": 1, + "fnwk.site": 1, + "fo": 1, + "foggia.it": 1, + "folionetwork.site": 1, + "folkebibl.no": 1, + "folldal.no": 1, + "foo": 1, + "food": 1, + "fool.jp": 1, + "football": 1, + "for-better.biz": 1, + "for-more.biz": 1, + "for-our.info": 1, + "for-some.biz": 1, + "for-the.biz": 1, + "ford": 1, + "forde.no": 1, + "forex": 1, + "forgeblocks.com": 1, + "forgot.her.name": 1, + "forgot.his.name": 1, + "forli-cesena.it": 1, + "forlicesena.it": 1, + "forlì-cesena.it": 1, + "forlìcesena.it": 1, + "forsale": 1, + "forsand.no": 1, + "fortal.br": 1, + "forte.id": 1, + "forum": 1, + "forum.hu": 1, + "forumz.info": 1, + "fosnes.no": 1, + "fot.br": 1, + "foundation": 1, + "fox": 1, + "foz.br": 1, + "fr": 1, + "fr-1.paas.massivegrid.net": 1, + "fr-par-1.baremetal.scw.cloud": 1, + "fr-par-2.baremetal.scw.cloud": 1, + "fr.eu.org": 1, + "fr.it": 1, + "fra1-de.cloudjiffy.net": 1, + "framer.app": 1, + "framer.media": 1, + "framer.photos": 1, + "framer.website": 1, + "framer.wiki": 1, + "framercanvas.com": 1, + "frana.no": 1, + "fredrikstad.no": 1, + "free": 1, + "free.hr": 1, + "freebox-os.com": 1, + "freebox-os.fr": 1, + "freeboxos.com": 1, + "freeboxos.fr": 1, + "freeddns.org": 1, + "freeddns.us": 1, + "freedesktop.org": 1, + "freemyip.com": 1, + "freesite.host": 1, + "freetls.fastly.net": 1, + "frei.no": 1, + "frenchkiss.jp": 1, + "fresenius": 1, + "friuli-v-giulia.it": 1, + "friuli-ve-giulia.it": 1, + "friuli-vegiulia.it": 1, + "friuli-venezia-giulia.it": 1, + "friuli-veneziagiulia.it": 1, + "friuli-vgiulia.it": 1, + "friuliv-giulia.it": 1, + "friulive-giulia.it": 1, + "friulivegiulia.it": 1, + "friulivenezia-giulia.it": 1, + "friuliveneziagiulia.it": 1, + "friulivgiulia.it": 1, + "frl": 1, + "frogans": 1, + "frogn.no": 1, + "froland.no": 1, + "from-ak.com": 1, + "from-al.com": 1, + "from-ar.com": 1, + "from-az.net": 1, + "from-ca.com": 1, + "from-co.net": 1, + "from-ct.com": 1, + "from-dc.com": 1, + "from-de.com": 1, + "from-fl.com": 1, + "from-ga.com": 1, + "from-hi.com": 1, + "from-ia.com": 1, + "from-id.com": 1, + "from-il.com": 1, + "from-in.com": 1, + "from-ks.com": 1, + "from-ky.com": 1, + "from-la.net": 1, + "from-ma.com": 1, + "from-md.com": 1, + "from-me.org": 1, + "from-mi.com": 1, + "from-mn.com": 1, + "from-mo.com": 1, + "from-ms.com": 1, + "from-mt.com": 1, + "from-nc.com": 1, + "from-nd.com": 1, + "from-ne.com": 1, + "from-nh.com": 1, + "from-nj.com": 1, + "from-nm.com": 1, + "from-nv.com": 1, + "from-ny.net": 1, + "from-oh.com": 1, + "from-ok.com": 1, + "from-or.com": 1, + "from-pa.com": 1, + "from-pr.com": 1, + "from-ri.com": 1, + "from-sc.com": 1, + "from-sd.com": 1, + "from-tn.com": 1, + "from-tx.com": 1, + "from-ut.com": 1, + "from-va.com": 1, + "from-vt.com": 1, + "from-wa.com": 1, + "from-wi.com": 1, + "from-wv.com": 1, + "from-wy.com": 1, + "from.hr": 1, + "from.tv": 1, + "frontdoor": 1, + "frontier": 1, + "frosinone.it": 1, + "frosta.no": 1, + "froya.no": 1, + "fræna.no": 1, + "frøya.no": 1, + "fst.br": 1, + "ftpaccess.cc": 1, + "ftr": 1, + "fuchu.hiroshima.jp": 1, + "fuchu.tokyo.jp": 1, + "fuchu.toyama.jp": 1, + "fudai.iwate.jp": 1, + "fuefuki.yamanashi.jp": 1, + "fuel.aero": 1, + "fuettertdasnetz.de": 1, + "fuji.shizuoka.jp": 1, + "fujieda.shizuoka.jp": 1, + "fujiidera.osaka.jp": 1, + "fujikawa.shizuoka.jp": 1, + "fujikawa.yamanashi.jp": 1, + "fujikawaguchiko.yamanashi.jp": 1, + "fujimi.nagano.jp": 1, + "fujimi.saitama.jp": 1, + "fujimino.saitama.jp": 1, + "fujinomiya.shizuoka.jp": 1, + "fujioka.gunma.jp": 1, + "fujisato.akita.jp": 1, + "fujisawa.iwate.jp": 1, + "fujisawa.kanagawa.jp": 1, + "fujishiro.ibaraki.jp": 1, + "fujitsu": 1, + "fujiyoshida.yamanashi.jp": 1, + "fukagawa.hokkaido.jp": 1, + "fukaya.saitama.jp": 1, + "fukuchi.fukuoka.jp": 1, + "fukuchiyama.kyoto.jp": 1, + "fukudomi.saga.jp": 1, + "fukui.fukui.jp": 1, + "fukui.jp": 1, + "fukumitsu.toyama.jp": 1, + "fukuoka.jp": 1, + "fukuroi.shizuoka.jp": 1, + "fukusaki.hyogo.jp": 1, + "fukushima.fukushima.jp": 1, + "fukushima.hokkaido.jp": 1, + "fukushima.jp": 1, + "fukuyama.hiroshima.jp": 1, + "fun": 1, + "funabashi.chiba.jp": 1, + "funagata.yamagata.jp": 1, + "funahashi.toyama.jp": 1, + "functions.fnc.fr-par.scw.cloud": 1, + "fund": 1, + "fuoisku.no": 1, + "fuossko.no": 1, + "furano.hokkaido.jp": 1, + "furniture": 1, + "furubira.hokkaido.jp": 1, + "furudono.fukushima.jp": 1, + "furukawa.miyagi.jp": 1, + "fusa.no": 1, + "fuso.aichi.jp": 1, + "fussa.tokyo.jp": 1, + "futaba.fukushima.jp": 1, + "futbol": 1, + "futsu.nagasaki.jp": 1, + "futtsu.chiba.jp": 1, + "futurehosting.at": 1, + "futuremailing.at": 1, + "fvg.it": 1, + "fyi": 1, + "fylkesbibl.no": 1, + "fyresdal.no": 1, + "førde.no": 1, + "g.bg": 1, + "g.se": 1, + "g.vbrplsbx.io": 1, + "g12.br": 1, + "ga": 1, + "ga.us": 1, + "gaivuotna.no": 1, + "gal": 1, + "gallery": 1, + "gallo": 1, + "gallup": 1, + "galsa.no": 1, + "gamagori.aichi.jp": 1, + "game": 1, + "game-host.org": 1, + "game-server.cc": 1, + "game.tw": 1, + "games": 1, + "games.hu": 1, + "gamo.shiga.jp": 1, + "gamvik.no": 1, + "gangaviika.no": 1, + "gangwon.kr": 1, + "gap": 1, + "garden": 1, + "gaular.no": 1, + "gausdal.no": 1, + "gay": 1, + "gb": 1, + "gb.net": 1, + "gbiz": 1, + "gc.ca": 1, + "gd": 1, + "gd.cn": 1, + "gda.pl": 1, + "gdansk.pl": 1, + "gdn": 1, + "gdynia.pl": 1, + "ge": 1, + "ge.it": 1, + "gea": 1, + "geek.nz": 1, + "geekgalaxy.com": 1, + "gehirn.ne.jp": 1, + "geisei.kochi.jp": 1, + "gen.in": 1, + "gen.mi.us": 1, + "gen.ng": 1, + "gen.nz": 1, + "gen.tr": 1, + "genkai.saga.jp": 1, + "genoa.it": 1, + "genova.it": 1, + "gent": 1, + "gentapps.com": 1, + "genting": 1, + "gentlentapis.com": 1, + "geo.br": 1, + "geometre-expert.fr": 1, + "george": 1, + "georgia.su": 1, + "getmyip.com": 1, + "gets-it.net": 1, + "gf": 1, + "gg": 1, + "gg.ax": 1, + "ggee": 1, + "ggf.br": 1, + "gh": 1, + "ghost.io": 1, + "gi": 1, + "gialai.vn": 1, + "giehtavuoatna.no": 1, + "gift": 1, + "gifts": 1, + "gifu.gifu.jp": 1, + "gifu.jp": 1, + "giize.com": 1, + "gildeskal.no": 1, + "gildeskål.no": 1, + "ginan.gifu.jp": 1, + "ginowan.okinawa.jp": 1, + "ginoza.okinawa.jp": 1, + "girlfriend.jp": 1, + "girly.jp": 1, + "giske.no": 1, + "git-pages.rit.edu": 1, + "git-repos.de": 1, + "gitapp.si": 1, + "github.io": 1, + "githubpreview.dev": 1, + "githubusercontent.com": 1, + "gitlab.io": 1, + "gitpage.si": 1, + "gives": 1, + "giving": 1, + "gjemnes.no": 1, + "gjerdrum.no": 1, + "gjerstad.no": 1, + "gjesdal.no": 1, + "gjovik.no": 1, + "gjøvik.no": 1, + "gl": 1, + "glass": 1, + "gle": 1, + "gleeze.com": 1, + "gliding.aero": 1, + "glitch.me": 1, + "gliwice.pl": 1, + "global": 1, + "global.prod.fastly.net": 1, + "global.ssl.fastly.net": 1, + "globo": 1, + "glogow.pl": 1, + "gloomy.jp": 1, + "gloppen.no": 1, + "glug.org.uk": 1, + "gm": 1, + "gmail": 1, + "gmbh": 1, + "gmina.pl": 1, + "gmo": 1, + "gmx": 1, + "gn": 1, + "gniezno.pl": 1, + "go.ci": 1, + "go.cr": 1, + "go.dyndns.org": 1, + "go.gov.br": 1, + "go.id": 1, + "go.it": 1, + "go.jp": 1, + "go.ke": 1, + "go.kr": 1, + "go.leg.br": 1, + "go.pw": 1, + "go.th": 1, + "go.tj": 1, + "go.tz": 1, + "go.ug": 1, + "gob.ar": 1, + "gob.bo": 1, + "gob.cl": 1, + "gob.do": 1, + "gob.ec": 1, + "gob.es": 1, + "gob.gt": 1, + "gob.hn": 1, + "gob.mx": 1, + "gob.ni": 1, + "gob.pa": 1, + "gob.pe": 1, + "gob.pk": 1, + "gob.sv": 1, + "gob.ve": 1, + "gobo.wakayama.jp": 1, + "godaddy": 1, + "godo.gifu.jp": 1, + "goiania.br": 1, + "goip.de": 1, + "gojome.akita.jp": 1, + "gok.pk": 1, + "gokase.miyazaki.jp": 1, + "gol.no": 1, + "gold": 1, + "goldpoint": 1, + "golf": 1, + "golffan.us": 1, + "gon.pk": 1, + "gonna.jp": 1, + "gonohe.aomori.jp": 1, + "goo": 1, + "goodyear": 1, + "goog": 1, + "google": 1, + "googleapis.com": 1, + "googlecode.com": 1, + "gop": 1, + "gop.pk": 1, + "gorizia.it": 1, + "gorlice.pl": 1, + "gos.pk": 1, + "gose.nara.jp": 1, + "gosen.niigata.jp": 1, + "goshiki.hyogo.jp": 1, + "got": 1, + "gotdns.ch": 1, + "gotdns.com": 1, + "gotdns.org": 1, + "gotemba.shizuoka.jp": 1, + "goto.nagasaki.jp": 1, + "gotpantheon.com": 1, + "gotsu.shimane.jp": 1, + "goupile.fr": 1, + "gouv.ci": 1, + "gouv.fr": 1, + "gouv.ht": 1, + "gouv.km": 1, + "gouv.ml": 1, + "gouv.sn": 1, + "gov": 1, + "gov.ac": 1, + "gov.ae": 1, + "gov.af": 1, + "gov.al": 1, + "gov.ar": 1, + "gov.as": 1, + "gov.au": 1, + "gov.az": 1, + "gov.ba": 1, + "gov.bb": 1, + "gov.bf": 1, + "gov.bh": 1, + "gov.bm": 1, + "gov.bn": 1, + "gov.br": 1, + "gov.bs": 1, + "gov.bt": 1, + "gov.by": 1, + "gov.bz": 1, + "gov.cd": 1, + "gov.cl": 1, + "gov.cm": 1, + "gov.cn": 1, + "gov.co": 1, + "gov.cu": 1, + "gov.cx": 1, + "gov.cy": 1, + "gov.dm": 1, + "gov.do": 1, + "gov.dz": 1, + "gov.ec": 1, + "gov.ee": 1, + "gov.eg": 1, + "gov.et": 1, + "gov.fj": 1, + "gov.gd": 1, + "gov.ge": 1, + "gov.gh": 1, + "gov.gi": 1, + "gov.gn": 1, + "gov.gr": 1, + "gov.gu": 1, + "gov.gy": 1, + "gov.hk": 1, + "gov.ie": 1, + "gov.il": 1, + "gov.in": 1, + "gov.iq": 1, + "gov.ir": 1, + "gov.is": 1, + "gov.it": 1, + "gov.jo": 1, + "gov.kg": 1, + "gov.ki": 1, + "gov.km": 1, + "gov.kn": 1, + "gov.kp": 1, + "gov.kw": 1, + "gov.kz": 1, + "gov.la": 1, + "gov.lb": 1, + "gov.lc": 1, + "gov.lk": 1, + "gov.lr": 1, + "gov.ls": 1, + "gov.lt": 1, + "gov.lv": 1, + "gov.ly": 1, + "gov.ma": 1, + "gov.me": 1, + "gov.mg": 1, + "gov.mk": 1, + "gov.ml": 1, + "gov.mn": 1, + "gov.mo": 1, + "gov.mr": 1, + "gov.ms": 1, + "gov.mu": 1, + "gov.mv": 1, + "gov.mw": 1, + "gov.my": 1, + "gov.mz": 1, + "gov.nc.tr": 1, + "gov.ng": 1, + "gov.nl": 1, + "gov.nr": 1, + "gov.om": 1, + "gov.ph": 1, + "gov.pk": 1, + "gov.pl": 1, + "gov.pn": 1, + "gov.pr": 1, + "gov.ps": 1, + "gov.pt": 1, + "gov.py": 1, + "gov.qa": 1, + "gov.rs": 1, + "gov.ru": 1, + "gov.rw": 1, + "gov.sa": 1, + "gov.sb": 1, + "gov.sc": 1, + "gov.scot": 1, + "gov.sd": 1, + "gov.sg": 1, + "gov.sh": 1, + "gov.sl": 1, + "gov.so": 1, + "gov.ss": 1, + "gov.sx": 1, + "gov.sy": 1, + "gov.tj": 1, + "gov.tl": 1, + "gov.tm": 1, + "gov.tn": 1, + "gov.to": 1, + "gov.tr": 1, + "gov.tt": 1, + "gov.tw": 1, + "gov.ua": 1, + "gov.uk": 1, + "gov.vc": 1, + "gov.ve": 1, + "gov.vn": 1, + "gov.ws": 1, + "gov.ye": 1, + "gov.za": 1, + "gov.zm": 1, + "gov.zw": 1, + "government.aero": 1, + "govt.nz": 1, + "gp": 1, + "gq": 1, + "gr": 1, + "gr.com": 1, + "gr.eu.org": 1, + "gr.it": 1, + "gr.jp": 1, + "grainger": 1, + "grajewo.pl": 1, + "gran.no": 1, + "grane.no": 1, + "granvin.no": 1, + "graphics": 1, + "graphox.us": 1, + "gratangen.no": 1, + "gratis": 1, + "greater.jp": 1, + "green": 1, + "greta.fr": 1, + "grimstad.no": 1, + "gripe": 1, + "griw.gov.pl": 1, + "grocery": 1, + "groks-the.info": 1, + "groks-this.info": 1, + "grondar.za": 1, + "grong.no": 1, + "grosseto.it": 1, + "groundhandling.aero": 1, + "group": 1, + "group.aero": 1, + "grozny.ru": 1, + "grozny.su": 1, + "grp.lk": 1, + "gru.br": 1, + "grue.no": 1, + "gs": 1, + "gs.aa.no": 1, + "gs.ah.no": 1, + "gs.bu.no": 1, + "gs.cn": 1, + "gs.fm.no": 1, + "gs.hl.no": 1, + "gs.hm.no": 1, + "gs.jan-mayen.no": 1, + "gs.mr.no": 1, + "gs.nl.no": 1, + "gs.nt.no": 1, + "gs.of.no": 1, + "gs.ol.no": 1, + "gs.oslo.no": 1, + "gs.rl.no": 1, + "gs.sf.no": 1, + "gs.st.no": 1, + "gs.svalbard.no": 1, + "gs.tm.no": 1, + "gs.tr.no": 1, + "gs.va.no": 1, + "gs.vf.no": 1, + "gsj.bz": 1, + "gsm.pl": 1, + "gt": 1, + "gu": 1, + "gu.us": 1, + "guam.gu": 1, + "guardian": 1, + "gub.uy": 1, + "gucci": 1, + "guge": 1, + "guide": 1, + "guitars": 1, + "gujarat.in": 1, + "gujo.gifu.jp": 1, + "gulen.no": 1, + "gunma.jp": 1, + "guovdageaidnu.no": 1, + "guru": 1, + "gushikami.okinawa.jp": 1, + "gv.ao": 1, + "gv.at": 1, + "gv.vc": 1, + "gw": 1, + "gwangju.kr": 1, + "gx.cn": 1, + "gy": 1, + "gyeongbuk.kr": 1, + "gyeonggi.kr": 1, + "gyeongnam.kr": 1, + "gyokuto.kumamoto.jp": 1, + "gz.cn": 1, + "gáivuotna.no": 1, + "gálsá.no": 1, + "gáŋgaviika.no": 1, + "günstigbestellen.de": 1, + "günstigliefern.de": 1, + "h.bg": 1, + "h.se": 1, + "ha.cn": 1, + "ha.no": 1, + "habikino.osaka.jp": 1, + "habmer.no": 1, + "haboro.hokkaido.jp": 1, + "hacca.jp": 1, + "hachijo.tokyo.jp": 1, + "hachinohe.aomori.jp": 1, + "hachioji.tokyo.jp": 1, + "hachirogata.akita.jp": 1, + "hadano.kanagawa.jp": 1, + "hadsel.no": 1, + "haebaru.okinawa.jp": 1, + "haga.tochigi.jp": 1, + "hagebostad.no": 1, + "hagi.yamaguchi.jp": 1, + "hagiang.vn": 1, + "haibara.shizuoka.jp": 1, + "haiduong.vn": 1, + "haiphong.vn": 1, + "hair": 1, + "hakata.fukuoka.jp": 1, + "hakodate.hokkaido.jp": 1, + "hakone.kanagawa.jp": 1, + "hakuba.nagano.jp": 1, + "hakui.ishikawa.jp": 1, + "hakusan.ishikawa.jp": 1, + "halden.no": 1, + "half.host": 1, + "halfmoon.jp": 1, + "halsa.no": 1, + "ham-radio-op.net": 1, + "hamada.shimane.jp": 1, + "hamamatsu.shizuoka.jp": 1, + "hamar.no": 1, + "hamaroy.no": 1, + "hamatama.saga.jp": 1, + "hamatonbetsu.hokkaido.jp": 1, + "hamburg": 1, + "hammarfeasta.no": 1, + "hammerfest.no": 1, + "hamura.tokyo.jp": 1, + "hanam.vn": 1, + "hanamaki.iwate.jp": 1, + "hanamigawa.chiba.jp": 1, + "hanawa.fukushima.jp": 1, + "handa.aichi.jp": 1, + "handcrafted.jp": 1, + "hanggliding.aero": 1, + "hangout": 1, + "hannan.osaka.jp": 1, + "hanno.saitama.jp": 1, + "hanoi.vn": 1, + "hanyu.saitama.jp": 1, + "hapmir.no": 1, + "happou.akita.jp": 1, + "hara.nagano.jp": 1, + "haram.no": 1, + "hareid.no": 1, + "harima.hyogo.jp": 1, + "harstad.no": 1, + "hasama.oita.jp": 1, + "hasami.nagasaki.jp": 1, + "hashbang.sh": 1, + "hashikami.aomori.jp": 1, + "hashima.gifu.jp": 1, + "hashimoto.wakayama.jp": 1, + "hasuda.saitama.jp": 1, + "hasura-app.io": 1, + "hasura.app": 1, + "hasvik.no": 1, + "hatinh.vn": 1, + "hatogaya.saitama.jp": 1, + "hatoyama.saitama.jp": 1, + "hatsukaichi.hiroshima.jp": 1, + "hattfjelldal.no": 1, + "haugesund.no": 1, + "haugiang.vn": 1, + "haus": 1, + "hayakawa.yamanashi.jp": 1, + "hayashima.okayama.jp": 1, + "hazu.aichi.jp": 1, + "hb.cldmail.ru": 1, + "hb.cn": 1, + "hbo": 1, + "hdfc": 1, + "hdfcbank": 1, + "he.cn": 1, + "health": 1, + "health-carereform.com": 1, + "health.nz": 1, + "health.vn": 1, + "healthcare": 1, + "heavy.jp": 1, + "heguri.nara.jp": 1, + "hekinan.aichi.jp": 1, + "help": 1, + "helsinki": 1, + "hemne.no": 1, + "hemnes.no": 1, + "hemsedal.no": 1, + "hepforge.org": 1, + "her.jp": 1, + "herad.no": 1, + "here": 1, + "here-for-more.info": 1, + "hermes": 1, + "herokuapp.com": 1, + "herokussl.com": 1, + "heroy.more-og-romsdal.no": 1, + "heroy.nordland.no": 1, + "herøy.møre-og-romsdal.no": 1, + "herøy.nordland.no": 1, + "heteml.net": 1, + "hi.cn": 1, + "hi.us": 1, + "hicam.net": 1, + "hichiso.gifu.jp": 1, + "hida.gifu.jp": 1, + "hidaka.hokkaido.jp": 1, + "hidaka.kochi.jp": 1, + "hidaka.saitama.jp": 1, + "hidaka.wakayama.jp": 1, + "higashi.fukuoka.jp": 1, + "higashi.fukushima.jp": 1, + "higashi.okinawa.jp": 1, + "higashiagatsuma.gunma.jp": 1, + "higashichichibu.saitama.jp": 1, + "higashihiroshima.hiroshima.jp": 1, + "higashiizu.shizuoka.jp": 1, + "higashiizumo.shimane.jp": 1, + "higashikagawa.kagawa.jp": 1, + "higashikagura.hokkaido.jp": 1, + "higashikawa.hokkaido.jp": 1, + "higashikurume.tokyo.jp": 1, + "higashimatsushima.miyagi.jp": 1, + "higashimatsuyama.saitama.jp": 1, + "higashimurayama.tokyo.jp": 1, + "higashinaruse.akita.jp": 1, + "higashine.yamagata.jp": 1, + "higashiomi.shiga.jp": 1, + "higashiosaka.osaka.jp": 1, + "higashishirakawa.gifu.jp": 1, + "higashisumiyoshi.osaka.jp": 1, + "higashitsuno.kochi.jp": 1, + "higashiura.aichi.jp": 1, + "higashiyama.kyoto.jp": 1, + "higashiyamato.tokyo.jp": 1, + "higashiyodogawa.osaka.jp": 1, + "higashiyoshino.nara.jp": 1, + "hiho.jp": 1, + "hiji.oita.jp": 1, + "hikari.yamaguchi.jp": 1, + "hikawa.shimane.jp": 1, + "hikimi.shimane.jp": 1, + "hikone.shiga.jp": 1, + "himeji.hyogo.jp": 1, + "himeshima.oita.jp": 1, + "himi.toyama.jp": 1, + "hino.tokyo.jp": 1, + "hino.tottori.jp": 1, + "hinode.tokyo.jp": 1, + "hinohara.tokyo.jp": 1, + "hioki.kagoshima.jp": 1, + "hiphop": 1, + "hippy.jp": 1, + "hirado.nagasaki.jp": 1, + "hiraizumi.iwate.jp": 1, + "hirakata.osaka.jp": 1, + "hiranai.aomori.jp": 1, + "hirara.okinawa.jp": 1, + "hirata.fukushima.jp": 1, + "hiratsuka.kanagawa.jp": 1, + "hiraya.nagano.jp": 1, + "hirogawa.wakayama.jp": 1, + "hirokawa.fukuoka.jp": 1, + "hirono.fukushima.jp": 1, + "hirono.iwate.jp": 1, + "hiroo.hokkaido.jp": 1, + "hirosaki.aomori.jp": 1, + "hiroshima.jp": 1, + "hisamitsu": 1, + "hisayama.fukuoka.jp": 1, + "hita.oita.jp": 1, + "hitachi": 1, + "hitachi.ibaraki.jp": 1, + "hitachinaka.ibaraki.jp": 1, + "hitachiomiya.ibaraki.jp": 1, + "hitachiota.ibaraki.jp": 1, + "hitra.no": 1, + "hiv": 1, + "hizen.saga.jp": 1, + "hjartdal.no": 1, + "hjelmeland.no": 1, + "hk": 1, + "hk.cn": 1, + "hk.com": 1, + "hk.org": 1, + "hkt": 1, + "hl.cn": 1, + "hl.no": 1, + "hlx.live": 1, + "hlx.page": 1, + "hlx3.page": 1, + "hm": 1, + "hm.no": 1, + "hn": 1, + "hn.cn": 1, + "hoabinh.vn": 1, + "hobby-site.com": 1, + "hobby-site.org": 1, + "hobol.no": 1, + "hobøl.no": 1, + "hockey": 1, + "hof.no": 1, + "hofu.yamaguchi.jp": 1, + "hokkaido.jp": 1, + "hokksund.no": 1, + "hokuryu.hokkaido.jp": 1, + "hokuto.hokkaido.jp": 1, + "hokuto.yamanashi.jp": 1, + "hol.no": 1, + "holdings": 1, + "hole.no": 1, + "holiday": 1, + "holmestrand.no": 1, + "holtalen.no": 1, + "holtålen.no": 1, + "holy.jp": 1, + "home-webserver.de": 1, + "home.dyndns.org": 1, + "homebuilt.aero": 1, + "homedepot": 1, + "homedns.org": 1, + "homeftp.net": 1, + "homeftp.org": 1, + "homegoods": 1, + "homeip.net": 1, + "homelink.one": 1, + "homelinux.com": 1, + "homelinux.net": 1, + "homelinux.org": 1, + "homeoffice.gov.uk": 1, + "homes": 1, + "homesecuritymac.com": 1, + "homesecuritypc.com": 1, + "homesense": 1, + "homesklep.pl": 1, + "homeunix.com": 1, + "homeunix.net": 1, + "homeunix.org": 1, + "honai.ehime.jp": 1, + "honbetsu.hokkaido.jp": 1, + "honda": 1, + "honefoss.no": 1, + "hongo.hiroshima.jp": 1, + "honjo.akita.jp": 1, + "honjo.saitama.jp": 1, + "honjyo.akita.jp": 1, + "hoplix.shop": 1, + "hopto.me": 1, + "hopto.org": 1, + "hornindal.no": 1, + "horokanai.hokkaido.jp": 1, + "horonobe.hokkaido.jp": 1, + "horse": 1, + "horten.no": 1, + "hosp.uk": 1, + "hospital": 1, + "host": 1, + "hostedpi.com": 1, + "hosting": 1, + "hosting-cluster.nl": 1, + "hostyhosting.io": 1, + "hot": 1, + "hotel.hu": 1, + "hotel.lk": 1, + "hotel.tz": 1, + "hotels": 1, + "hotelwithflight.com": 1, + "hotmail": 1, + "house": 1, + "how": 1, + "hoyanger.no": 1, + "hoylandet.no": 1, + "hr": 1, + "hr.eu.org": 1, + "hra.health": 1, + "hs.kr": 1, + "hs.run": 1, + "hs.zone": 1, + "hsbc": 1, + "ht": 1, + "httpbin.org": 1, + "hu": 1, + "hu.com": 1, + "hu.eu.org": 1, + "hu.net": 1, + "hughes": 1, + "huissier-justice.fr": 1, + "hungry.jp": 1, + "hungyen.vn": 1, + "hurdal.no": 1, + "hurum.no": 1, + "hvaler.no": 1, + "hyatt": 1, + "hyllestad.no": 1, + "hyogo.jp": 1, + "hyuga.miyazaki.jp": 1, + "hyundai": 1, + "hzc.io": 1, + "hábmer.no": 1, + "hámmárfeasta.no": 1, + "hápmir.no": 1, + "häkkinen.fi": 1, + "hå.no": 1, + "hægebostad.no": 1, + "hønefoss.no": 1, + "høyanger.no": 1, + "høylandet.no": 1, + "i.bg": 1, + "i.ng": 1, + "i.ph": 1, + "i.se": 1, + "i234.me": 1, + "ia.us": 1, + "iamallama.com": 1, + "ibara.okayama.jp": 1, + "ibaraki.ibaraki.jp": 1, + "ibaraki.jp": 1, + "ibaraki.osaka.jp": 1, + "ibestad.no": 1, + "ibigawa.gifu.jp": 1, + "ibm": 1, + "ibxos.it": 1, + "ic.gov.pl": 1, + "icbc": 1, + "ice": 1, + "ichiba.tokushima.jp": 1, + "ichihara.chiba.jp": 1, + "ichikai.tochigi.jp": 1, + "ichikawa.chiba.jp": 1, + "ichikawa.hyogo.jp": 1, + "ichikawamisato.yamanashi.jp": 1, + "ichinohe.iwate.jp": 1, + "ichinomiya.aichi.jp": 1, + "ichinomiya.chiba.jp": 1, + "ichinoseki.iwate.jp": 1, + "icu": 1, + "icurus.jp": 1, + "id": 1, + "id.au": 1, + "id.firewalledreplit.co": 1, + "id.forgerock.io": 1, + "id.ir": 1, + "id.lv": 1, + "id.ly": 1, + "id.repl.co": 1, + "id.us": 1, + "id.vn": 1, + "ide.kyoto.jp": 1, + "idf.il": 1, + "idrett.no": 1, + "idv.hk": 1, + "idv.tw": 1, + "ie": 1, + "ie.eu.org": 1, + "ie.ua": 1, + "ieee": 1, + "if.ua": 1, + "ifm": 1, + "iglesias-carbonia.it": 1, + "iglesiascarbonia.it": 1, + "iheya.okinawa.jp": 1, + "iida.nagano.jp": 1, + "iide.yamagata.jp": 1, + "iijima.nagano.jp": 1, + "iitate.fukushima.jp": 1, + "iiyama.nagano.jp": 1, + "iizuka.fukuoka.jp": 1, + "iizuna.nagano.jp": 1, + "ikano": 1, + "ikaruga.nara.jp": 1, + "ikata.ehime.jp": 1, + "ikawa.akita.jp": 1, + "ikeda.fukui.jp": 1, + "ikeda.gifu.jp": 1, + "ikeda.hokkaido.jp": 1, + "ikeda.nagano.jp": 1, + "ikeda.osaka.jp": 1, + "iki.fi": 1, + "iki.nagasaki.jp": 1, + "ikoma.nara.jp": 1, + "ikusaka.nagano.jp": 1, + "il": 1, + "il.eu.org": 1, + "il.us": 1, + "ilawa.pl": 1, + "iliadboxos.it": 1, + "ilovecollege.info": 1, + "im": 1, + "im.it": 1, + "imabari.ehime.jp": 1, + "imakane.hokkaido.jp": 1, + "imamat": 1, + "imari.saga.jp": 1, + "imb.br": 1, + "imdb": 1, + "imizu.toyama.jp": 1, + "immo": 1, + "immobilien": 1, + "imperia.it": 1, + "impertrix.com": 1, + "impertrixcdn.com": 1, + "in": 1, + "in-addr.arpa": 1, + "in-berlin.de": 1, + "in-brb.de": 1, + "in-butter.de": 1, + "in-dsl.de": 1, + "in-dsl.net": 1, + "in-dsl.org": 1, + "in-the-band.net": 1, + "in-vpn.de": 1, + "in-vpn.net": 1, + "in-vpn.org": 1, + "in.eu.org": 1, + "in.na": 1, + "in.net": 1, + "in.ngrok.io": 1, + "in.ni": 1, + "in.rs": 1, + "in.th": 1, + "in.ua": 1, + "in.us": 1, + "ina.ibaraki.jp": 1, + "ina.nagano.jp": 1, + "ina.saitama.jp": 1, + "inabe.mie.jp": 1, + "inagawa.hyogo.jp": 1, + "inagi.tokyo.jp": 1, + "inami.toyama.jp": 1, + "inami.wakayama.jp": 1, + "inashiki.ibaraki.jp": 1, + "inatsuki.fukuoka.jp": 1, + "inawashiro.fukushima.jp": 1, + "inazawa.aichi.jp": 1, + "inc": 1, + "inc.hk": 1, + "incheon.kr": 1, + "ind.br": 1, + "ind.gt": 1, + "ind.in": 1, + "ind.kw": 1, + "ind.tn": 1, + "independent-commission.uk": 1, + "independent-inquest.uk": 1, + "independent-inquiry.uk": 1, + "independent-panel.uk": 1, + "independent-review.uk": 1, + "inderoy.no": 1, + "inderøy.no": 1, + "indie.porn": 1, + "indigena.bo": 1, + "industria.bo": 1, + "industries": 1, + "ine.kyoto.jp": 1, + "inf.br": 1, + "inf.cu": 1, + "inf.mk": 1, + "inf.ua": 1, + "infiniti": 1, + "info": 1, + "info.at": 1, + "info.au": 1, + "info.az": 1, + "info.bb": 1, + "info.bj": 1, + "info.bo": 1, + "info.co": 1, + "info.cx": 1, + "info.ec": 1, + "info.et": 1, + "info.fj": 1, + "info.gu": 1, + "info.ht": 1, + "info.hu": 1, + "info.in": 1, + "info.ke": 1, + "info.ki": 1, + "info.la": 1, + "info.ls": 1, + "info.mv": 1, + "info.na": 1, + "info.nf": 1, + "info.ni": 1, + "info.nr": 1, + "info.pk": 1, + "info.pl": 1, + "info.pr": 1, + "info.ro": 1, + "info.sd": 1, + "info.tn": 1, + "info.tr": 1, + "info.tt": 1, + "info.tz": 1, + "info.ve": 1, + "info.vn": 1, + "info.zm": 1, + "ing": 1, + "ing.pa": 1, + "ingatlan.hu": 1, + "ink": 1, + "ino.kochi.jp": 1, + "instance.datadetect.com": 1, + "instances.spawn.cc": 1, + "instantcloud.cn": 1, + "institute": 1, + "insurance": 1, + "insurance.aero": 1, + "insure": 1, + "int": 1, + "int.ar": 1, + "int.az": 1, + "int.bo": 1, + "int.ci": 1, + "int.co": 1, + "int.cv": 1, + "int.eu.org": 1, + "int.in": 1, + "int.is": 1, + "int.la": 1, + "int.lk": 1, + "int.mv": 1, + "int.mw": 1, + "int.ni": 1, + "int.pt": 1, + "int.ru": 1, + "int.tj": 1, + "int.tt": 1, + "int.ve": 1, + "int.vn": 1, + "international": 1, + "internet-dns.de": 1, + "internet.in": 1, + "intl.tn": 1, + "intuit": 1, + "inuyama.aichi.jp": 1, + "investments": 1, + "inzai.chiba.jp": 1, + "io": 1, + "io.in": 1, + "io.kg": 1, + "io.vn": 1, + "iobb.net": 1, + "iopsys.se": 1, + "ip.linodeusercontent.com": 1, + "ip6.arpa": 1, + "ipifony.net": 1, + "ipiranga": 1, + "iq": 1, + "ir": 1, + "iris.arpa": 1, + "irish": 1, + "iruma.saitama.jp": 1, + "is": 1, + "is-a-anarchist.com": 1, + "is-a-blogger.com": 1, + "is-a-bookkeeper.com": 1, + "is-a-bruinsfan.org": 1, + "is-a-bulls-fan.com": 1, + "is-a-candidate.org": 1, + "is-a-caterer.com": 1, + "is-a-celticsfan.org": 1, + "is-a-chef.com": 1, + "is-a-chef.net": 1, + "is-a-chef.org": 1, + "is-a-conservative.com": 1, + "is-a-cpa.com": 1, + "is-a-cubicle-slave.com": 1, + "is-a-democrat.com": 1, + "is-a-designer.com": 1, + "is-a-doctor.com": 1, + "is-a-financialadvisor.com": 1, + "is-a-geek.com": 1, + "is-a-geek.net": 1, + "is-a-geek.org": 1, + "is-a-green.com": 1, + "is-a-guru.com": 1, + "is-a-hard-worker.com": 1, + "is-a-hunter.com": 1, + "is-a-knight.org": 1, + "is-a-landscaper.com": 1, + "is-a-lawyer.com": 1, + "is-a-liberal.com": 1, + "is-a-libertarian.com": 1, + "is-a-linux-user.org": 1, + "is-a-llama.com": 1, + "is-a-musician.com": 1, + "is-a-nascarfan.com": 1, + "is-a-nurse.com": 1, + "is-a-painter.com": 1, + "is-a-patsfan.org": 1, + "is-a-personaltrainer.com": 1, + "is-a-photographer.com": 1, + "is-a-player.com": 1, + "is-a-republican.com": 1, + "is-a-rockstar.com": 1, + "is-a-socialist.com": 1, + "is-a-soxfan.org": 1, + "is-a-student.com": 1, + "is-a-teacher.com": 1, + "is-a-techie.com": 1, + "is-a-therapist.com": 1, + "is-an-accountant.com": 1, + "is-an-actor.com": 1, + "is-an-actress.com": 1, + "is-an-anarchist.com": 1, + "is-an-artist.com": 1, + "is-an-engineer.com": 1, + "is-an-entertainer.com": 1, + "is-by.us": 1, + "is-certified.com": 1, + "is-found.org": 1, + "is-gone.com": 1, + "is-into-anime.com": 1, + "is-into-cars.com": 1, + "is-into-cartoons.com": 1, + "is-into-games.com": 1, + "is-leet.com": 1, + "is-lost.org": 1, + "is-not-certified.com": 1, + "is-saved.org": 1, + "is-slick.com": 1, + "is-uberleet.com": 1, + "is-very-bad.org": 1, + "is-very-evil.org": 1, + "is-very-good.org": 1, + "is-very-nice.org": 1, + "is-very-sweet.org": 1, + "is-with-theband.com": 1, + "is.eu.org": 1, + "is.gov.pl": 1, + "is.it": 1, + "isa-geek.com": 1, + "isa-geek.net": 1, + "isa-geek.org": 1, + "isa-hockeynut.com": 1, + "isa.kagoshima.jp": 1, + "isa.us": 1, + "isahaya.nagasaki.jp": 1, + "ise.mie.jp": 1, + "isehara.kanagawa.jp": 1, + "isen.kagoshima.jp": 1, + "isernia.it": 1, + "iserv.dev": 1, + "iservschule.de": 1, + "isesaki.gunma.jp": 1, + "ishigaki.okinawa.jp": 1, + "ishikari.hokkaido.jp": 1, + "ishikawa.fukushima.jp": 1, + "ishikawa.jp": 1, + "ishikawa.okinawa.jp": 1, + "ishinomaki.miyagi.jp": 1, + "isla.pr": 1, + "ismaili": 1, + "isshiki.aichi.jp": 1, + "issmarterthanyou.com": 1, + "ist": 1, + "istanbul": 1, + "isteingeek.de": 1, + "istmein.de": 1, + "isumi.chiba.jp": 1, + "it": 1, + "it.ao": 1, + "it.com": 1, + "it.eu.org": 1, + "it1.eur.aruba.jenv-aruba.cloud": 1, + "it1.jenv-aruba.cloud": 1, + "itabashi.tokyo.jp": 1, + "itako.ibaraki.jp": 1, + "itakura.gunma.jp": 1, + "itami.hyogo.jp": 1, + "itano.tokushima.jp": 1, + "itau": 1, + "itayanagi.aomori.jp": 1, + "itcouldbewor.se": 1, + "itigo.jp": 1, + "ito.shizuoka.jp": 1, + "itoigawa.niigata.jp": 1, + "itoman.okinawa.jp": 1, + "its.me": 1, + "itv": 1, + "ivano-frankivsk.ua": 1, + "ivanovo.su": 1, + "iveland.no": 1, + "ivgu.no": 1, + "ivory.ne.jp": 1, + "iwade.wakayama.jp": 1, + "iwafune.tochigi.jp": 1, + "iwaizumi.iwate.jp": 1, + "iwaki.fukushima.jp": 1, + "iwakuni.yamaguchi.jp": 1, + "iwakura.aichi.jp": 1, + "iwama.ibaraki.jp": 1, + "iwamizawa.hokkaido.jp": 1, + "iwanai.hokkaido.jp": 1, + "iwanuma.miyagi.jp": 1, + "iwata.shizuoka.jp": 1, + "iwate.iwate.jp": 1, + "iwate.jp": 1, + "iwatsuki.saitama.jp": 1, + "iwi.nz": 1, + "iyo.ehime.jp": 1, + "iz.hr": 1, + "izena.okinawa.jp": 1, + "izu.shizuoka.jp": 1, + "izumi.kagoshima.jp": 1, + "izumi.osaka.jp": 1, + "izumiotsu.osaka.jp": 1, + "izumisano.osaka.jp": 1, + "izumizaki.fukushima.jp": 1, + "izumo.shimane.jp": 1, + "izumozaki.niigata.jp": 1, + "izunokuni.shizuoka.jp": 1, + "j.bg": 1, + "j.layershift.co.uk": 1, + "j.scaleforce.com.cy": 1, + "j.scaleforce.net": 1, + "jab.br": 1, + "jaguar": 1, + "jambyl.su": 1, + "jampa.br": 1, + "jan-mayen.no": 1, + "java": 1, + "jaworzno.pl": 1, + "jc.neen.it": 1, + "jcb": 1, + "jcloud-ver-jpc.ik-server.com": 1, + "jcloud.ik-server.com": 1, + "jcloud.kz": 1, + "jdevcloud.com": 1, + "jdf.br": 1, + "je": 1, + "jed.wafaicloud.com": 1, + "jeep": 1, + "jeez.jp": 1, + "jeju.kr": 1, + "jelastic.dogado.eu": 1, + "jelastic.regruhosting.ru": 1, + "jelastic.saveincloud.net": 1, + "jelastic.team": 1, + "jelastic.tsukaeru.net": 1, + "jele.cloud": 1, + "jele.club": 1, + "jele.host": 1, + "jele.io": 1, + "jele.site": 1, + "jelenia-gora.pl": 1, + "jellybean.jp": 1, + "jeonbuk.kr": 1, + "jeonnam.kr": 1, + "jessheim.no": 1, + "jetzt": 1, + "jevnaker.no": 1, + "jewelry": 1, + "jgora.pl": 1, + "jinsekikogen.hiroshima.jp": 1, + "jio": 1, + "jl.cn": 1, + "jll": 1, + "jls-sto1.elastx.net": 1, + "jls-sto2.elastx.net": 1, + "jls-sto3.elastx.net": 1, + "jmp": 1, + "jnj": 1, + "jo": 1, + "joboji.iwate.jp": 1, + "jobs": 1, + "jobs.tt": 1, + "joburg": 1, + "joetsu.niigata.jp": 1, + "jogasz.hu": 1, + "johana.toyama.jp": 1, + "joinville.br": 1, + "jolster.no": 1, + "jondal.no": 1, + "jor.br": 1, + "jorpeland.no": 1, + "joso.ibaraki.jp": 1, + "jot": 1, + "jotelulu.cloud": 1, + "journal.aero": 1, + "journalist.aero": 1, + "joy": 1, + "joyo.kyoto.jp": 1, + "jozi.biz": 1, + "jp": 1, + "jp.eu.org": 1, + "jp.kg": 1, + "jp.md": 1, + "jp.net": 1, + "jp.ngrok.io": 1, + "jpmorgan": 1, + "jpn.com": 1, + "jpn.org": 1, + "jprs": 1, + "js.cn": 1, + "js.org": 1, + "js.wpenginepowered.com": 1, + "ju.mp": 1, + "juegos": 1, + "juniper": 1, + "jur.pro": 1, + "jus.br": 1, + "jx.cn": 1, + "jølster.no": 1, + "jørpeland.no": 1, + "k.bg": 1, + "k.se": 1, + "k12.ak.us": 1, + "k12.al.us": 1, + "k12.ar.us": 1, + "k12.as.us": 1, + "k12.az.us": 1, + "k12.ca.us": 1, + "k12.co.us": 1, + "k12.ct.us": 1, + "k12.dc.us": 1, + "k12.de.us": 1, + "k12.ec": 1, + "k12.fl.us": 1, + "k12.ga.us": 1, + "k12.gu.us": 1, + "k12.ia.us": 1, + "k12.id.us": 1, + "k12.il": 1, + "k12.il.us": 1, + "k12.in.us": 1, + "k12.ks.us": 1, + "k12.ky.us": 1, + "k12.la.us": 1, + "k12.ma.us": 1, + "k12.md.us": 1, + "k12.me.us": 1, + "k12.mi.us": 1, + "k12.mn.us": 1, + "k12.mo.us": 1, + "k12.ms.us": 1, + "k12.mt.us": 1, + "k12.nc.us": 1, + "k12.ne.us": 1, + "k12.nh.us": 1, + "k12.nj.us": 1, + "k12.nm.us": 1, + "k12.nv.us": 1, + "k12.ny.us": 1, + "k12.oh.us": 1, + "k12.ok.us": 1, + "k12.or.us": 1, + "k12.pa.us": 1, + "k12.pr.us": 1, + "k12.sc.us": 1, + "k12.tn.us": 1, + "k12.tr": 1, + "k12.tx.us": 1, + "k12.ut.us": 1, + "k12.va.us": 1, + "k12.vi": 1, + "k12.vi.us": 1, + "k12.vt.us": 1, + "k12.wa.us": 1, + "k12.wi.us": 1, + "k12.wy.us": 1, + "k8s.fr-par.scw.cloud": 1, + "k8s.nl-ams.scw.cloud": 1, + "k8s.pl-waw.scw.cloud": 1, + "k8s.scw.cloud": 1, + "kaas.gg": 1, + "kadena.okinawa.jp": 1, + "kadogawa.miyazaki.jp": 1, + "kadoma.osaka.jp": 1, + "kafjord.no": 1, + "kaga.ishikawa.jp": 1, + "kagami.kochi.jp": 1, + "kagamiishi.fukushima.jp": 1, + "kagamino.okayama.jp": 1, + "kagawa.jp": 1, + "kagoshima.jp": 1, + "kagoshima.kagoshima.jp": 1, + "kaho.fukuoka.jp": 1, + "kahoku.ishikawa.jp": 1, + "kahoku.yamagata.jp": 1, + "kai.yamanashi.jp": 1, + "kainan.tokushima.jp": 1, + "kainan.wakayama.jp": 1, + "kaisei.kanagawa.jp": 1, + "kaita.hiroshima.jp": 1, + "kaizuka.osaka.jp": 1, + "kakamigahara.gifu.jp": 1, + "kakegawa.shizuoka.jp": 1, + "kakinoki.shimane.jp": 1, + "kakogawa.hyogo.jp": 1, + "kakuda.miyagi.jp": 1, + "kalisz.pl": 1, + "kalmykia.ru": 1, + "kalmykia.su": 1, + "kaluga.su": 1, + "kamagaya.chiba.jp": 1, + "kamaishi.iwate.jp": 1, + "kamakura.kanagawa.jp": 1, + "kameoka.kyoto.jp": 1, + "kameyama.mie.jp": 1, + "kami.kochi.jp": 1, + "kami.miyagi.jp": 1, + "kamiamakusa.kumamoto.jp": 1, + "kamifurano.hokkaido.jp": 1, + "kamigori.hyogo.jp": 1, + "kamiichi.toyama.jp": 1, + "kamiizumi.saitama.jp": 1, + "kamijima.ehime.jp": 1, + "kamikawa.hokkaido.jp": 1, + "kamikawa.hyogo.jp": 1, + "kamikawa.saitama.jp": 1, + "kamikitayama.nara.jp": 1, + "kamikoani.akita.jp": 1, + "kamimine.saga.jp": 1, + "kaminokawa.tochigi.jp": 1, + "kaminoyama.yamagata.jp": 1, + "kamioka.akita.jp": 1, + "kamisato.saitama.jp": 1, + "kamishihoro.hokkaido.jp": 1, + "kamisu.ibaraki.jp": 1, + "kamisunagawa.hokkaido.jp": 1, + "kamitonda.wakayama.jp": 1, + "kamitsue.oita.jp": 1, + "kamo.kyoto.jp": 1, + "kamo.niigata.jp": 1, + "kamoenai.hokkaido.jp": 1, + "kamogawa.chiba.jp": 1, + "kanagawa.jp": 1, + "kanan.osaka.jp": 1, + "kanazawa.ishikawa.jp": 1, + "kanegasaki.iwate.jp": 1, + "kaneyama.fukushima.jp": 1, + "kaneyama.yamagata.jp": 1, + "kani.gifu.jp": 1, + "kanie.aichi.jp": 1, + "kanmaki.nara.jp": 1, + "kanna.gunma.jp": 1, + "kannami.shizuoka.jp": 1, + "kanonji.kagawa.jp": 1, + "kanoya.kagoshima.jp": 1, + "kanra.gunma.jp": 1, + "kanuma.tochigi.jp": 1, + "kanzaki.saga.jp": 1, + "kapsi.fi": 1, + "karacol.su": 1, + "karaganda.su": 1, + "karasjohka.no": 1, + "karasjok.no": 1, + "karasuyama.tochigi.jp": 1, + "karatsu.saga.jp": 1, + "karelia.su": 1, + "kariwa.niigata.jp": 1, + "kariya.aichi.jp": 1, + "karlsoy.no": 1, + "karmoy.no": 1, + "karmøy.no": 1, + "karpacz.pl": 1, + "kartuzy.pl": 1, + "karuizawa.nagano.jp": 1, + "karumai.iwate.jp": 1, + "kasahara.gifu.jp": 1, + "kasai.hyogo.jp": 1, + "kasama.ibaraki.jp": 1, + "kasamatsu.gifu.jp": 1, + "kasaoka.okayama.jp": 1, + "kashiba.nara.jp": 1, + "kashihara.nara.jp": 1, + "kashima.ibaraki.jp": 1, + "kashima.saga.jp": 1, + "kashiwa.chiba.jp": 1, + "kashiwara.osaka.jp": 1, + "kashiwazaki.niigata.jp": 1, + "kasserver.com": 1, + "kasuga.fukuoka.jp": 1, + "kasuga.hyogo.jp": 1, + "kasugai.aichi.jp": 1, + "kasukabe.saitama.jp": 1, + "kasumigaura.ibaraki.jp": 1, + "kasuya.fukuoka.jp": 1, + "kaszuby.pl": 1, + "katagami.akita.jp": 1, + "katano.osaka.jp": 1, + "katashina.gunma.jp": 1, + "katori.chiba.jp": 1, + "katowice.pl": 1, + "katsuragi.nara.jp": 1, + "katsuragi.wakayama.jp": 1, + "katsushika.tokyo.jp": 1, + "katsuura.chiba.jp": 1, + "katsuyama.fukui.jp": 1, + "kaufen": 1, + "kautokeino.no": 1, + "kawaba.gunma.jp": 1, + "kawachinagano.osaka.jp": 1, + "kawagoe.mie.jp": 1, + "kawagoe.saitama.jp": 1, + "kawaguchi.saitama.jp": 1, + "kawahara.tottori.jp": 1, + "kawai.iwate.jp": 1, + "kawai.nara.jp": 1, + "kawaiishop.jp": 1, + "kawajima.saitama.jp": 1, + "kawakami.nagano.jp": 1, + "kawakami.nara.jp": 1, + "kawakita.ishikawa.jp": 1, + "kawamata.fukushima.jp": 1, + "kawaminami.miyazaki.jp": 1, + "kawanabe.kagoshima.jp": 1, + "kawanehon.shizuoka.jp": 1, + "kawanishi.hyogo.jp": 1, + "kawanishi.nara.jp": 1, + "kawanishi.yamagata.jp": 1, + "kawara.fukuoka.jp": 1, + "kawasaki.miyagi.jp": 1, + "kawatana.nagasaki.jp": 1, + "kawaue.gifu.jp": 1, + "kawazu.shizuoka.jp": 1, + "kayabe.hokkaido.jp": 1, + "kazimierz-dolny.pl": 1, + "kazo.saitama.jp": 1, + "kazuno.akita.jp": 1, + "kddi": 1, + "ke": 1, + "keisen.fukuoka.jp": 1, + "keliweb.cloud": 1, + "kembuchi.hokkaido.jp": 1, + "kep.tr": 1, + "kepno.pl": 1, + "kerryhotels": 1, + "kerrylogistics": 1, + "kerryproperties": 1, + "ketrzyn.pl": 1, + "keymachine.de": 1, + "kfh": 1, + "kg": 1, + "kg.kr": 1, + "kh.ua": 1, + "khakassia.su": 1, + "khanhhoa.vn": 1, + "kharkiv.ua": 1, + "kharkov.ua": 1, + "kherson.ua": 1, + "khmelnitskiy.ua": 1, + "khmelnytskyi.ua": 1, + "khplay.nl": 1, + "ki": 1, + "kia": 1, + "kibichuo.okayama.jp": 1, + "kicks-ass.net": 1, + "kicks-ass.org": 1, + "kids": 1, + "kids.us": 1, + "kiengiang.vn": 1, + "kiev.ua": 1, + "kiho.mie.jp": 1, + "kihoku.ehime.jp": 1, + "kijo.miyazaki.jp": 1, + "kikirara.jp": 1, + "kikonai.hokkaido.jp": 1, + "kikuchi.kumamoto.jp": 1, + "kikugawa.shizuoka.jp": 1, + "kilatiron.com": 1, + "kill.jp": 1, + "kilo.jp": 1, + "kim": 1, + "kimino.wakayama.jp": 1, + "kimitsu.chiba.jp": 1, + "kimobetsu.hokkaido.jp": 1, + "kin.okinawa.jp": 1, + "kinder": 1, + "kindle": 1, + "kinghost.net": 1, + "kinko.kagoshima.jp": 1, + "kinokawa.wakayama.jp": 1, + "kira.aichi.jp": 1, + "kirara.st": 1, + "kirkenes.no": 1, + "kirovograd.ua": 1, + "kiryu.gunma.jp": 1, + "kisarazu.chiba.jp": 1, + "kishiwada.osaka.jp": 1, + "kiso.nagano.jp": 1, + "kisofukushima.nagano.jp": 1, + "kisosaki.mie.jp": 1, + "kita.kyoto.jp": 1, + "kita.osaka.jp": 1, + "kita.tokyo.jp": 1, + "kitaaiki.nagano.jp": 1, + "kitaakita.akita.jp": 1, + "kitadaito.okinawa.jp": 1, + "kitagata.gifu.jp": 1, + "kitagata.saga.jp": 1, + "kitagawa.kochi.jp": 1, + "kitagawa.miyazaki.jp": 1, + "kitahata.saga.jp": 1, + "kitahiroshima.hokkaido.jp": 1, + "kitakami.iwate.jp": 1, + "kitakata.fukushima.jp": 1, + "kitakata.miyazaki.jp": 1, + "kitami.hokkaido.jp": 1, + "kitamoto.saitama.jp": 1, + "kitanakagusuku.okinawa.jp": 1, + "kitashiobara.fukushima.jp": 1, + "kitaura.miyazaki.jp": 1, + "kitayama.wakayama.jp": 1, + "kitchen": 1, + "kiwa.mie.jp": 1, + "kiwi": 1, + "kiwi.nz": 1, + "kiyama.saga.jp": 1, + "kiyokawa.kanagawa.jp": 1, + "kiyosato.hokkaido.jp": 1, + "kiyose.tokyo.jp": 1, + "kiyosu.aichi.jp": 1, + "kizu.kyoto.jp": 1, + "klabu.no": 1, + "klepp.no": 1, + "klodzko.pl": 1, + "klæbu.no": 1, + "km": 1, + "km.ua": 1, + "kmpsp.gov.pl": 1, + "kn": 1, + "knightpoint.systems": 1, + "knowsitall.info": 1, + "knx-server.net": 1, + "kobayashi.miyazaki.jp": 1, + "kobierzyce.pl": 1, + "kochi.jp": 1, + "kochi.kochi.jp": 1, + "kodaira.tokyo.jp": 1, + "koeln": 1, + "kofu.yamanashi.jp": 1, + "koga.fukuoka.jp": 1, + "koga.ibaraki.jp": 1, + "koganei.tokyo.jp": 1, + "koge.tottori.jp": 1, + "koka.shiga.jp": 1, + "kokonoe.oita.jp": 1, + "kokubunji.tokyo.jp": 1, + "kolobrzeg.pl": 1, + "komae.tokyo.jp": 1, + "komagane.nagano.jp": 1, + "komaki.aichi.jp": 1, + "komatsu": 1, + "komatsu.ishikawa.jp": 1, + "komatsushima.tokushima.jp": 1, + "komforb.se": 1, + "kommunalforbund.se": 1, + "kommune.no": 1, + "komono.mie.jp": 1, + "komoro.nagano.jp": 1, + "komvux.se": 1, + "konan.aichi.jp": 1, + "konan.shiga.jp": 1, + "kongsberg.no": 1, + "kongsvinger.no": 1, + "konin.pl": 1, + "konskowola.pl": 1, + "konsulat.gov.pl": 1, + "kontum.vn": 1, + "konyvelo.hu": 1, + "koobin.events": 1, + "koori.fukushima.jp": 1, + "kopervik.no": 1, + "koriyama.fukushima.jp": 1, + "koryo.nara.jp": 1, + "kosai.shizuoka.jp": 1, + "kosaka.akita.jp": 1, + "kosei.shiga.jp": 1, + "kosher": 1, + "koshigaya.saitama.jp": 1, + "koshimizu.hokkaido.jp": 1, + "koshu.yamanashi.jp": 1, + "kosuge.yamanashi.jp": 1, + "kota.aichi.jp": 1, + "koto.shiga.jp": 1, + "koto.tokyo.jp": 1, + "kotohira.kagawa.jp": 1, + "kotoura.tottori.jp": 1, + "kouhoku.saga.jp": 1, + "kounosu.saitama.jp": 1, + "kouyama.kagoshima.jp": 1, + "kouzushima.tokyo.jp": 1, + "koya.wakayama.jp": 1, + "koza.wakayama.jp": 1, + "kozagawa.wakayama.jp": 1, + "kozaki.chiba.jp": 1, + "kozow.com": 1, + "kp": 1, + "kpmg": 1, + "kpn": 1, + "kppsp.gov.pl": 1, + "kr": 1, + "kr.com": 1, + "kr.eu.org": 1, + "kr.it": 1, + "kr.ua": 1, + "kraanghke.no": 1, + "kragero.no": 1, + "kragerø.no": 1, + "krakow.pl": 1, + "krasnik.pl": 1, + "krasnodar.su": 1, + "krd": 1, + "kred": 1, + "krellian.net": 1, + "kristiansand.no": 1, + "kristiansund.no": 1, + "krodsherad.no": 1, + "krokstadelva.no": 1, + "kropyvnytskyi.ua": 1, + "krym.ua": 1, + "kråanghke.no": 1, + "krødsherad.no": 1, + "ks.ua": 1, + "ks.us": 1, + "ktistory.com": 1, + "kuchinotsu.nagasaki.jp": 1, + "kudamatsu.yamaguchi.jp": 1, + "kudoyama.wakayama.jp": 1, + "kui.hiroshima.jp": 1, + "kuji.iwate.jp": 1, + "kuju.oita.jp": 1, + "kujukuri.chiba.jp": 1, + "kuki.saitama.jp": 1, + "kuleuven.cloud": 1, + "kumagaya.saitama.jp": 1, + "kumakogen.ehime.jp": 1, + "kumamoto.jp": 1, + "kumamoto.kumamoto.jp": 1, + "kumano.hiroshima.jp": 1, + "kumano.mie.jp": 1, + "kumatori.osaka.jp": 1, + "kumejima.okinawa.jp": 1, + "kumenan.okayama.jp": 1, + "kumiyama.kyoto.jp": 1, + "kunigami.okinawa.jp": 1, + "kunimi.fukushima.jp": 1, + "kunisaki.oita.jp": 1, + "kunitachi.tokyo.jp": 1, + "kunitomi.miyazaki.jp": 1, + "kunneppu.hokkaido.jp": 1, + "kunohe.iwate.jp": 1, + "kuokgroup": 1, + "kurashiki.okayama.jp": 1, + "kurate.fukuoka.jp": 1, + "kure.hiroshima.jp": 1, + "kurgan.su": 1, + "kuriyama.hokkaido.jp": 1, + "kurobe.toyama.jp": 1, + "kurogi.fukuoka.jp": 1, + "kuroishi.aomori.jp": 1, + "kuroiso.tochigi.jp": 1, + "kuromatsunai.hokkaido.jp": 1, + "kuron.jp": 1, + "kurotaki.nara.jp": 1, + "kurume.fukuoka.jp": 1, + "kusatsu.gunma.jp": 1, + "kusatsu.shiga.jp": 1, + "kushima.miyazaki.jp": 1, + "kushimoto.wakayama.jp": 1, + "kushiro.hokkaido.jp": 1, + "kustanai.ru": 1, + "kustanai.su": 1, + "kusu.oita.jp": 1, + "kutchan.hokkaido.jp": 1, + "kutno.pl": 1, + "kuwana.mie.jp": 1, + "kuzumaki.iwate.jp": 1, + "kv.ua": 1, + "kvafjord.no": 1, + "kvalsund.no": 1, + "kvam.no": 1, + "kvanangen.no": 1, + "kvinesdal.no": 1, + "kvinnherad.no": 1, + "kviteseid.no": 1, + "kvitsoy.no": 1, + "kvitsøy.no": 1, + "kvæfjord.no": 1, + "kvænangen.no": 1, + "kw": 1, + "kwp.gov.pl": 1, + "kwpsp.gov.pl": 1, + "ky": 1, + "ky.us": 1, + "kyiv.ua": 1, + "kyonan.chiba.jp": 1, + "kyotamba.kyoto.jp": 1, + "kyotanabe.kyoto.jp": 1, + "kyotango.kyoto.jp": 1, + "kyoto": 1, + "kyoto.jp": 1, + "kyowa.akita.jp": 1, + "kyowa.hokkaido.jp": 1, + "kyuragi.saga.jp": 1, + "kz": 1, + "kárášjohka.no": 1, + "kåfjord.no": 1, + "l-o-g-i-n.de": 1, + "l.bg": 1, + "l.se": 1, + "la": 1, + "la-spezia.it": 1, + "la.us": 1, + "laakesvuemie.no": 1, + "lab.ms": 1, + "lacaixa": 1, + "ladesk.com": 1, + "lahppi.no": 1, + "laichau.vn": 1, + "lakas.hu": 1, + "lamborghini": 1, + "lamdong.vn": 1, + "lamer": 1, + "lanbib.se": 1, + "lancaster": 1, + "land": 1, + "land-4-sale.us": 1, + "landrover": 1, + "langevag.no": 1, + "langevåg.no": 1, + "langson.vn": 1, + "lanxess": 1, + "laocai.vn": 1, + "lapy.pl": 1, + "laquila.it": 1, + "lardal.no": 1, + "larvik.no": 1, + "lasalle": 1, + "laspezia.it": 1, + "lat": 1, + "latina.it": 1, + "latino": 1, + "latrobe": 1, + "lavagis.no": 1, + "lavangen.no": 1, + "law": 1, + "law.pro": 1, + "law.za": 1, + "lawyer": 1, + "laz.it": 1, + "lazio.it": 1, + "lb": 1, + "lc": 1, + "lc.it": 1, + "lcube-server.de": 1, + "lds": 1, + "le.it": 1, + "leadpages.co": 1, + "leangaviika.no": 1, + "lease": 1, + "leasing.aero": 1, + "leaŋgaviika.no": 1, + "lebesby.no": 1, + "lebork.pl": 1, + "lebtimnetz.de": 1, + "lecce.it": 1, + "lecco.it": 1, + "leclerc": 1, + "leczna.pl": 1, + "lefrak": 1, + "leg.br": 1, + "legal": 1, + "legnica.pl": 1, + "lego": 1, + "leikanger.no": 1, + "leirfjord.no": 1, + "leirvik.no": 1, + "leitungsen.de": 1, + "leka.no": 1, + "leksvik.no": 1, + "lel.br": 1, + "lelux.site": 1, + "lenug.su": 1, + "lenvik.no": 1, + "lerdal.no": 1, + "lesja.no": 1, + "levanger.no": 1, + "lexus": 1, + "lezajsk.pl": 1, + "lg.jp": 1, + "lg.ua": 1, + "lgbt": 1, + "li": 1, + "li.it": 1, + "lib.ak.us": 1, + "lib.al.us": 1, + "lib.ar.us": 1, + "lib.as.us": 1, + "lib.az.us": 1, + "lib.ca.us": 1, + "lib.co.us": 1, + "lib.ct.us": 1, + "lib.dc.us": 1, + "lib.de.us": 1, + "lib.ee": 1, + "lib.fl.us": 1, + "lib.ga.us": 1, + "lib.gu.us": 1, + "lib.hi.us": 1, + "lib.ia.us": 1, + "lib.id.us": 1, + "lib.il.us": 1, + "lib.in.us": 1, + "lib.ks.us": 1, + "lib.ky.us": 1, + "lib.la.us": 1, + "lib.ma.us": 1, + "lib.md.us": 1, + "lib.me.us": 1, + "lib.mi.us": 1, + "lib.mn.us": 1, + "lib.mo.us": 1, + "lib.ms.us": 1, + "lib.mt.us": 1, + "lib.nc.us": 1, + "lib.nd.us": 1, + "lib.ne.us": 1, + "lib.nh.us": 1, + "lib.nj.us": 1, + "lib.nm.us": 1, + "lib.nv.us": 1, + "lib.ny.us": 1, + "lib.oh.us": 1, + "lib.ok.us": 1, + "lib.or.us": 1, + "lib.pa.us": 1, + "lib.pr.us": 1, + "lib.ri.us": 1, + "lib.sc.us": 1, + "lib.sd.us": 1, + "lib.tn.us": 1, + "lib.tx.us": 1, + "lib.ut.us": 1, + "lib.va.us": 1, + "lib.vi.us": 1, + "lib.vt.us": 1, + "lib.wa.us": 1, + "lib.wi.us": 1, + "lib.wy.us": 1, + "lidl": 1, + "lier.no": 1, + "lierne.no": 1, + "life": 1, + "lifeinsurance": 1, + "lifestyle": 1, + "lig.it": 1, + "lighting": 1, + "liguria.it": 1, + "like": 1, + "likes-pie.com": 1, + "likescandy.com": 1, + "lillehammer.no": 1, + "lillesand.no": 1, + "lilly": 1, + "lima-city.at": 1, + "lima-city.ch": 1, + "lima-city.de": 1, + "lima-city.rocks": 1, + "lima.zone": 1, + "limanowa.pl": 1, + "limited": 1, + "limo": 1, + "lincoln": 1, + "lindas.no": 1, + "lindesnes.no": 1, + "lindås.no": 1, + "link": 1, + "linkyard-cloud.ch": 1, + "linkyard.cloud": 1, + "lipsy": 1, + "littlestar.jp": 1, + "live": 1, + "living": 1, + "livorno.it": 1, + "lk": 1, + "lk3.ru": 1, + "llc": 1, + "llp": 1, + "ln.cn": 1, + "lo.it": 1, + "loabat.no": 1, + "loabát.no": 1, + "loan": 1, + "loans": 1, + "localhost.daplie.me": 1, + "localzone.xyz": 1, + "locker": 1, + "locus": 1, + "lodi.it": 1, + "lodingen.no": 1, + "log.br": 1, + "loginline.app": 1, + "loginline.dev": 1, + "loginline.io": 1, + "loginline.services": 1, + "loginline.site": 1, + "loginto.me": 1, + "logistics.aero": 1, + "logoip.com": 1, + "logoip.de": 1, + "lohmus.me": 1, + "loisirs.bj": 1, + "lol": 1, + "lolipop.io": 1, + "lolipopmc.jp": 1, + "lolitapunk.jp": 1, + "lom.it": 1, + "lom.no": 1, + "lombardia.it": 1, + "lombardy.it": 1, + "lomo.jp": 1, + "lomza.pl": 1, + "lon-1.paas.massivegrid.net": 1, + "lon-2.paas.massivegrid.net": 1, + "lon.wafaicloud.com": 1, + "london": 1, + "london.cloudapps.digital": 1, + "londrina.br": 1, + "longan.vn": 1, + "loppa.no": 1, + "lorenskog.no": 1, + "loseyourip.com": 1, + "loten.no": 1, + "lotte": 1, + "lotto": 1, + "love": 1, + "lovepop.jp": 1, + "lovesick.jp": 1, + "lowicz.pl": 1, + "lpages.co": 1, + "lpl": 1, + "lplfinancial": 1, + "lpusercontent.com": 1, + "lr": 1, + "ls": 1, + "lt": 1, + "lt.eu.org": 1, + "lt.it": 1, + "lt.ua": 1, + "ltd": 1, + "ltd.co.im": 1, + "ltd.cy": 1, + "ltd.gi": 1, + "ltd.hk": 1, + "ltd.lk": 1, + "ltd.ng": 1, + "ltd.ua": 1, + "ltd.uk": 1, + "ltda": 1, + "lu": 1, + "lu.eu.org": 1, + "lu.it": 1, + "lubartow.pl": 1, + "lubin.pl": 1, + "lublin.pl": 1, + "lucania.it": 1, + "lucca.it": 1, + "lug.org.uk": 1, + "lugansk.ua": 1, + "lugs.org.uk": 1, + "lukow.pl": 1, + "lund.no": 1, + "lundbeck": 1, + "lunner.no": 1, + "luroy.no": 1, + "lurøy.no": 1, + "luster.no": 1, + "lutsk.ua": 1, + "luxe": 1, + "luxury": 1, + "lv": 1, + "lv.eu.org": 1, + "lv.ua": 1, + "lviv.ua": 1, + "ly": 1, + "lyngdal.no": 1, + "lyngen.no": 1, + "lynx.mythic-beasts.com": 1, + "láhppi.no": 1, + "lærdal.no": 1, + "lødingen.no": 1, + "lørenskog.no": 1, + "løten.no": 1, + "m.bg": 1, + "m.se": 1, + "ma": 1, + "ma.gov.br": 1, + "ma.leg.br": 1, + "ma.us": 1, + "macapa.br": 1, + "maceio.br": 1, + "macerata.it": 1, + "machida.tokyo.jp": 1, + "madrid": 1, + "maebashi.gunma.jp": 1, + "magazine.aero": 1, + "magnet.page": 1, + "maibara.shiga.jp": 1, + "maif": 1, + "mail-box.ne.jp": 1, + "mail.pl": 1, + "main.jp": 1, + "maintenance.aero": 1, + "maison": 1, + "maizuru.kyoto.jp": 1, + "makeup": 1, + "makinohara.shizuoka.jp": 1, + "makurazaki.kagoshima.jp": 1, + "malatvuopmi.no": 1, + "malbork.pl": 1, + "malopolska.pl": 1, + "malselv.no": 1, + "malvik.no": 1, + "mamurogawa.yamagata.jp": 1, + "man": 1, + "management": 1, + "manaus.br": 1, + "mandal.no": 1, + "mango": 1, + "mangyshlak.su": 1, + "maniwa.okayama.jp": 1, + "manno.kagawa.jp": 1, + "mantova.it": 1, + "maori.nz": 1, + "map": 1, + "map.fastly.net": 1, + "map.fastlylb.net": 1, + "mar.it": 1, + "marche.it": 1, + "marine.ru": 1, + "maringa.br": 1, + "marker.no": 1, + "market": 1, + "marketing": 1, + "markets": 1, + "marnardal.no": 1, + "marriott": 1, + "marshalls": 1, + "marugame.kagawa.jp": 1, + "marumori.miyagi.jp": 1, + "masaki.ehime.jp": 1, + "masfjorden.no": 1, + "mashike.hokkaido.jp": 1, + "mashiki.kumamoto.jp": 1, + "mashiko.tochigi.jp": 1, + "masoy.no": 1, + "massa-carrara.it": 1, + "massacarrara.it": 1, + "masuda.shimane.jp": 1, + "mat.br": 1, + "matera.it": 1, + "matrix.jp": 1, + "matsubara.osaka.jp": 1, + "matsubushi.saitama.jp": 1, + "matsuda.kanagawa.jp": 1, + "matsudo.chiba.jp": 1, + "matsue.shimane.jp": 1, + "matsukawa.nagano.jp": 1, + "matsumae.hokkaido.jp": 1, + "matsumoto.kagoshima.jp": 1, + "matsumoto.nagano.jp": 1, + "matsuno.ehime.jp": 1, + "matsusaka.mie.jp": 1, + "matsushige.tokushima.jp": 1, + "matsushima.miyagi.jp": 1, + "matsuura.nagasaki.jp": 1, + "matsuyama.ehime.jp": 1, + "matsuzaki.shizuoka.jp": 1, + "matta-varjjat.no": 1, + "mattel": 1, + "mayfirst.info": 1, + "mayfirst.org": 1, + "mazeplay.com": 1, + "mazowsze.pl": 1, + "mazury.pl": 1, + "mb.ca": 1, + "mb.it": 1, + "mba": 1, + "mc": 1, + "mc.ax": 1, + "mc.eu.org": 1, + "mc.it": 1, + "mcdir.me": 1, + "mcdir.ru": 1, + "mckinsey": 1, + "mcpe.me": 1, + "mcpre.ru": 1, + "md": 1, + "md.ci": 1, + "md.us": 1, + "me": 1, + "me.eu.org": 1, + "me.in": 1, + "me.it": 1, + "me.ke": 1, + "me.so": 1, + "me.ss": 1, + "me.tc": 1, + "me.tz": 1, + "me.uk": 1, + "me.us": 1, + "me.vu": 1, + "med": 1, + "med.br": 1, + "med.ec": 1, + "med.ee": 1, + "med.ht": 1, + "med.ly": 1, + "med.om": 1, + "med.pa": 1, + "med.pl": 1, + "med.pro": 1, + "med.sa": 1, + "med.sd": 1, + "medecin.fr": 1, + "medecin.km": 1, + "media": 1, + "media.aero": 1, + "media.hu": 1, + "media.pl": 1, + "mediatech.by": 1, + "mediatech.dev": 1, + "medicina.bo": 1, + "medio-campidano.it": 1, + "mediocampidano.it": 1, + "meet": 1, + "meguro.tokyo.jp": 1, + "mein-iserv.de": 1, + "mein-vigor.de": 1, + "meinforum.net": 1, + "meiwa.gunma.jp": 1, + "meiwa.mie.jp": 1, + "mel.cloudlets.com.au": 1, + "meland.no": 1, + "melbourne": 1, + "meldal.no": 1, + "melhus.no": 1, + "meloy.no": 1, + "meløy.no": 1, + "members.linode.com": 1, + "meme": 1, + "memorial": 1, + "memset.net": 1, + "men": 1, + "menu": 1, + "meraker.no": 1, + "merckmsd": 1, + "merseine.nu": 1, + "meråker.no": 1, + "messerli.app": 1, + "messina.it": 1, + "messwithdns.com": 1, + "meteorapp.com": 1, + "mex.com": 1, + "mg": 1, + "mg.gov.br": 1, + "mg.leg.br": 1, + "mh": 1, + "mi.it": 1, + "mi.th": 1, + "mi.us": 1, + "miami": 1, + "miasa.nagano.jp": 1, + "miasta.pl": 1, + "mibu.tochigi.jp": 1, + "microlight.aero": 1, + "microsoft": 1, + "midori.chiba.jp": 1, + "midori.gunma.jp": 1, + "midsund.no": 1, + "midtre-gauldal.no": 1, + "mie.jp": 1, + "mielec.pl": 1, + "mielno.pl": 1, + "mifune.kumamoto.jp": 1, + "mihama.aichi.jp": 1, + "mihama.chiba.jp": 1, + "mihama.fukui.jp": 1, + "mihama.mie.jp": 1, + "mihama.wakayama.jp": 1, + "mihara.hiroshima.jp": 1, + "mihara.kochi.jp": 1, + "miharu.fukushima.jp": 1, + "miho.ibaraki.jp": 1, + "mikasa.hokkaido.jp": 1, + "mikawa.yamagata.jp": 1, + "miki.hyogo.jp": 1, + "mil": 1, + "mil.ac": 1, + "mil.ae": 1, + "mil.al": 1, + "mil.ar": 1, + "mil.az": 1, + "mil.ba": 1, + "mil.bo": 1, + "mil.br": 1, + "mil.by": 1, + "mil.cl": 1, + "mil.cn": 1, + "mil.co": 1, + "mil.cy": 1, + "mil.do": 1, + "mil.ec": 1, + "mil.eg": 1, + "mil.fj": 1, + "mil.ge": 1, + "mil.gh": 1, + "mil.gt": 1, + "mil.hn": 1, + "mil.id": 1, + "mil.in": 1, + "mil.iq": 1, + "mil.jo": 1, + "mil.kg": 1, + "mil.km": 1, + "mil.kr": 1, + "mil.kz": 1, + "mil.lv": 1, + "mil.mg": 1, + "mil.mv": 1, + "mil.my": 1, + "mil.mz": 1, + "mil.ng": 1, + "mil.ni": 1, + "mil.no": 1, + "mil.nz": 1, + "mil.pe": 1, + "mil.ph": 1, + "mil.pl": 1, + "mil.py": 1, + "mil.qa": 1, + "mil.ru": 1, + "mil.rw": 1, + "mil.sh": 1, + "mil.st": 1, + "mil.sy": 1, + "mil.tj": 1, + "mil.tm": 1, + "mil.to": 1, + "mil.tr": 1, + "mil.tw": 1, + "mil.tz": 1, + "mil.uy": 1, + "mil.vc": 1, + "mil.ve": 1, + "mil.ye": 1, + "mil.za": 1, + "mil.zm": 1, + "mil.zw": 1, + "milan.it": 1, + "milano.it": 1, + "mima.tokushima.jp": 1, + "mimata.miyazaki.jp": 1, + "mimoza.jp": 1, + "minakami.gunma.jp": 1, + "minamata.kumamoto.jp": 1, + "minami-alps.yamanashi.jp": 1, + "minami.fukuoka.jp": 1, + "minami.kyoto.jp": 1, + "minami.tokushima.jp": 1, + "minamiaiki.nagano.jp": 1, + "minamiashigara.kanagawa.jp": 1, + "minamiawaji.hyogo.jp": 1, + "minamiboso.chiba.jp": 1, + "minamidaito.okinawa.jp": 1, + "minamiechizen.fukui.jp": 1, + "minamifurano.hokkaido.jp": 1, + "minamiise.mie.jp": 1, + "minamiizu.shizuoka.jp": 1, + "minamimaki.nagano.jp": 1, + "minamiminowa.nagano.jp": 1, + "minamioguni.kumamoto.jp": 1, + "minamisanriku.miyagi.jp": 1, + "minamitane.kagoshima.jp": 1, + "minamiuonuma.niigata.jp": 1, + "minamiyamashiro.kyoto.jp": 1, + "minano.saitama.jp": 1, + "minato.osaka.jp": 1, + "minato.tokyo.jp": 1, + "mincom.tn": 1, + "mine.nu": 1, + "mini": 1, + "miniserver.com": 1, + "minisite.ms": 1, + "mino.gifu.jp": 1, + "minobu.yamanashi.jp": 1, + "minoh.osaka.jp": 1, + "minokamo.gifu.jp": 1, + "minowa.nagano.jp": 1, + "mint": 1, + "mintere.site": 1, + "mints.ne.jp": 1, + "mircloud.host": 1, + "mircloud.ru": 1, + "mircloud.us": 1, + "misaki.okayama.jp": 1, + "misaki.osaka.jp": 1, + "misasa.tottori.jp": 1, + "misato.akita.jp": 1, + "misato.miyagi.jp": 1, + "misato.saitama.jp": 1, + "misato.shimane.jp": 1, + "misato.wakayama.jp": 1, + "misawa.aomori.jp": 1, + "misconfused.org": 1, + "mishima.fukushima.jp": 1, + "mishima.shizuoka.jp": 1, + "misugi.mie.jp": 1, + "mit": 1, + "mitaka.tokyo.jp": 1, + "mitake.gifu.jp": 1, + "mitane.akita.jp": 1, + "mito.ibaraki.jp": 1, + "mitou.yamaguchi.jp": 1, + "mitoyo.kagawa.jp": 1, + "mitsubishi": 1, + "mitsue.nara.jp": 1, + "mitsuke.niigata.jp": 1, + "miura.kanagawa.jp": 1, + "miyada.nagano.jp": 1, + "miyagi.jp": 1, + "miyake.nara.jp": 1, + "miyako.fukuoka.jp": 1, + "miyako.iwate.jp": 1, + "miyakonojo.miyazaki.jp": 1, + "miyama.fukuoka.jp": 1, + "miyama.mie.jp": 1, + "miyashiro.saitama.jp": 1, + "miyawaka.fukuoka.jp": 1, + "miyazaki.jp": 1, + "miyazaki.miyazaki.jp": 1, + "miyazu.kyoto.jp": 1, + "miyoshi.aichi.jp": 1, + "miyoshi.hiroshima.jp": 1, + "miyoshi.saitama.jp": 1, + "miyoshi.tokushima.jp": 1, + "miyota.nagano.jp": 1, + "mizuho.tokyo.jp": 1, + "mizumaki.fukuoka.jp": 1, + "mizunami.gifu.jp": 1, + "mizusawa.iwate.jp": 1, + "mjondalen.no": 1, + "mjøndalen.no": 1, + "mk": 1, + "mk.eu.org": 1, + "mk.ua": 1, + "ml": 1, + "mlb": 1, + "mlbfan.org": 1, + "mls": 1, + "mma": 1, + "mmafan.biz": 1, + "mn": 1, + "mn.it": 1, + "mn.us": 1, + "mo": 1, + "mo-i-rana.no": 1, + "mo-siemens.io": 1, + "mo.cn": 1, + "mo.it": 1, + "mo.us": 1, + "moareke.no": 1, + "mobara.chiba.jp": 1, + "mobi": 1, + "mobi.gp": 1, + "mobi.ke": 1, + "mobi.na": 1, + "mobi.ng": 1, + "mobi.tt": 1, + "mobi.tz": 1, + "mobile": 1, + "mochizuki.nagano.jp": 1, + "mock.pstmn.io": 1, + "mod.gi": 1, + "moda": 1, + "modalen.no": 1, + "modelling.aero": 1, + "modena.it": 1, + "mods.jp": 1, + "modum.no": 1, + "moe": 1, + "moi": 1, + "moka.tochigi.jp": 1, + "mokuren.ne.jp": 1, + "mol.it": 1, + "molde.no": 1, + "molise.it": 1, + "mom": 1, + "mombetsu.hokkaido.jp": 1, + "monash": 1, + "mond.jp": 1, + "money": 1, + "money.bj": 1, + "mongolian.jp": 1, + "monster": 1, + "monza-brianza.it": 1, + "monza-e-della-brianza.it": 1, + "monza.it": 1, + "monzabrianza.it": 1, + "monzaebrianza.it": 1, + "monzaedellabrianza.it": 1, + "moo.jp": 1, + "moonscale.net": 1, + "mordovia.ru": 1, + "mordovia.su": 1, + "morena.br": 1, + "moriguchi.osaka.jp": 1, + "morimachi.shizuoka.jp": 1, + "morioka.iwate.jp": 1, + "moriya.ibaraki.jp": 1, + "moriyama.shiga.jp": 1, + "moriyoshi.akita.jp": 1, + "mormon": 1, + "morotsuka.miyazaki.jp": 1, + "moroyama.saitama.jp": 1, + "mortgage": 1, + "moscow": 1, + "moseushi.hokkaido.jp": 1, + "mosjoen.no": 1, + "mosjøen.no": 1, + "moskenes.no": 1, + "moss.no": 1, + "mosvik.no": 1, + "motegi.tochigi.jp": 1, + "moto": 1, + "motobu.okinawa.jp": 1, + "motorcycles": 1, + "motosu.gifu.jp": 1, + "motoyama.kochi.jp": 1, + "mov": 1, + "movie": 1, + "movimiento.bo": 1, + "mozilla-iot.org": 1, + "moåreke.no": 1, + "mp": 1, + "mp.br": 1, + "mq": 1, + "mr": 1, + "mr.no": 1, + "mragowo.pl": 1, + "ms": 1, + "ms.gov.br": 1, + "ms.it": 1, + "ms.kr": 1, + "ms.leg.br": 1, + "ms.us": 1, + "msd": 1, + "msk.ru": 1, + "msk.su": 1, + "mt": 1, + "mt.eu.org": 1, + "mt.gov.br": 1, + "mt.it": 1, + "mt.leg.br": 1, + "mt.us": 1, + "mtn": 1, + "mtr": 1, + "mu": 1, + "mugi.tokushima.jp": 1, + "muika.niigata.jp": 1, + "mukawa.hokkaido.jp": 1, + "muko.kyoto.jp": 1, + "munakata.fukuoka.jp": 1, + "muni.il": 1, + "muosat.no": 1, + "muosát.no": 1, + "mup.gov.pl": 1, + "murakami.niigata.jp": 1, + "murata.miyagi.jp": 1, + "murayama.yamagata.jp": 1, + "murmansk.su": 1, + "muroran.hokkaido.jp": 1, + "muroto.kochi.jp": 1, + "mus.br": 1, + "mus.mi.us": 1, + "musashimurayama.tokyo.jp": 1, + "musashino.tokyo.jp": 1, + "museum": 1, + "museum.mv": 1, + "museum.mw": 1, + "museum.no": 1, + "museum.om": 1, + "museum.tt": 1, + "music": 1, + "musica.ar": 1, + "musica.bo": 1, + "musician.io": 1, + "mutsu.aomori.jp": 1, + "mutsuzawa.chiba.jp": 1, + "mutual.ar": 1, + "mv": 1, + "mw": 1, + "mw.gov.pl": 1, + "mx": 1, + "mx.na": 1, + "my": 1, + "my-firewall.org": 1, + "my-gateway.de": 1, + "my-router.de": 1, + "my-vigor.de": 1, + "my-wan.de": 1, + "my.eu.org": 1, + "my.id": 1, + "myactivedirectory.com": 1, + "myamaze.net": 1, + "myasustor.com": 1, + "mycd.eu": 1, + "mycloud.by": 1, + "mydatto.com": 1, + "mydatto.net": 1, + "myddns.rocks": 1, + "mydissent.net": 1, + "mydobiss.com": 1, + "mydrobo.com": 1, + "myds.me": 1, + "myeffect.net": 1, + "myfast.host": 1, + "myfast.space": 1, + "myfirewall.org": 1, + "myforum.community": 1, + "myfritz.net": 1, + "myftp.biz": 1, + "myftp.org": 1, + "myhome-server.de": 1, + "myiphost.com": 1, + "myjino.ru": 1, + "mykolaiv.ua": 1, + "mymailer.com.tw": 1, + "mymediapc.net": 1, + "myoko.niigata.jp": 1, + "mypep.link": 1, + "mypets.ws": 1, + "myphotos.cc": 1, + "mypi.co": 1, + "mypsx.net": 1, + "myqnapcloud.com": 1, + "mysecuritycamera.com": 1, + "mysecuritycamera.net": 1, + "mysecuritycamera.org": 1, + "myshopblocks.com": 1, + "myshopify.com": 1, + "myspreadshop.at": 1, + "myspreadshop.be": 1, + "myspreadshop.ca": 1, + "myspreadshop.ch": 1, + "myspreadshop.co.uk": 1, + "myspreadshop.com": 1, + "myspreadshop.com.au": 1, + "myspreadshop.de": 1, + "myspreadshop.dk": 1, + "myspreadshop.es": 1, + "myspreadshop.fi": 1, + "myspreadshop.fr": 1, + "myspreadshop.ie": 1, + "myspreadshop.it": 1, + "myspreadshop.net": 1, + "myspreadshop.nl": 1, + "myspreadshop.no": 1, + "myspreadshop.pl": 1, + "myspreadshop.se": 1, + "mytabit.co.il": 1, + "mytabit.com": 1, + "mytis.ru": 1, + "mytuleap.com": 1, + "myvnc.com": 1, + "mywire.org": 1, + "mz": 1, + "málatvuopmi.no": 1, + "mátta-várjjat.no": 1, + "målselv.no": 1, + "måsøy.no": 1, + "māori.nz": 1, + "n.bg": 1, + "n.se": 1, + "n4t.co": 1, + "na": 1, + "na.it": 1, + "na4u.ru": 1, + "naamesjevuemie.no": 1, + "nab": 1, + "nabari.mie.jp": 1, + "nachikatsuura.wakayama.jp": 1, + "nagahama.shiga.jp": 1, + "nagai.yamagata.jp": 1, + "nagano.jp": 1, + "nagano.nagano.jp": 1, + "naganohara.gunma.jp": 1, + "nagaoka.niigata.jp": 1, + "nagaokakyo.kyoto.jp": 1, + "nagara.chiba.jp": 1, + "nagareyama.chiba.jp": 1, + "nagasaki.jp": 1, + "nagasaki.nagasaki.jp": 1, + "nagasu.kumamoto.jp": 1, + "nagato.yamaguchi.jp": 1, + "nagatoro.saitama.jp": 1, + "nagawa.nagano.jp": 1, + "nagi.okayama.jp": 1, + "nagiso.nagano.jp": 1, + "nago.okinawa.jp": 1, + "nagoya": 1, + "naha.okinawa.jp": 1, + "nahari.kochi.jp": 1, + "naie.hokkaido.jp": 1, + "naka.hiroshima.jp": 1, + "naka.ibaraki.jp": 1, + "nakadomari.aomori.jp": 1, + "nakagawa.fukuoka.jp": 1, + "nakagawa.hokkaido.jp": 1, + "nakagawa.nagano.jp": 1, + "nakagawa.tokushima.jp": 1, + "nakagusuku.okinawa.jp": 1, + "nakagyo.kyoto.jp": 1, + "nakai.kanagawa.jp": 1, + "nakama.fukuoka.jp": 1, + "nakamichi.yamanashi.jp": 1, + "nakamura.kochi.jp": 1, + "nakaniikawa.toyama.jp": 1, + "nakano.nagano.jp": 1, + "nakano.tokyo.jp": 1, + "nakanojo.gunma.jp": 1, + "nakanoto.ishikawa.jp": 1, + "nakasatsunai.hokkaido.jp": 1, + "nakatane.kagoshima.jp": 1, + "nakatombetsu.hokkaido.jp": 1, + "nakatsugawa.gifu.jp": 1, + "nakayama.yamagata.jp": 1, + "nakijin.okinawa.jp": 1, + "naklo.pl": 1, + "nalchik.ru": 1, + "nalchik.su": 1, + "namaste.jp": 1, + "namdalseid.no": 1, + "namdinh.vn": 1, + "name": 1, + "name.az": 1, + "name.eg": 1, + "name.et": 1, + "name.fj": 1, + "name.hr": 1, + "name.jo": 1, + "name.mk": 1, + "name.mv": 1, + "name.my": 1, + "name.na": 1, + "name.ng": 1, + "name.pm": 1, + "name.pr": 1, + "name.qa": 1, + "name.tj": 1, + "name.tr": 1, + "name.tt": 1, + "name.vn": 1, + "namegata.ibaraki.jp": 1, + "namegawa.saitama.jp": 1, + "namerikawa.toyama.jp": 1, + "namie.fukushima.jp": 1, + "namikata.ehime.jp": 1, + "namsos.no": 1, + "namsskogan.no": 1, + "nanae.hokkaido.jp": 1, + "nanao.ishikawa.jp": 1, + "nanbu.tottori.jp": 1, + "nanbu.yamanashi.jp": 1, + "nango.fukushima.jp": 1, + "nanjo.okinawa.jp": 1, + "nankoku.kochi.jp": 1, + "nanmoku.gunma.jp": 1, + "nannestad.no": 1, + "nanporo.hokkaido.jp": 1, + "nantan.kyoto.jp": 1, + "nanto.toyama.jp": 1, + "nanyo.yamagata.jp": 1, + "naoshima.kagawa.jp": 1, + "naples.it": 1, + "napoli.it": 1, + "nara.jp": 1, + "nara.nara.jp": 1, + "narashino.chiba.jp": 1, + "narita.chiba.jp": 1, + "naroy.no": 1, + "narusawa.yamanashi.jp": 1, + "naruto.tokushima.jp": 1, + "narviika.no": 1, + "narvik.no": 1, + "nasu.tochigi.jp": 1, + "nasushiobara.tochigi.jp": 1, + "nat.tn": 1, + "natal.br": 1, + "natori.miyagi.jp": 1, + "natura": 1, + "natural.bo": 1, + "naturbruksgymn.se": 1, + "naustdal.no": 1, + "navigation.aero": 1, + "navoi.su": 1, + "navuotna.no": 1, + "navy": 1, + "nayoro.hokkaido.jp": 1, + "nb.ca": 1, + "nba": 1, + "nc": 1, + "nc.tr": 1, + "nc.us": 1, + "nd.us": 1, + "ne": 1, + "ne.jp": 1, + "ne.ke": 1, + "ne.kr": 1, + "ne.pw": 1, + "ne.tz": 1, + "ne.ug": 1, + "ne.us": 1, + "neat-url.com": 1, + "nec": 1, + "nedre-eiker.no": 1, + "neko.am": 1, + "nemuro.hokkaido.jp": 1, + "nerdpol.ovh": 1, + "nerima.tokyo.jp": 1, + "nes.akershus.no": 1, + "nes.buskerud.no": 1, + "nesna.no": 1, + "nesodden.no": 1, + "nesoddtangen.no": 1, + "nesseby.no": 1, + "nesset.no": 1, + "net": 1, + "net-freaks.com": 1, + "net.ac": 1, + "net.ae": 1, + "net.af": 1, + "net.ag": 1, + "net.ai": 1, + "net.al": 1, + "net.am": 1, + "net.ar": 1, + "net.au": 1, + "net.az": 1, + "net.ba": 1, + "net.bb": 1, + "net.bh": 1, + "net.bj": 1, + "net.bm": 1, + "net.bn": 1, + "net.bo": 1, + "net.br": 1, + "net.bs": 1, + "net.bt": 1, + "net.bz": 1, + "net.ci": 1, + "net.cm": 1, + "net.cn": 1, + "net.co": 1, + "net.cu": 1, + "net.cw": 1, + "net.cy": 1, + "net.dm": 1, + "net.do": 1, + "net.dz": 1, + "net.ec": 1, + "net.eg": 1, + "net.et": 1, + "net.eu.org": 1, + "net.fj": 1, + "net.fm": 1, + "net.ge": 1, + "net.gg": 1, + "net.gl": 1, + "net.gn": 1, + "net.gp": 1, + "net.gr": 1, + "net.gt": 1, + "net.gu": 1, + "net.gy": 1, + "net.hk": 1, + "net.hn": 1, + "net.ht": 1, + "net.id": 1, + "net.il": 1, + "net.im": 1, + "net.in": 1, + "net.iq": 1, + "net.ir": 1, + "net.is": 1, + "net.je": 1, + "net.jo": 1, + "net.kg": 1, + "net.ki": 1, + "net.kn": 1, + "net.kw": 1, + "net.ky": 1, + "net.kz": 1, + "net.la": 1, + "net.lb": 1, + "net.lc": 1, + "net.lk": 1, + "net.lr": 1, + "net.ls": 1, + "net.lv": 1, + "net.ly": 1, + "net.ma": 1, + "net.me": 1, + "net.mk": 1, + "net.ml": 1, + "net.mo": 1, + "net.ms": 1, + "net.mt": 1, + "net.mu": 1, + "net.mv": 1, + "net.mw": 1, + "net.mx": 1, + "net.my": 1, + "net.mz": 1, + "net.nf": 1, + "net.ng": 1, + "net.ni": 1, + "net.nr": 1, + "net.nz": 1, + "net.om": 1, + "net.pa": 1, + "net.pe": 1, + "net.ph": 1, + "net.pk": 1, + "net.pl": 1, + "net.pn": 1, + "net.pr": 1, + "net.ps": 1, + "net.pt": 1, + "net.py": 1, + "net.qa": 1, + "net.ru": 1, + "net.rw": 1, + "net.sa": 1, + "net.sb": 1, + "net.sc": 1, + "net.sd": 1, + "net.sg": 1, + "net.sh": 1, + "net.sl": 1, + "net.so": 1, + "net.ss": 1, + "net.st": 1, + "net.sy": 1, + "net.th": 1, + "net.tj": 1, + "net.tm": 1, + "net.tn": 1, + "net.to": 1, + "net.tr": 1, + "net.tt": 1, + "net.tw": 1, + "net.ua": 1, + "net.uk": 1, + "net.uy": 1, + "net.uz": 1, + "net.vc": 1, + "net.ve": 1, + "net.vi": 1, + "net.vn": 1, + "net.vu": 1, + "net.ws": 1, + "net.ye": 1, + "net.za": 1, + "net.zm": 1, + "netbank": 1, + "netflix": 1, + "netgamers.jp": 1, + "netlify.app": 1, + "network": 1, + "neustar": 1, + "new": 1, + "news": 1, + "news.hu": 1, + "next": 1, + "nextdirect": 1, + "nexus": 1, + "neyagawa.osaka.jp": 1, + "nf": 1, + "nf.ca": 1, + "nfl": 1, + "nflfan.org": 1, + "nfshost.com": 1, + "ng": 1, + "ng.eu.org": 1, + "nghean.vn": 1, + "ngo": 1, + "ngo.lk": 1, + "ngo.ng": 1, + "ngo.ph": 1, + "ngo.za": 1, + "ngrok-free.app": 1, + "ngrok-free.dev": 1, + "ngrok.app": 1, + "ngrok.dev": 1, + "ngrok.io": 1, + "ngrok.pizza": 1, + "nh-serv.co.uk": 1, + "nh.us": 1, + "nhk": 1, + "nhlfan.net": 1, + "nhs.uk": 1, + "ni": 1, + "nic.in": 1, + "nic.tj": 1, + "nic.za": 1, + "nichinan.miyazaki.jp": 1, + "nichinan.tottori.jp": 1, + "nico": 1, + "nid.io": 1, + "nieruchomosci.pl": 1, + "niigata.jp": 1, + "niigata.niigata.jp": 1, + "niihama.ehime.jp": 1, + "niikappu.hokkaido.jp": 1, + "niimi.okayama.jp": 1, + "niiza.saitama.jp": 1, + "nikaho.akita.jp": 1, + "nike": 1, + "niki.hokkaido.jp": 1, + "nikita.jp": 1, + "nikko.tochigi.jp": 1, + "nikolaev.ua": 1, + "nikon": 1, + "ninhbinh.vn": 1, + "ninhthuan.vn": 1, + "ninja": 1, + "ninohe.iwate.jp": 1, + "ninomiya.kanagawa.jp": 1, + "nirasaki.yamanashi.jp": 1, + "nis.za": 1, + "nishi.fukuoka.jp": 1, + "nishi.osaka.jp": 1, + "nishiaizu.fukushima.jp": 1, + "nishiarita.saga.jp": 1, + "nishiawakura.okayama.jp": 1, + "nishiazai.shiga.jp": 1, + "nishigo.fukushima.jp": 1, + "nishihara.kumamoto.jp": 1, + "nishihara.okinawa.jp": 1, + "nishiizu.shizuoka.jp": 1, + "nishikata.tochigi.jp": 1, + "nishikatsura.yamanashi.jp": 1, + "nishikawa.yamagata.jp": 1, + "nishimera.miyazaki.jp": 1, + "nishinomiya.hyogo.jp": 1, + "nishinoomote.kagoshima.jp": 1, + "nishinoshima.shimane.jp": 1, + "nishio.aichi.jp": 1, + "nishiokoppe.hokkaido.jp": 1, + "nishitosa.kochi.jp": 1, + "nishiwaki.hyogo.jp": 1, + "nissan": 1, + "nissay": 1, + "nissedal.no": 1, + "nisshin.aichi.jp": 1, + "niteroi.br": 1, + "nittedal.no": 1, + "niyodogawa.kochi.jp": 1, + "nj.us": 1, + "njs.jelastic.vps-host.net": 1, + "nl": 1, + "nl-ams-1.baremetal.scw.cloud": 1, + "nl.ca": 1, + "nl.ci": 1, + "nl.eu.org": 1, + "nl.no": 1, + "nm.cn": 1, + "nm.us": 1, + "no": 1, + "no-ip.biz": 1, + "no-ip.ca": 1, + "no-ip.co.uk": 1, + "no-ip.info": 1, + "no-ip.net": 1, + "no-ip.org": 1, + "no.com": 1, + "no.eu.org": 1, + "no.it": 1, + "nobeoka.miyazaki.jp": 1, + "noboribetsu.hokkaido.jp": 1, + "nobushi.jp": 1, + "noda.chiba.jp": 1, + "noda.iwate.jp": 1, + "nodes.k8s.fr-par.scw.cloud": 1, + "nodes.k8s.nl-ams.scw.cloud": 1, + "nodes.k8s.pl-waw.scw.cloud": 1, + "nog.community": 1, + "nogata.fukuoka.jp": 1, + "nogi.tochigi.jp": 1, + "noheji.aomori.jp": 1, + "noho.st": 1, + "nohost.me": 1, + "noip.me": 1, + "noip.us": 1, + "nokia": 1, + "nom.ad": 1, + "nom.ag": 1, + "nom.co": 1, + "nom.es": 1, + "nom.fr": 1, + "nom.km": 1, + "nom.mg": 1, + "nom.nc": 1, + "nom.ni": 1, + "nom.pa": 1, + "nom.pe": 1, + "nom.pl": 1, + "nom.re": 1, + "nom.ro": 1, + "nom.tm": 1, + "nom.ve": 1, + "nom.za": 1, + "nombre.bo": 1, + "nome.cv": 1, + "nome.pt": 1, + "nomi.ishikawa.jp": 1, + "nonoichi.ishikawa.jp": 1, + "noop.app": 1, + "noor.jp": 1, + "nord-aurdal.no": 1, + "nord-fron.no": 1, + "nord-odal.no": 1, + "norddal.no": 1, + "nordeste-idc.saveincloud.net": 1, + "nordkapp.no": 1, + "nordre-land.no": 1, + "nordreisa.no": 1, + "nore-og-uvdal.no": 1, + "north-kazakhstan.su": 1, + "norton": 1, + "nose.osaka.jp": 1, + "nosegawa.nara.jp": 1, + "noshiro.akita.jp": 1, + "not.br": 1, + "notaires.fr": 1, + "notaires.km": 1, + "noticeable.news": 1, + "noticias.bo": 1, + "noto.ishikawa.jp": 1, + "notodden.no": 1, + "notogawa.shiga.jp": 1, + "notteroy.no": 1, + "nov.ru": 1, + "nov.su": 1, + "novara.it": 1, + "novecore.site": 1, + "now": 1, + "now-dns.net": 1, + "now-dns.org": 1, + "now-dns.top": 1, + "now.sh": 1, + "nowaruda.pl": 1, + "nowruz": 1, + "nowtv": 1, + "nozawaonsen.nagano.jp": 1, + "nr": 1, + "nra": 1, + "nrw": 1, + "ns.ca": 1, + "nsn.us": 1, + "nsupdate.info": 1, + "nsw.au": 1, + "nsw.edu.au": 1, + "nt.au": 1, + "nt.ca": 1, + "nt.edu.au": 1, + "nt.no": 1, + "nt.ro": 1, + "ntdll.top": 1, + "ntr.br": 1, + "ntt": 1, + "nu": 1, + "nu.ca": 1, + "nu.it": 1, + "numata.gunma.jp": 1, + "numata.hokkaido.jp": 1, + "numazu.shizuoka.jp": 1, + "nuoro.it": 1, + "nv.us": 1, + "nx.cn": 1, + "ny-1.paas.massivegrid.net": 1, + "ny-2.paas.massivegrid.net": 1, + "ny.us": 1, + "nyaa.am": 1, + "nyan.to": 1, + "nyanta.jp": 1, + "nyc": 1, + "nyc.mn": 1, + "nysa.pl": 1, + "nyuzen.toyama.jp": 1, + "nz": 1, + "nz.basketball": 1, + "nz.eu.org": 1, + "návuotna.no": 1, + "nååmesjevuemie.no": 1, + "nærøy.no": 1, + "nøtterøy.no": 1, + "o.bg": 1, + "o.se": 1, + "o0o0.jp": 1, + "oamishirasato.chiba.jp": 1, + "oarai.ibaraki.jp": 1, + "obama.fukui.jp": 1, + "obama.nagasaki.jp": 1, + "obanazawa.yamagata.jp": 1, + "obi": 1, + "obihiro.hokkaido.jp": 1, + "obira.hokkaido.jp": 1, + "obninsk.su": 1, + "observer": 1, + "obu.aichi.jp": 1, + "obuse.nagano.jp": 1, + "ocelot.mythic-beasts.com": 1, + "ochi.kochi.jp": 1, + "od.ua": 1, + "odate.akita.jp": 1, + "odawara.kanagawa.jp": 1, + "odda.no": 1, + "odesa.ua": 1, + "odessa.ua": 1, + "odo.br": 1, + "oe.yamagata.jp": 1, + "of.by": 1, + "of.je": 1, + "of.no": 1, + "off.ai": 1, + "office": 1, + "office-on-the.net": 1, + "official.academy": 1, + "official.ec": 1, + "ofunato.iwate.jp": 1, + "og.ao": 1, + "og.it": 1, + "oga.akita.jp": 1, + "ogaki.gifu.jp": 1, + "ogano.saitama.jp": 1, + "ogasawara.tokyo.jp": 1, + "ogata.akita.jp": 1, + "ogawa.ibaraki.jp": 1, + "ogawa.nagano.jp": 1, + "ogawa.saitama.jp": 1, + "ogawara.miyagi.jp": 1, + "ogi.saga.jp": 1, + "ogimi.okinawa.jp": 1, + "ogliastra.it": 1, + "ogori.fukuoka.jp": 1, + "ogose.saitama.jp": 1, + "oguchi.aichi.jp": 1, + "oguni.kumamoto.jp": 1, + "oguni.yamagata.jp": 1, + "oh.us": 1, + "oharu.aichi.jp": 1, + "ohda.shimane.jp": 1, + "ohi.fukui.jp": 1, + "ohira.miyagi.jp": 1, + "ohira.tochigi.jp": 1, + "ohkura.yamagata.jp": 1, + "ohtawara.tochigi.jp": 1, + "oi.kanagawa.jp": 1, + "oia.gov.pl": 1, + "oirase.aomori.jp": 1, + "oirm.gov.pl": 1, + "oishida.yamagata.jp": 1, + "oiso.kanagawa.jp": 1, + "oita.jp": 1, + "oita.oita.jp": 1, + "oizumi.gunma.jp": 1, + "oji.nara.jp": 1, + "ojiya.niigata.jp": 1, + "ok.us": 1, + "okagaki.fukuoka.jp": 1, + "okawa.fukuoka.jp": 1, + "okawa.kochi.jp": 1, + "okaya.nagano.jp": 1, + "okayama.jp": 1, + "okayama.okayama.jp": 1, + "okazaki.aichi.jp": 1, + "oke.gov.pl": 1, + "okegawa.saitama.jp": 1, + "oketo.hokkaido.jp": 1, + "oki.fukuoka.jp": 1, + "okinawa": 1, + "okinawa.jp": 1, + "okinawa.okinawa.jp": 1, + "okinoshima.shimane.jp": 1, + "okoppe.hokkaido.jp": 1, + "oksnes.no": 1, + "okuizumo.shimane.jp": 1, + "okuma.fukushima.jp": 1, + "okutama.tokyo.jp": 1, + "ol.no": 1, + "olawa.pl": 1, + "olayan": 1, + "olayangroup": 1, + "olbia-tempio.it": 1, + "olbiatempio.it": 1, + "oldnavy": 1, + "olecko.pl": 1, + "olkusz.pl": 1, + "ollo": 1, + "olsztyn.pl": 1, + "om": 1, + "omachi.nagano.jp": 1, + "omachi.saga.jp": 1, + "omaezaki.shizuoka.jp": 1, + "omasvuotna.no": 1, + "ome.tokyo.jp": 1, + "omega": 1, + "omg.lol": 1, + "omi.nagano.jp": 1, + "omi.niigata.jp": 1, + "omigawa.chiba.jp": 1, + "omihachiman.shiga.jp": 1, + "omitama.ibaraki.jp": 1, + "omiya.saitama.jp": 1, + "omniwe.site": 1, + "omotego.fukushima.jp": 1, + "omura.nagasaki.jp": 1, + "omuta.fukuoka.jp": 1, + "on-aptible.com": 1, + "on-the-web.tv": 1, + "on-web.fr": 1, + "on.ca": 1, + "onagawa.miyagi.jp": 1, + "onavstack.net": 1, + "oncilla.mythic-beasts.com": 1, + "ondigitalocean.app": 1, + "one": 1, + "onfabrica.com": 1, + "onflashdrive.app": 1, + "ong": 1, + "ong.br": 1, + "onga.fukuoka.jp": 1, + "onion": 1, + "onjuku.chiba.jp": 1, + "onl": 1, + "online": 1, + "online.th": 1, + "onna.okinawa.jp": 1, + "ono.fukui.jp": 1, + "ono.fukushima.jp": 1, + "ono.hyogo.jp": 1, + "onojo.fukuoka.jp": 1, + "onomichi.hiroshima.jp": 1, + "onporter.run": 1, + "onred.one": 1, + "onrender.com": 1, + "onthewifi.com": 1, + "onza.mythic-beasts.com": 1, + "ooguy.com": 1, + "ookuwa.nagano.jp": 1, + "ooo": 1, + "oops.jp": 1, + "ooshika.nagano.jp": 1, + "oow.gov.pl": 1, + "opal.ne.jp": 1, + "open": 1, + "opencraft.hosting": 1, + "opensocial.site": 1, + "operaunite.com": 1, + "opoczno.pl": 1, + "opole.pl": 1, + "oppdal.no": 1, + "oppegard.no": 1, + "oppegård.no": 1, + "or.at": 1, + "or.bi": 1, + "or.ci": 1, + "or.cr": 1, + "or.id": 1, + "or.it": 1, + "or.jp": 1, + "or.ke": 1, + "or.kr": 1, + "or.mu": 1, + "or.na": 1, + "or.pw": 1, + "or.th": 1, + "or.tz": 1, + "or.ug": 1, + "or.us": 1, + "ora.gunma.jp": 1, + "oracle": 1, + "orange": 1, + "orangecloud.tn": 1, + "org": 1, + "org.ac": 1, + "org.ae": 1, + "org.af": 1, + "org.ag": 1, + "org.ai": 1, + "org.al": 1, + "org.am": 1, + "org.ar": 1, + "org.au": 1, + "org.az": 1, + "org.ba": 1, + "org.bb": 1, + "org.bh": 1, + "org.bi": 1, + "org.bj": 1, + "org.bm": 1, + "org.bn": 1, + "org.bo": 1, + "org.br": 1, + "org.bs": 1, + "org.bt": 1, + "org.bw": 1, + "org.bz": 1, + "org.ci": 1, + "org.cn": 1, + "org.co": 1, + "org.cu": 1, + "org.cv": 1, + "org.cw": 1, + "org.cy": 1, + "org.dm": 1, + "org.do": 1, + "org.dz": 1, + "org.ec": 1, + "org.ee": 1, + "org.eg": 1, + "org.es": 1, + "org.et": 1, + "org.fj": 1, + "org.fm": 1, + "org.ge": 1, + "org.gg": 1, + "org.gh": 1, + "org.gi": 1, + "org.gl": 1, + "org.gn": 1, + "org.gp": 1, + "org.gr": 1, + "org.gt": 1, + "org.gu": 1, + "org.gy": 1, + "org.hk": 1, + "org.hn": 1, + "org.ht": 1, + "org.hu": 1, + "org.il": 1, + "org.im": 1, + "org.in": 1, + "org.iq": 1, + "org.ir": 1, + "org.is": 1, + "org.je": 1, + "org.jo": 1, + "org.kg": 1, + "org.ki": 1, + "org.km": 1, + "org.kn": 1, + "org.kp": 1, + "org.kw": 1, + "org.ky": 1, + "org.kz": 1, + "org.la": 1, + "org.lb": 1, + "org.lc": 1, + "org.lk": 1, + "org.lr": 1, + "org.ls": 1, + "org.lv": 1, + "org.ly": 1, + "org.ma": 1, + "org.me": 1, + "org.mg": 1, + "org.mk": 1, + "org.ml": 1, + "org.mn": 1, + "org.mo": 1, + "org.ms": 1, + "org.mt": 1, + "org.mu": 1, + "org.mv": 1, + "org.mw": 1, + "org.mx": 1, + "org.my": 1, + "org.mz": 1, + "org.na": 1, + "org.ng": 1, + "org.ni": 1, + "org.nr": 1, + "org.nz": 1, + "org.om": 1, + "org.pa": 1, + "org.pe": 1, + "org.pf": 1, + "org.ph": 1, + "org.pk": 1, + "org.pl": 1, + "org.pn": 1, + "org.pr": 1, + "org.ps": 1, + "org.pt": 1, + "org.py": 1, + "org.qa": 1, + "org.ro": 1, + "org.rs": 1, + "org.ru": 1, + "org.rw": 1, + "org.sa": 1, + "org.sb": 1, + "org.sc": 1, + "org.sd": 1, + "org.se": 1, + "org.sg": 1, + "org.sh": 1, + "org.sl": 1, + "org.sn": 1, + "org.so": 1, + "org.ss": 1, + "org.st": 1, + "org.sv": 1, + "org.sy": 1, + "org.sz": 1, + "org.tj": 1, + "org.tm": 1, + "org.tn": 1, + "org.to": 1, + "org.tr": 1, + "org.tt": 1, + "org.tw": 1, + "org.ua": 1, + "org.ug": 1, + "org.uk": 1, + "org.uy": 1, + "org.uz": 1, + "org.vc": 1, + "org.ve": 1, + "org.vi": 1, + "org.vn": 1, + "org.vu": 1, + "org.ws": 1, + "org.ye": 1, + "org.yt": 1, + "org.za": 1, + "org.zm": 1, + "org.zw": 1, + "organic": 1, + "origins": 1, + "oristano.it": 1, + "orkanger.no": 1, + "orkdal.no": 1, + "orland.no": 1, + "orsites.com": 1, + "orskog.no": 1, + "orsta.no": 1, + "orx.biz": 1, + "os.hedmark.no": 1, + "os.hordaland.no": 1, + "osaka": 1, + "osaka.jp": 1, + "osakasayama.osaka.jp": 1, + "osaki.miyagi.jp": 1, + "osakikamijima.hiroshima.jp": 1, + "osasco.br": 1, + "oschr.gov.pl": 1, + "osen.no": 1, + "oseto.nagasaki.jp": 1, + "oshima.tokyo.jp": 1, + "oshima.yamaguchi.jp": 1, + "oshino.yamanashi.jp": 1, + "oshu.iwate.jp": 1, + "oslo.no": 1, + "osoyro.no": 1, + "osteroy.no": 1, + "osterøy.no": 1, + "ostre-toten.no": 1, + "ostroda.pl": 1, + "ostroleka.pl": 1, + "ostrowiec.pl": 1, + "ostrowwlkp.pl": 1, + "osøyro.no": 1, + "ot.it": 1, + "ota.gunma.jp": 1, + "ota.tokyo.jp": 1, + "otake.hiroshima.jp": 1, + "otaki.chiba.jp": 1, + "otaki.nagano.jp": 1, + "otaki.saitama.jp": 1, + "otama.fukushima.jp": 1, + "otari.nagano.jp": 1, + "otaru.hokkaido.jp": 1, + "ote.bj": 1, + "other.nf": 1, + "oto.fukuoka.jp": 1, + "otobe.hokkaido.jp": 1, + "otofuke.hokkaido.jp": 1, + "otoineppu.hokkaido.jp": 1, + "otoyo.kochi.jp": 1, + "otsu.shiga.jp": 1, + "otsuchi.iwate.jp": 1, + "otsuka": 1, + "otsuki.kochi.jp": 1, + "otsuki.yamanashi.jp": 1, + "ott": 1, + "ouchi.saga.jp": 1, + "ouda.nara.jp": 1, + "oum.gov.pl": 1, + "oumu.hokkaido.jp": 1, + "outsystemscloud.com": 1, + "overhalla.no": 1, + "ovh": 1, + "ovre-eiker.no": 1, + "owani.aomori.jp": 1, + "owariasahi.aichi.jp": 1, + "own.pm": 1, + "ownip.net": 1, + "ownprovider.com": 1, + "ox.rs": 1, + "oxa.cloud": 1, + "oy.lc": 1, + "oya.to": 1, + "oyabe.toyama.jp": 1, + "oyama.tochigi.jp": 1, + "oyamazaki.kyoto.jp": 1, + "oyer.no": 1, + "oygarden.no": 1, + "oyodo.nara.jp": 1, + "oystre-slidre.no": 1, + "oz.au": 1, + "ozora.hokkaido.jp": 1, + "ozu.ehime.jp": 1, + "ozu.kumamoto.jp": 1, + "p.bg": 1, + "p.se": 1, + "pa": 1, + "pa.gov.br": 1, + "pa.gov.pl": 1, + "pa.it": 1, + "pa.leg.br": 1, + "pa.us": 1, + "paas.beebyte.io": 1, + "paas.datacenter.fi": 1, + "paas.hosted-by-previder.com": 1, + "paas.massivegrid.com": 1, + "padova.it": 1, + "padua.it": 1, + "page": 1, + "pagefrontapp.com": 1, + "pages.dev": 1, + "pages.it.hs-heilbronn.de": 1, + "pages.torproject.net": 1, + "pages.wiardweb.com": 1, + "pagespeedmobilizer.com": 1, + "pagexl.com": 1, + "palermo.it": 1, + "palmas.br": 1, + "panasonic": 1, + "panel.gg": 1, + "pantheonsite.io": 1, + "parachuting.aero": 1, + "paragliding.aero": 1, + "parallel.jp": 1, + "parasite.jp": 1, + "paris": 1, + "paris.eu.org": 1, + "parliament.nz": 1, + "parma.it": 1, + "paroch.k12.ma.us": 1, + "pars": 1, + "parti.se": 1, + "partners": 1, + "parts": 1, + "party": 1, + "passenger-association.aero": 1, + "patria.bo": 1, + "pavia.it": 1, + "pay": 1, + "pb.ao": 1, + "pb.gov.br": 1, + "pb.leg.br": 1, + "pc.it": 1, + "pc.pl": 1, + "pccw": 1, + "pcloud.host": 1, + "pd.it": 1, + "pdns.page": 1, + "pe": 1, + "pe.ca": 1, + "pe.gov.br": 1, + "pe.it": 1, + "pe.kr": 1, + "pe.leg.br": 1, + "pecori.jp": 1, + "peewee.jp": 1, + "penne.jp": 1, + "penza.su": 1, + "pepper.jp": 1, + "per.la": 1, + "per.nf": 1, + "per.sg": 1, + "perma.jp": 1, + "perso.ht": 1, + "perso.sn": 1, + "perso.tn": 1, + "perspecta.cloud": 1, + "perugia.it": 1, + "pesaro-urbino.it": 1, + "pesarourbino.it": 1, + "pescara.it": 1, + "pet": 1, + "pf": 1, + "pfizer": 1, + "pg.in": 1, + "pg.it": 1, + "pgafan.net": 1, + "pgfog.com": 1, + "ph": 1, + "pharmacien.fr": 1, + "pharmaciens.km": 1, + "pharmacy": 1, + "phd": 1, + "philips": 1, + "phone": 1, + "photo": 1, + "photography": 1, + "photos": 1, + "phutho.vn": 1, + "phuyen.vn": 1, + "phx.enscaled.us": 1, + "physio": 1, + "pi.gov.br": 1, + "pi.it": 1, + "pi.leg.br": 1, + "piacenza.it": 1, + "pics": 1, + "pictet": 1, + "pictures": 1, + "pid": 1, + "piedmont.it": 1, + "piemonte.it": 1, + "pigboat.jp": 1, + "pila.pl": 1, + "pilot.aero": 1, + "pimienta.org": 1, + "pin": 1, + "pinb.gov.pl": 1, + "ping": 1, + "pink": 1, + "pinoko.jp": 1, + "pioneer": 1, + "pippu.hokkaido.jp": 1, + "pisa.it": 1, + "pistoia.it": 1, + "pisz.pl": 1, + "piw.gov.pl": 1, + "pixolino.com": 1, + "pizza": 1, + "pk": 1, + "pl": 1, + "pl.eu.org": 1, + "pl.ua": 1, + "place": 1, + "platform0.app": 1, + "platter-app.com": 1, + "platter-app.dev": 1, + "platterp.us": 1, + "play": 1, + "playstation": 1, + "playstation-cloud.com": 1, + "plc.co.im": 1, + "plc.ly": 1, + "plc.uk": 1, + "plesk.page": 1, + "pleskns.com": 1, + "plo.ps": 1, + "plumbing": 1, + "plurinacional.bo": 1, + "plus": 1, + "pm": 1, + "pmn.it": 1, + "pn": 1, + "pn.it": 1, + "pnc": 1, + "po.gov.pl": 1, + "po.it": 1, + "poa.br": 1, + "podhale.pl": 1, + "podlasie.pl": 1, + "podzone.net": 1, + "podzone.org": 1, + "pohl": 1, + "point2this.com": 1, + "pointto.us": 1, + "poivron.org": 1, + "poker": 1, + "pokrovsk.su": 1, + "pol.dz": 1, + "pol.ht": 1, + "pol.tr": 1, + "police.uk": 1, + "politica.bo": 1, + "politie": 1, + "polkowice.pl": 1, + "poltava.ua": 1, + "pomorskie.pl": 1, + "pomorze.pl": 1, + "poniatowa.pl": 1, + "ponpes.id": 1, + "pordenone.it": 1, + "porn": 1, + "porsanger.no": 1, + "porsangu.no": 1, + "porsgrunn.no": 1, + "porsáŋgu.no": 1, + "port.fr": 1, + "post": 1, + "post.in": 1, + "postman-echo.com": 1, + "potager.org": 1, + "potenza.it": 1, + "powiat.pl": 1, + "poznan.pl": 1, + "pp.az": 1, + "pp.ru": 1, + "pp.se": 1, + "pp.ua": 1, + "ppg.br": 1, + "pr": 1, + "pr.gov.br": 1, + "pr.gov.pl": 1, + "pr.it": 1, + "pr.leg.br": 1, + "pr.us": 1, + "pramerica": 1, + "prato.it": 1, + "praxi": 1, + "prd.fr": 1, + "prd.km": 1, + "prd.mg": 1, + "prequalifyme.today": 1, + "press": 1, + "press.aero": 1, + "press.cy": 1, + "press.ma": 1, + "press.se": 1, + "presse.ci": 1, + "presse.km": 1, + "presse.ml": 1, + "pri.ee": 1, + "prime": 1, + "primetel.cloud": 1, + "principe.st": 1, + "priv.at": 1, + "priv.hu": 1, + "priv.instances.scw.cloud": 1, + "priv.me": 1, + "priv.no": 1, + "priv.pl": 1, + "privatelink.snowflake.app": 1, + "privatizehealthinsurance.net": 1, + "pro": 1, + "pro.az": 1, + "pro.br": 1, + "pro.cy": 1, + "pro.ec": 1, + "pro.fj": 1, + "pro.ht": 1, + "pro.in": 1, + "pro.mv": 1, + "pro.na": 1, + "pro.om": 1, + "pro.pr": 1, + "pro.tt": 1, + "pro.typeform.com": 1, + "pro.vn": 1, + "prochowice.pl": 1, + "prod": 1, + "production.aero": 1, + "productions": 1, + "prof": 1, + "prof.pr": 1, + "profesional.bo": 1, + "progressive": 1, + "promo": 1, + "properties": 1, + "property": 1, + "protection": 1, + "protonet.io": 1, + "pru": 1, + "prudential": 1, + "pruszkow.pl": 1, + "prvcy.page": 1, + "przeworsk.pl": 1, + "ps": 1, + "psc.br": 1, + "psi.br": 1, + "psp.gov.pl": 1, + "psse.gov.pl": 1, + "pstmn.io": 1, + "pt": 1, + "pt.eu.org": 1, + "pt.it": 1, + "pu.it": 1, + "pub": 1, + "pub.instances.scw.cloud": 1, + "pub.sa": 1, + "publ.pt": 1, + "public-inquiry.uk": 1, + "publishproxy.com": 1, + "pubtls.org": 1, + "pueblo.bo": 1, + "pug.it": 1, + "puglia.it": 1, + "pulawy.pl": 1, + "punyu.jp": 1, + "pup.gov.pl": 1, + "pupu.jp": 1, + "pussycat.jp": 1, + "pv.it": 1, + "pvh.br": 1, + "pvt.ge": 1, + "pvt.k12.ma.us": 1, + "pw": 1, + "pwc": 1, + "py": 1, + "pya.jp": 1, + "pyatigorsk.ru": 1, + "pymnt.uk": 1, + "pythonanywhere.com": 1, + "pz.it": 1, + "q-a.eu.org": 1, + "q.bg": 1, + "qa": 1, + "qa2.com": 1, + "qbuser.com": 1, + "qc.ca": 1, + "qc.com": 1, + "qcx.io": 1, + "qh.cn": 1, + "qld.au": 1, + "qld.edu.au": 1, + "qld.gov.au": 1, + "qoto.io": 1, + "qpon": 1, + "qsl.br": 1, + "qualifioapp.com": 1, + "quangbinh.vn": 1, + "quangnam.vn": 1, + "quangngai.vn": 1, + "quangninh.vn": 1, + "quangtri.vn": 1, + "quebec": 1, + "quest": 1, + "quicksytes.com": 1, + "r.bg": 1, + "r.cdn77.net": 1, + "r.se": 1, + "r2.dev": 1, + "ra.it": 1, + "racing": 1, + "rackmaze.com": 1, + "rackmaze.net": 1, + "rade.no": 1, + "radio": 1, + "radio.am": 1, + "radio.br": 1, + "radio.fm": 1, + "radom.pl": 1, + "radoy.no": 1, + "radøy.no": 1, + "raffleentry.org.uk": 1, + "rag-cloud-ch.hosteur.com": 1, + "rag-cloud.hosteur.com": 1, + "ragusa.it": 1, + "rahkkeravju.no": 1, + "raholt.no": 1, + "raindrop.jp": 1, + "raisa.no": 1, + "rakkestad.no": 1, + "ralingen.no": 1, + "rana.no": 1, + "randaberg.no": 1, + "rankoshi.hokkaido.jp": 1, + "ranzan.saitama.jp": 1, + "rar.ve": 1, + "ras.ru": 1, + "rauma.no": 1, + "ravendb.cloud": 1, + "ravendb.community": 1, + "ravendb.me": 1, + "ravendb.run": 1, + "ravenna.it": 1, + "ravpage.co.il": 1, + "rawa-maz.pl": 1, + "rc.it": 1, + "rdv.to": 1, + "rdy.jp": 1, + "re": 1, + "re.it": 1, + "re.kr": 1, + "read": 1, + "read-books.org": 1, + "readmyblog.org": 1, + "readthedocs.io": 1, + "readymade.jp": 1, + "realestate": 1, + "realestate.pl": 1, + "realm.cz": 1, + "realtor": 1, + "realty": 1, + "rebun.hokkaido.jp": 1, + "rec.br": 1, + "rec.co": 1, + "rec.nf": 1, + "rec.ro": 1, + "rec.ve": 1, + "recht.pro": 1, + "recife.br": 1, + "recipes": 1, + "recreation.aero": 1, + "red": 1, + "red.sv": 1, + "redirectme.net": 1, + "redstone": 1, + "redumbrella": 1, + "reg.dk": 1, + "reggio-calabria.it": 1, + "reggio-emilia.it": 1, + "reggiocalabria.it": 1, + "reggioemilia.it": 1, + "rehab": 1, + "reise": 1, + "reisen": 1, + "reit": 1, + "reklam.hu": 1, + "rel.ht": 1, + "rel.pl": 1, + "reliance": 1, + "remotewd.com": 1, + "ren": 1, + "rendalen.no": 1, + "rennebu.no": 1, + "rennesoy.no": 1, + "rennesøy.no": 1, + "rent": 1, + "rentals": 1, + "rep.br": 1, + "rep.kp": 1, + "repair": 1, + "repbody.aero": 1, + "repl.co": 1, + "repl.run": 1, + "report": 1, + "republican": 1, + "res.aero": 1, + "res.in": 1, + "research.aero": 1, + "reservd.com": 1, + "reservd.dev.thingdust.io": 1, + "reservd.disrec.thingdust.io": 1, + "reservd.testing.thingdust.io": 1, + "reserve-online.com": 1, + "reserve-online.net": 1, + "resindevice.io": 1, + "rest": 1, + "restaurant": 1, + "restaurant.bj": 1, + "resto.bj": 1, + "review": 1, + "reviews": 1, + "revista.bo": 1, + "rexroth": 1, + "rg.it": 1, + "rgr.jp": 1, + "rhcloud.com": 1, + "ri.it": 1, + "ri.us": 1, + "ribeirao.br": 1, + "ric.jelastic.vps-host.net": 1, + "rich": 1, + "richardli": 1, + "ricoh": 1, + "rieti.it": 1, + "rifu.miyagi.jp": 1, + "riik.ee": 1, + "rikubetsu.hokkaido.jp": 1, + "rikuzentakata.iwate.jp": 1, + "ril": 1, + "rimini.it": 1, + "rindal.no": 1, + "ringebu.no": 1, + "ringerike.no": 1, + "ringsaker.no": 1, + "rio": 1, + "rio.br": 1, + "riobranco.br": 1, + "riopreto.br": 1, + "rip": 1, + "rishiri.hokkaido.jp": 1, + "rishirifuji.hokkaido.jp": 1, + "risor.no": 1, + "rissa.no": 1, + "risør.no": 1, + "ritto.shiga.jp": 1, + "rivne.ua": 1, + "rj.gov.br": 1, + "rj.leg.br": 1, + "rl.no": 1, + "rm.it": 1, + "rn.gov.br": 1, + "rn.it": 1, + "rn.leg.br": 1, + "ro": 1, + "ro.eu.org": 1, + "ro.gov.br": 1, + "ro.im": 1, + "ro.it": 1, + "ro.leg.br": 1, + "roan.no": 1, + "rocher": 1, + "rocks": 1, + "rocky.page": 1, + "rodeo": 1, + "rodoy.no": 1, + "rogers": 1, + "rokunohe.aomori.jp": 1, + "rollag.no": 1, + "roma.it": 1, + "rome.it": 1, + "romsa.no": 1, + "romskog.no": 1, + "room": 1, + "roros.no": 1, + "rost.no": 1, + "rotorcraft.aero": 1, + "router.management": 1, + "rovigo.it": 1, + "rovno.ua": 1, + "royal-commission.uk": 1, + "royken.no": 1, + "royrvik.no": 1, + "rr.gov.br": 1, + "rr.leg.br": 1, + "rs": 1, + "rs.ba": 1, + "rs.gov.br": 1, + "rs.leg.br": 1, + "rs.webaccel.jp": 1, + "rsc.cdn77.org": 1, + "rsvp": 1, + "ru": 1, + "ru.com": 1, + "ru.eu.org": 1, + "ru.net": 1, + "rugby": 1, + "ruhr": 1, + "rulez.jp": 1, + "run": 1, + "run.app": 1, + "ruovat.no": 1, + "rv.ua": 1, + "rw": 1, + "rwe": 1, + "rybnik.pl": 1, + "ryd.wafaicloud.com": 1, + "rygge.no": 1, + "ryokami.saitama.jp": 1, + "ryugasaki.ibaraki.jp": 1, + "ryukyu": 1, + "ryuoh.shiga.jp": 1, + "rzeszow.pl": 1, + "rzgw.gov.pl": 1, + "ráhkkerávju.no": 1, + "ráisa.no": 1, + "råde.no": 1, + "råholt.no": 1, + "rælingen.no": 1, + "rødøy.no": 1, + "rømskog.no": 1, + "røros.no": 1, + "røst.no": 1, + "røyken.no": 1, + "røyrvik.no": 1, + "s.bg": 1, + "s.se": 1, + "s3-ap-northeast-1.amazonaws.com": 1, + "s3-ap-northeast-2.amazonaws.com": 1, + "s3-ap-south-1.amazonaws.com": 1, + "s3-ap-southeast-1.amazonaws.com": 1, + "s3-ap-southeast-2.amazonaws.com": 1, + "s3-ca-central-1.amazonaws.com": 1, + "s3-eu-central-1.amazonaws.com": 1, + "s3-eu-west-1.amazonaws.com": 1, + "s3-eu-west-2.amazonaws.com": 1, + "s3-eu-west-3.amazonaws.com": 1, + "s3-external-1.amazonaws.com": 1, + "s3-fips-us-gov-west-1.amazonaws.com": 1, + "s3-sa-east-1.amazonaws.com": 1, + "s3-us-east-2.amazonaws.com": 1, + "s3-us-gov-west-1.amazonaws.com": 1, + "s3-us-west-1.amazonaws.com": 1, + "s3-us-west-2.amazonaws.com": 1, + "s3-website-ap-northeast-1.amazonaws.com": 1, + "s3-website-ap-southeast-1.amazonaws.com": 1, + "s3-website-ap-southeast-2.amazonaws.com": 1, + "s3-website-eu-west-1.amazonaws.com": 1, + "s3-website-sa-east-1.amazonaws.com": 1, + "s3-website-us-east-1.amazonaws.com": 1, + "s3-website-us-west-1.amazonaws.com": 1, + "s3-website-us-west-2.amazonaws.com": 1, + "s3-website.ap-northeast-2.amazonaws.com": 1, + "s3-website.ap-south-1.amazonaws.com": 1, + "s3-website.ca-central-1.amazonaws.com": 1, + "s3-website.eu-central-1.amazonaws.com": 1, + "s3-website.eu-west-2.amazonaws.com": 1, + "s3-website.eu-west-3.amazonaws.com": 1, + "s3-website.fr-par.scw.cloud": 1, + "s3-website.nl-ams.scw.cloud": 1, + "s3-website.pl-waw.scw.cloud": 1, + "s3-website.us-east-2.amazonaws.com": 1, + "s3.amazonaws.com": 1, + "s3.ap-northeast-2.amazonaws.com": 1, + "s3.ap-south-1.amazonaws.com": 1, + "s3.ca-central-1.amazonaws.com": 1, + "s3.cn-north-1.amazonaws.com.cn": 1, + "s3.dualstack.ap-northeast-1.amazonaws.com": 1, + "s3.dualstack.ap-northeast-2.amazonaws.com": 1, + "s3.dualstack.ap-south-1.amazonaws.com": 1, + "s3.dualstack.ap-southeast-1.amazonaws.com": 1, + "s3.dualstack.ap-southeast-2.amazonaws.com": 1, + "s3.dualstack.ca-central-1.amazonaws.com": 1, + "s3.dualstack.eu-central-1.amazonaws.com": 1, + "s3.dualstack.eu-west-1.amazonaws.com": 1, + "s3.dualstack.eu-west-2.amazonaws.com": 1, + "s3.dualstack.eu-west-3.amazonaws.com": 1, + "s3.dualstack.sa-east-1.amazonaws.com": 1, + "s3.dualstack.us-east-1.amazonaws.com": 1, + "s3.dualstack.us-east-2.amazonaws.com": 1, + "s3.eu-central-1.amazonaws.com": 1, + "s3.eu-west-2.amazonaws.com": 1, + "s3.eu-west-3.amazonaws.com": 1, + "s3.fr-par.scw.cloud": 1, + "s3.isk01.sakurastorage.jp": 1, + "s3.isk02.sakurastorage.jp": 1, + "s3.nl-ams.scw.cloud": 1, + "s3.pl-waw.scw.cloud": 1, + "s3.teckids.org": 1, + "s3.us-east-2.amazonaws.com": 1, + "sa": 1, + "sa-east-1.elasticbeanstalk.com": 1, + "sa.au": 1, + "sa.com": 1, + "sa.cr": 1, + "sa.edu.au": 1, + "sa.gov.au": 1, + "sa.gov.pl": 1, + "sa.it": 1, + "sa.ngrok.io": 1, + "saarland": 1, + "sabae.fukui.jp": 1, + "sadist.jp": 1, + "sado.niigata.jp": 1, + "safe": 1, + "safety": 1, + "safety.aero": 1, + "saga.jp": 1, + "saga.saga.jp": 1, + "sagae.yamagata.jp": 1, + "sagamihara.kanagawa.jp": 1, + "saigawa.fukuoka.jp": 1, + "saijo.ehime.jp": 1, + "saikai.nagasaki.jp": 1, + "saiki.oita.jp": 1, + "saitama.jp": 1, + "saitama.saitama.jp": 1, + "saito.miyazaki.jp": 1, + "saka.hiroshima.jp": 1, + "sakado.saitama.jp": 1, + "sakae.chiba.jp": 1, + "sakae.nagano.jp": 1, + "sakahogi.gifu.jp": 1, + "sakai.fukui.jp": 1, + "sakai.ibaraki.jp": 1, + "sakai.osaka.jp": 1, + "sakaiminato.tottori.jp": 1, + "sakaki.nagano.jp": 1, + "sakata.yamagata.jp": 1, + "sakawa.kochi.jp": 1, + "sakegawa.yamagata.jp": 1, + "saku.nagano.jp": 1, + "sakuho.nagano.jp": 1, + "sakura": 1, + "sakura.chiba.jp": 1, + "sakura.ne.jp": 1, + "sakura.tochigi.jp": 1, + "sakura.tv": 1, + "sakuragawa.ibaraki.jp": 1, + "sakurai.nara.jp": 1, + "sakuratan.com": 1, + "sakuraweb.com": 1, + "sakyo.kyoto.jp": 1, + "salangen.no": 1, + "salat.no": 1, + "sale": 1, + "salerno.it": 1, + "salon": 1, + "saloon.jp": 1, + "saltdal.no": 1, + "salud.bo": 1, + "salvador.br": 1, + "samegawa.fukushima.jp": 1, + "samnanger.no": 1, + "sampa.br": 1, + "samsclub": 1, + "samsung": 1, + "samukawa.kanagawa.jp": 1, + "sanagochi.tokushima.jp": 1, + "sanda.hyogo.jp": 1, + "sandcats.io": 1, + "sande.more-og-romsdal.no": 1, + "sande.møre-og-romsdal.no": 1, + "sande.vestfold.no": 1, + "sandefjord.no": 1, + "sandnes.no": 1, + "sandnessjoen.no": 1, + "sandnessjøen.no": 1, + "sandoy.no": 1, + "sandvik": 1, + "sandvikcoromant": 1, + "sandøy.no": 1, + "sango.nara.jp": 1, + "sanjo.niigata.jp": 1, + "sannan.hyogo.jp": 1, + "sannohe.aomori.jp": 1, + "sano.tochigi.jp": 1, + "sanofi": 1, + "sanok.pl": 1, + "santamaria.br": 1, + "santoandre.br": 1, + "sanuki.kagawa.jp": 1, + "saobernardo.br": 1, + "saogonca.br": 1, + "saotome.st": 1, + "sap": 1, + "sar.it": 1, + "sardegna.it": 1, + "sardinia.it": 1, + "sarl": 1, + "saroma.hokkaido.jp": 1, + "sarpsborg.no": 1, + "sarufutsu.hokkaido.jp": 1, + "sas": 1, + "sasaguri.fukuoka.jp": 1, + "sasayama.hyogo.jp": 1, + "sasebo.nagasaki.jp": 1, + "sassari.it": 1, + "satosho.okayama.jp": 1, + "satsumasendai.kagoshima.jp": 1, + "satte.saitama.jp": 1, + "sauda.no": 1, + "sauherad.no": 1, + "save": 1, + "saves-the-whales.com": 1, + "savona.it": 1, + "saxo": 1, + "sayama.osaka.jp": 1, + "sayama.saitama.jp": 1, + "sayo.hyogo.jp": 1, + "sb": 1, + "sb.ua": 1, + "sbi": 1, + "sblo.jp": 1, + "sbs": 1, + "sc": 1, + "sc.cn": 1, + "sc.gov.br": 1, + "sc.ke": 1, + "sc.kr": 1, + "sc.leg.br": 1, + "sc.ls": 1, + "sc.tz": 1, + "sc.ug": 1, + "sc.us": 1, + "sca": 1, + "scalebook.scw.cloud": 1, + "scb": 1, + "sch.ae": 1, + "sch.id": 1, + "sch.ir": 1, + "sch.jo": 1, + "sch.lk": 1, + "sch.ly": 1, + "sch.ng": 1, + "sch.qa": 1, + "sch.sa": 1, + "sch.so": 1, + "sch.ss": 1, + "sch.tf": 1, + "sch.wf": 1, + "sch.zm": 1, + "schaeffler": 1, + "schmidt": 1, + "schokokeks.net": 1, + "scholarships": 1, + "school": 1, + "school.na": 1, + "school.nz": 1, + "school.za": 1, + "schoolbus.jp": 1, + "schools.nsw.edu.au": 1, + "schule": 1, + "schulplattform.de": 1, + "schulserver.de": 1, + "schwarz": 1, + "sci.eg": 1, + "science": 1, + "scientist.aero": 1, + "scot": 1, + "scrapper-site.net": 1, + "scrapping.cc": 1, + "scrysec.com": 1, + "sd": 1, + "sd.cn": 1, + "sd.us": 1, + "sdn.gov.pl": 1, + "sdscloud.pl": 1, + "se": 1, + "se.eu.org": 1, + "se.gov.br": 1, + "se.leg.br": 1, + "se.net": 1, + "search": 1, + "seat": 1, + "sebastopol.ua": 1, + "sec.ps": 1, + "secaas.hk": 1, + "secret.jp": 1, + "secure": 1, + "security": 1, + "securitytactics.com": 1, + "seek": 1, + "seg.br": 1, + "seidat.net": 1, + "seihi.nagasaki.jp": 1, + "seika.kyoto.jp": 1, + "seiro.niigata.jp": 1, + "seirou.niigata.jp": 1, + "seiyo.ehime.jp": 1, + "sejny.pl": 1, + "sekd1.beebyteapp.io": 1, + "seki.gifu.jp": 1, + "sekigahara.gifu.jp": 1, + "sekikawa.niigata.jp": 1, + "sel.no": 1, + "selbu.no": 1, + "select": 1, + "selfip.biz": 1, + "selfip.com": 1, + "selfip.info": 1, + "selfip.net": 1, + "selfip.org": 1, + "selje.no": 1, + "seljord.no": 1, + "sellfy.store": 1, + "sells-for-less.com": 1, + "sells-for-u.com": 1, + "sells-it.net": 1, + "sellsyourhome.org": 1, + "semboku.akita.jp": 1, + "semine.miyagi.jp": 1, + "senasa.ar": 1, + "sener": 1, + "sennan.osaka.jp": 1, + "senseering.net": 1, + "seoul.kr": 1, + "sera.hiroshima.jp": 1, + "seranishi.hiroshima.jp": 1, + "servebbs.com": 1, + "servebbs.net": 1, + "servebbs.org": 1, + "servebeer.com": 1, + "serveblog.net": 1, + "servecounterstrike.com": 1, + "serveexchange.com": 1, + "serveftp.com": 1, + "serveftp.net": 1, + "serveftp.org": 1, + "servegame.com": 1, + "servegame.org": 1, + "servehalflife.com": 1, + "servehttp.com": 1, + "servehumour.com": 1, + "serveirc.com": 1, + "serveminecraft.net": 1, + "servemp3.com": 1, + "servep2p.com": 1, + "servepics.com": 1, + "servequake.com": 1, + "servers.run": 1, + "servesarcasm.com": 1, + "service.gov.scot": 1, + "service.gov.uk": 1, + "service.one": 1, + "services": 1, + "services.aero": 1, + "setagaya.tokyo.jp": 1, + "seto.aichi.jp": 1, + "setouchi.okayama.jp": 1, + "settsu.osaka.jp": 1, + "sevastopol.ua": 1, + "seven": 1, + "sew": 1, + "sex": 1, + "sex.hu": 1, + "sex.pl": 1, + "sexy": 1, + "sf.no": 1, + "sfr": 1, + "sg": 1, + "sg-1.paas.massivegrid.net": 1, + "sh": 1, + "sh.cn": 1, + "shacknet.nu": 1, + "shakotan.hokkaido.jp": 1, + "shangrila": 1, + "shari.hokkaido.jp": 1, + "sharp": 1, + "shaw": 1, + "shell": 1, + "shia": 1, + "shibata.miyagi.jp": 1, + "shibata.niigata.jp": 1, + "shibecha.hokkaido.jp": 1, + "shibetsu.hokkaido.jp": 1, + "shibukawa.gunma.jp": 1, + "shibuya.tokyo.jp": 1, + "shichikashuku.miyagi.jp": 1, + "shichinohe.aomori.jp": 1, + "shiftcrypto.dev": 1, + "shiftcrypto.io": 1, + "shiftedit.io": 1, + "shiga.jp": 1, + "shiiba.miyazaki.jp": 1, + "shijonawate.osaka.jp": 1, + "shika.ishikawa.jp": 1, + "shikabe.hokkaido.jp": 1, + "shikama.miyagi.jp": 1, + "shikaoi.hokkaido.jp": 1, + "shikatsu.aichi.jp": 1, + "shiki.saitama.jp": 1, + "shikokuchuo.ehime.jp": 1, + "shiksha": 1, + "shima.mie.jp": 1, + "shimabara.nagasaki.jp": 1, + "shimada.shizuoka.jp": 1, + "shimamaki.hokkaido.jp": 1, + "shimamoto.osaka.jp": 1, + "shimane.jp": 1, + "shimane.shimane.jp": 1, + "shimizu.hokkaido.jp": 1, + "shimizu.shizuoka.jp": 1, + "shimoda.shizuoka.jp": 1, + "shimodate.ibaraki.jp": 1, + "shimofusa.chiba.jp": 1, + "shimogo.fukushima.jp": 1, + "shimoichi.nara.jp": 1, + "shimoji.okinawa.jp": 1, + "shimokawa.hokkaido.jp": 1, + "shimokitayama.nara.jp": 1, + "shimonita.gunma.jp": 1, + "shimonoseki.yamaguchi.jp": 1, + "shimosuwa.nagano.jp": 1, + "shimotsuke.tochigi.jp": 1, + "shimotsuma.ibaraki.jp": 1, + "shinagawa.tokyo.jp": 1, + "shinanomachi.nagano.jp": 1, + "shingo.aomori.jp": 1, + "shingu.fukuoka.jp": 1, + "shingu.hyogo.jp": 1, + "shingu.wakayama.jp": 1, + "shinichi.hiroshima.jp": 1, + "shinjo.nara.jp": 1, + "shinjo.okayama.jp": 1, + "shinjo.yamagata.jp": 1, + "shinjuku.tokyo.jp": 1, + "shinkamigoto.nagasaki.jp": 1, + "shinonsen.hyogo.jp": 1, + "shinshinotsu.hokkaido.jp": 1, + "shinshiro.aichi.jp": 1, + "shinto.gunma.jp": 1, + "shintoku.hokkaido.jp": 1, + "shintomi.miyazaki.jp": 1, + "shinyoshitomi.fukuoka.jp": 1, + "shiogama.miyagi.jp": 1, + "shiojiri.nagano.jp": 1, + "shioya.tochigi.jp": 1, + "shirahama.wakayama.jp": 1, + "shirakawa.fukushima.jp": 1, + "shirakawa.gifu.jp": 1, + "shirako.chiba.jp": 1, + "shiranuka.hokkaido.jp": 1, + "shiraoi.hokkaido.jp": 1, + "shiraoka.saitama.jp": 1, + "shirataka.yamagata.jp": 1, + "shiriuchi.hokkaido.jp": 1, + "shiroi.chiba.jp": 1, + "shiroishi.miyagi.jp": 1, + "shiroishi.saga.jp": 1, + "shirosato.ibaraki.jp": 1, + "shishikui.tokushima.jp": 1, + "shiso.hyogo.jp": 1, + "shisui.chiba.jp": 1, + "shitara.aichi.jp": 1, + "shiwa.iwate.jp": 1, + "shizukuishi.iwate.jp": 1, + "shizuoka.jp": 1, + "shizuoka.shizuoka.jp": 1, + "shobara.hiroshima.jp": 1, + "shoes": 1, + "shonai.fukuoka.jp": 1, + "shonai.yamagata.jp": 1, + "shoo.okayama.jp": 1, + "shop": 1, + "shop.brendly.rs": 1, + "shop.ht": 1, + "shop.hu": 1, + "shop.pl": 1, + "shop.ro": 1, + "shop.th": 1, + "shoparena.pl": 1, + "shopitsite.com": 1, + "shopping": 1, + "shopselect.net": 1, + "shopware.store": 1, + "shouji": 1, + "show": 1, + "show.aero": 1, + "showa.fukushima.jp": 1, + "showa.gunma.jp": 1, + "showa.yamanashi.jp": 1, + "showtime": 1, + "shunan.yamaguchi.jp": 1, + "shw.io": 1, + "si": 1, + "si.eu.org": 1, + "si.it": 1, + "sic.it": 1, + "sicilia.it": 1, + "sicily.it": 1, + "siellak.no": 1, + "siena.it": 1, + "sigdal.no": 1, + "siiites.com": 1, + "siljan.no": 1, + "silk": 1, + "simple-url.com": 1, + "simplesite.com": 1, + "simplesite.com.br": 1, + "simplesite.gr": 1, + "simplesite.pl": 1, + "sina": 1, + "sinaapp.com": 1, + "singles": 1, + "siracusa.it": 1, + "sirdal.no": 1, + "site": 1, + "site.tb-hosting.com": 1, + "site.transip.me": 1, + "siteleaf.net": 1, + "sites.static.land": 1, + "sj": 1, + "sjc.br": 1, + "sk": 1, + "sk.ca": 1, + "sk.eu.org": 1, + "skanit.no": 1, + "skanland.no": 1, + "skaun.no": 1, + "skedsmo.no": 1, + "skedsmokorset.no": 1, + "ski": 1, + "ski.no": 1, + "skien.no": 1, + "skierva.no": 1, + "skiervá.no": 1, + "skin": 1, + "skiptvet.no": 1, + "skjak.no": 1, + "skjervoy.no": 1, + "skjervøy.no": 1, + "skjåk.no": 1, + "sklep.pl": 1, + "sko.gov.pl": 1, + "skoczow.pl": 1, + "skodje.no": 1, + "skr.jp": 1, + "sky": 1, + "skydiving.aero": 1, + "skygearapp.com": 1, + "skype": 1, + "skánit.no": 1, + "skånland.no": 1, + "sl": 1, + "slask.pl": 1, + "slattum.no": 1, + "sld.do": 1, + "sld.pa": 1, + "slg.br": 1, + "sling": 1, + "slupsk.pl": 1, + "slz.br": 1, + "sm": 1, + "sm.ua": 1, + "small-web.org": 1, + "smart": 1, + "smartlabeling.scw.cloud": 1, + "smile": 1, + "smola.no": 1, + "smushcdn.com": 1, + "smøla.no": 1, + "sn": 1, + "sn.cn": 1, + "snaase.no": 1, + "snasa.no": 1, + "sncf": 1, + "snillfjord.no": 1, + "snoasa.no": 1, + "snowflake.app": 1, + "snåase.no": 1, + "snåsa.no": 1, + "so": 1, + "so.gov.pl": 1, + "so.it": 1, + "sobetsu.hokkaido.jp": 1, + "soc.dz": 1, + "soc.lk": 1, + "soc.srcf.net": 1, + "soccer": 1, + "sochi.su": 1, + "social": 1, + "soctrang.vn": 1, + "sodegaura.chiba.jp": 1, + "soeda.fukuoka.jp": 1, + "softbank": 1, + "software": 1, + "software.aero": 1, + "sogndal.no": 1, + "sogne.no": 1, + "sohu": 1, + "soja.okayama.jp": 1, + "soka.saitama.jp": 1, + "sokndal.no": 1, + "sola.no": 1, + "solar": 1, + "solund.no": 1, + "solutions": 1, + "soma.fukushima.jp": 1, + "somna.no": 1, + "sondre-land.no": 1, + "sondrio.it": 1, + "song": 1, + "songdalen.no": 1, + "soni.nara.jp": 1, + "sonla.vn": 1, + "sony": 1, + "soo.kagoshima.jp": 1, + "sopot.pl": 1, + "sor-aurdal.no": 1, + "sor-fron.no": 1, + "sor-odal.no": 1, + "sor-varanger.no": 1, + "sorfold.no": 1, + "sorocaba.br": 1, + "sorreisa.no": 1, + "sortland.no": 1, + "sorum.no": 1, + "sos.pl": 1, + "sosa.chiba.jp": 1, + "sosnowiec.pl": 1, + "soundcast.me": 1, + "sowa.ibaraki.jp": 1, + "soy": 1, + "sp.gov.br": 1, + "sp.it": 1, + "sp.leg.br": 1, + "spa": 1, + "space": 1, + "space-to-rent.com": 1, + "spacekit.io": 1, + "spb.ru": 1, + "spb.su": 1, + "spdns.de": 1, + "spdns.eu": 1, + "spdns.org": 1, + "sphinx.mythic-beasts.com": 1, + "spjelkavik.no": 1, + "sport": 1, + "sport.hu": 1, + "spot": 1, + "spydeberg.no": 1, + "square7.ch": 1, + "square7.de": 1, + "square7.net": 1, + "squares.net": 1, + "sr": 1, + "sr.gov.pl": 1, + "sr.it": 1, + "srht.site": 1, + "srl": 1, + "srv.br": 1, + "ss": 1, + "ss.it": 1, + "ssl.origin.cdn77-secure.org": 1, + "st": 1, + "st.no": 1, + "staba.jp": 1, + "stackhero-network.com": 1, + "stada": 1, + "stage.nodeart.io": 1, + "staging.onred.one": 1, + "stalowa-wola.pl": 1, + "stange.no": 1, + "staples": 1, + "star": 1, + "starachowice.pl": 1, + "stargard.pl": 1, + "starostwo.gov.pl": 1, + "stat.no": 1, + "statebank": 1, + "statefarm": 1, + "stathelle.no": 1, + "static-access.net": 1, + "static.land": 1, + "static.observableusercontent.com": 1, + "stavanger.no": 1, + "stavern.no": 1, + "stc": 1, + "stcgroup": 1, + "steigen.no": 1, + "steinkjer.no": 1, + "sth.ac.at": 1, + "stjordal.no": 1, + "stjordalshalsen.no": 1, + "stjørdal.no": 1, + "stjørdalshalsen.no": 1, + "stockholm": 1, + "stokke.no": 1, + "stor-elvdal.no": 1, + "storage": 1, + "storage.yandexcloud.net": 1, + "stord.no": 1, + "stordal.no": 1, + "store": 1, + "store.bb": 1, + "store.dk": 1, + "store.nf": 1, + "store.ro": 1, + "store.st": 1, + "store.ve": 1, + "storebase.store": 1, + "storfjord.no": 1, + "storipress.app": 1, + "storj.farm": 1, + "strand.no": 1, + "stranda.no": 1, + "stream": 1, + "streamlit.app": 1, + "streamlitapp.com": 1, + "stripper.jp": 1, + "stryn.no": 1, + "student.aero": 1, + "studio": 1, + "study": 1, + "stuff-4-sale.org": 1, + "stuff-4-sale.us": 1, + "stufftoread.com": 1, + "style": 1, + "su": 1, + "su.paba.se": 1, + "sub.jp": 1, + "sucks": 1, + "sue.fukuoka.jp": 1, + "suedtirol.it": 1, + "suginami.tokyo.jp": 1, + "sugito.saitama.jp": 1, + "suifu.ibaraki.jp": 1, + "suita.osaka.jp": 1, + "sukagawa.fukushima.jp": 1, + "sukumo.kochi.jp": 1, + "sula.no": 1, + "suldal.no": 1, + "suli.hu": 1, + "sumida.tokyo.jp": 1, + "sumita.iwate.jp": 1, + "sumomo.ne.jp": 1, + "sumoto.hyogo.jp": 1, + "sumoto.kumamoto.jp": 1, + "sumy.ua": 1, + "sunagawa.hokkaido.jp": 1, + "sund.no": 1, + "sunndal.no": 1, + "sunnyday.jp": 1, + "supabase.co": 1, + "supabase.in": 1, + "supabase.net": 1, + "supersale.jp": 1, + "supplies": 1, + "supply": 1, + "support": 1, + "surf": 1, + "surgery": 1, + "surnadal.no": 1, + "susaki.kochi.jp": 1, + "susono.shizuoka.jp": 1, + "suwa.nagano.jp": 1, + "suwalki.pl": 1, + "suzaka.nagano.jp": 1, + "suzu.ishikawa.jp": 1, + "suzuka.mie.jp": 1, + "suzuki": 1, + "sv": 1, + "sv.it": 1, + "svalbard.no": 1, + "sveio.no": 1, + "svelvik.no": 1, + "svn-repos.de": 1, + "swatch": 1, + "sweetpepper.org": 1, + "swidnica.pl": 1, + "swidnik.pl": 1, + "swiebodzin.pl": 1, + "swinoujscie.pl": 1, + "swiss": 1, + "sx": 1, + "sx.cn": 1, + "sy": 1, + "sydney": 1, + "sykkylven.no": 1, + "syncloud.it": 1, + "syno-ds.de": 1, + "synology-diskstation.de": 1, + "synology-ds.de": 1, + "synology.me": 1, + "systems": 1, + "sytes.net": 1, + "sz": 1, + "szczecin.pl": 1, + "szczytno.pl": 1, + "szex.hu": 1, + "szkola.pl": 1, + "sálat.no": 1, + "sálát.no": 1, + "søgne.no": 1, + "sømna.no": 1, + "søndre-land.no": 1, + "sør-aurdal.no": 1, + "sør-fron.no": 1, + "sør-odal.no": 1, + "sør-varanger.no": 1, + "sørfold.no": 1, + "sørreisa.no": 1, + "sørum.no": 1, + "südtirol.it": 1, + "t.bg": 1, + "t.se": 1, + "t3l3p0rt.net": 1, + "ta.it": 1, + "taa.it": 1, + "tab": 1, + "tabayama.yamanashi.jp": 1, + "tabitorder.co.il": 1, + "tabuse.yamaguchi.jp": 1, + "tachiarai.fukuoka.jp": 1, + "tachikawa.tokyo.jp": 1, + "tadaoka.osaka.jp": 1, + "tado.mie.jp": 1, + "tadotsu.kagawa.jp": 1, + "tagajo.miyagi.jp": 1, + "tagami.niigata.jp": 1, + "tagawa.fukuoka.jp": 1, + "tahara.aichi.jp": 1, + "taifun-dns.de": 1, + "taiji.wakayama.jp": 1, + "taiki.hokkaido.jp": 1, + "taiki.mie.jp": 1, + "tainai.niigata.jp": 1, + "taipei": 1, + "taira.toyama.jp": 1, + "taishi.hyogo.jp": 1, + "taishi.osaka.jp": 1, + "taishin.fukushima.jp": 1, + "taito.tokyo.jp": 1, + "taiwa.miyagi.jp": 1, + "tajimi.gifu.jp": 1, + "tajiri.osaka.jp": 1, + "taka.hyogo.jp": 1, + "takagi.nagano.jp": 1, + "takahagi.ibaraki.jp": 1, + "takahama.aichi.jp": 1, + "takahama.fukui.jp": 1, + "takaharu.miyazaki.jp": 1, + "takahashi.okayama.jp": 1, + "takahata.yamagata.jp": 1, + "takaishi.osaka.jp": 1, + "takamatsu.kagawa.jp": 1, + "takamori.kumamoto.jp": 1, + "takamori.nagano.jp": 1, + "takanabe.miyazaki.jp": 1, + "takanezawa.tochigi.jp": 1, + "takaoka.toyama.jp": 1, + "takarazuka.hyogo.jp": 1, + "takasago.hyogo.jp": 1, + "takasaki.gunma.jp": 1, + "takashima.shiga.jp": 1, + "takasu.hokkaido.jp": 1, + "takata.fukuoka.jp": 1, + "takatori.nara.jp": 1, + "takatsuki.osaka.jp": 1, + "takatsuki.shiga.jp": 1, + "takayama.gifu.jp": 1, + "takayama.gunma.jp": 1, + "takayama.nagano.jp": 1, + "takazaki.miyazaki.jp": 1, + "takehara.hiroshima.jp": 1, + "taketa.oita.jp": 1, + "taketomi.okinawa.jp": 1, + "taki.mie.jp": 1, + "takikawa.hokkaido.jp": 1, + "takino.hyogo.jp": 1, + "takinoue.hokkaido.jp": 1, + "takko.aomori.jp": 1, + "tako.chiba.jp": 1, + "taku.saga.jp": 1, + "talk": 1, + "tama.tokyo.jp": 1, + "tamakawa.fukushima.jp": 1, + "tamaki.mie.jp": 1, + "tamamura.gunma.jp": 1, + "tamano.okayama.jp": 1, + "tamatsukuri.ibaraki.jp": 1, + "tamayu.shimane.jp": 1, + "tamba.hyogo.jp": 1, + "tana.no": 1, + "tanabe.kyoto.jp": 1, + "tanabe.wakayama.jp": 1, + "tanagura.fukushima.jp": 1, + "tananger.no": 1, + "tank.jp": 1, + "tanohata.iwate.jp": 1, + "taobao": 1, + "tara.saga.jp": 1, + "tarama.okinawa.jp": 1, + "taranto.it": 1, + "target": 1, + "targi.pl": 1, + "tarnobrzeg.pl": 1, + "tarui.gifu.jp": 1, + "tarumizu.kagoshima.jp": 1, + "tas.au": 1, + "tas.edu.au": 1, + "tas.gov.au": 1, + "tashkent.su": 1, + "tatamotors": 1, + "tatar": 1, + "tatebayashi.gunma.jp": 1, + "tateshina.nagano.jp": 1, + "tateyama.chiba.jp": 1, + "tateyama.toyama.jp": 1, + "tatsuno.hyogo.jp": 1, + "tatsuno.nagano.jp": 1, + "tattoo": 1, + "tawaramoto.nara.jp": 1, + "tax": 1, + "taxi": 1, + "taxi.br": 1, + "tayninh.vn": 1, + "tc": 1, + "tc.br": 1, + "tci": 1, + "tcp4.me": 1, + "td": 1, + "tdk": 1, + "te.it": 1, + "te.ua": 1, + "teaches-yoga.com": 1, + "team": 1, + "tec.br": 1, + "tec.mi.us": 1, + "tec.ve": 1, + "tech": 1, + "tech.orange": 1, + "technology": 1, + "tecnologia.bo": 1, + "tel": 1, + "tel.tr": 1, + "tele.amune.org": 1, + "telebit.app": 1, + "telebit.io": 1, + "temasek": 1, + "temp-dns.com": 1, + "tempio-olbia.it": 1, + "tempioolbia.it": 1, + "tempurl.host": 1, + "tendo.yamagata.jp": 1, + "tenei.fukushima.jp": 1, + "tenkawa.nara.jp": 1, + "tennis": 1, + "tenri.nara.jp": 1, + "teo.br": 1, + "teramo.it": 1, + "termez.su": 1, + "terni.it": 1, + "ternopil.ua": 1, + "teshikaga.hokkaido.jp": 1, + "test-iserv.de": 1, + "test.ru": 1, + "test.tj": 1, + "teva": 1, + "tf": 1, + "tg": 1, + "tgory.pl": 1, + "th": 1, + "thaibinh.vn": 1, + "thainguyen.vn": 1, + "thanhhoa.vn": 1, + "thanhphohochiminh.vn": 1, + "thd": 1, + "the.br": 1, + "theater": 1, + "theatre": 1, + "theshop.jp": 1, + "theworkpc.com": 1, + "thick.jp": 1, + "thingdustdata.com": 1, + "thruhere.net": 1, + "thuathienhue.vn": 1, + "tiaa": 1, + "tickets": 1, + "tickets.io": 1, + "tienda": 1, + "tiengiang.vn": 1, + "time.no": 1, + "tingvoll.no": 1, + "tinn.no": 1, + "tips": 1, + "tires": 1, + "tirol": 1, + "tj": 1, + "tj.cn": 1, + "tjeldsund.no": 1, + "tjmaxx": 1, + "tjome.no": 1, + "tjx": 1, + "tjøme.no": 1, + "tk": 1, + "tkmaxx": 1, + "tksat.bo": 1, + "tl": 1, + "tlon.network": 1, + "tm": 1, + "tm.cy": 1, + "tm.dz": 1, + "tm.fr": 1, + "tm.hu": 1, + "tm.km": 1, + "tm.mc": 1, + "tm.mg": 1, + "tm.no": 1, + "tm.pl": 1, + "tm.ro": 1, + "tm.se": 1, + "tm.za": 1, + "tmall": 1, + "tmp.br": 1, + "tn": 1, + "tn.it": 1, + "tn.oxa.cloud": 1, + "tn.us": 1, + "to": 1, + "to.gov.br": 1, + "to.gt": 1, + "to.it": 1, + "to.leg.br": 1, + "to.md": 1, + "toba.mie.jp": 1, + "tobe.ehime.jp": 1, + "tobetsu.hokkaido.jp": 1, + "tobishima.aichi.jp": 1, + "tochigi.jp": 1, + "tochigi.tochigi.jp": 1, + "tochio.niigata.jp": 1, + "toda.saitama.jp": 1, + "today": 1, + "toei.aichi.jp": 1, + "toga.toyama.jp": 1, + "togakushi.nagano.jp": 1, + "togane.chiba.jp": 1, + "togitsu.nagasaki.jp": 1, + "togliatti.su": 1, + "togo.aichi.jp": 1, + "togura.nagano.jp": 1, + "tohma.hokkaido.jp": 1, + "tohnosho.chiba.jp": 1, + "toho.fukuoka.jp": 1, + "tokai.aichi.jp": 1, + "tokai.ibaraki.jp": 1, + "tokamachi.niigata.jp": 1, + "tokashiki.okinawa.jp": 1, + "toki.gifu.jp": 1, + "tokigawa.saitama.jp": 1, + "tokke.no": 1, + "tokoname.aichi.jp": 1, + "tokorozawa.saitama.jp": 1, + "tokushima.jp": 1, + "tokushima.tokushima.jp": 1, + "tokuyama.yamaguchi.jp": 1, + "tokyo": 1, + "tokyo.jp": 1, + "tolga.no": 1, + "tomakomai.hokkaido.jp": 1, + "tomari.hokkaido.jp": 1, + "tome.miyagi.jp": 1, + "tomi.nagano.jp": 1, + "tomigusuku.okinawa.jp": 1, + "tomika.gifu.jp": 1, + "tomioka.gunma.jp": 1, + "tomisato.chiba.jp": 1, + "tomiya.miyagi.jp": 1, + "tomobe.ibaraki.jp": 1, + "tonaki.okinawa.jp": 1, + "tonami.toyama.jp": 1, + "tondabayashi.osaka.jp": 1, + "tone.ibaraki.jp": 1, + "tonkotsu.jp": 1, + "tono.iwate.jp": 1, + "tonosho.kagawa.jp": 1, + "tonsberg.no": 1, + "toolforge.org": 1, + "tools": 1, + "toon.ehime.jp": 1, + "top": 1, + "topaz.ne.jp": 1, + "torahime.shiga.jp": 1, + "toray": 1, + "toride.ibaraki.jp": 1, + "torino.it": 1, + "torproject.net": 1, + "torsken.no": 1, + "tos.it": 1, + "tosa.kochi.jp": 1, + "tosashimizu.kochi.jp": 1, + "toscana.it": 1, + "toshiba": 1, + "toshima.tokyo.jp": 1, + "tosu.saga.jp": 1, + "total": 1, + "tottori.jp": 1, + "tottori.tottori.jp": 1, + "tourism.bj": 1, + "tourism.pl": 1, + "tourism.tn": 1, + "tours": 1, + "towada.aomori.jp": 1, + "town": 1, + "townnews-staging.com": 1, + "toya.hokkaido.jp": 1, + "toyako.hokkaido.jp": 1, + "toyama.jp": 1, + "toyama.toyama.jp": 1, + "toyo.kochi.jp": 1, + "toyoake.aichi.jp": 1, + "toyohashi.aichi.jp": 1, + "toyokawa.aichi.jp": 1, + "toyonaka.osaka.jp": 1, + "toyone.aichi.jp": 1, + "toyono.osaka.jp": 1, + "toyooka.hyogo.jp": 1, + "toyosato.shiga.jp": 1, + "toyota": 1, + "toyota.aichi.jp": 1, + "toyota.yamaguchi.jp": 1, + "toyotomi.hokkaido.jp": 1, + "toyotsu.fukuoka.jp": 1, + "toyoura.hokkaido.jp": 1, + "toys": 1, + "tozawa.yamagata.jp": 1, + "tozsde.hu": 1, + "tp.it": 1, + "tr": 1, + "tr.eu.org": 1, + "tr.it": 1, + "tr.no": 1, + "tra.kp": 1, + "trade": 1, + "trader.aero": 1, + "trading": 1, + "trading.aero": 1, + "traeumtgerade.de": 1, + "trafficplex.cloud": 1, + "trainer.aero": 1, + "training": 1, + "trana.no": 1, + "tranby.no": 1, + "trani-andria-barletta.it": 1, + "trani-barletta-andria.it": 1, + "traniandriabarletta.it": 1, + "tranibarlettaandria.it": 1, + "tranoy.no": 1, + "translate.goog": 1, + "translated.page": 1, + "transporte.bo": 1, + "tranøy.no": 1, + "trapani.it": 1, + "travel": 1, + "travel.in": 1, + "travel.pl": 1, + "travel.tt": 1, + "travelers": 1, + "travelersinsurance": 1, + "travinh.vn": 1, + "trd.br": 1, + "trentin-sud-tirol.it": 1, + "trentin-sudtirol.it": 1, + "trentin-sued-tirol.it": 1, + "trentin-suedtirol.it": 1, + "trentin-süd-tirol.it": 1, + "trentin-südtirol.it": 1, + "trentino-a-adige.it": 1, + "trentino-aadige.it": 1, + "trentino-alto-adige.it": 1, + "trentino-altoadige.it": 1, + "trentino-s-tirol.it": 1, + "trentino-stirol.it": 1, + "trentino-sud-tirol.it": 1, + "trentino-sudtirol.it": 1, + "trentino-sued-tirol.it": 1, + "trentino-suedtirol.it": 1, + "trentino-süd-tirol.it": 1, + "trentino-südtirol.it": 1, + "trentino.it": 1, + "trentinoa-adige.it": 1, + "trentinoaadige.it": 1, + "trentinoalto-adige.it": 1, + "trentinoaltoadige.it": 1, + "trentinos-tirol.it": 1, + "trentinostirol.it": 1, + "trentinosud-tirol.it": 1, + "trentinosudtirol.it": 1, + "trentinosued-tirol.it": 1, + "trentinosuedtirol.it": 1, + "trentinosüd-tirol.it": 1, + "trentinosüdtirol.it": 1, + "trentinsud-tirol.it": 1, + "trentinsudtirol.it": 1, + "trentinsued-tirol.it": 1, + "trentinsuedtirol.it": 1, + "trentinsüd-tirol.it": 1, + "trentinsüdtirol.it": 1, + "trento.it": 1, + "treviso.it": 1, + "trieste.it": 1, + "troandin.no": 1, + "trogstad.no": 1, + "troitsk.su": 1, + "tromsa.no": 1, + "tromso.no": 1, + "tromsø.no": 1, + "trondheim.no": 1, + "trust": 1, + "trv": 1, + "try-snowplow.com": 1, + "trycloudflare.com": 1, + "trysil.no": 1, + "træna.no": 1, + "trøgstad.no": 1, + "ts.it": 1, + "ts.net": 1, + "tselinograd.su": 1, + "tsk.tr": 1, + "tsu.mie.jp": 1, + "tsubame.niigata.jp": 1, + "tsubata.ishikawa.jp": 1, + "tsubetsu.hokkaido.jp": 1, + "tsuchiura.ibaraki.jp": 1, + "tsuga.tochigi.jp": 1, + "tsugaru.aomori.jp": 1, + "tsuiki.fukuoka.jp": 1, + "tsukigata.hokkaido.jp": 1, + "tsukiyono.gunma.jp": 1, + "tsukuba.ibaraki.jp": 1, + "tsukui.kanagawa.jp": 1, + "tsukumi.oita.jp": 1, + "tsumagoi.gunma.jp": 1, + "tsunan.niigata.jp": 1, + "tsuno.kochi.jp": 1, + "tsuno.miyazaki.jp": 1, + "tsuru.yamanashi.jp": 1, + "tsuruga.fukui.jp": 1, + "tsurugashima.saitama.jp": 1, + "tsurugi.ishikawa.jp": 1, + "tsuruoka.yamagata.jp": 1, + "tsuruta.aomori.jp": 1, + "tsushima.aichi.jp": 1, + "tsushima.nagasaki.jp": 1, + "tsuwano.shimane.jp": 1, + "tsuyama.okayama.jp": 1, + "tt": 1, + "tt.im": 1, + "tube": 1, + "tui": 1, + "tula.su": 1, + "tuleap-partners.com": 1, + "tunes": 1, + "tunk.org": 1, + "tur.ar": 1, + "tur.br": 1, + "turek.pl": 1, + "turin.it": 1, + "turystyka.pl": 1, + "tuscany.it": 1, + "tushu": 1, + "tuva.su": 1, + "tuxfamily.org": 1, + "tuyenquang.vn": 1, + "tv": 1, + "tv.bb": 1, + "tv.bo": 1, + "tv.br": 1, + "tv.im": 1, + "tv.in": 1, + "tv.it": 1, + "tv.kg": 1, + "tv.na": 1, + "tv.sd": 1, + "tv.tr": 1, + "tv.tz": 1, + "tvedestrand.no": 1, + "tvs": 1, + "tw": 1, + "tw.cn": 1, + "twmail.cc": 1, + "twmail.net": 1, + "twmail.org": 1, + "tx.us": 1, + "tychy.pl": 1, + "tydal.no": 1, + "tynset.no": 1, + "typedream.app": 1, + "tysfjord.no": 1, + "tysnes.no": 1, + "tysvar.no": 1, + "tysvær.no": 1, + "tz": 1, + "tønsberg.no": 1, + "u.bg": 1, + "u.channelsdvr.net": 1, + "u.se": 1, + "u2-local.xnbay.com": 1, + "u2.xnbay.com": 1, + "ua": 1, + "ua.rs": 1, + "ubank": 1, + "ube.yamaguchi.jp": 1, + "uber.space": 1, + "ubs": 1, + "uchihara.ibaraki.jp": 1, + "uchiko.ehime.jp": 1, + "uchinada.ishikawa.jp": 1, + "uchinomi.kagawa.jp": 1, + "ud.it": 1, + "uda.nara.jp": 1, + "udi.br": 1, + "udine.it": 1, + "udono.mie.jp": 1, + "ueda.nagano.jp": 1, + "ueno.gunma.jp": 1, + "uenohara.yamanashi.jp": 1, + "ufcfan.org": 1, + "ug": 1, + "ug.gov.pl": 1, + "ugim.gov.pl": 1, + "uh-oh.jp": 1, + "ui.nabu.casa": 1, + "uji.kyoto.jp": 1, + "ujiie.tochigi.jp": 1, + "ujitawara.kyoto.jp": 1, + "uk": 1, + "uk.com": 1, + "uk.eu.org": 1, + "uk.in": 1, + "uk.kg": 1, + "uk.net": 1, + "uk.oxa.cloud": 1, + "uk.primetel.cloud": 1, + "uk.reclaim.cloud": 1, + "uk0.bigv.io": 1, + "uki.kumamoto.jp": 1, + "ukiha.fukuoka.jp": 1, + "ullensaker.no": 1, + "ullensvang.no": 1, + "ulsan.kr": 1, + "ulvik.no": 1, + "um.gov.pl": 1, + "umaji.kochi.jp": 1, + "umb.it": 1, + "umbria.it": 1, + "umi.fukuoka.jp": 1, + "umig.gov.pl": 1, + "unazuki.toyama.jp": 1, + "under.jp": 1, + "undo.jp": 1, + "uni5.net": 1, + "unicloud.pl": 1, + "unicom": 1, + "union.aero": 1, + "univ.bj": 1, + "univ.sn": 1, + "university": 1, + "unjarga.no": 1, + "unjárga.no": 1, + "unnan.shimane.jp": 1, + "uno": 1, + "unusualperson.com": 1, + "unzen.nagasaki.jp": 1, + "uol": 1, + "uonuma.niigata.jp": 1, + "uozu.toyama.jp": 1, + "up.in": 1, + "upaas.kazteleport.kz": 1, + "upli.io": 1, + "upow.gov.pl": 1, + "upper.jp": 1, + "uppo.gov.pl": 1, + "ups": 1, + "urakawa.hokkaido.jp": 1, + "urasoe.okinawa.jp": 1, + "urausu.hokkaido.jp": 1, + "urawa.saitama.jp": 1, + "urayasu.chiba.jp": 1, + "urbino-pesaro.it": 1, + "urbinopesaro.it": 1, + "ureshino.mie.jp": 1, + "uri.arpa": 1, + "url.tw": 1, + "urn.arpa": 1, + "urown.cloud": 1, + "uruma.okinawa.jp": 1, + "uryu.hokkaido.jp": 1, + "us": 1, + "us-1.evennode.com": 1, + "us-2.evennode.com": 1, + "us-3.evennode.com": 1, + "us-4.evennode.com": 1, + "us-east-1.amazonaws.com": 1, + "us-east-1.elasticbeanstalk.com": 1, + "us-east-2.elasticbeanstalk.com": 1, + "us-gov-west-1.elasticbeanstalk.com": 1, + "us-west-1.elasticbeanstalk.com": 1, + "us-west-2.elasticbeanstalk.com": 1, + "us.ax": 1, + "us.com": 1, + "us.eu.org": 1, + "us.gov.pl": 1, + "us.in": 1, + "us.kg": 1, + "us.na": 1, + "us.ngrok.io": 1, + "us.org": 1, + "us.platform.sh": 1, + "us.reclaim.cloud": 1, + "usa.oita.jp": 1, + "user.aseinet.ne.jp": 1, + "user.party.eus": 1, + "user.srcf.net": 1, + "user.webaccel.jp": 1, + "usercontent.jp": 1, + "ushiku.ibaraki.jp": 1, + "usr.cloud.muni.cz": 1, + "ustka.pl": 1, + "usui.fukuoka.jp": 1, + "usuki.oita.jp": 1, + "ut.us": 1, + "utashinai.hokkaido.jp": 1, + "utazas.hu": 1, + "utazu.kagawa.jp": 1, + "uto.kumamoto.jp": 1, + "utsira.no": 1, + "utsunomiya.tochigi.jp": 1, + "utwente.io": 1, + "uw.gov.pl": 1, + "uwajima.ehime.jp": 1, + "uwu.ai": 1, + "uy": 1, + "uy.com": 1, + "uz": 1, + "uz.ua": 1, + "uzhgorod.ua": 1, + "uzs.gov.pl": 1, + "v-info.info": 1, + "v.bg": 1, + "v.ua": 1, + "va": 1, + "va.it": 1, + "va.no": 1, + "va.us": 1, + "vaapste.no": 1, + "vacations": 1, + "vadso.no": 1, + "vadsø.no": 1, + "vaga.no": 1, + "vagan.no": 1, + "vagsoy.no": 1, + "vaksdal.no": 1, + "val-d-aosta.it": 1, + "val-daosta.it": 1, + "vald-aosta.it": 1, + "valdaosta.it": 1, + "valer.hedmark.no": 1, + "valer.ostfold.no": 1, + "valle-aosta.it": 1, + "valle-d-aosta.it": 1, + "valle-daosta.it": 1, + "valle.no": 1, + "valleaosta.it": 1, + "valled-aosta.it": 1, + "valledaosta.it": 1, + "vallee-aoste.it": 1, + "vallee-d-aoste.it": 1, + "valleeaoste.it": 1, + "valleedaoste.it": 1, + "vallée-aoste.it": 1, + "vallée-d-aoste.it": 1, + "valléeaoste.it": 1, + "valléedaoste.it": 1, + "vana": 1, + "vang.no": 1, + "vanguard": 1, + "vanylven.no": 1, + "vao.it": 1, + "vapor.cloud": 1, + "vaporcloud.io": 1, + "vardo.no": 1, + "vardø.no": 1, + "varese.it": 1, + "varggat.no": 1, + "varoy.no": 1, + "vb.it": 1, + "vc": 1, + "vc.it": 1, + "vda.it": 1, + "ve": 1, + "ve.it": 1, + "vefsn.no": 1, + "vega.no": 1, + "vegarshei.no": 1, + "vegas": 1, + "vegårshei.no": 1, + "velvet.jp": 1, + "ven.it": 1, + "veneto.it": 1, + "venezia.it": 1, + "venice.it": 1, + "vennesla.no": 1, + "ventures": 1, + "verbania.it": 1, + "vercel.app": 1, + "vercel.dev": 1, + "vercelli.it": 1, + "verdal.no": 1, + "verisign": 1, + "vermögensberater": 1, + "vermögensberatung": 1, + "verona.it": 1, + "verran.no": 1, + "verse.jp": 1, + "versicherung": 1, + "versus.jp": 1, + "vestby.no": 1, + "vestnes.no": 1, + "vestre-slidre.no": 1, + "vestre-toten.no": 1, + "vestvagoy.no": 1, + "vestvågøy.no": 1, + "vet": 1, + "vet.br": 1, + "veterinaire.fr": 1, + "veterinaire.km": 1, + "vevelstad.no": 1, + "vf.no": 1, + "vfs.cloud9.af-south-1.amazonaws.com": 1, + "vfs.cloud9.ap-east-1.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-1.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-2.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-3.amazonaws.com": 1, + "vfs.cloud9.ap-south-1.amazonaws.com": 1, + "vfs.cloud9.ap-southeast-1.amazonaws.com": 1, + "vfs.cloud9.ap-southeast-2.amazonaws.com": 1, + "vfs.cloud9.ca-central-1.amazonaws.com": 1, + "vfs.cloud9.eu-central-1.amazonaws.com": 1, + "vfs.cloud9.eu-north-1.amazonaws.com": 1, + "vfs.cloud9.eu-south-1.amazonaws.com": 1, + "vfs.cloud9.eu-west-1.amazonaws.com": 1, + "vfs.cloud9.eu-west-2.amazonaws.com": 1, + "vfs.cloud9.eu-west-3.amazonaws.com": 1, + "vfs.cloud9.me-south-1.amazonaws.com": 1, + "vfs.cloud9.sa-east-1.amazonaws.com": 1, + "vfs.cloud9.us-east-1.amazonaws.com": 1, + "vfs.cloud9.us-east-2.amazonaws.com": 1, + "vfs.cloud9.us-west-1.amazonaws.com": 1, + "vfs.cloud9.us-west-2.amazonaws.com": 1, + "vg": 1, + "vgs.no": 1, + "vi": 1, + "vi.it": 1, + "vi.us": 1, + "viajes": 1, + "vibo-valentia.it": 1, + "vibovalentia.it": 1, + "vic.au": 1, + "vic.edu.au": 1, + "vic.gov.au": 1, + "vicenza.it": 1, + "video": 1, + "video.hu": 1, + "vig": 1, + "vik.no": 1, + "viking": 1, + "vikna.no": 1, + "villas": 1, + "vin": 1, + "vindafjord.no": 1, + "vinhlong.vn": 1, + "vinhphuc.vn": 1, + "vinnica.ua": 1, + "vinnytsia.ua": 1, + "vip": 1, + "vip.jelastic.cloud": 1, + "vipsinaapp.com": 1, + "virgin": 1, + "virtual-user.de": 1, + "virtualserver.io": 1, + "virtualuser.de": 1, + "visa": 1, + "vision": 1, + "viterbo.it": 1, + "viva": 1, + "vivian.jp": 1, + "vivo": 1, + "vix.br": 1, + "vlaanderen": 1, + "vladikavkaz.ru": 1, + "vladikavkaz.su": 1, + "vladimir.ru": 1, + "vladimir.su": 1, + "vlog.br": 1, + "vm.bytemark.co.uk": 1, + "vn": 1, + "vn.ua": 1, + "voagat.no": 1, + "vodka": 1, + "volda.no": 1, + "volkswagen": 1, + "vologda.su": 1, + "volvo": 1, + "volyn.ua": 1, + "voorloper.cloud": 1, + "voss.no": 1, + "vossevangen.no": 1, + "vote": 1, + "voting": 1, + "voto": 1, + "voyage": 1, + "vp4.me": 1, + "vpndns.net": 1, + "vpnplus.to": 1, + "vps-host.net": 1, + "vps.mcdir.ru": 1, + "vr.it": 1, + "vs.it": 1, + "vs.mythic-beasts.com": 1, + "vt.it": 1, + "vt.us": 1, + "vu": 1, + "vv.it": 1, + "vxl.sh": 1, + "várggát.no": 1, + "vågan.no": 1, + "vågsøy.no": 1, + "vågå.no": 1, + "våler.hedmark.no": 1, + "våler.østfold.no": 1, + "værøy.no": 1, + "w.bg": 1, + "w.se": 1, + "wa.au": 1, + "wa.edu.au": 1, + "wa.gov.au": 1, + "wa.us": 1, + "wada.nagano.jp": 1, + "wafflecell.com": 1, + "wajiki.tokushima.jp": 1, + "wajima.ishikawa.jp": 1, + "wakasa.fukui.jp": 1, + "wakasa.tottori.jp": 1, + "wakayama.jp": 1, + "wakayama.wakayama.jp": 1, + "wake.okayama.jp": 1, + "wakkanai.hokkaido.jp": 1, + "wakuya.miyagi.jp": 1, + "walbrzych.pl": 1, + "wales": 1, + "walmart": 1, + "walter": 1, + "wang": 1, + "wanggou": 1, + "wanouchi.gifu.jp": 1, + "warabi.saitama.jp": 1, + "warmia.pl": 1, + "warszawa.pl": 1, + "washtenaw.mi.us": 1, + "wassamu.hokkaido.jp": 1, + "watarai.mie.jp": 1, + "watari.miyagi.jp": 1, + "watch": 1, + "watches": 1, + "watson.jp": 1, + "waw.pl": 1, + "wazuka.kyoto.jp": 1, + "we.bs": 1, + "we.tc": 1, + "weather": 1, + "weatherchannel": 1, + "web.app": 1, + "web.bo": 1, + "web.co": 1, + "web.do": 1, + "web.gu": 1, + "web.id": 1, + "web.in": 1, + "web.lk": 1, + "web.nf": 1, + "web.ni": 1, + "web.pk": 1, + "web.tj": 1, + "web.tr": 1, + "web.ve": 1, + "web.za": 1, + "webcam": 1, + "weber": 1, + "webhop.biz": 1, + "webhop.info": 1, + "webhop.me": 1, + "webhop.net": 1, + "webhop.org": 1, + "webhosting.be": 1, + "weblike.jp": 1, + "webredirect.org": 1, + "website": 1, + "website.yandexcloud.net": 1, + "websozai.jp": 1, + "webspace.rocks": 1, + "webthings.io": 1, + "webview-assets.aws-cloud9.af-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.ca-central-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-central-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-north-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-3.amazonaws.com": 1, + "webview-assets.aws-cloud9.me-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.sa-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-east-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-west-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-west-2.amazonaws.com": 1, + "webview-assets.cloud9.af-south-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-east-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-2.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-3.amazonaws.com": 1, + "webview-assets.cloud9.ap-south-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-southeast-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-southeast-2.amazonaws.com": 1, + "webview-assets.cloud9.ca-central-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-central-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-north-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-south-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-2.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-3.amazonaws.com": 1, + "webview-assets.cloud9.me-south-1.amazonaws.com": 1, + "webview-assets.cloud9.sa-east-1.amazonaws.com": 1, + "webview-assets.cloud9.us-east-1.amazonaws.com": 1, + "webview-assets.cloud9.us-east-2.amazonaws.com": 1, + "webview-assets.cloud9.us-west-1.amazonaws.com": 1, + "webview-assets.cloud9.us-west-2.amazonaws.com": 1, + "wedding": 1, + "wedeploy.io": 1, + "wedeploy.me": 1, + "wedeploy.sh": 1, + "weeklylottery.org.uk": 1, + "wegrow.pl": 1, + "weibo": 1, + "weir": 1, + "wellbeingzone.co.uk": 1, + "wellbeingzone.eu": 1, + "west1-us.cloudjiffy.net": 1, + "westeurope.azurestaticapps.net": 1, + "westus2.azurestaticapps.net": 1, + "wf": 1, + "whitesnow.jp": 1, + "whm.fr-par.scw.cloud": 1, + "whm.nl-ams.scw.cloud": 1, + "whoswho": 1, + "wi.us": 1, + "wielun.pl": 1, + "wien": 1, + "wien.funkfeuer.at": 1, + "wif.gov.pl": 1, + "wiih.gov.pl": 1, + "wiki": 1, + "wiki.bo": 1, + "wiki.br": 1, + "williamhill": 1, + "win": 1, + "winb.gov.pl": 1, + "windows": 1, + "wine": 1, + "winners": 1, + "wios.gov.pl": 1, + "witd.gov.pl": 1, + "withgoogle.com": 1, + "withyoutube.com": 1, + "wiw.gov.pl": 1, + "wixsite.com": 1, + "wkz.gov.pl": 1, + "wlocl.pl": 1, + "wloclawek.pl": 1, + "wmcloud.org": 1, + "wme": 1, + "wmflabs.org": 1, + "wnext.app": 1, + "wodzislaw.pl": 1, + "wolomin.pl": 1, + "wolterskluwer": 1, + "woltlab-demo.com": 1, + "woodside": 1, + "work": 1, + "workers.dev": 1, + "workinggroup.aero": 1, + "workisboring.com": 1, + "works": 1, + "works.aero": 1, + "world": 1, + "worse-than.tv": 1, + "wow": 1, + "wpdevcloud.com": 1, + "wpenginepowered.com": 1, + "wphostedmail.com": 1, + "wpmucdn.com": 1, + "wpmudev.host": 1, + "writesthisblog.com": 1, + "wroc.pl": 1, + "wroclaw.pl": 1, + "ws": 1, + "ws.na": 1, + "wsa.gov.pl": 1, + "wskr.gov.pl": 1, + "wsse.gov.pl": 1, + "wtc": 1, + "wtf": 1, + "wuoz.gov.pl": 1, + "wv.us": 1, + "www.ro": 1, + "wy.us": 1, + "wzmiuw.gov.pl": 1, + "x.bg": 1, + "x.mythic-beasts.com": 1, + "x.se": 1, + "x0.com": 1, + "x0.to": 1, + "x443.pw": 1, + "xbox": 1, + "xen.prgmr.com": 1, + "xerox": 1, + "xfinity": 1, + "xihuan": 1, + "xii.jp": 1, + "xin": 1, + "xj.cn": 1, + "xnbay.com": 1, + "xs4all.space": 1, + "xx.gl": 1, + "xxx": 1, + "xy.ax": 1, + "xyz": 1, + "xz.cn": 1, + "y.bg": 1, + "y.se": 1, + "yabu.hyogo.jp": 1, + "yabuki.fukushima.jp": 1, + "yachimata.chiba.jp": 1, + "yachiyo.chiba.jp": 1, + "yachiyo.ibaraki.jp": 1, + "yachts": 1, + "yaese.okinawa.jp": 1, + "yahaba.iwate.jp": 1, + "yahiko.niigata.jp": 1, + "yahoo": 1, + "yaita.tochigi.jp": 1, + "yaizu.shizuoka.jp": 1, + "yakage.okayama.jp": 1, + "yakumo.hokkaido.jp": 1, + "yakumo.shimane.jp": 1, + "yali.mythic-beasts.com": 1, + "yalta.ua": 1, + "yamada.fukuoka.jp": 1, + "yamada.iwate.jp": 1, + "yamada.toyama.jp": 1, + "yamaga.kumamoto.jp": 1, + "yamagata.gifu.jp": 1, + "yamagata.ibaraki.jp": 1, + "yamagata.jp": 1, + "yamagata.nagano.jp": 1, + "yamagata.yamagata.jp": 1, + "yamaguchi.jp": 1, + "yamakita.kanagawa.jp": 1, + "yamamoto.miyagi.jp": 1, + "yamanakako.yamanashi.jp": 1, + "yamanashi.jp": 1, + "yamanashi.yamanashi.jp": 1, + "yamanobe.yamagata.jp": 1, + "yamanouchi.nagano.jp": 1, + "yamashina.kyoto.jp": 1, + "yamato.fukushima.jp": 1, + "yamato.kanagawa.jp": 1, + "yamato.kumamoto.jp": 1, + "yamatokoriyama.nara.jp": 1, + "yamatotakada.nara.jp": 1, + "yamatsuri.fukushima.jp": 1, + "yamaxun": 1, + "yamazoe.nara.jp": 1, + "yame.fukuoka.jp": 1, + "yanagawa.fukuoka.jp": 1, + "yanaizu.fukushima.jp": 1, + "yandex": 1, + "yandexcloud.net": 1, + "yao.osaka.jp": 1, + "yaotsu.gifu.jp": 1, + "yasaka.nagano.jp": 1, + "yashio.saitama.jp": 1, + "yashiro.hyogo.jp": 1, + "yasu.shiga.jp": 1, + "yasuda.kochi.jp": 1, + "yasugi.shimane.jp": 1, + "yasuoka.nagano.jp": 1, + "yatomi.aichi.jp": 1, + "yatsuka.shimane.jp": 1, + "yatsushiro.kumamoto.jp": 1, + "yawara.ibaraki.jp": 1, + "yawata.kyoto.jp": 1, + "yawatahama.ehime.jp": 1, + "yazu.tottori.jp": 1, + "ybo.faith": 1, + "ybo.party": 1, + "ybo.review": 1, + "ybo.science": 1, + "ybo.trade": 1, + "ye": 1, + "yenbai.vn": 1, + "yk.ca": 1, + "yn.cn": 1, + "ynh.fr": 1, + "yodobashi": 1, + "yoga": 1, + "yoichi.hokkaido.jp": 1, + "yoita.niigata.jp": 1, + "yoka.hyogo.jp": 1, + "yokaichiba.chiba.jp": 1, + "yokawa.hyogo.jp": 1, + "yokkaichi.mie.jp": 1, + "yokohama": 1, + "yokoshibahikari.chiba.jp": 1, + "yokosuka.kanagawa.jp": 1, + "yokote.akita.jp": 1, + "yokoze.saitama.jp": 1, + "yolasite.com": 1, + "yombo.me": 1, + "yomitan.okinawa.jp": 1, + "yonabaru.okinawa.jp": 1, + "yonago.tottori.jp": 1, + "yonaguni.okinawa.jp": 1, + "yonezawa.yamagata.jp": 1, + "yono.saitama.jp": 1, + "yorii.saitama.jp": 1, + "yoro.gifu.jp": 1, + "yoshida.saitama.jp": 1, + "yoshida.shizuoka.jp": 1, + "yoshikawa.saitama.jp": 1, + "yoshimi.saitama.jp": 1, + "yoshino.nara.jp": 1, + "yoshinogari.saga.jp": 1, + "yoshioka.gunma.jp": 1, + "yotsukaido.chiba.jp": 1, + "you": 1, + "youtube": 1, + "yt": 1, + "yuasa.wakayama.jp": 1, + "yufu.oita.jp": 1, + "yugawa.fukushima.jp": 1, + "yugawara.kanagawa.jp": 1, + "yuki.ibaraki.jp": 1, + "yukuhashi.fukuoka.jp": 1, + "yun": 1, + "yura.wakayama.jp": 1, + "yurihonjo.akita.jp": 1, + "yusuhara.kochi.jp": 1, + "yusui.kagoshima.jp": 1, + "yuu.yamaguchi.jp": 1, + "yuza.yamagata.jp": 1, + "yuzawa.niigata.jp": 1, + "z.bg": 1, + "z.se": 1, + "za.bz": 1, + "za.com": 1, + "za.net": 1, + "za.org": 1, + "zachpomor.pl": 1, + "zagan.pl": 1, + "zakopane.pl": 1, + "zama.kanagawa.jp": 1, + "zamami.okinawa.jp": 1, + "zao.miyagi.jp": 1, + "zaporizhzhe.ua": 1, + "zaporizhzhia.ua": 1, + "zappos": 1, + "zapto.org": 1, + "zapto.xyz": 1, + "zara": 1, + "zarow.pl": 1, + "zentsuji.kagawa.jp": 1, + "zero": 1, + "zgora.pl": 1, + "zgorzelec.pl": 1, + "zhitomir.ua": 1, + "zhytomyr.ua": 1, + "zip": 1, + "zj.cn": 1, + "zlg.br": 1, + "zm": 1, + "zombie.jp": 1, + "zone": 1, + "zp.gov.pl": 1, + "zp.ua": 1, + "zpisdn.gov.pl": 1, + "zt.ua": 1, + "zuerich": 1, + "zushi.kanagawa.jp": 1, + "zw": 1, + "ákŋoluokta.no": 1, + "álaheadju.no": 1, + "áltá.no": 1, + "åfjord.no": 1, + "åkrehamn.no": 1, + "ål.no": 1, + "ålesund.no": 1, + "ålgård.no": 1, + "åmli.no": 1, + "åmot.no": 1, + "årdal.no": 1, + "ås.no": 1, + "åseral.no": 1, + "åsnes.no": 1, + "øksnes.no": 1, + "ørland.no": 1, + "ørskog.no": 1, + "ørsta.no": 1, + "østre-toten.no": 1, + "øvre-eiker.no": 1, + "øyer.no": 1, + "øygarden.no": 1, + "øystre-slidre.no": 1, + "čáhcesuolo.no": 1, + "ελ": 1, + "ευ": 1, + "ак.срб": 1, + "бг": 1, + "бел": 1, + "биз.рус": 1, + "дети": 1, + "ею": 1, + "католик": 1, + "ком": 1, + "ком.рус": 1, + "крым.рус": 1, + "мир.рус": 1, + "мкд": 1, + "мон": 1, + "москва": 1, + "мск.рус": 1, + "обр.срб": 1, + "од.срб": 1, + "онлайн": 1, + "орг": 1, + "орг.рус": 1, + "орг.срб": 1, + "пр.срб": 1, + "рус": 1, + "рф": 1, + "сайт": 1, + "самара.рус": 1, + "сочи.рус": 1, + "спб.рус": 1, + "срб": 1, + "укр": 1, + "упр.срб": 1, + "я.рус": 1, + "қаз": 1, + "հայ": 1, + "אקדמיה.ישראל": 1, + "ישוב.ישראל": 1, + "ישראל": 1, + "ממשל.ישראל": 1, + "צהל.ישראל": 1, + "קום": 1, + "ابوظبي": 1, + "اتصالات": 1, + "ارامكو": 1, + "الاردن": 1, + "البحرين": 1, + "الجزائر": 1, + "السعودية": 1, + "السعوديه": 1, + "السعودیة": 1, + "السعودیۃ": 1, + "العليان": 1, + "المغرب": 1, + "اليمن": 1, + "امارات": 1, + "ايران": 1, + "ايران.ir": 1, + "ایران": 1, + "ایران.ir": 1, + "بارت": 1, + "بازار": 1, + "بيتك": 1, + "بھارت": 1, + "تونس": 1, + "سودان": 1, + "سوريا": 1, + "سورية": 1, + "شبكة": 1, + "عراق": 1, + "عرب": 1, + "عمان": 1, + "فلسطين": 1, + "قطر": 1, + "كاثوليك": 1, + "كوم": 1, + "مصر": 1, + "مليسيا": 1, + "موريتانيا": 1, + "موقع": 1, + "همراه": 1, + "پاكستان": 1, + "پاکستان": 1, + "ڀارت": 1, + "कॉम": 1, + "नेट": 1, + "भारत": 1, + "भारतम्": 1, + "भारोत": 1, + "संगठन": 1, + "বাংলা": 1, + "ভারত": 1, + "ভাৰত": 1, + "ਭਾਰਤ": 1, + "ભારત": 1, + "ଭାରତ": 1, + "இந்தியா": 1, + "இலங்கை": 1, + "சிங்கப்பூர்": 1, + "భారత్": 1, + "ಭಾರತ": 1, + "ഭാരതം": 1, + "ලංකා": 1, + "คอม": 1, + "ทหาร.ไทย": 1, + "ธุรกิจ.ไทย": 1, + "รัฐบาล.ไทย": 1, + "ศึกษา.ไทย": 1, + "องค์กร.ไทย": 1, + "เน็ต.ไทย": 1, + "ไทย": 1, + "ລາວ": 1, + "გე": 1, + "みんな": 1, + "アマゾン": 1, + "クラウド": 1, + "グーグル": 1, + "コム": 1, + "ストア": 1, + "セール": 1, + "ファッション": 1, + "ポイント": 1, + "三重.jp": 1, + "世界": 1, + "个人.hk": 1, + "中信": 1, + "中国": 1, + "中國": 1, + "中文网": 1, + "亚马逊": 1, + "京都.jp": 1, + "企业": 1, + "佐賀.jp": 1, + "佛山": 1, + "信息": 1, + "個人.hk": 1, + "個人.香港": 1, + "健康": 1, + "八卦": 1, + "公司": 1, + "公司.cn": 1, + "公司.hk": 1, + "公司.香港": 1, + "公益": 1, + "兵庫.jp": 1, + "北海道.jp": 1, + "千葉.jp": 1, + "台湾": 1, + "台灣": 1, + "和歌山.jp": 1, + "商城": 1, + "商店": 1, + "商标": 1, + "商業.tw": 1, + "嘉里": 1, + "嘉里大酒店": 1, + "在线": 1, + "埼玉.jp": 1, + "大分.jp": 1, + "大拿": 1, + "大阪.jp": 1, + "天主教": 1, + "奈良.jp": 1, + "娱乐": 1, + "宮城.jp": 1, + "宮崎.jp": 1, + "家電": 1, + "富山.jp": 1, + "山口.jp": 1, + "山形.jp": 1, + "山梨.jp": 1, + "岐阜.jp": 1, + "岡山.jp": 1, + "岩手.jp": 1, + "島根.jp": 1, + "广东": 1, + "広島.jp": 1, + "微博": 1, + "徳島.jp": 1, + "愛媛.jp": 1, + "愛知.jp": 1, + "慈善": 1, + "我爱你": 1, + "手机": 1, + "招聘": 1, + "政务": 1, + "政府": 1, + "政府.hk": 1, + "政府.香港": 1, + "敎育.hk": 1, + "教育.hk": 1, + "教育.香港": 1, + "新加坡": 1, + "新潟.jp": 1, + "新闻": 1, + "时尚": 1, + "書籍": 1, + "机构": 1, + "東京.jp": 1, + "栃木.jp": 1, + "沖縄.jp": 1, + "淡马锡": 1, + "游戏": 1, + "滋賀.jp": 1, + "澳門": 1, + "澳门": 1, + "点看": 1, + "熊本.jp": 1, + "石川.jp": 1, + "神奈川.jp": 1, + "福井.jp": 1, + "福岡.jp": 1, + "福島.jp": 1, + "秋田.jp": 1, + "移动": 1, + "箇人.hk": 1, + "組織.hk": 1, + "組織.tw": 1, + "組織.香港": 1, + "組织.hk": 1, + "網絡.cn": 1, + "網絡.hk": 1, + "網絡.香港": 1, + "網络.hk": 1, + "網路.tw": 1, + "组織.hk": 1, + "组织.hk": 1, + "组织机构": 1, + "网址": 1, + "网店": 1, + "网站": 1, + "网絡.hk": 1, + "网络": 1, + "网络.cn": 1, + "网络.hk": 1, + "群馬.jp": 1, + "联通": 1, + "臺灣": 1, + "茨城.jp": 1, + "谷歌": 1, + "购物": 1, + "通販": 1, + "長崎.jp": 1, + "長野.jp": 1, + "集团": 1, + "電訊盈科": 1, + "青森.jp": 1, + "静岡.jp": 1, + "飞利浦": 1, + "食品": 1, + "餐厅": 1, + "香川.jp": 1, + "香格里拉": 1, + "香港": 1, + "高知.jp": 1, + "鳥取.jp": 1, + "鹿児島.jp": 1, + "닷넷": 1, + "닷컴": 1, + "삼성": 1, + "한국": 1 +} \ No newline at end of file diff --git a/src/mod/dynamicproxy/typedef.go b/src/mod/dynamicproxy/typedef.go index a865b66..218bae5 100644 --- a/src/mod/dynamicproxy/typedef.go +++ b/src/mod/dynamicproxy/typedef.go @@ -34,17 +34,19 @@ type RouterOption struct { } type Router struct { - Option *RouterOption - ProxyEndpoints *sync.Map - SubdomainEndpoint *sync.Map - Running bool - Root *ProxyEndpoint - mux http.Handler - server *http.Server - tlsListener net.Listener - routingRules []*RoutingRule + Option *RouterOption + ProxyEndpoints *sync.Map + SubdomainEndpoint *sync.Map + Running bool + Root *ProxyEndpoint + RootRoutingOptions *RootRoutingOptions + mux http.Handler + server *http.Server + tlsListener net.Listener + routingRules []*RoutingRule - tlsRedirectStop chan bool + tlsRedirectStop chan bool //Stop channel for tls redirection server + tldMap map[string]int //Top level domain map, see tld.json } // Auth credential for basic auth on certain endpoints @@ -59,56 +61,65 @@ type BasicAuthUnhashedCredentials struct { Password string } -// A proxy endpoint record -type ProxyEndpoint struct { - ProxyType int //The type of this proxy, see const def - RootOrMatchingDomain string //Root for vdir or Matching domain for subd - Domain string //Domain or IP to proxy to - RequireTLS bool //Target domain require TLS - SkipCertValidations bool //Set to true to accept self signed certs - RequireBasicAuth bool //Set to true to request basic auth before proxy - BasicAuthCredentials []*BasicAuthCredentials `json:"-"` - Proxy *dpcore.ReverseProxy `json:"-"` +// Paths to exclude in basic auth enabled proxy handler +type BasicAuthExceptionRule struct { + PathPrefix string } +// A proxy endpoint record +type ProxyEndpoint struct { + ProxyType int //The type of this proxy, see const def + RootOrMatchingDomain string //Root for vdir or Matching domain for subd, also act as key + Domain string //Domain or IP to proxy to + RequireTLS bool //Target domain require TLS + BypassGlobalTLS bool //Bypass global TLS setting options if TLS Listener enabled (parent.tlsListener != nil) + SkipCertValidations bool //Set to true to accept self signed certs + RequireBasicAuth bool //Set to true to request basic auth before proxy + BasicAuthCredentials []*BasicAuthCredentials `json:"-"` //Basic auth credentials + BasicAuthExceptionRules []*BasicAuthExceptionRule //Path to exclude in a basic auth enabled proxy target + Proxy *dpcore.ReverseProxy `json:"-"` + + parent *Router +} + +// Root options are those that are required for reverse proxy handler to work type RootOptions struct { - ProxyLocation string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials + ProxyLocation string //Proxy Root target, all unset traffic will be forward to here + RequireTLS bool //Proxy root target require TLS connection (not recommended) + BypassGlobalTLS bool //Bypass global TLS setting and make root http only (not recommended) + SkipCertValidations bool //Skip cert validation, suitable for self-signed certs, CURRENTLY NOT USED + + //Basic Auth Related + RequireBasicAuth bool //Require basic auth, CURRENTLY NOT USED + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule +} + +// Additional options are here for letting router knows how to route exception cases for root +type RootRoutingOptions struct { + //Root only configs + EnableRedirectForUnsetRules bool //Force unset rules to redirect to custom domain + UnsetRuleRedirectTarget string //Custom domain to redirect to for unset rules } type VdirOptions struct { - RootName string - Domain string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials + RootName string + Domain string + RequireTLS bool + BypassGlobalTLS bool + SkipCertValidations bool + RequireBasicAuth bool + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule } type SubdOptions struct { - MatchingDomain string - Domain string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials + MatchingDomain string + Domain string + RequireTLS bool + BypassGlobalTLS bool + SkipCertValidations bool + RequireBasicAuth bool + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule } - -/* -type ProxyEndpoint struct { - Root string - Domain string - RequireTLS bool - Proxy *reverseproxy.ReverseProxy `json:"-"` -} - -type SubdomainEndpoint struct { - MatchingDomain string - Domain string - RequireTLS bool - Proxy *reverseproxy.ReverseProxy `json:"-"` -} -*/ diff --git a/src/mod/geodb/geodb.go b/src/mod/geodb/geodb.go index ecb484c..25bc2fb 100644 --- a/src/mod/geodb/geodb.go +++ b/src/mod/geodb/geodb.go @@ -20,13 +20,16 @@ type Store struct { WhitelistEnabled bool geodb [][]string //Parsed geodb list geodbIpv6 [][]string //Parsed geodb list for ipv6 - - geotrie *trie - geotrieIpv6 *trie - + geotrie *trie + geotrieIpv6 *trie //geoipCache sync.Map + sysdb *database.Database + option *StoreOptions +} - sysdb *database.Database +type StoreOptions struct { + AllowSlowIpv4LookUp bool + AllowSloeIpv6Lookup bool } type CountryInfo struct { @@ -34,7 +37,7 @@ type CountryInfo struct { ContinetCode string } -func NewGeoDb(sysdb *database.Database) (*Store, error) { +func NewGeoDb(sysdb *database.Database, option *StoreOptions) (*Store, error) { parsedGeoData, err := parseCSV(geoipv4) if err != nil { return nil, err @@ -79,14 +82,25 @@ func NewGeoDb(sysdb *database.Database) (*Store, error) { log.Println("Database pointer set to nil: Entering debug mode") } + var ipv4Trie *trie + if !option.AllowSlowIpv4LookUp { + ipv4Trie = constrctTrieTree(parsedGeoData) + } + + var ipv6Trie *trie + if !option.AllowSloeIpv6Lookup { + ipv6Trie = constrctTrieTree(parsedGeoDataIpv6) + } + return &Store{ BlacklistEnabled: blacklistEnabled, WhitelistEnabled: whitelistEnabled, geodb: parsedGeoData, - geotrie: constrctTrieTree(parsedGeoData), + geotrie: ipv4Trie, geodbIpv6: parsedGeoDataIpv6, - geotrieIpv6: constrctTrieTree(parsedGeoDataIpv6), + geotrieIpv6: ipv6Trie, sysdb: sysdb, + option: option, }, nil } @@ -106,6 +120,7 @@ func (s *Store) ResolveCountryCodeFromIP(ipstring string) (*CountryInfo, error) CountryIsoCode: cc, ContinetCode: "", }, nil + } func (s *Store) Close() { diff --git a/src/mod/geodb/geodb_test.go b/src/mod/geodb/geodb_test.go index 3c56f64..437d399 100644 --- a/src/mod/geodb/geodb_test.go +++ b/src/mod/geodb/geodb_test.go @@ -41,7 +41,10 @@ func TestTrieConstruct(t *testing.T) { func TestResolveCountryCodeFromIP(t *testing.T) { // Create a new store - store, err := geodb.NewGeoDb(nil) + store, err := geodb.NewGeoDb(nil, &geodb.StoreOptions{ + false, + false, + }) if err != nil { t.Errorf("error creating store: %v", err) return diff --git a/src/mod/geodb/geoloader.go b/src/mod/geodb/geoloader.go index 83928a8..2044b9d 100644 --- a/src/mod/geodb/geoloader.go +++ b/src/mod/geodb/geoloader.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/csv" "io" - "net" "strings" ) @@ -26,9 +25,17 @@ func (s *Store) search(ip string) string { //Search in geotrie tree cc := "" if IsIPv6(ip) { - cc = s.geotrieIpv6.search(ip) + if s.geotrieIpv6 == nil { + cc = s.slowSearchIpv6(ip) + } else { + cc = s.geotrieIpv6.search(ip) + } } else { - cc = s.geotrie.search(ip) + if s.geotrie == nil { + cc = s.slowSearchIpv4(ip) + } else { + cc = s.geotrie.search(ip) + } } /* @@ -69,27 +76,3 @@ func parseCSV(content []byte) ([][]string, error) { } return records, nil } - -// Check if a ip string is within the range of two others -func isIPInRange(ip, start, end string) bool { - ipAddr := net.ParseIP(ip) - if ipAddr == nil { - return false - } - - startAddr := net.ParseIP(start) - if startAddr == nil { - return false - } - - endAddr := net.ParseIP(end) - if endAddr == nil { - return false - } - - if ipAddr.To4() == nil || startAddr.To4() == nil || endAddr.To4() == nil { - return false - } - - return bytes.Compare(ipAddr.To4(), startAddr.To4()) >= 0 && bytes.Compare(ipAddr.To4(), endAddr.To4()) <= 0 -} diff --git a/src/mod/geodb/slowSearch.go b/src/mod/geodb/slowSearch.go new file mode 100644 index 0000000..9d5f4c7 --- /dev/null +++ b/src/mod/geodb/slowSearch.go @@ -0,0 +1,81 @@ +package geodb + +import ( + "errors" + "math/big" + "net" +) + +/* + slowSearch.go + + This script implement the slow search method for ip to country code + lookup. If you have the memory allocation for near O(1) lookup, + you should not be using slow search mode. +*/ + +func ipv4ToUInt32(ip net.IP) uint32 { + ip = ip.To4() + return uint32(ip[0])<<24 | uint32(ip[1])<<16 | uint32(ip[2])<<8 | uint32(ip[3]) +} + +func isIPv4InRange(startIP, endIP, testIP string) (bool, error) { + start := net.ParseIP(startIP) + end := net.ParseIP(endIP) + test := net.ParseIP(testIP) + + if start == nil || end == nil || test == nil { + return false, errors.New("invalid IP address format") + } + + startUint := ipv4ToUInt32(start) + endUint := ipv4ToUInt32(end) + testUint := ipv4ToUInt32(test) + + return testUint >= startUint && testUint <= endUint, nil +} + +func isIPv6InRange(startIP, endIP, testIP string) (bool, error) { + start := net.ParseIP(startIP) + end := net.ParseIP(endIP) + test := net.ParseIP(testIP) + + if start == nil || end == nil || test == nil { + return false, errors.New("invalid IP address format") + } + + startInt := new(big.Int).SetBytes(start.To16()) + endInt := new(big.Int).SetBytes(end.To16()) + testInt := new(big.Int).SetBytes(test.To16()) + + return testInt.Cmp(startInt) >= 0 && testInt.Cmp(endInt) <= 0, nil +} + +// Slow country code lookup for +func (s *Store) slowSearchIpv4(ipAddr string) string { + for _, ipRange := range s.geodb { + startIp := ipRange[0] + endIp := ipRange[1] + cc := ipRange[2] + + inRange, _ := isIPv4InRange(startIp, endIp, ipAddr) + if inRange { + return cc + } + } + return "" +} + +func (s *Store) slowSearchIpv6(ipAddr string) string { + for _, ipRange := range s.geodbIpv6 { + startIp := ipRange[0] + endIp := ipRange[1] + cc := ipRange[2] + + inRange, _ := isIPv6InRange(startIp, endIp, ipAddr) + if inRange { + return cc + } + } + return "" +} diff --git a/src/mod/geodb/trie.go b/src/mod/geodb/trie.go index 5b382af..be69cfc 100644 --- a/src/mod/geodb/trie.go +++ b/src/mod/geodb/trie.go @@ -1,15 +1,12 @@ package geodb import ( - "fmt" + "math" "net" - "strconv" - "strings" ) type trie_Node struct { childrens [2]*trie_Node - ends bool cc string } @@ -18,7 +15,7 @@ type trie struct { root *trie_Node } -func ipToBitString(ip string) string { +func ipToBytes(ip string) []byte { // Parse the IP address string into a net.IP object parsedIP := net.ParseIP(ip) @@ -29,49 +26,7 @@ func ipToBitString(ip string) string { ipBytes = parsedIP.To16() } - // Convert each byte in the IP address to its 8-bit binary representation - var result []string - for _, b := range ipBytes { - result = append(result, fmt.Sprintf("%08b", b)) - } - - // Join the binary representation of each byte with dots to form the final bit string - return strings.Join(result, "") -} - -func bitStringToIp(bitString string) string { - // Check if the bit string represents an IPv4 or IPv6 address - isIPv4 := len(bitString) == 32 - - // Split the bit string into 8-bit segments - segments := make([]string, 0) - if isIPv4 { - for i := 0; i < 4; i++ { - segments = append(segments, bitString[i*8:(i+1)*8]) - } - } else { - for i := 0; i < 16; i++ { - segments = append(segments, bitString[i*8:(i+1)*8]) - } - } - - // Convert each segment to its decimal equivalent - decimalSegments := make([]int, len(segments)) - for i, s := range segments { - val, _ := strconv.ParseInt(s, 2, 64) - decimalSegments[i] = int(val) - } - - // Construct the IP address string based on the type (IPv4 or IPv6) - if isIPv4 { - return fmt.Sprintf("%d.%d.%d.%d", decimalSegments[0], decimalSegments[1], decimalSegments[2], decimalSegments[3]) - } else { - ip := make(net.IP, net.IPv6len) - for i := 0; i < net.IPv6len; i++ { - ip[i] = byte(decimalSegments[i]) - } - return ip.String() - } + return ipBytes } // inititlaizing a new trie @@ -83,20 +38,39 @@ func newTrie() *trie { // Passing words to trie func (t *trie) insert(ipAddr string, cc string) { - word := ipToBitString(ipAddr) + ipBytes := ipToBytes(ipAddr) current := t.root - for _, wr := range word { - index := wr - '0' - if current.childrens[index] == nil { - current.childrens[index] = &trie_Node{ - childrens: [2]*trie_Node{}, - ends: false, - cc: cc, + for _, b := range ipBytes { + //For each byte in the ip address + //each byte is 8 bit + for j := 0; j < 8; j++ { + bitwise := (b&uint8(math.Pow(float64(2), float64(j))) > 0) + bit := 0b0000 + if bitwise { + bit = 0b0001 } + if current.childrens[bit] == nil { + current.childrens[bit] = &trie_Node{ + childrens: [2]*trie_Node{}, + cc: cc, + } + } + current = current.childrens[bit] } - current = current.childrens[index] } - current.ends = true + + /* + for i := 63; i >= 0; i-- { + bit := (ipInt64 >> uint(i)) & 1 + if current.childrens[bit] == nil { + current.childrens[bit] = &trie_Node{ + childrens: [2]*trie_Node{}, + cc: cc, + } + } + current = current.childrens[bit] + } + */ } func isReservedIP(ip string) bool { @@ -126,16 +100,34 @@ func (t *trie) search(ipAddr string) string { if isReservedIP(ipAddr) { return "" } - word := ipToBitString(ipAddr) + + ipBytes := ipToBytes(ipAddr) current := t.root - for _, wr := range word { - index := wr - '0' - if current.childrens[index] == nil { - return current.cc + for _, b := range ipBytes { + //For each byte in the ip address + //each byte is 8 bit + for j := 0; j < 8; j++ { + bitwise := (b&uint8(math.Pow(float64(2), float64(j))) > 0) + bit := 0b0000 + if bitwise { + bit = 0b0001 + } + if current.childrens[bit] == nil { + return current.cc + } + current = current.childrens[bit] } - current = current.childrens[index] } - if current.ends { + /* + for i := 63; i >= 0; i-- { + bit := (ipInt64 >> uint(i)) & 1 + if current.childrens[bit] == nil { + return current.cc + } + current = current.childrens[bit] + } + */ + if len(current.childrens) == 0 { return current.cc } diff --git a/src/mod/mdns/mdns.go b/src/mod/mdns/mdns.go index 3a0022d..f266029 100644 --- a/src/mod/mdns/mdns.go +++ b/src/mod/mdns/mdns.go @@ -226,7 +226,7 @@ func (m *MDNSHost) Scan(timeout int, domainFilter string) []*NetworkHost { return discoveredHost } -//Get all mac address of all interfaces +// Get all mac address of all interfaces func getMacAddr() ([]string, error) { ifas, err := net.Interfaces() if err != nil { diff --git a/src/mod/pathrule/handler.go b/src/mod/pathrule/handler.go index 1253554..1808860 100644 --- a/src/mod/pathrule/handler.go +++ b/src/mod/pathrule/handler.go @@ -5,7 +5,7 @@ import ( "net/http" "strconv" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/utils" ) @@ -58,7 +58,7 @@ func (h *Handler) HandleAddBlockingPath(w http.ResponseWriter, r *http.Request) } targetBlockingPath := BlockingPath{ - UUID: uuid.NewV4().String(), + UUID: uuid.New().String(), MatchingPath: matchingPath, ExactMatch: exactMatch == "true", StatusCode: statusCode, diff --git a/src/mod/tcpprox/tcpprox.go b/src/mod/tcpprox/tcpprox.go index b6a3e2e..c5944e6 100644 --- a/src/mod/tcpprox/tcpprox.go +++ b/src/mod/tcpprox/tcpprox.go @@ -4,7 +4,7 @@ import ( "errors" "net" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/database" ) @@ -95,7 +95,7 @@ func NewTCProxy(options *Options) *Manager { func (m *Manager) NewConfig(config *ProxyRelayOptions) string { //Generate a new config from options - configUUID := uuid.NewV4().String() + configUUID := uuid.New().String() thisConfig := ProxyRelayConfig{ UUID: configUUID, Name: config.Name, diff --git a/src/mod/utils/utils.go b/src/mod/utils/utils.go index 8315317..bd21c8b 100644 --- a/src/mod/utils/utils.go +++ b/src/mod/utils/utils.go @@ -37,46 +37,6 @@ func SendOK(w http.ResponseWriter) { w.Write([]byte("\"OK\"")) } -/* - The paramter move function (mv) - - You can find similar things in the PHP version of ArOZ Online Beta. You need to pass in - r (HTTP Request Object) - getParamter (string, aka $_GET['This string]) - - Will return - Paramter string (if any) - Error (if error) - -*/ -/* -func Mv(r *http.Request, getParamter string, postMode bool) (string, error) { - if postMode == false { - //Access the paramter via GET - keys, ok := r.URL.Query()[getParamter] - - if !ok || len(keys[0]) < 1 { - //log.Println("Url Param " + getParamter +" is missing") - return "", errors.New("GET paramter " + getParamter + " not found or it is empty") - } - - // Query()["key"] will return an array of items, - // we only want the single item. - key := keys[0] - return string(key), nil - } else { - //Access the parameter via POST - r.ParseForm() - x := r.Form.Get(getParamter) - if len(x) == 0 || x == "" { - return "", errors.New("POST paramter " + getParamter + " not found or it is empty") - } - return string(x), nil - } - -} -*/ - // Get GET parameter func GetPara(r *http.Request, key string) (string, error) { keys, ok := r.URL.Query()[key] @@ -98,6 +58,24 @@ func PostPara(r *http.Request, key string) (string, error) { } } +// Get POST paramter as boolean, accept 1 or true +func PostBool(r *http.Request, key string) (bool, error) { + x, err := PostPara(r, key) + if err != nil { + return false, err + } + + x = strings.TrimSpace(x) + + if x == "1" || strings.ToLower(x) == "true" { + return true, nil + } else if x == "0" || strings.ToLower(x) == "false" { + return false, nil + } + + return false, errors.New("invalid boolean given") +} + func FileExists(filename string) bool { _, err := os.Stat(filename) if os.IsNotExist(err) { @@ -128,19 +106,6 @@ func TimeToString(targetTime time.Time) string { return targetTime.Format("2006-01-02 15:04:05") } -// Use for redirections -func ConstructRelativePathFromRequestURL(requestURI string, redirectionLocation string) string { - if strings.Count(requestURI, "/") == 1 { - //Already root level - return redirectionLocation - } - for i := 0; i < strings.Count(requestURI, "/")-1; i++ { - redirectionLocation = "../" + redirectionLocation - } - - return redirectionLocation -} - // Check if given string in a given slice func StringInArray(arr []string, str string) bool { for _, a := range arr { diff --git a/src/reverseproxy.go b/src/reverseproxy.go index a5f8159..e45953a 100644 --- a/src/reverseproxy.go +++ b/src/reverseproxy.go @@ -88,21 +88,23 @@ func ReverseProxtInit() { }) } else if record.ProxyType == "subd" { dynamicProxyRouter.AddSubdomainRoutingService(&dynamicproxy.SubdOptions{ - MatchingDomain: record.Rootname, - Domain: record.ProxyTarget, - RequireTLS: record.UseTLS, - SkipCertValidations: record.SkipTlsValidation, - RequireBasicAuth: record.RequireBasicAuth, - BasicAuthCredentials: record.BasicAuthCredentials, + MatchingDomain: record.Rootname, + Domain: record.ProxyTarget, + RequireTLS: record.UseTLS, + SkipCertValidations: record.SkipTlsValidation, + RequireBasicAuth: record.RequireBasicAuth, + BasicAuthCredentials: record.BasicAuthCredentials, + BasicAuthExceptionRules: record.BasicAuthExceptionRules, }) } else if record.ProxyType == "vdir" { dynamicProxyRouter.AddVirtualDirectoryProxyService(&dynamicproxy.VdirOptions{ - RootName: record.Rootname, - Domain: record.ProxyTarget, - RequireTLS: record.UseTLS, - SkipCertValidations: record.SkipTlsValidation, - RequireBasicAuth: record.RequireBasicAuth, - BasicAuthCredentials: record.BasicAuthCredentials, + RootName: record.Rootname, + Domain: record.ProxyTarget, + RequireTLS: record.UseTLS, + SkipCertValidations: record.SkipTlsValidation, + RequireBasicAuth: record.RequireBasicAuth, + BasicAuthCredentials: record.BasicAuthCredentials, + BasicAuthExceptionRules: record.BasicAuthExceptionRules, }) } else { log.Println("Unsupported endpoint type: " + record.ProxyType + ". Skipping " + filepath.Base(conf)) @@ -282,7 +284,7 @@ func ReverseProxyHandleAddEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: basicAuthCredentials, } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyConfigToFile(&thisProxyConfigRecord) //Update utm if exists if uptimeMonitor != nil { @@ -355,7 +357,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - dynamicProxyRouter.RemoveProxy("vdir", thisOption.RootName) + targetProxyEntry.Remove() dynamicProxyRouter.AddVirtualDirectoryProxyService(&thisOption) } else if eptype == "subd" { @@ -367,7 +369,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - dynamicProxyRouter.RemoveProxy("subd", thisOption.MatchingDomain) + targetProxyEntry.Remove() dynamicProxyRouter.AddSubdomainRoutingService(&thisOption) } @@ -381,7 +383,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyConfigToFile(&thisProxyConfigRecord) utils.SendOK(w) } @@ -398,13 +400,15 @@ func DeleteProxyEndpoint(w http.ResponseWriter, r *http.Request) { return } - err = dynamicProxyRouter.RemoveProxy(ptype, ep) + //Remove the config from runtime + err = dynamicProxyRouter.RemoveProxyEndpointByRootname(ptype, ep) if err != nil { utils.SendErrorResponse(w, err.Error()) return } - RemoveReverseProxyConfig(ep) + //Remove the config from file + RemoveReverseProxyConfigFile(ep) //Update utm if exists if uptimeMonitor != nil { @@ -528,19 +532,10 @@ func UpdateProxyBasicAuthCredentials(w http.ResponseWriter, r *http.Request) { targetProxy.BasicAuthCredentials = mergedCredentials //Save it to file - thisProxyConfigRecord := Record{ - ProxyType: ptype, - Rootname: targetProxy.RootOrMatchingDomain, - ProxyTarget: targetProxy.Domain, - UseTLS: targetProxy.RequireTLS, - SkipTlsValidation: targetProxy.SkipCertValidations, - RequireBasicAuth: targetProxy.RequireBasicAuth, - BasicAuthCredentials: targetProxy.BasicAuthCredentials, - } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyEndpointToFile(targetProxy) //Replace runtime configuration - dynamicProxyRouter.SaveProxy(ptype, ep, targetProxy) + targetProxy.UpdateToRuntime() utils.SendOK(w) } else { http.Error(w, "invalid usage", http.StatusMethodNotAllowed) @@ -548,6 +543,147 @@ func UpdateProxyBasicAuthCredentials(w http.ResponseWriter, r *http.Request) { } +// List, Update or Remove the exception paths for basic auth. +func ListProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + + if r.Method != http.MethodGet { + http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) + } + ep, err := utils.GetPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.GetPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + //Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + //List all the exception paths for this proxy + results := targetProxy.BasicAuthExceptionRules + if results == nil { + //It is a config from a really old version of zoraxy. Overwrite it with empty array + results = []*dynamicproxy.BasicAuthExceptionRule{} + } + js, _ := json.Marshal(results) + utils.SendJSONResponse(w, string(js)) + return +} + +func AddProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + ep, err := utils.PostPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.PostPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + matchingPrefix, err := utils.PostPara(r, "prefix") + if err != nil { + utils.SendErrorResponse(w, "Invalid matching prefix given") + return + } + + //Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + //Check if the prefix starts with /. If not, prepend it + if !strings.HasPrefix(matchingPrefix, "/") { + matchingPrefix = "/" + matchingPrefix + } + + //Add a new exception rule if it is not already exists + alreadyExists := false + for _, thisExceptionRule := range targetProxy.BasicAuthExceptionRules { + if thisExceptionRule.PathPrefix == matchingPrefix { + alreadyExists = true + break + } + } + if alreadyExists { + utils.SendErrorResponse(w, "This matching path already exists") + return + } + targetProxy.BasicAuthExceptionRules = append(targetProxy.BasicAuthExceptionRules, &dynamicproxy.BasicAuthExceptionRule{ + PathPrefix: strings.TrimSpace(matchingPrefix), + }) + + //Save configs to runtime and file + targetProxy.UpdateToRuntime() + SaveReverseProxyEndpointToFile(targetProxy) + + utils.SendOK(w) +} + +func RemoveProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + // Delete a rule + ep, err := utils.PostPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.PostPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + matchingPrefix, err := utils.PostPara(r, "prefix") + if err != nil { + utils.SendErrorResponse(w, "Invalid matching prefix given") + return + } + + // Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + newExceptionRuleList := []*dynamicproxy.BasicAuthExceptionRule{} + matchingExists := false + for _, thisExceptionalRule := range targetProxy.BasicAuthExceptionRules { + if thisExceptionalRule.PathPrefix != matchingPrefix { + newExceptionRuleList = append(newExceptionRuleList, thisExceptionalRule) + } else { + matchingExists = true + } + } + + if !matchingExists { + utils.SendErrorResponse(w, "target matching rule not exists") + return + } + + targetProxy.BasicAuthExceptionRules = newExceptionRuleList + + // Save configs to runtime and file + targetProxy.UpdateToRuntime() + SaveReverseProxyEndpointToFile(targetProxy) + + utils.SendOK(w) +} + func ReverseProxyStatus(w http.ResponseWriter, r *http.Request) { js, _ := json.Marshal(dynamicProxyRouter) utils.SendJSONResponse(w, string(js)) @@ -644,11 +780,18 @@ func HandleIncomingPortSet(w http.ResponseWriter, r *http.Request) { newIncomingPortInt, err := strconv.Atoi(newIncomingPort) if err != nil { - utils.SendErrorResponse(w, "invalid incoming port given") + utils.SendErrorResponse(w, "Invalid incoming port given") return } //Check if it is identical as proxy root (recursion!) + if dynamicProxyRouter.Root == nil || dynamicProxyRouter.Root.Domain == "" { + //Check if proxy root is set before checking recursive listen + //Fixing issue #43 + utils.SendErrorResponse(w, "Set Proxy Root before changing inbound port") + return + } + proxyRoot := strings.TrimSuffix(dynamicProxyRouter.Root.Domain, "/") if strings.HasPrefix(proxyRoot, "localhost:"+strconv.Itoa(newIncomingPortInt)) || strings.HasPrefix(proxyRoot, "127.0.0.1:"+strconv.Itoa(newIncomingPortInt)) { //Listening port is same as proxy root @@ -671,3 +814,34 @@ func HandleIncomingPortSet(w http.ResponseWriter, r *http.Request) { utils.SendOK(w) } + +// Handle list of root route options +func HandleRootRouteOptionList(w http.ResponseWriter, r *http.Request) { + js, _ := json.Marshal(dynamicProxyRouter.RootRoutingOptions) + utils.SendJSONResponse(w, string(js)) +} + +// Handle update of the root route edge case options. See dynamicproxy/rootRoute.go +func HandleRootRouteOptionsUpdate(w http.ResponseWriter, r *http.Request) { + enableUnsetSubdomainRedirect, err := utils.PostBool(r, "unsetRedirect") + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + unsetRedirectTarget, _ := utils.PostPara(r, "unsetRedirectTarget") + + newRootOption := dynamicproxy.RootRoutingOptions{ + EnableRedirectForUnsetRules: enableUnsetSubdomainRedirect, + UnsetRuleRedirectTarget: unsetRedirectTarget, + } + + dynamicProxyRouter.RootRoutingOptions = &newRootOption + err = newRootOption.SaveToFile() + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + utils.SendOK(w) +} diff --git a/src/start.go b/src/start.go index 30d5eb2..3da18e6 100644 --- a/src/start.go +++ b/src/start.go @@ -76,7 +76,10 @@ func startupSequence() { } //Create a geodb store - geodbStore, err = geodb.NewGeoDb(sysdb) + geodbStore, err = geodb.NewGeoDb(sysdb, &geodb.StoreOptions{ + AllowSlowIpv4LookUp: !*enableHighSpeedGeoIPLookup, + AllowSloeIpv6Lookup: !*enableHighSpeedGeoIPLookup, + }) if err != nil { panic(err) } @@ -114,47 +117,49 @@ func startupSequence() { This discover nearby ArozOS Nodes or other services that provide mDNS discovery with domain (e.g. Synology NAS) */ - portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1]) - if err != nil { - portInt = 8000 - } - mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{ - HostName: "zoraxy_" + nodeUUID, - Port: portInt, - Domain: "zoraxy.imuslab.com", - Model: "Network Gateway", - UUID: nodeUUID, - Vendor: "imuslab.com", - BuildVersion: version, - }, "") - if err != nil { - log.Println("Unable to startup mDNS service.") - log.Fatal(err) - } - //Start initial scanning - go func() { - hosts := mdnsScanner.Scan(30, "") - previousmdnsScanResults = hosts - log.Println("mDNS Startup scan completed") - }() - - //Create a ticker to update mDNS results every 5 minutes - ticker := time.NewTicker(15 * time.Minute) - stopChan := make(chan bool) - go func() { - for { - select { - case <-stopChan: - ticker.Stop() - case <-ticker.C: + if *allowMdnsScanning { + portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1]) + if err != nil { + portInt = 8000 + } + mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{ + HostName: "zoraxy_" + nodeUUID, + Port: portInt, + Domain: "zoraxy.arozos.com", + Model: "Network Gateway", + UUID: nodeUUID, + Vendor: "imuslab.com", + BuildVersion: version, + }, "") + if err != nil { + log.Println("Unable to startup mDNS service. Disabling mDNS services") + } else { + //Start initial scanning + go func() { hosts := mdnsScanner.Scan(30, "") previousmdnsScanResults = hosts - log.Println("mDNS scan result updated") - } + log.Println("mDNS Startup scan completed") + }() + + //Create a ticker to update mDNS results every 5 minutes + ticker := time.NewTicker(15 * time.Minute) + stopChan := make(chan bool) + go func() { + for { + select { + case <-stopChan: + ticker.Stop() + case <-ticker.C: + hosts := mdnsScanner.Scan(30, "") + previousmdnsScanResults = hosts + log.Println("mDNS scan result updated") + } + } + }() + mdnsTickerStop = stopChan } - }() - mdnsTickerStop = stopChan + } /* Global Area Network diff --git a/src/web/components/cert.html b/src/web/components/cert.html index fec1014..5f4b75e 100644 --- a/src/web/components/cert.html +++ b/src/web/components/cert.html @@ -1,3 +1,13 @@ +
For all routing not found in the proxy rules, request will be redirected to the proxy root server.
+The default routing point for all incoming traffics. For all routing not found in the proxy rules, request will be redirected to the proxy root server.
Enter the username and password for allowing them to access this proxy endpoint
@@ -40,15 +42,54 @@Exclude specific directories / paths which contains the following subpath prefix from authentication. Useful if you are hosting services require remote API access.
+Path Prefix | +Remove | +
---|---|
No Path Excluded | +